/* =========================================================
   HYPERVEX SITE · site.css (v15, rifacimento 29/9/2026)
   Foundation F1. Fonte: dev/redesign/DESIGN-SPEC.md (§2 token, §3 componenti,
   §4 motion). Le pagine hanno solo il loro css/pages/<pagina>.css per
   posizionare le sezioni: nessun colore, font, ombra o glow nuovo lì.
   Regole: niente backdrop-filter, animazioni solo su transform, opacity,
   clip-path, stroke-dashoffset (e filter sulle due foto partner).
   Galleria componenti: /dev/kit.html
   ========================================================= */

@property --s { syntax: "<percentage>"; inherits: true; initial-value: 50%; } /* seam position */

:root{
  /* colour */
  --bg:#030304;          /* page, OLED black */
  --bg-2:#08080A;        /* coach half of the seam stage, alternate surface */
  --cell:#0A0A0C;        /* bento cells, auth card, jersey */
  --frame:#0E0E10;       /* device bezels */
  --line:#18191D;        /* hairlines */
  --line-2:#25272C;      /* borders of ghost buttons, inputs */
  --line-3:#33363C;      /* inactive bars, step circles */
  --text:#F5F5F7;        /* primary text */
  --text-2:#8C9097;      /* secondary text (6.4:1 on --bg) */
  --text-3:#767B83;      /* captions only, >=13px (4.8:1) */
  --text-4:#4A4E56;      /* decorative only, never information */
  --steel:#A7AFBA;       /* the one neutral accent: kickers, rail, old-way words */
  --red:#FF2E3E;         /* brand red = app red. Never change */
  --red-hi:#FF4150;      /* primary hover */
  --red-lo:#D91B2D;      /* pressed */
  --red-a12:rgba(255,46,62,.12);
  --red-a28:rgba(255,46,62,.28);

  /* type */
  --f-head:"Geist","Figtree",system-ui,sans-serif;
  --f-body:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;

  /* layout */
  --head:68px;
  --gutter:clamp(16px,4vw,48px);      /* 16px on phones: never less */
  --maxw:1320px;                      /* text + grids */
  --maxw-wide:1440px;                 /* hero, film, seam stage */
  --sec-y:clamp(80px,10vw,152px);     /* section padding */
  --sec-y-sm:clamp(56px,7vw,96px);
  --vh:1vh;                           /* stable vh set by JS (width changes only) */

  /* spacing scale (4px base) */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px;
  --sp-6:32px; --sp-7:48px; --sp-8:64px; --sp-9:96px; --sp-10:128px;

  /* radii (one system) */
  --r-btn:999px;        /* all buttons, pills, chips */
  --r-sm:10px;          /* small chips, step visuals */
  --r-input:14px;       /* inputs */
  --r-plate:18px;       /* screenshot plates, loupes */
  --r-cell:24px;        /* bento cells, jerseys, auth card, founder photo */

  /* shadows (no glow blobs) */
  --sh-plate:0 30px 60px -30px rgba(0,0,0,.9);
  --sh-deep:0 60px 120px -60px #000;
  --sh-dev:0 60px 90px -30px rgba(0,0,0,.95);
  --glow-red:0 14px 34px -12px rgba(255,46,62,.75),0 0 0 1px rgba(255,46,62,.4);

  /* motion */
  --ease-out:cubic-bezier(.16,1,.3,1);      /* default for everything that arrives */
  --ease-io:cubic-bezier(.76,0,.24,1);      /* wipes, clip-path, seam */
  --ease-draw:cubic-bezier(.65,0,.35,1);    /* strokes (thread, rings, underlines) */
  --ease-spring:cubic-bezier(.34,1.46,.64,1); /* small pops: dots, loupe, logo */
  --d-press:.12s; --d-color:.3s; --d-hover:.45s; --d-shine:.75s; --d-reveal:1s; --d-wipe:1.1s; --d-draw:.6s;

  /* layers */
  --z-stage:3; --z-thread:9; --z-wa:40; --z-dock:45; --z-head:50; --z-toast:60; --z-skip:100;

  color-scheme:dark;
}

/* =========================================================
   1. BASE
   ========================================================= */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--head) + 16px);background:var(--bg);overflow-x:clip}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font:400 17px/1.6 var(--f-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;text-rendering:optimizeLegibility}
body.nav-locked{overflow:hidden}
img,video,svg{display:block;max-width:100%}
img,video{height:auto}
.uline,.u-thread>svg,.lp-ring,.lp-link,.thread,.stage-ring,.nf-thread{max-width:none} /* the global max-width must never shrink the strokes */
a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4,h5,p,figure,blockquote,dl,dd{margin:0}
ol,ul{margin:0;padding:0;list-style:none}
b,strong{font-weight:600}
[hidden]{display:none!important}               /* required by account.js: never remove */
::selection{background:var(--red);color:#fff}
:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:8px}
.skip{position:absolute;left:12px;top:-60px;z-index:var(--z-skip);background:#fff;color:#000;padding:10px 16px;border-radius:999px;font-weight:600;transition:top .3s var(--ease-out)}
.skip:focus{top:12px}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:root{--edge:calc(var(--gutter) + max(0px,(100vw - var(--maxw)) / 2))}
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.wrap-wide{width:100%;max-width:var(--maxw-wide);margin-inline:auto;padding-inline:var(--gutter)}
.num{font-variant-numeric:tabular-nums}
main{display:block}
/* safety net: a plain link inside the page always has a visible hover.
   :where() keeps it at (0,0,2): every component rule (.toc a, .crumbs a, .prose a, .chk a,
   .auth-links a…) wins over it, so generated links without a class keep their component colour */
main a:where(:not([class])){color:var(--text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:rgba(245,245,247,.35);transition:text-decoration-color .3s,text-decoration-thickness .3s,color .3s}
main a:where(:not([class])):hover{text-decoration-color:var(--red);text-decoration-thickness:2px}
main .toc a,main .crumbs a{text-decoration:none}

/* =========================================================
   2. TYPE
   ========================================================= */
.display,.h1,.h2,.h3,.h4,.logo,.price-big,.manifesto,.endline-t,.jersey-code,.quote,.mq-track li,.goals,.code-n,.nf-404{font-family:var(--f-head)}
.display{font-weight:600;font-size:clamp(42px,5.6vw,92px);line-height:.98;letter-spacing:-.045em}
.h1{font-weight:600;font-size:clamp(38px,4.8vw,76px);line-height:1;letter-spacing:-.04em;text-wrap:balance}
.h2{font-weight:600;font-size:clamp(32px,4.1vw,62px);line-height:1.03;letter-spacing:-.035em;text-wrap:balance}
.h3{font-weight:600;font-size:clamp(23px,2.05vw,31px);line-height:1.14;letter-spacing:-.025em;text-wrap:balance}
.h4{font-weight:600;font-size:20px;line-height:1.2;letter-spacing:-.02em}
.lead{font-size:clamp(18px,1.42vw,21px);line-height:1.5;color:var(--text-2);max-width:30em}
.lead b{color:var(--text);font-weight:600}
.body{font-size:17px;line-height:1.6;color:var(--text-2)} .body b{color:var(--text);font-weight:600}
.body-lg{font-size:clamp(17px,1.32vw,20px);line-height:1.55;color:var(--text-2);max-width:36em} .body-lg b{color:var(--text);font-weight:600}
.small{font-size:15px;line-height:1.5;color:var(--text-2)} .small b{color:var(--text)}
.cap{font-size:13px;line-height:1.45;color:var(--text-3);font-weight:500;letter-spacing:.01em}
.kicker{display:flex;align-items:center;gap:12px;font-size:15px;font-weight:500;color:var(--steel);margin-bottom:14px}
.h1+.lead,.h1+.body-lg{margin-top:24px} .h2+.lead,.h2+.body-lg{margin-top:20px}
.kicker::before{content:"";width:22px;height:1.5px;border-radius:2px;background:var(--red);flex:none}

/* =========================================================
   3. SECTIONS (shared rhythm; page CSS only places them)
   ========================================================= */
.sec{position:relative;padding-block:var(--sec-y)}
.sec-sm{position:relative;padding-block:var(--sec-y-sm)}
.sec-line{border-top:1px solid var(--line)}
.sec-head{max-width:900px;margin-bottom:clamp(40px,4.4vw,72px)}
.sec-head>*+*{margin-top:20px}
.sec-head .lead,.sec-head .body-lg{max-width:34em}
.flow>*+*{margin-top:18px}
.tlinks{display:flex;flex-wrap:wrap;align-items:center;gap:8px 32px;margin-top:28px}

/* =========================================================
   4. BUTTONS AND LINKS
   ========================================================= */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;height:52px;padding:0 26px;border-radius:var(--r-btn);font-weight:600;font-size:16px;line-height:1;white-space:nowrap;overflow:hidden;isolation:isolate;text-decoration:none;border:1px solid transparent;transition:transform .4s var(--ease-out),box-shadow .45s var(--ease-out),background-color .35s,border-color .35s,color .35s}
.btn>span,.btn>svg{position:relative;z-index:2}
.btn::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.34) 48%,rgba(255,255,255,.08) 56%,transparent 70%);transform:translateX(-130%);transition:transform var(--d-shine) var(--ease-out)}
.btn:active{transform:scale(.98);transition-duration:var(--d-press)}
.btn:focus-visible{outline-offset:4px;border-radius:var(--r-btn)}
.btn-primary,.btn.solid{background:var(--red);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.btn-primary:active,.btn.solid:active{background:var(--red-lo)}
.btn-ghost,.btn.ghost{color:var(--text);border-color:var(--line-2);background:rgba(255,255,255,.015)}
.btn-ghost::after,.btn.ghost::after{background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.12) 48%,transparent 66%)}
.btn-lg,.btn.big{height:58px;padding:0 30px;font-size:17px}
.btn-sm{height:40px;padding:0 18px;font-size:15px}
.btn-block,.btn.block{display:flex;width:100%}
.btn .ico-wa{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}
.ico-arrow{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--d-hover) var(--ease-out);flex:none}
.tlink{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:16px;color:var(--text);padding:4px 0}
.tlink>span{background:linear-gradient(currentColor,currentColor) 100% 100%/0% 1.5px no-repeat;padding-bottom:3px;transition:background-size .5s var(--ease-out)}
.tlink .ico-arrow{color:var(--red)}
.tlink-inline{display:inline;padding:0;font-size:inherit}
.tlink-inline>span{background-size:100% 1px;background-image:linear-gradient(rgba(245,245,247,.4),rgba(245,245,247,.4))}
.link-quiet{font-weight:500;font-size:15px;color:var(--text-2);background:linear-gradient(var(--text),var(--text)) 100% 100%/0% 1.5px no-repeat;padding-bottom:3px;transition:color .3s,background-size .5s var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .btn:hover{transform:translateY(-2px)} .btn:hover::after{transform:translateX(130%)}
  .btn-primary:hover,.btn.solid:hover{background:var(--red-hi);box-shadow:var(--glow-red),inset 0 1px 0 rgba(255,255,255,.22)}
  .btn-ghost:hover,.btn.ghost:hover{border-color:#4A4E56;background:rgba(255,255,255,.05);box-shadow:0 12px 30px -16px rgba(0,0,0,.9)}
  .btn:hover .ico-arrow,.tlink:hover .ico-arrow{transform:translateX(4px)}
  .tlink:hover>span{background-size:100% 1.5px;background-position:0 100%}
  .tlink-inline:hover>span{background-image:linear-gradient(var(--red),var(--red));background-size:100% 1.5px}
  .link-quiet:hover{color:var(--text);background-size:100% 1.5px;background-position:0 100%}
}
.tlink:active,.link-quiet:active{color:var(--text)}

/* =========================================================
   5. HEADER, DROPDOWN, MOBILE MENU (markup from js/ui.js)
   ========================================================= */
.site-head{position:fixed;inset:0 0 auto 0;z-index:var(--z-head);height:var(--head);border-bottom:1px solid transparent;background:rgba(3,3,4,0);transition:background-color .45s,border-color .45s,transform 1s var(--ease-out),opacity .8s ease}
.site-head.scrolled,.site-head.open{background:rgba(3,3,4,.94);border-bottom-color:var(--line)}   /* no backdrop-filter */
.js .site-head{transform:translateY(-100%)} .js.is-loaded .site-head{transform:none}
.head-in{max-width:var(--maxw-wide);margin:0 auto;height:100%;padding:0 var(--gutter);display:flex;align-items:center;gap:20px}
.logo{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:19px;letter-spacing:-.025em;color:#fff;flex:none}
.logo picture{display:block;flex:none}
.logo img{width:30px;height:30px;border-radius:8px;transition:transform .6s var(--ease-spring)}
.logo:hover img{transform:rotate(-8deg) scale(1.08)}
.nav{display:flex;align-items:center;gap:2px;margin-left:auto}
.nav-a{position:relative;display:inline-flex;align-items:center;gap:6px;padding:10px 14px;font-weight:500;font-size:15px;color:var(--text-2);transition:color .3s}
.nav-a::after{content:"";position:absolute;left:14px;right:14px;bottom:5px;height:1.5px;border-radius:2px;background:var(--red);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease-out)}
.nav-a:hover,.nav-a[aria-current="page"],.nav-dd-btn.is-current,.nav-dd[data-open] .nav-dd-btn{color:var(--text)}
.nav-a:hover::after,.nav-a[aria-current="page"]::after,.nav-dd-btn.is-current::after{transform:scaleX(1);transform-origin:left}
.ico-chev{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s var(--ease-out)}
.nav-dd{position:relative}
.nav-dd[data-open] .ico-chev{transform:rotate(180deg)}
.nav-dd-panel{position:absolute;top:calc(100% + 8px);left:0;min-width:300px;padding:8px;border-radius:18px;background:var(--cell);border:1px solid var(--line-2);box-shadow:var(--sh-deep);opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .3s var(--ease-out),transform .35s var(--ease-out),visibility 0s .35s}
.nav-dd[data-open] .nav-dd-panel{opacity:1;visibility:visible;transform:none;transition-delay:0s}
.nav-dd-a{position:relative;display:flex;flex-direction:column;gap:2px;padding:12px 40px 12px 14px;border-radius:12px;transition:background-color .3s,transform .4s var(--ease-out)}
.nav-dd-a b{font:600 17px/1.2 var(--f-head);letter-spacing:-.02em;color:var(--text)} .nav-dd-a>span{font-size:14px;color:var(--text-2)}
.nav-dd-a::after{content:"";position:absolute;right:16px;top:50%;width:14px;height:14px;margin-top:-7px;background:var(--red);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10h11M11 5l5 5-5 5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10h11M11 5l5 5-5 5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;opacity:0;transform:translateX(-4px);transition:opacity .3s,transform .4s var(--ease-out)}
.nav-dd-a:hover,.nav-dd-a[aria-current="page"]{background:rgba(255,255,255,.04)}
.nav-dd-a:hover::after{opacity:1;transform:none}
.head-cta{display:flex;align-items:center;gap:20px;margin-left:18px;flex:none}
.burger{display:none;width:44px;height:44px;border-radius:12px;position:relative;transition:background-color .3s;flex:none}
.burger:hover{background:rgba(255,255,255,.06)}
.burger span{position:absolute;left:12px;right:12px;height:1.8px;border-radius:2px;background:#fff;transition:transform .5s var(--ease-out),top .5s var(--ease-out)}
.burger span:nth-child(1){top:17px} .burger span:nth-child(2){top:25px}
.site-head.open .burger span:nth-child(1){top:21px;transform:rotate(45deg)}
.site-head.open .burger span:nth-child(2){top:21px;transform:rotate(-45deg)}
.nav-mob{position:fixed;left:0;right:0;top:var(--head);height:calc(100vh - var(--head));height:calc(100dvh - var(--head));background:var(--bg);display:flex;flex-direction:column;gap:20px;padding:24px var(--gutter) 0;clip-path:inset(0 0 100% 0);visibility:hidden;transition:clip-path .45s var(--ease-io),visibility 0s .45s}
.site-head.open .nav-mob{clip-path:inset(0 0 0 0);visibility:visible;transition:clip-path .45s var(--ease-io),visibility 0s}
.nav-mob-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column}
.nm-a{position:relative;font:600 clamp(28px,8.5vw,40px)/1.15 var(--f-head);letter-spacing:-.035em;padding:8px 0;border-bottom:1px solid var(--line);opacity:0;transform:translateY(18px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out),color .25s,padding-left .45s var(--ease-out)}
.nm-a::before{content:"";position:absolute;left:0;top:50%;width:18px;height:2px;border-radius:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease-out)}
.nm-a:hover,.nm-a:active,.nm-a[aria-current="page"]{color:var(--text);padding-left:28px}
.nm-a:hover::before,.nm-a:active::before,.nm-a[aria-current="page"]::before{transform:scaleX(1)}
.nm-small{display:flex;flex-wrap:wrap;gap:8px 20px;padding-top:18px;font-size:16px;color:var(--text-2);opacity:0;transition:opacity .5s var(--ease-out)}
.nm-small a{transition:color .3s} .nm-small a:hover,.nm-small a[aria-current="page"]{color:var(--text)}
.site-head.open .nm-a,.site-head.open .nm-small{opacity:1;transform:none;transition-delay:calc(var(--i) * 45ms + 120ms)}
.site-head.open .nm-a:hover{transition-delay:0s}
.nav-mob-cta{flex:none;display:grid;grid-template-columns:1fr 1fr;gap:10px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}
.nav-mob-cta .btn{width:100%;padding:0 14px}
@media (max-width:959px){ .nav,.head-cta{display:none} .burger{display:block;margin-left:auto} }
@media (min-width:960px){ .nav-mob{display:none} }

