/* ============================================================
   VASUDEV® — v2 design system
   Concept: DESIGNING THE LOGIC BEHIND THE INTERFACE
   Paper / ink / one accent. Grid as narrative device.
   Motion tokens: --fast 200ms · --med 420ms · --slow 850ms
   ============================================================ */

:root{
  --paper:#f2f1ec;
  --ink:#131316;
  --ink-2:#232329;
  --mut:#6e6d76;
  --line:rgba(19,19,22,.14);
  --line-soft:rgba(19,19,22,.07);
  --accent:#3b48ff;
  --ok:#2fbf71;

  --disp:'Bricolage Grotesque',sans-serif;
  --body:'Manrope',sans-serif;
  --mono:'JetBrains Mono',monospace;

  --fast:200ms;
  --med:420ms;
  --slow:850ms;
  --out:cubic-bezier(.22,1,.36,1);      /* decisive settle  */
  --inout:cubic-bezier(.65,0,.35,1);    /* page-scale moves */

  --gut:max(5vw, calc((100vw - 1465px)/2 + 5vw));
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-gutter:stable}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
}

/* ---------- colorful aurora background ---------- */
#aurora{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
#aurora::before{
  content:"";position:absolute;inset:-20%;
  background:
    radial-gradient(38% 42% at 16% 18%,rgba(122,140,255,.42),transparent 62%),
    radial-gradient(34% 38% at 84% 12%,rgba(255,170,130,.36),transparent 60%),
    radial-gradient(40% 44% at 78% 82%,rgba(120,220,190,.34),transparent 62%),
    radial-gradient(36% 40% at 12% 86%,rgba(216,160,255,.34),transparent 60%);
  animation:aur 26s ease-in-out infinite alternate;
  will-change:transform;
}
#aurora::after{
  content:"";position:absolute;inset:-20%;
  background:
    radial-gradient(30% 34% at 55% 45%,rgba(59,72,255,.14),transparent 65%),
    radial-gradient(26% 30% at 35% 65%,rgba(255,140,180,.16),transparent 60%);
  animation:aur 34s ease-in-out infinite alternate-reverse;
  will-change:transform;
}
@keyframes aur{
  0%{transform:translate(0,0) scale(1) rotate(0deg)}
  50%{transform:translate(3%, -2%) scale(1.06) rotate(2deg)}
  100%{transform:translate(-3%, 2%) scale(1.02) rotate(-2deg)}
}

/* ---------- glass tokens ---------- */
:root{
  --glass:rgba(255,255,255,.42);
  --glass-strong:rgba(255,255,255,.6);
  --glass-line:rgba(255,255,255,.65);
  --glass-shadow:0 18px 50px rgba(59,72,255,.10);
}
.glass{
  background:var(--glass);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  border:1px solid var(--glass-line);
  box-shadow:var(--glass-shadow);
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:var(--accent);color:#fff}

:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}

/* ---------- technical text ---------- */
.tx{
  font-family:var(--mono);
  font-size:.68rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--mut);
}
.tx b{color:var(--ink);font-weight:500}

/* ============================================================
   LOADER — SYSTEM INITIALIZING (≤1.1s, skipped when warm)
   ============================================================ */
#boot{
  position:fixed;inset:0;z-index:200;background:var(--ink);color:var(--paper);
  display:flex;align-items:center;justify-content:center;
}
#boot .b-in{text-align:center}
#boot .b-mark{
  font-family:var(--disp);font-weight:800;font-size:clamp(1.6rem,4vw,2.4rem);
  letter-spacing:.02em;
}
#boot .b-mark sup{font-size:.45em;vertical-align:super}
#boot .b-sys{margin-top:14px;font-family:var(--mono);font-size:.62rem;letter-spacing:.22em;color:rgba(242,241,236,.55);text-transform:uppercase}
#boot .b-grid{
  position:absolute;inset:0;pointer-events:none;
  background:
    repeating-linear-gradient(90deg,rgba(242,241,236,.05) 0 1px,transparent 1px calc(100%/12)),
    repeating-linear-gradient(0deg,rgba(242,241,236,.05) 0 1px,transparent 1px 25%);
  transform:scaleY(0);transform-origin:top;
  animation:bootgrid .7s var(--out) forwards;
}
@keyframes bootgrid{to{transform:scaleY(1)}}
#boot.done{transition:opacity .45s var(--out),visibility .45s;opacity:0;visibility:hidden}

/* ============================================================
   CURSOR — contextual, not decorative. Hidden on touch.
   ============================================================ */
#cur{
  position:fixed;top:0;left:0;z-index:190;pointer-events:none;
  width:8px;height:8px;border-radius:50%;background:var(--ink);
  transform:translate(-50%,-50%);
  transition:width var(--fast) var(--out),height var(--fast) var(--out),background var(--fast) var(--out);
}
#cur .c-label{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.6);
  font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;white-space:nowrap;
  color:var(--paper);opacity:0;transition:opacity var(--fast) var(--out),transform var(--fast) var(--out);
}
#cur.on{width:74px;height:74px;background:var(--ink)}
#cur.on .c-label{opacity:1;transform:translate(-50%,-50%) scale(1)}
#cur.lk{width:34px;height:34px;background:var(--accent)}
#cur.lk .c-label{opacity:1;transform:translate(-50%,-50%) scale(1)}
@media(pointer:coarse){#cur{display:none}}
@media(pointer:fine){
  a,button,[data-cursor]{cursor:none}
  body{cursor:none}
  input,textarea,select{cursor:text}
}

/* ============================================================
   NAV
   ============================================================ */
nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:20px var(--gut);
  mix-blend-mode:normal;
  transition:background var(--med) var(--out),box-shadow var(--med) var(--out),padding var(--med) var(--out);
}
nav.scrolled{background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--glass-line),0 10px 34px rgba(59,72,255,.07);padding:13px var(--gut)}
.wordmark{
  font-family:var(--disp);font-weight:800;font-size:1.06rem;letter-spacing:.01em;
  display:flex;align-items:baseline;gap:2px;
}
.wordmark sup{font-size:.55em}
.n-links{display:flex;gap:34px;align-items:center}
.n-links a{
  position:relative;font-family:var(--mono);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;
  padding:4px 0;
}
.n-links a::after{
  content:"";position:absolute;left:0;bottom:0;height:1.5px;width:100%;background:var(--ink);
  transform:scaleX(0);transform-origin:right;transition:transform var(--fast) var(--out);
}
.n-links a:hover::after,.n-links a.active::after{transform:scaleX(1);transform-origin:left}
.n-meta{display:flex;align-items:center;gap:16px}
.n-time{font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;color:var(--mut)}
.n-avail{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;color:var(--mut);text-transform:uppercase}
.n-avail i{width:7px;height:7px;border-radius:50%;background:var(--ok);animation:pulse 2.4s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(47,191,113,.45)}55%{box-shadow:0 0 0 6px rgba(47,191,113,0)}}

/* mobile nav */
#mBtn{display:none;flex-direction:column;gap:5px;padding:8px;z-index:130}
#mBtn i{display:block;width:24px;height:2px;background:var(--ink);transition:transform var(--med) var(--out),opacity var(--fast)}
#mNav{
  position:fixed;inset:0;z-index:120;background:var(--ink);color:var(--paper);
  display:flex;flex-direction:column;justify-content:center;padding:0 8vw;
  clip-path:inset(0 0 100% 0);transition:clip-path .55s var(--inout);
}
body.m-open #mNav{clip-path:inset(0 0 0% 0)}
body.m-open{overflow:hidden}
body.m-open #mBtn i:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.m-open #mBtn i:nth-child(2){opacity:0}
body.m-open #mBtn i:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
#mNav a.m-link{
  font-family:var(--disp);font-weight:800;font-size:clamp(2.4rem,10vw,4rem);line-height:1.16;
  color:var(--paper);opacity:0;transform:translateY(24px);transition:opacity var(--med) var(--out),transform var(--med) var(--out);
}
body.m-open #mNav a.m-link{opacity:1;transform:none}
body.m-open #mNav a.m-link:nth-child(2){transition-delay:60ms}
body.m-open #mNav a.m-link:nth-child(3){transition-delay:120ms}
body.m-open #mNav a.m-link:nth-child(4){transition-delay:180ms}
#mNav .m-foot{margin-top:9vh;display:flex;justify-content:space-between;align-items:flex-end;font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(242,241,236,.55)}
#mNav .m-foot a{color:var(--paper)}
@media(max-width:860px){
  .n-links,.n-meta{display:none}
  #mBtn{display:flex}
}

/* ============================================================
   HERO — IDENTITY → SYSTEM
   ============================================================ */
.hero{
  position:relative;min-height:100svh;
  padding:0 var(--gut);
  display:flex;flex-direction:column;justify-content:center;
  overflow:hidden;
}
/* the design grid that "appears" on scroll */
.hero .h-grid{
  position:absolute;inset:0;pointer-events:none;opacity:0;
  background:
    repeating-linear-gradient(90deg,var(--line-soft) 0 1px,transparent 1px calc(100%/12)),
    linear-gradient(var(--line-soft) 0 1px,transparent 1px 50%);
  will-change:opacity;
}
.h-tech{display:flex;gap:34px;flex-wrap:wrap;margin-bottom:4vh}
.h-tech span{opacity:0;transform:translateY(10px)}
.h-mark{
  font-family:var(--disp);font-weight:800;
  font-size:clamp(4.4rem,15.5vw,13.5rem);
  line-height:.94;letter-spacing:-.015em;
  display:flex;user-select:none;
  will-change:transform;
}
.h-mark .ch{display:inline-block;overflow:hidden}
.h-mark .ch i{display:inline-block;font-style:normal;transform:translateY(112%);will-change:transform;transition:color var(--fast) var(--out)}
.hero.play .h-mark .ch:hover i{animation:jump .45s var(--out);color:var(--accent)}
@keyframes jump{0%{transform:translateY(0)}40%{transform:translateY(-7%)}100%{transform:translateY(0)}}
.h-mark sup{font-size:.28em;font-weight:700;margin-top:.5em}
.h-state{
  margin-top:4.5vh;
  font-family:var(--disp);font-weight:800;
  font-size:clamp(1.55rem,4.2vw,3.4rem);
  line-height:1.06;letter-spacing:-.01em;
  text-transform:uppercase;
}
.h-state .ln{display:block;overflow:hidden}
.h-state .ln span{display:block;transform:translateY(110%);will-change:transform}
.h-state .acc{color:var(--accent)}
.h-sub{margin-top:4vh;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;opacity:0;transform:translateY(12px)}
.h-sub .role{font-size:1.02rem;font-weight:600}
.h-sub .role em{font-style:normal;color:var(--mut);font-weight:500}
.h-scroll{font-family:var(--mono);font-size:.64rem;letter-spacing:.2em;color:var(--mut);display:flex;align-items:center;gap:10px;text-transform:uppercase}
.h-scroll i{font-style:normal;display:inline-block;animation:drop 1.8s var(--inout) infinite}
@keyframes drop{0%,100%{transform:translateY(-3px);opacity:.4}50%{transform:translateY(3px);opacity:1}}

