/* ============================================================================
   Lehrsaal · Academy — tokens.css      GENERATED by scripts/build-tokens.js
   Source: design/tokens.json + design/motion.json. Do not edit by hand.

   Layer 1  --ds-*      upstream design-system values (Observer v1.0 → Lehrsaal)
   Layer 2  --<alias>   what components use, with a fallback to the Layer-1 value
   Layer 3  components  reference Layer 2 only (assets/css/components.css)

   token-audit: allow — this is the one file that may hold raw values.
   ============================================================================ */

/* Layer 1 — light (default) */
:root, [data-theme="light"] {
  --ds-paper: #FBF8F1;
  --ds-tint: #E4EDE7;
  --ds-ink: #1A1A1A;
  --ds-ink-muted: #5A5A5A;
  --ds-line: #D9D2C3;
  --ds-line-strong: #8F8778;
  --ds-brand: #00332C;
  --ds-on-brand: #FBF8F1;
  --ds-brand-ink: #00332C;
  --ds-gold: #A8842C;
  --ds-gold-ink: #8B6914;
  --ds-focus: #8B6914;
  --ds-ok: #2F6B3A;
  --ds-warn: #8A5A00;
  --ds-danger: #9B2C2C;
  --ds-s-1: 4px;
  --ds-s-2: 8px;
  --ds-s-3: 12px;
  --ds-s-4: 16px;
  --ds-s-5: 24px;
  --ds-s-6: 32px;
  --ds-s-7: 48px;
  --ds-s-8: 72px;
  --ds-s-9: 112px;
  --ds-radius-0: 0px;
  --ds-radius-sm: 2px;
  --ds-radius-pill: 999px;
  --ds-shadow-none: none;
  --ds-fs-display: 64px;
  --ds-fs-h1: 44px;
  --ds-fs-h2: 30px;
  --ds-fs-numeral: 56px;
  --ds-fs-numeral-sm: 40px;
  --ds-fs-h3: 21px;
  --ds-fs-h3-sm: 19px;
  --ds-fs-lead: 20px;
  --ds-fs-body: 17px;
  --ds-fs-quote: 22px;
  --ds-fs-note: 16px;
  --ds-fs-eyebrow: 12px;
  --ds-fs-ui: 15px;
  --ds-fs-meta: 13px;
  --ds-lh-display: 64px;
  --ds-lh-h1: 50px;
  --ds-lh-h2: 36px;
  --ds-lh-numeral: 56px;
  --ds-lh-numeral-sm: 40px;
  --ds-lh-h3: 28px;
  --ds-lh-h3-sm: 26px;
  --ds-lh-lead: 31px;
  --ds-lh-body: 28px;
  --ds-lh-note: 36px;
  --ds-lh-eyebrow: 16px;
  --ds-lh-ui: 20px;
  --ds-lh-fact: 22px;
  --ds-lh-meta: 18px;
  --ds-lh-fact-text: 24px;
  --ds-fw-regular: 400;
  --ds-fw-medium: 500;
  --ds-fw-semibold: 600;
  --ds-fw-bold: 700;
  --ds-tracking-tight: -0.01em;
  --ds-tracking-eyebrow: 0.1em;
  --ds-tracking-normal: 0;
  --ds-stroke-hairline: 1px;
  --ds-stroke-rule: 2px;
  --ds-measure-body: 64ch;
  --ds-measure-lead: 44ch;
  --ds-measure-title: 14ch;
  --ds-z-base: 0;
  --ds-z-raised: 10;
  --ds-z-overlay: 100;
  --ds-z-modal: 200;
  --ds-z-toast: 300;
  --ds-size-target: 48px;
  --ds-size-chip: 28px;
  --ds-size-control: 20px;
  --ds-size-numcol: 72px;
  --ds-size-outcol: 32px;
  --ds-size-rule: 48px;
  --ds-size-label: 120px;
  --ds-size-content: 760px;
  --ds-size-wide: 1100px;
  --ds-size-card-min: 260px;
  --ds-font-display: "Libre Caslon Display", "Libre Caslon Text", Georgia, serif;
  --ds-font-text: "Libre Caslon Text", Georgia, serif;
  --ds-font-sans: "Hanken Grotesk", "Helvetica Neue", Arial, sans-serif;
  --ds-duration-fast: 120ms;
  --ds-duration-base: 200ms;
  --ds-duration-slow: 320ms;
  --ds-ease-standard: cubic-bezier(0.2, 0, 0, 1);
}

