/* ============================================================
   ContentFlow Developers — 80s Japan retro arcade / CRT theme
   Default = CRT dark. [data-theme="light"] = paper retro.
   Shared across index.html, docs.html, wiki.html
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=VT323&family=Space+Mono:ital,wght@0,400;0,700;1,400&display=swap');

:root{
  /* CRT phosphor palette — deep indigo cabinet + neon */
  --paper:#0C0722;
  --paper-2:#1A1140;
  --ink:#EDE6FF;
  --ink-soft:#A99ED6;
  --line:#EDE6FF;

  /* neon accents */
  --purple:#7C3BFF;
  --purple-ink:#C9B3FF;
  --lime:#3EFF8B;
  --coral:#FF2E88;
  --cyan:#29F0FF;
  --gold:#FFD84D;
  --on-bright:#10071F; /* text/icons on bright neon fills */

  /* terminal */
  --term-bg:#070312;
  --term-green:#3EFF8B;
  --term-cyan:#29F0FF;
  --term-dim:#7D74A8;

  /* structure */
  --shadow-c:#311D6B;
  --shadow:4px 4px 0 var(--shadow-c);
  --shadow-sm:3px 3px 0 var(--shadow-c);
  --shadow-lg:6px 6px 0 var(--shadow-c);
  --bd:3px solid var(--ink);
  --glow:0 0 18px rgba(124,59,255,.35);
  --depth:0 26px 52px -26px rgba(124,59,255,.55);
  --grid-line:rgba(124,59,255,.08);
  --radius:0px;

  --mono:'Space Mono',ui-monospace,Menlo,Consolas,monospace;
  --pixel:'Press Start 2P',var(--mono);
  --term:'VT323',var(--mono);
}

