/* Mohammad Rashid: shared styles for every page. Tokens and rules are documented in DESIGN.md. */
:root {
  --ground: #f4f4f1;
  --ground-2: #ecebe6;
  --card: #ffffff;
  --line: #e3e2dc;
  --line-2: #d3d2cb;
  --ink: #15161a;
  --ink-2: #3f414a;
  --muted: #676974;

  --req: #9a5a00;   --req-bg: #fbf0dc;
  --des: #5b4ff0;   --des-bg: #eceafe;
  --bld: #1a5fcc;   --bld-bg: #e3eefd;
  --shp: #0f6e4e;   --shp-bg: #dff3ea;  --shp-dot: #1fa971;

  --on-ink: #ffffff;  --on-ink-muted: #a9abb4;  --ink-hover: #26272e;
  --bar-bg: rgba(244,244,241,.82);
  --wash: rgba(21,22,26,.045);
  --selection: rgba(21,22,26,.14);
  --dot: rgba(21,22,26,.07);
  --logo-well: #ffffff;
  --thumb-blue: #e5ecf9;  --thumb-warm: #f1ecfe;  --thumb-sand: #fbf2e0;
  --shadow-ink: rgba(21,22,26,.6);

  /* career timeline: its own palette, separate from the four workflow statuses */
  --lime: #e9fd6e;  --on-lime: #15161a;   /* 11 Media lime: a fill under ink text, never text on paper */
  --rm-eng: #e9fd6e;  --rm-prd: #ff8a65;  --rm-edi: #8fd0f5;  --rm-edu: #cdbdf6;  --rm-edu-2: #e3d9fb;  --rm-text: #15161a;

  --sans: "Mona Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
  --mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
  --r-lg: 20px;
  --max: 1240px;
  --ease: cubic-bezier(.16, 1, .3, 1);
  --shadow: 0 1px 2px rgba(21,22,26,.05), 0 6px 16px -8px rgba(21,22,26,.12);
  --shadow-lift: 0 2px 4px rgba(21,22,26,.06), 0 18px 36px -14px rgba(21,22,26,.22);
  color-scheme: light;
}

/* Dark theme: follows the system setting until the visitor picks one with the toggle */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ground: #0e0f11;
    --ground-2: #16171a;
    --card: #1a1b1f;
    --line: #2a2b31;
    --line-2: #3a3b42;
    --ink: #ededef;
    --ink-2: #c7c8ce;
    --muted: #9a9ca6;

    --req: #f2b451;   --req-bg: rgba(242,180,81,.14);
    --des: #a99fff;   --des-bg: rgba(169,159,255,.15);
    --bld: #72aaff;   --bld-bg: rgba(114,170,255,.15);
    --shp: #4fdc9d;   --shp-bg: rgba(31,169,113,.18);

    --on-ink: #15161a;  --on-ink-muted: #5d5f69;  --ink-hover: #ffffff;
    --bar-bg: rgba(14,15,17,.78);
    --wash: rgba(255,255,255,.06);
    --selection: rgba(255,255,255,.2);
    --dot: rgba(255,255,255,.06);
    --thumb-blue: #1a2233;  --thumb-warm: #221d35;  --thumb-sand: #2a2417;
    --shadow-ink: rgba(0,0,0,.6);
    --shadow: 0 1px 2px rgba(0,0,0,.3), 0 6px 16px -8px rgba(0,0,0,.5);
    --shadow-lift: 0 2px 4px rgba(0,0,0,.3), 0 18px 36px -14px rgba(0,0,0,.7);
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --ground: #0e0f11;
  --ground-2: #16171a;
  --card: #1a1b1f;
  --line: #2a2b31;
  --line-2: #3a3b42;
  --ink: #ededef;
  --ink-2: #c7c8ce;
  --muted: #9a9ca6;

  --req: #f2b451;   --req-bg: rgba(242,180,81,.14);
  --des: #a99fff;   --des-bg: rgba(169,159,255,.15);
  --bld: #72aaff;   --bld-bg: rgba(114,170,255,.15);
  --shp: #4fdc9d;   --shp-bg: rgba(31,169,113,.18);

  --on-ink: #15161a;  --on-ink-muted: #5d5f69;  --ink-hover: #ffffff;
  --bar-bg: rgba(14,15,17,.78);
  --wash: rgba(255,255,255,.06);
  --selection: rgba(255,255,255,.2);
  --dot: rgba(255,255,255,.06);
  --thumb-blue: #1a2233;  --thumb-warm: #221d35;  --thumb-sand: #2a2417;
  --shadow-ink: rgba(0,0,0,.6);
  --shadow: 0 1px 2px rgba(0,0,0,.3), 0 6px 16px -8px rgba(0,0,0,.5);
  --shadow-lift: 0 2px 4px rgba(0,0,0,.3), 0 18px 36px -14px rgba(0,0,0,.7);
  color-scheme: dark;
}
:root[data-theme="light"] { color-scheme: light; }

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: 84px; -webkit-text-size-adjust: 100%; scrollbar-color: var(--line-2) var(--ground); }
body {
  background: var(--ground);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16.5px;
  line-height: 1.6;
  font-weight: 420;
  font-variant-numeric: lining-nums;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
::selection { background: var(--selection); }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; border-radius: 6px; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--ground); }
::-webkit-scrollbar-thumb { background: var(--line-2); border-radius: 10px; border: 2px solid var(--ground); }

.wrap { width: 100%; max-width: var(--max); margin: 0 auto; padding: 0 32px; }
.ico { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.ico-sm { width: 15px; height: 15px; }
.mono { font-family: var(--mono); font-feature-settings: "tnum"; }
.tnum { font-variant-numeric: tabular-nums; }

h1, h2, h3 { font-stretch: 112%; letter-spacing: -0.035em; line-height: 1.02; font-weight: 760; text-wrap: balance; }
h2 { font-size: clamp(2.2rem, 4.4vw, 3.5rem); }
.lede { color: var(--muted); font-size: 1.1rem; max-width: 56ch; margin-top: 16px; text-wrap: pretty; }

section { padding: 150px 0; }
.sec-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; margin-bottom: 56px; flex-wrap: wrap; }

/* ---------- Status marks ---------- */
.st { width: 14px; height: 14px; flex: none; }
.st-req { color: var(--req); } .st-des { color: var(--des); } .st-bld { color: var(--bld); } .st-shp { color: var(--shp-dot); }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  height: 46px; padding: 0 20px; border-radius: 999px;
  font-weight: 600; font-size: .95rem; white-space: nowrap;
  transition: transform .3s var(--ease), background .2s, box-shadow .3s var(--ease), border-color .2s;
}
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0) scale(.98); }
.btn-ink { background: var(--ink); color: var(--on-ink); box-shadow: 0 1px 0 rgba(255,255,255,.12) inset, 0 8px 18px -10px var(--shadow-ink); }
.btn-ink:hover { background: var(--ink-hover); }
.btn-line { background: var(--card); border: 1px solid var(--line-2); }
.btn-line:hover { border-color: var(--ink-2); }
.btn-sm { height: 36px; padding: 0 14px; font-size: .86rem; gap: 7px; }

/* ---------- Top bar ---------- */
.bar {
  position: fixed; inset: 0 0 auto 0; z-index: 60;
  background: var(--bar-bg);
  backdrop-filter: saturate(160%) blur(14px); -webkit-backdrop-filter: saturate(160%) blur(14px);
  border-bottom: 1px solid transparent; transition: border-color .3s;
}
.bar.scrolled { border-bottom-color: var(--line); }
.bar .wrap { height: 66px; display: flex; align-items: center; gap: 24px; }
.ws { display: flex; align-items: center; gap: 10px; font-weight: 650; font-size: .95rem; white-space: nowrap; }
.ws-mark { width: 28px; height: 28px; border-radius: 8px; background: #15161a; box-shadow: 0 0 0 1px var(--line); display: grid; place-items: center; }
.ws-mark svg { width: 28px; height: 28px; }
.ws .slash { color: var(--line-2); font-weight: 400; }
.ws .sub { color: var(--muted); font-weight: 480; }
.tabs { display: flex; gap: 2px; margin-left: 12px; }
.tabs a {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 7px 12px; border-radius: 8px; font-size: .9rem; color: var(--muted); font-weight: 520;
  transition: color .2s, background .2s, box-shadow .2s;
}
.tabs a:hover { color: var(--ink); background: var(--wash); }
.tabs a.on { color: var(--ink); background: var(--card); box-shadow: 0 0 0 1px var(--line); }
.bar-r { margin-left: auto; display: flex; align-items: center; gap: 10px; }

/* ---------- Hero ---------- */
.hero { padding: 148px 0 40px; }
.hero-grid { display: grid; grid-template-columns: minmax(0, 5.6fr) minmax(0, 6.4fr); gap: 64px; align-items: center; }
.who { display: flex; align-items: center; gap: 14px; }
.who img { width: 56px; height: 56px; border-radius: 16px; object-fit: cover; object-position: 50% 30%; box-shadow: 0 0 0 3px var(--card), 0 0 0 4px var(--line); }
.who strong { display: block; font-size: 1.02rem; font-weight: 650; line-height: 1.3; }
.who span { color: var(--muted); font-size: .9rem; }
.hero h1 { font-size: clamp(2.75rem, 5.4vw, 4.6rem); font-stretch: 118%; margin: 40px 0 0; }
.hero h1 .soft { color: var(--muted); display: block; }
.hero .pitch { font-size: 1.16rem; color: var(--ink-2); max-width: 42ch; margin-top: 22px; }
.hero-cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 36px; }

