html{overflow-x:clip}  /* root-only: clips sideways slivers; body stays visible so sticky works in Firefox */
/* VIVA SCENTA site styles — system "Honest White". Pairs with tokens.css; ALL motion lives in motion.css
   (under prefers-reduced-motion: no-preference). Direction: Indian mid-luxury, calm confidence, editorial
   whitespace, proof-led. Red = headlines + primary CTA + save pill only; cards sit on --surface-2. */
*{margin:0;padding:0;box-sizing:border-box}
/* ═══ RESPONSIVENESS RULES ═══
   1. ONE DIAL: every size on this site is rem (or em/%/cqw) — the fluid root
      below scales the ENTIRE system with the window. 90rem window = 1rem root;
      grows to 1.25rem on wide screens, floors at 0.8125rem on phones.
   2. Never size a component in fixed px except 1-0.0938rem hairlines (and tap targets, mobile.css).
   3. Layout shifts (stacking, reordering) live in media queries; SIZE lives here.
   4. Components that must adapt to their column use container units. */
html{font-size:clamp(14px, 0.3vw + 11.7px, 20px)}
body{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);
  background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-kerning:normal}
p,li,dd,figcaption{text-wrap:pretty}
.price,td,th,.tier-per,.rail b,output{font-variant-numeric:tabular-nums}
img{max-width:100%;display:block}
[hidden]{display:none !important}
/* skip link: off-canvas until focused (no motion: position only) */
.skip{position:absolute;left:-200vw;top:0;z-index:300;padding:.75rem 1rem;background:var(--ink-deep);color:#fff;font-size:var(--fs-small)}
.skip:focus{left:0}
a{color:inherit;text-decoration:none}
h1,h2,h3{font-family:var(--font-display);font-weight:600;line-height:var(--lh-display);color:var(--head);letter-spacing:var(--track-h2);text-wrap:balance}
h1{letter-spacing:var(--track-hero)}
.hero-type{font-family:var(--font-hero);font-weight:600;color:var(--head)}
.mark-type{font-family:var(--font-mark);font-weight:400}
strong{font-weight:600}
.hl{color:var(--highlight)}

/* ── announce: two messages share one grid cell (same height, no layout shift); .is-on shows, JS rotates ── */
.announce{background:var(--brand);color:var(--on-brand);font-size:var(--fs-label);letter-spacing:.14em;
  text-transform:uppercase;text-align:center;padding:0.625rem var(--pad-x);display:grid}
.announce-msg{grid-area:1/1;margin:0;opacity:0;visibility:hidden;color:inherit}
.announce-msg.is-on{opacity:1;visibility:visible}
.announce-msg a{text-decoration:underline;text-underline-offset:.2em}

/* ── header / nav ── */
.site-header{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:0.0625rem solid var(--line)}
.nav{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);
  padding:1.125rem var(--pad-x);max-width:calc(var(--max-w) + 2*var(--pad-x));margin:0 auto}
