/* ============================================================
   VARSA — studio / blueprint system
   Studio white + graph paper · cool near-black · punchy red · chrome micro-accents
   ============================================================ */
:root{
  --white:#ffffff; --base:#f4f5f7; --paper:#eceef1;
  --ink:#0d0e11; --ink-2:#15171c; --ink-3:#22242b;
  --muted:#565a63; --steel:#868a92; --steel-2:#b7bbc2;
  --accent:#f5242e; --accent-deep:#d3121b;
  --cs:#0d0e11; --pe:#f5242e;
  --line:rgba(13,14,17,.12); --line-strong:rgba(13,14,17,.24); --line-dark:rgba(255,255,255,.14);
  --grid:rgba(13,14,17,.05); --grid-d:rgba(255,255,255,.05);
  --chrome:linear-gradient(145deg,#fbfbfc 0%,#c2c6cc 30%,#f3f4f6 48%,#9fa4ac 66%,#e7e9ec 86%,#b9bdc4 100%);
  --maxw:1320px; --pad:clamp(1.15rem,4.5vw,5rem);
  --ff:"Inter", system-ui, -apple-system, sans-serif;
  --ease:cubic-bezier(.22,1,.36,1); --radius:14px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
html:focus-within{scroll-behavior:smooth}
body{font-family:var(--ff);background:var(--base);color:var(--ink);line-height:1.5;font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;overflow-x:hidden}
/* tactile paper grain across the whole site */
body::after{content:"";position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.05;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
ul{list-style:none}
::selection{background:var(--accent);color:#fff}
[hidden]{display:none !important}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}

.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad)}
.section{padding-block:clamp(3.8rem,8vw,7.5rem);position:relative}
.gp{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:34px 34px}
.section--white{background:var(--white)} .section--base{background:var(--base)} .section--paper{background:var(--paper)}
.section--white,.section--base,.section--paper{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:34px 34px}
.section--ink{background:var(--ink);color:var(--white);background-image:linear-gradient(var(--grid-d) 1px,transparent 1px),linear-gradient(90deg,var(--grid-d) 1px,transparent 1px);background-size:34px 34px}
.section>.container{position:relative;z-index:1}

.eyebrow{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--muted);display:inline-flex;align-items:center;gap:.6em;margin-bottom:1.2rem}
.eyebrow::before{content:"";width:18px;height:2px;background:var(--accent)}
.section--ink .eyebrow,.eyebrow--light{color:var(--steel-2)}
.display{font-weight:760;font-size:clamp(2rem,5vw,4rem);line-height:1.0;letter-spacing:-.035em}
.display em{font-style:normal;color:var(--accent)}
.section-head{margin-bottom:clamp(2.2rem,4.5vw,3.4rem);max-width:none}
.section-head--row{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;max-width:none;flex-wrap:wrap}
.section-head__note{font-size:.92rem;color:var(--muted);max-width:36ch}
.section--ink .section-head__note{color:var(--steel-2)}
.lead{font-size:clamp(1rem,1.5vw,1.18rem);color:var(--muted);line-height:1.55;max-width:46ch}
.section--ink .lead{color:var(--steel-2)}
.chrome{background:var(--chrome);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 1px 0 rgba(0,0,0,.15))}

/* buttons */
.btn{--bg:var(--ink);--fg:var(--white);display:inline-flex;align-items:center;justify-content:center;gap:.5em;font-weight:600;font-size:.92rem;letter-spacing:-.01em;padding:.95rem 1.5rem;border-radius:100px;background:var(--bg);color:var(--fg);transition:transform .35s var(--ease),background .3s,color .3s,border-color .3s,box-shadow .3s;white-space:nowrap}
.btn .arr{transition:transform .35s var(--ease)} .btn:hover .arr{transform:translateX(4px)}
.btn--accent{--bg:var(--accent);--fg:#fff;box-shadow:0 10px 26px -12px rgba(245,36,46,.6)}.btn--accent:hover{--bg:var(--accent-deep);transform:translateY(-2px)}
.btn--solid{--bg:var(--ink);--fg:var(--white)}.btn--solid:hover{--bg:var(--ink-3);transform:translateY(-2px)}
.btn--line{--bg:transparent;--fg:var(--ink);border:1px solid var(--line-strong)}.btn--line:hover{--bg:var(--ink);--fg:var(--white);border-color:var(--ink)}
.section--ink .btn--line{--fg:var(--white);border-color:rgba(255,255,255,.3)}.section--ink .btn--line:hover{--bg:var(--white);--fg:var(--ink);border-color:var(--white)}
.section--ink .btn--solid{--bg:var(--white);--fg:var(--ink)}.section--ink .btn--solid:hover{--bg:#eee}
.btn--sm{padding:.6rem 1.05rem;font-size:.82rem}
.btn--lg{padding:1.05rem 1.8rem;font-size:1rem}
.btn--block{width:100%}

.scroll-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:120;background:transparent}
.scroll-progress span{display:block;height:100%;width:0;background:var(--accent)}

/* nav */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:1rem var(--pad);transition:background .4s var(--ease),backdrop-filter .4s,padding .4s,border-color .4s,transform .45s var(--ease)}
.nav.is-stuck{background:rgba(255,255,255,.85);backdrop-filter:blur(14px);padding-block:.6rem;border-bottom:1px solid var(--line)}
.nav__logo{height:21px}
.nav__links{display:flex;gap:1.25rem}
.nav__links a{font-size:.86rem;font-weight:500;position:relative}
.nav__links a::after{content:"";position:absolute;left:0;bottom:-5px;width:0;height:1.5px;background:var(--accent);transition:width .3s var(--ease)}
.nav__links a:hover::after{width:100%}
.nav__cta{display:flex;align-items:center;gap:.9rem}
.nav__soon{display:flex;align-items:center;gap:.4rem;font-size:.82rem;font-weight:500;color:var(--steel);opacity:.75;white-space:nowrap}
.nav__soon:hover{opacity:1}
.nav__soon .soon,.mobile-menu__links .soon{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:rgba(0,0,0,.06);border:1px solid var(--line-strong);border-radius:5px;padding:.12rem .38rem;color:var(--muted)}
.section--ink .nav__soon{color:var(--steel-2)}
.mobile-menu__links .soon{margin-left:.2rem;align-self:center;font-size:.62rem}
.nav__burger{display:none;flex-direction:column;gap:6px;padding:8px;z-index:110}
.nav__burger span{width:25px;height:2px;background:var(--ink);border-radius:2px;transition:.35s var(--ease)}
.nav__burger.is-open span{background:var(--white)}
.nav__burger.is-open span:nth-child(1){transform:translateY(4px) rotate(45deg)}
.nav__burger.is-open span:nth-child(2){transform:translateY(-4px) rotate(-45deg)}
.mobile-menu{position:fixed;inset:0;z-index:99;background:var(--ink);color:var(--white);display:flex;flex-direction:column;justify-content:center;gap:1.8rem;padding:clamp(4rem,16vh,6rem) var(--pad) 3rem;overflow-y:auto;transform:translateY(-100%);transition:transform .55s var(--ease);visibility:hidden}
.mobile-menu.is-open{transform:translateY(0);visibility:visible}
.mobile-menu__links{display:flex;flex-direction:column;gap:.2rem}
.mobile-menu__links a{color:var(--white);font-weight:650;font-size:clamp(1.7rem,8vw,2.4rem);line-height:1.15;letter-spacing:-.03em;display:flex;align-items:baseline;gap:1rem;border-bottom:1px solid var(--line-dark);padding-block:.45rem}
.mobile-menu__links .idx{font-size:.78rem;color:var(--accent);font-weight:700}
.mobile-menu__cta{display:flex;flex-direction:column;gap:.7rem}