/* interface fragments that emerge on scroll (identity → system) */
.h-frag{position:absolute;pointer-events:none;opacity:0;will-change:transform,opacity}
.h-frag .f-ui{
  background:var(--glass-strong);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid var(--glass-line);border-radius:12px;
  box-shadow:var(--glass-shadow);
  font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;color:var(--mut);
  padding:12px 16px;display:flex;align-items:center;gap:10px;
}
.h-frag .f-ui .dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}
.h-frag .f-ui .bar{width:74px;height:6px;border-radius:3px;background:var(--line)}
.h-frag .f-ui .pill{background:var(--ink);color:var(--paper);border-radius:99px;padding:5px 12px}
.f1{right:12vw;top:24vh}
.f2{right:24vw;bottom:23vh}
.f3{left:38vw;bottom:14vh}

/* run intro */
.hero.play .h-tech span{animation:rise .6s var(--out) forwards}
.hero.play .h-tech span:nth-child(2){animation-delay:.09s}
.hero.play .h-tech span:nth-child(3){animation-delay:.18s}
.hero.play .h-mark .ch i{animation:up .75s var(--out) forwards;animation-delay:calc(.25s + var(--d)*42ms)}
.hero.play .h-state .ln span{animation:up .7s var(--out) forwards;animation-delay:calc(.72s + var(--l)*90ms)}
.hero.play .h-sub{animation:rise .6s var(--out) forwards;animation-delay:1.25s}
@keyframes up{to{transform:translateY(0)}}
@keyframes rise{to{opacity:1;transform:translateY(0)}}

/* ============================================================
   SYSTEM RAIL — problem → product
   ============================================================ */
.rail{
  background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-top:1px solid var(--glass-line);border-bottom:1px solid var(--glass-line);
  padding:26px var(--gut);
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--mut);
}
.rail b{color:var(--ink);font-weight:500}
.rail .arr{color:var(--accent)}
.rail span{opacity:0;transform:translateY(8px);transition:opacity var(--med) var(--out),transform var(--med) var(--out)}
.rail.show span{opacity:1;transform:none}
.rail.show span:nth-child(2){transition-delay:70ms}
.rail.show span:nth-child(3){transition-delay:140ms}
.rail.show span:nth-child(4){transition-delay:210ms}
.rail.show span:nth-child(5){transition-delay:280ms}
.rail.show span:nth-child(6){transition-delay:350ms}
.rail.show span:nth-child(7){transition-delay:420ms}
.rail.show span:nth-child(8){transition-delay:490ms}
.rail.show span:nth-child(9){transition-delay:560ms}

/* ============================================================
   SECTIONS
   ============================================================ */
section{padding:var(--sec-y) var(--gut);position:relative}
.sec-tag{display:flex;align-items:center;gap:14px;margin-bottom:clamp(30px,4vw,52px)}
.sec-tag .no{font-family:var(--mono);font-size:.66rem;color:var(--accent);letter-spacing:.1em}
.sec-tag h2{font-family:var(--mono);font-weight:500;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--mut)}
.sec-tag .rule{flex:1;height:1px;background:var(--line)}

/* reveal primitive */
.rv{opacity:0;transform:translateY(26px);transition:opacity .7s var(--out),transform .7s var(--out)}
.rv.show{opacity:1;transform:none}

/* ============================================================
   FEATURED WORK — editorial, scroll-linked, grid-hover signature
   ============================================================ */
.fw{display:block;margin-bottom:clamp(70px,9vw,130px)}
.fw:last-of-type{margin-bottom:0}
.fw .fw-meta{
  display:flex;align-items:baseline;gap:26px;flex-wrap:wrap;
  font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);
  margin-bottom:16px;
}
.fw .fw-meta .idx{color:var(--accent)}
.fw h3{
  font-family:var(--disp);font-weight:800;
  font-size:clamp(2.3rem,6.4vw,5.4rem);
  line-height:.98;letter-spacing:-.02em;text-transform:uppercase;
  margin-bottom:clamp(20px,3vw,34px);
}
.fw h3 em{font-style:normal;color:transparent;-webkit-text-stroke:1.5px var(--ink)}
.fw .fw-media{
  position:relative;overflow:hidden;border-radius:18px;
  aspect-ratio:16/8.4;background:var(--ink-2);
  border:1px solid var(--glass-line);
  box-shadow:0 30px 80px rgba(59,72,255,.13);
  clip-path:inset(6% 3% 6% 3% round 18px);
  transition:clip-path .8s var(--out),transform .35s var(--out),box-shadow .35s var(--out);
  transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  will-change:transform;
}
.fw:hover .fw-media{box-shadow:0 40px 100px rgba(59,72,255,.2)}
.fw.show .fw-media{clip-path:inset(0 0 0 0 round 14px)}
.fw .fw-media img{
  width:100%;height:110%;object-fit:cover;
  transform:translateY(var(--py,0px)) scale(1.06);
  transition:filter var(--med) var(--out);
  will-change:transform;
}
/* signature: interface → system on hover */
.fw .fw-media::after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  background:
    repeating-linear-gradient(90deg,rgba(242,241,236,.16) 0 1px,transparent 1px calc(100%/12)),
    repeating-linear-gradient(0deg,rgba(242,241,236,.16) 0 1px,transparent 1px 25%);
  transition:opacity var(--med) var(--out);
}
.fw .frag{
  position:absolute;pointer-events:none;border-radius:8px;overflow:hidden;
  border:1px solid rgba(242,241,236,.35);box-shadow:0 16px 40px rgba(0,0,0,.28);
  opacity:0;transition:opacity var(--med) var(--out),transform var(--med) var(--out);
  background-size:cover;
}
.fw .frag.fa{width:22%;aspect-ratio:1.7;right:7%;top:10%;transform:translate(0,10px)}
.fw .frag.fb{width:16%;aspect-ratio:1.2;left:8%;bottom:12%;transform:translate(0,10px)}
@media(pointer:fine){
  .fw:hover .fw-media::after{opacity:1}
  .fw:hover .frag.fa{opacity:1;transform:translate(6px,-6px)}
  .fw:hover .frag.fb{opacity:1;transform:translate(-6px,6px)}
}
.fw .fw-foot{
  margin-top:16px;display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;
}
.fw .fw-desc{max-width:520px;color:var(--mut);font-size:.95rem}
.fw .fw-open{font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;display:flex;align-items:center;gap:8px}
.fw .fw-open i{font-style:normal;transition:transform var(--fast) var(--out)}
.fw:hover .fw-open i{transform:translate(4px,-4px)}

.all-work{
  margin-top:clamp(50px,6vw,80px);display:flex;justify-content:center;
}
.all-work a{
  font-family:var(--mono);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;
  background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--ink);border-radius:99px;padding:16px 30px;
  transition:background var(--fast) var(--out),color var(--fast) var(--out);
  will-change:transform;
}
.all-work a:hover{background:var(--ink);color:var(--paper)}

/* ============================================================
   ACHIEVEMENT — editorial numbers
   ============================================================ */
.ach{
  background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border:1px solid var(--glass-line);border-radius:24px;box-shadow:var(--glass-shadow);
  padding:clamp(30px,4vw,56px);
  display:grid;grid-template-columns:auto 1fr;gap:clamp(24px,6vw,90px);align-items:start}
.ach .big{
  font-family:var(--disp);font-weight:800;font-size:clamp(4rem,12vw,10rem);line-height:.9;letter-spacing:-.02em;
  color:transparent;-webkit-text-stroke:1.5px var(--ink);
}
.ach h3{font-family:var(--disp);font-weight:800;font-size:clamp(1.5rem,3.4vw,2.6rem);text-transform:uppercase;line-height:1.04;margin-bottom:14px}
.ach h3 b{color:var(--accent)}
.ach p{color:var(--mut);max-width:560px}
.ach .tx{display:block;margin-bottom:18px}
@media(max-width:720px){.ach{grid-template-columns:1fr}}

/* ============================================================
   ABOUT TEASER
   ============================================================ */
.teaser h2{
  font-family:var(--disp);font-weight:800;
  font-size:clamp(1.9rem,5.2vw,4.2rem);line-height:1.04;letter-spacing:-.015em;text-transform:uppercase;
  max-width:1100px;
}
.teaser h2 b{color:var(--accent)}
.teaser .t-row{margin-top:clamp(30px,4vw,50px);display:flex;gap:14px;flex-wrap:wrap}
.t-step{
  font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;
  background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--glass-line);border-radius:99px;padding:10px 18px;color:var(--mut);
  transition:border-color var(--fast) var(--out),color var(--fast) var(--out),transform var(--fast) var(--out),background var(--fast) var(--out);
}
.t-step:hover{transform:translateY(-3px);background:var(--glass-strong)}
.t-step:hover{border-color:var(--ink);color:var(--ink)}
.teaser .more{margin-top:34px;display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;border-bottom:1.5px solid var(--ink);padding-bottom:4px}

/* ============================================================
   CONTACT STATEMENT + FOOTER (dark)
   ============================================================ */
