/**
 * Skin: go2sport-sport (preset slug: go2sport-sport)
 *
 * Surcharge editoriale sportive dynamique go2sport : teal petrole + lime energie
 * + vert sauge sur fond clair, navbar/footer teal-ink profond. Applique PAR-DESSUS
 * les primitives editoriales (ui-*, ed-*) deja chargees par le bundle Vite editorial.
 * Le rendu public unifie pose deux classes sur <body> : theme-go2sport-sport
 * (anti-FOUC, server-side via getBodyClass) + theme-editorial (EditorialLayout.vue
 * au mount). La structure (layout navbar/footer/grille) vient des regles
 * body.theme-editorial ; ce fichier ne fait que reteinter les surfaces, couleurs,
 * ombres et formes (boutons coupe diagonale, eyebrow slash lime, footer wordmark).
 *
 * Mecanique de surcharge (zero duplication de structure) :
 *   - les tokens --editorial-* (palette consommee par les regles .ed-*) sont
 *     redefinis sous body.theme-go2sport-sport -> tout le chrome editorial bascule
 *     sur la palette go2sport sans recopier une regle structurelle ;
 *   - les tokens derives --theme-* (surface/text/border/radius/shadow/feedback,
 *     design-tokens.css) sont redefinis -> toutes les primitives ui-* basculent ;
 *   - seules les decorations specifiques (navbar/footer teal-ink, boutons clip-path
 *     diagonal, soulign nav skew lime, wordmark footer) sont ajoutees explicitement.
 *
 * Les 10 tokens --theme-primary/secondary/accent/navbar-bg/navbar-text/body-bg/
 * card-bg (+ -rgb) sont injectes server-side par toCssVars()/buildEditorialThemeHead()
 * depuis les colonnes SQL du preset : ne PAS les redeclarer ici en :root (double
 * source). Leur miroir est REQUIS uniquement sous body.theme-go2sport-sport (le
 * :root du bundle SPA, charge apres l injection, ecrase sinon le :root injecte).
 *
 * Contrainte compat : PAS de color-mix() (Safari<15.4 / Firefox<113). Toute
 * variante derivee (hover, light, gradient) est declaree en VALEUR LITTERALE en
 * :root puis consommee. Source visuelle : lookbook skin.css (20260618-go2sport-accueil).
 *
 * Palette (identite logo go2sport) :
 *   - primary (teal petrole)   : #0F6E87   (token SQL)
 *   - secondary (teal fonce)   : #0A4D5F   (token SQL)
 *   - accent (lime energie)    : #A4C639   (token SQL)
 *   - navbar/footer (teal-ink) : #0B2E38   (token SQL navbar_bg)
 *   - fond clair (cloud)       : #F4F7F6   (token SQL body_bg)
 *   - surface carte            : #FFFFFF   (token SQL card_bg)
 *   - vert sauge               : #8FC79A   (accent doux)
 *   - texte courant (ink)      : #14232A   (ratio ~13:1 sur #F4F7F6, WCAG AAA)
 *   - typo titres              : Oswald (font SQL, condense uppercase)
 *   - typo corps               : Barlow (font SQL)
 *
 * Contraste (WCAG AA) : accent lime #A4C639 sur fond clair insuffisant pour texte
 * courant -> reserve aux fills de boutons (sur texte ink), accents, borders. Le
 * texte courant utilise #14232A ; les liens portent une couleur teal-deep ; les
 * boutons primaires lime ont un texte ink (#14232A), les boutons teal un texte
 * #FFFFFF ; navbar/footer teal-ink portent un texte #FFFFFF.
 */

/* ============================================
   1. Variables go2sport-specifiques (NON couvertes par toCssVars)
   Limite a :root par contrat : les --theme-* injectes restent seule source.
   Variantes derivees en VALEUR LITTERALE (pas de color-mix). Source : lookbook.
   ============================================ */
:root {
  --g2s-teal-deep: #0A4D5F;
  --g2s-teal-ink: #0B2E38;
  --g2s-teal-btn: #0C5E73;
  --g2s-teal-hover: #0D5F73;
  --g2s-sage: #8FC79A;
  --g2s-sage-soft: #C9E6CE;
  --g2s-lime: #A4C639;
  --g2s-lime-bright: #B8DC3C;
  --g2s-ink: #14232A;
  --g2s-ink-soft: #3C4D54;
  --g2s-cloud: #F4F7F6;
  --g2s-mist: #E7EEEC;
  --g2s-btn-clip-offset: 14px;
  --g2s-teal-rgb: 15, 110, 135;
  --g2s-lime-rgb: 164, 198, 57;
  --g2s-sage-rgb: 143, 199, 154;
}

/* ============================================
   2. Override des tokens editoriaux (--editorial-*) + coeur (--theme-*)
   Reteinte tout le chrome .ed-* (navbar/footer/hero/contenu/tables) sur la palette
   go2sport. Les variantes -rgb sont redefinies car les regles editoriales les
   consomment en rgba(var(--editorial-X-rgb), a).
   Le selecteur double body.theme-editorial.theme-go2sport-sport (0,2,1) est requis :
   le bundle SPA importe theme-editorial.css (tokens :root) et pose la classe
   theme-editorial sur le body apres coup ; ses overrides body.theme-editorial
   (0,1,1) chargent apres ce fichier et gagneraient a specificite egale.
   Les 10 tokens injectes par buildEditorialThemeHead sont redeclares ici (memes
   valeurs que theme_presets en DB) car le :root du bundle ecrase le :root injecte
   par ordre de chargement.
   ============================================ */