/* Layer 1 — dark (screen only; print is always light) */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
  --ds-paper: #0F1B18;
  --ds-tint: #18302A;
  --ds-ink: #F2EDE2;
  --ds-ink-muted: #B5AEA1;
  --ds-line: #2C3F3A;
  --ds-line-strong: #6E7F79;
  --ds-brand: #245A4F;
  --ds-on-brand: #F2EDE2;
  --ds-brand-ink: #9CC8BA;
  --ds-gold: #C9A44A;
  --ds-gold-ink: #D4B262;
  --ds-focus: #D4B262;
  --ds-ok: #7FC28C;
  --ds-warn: #E0B062;
  --ds-danger: #E58A8A;
  }
}
:root[data-theme="dark"] {
  --ds-paper: #0F1B18;
  --ds-tint: #18302A;
  --ds-ink: #F2EDE2;
  --ds-ink-muted: #B5AEA1;
  --ds-line: #2C3F3A;
  --ds-line-strong: #6E7F79;
  --ds-brand: #245A4F;
  --ds-on-brand: #F2EDE2;
  --ds-brand-ink: #9CC8BA;
  --ds-gold: #C9A44A;
  --ds-gold-ink: #D4B262;
  --ds-focus: #D4B262;
  --ds-ok: #7FC28C;
  --ds-warn: #E0B062;
  --ds-danger: #E58A8A;
}
@media print {
  :root, :root[data-theme="dark"] {
    --ds-paper: #FBF8F1;
    --ds-tint: #E4EDE7;
    --ds-ink: #1A1A1A;
    --ds-ink-muted: #5A5A5A;
    --ds-line: #D9D2C3;
    --ds-line-strong: #8F8778;
    --ds-brand: #00332C;
    --ds-on-brand: #FBF8F1;
    --ds-brand-ink: #00332C;
    --ds-gold: #A8842C;
    --ds-gold-ink: #8B6914;
    --ds-focus: #8B6914;
    --ds-ok: #2F6B3A;
    --ds-warn: #8A5A00;
    --ds-danger: #9B2C2C;
  }
}