/* ---------- light retro (paper) via toggle ---------- */
[data-theme="light"]{
  --paper:#FBF6E9;
  --paper-2:#F2E9D2;
  --ink:#141414;
  --ink-soft:#3d3a33;
  --line:#141414;
  --purple:#571FE4;
  --purple-ink:#3d13a6;
  --lime:#9BE80B;
  --coral:#FF5C4D;
  --cyan:#22D3E0;
  --gold:#FFC53D;
  --term-bg:#141414;
  --term-green:#9BE80B;
  --term-cyan:#22D3E0;
  --term-dim:#6b6b6b;
  --shadow-c:#141414;
  --glow:0 0 0 rgba(0,0,0,0);
  --depth:0 0 0 rgba(0,0,0,0);
  --grid-line:rgba(20,20,20,.035);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:var(--mono);
  color:var(--ink);
  background:var(--paper);
  background-image:
    linear-gradient(var(--grid-line) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);
  background-size:24px 24px;
  line-height:1.6;
  -webkit-font-smoothing:none;
  font-smooth:never;
}
img{image-rendering:pixelated}
::selection{background:var(--coral);color:#fff}

/* ---------- CRT overlay: scanlines + aperture grille + vignette ---------- */
body::after{
  content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;
  background:
    radial-gradient(ellipse at center, transparent 52%, rgba(4,0,18,.55) 100%),
    repeating-linear-gradient(0deg, rgba(0,0,0,.36) 0 2px, transparent 2px 5px),
    repeating-linear-gradient(90deg, rgba(255,46,136,.05) 0 1px, rgba(62,255,139,.035) 1px 2px, rgba(41,240,255,.05) 2px 3px);
  animation:crt-hum 9s ease-in-out infinite;
}
[data-theme="light"] body::after{display:none}
@keyframes crt-hum{0%,100%{opacity:1}50%{opacity:.88}}
@keyframes blink{50%{opacity:0}}
.blink{animation:blink 1.1s steps(1) infinite}
@media(prefers-reduced-motion:reduce){body::after{animation:none}.blink{animation:none}.marquee span{animation:none;padding-left:0}}

/* ---------- typography ---------- */
h1,h2,h3{font-family:var(--pixel);line-height:1.35;letter-spacing:.5px;margin:0 0 .6em}
h1{font-size:clamp(22px,4.4vw,44px)}
h2{font-size:clamp(16px,2.6vw,24px)}
h3{font-size:13px}
h1{text-shadow:0 0 18px rgba(124,59,255,.55),0 0 4px rgba(237,230,255,.4)}
h2{text-shadow:0 0 14px rgba(124,59,255,.4)}
[data-theme="light"] h1,[data-theme="light"] h2{text-shadow:none}
p{margin:0 0 1em}
a{color:var(--purple-ink);text-decoration:none;border-bottom:2px solid var(--purple);font-weight:700}
a:hover{background:var(--purple);color:#fff}
code{font-family:var(--mono);background:var(--paper-2);border:2px solid var(--ink);padding:1px 6px;font-size:.85em}
.tag{font-family:var(--pixel);font-size:9px;padding:5px 8px;border:2px solid var(--ink);background:var(--gold);color:var(--on-bright);display:inline-block;text-transform:uppercase}
.tag.lime{background:var(--lime)} .tag.cyan{background:var(--cyan)} .tag.coral{background:var(--coral);color:#fff}

/* ---------- kbd shortcut badge ---------- */
kbd,.kbd{
  font-family:var(--pixel);font-size:9px;display:inline-flex;align-items:center;justify-content:center;
  min-width:20px;height:20px;padding:0 4px;background:var(--paper);color:var(--ink);
  border:2px solid var(--ink);box-shadow:2px 2px 0 var(--shadow-c);vertical-align:middle
}

/* ---------- buttons ---------- */
.btn{
  font-family:var(--pixel);font-size:11px;display:inline-flex;align-items:center;gap:8px;
  padding:14px 18px;border:var(--bd);background:var(--lime);color:var(--on-bright);
  box-shadow:var(--shadow),var(--glow);cursor:pointer;text-decoration:none;transition:transform .05s,box-shadow .05s
}
.btn:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--shadow-c),var(--glow);background:var(--lime);color:var(--on-bright)}
.btn:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--shadow-c)}
.btn.purple{background:var(--purple);color:#fff}
.btn.coral{background:var(--coral);color:#fff}
.btn.ghost{background:var(--paper);color:var(--ink)}

/* ---------- layout ---------- */
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
.section{padding:72px 0;border-bottom:var(--bd);position:relative;overflow:hidden}
.section>.wrap{position:relative;z-index:2}

/* ---------- top nav ---------- */
.nav{
  position:sticky;top:0;z-index:50;background:var(--paper);
  border-bottom:var(--bd);
}
.nav-in{display:flex;align-items:center;gap:20px;max-width:1120px;margin:0 auto;padding:12px 24px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--pixel);font-size:13px;color:var(--ink);border:0}
.brand:hover{background:none;color:var(--ink)}
.pixel-logo{width:28px;height:28px;flex:none;filter:drop-shadow(0 0 6px rgba(124,59,255,.6))}
[data-theme="light"] .pixel-logo{filter:none}
.nav-links{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap;align-items:center}
.nav-links a{
  font-family:var(--pixel);font-size:10px;color:var(--ink);border:2px solid transparent;
  padding:8px 10px;display:flex;align-items:center;gap:6px
}
.nav-links a:hover{background:var(--purple);color:#fff;border-color:var(--ink)}
.nav-links a .k{font-size:9px;opacity:.6}
.nav-links a:hover .k{opacity:1;color:var(--lime)}
.theme-toggle{font-family:var(--pixel);font-size:12px;width:36px;height:36px;padding:0;line-height:1;
  border:2px solid var(--ink);background:var(--paper);color:var(--ink);box-shadow:2px 2px 0 var(--shadow-c);
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:transform .05s,box-shadow .05s}
.theme-toggle:hover{background:var(--gold);color:var(--on-bright);transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow-c)}

/* ---------- hero ---------- */
.hero{padding:80px 0 64px;border-bottom:var(--bd);position:relative;overflow:hidden}
.hero .eyebrow{font-family:var(--pixel);font-size:10px;color:var(--on-bright);margin-bottom:20px;display:inline-block;background:var(--lime);border:2px solid var(--ink);padding:6px 10px;box-shadow:var(--shadow-sm),var(--glow)}
.hero h1{max-width:16ch}
.hero p.lead{font-size:18px;max-width:56ch;color:var(--ink-soft)}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:28px}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center}
@media(max-width:820px){.hero-grid{grid-template-columns:1fr}}

