@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,600&family=Open+Sans:wght@400;600;700&family=Bebas+Neue&family=Caveat:wght@500;700&display=swap');
/* Bruxism / Night Guards lander — scoped build of Grinding Lander v3.
   Generated: tokens + night_guards/lander-v3.css, every selector scoped under #brux-lander.
   Do not hand-edit; rebuild via scratchpad/build_css.py. */
#brux-lander{
--sbr-blue:#3c97cb;--sbr-blue-2:#4597cb;--sbr-blue-deep:#1eb6e5;--whitening-pink:#fa319e;
--night-guard-purple:#331f97;--sport-guard-navy:#002244;--caripro-navy:#002244;--probiotic-magenta:#9e1e82;
--highlighter-purple:#875aa3;--teal:#4acac9;--teal-2:#42bab8;--teal-3:#00bbb4;--teal-dental:#0eb4ba;
--rdh-teal:#13748d;--yellow:#f0c23a;--yellow-2:#ffd200;--orange-soft:#f8a18a;--pink-deep:#dd1f69;--orange-warm:#fcac17;
--ink:#2d2e2f;--ink-2:#3d3f40;--ink-3:#565759;--ink-4:#747577;--ink-mute:#88898c;--ink-faint:#a6a8a9;
--line:#d1d1d1;--line-2:#e8e8e8;--line-3:#eee;--bg-pale-blue:#f3f7fa;--bg-blue-2:#f0f5f9;--bg-sand:#f6f4ee;
--bg-sand-2:#f4efe2;--bg-ice:#caf4fb;--bg-ice-2:#c1ebf7;--bg-soft-gray:#f3f3f3;--bg-soft-2:#fafafa;--bg-warm:#e7e7e7;
--bg-card:#ffffff;--bg-page:#ffffff;--success:#2a8a45;--warning:#f0c23a;--danger:#dd1f69;--info:var(--sbr-blue);
--font-display:'Montserrat','BlinkMacSystemFont',-apple-system,'Roboto','Lucida Sans',sans-serif;
--font-body:'Montserrat','BlinkMacSystemFont',-apple-system,'Roboto','Lucida Sans',sans-serif;
--font-long:'Open Sans','Montserrat',-apple-system,'Roboto',sans-serif;
--font-stamp:'Bebas Neue','Montserrat',sans-serif;
--font-script:'Caveat','Dancing Script','Ayalisse',cursive;
--t-display:clamp(36px,4vw,51px);--t-display-sub:clamp(20px,1.8vw,24px);
--t-h1:48px;--t-h2:36px;--t-h3:32px;--t-h4:24px;--t-h5:20px;--t-h6:16px;
--t-article-h1:36px;--t-article-h2:19.33px;--t-article-h3:19.33px;--t-article-p:18px;--t-article-ref:13.33px;
--t-body-lg:18px;--t-body:16px;--t-body-sm:14px;--t-meta:12px;--t-btn:20px;--t-btn-sm:14px;
--lh-tight:1.1;--lh-snug:1.3;--lh-normal:1.5;--lh-loose:1.7;--ls-stamp:0.08em;--ls-button:0;
--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:30px;--sp-8:40px;--sp-9:60px;--sp-10:80px;--sp-11:120px;--sp-12:154px;
--container-sm:1170px;--container:1240px;--container-lg:1280px;--container-xl:1420px;
--r-xs:3px;--r-sm:6px;--r-md:8px;--r-lg:10px;--r-xl:12px;--r-pill:24px;--r-full:9999px;
--shadow-card-hover:0 0 11px rgba(33,33,33,0.2);--shadow-dropdown:0 8px 16px rgba(0,0,0,0.2);
--shadow-modal:0 0 1.5em hsla(0,0%,0%,0.35);--shadow-soft:0 1px 2px hsla(0,0%,0%,0.06);
--overlay-modal:hsla(0,0%,0%,0.5);--overlay-loading:rgba(0,0,0,0.41);
--border:1px solid var(--line);--border-input:1px solid #ccc;--border-input-hover:1px solid #aaa;
--border-card-hover:3px solid var(--sbr-blue);--ease:0.5s ease;--ease-fast:0.25s ease;--ease-out:0.3s cubic-bezier(0.16,1,0.3,1);
}

#brux-lander{scroll-behavior:smooth}
#brux-lander .wrap{
  --ng:var(--night-guard-purple);
  --ng-lav:color-mix(in srgb,var(--ng) 32%,#fff);
  --ng-tint:color-mix(in srgb,var(--ng) 6%,#fff);
  --ng-mid:color-mix(in srgb,var(--ng) 72%,#fff);
  --maxw:var(--container-sm);
  background:var(--bg-page);color:var(--ink);font-family:var(--font-body);
  line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;overflow-x:clip;font-size:var(--t-body)
}
#brux-lander *{box-sizing:border-box}
#brux-lander .wrap p{margin:0}
#brux-lander .shell{max-width:var(--maxw);margin:0 auto;padding:0 var(--sp-6)}
#brux-lander .disp{font-family:var(--font-display);font-weight:800;line-height:var(--lh-tight);
  letter-spacing:-.01em;text-wrap:balance;margin:0}
#brux-lander .stampline{display:flex;align-items:center;gap:var(--sp-4)}
#brux-lander .stampline .stamp{font-family:var(--font-stamp);font-size:var(--t-body);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ng);white-space:nowrap}
#brux-lander .stampline .rule{flex:1;height:1px;background:var(--line-2)}
#brux-lander .wrap a{color:var(--sbr-blue)}
#brux-lander .wrap a:hover{color:var(--ink)}
#brux-lander section,#brux-lander header.hero{padding:clamp(56px,8vw,96px) 0;scroll-margin-top:16px}


#brux-lander .btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--font-display);font-weight:300;font-size:var(--t-btn);letter-spacing:var(--ls-button);
  padding:11px 30px;border-radius:var(--r-lg);text-decoration:none;border:1px solid transparent;
  cursor:pointer;transition:all var(--ease-fast)}
#brux-lander .btn:hover{background:#595858!important;border-color:#595858!important;color:#fff!important;box-shadow:none}
#brux-lander .btn-purple{background:var(--ng);border-color:var(--ng);color:#fff}
#brux-lander .btn-white{background:#fff;border-color:#fff;color:var(--ng);font-weight:400}
#brux-lander .btn-outline{background:transparent;border-color:var(--ng);color:var(--ng);font-weight:400}
#brux-lander .btn-sm{font-size:var(--t-btn-sm);padding:8px 18px;border-radius:var(--r-sm);font-weight:400}

#brux-lander .wrap a.btn-purple{color:#fff}
#brux-lander .wrap a.btn-white,#brux-lander .wrap a.btn-outline{color:var(--ng)}


#brux-lander .hero{position:relative;background:var(--bg-page);overflow:hidden;isolation:isolate}
#brux-lander .hero .wash{position:absolute;border-radius:var(--r-full);background:var(--ng);opacity:.05;pointer-events:none;z-index:0}
#brux-lander .hero .wash.w1{width:640px;height:640px;top:-280px;right:-160px}
#brux-lander .hero .wash.w2{width:300px;height:300px;bottom:-150px;left:-110px;opacity:.04}
#brux-lander .hero .shell{position:relative;z-index:1;display:grid;grid-template-columns:1.08fr .92fr;gap:56px;align-items:center}
#brux-lander .hero .eyebrow{font-family:var(--font-stamp);font-size:var(--t-body);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ng);margin:0 0 var(--sp-4)}
/* the condition is the product — "NAVIGATING BRUXISM" sits together in a
   soft lavender pill (echoes the page's chip language), with BRUXISM set
   larger inside it. (A flat yellow marker-swipe looked crude.) */
#brux-lander .hero .eyebrow .kw{display:inline-flex;align-items:baseline;gap:7px;
  padding:5px 14px 4px;border-radius:var(--r-pill);
  background:color-mix(in srgb,var(--ng) 9%,#fff);
  border:1px solid color-mix(in srgb,var(--ng) 22%,#fff);
  vertical-align:middle;margin:0 4px 0 0}
#brux-lander .hero .eyebrow .kw b{font-size:1.6em;line-height:1;font-weight:400;letter-spacing:.06em}
#brux-lander .ribbon{display:inline-block;padding:16px 26px 16px 22px;background:var(--ng);border-radius:var(--r-pill);
  color:#fff;font-family:var(--font-display);font-weight:700;font-size:clamp(30px,3.6vw,var(--t-display));line-height:1}
#brux-lander .ribbon-sub{display:inline-block;padding:12px 24px 12px 22px;background:var(--ng-mid);border-radius:20px;
  color:#fff;font-family:var(--font-display);font-weight:300;font-size:clamp(15px,1.6vw,var(--t-display-sub));
  line-height:var(--lh-snug);margin-top:6px}
#brux-lander .hero .sub{font-size:var(--t-body-lg);line-height:var(--lh-loose);color:var(--ink-3);max-width:46ch;margin-top:var(--sp-5)}
#brux-lander .btnrow{display:flex;flex-wrap:wrap;gap:var(--sp-4);margin-top:var(--sp-7)}
#brux-lander .trustline{display:flex;flex-wrap:wrap;align-items:center;gap:8px var(--sp-4);margin-top:var(--sp-5);
  font-size:var(--t-body-sm);color:var(--ink-4);font-weight:600}
#brux-lander .trustline .star{width:15px;height:15px;display:inline-block;vertical-align:-2px}
#brux-lander .trustline i{font-style:normal;color:var(--line)}
#brux-lander .hero-art{position:relative;display:flex;justify-content:center}
#brux-lander .hero-art img{width:min(460px,100%);height:auto;border-radius:var(--r-xl);display:block;
  border:1px solid var(--line-3);box-shadow:var(--shadow-dropdown)}
#brux-lander .hero-tags{position:absolute;inset:0;pointer-events:none;z-index:2}
#brux-lander .tag{position:absolute;background:#fff;color:var(--ng);font-size:var(--t-body-sm);font-weight:600;
  padding:7px 14px;border-radius:var(--r-pill);box-shadow:var(--shadow-dropdown);white-space:nowrap;
  border:1px solid var(--line-3)}
#brux-lander .tag.t1{top:3%;left:-3%}#brux-lander .tag.t2{top:42%;right:-5%}#brux-lander .tag.t3{bottom:7%;left:5%}
@media (max-width:900px){
  #brux-lander .hero .shell{grid-template-columns:1fr;text-align:center;gap:0}
  /* Unwrap the copy column (display:contents) so its children become grid items
     alongside the image. That lets the eyebrow + headline sit ABOVE the image
     while the supporting copy + CTAs stay BELOW it — the image is a sibling of
     the copy block, so plain order:-1 could only move the whole text stack. */
  #brux-lander .hero .shell>div:first-child{display:contents}
  /* Unwrap the headline too, so the purple sub-ribbon ("Everything your
     dentist…") can drop BELOW the image while the "Grinding wears you down."
     ribbon stays above it. justify-self keeps each ribbon hugging its text
     (grid items get blockified, which would otherwise stretch them full-width);
     the <br> that separated them on desktop is dropped here. */
  #brux-lander .hero .disp{display:contents}
  #brux-lander .hero .disp br{display:none}
  #brux-lander .hero .ribbon,#brux-lander .hero .ribbon-sub{justify-self:center}
  #brux-lander .hero .eyebrow{order:1}
  #brux-lander .hero .ribbon{order:2}
  #brux-lander .hero-art{order:3;margin:var(--sp-6) 0 var(--sp-2)}
  #brux-lander .hero .ribbon-sub{order:4;margin-top:0}
  #brux-lander .hero .sub{order:5;margin-left:auto;margin-right:auto}
  #brux-lander .btnrow{order:6;justify-content:center}
  #brux-lander .trustline{order:7;justify-content:center}
  #brux-lander .hero-tags{display:none}
}


#brux-lander .press{background:var(--bg-pale-blue);padding:var(--sp-6) 0}
#brux-lander .press .shell{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--sp-5) var(--sp-8)}
#brux-lander .press .k{font-family:var(--font-stamp);font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ink-4)}
#brux-lander .press img{height:20px;width:auto;opacity:.75}


#brux-lander .head{max-width:56ch;margin-top:var(--sp-6)}
/* desktop: drop the 56ch cap so fold headings sit on one line (per request);
   mobile keeps the cap for readable line lengths */
@media (min-width:641px){#brux-lander .head{max-width:none}}
#brux-lander .head.center{margin-left:auto;margin-right:auto;text-align:center}
#brux-lander .head h2{font-size:clamp(28px,3.4vw,var(--t-h2));color:var(--ink);margin:0 0 .4em}
#brux-lander .head p{color:var(--ink-3);font-size:var(--t-body-lg);line-height:var(--lh-loose)}


#brux-lander .dict{background:var(--ng-tint);border:1px solid color-mix(in srgb,var(--ng) 14%,#fff);
  border-radius:var(--r-xl);padding:var(--sp-6) var(--sp-7)}
#brux-lander .dict .word{font-family:var(--font-display);font-weight:800;font-size:clamp(30px,3.4vw,42px);
  color:var(--ng);line-height:1;letter-spacing:-.01em}
#brux-lander .dict .say{font-size:var(--t-body-sm);color:var(--ink-4);margin-top:6px}
#brux-lander .dict .say em{font-weight:600}
#brux-lander .dict .def{font-size:var(--t-body-lg);color:var(--ink-2);margin-top:var(--sp-3);line-height:var(--lh-normal)}


#brux-lander .what{background:var(--bg-page)}
#brux-lander .what-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:44px;align-items:start;margin-top:var(--sp-7)}
@media (max-width:860px){#brux-lander .what-grid{grid-template-columns:1fr;gap:30px}}
#brux-lander .what-copy p{color:var(--ink-3);font-size:var(--t-body-lg);line-height:var(--lh-loose)}
#brux-lander .what-copy p+p{margin-top:var(--sp-4)}
#brux-lander .factrow{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);margin-top:var(--sp-6)}
@media (max-width:560px){#brux-lander .factrow{grid-template-columns:1fr}}
#brux-lander .fact{background:var(--bg-card);border:1px solid var(--line-3);border-bottom:3px solid var(--ng);
  border-radius:var(--r-xl);padding:var(--sp-5)}
#brux-lander .fact .big{font-family:var(--font-display);font-weight:800;font-size:var(--t-h1);line-height:1;color:var(--ng)}
#brux-lander .fact p{font-size:var(--t-body-sm);color:var(--ink-3);margin-top:var(--sp-2);line-height:var(--lh-snug)}
#brux-lander .srcnote{font-size:var(--t-meta);color:var(--ink-faint);margin-top:var(--sp-4)}


#brux-lander .checker{background:var(--bg-pale-blue)}
#brux-lander .tmj{display:grid;grid-template-columns:.9fr 1.1fr;gap:44px;align-items:center;margin-top:var(--sp-7);
  margin-bottom:var(--sp-9)}
@media (max-width:860px){#brux-lander .tmj{grid-template-columns:1fr;gap:26px}}
#brux-lander .tmj-copy h3{font-family:var(--font-display);font-weight:800;font-size:var(--t-h4);color:var(--ink);
  margin:0 0 var(--sp-3);line-height:var(--lh-snug)}