.nav-left,.nav-right{display:flex;align-items:center;gap:1.1rem}
.nav-right{justify-content:flex-end}
.nav-home{display:inline-flex;align-items:center}
.nav-wordmark{height:1.05rem;width:auto}
.nav-links{display:flex;gap:1.75rem}
.nav-links a{font-size:var(--fs-label);letter-spacing:var(--track-nav);text-transform:uppercase;color:var(--ink)}
.nav-links a:hover,.nav-links a[aria-current="page"]{color:var(--brand)}
.menu-btn{cursor:pointer;background:none;border:none;color:inherit;display:none;align-items:center}
.menu-btn .burger span{display:block;width:1.375rem;height:0.0938rem;background:currentColor;margin:0.3125rem 0}
.nav-ico{display:inline-flex;align-items:center;color:var(--ink);position:relative;padding:0.2rem}
.nav-ico:hover{color:var(--brand)}
.nav-ico svg{width:1.35rem;height:1.35rem;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.nav-bag .nav-count{position:absolute;top:-0.3rem;right:-0.45rem;font-size:0.55rem;font-weight:800;
  background:var(--brand);color:#fff;border-radius:50%;min-width:1rem;height:1rem;
  display:flex;align-items:center;justify-content:center;line-height:1}

/* nav drawer (left). Shown/hidden by class; no slide. */
.mobile-menu{position:fixed;top:0;left:0;height:100dvh;width:min(24rem,100vw);z-index:200;
  display:none;flex-direction:column;background:var(--bg);border-right:0.0625rem solid var(--line);
  padding:5rem var(--pad-x) var(--s4)}
.mobile-menu.open{display:flex}
.drawer-nav{display:flex;flex-direction:column}
.drawer-nav a{padding:0.9rem 0;border-bottom:0.0625rem solid var(--line);font-family:var(--font-display);
  font-size:1rem;letter-spacing:.02em;color:var(--ink-deep)}
.drawer-nav a:hover{color:var(--brand)}
.drawer-foot{margin-top:auto;font-size:var(--fs-small);color:var(--ink-soft)}
/* The X is DRAWN, not typed: as a character it rendered in each device's default button font, so its
   size and baseline moved per phone. Two hairlines in currentColor are the same everywhere. */
.menu-close{position:absolute;top:1.5rem;right:var(--pad-x);z-index:210;border:none;color:var(--ink);cursor:pointer;
  font-size:0;width:1rem;height:1rem;min-height:0;padding:0;
  background:linear-gradient(45deg,transparent calc(50% - .06rem),currentColor calc(50% - .06rem),currentColor calc(50% + .06rem),transparent calc(50% + .06rem)),
    linear-gradient(-45deg,transparent calc(50% - .06rem),currentColor calc(50% - .06rem),currentColor calc(50% + .06rem),transparent calc(50% + .06rem))}
.menu-close:hover{color:var(--brand)}

/* cart drawer (right) */
.cart-drawer{position:fixed;top:0;right:0;height:100dvh;width:min(26rem,92vw);z-index:220;
  display:none;flex-direction:column;background:var(--bg);box-shadow:var(--shadow-soft);
  border-left:0.0625rem solid var(--line);padding:1.5rem var(--s4)}
.cart-drawer.open{display:flex}
.cart-close{left:auto;right:var(--s4);top:1.26rem}
.cart-head{font-size:0.875rem;line-height:1rem;letter-spacing:.18em;text-transform:uppercase;text-align:center;
  padding:0 0 1.5rem;border-bottom:0.0625rem solid var(--line)}
.cart-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}
.cart-empty{font-size:0.9375rem;color:var(--ink-soft)}
.cart-hint{font-size:0.8125rem;color:var(--ink-soft)}
.cart-nudge{font-size:var(--fs-small);color:var(--ink-deep);border:0.0625rem solid var(--line);background:var(--surface-2);padding:.5rem .8rem}   /* bundle nudge slot: cart JS swaps the text via data-nudge/data-tiers */
.cart-set{display:block;width:min(100%,15rem)}
.cart-foot{font-size:0.625rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);
  text-align:center;padding-top:1rem;border-top:0.0625rem solid var(--line)}
.cart-catch{position:fixed;inset:0;z-index:215;display:none;background:rgba(5,5,5,.35)}
.cart-catch.open{display:block}

/* search overlay (plain: white sheet, one field) */
.search-overlay{position:fixed;inset:0;z-index:230;display:none;align-items:flex-start;justify-content:center;
  padding-top:18vh;background:rgba(255,255,255,.96)}
.search-overlay.open{display:flex}
.search-box{width:min(38rem,88vw);position:relative}
.search-field{position:relative;border-bottom:0.125rem solid var(--ink)}
.search-field input{width:100%;background:none;border:none;outline:none;color:var(--ink);
  font-family:var(--font-body);font-size:clamp(1.5rem,3vw,2.25rem);font-weight:400;padding:0.75rem 0.25rem;letter-spacing:.02em}
.search-field input::placeholder{color:var(--ink-soft);opacity:.55}
.search-suggest{list-style:none;margin-top:1rem;max-height:40vh;overflow:auto}
.search-suggest li{padding:0.75rem 0.5rem;font-size:1rem;color:var(--ink-soft);cursor:pointer;
  display:flex;justify-content:space-between;gap:1rem;border-bottom:0.0625rem solid var(--line)}
.search-suggest li:hover{color:var(--ink)}

