/* Generated token bridge; source files are preserved in config/univers-source. */
body.ui-v1{
  color-scheme: light;

  /* ---------------------------------------------------------------------
     1. FONDS ET TEXTE
     --------------------------------------------------------------------- */
  --bg-page:            #FAFAFB;  /* pas de blanc pur : confort de luminance */
  --bg-surface:         #FFFFFF;
  --bg-surface-2:       #EFF1F5;
  --bg-overlay:         rgba(15, 18, 24, 0.48);

  --text-primary:       #16181D;  /* 17,02 / page — 17,76 / surface — 15,70 / surface-2 */
  --text-secondary:     #565E70;  /*  6,23 / page —  6,50 / surface —  5,75 / surface-2 */
  --text-tertiary:      #616978;  /*  5,30 / page —  5,53 / surface —  4,89 / surface-2 */
  --text-on-fill:       #FFFFFF;

  --border:             #DDE1E8;  /* décoratif uniquement : 1,26 / page */
  --border-strong:      #7C8494;  /* contour de composant : 3,60 / page — 3,76 / surface */

  /* ---------------------------------------------------------------------
     2. ACTION ET SÉMANTIQUE
     Chaque couleur d'action existe en paire surface / socle (pattern C10).
     La variante -ledge n'est JAMAIS saisie à la main dans un composant.
     --------------------------------------------------------------------- */
  --action:             #2F52C4;  /* blanc sur aplat 6,72 — aplat sur page 6,44 */
  --action-ledge:       #25419C;
  --action-subtle:      #E4EAFC;
  --action-on-subtle:   #23398A;  /* 8,63 sur -subtle */

  --success:            #1F7A45;  /* blanc sur aplat 5,35 — aplat sur page 5,13 */
  --success-ledge:      #186137;
  --warning:            #9A5B00;  /* blanc sur aplat 5,43 — aplat sur page 5,20 */
  --warning-ledge:      #7B4800;
  --error:              #C22A33;  /* blanc sur aplat 5,72 — aplat sur page 5,48 */
  --error-ledge:        #9B2128;
  --info:               #1F6FA8;  /* blanc sur aplat 5,39 — aplat sur page 5,17 */
  --info-ledge:         #185886;

  /* ---------------------------------------------------------------------
     3. FAMILLES DE MATIÈRES — SIX, PAS DAVANTAGE
     Six est le plafond retenu (Quizlet en emploie exactement six).
     Adressage double, par index ET par nom, pour permettre l'attribution
     automatique de la n-ième teinte au n-ième objet créé, tout en autorisant
     un choix nominatif ultérieur (pattern repris de StudySmarter).

     RÈGLE NON NÉGOCIABLE : la couleur ne suffit pas à identifier une matière.
     Une élève de 3e suit une dizaine de matières obligatoires. Chaque matière
     porte donc EN PLUS une illustration propre (pattern C18, BBC Bitesize).
     La couleur porte le regroupement, l'illustration porte l'identification.
     --------------------------------------------------------------------- */
  --subject-1-bold:       #3557C8;  /* indigo    — blanc/bold 6,27 — bold/page 6,01 */
  --subject-1-ledge:      #2A45A0;
  --subject-1-subtle:     #E4EAFC;
  --subject-1-on-subtle:  #23398A;  /* 8,63 sur -subtle */

  --subject-2-bold:       #0F7A85;  /* sarcelle  — blanc/bold 5,07 — bold/page 4,86 */
  --subject-2-ledge:      #0C616A;
  --subject-2-subtle:     #D9EEF0;
  --subject-2-on-subtle:  #0A545C;  /* 7,16 sur -subtle */

  --subject-3-bold:       #A35C00;  /* ambre     — blanc/bold 5,14 — bold/page 4,92 */
  --subject-3-ledge:      #824900;
  --subject-3-subtle:     #F8E9D4;
  --subject-3-on-subtle:  #6E3E00;  /* 7,48 sur -subtle */

  --subject-4-bold:       #C02B62;  /* rose      — blanc/bold 5,58 — bold/page 5,35 */
  --subject-4-ledge:      #99224E;
  --subject-4-subtle:     #FBE0EA;
  --subject-4-on-subtle:  #8A1D45;  /* 7,24 sur -subtle */

  --subject-5-bold:       #6E43C0;  /* violet    — blanc/bold 6,51 — bold/page 6,24 */
  --subject-5-ledge:      #583599;
  --subject-5-subtle:     #EAE2F8;
  --subject-5-on-subtle:  #4A2C85;  /* 8,41 sur -subtle */

  --subject-6-bold:       #2E7046;  /* forêt     — blanc/bold 5,96 — bold/page 5,72 */
  --subject-6-ledge:      #245938;
  --subject-6-subtle:     #DEEDE4;
  --subject-6-on-subtle:  #1E4D30;  /* 8,03 sur -subtle */

  /* Jetons indirects pilotés par [data-subject] sur le conteneur.
     Un écran de matière repeint ses surfaces en changeant UNE valeur. */
  --subject-bold:       var(--subject-1-bold);
  --subject-ledge:      var(--subject-1-ledge);
  --subject-subtle:     var(--subject-1-subtle);
  --subject-on-subtle:  var(--subject-1-on-subtle);

  /* ---------------------------------------------------------------------
     4. SIGNATURE DU CONTENU GÉNÉRÉ (pattern C17)
     Un dégradé, et un seul, pour tout ce qui est produit automatiquement.
     Les variantes sont préparées ici pour qu'aucun écran n'improvise le sien.
     Il ne porte jamais de texte : il sert de fond de bouton, de liseré ou de
     halo, le texte restant sur --text-on-fill posé sur --action.
     --------------------------------------------------------------------- */
  --generated-gradient:            linear-gradient(165deg, #2F52C4, #6E43C0, #0F7A85);
  --generated-gradient-horizontal: linear-gradient(90deg,  #2F52C4, #6E43C0, #0F7A85);
  --generated-gradient-circle:     radial-gradient(circle, #2F52C4, #6E43C0, #0F7A85);
  --generated-gradient-subtle:     linear-gradient(165deg, rgba(47,82,196,.14), rgba(110,67,192,.14), rgba(15,122,133,.14));

  /* ---------------------------------------------------------------------
     5. TYPOGRAPHIE
     Une seule famille linéale, portée par la police système : elle implémente
     nativement l'agrandissement d'accessibilité, elle est optiquement
     optimisée par taille, et elle ne déclenche aucun trait de personnalité
     parasite (Shaikh, Chaparro et Fox, 2006).
     La hiérarchie se fait par graisse et par taille, JAMAIS par changement
     de famille (Apple HIG).
     --------------------------------------------------------------------- */
  --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
                 "Helvetica Neue", Arial, sans-serif;
  --font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;

  /* Échelle en rem pour suivre le réglage système. Jamais de px figés. */
  --text-caption:   0.8125rem;  /* 13px — plancher absolu, mentions secondaires */
  --text-body-s:    0.9375rem;  /* 15px */
  --text-body:      1.0625rem;  /* 17px — défaut, aligné sur Body iOS */
  --text-body-l:    1.1875rem;  /* 19px */
  --text-title-s:   1.375rem;   /* 22px */
  --text-title:     1.75rem;    /* 28px */
  --text-title-l:   2.125rem;   /* 34px */
  --text-display:   2.75rem;    /* 44px — réservé aux compteurs de série */

  /* Deux régimes d'interligne, et c'est délibéré.
     1,29 est le rapport Apple, calibré pour des libellés courts.
     1,5 est l'exigence WCAG 1.4.8, seule valable pour de la lecture suivie. */
  --leading-ui:     1.29;
  --leading-text:   1.5;

  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;
  /* Ultralight, Thin et Light sont proscrits (Apple HIG). */

  /* Mesure de ligne : viser 55 caractères, plafond normatif 80.
     Les lignes longues se lisent plus vite, les lignes moyennes se
     comprennent mieux (Dyson et Haselgrove, 2001). En révision,
     la compréhension prime. */
  --measure:        55ch;
  --measure-max:    80ch;

  /* Mode lecture facilitée. Valeurs de robustesse WCAG 1.4.12, qui sont
     aussi exactement le seul levier typographique dont l'efficacité est
     établie chez les lecteurs en difficulté (Zorzi 2012, Stagg et Kiss 2021).
     AUCUNE police dite adaptée à la dyslexie n'est fournie : leur bénéfice
     n'est pas démontré (Wery 2017, Kuster 2018, Marinus 2016). */
  --reading-letter-spacing: 0.12em;
  --reading-word-spacing:   0.16em;
  --reading-leading:        1.6;

  /* ---------------------------------------------------------------------
     6. ESPACEMENT, GRILLE, RAYONS
     --------------------------------------------------------------------- */
  --space-050:  2px;
  --space-100:  4px;
  --space-150:  6px;
  --space-200:  8px;
  --space-300: 12px;
  --space-400: 16px;
  --space-600: 24px;
  --space-800: 32px;
  --space-1200: 48px;
  --space-1600: 64px;
  --space-2400: 96px;

  --gutter-mobile:  16px;
  --gutter-tablet:  32px;
  --content-max:   800px;

  /* Espacement minimal autour des contrôles (Apple HIG) */
  --control-padding-bezeled:   12px;
  --control-padding-bare:      24px;

  /* Cible tactile : 44px est le minimum de projet, pas une valeur souhaitable
     à atteindre. Elle vaut simultanément défaut Apple et WCAG 2.5.5 AAA. */
  --target-min: 44px;

  --radius-100:  4px;
  --radius-200:  8px;
  --radius-300: 12px;   /* champs */
  --radius-400: 16px;   /* cartes */
  --radius-600: 24px;   /* surfaces majeures, feuilles modales */
  --radius-full: 9999px; /* actions primaires */

  /* Épaisseur du socle des boutons en volume (pattern C10).
     Fluide : le bouton reste proportionné du téléphone au grand écran. */
  --ledge-depth: clamp(3px, 0.4vw, 6px);

  --stroke:        1px;
  --stroke-heavy:  2px;

  /* ---------------------------------------------------------------------
     7. ÉLÉVATION
     Quatre plans au repos, pas davantage (Material : 0 à +3 au repos,
     +4 et +5 réservés aux états d'interaction).
     --------------------------------------------------------------------- */
  --elevation-0: none;
  --elevation-1: 0 1px 2px rgba(15, 18, 24, 0.06);
  --elevation-2: 0 2px 6px rgba(15, 18, 24, 0.08);
  --elevation-3: 0 6px 16px rgba(15, 18, 24, 0.10);
  --elevation-4: 0 12px 28px rgba(15, 18, 24, 0.14); /* survol, glissé */
  --elevation-5: 0 20px 44px rgba(15, 18, 24, 0.18); /* modale */

  /* ---------------------------------------------------------------------
     8. MOUVEMENT
     Durées et courbes formalisées. Aucune animation ne porte d'information :
     une correction reste à l'écran jusqu'à ce que l'élève la congédie
     (effet d'information transitoire, Sweller et al. 2019).
     --------------------------------------------------------------------- */
  --duration-instant:    100ms;
  --duration-fast:       200ms;
  --duration-standard:   300ms;
  --duration-slow:       500ms;
  --duration-deliberate: 700ms;
  --duration-emphasis:  1000ms;

  --ease-enter:      cubic-bezier(0, 0, .58, 1);
  --ease-standard:   cubic-bezier(.42, 0, .58, 1);
  --ease-exit:       cubic-bezier(.42, 0, 1, 1);
  --ease-emphasized: cubic-bezier(.215, .61, .355, 1);

  /* ---------------------------------------------------------------------
     9. DENSITÉ MODULABLE (section 9 de la spécification)
     Un seul jeton commande la densité. Il se règle par élève, et se règle
     MIEUX par maîtrise déclarée par matière que par âge (effet d'inversion
     due à l'expertise). Il ne touche jamais la cible tactile, le contraste
     ni la taille de texte, qui sont identiques pour les deux profils.
     --------------------------------------------------------------------- */
  --density-scale: 1;        /* 1 = confortable (3e) · 0.82 = compact (1re) */
  --row-gap:       calc(var(--space-300) * var(--density-scale));
  --section-gap:   calc(var(--space-600) * var(--density-scale));
  --card-padding:  calc(var(--space-400) * var(--density-scale));
}
body.ui-v1[data-display="dark"]{
  color-scheme: dark;

  --bg-page:        #0F1218;
  --bg-surface:     #181C24;
  --bg-surface-2:   #222733;
  --bg-overlay:     rgba(0, 0, 0, 0.60);

  --text-primary:   #F2F4F8;  /* 17,03 / page — 15,50 / surface — 13,56 / surface-2 */
  --text-secondary: #B2BACB;  /*  9,62 / page —  8,76 / surface —  7,67 / surface-2 */
  --text-tertiary:  #939CAF;  /*  6,80 / page —  6,19 / surface —  5,42 / surface-2 */
  --text-on-fill:   #0F1218;  /* le texte sur aplat devient sombre en thème sombre */

  --border:         #2C3341;  /* décoratif uniquement */
  --border-strong:  #606A7E;  /* 3,45 / page — 3,14 / surface */

  --action:           #7E9BF2;  /* sombre sur aplat 7,02 — aplat sur page 7,02 */
  --action-ledge:     #6278BC;
  --action-subtle:    #283045;
  --action-on-subtle: #7E9BF2;  /* 4,91 sur -subtle */

  --success:        #5FBF83;  /* 8,27 */
  --success-ledge:  #4A9466;
  --warning:        #E0973D;  /* 7,74 */
  --warning-ledge:  #AE752F;
  --error:          #F2757C;  /* 6,80 */
  --error-ledge:    #BB5A60;
  --info:           #5BAEE0;  /* 7,66 */
  --info-ledge:     #4788AE;

  --subject-1-bold: #7E9BF2; --subject-1-ledge: #6278BC; --subject-1-subtle: #283045; --subject-1-on-subtle: #7E9BF2; /* 4,91 */
  --subject-2-bold: #4FC3CE; --subject-2-ledge: #3D98A0; --subject-2-subtle: #21373F; --subject-2-on-subtle: #4FC3CE; /* 5,96 */
  --subject-3-bold: #E0973D; --subject-3-ledge: #AE752F; --subject-3-subtle: #383028; --subject-3-on-subtle: #E0973D; /* 5,34 */
  --subject-4-bold: #F0709E; --subject-4-ledge: #BB577B; --subject-4-subtle: #3B2938; --subject-4-on-subtle: #F0709E; /* 4,82 */
  --subject-5-bold: #A98AEE; --subject-5-ledge: #836BB9; --subject-5-subtle: #2F2E44; --subject-5-on-subtle: #A98AEE; /* 4,74 */
  --subject-6-bold: #5FBF83; --subject-6-ledge: #4A9466; --subject-6-subtle: #233633; --subject-6-on-subtle: #5FBF83; /* 5,63 */

  --generated-gradient:            linear-gradient(165deg, #7E9BF2, #A98AEE, #4FC3CE);
  --generated-gradient-horizontal: linear-gradient(90deg,  #7E9BF2, #A98AEE, #4FC3CE);
  --generated-gradient-circle:     radial-gradient(circle, #7E9BF2, #A98AEE, #4FC3CE);
  --generated-gradient-subtle:     linear-gradient(165deg, rgba(126,155,242,.16), rgba(169,138,238,.16), rgba(79,195,206,.16));

  --elevation-1: 0 1px 2px rgba(0, 0, 0, 0.40);
  --elevation-2: 0 2px 6px rgba(0, 0, 0, 0.46);
  --elevation-3: 0 6px 16px rgba(0, 0, 0, 0.52);
  --elevation-4: 0 12px 28px rgba(0, 0, 0, 0.58);
  --elevation-5: 0 20px 44px rgba(0, 0, 0, 0.64);
}
body.ui-v1[data-universe="dyna"]{
  --bg-page:            #FDF7F7;
  --bg-surface:         #FFFFFF;
  --bg-surface-2:       #F7EBEC;
  --bg-overlay:         rgba(36, 26, 28, 0.48);

  --text-primary:       #241A1C;
  --text-secondary:     #6B5055;
  --text-tertiary:      #775A60;
  --text-on-fill:       #FFFFFF;

  --border:             #EEDCDE;  /* décoratif uniquement */
  --border-strong:      #8C7175;  /* contour de composant */

  --action:             #9C3358;  /* prune rosé : le rose assumé, pas le bonbon */
  --action-ledge:       #7C2846;
  --action-subtle:      #FAE3EA;
  --action-on-subtle:   #782643;

  --font-display:       ui-serif, "New York", Georgia, "Times New Roman", serif;
  --u-display-weight:   600;
  --u-display-tracking: -0.005em;

  --u-pattern:          radial-gradient(circle at 1px 1px, #E7CDD1 1px, transparent 0);
  --u-pattern-opacity:  0.28;

  --u-duration:         400ms;   /* rythme lent, assumé */
  --u-radius-card:      var(--radius-400);
}
body.ui-v1[data-universe="syrine"]{
  --bg-page:            #F6F8FE;
  --bg-surface:         #FFFFFF;
  --bg-surface-2:       #E9EFFC;
  --bg-overlay:         rgba(18, 23, 36, 0.48);

  --text-primary:       #121724;
  --text-secondary:     #4D5570;
  --text-tertiary:      #59617C;
  --text-on-fill:       #FFFFFF;

  --border:             #D7E0F4;  /* décoratif uniquement */
  --border-strong:      #77809C;  /* contour de composant */

  --action:             #2F44C8;  /* candidat « bleu outremer », à confirmer */
  --action-ledge:       #2536A0;
  --action-subtle:      #E2E7FD;
  --action-on-subtle:   #23328F;

  --font-display:       var(--font-family);
  --u-display-weight:   800;
  --u-display-tracking: -0.02em;

  --u-pattern:          repeating-linear-gradient(115deg, #D3DDFA 0 2px, transparent 2px 14px);
  --u-pattern-opacity:  0.35;

  --u-duration:         200ms;   /* rythme vif */
  --u-radius-card:      var(--radius-600);
}
body.ui-v1[data-universe][data-palette="rose"]{  --bg-page:            #FDF7F7;
  --bg-surface:         #FFFFFF;
  --bg-surface-2:       #F7EBEC;
  --bg-overlay:         rgba(36, 26, 28, 0.48);
  --text-primary:       #241A1C;
  --text-secondary:     #6B5055;
  --text-tertiary:      #775A60;
  --text-on-fill:       #FFFFFF;
  --border:             #EEDCDE;  /* décoratif uniquement */
  --border-strong:      #8C7175;  /* contour de composant */
  --action:             #9C3358;  /* prune rosé : le rose assumé, pas le bonbon */
  --action-ledge:       #7C2846;
  --action-subtle:      #FAE3EA;
  --action-on-subtle:   #782643;}
body.ui-v1[data-universe][data-palette="blue"]{  --bg-page:            #F6F8FE;
  --bg-surface:         #FFFFFF;
  --bg-surface-2:       #E9EFFC;
  --bg-overlay:         rgba(18, 23, 36, 0.48);
  --text-primary:       #121724;
  --text-secondary:     #4D5570;
  --text-tertiary:      #59617C;
  --text-on-fill:       #FFFFFF;
  --border:             #D7E0F4;  /* décoratif uniquement */
  --border-strong:      #77809C;  /* contour de composant */
  --action:             #2F44C8;  /* candidat « bleu outremer », à confirmer */
  --action-ledge:       #2536A0;
  --action-subtle:      #E2E7FD;
  --action-on-subtle:   #23328F;}
body.ui-v1[data-universe][data-palette="rose"][data-display="dark"]{--bg-page:#241a25;--bg-surface:#332633;--bg-surface-2:#432e40;--text-primary:#fbecf3;--text-secondary:#dcc7d5;--text-tertiary:#d3bacb;--border:#574252;--border-strong:#b28caa;--action:#edb5d0;--action-ledge:#edb5d0;--action-subtle:#432e40;--action-on-subtle:#edb5d0;--text-on-fill:#241a25;}
body.ui-v1[data-universe][data-palette="blue"][data-display="dark"]{--bg-page:#13172d;--bg-surface:#1e2440;--bg-surface-2:#2d365c;--text-primary:#eff1ff;--text-secondary:#cbd2ed;--text-tertiary:#b9c2e1;--border:#394365;--border-strong:#939fcb;--action:#b3bfff;--action-ledge:#b3bfff;--action-subtle:#2d365c;--action-on-subtle:#b3bfff;--text-on-fill:#13172d;}
/* Common mechanics: the universe may not override this bridge. */
body.ui-v1.ui-v1.ui-v1{--accent:var(--action);--page:var(--bg-page);--surface:var(--bg-surface);--ink:var(--text-primary);--muted:var(--text-secondary);--wash:var(--bg-surface-2);--soft:var(--border);--line:var(--border);--button-ink:var(--text-on-fill);--hero-start:var(--bg-surface-2);--hero-end:var(--bg-surface);font-family:var(--font-family);font-size:var(--text-body-s);background:var(--bg-page);color:var(--text-primary)}
.ui-v1 h1,.ui-v1 .welcome h1,.ui-v1 .folder-heading h1,.ui-v1 .chat-heading h1{font-size:var(--text-title)}
.ui-v1 h2,.ui-v1 .today-primary h2{font-size:var(--text-title-s)}
.ui-v1 h3,.ui-v1 .support-card h3{font-size:var(--text-body)}
.ui-v1 h1,.ui-v1 h2,.ui-v1 h3{font-family:var(--font-display,var(--font-family));font-weight:var(--u-display-weight,700);letter-spacing:var(--u-display-tracking,0)}
.ui-v1 p,.ui-v1 .preserve,.ui-v1 .source-preview,.ui-v1 .bubble p{color:var(--text-primary)}
.ui-v1 .small,.ui-v1 .eyebrow,.ui-v1 .sidebar-foot p,.ui-v1 .support-type,.ui-v1 footer{font-size:var(--text-caption);color:var(--text-secondary)}
.ui-v1 .sidebar nav a,.ui-v1 .folder-tabs a,.ui-v1 .local-tabs a,.ui-v1 .breadcrumbs,.ui-v1 button,.ui-v1 .button,.ui-v1 input,.ui-v1 select,.ui-v1 textarea{font-size:var(--text-body-s)}
.ui-v1 :is(button,.button,summary,input:not([type=hidden]),select){min-height:var(--target-min);min-width:var(--target-min)}
.ui-v1 a:not(.button):not(.card):not(.discovery-visual){display:inline-flex;align-items:center;min-height:var(--target-min);min-width:var(--target-min)}
.ui-v1 input:not([type=hidden]),.ui-v1 select,.ui-v1 textarea{border-color:var(--border-strong)}
.ui-v1 input[type=checkbox],.ui-v1 input[type=radio]{accent-color:var(--action)}
body.ui-v1 button:not(.secondary):not(.text-button),body.ui-v1 .button:not(.secondary){background:var(--action);color:var(--text-on-fill)}
body.ui-v1 button.secondary,body.ui-v1 .button.secondary{background:var(--action-subtle);color:var(--action-on-subtle);border-color:var(--border-strong)}
body.ui-v1 .text-button{color:var(--action);background:transparent}
.ui-v1 :is(button,.button,a.card){transition-duration:var(--u-duration,150ms)}
.ui-v1 .card{border-radius:var(--u-radius-card,var(--radius-400))}
.ui-v1:not([data-universe]) .profile-art{visibility:hidden}
.ui-v1 .today-primary .profile-art{color:var(--action);--art-paper:var(--bg-surface);--art-detail:var(--action-on-subtle)}
.ui-v1[data-universe=syrine] .secondary-nav a[href='/chat']{background:var(--action);color:var(--text-on-fill);border-radius:var(--radius-400);font-weight:700}
.ui-v1 .culture-rail{margin-block:1rem;border-top:1px solid var(--border);padding-top:1rem}
.ui-v1 .culture-rail header{border-inline-start:4px solid var(--action);padding-inline-start:.8rem;margin-bottom:.7rem}
.ui-v1 .culture-rail header p{margin:.2rem 0;font-size:var(--text-caption)}
.ui-v1 .culture-rail h3{margin:0;font-size:var(--text-title-s)}
.ui-v1 .rail-empty{font-size:var(--text-body-s);margin:.4rem 0}
.ui-v1 .universe-unknown dt{font-weight:600;margin-top:.7rem}.ui-v1 .universe-unknown dd{margin:0;color:var(--text-secondary)}
.ui-v1 .discovery-visual{background:var(--bg-surface-2);border:1px solid var(--border);aspect-ratio:auto;min-height:4rem}
.ui-v1 .discovery-art{font-size:2.5rem;color:var(--action)}
.ui-v1 .official-player iframe{display:block;width:100%;height:220px;min-width:200px;min-height:200px;border:0;border-radius:.6rem}
.ui-v1 .official-player button{width:100%}
.ui-v1 .discovery-card .small{color:var(--text-secondary)}
.ui-v1 .football-sources{display:flex;flex-wrap:wrap;gap:.7rem}
.ui-v1 .daily-discovery{margin:1rem 0}
@media(prefers-reduced-motion:reduce){.ui-v1 :is(button,.button,a.card){transition:none!important}}
/* Adapter correction: the supplied neutral dark contour fails on tinted surfaces. */
body.ui-v1:not([data-universe])[data-display="dark"]{--border-strong:#78849B;}
.ui-v1 .mobile-voice{display:none}
@media(max-width:850px){.ui-v1 .mobile-voice{display:inline-flex;align-items:center}.ui-v1[data-universe=syrine] .secondary-nav a[href='/chat']{display:none}.ui-v1 .topbar{gap:.5rem}}
.ui-v1 .brand-icon{color:var(--text-on-fill);background:var(--action)}
.ui-v1 .today-label{color:var(--text-primary)}
.ui-v1 .culture-rails{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:1rem;align-items:start}
.ui-v1 .culture-rail .editorial-grid{grid-template-columns:minmax(0,1fr)}
/* Optional user-controlled reading spacing, common to both universes. */
.ui-v1[data-reading=spaced] :is(p,li,blockquote,.preserve){line-height:1.5!important;letter-spacing:.12em!important;word-spacing:.16em!important}
.ui-v1[data-reading=spaced] p{margin-bottom:2em!important}