/* =========================================================
   6. FOOTER (markup from js/ui.js)
   ========================================================= */
.site-foot{position:relative;padding:clamp(56px,6vw,88px) 0 calc(28px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.foot-top{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,3fr);gap:48px}
.foot-brand p{margin-top:14px;color:var(--text-2);font-size:15px;line-height:1.55;max-width:19em}
.foot-cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px}
.fc-h{font-size:13px;font-weight:600;color:var(--text-3);margin-bottom:10px}
.foot-cols a{display:block;width:fit-content;max-width:100%;padding:5px 0;font-size:15px;color:var(--text-2);overflow-wrap:break-word;background:linear-gradient(var(--text),var(--text)) 100% calc(100% - 3px)/0% 1px no-repeat;transition:color .3s,transform .45s var(--ease-out),background-size .5s var(--ease-out)}
.foot-cols a:hover{color:var(--text);transform:translateX(3px);background-size:100% 1px;background-position:0 calc(100% - 3px)}
.foot-bar{display:flex;justify-content:space-between;gap:8px 24px;flex-wrap:wrap;margin-top:clamp(40px,5vw,64px);padding-top:22px;border-top:1px solid var(--line);font-size:13px;line-height:1.5;color:var(--text-3)}
.foot-bar a{color:var(--text-2);transition:color .3s} .foot-bar a:hover{color:var(--text)}
@media (max-width:1023px){ .foot-top{grid-template-columns:1fr;gap:36px} }
@media (max-width:719px){ .foot-cols{grid-template-columns:1fr 1fr;gap:28px 20px} .foot-bar{flex-direction:column} }

/* =========================================================
   7. DEVICES (CSS frames, real screenshots inside)
   ========================================================= */
