/* retrocomputing design system: the chosen home v16 (scroll upgrade, ui-layouts sticky-hero-scroll), one look per generation.
   Pages: body[data-g] picks the bar; section.g8/.g16/.g32/.g64/.gy carry each era. */
:root{
  /* 8-BIT: four colours, nothing else */
  --k8:#140c1c; --w8:#f4efe1; --y8:#f7c948; --c8:#5ac8c8;
  /* 16-BIT */
  --b16:#1d2b53; --d16:#0f1733; --p16:#7e2553; --g16:#00e436; --o16:#ffa300; --pk16:#ff77a8; --l16:#c2c3c7; --w16:#fff1e8; --bl16:#29adff;
  /* 32-BIT */
  --k32:#0c1220; --s32:#16213a; --ln32:#2b3c63; --t32:#e4ecff; --m32:#a8b7da; --a32:#45e0c3; --v32:#9b7bff;
  /* 64-BIT */
  --k64:#05060a; --s64:#0e1018; --ln64:#262a3a; --t64:#f2f3f8; --m64:#a3a8bd; --a64:#ff4d6d; --a64b:#ffd166;
  /* Y2K */
  --bgy:#e9eef5; --sy:#ffffff; --lny:#b9c6d8; --ty:#0d1b2e; --my:#45566e; --ay:#0057ff; --ay2:#00a0c8;
  --f8:"Tiny5",monospace; --f16:"Silkscreen",monospace; --f32:"Chakra Petch",sans-serif; --f64:"Audiowide",sans-serif; --fy:"Schibsted Grotesk",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{overflow-x:clip;scroll-behavior:smooth;scrollbar-color:var(--y8) var(--k8)}
::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--k8)}::-webkit-scrollbar-thumb{background:var(--y8)}
body{background:var(--k8);color:var(--w8)}
:focus-visible{outline:3px solid var(--y8);outline-offset:3px}
section{min-height:100vh;min-height:100svh;padding:96px 28px 72px;display:flex;flex-direction:column;justify-content:center;scroll-margin-top:0}
.in{max-width:1180px;width:100%;margin:0 auto}
.demo{font-size:.72em;opacity:.85;white-space:nowrap}

/* top bar: the brand chrome (cyan on night blue, like the X visuals and icon), the same in every era; only the GEN badge text follows the era in view */
.bar{position:fixed;inset:0 0 auto 0;z-index:10;height:56px;display:flex;align-items:center;gap:22px;padding:0 28px;border-bottom:1px solid rgba(69,224,195,.45);background:rgba(12,18,32,.96);color:var(--t32);font:500 14px/1 var(--f32);box-shadow:0 1px 18px rgba(69,224,195,.12)}
.bar .brand{font:700 20px/1 var(--f32);letter-spacing:-.01em;text-decoration:none;color:inherit}
.bar .brand::before{content:"C:\\>";color:var(--a32);margin-right:8px;text-shadow:0 0 14px rgba(69,224,195,.6)}
.bar nav{display:flex;gap:4px}
.bar nav a{color:inherit;text-decoration:none;padding:8px 10px;border-radius:4px}
.bar nav a:hover{background:rgba(69,224,195,.12);color:var(--a32)}
.bar .gen{margin-left:auto;padding:6px 10px;border:1px solid currentColor;border-radius:4px;color:var(--a32);min-width:118px;text-align:center;white-space:nowrap}
body{scrollbar-color:var(--a32) var(--k32)}

/* ── 8-BIT ─────────────────────────────── */
.g8{background:var(--k8);color:var(--w8);font:22px/1.35 var(--f8);
  background-image:linear-gradient(rgba(244,239,225,.045) 50%,transparent 50%);background-size:100% 8px}