/* ── shared ── */
main.home{display:flex;flex-direction:column}
section{padding:var(--s7) var(--pad-x)}
.eyebrow{font-size:var(--fs-label);letter-spacing:.2em;text-transform:uppercase;color:var(--stone);margin-bottom:var(--s3)}
.sect-head{text-align:center;max-width:51.25rem;margin:0 auto var(--s5)}
.sect-head h2{font-size:var(--fs-h2)}
.sect-sub{font-size:var(--fs-small);color:var(--ink-soft);margin-top:var(--s2)}
.cta{display:inline-block;padding:0.9375rem 2.125rem;font-size:var(--fs-label);letter-spacing:var(--track-label);font-weight:600;
  text-transform:uppercase;background:var(--brand);color:var(--on-brand);border:0.0625rem solid var(--brand);
  box-sizing:border-box;line-height:1.35;vertical-align:middle;cursor:pointer;font-family:var(--font-body)}
.cta:hover{background:var(--brand-hover);border-color:var(--brand-hover)}
.cta-ghost{background:transparent;color:var(--ink-deep);border:0.0625rem solid var(--ink-deep)}
.cta-ghost:hover{color:var(--brand);border-color:var(--brand);background:transparent}
.price{font-family:var(--font-body);font-weight:600}
.price s{color:var(--ink-soft);font-weight:400;margin-right:.4em}

/* ── 1 hero ── */
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:var(--s5);align-items:center;min-height:32rem;order:1}
.hero-copy h1{font-family:var(--font-hero);font-weight:600;font-size:var(--fs-hero);line-height:1.05;letter-spacing:var(--track-hero);color:var(--head)}
.hero-proof{margin-top:var(--s3);font-size:1rem;color:var(--ink)}
.hero-price{margin-top:var(--s2);font-size:var(--fs-small);color:var(--ink-soft)}
.hero-ctas{display:flex;gap:0.875rem;flex-wrap:wrap;margin-top:var(--s4);align-items:center}
.hero-soft{font-size:var(--fs-small);text-decoration:underline;text-underline-offset:.2em}
.hero-visual img{width:100%;height:auto}


/* ── 3 cards (five personalities · collection grid · shop-by · pair rows) — one markup, build-pages.card_html ──
   off-white surface on the white page · badge (truthful wear hours) · front→back image swap on hover (motion.css) ·
   name link stretched over the card (.card-cover) · tier hint · quick-add (hover on desktop, always on touch) */
.cards{display:grid;gap:var(--s3);max-width:var(--max-w);margin:0 auto}
.cards-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.cards-3,.cards-6{grid-template-columns:repeat(3,minmax(0,1fr))}
.card{position:relative;background:var(--surface-2);border:0.0625rem solid var(--line);display:flex;flex-direction:column}
.card:hover,.card:focus-within{border-color:var(--h2);box-shadow:var(--shadow-hover)}
.card-ph{position:relative;aspect-ratio:3/4;display:grid;background:var(--surface-2);overflow:hidden}   /* the flat-lay photo box (3:4) */
.card-ph > *{grid-area:1/1}
.card-ph img{width:100%;height:100%;object-fit:cover}
.card-alt{opacity:0;pointer-events:none}
.card:hover .card-alt,.card:focus-within .card-alt{opacity:1}
.card:hover .card-ph img:not(.card-alt),.card:focus-within .card-ph img:not(.card-alt){opacity:0}
.card-badge{position:absolute;top:.75rem;left:.75rem;z-index:1;font-size:var(--fs-label);letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-deep);background:var(--bg);border:0.0625rem solid var(--line);padding:.35rem .55rem;line-height:1;white-space:nowrap}
.card-rule{height:0.125rem;background:var(--h2)}   /* the perfume accent, as a thin rule only */
.card-info{padding:1.125rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:.4rem;flex:1;min-width:0}
.card-name{font-family:var(--font-display);font-size:var(--fs-h3);color:var(--ink-deep);letter-spacing:-.01em}
.card-cover::after{content:'';position:absolute;inset:0}   /* stretched link: the whole card opens the PDP */
.card-role{font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;color:var(--h2)}
.card-usp{font-size:var(--fs-small);color:var(--ink-soft);line-height:1.55}
.card-notes{font-size:var(--fs-small);color:var(--ink)}
.card-stars{font-size:var(--fs-small);color:var(--ink-soft)}
.card-price{font-size:1rem;margin-top:auto;padding-top:.35rem}
.card-tier{position:relative;z-index:1;font-size:var(--fs-label);color:var(--ink-soft);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:.2em;align-self:flex-start;padding:.25rem 0}
.card-tier:hover{color:var(--brand)}
.card-add{position:relative;z-index:1;margin-top:.5rem;min-height:44px;width:100%;padding:.7rem 1rem;cursor:pointer;font-family:var(--font-body);font-weight:600;
  font-size:var(--fs-label);letter-spacing:var(--track-label);text-transform:uppercase;background:transparent;color:var(--ink-deep);border:0.0625rem solid var(--ink-deep)}
