/* SupG · docs. Tokens mirror /tokens at the repo root (kept inline so docs deploys alone). */
:root{
  --ink:#15172B; --ink-2:#1F2240; --ink-3:#2B2E52; --ink-4:#3A3E6B;
  --ground:#FFFFFF; --surface-2:#F3F4F9; --border:#E3E4EE; --border-strong:#C9CBDB;
  --text-1:#15172B; --text-2:#4C4F6B; --text-3:#6F7290;
  --on-ink-2:#B9BCD6; --on-ink-3:#8F93B8;
  --accent:#FF3B30; --accent-hover:#EE2F24; --accent-tint:#FFE1DF; --accent-deep:#B3130C; --on-accent:#15172B;
  --font-display:"Onest",ui-sans-serif,system-ui,sans-serif; --font-body:"Sora",ui-sans-serif,system-ui,sans-serif;
  --radius-pill:999px; --radius-tile:22.5%;
  --shadow-lg:0 20px 50px rgba(21,23,43,.14); --shadow-accent:0 12px 32px rgba(255,59,48,.3);
  --ease-out:cubic-bezier(.2,.8,.2,1); --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --container:1120px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--ground);color:var(--text-1);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:var(--accent-deep);text-decoration:none}
a:hover{color:var(--ink)}
h1,h2,p{margin:0}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:8px 12px;border-radius:8px}
.skip:focus{left:8px;z-index:100}
.muted{color:var(--text-3);font-size:15px}
.h2{font-family:var(--font-display);font-weight:800;font-size:44px;line-height:1;letter-spacing:-.04em}
.dot{color:var(--accent)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 22px;border-radius:var(--radius-pill);font-weight:600;font-size:15px;white-space:nowrap;transition:transform .2s var(--ease-spring),box-shadow .2s var(--ease-out),background-color .2s var(--ease-out)}
.btn--lg{height:56px;padding:0 30px;font-size:17px}
.btn--ink{background:var(--ink);color:#fff}
.btn--ink:hover{background:var(--ink-3);color:#fff;transform:translateY(-2px)}
.btn--accent{background:var(--accent);color:var(--on-accent)}
.btn--accent:hover{background:var(--accent-hover);color:var(--on-accent);transform:translateY(-2px) rotate(-1deg)}
.btn--outline-ink{border:2px solid var(--ink);color:var(--ink)}
.btn--outline-ink:hover{background:rgba(21,23,43,.08);color:var(--ink);transform:translateY(-2px)}
.btn:active{transform:scale(.97)}
.arrow{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s var(--ease-spring)}
.btn:hover .arrow{transform:translateX(4px)}
.link-underline{color:var(--ink);font-weight:600;font-size:17px;padding:0 10px;height:56px;display:inline-flex;align-items:center;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:3px;text-underline-offset:6px;transition:text-underline-offset .2s var(--ease-out)}
.link-underline:hover{text-underline-offset:9px;color:var(--ink)}

/* Logo (joystick) */
.logo{display:inline-flex;align-items:center;gap:4px;color:var(--ink);font-family:var(--font-display);font-weight:800;letter-spacing:-.04em;line-height:1;font-size:26px}
.logo:hover{color:var(--ink)}
.logo--sm{font-size:22px}
.logo__mark{width:36px;height:36px;flex:none;overflow:visible}
.logo--sm .logo__mark{width:28px;height:28px}
.logo__base,.logo__stick{fill:currentColor}
/* Stick + ball pivot together from the base socket, like a real joystick. */
.logo__stick,.logo__ball,.logo__dot{transform-origin:32px 50px;transform-box:view-box}
.logo__ball{fill:var(--accent)}
.logo__dot{fill:var(--accent)}
.on-red .logo__ball{fill:currentColor}
.logo:hover .logo__stick,.logo:hover .logo__ball,.logo:hover .logo__dot{animation:stick-push 1.1s cubic-bezier(.3,.9,.3,1) both}
@keyframes stick-push{0%{transform:rotate(0)}18%{transform:rotate(-24deg)}38%{transform:rotate(-24deg)}58%{transform:rotate(22deg)}74%{transform:rotate(22deg)}86%{transform:rotate(-5deg)}94%{transform:rotate(2deg)}100%{transform:rotate(0)}}

/* Nav */
.nav{max-width:var(--container);margin:0 auto;padding:0 24px;height:80px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.nav__links{display:flex;gap:28px;font-size:15px;font-weight:600}
.nav__links a{color:var(--ink);position:relative;display:inline-flex;align-items:center;min-height:44px}
.nav__links a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:3px;border-radius:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease-out)}
.nav__links a:hover::after,.nav__links a[aria-current="page"]::after{transform:scaleX(1)}
@media (max-width:720px){.nav{height:auto;min-height:80px;flex-wrap:wrap;gap:0 12px;padding-top:18px}.nav__links{order:3;width:100%;justify-content:center;gap:24px;border-top:1px solid var(--border);margin-top:16px;padding:4px 0}.nav__links a::after{bottom:2px}.nav > .btn{font-size:12px;padding:0 14px;margin-left:auto}}

/* Hero */
.hero{max-width:var(--container);margin:0 auto;padding:56px 24px 80px;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:40px;align-items:center}
.hero__copy{display:flex;flex-direction:column;gap:28px}
.hero__title{font-family:var(--font-display);font-weight:800;font-size:clamp(52px,7vw,96px);line-height:.95;letter-spacing:-.045em;text-wrap:balance}
.hero__lede{font-size:20px;line-height:1.45;color:var(--text-2);max-width:440px;text-wrap:pretty}
.hero__actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.w{display:inline-block;opacity:0;transform:translateY(.5em) rotate(3deg);transform-origin:left bottom}
.rise{opacity:0;transform:translateY(16px)}
.is-loaded .w,.is-loaded .rise{animation:rise .8s var(--ease-out) forwards;animation-delay:calc(var(--i) * 90ms)}
@keyframes rise{to{opacity:1;transform:none}}
.hi{display:inline-block;background:var(--accent);color:var(--on-accent);padding:0 .18em;border-radius:.22em;transform:rotate(-2deg);clip-path:inset(0 100% 0 0)}
.is-loaded .hi{animation:paint .55s var(--ease-out) .55s forwards,wiggle .6s var(--ease-spring) 1.2s}
@keyframes paint{to{clip-path:inset(0 0 0 0)}}
@keyframes wiggle{0%,100%{transform:rotate(-2deg)}35%{transform:rotate(1.5deg) scale(1.03)}70%{transform:rotate(-3deg)}}
.hero__stage{position:relative;height:460px}
.hero__blob{position:absolute;inset:30px 0 10px 40px;background:var(--accent-tint);border-radius:58% 42% 55% 45% / 48% 60% 40% 52%;animation:blob 14s ease-in-out infinite alternate}
@keyframes blob{to{border-radius:45% 55% 42% 58% / 55% 45% 60% 40%;transform:rotate(6deg) scale(1.03)}}
.tile-wrap{position:absolute;left:var(--x);top:var(--y);will-change:transform}
.tile{width:var(--s,96px);height:var(--s,96px);border-radius:var(--radius-tile);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;font-size:var(--f,44px);letter-spacing:-.04em;box-shadow:var(--shadow-lg)}
.tile--red{background:var(--accent);color:var(--on-accent)}
.tile--ink{background:var(--ink);color:#fff}
.tile--line{background:#fff;color:var(--ink);border:3px solid var(--ink)}
.tile--dash{background:transparent;color:var(--text-3);border:3px dashed var(--border-strong);box-shadow:none}
.app:hover .tile--dash{color:var(--accent);border-color:var(--accent)}
.glyph{width:46%;height:46%;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.hero__stage .tile{opacity:0;transform:translateY(40px) scale(.6) rotate(calc(var(--r) - 12deg))}
.is-loaded .hero__stage .tile{animation:pop .8s var(--ease-spring) calc(.35s + var(--d)) forwards,float var(--t) ease-in-out calc(1.15s + var(--d)) infinite}
@keyframes pop{to{opacity:1;transform:translateY(0) scale(1) rotate(var(--r))}}
@keyframes float{0%,100%{opacity:1;transform:translateY(0) rotate(var(--r))}50%{opacity:1;transform:translateY(-14px) rotate(calc(var(--r) + 2.5deg))}}
@media (max-width:860px){.hero{grid-template-columns:1fr;padding-top:24px}.hero__stage{height:340px}.hero__stage .tile{--s:calc(var(--s) * .7)}}

/* Now playing */
.playing{max-width:var(--container);margin:0 auto;padding:88px 24px 96px}
.playing__head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:36px;flex-wrap:wrap}
.apps{display:flex;gap:28px 36px;flex-wrap:wrap}
.app{display:flex;flex-direction:column;align-items:center;gap:12px;width:120px;color:var(--ink);text-align:center}
.app .tile{transition:transform .3s var(--ease-spring),box-shadow .3s var(--ease-out)}
.app:hover{color:var(--ink)}
.app:hover .tile{transform:translateY(-8px) rotate(-4deg) scale(1.04);box-shadow:0 28px 60px rgba(21,23,43,.2)}
.app:active .tile{transform:scale(.96)}
.tile--sm{width:96px;height:96px;font-size:44px;box-shadow:none}
.app__name{font-weight:600;font-size:14px;line-height:1.2}
.app__meta{font-size:12px;color:var(--text-3);margin-top:-8px}

/* Reveal on scroll */
[data-reveal]{--delay:0ms}
[data-reveal] > *{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out);transition-delay:calc(var(--i,0) * 70ms)}
[data-reveal].is-in > *{opacity:1;transform:none}
.apps[data-reveal] > *{transform:translateY(28px) scale(.85) rotate(-4deg);transition-timing-function:var(--ease-spring),var(--ease-spring)}
.apps[data-reveal].is-in > *{transform:none}

/* Verticals */
.verticals{background:var(--ink);color:#fff;padding:140px 24px 120px;clip-path:polygon(0 56px,100% 0,100% 100%,0 100%)}
.verticals__inner{max-width:var(--container);margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:48px;align-items:end}
.verticals__list{font-family:var(--font-display);font-weight:800;font-size:clamp(56px,8vw,112px);line-height:.92;letter-spacing:-.05em;display:flex;flex-direction:column}
.verticals__word{color:var(--on-ink-3);transition:color .4s var(--ease-out),transform .5s var(--ease-spring);transform-origin:left center}
.verticals__word.is-on{color:#fff;transform:translateX(.08em)}
.verticals__word:last-child.is-on{color:var(--accent)}
.verticals__copy{display:flex;flex-direction:column;gap:20px;max-width:420px;padding-bottom:12px}
.verticals__copy p{font-size:20px;line-height:1.45;color:var(--on-ink-2);text-wrap:pretty}
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{height:36px;padding:0 14px;border-radius:var(--radius-pill);border:1.5px solid var(--ink-4);color:#fff;font-weight:600;font-size:14px;display:inline-flex;align-items:center;gap:8px;transition:border-color .2s,transform .3s var(--ease-spring)}
.chip:hover{border-color:#fff;transform:translateY(-2px) rotate(-2deg)}
.chip__dot{width:8px;height:8px;border-radius:50%;background:#fff}
.chip__dot--red{background:var(--accent)}

/* Send + footer */
.send{background:var(--accent);color:var(--on-accent);padding:120px 24px 0;margin-top:-1px}
.send__inner{max-width:var(--container);margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px;padding-bottom:96px}
.send__title{font-family:var(--font-display);font-weight:800;font-size:clamp(44px,6vw,80px);line-height:.95;letter-spacing:-.045em;max-width:760px;text-wrap:balance}
.send__inner p{font-size:19px;line-height:1.4;max-width:480px}
.send__actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.footer{border-top:1.5px solid rgba(21,23,43,.18)}
.footer{max-width:none}
.footer__brand,.footer__links{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.footer{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:14px;font-weight:500;padding:28px 24px;max-width:var(--container);margin:0 auto}
.footer__copy{color:rgba(21,23,43,.6);margin-left:6px}
.footer__links{gap:22px}
.footer__links a{color:var(--ink)}
.footer__links a:hover{text-decoration:underline;text-decoration-color:var(--ink);text-decoration-thickness:2px;text-underline-offset:4px}

/* Chomper: hover to wake it, it eats the pellets along the footer rule. */
.chomp{position:relative;max-width:var(--container);margin:0 auto;height:72px;overflow:hidden;cursor:pointer}
.chomp__pellets{position:absolute;inset:0;display:flex;align-items:center;gap:0;padding:0 12px}
.chomp__pellets i{display:block;width:10px;height:10px;border-radius:50%;background:var(--ink);margin:0 auto;transition:transform .12s var(--ease-spring),opacity .12s}
.chomp__pellets i.eaten{transform:scale(0);opacity:0}
.chomp__pellets i.big{width:18px;height:18px}
.chomp__eater{position:absolute;top:50%;left:0;width:56px;height:56px;margin-top:-28px;transform:translateX(-72px);will-change:transform}
.chomp__mouth{fill:var(--ink);transform-origin:32px 32px}
.chomp.is-running .chomp__mouth{animation:chomp-bite .22s steps(1) infinite}
@keyframes chomp-bite{0%{d:path("M32 32 L62 14 A32 32 0 1 0 62 50 Z")}50%{d:path("M32 32 L63 28 A32 32 0 1 0 63 36 Z")}}
.chomp__eye{fill:var(--accent)}
.chomp__hint{position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:12px;font-weight:600;color:rgba(21,23,43,.55);letter-spacing:.06em;text-transform:uppercase;transition:opacity .3s}
.chomp.is-running .chomp__hint,.chomp.is-done .chomp__hint{opacity:0}
.chomp.is-done .chomp__pellets i{animation:pellet-back .5s var(--ease-spring) both;animation-delay:calc(var(--i) * 12ms)}
@keyframes pellet-back{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .w,.rise,.hero__stage .tile,[data-reveal] > *{opacity:1;transform:none}
  .hi{clip-path:none}
  .chomp{display:none}
}