.g8 ::selection{background:var(--y8);color:var(--k8)}
.g8 h1{font:400 clamp(3rem,8.4vw,6rem)/.95 var(--f8);text-transform:uppercase;letter-spacing:0;color:var(--w8);text-wrap:balance;max-width:12ch}
.g8 h1 em{font-style:normal;color:var(--y8)}
.g8 .say{margin-top:20px;max-width:40ch;color:var(--c8)}
.g8 form{margin-top:30px;display:grid;grid-template-columns:minmax(0,1fr) 220px auto;gap:14px;max-width:900px;align-items:end}
.g8 label{display:block;font-size:18px;color:var(--y8);margin-bottom:6px}
.g8 input{width:100%;background:var(--k8);border:4px solid var(--w8);color:var(--w8);font:26px/1 var(--f8);padding:12px 12px;border-radius:0;text-transform:uppercase;caret-color:var(--y8)}
.g8 input::placeholder{color:var(--c8)}
.g8 input:focus{outline:none;border-color:var(--y8)}
.g8 input[aria-invalid=true]{border-color:var(--c8)}
.g8 .go{height:62px;padding:0 28px;background:var(--y8);color:var(--k8);border:4px solid var(--y8);font:28px/1 var(--f8);cursor:pointer}
.g8 .go:hover{background:var(--w8);border-color:var(--w8)}
.g8 .go:disabled{background:var(--k8);color:var(--y8);cursor:wait}
.g8 .err{margin-top:10px;color:var(--c8);font-size:20px}
.g8 .err:empty{display:none}
.g8 .log{margin-top:16px;max-width:900px;border:4px solid var(--c8);padding:14px 16px;display:none;font-size:20px}
.g8 .log.on{display:block}
.g8 .pb{display:flex;gap:4px;margin:8px 0 10px}
.g8 .pb i{flex:1;height:20px;border:3px solid var(--c8)}
.g8 .pb i.on{background:var(--c8)}
.g8 .log ol{list-style:none;color:var(--w8)}
.g8 .log .fin{color:var(--y8);margin-top:8px}
.g8 .next{margin-top:34px;color:var(--y8);font-size:18px;text-decoration:none;display:inline-block}
.g8 .next:hover{color:var(--w8)}

/* ── 16-BIT ───────────────────────────── */
.g16{background:var(--b16);color:var(--w16);font:16px/1.6 var(--f16);
  background-image:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 2px,transparent 2px 4px)}
.g16 ::selection{background:var(--pk16);color:var(--d16)}
.g16 h2{font:400 clamp(2rem,5vw,3.6rem)/1.05 var(--f16);color:var(--w16);letter-spacing:-.01em;max-width:16ch}
.g16 h2 em{font-style:normal;color:var(--o16)}
.g16 .say{margin-top:16px;max-width:58ch;color:var(--l16)}
.g16 .steps{margin-top:34px;list-style:none;border:3px solid var(--d16);background:var(--d16)}
.g16 .steps li{display:grid;grid-template-columns:120px 1fr auto;gap:18px;align-items:center;padding:14px 18px;background:var(--b16);margin-bottom:3px}
.g16 .steps li:last-child{margin-bottom:0}
.g16 .steps b{font-weight:700}
.g16 .steps li:nth-child(1) b{color:var(--l16)} .g16 .steps li:nth-child(2) b{color:var(--pk16)} .g16 .steps li:nth-child(3) b{color:var(--bl16)} .g16 .steps li:nth-child(4) b{color:var(--o16)} .g16 .steps li:nth-child(5) b{color:var(--g16)}
.g16 .steps span{color:var(--l16)}
.g16 .here{background:var(--pk16);color:var(--d16);padding:2px 8px;font-size:12px}
.g16 .steps li.cur{background:var(--p16)}
.g16 .steps li.cur span{color:var(--w16)}

/* ── 32-BIT ───────────────────────────── */
.g32{background:var(--k32);color:var(--t32);font:16px/1.55 var(--f32);
  background-image:radial-gradient(ellipse at 80% 0%,rgba(155,123,255,.16),transparent 60%),radial-gradient(ellipse at 0% 100%,rgba(69,224,195,.10),transparent 55%)}
.g32 ::selection{background:var(--a32);color:var(--k32)}
.g32 h2{font:700 clamp(2rem,4.6vw,3.6rem)/1.02 var(--f32);letter-spacing:-.02em;max-width:18ch}
.g32 h2 em{font-style:normal;color:var(--a32)}
.g32 .say{margin-top:14px;max-width:60ch;color:var(--m32)}
.g32 table{width:100%;margin-top:30px;border-collapse:separate;border-spacing:0;background:var(--s32);border:1px solid var(--ln32);border-radius:6px;overflow:hidden;font-variant-numeric:tabular-nums}
.g32 th{font:600 12px var(--f32);text-transform:uppercase;letter-spacing:.08em;color:var(--m32);text-align:left;padding:12px 16px;border-bottom:1px solid var(--ln32)}
.g32 td{padding:12px 16px;border-bottom:1px solid var(--ln32)}
.g32 tr:last-child td{border-bottom:0}
.g32 .r{text-align:right}
.g32 .fn{font-weight:600}
.g32 .fn .demo{color:var(--m32);font-weight:400;margin-left:6px}
.g32 .tr{height:8px;border-radius:4px;background:#0a1020;min-width:120px}
.g32 .tr i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--v32),var(--a32))}
.g32 .gl{font-size:13px;color:var(--a32);white-space:nowrap}
.g32 a{color:var(--a32);text-decoration:none;font-weight:600}
.g32 a:hover{text-decoration:underline;text-underline-offset:3px}

