/* Shared design system. Colours are sampled from the video: its light scenes (paper), its black frames, its red. */
:root{
  --paper:#EEEEEB; --paper-raised:#F7F7F5; --rule:#D5D5D0;
  --ink:#151413;          /* text, and the black of the video frames */
  --graphite:#605F59;     /* secondary text, 5.5:1 on paper */
  --signal:#E2261D;       /* the heart/star red: cursor block, current marker, focus. Shapes only, never text. */
  --signal-text:#B3190F;  /* red that passes AA as text on paper */
  --frame:#151413;        /* video and terminal frames stay black in both themes */
  --term:#151413; --term-raised:#22201E; --term-line:#2E2B28; --term-fg:#E7E4DD; --term-dim:#8E8A82;
  --term-ok:#62B873; --term-err:#EB5A50; --term-claude:#D97757;
  --font-sans:Satoshi,"Helvetica Neue",Arial,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --t-0:.79rem; --t-1:.889rem; --t-2:1rem; --t-3:1.125rem; --t-4:1.40rem; --t-5:1.76rem; --t-6:2.75rem; --t-7:clamp(2.6rem,7.2vw,5.4rem);
  --gutter:16px;
}
/* Off-white is the default for everyone; dark only when chosen with the toggle. */
:root[data-theme="dark"]{
  --paper:#151413; --paper-raised:#1E1C1A; --rule:#34312D; --ink:#EEEEEB; --graphite:#A29E96;
  --signal:#F0392F; --signal-text:#FF6A5F; --term:#0B0A0A; --term-raised:#1C1A18; --term-line:#2A2724;
}
@media (min-width:720px){:root{--gutter:32px}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--paper)}
body{margin:0;background:var(--paper);color:var(--ink);font:500 1.0625rem/1.6 var(--font-sans)}
@media (min-width:720px){body{font-size:1.125rem}}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.22em}
a:hover{text-decoration-color:var(--signal)}
:focus-visible{outline:3px solid var(--signal);outline-offset:3px;border-radius:2px}
img{max-width:100%;height:auto}
code{font:500 .86em var(--font-mono)}
.skip-link{position:absolute;left:var(--gutter);top:8px;transform:translateY(-220%);background:var(--ink);color:var(--paper);padding:10px 14px;z-index:50}
.skip-link:focus{transform:none}
/* The one recurring device: the typing block from the video's word cards. */
.cursor{display:inline-block;width:.42em;height:.86em;background:var(--signal);margin-left:.08em;vertical-align:-.04em}
.nowrap{white-space:nowrap}

.site-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 28px;padding:22px var(--gutter) 0;max-width:1320px;margin:0 auto}
.brand{font-weight:900;font-size:1.2rem;letter-spacing:-.035em;text-decoration:none;white-space:nowrap}
.site-nav{display:flex;flex-wrap:wrap;align-items:center;gap:4px 22px}
.site-nav a{font-weight:700;font-size:var(--t-1);text-decoration:none;padding:6px 0;color:var(--graphite)}
.site-nav a:hover{color:var(--ink)}
.site-nav a[aria-current="page"]{color:var(--ink);box-shadow:inset 0 -3px 0 var(--signal)}
#theme{visibility:hidden;font:700 var(--t-0)/1 var(--font-sans);color:var(--ink);background:var(--paper-raised);border:1px solid var(--rule);border-radius:6px;padding:8px 12px;min-height:36px;cursor:pointer}
.js #theme{visibility:visible}
.site-foot{max-width:1320px;margin:72px auto 0;padding:20px var(--gutter) 40px;border-top:1px solid var(--rule);color:var(--graphite);font-size:var(--t-1);display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.skip-link,#theme,.term-bar,.rail{display:none!important}body{background:#fff;color:#000}}

.media-note{max-width:1320px;margin:8px auto 0;padding:0 var(--gutter)}