/* route badge */
.rbadge{display:inline-flex;align-items:center;gap:.4em;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:.26rem .55rem;border-radius:100px;white-space:nowrap}
.rbadge .n{font-variant-numeric:tabular-nums}
.rbadge.cs{background:var(--ink);color:var(--white)} .rbadge.cs .n{background:var(--chrome);-webkit-background-clip:text;background-clip:text;color:transparent}
.rbadge.pe{background:var(--accent);color:#fff} .rbadge.pe .n{color:rgba(255,255,255,.7)}
.rbadge.both{background:var(--ink-3);color:var(--white)}

/* ============================================================ HERO (full-bleed editorial club showcase) */
.hero{position:relative;height:100svh;overflow:hidden;background:#090a0d;color:#fff}
.hero__bg{position:absolute;inset:0;z-index:0}
.hero__slide{position:absolute;inset:0;opacity:0;visibility:hidden}
.hero__slide.on{opacity:1;visibility:visible}                       /* instant swap — no transition */
.hero__slide img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
/* legibility scrim — subtle bottom wash for the headline + faint top wash for the nav zone.
   (56% reach instead of 42%: the headline's top line needs some coverage on the lightest club shots) */
.hero::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(0deg,rgba(7,8,11,.68),transparent 56%),linear-gradient(180deg,rgba(7,8,11,.45),transparent 24%)}
/* invisible prev/next click zones (the custom cursor lands in a later pass) */
.hero__zone{position:absolute;top:0;bottom:0;width:50%;z-index:2;padding:0;border:none;background:none}
.hero__zone--prev{left:0} .hero__zone--next{right:0}
@media (hover:none){ .hero__zone{display:none} }   /* touch = swipe + arrows */
/* bottom-left statement */
.hero__content{position:absolute;left:var(--pad);right:var(--pad);bottom:clamp(3.8rem,7svh,4.6rem);z-index:5;pointer-events:none;text-shadow:0 1px 2px rgba(7,8,11,.4),0 10px 38px rgba(7,8,11,.35)}
.hero__content>*{pointer-events:auto}
.hero__content .btn{text-shadow:none}
.hero .eyebrow{color:#fff;margin-bottom:1.1rem}
.hero__title{font-weight:800;font-size:clamp(2.4rem,5.5vw,4.6rem);line-height:.98;letter-spacing:-.045em;text-wrap:balance;max-width:15ch}
.hero__title em{font-style:normal;color:var(--accent)}
.hero__sub{margin-top:1rem;font-size:clamp(.98rem,1.2vw,1.08rem);color:rgba(255,255,255,.85);line-height:1.5;max-width:46ch}
.hero__actions{display:flex;gap:.7rem;flex-wrap:wrap;margin-bottom:1.5rem}      /* base also reused by archive/own-brand CTAs */
.hero__content .hero__actions{margin:1.5rem 0 0}
.hero .btn--line{--fg:#fff;border-color:rgba(255,255,255,.45)}
.hero .btn--line:hover{--bg:var(--white);--fg:var(--ink);border-color:var(--white)}
/* top-right club meta */
.hero__meta{position:absolute;top:clamp(4.9rem,9svh,6.2rem);right:var(--pad);z-index:5;text-align:right;pointer-events:none;text-shadow:0 1px 3px rgba(7,8,11,.5),0 4px 18px rgba(7,8,11,.45)}
.hero__sport{display:block;overflow:hidden;font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.8);margin-bottom:.25rem}
.hero__sport span{display:inline-block}
.hero__club{overflow:hidden;font-weight:700;font-size:1.05rem;letter-spacing:-.015em;line-height:1.15;padding-bottom:.08em}
.hero__club span{display:inline-block}
.hero__count{display:block;margin-top:.3rem;font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:600;color:rgba(255,255,255,.6)}
.hero__count i{font-style:normal;margin:0 .15rem}
/* hairline segmented progress track */
.hero__bars{position:absolute;left:var(--pad);right:var(--pad);bottom:28px;z-index:5;display:flex;gap:6px}
.hero__bar{position:relative;flex:1;height:2px;border:none;padding:0;border-radius:2px;background:rgba(255,255,255,.28);cursor:pointer}
.hero__bar::before{content:"";position:absolute;left:0;right:0;top:-11px;bottom:-11px}   /* comfortable hit area */
.hero__bar .fill{position:absolute;inset:0;background:#fff;transform:scaleX(0);transform-origin:left;border-radius:2px}
/* arrows — small ghost circles, mobile only (desktop navigates via bars/zones) */
.hero__arrows{display:none;position:absolute;right:var(--pad);bottom:13px;z-index:6;gap:.45rem}
.hero__arrows button{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:1.15rem;line-height:1;color:#fff;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.32);backdrop-filter:blur(8px)}
@media (max-width:860px){
  .hero__arrows{display:flex}
  .hero__arrows button{width:40px;height:40px}
  .hero__bars{right:calc(var(--pad) + 86px)}
  .hero__content{bottom:clamp(4.2rem,8svh,5rem)}
  .hero__content .hero__actions{max-width:420px}
  .hero__content .hero__actions .btn{flex:1 1 100%}
  .hero__title{font-size:clamp(2rem,8.4vw,2.6rem)}
  .hero__meta{top:4.6rem}
}
@media (max-width:480px){ .hero__sub{display:none} }
/* mobile: club photos vary wildly in brightness, so guarantee a dark base under the headline + CTAs
   (the earlier semi-transparent scrim let white shirts/backgrounds wash out the copy) */
@media (max-width:700px){
  .hero::after{background:
    linear-gradient(0deg,rgba(7,8,11,.94) 0%,rgba(7,8,11,.78) 24%,rgba(7,8,11,.46) 46%,rgba(7,8,11,.14) 68%,transparent 84%),
    linear-gradient(180deg,rgba(7,8,11,.52),transparent 20%)}
  .hero__title{text-shadow:0 1px 3px rgba(7,8,11,.55),0 14px 44px rgba(7,8,11,.5)}
  .hero .eyebrow{text-shadow:0 1px 2px rgba(7,8,11,.6)}
}
/* trust strip — relocated from the hero */
.trustline{background:var(--ink);color:rgba(255,255,255,.7)}
.trustline .container{display:flex;align-items:center;gap:.6rem;padding-block:.8rem;font-size:.8rem;font-weight:500;line-height:1.45}
.trustline .dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none}

/* ============================================================ OFFER (what we make) */
.offer__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.5rem);margin-top:clamp(1.6rem,3vw,2.4rem)}
.ocard{background:var(--base,#fff);border:1px solid var(--line);border-radius:var(--radius,16px);padding:clamp(1.4rem,2.4vw,2rem);display:flex;flex-direction:column;gap:.6rem;transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.ocard:hover{transform:translateY(-4px);box-shadow:0 30px 60px -40px rgba(13,14,17,.4)}
.ocard__no{font-variant-numeric:tabular-nums;font-size:.8rem;font-weight:700;color:var(--accent);letter-spacing:.04em}
.ocard h3{font-weight:740;font-size:clamp(1.2rem,1.8vw,1.45rem);letter-spacing:-.02em}
.ocard p{color:var(--muted);font-size:.96rem;line-height:1.5}
.offer__routes{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(1rem,2.4vw,2rem);margin-top:clamp(1.4rem,2.6vw,2rem);padding-top:clamp(1.4rem,2.6vw,2rem);border-top:1px solid var(--line)}
.offer__route{flex:1 1 280px;display:flex;flex-direction:column;gap:.5rem}
.offer__route p{color:var(--muted);font-size:.92rem;line-height:1.5}
.offer__route .rbadge{align-self:flex-start}
.offer__more{flex:0 0 auto;margin-left:auto}

/* ============================================================ FLOW (simple process) */
.flow{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(1rem,2vw,1.5rem);margin-top:clamp(1.8rem,3vw,2.6rem);counter-reset:flow}
.flow__step{position:relative;display:flex;flex-direction:column;gap:.55rem;padding-top:1.6rem;border-top:2px solid var(--ink)}
.flow__no{position:absolute;top:-.1rem;left:0;font-variant-numeric:tabular-nums;font-size:.8rem;font-weight:700;color:var(--accent)}
.flow__step h3{font-weight:720;font-size:clamp(1.08rem,1.5vw,1.3rem);letter-spacing:-.02em;line-height:1.12}
.flow__step p{color:var(--muted);font-size:.95rem;line-height:1.5}
.flow__note{margin-top:clamp(1.6rem,3vw,2.2rem);font-size:.92rem;color:var(--muted);font-weight:500}
.flow__note a{font-weight:600}

/* ============================================================ FINAL CTA (cta2) */
.cta2{max-width:50rem;text-align:center;margin-inline:auto;display:flex;flex-direction:column;align-items:center}
.cta2__title{font-weight:780;font-size:clamp(2rem,4vw,3.2rem);line-height:1.02;letter-spacing:-.035em;margin-bottom:1rem}
.cta2__title em{font-style:normal;color:var(--accent)}
.cta2__sub{color:var(--steel-2);font-size:clamp(1rem,1.4vw,1.15rem);line-height:1.55;max-width:46ch;margin-bottom:1.8rem}
.cta2__buttons{display:flex;gap:.7rem;flex-wrap:wrap;justify-content:center;margin-bottom:2.2rem}
.cta2__next{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 1.6rem;padding-top:1.6rem;border-top:1px solid var(--line-dark);width:100%;max-width:40rem}
.cta2__next li{font-size:.9rem;color:var(--steel-2);font-weight:500}
.cta2__next b{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:.35rem}
@media (max-width:760px){
  /* offer + process become swipeable rows (same pattern as the testimonials the user liked)
     instead of long vertical stacks — the ~80% card width leaves a peek of the next card as the swipe affordance */
  .offer__grid,.flow{display:flex;grid-template-columns:none;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:1rem;scrollbar-width:none}
  .offer__grid::-webkit-scrollbar,.flow::-webkit-scrollbar{display:none}
  .ocard{flex:0 0 82%;scroll-snap-align:start}
  .flow__step{flex:0 0 78%;scroll-snap-align:start}
  .offer__more{margin-left:0;width:100%}
}

/* ============================================================ PRODUCT AREAS (products page) */
.parea{margin-top:clamp(1.6rem,3vw,2.4rem);border-top:1px solid var(--line)}
.parea__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:clamp(1rem,3vw,3rem);padding:clamp(1.4rem,3vw,2.2rem) 0;border-bottom:1px solid var(--line);align-items:start}
.parea__head{display:flex;align-items:baseline;gap:.8rem}
.parea__no{font-variant-numeric:tabular-nums;font-size:.8rem;font-weight:700;color:var(--accent)}
.parea__head h3{font-weight:740;font-size:clamp(1.4rem,2.4vw,2rem);letter-spacing:-.03em}
.parea__body p{color:var(--muted);font-size:1rem;line-height:1.55;margin-bottom:1rem}
.parea__list{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem}
.parea__list li{font-size:.86rem;font-weight:500;padding:.4rem .8rem;border:1px solid var(--line-strong);border-radius:100px}
@media (max-width:760px){ .parea__row{grid-template-columns:1fr;gap:.7rem} }

/* ============================================================ TESTIMONIALS (work page) */
.quotes__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.5rem);margin-top:clamp(1.6rem,3vw,2.4rem)}
.quote{background:var(--base,#fff);border:1px solid var(--line);border-radius:var(--radius,16px);padding:clamp(1.4rem,2.4vw,2rem);display:flex;flex-direction:column;gap:1rem}
.quote blockquote{font-size:1.05rem;line-height:1.5;font-weight:560;letter-spacing:-.01em}
.quote figcaption{font-size:.85rem;color:var(--muted);font-weight:600;margin-top:auto}
.quote figcaption span{color:var(--ink)}
@media (max-width:760px){ .quotes__grid{grid-template-columns:1fr} }
/* testimonials as a swipeable row: 3 cards across on desktop (projects page) */
.quotes__row{--tgap:clamp(1rem,2vw,1.5rem);display:flex;gap:var(--tgap);overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;margin-top:clamp(1.4rem,3vw,2.2rem);padding-bottom:1rem;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
.quotes__row::-webkit-scrollbar{height:7px}
.quotes__row::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:100px}
.quotes__row::-webkit-scrollbar-track{background:transparent}
.quotes__row .quote{flex:0 0 calc((100% - 2*var(--tgap))/3);scroll-snap-align:start}
@media (max-width:900px){ .quotes__row .quote{flex-basis:calc((100% - var(--tgap))/2)} }
@media (max-width:600px){ .quotes__row .quote{flex-basis:86%} }

/* swipe-row affordance: edge fades + arrow buttons (JS adds .swrow wrapper + buttons) */
.swrow{position:relative}
.swrow{--fade:var(--base)}
.section--white .swrow{--fade:var(--white)} .section--paper .swrow{--fade:var(--paper)}
.swrow::before,.swrow::after{content:"";position:absolute;top:0;bottom:1rem;width:60px;pointer-events:none;z-index:2;opacity:0;transition:opacity .3s}
.swrow::before{left:0;background:linear-gradient(90deg,var(--fade),transparent)}
.swrow::after{right:0;background:linear-gradient(270deg,var(--fade),transparent)}
.swrow.can-prev::before{opacity:1} .swrow.can-next::after{opacity:1}
.swrow__btn{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:44px;height:44px;border-radius:50%;background:var(--white);border:1px solid var(--line-strong);box-shadow:0 8px 24px -10px rgba(13,14,17,.45);font-size:1.5rem;line-height:1;color:var(--ink);display:none;place-items:center;transition:transform .2s var(--ease),background .2s,color .2s,opacity .2s}
.swrow.is-scrollable .swrow__btn{display:grid}
.swrow__btn--prev{left:-6px} .swrow__btn--next{right:-6px}
.swrow__btn:hover{background:var(--ink);color:#fff}
.swrow:not(.can-prev) .swrow__btn--prev,.swrow:not(.can-next) .swrow__btn--next{opacity:0;pointer-events:none}
/* a small "swipe" hint shown until the user first scrolls (touch-friendly) */
.swrow__hint{position:absolute;right:0;top:-2.1rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);display:none;align-items:center;gap:.4rem;opacity:.85}
.swrow.is-scrollable .swrow__hint{display:inline-flex}
.swrow.did-scroll .swrow__hint{opacity:0;transition:opacity .4s}
.swrow__hint svg{width:22px;height:14px;stroke:var(--accent);fill:none;stroke-width:1.6}
@media (hover:none){ .swrow__btn{display:none !important} }

/* ============================================================ MARQUEE (clients, two directions) */
.ticker{background:var(--ink);color:var(--white);padding-block:1rem;overflow:hidden;border-block:1px solid var(--line-dark)}
.ticker__row{display:flex;width:max-content;gap:0;will-change:transform}
.ticker__row--a{animation:tickA 40s linear infinite}
.ticker__row--b{animation:tickB 46s linear infinite;margin-top:.2rem}
.tk{display:inline-flex;align-items:center;gap:clamp(1rem,2.4vw,1.8rem);padding-inline:clamp(.9rem,2.2vw,1.6rem);font-size:clamp(1.2rem,2.6vw,2rem);font-weight:650;letter-spacing:-.03em;color:var(--steel-2);white-space:nowrap;transition:color .25s}
.tk::after{content:"✦";color:var(--accent);font-size:.5em;opacity:.7}
.tk:hover{color:var(--white)}
@keyframes tickA{to{transform:translateX(-50%)}}
@keyframes tickB{from{transform:translateX(-50%)}to{transform:translateX(0)}}

/* ============================================================ CLIENT BOARD */
.clients__head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;margin-bottom:1.8rem}
.board{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(1.2rem,3vw,2.4rem);align-items:stretch}
.board__feature{position:relative;background:var(--ink);color:var(--white);border-radius:var(--radius);padding:clamp(1.4rem,2.4vw,2rem);display:flex;flex-direction:column;min-height:clamp(280px,62vw,360px);overflow:hidden}
.board__bg{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center;opacity:0;transform:scale(1.04);transition:opacity .55s var(--ease),transform .8s var(--ease)}
.board__feature.has-bg .board__bg{opacity:.62;transform:scale(1)}
.board__feature::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(13,14,17,.36) 0%,rgba(13,14,17,.58) 55%,rgba(13,14,17,.84) 100%)}
.board__feature>*:not(.board__bg){position:relative;z-index:2}
.board__club{font-weight:730;font-size:clamp(1.8rem,3.4vw,2.6rem);letter-spacing:-.03em;line-height:1}
.board__sport{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--steel-2);margin-top:.4rem}
.board__draws{display:flex;gap:.4rem;margin:1.3rem 0;flex-wrap:wrap}
.board__draws .d{width:60px;height:68px;border:1px solid var(--line-dark);border-radius:10px;padding:6px;background:rgba(255,255,255,.04)}
.board__draws svg{width:100%;height:100%}
.board__draws svg .ln{fill:none;stroke:var(--white);stroke-width:3.4;stroke-linejoin:round;stroke-linecap:round}
.board__draws svg .acc{stroke:var(--accent)}
.board__products{margin-top:auto;display:flex;flex-direction:column}
.board__products .row{display:flex;justify-content:space-between;align-items:center;gap:1rem;font-size:.9rem;padding:.5rem 0;border-top:1px solid var(--line-dark)}
.board__ig{margin-top:1rem;font-size:.76rem;font-weight:600;color:var(--steel-2);display:inline-flex;align-items:center;gap:.4rem}
.board__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;align-content:start}
.peg{position:relative;text-align:left;border:1px solid var(--line);border-radius:10px;padding:.8rem .85rem;background:var(--white);font-weight:600;font-size:.9rem;letter-spacing:-.01em;transition:background .25s,color .25s,border-color .25s,transform .2s;display:flex;align-items:center;gap:.5rem}
.peg .pn{font-variant-numeric:tabular-nums;font-size:.64rem;color:var(--steel)}
.peg:hover,.peg.is-active{background:var(--ink);color:var(--white);border-color:var(--ink);transform:translateY(-2px)}
.peg:hover .pn,.peg.is-active .pn{color:var(--steel-2)}
.peg.is-active::after{content:"";position:absolute;right:.7rem;width:6px;height:6px;border-radius:50%;background:var(--accent)}