.holla{
  background:var(--ink);color:var(--paper);
  border-radius:26px 26px 0 0;margin-top:clamp(40px,6vw,80px);
  padding:clamp(80px,10vw,140px) var(--gut) 0;
  position:relative;overflow:hidden;
}
.holla::before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;
  background:
    radial-gradient(42% 50% at 85% 10%,rgba(59,72,255,.32),transparent 60%),
    radial-gradient(36% 44% at 8% 88%,rgba(216,120,255,.2),transparent 60%),
    radial-gradient(30% 36% at 55% 100%,rgba(120,220,190,.14),transparent 60%);
}
.holla h2{
  font-family:var(--disp);font-weight:800;
  font-size:clamp(2.4rem,7vw,6rem);line-height:.98;letter-spacing:-.02em;text-transform:uppercase;
  max-width:1200px;
}
.holla h2 b{color:transparent;-webkit-text-stroke:1.5px var(--paper)}
.holla .cta{
  margin-top:clamp(34px,4vw,54px);display:inline-flex;align-items:center;gap:12px;
  font-family:var(--mono);font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;
  background:var(--accent);color:#fff;border-radius:99px;padding:20px 36px;
  transition:transform var(--fast) var(--out),background var(--fast) var(--out);
}
.holla .cta:hover{transform:translateY(-3px)}
.holla .h-alt{margin-top:20px;font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;color:rgba(242,241,236,.5)}
.holla .h-alt a{color:var(--paper);border-bottom:1px solid rgba(242,241,236,.4)}

footer{
  background:var(--ink);color:var(--paper);
  padding:clamp(60px,8vw,100px) var(--gut) 34px;
}
.f-grid{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:34px;
  padding-bottom:44px;border-bottom:1px solid rgba(242,241,236,.14);
}
.f-grid .f-mark{font-family:var(--disp);font-weight:800;font-size:1.3rem}
.f-grid .f-mark sup{font-size:.5em}
.f-grid .tx{color:rgba(242,241,236,.45)}
.f-grid ul{list-style:none}
.f-grid li{margin-bottom:10px}
.f-grid li a{
  font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(242,241,236,.8);
  transition:color var(--fast)}
.f-grid li a:hover{color:#fff}
.f-bottom{
  padding-top:26px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(242,241,236,.45);
}
#top{display:inline-flex;align-items:center;gap:8px;color:var(--paper)}
#top i{font-style:normal;transition:transform var(--fast) var(--out)}
#top:hover i{transform:translateY(-3px)}
@media(max-width:860px){.f-grid{grid-template-columns:1fr 1fr}}

/* ============================================================
   MOBILE
   ============================================================ */
@media(max-width:720px){
  .hero{min-height:92svh}
  .h-mark{font-size:clamp(3.4rem,19vw,5.4rem)}
  .h-state{font-size:clamp(1.25rem,6vw,1.8rem)}
  .h-frag{display:none}
  .fw .fw-media{aspect-ratio:16/10}
  .fw .frag{display:none}
  section{padding:52px var(--gut)}
  .rail{gap:10px;font-size:.58rem}
}

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  #aurora{display:none}
  .fw .fw-media{transform:none!important}
  html{scroll-behavior:auto}
  .h-mark .ch i,.h-state .ln span,.h-tech span,.h-sub{transform:none!important;opacity:1!important}
  .rv,.rail span{opacity:1!important;transform:none!important}
  .fw .fw-media{clip-path:none!important}
  #cur{display:none}
  body,a,button{cursor:auto!important}
}



/* ---------- draggable hero fragments ---------- */
.h-frag.draggable{pointer-events:auto}
.h-frag.draggable .f-ui{cursor:none;transition:box-shadow var(--fast) var(--out)}
.h-frag.draggable.dragging .f-ui{box-shadow:0 30px 70px rgba(59,72,255,.25)}
.h-frag.snap{transition:transform .6s cubic-bezier(.2,1.6,.35,1)}

/* ============================================================
   INNER PAGES — component library ported to v2 tokens
   ============================================================ */
:root{
  --muted:var(--mut);
  --paper2:rgba(255,255,255,.55);
  --serif:'Bricolage Grotesque',sans-serif;
  --ease:cubic-bezier(.65,0,.35,1);
  --accent-soft:#dfe2ff;
}
.small-label{font-family:var(--mono);font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--mut);font-weight:500}
.serif{font-family:var(--serif);font-style:italic;font-weight:600}

.page-hero{padding-top:var(--hero-y);padding-bottom:var(--hero-b)}
.page-hero h1{font-family:var(--disp);font-weight:800;font-size:clamp(2.8rem,9vw,7rem);letter-spacing:-.03em;line-height:.95;text-transform:uppercase}
.page-hero h1 em{font-style:normal;color:var(--accent)}
.page-hero p{color:var(--mut);max-width:540px;margin-top:24px;font-size:1.02rem}

/* reveal (old pages) */
.reveal{opacity:0;transform:translateY(40px);transition:opacity .8s var(--out),transform .8s var(--out)}
.reveal.show{opacity:1;transform:none}
.d1{transition-delay:.08s}.d2{transition-delay:.16s}.d3{transition-delay:.24s}
.plx{overflow:hidden}

/* ---------- work archive (list/grid hybrid) ---------- */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin:44px 0 0}
.fbtn{font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;
  padding:11px 20px;border-radius:99px;border:1px solid var(--line);color:var(--ink);
  background:var(--glass);backdrop-filter:blur(10px);transition:all var(--fast) var(--out)}
.fbtn:hover{border-color:var(--ink);transform:translateY(-2px)}
.fbtn.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}
@media(pointer:coarse){.fbtn{cursor:pointer}}

.arch{border-top:1.5px solid var(--ink);margin-top:40px}
.arch-item{display:grid;grid-template-columns:70px 1fr auto 40px;align-items:center;gap:22px;
  padding:26px 10px;border-bottom:1.5px solid var(--ink);position:relative;overflow:hidden;
  transition:opacity var(--med) var(--out),transform var(--med) var(--out)}
.arch-item.hide{display:none}
.arch-item::before{content:"";position:absolute;inset:0;background:var(--ink);transform:translateY(101%);transition:transform .45s var(--out);z-index:0}
.arch-item>*{position:relative;z-index:1;transition:color var(--fast)}
.arch-item .a-no{font-family:var(--mono);font-size:.7rem;color:var(--mut)}
.arch-item h3{font-family:var(--disp);font-weight:800;font-size:clamp(1.25rem,3.2vw,2.2rem);letter-spacing:-.02em;line-height:1.05;text-transform:uppercase;transition:transform .45s var(--out),color var(--fast)}
.arch-item .a-cat{font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--mut);text-align:right}
.arch-item .a-arr{font-size:1.5rem;transform:rotate(-45deg);transition:transform .4s var(--out),color var(--fast)}
@media(pointer:fine){
  .arch-item:hover::before{transform:none}
  .arch-item:hover h3{color:var(--paper);transform:translateX(16px)}
  .arch-item:hover .a-no{color:var(--accent)}
  .arch-item:hover .a-cat{color:#a5a2b8}
  .arch-item:hover .a-arr{transform:rotate(0);color:var(--accent)}
}
#archPrev{position:fixed;width:min(360px,32vw);aspect-ratio:4/3;border-radius:16px;overflow:hidden;pointer-events:none;
  z-index:80;opacity:0;transform:translate(-50%,-56%) scale(.85) rotate(2deg);
  transition:opacity .3s var(--out),transform .3s var(--out);
  border:1px solid var(--glass-line);box-shadow:0 30px 70px rgba(19,19,22,.3);background:var(--ink-2)}
#archPrev.on{opacity:1;transform:translate(-50%,-56%) scale(1) rotate(0)}
#archPrev img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .25s}
#archPrev img.active{opacity:1}
@media(pointer:coarse),(max-width:860px){
  #archPrev{display:none}
  .arch-item{grid-template-columns:44px 1fr 34px}
  .arch-item .a-cat{display:none}
}

/* ---------- case pages ---------- */
.case-hero{padding-top:var(--hero-y);padding-bottom:var(--hero-b)}
.case-hero .small-label{margin-bottom:24px}
.case-hero h1{font-family:var(--disp);font-weight:800;font-size:clamp(2.3rem,6.4vw,5rem);letter-spacing:-.03em;line-height:1;max-width:1000px}
.case-hero h1 em{font-style:normal;color:var(--accent)}
.case-hero p.sub{color:var(--mut);font-size:1.1rem;max-width:660px;margin-top:26px}
.case-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:clamp(34px,5vw,56px);border-top:1.5px solid var(--ink)}
@media(max-width:760px){.case-meta{grid-template-columns:repeat(2,1fr)}}
.cm{padding:20px 16px 20px 0;border-bottom:1.5px solid var(--ink)}
.cm .k{font-family:var(--mono);font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mut);margin-bottom:6px}
.cm .v{font-weight:600;font-size:.95rem}
.case-banner{max-width:1465px;margin:0 auto;padding:20px 5vw 0}
.case-banner .frame{border-radius:20px;overflow:hidden;background:var(--glass);backdrop-filter:blur(16px);border:1px solid var(--glass-line);box-shadow:0 30px 80px rgba(59,72,255,.12)}
.case-banner img{width:100%;display:block}
.case-sec{padding:var(--sec-y) var(--gut);max-width:none;margin:0}
.case-sec h2{font-family:var(--disp);font-weight:800;font-size:clamp(1.6rem,3.4vw,2.6rem);letter-spacing:-.02em;margin-bottom:20px}
.case-sec h2 span{display:block;font-family:var(--mono);font-weight:500;font-size:.64rem;letter-spacing:.22em;color:var(--accent);margin-bottom:12px;text-transform:uppercase}
.case-sec p{color:var(--mut);max-width:760px;font-size:1.02rem;margin-bottom:16px}
.case-sec p b{color:var(--ink)}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:44px}
@media(max-width:820px){.duo{grid-template-columns:1fr;gap:26px}}
.process-flow{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.pf{font-size:.88rem;border-radius:99px;padding:11px 20px;display:flex;align-items:center;gap:10px;
  background:var(--glass);backdrop-filter:blur(10px);border:1px solid var(--glass-line);transition:all var(--fast) var(--out)}
.pf:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);transform:translateY(-2px)}
.pf b{font-family:var(--mono);font-weight:500;font-size:.66rem;color:var(--accent)}
.decisions{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:24px;border-top:1.5px solid var(--ink)}
@media(max-width:820px){.decisions{grid-template-columns:1fr}}
.dec{padding:30px 24px;border-bottom:1.5px solid var(--ink);transition:background var(--fast)}
.dec:nth-child(odd){border-right:1.5px solid var(--ink)}
@media(max-width:820px){.dec:nth-child(odd){border-right:none}}
.dec:hover{background:var(--glass-strong)}
.dec .ic{font-size:1.5rem;margin-bottom:10px}
.dec h3{font-family:var(--disp);font-weight:700;font-size:1.1rem;margin-bottom:8px}
.dec p{font-size:.93rem;margin:0}
.case-nav{display:flex;justify-content:space-between;gap:16px;padding:20px var(--gut) 70px;flex-wrap:wrap}
.cn{border-radius:16px;padding:22px 26px;transition:all var(--fast) var(--out);flex:1;min-width:250px;
  background:var(--glass);backdrop-filter:blur(14px);border:1px solid var(--glass-line);box-shadow:0 14px 36px rgba(59,72,255,.07)}
