/* ═══════════════════════════════════════════════════════════════════════════
   Kokoro — DA 2026 · tokens du design system
   ───────────────────────────────────────────────────────────────────────────
   FICHIER GÉNÉRÉ par 04_Site/migrate-da2026.py — ne pas éditer à la main.
   Concaténation à plat de 05_Brand/Design_System/styles.css (tokens/fonts +
   colors + typography + layout, figsrc/fig-tokens + fig-typography,
   tokens/base), dans cet ordre.

   Deux différences avec la source :
     1. les @font-face pointent sur /assets/fonts/*.woff2 (sous-ensemble latin)
        plutôt que sur les .ttf relatifs du design system ;
     2. la chaîne d'@import est aplatie — un @import est chargé en série par le
        navigateur, soit sept aller-retours avant le premier pixel.

   Ne concerne que les pages à la DA 2026. Les pages Glass Light gardent
   glass-theme.css / glass-ui.css et n'incluent jamais ce fichier.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── tokens/fonts.css (chemins réécrits en woff2) ─── */
/* Kokoro webfonts — the real binaries, supplied by the user and shipped from
   assets/fonts/. Static instances are declared (not the variable files) so the
   discrete weights the identity file draws render identically in print and PDF
   export. The variable masters sit alongside them in assets/fonts/ for
   consumers who want continuous weight.

   Sen · Young Serif · Zalando Sans — all three are SIL Open Font License 1.1;
   licences travel with the binaries as OFL-*.txt. */