/* ── 64-BIT ───────────────────────────── */
.g64{background:var(--k64);color:var(--t64);font:16.5px/1.6 var(--f32);
  background-image:radial-gradient(circle at 50% 120%,rgba(255,77,109,.18),transparent 55%)}
.g64 ::selection{background:var(--a64);color:var(--k64)}
.g64 h2{font:400 clamp(2rem,4.6vw,3.8rem)/1.05 var(--f64);letter-spacing:-.01em;max-width:18ch}
.g64 h2 em{font-style:normal;color:var(--a64b)}
.g64 .say{margin-top:14px;max-width:60ch;color:var(--m64)}
.g64 .sheet{margin-top:32px;max-width:760px;background:linear-gradient(180deg,#141725,#0b0d15);border:1px solid var(--ln64);border-radius:16px;padding:26px 28px;box-shadow:0 30px 60px -20px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.03) inset}
.g64 .sh{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}
.g64 .sh b{font:400 26px var(--f64)}
.g64 .pill{border:1px solid var(--a64b);color:var(--a64b);border-radius:999px;padding:2px 12px;font-size:13px;font-weight:600}
.g64 .sh .demo{margin-left:auto;color:var(--m64)}
.g64 dl{margin-top:20px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;border-top:1px solid var(--ln64);padding-top:18px}
.g64 dt{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--m64)}
.g64 dd{font-weight:600;font-size:18px;margin-top:2px}
.g64 .tr{margin-top:20px;height:10px;border-radius:5px;background:#1a1d2b}
.g64 .tr i{display:block;height:100%;width:0;border-radius:5px;background:linear-gradient(90deg,var(--a64),var(--a64b))}
.g64 .acts{margin-top:22px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.g64 .buy{background:var(--a64);color:#fff;border:0;border-radius:999px;font:600 15px var(--f32);padding:12px 22px;cursor:pointer}
.g64 .buy:hover{background:#ff6a85}
.g64 .acts p{color:var(--m64);font-size:14px}

/* ── Y2K ──────────────────────────────── */
.gy{background:var(--bgy);color:var(--ty);font:15px/1.55 var(--fy);
  background-image:linear-gradient(180deg,#f6f9fd,#dfe7f1)}
.gy ::selection{background:var(--ay);color:#fff}
.gy h2{font:800 clamp(2rem,4.6vw,3.8rem)/1.02 var(--fy);letter-spacing:-.035em;max-width:20ch}
.gy h2 em{font-style:normal;color:var(--ay)}
.gy .say{margin-top:14px;max-width:62ch;color:var(--my);font-size:16.5px}
.gy .grid{margin-top:30px;display:grid;grid-template-columns:1.3fr 1fr;gap:20px;align-items:start}
.gy .box{background:var(--sy);border:1px solid var(--lny);border-radius:10px;padding:20px 22px;box-shadow:0 1px 2px rgba(13,27,46,.06),0 8px 24px -12px rgba(13,27,46,.18)}
.gy .box h3{font-size:15px;font-weight:700;letter-spacing:-.01em;margin-bottom:10px}
.gy dl{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;font-size:14px}
.gy dt{color:var(--my)}
.gy dd{font-weight:600}
.gy .box p{color:var(--my);font-size:14px}
.gy .cta{display:inline-flex;align-items:center;height:46px;padding:0 22px;border-radius:8px;background:linear-gradient(180deg,#4d95ff,#0057ff 55%,#004ad9);box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 2px 6px rgba(0,60,180,.3);color:#fff;text-decoration:none;font-weight:700;margin-top:14px}
.gy .cta:hover{background:#0047d1}
.gy .grid .box:first-child h3,.gy .box h3{color:var(--ty)}
.gy footer{margin-top:44px;padding-top:18px;border-top:1px solid var(--lny);display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;font-size:13px;color:var(--my)}
.gy a{color:var(--ay)}

@media (max-width:760px){
  .bar{height:auto;min-height:50px;padding:8px 14px;gap:8px 10px;font-size:14px;flex-wrap:wrap}
  .bar nav{order:5;width:100%;overflow-x:auto;gap:0;margin:0 -6px}
  .bar nav a{padding:6px 8px}
  .bar .cmd{display:none}
  .bar .brand{font-size:17px}
  .bar .gen{min-width:0;padding:5px 8px}
  section{padding:112px 16px 56px;justify-content:flex-start}
  .g8{font-size:19px}
  .g8 h1{font-size:3rem}
  .g8 .say{margin-top:14px}
  .g8 form{grid-template-columns:1fr;gap:10px;margin-top:20px}
  .g8 input{font-size:22px;padding:9px 10px}
  .g8 label{font-size:16px;margin-bottom:4px}
  .g8 .go{height:56px}
  .g8 .next{margin-top:22px}
  .g16 .steps li{grid-template-columns:84px 1fr;gap:4px 12px;padding:12px}
  .g16 .steps .here{grid-column:1/-1;justify-self:start}
  .g32 table,.g32 tbody,.g32 tr,.g32 td{display:block}
  .g32 thead{display:none}
  .g32 tr{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:12px 14px;border-bottom:1px solid var(--ln32)}
  .g32 tr:last-child{border-bottom:0}
  .g32 td{padding:0;border:0}
  .g32 tr{grid-template-areas:"f s" "g u" "b b"}
  .g32 td.fn{grid-area:f} .g32 td.r:nth-child(2){grid-area:s} .g32 td.gl{grid-area:g} .g32 td.bc{grid-area:b;margin-top:4px} .g32 td.ru{grid-area:u}
  .g64 dl{grid-template-columns:1fr 1fr}
  .g64 .sheet{padding:20px}
  .gy .grid{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.bar{transition:none}}

/* ── site chrome added for the full site (04/11): command line, X button, pages ── */
html{scroll-padding-top:64px}
.bar .brand{white-space:nowrap}
.bar nav a[aria-current=page]{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:2px}
.bar .cmd{display:flex;align-items:center;gap:6px;margin-left:auto;padding:0 8px;height:34px;border:1px solid var(--ln32);border-radius:4px;background:var(--s32);opacity:.95}
.bar .cmd span{color:var(--a32)}
.bar .cmd span{white-space:nowrap}
.bar .cmd input{width:170px;background:transparent;border:0;color:inherit;font:inherit;text-transform:uppercase;caret-color:currentColor;outline:none}
.bar .cmd input::placeholder{color:inherit;opacity:.55}
.bar .cmd:focus-within{opacity:1;outline:2px solid var(--a32);outline-offset:2px}
.bar .x{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid var(--ln32);border-radius:4px;color:inherit;flex:none}
.bar .x:not([aria-disabled=true]):hover{color:var(--a32);border-color:var(--a32)}
.bar .x svg{width:15px;height:15px;fill:currentColor}
.bar .x[aria-disabled=true]{opacity:.6;cursor:default}
.bar .gen{margin-left:0}
.cmd-out{position:fixed;z-index:11;top:62px;right:28px;max-width:min(420px,calc(100vw - 32px));padding:10px 14px;background:var(--k32);color:var(--a32);border:1px solid var(--a32);border-radius:4px;font:500 15px/1.4 var(--f32);box-shadow:0 0 22px rgba(69,224,195,.2)}
.cmd-out[hidden]{display:none}
.skip{position:absolute;left:-999px;top:0;z-index:20;background:var(--a32);color:var(--k32);padding:8px 12px;font:600 15px var(--f32)}
.skip:focus{left:8px;top:8px}
.foot{padding:28px;font:14px/1.5 var(--fy);display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between}
.foot a{color:inherit}
.foot nav{display:flex;flex-wrap:wrap;gap:6px 16px}
section.page{min-height:auto;padding-top:120px}
.mono{font-variant-numeric:tabular-nums}
canvas.retro-img{image-rendering:pixelated;image-rendering:crisp-edges;display:block;width:100%;height:auto;aspect-ratio:1}
@media (max-width:760px){
  .bar .cmd{display:none}
  .cmd-out{top:96px;right:16px}
  .bar .x{width:30px;height:30px}
  .bar .gen{margin-left:auto}
  html{scroll-padding-top:100px}
  section.page{padding-top:120px}
  .foot{padding:22px 16px}
}

/* site-map footer, on every page, in the brand chrome (cyan on night blue) whatever era class it carries */
.site-foot.site-foot{padding:44px 28px 36px;border-top:1px solid rgba(69,224,195,.45);background:var(--k32);color:var(--t32);font:500 15px/1.5 var(--f32)}
.site-foot.site-foot b{color:var(--a32)}
.site-foot.site-foot p::before{content:"C:\\> ";color:var(--a32)}
.site-foot nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.site-foot nav div{display:flex;flex-direction:column;gap:6px;min-width:0}
.site-foot b{font-weight:700;opacity:.9;margin-bottom:2px}
.site-foot a{color:inherit;opacity:.82;text-decoration:none}
.site-foot a:hover,.site-foot a:focus-visible{opacity:1;text-decoration:underline;text-underline-offset:3px}
.site-foot p{margin-top:28px;opacity:.7;font-size:.9em}
@media (max-width:760px){.site-foot.site-foot{padding:32px 16px}.site-foot nav{grid-template-columns:1fr 1fr}}