/* ---------- Board ---------- */
.board-wrap { position: relative; }
.board {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px;
  padding: 10px; border-radius: var(--r-lg);
  background: radial-gradient(circle at 1px 1px, var(--dot) 1px, transparent 0) 0 0 / 16px 16px, var(--ground-2);
  min-height: 400px;
  transition: grid-template-columns .8s var(--ease);
}
.col { display: flex; flex-direction: column; min-width: 0; }
.col-h { display: flex; align-items: center; gap: 8px; padding: 6px 6px 12px; font-size: .84rem; font-weight: 600; white-space: nowrap; }
.col-h .n { color: var(--muted); font-weight: 500; }
.col-list { display: flex; flex-direction: column; gap: 8px; flex: 1; }
.tk { background: var(--card); border-radius: 10px; padding: 12px; box-shadow: 0 0 0 1px var(--line), 0 1px 2px rgba(21,22,26,.04); display: grid; gap: 10px; }
.tk-title { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: .9rem; line-height: 1.25; }
.tk-foot { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.tk-av { width: 20px; height: 20px; border-radius: 6px; object-fit: contain; background: var(--logo-well); box-shadow: 0 0 0 1px var(--line); padding: 2px; flex: none; }
.tk-av.full { padding: 0; }
.tk-hero { position: relative; z-index: 2; box-shadow: 0 0 0 1.5px var(--ink), 0 8px 18px -10px rgba(21,22,26,.35); }
.chip {
  display: inline-flex; align-items: center; gap: 6px;
  height: 24px; padding: 0 9px; border-radius: 999px; font-size: .76rem; font-weight: 560; white-space: nowrap;
  background: var(--ground); color: var(--ink-2); box-shadow: 0 0 0 1px var(--line) inset;
}
.chip .ico { width: 13px; height: 13px; }
.c-req { background: var(--req-bg); color: var(--req); box-shadow: none; }
.c-des { background: var(--des-bg); color: var(--des); box-shadow: none; }
.c-bld { background: var(--bld-bg); color: var(--bld); box-shadow: none; }
.c-shp { background: var(--shp-bg); color: var(--shp); box-shadow: none; }
.c-role { background: var(--ink); color: var(--on-ink); box-shadow: none; }
.col[data-s="shp"] .tk:not(.tk-hero) { padding: 9px 10px; }
.col[data-s="shp"] .tk:not(.tk-hero) .tk-foot { display: none; }
.col[data-s="shp"] .tk:not(.tk-hero) .tk-title { font-size: .84rem; }
.tk.flash { animation: flash 1.2s var(--ease); }
@keyframes flash { 0% { box-shadow: 0 0 0 2px var(--shp-dot), 0 0 0 7px rgba(31,169,113,.18); } 100% { box-shadow: 0 0 0 1px var(--line), 0 1px 2px rgba(21,22,26,.04); } }

.strip { display: none; }
.board-cap { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 14px; font-size: .86rem; color: var(--muted); }
.replay { display: inline-flex; align-items: center; gap: 6px; font-weight: 560; color: var(--ink-2); padding: 6px 10px; border-radius: 8px; white-space: nowrap; transition: background .2s, opacity .2s; }
.replay:hover { background: var(--wash); }
.replay[disabled] { opacity: .4; cursor: default; }

.sum {
  display: none; align-items: center; gap: 12px; margin-top: 10px;
  background: var(--ink); color: var(--on-ink); padding: 14px 16px 14px 14px; border-radius: 12px;
  font-size: .9rem; font-weight: 600; line-height: 1.35;
  transition: background .2s;
}
.sum:hover { background: var(--ink-hover); }
.board.landed + .sum { display: flex; animation: sumIn .6s var(--ease) both .45s; }
@keyframes sumIn { from { opacity: 0; transform: translateY(10px); } }
.sum .ok { width: 30px; height: 30px; border-radius: 9px; background: var(--shp-dot); display: grid; place-items: center; flex: none; }
.sum .ok .ico { stroke: #fff; stroke-width: 2.4; width: 16px; height: 16px; }
.sum small { display: block; color: var(--on-ink-muted); font-size: .8rem; font-weight: 450; }
.sum .go { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; font-size: .84rem; font-weight: 560; color: var(--on-ink-muted); white-space: nowrap; }
.sum .go .ico { transition: transform .3s var(--ease); }
.sum:hover .go .ico { transform: translateY(2px); }

/* ---------- Logo strip ---------- */
.logos { margin-top: 96px; padding-top: 36px; border-top: 1px solid var(--line); display: flex; align-items: center; gap: 48px; flex-wrap: wrap; }
.logos p { font-size: .88rem; color: var(--muted); max-width: 11ch; line-height: 1.4; }
.logo-row { display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap; flex: 1; }
.logo-row .logo { display: block; }
.logo-row img { height: var(--h, 28px); width: auto; filter: grayscale(1) brightness(.42); opacity: .6; transition: opacity .35s var(--ease), filter .35s var(--ease), transform .35s var(--ease); }
.logo-row img.keep { border-radius: 8px; }
.logo-row img:hover { filter: none; opacity: 1; transform: translateY(-1px); }

/* ---------- Logo avatars ---------- */
.av { display: flex; }
.av img, .lg-av { width: 28px; height: 28px; border-radius: 8px; object-fit: contain; background: var(--logo-well); box-shadow: 0 0 0 1px var(--line); padding: 4px; flex: none; }
.av img + img { margin-left: -8px; }
.av img.full, .lg-av.full { padding: 0; }

/* ---------- Smart Padel case ---------- */
.case { background: var(--card); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.case-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 72px; align-items: start; }
.case-grid .product { position: sticky; top: 96px; }
.case h2 { max-width: 17ch; font-size: clamp(2.1rem, 3.6vw, 3rem); }
.case h2 .soft { color: var(--muted); display: block; }
.ledger { display: grid; grid-template-columns: 130px 1fr; margin-top: 40px; border-top: 1px solid var(--line); font-size: .95rem; }
.ledger dt, .ledger dd { padding: 13px 0; border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 10px; }
.ledger dt { color: var(--muted); }
.ledger dd { font-weight: 560; flex-wrap: wrap; }
.ext { display: inline-flex; align-items: center; gap: 6px; text-decoration: underline; text-decoration-color: var(--line-2); text-underline-offset: 3px; transition: text-decoration-color .2s; }
.ext:hover { text-decoration-color: var(--ink); }
.ext .ico { color: var(--muted); }

.apps { margin-top: 44px; }
.apps h3 { font-size: 1.05rem; font-stretch: 105%; letter-spacing: -.01em; margin-bottom: 12px; }
.apps ul { list-style: none; display: grid; }
.apps li { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; align-items: center; column-gap: 14px; row-gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.apps li:first-child { border-top: 1px solid var(--line); }
.apps .lg { width: 36px; height: 36px; border-radius: 10px; background: var(--ground); display: grid; place-items: center; flex: none; }
.apps .lg .ico { width: 17px; height: 17px; color: var(--ink-2); }
.apps b { display: block; font-size: .95rem; font-weight: 620; line-height: 1.3; }
.apps small { display: block; font-size: .82rem; color: var(--muted); }
.stores { display: flex; gap: 8px; justify-content: flex-end; }
.stores a { display: block; border-radius: 7px; transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.stores a:hover { transform: translateY(-1px); box-shadow: var(--shadow); }
.stores img { height: 32px; width: auto; }

/* Smart Padel dashboard replica: the product's own dark UI, rebuilt with sample data */
.product { display: grid; gap: 14px; min-width: 0; }
.app { background: #000; color: #f2f2f4; border-radius: 18px; overflow: hidden; box-shadow: 0 0 0 1px #26262a, var(--shadow-lift); display: grid; grid-template-columns: 46px minmax(0, 1fr); font-size: 12px; }
.app-rail { background: #121214; border-right: 1px solid #222226; display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 14px 0; }
.app-rail i { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; color: #7c7c82; transition: background .25s, color .25s; }
.app-rail i.on { background: #182640; color: #6ea8ff; }
.app-rail .ico { width: 16px; height: 16px; }
.app-main { padding: 14px 16px 16px; min-width: 0; }
.app-top { display: flex; align-items: center; gap: 8px; border-bottom: 1px solid #222226; }
.app-tabs { display: flex; gap: 18px; }
.app-tabs button { font-size: .9rem; font-weight: 680; color: #8e8e93; padding: 4px 0 10px; margin-bottom: -1px; border-bottom: 2px solid transparent; transition: color .2s, border-color .2s; }
.app-tabs button:hover { color: #d9d9de; }
.app-tabs button[aria-selected="true"] { color: #5b9cff; border-color: #3b82f6; }
.app-tabs button:focus-visible { outline-color: #5b9cff; }
.app-date { margin-left: auto; padding: 5px 10px; border-radius: 8px; background: #1c1c1e; box-shadow: 0 0 0 1px #2c2c30 inset; color: #d0d0d4; font-size: .72rem; white-space: nowrap; }
.app-new { padding: 5px 10px; border-radius: 8px; background: #d8f23a; color: #111; font-weight: 680; font-size: .72rem; white-space: nowrap; }
.app-view { margin-top: 12px; min-height: 452px; }
.app-view[hidden] { display: none; }

.sch-scroll { overflow-x: auto; scrollbar-color: #2c2c30 #000; }
.sch { position: relative; display: grid; grid-template-columns: 38px repeat(4, minmax(112px, 1fr)); grid-template-rows: 30px repeat(14, 30px); column-gap: 4px; min-width: 500px; }
.sch-h { grid-row: 1; align-self: center; text-align: center; font-weight: 650; font-size: .74rem; color: #e5e5ea; }
.sch-t { grid-column: 1; font-family: var(--mono); font-size: .62rem; color: #6e6e74; transform: translateY(-7px); }
.sch-col { grid-row: 2 / -1; border-radius: 6px; background: repeating-linear-gradient(to bottom, #111113 0 29px, #202024 29px 30px); }
.bk { position: relative; z-index: 1; margin: 2px 1px; border-radius: 6px; padding: 4px 6px; color: #16161a; display: flex; flex-direction: column; gap: 2px; overflow: hidden; min-width: 0; }
.bk.done { background: #9d9da3; }
.bk.conf { background: #e6d6fc; }
.bk.conf.trn { background: #c3e5fb; }
.bk-top { display: flex; align-items: center; gap: 4px; font-size: .58rem; color: #3a3a40; white-space: nowrap; }
.bk-top b { margin-left: auto; font-weight: 680; color: #16161a; }
.pl { border-radius: 4px; padding: 0 4px; font-size: .54rem; font-weight: 680; line-height: 1.55; }
.pl-ok { background: #22c55e; color: #fff; }
.pl-done { background: #5c5c62; color: #ececf0; }
.bk-n { font-weight: 720; font-size: .7rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bk-s { font-size: .6rem; color: #45454c; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sch-now { position: absolute; left: 38px; right: 0; border-top: 1.5px dashed #3b82f6; z-index: 2; pointer-events: none; }
.sch-now span { position: absolute; right: 0; top: -9px; background: #3b82f6; color: #fff; font-family: var(--mono); font-size: .6rem; padding: 1px 5px; border-radius: 4px; }

.occ-h { display: flex; align-items: center; justify-content: space-between; font-weight: 680; font-size: .84rem; }
.occ-pill { background: #22c55e; color: #062b12; border-radius: 999px; padding: 1px 9px; font-size: .72rem; font-weight: 720; }
.occ-row { margin-top: 16px; }
.occ-row > span { display: flex; align-items: baseline; gap: 6px; font-size: .72rem; font-weight: 650; color: #e5e5ea; }
.occ-row small { color: #6e6e74; font-weight: 450; }
.occ-cells { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 3px; margin-top: 7px; }
.occ-cells > div { text-align: center; }
.occ-cells b { display: block; border-radius: 5px; padding: 6px 0; font-size: .66rem; font-weight: 720; color: #0d1f10; }
.occ-cells small { display: block; margin-top: 4px; font-family: var(--mono); font-size: .58rem; color: #6e6e74; }
.o1 { background: #ef4444; } .occ-cells b.o1 { color: #fff; } .o2 { background: #fb923c; } .o3 { background: #facc15; } .o4 { background: #4ade80; } .o5 { background: #22c55e; }
.occ-leg { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 20px; font-size: .64rem; color: #8e8e93; }
.occ-leg i { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 5px; }
.mock-note { font-size: .82rem; color: var(--muted); display: flex; align-items: center; gap: 8px; }

/* ---------- Stack ---------- */
.stack { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
.grp { border-top: 1px solid var(--line-2); padding-top: 22px; }
.grp h3 { font-size: 1.05rem; font-stretch: 105%; letter-spacing: -.01em; display: flex; align-items: center; gap: 10px; margin-bottom: 20px; }
.grp h3 .ico { color: var(--muted); }
.tiles { display: flex; flex-wrap: wrap; gap: 8px; }
.tile { display: inline-flex; align-items: center; gap: 10px; height: 44px; padding: 0 14px 0 11px; border-radius: 12px; background: var(--card); box-shadow: 0 0 0 1px var(--line); font-size: .9rem; font-weight: 560; transition: transform .35s var(--ease), box-shadow .25s; }
.tile:hover { transform: translateY(-2px); box-shadow: 0 0 0 1px var(--line-2), var(--shadow); }
.tile img { width: 22px; height: 22px; }
.tile .ico { width: 20px; height: 20px; color: var(--ink-2); }

.creds { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: 40px; margin-top: 72px; align-items: start; }
.cert { display: flex; align-items: center; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.cert:last-child { border-bottom: 0; padding-bottom: 0; }
.grp h3 + .cert { padding-top: 0; }
.cert .lg { width: 40px; height: 40px; border-radius: 12px; background: var(--logo-well); box-shadow: 0 0 0 1px var(--line); display: grid; place-items: center; flex: none; }
.cert .lg img { width: 22px; height: 22px; object-fit: contain; }
.cert b { display: block; font-size: .94rem; font-weight: 600; line-height: 1.3; }
.cert span { font-size: .82rem; color: var(--muted); }
.cert time { margin-left: auto; font-family: var(--mono); font-size: .78rem; color: var(--muted); white-space: nowrap; }
.langs { display: flex; flex-wrap: wrap; gap: 8px; }
.langs .chip { height: 32px; padding: 0 12px; font-size: .84rem; background: var(--card); }
.langs .chip em { font-style: normal; color: var(--muted); font-weight: 480; }

/* ---------- Reveal (content stays visible without JS) ---------- */
.js .rv { opacity: 0; transform: translateY(14px); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: calc(var(--i, 0) * 70ms); }
.js .rv.in { opacity: 1; transform: none; }
.js .tiles .tile { opacity: 0; transform: translateY(10px) scale(.96); transition: opacity .6s var(--ease), transform .6s var(--ease), background .25s, box-shadow .25s; transition-delay: calc(var(--i, 0) * 45ms); }
.js .tiles.in .tile { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; transition-delay: 0s !important; scroll-behavior: auto !important; }
  .js .rv, .js .tiles .tile { opacity: 1; transform: none; }
}

/* theme-specific logo files: light-page art by default, dark-page art in dark theme */
.for-dark { display: none !important; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .for-dark { display: block !important; }
  :root:not([data-theme="light"]) .for-light { display: none !important; }
  :root:not([data-theme="light"]) .tile img:is([src*="cursor"], [src*="github.svg"], [src*="vercel"], [src*="railway"]) { filter: invert(1); }
  :root:not([data-theme="light"]) .logo-row img { filter: grayscale(1) brightness(1.25); }
  :root:not([data-theme="light"]) .logo-row img:hover { filter: none; }
  :root:not([data-theme="light"]) .scrim { background: rgba(0,0,0,.5); }
}
:root[data-theme="dark"] .for-dark { display: block !important; }
:root[data-theme="dark"] .for-light { display: none !important; }
:root[data-theme="dark"] .tile img:is([src*="cursor"], [src*="github.svg"], [src*="vercel"], [src*="railway"]) { filter: invert(1); }
:root[data-theme="dark"] .logo-row img { filter: grayscale(1) brightness(1.25); }
:root[data-theme="dark"] .logo-row img:hover { filter: none; }
:root[data-theme="dark"] .scrim { background: rgba(0,0,0,.5); }

/* theme toggle */
.theme-btn { width: 36px; height: 36px; border-radius: 999px; display: grid; place-items: center; color: var(--ink-2); box-shadow: 0 0 0 1px var(--line-2) inset; background: var(--card); transition: color .2s, box-shadow .2s, transform .3s var(--ease); }
.theme-btn:hover { color: var(--ink); box-shadow: 0 0 0 1px var(--ink-2) inset; }
.theme-btn:active { transform: scale(.94); }
.theme-btn .ico { width: 17px; height: 17px; transition: transform .5s var(--ease); }
.theme-btn:hover .ico { transform: rotate(-20deg); }
.theme-btn .i-sun { display: none; }
.dark-now .theme-btn .i-sun { display: block; }
.dark-now .theme-btn .i-moon { display: none; }

/* ---------- Responsive ---------- */
@media (max-width: 1100px) {
  .hero-grid, .case-grid { grid-template-columns: minmax(0, 1fr); gap: 56px; }
  .tabs { display: none; }
  .case-grid .product { position: static; }
  .stack { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .creds { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  body { font-size: 16px; }
  .wrap { padding: 0 16px; }
  section { padding: 100px 0; }
  .hero { padding: 104px 0 72px; }
  .hero h1 { margin-top: 32px; }
  .bar-r .btn-line { display: none; }
  .hero-cta .btn { flex: 1 1 auto; }
  .board-wrap { margin: 0 -16px; }
  .board { grid-template-columns: repeat(4, calc(100vw - 32px)); overflow-x: auto; scroll-snap-type: x mandatory; border-radius: 0; padding: 10px 16px; scroll-padding: 0 16px; min-height: 250px; }
  .col { scroll-snap-align: start; }
  .strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; padding: 0 16px 10px; }
  .strip button { display: inline-flex; align-items: center; justify-content: center; gap: 5px; height: 34px; padding: 0 4px; border-radius: 999px; font-size: .76rem; font-weight: 580; color: var(--muted); box-shadow: 0 0 0 1px var(--line) inset; white-space: nowrap; transition: background .2s, color .2s; }
  .strip button .n { font-weight: 480; }
  .strip button[aria-pressed="true"] { background: var(--card); color: var(--ink); box-shadow: 0 0 0 1.5px var(--ink) inset; }
  .board-cap { padding: 0 16px; flex-wrap: wrap; }
  .board-cap > span:first-child { flex: 1 1 100%; min-width: 0; }
  .board-wrap .sum { margin: 10px 16px 0; }
  .logos { margin-top: 64px; gap: 22px; display: grid; }
  .logos p { max-width: none; }
  .logo-row { display: grid; grid-template-columns: repeat(3, auto); gap: 26px 24px; justify-content: space-between; align-items: center; }
  .logo-row img { height: calc(var(--h, 28px) * .82); }
  .ledger { grid-template-columns: 112px 1fr; }
  .app { grid-template-columns: minmax(0, 1fr); border-radius: 14px; }
  .app-rail, .app-new { display: none; }
  .app-main { padding: 12px 10px 12px; }
  .stack { grid-template-columns: 1fr; gap: 32px; }
  .creds { margin-top: 48px; }
  .apps li { grid-template-columns: 36px minmax(0, 1fr); }
  .stores { grid-column: 2; justify-content: flex-start; }
  .props { grid-template-columns: 92px 1fr; }
  .cert { display: grid; grid-template-columns: 40px 1fr; column-gap: 14px; row-gap: 2px; align-items: start; }
  .cert .lg { grid-row: span 2; }
  .cert time { margin-left: 0; grid-column: 2; }
}

/* ---------- Ownership labels on work cards ---------- */
.own { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: -4px; font-size: .8rem; font-weight: 600; color: var(--ink-2); }
.own span { display: inline-flex; align-items: center; gap: 6px; }
.own span::before { content: ""; width: 6px; height: 6px; border-radius: 2px; background: var(--rm-eng); box-shadow: 0 0 0 1px color-mix(in srgb, var(--ink) 18%, transparent); }
.case-cta { margin-top: 26px; }

/* ---------- Case study page ---------- */
.cs-hero { padding: 140px 0 56px; }
.crumb { display: inline-flex; align-items: center; gap: 8px; font-size: .88rem; color: var(--muted); }
.crumb:hover { color: var(--ink); }
.crumb .ico { transform: rotate(180deg); }
.cs-hero h1 { font-size: clamp(2.6rem, 5.6vw, 4.8rem); font-stretch: 118%; margin-top: 28px; max-width: 16ch; }
.cs-hero h1 .soft { color: var(--muted); display: block; }
.cs-hero .lede { font-size: 1.18rem; color: var(--ink-2); max-width: 60ch; margin-top: 24px; }
.cs-meta { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 30px; font-size: .9rem; color: var(--muted); }
.cs-meta b { color: var(--ink); font-weight: 600; }
.cs-meta span { display: inline-flex; align-items: center; gap: 8px; }
.cs-stores { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; align-items: center; }
.cs-stores img { height: 40px; width: auto; }
.cs-stores a { border-radius: 8px; transition: transform .3s var(--ease); }
.cs-stores a:hover { transform: translateY(-1px); }
.cs-stores .ext { margin-left: 8px; font-weight: 580; }
.cs-shot { padding: 0 0 40px; }
.cs-shot .product { max-width: 980px; margin: 0 auto; }
.cs-shot .app-view { min-height: 452px; }

.cs-sec { padding: 120px 0; border-top: 1px solid var(--line); }
.cs-sec > .wrap > h2 { max-width: 20ch; }
.cs-sec .lede { margin-bottom: 48px; }

/* scale: one builder to thousands of players */
.scale { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border-top: 1px solid var(--line-2); }
.scale > div { padding: 22px 18px 0 0; position: relative; }
.scale > div + div { padding-left: 18px; border-left: 1px solid var(--line); }
.scale b { display: block; font-size: clamp(2rem, 3.6vw, 3rem); font-weight: 760; font-stretch: 115%; letter-spacing: -.04em; line-height: 1; }
.scale span { display: block; margin-top: 10px; font-size: .9rem; color: var(--muted); }
.scale > div:first-child b { color: var(--ink); }
.scale > div:first-child b::after { content: ""; display: inline-block; width: 10px; height: 10px; margin-left: 8px; border-radius: 50%; background: var(--shp-dot); vertical-align: middle; }

/* ownership flow */
.flow-own { list-style: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; counter-reset: step; }
.flow-own li { position: relative; background: var(--card); border-radius: 14px; padding: 18px 16px 20px; box-shadow: 0 0 0 1px var(--line); counter-increment: step; }
.flow-own li::before { content: counter(step); font-family: var(--mono); font-size: .72rem; color: var(--muted); }
.flow-own b { display: block; margin-top: 18px; font-size: 1rem; font-weight: 680; line-height: 1.25; }
.flow-own li:not(:last-child)::after { content: ""; position: absolute; top: 50%; right: -8px; width: 6px; height: 6px; border-top: 1.5px solid var(--line-2); border-right: 1.5px solid var(--line-2); transform: translateY(-50%) rotate(45deg); }
.own-note { margin-top: 22px; font-size: .95rem; color: var(--ink-2); max-width: 64ch; }

/* who uses what */
.surfaces { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.surface { background: var(--card); border-radius: var(--r-lg); box-shadow: 0 0 0 1px var(--line); padding: 24px; display: flex; flex-direction: column; gap: 14px; }
.surface .s-ico { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: var(--ground); color: var(--ink-2); }
.surface h3 { font-size: 1.25rem; }
.surface .apps-used { font-size: .84rem; color: var(--muted); }
.surface ul { list-style: none; display: grid; gap: 8px; font-size: .92rem; color: var(--ink-2); }
.surface li { display: grid; grid-template-columns: 16px 1fr; gap: 10px; }
.surface li .ico { width: 15px; height: 15px; margin-top: 4px; color: var(--shp-dot); }

/* architecture: box level only, public stack names */
.arch { display: grid; gap: 14px; max-width: 980px; }
.arch-row { display: grid; gap: 12px; }
.arch-row.clients { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.arch-row.core { grid-template-columns: minmax(0, 1fr); max-width: 520px; margin: 0 auto; width: 100%; }
.arch-row.data { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 520px; margin: 0 auto; width: 100%; }
.node { background: var(--card); border-radius: 14px; box-shadow: 0 0 0 1px var(--line); padding: 16px 18px; }
.node b { display: block; font-weight: 680; font-size: .98rem; }
.node small { display: block; font-size: .82rem; color: var(--muted); margin-top: 2px; }
.node.hub { box-shadow: 0 0 0 1.5px var(--ink); text-align: center; }
.arch-link { height: 26px; width: 2px; margin: 0 auto; background: repeating-linear-gradient(to bottom, var(--line-2) 0 4px, transparent 4px 8px); }
.arch-note { margin-top: 18px; font-size: .88rem; color: var(--muted); display: flex; gap: 8px; align-items: center; }
.tenants { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-top: 10px; }
.tenants .chip { background: var(--card); }

/* how I build with AI */
.ai-steps { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--line-2); }
.ai-steps li { padding: 22px 22px 26px 0; border-bottom: 1px solid var(--line); }
.ai-steps li:nth-child(3n+2), .ai-steps li:nth-child(3n+3) { padding-left: 22px; border-left: 1px solid var(--line); }
.ai-steps .who-tag { display: inline-block; font-size: .72rem; font-weight: 650; padding: 2px 8px; border-radius: 999px; background: var(--ground-2); color: var(--ink-2); }
.ai-steps .who-tag.me { background: var(--ink); color: var(--on-ink); }
.ai-steps b { display: block; margin-top: 14px; font-size: 1.12rem; font-weight: 700; }
.ai-steps p { margin-top: 6px; font-size: .94rem; color: var(--muted); max-width: 34ch; }

/* shipping */
.ship { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.ship .node b { font-size: 1.6rem; font-weight: 760; font-stretch: 112%; letter-spacing: -.03em; }
.ship .node small { font-size: .9rem; margin-top: 8px; }

.cs-end { padding: 120px 0 140px; border-top: 1px solid var(--line); }
.cs-end h2 { max-width: 18ch; }
.cs-end .row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }

/* 404 */
.nf { min-height: 100vh; display: grid; align-content: center; padding: 120px 0; }
.nf .code { font-family: var(--mono); color: var(--muted); font-size: .95rem; }
.nf h1 { font-size: clamp(2.6rem, 6vw, 5rem); font-stretch: 118%; margin-top: 18px; max-width: 14ch; }
.nf h1 .soft { color: var(--muted); display: block; }
.nf .row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 34px; }

@media (max-width: 1100px) {
  .scale { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 28px; }
  .scale > div:nth-child(4) { padding-left: 0; border-left: 0; }
  .flow-own { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .flow-own li:nth-child(3)::after { display: none; }
  .surfaces { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ship { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .cs-hero { padding: 104px 0 40px; }
  .cs-sec { padding: 84px 0; }
  .scale { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .scale > div:nth-child(odd) { padding-left: 0; border-left: 0; }
  .scale > div:nth-child(even) { padding-left: 18px; border-left: 1px solid var(--line); }
  .flow-own { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .flow-own li::after { display: none; }
  .surfaces { grid-template-columns: 1fr; }
  .arch-row.clients { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ai-steps { grid-template-columns: 1fr; }
  .ai-steps li, .ai-steps li:nth-child(3n+2), .ai-steps li:nth-child(3n+3) { padding: 20px 0; border-left: 0; }
  .cs-stores img { height: 36px; }
}
@media (max-width: 420px) {
  .bar-r .btn-ink.btn-sm { display: none; }
}

/* ---------- Case study: decisions ---------- */
.decs { display: grid; gap: 16px; }
.dec { background: var(--card); border-radius: var(--r-lg); box-shadow: 0 0 0 1px var(--line); padding: 28px; }
.dec h3 { display: flex; align-items: baseline; gap: 14px; font-size: clamp(1.35rem, 2.2vw, 1.75rem); }
.dec h3 .n { font-family: var(--mono); font-size: .8rem; font-weight: 500; letter-spacing: 0; color: var(--muted); }
.dec dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin-top: 22px; border-top: 1px solid var(--line); }
.dec dl > div { padding: 18px 22px 0 0; }
.dec dl > div + div { padding-left: 22px; border-left: 1px solid var(--line); }
.dec dt { font-size: .76rem; font-weight: 650; color: var(--muted); }
.dec dd { margin-top: 6px; font-size: .98rem; color: var(--ink-2); text-wrap: pretty; }
.dec .res dt { color: var(--shp); }
.dec .res dd { color: var(--ink); font-weight: 600; }
@media (max-width: 760px) {
  .dec { padding: 22px; }
  .dec dl { grid-template-columns: 1fr; }
  .dec dl > div, .dec dl > div + div { padding: 16px 0 0; border-left: 0; }
  .dec dl > div + div { margin-top: 16px; border-top: 1px solid var(--line); }
}

/* ---------- Experience intro: the short career story ---------- */
.lede.story { max-width: 60ch; color: var(--ink-2); }
.story-2 { margin-top: 12px; max-width: 60ch; font-size: .98rem; color: var(--muted); text-wrap: pretty; }

/* ---------- Case study: headline business figure ---------- */
.money { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px 22px; margin-bottom: 40px; }
.money b { font-size: clamp(3.2rem, 7vw, 5.6rem); font-weight: 780; font-stretch: 118%; letter-spacing: -.045em; line-height: .95; }
.money span { max-width: 34ch; font-size: 1.05rem; color: var(--ink-2); }
.money em { font-style: normal; color: var(--shp); font-weight: 650; }

/* ---------- Case study extras ---------- */
.arch-row.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.flow-own.n3 { grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 820px; }
.flow-own.n4 { grid-template-columns: repeat(4, minmax(0, 1fr)); max-width: 980px; }
.flow-own.n5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.next-cs { display: flex; align-items: center; gap: 18px; margin-top: 64px; padding: 26px 28px; border-radius: var(--r-lg); background: var(--card); box-shadow: 0 0 0 1px var(--line); max-width: 560px; transition: box-shadow .35s var(--ease), transform .35s var(--ease); }
.next-cs:hover { box-shadow: 0 0 0 1px var(--line-2), var(--shadow-lift); transform: translateY(-2px); }
.next-cs small { display: block; font-size: .8rem; color: var(--muted); }
.next-cs b { font-size: 1.5rem; font-weight: 760; font-stretch: 112%; letter-spacing: -.03em; }
.next-cs > span, .next-cs b { flex: 1; }
.next-cs .ico { width: 22px; height: 22px; transition: transform .35s var(--ease); }
.next-cs:hover .ico { transform: translateX(4px); }
.next-cs small + b { margin-top: 2px; }
.draft-bar { position: sticky; top: 66px; z-index: 50; background: #fff3c4; color: #5a4300; border-bottom: 1px solid #f0d77a; font-size: .9rem; padding: 10px 0; }
.draft-bar + .cs-hero { padding-top: 90px; }
@media (max-width: 1100px) {
  .flow-own.n4, .flow-own.n5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .flow-own.n4 li::after, .flow-own.n5 li::after { display: none; }
}
@media (max-width: 760px) {
  .arch-row.three { grid-template-columns: 1fr; }
  .flow-own.n3 { grid-template-columns: 1fr; }
}

/* ---------- Replica: tabs row, toolbar and the four extra views ---------- */
.explore { font-size: .82rem; font-weight: 650; color: var(--muted); }
.app-tabs { overflow-x: auto; scrollbar-width: none; flex: 1; gap: 16px; }
.app-tabs::-webkit-scrollbar { display: none; }
.app-tabs button { white-space: nowrap; font-size: .84rem; }
.app-bar { display: flex; justify-content: flex-end; gap: 8px; margin-bottom: 10px; }
.rp-center { display: grid; place-items: center; min-height: 440px; }

.rp-phone { width: 260px; background: #1b1b1e; border-radius: 34px; padding: 8px; box-shadow: 0 0 0 1px #2c2c30, 0 30px 60px -30px rgba(0,0,0,.8); }
.rp-screen { position: relative; background: #0b0b0c; border-radius: 27px; min-height: 420px; padding: 18px 14px 58px; color: #f2f2f4; display: grid; align-content: start; gap: 8px; font-size: 12px; }
.rp-top { display: flex; align-items: center; justify-content: space-between; }
.rp-top small { display: block; color: #8e8e93; font-size: .7rem; }
.rp-top b { font-size: 1.05rem; font-weight: 720; }
.rp-av { width: 30px; height: 30px; border-radius: 50%; background: #d8f23a; color: #111; display: grid; place-items: center; font-weight: 750; font-size: .66rem; }
.rp-h { margin-top: 6px; font-size: .74rem; font-weight: 680; color: #c8c8cd; }
.rp-days { display: flex; gap: 5px; }
.rp-days button { flex: 1; border-radius: 10px; padding: 5px 0; font-size: .6rem; color: #8e8e93; background: #1c1c1e; line-height: 1.25; }
.rp-days button b { display: block; font-size: .82rem; color: #f2f2f4; }
.rp-days button[aria-pressed="true"] { background: #d8f23a; color: #3a4200; }
.rp-days button[aria-pressed="true"] b { color: #111; }
.rp-slot-list { display: grid; gap: 5px; }
.rp-slots { display: grid; grid-template-columns: 50px repeat(3, 1fr); gap: 5px; align-items: center; }
.rp-slots > span { font-size: .64rem; color: #8e8e93; }
.rp-slot { height: 26px; border-radius: 8px; font-family: var(--mono); font-size: .64rem; color: #f2f2f4; background: #1c1c1e; box-shadow: 0 0 0 1px #2c2c30 inset; }
.rp-slot[disabled] { color: #4a4a4f; text-decoration: line-through; box-shadow: none; cursor: not-allowed; }
.rp-slot[aria-pressed="true"] { background: #22c55e; color: #fff; box-shadow: none; }
.rp-match { display: flex; align-items: center; gap: 8px; background: #1c1c1e; border-radius: 12px; padding: 9px 10px; }
.rp-match > div { flex: 1; min-width: 0; }
.rp-match b { display: block; font-size: .7rem; }
.rp-match small { font-size: .6rem; color: #8e8e93; }
.rp-seats { display: flex; }
.rp-seats i { width: 14px; height: 14px; border-radius: 50%; background: #3b82f6; box-shadow: 0 0 0 2px #1c1c1e; margin-left: -4px; }
.rp-seats i.free { background: transparent; box-shadow: 0 0 0 1px #4a4a4f inset, 0 0 0 2px #1c1c1e; }
.rp-join { font-size: .62rem; font-weight: 700; color: #111; background: #d8f23a; border-radius: 999px; padding: 4px 9px; }
.rp-nav { position: absolute; left: 10px; right: 10px; bottom: 10px; display: flex; justify-content: space-around; background: #1c1c1e; border-radius: 16px; padding: 9px 0; font-size: .6rem; color: #6e6e74; }
.rp-nav .on { color: #d8f23a; font-weight: 700; }

.rp-clock { display: flex; align-items: center; gap: 10px; border-radius: 14px; padding: 11px 12px; background: #d8f23a; color: #111; transition: background .3s; }
.rp-clock[data-in="false"] { background: #2c2c30; color: #f2f2f4; }
.rp-clock > div { flex: 1; }
.rp-clock small { display: block; font-size: .6rem; opacity: .75; }
.rp-clock b { font-family: var(--mono); font-size: 1.2rem; font-weight: 600; }
.rp-clock-b { font-size: .64rem; font-weight: 700; border-radius: 999px; padding: 6px 10px; background: #111; color: #fff; }
.rp-clock[data-in="false"] .rp-clock-b { background: #d8f23a; color: #111; }
.rp-sess { display: flex; gap: 10px; align-items: center; background: #1c1c1e; border-radius: 10px; padding: 7px 10px; }
.rp-sess b { font-family: var(--mono); font-size: .66rem; color: #8e8e93; font-weight: 500; }
.rp-sess span { display: block; font-size: .72rem; font-weight: 650; }
.rp-sess small { font-size: .6rem; color: #8e8e93; }
.rp-skill { display: grid; gap: 6px; background: #1c1c1e; border-radius: 12px; padding: 10px; }
.rp-skill div { display: grid; grid-template-columns: 58px 1fr 22px; gap: 8px; align-items: center; font-size: .62rem; color: #c8c8cd; }
.rp-skill i { height: 6px; border-radius: 6px; background: linear-gradient(90deg, #3b82f6 var(--v), #2c2c30 var(--v)); }
.rp-skill b { text-align: right; font-family: var(--mono); font-weight: 500; }

.rp-tour-h b { display: block; font-size: .95rem; font-weight: 720; }
.rp-tour-h small { color: #8e8e93; font-size: .72rem; }
.rp-bracket { display: grid; grid-template-columns: repeat(3, minmax(150px, 1fr)); gap: 14px; margin-top: 14px; overflow-x: auto; padding-bottom: 4px; }
.rp-round { display: flex; flex-direction: column; justify-content: space-around; gap: 10px; min-height: 380px; }
.rp-round > small { font-size: .66rem; font-weight: 650; color: #8e8e93; }
.rp-m { position: relative; background: #1c1c1e; border-radius: 10px; box-shadow: 0 0 0 1px #2c2c30 inset; overflow: hidden; }
.rp-m > div { display: flex; justify-content: space-between; gap: 8px; padding: 7px 10px; font-size: .7rem; color: #8e8e93; }
.rp-m > div + div { border-top: 1px solid #2c2c30; }
.rp-m > div.w { color: #f2f2f4; font-weight: 650; }
.rp-m b { font-family: var(--mono); font-weight: 500; }
.rp-m.live { box-shadow: 0 0 0 1.5px #22c55e inset; }
.rp-live { display: inline-flex; align-items: center; gap: 5px; font-size: .56rem; font-weight: 750; color: #fff; background: #ef4444; border-radius: 4px; padding: 1px 6px; }
.rp-m .rp-live { position: absolute; top: 5px; right: 30px; }

.rp-tv { width: min(100%, 560px); background: #111113; border-radius: 14px; padding: 8px; box-shadow: 0 0 0 1px #2c2c30, 0 30px 60px -30px rgba(0,0,0,.8); }
.rp-tv-in { aspect-ratio: 16 / 9; background: radial-gradient(120% 90% at 10% 0%, #16213a, #07080b 60%); border-radius: 8px; padding: 5%; display: grid; grid-template-rows: auto 1fr auto; gap: 4%; color: #f2f2f4; container-type: inline-size; }
.rp-tv-h { display: flex; align-items: center; gap: 2.4cqi; }
.rp-tv-h b { font-size: 5cqi; font-weight: 780; font-stretch: 112%; letter-spacing: -.02em; }
.rp-tv-h .rp-live { font-size: 2.2cqi; padding: .3cqi 1.4cqi; }
.rp-tv-h small { margin-left: auto; font-size: 2.4cqi; color: #9aa3b5; }
.rp-score { display: grid; gap: 2cqi; align-content: center; }
.rp-team { display: grid; grid-template-columns: 1fr repeat(3, 7cqi) 11cqi; align-items: center; gap: 1.6cqi; font-size: 4cqi; font-weight: 700; }
.rp-team i { font-style: normal; text-align: center; font-family: var(--mono); font-weight: 500; color: #9aa3b5; }
.rp-team i.cur { color: #f2f2f4; }
.rp-team em { font-style: normal; text-align: center; font-family: var(--mono); font-weight: 600; background: #d8f23a; color: #111; border-radius: 1.2cqi; padding: .4cqi 0; }
.rp-next { display: flex; gap: 3cqi; align-items: baseline; font-size: 2.2cqi; color: #9aa3b5; border-top: 1px solid rgba(255,255,255,.1); padding-top: 2cqi; }
.rp-next small { font-size: 2.2cqi; font-weight: 700; color: #d8f23a; }
.rp-next b { color: #f2f2f4; font-weight: 650; margin-right: .6cqi; }
@media (max-width: 760px) {
  .rp-center { min-height: 400px; }
  .rp-bracket { grid-template-columns: repeat(3, 150px); }
}

/* ---------- Hero: the "why me" line ---------- */
.moat { margin-top: 14px; max-width: 46ch; font-size: 1rem; color: var(--muted); padding-left: 14px; border-left: 2px solid var(--rm-eng); }

/* ---------- Toolkit: six capability groups, collapsed certifications ---------- */
#stack .stack { row-gap: 44px; }
.certs { margin-top: 56px; padding-top: 22px; border-top: 1px solid var(--line); font-size: .92rem; color: var(--muted); }
.certs b { color: var(--ink); font-weight: 650; margin-right: 10px; }



@media (max-width: 1100px) {
  .own-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 16px; }
  .own-grid > div:nth-child(3) { padding-left: 0; border-left: 0; }
}
@media (max-width: 760px) {
  .own-grid { grid-template-columns: 1fr; }
  .own-grid > div, .own-grid > div + div { padding: 14px 0 0; border-left: 0; }
  .now-role { padding: 20px; }
}

/* ---------- Architecture explorer (Smart Padel: under the hood) ---------- */
.xp { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.xp-map { display: grid; gap: 12px; }
.xp-row { display: grid; gap: 10px; }
.xp-row.four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.xp-row.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.xp-row.one { grid-template-columns: minmax(0, 1fr); max-width: 320px; margin: 0 auto; width: 100%; }
.xp-node { text-align: left; background: var(--card); border-radius: 14px; box-shadow: 0 0 0 1px var(--line); padding: 14px 16px; transition: box-shadow .25s, transform .25s var(--ease), background .25s; }
.xp-node:hover { box-shadow: 0 0 0 1px var(--line-2), var(--shadow); transform: translateY(-1px); }
.xp-node b { display: block; font-size: .95rem; font-weight: 680; }
.xp-node small { display: block; margin-top: 2px; font-size: .78rem; color: var(--muted); }
.xp-node.hub { box-shadow: 0 0 0 1.5px var(--ink); }
.xp-node[aria-pressed="true"] { background: var(--ink); color: var(--on-ink); box-shadow: 0 0 0 1.5px var(--ink); }
.xp-node[aria-pressed="true"] small { color: var(--on-ink-muted); }
.xp-panel { position: sticky; top: 96px; background: var(--card); border-radius: var(--r-lg); box-shadow: 0 0 0 1px var(--line); padding: 24px; display: grid; gap: 22px; }
.xp-js .xp-panel { gap: 0; }
.xp-item h3 { font-size: 1.4rem; }
.xp-sub { margin-top: 4px; font-size: .86rem; color: var(--muted); }
.xp-item dl { margin-top: 16px; display: grid; gap: 4px; }
.xp-item dt { margin-top: 10px; font-size: .74rem; font-weight: 650; color: var(--muted); }
.xp-item dd { font-size: .95rem; color: var(--ink-2); }
.xp-item + .xp-item { padding-top: 22px; border-top: 1px solid var(--line); }
.xp-js .xp-item + .xp-item { padding-top: 0; border-top: 0; }

/* ---------- One person, full lifecycle ---------- */
.solo { max-width: 760px; display: grid; justify-items: center; gap: 0; }
.solo-top, .solo-end { background: var(--ink); color: var(--on-ink); border-radius: 999px; padding: 10px 22px; font-weight: 700; display: inline-flex; align-items: center; gap: 10px; }
.solo-end { background: var(--card); color: var(--ink); box-shadow: 0 0 0 1px var(--line); }
.solo-branches { position: relative; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; width: 100%; padding: 34px 0; }
.solo-branches::before { content: ""; position: absolute; top: 0; left: 25%; right: 25%; height: 18px; border: 1.5px solid var(--line-2); border-bottom: 0; border-radius: 12px 12px 0 0; }
.solo-branches::after { content: ""; position: absolute; bottom: 0; left: 25%; right: 25%; height: 18px; border: 1.5px solid var(--line-2); border-top: 0; border-radius: 0 0 12px 12px; }
.solo-b { background: var(--card); border-radius: var(--r-lg); box-shadow: 0 0 0 1px var(--line); padding: 20px 22px; }
.solo-b b { font-size: 1.1rem; font-weight: 720; }
.solo-b ul { list-style: none; margin-top: 10px; display: grid; gap: 6px; font-size: .92rem; color: var(--ink-2); }
.solo-b li::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 2px; margin-right: 10px; vertical-align: middle; background: var(--rm-eng); box-shadow: 0 0 0 1px color-mix(in srgb, var(--ink) 18%, transparent); }
.solo-cap { margin-top: 18px; font-size: 1.3rem; font-weight: 760; font-stretch: 112%; letter-spacing: -.03em; }

/* ---------- Case study grid variants ---------- */
.surfaces.n3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.surfaces.n2 { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 820px; }
.scale.four { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 1100px) {
  .xp { grid-template-columns: 1fr; }
  .xp-panel { position: static; }
  .surfaces.n3 { grid-template-columns: 1fr 1fr; }
  .scale.four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .scale.four > div:nth-child(3) { padding-left: 0; border-left: 0; }
}
@media (max-width: 760px) {
  .xp-row.four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .xp-row.three { grid-template-columns: 1fr; }
  .solo-branches { grid-template-columns: 1fr; }
  .solo-branches::before, .solo-branches::after { left: 50%; right: auto; width: 0; border-radius: 0; border-left: 1.5px solid var(--line-2); border-right: 0; }
  .surfaces.n3, .surfaces.n2 { grid-template-columns: 1fr; }
}

/* ---------- Fixes from the verification pass ---------- */

.xp-row.two { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 66%; margin: 0 auto; width: 100%; }
@media (max-width: 760px) { .xp-row.two { max-width: none; grid-template-columns: 1fr 1fr; } }
.note-plan { margin-top: 12px; font-size: .98rem; color: var(--muted); max-width: 70ch; }

/* =====================================================================
   Motion layer (Nov 2026): smooth scroll, split headings, the phone reel,
   the work index, the career timeline, "Let's talk", the full-screen menu
   and the globe footer. Driven by assets/motion.js and assets/globe.js.
   Every hidden start state is gated by html.motion, so no-JS and reduced
   motion show the finished page.
   ===================================================================== */

/* ---------- Smooth scroll (Lenis) ---------- */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }

/* ---------- Split headings: words (or letters) rise out of a mask ---------- */
[data-split].is-split .w { display: inline-block; overflow: clip; vertical-align: top; padding: 0 .04em .14em; margin: 0 -.04em -.14em; }
[data-split].is-split .wi { display: inline-block; }
html.motion [data-split].is-split .wi { transform: translate3d(0, 112%, 0) rotate(5deg); transform-origin: 0 100%; transition: transform 1.05s var(--ease) calc(var(--wi) * 55ms); }
html.motion [data-split="chars"].is-split .wi { transform: translate3d(0, 105%, 0); filter: blur(6px); transition: transform 1s var(--ease) calc(var(--wi) * 40ms), filter .8s ease calc(var(--wi) * 40ms); }
html.motion [data-split].split-in .wi { transform: none; filter: none; }

/* ---------- Link roll ---------- */
.roll { display: inline-grid; overflow: clip; vertical-align: top; line-height: 1.35; }
.roll > span { grid-area: 1 / 1; transition: transform .5s var(--ease); }
.roll > span + span { transform: translateY(105%); }
a:hover .roll > span:first-child, a:focus-visible .roll > span:first-child { transform: translateY(-105%); }
a:hover .roll > span + span, a:focus-visible .roll > span + span { transform: none; }

/* ---------- Lime button: only inside the menu ---------- */
.btn-lime { background: var(--lime); color: var(--on-lime); }
.btn-lime:hover { filter: brightness(1.04); }

/* ---------- Menu button: label rolls Menu → Close; lime while open ---------- */
.fs-btn {
  height: 36px; padding: 0 12px 0 14px; border-radius: 999px; display: inline-flex; align-items: center; gap: 9px;
  background: var(--card); box-shadow: 0 0 0 1px var(--line-2) inset; font-size: .86rem; font-weight: 600;
  position: relative; z-index: 2; transition: background .3s, color .3s, box-shadow .3s;
}
.fs-btn:hover { box-shadow: 0 0 0 1px var(--ink-2) inset; }
.fs-btn[aria-expanded="true"] { background: var(--lime); color: var(--on-lime); box-shadow: none; }
.fs-lines { width: 14px; height: 10px; position: relative; }
.fs-lines i { position: absolute; left: 0; right: 0; height: 1.75px; border-radius: 2px; background: currentColor; transition: transform .5s var(--ease), top .5s var(--ease); }
.fs-lines i:first-child { top: 1px; } .fs-lines i:last-child { top: 7px; }
.fs-btn[aria-expanded="true"] .fs-lines i:first-child { top: 4px; transform: rotate(45deg); }
.fs-btn[aria-expanded="true"] .fs-lines i:last-child { top: 4px; transform: rotate(-45deg); }
.fs-label { display: inline-grid; overflow: clip; height: 1.3em; line-height: 1.3; }
.fs-label > span { grid-area: 1 / 1; transition: transform .5s var(--ease); }
.fs-label > span + span { transform: translateY(110%); }
.fs-btn[aria-expanded="true"] .fs-label > span:first-child { transform: translateY(-110%); }
.fs-btn[aria-expanded="true"] .fs-label > span + span { transform: none; }

/* ---------- Full-screen menu: a sheet that wipes down, crossed by court lines ---------- */
.fs-menu { position: fixed; inset: 0; z-index: 59; background: var(--ground); padding-top: 66px; overflow-y: auto; }
.fs-menu::before {
  content: ""; position: fixed; inset: 66px 0 0; pointer-events: none;
  background: linear-gradient(var(--line), var(--line)) 50% 0 / 1px 100% no-repeat, linear-gradient(var(--line), var(--line)) 0 50% / 100% 1px no-repeat;
}
.fs-menu[hidden] { display: none; }
html.motion .fs-menu { clip-path: inset(0 0 100% 0); transition: clip-path .62s var(--ease); }
html.motion .fs-menu.open { clip-path: inset(0); }
.fs-grid { position: relative; min-height: calc(100svh - 66px); display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 80px; align-items: end; padding-top: 48px; padding-bottom: 48px; }
.fs-main { display: grid; }
.fs-main a { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; padding: 14px 0 10px; border-bottom: 1px solid var(--line); overflow: clip; }
.fs-main .t { font-size: clamp(2.4rem, 6.4vw, 5.4rem); font-weight: 800; font-stretch: 125%; letter-spacing: -0.04em; line-height: 1; transition: transform .5s var(--ease), color .3s; }
.fs-main .m { color: var(--muted); font-size: .86rem; white-space: nowrap; transition: transform .8s var(--ease) calc(.12s + var(--i) * 70ms); }
.fs-main .m.mono { font-size: .8rem; }
.fs-main:hover a:not(:hover) .t { color: var(--muted); }
.fs-main a:hover .t, .fs-main a:focus-visible .t { transform: translateX(10px); }
html.motion .fs-main .t, html.motion .fs-main .m { transform: translateY(105%); transition: transform .8s var(--ease) calc(.12s + var(--i) * 70ms), color .3s; }
html.motion .fs-menu.open .fs-main .t, html.motion .fs-menu.open .fs-main .m { transform: none; }
html.motion .fs-menu.open .fs-main a:hover .t { transform: translateX(10px); transition-delay: 0s; }
.fs-side { display: grid; justify-items: start; gap: 6px; font-weight: 600; font-size: 1.05rem; }
.fs-side .btn { margin-top: 18px; }
.fs-h { color: var(--muted); font-size: .8rem; font-weight: 560; margin: 0 0 4px; }
html.motion .fs-side { opacity: 0; transition: opacity .5s ease .35s; }
html.motion .fs-menu.open .fs-side { opacity: 1; }
html.menu-open .bar { border-bottom-color: var(--line); }

/* ---------- Replica: tilts up and settles as it scrolls in ---------- */
html.motion .case .product {
  --k: min(1, calc(var(--p, 1) * 2.6));
  transform: perspective(1400px) rotateX(calc((1 - var(--k)) * 10deg)) scale(calc(.93 + var(--k) * .07));
  transform-origin: 50% 0; will-change: transform;
}

/* ---------- Phone reel: a pinned scene; scroll turns the phones ---------- */
.reel-scene { padding: 0; position: relative; }
.reel-stage { position: relative; padding: 120px 0 100px; overflow: hidden; }
.reel-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; flex-wrap: wrap; position: relative; z-index: 3; }
.reel-head h2 .soft { color: var(--muted); display: block; }
.reel-cap { display: flex; gap: 16px; align-items: baseline; max-width: 380px; min-height: 3.2em; }
.reel-cap .mono { font-size: .8rem; color: var(--muted); }
.reel-cap .mono b { color: var(--ink); font-weight: 500; }
.reel-text { display: grid; transition: opacity .16s, transform .16s; }
.reel-text b { font-weight: 650; }
.reel-text span { color: var(--muted); font-size: .95rem; }
.reel-text.is-swap { opacity: 0; transform: translateY(6px); }
.reel { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; padding: 48px 32px 24px; }
.reel-item { flex: none; width: 240px; margin: 0; scroll-snap-align: center; }
.reel-item figcaption { display: none; }
.phone {
  padding: 3.4%; border-radius: 15% / 7%; background: #0c0d10;
  box-shadow: inset 0 0 0 1.5px #3b3c44, inset 0 0 0 4px #0c0d10, 0 2px 4px rgba(21,22,26,.08), 0 30px 60px -26px rgba(21,22,26,.45);
  transition: box-shadow .5s var(--ease);
}
.phone img { width: 100%; height: auto; border-radius: 12% / 5.6%; }
.reel-marquee { position: absolute; left: 0; right: 0; top: 50%; translate: 0 -40%; z-index: 0; pointer-events: none; white-space: nowrap; }
.reel-marquee div {
  display: inline-block; font-size: clamp(5rem, 15vw, 13rem); font-weight: 800; font-stretch: 125%; letter-spacing: -0.05em; line-height: 1;
  color: transparent; -webkit-text-stroke: 1px var(--line-2); transform: translateX(calc(var(--p, 0) * -38%));
}
.reel-note { position: relative; z-index: 3; display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: .86rem; margin-top: 8px; }
html.motion .reel-scene { height: 460vh; }
html.motion .reel-stage { position: sticky; top: 0; height: 100svh; padding: 96px 0 28px; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
html.motion .reel.is-3d { display: block; overflow: visible; padding: 0; position: relative; perspective: 1600px; scroll-snap-type: none; }
html.motion .reel.is-3d .reel-item { position: absolute; left: 50%; top: 50%; width: clamp(190px, min(19vw, 29svh), 300px); transform-style: preserve-3d; will-change: transform, opacity; cursor: pointer; }
html.motion .reel.is-3d .reel-item.is-active { cursor: default; }
.reel-item.is-active .phone { box-shadow: inset 0 0 0 1.5px #3b3c44, inset 0 0 0 4px #0c0d10, 0 0 0 1.5px var(--ink), 0 40px 70px -24px rgba(21,22,26,.55); }

/* ---------- Work index: one row per product; the summary trails the cursor ---------- */
.index, .reach, .line { list-style: none; margin: 0; padding: 0; }
.index { border-top: 1px solid var(--line-2); }
.index > li { border-bottom: 1px solid var(--line); }
.index .row { position: relative; display: grid; grid-template-columns: 76px 32px minmax(0, 1fr) 210px 128px 22px; align-items: center; gap: 20px; padding: 24px 4px; }
.index .row::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 1.5px; background: var(--ink); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--ease); }
.index li:hover .row::after, .index .row:focus-visible::after { transform: scaleX(1); }
.index .key { font: 400 .78rem/1 var(--mono); color: var(--muted); }
.index .av { width: 32px; height: 32px; padding: 4px; border-radius: 8px; background: var(--logo-well); box-shadow: 0 0 0 1px var(--line); display: grid; place-items: center; }
.index .av img { width: 100%; height: 100%; object-fit: contain; background: none; border-radius: 4px; }
.index .ttl b { display: block; font-weight: 760; font-stretch: 115%; letter-spacing: -.025em; font-size: clamp(1.25rem, 2.2vw, 1.7rem); line-height: 1.1; transition: transform .5s var(--ease); }
.index .ttl small { display: block; margin-top: 6px; color: var(--muted); font-size: .86rem; }
.index li:hover .ttl b { transform: translateX(8px); }
.index .co { color: var(--ink-2); font-size: .9rem; }
.index .stat { display: inline-flex; align-items: center; gap: 8px; font-size: .85rem; font-weight: 600; }
.index .stat .st { width: 14px; height: 14px; }
.index .go { width: 20px; height: 20px; color: var(--muted); transition: transform .4s var(--ease), color .3s; }
.index a.row:hover .go { color: var(--ink); transform: translateX(4px); }
.index .desc { color: var(--ink-2); font-size: .95rem; max-width: 60ch; padding: 0 4px 22px 128px; margin-top: -8px; }
@media (hover: hover) and (pointer: fine) { .js .index .desc { display: none; } }
.pv { position: fixed; left: 0; top: 0; z-index: 30; pointer-events: none; width: 300px; margin: 20px 0 0 20px; padding: 18px 18px 16px; border-radius: 14px; background: var(--lime); color: var(--on-lime); box-shadow: 0 2px 4px rgba(21,22,26,.08), 0 24px 50px -20px rgba(21,22,26,.45); opacity: 0; scale: .9; transform-origin: 0 0; transition: opacity .25s, scale .4s var(--ease); }
.pv.show { opacity: 1; scale: 1; }
.pv p { font-size: .95rem; line-height: 1.45; font-weight: 520; margin-bottom: 12px; }
.pv-c, .pv-k { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; margin: 0 6px 4px 0; border-radius: 999px; box-shadow: inset 0 0 0 1px rgba(21,22,26,.3); font-size: .8rem; font-weight: 600; }
.pv-k { background: var(--on-lime); color: var(--lime); box-shadow: none; }

/* ---------- Career: a timeline that draws itself; the card follows the role in view ---------- */
.career-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 88px; align-items: start; }
.career-story { position: sticky; top: 110px; }
.exp-card { display: grid; grid-template-columns: 76px minmax(0, 1fr) auto; align-items: center; gap: 18px; margin: 36px 0 28px; padding: 16px 18px 16px 16px; max-width: 440px; border-radius: var(--r-lg); background: var(--card); box-shadow: 0 0 0 1px var(--line); }
.exp-logo { width: 76px; height: 76px; border-radius: 16px; background: var(--logo-well); box-shadow: 0 0 0 1px var(--line); display: grid; place-items: center; overflow: hidden; color: #15161a; }
.exp-logo img { width: 52px; height: 52px; object-fit: contain; }
.exp-logo img.full { width: 76px; height: 76px; }
.exp-logo .ico { width: 30px; height: 30px; stroke-width: 1.5; }
.exp-meta { display: grid; gap: 3px; min-width: 0; }
.exp-meta .mono { font-size: .76rem; color: var(--muted); }
.exp-meta b { font-weight: 720; font-stretch: 108%; letter-spacing: -.015em; font-size: 1.12rem; line-height: 1.2; }
.exp-meta > span:last-child { color: var(--ink-2); font-size: .92rem; }
.exp-live { display: none; align-items: center; gap: 6px; height: 24px; padding: 0 9px; border-radius: 999px; background: var(--shp-bg); color: var(--shp); font-size: .76rem; font-weight: 600; align-self: start; }
.exp-live i { width: 7px; height: 7px; border-radius: 50%; background: var(--shp-dot); }
.exp-card.is-now .exp-live { display: inline-flex; }
.exp-logo, .exp-meta { transition: opacity .18s, transform .18s; }
.exp-card.swap .exp-logo, .exp-card.swap .exp-meta { opacity: 0; transform: translateY(6px); }
.line { position: relative; padding-left: 34px; }
.line::before, .line::after { content: ""; position: absolute; left: 4px; top: 8px; bottom: 8px; width: 1.5px; background: var(--line-2); }
.line::after { background: var(--ink); transform-origin: top; }
html.motion .line::after { transform: scaleY(clamp(0, calc((var(--p, 1) - .12) * 1.7), 1)); }
.line li { position: relative; padding-bottom: 38px; }
.line li::before { content: ""; position: absolute; left: -34px; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: var(--ground); box-shadow: inset 0 0 0 1.5px var(--line-2); z-index: 1; }
.line li.now::before { background: var(--shp-dot); box-shadow: 0 0 0 4px var(--shp-bg); }
.line .yr { display: block; font-size: .78rem; color: var(--muted); margin-bottom: 8px; }
.line b { display: block; font-weight: 720; font-stretch: 112%; letter-spacing: -.015em; font-size: 1.3rem; line-height: 1.15; }
.line .org { display: block; color: var(--ink-2); margin-top: 4px; }
.line .what { display: block; color: var(--muted); font-size: .94rem; margin-top: 6px; max-width: 52ch; }

/* ---------- Let's talk ---------- */
.talk { font-size: clamp(3.4rem, 12vw, 6rem); font-weight: 820; font-stretch: 125%; letter-spacing: -0.04em; line-height: .95; margin-bottom: 10px; }
.reach { margin-top: 56px; border-top: 1px solid var(--line-2); }
.reach li { border-bottom: 1px solid var(--line); }
.reach a { display: grid; grid-template-columns: 140px minmax(0, 1fr) auto; align-items: center; gap: 20px; padding: 22px 4px; }
.reach .rk { font-size: .82rem; font-weight: 560; color: var(--muted); }
.reach .rval { font-weight: 760; font-stretch: 115%; letter-spacing: -.025em; font-size: clamp(1.25rem, 3vw, 2.3rem); overflow-wrap: anywhere; }
.reach .ico { width: 22px; height: 22px; color: var(--muted); transition: transform .4s var(--ease), color .3s; }
.reach a:hover .ico { color: var(--ink); transform: translate(3px, -3px); }

/* ---------- Footer: the line, the globe, the site's links ---------- */
.foot { border-top: 1px solid var(--line); padding: 0 0 32px; font-size: .92rem; overflow: hidden; }
.greet { padding: 56px 0 44px; white-space: nowrap; }
.greet-row { display: inline-flex; align-items: center; gap: .3em; font-size: clamp(3rem, 9vw, 8rem); font-weight: 780; font-stretch: 125%; letter-spacing: -0.045em; line-height: 1.1; transform: translateX(calc(var(--p, .5) * -30%)); }
.greet-row i { width: .16em; height: .16em; border-radius: 50%; background: var(--shp-dot); flex: none; margin: 0 .2em; }
.foot-grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 56px; align-items: stretch; }
.globe {
  position: relative; border-radius: var(--r-lg); background: var(--ground-2); min-height: 460px; overflow: hidden;
  background-image: radial-gradient(var(--dot) 1px, transparent 1px); background-size: 16px 16px;
  --globe-dot: var(--ink); --globe-sea: var(--card); --globe-ring: var(--line-2); --globe-pin: var(--shp-dot);
  --globe-you: var(--ink); --globe-arc: var(--ink-2); --globe-label: var(--ink);
}
.globe canvas { position: absolute; inset: 0; width: 100%; height: 100%; cursor: grab; touch-action: pan-y; border-radius: inherit; }
.globe.grabbing canvas { cursor: grabbing; }
.globe canvas:focus-visible { outline-offset: -4px; }
.globe-readout { position: absolute; left: 18px; top: 16px; padding: 8px 12px; border-radius: 999px; background: var(--card); box-shadow: 0 0 0 1px var(--line); font-size: .86rem; pointer-events: none; }
.globe-readout b { font-family: var(--mono); font-weight: 500; font-feature-settings: "tnum"; }
.globe-readout span { color: var(--muted); }
.globe-zoom { position: absolute; right: 14px; top: 14px; display: grid; gap: 6px; }
.globe-zoom button { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; background: var(--card); box-shadow: 0 0 0 1px var(--line); transition: box-shadow .2s; }
.globe-zoom button:hover { box-shadow: 0 0 0 1px var(--line-2), var(--shadow); }
.globe-hint { position: absolute; left: 0; right: 0; bottom: 14px; text-align: center; color: var(--muted); font-size: .8rem; pointer-events: none; }
.foot-cols { display: flex; flex-direction: column; justify-content: space-between; gap: 40px; padding: 8px 0; }
.foot-lede { font-size: clamp(1.5rem, 2.6vw, 2.1rem); font-weight: 760; font-stretch: 112%; letter-spacing: -0.03em; line-height: 1.1; text-wrap: balance; }
.foot-links { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.foot-links > div { display: grid; justify-items: start; align-content: start; gap: 6px; }
.foot-links a { font-weight: 560; }
.foot-base { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--line); color: var(--muted); font-size: .86rem; }
.foot-base a { color: var(--ink); font-weight: 560; }

/* ---------- Motion layer: responsive ---------- */
@media (max-width: 1100px) {
  .fs-grid { grid-template-columns: minmax(0, 1fr); gap: 40px; align-items: start; }
  .foot-grid, .career-grid { grid-template-columns: minmax(0, 1fr); gap: 48px; }
  .career-story { position: static; }
  .index .row { grid-template-columns: 64px 32px minmax(0, 1fr) 128px 22px; }
  .index .row .co { display: none; }
}
@media (max-width: 760px) {
  .reel { padding: 32px 16px 16px; }
  .reel-cap { max-width: none; }
  html.motion .reel-stage { padding-top: 84px; }
  html.motion .reel.is-3d .reel-item { width: clamp(170px, min(52vw, 30svh), 240px); }
  .reel-head { gap: 14px; }
  .index .row { grid-template-columns: 32px minmax(0, 1fr) auto; grid-template-areas: "av ttl stat"; gap: 14px; padding: 20px 0; }
  .index .row .key, .index .row .go { display: none; }
  .index .row .av { grid-area: av; } .index .row .ttl { grid-area: ttl; } .index .row .stat { grid-area: stat; }
  .index .desc { padding: 0 0 20px 46px; }
  .exp-card { display: none; }
  .reach a { grid-template-columns: minmax(0, 1fr) auto; row-gap: 8px; padding: 18px 0; }
  .reach .rk { grid-column: 1 / -1; }
  .reach .rval { font-size: 1.12rem; font-stretch: 100%; }
  .globe { min-height: 380px; }
  .foot-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fs-main a { flex-direction: column; gap: 6px; }
  .fs-menu::before { display: none; }
}
@media (max-width: 420px) {
  .fs-btn .fs-label { display: none; }
  .fs-btn { width: 36px; padding: 0; justify-content: center; }
}