#brux-lander .tmj-copy>p{color:var(--ink-3);font-size:var(--t-body);line-height:var(--lh-loose)}
#brux-lander .tmj-list{display:grid;gap:var(--sp-3);margin-top:var(--sp-5)}
/* text-align:left is load-bearing on mobile — the theme centers text from
   <body> down at phone widths, and these icon rows inherit it, so wrapped
   lines centered under a left-aligned pin. Same opt-out .sign/.cause-tab/
   .card already carry; a no-op on desktop, where body isn't centered. */
#brux-lander .tmj-item{display:flex;gap:12px;align-items:flex-start;text-align:left}
#brux-lander .tmj-item .pin{flex:0 0 10px;height:10px;border-radius:var(--r-full);background:var(--ng);margin-top:7px}
#brux-lander .tmj-item b{color:var(--ink-2);font-size:var(--t-body)}
#brux-lander .tmj-item span{display:block;font-size:var(--t-body-sm);color:var(--ink-4);line-height:var(--lh-snug)}
#brux-lander .tmj-fig{margin:0;background:var(--bg-card);border:1px solid var(--line-3);border-radius:var(--r-xl);
  padding:var(--sp-6) var(--sp-6) var(--sp-5)}
#brux-lander .tmj-fig img{width:100%;height:auto;display:block}
#brux-lander .tmj-fig figcaption{font-size:var(--t-meta);color:var(--ink-faint);margin-top:var(--sp-3);text-align:center}


#brux-lander .checker-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:start;margin-top:var(--sp-6)}
#brux-lander .checker-grid .head{margin-top:0;margin-bottom:var(--sp-5)}
@media (max-width:860px){#brux-lander .checker-grid{grid-template-columns:1fr;gap:30px}}

/* DESKTOP (2-col): the quiz card and result panel align as a matched pair.
   The heading is promoted to span BOTH columns (row 1) via display:contents on
   the left wrapper, so the two cards start on the same row instead of the
   result rising up beside the heading. Both cards get the same min-height, so
   their tops AND bottoms line up — and since that height is fixed, the fold
   stays stable across quiz steps (no recentering). checknote drops to row 3
   under the quiz. Scoped >860px only: at ≤860 the grid is single-column
   (stacked) and this placement must not apply. */
@media (min-width:861px){
  #brux-lander .checker-grid{grid-template-rows:auto auto auto;column-gap:44px;row-gap:0}
  #brux-lander .checker-grid>div:first-child{display:contents}
  #brux-lander .checker-grid .head{grid-column:1/-1;grid-row:1}
  #brux-lander .checker-grid .signs.quiz{grid-column:1;grid-row:2}
  #brux-lander .checker-grid .result{grid-column:2;grid-row:2}
  #brux-lander .checker-grid .checknote{grid-column:1;grid-row:3;margin-top:var(--sp-4)}
  #brux-lander .checker-grid .quiz-card,
  #brux-lander .checker-grid .result{min-height:430px} /* equal → aligned top+bottom; fixed → fold stays put */
  #brux-lander .checker-grid .result{position:static;align-self:start} /* drop sticky; grid handles placement */
}
#brux-lander .signs{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
@media (max-width:520px){#brux-lander .signs{grid-template-columns:1fr}}
#brux-lander .sign{display:flex;gap:11px;align-items:flex-start;padding:14px 15px;border:1px solid var(--line-3);
  border-radius:var(--r-md);background:var(--bg-card);cursor:pointer;user-select:none;
  font-family:var(--font-body);text-align:left;transition:all var(--ease-fast)}
#brux-lander .sign:hover{border-color:var(--ng)}
#brux-lander .sign .box{flex:0 0 22px;height:22px;border-radius:var(--r-sm);border:2px solid var(--ink-mute);
  display:grid;place-items:center;margin-top:1px;transition:all var(--ease-fast);background:#fff}
#brux-lander .sign .box svg{width:13px;height:13px;opacity:0;transform:scale(.5);transition:all var(--ease-fast)}
#brux-lander .sign span{font-size:var(--t-body-sm);font-weight:600;line-height:var(--lh-snug);color:var(--ink-2)}
#brux-lander .sign[aria-pressed="true"]{border-color:var(--ng);background:var(--ng-tint)}
#brux-lander .sign[aria-pressed="true"] .box{background:var(--ng);border-color:var(--ng)}
#brux-lander .sign[aria-pressed="true"] .box svg{opacity:1;transform:scale(1);color:#fff}

#brux-lander .signs.chips{display:flex;flex-wrap:wrap;gap:9px}
#brux-lander .signs.chips .sign{padding:9px 15px;border-radius:var(--r-pill);align-items:center;gap:8px}
#brux-lander .signs.chips .sign .box{flex:0 0 17px;height:17px;border-radius:var(--r-full);margin-top:0}
#brux-lander .signs.chips .sign .box svg{width:10px;height:10px}
#brux-lander .signs.chips .sign span{font-size:var(--t-meta)}

#brux-lander .signs.quiz{display:block}
/* min-height locks the card to the tallest step (the 3-option frequency
   question) so every question renders the same height — otherwise the quiz
   grew ~160px on the last step, and since the left column is head+quiz, the
   centered checker fold halved that into an ~80px heading jump. Content is
   flex-column so a shorter step's slack sits as one calm gap, not a void
   under the buttons. */
#brux-lander .quiz-card{background:var(--bg-card);border:1px solid var(--line-3);border-radius:var(--r-xl);
  padding:var(--sp-6) var(--sp-6) var(--sp-5);box-shadow:var(--shadow-soft);
  min-height:380px;display:flex;flex-direction:column;justify-content:center}
/* progress bar pinned to the top; the question/answers group centers in the
   remaining space so a short step's slack splits evenly instead of leaving a
   void under the buttons */
#brux-lander .quiz-card .qprog{position:absolute;left:var(--sp-6);right:var(--sp-6);top:var(--sp-6)}
#brux-lander .quiz-card{position:relative;padding-top:calc(var(--sp-6) + 7px + var(--sp-4))}
#brux-lander .qprog{height:7px;border-radius:var(--r-full);background:var(--line-2);overflow:hidden;margin-bottom:var(--sp-4)}
#brux-lander .qprog i{display:block;height:100%;width:0;border-radius:var(--r-full);background:var(--ng);transition:width var(--ease-fast)}
#brux-lander .qcount{font-family:var(--font-stamp);font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ng)}
#brux-lander .qtext{font-family:var(--font-display);font-weight:800;font-size:var(--t-h5);line-height:var(--lh-snug);
  color:var(--ink);margin:var(--sp-2) 0 var(--sp-5);min-height:2.6em}
#brux-lander .qhint{font-size:var(--t-body-sm);color:var(--ink-4);margin:calc(-1 * var(--sp-4)) 0 var(--sp-3)}
#brux-lander .qbtns{display:flex;gap:10px}
/* 3 pack-size options stack — compacted vs the yes/no buttons so the frequency
   step doesn't tower over the sign steps (paired with quiz-card min-height,
   which locks the card to a stable height so questions don't shift layout) */
#brux-lander .qbtns.freq{flex-direction:column;gap:8px}
#brux-lander .qbtns.freq .qbtn{padding:10px 16px}
#brux-lander .qbtn{flex:1;padding:13px 18px;border-radius:var(--r-lg);border:1px solid var(--ng);background:#fff;
  color:var(--ng);font-family:var(--font-display);font-weight:400;font-size:var(--t-btn-sm);cursor:pointer;
  transition:all var(--ease-fast)}
#brux-lander .qbtn:hover{background:#595858;border-color:#595858;color:#fff}
#brux-lander .qbtn.yes{background:var(--ng);color:#fff}
#brux-lander .qbtns .qsee{flex:1;font-size:var(--t-btn-sm);padding:13px 18px}
/* align-self:flex-start — the card is a flex column (default align-items:stretch),
   so without this the borderless button stretches full width and its centered
   text reads as centered; pin it to content width on the left (both viewports) */
#brux-lander .qback{display:inline-block;align-self:flex-start;margin-top:var(--sp-4);border:0;background:none;padding:0;cursor:pointer;
  font-family:var(--font-body);font-size:var(--t-meta);font-weight:600;color:var(--ink-4)}
#brux-lander .qback:hover{color:var(--ink)}
/* ============ SELF-CHECK EMAIL GATE ============
   Logged-out visitors are asked where to send the result before question 1
   (assets/js/bruxism-lander.js → qzGateHtml). It's an overlay INSIDE the quiz
   card: question 1 stays visible, blurred and inert underneath, so the ask reads
   as the first step of the quiz rather than a wall in front of it.
   position:absolute, never fixed — this lander scrolls inside a fixed pane, where
   a fixed overlay detaches from the card it belongs to.
   Every child rule carries two classes on purpose: `#brux-lander .wrap p{margin:0}`
   (1,1,1) outranks single-class rules and silently eats their margins — the same
   trap documented at the MATCH-NOTE CENTERING block below. */
/* overflow:clip, not hidden — hidden still makes the card a scroll container, so
   a browser scrolling a focused child into view can shift the blurred question
   under the gate. clip can't scroll at all. */
#brux-lander .quiz-card.is-gated{overflow:clip}
#brux-lander .quiz-card.is-gated>:not(.qgate){filter:blur(3px);opacity:.45;pointer-events:none;user-select:none}
/* `safe center` so an overflowing gate top-aligns and stays fully reachable:
   plain `center` splits overflow evenly and browsers expose no way to scroll to
   block-start overflow — the same trap the fold-snap block below documents. */
#brux-lander .qgate{position:absolute;inset:0;z-index:2;overflow:auto;
  display:flex;flex-direction:column;justify-content:safe center;
  padding:var(--sp-6);border-radius:inherit;
  background:#f4f2fa; /* fallback: the color-mix below is dropped whole where unsupported */
  background:color-mix(in srgb,#fff 93%,var(--ng))}
#brux-lander .qgate .qgate-k{font-family:var(--font-stamp);font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ng);margin:0}
#brux-lander .qgate .qgate-h{font-family:var(--font-display);font-weight:800;font-size:var(--t-h5);
  line-height:var(--lh-snug);color:var(--ink);margin:var(--sp-2) 0 var(--sp-3)}
/* --ink-3 not --ink-4: on this near-white panel --ink-4 is 4.14:1, under AA */
#brux-lander .qgate .qgate-p{font-size:var(--t-body-sm);color:var(--ink-3);margin:0 0 var(--sp-4)}
#brux-lander .qgate .qgate-field{display:block}
#brux-lander .qgate .qgate-field + .qgate-field{margin-top:var(--sp-3)}
/* Two fields need more room than the 380px base card. Measured in Chrome: the
   gate content is 423px at 768–1280 and 422 at 1512, and it no longer changes
   when errors appear (messages sit in the label row), so 440 clears it with slack
   at every width. The ≥861 checker-grid pair sets 430 at (1,3,0), so the gated
   override there needs its own higher-specificity rule below. qzGateFit() in the
   JS grows the card further if these ever fall short. */
#brux-lander .quiz-card.is-gated{min-height:440px}
@media (min-width:861px){
  #brux-lander .checker-grid .quiz-card.is-gated{min-height:440px}
}
/* visible label — a placeholder alone is both a weak label and 2.1:1 contrast.
   Two-part row: name on the left, validation message right-aligned on the same
   line so showing an error never changes the panel's height. The label text
   truncates rather than pushing the message onto a second line. */
#brux-lander .qgate .qgate-lab{display:flex;align-items:baseline;justify-content:space-between;
  gap:10px;margin:0 0 6px;font-family:var(--font-body);
  font-size:var(--t-meta);font-weight:600;color:var(--ink-3)}
#brux-lander .qgate .qgate-labtxt{flex:0 1 auto;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
#brux-lander .qgate .qgate-in{display:block;width:100%;height:auto;margin:0;padding:13px 15px;
  border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;box-shadow:none;
  -webkit-appearance:none;appearance:none;
  font-family:var(--font-body);font-size:var(--t-body);line-height:1.4;color:var(--ink);
  transition:border-color var(--ease-fast),box-shadow var(--ease-fast)}
#brux-lander .qgate .qgate-in::placeholder{color:var(--ink-4)}
/* outline kept (transparent) alongside the ring: box-shadows aren't painted in
   forced-colors mode, where a transparent outline is repainted as a visible one */
#brux-lander .qgate .qgate-in:focus{outline:2px solid transparent;outline-offset:2px;
  border-color:var(--ng);box-shadow:0 0 0 3px color-mix(in srgb,var(--ng) 18%,#fff)}
#brux-lander .qgate .qgate-go:focus-visible{outline:2px solid var(--ng);outline-offset:2px}
#brux-lander .qgate .qgate-in.is-bad{border-color:var(--danger)}
/* no display declared, so the [hidden] attribute still wins and hides it */
#brux-lander .qgate .qgate-err{flex:0 0 auto;white-space:nowrap;margin:0;
  font-size:var(--t-meta);font-weight:700;color:var(--danger)}
#brux-lander .qgate .qgate-go{display:block;width:100%;margin:var(--sp-3) 0 0;padding:13px 18px;
  border:1px solid var(--ng);border-radius:var(--r-lg);background:var(--ng);color:#fff;
  -webkit-appearance:none;appearance:none;
  font-family:var(--font-display);font-weight:400;font-size:var(--t-btn-sm);cursor:pointer;
  transition:all var(--ease-fast)}
#brux-lander .qgate .qgate-go:hover{background:#595858;border-color:#595858}
#brux-lander .qgate .qgate-fine{font-size:var(--t-meta);color:var(--ink-3);margin:var(--sp-3) 0 0}
#brux-lander .checknote{font-size:var(--t-meta);color:var(--ink-faint);margin-top:var(--sp-4);max-width:60ch}
#brux-lander .result{position:sticky;top:20px;background:var(--ng);color:#fff;border-radius:var(--r-xl);
  padding:var(--sp-7);box-shadow:var(--shadow-dropdown)}
#brux-lander .result .topline{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
#brux-lander .result .k,#brux-lander .rec .k{font-family:var(--font-stamp);font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ng-lav)}
#brux-lander .result .count{font-size:var(--t-meta);font-weight:700;color:#fff;background:rgba(255,255,255,.14);
  padding:4px 10px;border-radius:var(--r-full);white-space:nowrap}
#brux-lander .result h3{font-family:var(--font-display);font-weight:800;font-size:var(--t-h3);
  line-height:var(--lh-tight);margin:6px 0 0;color:#fff}
#brux-lander .meter{height:12px;border-radius:var(--r-full);background:rgba(255,255,255,.18);overflow:hidden;margin:var(--sp-4) 0 var(--sp-2)}
#brux-lander .meter i{display:block;height:100%;width:0;border-radius:var(--r-full);
  background:linear-gradient(90deg,var(--ng-lav),#fff);transition:width .4s ease}
#brux-lander .result .lvl{display:flex;justify-content:space-between;font-family:var(--font-stamp);
  font-size:var(--t-meta);letter-spacing:var(--ls-stamp);text-transform:uppercase;color:var(--ng-lav)}
#brux-lander .result .rec{margin-top:var(--sp-5);padding:var(--sp-4);border-radius:var(--r-md);background:rgba(255,255,255,.09);
  border:1px solid rgba(184,184,221,.35)}
#brux-lander .rec .v{font-size:var(--t-body-lg);font-weight:700;margin-top:4px}
#brux-lander .rec .why{font-size:var(--t-body-sm);color:#d9d6ef;margin-top:6px;line-height:var(--lh-normal)}
#brux-lander .result .btn{margin-top:var(--sp-5);width:100%}