.cn:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.cn .k{font-family:var(--mono);font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mut)}
.cn:hover .k{color:#8a8798}
.cn .v{font-family:var(--disp);font-weight:700;margin-top:6px}
.cn.next{text-align:right}
.screens-hint{font-family:var(--mono);font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mut);margin-top:16px}
.shots-marquee{overflow:hidden;border-radius:18px;position:relative}
.shots-track{display:flex;gap:20px;width:max-content;animation:shotsx 38s linear infinite;padding:4px}
.shots-marquee:hover .shots-track{animation-play-state:paused}
@keyframes shotsx{to{transform:translateX(-50%)}}
.shot-card{width:min(420px,72vw);aspect-ratio:4/3;border-radius:14px;overflow:hidden;flex:none;
  border:1px solid var(--glass-line);box-shadow:0 18px 44px rgba(59,72,255,.12);background:var(--paper2)}
.shot-card img{width:100%;height:100%;object-fit:cover;object-position:50% 0;transition:object-position 5s ease,transform .5s var(--out)}
.shot-card:hover img{object-position:50% 100%;transform:scale(1.02)}
.frames-duo{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.frames-duo.single{grid-template-columns:1fr;max-width:920px}
@media(max-width:820px){.frames-duo{grid-template-columns:1fr}}
.scroll-frame{--fh:520px;height:var(--fh);border-radius:18px;overflow:hidden;position:relative;
  border:1px solid var(--glass-line);background:var(--glass);backdrop-filter:blur(12px);
  box-shadow:0 24px 60px rgba(59,72,255,.12)}
@media(max-width:720px){.scroll-frame{--fh:400px}}
.scroll-frame img{width:100%;display:block;animation:framescroll 26s ease-in-out infinite alternate}
.scroll-frame:hover img{animation-play-state:paused}
@keyframes framescroll{0%,6%{transform:translateY(0)}94%,100%{transform:translateY(calc(-100% + var(--fh)))}}
.scroll-frame::after{content:"scrolls · hover to pause";position:absolute;right:12px;bottom:12px;
  background:rgba(19,19,22,.72);color:#fff;font-family:var(--mono);font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;
  padding:6px 12px;border-radius:99px;pointer-events:none;opacity:.85}

/* ---------- rows (what I do) ---------- */
.rows{border-top:1.5px solid var(--ink)}
.row-item{display:grid;grid-template-columns:90px 1fr auto;align-items:center;gap:24px;padding:clamp(22px,3.6vw,36px) 10px;border-bottom:1.5px solid var(--ink);
  position:relative;overflow:hidden}
.row-item::before{content:"";position:absolute;inset:0;background:var(--ink);transform:scaleY(0);transform-origin:bottom;transition:transform .45s var(--out);z-index:0}
.row-item>*{position:relative;z-index:1;transition:color var(--fast)}
.row-item .no{font-family:var(--mono);font-size:.72rem;color:var(--mut)}
.row-item h3{font-family:var(--disp);font-weight:800;font-size:clamp(1.35rem,3.2vw,2.4rem);letter-spacing:-.02em;text-transform:uppercase}
.row-item .arr{font-size:1.5rem;transform:rotate(-45deg);transition:transform var(--med) var(--out)}
.row-item .desc{grid-column:2/4;color:var(--mut);max-width:640px;font-size:.96rem;margin-top:6px}
@media(pointer:fine){
  .row-item:hover::before{transform:scaleY(1)}
  .row-item:hover>*{color:var(--paper)}
  .row-item:hover .no{color:var(--accent)}
  .row-item:hover .arr{transform:rotate(0)}
  .row-item:hover .desc{color:#b9b6c8}
}
@media(max-width:720px){.row-item{grid-template-columns:50px 1fr auto}}

/* ---------- stats / award / experience ---------- */
.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--glass-line);background:var(--glass);backdrop-filter:blur(20px);border-radius:22px;overflow:hidden;box-shadow:var(--glass-shadow)}
@media(max-width:760px){.stats-strip{grid-template-columns:repeat(2,1fr)}}
.stat{padding:clamp(24px,4vw,44px) 20px;text-align:center;border-right:1px solid rgba(19,19,22,.08)}
.stat:last-child{border-right:none}
@media(max-width:760px){.stat:nth-child(2){border-right:none}.stat:nth-child(1),.stat:nth-child(2){border-bottom:1px solid rgba(19,19,22,.08)}}
.stat .num{font-family:var(--disp);font-weight:800;font-size:clamp(2.2rem,4.6vw,3.6rem);letter-spacing:-.03em}
.stat .num i{font-style:normal;color:var(--accent)}
.stat .lbl{font-family:var(--mono);color:var(--mut);font-size:.6rem;margin-top:6px;letter-spacing:.14em;text-transform:uppercase}
.award-min{display:grid;grid-template-columns:auto 1fr;gap:clamp(18px,4vw,40px);align-items:center;
  padding:clamp(30px,5vw,60px) clamp(22px,5vw,56px);border-radius:24px;
  background:var(--glass);backdrop-filter:blur(20px);border:1px solid var(--glass-line);box-shadow:var(--glass-shadow)}
@media(max-width:720px){.award-min{grid-template-columns:1fr}}
.award-min .laurel{font-size:3.4rem}
.award-min h3{font-family:var(--disp);font-weight:800;font-size:clamp(1.35rem,3vw,2.2rem);letter-spacing:-.02em;margin-bottom:10px}
.award-min h3 em{font-style:normal;color:var(--accent)}
.award-min p{color:var(--mut);max-width:640px}
.exp-block{padding:clamp(26px,4vw,40px) 6px;border-bottom:1.5px solid var(--line)}
.exp-block:first-child{border-top:1.5px solid var(--ink)}
.exp-block .top{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:baseline}
.exp-block h3{font-family:var(--disp);font-weight:800;font-size:clamp(1.3rem,2.8vw,1.8rem);letter-spacing:-.02em}
.exp-block .co{color:var(--mut);margin-top:4px}
.exp-block .yr{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;color:var(--accent);white-space:nowrap}
.exp-block ul{margin:16px 0 0 20px;color:var(--mut);max-width:840px}
.exp-block li{margin-bottom:9px;font-size:.97rem}
.exp-block li::marker{color:var(--accent)}

/* ---------- contact composer (ported) ---------- */
input,textarea{cursor:text}
.composer{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,56px);align-items:start;
  background:var(--glass);backdrop-filter:blur(20px);border:1px solid var(--glass-line);border-radius:24px;
  padding:clamp(24px,4vw,48px);box-shadow:var(--glass-shadow)}
@media(max-width:860px){.composer{grid-template-columns:1fr;padding:22px 18px}}
.comp-label{font-family:var(--mono);font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:500;margin-bottom:16px}
.topic-chips{display:flex;flex-wrap:wrap;gap:10px}
.tchip{padding:11px 18px;border-radius:99px;border:1.5px solid var(--ink);background:transparent;color:var(--ink);
  font-family:var(--body);font-size:.88rem;font-weight:600;transition:all var(--fast) var(--out)}
.tchip:hover{transform:translateY(-3px);box-shadow:0 8px 20px rgba(19,19,22,.12)}
.tchip.active{background:var(--ink);color:var(--paper);transform:none}
@media(pointer:coarse){.tchip{cursor:pointer}}
.cfield{display:block;width:100%;background:transparent;border:none;border-bottom:1.5px solid rgba(19,19,22,.25);
  font-family:var(--disp);font-weight:700;font-size:1.2rem;color:var(--ink);padding:12px 2px;margin-bottom:8px;
  outline:none;transition:border-color var(--fast);letter-spacing:-.01em}