/* ── Sen — primary display (guideline p.23) ───────────────────────────── */
@font-face{font-family:"Sen";src:url("/assets/fonts/Sen-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Sen";src:url("/assets/fonts/Sen-Medium.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Sen";src:url("/assets/fonts/Sen-SemiBold.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Sen";src:url("/assets/fonts/Sen-Bold.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Sen";src:url("/assets/fonts/Sen-ExtraBold.woff2") format("woff2");font-weight:800;font-style:normal;font-display:swap}

/* ── Young Serif — editorial contrast (guideline p.26). One weight only. ─ */
@font-face{font-family:"Young Serif";src:url("/assets/fonts/YoungSerif-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}

/* ── Zalando Sans — supporting / body (guideline p.29) ────────────────── */
@font-face{font-family:"Zalando Sans";src:url("/assets/fonts/ZalandoSans-Light.woff2") format("woff2");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"Zalando Sans";src:url("/assets/fonts/ZalandoSans-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Zalando Sans";src:url("/assets/fonts/ZalandoSans-Medium.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Zalando Sans";src:url("/assets/fonts/ZalandoSans-SemiBold.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Zalando Sans";src:url("/assets/fonts/ZalandoSans-Bold.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
/* Italiques. Sans elles, le navigateur penche mécaniquement les lettres
   droites : jonctions tordues, chasse inchangée, aucune forme italique
   vraie. Relevé le 28/08 sur 19 <em>, dont trois témoignages clients
   entiers. font-synthesis-style:none (tokens/base.css) interdit
   désormais la contrefaçon. */
@font-face{font-family:"Zalando Sans";src:url("/assets/fonts/ZalandoSans-Italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Zalando Sans";src:url("/assets/fonts/ZalandoSans-SemiBoldItalic.woff2") format("woff2");font-weight:600;font-style:italic;font-display:swap}

/* Variable masters, if you prefer continuous weight over the five instances:
   assets/fonts/Sen-Variable.ttf            wght 100–800
   assets/fonts/ZalandoSans-Variable.ttf    wght 200–900, wdth 75–125
   Zalando Sans ships Condensed / SemiCondensed / SemiExpanded / Expanded
   widths and full italics. The identity file uses the NORMAL width and no
   italics — do not reach for the other widths. */

/* ── tokens/colors.css ──────────────────────────────────── */
:root{
/* ── Neutral foundation (guideline p.36 "The Colour System") ───────────── */
--kokoro-black:#000000;
--kokoro-white:#FFFFFF;
--kokoro-soft-canvas:#EDEADD;
--kokoro-quiet-stone:#C3C0B4;

/* ── Accent spectrum (guideline p.36, hexes verbatim) ──────────────────── */
--kokoro-blue:#2782FF;
--kokoro-sky:#5CBBFF;
--kokoro-green:#00AA2E;
--kokoro-lime:#96D400;
--kokoro-yellow:#FFCC00;
--kokoro-orange:#FF6700;
--kokoro-violet:#B869F5;
--kokoro-pink:#FF9AF0;

/* ── Extended values used in the layouts (kept verbatim, not rounded) ─── */
--kokoro-cyan:#63D3F1;          /* widget / module fills */
--kokoro-lime-deep:#95D300;     /* step-3 module */
--kokoro-canvas-warm:#F7F5EB;   /* alt canvas, alphabet pages */
--kokoro-stone-light:#CCC9BB;   /* stone field, guideline pages */
--kokoro-stone-mid:#C7C4B7;     /* second stone, specimen blocks */
--kokoro-grey-panel:#F9FAFB;    /* step-card surface */
--kokoro-ink:#0C1118;           /* card headings on light */
--kokoro-ink-violet:#0B001A;    /* headings inside white panels */
--kokoro-muted:#606A78;         /* card body copy — assombri de 5 % le 28/08 :
                                   #66707F ne donnait que 4,16 sur Soft Canvas,
                                   sous le seuil AA des textes courants. 4,55. */
--kokoro-muted-dark:#8F8F8F;    /* body copy on black */
--kokoro-muted-cool:#CFD3D7;    /* footer links */
--kokoro-placeholder:#414141;   /* input placeholder */
--kokoro-arrow-ink:#56514D;     /* list-row arrow glyph */
--kokoro-hairline:rgba(23,0,52,0.4);
--kokoro-glass:rgba(255,255,255,0.48);
--kokoro-glass-edge:#F1F2F9;
--kokoro-blue-link:#1F66C9;      /* assombri de 20 % le 28/08 : #2780FC tombait à
                                   3,12 sur Soft Canvas et 3,76 sur blanc. 4,58 et
                                   5,52. Token distinct de --kokoro-blue, réservé
                                   aux liens de TEXTE : aucune forme ne bouge. */
--kokoro-blue-annotate:#2C85FF; /* construction / measurement lines */
--kokoro-blue-tint-17:rgba(39,130,255,0.17);
--kokoro-blue-tint-15:rgba(39,130,255,0.15);
--kokoro-blue-tint-43:rgba(39,130,255,0.43);

/* ── Semantic aliases ─────────────────────────────────────────────────── */
--surface-page:var(--kokoro-white);
--surface-canvas:var(--kokoro-soft-canvas);
--surface-stone:var(--kokoro-quiet-stone);
--surface-inverse:var(--kokoro-black);
--surface-card:var(--kokoro-grey-panel);
--surface-panel:var(--kokoro-white);
--surface-glass:var(--kokoro-glass);

--text-primary:var(--kokoro-black);
--text-inverse:var(--kokoro-white);
--text-heading:var(--kokoro-ink);
--text-heading-panel:var(--kokoro-ink-violet);
--text-body:var(--kokoro-muted);
--text-body-inverse:var(--kokoro-muted-dark);
--text-link:var(--kokoro-blue-link);
--text-eyebrow:var(--kokoro-black);
--text-footer:var(--kokoro-muted-cool);

--accent-primary:var(--kokoro-blue);
--border-hairline:var(--kokoro-hairline);
--border-glass:var(--kokoro-glass-edge);
--icon-arrow:var(--kokoro-arrow-ink);
}

/* ── tokens/typography.css ──────────────────────────────────── */
:root{
/* ── Families ─────────────────────────────────────────────────────────── */
--font-display:"Sen",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
--font-editorial:"Young Serif",ui-serif,Georgia,"Times New Roman",serif;
--font-body:"Zalando Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;

/* ── Weights actually drawn in the file ───────────────────────────────── */
--weight-light:300;
--weight-regular:400;
--weight-medium:500;
--weight-semibold:600;
--weight-bold:700;
--weight-extrabold:800;

/* ── Web / product scale (Landing Page frame) ─────────────────────────── */
--type-display-size:107.51px;   --type-display-lh:110.7px;   --type-display-ls:-0.06em;
--type-h1-size:79.866px;        --type-h1-lh:100%;           --type-h1-ls:-0.06em;
--type-h2-size:51.313px;        --type-h2-lh:100%;           --type-h2-ls:-0.02em;
--type-h2-panel-size:53.143px;  --type-h2-panel-lh:1.12;     --type-h2-panel-ls:-0.05em;
--type-h3-size:33.568px;        --type-h3-lh:0.7578;         --type-h3-ls:-0.03em;
--type-card-title-size:25.342px;--type-card-title-lh:35.479px;--type-card-title-ls:-0.02em;
--type-row-title-size:23.383px; --type-row-title-lh:37.413px;
--type-body-lg-size:22.806px;   --type-body-lg-lh:34.208px;
--type-body-size:20.274px;      --type-body-lh:30.41px;
--type-nav-size:20.819px;       --type-nav-lh:1.5;
--type-footer-size:21.333px;    --type-footer-lh:1.5;
--type-kicker-size:16px;        --type-kicker-lh:1.36;       --type-kicker-ls:0.04em;
--type-micro-size:14.88px;      --type-micro-lh:1.6;         --type-micro-ls:0;
--type-button-size:19.292px;    --type-button-lh:28.939px;   --type-button-ls:0.04em;
--type-pill-size:22.519px;      --type-pill-lh:0.86;         --type-pill-ls:0.01em;

/* ── Document / guideline scale (Visual Identity Guidelines frames) ───── */
--type-chapter-size:230px;
--type-index-size:198px;        --type-index-ls:-0.08em;
--type-slide-title-size:32px;   --type-slide-title-lh:1.11;  --type-slide-title-ls:-0.03em;
--type-slide-body-size:14px;    --type-slide-body-lh:1.36;   --type-slide-body-ls:0.04em;
--type-eyebrow-size:11px;       --type-eyebrow-lh:1.2;       --type-eyebrow-ls:0.1em;
--type-caption-size:12.16px;    --type-caption-lh:1.36;      --type-caption-ls:0.1em;

/* ── Editorial pairing sizes drawn in the file ────────────────────────── */
--type-editorial-xl-size:136.772px;  --type-editorial-xl-ls:-0.03em;
--type-editorial-lg-size:126.765px;  --type-editorial-lg-ls:-0.03em;
--type-stat-size:83.926px;           --type-stat-ls:-0.06em;

/* ── Semantic aliases ─────────────────────────────────────────────────── */
--text-display:var(--font-display);
--text-serif:var(--font-editorial);
--text-copy:var(--font-body);
}

/* Roles, ready to apply. Kokoro's rule (p.31): Sen leads, Young Serif adds
   selective editorial contrast, Zalando Sans carries functional content. */
.kk-display{font-family:var(--font-display);font-weight:var(--weight-medium);font-size:var(--type-display-size);line-height:var(--type-display-lh);letter-spacing:var(--type-display-ls)}
.kk-h1{font-family:var(--font-display);font-weight:var(--weight-medium);font-size:var(--type-h1-size);line-height:var(--type-h1-lh);letter-spacing:var(--type-h1-ls)}
.kk-h2{font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--type-h2-size);line-height:var(--type-h2-lh);letter-spacing:var(--type-h2-ls)}
.kk-h3{font-family:var(--font-display);font-weight:var(--weight-medium);font-size:var(--type-card-title-size);line-height:var(--type-card-title-lh);letter-spacing:var(--type-card-title-ls)}
.kk-editorial{font-family:var(--font-editorial);font-weight:var(--weight-regular);letter-spacing:var(--type-editorial-lg-ls);line-height:100%}
.kk-body-lg{font-family:var(--font-body);font-weight:var(--weight-regular);font-size:var(--type-body-lg-size);line-height:var(--type-body-lg-lh)}
.kk-body{font-family:var(--font-body);font-weight:var(--weight-regular);font-size:var(--type-body-size);line-height:var(--type-body-lh)}
.kk-kicker{font-family:var(--font-body);font-weight:var(--weight-light);font-size:var(--type-kicker-size);line-height:var(--type-kicker-lh);letter-spacing:var(--type-kicker-ls)}
.kk-eyebrow{font-family:var(--font-body);font-weight:var(--weight-semibold);font-size:var(--type-eyebrow-size);line-height:var(--type-eyebrow-lh);letter-spacing:var(--type-eyebrow-ls);text-transform:uppercase}

/* ── tokens/layout.css ──────────────────────────────────── */
:root{
/* ── Corner radii, verbatim from the source geometry ──────────────────── */
--radius-image:9px;          /* module image plate */
--radius-field:10.667px;     /* footer Subscribe button */
--radius-card:20.274px;      /* step card */
--radius-tile-sm:28px;       /* small squircle module */
--radius-tile:41px;          /* 169px icon tile */
--radius-panel:42.514px;     /* 2-column white panel */
--radius-container:50px;     /* full-width white container */
--radius-input:60px;         /* email field */
--radius-blob:67.086px;      /* inner prompt capsule */
--radius-capsule:80.257px;   /* emphasis capsule */
--radius-capsule-xl:134.332px;
--radius-pill:999px;         /* all fully-round pills, chips, dots */

/* ── Hairlines & strokes ─────────────────────────────────────────────── */
--stroke-hairline:1.063px;
--stroke-glass:0.646px;
--stroke-glass-lg:1.947px;
--stroke-annotate:0.5px;

/* ── Shadows (the only two elevation recipes in the file) ─────────────── */
--shadow-glass-bar:inset 0 0 0 0.646px var(--kokoro-glass-edge),0 5.205px 57.642px 0 rgba(0,0,0,0.25),0 0.646px 5.168px 0 rgba(25,33,61,0.06);
--shadow-glass-badge:inset 0 0 0 1.947px var(--kokoro-glass-edge),0 10.549px 38.768px -13.186px rgba(0,0,0,0.33);

/* ── Spacing steps observed in the layouts ───────────────────────────── */
--space-1:8.552px;
--space-2:12.671px;
--space-3:15.205px;
--space-4:17.006px;
--space-5:21.257px;
--space-6:25.342px;
--space-7:28.507px;
--space-8:34.011px;
--space-9:40.547px;
--space-10:42.514px;
--space-11:53px;
--space-12:63.771px;
--space-13:170.057px;

/* ── Page geometry ──────────────────────────────────────────────────── */
--frame-w:1920px;
--frame-h:1080px;
--doc-margin:60px;      /* guideline page margin, left and right */
--web-margin:65px;      /* footer / nav gutter */
--web-gutter:104px;     /* full-bleed panel inset */
--web-gutter-wide:200px;/* 3-up card row inset */
--nav-top:41px;
}

/* ── figsrc/fig-tokens.css ──────────────────────────────────── */
/* Generated from Figma Variables. First mode = :root default.
   FLOAT tokens are unitless — multiply by 1px in calc() where a length is needed. */

:root {
  --colors-neutral-colors-neutral-300: rgb(241,242,249); /* @kind color */
  --colors-neutral-colors-neutral-800: rgb(23,15,73); /* @kind color */
  --t2-offwhite: rgb(253,251,246); /* @kind color */
}

/* ── figsrc/fig-typography.css ──────────────────────────────────── */
/* No TEXT/EFFECT styles in this file. */

/* ── tokens/base.css ──────────────────────────────────── */
/* Minimal element defaults. Kokoro sets no global reset in the source file;
   these only cover what every card and kit would otherwise repeat. */
html{-webkit-font-smoothing:antialiased}
/* Aucune police synthétisée : ni italique penchée mécaniquement, ni gras
   épaissi au trait. Les vraies faces sont livrées ; ce qui manque doit se
   voir plutôt que se contrefaire. */
body{font-synthesis-style:none;margin:0;font-family:var(--font-body);font-weight:var(--weight-regular);color:var(--text-primary);background:var(--surface-page);text-wrap:pretty}
a{color:var(--text-link);text-decoration:none}
a:hover{color:var(--kokoro-black)}
a:active{opacity:.7}
::placeholder{color:var(--kokoro-placeholder);opacity:1}
::selection{background:var(--kokoro-blue);color:var(--kokoro-white)}