#brux-lander section.why{background:var(--bg-page)}
#brux-lander .cause-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:var(--sp-6);margin-top:var(--sp-7);align-items:start}
@media (max-width:860px){#brux-lander .cause-grid{grid-template-columns:1fr}}
#brux-lander .cause-tabs{display:flex;flex-direction:column;gap:var(--sp-2)}
#brux-lander .cause-tab{display:flex;align-items:center;gap:var(--sp-4);padding:13px 16px;border:1px solid var(--line-2);
  background:var(--bg-card);border-radius:var(--r-lg);cursor:pointer;font-family:var(--font-body);
  text-align:left;transition:all var(--ease-fast)}
#brux-lander .cause-tab:hover{border-color:var(--ng)}
#brux-lander .cause-tab .n{font-family:var(--font-stamp);font-size:var(--t-h5);color:var(--ink-mute);width:22px;line-height:1}
#brux-lander .cause-tab .t{font-weight:700;font-size:var(--t-body);color:var(--ink-2)}
#brux-lander .cause-tab.on{background:var(--ng);border-color:var(--ng)}
#brux-lander .cause-tab.on .n{color:var(--ng-lav)}
#brux-lander .cause-tab.on .t{color:#fff}
#brux-lander .cause-panel{display:none;background:var(--bg-pale-blue);border:1px solid var(--line-3);
  border-radius:var(--r-xl);padding:var(--sp-7);position:sticky;top:20px}
#brux-lander .cause-panel.on{display:block}
#brux-lander .cause-panel h3{font-family:var(--font-display);font-weight:800;font-size:var(--t-h4);color:var(--ink);
  margin:0 0 var(--sp-3);line-height:var(--lh-snug)}
#brux-lander .cause-panel p{color:var(--ink-3);font-size:var(--t-body);line-height:var(--lh-loose)}
#brux-lander .cause-panel p+p{margin-top:var(--sp-3)}
#brux-lander .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--sp-4)}
#brux-lander .chip{font-size:var(--t-meta);font-weight:700;color:var(--ng);background:color-mix(in srgb,var(--ng) 9%,#fff);
  border:1px solid color-mix(in srgb,var(--ng) 18%,#fff);padding:5px 12px;border-radius:var(--r-full)}
#brux-lander .chip.stat{background:var(--ng);border-color:var(--ng);color:#fff}
#brux-lander .cause-callout{margin-top:var(--sp-6);background:var(--ng-tint);border:1px solid color-mix(in srgb,var(--ng) 14%,#fff);
  border-radius:var(--r-xl);padding:var(--sp-5) var(--sp-6);display:flex;align-items:center;gap:var(--sp-5);flex-wrap:wrap}
#brux-lander .cause-callout p{flex:1;min-width:260px;color:var(--ink-2);font-size:var(--t-body);line-height:var(--lh-normal)}
#brux-lander .cause-callout p b{color:var(--ng)}
#brux-lander .cause-nav{display:none}


#brux-lander .damage{background:var(--ink);color:#fff}
#brux-lander .damage .stampline .stamp{color:var(--ng-lav)}
#brux-lander .damage .stampline .rule{background:rgba(255,255,255,.14)}
#brux-lander .damage-top{display:grid;grid-template-columns:1.15fr .85fr;gap:44px;align-items:center}
@media (max-width:860px){#brux-lander .damage-top{grid-template-columns:1fr}}
#brux-lander .damage .head h2{color:#fff}#brux-lander .damage .head p{color:#c9cacc}
#brux-lander .damage .head p b{color:var(--ng-lav)}
#brux-lander .night-fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}
#brux-lander .night-fig img{width:min(280px,70%);height:auto;aspect-ratio:1;border-radius:var(--r-full);display:block;
  border:6px solid rgba(255,255,255,.1);object-fit:cover}
#brux-lander .night-fig figcaption{font-size:var(--t-body-sm);color:#b9bbbe;text-align:center;max-width:34ch;line-height:var(--lh-snug)}
#brux-lander .stage-list{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4);margin-top:var(--sp-8);counter-reset:st}
@media (max-width:860px){#brux-lander .stage-list{grid-template-columns:1fr 1fr}}
@media (max-width:520px){#brux-lander .stage-list{grid-template-columns:1fr}}
#brux-lander .stage{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.13);border-radius:var(--r-xl);
  padding:var(--sp-6) var(--sp-5);position:relative}
#brux-lander .stage::before{content:'';position:absolute;top:38px;right:-18px;width:18px;height:1px;background:rgba(255,255,255,.25)}
#brux-lander .stage:last-child::before{display:none}
@media (max-width:860px){#brux-lander .stage::before{display:none}}
#brux-lander .stage .n{counter-increment:st;font-family:var(--font-display);font-weight:800;font-size:var(--t-h2);
  line-height:1;color:var(--sev)}
#brux-lander .stage .n::before{content:counter(st,decimal-leading-zero)}
#brux-lander .stage h4{margin:var(--sp-3) 0 var(--sp-2);font-size:var(--t-h6);font-weight:700;color:#fff;line-height:var(--lh-snug)}
#brux-lander .stage p{font-size:var(--t-body-sm);color:#b9bbbe}
#brux-lander .stage .badge{display:inline-block;margin-top:var(--sp-3);font-family:var(--font-stamp);
  font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);text-transform:uppercase;
  padding:4px 12px;border-radius:var(--r-full);background:color-mix(in srgb,var(--sev) 24%,transparent);color:var(--sev)}


#brux-lander .warncard{margin-top:var(--sp-8);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.16);
  border-radius:var(--r-xl);overflow:hidden}
#brux-lander .warncard .tape{height:12px;background:repeating-linear-gradient(-45deg,var(--warning) 0 16px,var(--ink) 16px 32px)}
#brux-lander .warncard .inner{padding:var(--sp-6) var(--sp-7);display:flex;gap:var(--sp-6);align-items:center;flex-wrap:wrap}
#brux-lander .warncard .wico{flex:0 0 52px;height:52px;border-radius:var(--r-md);background:var(--warning);display:grid;place-items:center}
#brux-lander .warncard .wico svg{width:30px;height:30px;color:var(--ink)}
#brux-lander .warncard .wbody{flex:1;min-width:280px}
#brux-lander .warncard .wt{font-family:var(--font-stamp);font-size:var(--t-h5);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--warning)}
#brux-lander .warncard .wbody>p{font-size:var(--t-body);color:#d5d6d8;margin-top:4px}
#brux-lander .wchips{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--sp-3)}
#brux-lander .wchip{font-family:var(--font-stamp);font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);text-transform:uppercase;
  color:#fff;border:1px solid rgba(255,255,255,.3);padding:5px 13px;border-radius:var(--r-full)}
#brux-lander .damage .apnea{margin-top:var(--sp-6);font-size:var(--t-body-sm);color:#b9bbbe;text-align:center}
#brux-lander .damage .apnea b{color:var(--ng-lav)}


#brux-lander .fix{background:var(--bg-page)}
#brux-lander .fix-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;margin-top:var(--sp-7)}
@media (max-width:860px){#brux-lander .fix-grid{grid-template-columns:1fr;gap:30px}}
#brux-lander .fix-grid .dict{margin-bottom:var(--sp-5)}
#brux-lander .fix-copy>p{color:var(--ink-3);font-size:var(--t-body-lg);line-height:var(--lh-loose)}
#brux-lander .benefits{display:grid;gap:var(--sp-3);margin-top:var(--sp-5)}
/* text-align:left for the same reason as .tmj-item above — inherited mobile
   centering made the wrapped second line float under the tick icon. */
#brux-lander .benefit{display:flex;gap:12px;align-items:flex-start;text-align:left}
#brux-lander .benefit .tick{flex:0 0 22px;height:22px;border-radius:var(--r-full);background:var(--ng);color:#fff;
  display:grid;place-items:center;margin-top:1px}
#brux-lander .benefit .tick svg{width:12px;height:12px}
#brux-lander .benefit b{display:block;font-size:var(--t-body);color:var(--ink-2)}
#brux-lander .benefit span{font-size:var(--t-body-sm);color:var(--ink-4);line-height:var(--lh-snug)}
#brux-lander .fix-art{margin:0}
#brux-lander .fix-art img{width:100%;height:auto;border-radius:var(--r-xl);display:block;border:1px solid var(--line-3)}
#brux-lander .fix-art figcaption{font-size:var(--t-meta);color:var(--ink-faint);margin-top:var(--sp-2);text-align:center}


#brux-lander .matrix-block{margin-top:var(--sp-9)}
#brux-lander .matrix-block .head h3{font-family:var(--font-display);font-weight:800;font-size:var(--t-h3);color:var(--ink);
  margin:0 0 .4em;line-height:var(--lh-snug)}
#brux-lander .matrix-wrap{overflow-x:auto;margin-top:var(--sp-6);border:1px solid var(--line-2);border-radius:var(--r-xl);background:#fff}
#brux-lander table.matrix{border-collapse:collapse;width:100%;min-width:680px;font-size:var(--t-body-sm)}
#brux-lander .matrix th,#brux-lander .matrix td{padding:13px 14px;text-align:center;border-top:1px solid var(--line-3)}
#brux-lander .matrix thead th{border-top:0;font-family:var(--font-stamp);font-weight:400;font-size:var(--t-body-sm);
  letter-spacing:var(--ls-stamp);text-transform:uppercase;color:var(--ink-4);padding-top:16px;padding-bottom:12px}
#brux-lander .matrix td:first-child,#brux-lander .matrix th:first-child{text-align:left;font-weight:700;color:var(--ink-2);white-space:nowrap}
#brux-lander .matrix .gcol{background:var(--ng-tint)}
#brux-lander .matrix thead .gcol{color:var(--ng)}
#brux-lander .matrix .tick-g,#brux-lander .matrix .tick-o{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:var(--r-full)}
#brux-lander .matrix .tick-g{background:var(--ng);color:#fff}
#brux-lander .matrix .tick-o{background:transparent;color:var(--ink-mute);border:1.5px solid var(--line)}
#brux-lander .matrix .tick-g svg,#brux-lander .matrix .tick-o svg{width:13px;height:13px}
#brux-lander .matrix .none{color:var(--line);font-weight:700}
#brux-lander .matrix-note{font-size:var(--t-body-sm);color:var(--ink-4);margin-top:var(--sp-4);max-width:72ch}
#brux-lander .matrix-note b{color:var(--ng)}
#brux-lander .matrix-cards{display:none}

@media (max-width:640px){
  #brux-lander .matrixsec{padding:14px 0}
  #brux-lander .matrixsec .stampline{display:none}
  #brux-lander .matrixsec .matrix-block{margin-top:0}
  #brux-lander .matrix-block .head{margin-top:0}
  #brux-lander .matrix-block .head h3{font-size:16px}
  #brux-lander .matrix-block .head p{font-size:10.5px;line-height:1.35}
  #brux-lander .matrix-block:not(.mx-table) .matrix-wrap{display:none}
  #brux-lander .matrix-block:not(.mx-table) .matrix-cards{display:grid;gap:5px;margin-top:8px}
  #brux-lander .mxcard{background:#fff;border:1px solid var(--line-2);border-radius:var(--r-md);padding:7px 10px}
  #brux-lander .mxcard>b{display:block;text-align:left;font-size:11px;font-weight:700;color:var(--ink-2);margin-bottom:4px}
  #brux-lander .mxchips{display:flex;flex-wrap:wrap;gap:4px}
  #brux-lander .mxchip{display:inline-flex;align-items:center;gap:4px;font-size:9px;font-weight:700;
    padding:3px 8px;border-radius:var(--r-full);color:var(--ink-3);border:1px solid var(--line);background:transparent}
  #brux-lander .mxchip.g{background:var(--ng);border-color:var(--ng);color:#fff}
  #brux-lander .mxchip svg{width:8px;height:8px}
  #brux-lander .matrix-note{font-size:9.5px;line-height:1.35;margin-top:8px}
  #brux-lander .wrap.dark .mxcard{background:var(--bg-card);border-color:var(--line-2)}
  #brux-lander .wrap.dark .mxchip{color:#c9cacc}
}

#brux-lander .steps{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4);margin-top:var(--sp-8);counter-reset:pp}
@media (max-width:860px){#brux-lander .steps{grid-template-columns:1fr 1fr}}
@media (max-width:480px){#brux-lander .steps{grid-template-columns:1fr}}
#brux-lander .step{background:var(--bg-pale-blue);border-radius:var(--r-xl);padding:var(--sp-5)}
#brux-lander .step .dot{counter-increment:pp;width:40px;height:40px;border-radius:var(--r-full);margin-bottom:var(--sp-3);
  display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:var(--t-h6);
  background:var(--ng);color:#fff}
#brux-lander .step .dot::before{content:counter(pp)}
#brux-lander .step h4{margin:0 0 4px;font-size:var(--t-h6);font-weight:700;color:var(--ink)}
#brux-lander .step p{font-size:var(--t-body-sm);color:var(--ink-3)}


#brux-lander .offer{background:var(--bg-pale-blue)}
#brux-lander .toggle{display:inline-flex;background:#fff;border:1px solid var(--line-2);border-radius:var(--r-pill);
  padding:5px;margin:var(--sp-6) auto 0;gap:4px}
#brux-lander .toggle button{border:0;background:transparent;font-family:var(--font-body);font-weight:700;font-size:var(--t-body-sm);
  color:var(--ink-3);padding:10px 20px;border-radius:var(--r-pill);cursor:pointer;transition:all var(--ease-fast)}
#brux-lander .toggle button.on{background:var(--ng);color:#fff}
#brux-lander .thickness-note{text-align:center;color:var(--ink-3);font-weight:600;font-size:var(--t-body-sm);margin-top:var(--sp-3)}
/* offer → self-check shortcut ("Check my match"); JS hides it once a match
   exists. [hidden] guard needed: .btn's display:inline-flex outranks the UA
   [hidden] rule, so the attribute alone wouldn't hide it. */
#brux-lander .offer .check-match{margin-top:12px;margin-bottom:var(--sp-3);font-size:var(--t-btn-sm);padding:9px 20px;font-weight:400}
#brux-lander .offer .check-match[hidden]{display:none}
#brux-lander .match-note{text-align:center;font-size:var(--t-body-sm);font-weight:600;color:var(--ink-2);
  background:var(--ng-tint);border:1px solid color-mix(in srgb,var(--ng) 14%,#fff);border-radius:var(--r-pill);
  width:fit-content;margin:var(--sp-6) auto calc(-1 * var(--sp-3));padding:9px 22px}