/* ---------- terminal window ---------- */
.term{background:var(--term-bg);border:var(--bd);box-shadow:var(--shadow-lg),var(--glow);font-family:var(--mono);font-size:13px;color:#E8E4F5}
.term-bar{display:flex;align-items:center;gap:7px;padding:9px 12px;border-bottom:2px solid #2A1D55}
[data-theme="light"] .term-bar{border-bottom-color:#333}
.term-dot{width:12px;height:12px;border:2px solid #000}
.term-dot.r{background:var(--coral)} .term-dot.y{background:var(--gold)} .term-dot.g{background:var(--lime)}
.term-title{margin-left:8px;color:var(--term-dim);font-size:12px}
.term-body{padding:16px;overflow-x:auto;line-height:1.7;text-shadow:0 0 5px rgba(237,230,255,.14)}
[data-theme="light"] .term-body{text-shadow:none}
.term-body pre{margin:0;white-space:pre}
.c-prompt{color:var(--term-green)} .c-cyan{color:var(--term-cyan)} .c-dim{color:var(--term-dim)} .c-gold{color:var(--gold)} .c-str{color:#FFB86B}

/* ---------- cards ---------- */
.grid{display:grid;gap:20px}
.grid.c3{grid-template-columns:repeat(3,1fr)}
.grid.c2{grid-template-columns:repeat(2,1fr)}
.grid.c4{grid-template-columns:repeat(4,1fr)}
@media(max-width:820px){.grid.c3,.grid.c2,.grid.c4{grid-template-columns:1fr}}
.card{background:var(--paper);border:var(--bd);box-shadow:var(--shadow),var(--depth);padding:22px;transition:transform .06s,box-shadow .06s}
.card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg),var(--glow),var(--depth)}
.card .ico{width:44px;height:44px;margin-bottom:14px;border:2px solid var(--ink);display:flex;align-items:center;justify-content:center;font-family:var(--pixel);font-size:16px;color:var(--on-bright)}
.card h3{font-size:12px;margin-bottom:8px}
.card p{font-size:14px;color:var(--ink-soft);margin:0}

/* tool cards with shortcut keys */
.tool{display:flex;gap:14px;align-items:flex-start}
.tool .key{font-family:var(--pixel);font-size:14px;width:40px;height:40px;flex:none;border:var(--bd);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}
.tool.p .key{background:var(--purple);color:#fff}
.tool.l .key{background:var(--lime);color:var(--on-bright)}
.tool.c .key{background:var(--cyan);color:var(--on-bright)}
.tool.o .key{background:var(--coral);color:#fff}

/* ---------- section heading ---------- */
.sec-head{margin-bottom:36px}
.sec-head .tag{margin-bottom:14px}

/* ---------- docs layout ---------- */
.docs{display:grid;grid-template-columns:240px 1fr;gap:0;min-height:calc(100vh - 52px)}
@media(max-width:900px){.docs{grid-template-columns:1fr}}
.side{border-right:var(--bd);padding:28px 20px;position:sticky;top:52px;height:calc(100vh - 52px);overflow-y:auto}
@media(max-width:900px){.side{position:static;height:auto;border-right:0;border-bottom:var(--bd)}}
.side h4{font-family:var(--pixel);font-size:9px;color:var(--purple-ink);text-transform:uppercase;margin:22px 0 10px;letter-spacing:1px}
.side h4:first-child{margin-top:0}
.side a{display:block;font-size:14px;color:var(--ink);border:0;border-left:3px solid transparent;padding:6px 12px;font-weight:400}
.side a:hover{background:var(--paper-2);color:var(--ink)}
.side a.active{border-left-color:var(--purple);background:var(--paper-2);font-weight:700;color:var(--purple-ink)}
.doc-main{padding:44px clamp(24px,5vw,64px);max-width:820px}
.doc-main h2{border-bottom:3px solid var(--ink);padding-bottom:14px;margin-top:8px}
.doc-main h3{font-family:var(--pixel);font-size:12px;margin:40px 0 14px;color:var(--purple-ink)}
.doc-main ul,.doc-main ol{padding-left:22px}
.doc-main li{margin-bottom:8px}
.crumbs{font-size:13px;color:var(--ink-soft);margin-bottom:24px}
.crumbs a{border:0}

/* callouts */
.note{border:var(--bd);border-left-width:8px;padding:16px 18px;margin:22px 0;background:var(--paper);box-shadow:var(--shadow-sm)}
.note.tip{border-left-color:var(--lime)}
.note.warn{border-left-color:var(--coral)}
.note.info{border-left-color:var(--cyan)}
.note strong{font-family:var(--pixel);font-size:10px;display:block;margin-bottom:6px;text-transform:uppercase}

/* method pills for API */
.ep{display:flex;align-items:center;gap:12px;border:var(--bd);box-shadow:var(--shadow-sm);padding:12px 14px;margin:12px 0;background:var(--paper);font-size:14px;flex-wrap:wrap}
.m{font-family:var(--pixel);font-size:9px;padding:5px 8px;border:2px solid var(--ink);color:#fff}
.m.get{background:#17B558} .m.post{background:var(--purple)} .m.put{background:var(--gold);color:var(--on-bright)} .m.del{background:var(--coral)}
.ep .path{font-family:var(--mono);font-weight:700}

/* table */
table{width:100%;border-collapse:collapse;margin:18px 0;font-size:14px}
th,td{border:2px solid var(--ink);padding:9px 12px;text-align:left}
th{background:var(--purple);color:#fff;font-family:var(--pixel);font-size:9px;text-transform:uppercase}
tr:nth-child(even) td{background:var(--paper-2)}

/* ---------- footer (stays CRT-dark in both themes) ---------- */
.foot{--ink:#EDE6FF;--line:#EDE6FF;--paper:#0C0722;--paper-2:#1A1140;--purple-ink:#C9B3FF;--shadow-c:#311D6B;
  background:#070312;color:#EDE6FF;padding:48px 0;border-top:3px solid #311D6B}
.foot .wrap{display:flex;justify-content:space-between;gap:30px;flex-wrap:wrap}
.foot a{color:#3EFF8B;border-color:#3EFF8B}
.foot a:hover{background:#3EFF8B;color:#10071F}
.foot h5{font-family:var(--pixel);font-size:10px;margin:0 0 14px;color:#FFD84D}
.foot ul{list-style:none;padding:0;margin:0;font-size:14px;display:grid;gap:8px}
.foot .col-brand{max-width:280px}
.foot .col-brand p{font-size:13px;color:#A99ED6}
.foot .coin{font-family:var(--pixel);font-size:9px;color:#7D74A8;margin-top:16px}

/* ---------- neon marquee ---------- */
.marquee{background:linear-gradient(90deg,var(--purple),var(--coral));color:#fff;border-top:var(--bd);border-bottom:var(--bd);overflow:hidden;white-space:nowrap;font-family:var(--pixel);font-size:11px;padding:10px 0;text-shadow:0 0 8px rgba(255,255,255,.5)}
.marquee span{display:inline-block;padding-left:100%;animation:scroll 22s linear infinite}
@keyframes scroll{to{transform:translateX(-100%)}}

/* pixel divider */
.pxrule{height:8px;background:repeating-linear-gradient(90deg,var(--ink) 0 8px,transparent 8px 16px);margin:0}

/* ============================================================
   Depth + motion layer (2026-07-07)
   ============================================================ */

/* ---------- CRT power-on boot ---------- */
#boot{position:fixed;inset:0;background:#05020F;z-index:10001;display:flex;align-items:center;justify-content:center;overflow:hidden}
#boot::before{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(124,59,255,.12),rgba(255,255,255,.92) 50%,rgba(124,59,255,.12));
  transform:scaleY(.004);animation:crt-on .55s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes crt-on{55%{transform:scaleY(.004);opacity:1}100%{transform:scaleY(1);opacity:0}}
#boot .boot-in{font-family:var(--pixel);font-size:12px;color:#3EFF8B;text-shadow:0 0 14px rgba(62,255,139,.8);opacity:0;animation:boot-txt .4s .5s forwards;text-align:center;line-height:2}
@keyframes boot-txt{to{opacity:1}}
#boot.done{animation:boot-out .4s forwards}
@keyframes boot-out{to{opacity:0;visibility:hidden}}

/* ---------- hero depth: ambient blob + synthwave floor + drifting marks ---------- */
.hero{position:relative}
.hero>.wrap{position:relative;z-index:2}
.hero::before{content:"";position:absolute;width:560px;height:560px;left:-180px;top:-180px;z-index:0;pointer-events:none;
  background:radial-gradient(circle, rgba(124,59,255,.30), transparent 65%);
  animation:blob-drift 12s ease-in-out infinite alternate}
@keyframes blob-drift{to{translate:70px 50px}}
.gridfloor{position:absolute;left:-20%;right:-20%;bottom:-50px;height:300px;z-index:0;pointer-events:none;
  background:
    linear-gradient(transparent, rgba(255,46,136,.10) 70%),
    repeating-linear-gradient(90deg, rgba(124,59,255,.35) 0 2px, transparent 2px 64px),
    repeating-linear-gradient(0deg, rgba(124,59,255,.35) 0 2px, transparent 2px 46px);
  transform:perspective(430px) rotateX(62deg);transform-origin:50% 100%;
  -webkit-mask-image:linear-gradient(transparent,#000 55%);mask-image:linear-gradient(transparent,#000 55%);
  animation:floor-run 3s linear infinite}
@keyframes floor-run{to{background-position:0 0,0 0,0 46px}}
[data-theme="light"] .gridfloor{opacity:.35}
.drift{position:absolute;z-index:0;pointer-events:none;opacity:.16;filter:drop-shadow(0 0 12px rgba(124,59,255,.9))}
.drift svg{width:100%;height:100%;display:block;animation:floaty 9s ease-in-out infinite}
.d1{width:96px;height:96px;right:5%;top:9%;rotate:180deg}
.d2{width:46px;height:46px;left:2.5%;top:54%}
.d2 svg{animation-duration:7s;animation-delay:1.2s}
.d3{width:64px;height:64px;right:26%;top:64%;rotate:90deg}
.d3 svg{animation-duration:11s;animation-delay:.6s}
@keyframes floaty{50%{translate:0 -12px}}
@media(max-width:820px){.drift{display:none}.gridfloor{height:200px}}

/* hero terminal: 3D tilt + float + cursor */
.hero .term{transform:perspective(1100px) rotateY(-7deg) rotateX(2deg);transition:transform .35s ease;animation:floaty 7s ease-in-out infinite}
.hero .term:hover{transform:perspective(1100px) rotateY(0deg) rotateX(0deg)}
.tcur{color:var(--term-green);animation:blink 1s steps(1) infinite}

/* ---------- scroll reveal ---------- */
.rv{opacity:0;translate:0 26px;transition:opacity .6s ease,translate .6s ease}
.rv.in{opacity:1;translate:0 0}

/* ---------- HI-SCORE strip ---------- */
.hiscore{border-bottom:var(--bd);padding:36px 0;background:linear-gradient(180deg,rgba(124,59,255,.10),transparent)}
.hs-head{font-family:var(--pixel);font-size:10px;color:var(--gold);text-shadow:0 0 10px rgba(255,216,77,.5);margin-bottom:20px}
.hs-in{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.hs{text-align:center;flex:1;min-width:120px}
.hs-n{font-family:var(--pixel);font-size:clamp(24px,3.6vw,42px);color:var(--gold);text-shadow:0 0 16px rgba(255,216,77,.55);display:block;margin-bottom:8px}
.hs-l{font-family:var(--pixel);font-size:9px;color:var(--ink-soft);letter-spacing:1px}
[data-theme="light"] .hs-n{text-shadow:none}

/* ---------- bento grids ---------- */
.bento{display:grid;gap:20px;grid-template-columns:repeat(4,1fr);grid-template-areas:"sdk sdk api api" "sdk sdk cli hooks"}
.b-sdk{grid-area:sdk}.b-api{grid-area:api}.b-cli{grid-area:cli}.b-hooks{grid-area:hooks}
.bento2{display:grid;gap:20px;grid-template-columns:repeat(4,1fr);grid-template-areas:"f1 f1 f2 f3" "f4 f5 f2 f6"}
.b-f1{grid-area:f1}.b-f2{grid-area:f2}.b-f3{grid-area:f3}.b-f4{grid-area:f4}.b-f5{grid-area:f5}.b-f6{grid-area:f6}
@media(max-width:820px){
  .bento{grid-template-columns:1fr;grid-template-areas:"sdk" "api" "cli" "hooks"}
  .bento2{grid-template-columns:1fr;grid-template-areas:"f1" "f2" "f3" "f4" "f5" "f6"}
}
.mini-code{background:var(--term-bg);border:2px solid var(--ink);margin-top:16px;padding:12px 14px;font-size:12.5px;color:#E8E4F5;overflow-x:auto}
.mini-code pre{margin:0;white-space:pre}
.f2-glyph{font-size:56px;line-height:1;text-align:center;display:block;margin:22px auto 14px;color:var(--cyan);text-shadow:0 0 20px rgba(41,240,255,.65);width:max-content;animation:spin-slow 12s linear infinite}
@keyframes spin-slow{to{rotate:-360deg}}
[data-theme="light"] .f2-glyph{text-shadow:none}

/* ambient blob for CTA */
.glow-pink::before{content:"";position:absolute;width:620px;height:420px;left:50%;top:40%;translate:-50% -50%;z-index:0;pointer-events:none;
  background:radial-gradient(ellipse, rgba(255,46,136,.16), transparent 65%)}

/* motion off */
@media(prefers-reduced-motion:reduce){
  .rv{transition:none;opacity:1;translate:none}
  .gridfloor,.drift svg,.hero .term,.hero::before,.f2-glyph{animation:none}
  .hero .term{transform:none}
}