.dev{position:relative}
.laptop,.phone{container-type:inline-size}
.laptop .lid{position:relative;padding:1.3cqw 1.3cqw 2.1cqw;border-radius:2.4cqw 2.4cqw 1cqw 1cqw;background:linear-gradient(180deg,#1B1C20,#0D0D0F 60%);box-shadow:inset 0 0 0 1px #26272C,inset 0 1px 0 #34363C,var(--sh-dev)}
.laptop .lid::before{content:"";position:absolute;top:.5cqw;left:50%;width:.6cqw;height:.6cqw;border-radius:50%;background:#1F2024;transform:translateX(-50%)}
.laptop .screen{position:relative;aspect-ratio:3/2;border-radius:max(6px,1cqw);overflow:hidden;background:#0B0B0D}
.laptop .base{position:relative;height:2.3cqw;margin:0 -5.5cqw;border-radius:0 0 3cqw 3cqw/0 0 1.6cqw 1.6cqw;background:linear-gradient(180deg,#34353B 0%,#1A1B1F 45%,#0B0B0D 100%)}
.laptop .base::before{content:"";position:absolute;top:0;left:50%;width:15cqw;height:.9cqw;transform:translateX(-50%);border-radius:0 0 1cqw 1cqw;background:#121316}
.phone .screen{position:relative;aspect-ratio:1290/2796;border-radius:13.5cqw;overflow:hidden;background:#050506;box-shadow:0 0 0 2.8cqw var(--frame),0 0 0 calc(2.8cqw + 1px) #2A2B30,0 0 0 calc(2.8cqw + 2px) #0A0A0B,var(--sh-dev)}
.phone .screen::after{content:"";position:absolute;left:50%;bottom:2.2cqw;width:34cqw;height:1.25cqw;border-radius:9px;background:rgba(255,255,255,.72);transform:translateX(-50%);z-index:6}
.shot{position:relative;width:100%;aspect-ratio:var(--ar)}
.shot img,.shot video,.shot picture{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
.sbar{position:absolute;top:0;left:0;right:0;height:13.9cqw;padding:1.2cqw 8.5cqw 0 12cqw;display:flex;align-items:center;justify-content:space-between;color:#fff;z-index:6;pointer-events:none}
.sbar b{font:600 4.3cqw/1 var(--f-body)} .sb-ico svg{width:15.5cqw;height:auto;fill:currentColor}
.island{position:absolute;top:3cqw;left:50%;width:29cqw;height:8.4cqw;border-radius:99px;background:#000;transform:translateX(-50%);z-index:7}
.screen::before{content:"";position:absolute;inset:0;background:#000;opacity:0;z-index:8;pointer-events:none;transition:opacity .9s var(--ease-out)} /* dim veil */
.mini-phone{position:relative;width:min(58vw,260px);aspect-ratio:1290/2796;border-radius:36px;overflow:hidden;background:#000;box-shadow:0 0 0 8px var(--frame),0 0 0 9px #2A2B30,0 40px 70px -30px rgba(0,0,0,.9);margin:9px auto}
.mini-phone picture{display:block;width:100%;height:100%}
.mini-phone img,.mini-phone video{width:100%;height:100%;object-fit:cover;object-position:top center}

/* =========================================================
   8. THREAD + MEASURED STROKES
   ========================================================= */
.thread{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:var(--z-thread)}
.thread path{fill:none;stroke-linecap:round}
.th-line{stroke:var(--red);stroke-width:2} .th-glow{stroke:var(--red-a28);stroke-width:8}
.th-dot,.th-start{fill:var(--red);transform-box:fill-box;transform-origin:center;transform:scale(0);transition:transform .5s var(--ease-spring)}
.th-start{fill:#fff} .thread.done .th-dot,.thread.done .th-start{transform:scale(1)}
.th-ring{fill:none;stroke:var(--red);stroke-width:1.5;opacity:0;transform-box:fill-box;transform-origin:center}
.thread.done .th-ring{animation:ring 1.3s var(--ease-out) .1s 1 both}
@keyframes ring{0%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(5)}}
.debug-anchors .hx-anchor{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;border:1px solid #0ff;border-radius:50%;z-index:9999;pointer-events:none}
.debug-anchors .hx-anchor::before,.debug-anchors .hx-anchor::after{content:"";position:absolute;background:#0ff}
.debug-anchors .hx-anchor::before{left:6px;top:-6px;width:1px;height:24px} .debug-anchors .hx-anchor::after{top:6px;left:-6px;height:1px;width:24px}
.draw{fill:none;stroke:var(--red);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;stroke-dasharray:var(--len,0);stroke-dashoffset:var(--len,0);transition:stroke-dashoffset var(--d-draw) var(--ease-draw)}
.in .draw,.in.draw,html:not(.js) .draw,.is-loaded .hero .ln .draw{stroke-dashoffset:0}
.uline{position:absolute;left:0;right:0;bottom:-.1em;width:100%;height:.14em;overflow:visible;pointer-events:none}
.uline .draw{stroke-width:4;transition-delay:.7s}
.u-thread{position:relative;display:inline-block;white-space:nowrap}
.u-thread>svg{position:absolute;left:-1%;width:102%;bottom:-.16em;height:.22em;overflow:visible;pointer-events:none}
.u-thread .draw{stroke-width:4;transition-delay:.75s}

/* =========================================================
   9. HERO (all variants)
   ========================================================= */
.hero{position:relative;overflow:clip;padding-top:var(--head)}
.hero-in{position:relative;max-width:var(--maxw-wide);margin:0 auto;padding:clamp(36px,6vh,80px) var(--gutter) clamp(56px,8vh,96px);display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);align-items:center;gap:clamp(24px,3vw,56px);min-height:calc(var(--vh) * 100 - var(--head))}
/* one left edge for the whole site: the hero copy starts on the same line as every .wrap section
   below it (the stage still runs to the wide edge on the right). % = the section's width. */
.hero:not(.hero--text) .hero-in{padding-left:calc(var(--gutter) + (min(100%, var(--maxw-wide)) - min(100%, var(--maxw))) / 2)}
.hero-copy{position:relative;z-index:3;min-width:0}
.hero-copy .lead{margin-top:28px}
.hero-copy .h1+.lead{margin-top:24px}
.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;margin-top:36px}
.cta-row .tlink{margin-left:10px}
.cta-row .tlink:first-child{margin-left:0}
.ln{display:block;overflow:hidden;padding:0 .08em .16em;margin:0 -.08em -.12em}
.ln-i{display:inline-block;position:relative;white-space:nowrap}
.display .ln:first-child .ln-i{color:#C3C7CD;font-weight:500}
.js .ln-i{transform:translateY(108%);transition:transform 1.05s var(--ease-out) calc(var(--d) * 70ms + 180ms)}
.js.is-loaded .ln-i{transform:none}
.js .enter{opacity:0;transform:translateY(16px);transition:opacity .9s var(--ease-out) calc(var(--d) * 90ms + 220ms),transform 1s var(--ease-out) calc(var(--d) * 90ms + 220ms)}
.js.is-loaded .enter{opacity:1;transform:none}
.js.is-loaded [data-hero] .cta-row .btn-primary::after{animation:shine 1.1s var(--ease-out) 1.1s 1 backwards} /* backwards, not both: hover shine must still work afterwards */
@keyframes shine{from{transform:translateX(-130%)}to{transform:translateX(130%)}}
.hero-stage{position:relative;margin:0;aspect-ratio:1.14;container-type:inline-size;perspective:1800px;min-width:0}
.hero-stage .tilt{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .8s var(--ease-out)}
.light{position:absolute;left:-8%;right:-20%;top:-6%;bottom:-10%;pointer-events:none;background:radial-gradient(52% 50% at 50% 52%,rgba(255,46,62,.26),rgba(255,46,62,.08) 45%,rgba(255,46,62,0) 72%)}
.js .light{opacity:0;transition:opacity 1.6s var(--ease-out) .3s} .js.is-loaded .light{opacity:1}
/* device entrances (every hero variant) */
.js .hero-laptop,.js .hero-dev{opacity:0;translate:0 14px;transition:opacity 1s var(--ease-out) .25s,translate 1.2s var(--ease-out) .25s}
.js .hero-phone{opacity:0;translate:26cqw 0;rotate:y -14deg;transition:opacity .7s var(--ease-out) .45s,translate 1.1s var(--ease-spring) .45s,rotate 1.1s var(--ease-out) .45s}
.js .hero-phone-b{opacity:0;translate:0 30px;transition:opacity .9s var(--ease-out) .3s,translate 1.2s var(--ease-out) .3s}
.js .hero-stage .shot{opacity:0;scale:.965;transition:opacity .7s var(--ease-out) .55s,scale 1s var(--ease-out) .55s}
.js .hero-phone .shot{transition-delay:.85s}
.js.is-loaded .hero-laptop,.js.is-loaded .hero-phone,.js.is-loaded .hero-phone-b,.js.is-loaded .hero-dev{opacity:1;translate:0 0;rotate:y 0deg}
.js.is-loaded .hero-stage .shot{opacity:1;scale:1}
.hero-stage>.cap,.hero-stage figcaption.cap{position:absolute;right:0;bottom:-6px;z-index:4;text-align:right}
.js .hero-stage>.cap,.js .hero-stage figcaption.cap{opacity:0;transition:opacity 1s ease 1.4s} .js.is-loaded .hero-stage>.cap,.js.is-loaded .hero-stage figcaption.cap{opacity:1}
/* --duo (home): laptop + phone */
.hero--duo .hero-laptop{position:absolute;width:102cqw;right:-16cqw;top:3cqw}
.hero--duo .hero-phone{position:absolute;width:31cqw;left:-1cqw;bottom:6cqw;z-index:3}
/* --laptop (/coach): big laptop + loupe */
.hero--laptop .hero-in{grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr)}
.hero--laptop .hero-stage{aspect-ratio:auto;padding:4% 0 9%}
.hero--laptop .hero-stage .lp{width:112%}
/* --phones (/atleti): two phones */
.hero--phones .hero-stage{aspect-ratio:1.08}
.hero--phones .hero-phone{position:absolute;width:37cqw;left:14cqw;bottom:0;z-index:3}
.hero--phones .hero-phone-b{position:absolute;width:33cqw;right:10cqw;top:0;z-index:2}
.hero--phones .hero-phone-b .screen::before{opacity:.12}
@media (min-width:1024px) and (max-width:1279px){   /* narrow desktops: the caption goes under the stage, off the front phone */
  .hero--phones .hero-stage>.cap,.hero--phones .hero-stage figcaption.cap{bottom:-30px}
}
/* --price (/prezzi-atleta): one phone + loupe; the price is in the H1 */
.hero--price .hero-stage{aspect-ratio:auto}
.hero--price .hero-stage>.cap,.hero--price .hero-stage figcaption.cap{position:relative;right:auto;bottom:auto;margin-top:22px}
/* --tool (/prezzi-coach): band widget as the visual */
.hero--tool .hero-in{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,96px)}
.hero--tool .hero-stage{aspect-ratio:auto;container-type:normal;perspective:none}
.hero-tool{position:relative;z-index:3}
/* --text (partner, trova-coach, faq, guide, legal): H1 + lead + one motion element */
.hero--text .hero-in{max-width:var(--maxw);grid-template-columns:minmax(0,1fr);min-height:0;padding-top:clamp(64px,12vh,136px);padding-bottom:clamp(40px,6vh,72px)}   /* H1 on the same line as the H2s below */
.hero--text .hero-copy{max-width:1000px}
.hero--text .lead{max-width:36em}
.hero-extra{position:relative;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter) clamp(48px,6vw,96px)}
.hero-extra--bleed{max-width:none;padding-inline:0}
@media (max-width:1023px){
  .hero-in,.hero--laptop .hero-in,.hero--tool .hero-in{grid-template-columns:1fr;min-height:0;gap:44px}
  .hero-stage{max-width:720px;width:100%;justify-self:center;aspect-ratio:1.18}
  .hero--duo .hero-laptop{width:90cqw;right:-2cqw;top:0} .hero--duo .hero-phone{width:30cqw;left:0;bottom:3cqw}
  .hero--laptop .hero-stage{aspect-ratio:auto;padding:0} .hero--laptop .hero-stage .lp{width:100%}
  .hero--phones .hero-stage{aspect-ratio:1.02;max-width:560px}
  .hero--price .hero-stage,.hero--tool .hero-stage{aspect-ratio:auto;max-width:none}
  .hero-stage>.cap,.hero-stage figcaption.cap{position:relative;right:auto;bottom:auto;margin-top:18px;text-align:left}
  .hero--duo .hero-stage>.cap,.hero--duo .hero-stage figcaption.cap,.hero--phones .hero-stage>.cap,.hero--phones .hero-stage figcaption.cap{position:absolute;left:auto;right:0;bottom:-30px;text-align:right;max-width:60%}
  .hero--duo,.hero--phones{padding-bottom:30px}
}
@media (max-width:719px){
  body{font-size:16px}
  .display{font-size:clamp(40px,12.2vw,64px)}
  .cta-row .btn{flex:1 1 auto} .cta-row .btn-lg{height:54px;padding:0 22px;font-size:16px}
  .cta-row .tlink{margin-left:0}
  .hero-stage{aspect-ratio:1.02} .hero--duo .hero-laptop{width:104cqw;right:-22cqw;top:2cqw} .hero--duo .hero-phone{width:40cqw;left:0;bottom:6cqw}
  .hero--phones .hero-stage{aspect-ratio:.96} .hero--phones .hero-phone{width:46cqw;left:4cqw} .hero--phones .hero-phone-b{width:42cqw;right:2cqw}
  .hero-in{padding-top:28px}
  .hero--text .hero-in{padding-top:48px}
}

/* =========================================================
   10. IMAGES: plate, plate-zoom, loupe (+ device variant)
   ========================================================= */
.plate{position:relative;margin:0;border-radius:var(--r-plate);overflow:hidden;border:1px solid var(--line);background:#0B0B0D;transition:border-color .45s,transform .6s var(--ease-out),box-shadow .6s var(--ease-out)}
.plate picture{display:block}
.plate img{width:100%;height:auto;transition:transform 1.1s var(--ease-out)}
.plate+.cap,figure+.cap,.plate-cap{display:block;margin-top:14px}
@media (hover:hover) and (pointer:fine){ .plate:hover{border-color:#2E3036;transform:translateY(-3px);box-shadow:var(--sh-plate)} .plate:hover img{transform:scale(1.025)} }
@media (max-width:1023px){
  .plate-zoom{aspect-ratio:4/3} .plate-zoom picture{position:absolute;display:block;width:var(--zw,190%);left:calc(-1 * var(--zx,0%));top:calc(-1 * var(--zy,0%))} .plate-zoom img{width:100%;max-width:none}
}
.lp{position:relative}
.lp-ring,.lp-link{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:4}
.loupe{position:relative;z-index:5;width:100%;margin:14px 0 0;border-radius:var(--r-plate);overflow:hidden;background:#0C0C0E;border:1px solid rgba(255,46,62,.6);box-shadow:0 0 0 6px var(--bg),var(--sh-deep)}
.loupe picture{display:block}
.loupe img{width:100%} .loupe figcaption{padding:10px 14px 12px;font-size:14px;line-height:1.4;color:var(--text-2);border-top:1px solid var(--line)}
.lp-link{display:none}
/* device variant: the ring sits on a screenshot inside a laptop or phone frame */
.lp--laptop .dev.laptop{width:100%}
.lp--phone .dev.phone{width:clamp(240px,50%,340px);margin-left:auto;margin-right:4%}
@media (min-width:1024px){
  .lp-link{display:block}
  .loupe{position:absolute;width:min(38%,420px);margin:0;left:-3%;bottom:-8%}
  .lp[data-corner="br"] .loupe{left:auto;right:-3%} .lp[data-corner="tl"] .loupe{bottom:auto;top:-8%} .lp[data-corner="tr"] .loupe{left:auto;right:-3%;bottom:auto;top:-8%}
  .lp[data-corner="ml"] .loupe{bottom:auto;top:30%;left:0} .lp[data-corner="mr"] .loupe{bottom:auto;top:30%;left:auto;right:0}
  .lp--phone .loupe{width:min(44%,400px)}
  .lp .lp-ring .draw{transition-delay:.5s} .lp .lp-link .draw{transition-delay:1s}
  .js .lp .loupe{opacity:0;transform:translateY(22px) scale(.94)}
  .js .lp.in .loupe{opacity:1;transform:none;transition:opacity .7s var(--ease-out) 1.15s,transform .9s var(--ease-spring) 1.15s}
}
@media (max-width:1023px){
  .lp-ring{display:none}
  .lp--phone .dev.phone{width:min(66vw,300px);margin:0 auto}
  .lp--phone .loupe{margin-top:26px}
}
@media (min-width:720px) and (max-width:1023px){
  .loupe{max-width:480px}                /* tablets: the crop stays sharp, never a poster */
  .lp--phone .loupe{margin-inline:auto}
}

/* =========================================================
   11. MANIFESTO (home only)
   ========================================================= */
.manifesto-sec{padding-block:var(--sec-y)}
.manifesto{font-weight:600;font-size:clamp(28px,3.4vw,52px);line-height:1.16;letter-spacing:-.028em;max-width:24em}
.manifesto .old{color:var(--steel)}

/* =========================================================
   12. SEAM SPLIT "Due lati" (+ .split--text)
   ========================================================= */
.split{position:relative;padding-top:var(--sec-y)}
.split-head{margin-bottom:0}
.split-head .lead{margin-top:20px}
.split-stage{position:relative;margin-top:clamp(40px,5vw,72px)}
.split-half{min-width:0}
.split-copy .h3{margin-bottom:14px}
.split-copy .body{max-width:28em}
.split-go{margin-top:22px}
@media (min-width:1024px){
  .split-stage{--h:clamp(640px,52vw,760px);--k:calc(var(--h) * .0349);height:var(--h);overflow:hidden;transition:--s .9s var(--ease-io)}
  .split-stage[data-hot="a"]{--s:57%} .split-stage[data-hot="b"]{--s:43%}
  .split-half{position:absolute;inset:0}
  .split-a{background:var(--bg-2);clip-path:polygon(0 0,calc(var(--s) + var(--k)) 0,calc(var(--s) - var(--k)) 100%,0 100%)}
  .split-b{background:var(--bg);clip-path:polygon(calc(var(--s) + var(--k)) 0,100% 0,100% 100%,calc(var(--s) - var(--k)) 100%)}
  .seam{position:absolute;top:-2%;bottom:-2%;left:var(--s);width:2px;margin-left:-1px;background:var(--red);transform:skewX(-4deg);pointer-events:none;z-index:3}
  .split-copy{position:absolute;top:clamp(48px,5vw,80px);width:min(440px,33%);transition:opacity .5s var(--ease-out);z-index:2}
  .split-a .split-copy{left:max(var(--gutter),calc((100% - var(--maxw)) / 2 + var(--gutter)))} .split-b .split-copy{left:61%}
  .split-media{position:absolute;transition:transform .9s var(--ease-out),opacity .5s}
  .split-a .split-media{left:-2%;bottom:-6%;width:min(700px,47%)} .split-b .split-media{left:64%;bottom:-31%;width:clamp(230px,19vw,290px)}   /* -31%: the phone (and its 26px hover lift) stays clear of the half's link at every width */
  .split-stage[data-hot="a"] .split-b .split-copy,.split-stage[data-hot="b"] .split-a .split-copy{opacity:.45}
  .split-stage[data-hot="a"] .split-a .split-media,.split-stage[data-hot="b"] .split-b .split-media{transform:translateY(-26px)}
  .split-stage[data-hot="a"] .split-b .split-media,.split-stage[data-hot="b"] .split-a .split-media{transform:scale(.98);opacity:.7}
  .split-link{display:none}
  /* .split--text: two text halves (optional small crop under the copy), auto height, same seam */
  .split--text .split-stage{--k:clamp(12px,1.1vw,18px);height:auto;display:grid;grid-template-columns:1fr 1fr;background:var(--bg)}
  .split--text .split-stage::before{content:"";position:absolute;inset:0;background:var(--bg-2);clip-path:polygon(0 0,calc(var(--s) + var(--k)) 0,calc(var(--s) - var(--k)) 100%,0 100%)}
  .split--text .split-half{position:relative;inset:auto;clip-path:none;background:none;padding:clamp(64px,6vw,104px) 0}
  .split--text .split-a{padding-left:max(var(--gutter),calc((100vw - var(--maxw)) / 2 + var(--gutter)));padding-right:clamp(48px,6vw,104px)}
  .split--text .split-b{padding-left:clamp(56px,6.5vw,112px);padding-right:max(var(--gutter),calc((100vw - var(--maxw)) / 2 + var(--gutter)))}
  .split--text .split-copy{position:relative;top:auto;left:auto!important;width:auto;max-width:460px}
  .split--text .split-media{position:relative;left:auto!important;bottom:auto!important;width:min(100%,380px);margin-top:32px}
}
.split-go::after{content:"";position:absolute;inset:0;z-index:4}   /* the whole half is clickable */
.split-half:hover .split-go>span,.split-half:focus-within .split-go>span{background-size:100% 1.5px;background-position:0 100%}
@media (max-width:1023px){
  .split-stage{display:flex;flex-direction:column} .split-a{order:0} .split-link{order:1} .split-b{order:2}   /* the thread sits between the two halves */
  .split-half{position:relative;padding:40px var(--gutter)} .split-a{background:var(--bg-2)} .split-media{margin-top:28px} .seam{display:none}
  .split-a .split-media .plate{margin-left:calc(var(--gutter) * -1)}
  .split-b .split-media .dev.phone{width:min(62vw,280px)}
  .split-link{position:relative;height:110px;margin:0 var(--gutter)}
  .split-link::before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:linear-gradient(var(--red),var(--red)) 0 0/100% var(--fill,0%) no-repeat,var(--line-2);transition:background-size 1.1s var(--ease-io) .3s}
  .split-link.in::before{--fill:100%}
  .sl-dot{position:absolute;left:1px;top:8px;width:10px;height:10px;border-radius:50%;background:var(--red);opacity:0;transition:transform 1.1s var(--ease-io) .3s,opacity .3s .3s}
  .split-link.in .sl-dot{opacity:1;transform:translateY(84px)}
  .sl-label{position:absolute;left:30px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--text-2);padding-right:8px}
}

/* =========================================================
   13. FILM "Una settimana con Hypervex"
   ========================================================= */
.film{position:relative;padding-top:var(--sec-y)}
.film-head{margin-bottom:clamp(8px,2vw,24px)}
.film-head .lead{margin-top:20px}
.film-grid{max-width:var(--maxw-wide);margin:0 auto;padding:0 var(--gutter);padding-left:calc(var(--gutter) + (min(100%, var(--maxw-wide)) - min(100%, var(--maxw))) / 2);display:grid;grid-template-columns:minmax(0,4.2fr) minmax(0,7.8fr);gap:clamp(24px,3vw,56px)}   /* beats on the H2's line, the stage to the wide edge */
.beats{padding:6vh 0 22vh}
.beats:focus-visible{outline-offset:8px}
.beat{min-height:calc(var(--vh) * 62);display:flex;flex-direction:column;justify-content:center;transition:opacity .6s var(--ease-out)}
@media (min-width:1024px){ .js .beat{opacity:.22} }
.beat.is-on{opacity:1}
/* without JS: every beat readable, the stage shows its first screens (never an empty frame) */
html:not(.js) .layers .layer:first-child{clip-path:none}
.beat-day{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500;color:var(--steel);margin-bottom:16px}
.who{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--steel);flex:none}
.who-a{background:var(--red);border-color:var(--red)} .who-b{border-color:var(--red);background:linear-gradient(90deg,var(--steel) 50%,var(--red) 50%)}
.beat-h{font-size:clamp(28px,2.55vw,42px);line-height:1.08;letter-spacing:-.035em}
.beat-p{margin-top:16px;font-size:clamp(17px,1.25vw,19px);line-height:1.58;color:var(--text-2);max-width:26em}
.beat-media{display:none;margin:0}
.stage-col{position:relative}
.stage{position:sticky;top:calc(var(--head) + var(--vh) * 4);height:calc(var(--vh) * 100 - var(--head) - var(--vh) * 8);container-type:size;perspective:1900px}
.rail{position:absolute;top:0;left:0;right:0;padding:0 0 14px;display:flex;gap:clamp(14px,2vw,30px);font-size:13px;font-weight:500;color:var(--text-3)}
.rail li{display:flex;align-items:center;gap:8px;transition:color .5s}
.rail li::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;transition:background-color .5s,transform .5s var(--ease-spring)}
.rail li.on{color:var(--text)} .rail li.on::before{background:var(--red);transform:scale(1.35)}
.rail-bar{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line)}
.rail-bar i{position:absolute;inset:0;background:var(--steel);transform-origin:left;transform:scaleX(var(--p,0));transition:transform .9s var(--ease-out)}
.stage-devs{position:absolute;inset:52px 0 26px 0}
.st-laptop{position:absolute;top:2cqh;left:0;width:min(80cqw,96cqh);transition:translate 1.1s var(--ease-out),scale 1.1s var(--ease-out),rotate 1.1s var(--ease-out)}
.st-phone{position:absolute;right:0;bottom:0;width:min(26cqw,29cqh);transform-origin:100% 100%;z-index:3;transition:translate 1.1s var(--ease-out),scale 1.1s var(--ease-out),rotate 1.1s var(--ease-out)}
.stage[data-focus="laptop"] .st-laptop{translate:1cqw 2cqh;scale:1.03}
.stage[data-focus="laptop"] .st-phone{translate:3cqw 3cqh;scale:.8}
.stage[data-focus="laptop"] .st-phone .screen::before{opacity:.5}
.stage[data-focus="phone"] .st-laptop{translate:-2cqw -1cqh;scale:.92;rotate:y 10deg}
.stage[data-focus="phone"] .st-laptop .screen::before{opacity:.62}
.stage[data-focus="phone"] .st-phone{translate:-22cqw -3cqh;scale:1.12}
.layers .layer{position:absolute;inset:0;clip-path:inset(0 0 0 100%);transition:clip-path 1s var(--ease-io)}
.layers .layer.is-before{clip-path:inset(0 100% 0 0)}
.layers .layer.is-active{clip-path:inset(0 0 0 0);z-index:2}
.layers .layer .shot img,.layers .layer .shot video{transform:scale(1.07);transition:transform 1.4s var(--ease-out)}
.layers .layer.is-active .shot img,.layers .layer.is-active .shot video{transform:none}
.laptop .screen.layers{aspect-ratio:3/2}
.stage-loupe{position:absolute;left:0;bottom:4cqh;width:min(36cqw,380px);z-index:6;pointer-events:none;display:grid;align-items:end} /* grid stack: the box gets the height of its items */
.sl-item{grid-area:1/1;position:relative;width:100%;margin:0;border-radius:var(--r-plate);overflow:hidden;background:#0C0C0E;border:1px solid rgba(255,46,62,.6);box-shadow:0 0 0 6px var(--bg),var(--sh-deep);opacity:0;transform-origin:var(--ox,50%) var(--oy,50%);transform:scale(.35);transition:opacity .35s,transform .9s var(--ease-spring)}
.sl-item picture{display:block}
.sl-item.is-on{opacity:1;transform:none;transition-delay:.35s}
.sl-item figcaption{padding:9px 13px 11px;font-size:13.5px;color:var(--text-2);border-top:1px solid var(--line)}
.stage-ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:5;opacity:0;transition:opacity .3s}
.stage-ring.is-on{opacity:1}
.stage-ring rect{fill:none;stroke:var(--red);stroke-width:2}
.stage>.cap{position:absolute;left:0;bottom:0}
.film[data-stage="phone"] .st-phone{right:18%;width:min(30cqw,34cqh)}
.film[data-stage="phone"] .stage-loupe{left:4%;bottom:22cqh;width:min(40cqw,400px)}
.film[data-stage="phone"] .stage[data-focus] .st-phone{translate:none;scale:none}
.film[data-stage="phone"] .stage .st-phone .screen::before{opacity:0}
.film-dots{display:none}
@media (max-width:1023px){
  .film-grid{grid-template-columns:1fr;padding:0} .stage-col{display:none}
  .beats{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:8px var(--gutter) 12px;scroll-padding-inline:var(--gutter);scrollbar-width:none;overscroll-behavior-x:contain}
  .beats::-webkit-scrollbar{display:none}
  .beat{flex:0 0 86%;min-height:0;opacity:1;justify-content:flex-start;scroll-snap-align:center;padding:26px 22px;border:1px solid var(--line);border-radius:var(--r-cell);background:var(--cell)}
  .beat-h{font-size:clamp(24px,6.4vw,30px)}
  .beat-media{display:flex;flex-direction:column;justify-content:flex-start;flex:1 1 auto;margin-top:22px}   /* the image right under its text (cards share the tallest card's height) */
  .beat-media .mini-phone{width:min(50vw,210px)}
  .beat-media .plate{border-radius:14px}
  .film-dots{display:flex;justify-content:center;gap:8px;margin-top:16px}
  .film-dots i{width:6px;height:6px;border-radius:50%;background:var(--line-3);transition:transform .4s var(--ease-spring),background-color .3s}
  .film-dots i.on{background:var(--red);transform:scale(1.4)}
}

/* =========================================================
   14. MARQUEE (max one per page)
   ========================================================= */
.mq-sec{padding-block:var(--sec-y-sm)}
.mq-label{font-size:15px;font-weight:500;color:var(--steel);margin-bottom:18px}
.marquee{display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.mq-track{display:flex;flex:none;animation:mq 58s linear infinite;animation-play-state:paused}
.marquee.is-on .mq-track{animation-play-state:running}
.marquee:hover .mq-track{animation-play-state:paused}
.mq-track li{flex:none;font-weight:600;font-size:clamp(26px,3.2vw,46px);letter-spacing:-.028em;line-height:1.2;white-space:nowrap;padding-right:.9em}
.mq-track li::after{content:"/";margin-left:.9em;color:var(--text-4);font-weight:400}
@keyframes mq{to{transform:translateX(-100%)}}
.mq-sec .tlink{margin-top:24px}
.marquee--codes .mq-track{animation-duration:36s}
.marquee--codes .mq-track li{font-weight:700;font-size:clamp(64px,10vw,160px);line-height:1;letter-spacing:-.03em;color:var(--bg);-webkit-text-stroke:3px var(--steel);paint-order:stroke fill;font-kerning:none;padding-right:.35em}
.marquee--codes .mq-track li::after{content:"";display:inline-block;width:.1em;height:.1em;margin-left:.35em;vertical-align:.32em;border-radius:50%;background:var(--text-4)}   /* a round dot (Geist's "·" is a square at this size) */

/* =========================================================
   15. FEATURE ROW (text + plate with loupe)
   ========================================================= */
.feat{position:relative;padding-block:var(--sec-y)}
.feat-in{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(32px,4vw,72px);align-items:center}
.feat-copy{grid-column:1/6;min-width:0}
.feat-copy>*+*{margin-top:22px}
.feat-copy .tlinks{margin-top:28px}
.feat-media{grid-column:6/13;min-width:0}
.feat[data-side="left"] .feat-copy{grid-column:8/13;order:2}
.feat[data-side="left"] .feat-media{grid-column:1/8;order:1}
.feat[data-side="bleed"]{overflow-x:clip}
.feat[data-side="bleed"] .feat-media{margin-right:calc(-1 * var(--edge))}
.feat[data-side="bleed"] .feat-media .plate{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}
@media (max-width:1023px){
  .feat-in{grid-template-columns:1fr;gap:40px}
  .feat-copy,.feat-media,.feat[data-side="left"] .feat-copy,.feat[data-side="left"] .feat-media{grid-column:1/-1;order:0}
  .feat[data-side="bleed"] .feat-media{margin-right:0}
  .feat[data-side="bleed"] .feat-media .plate{border-radius:var(--r-plate);border-right:1px solid var(--line)}
}

/* =========================================================
   16. HYPERVEX PRO: price block, partner codes, bento
   ========================================================= */
.price{position:relative}
.price-big{display:flex;align-items:flex-start;gap:.06em;font-weight:600;font-size:clamp(88px,11.5vw,184px);line-height:.88;letter-spacing:-.06em;font-variant-numeric:tabular-nums}
.price-big .cur{font-size:.4em;margin-top:.16em;color:var(--steel);letter-spacing:-.02em}
.price-per{font:600 clamp(24px,2.4vw,36px)/1.2 var(--f-head);letter-spacing:-.03em;color:var(--text-2);margin-top:10px}
.price-note,.price-partner{margin-top:14px;font-size:clamp(17px,1.32vw,20px);line-height:1.55;color:var(--text-2);max-width:32em} .price-note b,.price-partner b{color:var(--text);font-weight:600}
.price-note{margin-top:24px}
/* partner codes list (data-codes: rebuilt from HXS.config.partnerCodes) */
.codes{border-top:1px solid var(--line)}
.code-row{display:grid;grid-template-columns:minmax(120px,1.1fr) auto minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:12px 24px;padding:18px 0;border-bottom:1px solid var(--line);transition:transform .45s var(--ease-out)}
.code-n{font-weight:700;font-size:clamp(24px,2.4vw,34px);line-height:1;letter-spacing:-.02em;color:var(--text)}
.code-off{justify-self:start;font-size:14px;font-weight:600;color:var(--steel);padding:6px 11px;border:1px solid var(--line-2);border-radius:var(--r-btn);white-space:nowrap}
.code-y,.code-w{font-size:15px;color:var(--text-2)} .code-y b,.code-w b{display:block;font:600 19px/1.2 var(--f-head);letter-spacing:-.02em;color:var(--text)}
.codes-note{margin-top:16px}
@media (hover:hover) and (pointer:fine){ .code-row:hover{transform:translateX(6px)} }
@media (max-width:719px){
  .code-row{grid-template-columns:1fr auto;gap:12px 16px}
  .code-row .code-off{grid-column:2;grid-row:1;justify-self:end}
  .code-row .code-y{grid-column:1} .code-row .code-w{grid-column:2;text-align:right}
  .code-row .copy{grid-column:1/-1;justify-self:start}
}
/* bento */
.bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;grid-template-areas:"a a a a a b b b b b b b" "a a a a a c c c d d d d" "e e e e e e e f f f f f"}
.bento--two{grid-template-areas:"a a a a a a b b b b b b"}
.cell{position:relative;border-radius:var(--r-cell);background:var(--cell);border:1px solid #16171B;padding:30px;overflow:hidden;display:flex;flex-direction:column;isolation:isolate;min-width:0;transition:transform .55s var(--ease-out),border-color .45s,box-shadow .55s var(--ease-out)}
.cell::after{content:"";position:absolute;inset:-1px;z-index:5;pointer-events:none;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.055) 48%,transparent 60%);transform:translateX(-100%);transition:transform .9s var(--ease-out)}
.cell .body{margin-top:10px}
.cell .tlink{margin-top:18px;align-self:flex-start}
.c-a{grid-area:a}.c-b{grid-area:b}.c-c{grid-area:c}.c-d{grid-area:d}.c-e{grid-area:e}.c-f{grid-area:f}
.cell-img{margin-top:26px;display:flex;justify-content:center;align-items:flex-end;flex:1;min-height:0;perspective:1200px}   /* crops sit on the cell floor: cells side by side line up */
.cell-img picture{display:block;width:100%}
.cell-img img{width:100%;height:auto;border-radius:16px;box-shadow:0 30px 60px -25px rgba(0,0,0,.95);transform:rotateX(9deg) translateY(4px);transform-origin:50% 100%;transition:transform .9s var(--ease-out)}
.c-c,.c-d{justify-content:flex-end;min-height:230px}
.cell-ico{width:34px;height:34px;fill:none;stroke:var(--steel);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;margin-bottom:auto;transition:stroke .4s,transform .6s var(--ease-spring)}
.score{display:flex;align-items:flex-end;gap:5px;height:44px;margin-bottom:auto}
.score i{--k:0;width:7px;border-radius:3px;background:#24262B;height:calc(18% + var(--k) * 8%);transition:background-color .35s calc(var(--k) * 45ms),transform .5s var(--ease-spring) calc(var(--k) * 45ms);transform-origin:bottom}
.score i:nth-child(2){--k:1}.score i:nth-child(3){--k:2}.score i:nth-child(4){--k:3}.score i:nth-child(5){--k:4}.score i:nth-child(6){--k:5}.score i:nth-child(7){--k:6}.score i:nth-child(8){--k:7}.score i:nth-child(9){--k:8}.score i:nth-child(10){--k:9}
.score b{align-self:center;margin-left:8px;font:600 15px var(--f-head);color:var(--text-2)}
.c-d.in .score i:nth-child(-n+8),html:not(.js) .score i:nth-child(-n+8){background:var(--steel)}
@media (hover:hover) and (pointer:fine){
  .cell:hover{transform:translateY(-4px);border-color:#2A2C32;box-shadow:0 40px 70px -40px rgba(0,0,0,.95)} .cell:hover::after{transform:translateX(100%)}
  .cell:hover .cell-img img{transform:rotateX(0) translateY(-4px)} .cell:hover .cell-ico{stroke:var(--red);transform:translateY(-3px) rotate(-4deg)}
  .c-d:hover .score i:nth-child(-n+8){background:var(--red);transform:scaleY(1.08)}
}
@media (max-width:1023px){ .bento{grid-template-columns:repeat(6,minmax(0,1fr));grid-template-areas:"a a a b b b" "a a a b b b" "c c c d d d" "e e e e e e" "f f f f f f"} .bento--two{grid-template-areas:"a a a b b b"} }
@media (max-width:719px){ .bento,.bento--two{grid-template-columns:1fr;grid-template-areas:"a" "b" "c" "d" "e" "f"} .bento--two{grid-template-areas:"a" "b"} .cell{padding:24px} .c-c,.c-d{min-height:200px} }

/* =========================================================
   17. COACH: band picker, bars, timeline, bands table
   ========================================================= */
.band{position:relative}
.band-q{display:block;font-weight:500;font-size:16px;color:var(--text)}
.band-out{display:flex;align-items:flex-end;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;margin:14px 0}
.band-n{display:flex;align-items:baseline;gap:10px;color:var(--text-2);font-size:16px}
.band-n b{font:600 clamp(52px,5vw,76px)/.9 var(--f-head);letter-spacing:-.045em;color:var(--text);min-width:1.6ch;font-variant-numeric:tabular-nums}
.band-res{display:flex;flex-direction:column;align-items:flex-end;text-align:right;gap:3px}
.band-name{font:600 24px/1.2 var(--f-head);letter-spacing:-.03em;color:var(--text-2)} .band-name b{color:var(--text);font-weight:600;display:inline-block}
.band-name b.swap{animation:swap .55s var(--ease-out)}
@keyframes swap{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.band-price{font-size:17px;color:var(--text)} .band-price b{font-weight:600;font-variant-numeric:tabular-nums} .band-per{font-size:14px;color:var(--text-3)}
.band-bars{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;align-items:end;height:220px;margin:22px 0 6px}
.bb{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;height:100%;text-align:left;border-radius:8px;transition:transform .4s var(--ease-out)}
.bb-p{font:600 clamp(16px,1.5vw,22px)/1 var(--f-head);color:var(--text-2);margin-bottom:8px;transition:color .3s;white-space:nowrap}
.bb-bar{display:block;height:calc(var(--h) * 150px);border-radius:6px 6px 2px 2px;background:var(--line-3);transform-origin:bottom;transition:background-color .35s,transform .45s var(--ease-spring)}
.bb-r{margin-top:8px;font-size:13px;font-weight:600;color:var(--text-2);white-space:nowrap} .bb-a{font-size:12px;line-height:1.3;color:var(--text-3)}
.bb.is-on .bb-bar{background:var(--red);transform:scaleY(1.04)} .bb.is-on .bb-p,.bb.is-on .bb-r{color:var(--text)}
.js .band-bars:not(.in) .bb-bar{transform:scaleY(0)} .band-bars.in .bb-bar{transition-delay:calc(var(--i,0) * 90ms)}
@media (hover:hover) and (pointer:fine){ .bb:hover{transform:translateY(-4px)} .bb:hover .bb-p,.bb:hover .bb-r{color:var(--text)} }
.band-range{-webkit-appearance:none;appearance:none;width:100%;height:30px;background:transparent;margin:6px 0 0;cursor:pointer}
.band-range::-webkit-slider-runnable-track{height:4px;border-radius:99px;background:linear-gradient(90deg,var(--red) var(--fill,30%),#24262B var(--fill,30%))}
.band-range::-moz-range-track{height:4px;border-radius:99px;background:linear-gradient(90deg,var(--red) var(--fill,30%),#24262B var(--fill,30%))}
.band-range::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:-10px;border-radius:50%;background:#fff;border:0;box-shadow:0 0 0 6px var(--red-a28),0 4px 12px rgba(0,0,0,.5);transition:transform .35s var(--ease-spring),box-shadow .35s}
.band-range::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#fff;border:0;box-shadow:0 0 0 6px var(--red-a28)}
.band-range:hover::-webkit-slider-thumb{transform:scale(1.12)}
.band-range:focus-visible{outline:none} .band-range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px #fff,0 0 0 8px rgba(255,46,62,.35)}
.band-hint{margin-top:14px;font-size:15px;color:var(--text-2)} .band-hint b{color:var(--text)}
.band--sm .band-bars{height:160px} .band--sm .bb-bar{height:calc(var(--h) * 100px)} .band--sm .band-n b{font-size:clamp(44px,4vw,60px)}
.timeline{position:relative;margin:clamp(56px,6vw,84px) 0 0;padding:34px 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px}
.timeline li{position:relative;padding-right:10px}
.timeline li::before{content:"";position:absolute;top:-39px;left:0;width:11px;height:11px;border-radius:50%;background:var(--bg);border:1.5px solid #3A3D44;transition:background-color .4s,border-color .4s,transform .5s var(--ease-spring)}
.timeline.in li::before,html:not(.js) .timeline li::before{background:var(--red);border-color:var(--red)}
.timeline li:nth-child(1)::before{transition-delay:.2s} .timeline li:nth-child(2)::before{transition-delay:.55s} .timeline li:nth-child(3)::before{transition-delay:.9s} .timeline li:nth-child(4)::before{transition-delay:1.25s}
.timeline b{display:block;font:600 18px/1.2 var(--f-head);letter-spacing:-.02em;margin-bottom:8px} .timeline span{display:block;font-size:15.5px;line-height:1.55;color:var(--text-2)}
.tl-line{position:absolute;top:0;left:5px;right:0;height:1px;background:var(--line-2)}
.tl-line i{position:absolute;inset:0;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform 1.5s var(--ease-draw) .15s}
.timeline.in .tl-line i,html:not(.js) .tl-line i{transform:scaleX(1)}
/* bands table (/prezzi-coach) and the mini variant (referral credits) */
.bands{border-top:1px solid var(--line)}
.bands-row{position:relative;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.1fr) minmax(0,1.15fr);align-items:baseline;gap:8px 20px;padding:22px 0 22px 20px;border-bottom:1px solid var(--line);color:var(--text-2);font-size:15px;transition:transform .45s var(--ease-out),color .3s}
.bands-row::before{content:"";position:absolute;left:0;top:16px;bottom:16px;width:2px;border-radius:2px;background:var(--red);transform:scaleY(0);transition:transform .45s var(--ease-out)}
.bands-name{font:600 20px/1.2 var(--f-head);letter-spacing:-.02em;color:var(--text)}
.bands-price b{font:600 26px/1 var(--f-head);letter-spacing:-.03em;color:var(--text);font-variant-numeric:tabular-nums}
.bands-row.is-on{color:var(--text)} .bands-row.is-on::before{transform:scaleY(1)}
@media (hover:hover) and (pointer:fine){ .bands-row:hover{transform:translateX(8px);color:var(--text)} .bands-row:hover::before{transform:scaleY(1)} }
.bands--mini .bands-row{grid-template-columns:minmax(0,1fr) auto;padding-block:16px}
.bands--mini .bands-row b{font:600 20px var(--f-head);color:var(--text)}
@media (max-width:719px){
  .timeline{grid-template-columns:1fr;row-gap:30px;padding:0 0 0 34px}
  .timeline li::before{top:5px;left:-34px} .tl-line{top:6px;bottom:6px;left:5px;right:auto;width:1px;height:auto}
  .tl-line i{transform:scaleY(0);transform-origin:top} .timeline.in .tl-line i{transform:scaleY(1)}
  .band-res{align-items:flex-start;text-align:left} .band-bars{height:180px;gap:6px} .bb-bar{height:calc(var(--h) * 110px)}
  .bb-p{font-size:15px} .bb-a{font-size:11px}
}
@media (max-width:899px){   /* six columns do not fit a tablet: each band becomes a 2x3 mini-grid */
  .bands-row{grid-template-columns:1fr 1fr;padding-left:18px;row-gap:6px}
  .bands-name,.bands-price{grid-row:1} .bands-price{text-align:right}
}

/* =========================================================
   18. PARTNER: jerseys + podium
   ========================================================= */
.jerseys{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.jersey{position:relative;display:flex;flex-direction:column;background:var(--cell);border-radius:var(--r-cell);overflow:hidden;min-width:0;container-type:inline-size;transition:transform .6s var(--ease-out)}
.jersey-ph{position:relative;margin:0;aspect-ratio:4/4.6;overflow:hidden}
.jersey-ph picture{display:block;width:100%;height:100%}
.jersey-ph img{width:100%;height:100%;object-fit:cover;object-position:50% 18%;filter:grayscale(1) contrast(1.1) brightness(.85);transition:filter .7s var(--ease-out),transform 1s var(--ease-out)}
.jersey-ph::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--cell) 2%,rgba(10,10,12,0) 46%),radial-gradient(360px circle at var(--gx,50%) var(--gy,30%),rgba(255,255,255,.12),transparent 45%);transition:opacity .45s}
.jersey-code{position:relative;z-index:2;margin:-.64em 0 0;padding:0 22px;font-weight:700;font-size:clamp(40px,calc((100cqw - 44px) / 4.5),112px);line-height:.9;letter-spacing:-.03em;white-space:nowrap}   /* sized by the card: the whole code always fits */
.jc-o{display:block;color:var(--cell);-webkit-text-stroke:3px var(--steel);paint-order:stroke fill;font-kerning:none}
.jc-f{font-kerning:none}
.jc-f{position:absolute;left:22px;top:0;color:var(--red);clip-path:inset(0 100% 0 0);transition:clip-path .7s var(--ease-io)}
.jersey[data-o="right"] .jc-f{clip-path:inset(0 0 0 100%)}
.jersey-info{padding:14px 22px 24px;display:flex;flex-direction:column;gap:6px;flex:1}
.jersey-act{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:auto;padding-top:14px}   /* at the bottom: two cards side by side line up their buttons */
.copy{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 18px 0 14px;border-radius:var(--r-btn);border:1px solid rgba(255,255,255,.2);font-weight:600;font-size:14.5px;white-space:nowrap;transition:transform .4s var(--ease-out),background-color .35s,border-color .35s}
.copy b{color:var(--red);font-weight:700;letter-spacing:.02em;transition:color .3s}
.copy::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.2) 48%,transparent 66%);transform:translateX(-130%);transition:transform .75s var(--ease-out)}
.copy svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.copy .ck{stroke-dasharray:16;stroke-dashoffset:16;opacity:0}
.copy.copied{background:var(--red);border-color:var(--red)} .copy.copied b{color:#fff}
.copy.copied rect,.copy.copied path:not(.ck){opacity:0} .copy.copied .ck{opacity:1;stroke-dashoffset:0;transition:stroke-dashoffset .45s var(--ease-out) .05s}
.copy:active{transform:scale(.98)}
.ig{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.2);flex:none;transition:transform .4s var(--ease-spring),border-color .35s}
.ig svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
@media (hover:hover) and (pointer:fine){
  .jersey:hover{transform:translateY(-6px)} .jersey:hover .jersey-ph img{filter:grayscale(0) contrast(1.04) brightness(.95);transform:scale(1.045)}
  .jersey:hover .jc-f{clip-path:inset(0 0 0 0)}
  .copy:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.45)} .copy:hover::after{transform:translateX(130%)}
  .ig:hover{transform:translateY(-2px) rotate(-6deg);border-color:rgba(255,255,255,.5)}
}
@media (hover:none){ .jersey.in .jc-f{clip-path:inset(0 0 0 0);transition-delay:.4s} }   /* touch: fill once on reveal */
@media (max-width:719px){ .jerseys{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter) 6px;scroll-padding-inline:var(--gutter);scrollbar-width:none} .jerseys::-webkit-scrollbar{display:none} .jersey{flex:0 0 80%;scroll-snap-align:center} }
.podium{display:flex;align-items:flex-end;gap:6px;height:250px;padding-top:32px;max-width:640px}
.podium li{flex:1;height:calc(var(--h) * 100%);display:flex;align-items:flex-end;justify-content:center;padding-bottom:12px;border-radius:4px 4px 0 0;transform-origin:bottom;transition:transform .45s var(--ease-spring)}
.js .podium:not(.in) li{transform:scaleY(0)} .podium.in li{transition-delay:calc(var(--i) * 90ms)}
.podium span{font:700 12px/1 var(--f-body);writing-mode:vertical-rl;transform:rotate(180deg);letter-spacing:.02em}
.m-bronze{background:linear-gradient(180deg,#3c3c3a,#1d1d1c);color:var(--text-2)} .m-silver{background:linear-gradient(180deg,#6f6f6c,#333332)}
.m-gold{background:linear-gradient(180deg,#a9a9a4,#5a5a57);color:#0A0A0A} .m-plat{background:linear-gradient(180deg,#d6d6d0,#8a8a85);color:#0A0A0A}
.m-dia{background:linear-gradient(115deg,#fff 0%,#d9d9d3 35%,#f6f6f3 55%,#b9b9b4 100%) 0 0/220% 100%;color:#0A0A0A;animation:metal 6s var(--ease-io) infinite}
@keyframes metal{0%,60%{background-position:100% 0}100%{background-position:0 0}}
@media (hover:hover) and (pointer:fine){ .podium.in li:hover{transform:translateY(-8px);transition-delay:0s} }

/* =========================================================
   19. FOUNDER
   ========================================================= */
.founder{position:relative;padding-block:var(--sec-y)}
.founder-in{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,6vw,112px);align-items:center}
.founder-photo{margin:0;max-width:520px}
.fp-in{position:relative;aspect-ratio:4/5;border-radius:var(--r-cell);overflow:hidden;background:var(--cell)}
.fp-in picture{display:block;width:100%;height:100%}
.fp-in img{width:100%;height:100%;object-fit:cover;object-position:50% 20%;filter:saturate(.82);transform:scale(1.06);transition:filter .7s var(--ease-out),scale 1s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .founder-photo:hover .fp-in img{filter:saturate(1);scale:1.035} }
@supports (animation-timeline: view()){
  html.js:not(.is-calm):not(.is-shot) .fp-in img{animation:fp-par linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
}
@keyframes fp-par{from{translate:0 -4%}to{translate:0 4%}}
.founder-h{color:var(--steel);font-weight:500;font-family:var(--f-body);font-size:16px;letter-spacing:0}
.quote{margin-top:18px;font-weight:500;font-size:clamp(28px,3.1vw,48px);line-height:1.16;letter-spacing:-.03em;color:var(--text);text-wrap:balance}
.sign{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin-top:34px}
.sign-n{font:600 19px/1.2 var(--f-head);letter-spacing:-.02em}
.sign-r{font-size:15px;color:var(--text-2)}
.sign .tlink{flex-basis:100%;width:fit-content;margin-top:6px}
@media (max-width:1023px){ .founder-in{grid-template-columns:1fr} .founder-photo{max-width:420px} }
@media (max-width:719px){ .founder-photo{max-width:none} }

/* =========================================================
   20. INSTALL (finale + /install) + open-in-browser helper
   ========================================================= */
.install{position:relative;padding-block:var(--sec-y)}
.install-head{max-width:820px;margin-bottom:clamp(40px,5vw,72px)}
.install-head .lead{margin-top:20px}
.install-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.78fr) minmax(0,1fr);gap:clamp(28px,4vw,72px);align-items:start}
.os-col{display:flex;flex-direction:column;gap:30px;min-width:0}
.os-col .btn-os{align-self:flex-start}
.install-phone{position:relative}
.install-phone .dev.phone{width:min(100%,300px);margin:0 auto}
.install-phone .light{inset:-10% -30%}
.steps{position:relative;display:flex;flex-direction:column;gap:18px}
.steps::before{content:"";position:absolute;left:33px;top:34px;bottom:34px;width:2px;background:var(--red);transform:scaleY(0);transform-origin:top;transition:transform .9s var(--ease-draw) .3s}
.in .steps::before,.steps.in::before,html:not(.js) .steps::before{transform:scaleY(1)}
.steps li{position:relative;display:grid;grid-template-columns:68px 1fr;grid-template-rows:auto 1fr;column-gap:16px;row-gap:2px;align-items:start}
.st-vis{grid-row:span 2;position:relative;z-index:1;display:grid;place-items:center;width:68px;height:68px;padding:0 5px;border-radius:var(--r-sm);background:#111114;box-shadow:inset 0 0 0 1px var(--line-2);font:600 11px/1.15 var(--f-body);text-align:center;color:var(--text);overflow-wrap:normal;transition:transform .45s var(--ease-spring)}
.st-vis svg{width:30px;height:30px;fill:none;stroke:var(--text);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.st-icon picture{display:block}
.st-icon img{width:44px;height:44px;border-radius:11px}
.st-pill{font-size:10.5px}
.st-url{font-size:10.5px;letter-spacing:-.01em}
.steps b{font:600 17px/1.25 var(--f-head);letter-spacing:-.015em;padding-top:6px} .steps li>span:last-child{font-size:15px;line-height:1.5;color:var(--text-2)}
@media (hover:hover) and (pointer:fine){ .steps li:hover .st-vis{transform:translateY(-4px) scale(1.04)} }
.btn-os{height:66px;padding:0 30px 0 24px;font-size:18px;border:1px solid var(--line-2);background:var(--cell);color:#fff}
.btn-os .ico-os{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.btn-os.is-mine{background:var(--red);border-color:var(--red)}
.btn-os[aria-pressed="true"]{background:#F5F5F7;color:#030304;border-color:#F5F5F7}   /* /install toggles: selected = white, never red */
@media (hover:hover) and (pointer:fine){ .btn-os:hover{border-color:#4A4E56} .btn-os.is-mine:hover{background:var(--red-hi);box-shadow:var(--glow-red)} .btn-os[aria-pressed="true"]:hover{background:#fff;border-color:#fff} }
.paths{margin-top:clamp(56px,6vw,96px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px clamp(24px,3vw,48px);border-top:1px solid var(--line);padding-top:36px}
.paths p{font-size:16px;line-height:1.55;color:var(--text-2)}
.paths p>b{display:block;margin-bottom:6px;font:600 19px/1.25 var(--f-head);letter-spacing:-.02em;color:var(--text)}
.paths .btn{display:flex;width:fit-content;margin-top:16px}
/* /install page variant */
.install--page{padding-top:calc(var(--head) + clamp(40px,7vh,88px))}
.install-in{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,5vw,96px);align-items:center}
.os-toggle{display:flex;flex-wrap:wrap;gap:10px;margin:32px 0 30px}
.os-toggle .btn-os{height:56px;font-size:16px;padding:0 22px 0 18px}
@media (max-width:719px){ .os-toggle{flex-wrap:nowrap} .os-toggle .btn-os{flex:1 1 0;min-width:0;padding:0 12px;gap:8px;font-size:15px} }
.install--page .steps+.small{margin-top:22px;max-width:34em}
.install--page .cta-row{margin-top:30px}
/* the chosen phone only, already before widgets.js sets [hidden] (no jump on load); without JS both paths stay visible */
.js [data-os-pick]:has(.os-toggle [data-os="ios"][aria-pressed="true"]) :is([data-for="android"],[data-os-only="android"]),
.js [data-os-pick]:has(.os-toggle [data-os="android"][aria-pressed="true"]) :is([data-for="ios"],[data-os-only="ios"]){display:none}
@media (max-width:1023px){
  .install-grid,.install-in{grid-template-columns:1fr;gap:44px}
  .install--finale .install-phone{order:-2} .os-col.is-first{order:-1}   /* /install keeps its steps first */
  .install-phone .dev.phone{width:min(62vw,280px)}
  .paths{grid-template-columns:1fr}
}
/* open-in-browser helper (data-inapp): only visible inside Instagram, Facebook, TikTok */
.inapp{display:none}
.inapp.is-on{display:flex;flex-direction:column;gap:12px;margin:0 0 28px;padding:18px 20px;border-radius:var(--r-plate);background:var(--cell);border:1px solid var(--line-2);max-width:560px}
.inapp-t{font-size:15.5px;line-height:1.5;color:var(--text-2)} .inapp-t b{color:var(--text)}
.inapp-how{font-size:15px;color:var(--text)}
.inapp-how kbd{display:inline-grid;place-items:center;min-width:26px;height:24px;padding:0 6px;border-radius:7px;border:1px solid var(--line-3);font:600 14px var(--f-body);color:var(--text)}
.inapp-act{display:flex;flex-wrap:wrap;gap:10px}
.inapp-act .btn{height:46px;padding:0 20px;font-size:15px}

/* =========================================================
   21. SHORT LISTS: seq, goals, soon, features, free, points, reasons
   ========================================================= */
.seq{counter-reset:sq;display:grid;gap:22px;max-width:640px}
.seq li{position:relative;display:grid;grid-template-columns:28px 1fr;column-gap:16px;counter-increment:sq}
.seq li::before{content:counter(sq);grid-row:span 2;width:28px;height:28px;border-radius:50%;border:1px solid var(--line-3);display:grid;place-items:center;font:600 13px/1 var(--f-head);color:var(--steel);transition:background-color .4s,border-color .4s,color .4s}
.seq.in li::before,.in .seq li::before,html:not(.js) .seq li::before{background:var(--red);border-color:var(--red);color:#fff}
.seq li:nth-child(1)::before{transition-delay:.15s} .seq li:nth-child(2)::before{transition-delay:.45s} .seq li:nth-child(3)::before{transition-delay:.75s} .seq li:nth-child(4)::before{transition-delay:1.05s}
.seq b{font:600 18px/1.3 var(--f-head);letter-spacing:-.015em;padding-top:2px} .seq li>span{font-size:16px;line-height:1.55;color:var(--text-2)}
.seq .copy{margin-top:10px;margin-right:6px}
.seq .copy b{font:inherit;font-weight:700;letter-spacing:.02em;padding-top:0}   /* the code inside the button keeps the button's size */
.goals{font-weight:700;font-size:clamp(40px,6vw,92px);line-height:1.06;letter-spacing:-.04em}
.goals li{display:inline;color:var(--text-4);transition:color .7s var(--ease-out) calc(var(--i) * 140ms + .2s)}
.goals.in li,html:not(.js) .goals li{color:var(--text)} .goals li:not(:last-child)::after{content:" / ";color:var(--text-4);font-weight:400}
.soon{display:flex;align-items:center;gap:10px;margin-top:22px;font-size:15px;color:var(--text-2)}
.soon i{width:8px;height:8px;border-radius:50%;background:var(--steel);flex:none}
.features-list,.free-list{columns:2;column-gap:clamp(32px,5vw,88px)}
.features-list li,.free-list li{break-inside:avoid;position:relative;padding:14px 0 14px 26px;border-top:1px solid var(--line);font-size:17px;line-height:1.5;color:#D3D6DA}
.features-list li::before,.free-list li::before{content:"";position:absolute;left:0;top:26px;width:12px;height:1.5px;background:var(--steel)}
.points{border-bottom:1px solid var(--line)}
.points li{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:10px clamp(24px,4vw,64px);padding:28px 0;border-top:1px solid var(--line)}
.points b{font:600 clamp(20px,1.8vw,26px)/1.2 var(--f-head);letter-spacing:-.02em}
.points span{font-size:17px;line-height:1.6;color:var(--text-2)}
.reasons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line)}
.reasons li{display:flex;flex-direction:column;gap:16px;padding:30px clamp(20px,3vw,40px) 30px 0;font:600 clamp(19px,1.6vw,23px)/1.3 var(--f-head);letter-spacing:-.02em}
.reasons li+li{padding-left:clamp(20px,3vw,40px);border-left:1px solid var(--line)}
.reasons svg{width:30px;height:30px;fill:none;stroke:var(--steel);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:stroke .4s,transform .6s var(--ease-spring)}
@media (hover:hover) and (pointer:fine){ .reasons li:hover svg{stroke:var(--red);transform:translateY(-3px)} }
@media (max-width:719px){
  .features-list,.free-list{columns:1}
  .points li{grid-template-columns:1fr}
  .reasons{grid-template-columns:1fr} .reasons li,.reasons li+li{padding:24px 0;border-left:0} .reasons li+li{border-top:1px solid var(--line)}
}

/* =========================================================
   22. FAQ accordion
   ========================================================= */
.faq+.faq{margin-top:clamp(48px,5vw,72px)}
.faq-h{margin-bottom:10px;scroll-margin-top:calc(var(--head) + 24px)}
.qa{border-bottom:1px solid var(--line)}
.qa summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 0;font:600 19px/1.3 var(--f-head);letter-spacing:-.015em;color:#DADCE0;transition:color .3s}
.qa summary::-webkit-details-marker{display:none}
.qa summary:focus-visible{outline-offset:2px}
.qa-ico{position:relative;flex:none;width:30px;height:30px;border-radius:50%;box-shadow:inset 0 0 0 1px transparent;transition:transform .4s var(--ease-spring),box-shadow .3s}
.qa-ico::before,.qa-ico::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:1.5px;margin:-.75px 0 0 -7px;background:var(--text)}
.qa-ico::after{transform:rotate(90deg)}
.qa[open] .qa-ico{transform:rotate(45deg)}
.qa summary:hover{color:#fff} .qa summary:hover .qa-ico{box-shadow:inset 0 0 0 1px var(--line-3)}
.qa-a{padding:0 0 24px;max-width:68ch}
.qa-a.prose{font-size:17px}
.qa[open] .qa-a{animation:qa .35s var(--ease-out)}
@keyframes qa{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* =========================================================
   23. ENDLINE: the end-of-page CTA (no container, no glow)
   ========================================================= */
.endline{padding-block:clamp(96px,11vw,176px) clamp(88px,10vw,150px);border-top:1px solid var(--line)}
.endline-t{font-weight:600;font-size:clamp(40px,6.4vw,104px);line-height:.98;letter-spacing:-.045em;max-width:15ch;text-wrap:balance}
.endline-cta{display:flex;flex-wrap:wrap;align-items:center;gap:18px 34px;margin-top:52px}
.endline-alt{font-size:16px;color:var(--text-2)}
@media (max-width:719px){ .endline-cta .btn{width:100%} }

/* =========================================================
   24. DOC LAYOUT (faq, guides, legal) + prose + article + guide list
   ========================================================= */
.doc{padding-bottom:var(--sec-y)}
@media (min-width:1024px){
  .doc{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:0 clamp(24px,3vw,48px)}
  .doc-rail{grid-column:1/4} .doc-body{grid-column:4/11;min-width:0}
  .toc{position:sticky;top:calc(var(--head) + 32px)}
}
@media (max-width:1023px){ .doc-rail{display:none} [data-page="faq"] .doc-rail{display:block;margin-bottom:36px} [data-page="faq"] .toc-h{display:none} [data-page="faq"] .toc ol{display:flex;flex-wrap:wrap;gap:8px} [data-page="faq"] .toc a{padding:9px 16px;border:1px solid var(--line-2);border-radius:var(--r-btn)} [data-page="faq"] .toc a::before{display:none} }
.toc-h{font-size:13px;font-weight:600;color:var(--text-3);margin-bottom:12px}
.toc a{position:relative;display:block;padding:6px 0 6px 16px;font-size:15px;line-height:1.4;color:var(--text-2);transition:color .3s,transform .35s var(--ease-out)}
.toc a::before{content:"";position:absolute;left:0;top:50%;width:2px;height:0;background:var(--red);transform:translateY(-50%);transition:height .35s var(--ease-out)}
.toc a:hover{color:var(--text);transform:translateX(3px)} .toc a.is-active{color:var(--text)} .toc a.is-active::before{height:18px}
.prose{font-size:18px;line-height:1.7;color:#C9CCD1;max-width:68ch}
.prose>:first-child{margin-top:0}
.prose h2{font:600 clamp(26px,2.6vw,36px)/1.15 var(--f-head);letter-spacing:-.03em;color:var(--text);margin:2em 0 .6em;scroll-margin-top:calc(var(--head) + 24px)}
.prose h3{font:600 22px/1.25 var(--f-head);letter-spacing:-.02em;color:var(--text);margin:1.6em 0 .5em}
.prose p+p,.prose p+ul,.prose ul+p,.prose p+ol,.prose ol+p{margin-top:1em}
.prose strong,.prose b{color:var(--text)}
.prose ul li{position:relative;padding-left:22px;margin:.4em 0} .prose ul li::before{content:"";position:absolute;left:0;top:.85em;width:10px;height:1.5px;background:var(--steel)}
.prose ol{counter-reset:po} .prose ol li{position:relative;padding-left:30px;margin:.4em 0;counter-increment:po} .prose ol li::before{content:counter(po) ".";position:absolute;left:0;font:600 16px/1.9 var(--f-head);color:var(--steel)}
.prose a{color:var(--text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:rgba(245,245,247,.4);transition:text-decoration-color .3s,text-decoration-thickness .3s}
.prose a:hover{text-decoration-color:var(--red);text-decoration-thickness:2px}
.prose blockquote{margin:1.6em 0;padding-left:22px;border-left:2px solid var(--red);font:500 24px/1.35 var(--f-head);letter-spacing:-.02em;color:var(--text)}
.prose figure{margin:2em 0}
.prose section+section{margin-top:.5em}
.article-head{padding-top:calc(var(--head) + clamp(48px,9vh,112px));padding-bottom:clamp(32px,4vw,56px)}
.article-head .h1{max-width:18ch;margin-top:22px}
.article-head .lead{margin-top:24px}
.article-meta{margin-top:22px;font-size:14px;color:var(--text-3)}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;font-size:14px;color:var(--text-3)}
.crumbs a{color:var(--text-2);transition:color .3s} .crumbs a:hover{color:var(--text)}
.article-fig{margin:0 0 clamp(48px,6vw,88px)}
.guide-list{border-top:1px solid var(--line)}
.guide-row{position:relative;display:grid;grid-template-columns:minmax(150px,200px) minmax(0,1fr) auto;align-items:baseline;gap:8px clamp(20px,3vw,48px);padding:30px 56px 30px 0;border-bottom:1px solid var(--line);transition:transform .45s var(--ease-out)}
.gr-tag{font-size:14px;font-weight:500;color:var(--steel)}
.gr-t{font:600 clamp(22px,2vw,30px)/1.15 var(--f-head);letter-spacing:-.025em;color:var(--text)}
.gr-t{background:linear-gradient(currentColor,currentColor) 100% 100%/0% 1.5px no-repeat;padding-bottom:2px;transition:background-size .5s var(--ease-out)}
.gr-x{grid-column:2;font-size:16px;line-height:1.55;color:var(--text-2);max-width:40em}
.gr-meta{grid-column:3;grid-row:1;font-size:13px;color:var(--text-3);white-space:nowrap}
.guide-row::after{content:"";position:absolute;right:4px;top:50%;width:22px;height:22px;margin-top:-11px;background:var(--red);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10h11M11 5l5 5-5 5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10h11M11 5l5 5-5 5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;opacity:0;transform:translateX(-10px);transition:opacity .35s,transform .45s var(--ease-out)}
.guide-row:hover{transform:translateX(8px)} .guide-row:hover .gr-t{background-size:100% 1.5px;background-position:0 100%} .guide-row:hover::after{opacity:1;transform:none}
.related{padding-block:var(--sec-y-sm);border-top:1px solid var(--line)}
.related-h{font:600 15px var(--f-body);color:var(--steel);margin-bottom:16px}
@media (max-width:959px){   /* tag above the title: the title and summary get the full width */
  .guide-row{grid-template-columns:1fr;padding-right:36px}
  .gr-x,.gr-meta{grid-column:1;grid-row:auto}
}
@media (max-width:719px){ .prose{font-size:17px} }

/* =========================================================
   25. AUTH CARDS (signup, login; injected by js/account.js)
   Layout (.au-page, .au-grid, .au-aside) lives in css/pages/auth.css.
   ========================================================= */
main>.auth-wrap{max-width:calc(480px + 2 * var(--gutter));padding:calc(var(--head) + clamp(32px,6vh,64px)) var(--gutter) clamp(72px,9vw,120px)}
.auth-wrap{position:relative;width:100%;max-width:480px;margin:0 auto}
.auth-card{position:relative;background:var(--cell);border:1px solid var(--line-2);border-radius:var(--r-cell);padding:36px}
.auth-card.enter{animation:au-in .6s var(--ease-out) both}
@keyframes au-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.auth-card h1{font:600 clamp(30px,3.2vw,40px)/1.05 var(--f-head);letter-spacing:-.035em;margin-bottom:10px;text-wrap:balance}
.auth-card .k{color:inherit}                 /* neutralises the old red last word */
.auth-card .sub{color:var(--text-2);font-size:16px;line-height:1.55;margin-bottom:26px}
.auth-card .sub b{color:var(--text)}
.eyebrow{display:inline-block;font-size:14px;font-weight:500;color:var(--steel)}
.auth-text{color:var(--text-2);font-size:15px;margin:0 0 14px}
.pill{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:var(--r-btn);background:#111114;border:1px solid var(--line-2);font-size:13.5px;font-weight:500;color:var(--text-2)}
.pill .g{width:8px;height:8px;border-radius:50%;background:var(--steel);flex:none}
.oauth{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
.oauth .btn{min-width:0}
.btn.gg{background:#fff;color:#111;border-color:#fff;gap:10px}
.btn.gg svg{flex:none}
@media (hover:hover) and (pointer:fine){ .btn.gg:hover{background:#fff;box-shadow:0 16px 34px -16px rgba(255,255,255,.45)} }
.btn.gg::after{background:linear-gradient(105deg,transparent 30%,rgba(0,0,0,.08) 48%,transparent 66%)}
.btn.soon{background:transparent;color:var(--text);border-color:var(--line-2);opacity:.6;font-size:15px}
@media (hover:hover) and (pointer:fine){ .btn.soon:hover{opacity:.85;border-color:var(--line-3)} }
.oauth-note{margin:10px 0 0;padding:11px 14px;border-radius:12px;background:#111114;border:1px solid var(--line-2);font-size:14px;color:var(--text-2)}
.oauth-note.pop{animation:au-pop .35s var(--ease-out) both}
@keyframes au-pop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.inapp-note{margin:0 0 12px;padding:11px 14px;border-radius:12px;background:#111114;border:1px solid var(--line-2);font-size:14px;line-height:1.5;color:var(--text-2)}
.inapp-note b{color:var(--text)}
.divider{display:flex;align-items:center;gap:14px;margin:24px 0;font-size:13.5px;color:var(--text-3)}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line-2)}
.field{margin-bottom:18px}
.field label{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:var(--text-2)}
.field input,.field select,.field textarea{width:100%;height:52px;padding:0 16px;border-radius:var(--r-input);background:#0B0B0D;border:1px solid var(--line-2);color:var(--text);font:400 16px var(--f-body);transition:border-color .3s,box-shadow .3s}
.field input::placeholder{color:var(--text-3)}
.field input:hover{border-color:var(--line-3)}
.field input:focus,.field input:focus-visible{outline:none;border-color:var(--steel);box-shadow:0 0 0 3px rgba(255,255,255,.12)}
.field input[type=date]{color-scheme:dark}
.field.otp input{height:64px;font:600 26px var(--f-head);letter-spacing:.3em;text-align:center}
.help{margin-top:7px;font-size:13.5px;line-height:1.45;color:var(--text-3)}
.help.good{color:var(--text)} .help.bad{color:#FF6B76}
.opt{color:var(--text-3);font-weight:400}
.pw{position:relative}
.pw input{padding-right:92px}
.pw-eye{position:absolute;right:7px;top:50%;transform:translateY(-50%);height:38px;padding:0 12px;border-radius:10px;background:#141417;border:1px solid var(--line-2);font-size:13.5px;font-weight:600;color:var(--text-2);transition:color .3s,border-color .3s}
.pw-eye:hover{color:var(--text);border-color:var(--line-3)}
.chk{display:flex;align-items:flex-start;gap:12px;margin:4px 0 18px;font-size:14.5px;line-height:1.5;color:var(--text-2);cursor:pointer}
.chk input{flex:none;width:20px;height:20px;margin:1px 0 0;accent-color:var(--red);cursor:pointer}
.chk a{color:var(--text);text-decoration:underline;text-decoration-color:rgba(245,245,247,.35);text-underline-offset:3px;transition:text-decoration-color .3s}
.chk a:hover{text-decoration-color:var(--red)}
.err-msg{color:#FF6B76;font-size:14px;line-height:1.45;margin-top:6px}
.err-msg:empty{display:none}
.auth-links{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:22px;font-size:14.5px}
.auth-links a{color:var(--text-2);text-decoration:underline;text-decoration-color:rgba(245,245,247,.25);text-underline-offset:3px;transition:color .3s,text-decoration-color .3s}
.auth-links a:hover{color:var(--text);text-decoration-color:var(--red)}
.banner{display:flex;gap:12px;align-items:flex-start}
.auth-alert{margin:0 0 18px;padding:13px 16px;border-radius:12px;background:var(--red-a12);border-left:2px solid var(--red)}
.auth-alert p{font-size:14.5px;line-height:1.5;color:var(--text)}
.bico{flex:none;font-weight:700;color:var(--red)}
.busy{display:flex;flex-direction:column;align-items:center;gap:16px;padding:26px 0;text-align:center;color:var(--text-2)}
.spin{width:34px;height:34px;border-radius:50%;border:3px solid var(--line-2);border-top-color:var(--red);animation:au-spin .8s linear infinite}
@keyframes au-spin{to{transform:rotate(360deg)}}
.done-hint{display:flex;gap:12px;align-items:flex-start;margin-top:16px;padding:14px 16px;border-radius:14px;background:#0B0B0D;border:1px solid var(--line)}
.done-hint b{display:block;color:var(--text);font-size:15px} .done-hint span{color:var(--text-2);font-size:14px}
.done-steps{margin:18px 0 0;display:flex;flex-direction:column;gap:10px;counter-reset:dn}
.done-steps li{position:relative;padding:12px 14px 12px 52px;border-radius:14px;background:#0B0B0D;border:1px solid var(--line);counter-increment:dn;transition:border-color .3s,transform .4s var(--ease-out)}
.done-steps li:hover{border-color:var(--line-2);transform:translateX(3px)}
.done-steps li::before{content:counter(dn);position:absolute;left:14px;top:50%;width:26px;height:26px;margin-top:-13px;border-radius:50%;border:1px solid var(--line-3);display:grid;place-items:center;font:600 13px var(--f-head);color:var(--steel)}
.done-steps b{display:block;color:var(--text);font-size:15px} .done-steps span{color:var(--text-2);font-size:14px}
@media (max-width:719px){ .auth-card{padding:26px 22px} }

/* =========================================================
   26. 404
   ========================================================= */
.nf{min-height:calc(var(--vh) * 100);display:flex;align-items:center;padding:calc(var(--head) + 32px) 0 72px}
.nf-404{position:relative;display:inline-block;font-weight:700;font-size:clamp(120px,22vw,320px);line-height:.9;letter-spacing:-.05em;color:var(--bg);-webkit-text-stroke:3px var(--steel);paint-order:stroke fill;font-kerning:none;margin-bottom:28px}
.nf-thread{position:absolute;left:-2%;top:18%;width:104%;height:70%;overflow:visible;pointer-events:none}
.nf-thread .draw{stroke-width:3;transition-duration:1.4s;transition-delay:.4s}
.nf-dot{position:absolute;left:100.3%;top:58.8%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--red);transform:scale(0);transition:transform .5s var(--ease-spring) 1.7s}
.is-loaded .nf-dot,html:not(.js) .nf-dot{transform:scale(1)}
.nf .lead{margin-top:20px}
.nf-links{display:flex;flex-wrap:wrap;gap:6px 28px;margin:30px 0 40px}

/* =========================================================
   27. DOCK (phones), WHATSAPP (wide desktop), TOAST
   ========================================================= */
.dock{position:fixed;z-index:var(--z-dock);left:0;right:0;bottom:0;display:flex;gap:10px;padding:12px var(--gutter) calc(12px + env(safe-area-inset-bottom));background:rgba(3,3,4,.97);border-top:1px solid var(--line);transform:translateY(110%);visibility:hidden;transition:transform .55s var(--ease-out),visibility 0s .55s}
.dock.is-on{transform:none;visibility:visible;transition:transform .55s var(--ease-out),visibility 0s}
.dock .btn{flex:1}
.dock-wa{flex:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:52px;padding:0 16px;border-radius:var(--r-btn);border:1px solid var(--line-2);font-weight:600;transition:transform .35s var(--ease-out),border-color .3s}
.dock-wa:active{transform:scale(.97)}
.dock-wa svg,.wa svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round}
.wa{position:fixed;right:max(18px,calc((100vw - var(--maxw)) / 2 - 58px));bottom:22px;z-index:var(--z-wa);width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--frame);border:1px solid #2A2C31;color:#E8E9EC;opacity:0;visibility:hidden;transform:translateY(16px) scale(.9);transition:opacity .5s var(--ease-out),transform .6s var(--ease-out),border-color .3s,visibility 0s .6s}
.wa.is-on{opacity:1;visibility:visible;transform:none;transition:opacity .5s var(--ease-out),transform .6s var(--ease-out),border-color .3s,visibility 0s}
.wa-tip{position:absolute;right:62px;top:50%;white-space:nowrap;font-size:13.5px;font-weight:600;background:#fff;color:#000;padding:8px 12px;border-radius:999px;opacity:0;transform:translate(8px,-50%);pointer-events:none;transition:opacity .3s,transform .4s var(--ease-out)}
.wa.is-on:hover{transform:translateY(-3px);border-color:#4A4E56} .wa:hover .wa-tip,.wa:focus-visible .wa-tip{opacity:1;transform:translate(0,-50%)}
@media (min-width:960px){ .dock{display:none} }
/* the circle lives in the right gutter only: below 1380px there is no room outside the content, so no circle */
@media (max-width:1379px){ .wa{display:none} }
body.nav-locked .dock,body.nav-locked .wa{visibility:hidden}
.toast{position:fixed;left:50%;bottom:26px;z-index:var(--z-toast);width:max-content;max-width:min(calc(100% - 32px),420px);text-align:center;background:#fff;color:#000;font-weight:600;font-size:14.5px;line-height:1.4;padding:12px 18px;border-radius:16px;opacity:0;transform:translate(-50%,16px);pointer-events:none;transition:opacity .35s,transform .5s var(--ease-out)}
.toast.on{opacity:1;transform:translate(-50%,0)} .toast.err{background:var(--red);color:#fff}
.dock.is-on~.toast{bottom:96px}

/* =========================================================
   28. REVEAL SYSTEM (data-reveal, data-split, data-words)
   ========================================================= */
.js [data-reveal]{transition:opacity 1s var(--ease-out) var(--rd,0ms),transform 1.15s var(--ease-out) var(--rd,0ms)}
.js [data-reveal="up"]:not(.in){opacity:0;transform:translateY(40px)}
.js [data-reveal="left"]:not(.in){opacity:0;transform:translateX(-56px)}
.js [data-reveal="right"]:not(.in){opacity:0;transform:translateX(56px)}
.js [data-reveal="fade"]:not(.in){opacity:0}
.js [data-reveal="rise"]{transition-duration:1.2s,1.5s} .js [data-reveal="rise"]:not(.in){opacity:0;transform:translateY(110px) scale(.93)}
/* clip: observe the element, clip its first child (IO never fires for an element hidden by its own clip-path) */
.js [data-reveal="clip"]>*:first-child{clip-path:inset(0 0 0 0 round var(--r-plate));transition:clip-path 1.25s var(--ease-io) var(--rd,0ms)}
.js [data-reveal="clip"]:not(.in)>*:first-child{clip-path:inset(100% 0 0 0 round var(--r-plate))}
.js [data-reveal="clip"] img{transition:transform 1.6s var(--ease-out)} .js [data-reveal="clip"]:not(.in) img{transform:scale(1.14)}
.js .plate[data-reveal="clip"]:not(.in){border-color:transparent}
/* word rise (data-split) */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding:0 .08em .12em;margin:0 -.08em -.12em}
.wi{display:inline-block}
.wg{white-space:nowrap}   /* units written without a space between them (price + €, phrase + comma) never split */
.js [data-split]:not(.in) .wi{transform:translateY(106%)} .js [data-split]:not(.in) .wu{opacity:0;transform:translateY(.5em)}
.js [data-split].in .wi{transform:none;transition:transform .95s var(--ease-out) calc(var(--i) * 45ms)}
.js [data-split] .wu{display:inline-block;transition:opacity .8s var(--ease-out) calc(var(--i) * 45ms),transform .95s var(--ease-out) calc(var(--i) * 45ms)}
/* word light (data-words) */
.js [data-words] .wd{opacity:.16;transition:opacity .7s var(--ease-out) calc(var(--i) * 30ms)}
.js [data-words] .wd.old{color:var(--steel)}
.js [data-words].in .wd{opacity:1} .js [data-words].in .wd.old{opacity:.62}
@supports (animation-timeline: view()){
  .js [data-words].is-scrub{view-timeline-name:--wt}
  .js [data-words].is-scrub .wd{transition:none;animation:wlit linear both;animation-timeline:--wt;animation-range:cover calc(10% + var(--i) * var(--step)) cover calc(18% + var(--i) * var(--step))}
  .js [data-words].is-scrub .wd.old{animation-name:wlit-old}
}
@keyframes wlit{from{opacity:.16}to{opacity:1}} @keyframes wlit-old{from{opacity:.16}to{opacity:.62}}

/* =========================================================
   29. SCREENSHOT MODE (?shot=1): everything at its final state
   ========================================================= */
html.is-shot *,html.is-shot *::before,html.is-shot *::after{transition:none!important;animation-delay:0s!important}
html.is-shot .mq-track,html.is-shot .m-dia,html.is-shot .th-ring,html.is-shot .fp-in img{animation:none!important}
html.is-shot .auth-card.enter,html.is-shot .qa[open] .qa-a,html.is-shot .btn::after{animation:none!important}

/* =========================================================
   30. CALM MODE (prefers-reduced-motion or ?motion=calm): alive, gentle.
   Kept: fades, word light, strokes, counters, colour hovers, shine, 2px lift.
   Removed: travel, 3D, parallax, zooms, clip wipes (become fades), loops.
   ========================================================= */
html{scroll-behavior:smooth} .is-calm{scroll-behavior:auto}
.is-calm [data-reveal]:not(.in){transform:none!important}
.is-calm [data-reveal]{transform:none!important}
.is-calm [data-reveal="clip"]>*:first-child{clip-path:none!important;transition:opacity .8s ease var(--rd,0ms)} .is-calm [data-reveal="clip"]:not(.in)>*:first-child{opacity:0}
.is-calm [data-reveal] img,.is-calm .ln-i,.is-calm .enter,.is-calm .site-head,.is-calm [data-split] .wi,.is-calm [data-split] .wu{transform:none!important}
.is-calm.js .ln-i,.is-calm.js [data-split]:not(.in) .wi{opacity:0;transition:opacity .9s ease calc(var(--i,0) * 45ms)} .is-calm.js.is-loaded .ln-i,.is-calm [data-split].in .wi{opacity:1}
.is-calm.js .ln-i{transition-delay:calc(var(--d,0) * 120ms + 150ms)}
.is-calm.js .site-head{opacity:0;transition:opacity .8s ease} .is-calm.js.is-loaded .site-head{opacity:1}
.is-calm .hero-laptop,.is-calm .hero-phone,.is-calm .hero-phone-b,.is-calm .hero-dev{translate:none!important;rotate:none!important} .is-calm .hero-stage .shot{scale:none!important}
.is-calm .tilt,.is-calm .st-laptop,.is-calm .st-phone{transform:none!important;translate:none!important;scale:none!important;rotate:none!important}
.is-calm .layers .layer,.is-calm .layers .layer.is-before{clip-path:none!important;opacity:0;transition:opacity .6s ease} .is-calm .layers .layer.is-active{opacity:1}
.is-calm .layers .layer .shot img,.is-calm .layers .layer .shot video{transform:none!important}
/* calm marquee: a still list on the page grid (no edge fade), wrapping at word level, each item once */
.is-calm .marquee{-webkit-mask-image:none;mask-image:none;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.is-calm .mq-track{animation:none!important;flex-wrap:wrap;justify-content:flex-start;flex:1 1 auto;min-width:0;row-gap:.2em} .is-calm .mq-track[aria-hidden="true"]{display:none}
.is-calm .mq-track li{flex:0 1 auto;min-width:0;max-width:100%;white-space:normal;font-size:clamp(20px,2.6vw,34px)}   /* can shrink to the line: a long item wraps instead of running off the screen */
.is-calm .marquee--codes .mq-track li{font-size:clamp(56px,8vw,128px)}
.is-calm .mq-track li[data-dup]{display:none}   /* loop copies inside the first track (the codes marquee) */
.is-calm .mq-track li:last-child::after,.is-calm .mq-track li:has(+ li[data-dup])::after{display:none}
.is-calm .m-dia,.is-calm .thread.done .th-ring{animation:none!important}
.is-calm .cell:hover,.is-calm .plate:hover,.is-calm .jersey:hover,.is-calm .podium li:hover,.is-calm .guide-row:hover,.is-calm .bands-row:hover,.is-calm .code-row:hover,.is-calm .bb:hover{transform:none} /* buttons keep the 2px lift */
.is-calm .cell-img img,.is-calm .jersey-ph img,.is-calm .plate img,.is-calm .fp-in img{transform:none!important;scale:none!important;translate:none!important}
.is-calm .sl-item{transform:none!important} .is-calm .lp .loupe{transform:none!important}
.is-calm .nav-mob{clip-path:none!important;opacity:0;transition:opacity .3s ease,visibility 0s .3s} .is-calm .site-head.open .nav-mob{opacity:1;transition:opacity .3s ease,visibility 0s}
.is-calm .nav-mob,.is-calm .nm-a{transform:none!important}
.is-calm .split-media{transform:none!important}
.is-calm .auth-card.enter{animation-name:au-fade}
@keyframes au-fade{from{opacity:0}to{opacity:1}}
.is-calm .qa[open] .qa-a{animation-name:au-fade}
.is-calm .js .podium:not(.in) li,.is-calm.js .podium:not(.in) li{transform:none;opacity:0} .is-calm .podium li{transition:opacity .6s ease calc(var(--i) * 90ms)!important}
.is-calm.js .band-bars:not(.in) .bb-bar{transform:none;opacity:0} .is-calm .bb-bar{transition:opacity .6s ease calc(var(--i,0) * 90ms),background-color .35s!important}
.is-calm .dock{transition:opacity .4s ease,visibility 0s .4s;transform:none;opacity:0} .is-calm .dock.is-on{opacity:1;transition:opacity .4s ease,visibility 0s}
.is-calm .jersey.in .jc-f{transition:clip-path .9s var(--ease-io) .4s}
@media (prefers-reduced-motion:reduce){ html:not(.js) .mq-track{animation:none} }