#brux-lander .match-note b{color:var(--ng)}
#brux-lander .cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5);margin-top:var(--sp-8);align-items:stretch}
#brux-lander .cnav{display:none}
@media (max-width:920px){
  
  #brux-lander .cards{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:var(--sp-4);
    margin:var(--sp-7) calc(-1 * var(--sp-6)) 0;
    padding:16px calc((100vw - min(80vw, 320px)) / 2) 26px;
    scrollbar-width:none;-webkit-overflow-scrolling:touch}
  #brux-lander .cards::-webkit-scrollbar{display:none}
  #brux-lander .cards .card{flex:0 0 min(80vw, 320px);scroll-snap-align:center}
  #brux-lander .cnav{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:-2px}
  #brux-lander .cdots{display:flex;align-items:center;gap:7px}
  #brux-lander .cdot{width:8px;height:8px;border-radius:var(--r-full);border:0;padding:0;cursor:pointer;
    background:color-mix(in srgb,var(--ng) 14%,#e6e6ee);transition:all var(--ease-fast)}
  #brux-lander .cdot.on{width:24px;background:var(--ng)}
  #brux-lander .chint{display:flex;align-items:center;gap:7px;font-family:var(--font-stamp);font-size:var(--t-meta);
    letter-spacing:var(--ls-stamp);text-transform:uppercase;color:var(--ink-4)}
  #brux-lander .chint svg{width:11px;height:11px;color:var(--ng)}
}
#brux-lander .card{background:var(--bg-card);border:1px solid var(--line-2);border-bottom:3px solid var(--line-2);
  border-radius:var(--r-xl);position:relative;display:flex;flex-direction:column;
  text-align:left;transition:all var(--ease-fast)}
#brux-lander .card:hover{box-shadow:var(--shadow-card-hover);border-bottom-color:var(--ng)}
#brux-lander .card.match{border-color:var(--ng);border-bottom-color:var(--ng);
  box-shadow:0 24px 48px -26px color-mix(in srgb,var(--ng) 55%,transparent)}
#brux-lander .card .flag{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:var(--ng);
  color:#fff;font-family:var(--font-stamp);font-size:var(--t-meta);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;padding:5px 14px;border-radius:var(--r-pill);white-space:nowrap;z-index:2;
  display:inline-flex;align-items:center;gap:6px}
#brux-lander .card .flag svg{width:11px;height:11px}
#brux-lander .card .flag.best{background:#fff;color:var(--ng);border:1px solid var(--ng)}
#brux-lander .card .pstage{height:136px;border-radius:calc(var(--r-xl) - 1px) calc(var(--r-xl) - 1px) 0 0;
  background:linear-gradient(160deg,color-mix(in srgb,var(--ng) 4%,#fff),color-mix(in srgb,var(--ng) 11%,#fff));
  display:flex;align-items:center;justify-content:center;padding:14px 20px}
#brux-lander .card .pstage img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;mix-blend-mode:multiply}
#brux-lander .card .cbody{display:flex;flex-direction:column;flex:1;padding:var(--sp-4)}
#brux-lander .card .stars{display:flex;align-items:center;gap:7px}
#brux-lander .card .stars .s5{display:inline-flex;gap:2px;color:var(--warning)}
#brux-lander .card .stars svg{width:14px;height:14px}
#brux-lander .card .stars b{font-size:var(--t-meta);font-weight:700;color:var(--ink-3)}
#brux-lander .card .ctitle{font-family:var(--font-display);font-weight:800;font-size:var(--t-h5);line-height:var(--lh-tight);
  color:var(--ink);margin:var(--sp-2) 0 2px}
#brux-lander .card .csub{font-size:var(--t-meta);font-weight:600;color:var(--ink-3);white-space:nowrap}
#brux-lander .card .lasts{margin-top:var(--sp-3)}
#brux-lander .card .lrow{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
#brux-lander .card .lrow span{font-family:var(--font-stamp);font-size:11px;letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ink-4)}
#brux-lander .card .lrow b{font-size:var(--t-meta);font-weight:800}
#brux-lander .card .lbar{display:flex;gap:3px}
#brux-lander .card .lbar i{flex:1;height:8px;border-radius:3px;background:var(--line-2)}
#brux-lander .card .lscale{display:flex;justify-content:space-between;margin-top:5px;font-size:10px;font-weight:600;color:var(--ink-4)}
#brux-lander .card .pricebox{margin-top:var(--sp-3);background:var(--ng-tint);border:1px solid color-mix(in srgb,var(--ng) 12%,#fff);
  border-radius:var(--r-lg);padding:10px 12px}
#brux-lander .card .prow{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
#brux-lander .card .prow .p{font-family:var(--font-display);font-weight:800;font-size:22px;color:var(--ink);font-variant-numeric:tabular-nums}
#brux-lander .card .prow .pg{font-size:var(--t-meta);font-weight:600;color:var(--ink-4);text-align:right}
#brux-lander .card .prow.sub{margin-top:7px;padding-top:7px;border-top:1px solid color-mix(in srgb,var(--ng) 12%,#fff);font-size:var(--t-meta)}
#brux-lander .card .prow.sub b{color:var(--success);font-weight:700}
#brux-lander .card .prow.sub span{color:var(--ink-4);font-weight:600}
#brux-lander .card .ctacol{margin-top:auto;padding-top:var(--sp-4);display:flex;gap:8px}
#brux-lander .card .ctacol .btn{flex:1;font-size:var(--t-btn-sm);font-weight:400;padding:11px 10px;margin:0;white-space:nowrap}
#brux-lander .assure{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--sp-3) var(--sp-7);
  margin-top:var(--sp-7);font-size:var(--t-body-sm);font-weight:600;color:var(--ink-3)}
#brux-lander .assure img{height:26px;width:auto;display:block}
#brux-lander .assure .item{display:flex;align-items:center;gap:10px}
#brux-lander .assure .item .tick{width:20px;height:20px;border-radius:var(--r-full);background:var(--ng);color:#fff;display:grid;place-items:center}
#brux-lander .assure .item .tick svg{width:11px;height:11px}


#brux-lander .proof{background:var(--bg-page)}
#brux-lander .quote{max-width:760px;margin:var(--sp-7) auto 0;text-align:center;padding:0}
#brux-lander .quote blockquote{margin:0;font-size:clamp(1.15rem,2.4vw,1.5rem);font-weight:600;line-height:var(--lh-snug);color:var(--ink)}
#brux-lander .quote blockquote::before{content:'“';display:block;font-family:var(--font-display);font-weight:800;
  font-size:4rem;line-height:.55;color:var(--ng);margin-bottom:var(--sp-3)}
#brux-lander .quote figcaption{margin-top:var(--sp-5);font-family:var(--font-stamp);font-size:var(--t-body-sm);
  letter-spacing:var(--ls-stamp);text-transform:uppercase;color:var(--ink-4)}
#brux-lander .price-contrast{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);max-width:760px;margin:var(--sp-8) auto 0}
@media (max-width:640px){#brux-lander .price-contrast{grid-template-columns:1fr}}
#brux-lander .pc{border-radius:var(--r-xl);padding:var(--sp-6);background:var(--bg-pale-blue);border:1px solid var(--line-3)}
#brux-lander .pc .pc-price{font-family:var(--font-display);font-weight:800;font-size:var(--t-h1);line-height:1;color:var(--ink-4)}
#brux-lander .pc p{font-size:var(--t-body-sm);color:var(--ink-3);margin-top:var(--sp-3)}
#brux-lander .pc.pc-sb{background:var(--ng);border-color:transparent;box-shadow:var(--shadow-dropdown)}
#brux-lander .pc.pc-sb .pc-price{color:#fff}
#brux-lander .pc.pc-sb p{color:#e3e0f6}
#brux-lander .pc .pc-tag{display:inline-block;font-family:var(--font-stamp);font-size:var(--t-body-sm);
  letter-spacing:var(--ls-stamp);text-transform:uppercase;padding:4px 12px;border-radius:var(--r-full);
  margin-bottom:var(--sp-4);background:color-mix(in srgb,var(--ng) 10%,#fff);color:var(--ng)}
#brux-lander .pc.pc-sb .pc-tag{background:rgba(255,255,255,.14);color:var(--ng-lav)}
#brux-lander .proof .agg{text-align:center;margin-top:var(--sp-7);font-weight:700;color:var(--ink-2)}
#brux-lander .proof .agg .star{width:16px;height:16px;vertical-align:-2px}


#brux-lander .faq{background:var(--bg-pale-blue)}
#brux-lander .faq-list{max-width:760px;margin:var(--sp-7) auto 0;display:grid;gap:var(--sp-3)}
#brux-lander .faq-list details{background:var(--bg-card);border:1px solid var(--line-3);border-radius:var(--r-xl);overflow:hidden}
#brux-lander .faq-list summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;
  gap:var(--sp-4);padding:18px 22px;font-weight:700;font-size:var(--t-body);color:var(--ink-2)}
#brux-lander .faq-list summary::-webkit-details-marker{display:none}
#brux-lander .faq-list summary::after{content:'+';font-family:var(--font-display);font-weight:300;font-size:26px;
  color:var(--ng);line-height:1;transition:transform var(--ease-fast)}
#brux-lander .faq-list details[open] summary::after{transform:rotate(45deg)}
#brux-lander .faq-list details p{padding:0 22px 20px;color:var(--ink-3);font-size:var(--t-body);line-height:var(--lh-loose)}


#brux-lander .learn{background:var(--bg-page)}
#brux-lander .art-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4);margin-top:var(--sp-7)}
@media (max-width:960px){#brux-lander .art-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){#brux-lander .art-grid{grid-template-columns:1fr}}
#brux-lander .art{display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--line-3);
  border-bottom:3px solid var(--line-3);border-radius:var(--r-xl);padding:var(--sp-5);
  text-decoration:none;transition:all var(--ease-fast)}
#brux-lander .art:hover{box-shadow:var(--shadow-card-hover);border-bottom-color:var(--ng)}
#brux-lander .wrap a.art{color:var(--ink)}
#brux-lander .art .kind{font-family:var(--font-stamp);font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ng)}
#brux-lander .art h4{margin:var(--sp-2) 0 0;font-size:var(--t-h6);font-weight:700;color:var(--ink);line-height:var(--lh-snug)}
#brux-lander .art .go{margin-top:auto;padding-top:var(--sp-4);font-weight:700;font-size:var(--t-body-sm);color:var(--ng)}
/* Article thumbnail. The four cards mix two source shapes on purpose — the two
   /articles/ posts supply 2:1 photo banners, the two guides supply transparent
   illustrations — so the box is a fixed 2:1 with a tint behind it: photos fill
   it, and `.contain` letterboxes the illustrations instead of cropping heads
   and diagrams out of frame. .art-body exists so the text can stay a column
   while the card itself turns into a row on phones (see the ≤640 block). */
