/* Hallmark · tokens · theme: custom "Souverain"
 * vibe: European night, star gold, engineered, sovereign
 * paper oklch(97.5% 0.006 262) · night oklch(17% 0.045 264) · accent oklch(44% 0.19 264) blue + oklch(86% 0.17 92) gold
 * display: Bricolage Grotesque · body: IBM Plex Sans · mono: IBM Plex Mono
 * axes: light paper + dark band / grotesk-sans / cool (EU blue) with gold signal
 */
@font-face { font-family: "Bricolage Grotesque"; font-weight: 500; font-style: normal; font-display: swap;
  src: url("fonts/bricolage-grotesque-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Bricolage Grotesque"; font-weight: 700; font-style: normal; font-display: swap;
  src: url("fonts/bricolage-grotesque-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-weight: 400; font-style: normal; font-display: swap;
  src: url("fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-weight: 600; font-style: normal; font-display: swap;
  src: url("fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-weight: 400; font-style: normal; font-display: swap;
  src: url("fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-weight: 500; font-style: normal; font-display: swap;
  src: url("fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); }

:root {
  /* Papier clair, encre bleu nuit */
  --color-paper:          oklch(97.5% 0.006 262);
  --color-paper-2:        oklch(94.5% 0.009 262);
  --color-rule:           oklch(86% 0.012 262);
  --color-rule-2:         oklch(76% 0.016 262);
  --color-muted:          oklch(46% 0.02 264);
  --color-ink-2:          oklch(32% 0.03 264);
  --color-ink:            oklch(20% 0.04 264);

  /* Bande de nuit européenne */
  --color-night:          oklch(17% 0.045 264);
  --color-night-2:        oklch(22% 0.055 264);
  --color-night-rule:     oklch(34% 0.05 264);
  --color-on-night:       oklch(95% 0.01 264);
  --color-on-night-muted: oklch(78% 0.025 264);

  /* Deux signaux : bleu UE (liens, focus) et or des étoiles (marqueurs) */
  --color-accent:         oklch(44% 0.19 264);
  --color-accent-ink:     oklch(98% 0.006 262);
  --color-gold:           oklch(86% 0.17 92);
  --color-gold-ink:       oklch(20% 0.04 264);
  --color-focus:          oklch(86% 0.17 92);
  --color-focus-light:    oklch(44% 0.19 264);
  --color-scrim:          oklch(17% 0.045 264 / 0.55);
  --color-shadow:         oklch(17% 0.045 264 / 0.45);

  /* Matières de la scène 3D */
  --color-3d-post:        oklch(36% 0.13 264);
  --color-3d-rail:        oklch(93% 0.02 85);
  --color-3d-tenon:       oklch(86% 0.17 92);
  --color-3d-edge:        oklch(72% 0.08 264);

  --font-display: "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;
  --font-body:    "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
  --font-mono:    "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* Cinq tailles, pas une de plus */
  --text-sm:        0.875rem;
  --text-base:      1.0625rem;
  --text-lg:        1.3rem;
  --text-2xl:       clamp(1.75rem, 2.4vw + 1rem, 2.75rem);
  --text-display:   clamp(2.3rem, 3.6vw + 1rem, 4.4rem);

  --space-2xs: 0.25rem;
  --space-xs:  0.5rem;
  --space-sm:  0.75rem;
  --space-md:  1rem;
  --space-lg:  1.5rem;
  --space-xl:  2.5rem;
  --space-2xl: 4rem;
  --space-3xl: 6.5rem;
  --page-gutter: clamp(1rem, 4vw, 3.5rem);
  --page-max: 76rem;

  --radius-sm: 6px;
  --radius-md: 10px;
  --rule-hair: 1px;

  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in:     cubic-bezier(0.7, 0, 0.84, 0);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-micro: 120ms;
  --dur-short: 220ms;
  --dur-long:  420ms;
}