.cfield::placeholder{color:#a9acba;font-weight:600}
.cfield:focus{border-bottom-color:var(--accent)}
.comp-right{display:flex;flex-direction:column;align-items:center;gap:30px}
.mail-card{width:100%;background:rgba(255,255,255,.75);backdrop-filter:blur(10px);border:1px solid var(--glass-line);
  border-radius:16px;overflow:hidden;box-shadow:0 20px 50px rgba(19,19,22,.12);transition:transform var(--med) var(--out)}
.mail-card:hover{transform:rotate(-1deg) scale(1.01)}
.mail-top{display:flex;align-items:center;gap:6px;padding:12px 16px;background:rgba(19,19,22,.05);border-bottom:1px solid rgba(19,19,22,.08)}
.mail-top i{width:9px;height:9px;border-radius:50%}
.mail-top i:nth-child(1){background:#ff5f57}.mail-top i:nth-child(2){background:#febc2e}.mail-top i:nth-child(3){background:#28c840}
.mail-top span{margin-left:8px;font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;color:var(--mut)}
.mail-row{padding:10px 18px;font-size:.84rem;color:var(--mut);border-bottom:1px solid rgba(19,19,22,.07)}
.mail-row b{color:var(--ink);font-weight:600;margin-right:6px}
.mail-body{padding:18px;font-size:.94rem;color:var(--ink);white-space:pre-line;min-height:120px;line-height:1.65}
.mail-sig{padding:0 18px 18px;font-family:var(--mono);font-size:.74rem;color:var(--accent)}
.round-btn{display:inline-flex;align-items:center;justify-content:center;width:150px;height:150px;border-radius:50%;
  background:var(--ink);color:var(--paper);font-family:var(--disp);font-weight:700;font-size:.98rem;text-align:center;
  transition:background var(--fast);line-height:1.35;padding:20px;will-change:transform}
.round-btn:hover{background:var(--accent)}

/* ============================================================
   DARK THEME (homepage) — token flip via body.dark
   ============================================================ */
body.dark{
  --paper:#0e0e14;
  --ink:#f2f1ec;
  --ink-2:#101018;
  --mut:#9a98a8;
  --line:rgba(242,241,236,.16);
  --line-soft:rgba(242,241,236,.07);
  --accent:#5866ff;
  --glass:rgba(255,255,255,.06);
  --glass-strong:rgba(255,255,255,.11);
  --glass-line:rgba(255,255,255,.16);
  --glass-shadow:0 24px 60px rgba(0,0,0,.5);
}
body.dark #aurora::before{
  background:
    radial-gradient(48% 52% at 12% 6%,rgba(88,102,255,.24),transparent 64%),
    radial-gradient(42% 46% at 92% 92%,rgba(88,102,255,.12),transparent 62%),
    radial-gradient(70% 38% at 50% -12%,rgba(150,160,255,.10),transparent 70%);
}
body.dark #aurora::after{
  background:
    radial-gradient(34% 36% at 60% 48%,rgba(88,102,255,.06),transparent 66%);
}
body.dark #boot{background:#0a0a10;color:#f2f1ec}
body.dark #mNav{background:#0a0a10;color:#f2f1ec}
body.dark #mNav a.m-link{color:#f2f1ec}
body.dark #mBtn i{background:#f2f1ec}
body.dark .h-frag .f-ui{color:#c9c7d4}
body.dark .h-frag .f-ui .pill{background:var(--accent);color:#fff}
body.dark nav.scrolled{background:rgba(14,14,20,.6)}
body.dark .holla{background:linear-gradient(165deg,#12121d,#0b0b12 60%,#141024);border-top:1px solid var(--line-soft);color:#f2f1ec}
body.dark .holla h2 b{-webkit-text-stroke:1.5px #f2f1ec}
body.dark ::selection{background:var(--accent)}
body.dark .ach .big{-webkit-text-stroke:1.5px #f2f1ec}
body.dark #cur{mix-blend-mode:normal}
body.dark #cur.on{background:#f2f1ec}
body.dark #cur.on .c-label{color:#0e0e14}

/* ============================================================
   FEATURED WORK — STACKED DECK (scroll-pinned glass cards)
   ============================================================ */
.stack{position:relative}
.s-card{
  position:relative;
  display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(22px,3.5vw,50px);
  align-items:center;
  min-height:min(66vh,620px);
  padding:clamp(24px,4vw,56px);
  border-radius:28px;overflow:hidden;
  transform-origin:top center;
}
.s-card::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(60% 80% at 85% 15%,rgba(var(--glow),.28),transparent 60%),
    radial-gradient(40% 60% at 10% 90%,rgba(var(--glow),.14),transparent 60%);
  transition:opacity var(--med) var(--out);
}
.s-card::after{ /* 12-col grid appears on hover — interface → system */
  content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 1px,transparent 1px calc(100%/12));
  transition:opacity var(--med) var(--out);
}
@media(pointer:fine){.s-card:hover::after{opacity:1}}
.s-idx{
  position:absolute;right:clamp(14px,3vw,40px);top:clamp(2px,1vw,14px);z-index:0;
  font-family:var(--disp);font-weight:800;font-size:clamp(5rem,13vw,10rem);line-height:1;
  color:transparent;-webkit-text-stroke:1.5px rgba(var(--glow),.65);
  user-select:none;pointer-events:none;
}
.s-info{position:relative;z-index:2}
.s-info .fw-meta{
  display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);
  margin-bottom:16px;
}
.s-info .fw-meta .idx{color:rgb(var(--glow))}
.s-info h3{
  font-family:var(--disp);font-weight:800;
  font-size:clamp(1.9rem,4.6vw,3.8rem);
  line-height:.98;letter-spacing:-.02em;text-transform:uppercase;
  margin-bottom:18px;
}
.s-info h3 em{font-style:normal;color:transparent;-webkit-text-stroke:1.2px var(--ink)}
.s-info p{color:var(--mut);font-size:.98rem;max-width:440px;margin-bottom:26px}
.s-info .fw-open{
  font-family:var(--mono);font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;
  display:inline-flex;align-items:center;gap:8px;
  border:1px solid rgba(var(--glow),.7);color:var(--ink);
  border-radius:99px;padding:13px 24px;
  transition:background var(--fast) var(--out),color var(--fast) var(--out),transform var(--fast) var(--out);
}
.s-info .fw-open i{font-style:normal;transition:transform var(--fast) var(--out)}
.s-card:hover .fw-open{background:rgb(var(--glow));color:#fff;transform:translateY(-2px)}
.s-card:hover .fw-open i{transform:translate(3px,-3px)}
.s-media{
  position:relative;z-index:1;border-radius:16px;overflow:hidden;
  aspect-ratio:16/10.5;
  border:1px solid rgba(255,255,255,.2);
  box-shadow:0 30px 70px rgba(0,0,0,.45);
  transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  transition:transform .35s var(--out);
  will-change:transform;
  background:#17171f;
}
.s-media img{width:100%;height:112%;object-fit:cover;transform:translateY(var(--py,0px));will-change:transform}
.s-media .frag{
  position:absolute;pointer-events:none;border-radius:8px;overflow:hidden;
  border:1px solid rgba(255,255,255,.4);box-shadow:0 16px 40px rgba(0,0,0,.4);
  opacity:0;transition:opacity var(--med) var(--out),transform var(--med) var(--out);
  background-size:cover;
}
.s-media .frag.fa{width:24%;aspect-ratio:1.7;right:6%;top:9%;transform:translate(0,10px)}
.s-media .frag.fb{width:17%;aspect-ratio:1.15;left:7%;bottom:11%;transform:translate(0,10px)}
@media(pointer:fine){
  .s-card:hover .frag.fa{opacity:1;transform:translate(6px,-6px)}
  .s-card:hover .frag.fb{opacity:1;transform:translate(-6px,6px)}
}
.stack-tail{height:2vh}
@media(max-width:860px){
  .s-card{grid-template-columns:1fr;min-height:0;top:auto;align-items:start;
    position:relative!important;transform:none!important;
    filter:none!important;opacity:1!important;backdrop-filter:none;-webkit-backdrop-filter:none;
    background:linear-gradient(150deg,rgba(255,255,255,.09),rgba(255,255,255,.04)),rgba(18,18,28,.92)}
  .s-card .s-info,.s-card .s-media{filter:none!important;opacity:1!important}
  .stack{display:flex;flex-direction:column;gap:22px}
  .s-media{order:-1;aspect-ratio:16/10}
  .s-idx{font-size:4.6rem;top:auto;bottom:6px}
  .s-info p{margin-bottom:18px}
}
@media(prefers-reduced-motion:reduce){
  .s-card{position:relative;top:0;transform:none!important;filter:none!important}
  .s-media{transform:none!important}
}

/* ============================================================
   DARK inner-page refinements
   ============================================================ */
body.dark{--paper2:rgba(255,255,255,.08)}
body.dark .fbtn{color:var(--ink)}
body.dark .tchip{border-color:rgba(242,241,236,.6)}
body.dark .cfield{border-bottom-color:rgba(242,241,236,.3)}
body.dark .cfield::placeholder{color:rgba(242,241,236,.35)}
body.dark .page-hero h1 em{color:var(--accent)}

/* ============================================================
   CASE STUDIES — editorial presentation upgrade
   ============================================================ */
body{counter-reset:csec}
.case-sec{border-top:0}
.case-sec h2{font-size:clamp(1.8rem,4vw,3rem)}
.case-sec h2 span::before{
  counter-increment:csec;
  content:counter(csec,decimal-leading-zero) " / ";
  color:var(--mut);
}
.case-sec h2+p{font-size:1.14rem;line-height:1.75}
.case-hero .small-label{color:var(--accent)}
.case-hero h1{font-size:clamp(2.5rem,7vw,5.6rem);letter-spacing:-.03em}
.case-banner .frame{aspect-ratio:16/8;max-height:76vh}
.case-banner .frame img{width:100%;height:112%;object-fit:cover;object-position:50% 20%;
  transform:translateY(var(--py,0px)) scale(1.03);will-change:transform}
.dec{transition:background var(--fast),transform var(--fast) var(--out),box-shadow var(--fast) var(--out)}
.dec:hover{transform:translateY(-4px);box-shadow:0 20px 44px rgba(0,0,0,.25)}
.cm{background:transparent}
.cm .v{font-size:1rem}
.case-nav .cn .v::after{content:"";display:inline-block}
@media(max-width:720px){
  .case-banner .frame{aspect-ratio:16/10}
  .case-sec h2{font-size:clamp(1.5rem,6vw,2rem)}
}

/* ============================================================
   CINEMATIC PROJECT SCREENS — full-bleed film strip
   ============================================================ */
.shots-marquee{
  width:100vw;margin-left:calc(50% - 50vw);border-radius:0;
  padding:clamp(30px,4.5vw,56px) 0;
  background:rgba(5,5,10,.5);
  border-top:1px solid rgba(255,255,255,.08);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.shots-marquee::before,.shots-marquee::after{
  content:"";position:absolute;top:0;bottom:0;width:14vw;z-index:2;pointer-events:none;
}
.shots-marquee::before{left:0;background:linear-gradient(90deg,rgba(10,10,16,.9),transparent)}
.shots-marquee::after{right:0;background:linear-gradient(-90deg,rgba(10,10,16,.9),transparent)}
.shots-track{gap:clamp(20px,2.5vw,34px);animation-duration:48s}
.shot-card{
  width:min(560px,80vw);aspect-ratio:16/10;border-radius:12px;position:relative;
  border:1px solid rgba(255,255,255,.16);
  box-shadow:0 34px 90px rgba(0,0,0,.55);
  background:#101018;
  transition:transform var(--med) var(--out),box-shadow var(--med) var(--out);
}
.shot-card:hover{transform:translateY(-6px) scale(1.01);box-shadow:0 46px 110px rgba(0,0,0,.65)}
.shot-card::before{ /* browser chrome */
  content:"";position:absolute;top:0;left:0;right:0;height:28px;z-index:2;
  background:rgba(8,8,13,.9);border-bottom:1px solid rgba(255,255,255,.08);
  border-radius:12px 12px 0 0;
}
.shot-card::after{ /* traffic lights */
  content:"";position:absolute;top:10px;left:14px;width:8px;height:8px;border-radius:50%;
  background:#ff5f57;box-shadow:14px 0 0 #febc2e,28px 0 0 #28c840;z-index:3;
}
.shot-card img{padding-top:28px;box-sizing:border-box;height:100%;object-fit:cover;object-position:50% 0}
.screens-hint{color:rgba(242,241,236,.5)}

/* scroll-frames get the same cinema chrome */
.scroll-frame{--fh:560px;border-radius:14px;background:#101018;border:1px solid rgba(255,255,255,.16);
  box-shadow:0 34px 90px rgba(0,0,0,.5)}
.scroll-frame::before{
  content:"";position:absolute;top:0;left:0;right:0;height:28px;z-index:2;
  background:rgba(8,8,13,.9);border-bottom:1px solid rgba(255,255,255,.08);
  border-radius:14px 14px 0 0;
}
.scroll-frame img{margin-top:28px}
@keyframes framescroll{0%,6%{transform:translateY(0)}94%,100%{transform:translateY(calc(-100% + var(--fh) - 28px))}}
.scroll-frame::after{background:rgba(88,102,255,.85)}

/* ============================================================
   CONTACT — dark right side (mail preview + send button)
   ============================================================ */
body.dark .mail-card{background:rgba(255,255,255,.07);backdrop-filter:blur(18px);
  border-color:rgba(255,255,255,.16);box-shadow:0 24px 60px rgba(0,0,0,.45)}
body.dark .mail-top{background:rgba(255,255,255,.05);border-bottom-color:rgba(255,255,255,.08)}
body.dark .mail-top span{color:var(--mut)}
body.dark .mail-row{color:var(--mut);border-bottom-color:rgba(255,255,255,.08)}
body.dark .mail-row b{color:var(--ink)}
body.dark .mail-body{color:var(--ink)}
body.dark .mail-sig{color:var(--accent)}
body.dark .round-btn{background:rgba(255,255,255,.1);color:var(--ink);
  border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(12px)}
body.dark .round-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
body.dark .tchip.active{background:var(--accent);color:#fff;border-color:var(--accent)}

/* ============================================================
   CASE BANNER — full image, cinematic reveal (no cropping)
   ============================================================ */
.case-banner .frame{aspect-ratio:auto;max-height:none;
  animation:banIn 1.15s var(--out) .1s both}
.case-banner img{width:100%;height:auto;object-fit:unset;object-position:center;
  animation:banZoom 1.7s var(--out) .1s both}
@keyframes banIn{from{clip-path:inset(9% 5% 9% 5% round 26px)}to{clip-path:inset(0 0 0 0 round 20px)}}
@keyframes banZoom{from{transform:scale(1.12)}to{transform:scale(1)}}

/* ============================================================
   DARK hover fixes — readable glass highlights, no white fill
   ============================================================ */
body.dark .row-item::before{background:rgba(88,102,255,.16)}
body.dark .row-item:hover>*{color:var(--ink)}
body.dark .row-item:hover .no{color:var(--accent)}
body.dark .row-item:hover .desc{color:rgba(242,241,236,.75)}
body.dark .arch-item::before{background:rgba(88,102,255,.16)}
body.dark .arch-item:hover h3{color:var(--ink)}
body.dark .arch-item:hover .a-cat{color:rgba(242,241,236,.7)}
body.dark .arch-item:hover .a-no{color:var(--accent)}
body.dark .pf:hover{background:rgba(255,255,255,.12);color:var(--ink);border-color:rgba(255,255,255,.3)}
body.dark .cn:hover{background:rgba(255,255,255,.1);color:var(--ink);border-color:rgba(255,255,255,.3)}
body.dark .cn:hover .k{color:rgba(242,241,236,.55)}
body.dark .dec:hover{background:rgba(255,255,255,.08)}
body.dark .exp-block li::marker{color:var(--accent)}

/* ============================================================
   FOOTER v2 — giant wordmark
   ============================================================ */
.v2f{padding:clamp(46px,6vw,80px) var(--gut) 30px;background:transparent}
.f-giant{
  display:block;text-align:center;user-select:none;
  font-family:var(--disp);font-weight:800;
  font-size:clamp(3.4rem,13.5vw,12.5rem);line-height:.92;letter-spacing:.01em;
  color:transparent;-webkit-text-stroke:1.5px rgba(242,241,236,.32);
  transition:color .45s var(--out),-webkit-text-stroke-color .45s var(--out);
}
.f-giant sup{font-size:.3em;-webkit-text-stroke-width:1px}
.f-giant:hover{color:var(--paper);-webkit-text-stroke-color:transparent}
.f-links{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:clamp(28px,4vw,44px)}
.f-links a{
  font-family:var(--mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;
  border:1px solid rgba(242,241,236,.22);border-radius:99px;padding:11px 20px;
  color:rgba(242,241,236,.85);
  transition:all var(--fast) var(--out);
}
.f-links a:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-2px)}
.v2f .f-bottom{
  margin-top:clamp(30px,4vw,48px);padding-top:24px;
  border-top:1px solid rgba(242,241,236,.12);
  display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  font-family:var(--mono);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(242,241,236,.45);
}
@media(max-width:720px){
  .v2f .f-bottom{flex-direction:column;align-items:center;text-align:center;gap:10px}
}
/* light-page footer variant (home-classic etc.) */
body:not(.dark) .f-giant{-webkit-text-stroke-color:rgba(19,19,22,.3)}
body:not(.dark) .f-giant:hover{color:var(--ink)}
body:not(.dark) .f-links a{border-color:var(--line);color:var(--ink)}
.holla .v2f{padding-left:0;padding-right:0}

/* ============================================================
   CASE STUDY — full-screen hero image → title →
   spec list → icon cards. Adapted to VASUDEV dark glass.
   ============================================================ */
.case-banner{
  width:100vw;max-width:100vw;margin:0;padding:0;position:relative;
}
.case-banner .frame{
  height:min(86svh,940px);border-radius:0;border:0;box-shadow:none;
  background:#0a0a10;position:relative;overflow:hidden;
  animation:banIn2 1.1s var(--out) .05s both;
}
.case-banner .frame img{
  position:relative;z-index:1;width:100%;height:100%;
  object-fit:contain;object-position:center;
  animation:banZoom 1.7s var(--out) .05s both;
}
.case-banner .frame img.bgblur{
  position:absolute;inset:-6%;width:112%;height:112%;z-index:0;
  object-fit:cover;filter:blur(46px) brightness(.42) saturate(1.25);
  animation:none;
}
.case-banner .frame::after{ /* bottom fade into page */
  content:"";position:absolute;left:0;right:0;bottom:0;height:26%;z-index:2;
  background:linear-gradient(transparent,rgba(14,14,20,.92));pointer-events:none;
}
@keyframes banIn2{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}
.case-banner + section.case-hero,.case-banner + .case-hero{
  padding-top:clamp(40px,6vw,72px);
}
@media(max-width:720px){.case-banner .frame{height:60svh}}

/* spec list — key/value rows */
.case-meta{display:block;grid-template-columns:none;max-width:820px;border-top:1.5px solid var(--line)}
.cm{display:flex;justify-content:space-between;align-items:baseline;gap:24px;
  padding:16px 2px;border-bottom:1px solid var(--line-soft)}
.cm .k{margin-bottom:0}
.cm .v{text-align:right}

/* icon cards — floating 3-up glass cards */
.decisions{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px;border-top:0;margin-top:30px}
.dec{border:1px solid rgba(255,255,255,.14);border-radius:20px;background:var(--glass);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:30px 26px}
.dec:nth-child(odd){border-right:1px solid rgba(255,255,255,.14)}
.dec .ic{
  width:54px;height:54px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  background:rgba(88,102,255,.16);border:1px solid rgba(88,102,255,.3);
  font-size:1.5rem;margin-bottom:16px;
}
.dec:hover{transform:translateY(-5px);background:var(--glass-strong);box-shadow:0 24px 54px rgba(0,0,0,.35)}

/* duo blocks — editorial rhythm */
.duo{gap:clamp(30px,4vw,60px)}
.duo h2{margin-bottom:14px}

/* ============================================================
   Case pages — refined layer
   ============================================================ */
/* 1. kinetic hero title overlapping the full-screen banner */
.case-banner + .case-hero,.case-banner + section.case-hero{
  position:relative;z-index:3;
  margin-top:clamp(-110px,-8vw,-50px);
  padding-top:0;
}
.case-hero h1{
  font-size:clamp(2.6rem,7.8vw,6.6rem);line-height:.96;text-transform:uppercase;
  letter-spacing:-.025em;max-width:1200px;
  text-shadow:0 20px 60px rgba(0,0,0,.55);
}
.case-hero .small-label{
  display:inline-flex;align-items:center;gap:10px;
  background:rgba(14,14,20,.55);backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,.18);border-radius:99px;padding:9px 18px;
}

/* 2. chapter headings — accent underline + scale */
.case-sec h2{position:relative;padding-bottom:16px}
.case-sec h2::after{
  content:"";position:absolute;left:0;bottom:0;width:58px;height:3px;
  background:var(--accent);border-radius:2px;
  transform:scaleX(0);transform-origin:left;transition:transform .7s var(--out) .2s;
}
.reveal.show h2::after,.case-sec h2.show::after{transform:scaleX(1)}
.case-sec .reveal.show h2::after{transform:scaleX(1)}

/* 3. problem / role — glass panels */
.case-sec .duo>div{
  background:var(--glass);border:1px solid rgba(255,255,255,.13);border-radius:20px;
  padding:clamp(22px,3vw,34px);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  transition:transform var(--fast) var(--out),background var(--fast);
}
.case-sec .duo>div:hover{transform:translateY(-4px);background:var(--glass-strong)}

/* 4. scroll-scrub gallery (built by JS around .shots-marquee) */
.hwrap{position:relative}
.hpin{position:sticky;top:0;height:100svh;display:flex;align-items:center;overflow:hidden}
.hpin .shots-marquee{width:100vw;margin-left:calc(50% - 50vw);border:0;background:transparent;padding:0}
.hpin .shots-marquee::before,.hpin .shots-marquee::after{display:none}
.scrub .shots-track{animation:none!important;will-change:transform}
.hpin .shot-card{width:min(640px,74vw)}
.scrub-hint{
  position:absolute;left:50%;bottom:26px;transform:translateX(-50%);
  font-family:var(--mono);font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(242,241,236,.5);white-space:nowrap;
}

/* 5. chapter navigator (desktop) */
#chapNav{
  position:fixed;right:22px;top:50%;transform:translateY(-50%);z-index:95;
  display:flex;flex-direction:column;gap:14px;list-style:none;margin:0;padding:0;
}
#chapNav a{display:flex;align-items:center;gap:10px;justify-content:flex-end}
#chapNav .c-lab{
  font-family:var(--mono);font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(242,241,236,.55);opacity:0;transform:translateX(6px);
  transition:opacity var(--fast) var(--out),transform var(--fast) var(--out);
  background:rgba(14,14,20,.6);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.12);
  padding:5px 10px;border-radius:99px;white-space:nowrap;
}
#chapNav .c-dot{
  width:8px;height:8px;border-radius:50%;flex:none;
  background:rgba(242,241,236,.28);transition:background var(--fast),transform var(--fast);
}
#chapNav a:hover .c-lab,#chapNav a.act .c-lab{opacity:1;transform:none}
#chapNav a.act .c-dot{background:var(--accent);transform:scale(1.5)}
@media(max-width:1100px),(pointer:coarse){#chapNav{display:none}}

/* ---------- footer wordmark: animated gradient on hover ---------- */
.f-giant:hover{
  background:linear-gradient(90deg,#5866ff,#c878ff,#40d2b4,#ffb36b,#ff6ba8,#5866ff);
  background-size:300% 100%;
  -webkit-background-clip:text;background-clip:text;
  color:transparent;-webkit-text-fill-color:transparent;
  -webkit-text-stroke-color:transparent;
  animation:gradShift 4s linear infinite;
  filter:drop-shadow(0 0 34px rgba(88,102,255,.35));
}
@keyframes gradShift{to{background-position:300% 0}}

/* ---------- overflow & performance fixes ---------- */
html,body{overflow-x:clip;max-width:100%}
.h-mark{white-space:nowrap;max-width:100%}
.hero{contain:layout paint}
.s-card{
  transform:translateZ(0);
  box-shadow:0 26px 60px rgba(0,0,0,.42);
}
.s-media{transition:transform .3s var(--out)}
#aurora::before,#aurora::after{filter:none}

/* ---------- about portrait (homepage) ---------- */
.about-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(28px,5vw,72px);align-items:center}
.portrait{
  position:relative;border-radius:24px;overflow:hidden;justify-self:end;
  max-width:400px;width:100%;
  border:1px solid rgba(255,255,255,.2);
  box-shadow:0 34px 90px rgba(0,0,0,.5),0 0 60px rgba(88,102,255,.15);
  transition:transform var(--med) var(--out),box-shadow var(--med) var(--out);
}
.portrait img{width:100%;height:auto;transition:transform .8s var(--out)}
.portrait::after{ /* 12-col grid overlay on hover — same signature */
  content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.09) 0 1px,transparent 1px calc(100%/6));
  transition:opacity var(--med) var(--out);
}
.portrait:hover{transform:translateY(-6px) rotate(-1deg);box-shadow:0 46px 110px rgba(0,0,0,.6),0 0 80px rgba(88,102,255,.25)}
.portrait:hover img{transform:scale(1.04)}
.portrait:hover::after{opacity:1}
.p-tag{
  position:absolute;left:14px;bottom:14px;z-index:2;
  font-family:var(--mono);font-size:.56rem;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(242,241,236,.9);background:rgba(14,14,20,.6);backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,.18);border-radius:99px;padding:8px 14px;
}
@media(max-width:860px){
  .about-grid{grid-template-columns:1fr}
  .portrait{justify-self:start;max-width:340px}
}

