
/* tokens/fonts.css */
/* SUBSTITUTED FACES — flagged, pending confirmation.
   Parent text face: Newsreader (substitution; no licensed parent face was supplied).
   Parent label face: Archivo (substitution).
   Lab-direction faces: La Luxes Serif -> Prata, La Luxes Script -> Italianno (substitutions).
   Lato is the real specified face and is loaded as-is.
   Replace these @import lines with local @font-face rules once licensed binaries are in hand. */
@import url('https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,300;0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Archivo+Expanded:wght@500;600&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Prata&family=Italianno&family=Lato:wght@300;400;700;900&display=swap');

/* tokens/colors.css */
:root{
/* --- Base ramp. Warm neutrals only. Cool gray is prohibited across the house. --- */
--oss-black:#000000;
--oss-ink:#141210;
--oss-paper:#FFFFFF;
--oss-neutral-50:#F7F4EF;
--oss-neutral-100:#EFEAE2;
--oss-neutral-200:#E2DBD0;
--oss-neutral-300:#D8CFC2;
--oss-neutral-400:#B9AE9E;
--oss-neutral-500:#8E8577;
--oss-neutral-600:#6A6359;
--oss-neutral-700:#453F38;
--oss-neutral-800:#2A2621;

/* --- Proposed single accent (opt-in, not assumed). Oxblood: warm, adult, legible at
   hairline weight, and unmistakably not magenta. Reserved for legal/wayfinding emphasis:
   signature lines, required-field marks, "do not" rules. Never decorative. --- */
--oss-oxblood:#6B1F2A;
--oss-oxblood-soft:#8E3140;

/* --- The Lab's locked 2026 palette. Present here ONLY so the unresolved section-05
   direction can be rendered side by side. Do not use on parent surfaces if the
   recommended resolution holds. --- */
--oss-lab-magenta:#E91A9C;
--oss-lab-cyan:#5CE1E6;

/* --- Semantic aliases. Default = the Quiet direction. --- */
--text-primary:var(--oss-ink);
--text-secondary:var(--oss-neutral-700);
--text-muted:var(--oss-neutral-500);
--text-inverse:var(--oss-paper);
--text-accent:var(--oss-oxblood);
--surface-page:var(--oss-paper);
--surface-card:var(--oss-paper);
--surface-sunken:var(--oss-neutral-50);
--surface-band:var(--oss-neutral-300);
--surface-inverse:var(--oss-black);
--rule-hairline:var(--oss-neutral-300);
--rule-mid:var(--oss-neutral-400);
--rule-strong:var(--oss-ink);
--rule-inverse:var(--oss-neutral-700);
--accent:var(--oss-oxblood);
--accent-contrast:var(--oss-paper);
--focus-ring:var(--oss-ink);
--placeholder-fill:var(--oss-neutral-100);
--placeholder-rule:var(--oss-neutral-400);
--placeholder-text:var(--oss-neutral-600);
}

/* tokens/typography.css */
:root{
/* Families. Two faces maximum on parent surfaces. */
--font-text:'Newsreader',Georgia,'Times New Roman',serif;
--font-label:'Archivo','Helvetica Neue',Arial,sans-serif;
--font-label-expanded:'Archivo Expanded','Archivo',Arial,sans-serif;
/* Lab-direction only. */
--font-lab-display:'Prata',Georgia,serif;
--font-lab-script:'Italianno',cursive;
--font-lab-text:'Lato','Helvetica Neue',Arial,sans-serif;

/* Screen scale. */
--type-display:56px;
--type-h1:34px;
--type-h2:25px;
--type-h3:19px;
--type-body-lg:18px;
--type-body:16px;
--type-body-sm:14px;
--type-label:11px;
--type-micro:9.5px;

/* Document scale (print). Floor is 12pt for body on paper. */
--doc-h1:24pt; /* @kind font */
--doc-h2:15pt; /* @kind font */
--doc-h3:12.5pt; /* @kind font */
--doc-body:12pt; /* @kind font */
--doc-fine:9.5pt; /* @kind font */
--doc-label:8pt; /* @kind font */

/* Slide scale. 1920x1080, text floor 24px. */
--slide-display:132px;
--slide-h1:84px;
--slide-h2:54px;
--slide-body:34px;
--slide-caption:24px;
--slide-label:22px;

--weight-light:300;
--weight-regular:400;
--weight-medium:500;
--weight-semibold:600;
--weight-bold:700;

--leading-tight:1.08;
--leading-snug:1.28;
--leading-body:1.55;
--leading-loose:1.72;

--track-tight:-0.012em;
--track-normal:0; /* @kind font */
--track-label:0.14em;
--track-eyebrow:0.22em;
--track-micro:0.3em;

/* Roles. */
--text-doc-title:var(--doc-h1); /* @kind font */
--text-eyebrow-track:var(--track-eyebrow); /* @kind font */
--measure-prose:66ch; /* @kind spacing */
--measure-narrow:48ch; /* @kind spacing */
}