#brux-lander .art-thumb{display:block;aspect-ratio:2/1;border-radius:var(--r-md);overflow:hidden;
  background:color-mix(in srgb,var(--ng) 7%,#fff);margin-bottom:var(--sp-3)}
#brux-lander .art-thumb img{display:block;width:100%;height:100%;object-fit:cover}
#brux-lander .art-thumb.contain img{object-fit:contain;padding:6px}
#brux-lander .art-body{display:flex;flex-direction:column;flex:1;min-width:0}


#brux-lander .final{background:var(--ng);color:#fff;text-align:center;position:relative;overflow:hidden;isolation:isolate}
#brux-lander .final .wash{position:absolute;border-radius:var(--r-full);background:#fff;opacity:.05;pointer-events:none;z-index:0}
#brux-lander .final .wash.w1{width:480px;height:480px;top:-240px;right:-120px}
#brux-lander .final .shell{position:relative;z-index:1}
#brux-lander .final h2{font-family:var(--font-display);font-weight:800;font-size:clamp(32px,4.2vw,var(--t-h1));
  line-height:var(--lh-tight);margin:0 0 var(--sp-3);color:#fff}
#brux-lander .final p{max-width:46ch;margin:0 auto var(--sp-6);color:#e3e0f6;font-size:var(--t-body-lg)}
#brux-lander .final .micro{font-family:var(--font-stamp);font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:var(--ng-lav);margin-top:var(--sp-5)}

#brux-lander .foot{background:var(--ink);color:var(--ink-faint);text-align:center;padding:var(--sp-7) var(--sp-6);font-size:var(--t-body-sm)}
#brux-lander .foot b{color:#fff}

@media (prefers-reduced-motion:reduce){#brux-lander *{animation:none!important;transition:none!important}#brux-lander{scroll-behavior:auto}}
#brux-lander .btn:focus-visible,#brux-lander .sign:focus-visible,#brux-lander .toggle button:focus-visible,#brux-lander .art:focus-visible,#brux-lander .cause-tab:focus-visible,#brux-lander .faq-list summary:focus-visible{
  outline:3px solid var(--sbr-blue);outline-offset:2px}


#brux-lander .wrap.dark{
  --bg-page:#131126;
  --bg-card:#1d1a38;
  --bg-pale-blue:#171432;
  --ink:#f1f0fa;--ink-2:#dedbf0;--ink-3:#b7b3d6;--ink-4:#9c98c0;--ink-mute:#817da8;--ink-faint:#6f6b97;
  --line:#413d6b;--line-2:#343057;--line-3:#2c284c;
  --ng-lav:color-mix(in srgb,var(--ng) 45%,#fff);
  --ng-tint:color-mix(in srgb,var(--ng) 20%,#171432);
  --success:#4ec87e;--warning:#f2ca55;--danger:#f56d9b;
  --shadow-card-hover:0 0 14px rgba(0,0,0,.5);
  --shadow-dropdown:0 10px 24px rgba(0,0,0,.55)
}

#brux-lander .wrap.dark .stampline .stamp,#brux-lander .wrap.dark .eyebrow,#brux-lander .wrap.dark .dict .word,#brux-lander .wrap.dark .chip,#brux-lander .wrap.dark .matrix thead .gcol,#brux-lander .wrap.dark .matrix-note b,#brux-lander .wrap.dark .art .kind,#brux-lander .wrap.dark .art .go,#brux-lander .wrap.dark .match-note b,#brux-lander .wrap.dark .quote blockquote::before,#brux-lander .wrap.dark .fact .big,#brux-lander .wrap.dark .qcount,#brux-lander .wrap.dark .btn-outline,#brux-lander .wrap.dark a.btn-outline{color:var(--ng-lav)}
#brux-lander .wrap.dark .btn-outline{border-color:var(--ng-lav)}
#brux-lander .wrap.dark .star{fill:var(--ng-lav)}
#brux-lander .wrap.dark .hero .wash{opacity:.14}
#brux-lander .wrap.dark .press img{filter:brightness(0) invert(1);opacity:.6}
#brux-lander .wrap.dark .tag{background:var(--bg-card);color:var(--ng-lav);border-color:var(--line-2)}
#brux-lander .wrap.dark .dict,#brux-lander .wrap.dark .cause-callout,#brux-lander .wrap.dark .match-note{border-color:color-mix(in srgb,var(--ng) 45%,var(--bg-card))}
#brux-lander .wrap.dark .sign .box{background:transparent}
#brux-lander .wrap.dark .sign[aria-pressed="true"] .box{background:var(--ng)}
#brux-lander .wrap.dark .qbtn{background:transparent;color:#fff;border-color:var(--ng-lav)}
#brux-lander .wrap.dark .qbtn.yes{background:var(--ng)}
#brux-lander .wrap.dark .chip{background:color-mix(in srgb,var(--ng) 26%,var(--bg-card));border-color:color-mix(in srgb,var(--ng) 45%,var(--bg-card))}
#brux-lander .wrap.dark .chip.stat{background:var(--ng);border-color:var(--ng);color:#fff}
#brux-lander .wrap.dark .matrix-wrap{background:var(--bg-card)}
#brux-lander .wrap.dark .pc .pc-tag{background:color-mix(in srgb,var(--ng) 26%,var(--bg-card));color:var(--ng-lav)}
#brux-lander .wrap.dark .pc.pc-sb .pc-tag{background:rgba(255,255,255,.14)}
#brux-lander .wrap.dark .damage,#brux-lander .wrap.dark .foot{background:#0c0a1c}
#brux-lander .wrap.dark .warncard .tape{background:repeating-linear-gradient(-45deg,var(--warning) 0 16px,#0c0a1c 16px 32px)}
#brux-lander .wrap.dark .toggle{background:var(--bg-card)}
#brux-lander .wrap.dark .card .flag.best{background:var(--bg-card);color:var(--ng-lav);border-color:var(--ng-lav)}
#brux-lander .wrap.dark .card .pricebox,#brux-lander .wrap.dark .card .prow.sub{border-color:color-mix(in srgb,var(--ng) 45%,var(--bg-card))}
#brux-lander .wrap.dark .cdot{background:#3b3763}
#brux-lander .wrap.dark .cdot.on{background:var(--ng-lav)}
#brux-lander .wrap.dark .chint svg{color:var(--ng-lav)}


#brux-lander .chapters{background:var(--bg-page)}
#brux-lander .chtabs{position:relative;display:flex;gap:var(--sp-2);margin-top:var(--sp-6);overflow-x:auto;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:4px 2px 6px}
#brux-lander .chtabs::-webkit-scrollbar{display:none}
#brux-lander .chtab{flex:1 0 auto;display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 18px;
  border:1px solid var(--line-2);background:var(--bg-card);border-radius:var(--r-pill);cursor:pointer;
  font-family:var(--font-body);white-space:nowrap;transition:all var(--ease-fast)}
#brux-lander .chtab .n{font-family:var(--font-stamp);font-size:var(--t-body);letter-spacing:var(--ls-stamp);color:var(--ink-mute);line-height:1}
#brux-lander .chtab .t{font-weight:700;font-size:var(--t-body-sm);color:var(--ink-2)}
#brux-lander .chtab:hover{border-color:var(--ng)}
#brux-lander .chtab.on{background:var(--ng);border-color:var(--ng)}
#brux-lander .chtab.on .n{color:var(--ng-lav)}
#brux-lander .chtab.on .t{color:#fff}
#brux-lander .chtab.seen:not(.on) .n{color:var(--ng)}
#brux-lander .wrap.dark .chtab.seen:not(.on) .n{color:var(--ng-lav)}
#brux-lander .chpanel{display:none;margin-top:var(--sp-6)}
/* flex column + space-between: the equal-height min-height (below) leaves the
   shorter panels with slack, which pooled as dead space under .chnext —
   space-between spreads it into the gaps between content blocks instead and
   pins .chnext to the panel bottom. Safe against the old flex-inflation trap
   (uncollapsed margins) ONLY while direct children keep margin-bottom:0 —
   they all space with margin-top; the >* guard enforces it. gap:0 is
   load-bearing: the signs panel is .chpanel.signs, so the CHECKER's
   `#brux-lander .signs{gap:var(--sp-3)}` rule matches it — dormant under
   display:block, but live (and height-inflating) once the panel is flex. */
#brux-lander .chpanel.on{display:flex;flex-direction:column;justify-content:space-between;gap:0;animation:chfade .35s ease}
#brux-lander .chpanel.on>*{margin-bottom:0}
@keyframes chfade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){#brux-lander .chpanel.on{animation:none}}
#brux-lander .chpanel .head{margin-top:0;max-width:60ch}
#brux-lander .chpanel .head h2{font-size:clamp(23px,2.6vw,29px)}
#brux-lander .chpanel.damage{border-radius:var(--r-xl);padding:var(--sp-7) var(--sp-6)}
#brux-lander .chnext{display:flex;justify-content:flex-end;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-6)}
#brux-lander .chnext .btn{font-size:var(--t-btn-sm);padding:11px 22px;font-weight:400}

/* Every chapter panel is a rounded white card on the lavender section —
   except .damage, which keeps its own dark card treatment. (Originally only
   chapter 1 looked carded, and only by accident: its "what" class caught the
   `.what` SECTION background with no radius/padding.) */
#brux-lander .chpanel:not(.damage){background:var(--bg-card);border-radius:var(--r-xl);padding:16px 20px}

#brux-lander .chpanel .what-grid{margin-top:var(--sp-5)}
#brux-lander .chpanel .factrow{margin-top:var(--sp-5)}
#brux-lander .chpanel .tmj{margin-top:var(--sp-5);margin-bottom:0}
#brux-lander .chpanel .cause-grid{margin-top:var(--sp-5)}
#brux-lander .chpanel .wheel-fig{margin-top:var(--sp-6)}
#brux-lander .chpanel .cause-callout{margin-top:var(--sp-5)}
#brux-lander .chpanel .stage-list{margin-top:var(--sp-6)}
#brux-lander .chpanel .warncard{margin-top:var(--sp-6)}
#brux-lander .chpanel .steps{margin-top:var(--sp-6)}
#brux-lander .chpanel .fix-grid{margin-top:var(--sp-5)}

#brux-lander .chapters.underline .chtabs{gap:0;border-bottom:1px solid var(--line-2);padding-bottom:0}
#brux-lander .chapters.underline .chtab{border:0;border-radius:0;background:transparent;border-bottom:3px solid transparent;padding:10px 16px 12px}
#brux-lander .chapters.underline .chtab.on{background:transparent;border-bottom-color:var(--ng)}
#brux-lander .chapters.underline .chtab.on .t{color:var(--ng)}
#brux-lander .chapters.underline .chtab.on .n{color:var(--ng)}
#brux-lander .wrap.dark .chapters.underline .chtab.on .t,#brux-lander .wrap.dark .chapters.underline .chtab.on .n{color:var(--ng-lav)}

#brux-lander .matrixsec{background:var(--bg-page)}
#brux-lander .matrixsec .matrix-block{margin-top:var(--sp-6)}


@media (max-width:640px){
  #brux-lander .wrap{
    --t-display:28px;--t-display-sub:15px;
    --t-h1:32px;--t-h2:25px;--t-h3:22px;--t-h4:19px;--t-h5:17px;--t-h6:14px;
    --t-body-lg:15px;--t-body:14px;--t-body-sm:12.5px;--t-meta:11px;
    --t-btn:16px;--t-btn-sm:13px;
  }
  #brux-lander section,#brux-lander header.hero{padding:clamp(40px,10vw,56px) 0}
  #brux-lander .head h2{font-size:23px}
  #brux-lander .ribbon{font-size:22px;padding:12px 18px 12px 16px}
  #brux-lander .ribbon-sub{font-size:13.5px;padding:10px 16px}
  #brux-lander .dict .word{font-size:25px}
  #brux-lander .card .prow .p{font-size:19px}
  #brux-lander .card .pstage{height:118px}
}



#brux-lander .teeth-fig{margin:var(--sp-4) 0 0;background:#014177;border-radius:var(--r-xl);
  padding:var(--sp-5) var(--sp-5) var(--sp-4)}
#brux-lander .teeth-fig img{width:min(300px,80%);height:auto;display:block;margin:0 auto}
#brux-lander .teeth-fig figcaption{font-size:var(--t-meta);color:#bcd2e4;text-align:center;margin-top:var(--sp-3);line-height:var(--lh-snug)}


#brux-lander .wheel-fig{margin:var(--sp-9) auto 0;max-width:600px}
#brux-lander .wheel-fig img{width:100%;height:auto;display:block}
#brux-lander .wheel-fig figcaption{font-size:var(--t-meta);color:var(--ink-faint);text-align:center;margin-top:var(--sp-3)}


#brux-lander .riskpair{display:grid;grid-template-columns:repeat(2,minmax(0,300px));justify-content:center;
  gap:var(--sp-6) var(--sp-9);margin-top:var(--sp-8)}
@media (max-width:640px){#brux-lander .riskpair{grid-template-columns:minmax(0,300px)}}
#brux-lander .circ-fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}
#brux-lander .circ-fig img{width:min(210px,70%);height:auto;aspect-ratio:1;object-fit:cover;border-radius:var(--r-full);
  border:6px solid rgba(255,255,255,.1);display:block}
#brux-lander .circ-fig figcaption{font-size:var(--t-body-sm);color:#b9bbbe;text-align:center;max-width:30ch;line-height:var(--lh-snug)}
#brux-lander .circ-fig figcaption b{color:#fff}


#brux-lander .chapters{padding:clamp(20px,4vh,44px) 0}
#brux-lander .chapters .shell>.head{display:flex;align-items:baseline;gap:var(--sp-5);max-width:none;margin-top:var(--sp-4)}
#brux-lander .chapters .shell>.head h2{font-size:clamp(20px,2.8vh,26px);white-space:nowrap;margin:0}
#brux-lander .chapters .shell>.head p{font-size:var(--t-body-sm);line-height:var(--lh-snug);flex:1;min-width:0}
#brux-lander .chtabs{margin-top:var(--sp-4)}
#brux-lander .chtab{padding:9px 15px}
#brux-lander .chpanel{margin-top:var(--sp-5)}
/* All chapter panels share the tallest panel's height so switching tabs never
   shifts the layout. Desktop: ≈ "04 The damage" (the tallest at ≥861, per
   request; damage natural 633 + 2px buffer). Mobile override (≤640) uses
   the tallest THERE — "The signs" (natural 680) — since the damage panel is
   compacted shorter on mobile and matching it would clip signs. The panel is
   a flex column with space-between (see .chpanel.on above) so shorter panels
   spread the slack between blocks instead of pooling it at the bottom; the
   flex-inflation trap only bites if a direct child gains margin-bottom.
   NOTE: on short (~900px) windows the damage-sized fold overflows the pane by
   ~30px (inherent to the damage content you asked to match — it already did);
   taller windows fit. */
#brux-lander .chpanel.on{min-height:635px}
#brux-lander .chpanel .head h2{font-size:clamp(19px,2.6vh,24px)}
#brux-lander .chpanel .head p{font-size:var(--t-body-sm);line-height:var(--lh-snug)}
#brux-lander .chnext{margin-top:var(--sp-4)}
#brux-lander .chnext .btn{padding:9px 18px;font-size:13px}


#brux-lander .chpanel .what-grid{gap:24px;margin-top:var(--sp-4)}
#brux-lander .chpanel .dict{padding:14px 18px}
#brux-lander .chpanel .dict .word{font-size:clamp(20px,3vh,26px)}
#brux-lander .chpanel .dict .say{margin-top:3px}
#brux-lander .chpanel .dict .def{font-size:var(--t-body-sm);margin-top:6px}
#brux-lander .chpanel .teeth-fig{margin-top:10px;padding:10px 12px 8px}
#brux-lander .chpanel .teeth-fig img{width:auto;max-width:100%;max-height:min(150px,16vh);margin:0 auto}
#brux-lander .chpanel .teeth-fig figcaption{margin-top:6px}
#brux-lander .chpanel .what-copy p{font-size:var(--t-body-sm);line-height:1.6}
#brux-lander .chpanel .what-copy p+p{margin-top:8px}
#brux-lander .chpanel .factrow{margin-top:var(--sp-4);gap:10px}
#brux-lander .chpanel .fact{padding:12px 14px}
#brux-lander .chpanel .fact .big{font-size:clamp(20px,3.4vh,28px)}
#brux-lander .chpanel .fact p{font-size:var(--t-meta);margin-top:4px}
#brux-lander .chpanel .srcnote{margin-top:8px;font-size:10.5px}


#brux-lander .chpanel .tmj{gap:24px;margin-top:var(--sp-4)}
#brux-lander .chpanel .tmj-copy h3{font-size:15px;margin-bottom:6px}
#brux-lander .chpanel .tmj-copy>p{font-size:var(--t-body-sm);line-height:1.55}
#brux-lander .chpanel .tmj-list{gap:8px;margin-top:10px}
#brux-lander .chpanel .tmj-item b{font-size:13px}
#brux-lander .chpanel .tmj-item span{font-size:11.5px}
#brux-lander .chpanel .tmj-fig{padding:10px 12px 8px}
#brux-lander .chpanel .tmj-fig img{width:auto;max-width:100%;max-height:min(300px,34vh);margin:0 auto}
#brux-lander .chpanel .tmj-fig figcaption{margin-top:6px;font-size:10.5px}