body.theme-go2sport-sport,
body.theme-editorial.theme-go2sport-sport {
  /* Tokens coeur (miroir V107 - skin_go2sport-sport_activation.sql) */
  --theme-primary: #0F6E87;
  --theme-secondary: #0A4D5F;
  --theme-accent: #A4C639;
  --theme-navbar-bg: #0B2E38;
  --theme-navbar-text: #FFFFFF;
  --theme-body-bg: #F4F7F6;
  --theme-card-bg: #FFFFFF;
  --theme-primary-rgb: 15, 110, 135;
  --theme-secondary-rgb: 10, 77, 95;
  --theme-accent-rgb: 164, 198, 57;
  --theme-primary-light: #3D8FA3;

  --editorial-ink: #14232A;
  --editorial-ink-muted: #3C4D54;
  --editorial-bone: #F4F7F6;
  --editorial-sand: #FFFFFF;
  --editorial-clay: var(--theme-primary);
  --editorial-moss: var(--theme-accent);
  --editorial-stone: #5C6D74;
  --editorial-lime: var(--theme-accent);
  --editorial-danger: #c0392b;
  --editorial-surface-hover: var(--g2s-mist);
  --editorial-on-dark: #FFFFFF;
  --editorial-ink-rgb: 20, 35, 42;
  --editorial-bone-rgb: 244, 247, 246;
  --editorial-sand-rgb: 255, 255, 255;
  --editorial-clay-rgb: var(--theme-primary-rgb);
  --editorial-moss-rgb: var(--theme-accent-rgb);
  --editorial-stone-rgb: 92, 109, 116;
  --editorial-lime-rgb: var(--theme-accent-rgb);

  /* Alias legacy editoriaux (--blue/--blue-dk/--blue-hi declares :root dans
     theme-editorial.css sous la forme var(--editorial-X, fallback)). Sur :root,
     --editorial-clay n'existe PAS (defini sur body.theme-editorial) : --blue y
     reste donc bloque sur son fallback #1E88E5 (bleu Material) et herite ENSUITE
     partout -> accent bleu hors-marque sur les heros .a-hero (eyebrow + <em> du
     titre), la perso et les data-tables, alors que la home (.ed-hero__accent,
     qui lit var(--editorial-clay) directement) est bien teal. On reteinte ces
     alias au scope body go2sport : isolation warfaaz totale (son --blue conserve
     son comportement actuel). */
  --blue: var(--theme-primary);
  --blue-dk: var(--g2s-teal-deep);
  --blue-hi: var(--theme-primary-light);

  --surface: var(--theme-card-bg);
  --rule: rgba(var(--theme-secondary-rgb), 0.12);

  /* Derives --theme-* (design-tokens.css) : basculent toutes les primitives ui-* */
  --theme-surface: var(--theme-card-bg);
  --theme-surface-muted: var(--g2s-mist);
  --theme-border: rgba(var(--theme-secondary-rgb), 0.16);
  --theme-text: #14232A;
  --theme-text-muted: #3C4D54;
  --theme-text-inverse: #FFFFFF;
  --theme-danger: #c0392b;
  --theme-danger-rgb: 192, 57, 43;
  --theme-success: #2f8f4e;
  --theme-success-rgb: 47, 143, 78;
  --theme-warning: #d99a16;
  --theme-warning-rgb: 217, 154, 22;
  /* Variantes -soft resolues au scope de declaration : redeclarees apres
     l override des -rgb pour suivre la palette go2sport (cf design-tokens.css). */
  --theme-danger-soft: rgba(192, 57, 43, 0.12);
  --theme-success-soft: rgba(47, 143, 78, 0.12);
  --theme-warning-soft: rgba(217, 154, 22, 0.16);
  --theme-radius-sm: 0.375rem;
  --theme-radius-md: 0.875rem;
  --theme-radius-lg: 1.375rem;
  --theme-shadow-sm: 0 6px 22px rgba(11, 46, 56, 0.1);
  --theme-shadow-md: 0 14px 40px rgba(11, 46, 56, 0.16);
  --theme-shadow-lg: 0 22px 60px rgba(11, 46, 56, 0.22);
  --theme-focus-ring: 0 0 0 3px rgba(var(--theme-primary-rgb), 0.25);

  /* Typographie (override tokens --serif/--sans non couverts par toCssVars)
     --serif/--sans sont definis :root dans tokens.css (Fraunces/Inter) et NE sont
     PAS injectes par buildEditorialThemeHead(). Les ~70 classes .ed-* de widget
     consomment var(--serif)/var(--sans) via des regles body.theme-editorial .ed-X
     (specificite 0,2,0) qui battent l override de balise h1-h6 du skin (0,1,1).
     On reteinte donc le TOKEN ici : le double-selecteur (0,2,1) gagne sur :root et
     sur body.theme-editorial, et tout consommateur de var(--serif)/var(--sans)
     bascule en Oswald/Barlow quelle que soit sa specificite. */
  --serif: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  --sans: 'Barlow', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  /* Opt-out du "mode sombre force" (Chrome/WebView Android "Forcer le mode sombre"
     ou theme auto). go2sport est un skin CLAIR : sans color-scheme declaree
     (root/body = normal), le navigateur s'autorise a inverser algorithmiquement
     les surfaces claires. Le .ed-topbar (fond --editorial-bone clair, texte
     --editorial-stone gris moyen) devenait alors gris-sur-fonce illisible. En
     declarant que ce sous-arbre ne supporte QUE le clair, on desactive l'auto-dark
     sur toute la page go2sport (topbar, navbar, drawer, contenu sont tous
     descendants de body). Scope body go2sport : warfaaz totalement inchange. */
  color-scheme: only light;

  background-color: var(--theme-body-bg);
  color: #14232A;
}

/* ============================================
   3. Typographie : Oswald (display, uppercase) pour les titres, Barlow pour le corps
   ============================================ */