/* ============================================================ ROUTES (simplified) */
.routes__grid{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.route{position:relative;border-radius:var(--radius);overflow:hidden;padding:clamp(1.6rem,2.6vw,2.6rem);display:flex;flex-direction:column;border:1px solid var(--line)}
.route--cs{background:var(--ink);color:var(--white)} .route--pe{background:var(--white)}
.route__no{font-size:2.4rem;font-weight:780;letter-spacing:-.04em;line-height:1}
.route--cs .route__no{background:var(--chrome);-webkit-background-clip:text;background-clip:text;color:transparent}
.route--pe .route__no{color:var(--accent)}
.route h3{font-weight:740;font-size:clamp(1.7rem,2.8vw,2.4rem);letter-spacing:-.03em;margin:.3rem 0 .2rem;line-height:1}
.route__tag{font-size:.9rem;font-weight:500;color:var(--steel);margin-bottom:1.3rem} .route--cs .route__tag{color:var(--steel-2)}
.route__items{display:flex;flex-direction:column;margin-bottom:1.4rem}
.route__items li{font-size:clamp(1.02rem,1.7vw,1.2rem);font-weight:560;letter-spacing:-.02em;padding:.62rem 0;border-top:1px solid var(--line);display:flex;align-items:center;gap:.7rem}
.route--cs .route__items li{border-top-color:var(--line-dark)}
.route__items li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}
.route__items li.big{font-weight:740;font-size:1.3rem}
.route__meta{display:flex;gap:1.4rem;margin-top:auto;flex-wrap:wrap}
.route__meta div{display:flex;flex-direction:column}
.route__meta dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--steel)} .route--cs .route__meta dt{color:var(--steel-2)}
.route__meta dd{font-weight:680;font-size:.96rem}

/* ============================================================ BLUEPRINT */
.brief{border:1px dashed var(--line-strong);border-radius:var(--radius);padding:clamp(1.3rem,2.4vw,2rem);background:var(--white);max-width:760px;margin-bottom:clamp(2rem,4vw,3rem)}
.brief__label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin-bottom:.7rem}
.brief p{font-size:clamp(1.2rem,2.4vw,1.85rem);font-weight:600;letter-spacing:-.02em;line-height:1.25}
.brief .tok{white-space:nowrap;border-bottom:2px solid var(--accent)}
.bp__board{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1rem,2.5vw,2rem)}
.bp__col{border:1px solid var(--line);border-radius:var(--radius);background:var(--white);padding:clamp(1.1rem,2vw,1.5rem)}
.bp__colhead{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;padding-bottom:.9rem;border-bottom:1px solid var(--line)}
.bp__colhead h3{font-weight:730;font-size:1.2rem;letter-spacing:-.02em}
.bp__items{display:flex;flex-direction:column;gap:.6rem}
.bpitem{display:flex;align-items:center;gap:.9rem;border:1px solid var(--line);border-radius:11px;padding:.7rem .8rem;background:var(--base);opacity:0;transform:translateY(14px)}
.bpitem.in{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease)}
.bpitem__draw{width:42px;height:48px;flex:none}.bpitem__draw svg{width:100%;height:100%}
.bpitem__draw svg .ln{fill:none;stroke:var(--ink);stroke-width:4;stroke-linejoin:round;stroke-linecap:round}.bpitem__draw svg .acc{stroke:var(--accent)}
.bpitem__name{font-weight:600;font-size:.95rem}
.bp__msg{text-align:center;margin-top:clamp(2rem,4vw,3rem);font-weight:730;font-size:clamp(1.3rem,2.8vw,2.1rem);letter-spacing:-.03em}
.bp__msg em{font-style:normal;color:var(--accent)}

/* ============================================================ PASSPORTS */
.pass__wrap{position:relative}
.pass__track{display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:1rem;scrollbar-width:none}
.pass__track::-webkit-scrollbar{display:none}
.passport{scroll-snap-align:start;flex:0 0 clamp(280px,80vw,350px);border:1px solid var(--line);border-radius:var(--radius);background:var(--white);overflow:hidden;display:flex;flex-direction:column}
.passport__top{position:relative;background:var(--base);padding:1.4rem;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line)}
.passport__draw{width:118px;height:138px}.passport__draw svg{width:100%;height:100%}
.passport__draw svg .ln{fill:none;stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}.passport__draw svg .acc{stroke:var(--accent)}
.passport__rt{position:absolute;top:1rem;left:1rem}
.passport__id{position:absolute;top:1rem;right:1rem;font-size:.62rem;font-weight:600;letter-spacing:.1em;color:var(--steel);text-transform:uppercase}
.passport__body{padding:1.2rem 1.3rem 1.4rem;display:flex;flex-direction:column;flex:1}
.passport__name{font-weight:720;font-size:1.2rem;letter-spacing:-.02em;margin-bottom:.9rem}
.passport__specs{display:grid;margin-bottom:1rem}
.passport__specs div{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-top:1px solid var(--line);font-size:.85rem}
.passport__specs dt{color:var(--steel)} .passport__specs dd{font-weight:600;text-align:right}
.passport__why{font-size:.84rem;color:var(--muted);line-height:1.5;border-top:1px solid var(--line);padding-top:.9rem;margin-top:auto}
.passport__why b{color:var(--ink);font-weight:600}
.pass__nav{display:flex;gap:.5rem;margin-top:1rem}
.pass__nav button{width:44px;height:44px;border-radius:50%;border:1px solid var(--line-strong);display:grid;place-items:center;font-size:1.1rem;transition:background .25s,color .25s,border-color .25s}
.pass__nav button:hover{background:var(--ink);color:var(--white);border-color:var(--ink)}