#brux-lander .chpanel .cause-grid{grid-template-columns:200px 1.12fr .72fr;gap:14px;margin-top:var(--sp-4);align-items:stretch}
#brux-lander .cause-tabs{gap:6px}
#brux-lander .cause-tab{padding:8px 12px;gap:10px;border-radius:var(--r-md)}
#brux-lander .cause-tab .n{font-size:12px;width:16px}
#brux-lander .cause-tab .t{font-size:12.5px}
#brux-lander .cause-panel{padding:16px 18px;position:static;height:100%}
#brux-lander .cause-panel h3{font-size:15px;margin-bottom:6px}
#brux-lander .cause-panel p{font-size:12.5px;line-height:1.55}
#brux-lander .cause-panel p+p{margin-top:6px}
#brux-lander .cause-panel .chips{margin-top:10px;gap:6px}
#brux-lander .chip{font-size:10.5px;padding:4px 10px}
#brux-lander .chpanel .wheel-fig{margin:0;max-width:none;align-self:center}
#brux-lander .chpanel .wheel-fig img{width:auto;max-width:100%;max-height:min(270px,32vh);margin:0 auto}
#brux-lander .chpanel .wheel-fig figcaption{font-size:10px;margin-top:4px}
#brux-lander .chpanel .cause-callout{margin-top:12px;padding:10px 16px;gap:14px}
#brux-lander .chpanel .cause-callout p{font-size:12.5px;min-width:220px}
#brux-lander .chpanel .cause-callout .btn{padding:9px 18px;font-size:13px}
@media (max-width:860px){#brux-lander .chpanel .cause-grid{grid-template-columns:1fr}}


#brux-lander .chpanel.damage{padding:var(--sp-5)}
#brux-lander .chpanel .damage-top{grid-template-columns:1.35fr .65fr;gap:20px}
#brux-lander .chpanel .night-fig img{width:auto;max-height:min(150px,17vh);border-width:4px}
#brux-lander .chpanel .night-fig figcaption{font-size:10.5px;max-width:40ch}
#brux-lander .chpanel .stage-list{margin-top:12px;gap:10px}
#brux-lander .stage{padding:12px}
#brux-lander .stage::before{top:24px}
#brux-lander .stage .n{font-size:clamp(17px,2.6vh,22px)}
#brux-lander .stage h4{margin:6px 0 3px;font-size:12.5px}
#brux-lander .stage p{font-size:11px}
#brux-lander .stage .badge{margin-top:6px;font-size:9.5px;padding:3px 9px}
#brux-lander .dmg-bottom{display:grid;grid-template-columns:.72fr 1.28fr;gap:12px;align-items:stretch;margin-top:12px}
@media (max-width:860px){#brux-lander .dmg-bottom{grid-template-columns:1fr}}
#brux-lander .chpanel .riskpair{margin-top:0;grid-template-columns:1fr 1fr;gap:10px;align-content:center}
#brux-lander .chpanel .circ-fig{gap:6px}
#brux-lander .chpanel .circ-fig img{width:auto;max-height:min(110px,13vh);border-width:4px}
#brux-lander .chpanel .circ-fig figcaption{font-size:10px}
#brux-lander .chpanel .warncard{margin-top:0}
#brux-lander .warncard .tape{height:8px}
#brux-lander .chpanel .warncard .inner{padding:12px 16px;gap:12px}
#brux-lander .warncard .wico{flex:0 0 36px;height:36px}
#brux-lander .warncard .wico svg{width:20px;height:20px}
#brux-lander .warncard .wt{font-size:11px}
#brux-lander .warncard .wbody>p{font-size:12px;margin-top:2px}
#brux-lander .wchips{gap:5px;margin-top:6px}
#brux-lander .wchip{font-size:9.5px;padding:3px 9px}
#brux-lander .chpanel .warncard .btn{padding:9px 16px;font-size:13px}
#brux-lander .chpanel .apnea{margin-top:10px;font-size:11.5px}


#brux-lander .chpanel .fix-grid{grid-template-columns:1.15fr .85fr;gap:22px;margin-top:var(--sp-4)}
#brux-lander .fix-grid .dict{margin-bottom:10px}
#brux-lander .chpanel .fix-copy>p{font-size:12.5px;line-height:1.55}
#brux-lander .chpanel .benefits{grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:10px}
#brux-lander .benefit .tick{flex:0 0 18px;height:18px}
#brux-lander .benefit .tick svg{width:10px;height:10px}
#brux-lander .benefit b{font-size:12.5px}
#brux-lander .benefit span{font-size:11px}
#brux-lander .chpanel .fix-art img{width:auto;max-width:100%;max-height:min(210px,26vh);margin:0 auto}
#brux-lander .chpanel .fix-art figcaption{font-size:10.5px}
#brux-lander .chpanel .steps{margin-top:12px;gap:10px}
#brux-lander .step{padding:12px 14px}
#brux-lander .step .dot{width:26px;height:26px;font-size:12px;margin-bottom:6px}
#brux-lander .step h4{font-size:12.5px}
#brux-lander .step p{font-size:11px}


@media (max-width:640px){
  
  #brux-lander .chapters{padding:14px 0}
  #brux-lander .chapters .stampline,#brux-lander .checker .stampline,#brux-lander .offer .stampline{display:none}
  #brux-lander .chapters .shell>.head{display:block;margin-top:0}
  #brux-lander .chapters .shell>.head h2{white-space:normal;font-size:17px}
  #brux-lander .chapters .shell>.head p{display:none}
  #brux-lander .chtabs{margin-top:8px;padding-bottom:4px}
  #brux-lander .chtab{padding:7px 12px;gap:7px}
  #brux-lander .chtab .n{font-size:10px}
  #brux-lander .chtab .t{font-size:11.5px}
  #brux-lander .chpanel{margin-top:8px}
  #brux-lander .chpanel.on{min-height:682px} /* mobile tallest = The signs (natural 680); damage is shorter here */
  #brux-lander .chpanel:not(.damage){padding:12px;border-radius:var(--r-lg)}
  #brux-lander .chpanel .head h2{font-size:15.5px}
  #brux-lander .chpanel .head p{font-size:11.5px}
  #brux-lander .chnext{margin-top:8px;gap:6px}
  #brux-lander .chnext .btn{padding:7px 11px;font-size:11px}

  
  #brux-lander .chpanel .what-grid{gap:10px;margin-top:8px}
  #brux-lander .chpanel .dict{padding:10px 12px}
  #brux-lander .chpanel .dict .word{font-size:18px}
  #brux-lander .chpanel .dict .say{font-size:10px;margin-top:2px}
  #brux-lander .chpanel .dict .def{font-size:11.5px;margin-top:4px}
  #brux-lander .chpanel .teeth-fig{margin-top:8px;padding:8px 10px;display:flex;align-items:center;gap:10px}
  #brux-lander .chpanel .teeth-fig img{max-height:54px;margin:0}
  #brux-lander .chpanel .teeth-fig figcaption{margin:0;text-align:left;font-size:9.5px}
  #brux-lander .chpanel .what-copy p{font-size:11.5px;line-height:1.5}
  #brux-lander .chpanel .factrow{grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
  #brux-lander .chpanel .fact{padding:9px 11px;border-bottom-width:2px}
  #brux-lander .chpanel .fact .big{font-size:18px}
  #brux-lander .chpanel .fact p{font-size:9.5px;margin-top:2px}
  #brux-lander .chpanel .srcnote{font-size:9px;margin-top:6px}

  
  #brux-lander .chpanel .tmj{gap:10px;margin-top:8px}
  #brux-lander .chpanel .tmj-copy h3{font-size:13px;margin-bottom:4px}
  #brux-lander .chpanel .tmj-copy>p{font-size:11.5px;line-height:1.45}
  #brux-lander .chpanel .tmj-list{gap:6px;margin-top:8px}
  #brux-lander .tmj-item .pin{flex-basis:7px;height:7px;margin-top:5px}
  #brux-lander .chpanel .tmj-item b{font-size:11.5px}
  #brux-lander .chpanel .tmj-item span{font-size:10px}
  #brux-lander .chpanel .tmj-fig{padding:8px}
  #brux-lander .chpanel .tmj-fig img{max-height:23vh}
  #brux-lander .chpanel .tmj-fig figcaption{font-size:9.5px;margin-top:4px}

  
  #brux-lander .chpanel .cause-grid{grid-template-columns:1fr;gap:8px;margin-top:8px}
  #brux-lander .cause-tabs{flex-direction:row;overflow-x:auto;scrollbar-width:none;padding:2px;margin:0 -2px}
  #brux-lander .cause-tabs::-webkit-scrollbar{display:none}
  #brux-lander .cause-tab{flex:0 0 auto;padding:6px 11px;border-radius:var(--r-pill);gap:6px}
  #brux-lander .cause-tab .n{font-size:9.5px;width:auto}
  #brux-lander .cause-tab .t{font-size:11px;white-space:nowrap}
  
  #brux-lander .cause-tabs{display:none}
  #brux-lander .cause-panels{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:8px;
    scrollbar-width:none;padding:2px;margin:0 -2px}
  #brux-lander .cause-panels::-webkit-scrollbar{display:none}
  #brux-lander .cause-panels .cause-panel{display:block;flex:0 0 92%;scroll-snap-align:start}
  #brux-lander .cause-nav{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:2px}
  #brux-lander .cause-nav .cdots{display:flex;align-items:center;gap:7px}
  #brux-lander .cause-nav .cdot{width:6px;height:6px;border-radius:var(--r-full);border:0;padding:0;cursor:pointer;
    background:color-mix(in srgb,var(--ng) 14%,#e6e6ee);transition:all var(--ease-fast)}
  #brux-lander .cause-nav .cdot.on{width:18px;background:var(--ng)}
  #brux-lander .cause-nav .chint{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;
    letter-spacing:.04em;text-transform:uppercase;color:var(--ink-mute)}
  #brux-lander .cause-nav .chint svg{width:10px;height:10px}
  #brux-lander .cause-panel{padding:9px 11px;height:auto}
  #brux-lander .cause-panel h3{font-size:12px;margin-bottom:3px}
  #brux-lander .cause-panel p{font-size:10.5px;line-height:1.4}
  #brux-lander .cause-panel p+p{margin-top:4px}
  #brux-lander .cause-panel .chips{margin-top:4px;gap:4px}
  #brux-lander .chip{font-size:9px;padding:3px 8px}
  #brux-lander .chpanel .wheel-fig{display:flex;align-items:center;gap:10px;background:var(--bg-pale-blue);border-radius:var(--r-lg);padding:6px 9px}
  #brux-lander .chpanel .wheel-fig img{max-height:78px;margin:0}
  #brux-lander .chpanel .wheel-fig figcaption{font-size:9px;text-align:left;margin:0}
  #brux-lander .chpanel .cause-callout{margin-top:6px;padding:8px 10px;gap:8px;flex-wrap:nowrap;align-items:center}
  #brux-lander .chpanel .cause-callout p{font-size:10px;line-height:1.35;min-width:0}
  #brux-lander .chpanel .cause-callout .btn{flex:0 0 auto;padding:7px 11px;font-size:10.5px;white-space:nowrap}

  
  #brux-lander .chpanel.damage{padding:12px;border-radius:var(--r-lg)}
  #brux-lander .chpanel .damage-top{grid-template-columns:1fr;gap:6px}
  #brux-lander .chpanel.damage .head h2{font-size:15.5px}
  #brux-lander .chpanel.damage .head p{font-size:10.5px;line-height:1.4}
  #brux-lander .chpanel .night-fig{flex-direction:row;gap:10px;justify-content:flex-start}
  #brux-lander .chpanel .night-fig img{max-height:44px;border-width:2px}
  #brux-lander .chpanel .night-fig figcaption{text-align:left;font-size:9px;max-width:none}
  #brux-lander .chpanel .stage-list{display:flex;overflow-x:auto;scroll-snap-type:x proximity;gap:8px;margin:6px -2px 0;padding:2px 2px 4px;scrollbar-width:none}
  #brux-lander .chpanel .stage-list::-webkit-scrollbar{display:none}
  #brux-lander .chpanel .stage{flex:0 0 62%;scroll-snap-align:start;padding:8px 10px}
  #brux-lander .stage .n{font-size:14px}
  #brux-lander .stage h4{font-size:10.5px;margin:3px 0 2px}
  #brux-lander .stage p{font-size:9px}
  #brux-lander .stage .badge{font-size:8px;padding:2px 6px;margin-top:3px}
  #brux-lander .dmg-bottom{gap:6px;margin-top:6px}
  #brux-lander .chpanel .riskpair{grid-template-columns:1fr 1fr;gap:8px}
  #brux-lander .chpanel .circ-fig{gap:4px}
  #brux-lander .chpanel .circ-fig img{max-height:50px;border-width:2px}
  #brux-lander .chpanel .circ-fig figcaption{font-size:8.5px}
  #brux-lander .chpanel .warncard .inner{padding:8px 10px;gap:8px;flex-wrap:nowrap;align-items:center}
  #brux-lander .warncard .wico{flex:0 0 24px;height:24px;border-radius:7px}
  #brux-lander .warncard .wico svg{width:14px;height:14px}
  #brux-lander .warncard .wt{font-size:9px}
  #brux-lander .warncard .wbody{min-width:0}
  #brux-lander .warncard .wbody>p{font-size:9.5px;margin-top:1px}
  #brux-lander .wchips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-top:4px;padding-bottom:2px}
  #brux-lander .wchips::-webkit-scrollbar{display:none}
  #brux-lander .wchip{font-size:8px;padding:2px 6px;white-space:nowrap;flex:0 0 auto}
  #brux-lander .chpanel .warncard .btn{flex:0 0 auto;padding:6px 10px;font-size:10px;white-space:nowrap}
  #brux-lander .chpanel .apnea{margin-top:6px;font-size:9.5px;line-height:1.35}

  
  #brux-lander .chpanel .fix-grid{grid-template-columns:1fr;align-items:stretch;gap:8px;margin-top:4px}
  #brux-lander .fix-grid .dict{margin-bottom:4px}
  #brux-lander .chpanel .fix-grid .dict{padding:8px 10px}
  #brux-lander .chpanel .fix-grid .dict .word{font-size:16px}
  #brux-lander .chpanel .fix-grid .dict .def{font-size:10.5px;margin-top:3px}
  #brux-lander .chpanel .fix-copy>p{font-size:10px;line-height:1.35}
  #brux-lander .chpanel .benefits{grid-template-columns:1fr;gap:4px;margin-top:4px}
  #brux-lander .benefit{gap:6px}
  #brux-lander .benefit .tick{flex:0 0 12px;height:12px;margin-top:1px}
  #brux-lander .benefit .tick svg{width:7px;height:7px}
  #brux-lander .benefit>div{line-height:1.3}
  #brux-lander .benefit b{display:inline;font-size:10px}
  #brux-lander .benefit b::after{content:' — '}
  #brux-lander .benefit span{display:inline;font-size:9px}
  #brux-lander .chpanel .fix-art{display:flex;align-items:center;gap:10px;background:var(--bg-pale-blue);border-radius:var(--r-lg);padding:6px 9px}
  #brux-lander .chpanel .fix-art img{max-height:52px;border:0;border-radius:var(--r-md);margin:0}
  #brux-lander .chpanel .fix-art figcaption{font-size:9px;text-align:left;margin:0;line-height:1.3}
  #brux-lander .chpanel .steps{display:flex;overflow-x:auto;scroll-snap-type:x proximity;gap:6px;margin:4px -2px 0;padding:1px;scrollbar-width:none}
  #brux-lander .chpanel .steps::-webkit-scrollbar{display:none}
  #brux-lander .step{flex:0 0 46%;scroll-snap-align:start;padding:7px 9px}
  #brux-lander .step .dot{width:16px;height:16px;font-size:9px;margin-bottom:2px}
  #brux-lander .step h4{font-size:10px}
  #brux-lander .step p{font-size:8.5px}

  
  #brux-lander .checker{padding:12px 0}
  /* fill the fold: the checker's content is short, so stretch the shell to
     the full fold height and distribute quiz + result evenly across it
     instead of floating in one clump */
  #brux-lander .checker .shell{flex:1;display:flex;flex-direction:column}
  /* align-items:stretch (not the base's `start`): as a flex COLUMN, `start`
     shrink-wraps each card to its content width — so the result card narrowed
     to its text width after "Start over" re-rendered it. Stretch keeps both
     cards full-width regardless of content. */
  #brux-lander .checker-grid{flex:1;display:flex;flex-direction:column;justify-content:space-evenly;
    align-items:stretch;gap:8px;margin-top:8px}
  #brux-lander .checker .head{margin-top:4px;margin-bottom:8px}
  #brux-lander .checker .head h2{font-size:17px}
  #brux-lander .checker .head p{font-size:11px;line-height:1.4}
  
  #brux-lander .checker .signs:not(.quiz){display:flex;flex-wrap:wrap;gap:4px}
  #brux-lander .checker .signs:not(.quiz) .sign{padding:5px 9px;gap:6px;border-radius:var(--r-pill);align-items:center}
  #brux-lander .sign .box{flex:0 0 13px;height:13px;border-width:1.5px;margin-top:0;border-radius:var(--r-full)}
  #brux-lander .sign .box svg{width:8px;height:8px}
  #brux-lander .sign span{font-size:9.5px;line-height:1.2}
  #brux-lander .signs.chips{gap:5px}
  #brux-lander .signs.chips .sign{padding:6px 10px}
  #brux-lander .signs.chips .sign .box{flex:0 0 13px;height:13px}
  #brux-lander .signs.chips .sign span{font-size:9.5px}
  /* sized to FILL the checker fold (their old compact values left the fold
     two small clumps in a sea of sky — user feedback) */
  #brux-lander .quiz-card{padding:32px 16px 15px;min-height:308px} /* freq-step height (base 380 is desktop-sized); top clears the pinned bar */
  #brux-lander .quiz-card .qprog{left:16px;right:16px;top:16px} /* match mobile padding */
  #brux-lander .qprog{height:6px;margin-bottom:10px}
  #brux-lander .qcount{font-size:10.5px}
  #brux-lander .qtext{font-size:15px;min-height:2.4em;margin:6px 0 12px}
  #brux-lander .qhint{font-size:11px;margin:-8px 0 12px}
  #brux-lander .qbtn{padding:12px 14px;font-size:13.5px}
  #brux-lander .qback{margin-top:10px;font-size:10px}
  /* Headroom while the gate is up so the two-field panel never has to scroll at
     this width. Applies whenever the card is gated (normally step 1, but the boot
     race can gate a later step too); it reverts to the locked 308px the moment
     the gate clears, so the sign steps still can't shift the fold. */
  /* 409px measured at 320px wide (the narrowest phone, where the copy wraps
     most); 420 clears it and every wider phone. */
  #brux-lander .quiz-card.is-gated{min-height:420px}
  #brux-lander .qgate .qgate-field + .qgate-field{margin-top:10px}
  #brux-lander .qgate .qgate-lab{gap:8px}
  #brux-lander .qgate{padding:16px}
  #brux-lander .qgate .qgate-k{font-size:10.5px}
  #brux-lander .qgate .qgate-h{font-size:15px;margin:6px 0 8px}
  #brux-lander .qgate .qgate-p{font-size:11px;margin:0 0 10px}
  #brux-lander .qgate .qgate-lab{font-size:10.5px;margin-bottom:4px}
  #brux-lander .qgate .qgate-in{padding:11px 13px;font-size:16px} /* ≥16px: iOS Safari zooms the page on focus below that */
  #brux-lander .qgate .qgate-go{margin-top:10px;padding:12px 14px;font-size:13.5px}
  #brux-lander .qgate .qgate-err{font-size:10.5px}
  #brux-lander .qgate .qgate-fine{font-size:10px;margin-top:8px;line-height:1.35}
  #brux-lander .checknote{font-size:9.5px;margin-top:6px;line-height:1.35}
  /* min-height + flex(button-to-bottom): the recommendation text wraps to a
     different number of lines per state (e.g. "Start checking" 1 line vs a
     matched guard's 2-line "why"), which resized the card between steps.
     Lock it so the blue card is one consistent size on mobile. */
  #brux-lander .result{position:static;padding:16px 15px;border-radius:var(--r-lg);
    min-height:276px;display:flex;flex-direction:column}
  #brux-lander .result .rec{margin-bottom:auto} /* button sinks to a fixed bottom */
  #brux-lander .result h3{font-size:18px;margin-top:3px}
  #brux-lander .result .count{font-size:10px;padding:3px 8px}
  #brux-lander .result .k,#brux-lander .rec .k{font-size:10px}
  #brux-lander .meter{height:10px;margin:8px 0 5px}
  #brux-lander .result .lvl{font-size:9px}
  #brux-lander .result .rec{margin-top:9px;padding:10px 11px}
  #brux-lander .rec .v{font-size:14px;margin-top:3px}
  #brux-lander .rec .why{font-size:11px;margin-top:3px;line-height:1.35}
  #brux-lander .result .btn{margin-top:10px;padding:10px 14px;font-size:13.5px}

  
  #brux-lander .offer{padding:14px 0}
  #brux-lander .offer .head.center{margin-top:0}
  #brux-lander .offer .head h2{font-size:17px}
  #brux-lander .offer .head p{font-size:11px}
  #brux-lander .toggle{margin-top:8px;padding:4px}
  #brux-lander .toggle button{padding:7px 13px;font-size:11px}
  #brux-lander .thickness-note{font-size:10px;margin-top:5px}
  #brux-lander .offer .check-match{margin-top:8px;font-size:11px;padding:7px 14px}
  #brux-lander .match-note{font-size:10px;padding:6px 14px;margin:10px auto -4px}
  #brux-lander .cards{margin:10px calc(-1 * var(--sp-6)) 0;
    padding:12px calc((100vw - min(80vw, 320px)) / 2) 14px}
  #brux-lander .card .pstage{height:180px;padding:8px 14px}
  #brux-lander .card .cbody{padding:10px 12px 11px}
  #brux-lander .card .stars svg{width:11px;height:11px}
  #brux-lander .card .stars b{font-size:9.5px}
  #brux-lander .card .ctitle{font-size:14px;margin:5px 0 1px}
  #brux-lander .card .csub{font-size:9.5px}
  #brux-lander .card .lasts{margin-top:7px}
  #brux-lander .card .lrow{margin-bottom:3px}
  #brux-lander .card .lrow span{font-size:8.5px}
  #brux-lander .card .lrow b{font-size:9.5px}
  #brux-lander .card .lbar i{height:6px}
  #brux-lander .card .lscale{font-size:8px;margin-top:3px}
  #brux-lander .card .pricebox{margin-top:7px;padding:7px 9px}
  #brux-lander .card .prow .p{font-size:16px}
  #brux-lander .card .prow .pg{font-size:9px}
  #brux-lander .card .prow.sub{margin-top:4px;padding-top:4px;font-size:9px}
  #brux-lander .card .flag{font-size:8.5px;padding:4px 10px;top:-11px}
  #brux-lander .card .ctacol{padding-top:8px;gap:6px}
  #brux-lander .card .ctacol .btn{padding:8px;font-size:11px}
  #brux-lander .cnav{gap:6px;margin-top:-2px}
  #brux-lander .cdot{width:6px;height:6px}
  #brux-lander .cdot.on{width:18px}
  #brux-lander .chint{font-size:8.5px;gap:5px}
  #brux-lander .chint svg{width:9px;height:9px}
  #brux-lander .assure{margin-top:10px;gap:6px 12px;font-size:9.5px;flex-wrap:nowrap;overflow-x:auto;
    justify-content:flex-start;scrollbar-width:none}
  #brux-lander .assure::-webkit-scrollbar{display:none}
  #brux-lander .assure .item{flex:0 0 auto;gap:6px;white-space:nowrap}
  #brux-lander .assure .item .tick{width:14px;height:14px}
  #brux-lander .assure .item .tick svg{width:8px;height:8px}
  #brux-lander .assure img{height:16px}
}