body.theme-go2sport-sport {
  font-family: 'Barlow', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

body.theme-go2sport-sport h1,
body.theme-go2sport-sport h2,
body.theme-go2sport-sport h3,
body.theme-go2sport-sport h4,
body.theme-go2sport-sport h5,
body.theme-go2sport-sport h6,
body.theme-go2sport-sport .h1,
body.theme-go2sport-sport .h2,
body.theme-go2sport-sport .h3,
body.theme-go2sport-sport .h4,
body.theme-go2sport-sport .h5,
body.theme-go2sport-sport .h6,
body.theme-go2sport-sport .font-display {
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  color: #14232A;
}

body.theme-go2sport-sport p {
  color: var(--g2s-ink-soft);
}

/* ============================================
   4. Navbar editoriale - teal-ink profond, soulign lime skew
   ============================================ */
/* Double-classe (0,3,x) : bat la base body.theme-editorial .ed-nav (0,2,x) quel
   que soit l'ordre de chargement CSS. Indispensable pour que le rendu dev (Vite
   injecte le bundle de base APRES le <link> skin) soit identique a la prod. */
body.theme-editorial.theme-go2sport-sport .ed-nav {
  background-color: rgba(11, 46, 56, 0.95);
  border-bottom: 1px solid rgba(var(--theme-accent-rgb), 0.28);
  box-shadow: 0 1px 12px rgba(11, 46, 56, 0.24);
}

body.theme-editorial.theme-go2sport-sport .ed-nav__link,
body.theme-editorial.theme-go2sport-sport .ed-nav__login {
  color: #D6E1E0;
  position: relative;
}

body.theme-editorial.theme-go2sport-sport .ed-nav__link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  height: 3px;
  width: 0;
  background: var(--theme-accent);
  transform: skewX(-20deg);
  transition: width 0.2s ease;
}

body.theme-editorial.theme-go2sport-sport .ed-nav__link:hover,
body.theme-editorial.theme-go2sport-sport .ed-nav__login:hover {
  color: var(--g2s-lime-bright);
}

body.theme-editorial.theme-go2sport-sport .ed-nav__link:hover::after {
  width: 100%;
}

/* Bouton burger (label "MENU" + barres de l'icone + bordure) : visible seulement
   en layout burger, et TOUJOURS pose sur la navbar teal-ink sombre (jamais dans le
   drawer clair - le drawer a son propre bouton close). La base les colore en
   --editorial-ink (#14232A sur go2sport) -> ink sombre sur teal sombre = quasi
   invisible ("MENU" fantome, hamburger noyé). On les eclaircit comme les liens de
   la navbar (#D6E1E0) + bordure blanc translucide. Double-selecteur (0,3,0) bat la
   base (0,2,0) quel que soit l'ordre. Scope go2sport : la navbar CLAIRE de warfaaz
   garde son burger ink (correct sur fond clair). */
body.theme-editorial.theme-go2sport-sport .ed-nav__burger-label {
  color: #D6E1E0;
}
body.theme-editorial.theme-go2sport-sport .ed-nav__burger-bar {
  background-color: #D6E1E0;
}
body.theme-editorial.theme-go2sport-sport .ed-nav__burger {
  border-color: rgba(255, 255, 255, 0.28);
}

/* Panneau mobile / compact : liens en ink sombre (sinon invisibles).
   Le #D6E1E0 ci-dessus est concu pour la navbar HORIZONTALE teal-ink sombre.
   Sous 1024px (et en mode compact JS), .ed-nav__menu devient un drawer slide-in
   sur fond clair var(--editorial-bone) (#F4F7F6, cf. navbar.css) : ce gris pale
   sur fond clair est illisible. Les items a sous-menu portent .ed-nav__link ET
   .ed-nav__link--button (NavSubmenuItem.vue), donc la regle #D6E1E0 (0,3,1) les
   teinte aussi -> tout le menu du drawer disparait. On repasse les liens du
   PANNEAU en ink sombre. Selecteurs .ed-nav__menu .ed-nav__link : (0,3,2) en
   media / (0,4,2) en compact, battent le #D6E1E0 (0,3,1) par specificite quel
   que soit l'ordre de chargement. La navbar horizontale desktop (hors media,
   hors compact) garde #D6E1E0 sur son fond teal. Scope go2sport : zero warfaaz. */
@media (max-width: 1023.98px) {
  body.theme-editorial.theme-go2sport-sport .ed-nav__menu .ed-nav__link {
    color: var(--g2s-ink);
  }
  body.theme-editorial.theme-go2sport-sport .ed-nav__menu .ed-nav__link:hover {
    color: var(--g2s-teal-deep);
  }
}
body.theme-editorial.theme-go2sport-sport .ed-nav--compact .ed-nav__menu .ed-nav__link {
  color: var(--g2s-ink);
}
body.theme-editorial.theme-go2sport-sport .ed-nav--compact .ed-nav__menu .ed-nav__link:hover {
  color: var(--g2s-teal-deep);
}

/* Bandeau de marque blanc, pleine largeur, en haut de la sidebar verticale.
   Le logo PNG go2sport est en couleurs concues pour un fond clair : sur le
   teal-ink, "SPORT" + la silhouette se noyaient. Le bandeau blanc redonne au
   logo couleur son fond clair d'origine. Full-bleed via marges negatives qui
   annulent le padding de .ed-nav__inner (1.5rem haut / 1rem cotes), donc le
   rectangle blanc touche le haut et les deux bords du rail. Selecteur (0,6,0) :
   bat la regle brand verticale de base (0,5,0) quel que soit l'ordre de chargement
   (parite dev/prod). Scope min-width:1024px = uniquement le rail desktop. */