.card-add:hover{background:var(--ink-deep);color:var(--on-brand)}
@media (hover:hover) and (pointer:fine){
  .card-add{opacity:0}
  .card:hover .card-add,.card:focus-within .card-add,.card-add:focus-visible{opacity:1}
}
.card .cta{align-self:flex-start;margin-top:.6rem}
/* collection tools: a plain sort select above the grid */
.page-tools{max-width:var(--max-w);margin:var(--s5) auto calc(-1*var(--s4));padding:0 var(--pad-x);display:flex;justify-content:flex-end}
.page-sort{display:inline-flex;align-items:center;gap:.6rem;font-size:var(--fs-small);color:var(--ink-soft)}
.page-sort select{font:inherit;color:var(--ink-deep);background:var(--bg);border:0.0625rem solid var(--line);padding:.5rem .75rem;min-height:44px;cursor:pointer}
/* ── red trust bar (home fold 2 · PDP under the pair row): six SoT facts, animated line icons (motion.css) ── */
.trustbar{background:var(--brand);color:var(--on-brand);padding:0 var(--pad-x)}
.trustbar ul{list-style:none;max-width:var(--max-w);margin:0 auto;display:grid;grid-template-columns:repeat(6,1fr)}
.trustbar li{display:flex;align-items:center;gap:.75rem;min-height:56px;padding:1rem .9rem;font-weight:500;font-size:.9rem;line-height:1.35;
  border-left:0.0625rem solid var(--on-brand-line)}
.trustbar li:first-child{border-left:0}
.trustbar svg{flex:none;width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.trustbar svg *{transform-box:fill-box;transform-origin:center}

/* ── 4 discovery set band ── */
.discovery{order:4;display:grid;grid-template-columns:.9fr 1.1fr;gap:var(--s5);align-items:center;
  border-top:0.0625rem solid var(--line);border-bottom:0.0625rem solid var(--line)}
.disc-copy h2{font-size:var(--fs-h2);margin-bottom:var(--s3)}
.disc-copy p{max-width:32.5rem;margin-bottom:var(--s2)}
.disc-steps{list-style:none;display:flex;flex-direction:column;gap:.5rem;margin:var(--s3) 0}
.disc-steps li{padding-left:1.4rem;position:relative}
.disc-steps li::before{content:counter(step);counter-increment:step;position:absolute;left:0;color:var(--brand);font-weight:600}
.disc-steps{counter-reset:step}

/* ── 5 find your scent ── */

/* ── 6 reviews / proof block ── */
.reviews{order:6;text-align:center;border-top:0.0625rem solid var(--line)}
.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3);max-width:var(--max-w);margin:0 auto;text-align:left}
.review{border:0.0625rem solid var(--line);padding:var(--s3)}
.review img{width:100%;aspect-ratio:1;object-fit:cover;margin-bottom:var(--s2)}

/* ── 7 why 20% (comparison table) ── */
.why{order:7}
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.85rem}
th{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);text-align:left;
  padding:.6rem .8rem;border-bottom:0.0625rem solid var(--ink)}
td{padding:.7rem .8rem;border-bottom:0.0625rem solid var(--line);line-height:1.6}
td.us,th.us{color:var(--brand);font-weight:600}

/* ── 8 sets & savings ── */
.sets{order:8}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3);max-width:var(--max-w);margin:0 auto}
.tile{border:0.0625rem solid var(--line);background:var(--surface-2);padding:var(--s4);text-align:center}
.tile b{display:block;font-family:var(--font-display);font-size:1.5rem;color:var(--ink-deep);margin-bottom:.5rem}

/* ── 9 origins teaser ── */
.origins{order:9;display:grid;grid-template-columns:1fr 1fr;gap:var(--s5);align-items:center;border-top:0.0625rem solid var(--line)}
.origins p{max-width:34rem;margin-bottom:var(--s3)}

/* ── 10 faq (top 4) ── */
.faq{order:10;max-width:47rem;margin:0 auto;width:100%}
.faq-item{border-bottom:0.0625rem solid var(--line)}
.faq-item summary{cursor:pointer;list-style:none;padding:1.1rem 0;font-weight:600;font-size:var(--fs-body);color:var(--ink-deep);
  display:flex;justify-content:space-between;align-items:center;gap:1rem}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";font-size:1.2rem;color:var(--ink-soft);flex:none}
