:root {
    --ink: #052246;
    --bg: #cce2fe;
    --panel: #87b4ef;
    --mid: #4872a8;
    --sun: #ffd93d;
    --accent: #c8452d;
    --px: 'Press Start 2P', monospace;
    --body: 'VT323', monospace;
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; }
  body {
    margin: 0; background: var(--bg); color: var(--ink);
    font-family: var(--body); font-size: 20px; line-height: 1.5;
    /* the same 3px scanline the app paints on its slabs */
    background-image: repeating-linear-gradient(0deg, rgba(5,34,70,.045) 0 1px, transparent 1px 4px);
  }
  .wrap { max-width: 1080px; margin: 0 auto; padding: 0 20px; }
  .px { font-family: var(--px); line-height: 1.5; }
  .micro { font-family: var(--px); font-size: 8px; letter-spacing: .08em; }
  .label { font-family: var(--px); font-size: 11px; letter-spacing: .08em; }

  /* ---------- top bar ---------- */
  header {
    position: sticky; top: 0; z-index: 10;
    background: var(--ink); color: var(--bg);
    border-bottom: 3px solid var(--mid);
  }
  header .wrap { display: flex; align-items: center; justify-content: space-between; height: 56px; }
  .brand { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--bg); }
  .brand .grid { display: grid; grid-template-columns: repeat(3, 6px); gap: 2px; }
  .brand .grid i { width: 6px; height: 6px; background: var(--bg); display: block; }
  .brand .grid i:nth-child(5) { background: var(--sun); }
  nav { display: flex; gap: 18px; }
  nav a { color: var(--bg); text-decoration: none; font-family: var(--px); font-size: 8px; letter-spacing: .08em; opacity: .85; }
  nav a:hover { opacity: 1; color: var(--sun); }

  /* ---------- hero ---------- */
  .hero { padding: 56px 0 8px; }
  .hero-grid { display: grid; grid-template-columns: 1.12fr .88fr; gap: 44px; align-items: center; }
  @media (max-width: 860px) { .hero-grid { grid-template-columns: 1fr; gap: 28px; } }
  .plate-card { background: var(--panel); border: 3px solid var(--ink); box-shadow: 6px 6px 0 var(--mid), 12px 12px 0 #0b2a52; padding: 14px; }
  .plate-card .plate { max-width: none; }
  .plate-card .cap { display: flex; justify-content: space-between; gap: 10px; margin-top: 12px; font-family: var(--px); font-size: 6.5px; letter-spacing: .1em; }
  .kicker {
    display: inline-block; background: var(--ink); color: var(--bg);
    padding: 6px 10px; margin-bottom: 22px;
  }
  h1 {
    font-family: var(--px); font-size: clamp(26px, 5.2vw, 54px); line-height: 1.22;
    margin: 0 0 22px; letter-spacing: .01em;
  }
  h1 em { font-style: normal; color: var(--accent); }
  .lede { font-size: clamp(20px, 2.2vw, 26px); max-width: 34ch; margin: 0 0 26px; }
  .claims { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 30px; padding: 0; list-style: none; }
  .claims li {
    font-family: var(--px); font-size: 8px; letter-spacing: .08em;
    background: var(--panel); border: 2px solid var(--mid);
    border-right-width: 3px; border-bottom-width: 3px;
    padding: 8px 10px;
  }
  .claims li:first-child { background: var(--ink); color: var(--bg); border-color: var(--ink); }

  .cta { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-bottom: 8px; }
  .btn {
    display: inline-block; text-decoration: none;
    font-family: var(--px); font-size: 11px; letter-spacing: .06em;
    background: var(--ink); color: var(--bg);
    padding: 16px 20px; border: 2px solid var(--ink);
    box-shadow: 3px 3px 0 var(--mid), 6px 6px 0 #0b2a52;
    transition: transform .06s ease;
  }
  .btn:active { transform: translate(3px, 3px); box-shadow: 0 0 0 var(--mid), 3px 3px 0 #0b2a52; }
  .btn.ghost { background: transparent; color: var(--ink); box-shadow: 3px 3px 0 var(--panel), 6px 6px 0 var(--mid); }
  .soon { font-family: var(--px); font-size: 8px; letter-spacing: .08em; opacity: .7; }

  /* ---------- phone strip ---------- */
  .strip { display: flex; gap: 14px; overflow-x: auto; padding: 34px 0 10px; scrollbar-width: thin; }
  .strip figure { margin: 0; flex: 0 0 auto; }
  .strip img {
    display: block; width: 220px; height: auto;
    border: 3px solid var(--ink); box-shadow: 4px 4px 0 var(--mid), 8px 8px 0 #0b2a52;
    background: var(--panel);
  }
  .strip figcaption { font-family: var(--px); font-size: 6.5px; letter-spacing: .1em; margin-top: 10px; opacity: .75; }

  /* ---------- sections ---------- */
  section { padding: 62px 0; border-top: 3px solid var(--ink); }
  h2 { font-family: var(--px); font-size: clamp(16px, 2.4vw, 26px); line-height: 1.3; margin: 0 0 12px; }
  .sub { max-width: 46ch; margin: 0 0 34px; font-size: 22px; }

  .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }
  .card {
    background: var(--panel); border: 2px solid var(--mid);
    border-right-width: 3px; border-bottom-width: 3px;
    padding: 18px;
  }
  .card h3 { font-family: var(--px); font-size: 9px; letter-spacing: .08em; margin: 0 0 10px; }
  .card p { margin: 0; font-size: 19px; line-height: 1.45; }

  .numbers { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; margin-top: 26px; }
  .num { background: var(--ink); color: var(--bg); padding: 18px; text-align: center; }
  .num b { display: block; font-family: var(--px); font-size: 20px; margin-bottom: 8px; }
  .num span { font-family: var(--px); font-size: 6.5px; letter-spacing: .12em; opacity: .8; }

  /* the pocket grid motif */
  .plate { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; max-width: 260px; }
  .plate i { display: block; aspect-ratio: 63 / 88; background: var(--panel); border: 2px solid var(--mid); }
  /* one palette, eight cards, one pocket left open — the product's whole idea */
  .plate i:nth-child(1) { background: #e39350; }
  .plate i:nth-child(2) { background: #df5e32; }
  .plate i:nth-child(3) { background: #f0b34a; }
  .plate i:nth-child(4) { background: #6bcb77; }
  .plate i:nth-child(5) { background: var(--sun); }
  .plate i:nth-child(6) { background: #c8452d; }
  .plate i:nth-child(7) { background: #ff8fa3; }
  .plate i:nth-child(8) { background: var(--mid); }
  .plate i:nth-child(9) { background: var(--bg); border-style: dashed; }

  .split { display: grid; grid-template-columns: 1fr 1fr; gap: 34px; align-items: center; }
  @media (max-width: 720px) { .split { grid-template-columns: 1fr; } }

  ol.steps { list-style: none; counter-reset: s; padding: 0; margin: 0; }
  ol.steps li { counter-increment: s; position: relative; padding-left: 52px; margin-bottom: 20px; font-size: 20px; }
  ol.steps li::before {
    content: counter(s, decimal-leading-zero);
    position: absolute; left: 0; top: -2px;
    font-family: var(--px); font-size: 10px;
    background: var(--ink); color: var(--bg); padding: 8px 7px;
  }
  ol.steps b { font-family: var(--px); font-size: 9px; letter-spacing: .08em; display: block; margin-bottom: 4px; }

  footer { background: var(--ink); color: var(--bg); padding: 44px 0 56px; border-top: 3px solid var(--mid); }
  footer .wrap { display: flex; flex-wrap: wrap; gap: 26px; justify-content: space-between; align-items: flex-start; }
  footer a { color: var(--bg); text-decoration: none; font-family: var(--px); font-size: 8px; letter-spacing: .08em; opacity: .85; }
  footer a:hover { color: var(--sun); opacity: 1; }
  footer .fine { font-size: 16px; opacity: .6; max-width: 52ch; margin: 14px 0 0; line-height: 1.5; }
  .flinks { display: flex; flex-direction: column; gap: 12px; }

  /* store buttons: the same slab as the app's ADD TO COLLECTION, with a pixel glyph */
  .btn.store { display: inline-flex; align-items: center; gap: 10px; }
  .btn.store .glyph {
    width: 10px; height: 12px; display: inline-block; position: relative;
    background: var(--bg); clip-path: polygon(0 0, 100% 50%, 0 100%);
  }
  .btn.store.ghost .glyph { background: var(--ink); clip-path: none; border-radius: 0;
    width: 10px; height: 12px; box-shadow: inset 0 0 0 2px var(--ink), inset 0 -4px 0 -1px var(--ink); }


/* ── shared page shell ────────────────────────────────────────────────────────
   Every subpage uses this header, so there is always a way back to the main
   site. The main page keeps its anchor nav; subpages get a BACK link plus the
   cross-page nav, which is the thing they were missing. */
.site-head { position:sticky; top:0; z-index:20; background:var(--bg); border-bottom:3px solid var(--ink); }
.site-head .wrap { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.7rem 1.25rem; flex-wrap:wrap; }
.site-head nav { display:flex; gap:1.1rem; flex-wrap:wrap; align-items:center; }
.site-head nav a { font-family:var(--px); font-size:.5rem; letter-spacing:.06em; color:var(--ink); text-decoration:none; padding:.35rem .1rem; border-bottom:3px solid transparent; }
.site-head nav a:hover, .site-head nav a:focus-visible { border-bottom-color:var(--accent); }
.site-head nav a.back { background:var(--sun); border:3px solid var(--ink); padding:.4rem .6rem; box-shadow:3px 3px 0 var(--ink); }
.site-head nav a.back:hover { transform:translate(-1px,-1px); box-shadow:4px 4px 0 var(--ink); }
.site-head nav a.back:active { transform:translate(2px,2px); box-shadow:1px 1px 0 var(--ink); }

/* ── prose pages ──────────────────────────────────────────────────────────────
   Privacy and terms used their own system-font styling, which is why they did
   not look like the rest of the site. Same tokens, same pixel headings. */
.doc { max-width:46rem; margin:0 auto; padding:2.4rem 1.25rem 3.5rem; }
.doc h1 { font-family:var(--px); font-size:clamp(1.1rem,3.4vw,1.8rem); line-height:1.35; margin:.5rem 0 1.6rem; }
.doc h2 { font-family:var(--px); font-size:.72rem; line-height:1.5; margin:2.4rem 0 .8rem; padding-top:.85rem; border-top:3px solid var(--ink); }
.doc h3 { font-family:var(--px); font-size:.62rem; margin:1.5rem 0 .5rem; }
.doc p, .doc li { font-family:var(--body); font-size:1.18rem; line-height:1.55; margin:.55rem 0; }
.doc ul { margin:.5rem 0 .9rem; padding-left:1.35rem; }
.doc li { list-style:none; position:relative; }
.doc li::before { content:"▪"; position:absolute; left:-1.1rem; color:var(--accent); }
.doc b, .doc strong { background:var(--sun); padding:0 .18rem; }
.doc code { font-family:var(--px); font-size:.6rem; background:var(--panel); padding:.15rem .3rem; }
.doc hr { border:0; border-top:3px solid var(--ink); margin:2rem 0; }
.doc a { color:var(--ink); text-decoration:underline; text-decoration-thickness:2px; }
.doc .doc-updated { font-family:var(--px); font-size:.5rem; color:var(--mid); margin-bottom:1.4rem; }

/* ── mascots ──────────────────────────────────────────────────────────────────
   The six creatures from the design system. Their SVGs carry their own CSS
   animations (bob / hop / sway), so they move without any JS here — this only
   sizes them and gives them somewhere to stand. */
.mascots { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:1rem; margin:2rem 0 0; }
.mascot { background:var(--panel); border:3px solid var(--ink); box-shadow:5px 5px 0 var(--ink); padding:.9rem .6rem .7rem; text-align:center; }
.mascot img { width:100%; max-width:96px; height:auto; display:block; margin:0 auto .5rem; }
.mascot span { font-family:var(--px); font-size:.44rem; letter-spacing:.05em; display:block; }
.mascot:nth-child(odd) { transform:rotate(-.6deg); }
.mascot:nth-child(even) { transform:rotate(.6deg); }
.mascot:hover { transform:translateY(-3px) rotate(0); }

/* a mascot leaning out of a section, the way it appears in the app */
.peek { position:relative; }
.peek-mascot { position:absolute; right:.5rem; bottom:-6px; width:clamp(74px,11vw,120px); height:auto; pointer-events:none; }
@media (max-width:640px){ .peek-mascot { display:none; } }

/* hero mascot cluster */
.hero-mascots { display:flex; gap:.4rem; align-items:flex-end; margin-top:1.4rem; }
.hero-mascots img { width:clamp(40px,6vw,64px); height:auto; }

/* reduced motion: the SVGs animate themselves, so stop them wholesale */
@media (prefers-reduced-motion:reduce){
  .mascot img, .hero-mascots img, .peek-mascot, .mascot img * { animation:none !important; }
  .mascot, .mascot:hover { transform:none !important; }
}