@media (min-width: 1024px) {
  /* Supprime le liseré accent du rail go2sport. Le brand blanc est clippe au
     padding-box (overflow-x:hidden) donc s'arrete a 272px, mais le rail fait
     273px a cause de ce border-right 1px : il restait une fine ligne (le border
     lime translucide par-dessus le contenu sombre = lecture "ligne sombre") a
     droite du bandeau. Le contraste teal / contenu clair separe deja le rail. */
  body.theme-editorial.layout-vertical.theme-go2sport-sport .ed-nav.ed-nav--vertical {
    border-right: 0;
  }
  body.theme-editorial.layout-vertical.theme-go2sport-sport .ed-nav.ed-nav--vertical .ed-nav__brand {
    background-color: #ffffff;
    box-sizing: border-box;
    margin: -1.5rem -1rem 1.25rem;
    padding: 1.25rem 1rem;
    border-bottom: 1px solid rgba(20, 35, 42, 0.10);
  }
}

body.theme-go2sport-sport .btn-ed-cta {
  background: var(--theme-accent);
  border-color: transparent;
  color: var(--g2s-ink);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  clip-path: polygon(0 0, 100% 0, calc(100% - var(--g2s-btn-clip-offset)) 100%, 0 100%);
  box-shadow: 0 4px 16px rgba(var(--theme-accent-rgb), 0.3);
}

body.theme-go2sport-sport .btn-ed-cta:hover {
  background: var(--g2s-lime-bright);
  border-color: transparent;
  color: var(--g2s-ink);
  transform: translateY(-3px);
  box-shadow: 0 10px 30px rgba(var(--theme-accent-rgb), 0.42);
}

/* ============================================
   4b. Toolbar admin - items uniformes (gras comme les onglets simples)
   La regle globale `body.theme-go2sport-sport a { font-weight: 600 }` (section 7)
   epaissit les items SANS sous-menu (rendus en <a>), mais pas ceux a chevron
   (rendus en <button>) -> rendu incoherent, seul sur go2sport. On aligne les
   boutons sur le poids des onglets <a>. Specificite (0,2,1) ; le CSS de base ne
   pose aucun font-weight sur .ed-admin-toolbar__link, donc rien ne s'y oppose.
   ============================================ */
body.theme-go2sport-sport .ed-admin-toolbar__link--button {
  font-weight: 600;
}

/* ============================================
   5. Cards / surfaces editoriales - blanc, lift au survol (lookbook .course-card)
   ============================================ */
body.theme-go2sport-sport .card,
body.theme-go2sport-sport .ui-modal__content {
  background: var(--theme-card-bg);
  border: 1px solid rgba(var(--theme-primary-rgb), 0.12);
  border-radius: 14px;
  color: #14232A;
}

body.theme-go2sport-sport .card {
  box-shadow: 0 6px 22px rgba(11, 46, 56, 0.1);
  transition: transform 0.22s ease,
              box-shadow 0.22s ease,
              border-color 0.22s ease;
}

body.theme-go2sport-sport .card:hover {
  transform: translateY(-6px);
  box-shadow: 0 22px 60px rgba(11, 46, 56, 0.22);
  border-color: rgba(var(--theme-primary-rgb), 0.28);
}

/* ============================================
   6. Boutons editoriaux - coupe diagonale "vitesse", lime sur ink (lookbook .btn)
   .btn-primary / .btn-ink editorialises + primitive ui-btn--primary / ui-btn--dark.
   Texte ink sur lime (WCAG OK) ; texte blanc sur teal-btn (WCAG OK).
   ============================================ */
body.theme-go2sport-sport .btn-primary,
body.theme-go2sport-sport .ui-btn--primary {
  background: var(--theme-accent);
  border-color: transparent;
  color: var(--g2s-ink);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  clip-path: polygon(0 0, 100% 0, calc(100% - var(--g2s-btn-clip-offset)) 100%, 0 100%);
  box-shadow: 0 4px 16px rgba(var(--theme-accent-rgb), 0.25);
}

body.theme-go2sport-sport .btn-primary:hover,
body.theme-go2sport-sport .btn-primary:focus,
body.theme-go2sport-sport .ui-btn--primary:hover:not(:disabled),
body.theme-go2sport-sport .ui-btn--primary:focus-visible:not(:disabled) {
  background: var(--g2s-lime-bright);
  border-color: transparent;
  color: var(--g2s-ink);
  transform: translateY(-3px);
  box-shadow: 0 10px 30px rgba(var(--theme-accent-rgb), 0.35);
  filter: none;
}

body.theme-go2sport-sport .btn-ink,
body.theme-go2sport-sport .ui-btn--dark {
  background: var(--g2s-teal-btn);
  border-color: transparent;
  color: #FFFFFF;
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  clip-path: polygon(0 0, 100% 0, calc(100% - var(--g2s-btn-clip-offset)) 100%, 0 100%);
}

body.theme-go2sport-sport .btn-ink:hover,
body.theme-go2sport-sport .btn-ink:focus-visible:not(:disabled),
body.theme-go2sport-sport .ui-btn--dark:hover:not(:disabled),
body.theme-go2sport-sport .ui-btn--dark:focus-visible:not(:disabled) {
  background: var(--g2s-teal-deep);
  color: #FFFFFF;
  transform: translateY(-3px);
  box-shadow: 0 12px 30px rgba(var(--theme-primary-rgb), 0.4);
}

/* ============================================
   7. Liens - teal-deep, hover teal/lime
   ============================================ */
body.theme-go2sport-sport a {
  color: var(--g2s-teal-deep);
  font-weight: 600;
}

body.theme-go2sport-sport a:hover {
  color: var(--theme-primary);
}

/* ============================================
   8. Tables editoriales - en-tete clair, soulign lime, hover lime tres pale
   ============================================ */
body.theme-go2sport-sport .table thead th,
body.theme-go2sport-sport table thead th,
body.theme-go2sport-sport .ui-table thead th {
  background: var(--g2s-mist);
  color: #14232A;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  border-bottom: 2px solid var(--theme-accent);
}