/* ============================================================ BUILDER */
.builder__inner{display:grid;grid-template-columns:1.3fr .7fr;gap:clamp(1.5rem,3vw,3rem);align-items:start}
.builder__cats{display:flex;flex-direction:column;gap:1.4rem}
.bgroup h4{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:.8rem}
.chips{display:flex;flex-wrap:wrap;gap:.5rem}
.chipwrap{position:relative;display:inline-flex;flex-direction:column}
.chip{font-size:.92rem;font-weight:500;border:1px solid var(--line-strong);border-radius:100px;padding:.6rem 1rem;background:var(--white);color:var(--ink);transition:background .2s,color .2s,border-color .2s,transform .15s;display:inline-flex;align-items:center;gap:.45rem}
.chip:hover{border-color:var(--ink);transform:translateY(-1px)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--white);border-color:var(--ink)}
.chip .tick{display:none;color:var(--accent)} .chip[aria-pressed="true"] .tick{display:inline}
.chip .dot{width:7px;height:7px;border-radius:50%;flex:none}
.chip.r-cs .dot{background:var(--ink)} .chip[aria-pressed="true"].r-cs .dot{background:#fff}
.chip.r-pe .dot{background:var(--accent)}
.chip.r-dual .dot{background:linear-gradient(90deg,var(--ink) 50%,var(--accent) 50%)}
.choice{display:flex;gap:.3rem;margin-top:.4rem;background:var(--base);border:1px solid var(--line);border-radius:100px;padding:.2rem;max-height:0;opacity:0;overflow:hidden;transition:max-height .3s var(--ease),opacity .3s}
.chipwrap.show-choice .choice{max-height:60px;opacity:1}
.choice button{font-size:.7rem;font-weight:600;padding:.32rem .55rem;border-radius:100px;color:var(--muted);white-space:nowrap}
.choice button[aria-pressed="true"][data-r="cs"]{background:var(--ink);color:#fff}
.choice button[aria-pressed="true"][data-r="pe"]{background:var(--accent);color:#fff}
.choice button[aria-pressed="true"][data-r="both"]{background:var(--ink-3);color:#fff}

.plan{position:sticky;top:84px;background:var(--ink);color:var(--white);border-radius:var(--radius);padding:clamp(1.4rem,2.2vw,1.8rem)}
.plan h4{font-weight:680;font-size:1.15rem;letter-spacing:-.02em}
.plan__count{font-size:.82rem;color:var(--steel-2);margin:.2rem 0 1.1rem}.plan__count b{color:var(--white)}
.plan__route{margin-bottom:.9rem}
.plan__route .rh{display:flex;align-items:center;gap:.5rem;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem;color:var(--steel-2)}
.plan__items{display:flex;flex-direction:column;min-height:6px}
.plan__item{display:flex;justify-content:space-between;align-items:center;gap:.8rem;padding:.45rem 0;border-bottom:1px solid var(--line-dark);font-size:.9rem;animation:lin .3s var(--ease)}
@keyframes lin{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}
.plan__item button{color:var(--steel-2);font-size:1.05rem;line-height:1}.plan__item button:hover{color:var(--accent)}
.plan__empty{color:var(--steel-2);font-size:.86rem;padding:.4rem 0 .7rem}
.plan__cta{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}
.plan__cta .btn--accent{--bg:var(--accent)}
.plan__later{background:none;border:none;color:var(--steel-2);font-size:.8rem;text-decoration:underline;cursor:pointer;padding:.3rem}
.plan__later:hover{color:var(--white)}

/* ============================================================ INSTANT QUOTE MODAL */
.qscrim{position:fixed;inset:0;z-index:130;background:rgba(13,14,17,.6);opacity:0;visibility:hidden;transition:opacity .35s}
.qscrim.is-open{opacity:1;visibility:visible}
.qmodal{position:fixed;z-index:131;left:50%;top:50%;transform:translate(-50%,-46%);width:min(540px,94vw);max-height:90vh;overflow:auto;background:var(--white);border-radius:18px;padding:clamp(1.4rem,3vw,2.2rem);opacity:0;visibility:hidden;transition:opacity .35s var(--ease),transform .35s var(--ease);box-shadow:0 50px 100px -40px rgba(0,0,0,.6)}
.qmodal.is-open{opacity:1;visibility:visible;transform:translate(-50%,-50%)}
.qmodal__head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.4rem}
.qmodal__head h3{font-weight:740;font-size:1.5rem;letter-spacing:-.03em}
.qmodal__head button{font-size:1.5rem;line-height:1;color:var(--steel)}
.qmodal p.sub{color:var(--muted);font-size:.92rem;margin-bottom:1.2rem;line-height:1.5}
.qmodal .form__row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
.qfield{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.8rem}
.qfield span{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.qfield input{background:var(--base);border:1px solid var(--line-strong);border-radius:9px;padding:.8rem .9rem;font-size:1rem;font-family:var(--ff)}
.qfield input:focus{outline:none;border-color:var(--accent)}
.qresult{display:none}
.qmodal.show-result .qform{display:none}
.qmodal.show-result .qresult{display:block}
.qline{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--line)}
.qline__n{font-weight:560;display:flex;align-items:center;gap:.5rem}
.qline__p{font-weight:700;font-variant-numeric:tabular-nums}
.qtotal{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-top:1rem;padding-top:1rem;border-top:2px solid var(--ink)}
.qtotal b{font-weight:760;font-size:1.6rem;letter-spacing:-.03em}
.qnote{font-size:.8rem;color:var(--muted);margin:1rem 0 1.2rem;line-height:1.5}
.qcta{display:flex;flex-direction:column;gap:.5rem}

/* ============================================================ PROCESS STEPPER */
.stepper{margin-top:clamp(1.6rem,3vw,2.4rem)}
.stepper__nav{display:flex;align-items:center;margin-bottom:clamp(1.6rem,3.4vw,2.6rem)}
.stepper__tab{position:relative;flex:1;display:flex;align-items:center;background:none;border:none;cursor:pointer;padding:0}
.stepper__tab .stepper__line{flex:1;height:2px;background:var(--line-dark);transition:background .35s var(--ease)}
.stepper__tab:first-child .stepper__line--l{visibility:hidden}
.stepper__tab:last-child .stepper__line--r{visibility:hidden}
.stepper__dot{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:.9rem;background:var(--ink-2);border:1.5px solid var(--line-dark);color:var(--steel-2);transition:background .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease),transform .3s var(--ease)}
.stepper__tab.is-active .stepper__dot{background:var(--accent);border-color:var(--accent);color:#fff;transform:scale(1.14)}
.stepper__tab.is-done .stepper__dot{background:rgba(255,255,255,.92);border-color:rgba(255,255,255,.92);color:var(--ink)}
.stepper__tab.is-done .stepper__line--l,.stepper__tab.is-active .stepper__line--l{background:var(--accent)}
.stepper__tab.is-done .stepper__line--r{background:var(--accent)}
.stepper__panel{display:grid;grid-template-columns:auto 1fr;gap:clamp(1.2rem,3vw,2.2rem);align-items:start;opacity:0;transform:translateY(12px);transition:opacity .45s var(--ease),transform .45s var(--ease);min-height:9rem}
.stepper__panel.is-in{opacity:1;transform:none}
.stepper__no{font-weight:780;font-size:clamp(3rem,7vw,4.6rem);line-height:.88;letter-spacing:-.04em;background:var(--chrome);-webkit-background-clip:text;background-clip:text;color:transparent}
.stepper__body h3{font-weight:720;font-size:clamp(1.3rem,2.6vw,1.8rem);letter-spacing:-.03em;margin-bottom:.5rem}
.stepper__body p{color:var(--steel-2);font-size:1.02rem;line-height:1.55;max-width:54ch}
@media (max-width:600px){
  .stepper__dot{width:30px;height:30px;font-size:.78rem}
  .stepper__panel{grid-template-columns:1fr;gap:.7rem}
  .stepper__no{font-size:2.4rem}
}

/* ============================================================ TAG PHOTOS */
.tags__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.tagcard{position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:3/4;background:var(--paper)}
.tagcard img{width:100%;height:100%;object-fit:cover}
.tagcard--wide{grid-column:span 2}
.tagtag{position:absolute;left:.8rem;bottom:.8rem;right:.8rem;background:rgba(255,255,255,.95);backdrop-filter:blur(6px);border-radius:10px;padding:.7rem .8rem;display:flex;justify-content:space-between;align-items:center;gap:.6rem;box-shadow:0 10px 24px -16px rgba(0,0,0,.6)}
.tagtag__l{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.tagtag__name{font-weight:660;font-size:.9rem;letter-spacing:-.01em}
.tagtag__meta{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}

/* ============================================================ STORES */
.stores__inner{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.stores__lead{color:var(--steel-2);font-size:1.06rem;max-width:42ch;margin-block:1.4rem 1.8rem;line-height:1.5}
.stores__list{display:flex;flex-direction:column;margin-bottom:2rem}
.stores__list li{font-weight:560;font-size:1rem;display:flex;align-items:center;gap:.8rem;padding:.6rem 0;border-bottom:1px solid var(--line-dark)}
.stores__list li::before{content:"→";color:var(--accent);font-weight:700}
.mock{background:#15171c;border:1px solid var(--line-dark);border-radius:16px;overflow:hidden;box-shadow:0 50px 90px -55px rgba(0,0,0,.9)}
.mock__bar{display:flex;align-items:center;gap:.5rem;padding:.8rem 1rem;background:#0b0c0f;border-bottom:1px solid var(--line-dark)}
.mock__dot{width:10px;height:10px;border-radius:50%}
.mock__dot:nth-child(1){background:#ff5f57}.mock__dot:nth-child(2){background:#febc2e}.mock__dot:nth-child(3){background:#28c840}
.mock__url{margin-left:auto;font-size:.72rem;color:var(--steel)}
.mock__body{padding:1.2rem}
.mock__head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}
.mock__head strong{font-weight:700;font-size:.95rem;letter-spacing:-.02em}
.mock__pill{font-size:.66rem;color:#46e07d;border:1px solid rgba(70,224,125,.4);padding:.22rem .55rem;border-radius:100px}
.mock__items{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin-bottom:1rem}
.mitem{background:#1d2027;border-radius:11px;overflow:hidden;padding-bottom:.55rem;position:relative}
.mitem__img{height:82px;background-size:cover;background-position:center;margin-bottom:.5rem;background-color:#2a2d39}
.mitem__rt{position:absolute;top:.5rem;right:.5rem;font-size:.56rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.16rem .4rem;border-radius:100px}
.mitem__rt.cs{background:var(--white);color:var(--ink)} .mitem__rt.pe{background:var(--accent);color:#fff}
.mitem span{display:block;padding-inline:.6rem;font-size:.8rem;color:#fff}
.mitem b{display:block;padding-inline:.6rem;font-size:.78rem;color:var(--steel-2)}
.mock__foot{display:flex;justify-content:space-between;align-items:center;padding-top:.85rem;border-top:1px solid var(--line-dark)}
.mock__foot span{font-size:.74rem;color:var(--steel-2)}
.mock__cta{background:var(--white);color:var(--ink) !important;padding:.45rem .9rem;border-radius:100px;font-weight:600}
.mockgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:clamp(1.5rem,3vw,2.2rem)}
.mockgrid .mock__cap{padding:.9rem 1.2rem 0;font-size:.84rem;color:var(--steel-2)}
.mockgrid .mock__cap b{color:var(--white)}

/* ============================================================ WORK */
.work__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.wcard{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--white)}
.wcard__img{position:relative;aspect-ratio:4/3;overflow:hidden}
.wcard__img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.wcard:hover .wcard__img img{transform:scale(1.04)}
.wcard__badge{position:absolute;top:.9rem;left:.9rem;font-size:.66rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;background:rgba(13,14,17,.72);backdrop-filter:blur(6px);color:var(--white);padding:.3rem .65rem;border-radius:100px}
.wcard__body{padding:1.2rem;display:flex;flex-direction:column;gap:.7rem;flex:1}
.wcard__body h3{font-weight:710;font-size:1.3rem;letter-spacing:-.03em}
.wcard__rts{display:flex;gap:.4rem;flex-wrap:wrap}
.wcard__list{font-size:.9rem;color:var(--muted);line-height:1.5}
.wcard__foot{margin-top:auto;font-size:.78rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}

/* ============================================================ SUSTAIN */
.sustain__inner{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.sustain__copy p{color:var(--steel-2);font-size:1.06rem;line-height:1.55;max-width:44ch;margin-top:1.2rem}
.sustain__pills{display:flex;flex-wrap:wrap;gap:.6rem}
.pill{font-size:.84rem;font-weight:500;border:1px solid var(--line-dark);padding:.65rem 1.1rem;border-radius:100px;color:var(--white)}

/* ============================================================ FAQ */
.faq__inner{display:grid;grid-template-columns:.7fr 1.3fr;gap:clamp(2rem,5vw,4rem);align-items:start}
.faq .section-head{margin-bottom:0;position:sticky;top:100px}
.faq__list{display:flex;flex-direction:column}
.qa{border-top:1px solid var(--line)}.qa:last-child{border-bottom:1px solid var(--line)}
.qa summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.2rem 0;font-weight:600;font-size:clamp(1rem,1.6vw,1.2rem);letter-spacing:-.02em}
.qa summary::-webkit-details-marker{display:none}
.qa summary i{position:relative;width:15px;height:15px;flex:none}
.qa summary i::before,.qa summary i::after{content:"";position:absolute;background:var(--accent);transition:transform .35s var(--ease)}
.qa summary i::before{top:50%;left:0;width:100%;height:2px;transform:translateY(-50%)}
.qa summary i::after{left:50%;top:0;width:2px;height:100%;transform:translateX(-50%)}
.qa[open] summary i::after{transform:translateX(-50%) scaleY(0)}
.qa[open] summary{color:var(--accent)}
.qa__body{overflow:hidden}
.qa__body p{padding-bottom:1.3rem;max-width:64ch;color:var(--muted);font-size:.98rem;line-height:1.55}
.qa__body p a{color:var(--accent);text-decoration:underline}

/* ============================================================ CTA + FORM */
.cta__inner{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,5vw,5rem)}
.cta__title{font-weight:740;font-size:clamp(2.3rem,5.4vw,4.4rem);line-height:.96;letter-spacing:-.04em}
.cta__title em{font-style:normal;color:var(--accent)}
.cta__sub{color:var(--steel-2);font-size:1.08rem;max-width:40ch;margin-block:1.3rem 1.8rem;line-height:1.5}
.cta__buttons{display:flex;flex-wrap:wrap;gap:.7rem;margin-bottom:1.3rem}
.cta__trust{font-size:.82rem;color:var(--steel)}
.form{background:rgba(255,255,255,.04);border:1px solid var(--line-dark);border-radius:var(--radius);padding:clamp(1.4rem,3vw,2.2rem);display:flex;flex-direction:column;gap:.9rem}
.form__sel{font-size:.8rem;color:var(--steel-2);background:rgba(245,36,46,.12);border:1px solid rgba(245,36,46,.4);border-radius:10px;padding:.8rem 1rem;line-height:1.45;display:none}
.form__sel.show{display:block}.form__sel b{color:var(--white)}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
.field{display:flex;flex-direction:column;gap:.4rem}
.field span{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--steel-2)}
.field input,.field select,.field textarea{background:rgba(255,255,255,.05);border:1px solid var(--line-dark);border-radius:9px;padding:.85rem 1rem;color:var(--white);font-size:1rem;font-family:var(--ff)}
.field input::placeholder,.field textarea::placeholder{color:var(--steel)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent)}
.field textarea{resize:vertical;min-height:5.2rem;line-height:1.5}
.form .btn{margin-top:.3rem}
.form__note{font-size:.74rem;color:var(--steel);text-align:center}
.field--budget span{display:flex;align-items:center;gap:.5rem}
.field--budget span em{font-style:normal;font-weight:700;text-transform:none;letter-spacing:0;color:var(--accent);font-size:.78rem;background:rgba(245,36,46,.14);border-radius:6px;padding:.1rem .5rem}
.bslider{position:relative;padding-top:.3rem}
.bslider input[type="range"]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:3px;background:linear-gradient(90deg,var(--steel) 0%,var(--accent) 100%);outline:none;cursor:pointer;margin:0}
.bslider input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:var(--white);border:3px solid var(--accent);box-shadow:0 2px 8px rgba(0,0,0,.4);cursor:pointer;transition:transform .2s var(--ease)}
.bslider input[type="range"]::-webkit-slider-thumb:hover{transform:scale(1.12)}
.bslider input[type="range"]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--white);border:3px solid var(--accent);box-shadow:0 2px 8px rgba(0,0,0,.4);cursor:pointer}
.bslider__ticks{display:flex;justify-content:space-between;padding:0 10px;margin-top:.5rem}
.bslider__ticks i{width:2px;height:6px;background:var(--line-dark);border-radius:1px}
.bslider__scale{display:flex;justify-content:space-between;margin-top:.3rem;font-size:.76rem;color:var(--steel)}
.form__success{background:rgba(70,224,125,.12);border:1px solid rgba(70,224,125,.4);color:#7ee48f;padding:1rem;border-radius:9px;text-align:center;font-size:.95rem}

/* ============================================================ FOOTER */
.footer{background:var(--ink);color:var(--white);border-top:1px solid var(--line-dark);padding-top:clamp(3rem,6vw,5rem)}
.footer__inner{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2rem;padding-bottom:3rem}
.footer__logo{height:24px;filter:invert(1);margin-bottom:1rem}
.footer__brand p{color:var(--steel-2);max-width:34ch;font-size:.95rem}
.footer__nav{display:flex;flex-direction:column;gap:.6rem}
.footer__nav a{color:var(--steel-2);font-size:.92rem}.footer__nav a:hover{color:var(--accent)}
.footer__contact{display:flex;flex-direction:column;gap:.6rem}
.footer__contact a{color:var(--steel-2);font-size:.9rem}.footer__contact a:hover{color:var(--white)}
.footer__bottom{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;border-top:1px solid var(--line-dark);padding-block:1.4rem;font-size:.76rem;color:var(--steel)}

/* ============================================================ MOBILE CTA + DRAWER */
.mbar{position:fixed;left:0;right:0;bottom:0;z-index:90;display:none;gap:.5rem;padding:.6rem .8rem calc(.6rem + env(safe-area-inset-bottom));background:rgba(13,14,17,.94);backdrop-filter:blur(12px);border-top:1px solid var(--line-dark);transform:translateY(110%);transition:transform .4s var(--ease)}
.mbar.show{transform:translateY(0)}
.mbar .btn{flex:1;padding:.8rem .8rem;font-size:.86rem}
.mbar__col{position:relative;flex:0 0 auto}
.mbar__col .badge{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;border-radius:100px;background:var(--accent);color:#fff;font-size:.7rem;font-weight:700;display:grid;place-items:center;padding:0 5px}
.drawer{position:fixed;left:0;right:0;bottom:0;z-index:95;background:var(--ink);color:var(--white);border-radius:18px 18px 0 0;padding:1.2rem var(--pad) calc(1.4rem + env(safe-area-inset-bottom));transform:translateY(110%);transition:transform .45s var(--ease);max-height:82vh;overflow:auto;box-shadow:0 -30px 60px -30px rgba(0,0,0,.7)}
.drawer.is-open{transform:translateY(0)}
.drawer__grab{width:44px;height:4px;border-radius:100px;background:var(--steel);margin:0 auto 1rem}
.drawer__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.drawer__head h4{font-weight:680;font-size:1.15rem}
.drawer__head button{color:var(--steel-2);font-size:1.4rem;line-height:1}
.scrim{position:fixed;inset:0;z-index:94;background:rgba(0,0,0,.5);opacity:0;visibility:hidden;transition:opacity .4s}
.scrim.is-open{opacity:1;visibility:visible}

/* ============================================================ PRICING PAGE */
.subhero{padding:clamp(5.5rem,18vw,8rem) var(--pad) clamp(2rem,5vw,3.5rem)}
.subhero__inner{max-width:var(--maxw);margin-inline:auto}
.subhero h1{font-weight:760;font-size:clamp(2.3rem,6vw,4.4rem);letter-spacing:-.04em;line-height:.98;margin-block:1rem .8rem;max-width:20ch}
.subhero h1 em{font-style:normal;color:var(--accent)}
.subhero p{color:var(--muted);font-size:1.08rem;max-width:56ch;line-height:1.5}
.subhero__meta{display:flex;gap:1.6rem;flex-wrap:wrap;margin-top:1.6rem;padding-top:1.4rem;border-top:1px solid var(--line)}
.subhero__meta div{display:flex;flex-direction:column;gap:.2rem}
.subhero__meta b{font-weight:740;font-size:1.4rem;letter-spacing:-.03em}.subhero__meta b em{font-style:normal;color:var(--accent)}
.subhero__meta span{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.config{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,4vw,4rem);align-items:start}
.config__viewer{position:sticky;top:90px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1.4rem,3vw,2.4rem);text-align:center}
.config__draw{width:100%;max-width:330px;margin:0 auto;aspect-ratio:1/1;display:grid;place-items:center}
.config__draw svg{width:100%;height:100%}
.config__draw svg .ln{fill:none;stroke:var(--ink);stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round}.config__draw svg .acc{stroke:var(--accent)}
.config__nav{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1.1rem}
.config__nav button{width:44px;height:44px;border-radius:50%;border:1px solid var(--line-strong);display:grid;place-items:center;font-size:1.1rem;transition:background .25s,color .25s,border-color .25s}
.config__nav button:hover{background:var(--ink);color:var(--white);border-color:var(--ink)}
.config__pos{font-size:.8rem;color:var(--muted);font-weight:600}
.config__name{font-weight:720;font-size:clamp(1.4rem,2.4vw,1.9rem);letter-spacing:-.03em;margin-top:.4rem}
.config__rt{display:inline-flex;margin-top:.7rem}
.config__price{display:flex;align-items:baseline;gap:.5rem;justify-content:center;margin-top:1.2rem}
.config__price .from{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.config__price .ex{font-weight:760;font-size:2.2rem;letter-spacing:-.04em}
.config__sizes{margin-top:.7rem;font-size:.82rem;color:var(--muted)}
.config__cats{display:flex;gap:.45rem;flex-wrap:wrap;margin-bottom:1.3rem}
.config__cat{font-size:.82rem;font-weight:600;padding:.5rem .95rem;border-radius:100px;border:1px solid var(--line-strong);transition:background .25s,color .25s,border-color .25s}
.config__cat[aria-pressed="true"]{background:var(--ink);color:var(--white);border-color:var(--ink)}
.config__listwrap h3{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:1.5rem 0 .5rem}
.pricerow{display:grid;grid-template-columns:1fr auto auto;gap:1rem;align-items:center;padding:.8rem 0;border-bottom:1px solid var(--line);cursor:pointer;transition:padding-left .25s}
.pricerow:hover,.pricerow.is-active{padding-left:.5rem}.pricerow.is-active .pricerow__name{color:var(--accent)}
.pricerow__name{font-weight:560;font-size:1rem}.pricerow__name small{display:block;font-size:.74rem;color:var(--muted);font-weight:400}
.pricerow__ex{font-weight:680;font-size:1.02rem;text-align:right}
.pricerow__inc{font-size:.8rem;color:var(--muted);text-align:right;min-width:80px}
.gate{position:relative}
.gate__list{filter:blur(6px);opacity:.5;pointer-events:none;user-select:none;max-height:340px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 40%,transparent)}
.gate__card{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);width:min(440px,92%);background:var(--ink);color:var(--white);border-radius:var(--radius);padding:1.8rem;text-align:center;box-shadow:0 40px 80px -40px rgba(0,0,0,.6)}
.gate.unlocked .gate__list{filter:none;opacity:1;pointer-events:auto;user-select:auto;max-height:none;-webkit-mask-image:none}
.gate.unlocked .gate__card{display:none}
.gate__card h3{font-weight:720;font-size:1.4rem;letter-spacing:-.02em;margin-bottom:.6rem}
.gate__card p{color:var(--steel-2);font-size:.92rem;line-height:1.5;margin-bottom:1.2rem}
.gate__card .btn--accent{margin-bottom:.7rem}
.gate__card .ghost{font-size:.82rem;color:var(--steel-2);text-decoration:underline}
.pricenote{font-size:.84rem;color:var(--muted);margin-top:1.4rem;line-height:1.5}

/* reveal */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ============================================================ RESPONSIVE */
@media (max-width:1240px){
  .nav__links,.nav__cta{display:none}.nav__burger{display:flex}
}
@media (max-width:1080px){
  .config{grid-template-columns:1fr}.config__viewer{position:static;max-width:520px;margin-inline:auto}
  .tags__grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:900px){
  .board{grid-template-columns:1fr}
  .builder__inner{grid-template-columns:1fr}.plan{display:none}
  .mbar{display:flex}
}
@media (max-width:860px){
  .routes__grid,.bp__board,.stores__inner,.sustain__inner,.faq__inner,.cta__inner{grid-template-columns:1fr}
  .stores__mock{order:-1}
  .faq .section-head{position:static}
  .work__grid{grid-template-columns:1fr 1fr}
}
@media (max-width:600px){
  .work__grid{grid-template-columns:1fr}.form__row,.qmodal .form__row{grid-template-columns:1fr}
  .hero__actions .btn{flex:1 1 100%}
  .footer__inner{grid-template-columns:1fr}
  .pricerow{grid-template-columns:1fr auto}.pricerow__inc{display:none}
  .tags__grid{grid-template-columns:1fr}.tagcard--wide{grid-column:span 1}
}
/* mobile: the tap-a-club board becomes a horizontal club-chip strip + a live detail card,
   replacing the 15-item vertical list whose tap-target updated a preview scrolled off-screen.
   (placed after the 600px block so display:flex wins over the earlier grid rules) */
@media (max-width:760px){
  .split__body{min-width:0}                        /* let the grid item shrink so the strip can scroll instead of widening the page */
  .board{display:flex;flex-direction:column;gap:1rem;min-width:0}
  .board__grid{order:-1;min-width:0;display:flex;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;gap:.5rem;padding-bottom:.5rem;scrollbar-width:none}
  .board__grid::-webkit-scrollbar{display:none}
  .peg{flex:0 0 auto;scroll-snap-align:start;white-space:nowrap;padding:.7rem 1rem}
  .board__feature{min-height:clamp(360px,92vw,440px)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important}
  .reveal,.bpitem{opacity:1;transform:none}
  .ticker__row--a,.ticker__row--b{animation:none}
  body::after{display:none}
  .hero__gl{display:none}
}


/* ============================================================
   v4 — split layout, grid process, sport selector, pickers
   ============================================================ */
.section{padding-block:clamp(3.2rem,6.5vw,6rem)}
.split{display:grid;grid-template-columns:minmax(0,300px) 1fr;gap:clamp(2rem,4vw,4rem);align-items:start}
.split__head{position:sticky;top:90px}
.split__head .section-head{margin-bottom:0}

/* process as a grid (no crop) */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:clamp(1.5rem,3vw,2.5rem)}
.steps .step{flex:initial;min-height:auto}

/* builder layout */
.builder{display:grid;grid-template-columns:1.35fr .65fr;gap:clamp(1.4rem,3vw,2.4rem);align-items:start}
.builder__sport{display:flex;align-items:center;gap:.8rem;margin-bottom:.2rem}
.builder>.builder__sport{grid-column:1/-1}
.builder__sport label{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.sport-select{font-family:var(--ff);font-size:.95rem;font-weight:600;color:var(--ink);padding:.6rem 2.2rem .6rem 1rem;border:1px solid var(--line-strong);border-radius:100px;background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%230d0e11' stroke-width='2'/%3E%3C/svg%3E") no-repeat right .9rem center;appearance:none;-webkit-appearance:none;cursor:pointer}
.chip.is-feature{font-weight:700;font-size:1rem;padding:.72rem 1.25rem}

.route__note{margin-top:1.1rem;font-size:.82rem;font-weight:600;color:var(--accent);display:inline-flex;align-items:center;gap:.4rem}
.route--cs .route__note{color:#fff}

/* enquiry kit-list picker */
.form__pick{border:1px solid var(--line-dark);border-radius:11px;padding:0 1rem;margin-bottom:.2rem;background:rgba(255,255,255,.03)}
.form__pick summary{list-style:none;cursor:pointer;padding:.95rem .2rem;font-size:.9rem;font-weight:600;color:var(--steel-2);display:flex;align-items:center;gap:.5rem}
.form__pick summary::-webkit-details-marker{display:none}
.form__pick[open] summary{color:var(--white);border-bottom:1px solid var(--line-dark);margin-bottom:.6rem}
.form__pickn{color:var(--accent);font-weight:600}
.form__pick .builder__sport{margin:.4rem 0 .9rem}
.form__pick .builder__sport label{color:var(--steel-2)}
.form__pick .builder-cats .bgroup h4{color:var(--steel-2)}
.form__pick .builder-cats{padding-bottom:1rem}
.form__done{display:flex;flex-direction:column}

@media (max-width:900px){
  .split{grid-template-columns:1fr;gap:1.3rem}
  .split__head{position:static}
  .builder{grid-template-columns:1fr}
  .builder .plan{display:none}
  .steps{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .steps{grid-template-columns:1fr}
}

/* ============================================================
   WHAT'S INCLUDED (free) + design credentials anchor
   ============================================================ */
.cred{background:var(--ink);color:var(--white);border-radius:var(--radius);padding:clamp(1.5rem,3vw,2.3rem);margin-bottom:1.4rem;position:relative;overflow:hidden}
.cred::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--grid-d) 1px,transparent 1px),linear-gradient(90deg,var(--grid-d) 1px,transparent 1px);background-size:30px 30px;opacity:.5}
.cred__line{position:relative;font-weight:660;font-size:clamp(1.1rem,1.9vw,1.45rem);letter-spacing:-.02em;line-height:1.3;max-width:46ch}
.cred__names{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.5rem;margin-top:1.3rem;padding-top:1.3rem;border-top:1px solid var(--line-dark)}
.cred__names span{font-weight:760;font-size:clamp(1.2rem,2.6vw,1.9rem);letter-spacing:-.03em;color:#fff;opacity:.92}
.incl{display:grid;grid-template-columns:1fr 1fr;gap:0 1.6rem}
.inclitem{display:flex;gap:.7rem;align-items:flex-start;padding:.85rem 0;border-top:1px solid var(--line)}
.inclitem__tick{color:var(--accent);font-weight:800;flex:none;margin-top:.05rem}
.inclitem__t{font-weight:640;font-size:1rem;display:block}
.inclitem__only{font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink);background:var(--chrome);padding:.14rem .45rem;border-radius:100px;margin-left:.35rem;vertical-align:middle;border:1px solid rgba(0,0,0,.12)}
.inclitem__d{font-size:.85rem;color:var(--muted);display:block;margin-top:.15rem;line-height:1.45}
@media (max-width:560px){.incl{grid-template-columns:1fr}}

/* ============================================================ FX LAYER (fx.js) */
.hero__gl{position:absolute;inset:0;width:100%;height:100%;z-index:1;opacity:0;transition:opacity .4s}   /* canvas is replaced content — inset alone doesn't stretch it */
.hero__gl.ready{opacity:1}
.fx .fx-head.reveal{opacity:1;transform:none;transition:none}   /* headings animated by SplitText instead */
.fx .plx{scale:1.1}                                             /* parallax overscan (individual property) */
.nav--hide{transform:translateY(-105%)}

/* ============================================================ WORK FILTERS */
.fchips{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1.6rem}
.fchips__group{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.fchips__sep{width:1px;height:22px;background:var(--line-strong);margin-inline:.5rem}
.fchip{font-size:.85rem;font-weight:600;padding:.5rem 1rem;border-radius:100px;border:1px solid var(--line-strong);background:var(--white);cursor:pointer;transition:background .2s,color .2s,border-color .2s,transform .25s var(--ease)}
.fchip:hover{border-color:var(--ink);transform:translateY(-1px)}
.fchip[aria-pressed="true"]{background:var(--ink);color:var(--white);border-color:var(--ink)}
.fchips__none{color:var(--muted);font-size:.95rem;padding:1rem 0}
.wcard.is-hide{display:none}
@media (max-width:600px){.fchips__sep{display:none}}

/* ============================================================ PRICING LEAD GATE */
.gate__form{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:.8rem;text-align:left}
.gate__form .btn{grid-column:1/-1;margin-top:.2rem}
.gfield{display:flex;flex-direction:column;gap:.3rem;min-width:0}
.gfield span{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--steel-2)}
.gfield input{width:100%;min-width:0;box-sizing:border-box;background:rgba(255,255,255,.07);border:1px solid var(--line-dark);border-radius:9px;padding:.7rem .8rem;color:var(--white);font:inherit;font-size:1rem;transition:border-color .2s}
.gfield input::placeholder{color:var(--steel)}
.gfield input:focus{outline:none;border-color:rgba(255,255,255,.45)}
.gate__note{font-size:.74rem;color:var(--steel);line-height:1.45}
.gate__card{max-height:none}
@media (max-width:480px){.gate__form{grid-template-columns:1fr}}

/* ============================================================ PAGE POLISH (5A) */
/* Products — index-list feel on area rows; chips get a live hover */
.parea__row{transition:opacity .9s var(--ease),transform .9s var(--ease),padding-left .5s var(--ease)}
.parea__list li{transition:border-color .25s var(--ease),transform .25s var(--ease)}
@media (hover:hover){
  .parea__row:hover{padding-left:6px}
  .parea__list li:hover{border-color:var(--ink);transform:translateY(-1px)}
}

/* How it works — stepper: soft ring on active dot, quieter completed lines */
.stepper__tab.is-active .stepper__dot{box-shadow:0 0 0 5px rgba(245,36,46,.15)}
.stepper__tab.is-done .stepper__line,
.stepper__tab.is-active .stepper__line--l{background:rgba(255,255,255,.55)}

/* How it works — store mock: deeper shadow + lighter border for presence */
.stores__mock .mock{border-color:rgba(255,255,255,.2);box-shadow:0 60px 120px -60px rgba(0,0,0,.8)}

/* How it works — FAQ: accent hover on questions */
.qa summary{transition:color .25s var(--ease)}
@media (hover:hover){ .qa summary:hover{color:var(--accent)} }

/* Build — chip press pop (rides the chip's existing transform transition) */
.chip:active{transform:scale(.965)}
/* END PAGE POLISH (5A) */

/* ============================================================ PAGE POLISH (5B) */
/* About — mission statement pull-quote */
.lead--pull{font-size:clamp(1.3rem,2.4vw,1.6rem);color:var(--ink);font-weight:620;line-height:1.3;letter-spacing:-.025em}

/* Own brand — notify input border + focus (matches the pricing gate fields) */
.soonhero input{border:1px solid var(--line-dark);transition:border-color .2s}
.soonhero input:focus{outline:none;border-color:rgba(255,255,255,.45)}

/* Sustainability — incl + cred variants for ink sections */
.section--ink .inclitem{border-top-color:var(--line-dark)}
.section--ink .inclitem__d{color:var(--steel-2)}
.section--ink .cred{background:var(--ink-2);border:1px solid var(--line-dark)}
.cred__note{position:relative;font-size:.85rem;color:var(--steel-2);margin-top:.9rem;line-height:1.5;max-width:52ch}

/* Pricing — garment drawing draw-in (paths get pathLength=1 in pricing.js) */
@media (prefers-reduced-motion:no-preference){
  .config__draw svg .ln{stroke-dasharray:1;stroke-dashoffset:1;animation:vdraw .7s var(--ease) forwards}
  .config__draw svg .acc{stroke-dasharray:1;stroke-dashoffset:1;animation:vdraw .7s var(--ease) .15s forwards}
  @keyframes vdraw{to{stroke-dashoffset:0}}
}
/* END PAGE POLISH (5B) */

/* ============================================================ NAV MORPH + CURSOR */
/* -- shell: active pages carry a .nav__bar wrapper inside .nav. The fixed .nav becomes a
      pointer-transparent positioning shell (nav--hide still transforms it); the bar does the
      wide-bar → floating-pill morph. archive.html has no wrapper and keeps the legacy bar. -- */
.nav:has(> .nav__bar),.nav.is-stuck:has(> .nav__bar){display:block;padding:0;pointer-events:none;background:none;backdrop-filter:none;border-bottom:none}

/* -- wide state (top of page): full-width bar, links spread across the free middle -- */
.nav__bar{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:2rem;width:100%;margin:0 auto;padding:1.4rem var(--pad);background:var(--white);border:1px solid transparent;border-bottom-color:var(--line);border-radius:0;box-shadow:0 18px 40px -24px rgba(13,14,17,0);backdrop-filter:blur(0px);transition:width .5s var(--ease),margin .5s var(--ease),background .5s var(--ease),padding .5s var(--ease),border-radius .5s var(--ease),border-color .5s var(--ease),box-shadow .5s var(--ease),gap .5s var(--ease),backdrop-filter .5s}
.nav__bar .nav__links{flex:1 1 auto;justify-content:space-evenly;gap:1.1rem;min-width:0;transition:flex-grow .5s var(--ease)}
.nav__bar .nav__links a{white-space:nowrap;transition:color .3s}
.nav__bar .nav__logo{transition:height .5s var(--ease),filter .3s}
.nav__bar .nav__cta .btn{padding:.72rem 1.25rem;transition:transform .35s var(--ease),background .3s,color .3s,border-color .3s,box-shadow .3s,padding .5s var(--ease)}

/* -- over the index hero (before condensing): transparent, white treatment -- */
.nav--light .nav__bar{background:transparent;border-color:transparent}
.nav--light .nav__logo{filter:brightness(0) invert(1)}
.nav--light .nav__links a{color:#fff}
.nav--light .nav__cta .btn--line{--fg:#fff;border-color:rgba(255,255,255,.45)}
.nav--light .nav__cta .btn--line:hover{--bg:var(--white);--fg:var(--ink);border-color:var(--white)}
.nav--light .nav__burger span{background:var(--white)}

/* -- condensed state (scrolled): the bar gathers into a centered floating pill, dark text -- */
.nav.is-stuck .nav__bar{width:min(1140px,calc(100vw - 1.5rem));margin-top:.7rem;background:rgba(255,255,255,.88);backdrop-filter:blur(16px);border-color:var(--line);border-radius:100px;padding:.45rem 1rem .45rem 1.4rem;box-shadow:0 18px 40px -24px rgba(13,14,17,.35);gap:1.1rem}
.nav.is-stuck .nav__bar .nav__links{flex-grow:0;justify-content:center;gap:.9rem}
.nav.is-stuck .nav__bar .nav__logo{height:17px}
.nav.is-stuck .nav__bar .nav__cta .btn{padding:.6rem 1.05rem}

/* -- mobile menu open: drop the bar chrome so logo + burger float over the ink panel -- */
.nav:has(+ .mobile-menu.is-open) .nav__bar{background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:blur(0px)}
.nav:has(+ .mobile-menu.is-open) .nav__logo{filter:brightness(0) invert(1)}

/* -- VARSA cursor: a single simple dot (fx.js on fine pointers; ?nofx never adds .vcur-on) -- */
html.vcur-on body *{cursor:none !important}
html.vcur-on input,html.vcur-on textarea,html.vcur-on select,html.vcur-on [contenteditable]{cursor:auto !important}
.vcur{position:fixed;top:0;left:0;z-index:200;width:11px;height:11px;border-radius:50%;background:var(--accent);pointer-events:none;opacity:0;transition:background-color .2s}
.vcur--light{background:#fff}   /* white over the hero / dark sections */
/* END NAV MORPH + CURSOR */

/* ============================================================ WAVE A POLISH */
/* -- descender clipping: give SplitText mask line-wrappers bottom breathing room,
      and loosen the tightest raw heading line-heights for the non-JS fallback -- */
.fx .fx-head .fxline{padding-bottom:.12em}
.display{line-height:1.04}
.hero__title{line-height:1.0}
/* non-split clipped headings: let descender tails clear their overflow boxes */
.hero__club{padding-bottom:.06em}
.board__club{padding-bottom:.06em}
.route__no{padding-bottom:.06em}
.route h3{padding-bottom:.06em}

/* -- hero accent button: kill the pink glow bleeding onto the dark hero -- */
.hero .btn--accent{box-shadow:none}

/* -- build tool gate: lock glyph + helper note -- */
.btn__lock{margin-right:.5em;font-size:.9em}
.plan__gatenote{display:block;margin-top:.5rem;font-size:.72rem;color:var(--steel-2);text-align:center}

/* -- testimonials: avatar + caption structure (old .quote figcaption rules kept intact) -- */
.quote__cap{display:flex;align-items:center;gap:.7rem;margin-top:auto}
.quote__avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;flex:none;display:grid;place-items:center;font-weight:700;font-size:.9rem}
.quote__avatar--initials{background:var(--ink);color:#fff;letter-spacing:.02em}
.quote__who{display:flex;flex-direction:column;line-height:1.2}
.quote__who b{font-weight:700;font-size:.9rem}
.quote__who span{font-size:.8rem;color:var(--muted)}
/* END WAVE A POLISH */

/* ===== HOMEPAGE R2 ===== */
/* --- #offer: merch-led grid with photos + emphasized off-pitch card --- */
.offer__grid--merch{grid-template-columns:1fr 1.4fr 1fr;align-items:start}
.ocard__photo{aspect-ratio:4/3;border-radius:calc(var(--radius,16px) - 6px);overflow:hidden;margin-bottom:.5rem;background:var(--line)}
.ocard__photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s var(--ease)}
.ocard:hover .ocard__photo img{transform:scale(1.04)}
.ocard--feature{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:0 40px 80px -50px rgba(13,14,17,.55)}
.ocard--feature .ocard__photo{aspect-ratio:4/5}
.ocard--feature h3{color:#fff;font-size:clamp(1.5rem,2.4vw,2.1rem)}
.ocard--feature p{color:rgba(255,255,255,.78)}
.ocard--feature .ocard__no{color:var(--accent)}
.ocard__tag{align-self:flex-start;display:inline-block;background:var(--accent);color:#0d0e11;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:.32rem .62rem;border-radius:100px}
@media (max-width:900px){
  .offer__grid--merch{grid-template-columns:1fr}
  .ocard--feature .ocard__photo{aspect-ratio:16/10}
}

/* --- .flow photos (shared component, reused on How It Works) --- */
.flow__photo{position:relative;aspect-ratio:4/3;border-radius:calc(var(--radius,16px) - 4px);overflow:hidden;margin-bottom:1rem;background:var(--line)}
.flow__photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s var(--ease)}
.flow__step:hover .flow__photo img{transform:scale(1.05)}
.flow__step:has(.flow__photo){border-top:none;padding-top:0}
.flow__step:has(.flow__photo) .flow__no{position:absolute;top:.65rem;left:.65rem;z-index:2;background:var(--ink);color:#fff;padding:.24rem .52rem;border-radius:7px;font-size:.72rem;letter-spacing:.02em}
/* ===== END HOMEPAGE R2 ===== */

/* ===== HIW MERGE ===== */
#faq.section{padding-block:clamp(3rem,6vw,5rem)}
#faq .qa summary{padding-block:.85rem}
#faq .qa{--faq-tight:1}
#faq .faq__inner{gap:1.4rem}
/* ===== END HIW MERGE ===== */

/* ===== PRICING R2 ===== */
/* single VAT-inclusive price cell: drop the old ex/inc two-column layout */
.gate__list .pricerow{grid-template-columns:1fr auto}
.gate__list .pricerow__ex{font-weight:700}
/* keep the tabbed list to roughly one screen; each category scrolls internally */
.gate.unlocked .gate__list{max-height:min(560px,68vh);overflow-y:auto;-webkit-mask-image:none;padding-right:.4rem}
.gate.unlocked .gate__list::-webkit-scrollbar{width:8px}
.gate.unlocked .gate__list::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:100px}
/* tab strip: give category tabs primary weight, route filters a lighter feel */
.config__cat--route{opacity:.9}
.config__cat--route[aria-pressed="true"]{opacity:1}
/* explicit lock affordance on the gate heading and viewer price */
.lock-ic{font-size:.9em;margin-right:.1em;vertical-align:baseline}
.config__price .ex{white-space:nowrap}
/* ===== END PRICING R2 ===== */

/* ===== DESIGN JOURNEY (how-to-design.html) ===== */
/* club-switcher tabs */
.jtabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:clamp(1rem,2vw,1.4rem)}
#journey .section-head{margin-bottom:clamp(.33rem,.66vw,.53rem)}
.jtab{font-size:.9rem;font-weight:600;border:1px solid var(--line-strong);border-radius:100px;padding:.6rem 1.15rem;background:var(--white);color:var(--ink);transition:background .2s,color .2s,border-color .2s,transform .15s;display:inline-flex;align-items:center;gap:.5rem}
.jtab:hover{border-color:var(--ink);transform:translateY(-1px)}
.jtab[aria-pressed="true"]{background:var(--ink);color:var(--white);border-color:var(--ink)}
.jtab .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}
.jtablabel{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-right:.4rem;align-self:center}

/* ---- STANDARD (fallback / mobile / reduced-motion): stacked vertical timeline ---- */
.jtl{position:relative;margin-left:.3rem;padding-left:clamp(1.6rem,4vw,2.4rem);border-left:2px solid var(--line-strong)}
.jstep{position:relative;padding-block:clamp(.33rem,.73vw,.5rem);display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.2rem,3vw,2.4rem);align-items:center}
.jstep::before{content:"";position:absolute;left:calc(-1 * clamp(1.6rem,4vw,2.4rem) - 1px);top:clamp(1.8rem,3.4vw,2.4rem);width:13px;height:13px;border-radius:50%;background:var(--white);border:3px solid var(--steel-2);transform:translateX(-50%)}
.jstep.is-active::before{border-color:var(--accent);box-shadow:0 0 0 5px rgba(245,36,46,.14)}
.jstep__media{position:relative;aspect-ratio:4/3;border-radius:var(--radius);overflow:hidden;background:var(--line)}
.jstep__media img{width:100%;height:100%;object-fit:cover;transition:opacity .45s var(--ease),transform .6s var(--ease)}
.jstep__body .jstep__no{display:inline-block;font-variant-numeric:tabular-nums;font-size:.8rem;font-weight:700;color:var(--accent);margin-bottom:.5rem}
.jstep__body h3{font-weight:730;font-size:clamp(1.15rem,1.9vw,1.5rem);letter-spacing:-.025em;line-height:1.1;margin-bottom:.5rem}
.jstep__body p{color:var(--muted);font-size:clamp(.95rem,1.2vw,1.05rem);line-height:1.55;max-width:40ch}
.jstep:nth-child(even){grid-template-columns:1fr 1fr}
.jstep:nth-child(even) .jstep__media{order:2}
/* placeholder frame for stages we don't have art for yet (reference kit, mock-up) */
.jph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;text-align:center;padding:1rem;background:var(--paper);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:20px 20px;border:1.5px dashed var(--line-strong);border-radius:inherit}
.jph svg{width:30px;height:30px;stroke:var(--steel);fill:none;stroke-width:1.5}
.jph b{font-size:.82rem;font-weight:700;color:var(--muted);letter-spacing:-.01em}
.jph span{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--steel)}
/* rail is only shown in enhanced mode */
.jrail{display:none}

/* ---- ENHANCED (desktop + motion allowed): pinned; all steps on screen, filling in ---- */
.jl-on .jtl{border-left:none;margin:0;padding:0;height:var(--jtl-h,175vh)}
.jl-on .jpin{position:sticky;top:0;min-height:auto;display:flex;flex-direction:column;justify-content:flex-start;gap:clamp(.8rem,1.6vh,1.2rem);padding-block:clamp(3rem,5vh,4rem) 0}
.jl-on .jpin .jtabs{margin:0}
/* horizontal rail: the line running through the whole process, one node per step */
.jl-on .jrail{display:grid;grid-template-columns:repeat(4,1fr);position:relative}
.jrail__line{position:absolute;left:0;right:0;top:7px;height:2px;background:var(--line-strong)}
.jrail__fill{position:absolute;left:0;top:0;height:100%;width:0;background:var(--accent);transition:width .3s var(--ease)}
.jnode{position:relative;display:flex;flex-direction:column;align-items:center;gap:.45rem;text-align:center;color:var(--muted)}
.jnode__dot{width:15px;height:15px;border-radius:50%;background:var(--base);border:2px solid var(--steel-2);transition:border-color .3s,background .3s,box-shadow .3s}
.jnode__k{font-variant-numeric:tabular-nums;font-size:.7rem;font-weight:700;color:var(--steel);letter-spacing:.02em}
.jnode__label{font-size:.85rem;font-weight:650;letter-spacing:-.01em;line-height:1.15}
.jnode.is-active .jnode__dot,.jnode.is-done .jnode__dot{border-color:var(--accent);background:var(--accent)}
.jnode.is-active .jnode__dot{box-shadow:0 0 0 5px rgba(245,36,46,.16)}
.jnode.is-active{color:var(--ink)}
.jnode.is-active .jnode__k{color:var(--accent)}
/* the four steps sit side by side as compact cards; upcoming ones stay dimmed until reached, done ones remain lit */
.jl-on .jsteps{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(1rem,1.8vw,1.5rem);align-items:start}
.jl-on .jstep{position:static;display:flex;flex-direction:column;gap:.5rem;padding:0;opacity:.3;transform:translateY(6px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.jl-on .jstep.is-active,.jl-on .jstep.is-done{opacity:1;transform:none}
.jl-on .jstep::before{display:none}
.jl-on .jstep:nth-child(even) .jstep__media{order:0}
.jl-on .jstep__media{aspect-ratio:4/3;max-height:34vh}
.jl-on .jstep__body{display:flex;flex-direction:column;gap:.28rem}
.jl-on .jstep__body .jstep__no{font-size:.74rem;margin-bottom:.05rem}
.jl-on .jstep__body h3{font-size:clamp(1.02rem,1.35vw,1.28rem)}
.jl-on .jstep__body p{font-size:.9rem;line-height:1.45;max-width:none}

/* the worn payoff shot that closes each club's journey */
.result{margin-top:clamp(.18rem,.33vw,.28rem)}
.result__frame{position:relative;aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;background:var(--line)}
.result__frame img{width:100%;height:100%;object-fit:cover;transition:opacity .4s var(--ease)}
.result__tag{position:absolute;left:1rem;bottom:1rem;z-index:2;display:inline-flex;align-items:center;gap:.5rem;background:rgba(13,14,17,.72);backdrop-filter:blur(6px);color:#fff;padding:.5rem .85rem;border-radius:100px;font-size:.8rem;font-weight:600}
.result__tag .dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}
.result__cap{margin-top:.9rem;font-size:.9rem;color:var(--muted);font-weight:500}
@media (max-width:640px){ .result__frame{aspect-ratio:4/3} .jstep{grid-template-columns:1fr} .jstep:nth-child(even) .jstep__media{order:0} }

/* ---- BRIEF FORM: product chips + file uploads ---- */
.brief-split{display:grid;grid-template-columns:minmax(0,0.85fr) minmax(0,1.15fr);gap:clamp(1.8rem,4vw,3.4rem);align-items:start}
.brief-pitch{position:sticky;top:96px}
.brief-pitch h2{font-weight:770;font-size:clamp(1.9rem,3.4vw,2.9rem);line-height:1.03;letter-spacing:-.035em;margin-bottom:1rem}
.brief-pitch h2 em{font-style:normal;color:var(--accent)}
.brief-pitch>p{color:var(--muted);font-size:1.05rem;line-height:1.55;max-width:38ch;margin-bottom:1.6rem}
.brief-benefits{display:flex;flex-direction:column;gap:.85rem;margin-top:.4rem}
.brief-benefit{display:flex;gap:.7rem;align-items:flex-start;font-size:.98rem;font-weight:500}
.brief-benefit svg{flex:none;width:20px;height:20px;stroke:var(--accent);fill:none;stroke-width:2;margin-top:.1rem}
.brief-benefit b{font-weight:700}
.brief-benefit span{color:var(--muted);font-weight:500}
/* form label groups */
.field--full{grid-column:1/-1}
.fieldgroup{display:flex;flex-direction:column;gap:.55rem}
.fieldgroup>.field span,.fieldgroup__label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--steel-2)}
/* file upload */
.upload{position:relative;display:flex;align-items:center;gap:.7rem;border:1.5px dashed var(--line-dark);border-radius:9px;padding:.85rem 1rem;color:var(--steel-2);background:rgba(255,255,255,.03);cursor:pointer;transition:border-color .2s,background .2s;font-size:.92rem}
.upload:hover{border-color:var(--steel);background:rgba(255,255,255,.05)}
.upload svg{flex:none;width:20px;height:20px;stroke:var(--steel-2);fill:none;stroke-width:1.8}
.upload input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer}
.upload b{color:var(--white);font-weight:600}
.upload .upload__count{margin-left:auto;font-size:.8rem;font-weight:600;color:var(--accent)}
@media (max-width:820px){ .brief-split{grid-template-columns:1fr;gap:1.6rem} .brief-pitch{position:static} }

/* light-themed form for #brief (global .form is dark; here it sits on a light section) */
#brief .form{background:var(--white);border:1px solid var(--line);box-shadow:0 34px 70px -34px rgba(13,14,17,.32)}
#brief .field span,#brief .fieldgroup__label{color:var(--muted)}
#brief .field input,#brief .field select,#brief .field textarea{background:var(--base);border-color:var(--line-strong);color:var(--ink)}
#brief .field input::placeholder,#brief .field textarea::placeholder{color:var(--steel)}
#brief .field input:focus,#brief .field select:focus,#brief .field textarea:focus{border-color:var(--accent)}
#brief .upload{border-color:var(--line-strong);background:var(--base);color:var(--muted)}
#brief .upload:hover{border-color:var(--ink);background:var(--paper)}
#brief .upload svg{stroke:var(--muted)}
#brief .upload b{color:var(--ink)}
#brief .form__note{color:var(--steel)}
#brief .form__success{background:rgba(28,160,74,.1);border-color:rgba(28,160,74,.35);color:#1c8f45}
/* ===== END DESIGN JOURNEY ===== */