.faq-item[open] summary::after{content:"−"}
.faq-item summary:hover{color:var(--brand)}
.faq-a{padding:0 0 1.2rem;display:flex;flex-direction:column;gap:.6rem;color:var(--ink)}

/* ── 11 newsletter + whatsapp opt-in ── */
.newsletter{order:11;text-align:center;border-top:0.0625rem solid var(--line)}
.newsletter h2{font-size:var(--fs-h2);max-width:45rem;margin:0 auto var(--s3)}
.newsletter p{max-width:37.5rem;margin:0 auto var(--s4);font-size:var(--fs-small);color:var(--ink-soft)}
.nl-form{display:flex;flex-direction:column;gap:.75rem;max-width:36rem;margin:0 auto}
.nl-fields{display:flex;gap:0;width:100%}
.nl-fields input{flex:1;min-width:0;padding:0.9375rem 1.125rem;font-family:var(--font-body);font-size:0.8438rem;
  border:0.0625rem solid var(--ink);background:var(--surface);outline:none}
.nl-tel{position:relative;display:flex;flex:0 0 11rem}
.nl-tel i{position:absolute;left:1.125rem;top:50%;margin-top:-.5em;line-height:1;pointer-events:none;
  font-style:normal;font-size:.8438rem;color:var(--ink-soft)}
.nl-form .nl-tel input{width:100%;padding-left:2.9rem;border-left-width:0}
.nl-fields .cta{border-color:var(--ink);white-space:nowrap}
/* px on purpose in the tap floor: the root shrinks on phones, so rem would miss 44px */
.nl-consent{display:flex;align-items:flex-start;gap:.55rem;width:100%;min-height:44px;margin:0 auto;
  text-align:left;font-size:.74rem;line-height:1.5;color:var(--ink-soft);cursor:pointer}
.nl-consent input{flex:none;width:1rem;height:1rem;margin:.15rem 0 0;padding:0;accent-color:var(--brand);cursor:pointer}
.nl-consent a{color:inherit;text-decoration:underline}
.nl-form [aria-invalid="true"]{outline:.125rem solid var(--brand);outline-offset:-.125rem}
.nl-note{max-width:37.5rem;margin:0 auto;font-size:.8125rem;text-align:left}
.nl-note.nl-success{color:var(--brand)}
.nl-note.nl-error{color:var(--brand)}

/* ── footer ── */
main.home + .site-footer .foot-nl{display:none}
.site-footer{background:var(--surface);border-top:0.0625rem solid var(--line);padding:var(--s6) var(--pad-x) var(--s3)}
.foot-grid{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:var(--s4);max-width:var(--max-w);margin:0 auto var(--s5)}
.foot-wm{height:1rem;width:auto;margin-bottom:var(--s2)}
.foot-mark{height:2.5rem;width:auto;margin-bottom:var(--s2)}
.foot-tag{font-size:0.625rem;letter-spacing:.2em;color:var(--stone);text-transform:uppercase}
.foot-head{font-size:0.6562rem;letter-spacing:.2em;text-transform:uppercase;margin-bottom:var(--s2);color:var(--stone);font-family:var(--font-body)}
.foot-col a{display:block;font-size:0.7812rem;padding:0.3125rem 0;color:var(--ink-soft);min-height:2.25rem}
.foot-col a:hover{color:var(--brand)}
.foot-nl{max-width:var(--max-w);margin:0 auto var(--s4);border-top:0.0625rem solid var(--line);padding-top:var(--s4)}
.foot-nl .nl-form{margin:0}
.foot-nl .foot-head{margin-bottom:var(--s2)}
/* fine print with manners: a tracked label, a hairline, one tight measure (~78ch) */
/* payment & trust bar — sits above the seller line */
.foot-trust{list-style:none;max-width:var(--max-w);margin:0 auto var(--s3);padding:var(--s3) 0 0;display:flex;justify-content:center;gap:1.75rem;flex-wrap:wrap;border-top:0.0625rem solid var(--line)}
.foot-trust li{display:inline-flex;align-items:center;gap:.45rem;font-size:0.6875rem;letter-spacing:.06em;color:var(--ink-soft)}
.foot-trust svg{width:1.1rem;height:1.1rem;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.drawer-foot a{color:inherit;text-decoration:underline;text-underline-offset:.15em}
.foot-legal{max-width:46rem;margin:0 auto;padding:var(--s3) 0 0;text-align:center;border-top:0.0625rem solid var(--line)}
.foot-legal-k{display:block;font-size:0.6875rem;font-weight:800;letter-spacing:.24em;text-transform:uppercase;color:var(--stone);margin:0 0 .55rem}
.foot-legal p{margin:0;font-size:0.6875rem;line-height:1.7;letter-spacing:.004em;color:var(--ink-soft);text-wrap:pretty}
.foot-legal a{color:var(--ink);text-decoration:underline;text-underline-offset:.15em}
.foot-bottom{text-align:center;font-size:0.625rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);padding-top:var(--s2)}