body.theme-go2sport-sport .table-hover tbody tr:hover,
body.theme-go2sport-sport .ui-table--hover tbody tr:hover td {
  background-color: rgba(var(--theme-accent-rgb), 0.08);
}

/* ============================================
   9. Formulaires - surface claire, focus teal
   ============================================ */
body.theme-go2sport-sport .form-control,
body.theme-go2sport-sport input[type="text"],
body.theme-go2sport-sport input[type="email"],
body.theme-go2sport-sport input[type="password"],
body.theme-go2sport-sport input[type="number"],
body.theme-go2sport-sport input[type="date"],
body.theme-go2sport-sport input[type="search"],
body.theme-go2sport-sport input[type="tel"],
body.theme-go2sport-sport textarea,
body.theme-go2sport-sport select,
body.theme-go2sport-sport .ui-input,
body.theme-go2sport-sport .ui-textarea,
body.theme-go2sport-sport .ui-select {
  background-color: #FFFFFF;
  border-color: rgba(var(--theme-secondary-rgb), 0.2);
  color: #14232A;
}

body.theme-go2sport-sport .form-control:focus,
body.theme-go2sport-sport input:focus,
body.theme-go2sport-sport textarea:focus,
body.theme-go2sport-sport select:focus,
body.theme-go2sport-sport .ui-input:focus,
body.theme-go2sport-sport .ui-textarea:focus,
body.theme-go2sport-sport .ui-select:focus {
  border-color: var(--theme-primary);
  background-color: #FFFFFF;
  color: #14232A;
  box-shadow: 0 0 0 3px rgba(var(--theme-primary-rgb), 0.15);
}

/* ============================================
   10. Badges editoriaux - lime/teal sport (lookbook .tag-pill skew)
   ============================================ */
