/* portfolio · the specimen on ledger paper (DC-Q25)
   tokens as printed by the deck chat, 2026-07-12. source of truth:
   explorations/deck_directions/production/tokens.css
   web additions are marked; nothing above the marker may drift from the deck. */

:root {
  /* ground */
  --paper:    #FCFBF8;  /* the page */
  --desk:     #F1EFE8;  /* behind the pages, web only */
  --ink:      #1A1915;  /* primary text */
  --ink-soft: #6E6C63;  /* labels, captions, footer rail (AA on paper) */
  --ink-note: #3E3C35;  /* margin annotation */
  --line:     #E4E2DB;  /* hairlines. 1px, never thicker */
  --red:      #C2410C;  /* proof marks only: a boxed callout, one underline,
                           a stamp. never decoration. max 2 marks per page */

  /* type */
  --font-mono: 'Space Mono', ui-monospace, monospace;       /* headlines, labels, metrics, machine text */
  --font-body: 'Instrument Sans', system-ui, sans-serif;    /* body where mono tires */
  --font-note: 'Source Serif 4', Georgia, serif;            /* italic only. exactly one annotation per view */

  /* scale (px) */
  --text-rail:     10px;  /* footer rail, record stamp */
  --text-foot:     9.5px; /* footnote rail above the footer */
  --text-label:    11px;  /* labels, captions, attributions */
  --text-metric:   13px;  /* metric values, index rows */
  --text-body:     14.5px;
  --text-note:     16px;
  --text-quote:    14px;
  --text-headline: 26px;
  --text-display:  clamp(44px, 9vw, 76px);  /* cover name */
  --text-hero:     44px;                    /* headline metric */

  /* rhythm */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px;
  --s5: 24px; --s6: 32px; --s7: 48px; --s8: 64px;

  /* page geometry (a4 portrait at 96dpi) */
  --page-w:   794px;
  --page-h:   1123px;
  --page-pad: 52px;

  /* spread geometry (landscape 4:3 deck, DC-Q29) */
  --spread-w:   1440px;
  --spread-h:   1080px  /* 4:3 per DC-Q29 */;
  --spread-pad: 48px;

  /* rules */
  --hairline: 1px solid var(--line);
  --tracking-label: 0.08em;

  /* ---- web additions (the body the deck cannot carry) ---- */
  --measure:    62ch;   /* body column ceiling */
  --shell:      1180px; /* content shell on desktop */
  --rail-w:     84px;   /* the persistent numbered rail */
  --motion-line: 350ms; /* hairlines draw */
  --motion-note: 600ms; /* the annotation writes itself, once */
  --motion-chip: 400ms; /* stamps and chips settle */
  --motion-rail: 150ms; /* the rail number fills red */
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* motion budget (DC-Q28, the complete list; nothing else moves):
   hairlines draw ~350ms · one margin annotation writes itself per chapter ~600ms, once ·
   stamps/chips settle <=400ms · numbered rail fills red on scroll, 150ms.
   app-demo video sits behind a click. prefers-reduced-motion: everything static. */

@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/space-mono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/space-mono-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('../fonts/instrument-sans-400-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/source-serif-4-400-italic.woff2') format('woff2');
}