/* ═══ MOBILE (≤53.75rem) — order per spec §7 ═══ */
@media (max-width:53.75rem){
  .menu-btn{display:flex}
  /* HOME mobile: announce → hero → trust (2×2) → cards as a list → discovery → quiz → reviews/proof → why-20% → sets → origins → faq → newsletter */
  .hero{grid-template-columns:1fr;min-height:0}
  .hero-visual{order:2}
  .trustbar ul{grid-template-columns:repeat(3,1fr)}
  .trustbar li:nth-child(4){border-left:0}
  .trustbar li:nth-child(-n+3){border-bottom:0.0625rem solid var(--on-brand-line)}
  .cards-5,.cards-3,.cards-6{grid-template-columns:repeat(3,minmax(0,1fr))}
  .nav-links{display:none}   /* the burger owns the links from here down; both at once wrapped the bar at 820 */
  .discovery,.origins{grid-template-columns:1fr}
  .review-grid{grid-template-columns:1fr}
  .tiles{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
  .nl-fields{flex-direction:column;gap:.625rem}
  .nl-tel{flex:none}
  .nl-form .nl-tel input{border-left-width:.0625rem}
  .nl-fields input,.nl-fields .cta{min-height:44px}
}
@media (max-height:30rem){
  .nav{padding:0.875rem var(--pad-x)}
  section{padding:var(--s6) var(--pad-x)}
}

/* ═══ GENERATED PAGES (build-pages.py) ═══ */
main.page{padding:0 0 var(--s7)}
.page-hero{background:var(--tint,var(--bg));padding:7rem var(--pad-x) var(--s6);text-align:center}
.page-hero .eyebrow{color:var(--ink-soft);letter-spacing:.2em;margin-bottom:var(--s3)}
.page-hero h1{font-family:var(--font-hero);font-weight:600;font-size:var(--fs-hero);line-height:1.05;letter-spacing:var(--track-hero);color:var(--head);max-width:22ch;margin:0 auto}
.page-lead{max-width:40rem;margin:var(--s3) auto 0;font-size:var(--fs-lead);line-height:1.6;color:var(--ink)}
.page-body{max-width:47rem;margin:0 auto;padding:var(--s6) var(--pad-x) 0;display:flex;flex-direction:column;gap:var(--s6)}
.ps{display:flex;flex-direction:column;gap:var(--s2)}
.ps-head{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s2)}
.ps-rule{display:none}   /* the old rule–label–rule kicker; the section title is now a real headline */
.ps-head h2{font-size:var(--fs-h2);letter-spacing:var(--track-h2);color:var(--head);max-width:30ch}
.ps p,.ps li{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}
.ps h3{font-size:var(--fs-h3);letter-spacing:-.01em;color:var(--ink-deep);margin-top:var(--s2)}
.ps ul{padding-left:1.2rem;display:flex;flex-direction:column;gap:.45rem}
.ps blockquote{border:none;text-align:left;font-family:var(--font-hero);font-size:var(--fs-h3);line-height:1.6;color:var(--ink-deep);padding:var(--s2) 0 var(--s2) var(--s3);border-left:0.0625rem solid var(--h2)}
.ps hr{border:none;border-top:0.0625rem solid var(--line);margin:var(--s2) 0}
.ps a:not(.cta){color:var(--h2);text-decoration:underline;text-underline-offset:.15em}
.ps .fold-h2{font-family:var(--font-display);font-weight:600;color:var(--head);font-size:var(--fs-h2);letter-spacing:var(--track-h2);text-transform:none;max-width:30ch;margin:0 0 var(--s2)}
.ps-cta{align-items:flex-start}
.ps-cta p{margin:0}
.link-soft,.page-proofline a{display:inline-block;padding:.5rem 0;text-decoration:underline;text-underline-offset:.2em}
.page-proofline{max-width:47rem;font-size:1rem;color:var(--ink-deep)}
/* finder (build-finder.py): three radio groups + one match card */
.finder{display:flex;flex-direction:column;gap:var(--s5)}
.finder fieldset{border:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.6rem}
.finder legend{font-family:var(--font-display);font-size:var(--fs-h3);color:var(--ink-deep);margin-bottom:var(--s2)}
.finder label{display:flex;gap:.75rem;align-items:center;padding:.35rem 0;font-size:.9375rem;line-height:1.7;color:var(--ink);cursor:pointer}
.finder input{accent-color:var(--h2);margin:0;flex:none;width:1.1rem;height:1.1rem}
.finder-lead{font-size:1rem;color:var(--ink-deep)}
.finder-next{color:var(--ink)}
.finder-set{display:flex;flex-direction:column;gap:var(--s2);align-items:flex-start}
.finder-actions{display:flex;gap:.875rem;flex-wrap:wrap}
.match{max-width:22rem}
.finder-set .cta{margin-top:var(--s2)}
/* PDP (static reference; folds in spec §3 order) */
.pdp-hero{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--s6);align-items:start;padding:var(--s6) var(--pad-x)}
.pdp-gallery{display:grid;grid-template-columns:1fr;gap:var(--s2)}
.pdp-gallery img{width:100%;height:auto;aspect-ratio:1;object-fit:contain;border:0.0625rem solid var(--line);background:var(--surface-2)}
.pdp-thumbs{display:flex;gap:.5rem}
.pdp-thumbs img{width:4.5rem;aspect-ratio:1;object-fit:contain;border:0.0625rem solid var(--line);background:var(--surface-2);cursor:pointer}
.pdp-thumbs img:hover{border-color:var(--h2)}
.pdp-buy{display:flex;flex-direction:column;gap:1rem;align-items:flex-start;position:sticky;top:6rem}
.pdp-buy .page-lead{margin:0;text-align:left;font-size:.9rem}
.pdp-name{font-size:clamp(1.4rem,2.4vw,2rem);color:var(--head)}
.pdp-role{font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;color:var(--h2)}
.pdp-proof{font-size:.9375rem;color:var(--ink)}
.pdp-price{font-size:1.25rem}
.pdp-sizes{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}
.pdp-trust{font-size:.72rem;color:var(--ink-soft);letter-spacing:.06em}
.meter{display:flex;align-items:center;gap:.75rem;font-size:var(--fs-small)}
.meter b{flex:0 0 7rem;font-weight:500}
.meter i{flex:1;height:.375rem;background:var(--line);display:block}
.meter i span{display:block;height:100%;background:var(--h2);width:var(--w,50%)}   /* plain CSS width bar, no motion */
/* collection grids */
.page-grid{margin:var(--s6) auto 0;padding:0 var(--pad-x);max-width:var(--max-w)}
@media (max-width:53.75rem){
  .pdp-hero{grid-template-columns:1fr;padding-top:var(--s3)}
  .pdp-buy{position:static}
  /* sticky ATC bar: price + ATC pinned to the phone's bottom */
  .pdp-sticky{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;align-items:center;justify-content:space-between;
    gap:1rem;padding:.75rem var(--pad-x);background:var(--bg);border-top:0.0625rem solid var(--line)}
  .page-hero{padding-top:4rem}
}
@media (min-width:53.76rem){.pdp-sticky{display:none}}

/* ═══ a11y ═══ */
:focus-visible{outline:0.125rem solid var(--ink-deep);outline-offset:0.125rem}
.announce a:focus-visible,.pdp-sticky .cta:focus-visible{outline-color:var(--brand)}
/* Touch targets: hit area only, px on purpose (a finger is a physical measure). */
@media(max-width:48rem){
  .menu-btn{position:relative}
  .nav-ico::after,.menu-btn::after,.menu-close::after{content:'';position:absolute;left:50%;top:50%;width:40px;height:44px;margin:-22px 0 0 -20px}
}
/* NO-CROP LAW: every photo shows in FULL and scales to its box. Anything deliberately full-bleed opts out with .crop-ok. */
img:not(.crop-ok){object-fit:contain;object-position:center}