body.theme-go2sport-sport .ui-badge--primary {
  background: var(--theme-accent);
  color: var(--g2s-ink);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

body.theme-go2sport-sport .ui-badge--success {
  background: var(--g2s-sage);
  color: var(--g2s-ink);
}

body.theme-go2sport-sport .ui-badge--warning {
  background: #d99a16;
  color: #14232A;
}

/* ============================================
   11. Footer editorial - teal-ink profond, wordmark sage/lime (lookbook .wordmark)
   ============================================ */
body.theme-go2sport-sport .ed-footer {
  background-color: #0B2E38;
  border-top: 1px solid rgba(var(--theme-accent-rgb), 0.28);
  color: rgba(255, 255, 255, 0.8);
}

body.theme-go2sport-sport .ed-footer__col-title {
  color: #FFFFFF;
  letter-spacing: 0.12em;
}

body.theme-go2sport-sport .ed-footer a:hover {
  color: var(--g2s-lime-bright);
}

body.theme-go2sport-sport .ed-footer .wordmark .go {
  color: var(--g2s-sage);
}

body.theme-go2sport-sport .ed-footer .wordmark .two {
  color: var(--g2s-lime-bright);
}

/* ============================================
   12. Scrollbar go2sport - teal fin
   ============================================ */
body.theme-go2sport-sport ::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

body.theme-go2sport-sport ::-webkit-scrollbar-track {
  background: var(--g2s-mist);
}

body.theme-go2sport-sport ::-webkit-scrollbar-thumb {
  background: rgba(var(--theme-primary-rgb), 0.35);
  border-radius: 3px;
}

body.theme-go2sport-sport ::-webkit-scrollbar-thumb:hover {
  background: rgba(var(--theme-primary-rgb), 0.55);
}

/* ============================================
   13. Progress / barres - gradient teal -> lime
   ============================================ */
body.theme-go2sport-sport .progress {
  background-color: var(--g2s-mist);
}

body.theme-go2sport-sport .progress-bar {
  background: linear-gradient(90deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
}

/* ============================================
   14. Composition home - eyebrows "slash lime" + titres Oswald punchy
   Les eyebrows editoriaux (.ed-section-kicker, .ed-hero__kicker) recoivent le
   slash lime du lookbook ; les titres de section basculent en Oswald 700
   uppercase (punch athletique). Double selecteur body.theme-editorial.
   theme-go2sport-sport (0,3,x) pour battre les regles body.theme-editorial
   .ed-* (0,2,x). Cas particulier : courses.css cible .ed-courses .ed-section-kicker
   (0,3,0) -> EGALITE avec notre .ed-section-kicker (0,3,0), departagee par l'ordre
   de chargement (le skin est injecte par buildEditorialThemeHead en fin de <head>,
   donc APRES le bundle Vite editorial : il gagne). Le slash ::before (0,3,1) gagne
   lui par specificite pure. Impact nul si l'ordre change (--editorial-clay reste teal).
   ============================================ */
body.theme-editorial.theme-go2sport-sport .ed-section-kicker {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--g2s-teal-deep);
  font-weight: 600;
}
body.theme-editorial.theme-go2sport-sport .ed-section-kicker::before {
  content: "";
  width: 34px;
  height: 4px;
  background: var(--theme-accent);
  transform: skewX(-22deg);
  display: inline-block;
  flex: 0 0 auto;
}
body.theme-editorial.theme-go2sport-sport .ed-hero__kicker::before {
  width: 34px;
  height: 4px;
  background: var(--theme-accent);
  transform: skewX(-22deg);
}
body.theme-editorial.theme-go2sport-sport .ed-philosophy__title,
body.theme-editorial.theme-go2sport-sport .ed-courses__title,
body.theme-editorial.theme-go2sport-sport .ed-course-card__title {
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.01em;
}
/* Sous-titre italique du header cours : garde la legerete editoriale (contraste
   avec le titre bold), mais teinte sport. */
body.theme-editorial.theme-go2sport-sport .ed-courses__title-italic {
  text-transform: none;
}

/* Kicker des cartes cours + CTA cartes en accent lime/teal sport. */
body.theme-editorial.theme-go2sport-sport .ed-course-card__kicker {
  color: var(--theme-accent);
}
body.theme-editorial.theme-go2sport-sport .ed-course-card__cta,
body.theme-editorial.theme-go2sport-sport .ed-courses__planning-cta {
  color: var(--theme-accent);
}
body.theme-editorial.theme-go2sport-sport .ed-course-card__cta:hover {
  color: var(--g2s-lime-bright);
}
/* Stat numbers (philosophy) en teal vif sport. */
body.theme-editorial.theme-go2sport-sport .ed-stat__number {
  color: var(--theme-primary);
  font-weight: 600;
}

/* ============================================
   15. Widget flyers (editorial.flyers) - traitement "poster sportif"
   Le widget n'emet PAS de classe de variante couleur : la rotation
   lime/teal/sage/ink est posee via :nth-child(4n+k) (ordre lookbook variante A).
   Le base flyers.css n'est pas scope theme-editorial (.editorial-flyers .flyer,
   0,2,0) : body.theme-go2sport-sport .editorial-flyers (0,3,x) suffit a gagner.
   Valeurs litterales (pas de color-mix). Scope go2sport : zero impact warfaaz.
   ============================================ */

/* Confinement de section : le widget flyers n'embarque pas de .ed-container ;
   on le confine comme les autres sections. Les tokens --ed-max-width /
   --ed-padding-x viennent de tokens.css (:root, 1440px / clamp(1rem,4vw,3rem)) ;
   fallback litteral AUX MEMES VALEURS car ces tokens ne sont PAS garantis dans
   le scope de .editorial-flyers (definis aussi en local sur .ed-nav__inner). */
body.theme-go2sport-sport .editorial-flyers {
  max-width: var(--ed-max-width, 1440px);
  margin-inline: auto;
  padding-inline: var(--ed-padding-x, clamp(1rem, 4vw, 3rem));
  padding-block: clamp(3rem, 6vw, 6rem);
}

/* En-tete : eyebrow slash lime + titre Oswald condense uppercase. */
body.theme-go2sport-sport .editorial-flyers .flyers__kicker {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  font-weight: 600;
  letter-spacing: 0.22em;
  color: var(--g2s-teal-deep);
}
body.theme-go2sport-sport .editorial-flyers .flyers__kicker::before {
  content: "";
  width: 34px;
  height: 4px;
  background: var(--theme-accent);
  transform: skewX(-22deg);
  display: inline-block;
  flex: 0 0 auto;
}
body.theme-go2sport-sport .editorial-flyers .flyers__title {
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.01em;
  color: #14232A;
}
body.theme-go2sport-sport .editorial-flyers .flyers__lede {
  color: var(--g2s-ink-soft);
}

/* Grille : on neutralise le bento (tuiles inegales -> chevauchement quand le
   contenu depasse grid-auto-rows fixe) au profit d'un mur de posters egaux,
   comme la variante A du lookbook. Couvre aussi la variante grille native.
   auto-fit + max BORNE (300px, pas 1fr) : sans borne, a N=2/3 flyers les pistes
   vides se collapsent et les cartes s'etirent en posters geants. La borne + le
   min 220px garantissent N=4 sur une rangee (4x300 < contenu) et des cartes
   compactes a faible N ; justify-content center evite le vide asymetrique a
   droite (pas de cartes geantes ni de rangee deséquilibrée). */
body.theme-go2sport-sport .editorial-flyers .flyer-bento,
body.theme-go2sport-sport .editorial-flyers .flyer-grid {
  grid-template-columns: repeat(auto-fit, minmax(220px, 300px));
  grid-auto-rows: auto;
  gap: 20px;
  justify-content: center;
}
body.theme-go2sport-sport .editorial-flyers .flyer-bento .b-tall {
  grid-row: auto;
}
body.theme-go2sport-sport .editorial-flyers .flyer-bento .b-wide {
  grid-column: auto;
}

/* Carte poster : hauteur poster via min-height (PAS aspect-ratio). Le base
   flyers.css pose overflow:hidden ; combine a une hauteur VERROUILLEE (aspect-ratio
   + min-height:0), un titre long (2-3 lignes) sur carte etroite ferait deborder
   puis CLIPPER la date + le CTA. min-height laisse la carte grandir avec le
   contenu (jamais de coupe) et evite aussi les cartes geantes en mobile (1 col
   pleine largeur ou aspect-ratio 3/4 donnait ~570px de haut). */
body.theme-go2sport-sport .editorial-flyers .flyer {
  min-height: clamp(300px, 24vw, 360px);
  border: 0;
  border-radius: 14px;
  padding: 22px;
  color: #FFFFFF;
  background: linear-gradient(160deg, #0F6E87, #0B2E38);
  box-shadow: 0 6px 22px rgba(11, 46, 56, 0.1);
  transition: transform 0.22s ease, box-shadow 0.22s ease;
}
body.theme-go2sport-sport .editorial-flyers .flyer:hover {
  transform: translateY(-6px) rotate(-0.5deg);
  box-shadow: 0 22px 60px rgba(11, 46, 56, 0.22);
}
/* Remplace la barre clay editoriale (::before) par le slash signature blanc. */
body.theme-go2sport-sport .editorial-flyers .flyer::before {
  top: -10%;
  left: auto;
  right: -30%;
  width: 70%;
  height: 130%;
  background: rgba(255, 255, 255, 0.06);
  transform: skewX(-18deg);
  pointer-events: none;
}

/* Rotation des couleurs (ordre lookbook : lime, teal, sage, ink). Le 2e stop des
   gradients a texte ink (lime/sage) est ECLAIRCI vs lookbook (#7A9A22/#5BA074 au
   lieu de #6D8A1E/#4E8F64) : sinon le CTA ink (.8rem, texte normal, seuil 4.5:1)
   tombait a ~4.1:1 sur le bas le plus sombre du gradient. Ainsi >=4.9:1 partout. */
body.theme-go2sport-sport .editorial-flyers .flyer:nth-child(4n + 1) {
  background: linear-gradient(160deg, #A4C639, #7A9A22);
  color: #14232A;
}
body.theme-go2sport-sport .editorial-flyers .flyer:nth-child(4n + 2) {
  background: linear-gradient(160deg, #0F6E87, #0B2E38);
  color: #FFFFFF;
}
/* Carte sage : texte ink (et non blanc) - white sur #8FC79A echoue WCAG AA
   (~1.9:1) ; ink #14232A sur la sauge passe largement. Alternance propre des
   cartes : ink / blanc / ink / blanc. */
body.theme-go2sport-sport .editorial-flyers .flyer:nth-child(4n + 3) {
  background: linear-gradient(160deg, #8FC79A, #5BA074);
  color: #14232A;
}
body.theme-go2sport-sport .editorial-flyers .flyer:nth-child(4n + 4) {
  background: linear-gradient(160deg, #1C3A44, #0B2E38);
  color: #FFFFFF;
}

/* Typo interne de carte : kicker + titre + date pastille + cta, tous Oswald. */
body.theme-go2sport-sport .editorial-flyers .flyer__kicker {
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  font-weight: 600;
  letter-spacing: 0.18em;
  font-size: 0.72rem;
  color: inherit;
}
body.theme-go2sport-sport .editorial-flyers .flyer__title {
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  font-weight: 700;
  text-transform: uppercase;
  font-size: clamp(1.5rem, 2.2vw, 2.1rem);
  line-height: 0.98;
  letter-spacing: 0.01em;
  color: inherit;
  margin: 6px 0 0;
}
body.theme-go2sport-sport .editorial-flyers .flyer__date {
  display: inline-block;
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  font-weight: 600;
  background: rgba(0, 0, 0, 0.25);
  color: inherit;
  padding: 5px 12px;
  border-radius: 4px;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
/* Cartes a texte ink (lime + sage) : pastille date sur voile blanc (contraste). */
body.theme-go2sport-sport .editorial-flyers .flyer:nth-child(4n + 1) .flyer__date,
body.theme-go2sport-sport .editorial-flyers .flyer:nth-child(4n + 3) .flyer__date {
  background: rgba(255, 255, 255, 0.4);
}
body.theme-go2sport-sport .editorial-flyers .flyer__cta {
  display: block;
  margin-top: 12px;
  font-family: 'Oswald', 'Arial Narrow', system-ui, sans-serif;
  font-weight: 600;
  letter-spacing: 0.08em;
  font-size: 0.8rem;
  text-transform: uppercase;
  color: inherit;
}

/* ============================================
   16. Accessibilite - reduction des animations
   ============================================ */
@media (prefers-reduced-motion: reduce) {
  body.theme-go2sport-sport .card,
  body.theme-go2sport-sport .btn-primary,
  body.theme-go2sport-sport .btn-ink,
  body.theme-go2sport-sport .btn-ed-cta,
  body.theme-go2sport-sport .ui-btn--dark,
  body.theme-go2sport-sport .ui-btn--primary,
  body.theme-go2sport-sport .editorial-flyers .flyer,
  body.theme-go2sport-sport .ed-nav__link::after {
    animation: none;
    transition: none;
  }
  body.theme-go2sport-sport .card:hover,
  body.theme-go2sport-sport .btn-primary:hover,
  body.theme-go2sport-sport .ui-btn--primary:hover,
  body.theme-go2sport-sport .btn-ink:hover,
  body.theme-go2sport-sport .btn-ed-cta:hover,
  body.theme-go2sport-sport .editorial-flyers .flyer:hover {
    transform: none;
    box-shadow: none;
  }
}

/* ============================================
   17. Page /abonnements - barre d'outils collante (onglets + recherche + bascule)
   Deux corrections SCOPEES go2sport (zero impact sur les autres tenants editoriaux) :

   (a) Sticky en layout vertical. En navigation_layout='vertical' (go2sport), la nav
       est un rail FIXE a gauche : il n'y a PAS de navbar horizontale en haut. Or le
       style scoped Vue colle .abo-toolbar a
         top: calc(var(--ed-admin-toolbar-h,0px) + var(--ed-nav-h,60px))
       soit 60px reserves pour une navbar absente -> un trou en haut ou le contenu
       (titre de la carte) defilait AU-DESSUS du toolbar. On recolle au vrai offset
       haut (toolbar admin seule, 0 pour le public). Borne >=1024px : sous ce seuil
       la nav repasse en barre horizontale mobile et le decalage 60px reste pertinent.

   (b) Forme. La bande pleine largeur a filets durs (haut+bas) avec contenu colle aux
       bords ("trop carre") devient un panneau go2sport : surface carte, coins
       arrondis (--theme-radius-md), ombre douce (--theme-shadow-sm) et padding
       interne pour aerer onglets/recherche/bascule.

   Specificite body.theme-go2sport-sport(.layout-vertical) .abo-toolbar (0,3,1) >
   style scoped Vue .abo-toolbar[data-v] (0,2,0) : override sans !important.
   ============================================ */
@media (min-width: 1024px) {
  body.theme-go2sport-sport.layout-vertical .abo-toolbar {
    top: var(--ed-admin-toolbar-h, 0px);
  }
}

body.theme-go2sport-sport .abo-toolbar {
  background: var(--theme-card-bg);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  border: 1px solid rgba(var(--theme-secondary-rgb), 0.12);
  border-radius: var(--theme-radius-md);
  padding-inline: clamp(18px, 2vw, 24px);
  box-shadow: var(--theme-shadow-sm);
}

/* ============================================
   18. Page /abonnements - cartes + elements arrondis (coherence avec le toolbar
   arrondi de la section 17). SCOPE go2sport + selecteurs SPECIFIQUES abonnements
   (.abo-* et .editorial-item--abo) : aucune autre page editoriale (cours, stages,
   activites... qui partagent .editorial-item) n'est touchee, et aucun autre tenant.
   Cartes en --theme-radius-md (comme le toolbar), elements internes (cellules de
   creneau, champ recherche, chips jour, badge compteur) en --theme-radius-sm.
   ============================================ */
body.theme-go2sport-sport .abo-formule,
body.theme-go2sport-sport .editorial-item--abo {
  border-radius: var(--theme-radius-md);
}

body.theme-go2sport-sport .abo-creneau,
body.theme-go2sport-sport .abo-search,
body.theme-go2sport-sport .abo-chip,
body.theme-go2sport-sport .abo-tab__count {
  border-radius: var(--theme-radius-sm);
}

/* ============================================
   19. Heros editoriaux Oswald - line-height (anti-chevauchement) + accent marque
   Oswald (condense, capitales accentuees A/E hautes) deborde des line-height
   ultra-serres concus pour Fraunces : .ed-hero__headline (0.92, home), les titres
   de section .ed-courses__title/.ed-cta-final__title (1.0, titre + 2e ligne
   italique) et .a-hero h1 (1.0, people/activites) faisaient se chevaucher les
   lignes. On les desserre, scope go2sport (le theme par defaut Fraunces intact).

   SPECIFICITE : on DOIT utiliser le double-selecteur body.theme-editorial.
   theme-go2sport-sport (cf. sections 2 et 14). Les bases sont scopees
   body.theme-editorial .X (0,2,2/0,2,1) : un simple body.theme-go2sport-sport .X
   est a EGALITE de specificite et depend alors de l'ordre de chargement (le
   bundle gagne en build/dev -> override ignore). Le double-selecteur (0,3,x)
   bat la base par specificite, independamment de l'ordre.
   ============================================ */
body.theme-editorial.theme-go2sport-sport .ed-hero__headline,
body.theme-editorial.theme-go2sport-sport .ed-courses__title,
body.theme-editorial.theme-go2sport-sport .ed-cta-final__title,
body.theme-editorial.theme-go2sport-sport .a-hero h1 {
  line-height: 1.15;
}

/* Eyebrow du hero .a-hero (people/activites) : le reteintage de --blue (section 2)
   bascule deja l'eyebrow et l'<em> du titre du bleu Material vers le teal ; on
   remplace en plus le filet bleu plat par le slash lime signature (comme
   .ed-hero__kicker / .ed-section-kicker). Double-selecteur requis (cf. ci-dessus). */
body.theme-editorial.theme-go2sport-sport .a-hero .eyebrow::before {
  width: 34px;
  height: 4px;
  background: var(--theme-accent);
  transform: skewX(-22deg);
}

/* ============================================
   20. Page /contact - energie sport (eyebrow slash lime + texte teal)
   La page editoriale .ctn-* restait sobre/grise ("legerement fade") : on remplace
   la pastille ronde de l'eyebrow par le slash lime signature et on passe son texte
   en teal. L'accent du titre (.ctn-hero__accent) est deja teal via --editorial-clay.
   Double-selecteur requis pour battre body.theme-editorial .ctn-* par specificite
   (cf. section 19). Scope go2sport : contact warfaaz inchange.
   ============================================ */
body.theme-editorial.theme-go2sport-sport .ctn-hero__eyebrow {
  color: var(--g2s-teal-deep);
}
body.theme-editorial.theme-go2sport-sport .ctn-hero__eyebrow::before {
  width: 28px;
  height: 4px;
  border-radius: 0;
  background: var(--theme-accent);
  transform: skewX(-22deg);
}

/* Titres de section ("Ecrivez-nous" / "Nous trouver") : slash lime signature en
   tete + filet du head reteinte teal. C'etait le coeur du rendu "fade" (texte ink
   sur hairline tres pale) -> on injecte le langage visuel go2sport (meme slash que
   les kickers du site), sans toucher la structure ni le theme par defaut. */
body.theme-editorial.theme-go2sport-sport .ctn-section__title {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
body.theme-editorial.theme-go2sport-sport .ctn-section__title::before {
  content: "";
  flex: 0 0 auto;
  width: 28px;
  height: 4px;
  background: var(--theme-accent);
  transform: skewX(-22deg);
}
body.theme-editorial.theme-go2sport-sport .ctn-section__head {
  border-bottom-color: rgba(var(--theme-primary-rgb), 0.35);
}

/* Contraste des champs ("clair sur clair") : les inputs heritaient d'un fond
   var(--editorial-bone) = #F4F7F6 = EXACTEMENT le fond de page -> invisibles. La
   regle skin §9 (input[type=text], simple classe, 0,2,2) est a egalite avec
   body.theme-editorial input[type=text] (0,2,2) et perd a l'ordre de chargement.
   Contrairement aux formulaires sur carte blanche, le contact pose ses champs
   directement sur le fond de page -> on force un fond BLANC franc + bordure plus
   marquee (double-selecteur 0,3,1 : gagne par specificite, ordre indifferent).
   Le focus teal (.ctn-field__input:focus) est conserve par le base. */
body.theme-editorial.theme-go2sport-sport .ctn-field__input,
body.theme-editorial.theme-go2sport-sport .ctn-field__textarea {
  background: #FFFFFF;
  border-color: rgba(var(--theme-secondary-rgb), 0.32);
}
/* Labels (champs + lignes coordonnees) du gris pale --ink-3 vers l'ink doux :
   contraste lisible sur fond clair. */
body.theme-editorial.theme-go2sport-sport .ctn-field__label,
body.theme-editorial.theme-go2sport-sport .ctn-row__label {
  color: var(--g2s-ink-soft);
}
