:root{
  --ink:#0b0b0d; --ink2:#141417; --paper:#f3f1ec; --mute:#9a9aa2;
  --yellow:#fccc0a; --blue:#0039a6; --red:#ee352e; --green:#00933c; --orange:#ff6319;
  --steel1:#eef0f2; --steel2:#c9ced3; --steel3:#a9afb6;
  --sans:"Hanken Grotesk",system-ui,sans-serif; --serif:"Instrument Serif",Georgia,serif; --mono:"Hanken Grotesk",system-ui,sans-serif;
}
:root:not([data-theme="light"]){color-scheme:dark}
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--ink)}
body{background:var(--ink);color:var(--paper);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.is-loading{overflow:hidden}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
img{display:block;max-width:100%}
.mono{font-family:var(--sans);font-weight:600;font-size:11px;letter-spacing:.16em;text-transform:uppercase}
em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:0}
.kicker{color:var(--yellow);margin-bottom:14px}
.h-xl{font-family:var(--sans);font-weight:800;font-size:clamp(50px,8.6vw,150px);line-height:.9;letter-spacing:-.055em}
.h-xl em{font-size:1.1em;letter-spacing:-.02em;padding-right:.04em}
.h-xl em{color:var(--yellow)}
.h-lg{font-weight:700;font-size:clamp(38px,5.4vw,84px);line-height:.95;letter-spacing:-.035em}
.h-lg em{color:var(--yellow);font-size:1.08em}
.lead{font-size:clamp(15px,1.25vw,19px);line-height:1.5;max-width:46ch;color:#d9d7d2}
.lead.dim{color:var(--mute)}
.bullet{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:50%;font-weight:800;font-size:22px;color:#fff;flex:none}
.bullet.sm{width:26px;height:26px;font-size:13px}
.b-yellow{background:var(--yellow);color:#111}.b-blue{background:var(--blue)}.b-red{background:var(--red)}.b-green{background:var(--green)}.b-orange{background:var(--orange)}

/* ---------- cursor ---------- */
.cursor{position:fixed;left:0;top:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--yellow);pointer-events:none;z-index:9999;mix-blend-mode:difference;transition:width .25s,height .25s,margin .25s;opacity:0}
.cursor.big{width:54px;height:54px;margin:-27px 0 0 -27px}
@media (hover:none){.cursor{display:none}}

.skip{position:absolute;top:24px;right:28px;color:#999;z-index:5}
.skip:hover{color:#fff}

/* ---------- nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:18px 28px;mix-blend-mode:normal;pointer-events:none}
.nav>*{pointer-events:auto}
.brand{display:flex;align-items:center;gap:12px;padding:6px 16px 6px 6px;border-radius:99px;background:rgba(10,10,12,.55);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08)}
.brand .bullet{width:34px;height:34px;font-size:17px}
.brand b{display:block;font-size:14px;letter-spacing:-.01em}
.brand small{display:block;font-size:11px;color:var(--mute)}
.stops{display:flex;align-items:center;gap:0;position:relative;padding:8px 14px;border-radius:99px;background:rgba(10,10,12,.55);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08)}
.stops a{position:relative;display:flex;align-items:center;gap:7px;padding:2px 12px;font-size:12px;color:#aaa}
.stops a i{width:9px;height:9px;border-radius:50%;border:2px solid #666;transition:.3s}
.stops a.on{color:#fff}.stops a.on i{background:var(--yellow);border-color:var(--yellow);box-shadow:0 0 10px var(--yellow)}
.nav-right{display:flex;gap:10px;align-items:center}
.calm{padding:9px 12px;border-radius:99px;border:1px solid rgba(255,255,255,.18);background:rgba(10,10,12,.55);backdrop-filter:blur(12px);color:#ccc;font-size:10px}
.calm[aria-pressed="true"]{background:var(--paper);color:#111}
.pill{padding:10px 18px;border-radius:99px;background:var(--yellow);color:#111;font-weight:700;font-size:13px}

/* ---------- hero ---------- */
.hero{position:relative;height:100vh;height:100svh;min-height:600px;overflow:hidden;background:#141519}
#outside{position:absolute;inset:0;width:100%;height:100%}
.flash{position:absolute;inset:0;background:linear-gradient(90deg,transparent 40%,rgba(255,235,190,.16) 50%,transparent 60%);transform:translateX(-120%);pointer-events:none}
.pane{position:absolute;left:7vw;right:7vw;top:17vh;bottom:21vh;border-radius:56px;pointer-events:none;
  box-shadow:0 0 0 220vmax #1a1b1f,inset 0 0 0 12px #8f949b,inset 0 0 0 16px #cfd3d8,inset 0 0 90px rgba(0,0,0,.65);will-change:transform}
.pane::before{content:"";position:absolute;left:-7vw;right:-7vw;top:-17vh;height:17vh;background:
  repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 1px,transparent 1px 80px)}
.glare{position:absolute;inset:16px;border-radius:42px;background:linear-gradient(110deg,rgba(255,255,255,.10) 0 12%,transparent 12% 30%,rgba(255,255,255,.05) 30% 33%,transparent 33%)}
.pole{position:absolute;top:-5%;bottom:-5%;left:4.2vw;width:clamp(16px,1.6vw,26px);border-radius:20px;background:linear-gradient(90deg,#6c6f74,#e9ebee 35%,#a3a7ad 60%,#4b4e53);box-shadow:8px 0 24px rgba(0,0,0,.5);z-index:3;will-change:transform}
.carcard{position:absolute;top:calc(17vh - 52px);left:7vw;display:flex;align-items:center;gap:12px;z-index:4;color:#cfcfcf}
.hero-copy{position:absolute;left:calc(7vw + 48px);bottom:calc(21vh + 40px);z-index:4;max-width:min(980px,80vw)}
.hero-copy h1{text-shadow:0 6px 40px rgba(0,0,0,.45)}
.hero-copy .lead{margin-top:22px;text-shadow:0 2px 16px rgba(0,0,0,.6)}
.hero-foot{position:absolute;left:7vw;right:7vw;bottom:calc(21vh - 56px);display:flex;justify-content:space-between;align-items:center;color:#9b9ba3;z-index:4}
.scroll-cue{display:flex;align-items:center;gap:10px}
.scroll-cue span{width:42px;height:1px;background:#666;position:relative;overflow:hidden}
.scroll-cue span::after{content:"";position:absolute;inset:0;background:var(--yellow);animation:cue 1.8s ease-in-out infinite}
@keyframes cue{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.split .ch{display:inline-block;will-change:transform}
.split .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.22em;margin-bottom:-.14em}

/* ---------- brief: clean cards ---------- */
.h-md{font-weight:800;font-size:clamp(30px,3.6vw,56px);line-height:.95;letter-spacing:-.045em}
.h-md em{color:var(--yellow);font-size:1.08em}
.sec-head{display:grid;grid-template-columns:auto 1fr minmax(0,38ch);align-items:end;gap:16px 24px}
.sec-head>.bullet{align-self:start;margin-top:4px}
.sec-head .kicker{margin-bottom:10px}
.sec-head .lead{font-size:15px;margin:0}
.brief2{padding:18vh 28px 14vh;background:#0e0e10}
.b2-head{padding-bottom:26px;border-bottom:1px solid rgba(255,255,255,.14);margin-bottom:28px}
.b2-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.b2-card{position:relative;padding:22px 22px 24px;border-radius:18px;background:#17171a;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07);min-height:240px;display:flex;flex-direction:column}
.b2-card::before{content:"";position:absolute;left:22px;right:22px;top:0;height:4px;border-radius:0 0 4px 4px;background:#fff}
.b2-card:nth-child(1)::before{background:var(--blue)}.b2-card:nth-child(2)::before{background:var(--red)}.b2-card:nth-child(3)::before{background:var(--green)}.b2-card:nth-child(4)::before{background:var(--orange)}
.b2-card .mono{color:#8d8d94;margin-top:6px}
.b2-card h3{font-size:clamp(22px,1.9vw,30px);font-weight:800;letter-spacing:-.03em;line-height:1.05;margin:14px 0 10px}
.b2-card p{font-size:14.5px;line-height:1.55;color:#b7b7bd;margin-top:auto}
.b2-steps{list-style:none;display:grid;gap:12px;margin-top:16px}
.b2-steps li{display:flex;align-items:baseline;gap:12px;border-top:1px solid rgba(255,255,255,.1);padding-top:10px}
.b2-steps b{font-size:30px;font-weight:800;letter-spacing:-.04em;color:var(--yellow);min-width:72px}
.b2-steps span{color:#b7b7bd;font-size:14px}

/* ---------- station tour ---------- */
.tour{position:relative;height:820vh}
.tour-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:#1b1c1f}
.tour-cam{position:absolute;inset:0;perspective:1600px;perspective-origin:50% 35%}
.tour-world{position:absolute;left:50%;top:50%;width:2400px;height:1400px;margin:-700px 0 0 -1200px;transform-style:preserve-3d;will-change:transform}
.tour-world svg{display:block}
.tour-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(14,14,16,.82) 0,rgba(14,14,16,.0) 34%),linear-gradient(180deg,rgba(14,14,16,.7) 0,transparent 22%),radial-gradient(120% 90% at 60% 55%,transparent 55%,rgba(0,0,0,.45))}
.tour-head{position:absolute;left:28px;top:92px;z-index:3}
.tour-head .kicker{margin-bottom:8px}
.tour-legend{position:absolute;left:28px;top:200px;z-index:3;list-style:none;display:grid;gap:4px}
.tour-legend li{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;color:#8e8e94;padding:5px 10px 5px 5px;border-radius:99px;transition:background .35s,color .35s}
.tour-legend b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#2a2b30;color:#aaa;font-size:12px;transition:.35s}
.tour-legend li.done{color:#cfcfd4}.tour-legend li.done b{background:#3b3d44;color:#fff}
.tour-legend li.on{background:rgba(252,204,10,.14);color:#fff}.tour-legend li.on b{background:var(--yellow);color:#111}
.tour-cards{position:absolute;right:28px;bottom:78px;width:min(420px,calc(100vw - 56px));height:300px;z-index:3}
.tcard2{position:absolute;left:0;right:0;bottom:0;padding:22px 24px 22px;border-radius:20px;background:#fff;color:#111;box-shadow:0 30px 70px rgba(0,0,0,.45);opacity:0;visibility:hidden}
.tc2-n{display:flex;align-items:center;gap:10px;color:#777;margin-bottom:12px}
.tcard2 h3{font-size:clamp(24px,2.1vw,32px);font-weight:800;letter-spacing:-.035em;line-height:1.02}
.tcard2>p:not(.tc2-n):not(.tc2-tip){font-size:15.5px;line-height:1.5;color:#3c3c40;margin-top:10px}
.tc2-tip{display:flex;gap:10px;align-items:flex-start;margin-top:14px;padding:12px 14px;border-radius:12px;background:#f4f1ea;font-size:13.5px;line-height:1.45}
.tc2-tip .mono{flex:none;background:var(--yellow);color:#111;padding:3px 8px;border-radius:99px;font-size:9.5px}
.tour-hud{position:absolute;left:28px;bottom:84px;z-index:3;display:flex;gap:22px;color:#ddd}
.tour-hud span:first-child::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--red);margin-right:8px;animation:rec 1.2s steps(2) infinite}
.tour-bar{position:absolute;left:28px;right:28px;bottom:74px;height:2px;background:rgba(255,255,255,.14);z-index:3}
.tour-bar i{display:block;height:100%;background:var(--yellow);transform:scaleX(0);transform-origin:0 50%}
@keyframes rec{50%{opacity:0}}
/* map micro-motion */
.sm-mk .mk-ring{transform-box:fill-box;transform-origin:center}
.sm-mk.on .mk-ring{animation:mk 1.4s ease-in-out infinite;opacity:.6}
@keyframes mk{50%{transform:scale(1.6);opacity:.1}}
.you-pulse{transform-box:fill-box;transform-origin:center;animation:mk 1.6s ease-in-out infinite}
.globe{animation:globe 2.4s ease-in-out infinite}
@keyframes globe{50%{opacity:.75}}
.walker.w1{animation:wk1 16s linear infinite}.walker.w2{animation:wk2 19s linear infinite}
@keyframes wk1{from{transform:translate(700px,820px) rotate(90deg)}to{transform:translate(2300px,820px) rotate(90deg)}}
@keyframes wk2{from{transform:translate(2300px,800px) rotate(-90deg)}to{transform:translate(100px,800px) rotate(-90deg)}}
#smRoute{animation:march 1s linear infinite}
@keyframes march{to{stroke-dashoffset:-18}}
body.calm .tour-world *{animation:none!important}
@media (max-width:900px){
  .brief2{padding:14vh 16px 10vh}
  .sec-head{grid-template-columns:auto 1fr;gap:12px}.sec-head .lead{grid-column:1/-1}
  .b2-grid{grid-template-columns:1fr;gap:10px}
  .b2-card{min-height:0;padding:16px}.b2-card p{font-size:13px}
  .tour-head{left:16px;top:76px}
  .tour-legend{display:none}
  .tour-cards{left:16px;right:16px;width:auto;bottom:70px;height:auto}
  .tcard2{padding:16px 18px}.tcard2 h3{font-size:22px}.tcard2>p:not(.tc2-n):not(.tc2-tip){font-size:14px}
  .tc2-tip{font-size:12.5px}
  .tour-hud{display:none}.tour-bar{left:16px;right:16px;bottom:62px}
}

/* ---------- rules ---------- */
.rules{position:relative;height:300vh}
.rules-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;perspective:1200px;background:radial-gradient(80% 60% at 50% 100%,#1e1a08,var(--ink) 70%)}
.rules-head,.route-head{position:absolute;left:28px;top:96px;display:flex;gap:16px;align-items:flex-start;z-index:2}
.rules-head .lead,.route-head .lead{margin-top:14px}
.cards{position:absolute;left:28px;right:28px;bottom:8vh;display:grid;grid-template-columns:repeat(4,1fr);gap:18px;transform-style:preserve-3d}
.tcard{position:relative;aspect-ratio:1.586/1.5;border-radius:18px;padding:22px;color:#111;overflow:hidden;
  background:linear-gradient(160deg,#ffe066,#fccc0a 55%,#f0b800);box-shadow:0 30px 60px rgba(0,0,0,.5);will-change:transform;
  clip-path:polygon(0 0,calc(100% - 34px) 0,100% 34px,100% 100%,0 100%)}
.tcard:nth-child(2){background:linear-gradient(160deg,#4f7fe0,#0039a6);color:#fff}
.tcard:nth-child(3){background:linear-gradient(160deg,#f7f5ef,#dcd8cf)}
.tcard:nth-child(4){background:linear-gradient(160deg,#ff8f5a,#ff6319);color:#111}
.tc-top{display:flex;justify-content:space-between;align-items:flex-start}
.tc-n{font-weight:800;font-size:clamp(40px,4.4vw,72px);line-height:.85;letter-spacing:-.05em}
.tcard h3{font-family:var(--serif);font-weight:400;font-size:clamp(30px,2.8vw,46px);margin-top:clamp(14px,3vw,48px);line-height:1}
.tcard p{font-size:14px;line-height:1.45;margin-top:8px;max-width:26ch;opacity:.85}
.tcard .strip{position:absolute;left:0;right:0;bottom:18px;height:18px;background:rgba(0,0,0,.82)}

/* ---------- route: five illustrated steps ---------- */
.route{position:relative;height:560vh}
.route-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:var(--paper);color:#111;display:grid;grid-template-rows:auto 1fr auto;padding:92px 28px 86px;gap:18px}
.route .kicker{color:#7a6200}
.route-head{position:static;display:grid;grid-template-columns:auto 1fr minmax(0,34ch);align-items:end;gap:16px 22px}
.route-head .h-lg em{color:#c79a00}
.route-sub{margin:0;font-size:15px;color:#6b6b6b}
.route-body{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(20px,4vw,64px);align-items:center;min-height:0}
.scene{position:relative;height:100%;max-height:56vh;aspect-ratio:4/3;justify-self:stretch;border-radius:24px;overflow:hidden;background:#e9e4da;box-shadow:0 30px 60px -20px rgba(0,0,0,.25),inset 0 0 0 1px rgba(0,0,0,.06)}
.scene svg{position:absolute;inset:0;width:100%;height:100%;opacity:0;visibility:hidden}
.scene svg.on{opacity:1;visibility:visible}
.step-panel{position:relative;height:100%;min-height:300px}
.step{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;opacity:0;visibility:hidden}
.step-num{display:flex;align-items:center;gap:10px;color:#666;margin-bottom:14px}
.step h3{font-size:clamp(56px,7vw,112px);font-weight:800;letter-spacing:-.055em;line-height:.85}
.step-lead{font-size:clamp(20px,1.9vw,28px);font-weight:700;letter-spacing:-.02em;margin-top:18px;line-height:1.2}
.step-body{font-size:16px;line-height:1.55;color:#4a4a4a;margin-top:10px;max-width:42ch}
.step-tip{display:flex;gap:12px;align-items:flex-start;margin-top:20px;padding:14px 16px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 1px rgba(0,0,0,.07);font-size:14px;line-height:1.45;max-width:46ch}
.step-tip .mono{flex:none;background:var(--yellow);color:#111;padding:3px 8px;border-radius:99px;font-size:9.5px}
.line{position:relative;height:56px;margin:0 22px}
.line-bg,.line-fg{position:absolute;left:0;right:0;top:50%;height:8px;margin-top:-4px;border-radius:8px;background:#dcd7cc}
.line-fg{background:var(--green);transform-origin:0 50%;transform:scaleX(0)}
.st{position:absolute;top:50%;left:var(--x);transform:translate(-50%,-50%);display:grid;justify-items:center}
.st i{width:22px;height:22px;border-radius:50%;background:#fff;border:4px solid #111;transition:.35s}
.st span{position:absolute;top:28px;font-weight:700;font-size:13px;color:#999;transition:.35s}
.st.on i{background:#111}.st.on span{color:#111}
.st.cur i{transform:scale(1.35);background:var(--yellow)}
.rider{position:absolute;top:50%;left:0;transform:translate(-50%,-150%);will-change:left}
.rider .bullet{width:32px;height:32px;font-size:15px;box-shadow:0 8px 20px rgba(0,0,0,.25)}

/* illustration micro-motion */
.scene .waves path{animation:wave 1.6s ease-out infinite;opacity:0}
.scene .waves path:nth-child(2){animation-delay:.25s}.scene .waves path:nth-child(3){animation-delay:.5s}
@keyframes wave{0%{opacity:0}30%{opacity:1}100%{opacity:0}}
.scene .hand{animation:tapHand 2.4s ease-in-out infinite;transform-box:fill-box}
@keyframes tapHand{0%,100%{transform:translate(10px,-10px)}45%,60%{transform:translate(0,0)}}
.scene .go{animation:go 2.4s steps(1) infinite}
@keyframes go{0%,44%{opacity:.25}45%,100%{opacity:1}}
.scene .walker{animation:walkAcross 7s linear infinite}
@keyframes walkAcross{from{transform:translateX(40px)}to{transform:translateX(470px)}}
.scene .arrow{animation:arrow 1.6s ease-in-out infinite;animation-delay:calc(var(--i)*.2s)}
@keyframes arrow{0%,100%{opacity:.4}50%{opacity:1}}
.scene .ring{animation:ring 1.6s ease-in-out infinite;transform-origin:120px 120px}
@keyframes ring{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.5}}
.scene .look{animation:dash 1.2s linear infinite}
@keyframes dash{to{stroke-dashoffset:-32}}
.scene .exit-arrows{animation:exitA 1.4s ease-in-out infinite}
@keyframes exitA{0%,100%{transform:translateY(-6px)}50%{transform:translateY(6px)}}
.scene .now{animation:now 1.2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes now{50%{transform:scale(1.35)}}
.scene .blur-city{animation:city 2s linear infinite}
@keyframes city{from{transform:translateX(20px)}to{transform:translateX(-20px)}}
body.calm .scene *{animation:none!important}
@media (prefers-reduced-motion:reduce){.scene *{animation:none!important}}
@media (max-width:900px){
  .route-sticky{padding:76px 16px 18px;gap:12px}
  .route-head{grid-template-columns:auto 1fr}.route-sub{display:none}
  .route-body{grid-template-columns:1fr;grid-template-rows:auto 1fr;gap:12px}
  .scene{max-height:34vh;width:100%;aspect-ratio:4/3;height:auto;justify-self:center}
  .step h3{font-size:44px}.step-lead{font-size:18px;margin-top:8px}.step-body{font-size:14px}.step-tip{margin-top:10px;font-size:13px}
  .step{justify-content:flex-start}
  .line{margin:0 12px}.st span{font-size:11px}
}

/* ---------- contact ---------- */
.contact{position:relative;padding:22vh 28px 28px;background:var(--yellow);color:#111}
.contact .kicker{color:#111;opacity:.7}
.contact .h-xl em{color:#111}
.contact-row{display:flex;flex-wrap:wrap;gap:16px 40px;margin-top:6vh}
.big-link{font-weight:700;font-size:clamp(22px,3vw,44px);letter-spacing:-.03em;border-bottom:3px solid #111;padding-bottom:4px;word-break:break-all}
.big-link:hover{color:#fff;border-color:#fff}
.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:18vh;padding-top:18px;border-top:1px solid rgba(0,0,0,.25);font-size:10px}

/* ---------- lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:200;background:rgba(5,5,6,.94);display:grid;place-items:center;padding:60px 20px}
.lightbox[hidden]{display:none}
.lightbox img{max-height:80vh;max-width:min(1100px,92vw);border-radius:10px;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.lb-close{position:absolute;top:20px;right:24px;color:#fff;padding:8px}
.lb-cap{position:absolute;bottom:22px;left:0;right:0;text-align:center;color:#aaa}

/* ---------- calm mode ---------- */
body.calm .scroll-cue span::after,body.calm .cam-hud span:first-child::before{animation:none}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .stops{display:none}
  .nav{padding:14px 16px}
  .calm{display:none}
  .pane{left:16px;right:16px;top:15vh;bottom:30vh;border-radius:34px}
  .carcard{left:16px;top:calc(15vh - 44px)}
  .carcard .mono{font-size:9px}
  .hero-copy{left:16px;right:16px;bottom:9vh}
  .hero-copy .lead{font-size:14px}
  .hero-foot{display:none}
  .pole{left:2px}
  .brief-title,.rules-head,.route-head,.work-head{left:16px;right:16px;top:80px}
  .signs{right:16px;left:16px;width:auto;top:auto;bottom:60px;height:auto}
  .sign{position:absolute;left:0;right:0;bottom:0}
  .sign.past{opacity:0}
  .sign p{font-size:13px}
  .cam-hud{left:16px;bottom:16px}
  .cards{left:16px;right:16px;grid-template-columns:repeat(2,1fr);gap:10px;bottom:5vh}
  .tcard{padding:14px;border-radius:12px}
  .tcard p{display:none}
  .line{left:16px;right:16px}
  .st span{font-size:14px}
  .route-copy{left:16px;right:16px}
  .contact{padding:16vh 16px 20px}
  .bullet{width:38px;height:38px;font-size:18px}
}
@media (prefers-reduced-motion:reduce){
  .scroll-cue span::after{animation:none}
}

/* hero HUD + scrim + grain */
.scrim{position:absolute;left:7vw;right:7vw;top:17vh;bottom:21vh;border-radius:56px;pointer-events:none;background:linear-gradient(90deg,rgba(8,8,20,.78) 0%,rgba(8,8,20,.45) 45%,transparent 75%),linear-gradient(0deg,rgba(8,8,20,.6),transparent 50%);z-index:1}
.hud{position:absolute;left:calc(7vw + 34px);right:calc(7vw + 34px);top:calc(17vh + 30px);bottom:calc(21vh + 30px);pointer-events:none;z-index:2;color:rgba(255,255,255,.7)}
.hud .tk{position:absolute;width:16px;height:16px;border:1px solid rgba(255,255,255,.55)}
.hud .tl{left:0;top:0;border-right:0;border-bottom:0}.hud .tr{right:0;top:0;border-left:0;border-bottom:0}
.hud .bl{left:0;bottom:0;border-right:0;border-top:0}.hud .br{right:0;bottom:0;border-left:0;border-top:0}
.hud span{position:absolute;font-size:10px}
.hud .h1{left:26px;top:2px}.hud .h2{right:26px;top:2px}
.hud .h3{right:26px;bottom:2px}.hud .h3 b{color:var(--yellow);font-size:14px}
.hud .h4{right:26px;bottom:22px;color:rgba(255,255,255,.45)}
.hud .hline{position:absolute;left:26px;right:26px;top:50%;height:1px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.22) 0 6px,transparent 6px 14px)}
.hud .hline::before,.hud .hline::after{content:"+";position:absolute;top:-9px;color:rgba(255,255,255,.6);font:12px var(--mono)}
.hud .hline::before{left:-14px}.hud .hline::after{right:-14px}
body::after{content:"";position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:.07;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain .9s steps(4) infinite}
@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-1%)}100%{transform:translate(1%,3%)}}
body.calm::after{animation:none}
@media (max-width:900px){.scrim{left:16px;right:16px;top:15vh;bottom:30vh;border-radius:34px}.hud{display:none}}

/* page switch (Proposal / Portfolio) */
.switch{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:60;display:flex;padding:5px;border-radius:99px;background:rgba(10,10,12,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.12);pointer-events:auto}
.switch a{padding:9px 18px;border-radius:99px;font-size:13px;font-weight:600;color:#bbb;transition:.3s}
.switch a.on{background:var(--paper);color:#111}
.switch a:not(.on):hover{color:#fff}
.to-portfolio{display:inline-flex;align-items:center;gap:18px;margin-top:6vh;padding:18px 22px 18px 26px;border-radius:99px;background:#111;color:#fff;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.to-portfolio .mono{color:var(--yellow);font-size:10px}
.to-portfolio b{font-size:clamp(20px,2.2vw,30px);letter-spacing:-.02em}
.to-portfolio i{font-style:normal;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--yellow);color:#111;font-size:22px;transition:transform .4s}
.to-portfolio:hover{transform:translateX(6px)}.to-portfolio:hover i{transform:rotate(-45deg)}

.pill{box-shadow:0 0 0 1px rgba(0,0,0,.35),0 6px 18px rgba(0,0,0,.25)}

/* shared page transition */
.wipe{position:fixed;inset:0;z-index:300;background:var(--yellow);display:grid;place-items:center;transform:translateY(101%);pointer-events:none}
.wipe .bullet{background:#111;color:var(--yellow);width:64px;height:64px;font-size:30px;transform:scale(.6);opacity:0;transition:transform .5s .15s cubic-bezier(.2,.8,.2,1),opacity .3s .15s}
.wipe.in{transform:none;transition:transform .6s cubic-bezier(.7,0,.2,1)}
.wipe.cover{transform:none}
.wipe.in .bullet,.wipe.cover .bullet{transform:none;opacity:1}
.wipe.out{transform:translateY(-101%);transition:transform .75s cubic-bezier(.7,0,.2,1)}
.b2-head{grid-template-columns:auto 1fr}
.b2-head .lead{grid-column:2;max-width:60ch}

/* ===== opening = station from above ===== */
.tour{height:900vh}
.tour-hero{position:absolute;left:28px;top:clamp(96px,14vh,150px);z-index:4;max-width:min(760px,86vw);pointer-events:none}
.tour-hero .h-xl{font-size:clamp(46px,6.4vw,108px)}
.tour-hero .lead{max-width:44ch}
.tour-hero .kicker{display:flex;align-items:center;gap:10px;color:#e8e8ea}
.tour-hero .lead{margin-top:22px;color:#e2e2e6}
.tour-hero .scroll-cue{display:flex;align-items:center;gap:10px;margin-top:28px;color:#bdbdc3}
.tour-hero h1{text-shadow:0 8px 40px rgba(0,0,0,.35)}
.tour-shade{background:linear-gradient(100deg,rgba(12,12,14,.9) 0,rgba(12,12,14,.55) 38%,rgba(12,12,14,0) 62%),linear-gradient(180deg,rgba(12,12,14,.5) 0,transparent 25%)}
.tour-head{opacity:0}
/* compact stepper instead of a long list */
.tour-legend{top:auto;bottom:96px;left:28px;display:flex;gap:6px;opacity:0}
.tour-legend li{padding:4px;gap:0;font-size:13px;background:rgba(20,20,24,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.tour-legend li span{max-width:0;overflow:hidden;white-space:nowrap;transition:max-width .45s,padding .45s}
.tour-legend li.on span{max-width:160px;padding:0 10px 0 8px}
.tour-hud{bottom:140px}
.tour-cards{opacity:0}
.sm-mk{opacity:0;transition:opacity .4s}.sm-mk.on{opacity:1}
@media (max-width:900px){
  .tour-hero{left:16px;right:16px;top:90px}
  .tour-hero .lead{font-size:14px}
  .tour-legend{display:flex;left:16px;bottom:84px}
  .tour-legend li.on span{max-width:120px}
}
.tour-hud{opacity:0;transition:opacity .4s}
.tour.touring .tour-hud{opacity:1}

/* ===== 3D tour ===== */
.tour-3d{position:absolute;inset:0;width:100%;height:100%;display:block}
.tour-shade{background:linear-gradient(100deg,rgba(12,12,14,.78) 0,rgba(12,12,14,.35) 34%,rgba(12,12,14,0) 55%),linear-gradient(180deg,rgba(12,12,14,.45) 0,transparent 22%)}
.tour.touring .tour-shade{background:linear-gradient(180deg,rgba(12,12,14,.55) 0,transparent 24%),linear-gradient(0deg,rgba(12,12,14,.35) 0,transparent 25%)}
.pin{position:absolute;left:0;top:0;z-index:3;pointer-events:none;opacity:0;transition:opacity .35s;will-change:transform}
.pin span{position:absolute;left:0;bottom:14px;transform:translateX(-50%);white-space:nowrap;background:#111;color:var(--yellow);font-weight:800;font-size:13px;letter-spacing:.02em;padding:7px 12px;border-radius:99px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.pin::before{content:"";position:absolute;left:-7px;top:-7px;width:14px;height:14px;border-radius:50%;background:var(--yellow);box-shadow:0 0 0 6px rgba(252,204,10,.35);animation:pinPulse 1.4s ease-in-out infinite}
.pin::after{content:"";position:absolute;left:-1px;bottom:7px;width:2px;height:8px;background:#111}
@keyframes pinPulse{50%{box-shadow:0 0 0 12px rgba(252,204,10,0)}}
/* loader is now just UI over the live 3D intro */
#loader{position:fixed;inset:0;z-index:100;background:transparent;pointer-events:none}
#loader .skip{pointer-events:auto;position:absolute;top:24px;right:28px;color:#fff;background:rgba(0,0,0,.45);padding:8px 14px;border-radius:99px}
.ld-ui{position:absolute;left:28px;bottom:26px;display:grid;gap:12px}
.st-sign{display:flex;align-items:center;gap:14px;background:#0b0b0c;border-top:4px solid #fff;padding:12px 20px 12px 14px;box-shadow:0 18px 40px rgba(0,0,0,.4)}
.st-sign b{display:block;font-size:20px;letter-spacing:-.02em;color:#fff}
.st-sign .mono{color:var(--yellow);font-size:10px}
.st-bullet{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--yellow);color:#111;font-weight:800;font-size:19px}
.st-bar{height:3px;background:rgba(255,255,255,.25);overflow:hidden}
.st-bar i{display:block;height:100%;background:var(--yellow);transform:scaleX(0);transform-origin:0 50%}
body.is-loading .nav,body.is-loading .switch{opacity:0;pointer-events:none}
.nav,.switch{transition:opacity .6s}
@media (max-width:900px){.ld-ui{left:16px;bottom:18px}}

/* ===== illustrated scroll tour ===== */
.scenes{position:absolute;inset:0;overflow:hidden;background:#efe9df}
.scn{position:absolute;inset:0;opacity:0;visibility:hidden}
.scn-in{position:absolute;left:0;top:0;will-change:transform}
.scn-in img{position:absolute;inset:0;width:100%;height:100%;display:block;user-select:none}
.scn-pin{position:absolute;z-index:2;opacity:0;transform:scale(.6);transform-origin:0 0}
.scn-pin i{position:absolute;left:-9px;top:-9px;width:18px;height:18px;border-radius:50%;background:var(--yellow);border:3px solid #111;box-shadow:0 0 0 0 rgba(252,204,10,.7);animation:pinPulse2 1.6s ease-out infinite}
.scn-pin span{position:absolute;left:18px;top:-17px;white-space:nowrap;background:#111;color:#fff;font-weight:700;font-size:14px;letter-spacing:-.01em;padding:8px 14px;border-radius:99px;box-shadow:0 12px 30px rgba(0,0,0,.3)}
.scn-pin span::before{content:"";position:absolute;left:-10px;top:50%;width:10px;height:2px;background:#111}
@keyframes pinPulse2{0%{box-shadow:0 0 0 0 rgba(252,204,10,.7)}100%{box-shadow:0 0 0 18px rgba(252,204,10,0)}}
body.calm .scn-pin i{animation:none}
.tour .tour-shade{background:linear-gradient(100deg,rgba(14,14,16,.82) 0,rgba(14,14,16,.45) 30%,rgba(14,14,16,0) 52%),linear-gradient(180deg,rgba(14,14,16,.35) 0,transparent 18%)}
.tour.touring .tour-shade{background:linear-gradient(180deg,rgba(14,14,16,.55) 0,transparent 20%),linear-gradient(0deg,rgba(14,14,16,.45) 0,transparent 26%)}
.tour-head .h-md{text-shadow:0 4px 24px rgba(0,0,0,.35)}
@media (max-width:900px){.scn-pin span{font-size:12px;padding:6px 10px}}

/* ===== sample lesson slides ===== */
.deck-sec{padding:16vh 28px 12vh;background:#0e0e10}
.deck-head{padding-bottom:26px;border-bottom:1px solid rgba(255,255,255,.14);margin-bottom:36px}
.deck{max-width:1180px;margin:0 auto}
.deck-stage{position:relative;aspect-ratio:16/9;border-radius:18px;overflow:hidden;background:#fff;box-shadow:0 40px 90px rgba(0,0,0,.5)}
.slide{position:absolute;inset:0;display:grid;grid-template-columns:1.05fr 1fr;color:#111;background:#fbfaf6;opacity:0;visibility:hidden}
.slide.on{opacity:1;visibility:visible}
.sl-top{position:absolute;left:0;right:0;top:0;height:6.5%;display:flex;align-items:center;gap:1.4%;padding:0 3%;background:#111;color:#fff;font-weight:700;font-size:clamp(9px,1.15vw,14px)}
.sl-top .bullet{width:2.2em;height:2.2em;font-size:1em}
.sl-route{margin-left:auto;display:flex;gap:.6em;align-items:center}
.sl-route i{width:.9em;height:.9em;border-radius:50%;border:2px solid #777}
.sl-route i.on{background:var(--yellow);border-color:var(--yellow)}
.sl-route i.done{background:#fff;border-color:#fff}
.sl-text{padding:13% 6% 6% 7%;display:flex;flex-direction:column;justify-content:center}
.sl-step{font-weight:800;font-size:clamp(10px,1.2vw,15px);letter-spacing:.14em;text-transform:uppercase;color:#7a6200}
.sl-title{font-weight:800;font-size:clamp(26px,4.6vw,64px);line-height:.95;letter-spacing:-.04em;margin-top:.25em}
.sl-body{font-size:clamp(13px,1.7vw,24px);line-height:1.35;margin-top:.7em;color:#333;max-width:20ch}
.sl-art{position:relative;margin:12% 6% 7% 0;border-radius:14px;overflow:hidden;background:#e9e4da}
.sl-art svg{position:absolute;inset:0;width:100%;height:100%}
.slide.title{grid-template-columns:1fr;background:var(--yellow)}
.slide.title .sl-text{padding:10% 9%}
.slide.title .sl-title{font-size:clamp(34px,7vw,104px)}
.slide.title .sl-body{max-width:34ch;color:#111}
.sl-badge{display:inline-grid;place-items:center;width:clamp(56px,8vw,110px);height:clamp(56px,8vw,110px);border-radius:50%;background:#111;color:var(--yellow);font-weight:800;font-size:clamp(28px,4vw,56px);margin-bottom:4%}
.sl-quiz{display:grid;gap:.6em;margin-top:1em;max-width:30ch}
.sl-quiz button{font:inherit;font-size:clamp(12px,1.5vw,20px);font-weight:700;text-align:left;padding:.8em 1em;border-radius:12px;border:3px solid #111;background:#fff;color:#111;cursor:pointer;transition:.25s}
.sl-quiz button:hover{background:#fff6d1}
.sl-quiz button.right{background:#e3f6e8;border-color:var(--green)}
.sl-quiz button.wrong{background:#fde7e5;border-color:var(--red)}
.sl-fb{min-height:1.4em;font-size:clamp(12px,1.4vw,18px);font-weight:700;margin-top:.5em}
.deck-ui{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:22px}
.deck-btn{width:52px;height:52px;border-radius:50%;background:#1d1d21;color:#fff;font-size:20px;transition:.25s}
.deck-btn:hover{background:var(--yellow);color:#111}
.deck-dots{display:flex;gap:8px}
.deck-dots button{width:10px;height:10px;border-radius:99px;background:#444;transition:.3s}
.deck-dots button.on{width:30px;background:var(--yellow)}
@media (max-width:900px){
  .deck-sec{padding:12vh 16px 9vh}
  .deck-stage{aspect-ratio:auto;height:auto}
  .slide{position:relative;display:none;grid-template-columns:1fr}
  .slide.on{display:grid}
  .sl-top{position:relative;height:auto;padding:10px 14px}
  .sl-text{padding:22px 20px 10px}
  .sl-art{margin:0 16px 18px;aspect-ratio:4/3}
  .sl-body{max-width:none}
}

/* ===== contact chooser ===== */
.cdlg{position:fixed;inset:0;z-index:400;display:grid;place-items:center;padding:20px;background:rgba(6,6,8,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;transition:opacity .25s}
.cdlg[hidden]{display:none}.cdlg.on{opacity:1}
.cdlg-box{position:relative;width:min(440px,100%);padding:28px;border-radius:22px;background:#fff;color:#111;box-shadow:0 40px 90px rgba(0,0,0,.5);transform:translateY(16px) scale(.97);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.cdlg.on .cdlg-box{transform:none}
.cdlg-box .mono{color:#7a6200}
.cdlg-box h3{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1.05;margin:8px 0 18px}
.cdlg-x{position:absolute;right:16px;top:14px;width:36px;height:36px;border-radius:50%;background:#f1efe9;color:#111}
.cdlg-opt{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:16px;border:2px solid #111;margin-top:10px;transition:.25s}
.cdlg-opt i{font-style:normal;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--yellow);font-weight:800;font-size:18px}
.cdlg-opt.wa i{background:#25d366;color:#fff}
.cdlg-opt b{display:block;font-size:17px}.cdlg-opt small{color:#555;font-size:13px}
.cdlg-opt em{margin-left:auto;font-style:normal;font-family:var(--sans);font-size:20px;transition:transform .25s}
.cdlg-opt:hover{background:#111;color:#fff}.cdlg-opt:hover small{color:#ccc}.cdlg-opt:hover em{transform:translateX(4px)}

/* ===== rule cards with small illustrations ===== */
.tcard{aspect-ratio:auto;min-height:clamp(300px,44vh,400px);display:flex;flex-direction:column;padding-bottom:58px}
.tcard h3{margin-top:auto}
.tc-art{height:clamp(64px,10vh,96px);margin-top:10px}
.tc-art svg{height:100%;width:auto;overflow:visible}
.tc-art .slow{animation:tcFloat 4s ease-in-out infinite}
.tc-art .dot{animation:tcDot 5s ease-in-out infinite}
@keyframes tcFloat{50%{transform:translateY(-4px)}}
@keyframes tcDot{0%{transform:translateX(0)}50%{transform:translateX(96px)}100%{transform:translateX(0)}}
body.calm .tc-art *{animation:none}
@media (max-width:900px){.tcard{min-height:210px;padding-bottom:44px}.tc-art{height:48px}}

/* ===== rule cards v3: Leo explains each rule ===== */
.tcard{padding:0 0 54px;min-height:clamp(330px,50vh,430px);clip-path:none;border-radius:20px}
.tcard .tc-art{height:clamp(120px,21vh,170px);margin:0;background:#fbfaf6;color:#17181b;display:grid;place-items:center;border-bottom:3px solid rgba(0,0,0,.85)}
.tcard .tc-art svg{height:100%;width:100%}
.tcard .tc-top{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:18px 20px 0}
.tcard .tc-n{font-size:14px;font-weight:800;letter-spacing:.04em;line-height:1;padding:6px 9px;border-radius:99px;background:rgba(0,0,0,.85);color:#fff}
.tcard h3{font-family:var(--sans);font-weight:800;font-size:clamp(26px,2.3vw,38px);letter-spacing:-.035em;margin:0;line-height:1}
.tcard p{padding:10px 20px 0;margin:0;font-size:15.5px;line-height:1.45;max-width:none;opacity:.95}
.tcard .strip{bottom:0;height:10px}
.tc-art .dot2{animation:dot2 6s ease-in-out infinite}
@keyframes dot2{0%,100%{transform:translate(0,0)}25%{transform:translate(38px,-28px)}50%{transform:translate(78px,0)}75%{transform:translate(118px,26px)}}
.tc-art .wv{animation:wv 1.8s ease-in-out infinite}
@keyframes wv{50%{opacity:.25}}
body.calm .tc-art *{animation:none!important}
@media (max-width:900px){.tcard{min-height:0;padding-bottom:20px}.tcard .tc-art{height:90px}.tcard p{display:block;font-size:13px}.tcard .tc-top{padding:12px 14px 0}.tcard p{padding:6px 14px 0}}

/* ===== audio ===== */
.say{display:inline-flex;align-items:center;gap:6px;margin-left:auto;padding:6px 11px;border-radius:99px;border:1.5px solid currentColor;font:700 12px var(--sans);letter-spacing:0;text-transform:none;color:inherit;background:transparent;cursor:pointer;transition:.2s}
.say svg{width:14px;height:14px;fill:currentColor}
.say:hover,.say.on{background:#111;color:#fccc0a;border-color:#111}
.tcard .say{position:absolute;right:16px;bottom:20px}
#audioBtn[aria-pressed="true"]{background:var(--yellow);color:#111;border-color:var(--yellow)}
@media (max-width:900px){#audioBtn{display:inline-block;padding:8px 10px}.tcard .say{position:static;margin:8px 14px 0}}

/* slide pictures: same gentle motion */
.sl-art .waves path{animation:wave 1.6s ease-out infinite;opacity:0}
.sl-art .waves path:nth-child(2){animation-delay:.25s}.sl-art .waves path:nth-child(3){animation-delay:.5s}
.sl-art .hand{animation:tapHand 2.4s ease-in-out infinite;transform-box:fill-box}
.sl-art .go{animation:go 2.4s steps(1) infinite}
.sl-art .walker{animation:walkAcross 7s linear infinite}
.sl-art .arrow{animation:arrow 1.6s ease-in-out infinite;animation-delay:calc(var(--i)*.2s)}
.sl-art .ring{animation:ring 1.6s ease-in-out infinite;transform-origin:120px 120px}
.sl-art .look{animation:dash 1.2s linear infinite}
.sl-art .exit-arrows{animation:exitA 1.4s ease-in-out infinite}
.sl-art .now{animation:now 1.2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.sl-art .blur-city{animation:city 2s linear infinite}
body.calm .sl-art *{animation:none!important}
/* ===== process ===== */
.proc{padding:16vh 28px 12vh;background:var(--paper);color:#111}
.proc .kicker{color:#7a6200}.proc .lead.dim{color:#555}
.proc .h-lg em{color:#c79a00}
.proc-head{padding-bottom:26px;border-bottom:1px solid rgba(0,0,0,.14);margin-bottom:56px}
.proc-line{--p:0;position:relative;list-style:none;display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.proc-line::before{content:"";position:absolute;left:22px;right:22px;top:21px;height:6px;border-radius:6px;background:#dcd7cc}
.proc-line::after{content:"";position:absolute;left:22px;right:22px;top:21px;height:6px;border-radius:6px;background:var(--green);transform-origin:0 50%;transform:scaleX(var(--p))}
.proc-step{position:relative;z-index:1}
.proc-dot{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;font-weight:800;font-size:20px;color:#fff;border:4px solid var(--paper);margin-bottom:18px}
.proc-dot.b-yellow{color:#111}
.proc-step .mono{color:#6d6d6d;font-size:10px}
.proc-step h3{font-size:clamp(20px,1.8vw,28px);font-weight:800;letter-spacing:-.03em;margin:6px 0 8px;line-height:1.05}
.proc-step p:last-child{font-size:14.5px;line-height:1.5;color:#3d3d3d}
#tourCam{display:none}
@media (max-width:900px){
  .proc{padding:12vh 16px 9vh}
  .proc-line{grid-template-columns:1fr;gap:26px;padding-left:0}
  .proc-line::before,.proc-line::after{left:21px;right:auto;top:22px;bottom:22px;width:6px;height:auto;transform-origin:50% 0}
  .proc-line::after{transform:scaleY(var(--p))}
  .proc-step{padding-left:66px}.proc-dot{position:absolute;left:0;top:0;margin:0}
}

/* ===== styled brief + process cards ===== */
.b2-card{background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,0) 45%),#17171a;border-radius:22px;padding:26px 24px 26px;min-height:300px;transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s;overflow:hidden}
.b2-card::before{left:0;right:0;height:6px;border-radius:0}
.b2-card::after{content:"";position:absolute;right:-60px;top:-60px;width:180px;height:180px;border-radius:50%;opacity:.16;filter:blur(30px);background:var(--c,#fff);transition:opacity .5s}
.b2-card:nth-child(1){--c:#3d7bff}.b2-card:nth-child(2){--c:var(--red)}.b2-card:nth-child(3){--c:var(--green)}.b2-card:nth-child(4){--c:var(--orange)}
.b2-card:hover{transform:translateY(-8px);box-shadow:0 30px 60px -20px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,255,255,.14)}
.b2-card:hover::after{opacity:.4}
.b2-ic{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;margin-bottom:22px;color:#fff;background:color-mix(in srgb,var(--c) 22%,#1f1f24);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.b2-ic svg{width:38px;height:38px}
.b2-card h3{font-size:clamp(24px,2.1vw,34px)}
.b2-card .mono{color:color-mix(in srgb,var(--c) 55%,#fff)}
.b2-steps b{font-size:34px}

.proc{background:linear-gradient(180deg,#f3f1ec,#ebe7dd)}
.proc-line{gap:16px;padding-top:26px}
.proc-line::before,.proc-line::after{top:23px;left:40px;right:40px}
.proc-step{background:#fff;border-radius:22px;padding:44px 22px 26px;box-shadow:0 26px 50px -28px rgba(0,0,0,.35),inset 0 0 0 1px rgba(0,0,0,.06);transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s}
.proc-step:hover{transform:translateY(-8px);box-shadow:0 36px 60px -26px rgba(0,0,0,.4),inset 0 0 0 2px #111}
.proc-dot{position:absolute;left:20px;top:-26px;margin:0;width:52px;height:52px;border:5px solid #f0ede6;box-shadow:0 8px 18px rgba(0,0,0,.18)}
.proc-ic{width:60px;height:60px;border-radius:16px;display:grid;place-items:center;background:#f4f1ea;color:#111;margin-bottom:16px}
.proc-ic svg{width:36px;height:36px}
.proc-step:hover .proc-ic{background:#111;color:#fff}
.proc-step .mono{display:inline-block;padding:4px 9px;border-radius:99px;background:#f4f1ea;color:#444}
.proc-step h3{margin-top:12px}
@media (max-width:900px){
  .b2-card{min-height:0}
  .proc-line{padding-top:0;gap:34px}
  .proc-step{padding:22px 18px 20px 18px;margin-left:0}
  .proc-line::before,.proc-line::after{display:none}
  .proc-dot{left:auto;right:16px;top:-22px}
}

/* ===== rules as four full screens ===== */
.rules{height:470vh}
.rules-sticky{background:#0e0e10;perspective:none}
.rule{position:absolute;inset:0;background:var(--bg);color:var(--fg);display:grid;place-items:center;overflow:hidden;will-change:transform,opacity}
.rule-in{width:min(1320px,100%);padding:96px 28px 96px;display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(24px,5vw,84px);align-items:center}
.rule-art{background:#fbfaf6;border-radius:30px;aspect-ratio:2/1.12;padding:5%;display:grid;place-items:center;box-shadow:0 50px 90px -34px rgba(0,0,0,.5),inset 0 0 0 3px rgba(0,0,0,.88)}
.rule-art svg{width:100%;height:100%}
.rule-art .slow{animation:tcFloat 4s ease-in-out infinite}
.rule-art .dot2{animation:dot2 6s ease-in-out infinite}
.rule-art .wv{animation:wv 1.8s ease-in-out infinite}
body.calm .rule-art *{animation:none!important}
.rule-kick{display:flex;align-items:center;gap:10px;color:inherit;opacity:.85;margin:0}
.rule h3{display:flex;align-items:center;gap:.18em;font-family:var(--sans);font-size:clamp(54px,7.6vw,124px);font-weight:800;letter-spacing:-.055em;line-height:.9;margin:16px 0 20px}
.rule h3 span{font-size:.2em;letter-spacing:.02em;padding:.5em .8em;border-radius:99px;background:rgba(0,0,0,.88);color:#fff}
.rule-lead{font-size:clamp(20px,2vw,30px);font-weight:700;letter-spacing:-.02em;line-height:1.2}
.rule-body{font-size:17px;line-height:1.55;margin-top:12px;max-width:44ch;opacity:.92}
.rule-chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.rule-chips li{padding:8px 14px;border-radius:99px;border:2px solid currentColor;font-weight:700;font-size:13px}
.rule .say:hover,.rule .say.on{background:#111;color:#fccc0a;border-color:#111}
.rules-dots{position:absolute;left:50%;transform:translateX(-50%);bottom:84px;display:flex;gap:8px;z-index:5;padding:8px 12px;border-radius:99px;background:rgba(10,10,12,.55);backdrop-filter:blur(8px)}
.rules-dots i{width:9px;height:9px;border-radius:99px;background:rgba(255,255,255,.45);transition:.35s}
.rules-dots i.on{width:30px;background:var(--yellow)}
@media (max-width:900px){
  .rule-in{grid-template-columns:1fr;padding:76px 16px 110px;gap:16px}
  .rule-art{aspect-ratio:2/1;border-radius:20px}
  .rule h3{font-size:46px;margin:10px 0 10px}
  .rule-lead{font-size:18px}.rule-body{font-size:14.5px}
  .rule-chips{margin-top:12px}.rule-chips li{font-size:12px;padding:6px 10px}
}

/* ===== process: animated stages ===== */
.proc{position:relative;height:560vh;padding:0;background:linear-gradient(180deg,#f3f1ec,#ebe7dd)}
.proc-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;display:grid;grid-template-rows:auto 1fr;padding:92px 28px 90px;gap:10px}
.proc-top{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:40px;align-items:end}
.proc-top .kicker{margin-bottom:8px}
.proc-top .h-md{color:#111}.proc-top .h-md em{color:#c79a00}
.proc-map{position:relative;list-style:none;height:64px;margin:0 30px 0 14px}
.pm-line,.pm-fill{position:absolute;left:0;right:0;top:20px;height:8px;border-radius:8px;background:#d9d3c6}
.pm-fill{background:linear-gradient(90deg,var(--blue),#fccc0a,var(--red),var(--orange),var(--green));transform-origin:0 50%;transform:scaleX(0)}
.proc-map li{position:absolute;left:var(--x);top:24px;transform:translate(-50%,-50%)}
.proc-map li i{display:block;width:22px;height:22px;border-radius:50%;background:#fff;border:4px solid #111;transition:.35s}
.proc-map li span{position:absolute;top:22px;left:50%;transform:translateX(-50%);white-space:nowrap;font-weight:700;font-size:12px;color:#8a8a8a;transition:.35s}
.proc-map li.done i{background:var(--c)}
.proc-map li.on i{background:var(--c);transform:scale(1.35);box-shadow:0 0 0 7px color-mix(in srgb,var(--c) 30%,transparent)}
.proc-map li.on span,.proc-map li.done span{color:#111}
.pm-train{position:absolute;left:0;top:-14px;transform:translateX(-50%);display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--yellow);color:#111;font-weight:800;font-size:14px;box-shadow:0 8px 18px rgba(0,0,0,.25)}
.proc-stage{position:relative;min-height:0}
.pst{position:absolute;inset:0;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(24px,4vw,70px);align-items:center}
.pst-art{height:100%;max-height:58vh;aspect-ratio:560/340;justify-self:center;background:#fff;border-radius:28px;box-shadow:0 40px 80px -36px rgba(0,0,0,.4),inset 0 0 0 1px rgba(0,0,0,.06);padding:2.5%;position:relative;overflow:hidden}
.pst-art::before{content:"";position:absolute;inset:0;background:radial-gradient(70% 80% at 85% 0%,color-mix(in srgb,var(--c) 22%,transparent),transparent 70%)}
.pst-art svg{position:relative;width:100%;height:100%}
.pst-txt{color:#111}
.pst-txt .tc2-n{display:flex;align-items:center;gap:10px;color:#555;margin:0}
.pst-n{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--c);color:#fff;font-size:13px;letter-spacing:0}
.pst[data-i="1"] .pst-n{color:#111}
.pst h3{font-size:clamp(42px,5.4vw,88px);font-weight:800;letter-spacing:-.05em;line-height:.92;margin:16px 0 18px}
.pst-body{font-size:clamp(16px,1.3vw,19px);line-height:1.55;color:#3a3a3a;max-width:40ch}
/* scene animations play when the stage is on */
.pa{opacity:0}
.pst.on .pa{animation:paIn .6s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:var(--d,0s)}
@keyframes paIn{from{opacity:0;transform:translateY(14px) scale(.92)}to{opacity:1;transform:none}}
.pst.on .pa-b1{--d:.5s}.pst.on .pa-b2{--d:1.1s}
.pst.on .pa-f1{--d:1.4s;animation-name:drop}.pst.on .pa-f2{--d:1.7s;animation-name:drop}.pst.on .pa-f3{--d:2s;animation-name:drop}
@keyframes drop{from{opacity:0;transform:translateY(-60px)}to{opacity:1;transform:none}}
.pst.on .pa-pen{--d:.2s;animation:pen 2.6s ease-in-out .2s infinite;opacity:1}
@keyframes pen{0%,100%{transform:translate(0,0)}50%{transform:translate(-40px,-30px)}}
.pst.on .pk{animation-name:pop}
@keyframes pop{0%{opacity:0;transform:scale(.3)}70%{transform:scale(1.15)}100%{opacity:1;transform:scale(1)}}
.pk,.pc,.pv{transform-box:fill-box;transform-origin:center}
.pv{stroke-dasharray:60;stroke-dashoffset:60}
.pst.on .pv{animation:tick .5s ease-out forwards;animation-delay:var(--d)}
@keyframes tick{to{opacity:1;stroke-dashoffset:0}}
.pg{transform-box:fill-box;transform-origin:0 50%}
.pst.on .pg{animation:grow 1.4s cubic-bezier(.2,.8,.2,1) .2s forwards}
@keyframes grow{from{opacity:1;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}
.pst.on .pa-file{animation:fileIn 1s cubic-bezier(.2,.8,.2,1) .3s forwards}
@keyframes fileIn{from{opacity:0;transform:translate(-120px,40px) rotate(-12deg)}to{opacity:1;transform:none}}
.pa-flag{transform-box:fill-box;transform-origin:0 100%}
.pst.on .pa-flag{animation:flag .8s cubic-bezier(.2,.8,.2,1) .7s forwards}
@keyframes flag{from{opacity:0;transform:translateY(90px) scaleY(.2)}to{opacity:1;transform:none}}
.pst.on .pf{animation:conf 1.4s ease-out forwards;animation-delay:var(--d)}
@keyframes conf{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--x),120px) rotate(320deg)}}
body.calm .pst.on .pa{animation-duration:.01s!important;animation-delay:0s!important;animation-iteration-count:1!important}
@media (max-width:900px){
  .proc-sticky{padding:76px 16px 80px;grid-template-rows:auto 1fr}
  .proc-top{grid-template-columns:1fr;gap:14px}
  .proc-map li span{display:none}
  .pst{grid-template-columns:1fr;grid-template-rows:auto 1fr;gap:14px;align-content:start}
  .pst-art{width:100%;height:auto;max-height:34vh}
  .pst h3{font-size:40px;margin:8px 0 8px}.pst-body{font-size:15px}
}

/* ===== contact ===== */
.contact{padding:16vh 28px 28px}
.ct-wrap{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(24px,5vw,80px);align-items:center;max-width:1400px;margin:0 auto}
.ct-lead{font-size:clamp(17px,1.5vw,22px);line-height:1.45;margin-top:22px;max-width:36ch}
.ct-art{width:min(520px,100%);margin-top:28px}
.ct-art svg{width:100%;height:auto;overflow:visible}
.ct-art .wave{transform-box:view-box;transform-origin:190px 160px;animation:wave 1.6s ease-in-out infinite}
@keyframes wave{50%{transform:rotate(-14deg)}}
body.calm .ct-art .wave{animation:none}
.ct-right{display:grid;gap:12px}
.ct-card{display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:22px;background:#111;color:#fff;transition:transform .4s cubic-bezier(.2,.8,.2,1),background .3s}
.ct-card i{font-style:normal;display:grid;place-items:center;flex:none;width:52px;height:52px;border-radius:50%;background:var(--yellow);color:#111;font-weight:800;font-size:22px}
.ct-card.wa i{background:#25d366;color:#fff}.ct-card.tel i{background:#fff}.ct-card.pf i{background:var(--blue);color:#fff}
.ct-card small{display:block;color:#bdbdbd;font-size:10px;margin-bottom:4px}
.ct-card b{display:block;font-size:clamp(17px,1.6vw,22px);letter-spacing:-.02em;word-break:break-all}
.ct-card em{margin-left:auto;font-style:normal;font-size:24px;transition:transform .3s}
.ct-card:hover{transform:translateX(-8px);background:#000}.ct-card:hover em{transform:translateX(4px)}
@media (max-width:900px){.ct-wrap{grid-template-columns:1fr}.contact{padding:12vh 16px 24px}}

/* ===== rules deck ===== */
.rules{height:520vh}
.rules-sticky{perspective:1400px;perspective-origin:50% 45%;background:radial-gradient(90% 70% at 50% 40%,#1c1c22,#0b0b0d 70%)}
.rule{inset:auto;left:50%;top:52%;width:min(1120px,88vw);height:min(600px,72vh);margin:0;transform:translate(-50%,-50%);border-radius:34px;box-shadow:0 60px 120px -40px rgba(0,0,0,.75),inset 0 0 0 1px rgba(255,255,255,.12);transform-style:preserve-3d;will-change:transform,filter,opacity}
.rule-in{padding:clamp(28px,4vw,56px);width:100%;height:100%;gap:clamp(20px,3.5vw,56px)}
.rule-art{border-radius:24px}
.rule h3{font-size:clamp(46px,5.4vw,92px)}
.rule-body{font-size:16px}
.rules-hint{position:absolute;left:50%;top:clamp(84px,11vh,120px);transform:translateX(-50%);color:#9a9aa2;z-index:5;white-space:nowrap}
@media (max-width:900px){.rule{width:92vw;height:auto;max-height:76vh;top:54%}.rule-in{padding:20px;gap:12px}.rule h3{font-size:40px}}

/* ===== process v3 ===== */
.proc{background:radial-gradient(80% 60% at 70% 30%,#20202a,#0d0d10 70%)}
.proc-top .h-md{color:#fff;font-size:clamp(30px,3.4vw,54px)}.proc-top .h-md em{color:var(--yellow)}
.proc-top .kicker{color:var(--yellow)}
.pm-line{background:#2b2b33}
.proc-map li i{background:#15151a;border-color:#fff}
.proc-map li span{color:#77777f}
.proc-map li.on span,.proc-map li.done span{color:#fff}
.proc-stage{display:grid;align-items:center}
.pst{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-content:center}
.pst-art{width:100%;height:auto;max-height:none;max-width:760px;justify-self:end;background:#fbfaf6;box-shadow:0 50px 100px -40px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.08),0 0 120px -30px color-mix(in srgb,var(--c) 70%,transparent)}
.pst-txt{color:#fff;max-width:520px}
.pst-txt .tc2-n{color:#b9b9c0}
.pst-body{color:#c9c9cf}
.pst h3{color:#fff}
.pst .say{color:#fff}
@media (max-width:900px){.pst-art{max-width:none;justify-self:stretch}}

/* ===== page transition: glass 3D M ===== */
.wipe{transform:none!important;background:rgba(8,8,10,.55);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility 0s .35s;perspective:900px}
.wipe.in,.wipe.cover{opacity:1;visibility:visible;transition:opacity .35s ease}
.wipe.out{opacity:0;visibility:hidden;transition:opacity .55s ease .15s,visibility 0s .7s}
.wipe .bullet{display:none}
.wipe-m{position:relative;width:170px;height:170px;border-radius:44px;display:grid;place-items:center;overflow:hidden;
  background:linear-gradient(140deg,rgba(255,255,255,.34),rgba(255,255,255,.06) 55%,rgba(252,204,10,.12));border:1px solid rgba(255,255,255,.5);
  box-shadow:0 40px 80px -20px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.7),inset 0 -20px 40px rgba(252,204,10,.12);
  transform:rotateX(28deg) rotateY(-24deg) scale(.6);opacity:0;transition:transform .7s cubic-bezier(.2,.8,.2,1),opacity .4s}
.wipe.in .wipe-m,.wipe.cover .wipe-m{transform:rotateX(8deg) rotateY(-10deg) scale(1);opacity:1}
.wipe.out .wipe-m{transform:rotateX(0) rotateY(0) scale(1.35);opacity:0}
.wipe-m span{font-family:var(--sans);font-weight:900;font-size:112px;line-height:1;letter-spacing:-.04em;background:linear-gradient(170deg,#fff6c4,#fccc0a 45%,#e0890a);-webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(1px 1px 0 #c98a07) drop-shadow(2px 2px 0 #b07806) drop-shadow(3px 3px 0 #976605) drop-shadow(4px 4px 0 #7c5404) drop-shadow(10px 14px 14px rgba(0,0,0,.45))}
.wipe-m i{position:absolute;inset:-40%;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.55) 50%,transparent 60%);transform:translateX(-60%);animation:glassSweep 1.6s ease-in-out infinite}
@keyframes glassSweep{to{transform:translateX(60%)}}

/* rule cards: slide-style scenes */
.rule-art.scene-art{padding:0;overflow:hidden;aspect-ratio:16/9;background:#e9e4da}
.rule-art.scene-art svg{display:block;width:100%;height:100%}
.scene-art .walker{animation:walkAcross 8s linear infinite}
.scene-art .arrow{animation:arrow 1.6s ease-in-out infinite;animation-delay:calc(var(--i)*.2s)}
.scene-art .look{animation:lookDash 8s linear infinite}
@keyframes lookDash{0%,30%{opacity:0}40%,60%{opacity:1}70%,100%{opacity:0}}
.scene-art .pop{transform-box:fill-box;transform-origin:center;animation:popSign 8s ease-in-out infinite}
@keyframes popSign{0%,30%,70%,100%{transform:scale(1)}40%,60%{transform:scale(1.05)}}
.scene-art .glide{animation:glide 7s cubic-bezier(.45,0,.2,1) infinite}
@keyframes glide{0%{transform:translateX(660px)}55%,80%{transform:translateX(40px)}100%{transform:translateX(-620px)}}
.scene-art .sig{animation:sig 8s ease-in-out infinite;animation-delay:calc(var(--i)*2.2s - .6s)}
@keyframes sig{0%,100%{opacity:.55}12%,26%{opacity:1}}
.scene-art .wv{animation:wv 1.8s ease-in-out infinite}
.scene-art .cc{animation:cc 4s ease-in-out infinite}
@keyframes cc{0%,100%{opacity:.75}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.scene-art *{animation:none!important}}

/* ===== phone fixes ===== */
@media (max-width:900px){
  .pst{grid-template-columns:1fr;grid-template-rows:auto auto;align-content:start;gap:18px}
  .pst-txt{max-width:none}
}
@media (max-width:640px){
  .nav-right{gap:6px}
  #calmBtn{display:none!important}
  .brand small{display:none}
  #audioBtn{padding:8px 10px;font-size:10px}
  .pill{padding:9px 14px}
  .ct-wrap{grid-template-columns:1fr;gap:28px}
  .ct-right{width:100%;justify-self:stretch;transform:none!important}
  .ct-card{width:100%;min-width:0;margin:0!important;transform:none}
  .ct-card b{font-size:15px;overflow-wrap:anywhere}
  .ct-art{width:min(300px,80%)}
}