/* Layer 2 — project aliases */
:root {
  --color-bg: var(--ds-paper, #FBF8F1);
  --color-bg-tint: var(--ds-tint, #E4EDE7);
  --color-text: var(--ds-ink, #1A1A1A);
  --color-text-muted: var(--ds-ink-muted, #5A5A5A);
  --color-link: var(--ds-brand-ink, #00332C);
  --color-brand: var(--ds-brand, #00332C);
  --color-on-brand: var(--ds-on-brand, #FBF8F1);
  --color-accent: var(--ds-gold, #A8842C);
  --color-accent-text: var(--ds-gold-ink, #8B6914);
  --color-border: var(--ds-line, #D9D2C3);
  --color-border-strong: var(--ds-line-strong, #8F8778);
  --color-focus: var(--ds-focus, #8B6914);
  --color-ok: var(--ds-ok, #2F6B3A);
  --color-warn: var(--ds-warn, #8A5A00);
  --color-danger: var(--ds-danger, #9B2C2C);
  --space-1: var(--ds-s-1, 4px);
  --space-2: var(--ds-s-2, 8px);
  --space-3: var(--ds-s-3, 12px);
  --space-4: var(--ds-s-4, 16px);
  --space-5: var(--ds-s-5, 24px);
  --space-6: var(--ds-s-6, 32px);
  --space-7: var(--ds-s-7, 48px);
  --space-8: var(--ds-s-8, 72px);
  --space-9: var(--ds-s-9, 112px);
  --radius-none: var(--ds-radius-0, 0px);
  --radius-sm: var(--ds-radius-sm, 2px);
  --radius-pill: var(--ds-radius-pill, 999px);
  --shadow-none: var(--ds-shadow-none, none);
  --font-display: var(--ds-font-display, "Libre Caslon Display", "Libre Caslon Text", Georgia, serif);
  --font-text: var(--ds-font-text, "Libre Caslon Text", Georgia, serif);
  --font-sans: var(--ds-font-sans, "Hanken Grotesk", "Helvetica Neue", Arial, sans-serif);
  --font-size-display: var(--ds-fs-display, 64px);
  --font-size-h1: var(--ds-fs-h1, 44px);
  --font-size-h2: var(--ds-fs-h2, 30px);
  --font-size-numeral: var(--ds-fs-numeral, 56px);
  --font-size-numeral-sm: var(--ds-fs-numeral-sm, 40px);
  --font-size-h3: var(--ds-fs-h3, 21px);
  --font-size-h3-sm: var(--ds-fs-h3-sm, 19px);
  --font-size-lead: var(--ds-fs-lead, 20px);
  --font-size-body: var(--ds-fs-body, 17px);
  --font-size-quote: var(--ds-fs-quote, 22px);
  --font-size-note: var(--ds-fs-note, 16px);
  --font-size-eyebrow: var(--ds-fs-eyebrow, 12px);
  --font-size-ui: var(--ds-fs-ui, 15px);
  --font-size-meta: var(--ds-fs-meta, 13px);
  --line-height-display: var(--ds-lh-display, 64px);
  --line-height-h1: var(--ds-lh-h1, 50px);
  --line-height-h2: var(--ds-lh-h2, 36px);
  --line-height-numeral: var(--ds-lh-numeral, 56px);
  --line-height-numeral-sm: var(--ds-lh-numeral-sm, 40px);
  --line-height-h3: var(--ds-lh-h3, 28px);
  --line-height-h3-sm: var(--ds-lh-h3-sm, 26px);
  --line-height-lead: var(--ds-lh-lead, 31px);
  --line-height-body: var(--ds-lh-body, 28px);
  --line-height-note: var(--ds-lh-note, 36px);
  --line-height-eyebrow: var(--ds-lh-eyebrow, 16px);
  --line-height-ui: var(--ds-lh-ui, 20px);
  --line-height-fact: var(--ds-lh-fact, 22px);
  --line-height-meta: var(--ds-lh-meta, 18px);
  --line-height-fact-text: var(--ds-lh-fact-text, 24px);
  --font-weight-regular: var(--ds-fw-regular, 400);
  --font-weight-medium: var(--ds-fw-medium, 500);
  --font-weight-semibold: var(--ds-fw-semibold, 600);
  --font-weight-bold: var(--ds-fw-bold, 700);
  --tracking-tight: var(--ds-tracking-tight, -0.01em);
  --tracking-eyebrow: var(--ds-tracking-eyebrow, 0.1em);
  --tracking-normal: var(--ds-tracking-normal, 0);
  --stroke-hairline: var(--ds-stroke-hairline, 1px);
  --stroke-rule: var(--ds-stroke-rule, 2px);
  --measure-body: var(--ds-measure-body, 64ch);
  --measure-lead: var(--ds-measure-lead, 44ch);
  --measure-title: var(--ds-measure-title, 14ch);
  --z-base: var(--ds-z-base, 0);
  --z-raised: var(--ds-z-raised, 10);
  --z-overlay: var(--ds-z-overlay, 100);
  --z-modal: var(--ds-z-modal, 200);
  --z-toast: var(--ds-z-toast, 300);
  --size-target: var(--ds-size-target, 48px);
  --size-chip: var(--ds-size-chip, 28px);
  --size-control: var(--ds-size-control, 20px);
  --size-numcol: var(--ds-size-numcol, 72px);
  --size-outcol: var(--ds-size-outcol, 32px);
  --size-rule: var(--ds-size-rule, 48px);
  --size-label: var(--ds-size-label, 120px);
  --size-content: var(--ds-size-content, 760px);
  --size-wide: var(--ds-size-wide, 1100px);
  --size-card-min: var(--ds-size-card-min, 260px);
  --duration-fast: var(--ds-duration-fast, 120ms);
  --duration-base: var(--ds-duration-base, 200ms);
  --duration-slow: var(--ds-duration-slow, 320ms);
  --ease-standard: var(--ds-ease-standard, cubic-bezier(0.2, 0, 0, 1));
}