/* ---------- portrait scroll-morph: photo → circle → docks at Let's talk ---------- */
#pDock{
  position:absolute;right:var(--gut);top:clamp(60px,9vw,120px);
  width:clamp(96px,10vw,140px);height:clamp(96px,10vw,140px);border-radius:50%;
  border:1.5px dashed rgba(242,241,236,.3);
  transition:border-color var(--med) var(--out),box-shadow var(--med) var(--out);
}
#pDock.filled{border:1.5px solid var(--accent);box-shadow:0 0 44px rgba(88,102,255,.4)}
.holla{position:relative}
#pFly{
  position:fixed;z-index:85;pointer-events:none;overflow:hidden;display:none;
  border:1px solid rgba(255,255,255,.25);
  box-shadow:0 30px 80px rgba(0,0,0,.5),0 0 60px rgba(88,102,255,.2);
}
#pFly img{width:100%;height:100%;object-fit:cover;object-position:50% 20%}
@media(max-width:860px),(pointer:coarse){#pDock{display:none}}

/* ---------- extra hero fragments ---------- */
.f4{left:14vw;top:20vh}
.f5{right:38vw;top:16vh}
.h-frag .f-ui .avtr{width:20px;height:20px;border-radius:50%;background:linear-gradient(135deg,#5866ff,#c878ff)}
.h-frag .f-ui .trk{width:74px;height:5px;border-radius:3px;background:var(--line);position:relative}
.h-frag .f-ui .trk i{position:absolute;left:0;top:0;height:100%;width:55%;border-radius:3px;background:var(--accent)}

/* ---------- system playground ---------- */
.lab-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(24px,4vw,60px);align-items:stretch}
@media(max-width:860px){.lab-grid{grid-template-columns:1fr}}
.tok-panel{
  background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,.14);border-radius:22px;padding:clamp(22px,3vw,36px);
  display:flex;flex-direction:column;gap:22px;
}
.tok-row{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}
.tok-row .tx b{color:var(--accent);font-weight:500}
.swatches{display:flex;gap:10px}
.sw{width:26px;height:26px;border-radius:50%;border:2px solid transparent;transition:transform var(--fast) var(--out),border-color var(--fast)}
.sw:hover{transform:scale(1.15)}
.sw.act{border-color:#fff;transform:scale(1.12)}
#radSlide{width:170px;accent-color:var(--accent)}
.seg{display:flex;border:1px solid rgba(255,255,255,.2);border-radius:99px;overflow:hidden}
.sg{font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;padding:8px 16px;color:var(--mut);transition:all var(--fast)}
.sg.act{background:var(--accent);color:#fff}
.tgl{width:48px;height:26px;border-radius:99px;background:rgba(255,255,255,.14);position:relative;transition:background var(--fast)}
.tgl i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left var(--med) var(--out)}
.tgl.on{background:var(--accent)}
.tgl.on i{left:25px}
.tok-note{font-size:.85rem;color:var(--mut);border-top:1px solid rgba(255,255,255,.1);padding-top:16px;margin-top:auto}

.demo-wrap{display:flex;align-items:center;justify-content:center;position:relative}
.demo-wrap::before{content:"";position:absolute;inset:8%;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--demo-a,#5866ff) 22%,transparent),transparent 70%);
  transition:background .4s;filter:blur(10px)}
.demo-card{
  --demo-a:#5866ff;--demo-r:14px;
  position:relative;width:min(420px,100%);
  background:#15151d;border:1px solid rgba(255,255,255,.16);
  border-radius:calc(var(--demo-r) + 8px);padding:26px;
  box-shadow:0 34px 90px rgba(0,0,0,.5);
  transition:background .35s,color .35s,border-radius .25s;
  color:#f2f1ec;
}
.demo-card.light{background:#f4f3ee;color:#15151d;border-color:rgba(0,0,0,.1)}
.d-head{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.d-av{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--demo-a),color-mix(in srgb,var(--demo-a) 40%,#fff));transition:background .35s}
.d-head b{display:block;font-family:var(--disp);font-size:.98rem}
.d-head span:not(.d-badge){font-family:var(--mono);font-size:.58rem;letter-spacing:.1em;color:inherit;opacity:.55}
.d-badge{margin-left:auto;font-family:var(--mono);font-size:.56rem;letter-spacing:.12em;text-transform:uppercase;
  background:color-mix(in srgb,var(--demo-a) 22%,transparent);color:var(--demo-a);
  border:1px solid var(--demo-a);border-radius:99px;padding:5px 12px;transition:all .35s}
.d-bars{display:flex;flex-direction:column;gap:9px;margin-bottom:20px}
.d-bars i{height:8px;border-radius:4px;background:currentColor;opacity:.14;display:block}
.d-input{border:1.5px solid currentColor;opacity:.9;border-radius:var(--demo-r);padding:12px 16px;
  font-size:.9rem;margin-bottom:16px;transition:border-radius .25s,box-shadow var(--fast);color:inherit}
.d-input:focus{outline:none;border-color:var(--demo-a);box-shadow:0 0 0 3px color-mix(in srgb,var(--demo-a) 30%,transparent)}
.d-actions{display:flex;gap:10px;margin-bottom:20px}
.d-btn{background:var(--demo-a);color:#fff;border-radius:var(--demo-r);padding:12px 20px;font-weight:600;font-size:.88rem;
  transition:border-radius .25s,transform var(--fast) var(--out),background .35s}
.d-btn:hover{transform:translateY(-2px)}
.d-btn.ghost{background:transparent;color:inherit;border:1.5px solid currentColor}
.d-prog{height:6px;border-radius:3px;background:currentColor;position:relative;overflow:hidden;opacity:.9}
.d-prog{background:color-mix(in srgb,currentColor 12%,transparent)}
.d-prog i{position:absolute;inset:0;width:40%;border-radius:3px;background:var(--demo-a);transition:background .35s}
.demo-card.mot .d-prog i{animation:dprog 2.6s var(--inout) infinite}
@keyframes dprog{0%{left:-40%}100%{left:100%}}
.demo-card.mot .d-badge{animation:pulse 2.4s infinite}

/* ---------- design process ---------- */
.proc{position:relative;max-width:900px;padding-left:6px}
.proc-line{position:absolute;left:24px;top:10px;bottom:10px;width:2px;background:rgba(242,241,236,.12);border-radius:2px}
.proc-line i{position:absolute;left:0;top:0;width:100%;height:0%;background:var(--accent);border-radius:2px;
  box-shadow:0 0 14px rgba(88,102,255,.6)}
.p-step{position:relative;display:grid;grid-template-columns:64px 1fr;gap:clamp(18px,3vw,38px);
  padding:clamp(22px,3vw,34px) 0}
.p-no{
  font-family:var(--mono);font-size:.72rem;color:var(--mut);
  width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:var(--paper);border:1.5px solid rgba(242,241,236,.25);position:relative;z-index:1;
  transition:border-color var(--med) var(--out),color var(--med),box-shadow var(--med);
}
.p-step.show .p-no{border-color:var(--accent);color:var(--accent);box-shadow:0 0 18px rgba(88,102,255,.35)}
.p-body h3{font-family:var(--disp);font-weight:800;font-size:clamp(1.2rem,2.6vw,1.7rem);letter-spacing:-.01em;
  text-transform:uppercase;margin-bottom:10px}
.p-body p{color:var(--mut);max-width:680px;font-size:.99rem}
.p-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.p-tags span{font-family:var(--mono);font-size:.56rem;letter-spacing:.12em;text-transform:uppercase;
  border:1px solid rgba(255,255,255,.16);background:var(--glass);border-radius:99px;padding:7px 13px;color:var(--mut);
  transition:all var(--fast) var(--out)}
.p-tags span:hover{color:var(--ink);border-color:var(--accent);transform:translateY(-2px)}
@media(max-width:720px){
  .proc-line{left:18px}
  .p-step{grid-template-columns:44px 1fr;gap:14px}
  .p-no{width:32px;height:32px;font-size:.62rem}
}
body.m-open #mNav a.m-link:nth-child(5){transition-delay:240ms}
@media(max-width:1180px){.n-links{gap:22px}}

/* ---------- process companion widget ---------- */
.proc2{display:grid;grid-template-columns:1fr minmax(300px,400px);gap:clamp(30px,5vw,80px);align-items:start}
@media(max-width:1100px){.proc2{grid-template-columns:1fr}.proc-vis{display:none}}
.proc-vis{
  position:sticky;top:110px;min-height:440px;
  background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border:1px solid rgba(255,255,255,.15);border-radius:24px;
  padding:26px;overflow:hidden;
}
.pv-read{display:flex;gap:8px;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:14px}
.pv-read b{color:var(--accent);font-weight:500}
.pv-stage{position:absolute;inset:70px 26px 26px;opacity:0;transform:translateY(16px);
  transition:opacity .5s var(--out),transform .5s var(--out);pointer-events:none}
.pv-stage.on{opacity:1;transform:none}
.pv-tag{position:absolute;left:0;bottom:0;font-family:var(--mono);font-size:.58rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}

/* s1 — discover */
.pv-av{position:absolute;width:46px;height:46px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35)}
.pv-av::after{content:"";position:absolute;inset:6px;border-radius:50%;background:linear-gradient(135deg,#5866ff,#c878ff);opacity:.7}
.a1{left:8%;top:10%}.a2{left:40%;top:34%}.a3{left:14%;top:58%}
.pv-ring{position:absolute;left:36%;top:26%;width:74px;height:74px;border-radius:50%;
  border:1.5px solid var(--accent);animation:pvring 2.6s var(--inout) infinite}
@keyframes pvring{0%{transform:scale(.7);opacity:1}100%{transform:scale(1.6);opacity:0}}
.pv-bub{position:absolute;font-size:.72rem;color:var(--ink);background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.2);border-radius:12px 12px 12px 3px;padding:8px 12px}
.b1{right:4%;top:16%}.b2{right:10%;top:52%}

/* s2 — wireframe draws itself */
.pv-wire{position:relative;height:78%;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;
  grid-template-rows:20px 70px 60px auto;align-content:start}
.pv-wire i{border:1.5px dashed rgba(255,255,255,.35);border-radius:6px;display:block;animation:wIn .6s var(--out) both}
.w-nav{grid-column:1/4}.w-hero{grid-column:1/4;animation-delay:.15s}
.w-col{animation-delay:.3s}.w-col:nth-child(4){animation-delay:.4s}.w-col:nth-child(5){animation-delay:.5s}
.w-bar{grid-column:1/3;height:10px;border-style:solid;opacity:.5;animation-delay:.6s}
.w-bar.short{grid-column:1/2;animation-delay:.7s}
@keyframes wIn{from{opacity:0;transform:scale(.86)}to{opacity:1;transform:scale(1)}}

/* s3 — tokens assemble */
.pv-toks{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.tk{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:.7rem;border:1px solid rgba(255,255,255,.25);animation:wIn .5s var(--out) both}
.tk.c1{background:#5866ff}.tk.c2{background:#40d2b4;animation-delay:.1s}.tk.c3{background:#c878ff;animation-delay:.2s}
.tk.aa{background:rgba(255,255,255,.1);animation-delay:.3s}
.tk.rd{border-radius:50%;background:rgba(255,255,255,.1);animation-delay:.4s}
.pv-arrow{font-size:1.2rem;color:var(--mut);margin:14px 0;animation:drop 1.8s var(--inout) infinite}
.pv-btn{background:var(--accent);color:#fff;border-radius:12px;padding:13px 22px;font-weight:600;
  box-shadow:0 12px 30px rgba(88,102,255,.4);animation:wIn .5s var(--out) .5s both}

/* s4 — prototype with moving cursor */
.pv-proto{position:relative;height:78%;border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:12px;overflow:hidden}
.pp-bar{display:block;height:14px;border-radius:7px;background:rgba(255,255,255,.14);margin-bottom:10px}
.pp-card{display:block;height:52px;border-radius:8px;background:rgba(255,255,255,.08);margin-bottom:10px;border:1px solid rgba(255,255,255,.1)}
.pp-cursor{position:absolute;width:12px;height:12px;border-radius:50%;background:#fff;
  box-shadow:0 0 0 2px rgba(0,0,0,.3);animation:ppmove 4.5s var(--inout) infinite}
.pp-ripple{position:absolute;width:26px;height:26px;border-radius:50%;border:2px solid var(--accent);
  opacity:0;animation:pprip 4.5s var(--inout) infinite}
@keyframes ppmove{0%,100%{left:14%;top:22%}40%{left:64%;top:38%}45%{left:64%;top:38%;transform:scale(.8)}50%{left:64%;top:38%;transform:scale(1)}80%{left:30%;top:66%}}
@keyframes pprip{44%{opacity:0;transform:scale(.4)}50%{opacity:1;left:62%;top:35%}62%{opacity:0;transform:scale(1.6);left:62%;top:35%}0%,100%{opacity:0;left:62%;top:35%}}

/* s5 — ship terminal */
.pv-term{font-family:var(--mono);font-size:.74rem;display:flex;flex-direction:column;gap:14px;color:var(--mut)}
.pv-term span{animation:wIn .4s var(--out) both}
.pv-term span:nth-child(2){animation-delay:.25s}
.pv-term span:nth-child(3){animation-delay:.5s}
.pv-term span:nth-child(4){animation-delay:.75s}
.pv-term b{color:#2fbf71;margin-left:8px}
.shipline{color:var(--ink)}
.shipline i{font-style:normal;color:var(--accent);animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

/* ---------- portrait morph: smaller footprint + safe zones ---------- */

/* ---------- mobile responsiveness pass ---------- */
@media(max-width:860px){
  .s-card{position:relative;top:0;margin-bottom:26px;min-height:0;transform:none!important;opacity:1!important}
  .stack-tail{display:none}
  .h-orbit{display:none}
  .hpin{height:auto;position:relative}
}
@media(max-width:720px){
  .page-hero h1{font-size:clamp(2.2rem,11vw,3.4rem)}
  .case-hero h1{font-size:clamp(1.9rem,9vw,2.8rem)}
  .holla h2{font-size:clamp(1.8rem,8.5vw,2.6rem);max-width:100%}
  #pDock{display:none}
  .s-info h3{font-size:clamp(1.5rem,7.5vw,2rem)}
  .s-idx{font-size:3.6rem}
  .sec-tag h2{letter-spacing:.16em}
  .lab-grid{gap:20px}
  .demo-card{padding:20px}
  .f-links a{padding:9px 14px;font-size:.58rem}
  .proc{padding-left:0}
  .p-body p{font-size:.93rem}
  .rail{padding:18px 5vw}
  section{padding:44px 5vw}
}


/* images carry width/height for layout stability; let CSS decide the rendered height */
:where(img[width][height]){height:auto}

/* ---------- icons: inline SVG arrows (replace text-glyph arrows) ---------- */
.ic{display:inline-block;width:1em;height:1em;flex:none;vertical-align:-.14em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
button .ic,a .ic{pointer-events:none}