/* ============ SALE DISPLAY (segment / Smart-Sales driven) ============ */
#brux-lander .card .prow .pwrap{display:inline-flex;align-items:baseline;gap:7px;flex-wrap:wrap}
#brux-lander .card .prow .was{font-size:13px;font-weight:600;color:var(--ink-mute);text-decoration:line-through}
#brux-lander .card .prow .off{font-family:var(--font-stamp);font-size:10.5px;letter-spacing:var(--ls-stamp);
  text-transform:uppercase;color:#fff;background:var(--danger);border-radius:var(--r-full);padding:2px 8px;line-height:1.5}
@media (max-width:640px){
  #brux-lander .card .prow .pwrap{gap:5px}
  #brux-lander .card .prow .was{font-size:11px}
  #brux-lander .card .prow .off{font-size:9px;padding:2px 6px}
}

/* ============ MATCH-NOTE CENTERING ============
   `#brux-lander .wrap p{margin:0}` (specificity 1,1,1) outranks the design's
   `#brux-lander .match-note{margin:.. auto ..}` (1,1,0) and kills the fit-content
   auto-centering. Restore the intended margins with a higher-specificity selector. */
#brux-lander .offer .match-note{margin:var(--sp-6) auto calc(-1 * var(--sp-3))}
@media (max-width:640px){
  #brux-lander .offer .match-note{margin:10px auto -4px}
}

/* ============ STAGE BADGE POSITION RESET ============
   The global site stylesheet (app.css) declares `.badge{position:absolute}`.
   The design's `.stage .badge` never sets `position`, so that global rule leaked
   in and yanked the "Preventable/Costly/…" badges over the stage number + heading
   (The Damage tab). Pin them back into normal flow. */
#brux-lander .stage .badge{position:static}

/* ============ HERO "DENTAL-LAB MADE" LABEL ============
   Nudge the .t2 hero label down (desktop) per design feedback — from 42% into the
   whitespace below the box's right side. Hero tags are hidden on mobile. */
#brux-lander .hero-tags .tag.t2{top:56%}

/* ============ FOLD-SNAP: ALL-VIEWPORT PIECES ============
   Shared by the mobile (≤640px) and desktop (>640px) fold-snap blocks below. */

/* Per-fold background tints — adjacent folds always differ.
   (.final keeps its deep purple; the damage chapter keeps its dark card) */
#brux-lander .press{background:var(--bg-pale-blue)}
#brux-lander .chapters{background:#f1edfa}   /* lavender */
#brux-lander .checker{background:#e6f3fb}    /* sky */
#brux-lander .offer{background:#f8f8f8}      /* light gray (per request) */
#brux-lander .matrixsec{background:#f1edfa}  /* lavender (per request) */
#brux-lander .proof{background:#eef0fb}      /* periwinkle */
#brux-lander .faq{background:#faf2f2}        /* soft pink-gray (per request) */
#brux-lander .learn{background:#eaf7fb}      /* pale cyan */
#brux-lander .pc{background:#fff}            /* light price card pops on the tint (.pc-sb stays purple) */

/* Lock the page root: the fold pane (.wrap) is the ONLY scroller at every
   width — the adopted footer leaves nothing legitimate in the root's range,
   and a stray body-level element still left ~60px that let flicks split
   across two scroll containers. */
html:has(#brux-lander){overflow:hidden}
/* iOS SAFARI CLIP GUARD — do not remove.
   The parent theme ships `#wrapper [role="main"]{display:flex;…;overflow:hidden}`
   (revolution/assets/css/app.css), and on this page <main id="main-content"
   role="main"> collapses to exactly the 67px .header-spacer box: the lander's
   whole body lives in the position:fixed .wrap, so #brux-lander contributes 0
   in-flow height. Blink lets a fixed descendant escape the overflow clip of an
   ancestor that isn't its containing block, so Chrome and Android render fine —
   iOS WebKit clips it anyway, cropping the entire lander (and the JS-built
   .fold-nav rail, also a child of #brux-lander) to a 67px strip with a blank
   white page below it. The site's own fixed bottom nav sits OUTSIDE
   #main-content, which is why it kept painting on the phone while the lander
   did not. Un-clip main — this stylesheet only loads on the Bruxism Lander
   template, so the clip is restored on every other page. */
html body #wrapper #main-content{overflow:visible}
/* …and the SAME trap one level up, which only arms itself on mobile: the theme
   ships `html,body{overflow-x:hidden}` (custom-styles.css, ≤767px) plus
   `body{padding-bottom:60px}`. A box with overflow-x:hidden and overflow-y
   visible computes overflow-y to `auto`, so <body> becomes a real 60px-tall
   SCROLL CONTAINER — measured at a 390px viewport: body 60px, overflow-x
   hidden / overflow-y auto, while #main-content is 0px there. 60px is exactly
   the strip left on the phone. Neutralise it too, or un-clipping main alone
   just hands the crop to body. Safe here: the root is already scroll-locked
   above, so body's overflow-x:hidden is doing nothing on this page anyway. */
html body{overflow:visible}

/* NO SITEWIDE SALE BANNER ON THIS PAGE (per user).
   header/style10.php renders `.saleParentWrapper > .deal-top-bar` (the sale
   ticker strip) whenever a sitewide sale window is open, and drops
   body.bannerAdded. It breaks this lander at BOTH widths, because the fold
   pane is a fixed box positioned against a chrome height measured with no
   sale running:
     · mobile — the wrapper is position:fixed;top:0;z-index:1030, so its 54px
       strip paints straight over the top of every fold (.wrap is top:0);
     · desktop — the strip pushes #sbr-header from 0→92 down to 56→148, while
       .wrap stays at top:96px, so the header overlapped the pane by 52px.
   Hiding the strip restores the intended geometry exactly — measured at
   1200px: header 0→92 against a 96px pane top, a clean 4px gap — so no
   compensating offset is needed here or in the mobile block. Scoped by
   construction: this stylesheet only loads on the Bruxism Lander template,
   so the banner still runs everywhere else. body.bannerAdded is left in
   place; nothing on this page keys off it (verified: .header-spacer is 67px
   desktop / 0 mobile either way). */
.saleParentWrapper .deal-top-bar{display:none}
/* keyboard focus lands on the pane (JS sets tabindex) — no ring on click */
#brux-lander .wrap:focus{outline:none}

/* Fold nav — the section-skip dot rail (built by bruxism-lander.js).
   One dot per fold, active dot stretches into a pill, click jumps straight
   to that fold (snap keeps it exact). The rail itself is a glossy frosted-
   glass pill (backdrop-blur + translucent white + top highlight) so it stays
   clearly visible on every fold — pastels, the purple final fold, and the
   dark footer band alike; browsers without backdrop-filter still get the
   translucent white pill. rgba(51,31,151,…) = --night-guard-purple. */
#brux-lander .fold-nav{position:fixed;z-index:500;display:flex;flex-direction:column;gap:2px;
  /* --ng lives on .wrap but the rail is appended to #brux-lander — without
     redeclaring it here every var(--ng) dot color resolved INVALID (i.e.
     transparent dots: the original "rail is not visible" bug) */
  --ng:var(--night-guard-purple);
  --ng-lav:color-mix(in srgb,var(--ng) 32%,#fff);
  background:transparent;border-radius:var(--r-full)}
#brux-lander .fold-dot{position:relative;display:flex;align-items:center;justify-content:center;
  padding:0;border:0;background:transparent;cursor:pointer}
#brux-lander .fold-dot i{display:block;border-radius:var(--r-full);
  background:color-mix(in srgb,var(--ng) 38%,#fff);
  border:1px solid color-mix(in srgb,var(--ng) 50%,#fff);
  /* white halo keeps bare dots legible on the purple fold + dark footer
     (the rail itself is transparent) */
  box-shadow:0 0 0 2px rgba(255,255,255,.62);
  transition:all var(--ease-fast)}
#brux-lander .fold-dot:hover i{background:var(--ng-lav)}
#brux-lander .fold-dot.on i{background:var(--ng);border-color:var(--ng);
  box-shadow:0 0 0 2px rgba(255,255,255,.75),0 1px 4px rgba(51,31,151,.35)}
/* section-name toast — popped above the rail by JS when the active fold
   changes (mobile substitute for the desktop hover labels) */
#brux-lander .fold-toast{position:absolute;bottom:calc(100% + 10px);left:50%;
  transform:translateX(-50%) translateY(5px);white-space:nowrap;
  background:#fff;color:var(--ng);font-family:var(--font-stamp);
  font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);text-transform:uppercase;
  padding:5px 14px;border-radius:var(--r-pill);
  border:1px solid color-mix(in srgb,var(--ng) 18%,#fff);box-shadow:var(--shadow-dropdown);
  opacity:0;pointer-events:none;transition:opacity var(--ease-fast),transform var(--ease-fast)}
#brux-lander .fold-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media (min-width:641px){#brux-lander .fold-toast{display:none}} /* desktop has hover labels */
#brux-lander .fold-dot span{position:absolute;right:calc(100% + 8px);top:50%;transform:translateY(-50%);
  white-space:nowrap;background:#fff;color:var(--ng);font-family:var(--font-stamp);
  font-size:var(--t-body-sm);letter-spacing:var(--ls-stamp);text-transform:uppercase;
  padding:4px 12px;border-radius:var(--r-pill);
  border:1px solid color-mix(in srgb,var(--ng) 18%,#fff);box-shadow:var(--shadow-dropdown);
  opacity:0;pointer-events:none;transition:opacity var(--ease-fast)}
#brux-lander .fold-dot:hover span,#brux-lander .fold-dot:focus-visible span{opacity:1}
#brux-lander .fold-dot:focus-visible{outline:2px solid var(--sbr-blue);outline-offset:2px;border-radius:var(--r-sm)}