/* tokens/spacing.css */
:root{
/* 4px base. */
--space-0:0px;
--space-1:4px;
--space-2:8px;
--space-3:12px;
--space-4:16px;
--space-5:20px;
--space-6:24px;
--space-8:32px;
--space-10:40px;
--space-12:48px;
--space-16:64px;
--space-20:80px;
--space-24:96px;
--space-32:128px;

/* Paper geometry. */
--page-w-letter:8.5in;
--page-h-letter:11in;
--doc-margin:0.75in;
--doc-margin-wide:1in;
--doc-gutter:0.3125in; /* @kind spacing */
--card-w:3.5in; /* @kind spacing */
--card-h:2in; /* @kind spacing */

/* Grid. */
--grid-columns:12; /* @kind other */
--grid-gap:var(--space-6);
--stack-tight:var(--space-2);
--stack-default:var(--space-4);
--stack-section:var(--space-12);
}

/* tokens/form.css */
:root{
/* Sharp. Square by default. */
--radius-none:0px;
--radius-sm:2px;
--radius-max:2px;

--hairline:0.5px;
--border-1:1px;
--border-2:2px;
--rule-weight-hairline:var(--hairline);
--rule-weight-body:var(--border-1);
--rule-weight-heavy:var(--border-2);

/* No shadow at rest. Anywhere. */
--shadow-rest:none;
--shadow-hover:0 1px 0 0 var(--oss-ink);
--shadow-overlay:0 12px 32px -12px rgba(20,18,16,0.34);

/* Motion. Short, linear-ish, no bounce, no scale. */
--ease-standard:cubic-bezier(0.2,0,0.2,1); /* @kind other */
--dur-instant:80ms; /* @kind other */
--dur-fast:120ms; /* @kind other */
--dur-base:180ms; /* @kind other */

--opacity-hover:0.72; /* @kind other */
--opacity-disabled:0.38; /* @kind other */

--focus-width:2px;
--focus-offset:2px;
}

/* tokens/themes.css */
/* The section-05 question is UNRESOLVED. Both directions ship as theme scopes so
   Victor can compare them on identical surfaces. Set data-oss-theme on any container. */

/* Direction A — QUIET (recommended). Parent takes the mark in monochrome and recedes.
   Black, white, one warm neutral. Oxblood only where legal emphasis requires it. */
[data-oss-theme="quiet"]{
--text-primary:var(--oss-ink);
--text-secondary:var(--oss-neutral-700);
--text-muted:var(--oss-neutral-500);
--text-inverse:var(--oss-paper);
--text-accent:var(--oss-oxblood);
--surface-page:var(--oss-paper);
--surface-card:var(--oss-paper);
--surface-sunken:var(--oss-neutral-50);
--surface-band:var(--oss-neutral-300);
--surface-inverse:var(--oss-black);
--rule-hairline:var(--oss-neutral-300);
--rule-mid:var(--oss-neutral-400);
--rule-strong:var(--oss-ink);
--accent:var(--oss-oxblood);
--accent-contrast:var(--oss-paper);
--focus-ring:var(--oss-ink);
--font-display-role:var(--font-text);
--font-body-role:var(--font-text);
--font-label-role:var(--font-label);
}

/* Direction B — SIGNAL. Parent keeps the 2026 identity: magenta and cyan on pure black,
   La Luxes (substituted) over Lato. Included for comparison only. */
[data-oss-theme="signal"]{
--text-primary:var(--oss-paper);
--text-secondary:#C9C4C0;
--text-muted:#8A8481;
--text-inverse:var(--oss-black);
--text-accent:var(--oss-lab-magenta);
--surface-page:var(--oss-black);
--surface-card:#0B0B0B;
--surface-sunken:#000000;
--surface-band:#141414;
--surface-inverse:var(--oss-paper);
--rule-hairline:#2A2A2A;
--rule-mid:#3D3D3D;
--rule-strong:var(--oss-lab-magenta);
--accent:var(--oss-lab-magenta);
--accent-contrast:var(--oss-black);
--focus-ring:var(--oss-lab-cyan);
--font-display-role:var(--font-lab-display);
--font-body-role:var(--font-lab-text);
--font-label-role:var(--font-lab-text);
}