/* ============ MOBILE FOLD-SNAP SECTIONS (≤640px) ============
   One section per fold: every top-level lander section fills the visible
   viewport (100svh minus the 55px fixed bottom nav) and the root scroller
   (html) snaps fold-to-fold — a flick JUMPS to the next section instead of
   free pixel scrolling (snap-stop:always = max one fold per gesture).
   A section taller than one fold (small phones, opened FAQs) still scrolls
   freely inside itself before snapping onward — an oversized snap area is a
   valid rest position, so nothing becomes unreachable.
   Each fold gets its own pastel background so sections read as separate
   screens. The press strip is absorbed into the bottom of the hero fold.
   The site footer gets a snap stop of its own so `mandatory` can't strand it.
   Desktop (>640px) untouched. */
@media (max-width:640px){
  /* THE LANDER IS THE SCROLLER, not the page root. Root-scroller snapping is
     unreliable on real phones here — the theme sets overflow on BOTH html and
     body, a combo where iOS/Android skip snap physics on the root scroller
     (finger flicks free-scrolled even though html computed `y mandatory`).
     An inner scroll container snaps everywhere. The page (html) keeps only
     the site footer's own scroll range: flicking past the last fold chains
     out of the wrap into it, so the footer stays reachable and needs no snap
     rules. Native hash links (#offer/#check) scroll whichever ancestor
     overflows, so they still work; lander JS scrollToEl() switched to
     scrollIntoView for the same reason. NOTE: a top sale banner
     (body.bannerAdded, ~54px fixed) will overlay fold tops during sitewide
     sales — revisit fold offsets if one goes live. */
  /* --mnav = the fixed bottom nav's REAL overlay height. bruxism-lander.js
     measures #main-navigation-mobile at load/resize and sets it inline on
     #brux-lander (0 when the nav is absent/hidden — some browsers/sessions
     don't show it, and a hardcoded 55px let the next fold's top slice peek
     out at the bottom). 55px is only the no-JS fallback. Declared on
     #brux-lander, NOT .wrap: an own declaration on .wrap would beat the
     inherited inline override. */
  #brux-lander{--mnav:55px}
  /* FIXED pane (like desktop): anchored top:0 → bottom:--mnav. Fixed boxes
     resize with the browser's collapsing toolbar natively, so folds
     (min-height:100%) always equal exactly the visible area — svh sizing
     could not track that and let the next fold peek out. And because the
     pane's box ENDS above the nav, nothing exists below it to peek. */
  #brux-lander .wrap{
    position:fixed;top:0;left:0;right:0;bottom:var(--mnav);
    overflow-y:auto;overflow-x:hidden;
    scroll-snap-type:y mandatory;
    scroll-behavior:smooth;
    scroll-padding:0}
  /* flex centering (NOT block align-content: no Samsung Internet / older
     Safari support — folds silently top-aligned there). The explicit
     width:100% on .shell is load-bearing: its `margin:0 auto` disables flex
     cross-axis stretch, and shrink-to-fit blew it out to max-content once
     before (offer carousel → 1170px). */
  #brux-lander header.hero,
  #brux-lander .wrap>section{
    min-height:100%;
    display:flex;flex-direction:column;justify-content:center;
    scroll-snap-align:start;scroll-snap-stop:always;scroll-margin-top:0;
    padding:16px 0 20px}
  #brux-lander header.hero>.shell,
  #brux-lander .wrap>section>.shell{width:100%}

  /* MOBILE keeps the ORIGINAL two separate last folds (per user): the blue
     final CTA is a normal .wrap>section fold, and the adopted footer below
     is its own snap stop. It's shorter than a fold (~660px), so it gets a
     full fold's min-height — otherwise its snap top sits past pane max-scroll
     and clamps short, bleeding the previous fold into view. */
  #brux-lander .wrap>footer.fixed-footer-container{min-height:100%;
    scroll-snap-align:start;scroll-snap-stop:always;background:#fff}
  /* FALLBACK ONLY: .lastfold (final CTA + footer combined) exists on mobile
     only when the page loaded at desktop width and was then narrowed across
     the 640px boundary — the JS combine is decided once at load. Render it
     as one scrollable snap fold so nothing becomes unreachable. */
  #brux-lander .wrap>.lastfold{min-height:100%;display:flex;flex-direction:column;
    scroll-snap-align:start;scroll-snap-stop:always}
  #brux-lander .wrap>.lastfold>.final{flex:1 0 auto;display:flex;flex-direction:column;
    justify-content:safe center;padding:20px 0}
  #brux-lander .wrap>.lastfold>footer.fixed-footer-container{flex:0 0 auto;min-height:0;background:#fff}

  /* root scroll lock lives in the all-viewport block above */

  /* fold 1 = hero + compact one-row press strip (44px) + a 36px clearance
     below it so the horizontal fold-nav pill floats in free space instead
     of covering the logos — 44+36 = the 80px taken off hero */
  #brux-lander header.hero{min-height:calc(100% - 80px)}
  #brux-lander .press{height:44px;padding:0;display:flex;align-items:center;margin-bottom:36px}
  #brux-lander .press .shell{flex-wrap:nowrap;justify-content:flex-start;gap:16px;
    overflow-x:auto;scrollbar-width:none;width:100%}
  #brux-lander .press .shell::-webkit-scrollbar{display:none}
  #brux-lander .press .k{font-size:10px;flex:0 0 auto}
  #brux-lander .press img{height:13px;flex:0 0 auto}

  /* hero fold fit: cap the kit image, tighten type + spacing */
  #brux-lander .hero .eyebrow{font-size:12px;margin-bottom:8px}
  #brux-lander .ribbon{font-size:20px;padding:10px 16px}
  #brux-lander .ribbon-sub{font-size:12.5px;padding:9px 14px}
  #brux-lander .hero-art{margin:12px 0 4px}
  #brux-lander .hero-art img{width:auto;max-width:min(420px,88%);max-height:30vh;max-height:30svh}
  #brux-lander .hero .sub{font-size:12.5px;line-height:1.5;margin-top:10px;max-width:52ch}
  #brux-lander .btnrow{margin-top:12px;gap:8px}
  #brux-lander .btnrow .btn{font-size:14px;padding:10px 18px}
  #brux-lander .trustline{margin-top:10px;font-size:11px;gap:6px 10px}

  /* per-fold background tints live in the all-viewport block above */

  /* proof fold fit (was ~1.35 folds): tighter quote + 2-up price cards */
  #brux-lander .proof .head h2{font-size:16px}
  #brux-lander .quote{margin-top:10px}
  #brux-lander .quote blockquote{font-size:13px}
  #brux-lander .quote blockquote::before{font-size:34px;margin-bottom:6px}
  #brux-lander .quote figcaption{margin-top:8px;font-size:10px}
  #brux-lander .price-contrast{grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
  #brux-lander .pc{padding:12px}
  #brux-lander .pc .pc-tag{font-size:9.5px;padding:3px 8px;margin-bottom:6px}
  #brux-lander .pc .pc-price{font-size:24px}
  #brux-lander .pc p{font-size:10px;margin-top:6px;line-height:1.4}
  #brux-lander .proof .agg{margin-top:12px;font-size:11px}

  /* faq + learn small trims so those folds rest comfortably */
  #brux-lander .faq .head h2,#brux-lander .learn .head h2{font-size:16px}
  #brux-lander .faq-list{margin-top:12px;gap:8px}
  /* sized so the longest question ("How do you fit it without seeing my
     teeth?") stays a single line down to ~360px-wide phones */
  #brux-lander .faq-list summary{padding:12px 14px;font-size:11px;gap:10px}
  #brux-lander .faq-list summary::after{font-size:20px}
  #brux-lander .faq-list details p{padding:0 16px 12px;font-size:11.5px;line-height:1.5}
  #brux-lander .learn .art-grid{margin-top:12px;gap:8px}
  #brux-lander .art{padding:12px 14px}
  #brux-lander .art .go{padding-top:8px}
  /* Phones stack the 4 cards in one column, so a 2:1 image on top of each would
     add ~660px and push this fold well past one screen. Go horizontal instead —
     square thumb left, text right — which is the usual article-list shape and
     costs the fold almost nothing. */
  #brux-lander .art{flex-direction:row;align-items:center;gap:12px}
  #brux-lander .art-thumb{flex:0 0 66px;aspect-ratio:1;margin-bottom:0}
  #brux-lander .art-thumb.contain img{padding:4px}
  #brux-lander .art .go{padding-top:4px}

  /* fold nav: HORIZONTAL pill centered above the bottom nav — --mnav now
     lives on #brux-lander so the rail inherits the measured value too.
     Active dot stretches in width. Labels are hover-only, so hide them on
     touch — the dots keep aria-labels. */
  #brux-lander .fold-nav{flex-direction:row;left:50%;right:auto;top:auto;
    bottom:calc(var(--mnav) + 10px);
    transform:translateX(-50%);gap:1px;padding:1px 6px}
  #brux-lander .fold-dot{width:24px;height:26px}
  #brux-lander .fold-dot i{width:7px;height:7px}
  #brux-lander .fold-dot.on i{width:18px;height:7px}
  #brux-lander .fold-dot span{display:none}
}

/* ============ DESKTOP FOLD-SNAP (>640px) ============
   Same one-section-per-fold + flick-jump + tints as mobile. The wrap becomes
   a FIXED pane below the 96px fixed #sbr-header (position:fixed sidesteps the
   ~67px of invisible in-flow elements #wrapper keeps above the lander, which
   would misalign an in-flow pane by exactly that much). Folds size off the
   pane (min-height:100%); there's no bottom nav on desktop. Root scroll is
   locked in the all-viewport block, so the pane is the page's only scroller —
   which also freezes the theme's scroll-driven header behaviors: the header
   stays its full 96px, matching the pane's top offset. Folds taller than the
   pane (short windows) free-scroll internally before snapping onward. */
@media (min-width:641px){
  #brux-lander .wrap{
    position:fixed;top:96px;left:0;right:0;bottom:0;
    overflow-y:auto;overflow-x:hidden;
    scroll-snap-type:y mandatory;
    scroll-behavior:smooth;
    scroll-padding:0}
  body.admin-bar #brux-lander .wrap{top:calc(96px + 32px)} /* WP admin bar */
  /* flex centering + width:100% shell guard — same reasoning as the mobile
     block (block align-content lacks Samsung Internet/older Safari support;
     bare flex shrink-fits .shell to max-content). */
  #brux-lander header.hero,
  #brux-lander .wrap>section{
    min-height:100%;
    /* safe center: content shorter than the pane stays vertically centered
       (equal top/bottom); content TALLER than the pane top-aligns and scrolls
       instead of centering (which would clip the top in a scroll container).
       Every overflowing fold then shares the same top gap — the padding —
       rather than the old mix of tiny/centered/clipped rhythms. */
    display:flex;flex-direction:column;justify-content:safe center;
    scroll-snap-align:start;scroll-snap-stop:always;scroll-margin-top:0;
    /* padding scales down on short windows so tall folds fit more often
       before they have to scroll; caps at 24 on roomy windows */
    padding:clamp(12px,2.2vh,24px) 0}
  #brux-lander header.hero>.shell,
  #brux-lander .wrap>section>.shell{width:100%}
  /* fold 1 = hero + press strip (69px at desktop sizes) */
  #brux-lander header.hero{min-height:calc(100% - 69px)}
  /* LAST FOLD = blue final CTA + footer, combined by bruxism-lander.js into
     one snap stop. The .final CTA flex-grows to absorb the slack (centered
     blue banner) so the footer is pinned to the bottom and fills the screen;
     the footer no longer floats alone in a half-empty fold. On short windows
     the pair is taller than the pane and simply scrolls within this one fold. */
  #brux-lander .wrap>.lastfold{min-height:100%;display:flex;flex-direction:column;
    scroll-snap-align:start;scroll-snap-stop:always}
  #brux-lander .wrap>.lastfold>.final{flex:1 0 auto;display:flex;flex-direction:column;
    justify-content:safe center;padding:clamp(16px,2.4vh,40px) 0}
  /* slim the closing CTA so the blue banner + the ~625px footer share one
     screen on typical laptops (the footer is the immovable floor) */
  #brux-lander .wrap>.lastfold>.final h2{font-size:clamp(24px,2.8vw,34px);margin-bottom:.25em}
  #brux-lander .wrap>.lastfold>.final p{font-size:var(--t-body);line-height:var(--lh-snug);margin-bottom:var(--sp-4)}
  #brux-lander .wrap>.lastfold>.final .micro{margin-top:var(--sp-3);margin-bottom:0}
  #brux-lander .wrap>.lastfold>footer.fixed-footer-container{flex:0 0 auto;background:#fff}
  /* the footer's trust bar ships with 96px top+bottom padding (192px of
     whitespace around a ~55px icon row) — far too tall to share the last
     fold. Trim it ON THIS PAGE ONLY so the CTA + footer fit one screen;
     the icons + all footer content are untouched. */
  #brux-lander .wrap>.lastfold .section-return-policy-option{padding-top:26px;padding-bottom:26px}
  /* FALLBACK ONLY: a direct-child footer at desktop width means the page
     loaded ≤640 (no combine — mobile keeps separate folds) and was widened
     after; give it the old own-fold treatment so it stays a valid snap stop. */
  #brux-lander .wrap>footer.fixed-footer-container{min-height:100%;
    scroll-snap-align:start;scroll-snap-stop:always;background:#fff}

  /* fold nav: clear of the pane's scrollbar, centered on the pane (not the
     viewport — the pane starts below the 96px header) */
  #brux-lander .fold-nav{right:20px;top:calc(50% + 48px);transform:translateY(-50%);gap:3px;padding:9px 3px}
  #brux-lander .fold-dot{width:26px;height:22px}
  #brux-lander .fold-dot i{width:9px;height:9px}
  #brux-lander .fold-dot.on i{height:22px}
}

/* ============ OFFER FOLD DESKTOP FIT (>640px) ============
   The offer fold (head + toggle + CTA + 3 product cards + assurance row) ran
   ~129px taller than a 900px-tall window's pane, cutting off the assurance
   row. Compact the vertical rhythm so it fits one fold; taller windows just
   get more breathing room (fold centers). Mobile already fits — untouched. */
@media (min-width:641px){
  /* section.offer (1,2,1) to outrank the fold's `.wrap>section{padding:…}`
     (1,1,1) — a plain `.offer` (1,1,0) lost and the padding never shrank.
     Offer is the tallest content fold, so it runs a touch tighter than the
     shared clamp to fit more laptop windows before it has to scroll. */
  #brux-lander .wrap>section.offer{padding:clamp(6px,1.2vh,12px) 0}
  #brux-lander .offer .head h2{font-size:clamp(24px,3vw,30px);margin-bottom:.3em}
  #brux-lander .offer .head p{font-size:var(--t-body)}
  #brux-lander .offer .head{margin-top:var(--sp-2)}
  #brux-lander .toggle{margin-top:var(--sp-3)}
  #brux-lander .thickness-note{margin-top:var(--sp-2)}
  #brux-lander .offer .check-match{margin-top:var(--sp-2)}
  #brux-lander .cards{margin-top:var(--sp-3)}
  #brux-lander .card .pstage{height:200px}
  #brux-lander .card .cbody{padding:var(--sp-3) var(--sp-4)}
  #brux-lander .card .lasts{margin-top:var(--sp-2)}
  #brux-lander .card .pricebox{margin-top:var(--sp-2)}
  #brux-lander .card .ctacol{padding-top:var(--sp-3)}
  #brux-lander .assure{margin-top:var(--sp-3)}
}
