/* Les polices sont chargées une seule fois, par le <link> de inc/header.php
   (précédé de ses preconnect). Les quatre @import de l'export Floot sont
   retirés : ils rechargeaient les mêmes familles depuis chaque feuille de
   style, et un @import bloque le rendu en cascade au lieu d'être mis en
   file par le préchargeur du navigateur. */
:root {
  /* Content layers */
  --z-content-low: 10; /* Minor elevated content */
  --z-content: 20; /* Standard elevated content */
  --z-content-high: 30; /* Important content that needs prominence */

  /* Navigation layers */
  --z-nav-low: 100; /* Secondary navigation components */
  --z-nav: 200; /* Primary navigation bars */
  --z-nav-sticky: 300; /* Sticky navigation elements */

  /* Overlay layers */
  --z-overlay: 400;

  --z-spotlight: 1000; /* Tutorial spotlights/guided help */

  /* System layers */
  --z-critical: 2000; /* Critical system notifications */

  /* spacing */
  --spacing-1: 0.25rem;
  --spacing-2: 0.5rem;
  --spacing-3: 0.75rem;
  --spacing-4: 1rem;
  --spacing-5: 1.25rem;
  --spacing-6: 1.5rem;
  --spacing-7: 1.75rem;
  --spacing-8: 2rem;
  --spacing-10: 2.5rem;
  --spacing-12: 3rem;
  --spacing-16: 4rem;
}

:root {
  /* Light Mode Only - Reflecting the clean, bright atmosphere of a Dojo */
  
  /* Backgrounds */
  --background: hsl(210 20% 98%); /* Off-white, like a clean Gi */
  --foreground: hsl(220 40% 10%); /* Deep ink black */

  /* Surfaces - Subtle elevation using brightness */
  --surface: hsl(0 0% 100%); /* Pure white */
  --surface-foreground: hsl(220 40% 10%);
  
  --sidebar: hsl(210 20% 96%);
  --sidebar-foreground: hsl(220 40% 10%);
  
  --card: hsl(0 0% 100%);
  --card-foreground: hsl(220 40% 10%);
  
  --popup: hsl(0 0% 100%);
  --popup-foreground: hsl(220 40% 10%);

  /* Primary - Deep Indigo (Traditional Indigo Dye) */
  --primary: hsl(225 45% 25%);
  --primary-foreground: hsl(0 0% 100%);

  /* Secondary - Slate Grey (Stone/Rock) */
  --secondary: hsl(210 15% 85%);
  --secondary-foreground: hsl(225 45% 25%);

  /* Accent - Karate Red (Belt/Sun) - High impact */
  --accent: hsl(355 85% 55%);
  --accent-foreground: hsl(0 0% 100%);

  /* Rouge lisible (hors export Floot) — même teinte, assombrie pour passer
     WCAG AA. --accent seul plafonne à 4,16:1 sous du texte blanc et à 3,98:1
     en texte sur fond clair : sous le seuil de 4,5:1 dans les deux sens.
     À utiliser dès que du texte est en jeu (aplat de bouton, texte coloré) ;
     --accent reste réservé aux éléments purement graphiques (filets,
     soulignements) où aucun contraste de texte n'est requis. */
  --accent-lisible: hsl(355 76% 48%);

  /* Muted */
  --muted: hsl(210 10% 92%);
  --muted-foreground: hsl(210 10% 40%);

  /* Status Colors */
  --success: hsl(145 60% 35%);
  --success-foreground: hsl(0 0% 100%);
  
  /* Rouge d'erreur distinct de l'accent (hors export Floot) : l'export
     donnait la même valeur aux deux, si bien qu'un message d'erreur et un
     appel à l'action partageaient exactement la même couleur. Assombri pour
     rester lisible en petit corps (0,75rem) sur fond clair — 5,9:1. */
  --error: hsl(355 84% 42%);
  --error-foreground: hsl(0 0% 100%);
  
  --warning: hsl(40 90% 50%);
  --warning-foreground: hsl(220 40% 10%);
  
  --info: hsl(200 80% 40%);
  --info-foreground: hsl(0 0% 100%);
  --info-hover: hsl(200 80% 30%);
  --info-active: hsl(200 80% 20%);

  /* Borders - Sharp and distinct */
  --border: hsl(220 15% 85%);

  /* Font Families - Japanese/Western Hybrid */
  --font-family-heading: 'Zen Kaku Gothic New', sans-serif;
  --font-family-base: 'Sawarabi Mincho', serif;
  /* Noto Sans Mono et Kaushan Script retirées du système : déclarées et
     chargées sur chaque page avec 18 graisses chacune, pour trois usages en
     tout sur l'ensemble du site. Le script cursif, en particulier, était le
     réflexe « association pour enfants » que PRODUCT.md écarte. */

  /* Shadows - Minimal, flat depth */
  --shadow: 4px 4px 0px 0px hsl(220 15% 90%);
  --shadow-md: 6px 6px 0px 0px hsl(220 15% 85%);
  --shadow-lg: 8px 8px 0px 0px hsl(220 15% 80%);
  --shadow-focus: 0 0 0 2px hsl(225 45% 25%);

  /* Radius - Zero radius for discipline */
  --radius-sm: 0px;
  --radius: 0px;
  --radius-md: 0px;
  --radius-lg: 0px;
  --radius-full: 9999px; /* Only for specific badges if needed */

  /* Animation - Snappy, "Kime" (focus) */
  --animation-duration-fast: 0.1s;
  --animation-duration-normal: 0.2s;
  --animation-duration-slow: 0.4s;
}

/* Jetons retirés de l'export Floot : cinq couleurs de graphique
   (--chart-color-1..5) sur un site qui n'affiche aucun graphique, et un bloc
   .dark vide — le thème sombre n'a jamais été implémenté et le site est
   explicitement conçu en clair. */
@layer base {
  ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
  }

  body {
    background: var(--background);
    color: var(--foreground);
    font-family: var(--font-family-base);
  }

  * {
    box-sizing: border-box;
    padding: 0;
    margin: 0;
  }


  button {
    border: none;
    background: none;
    cursor: pointer;
    font-family: inherit;
    font-size: inherit;
    color: inherit;
  }

  a {
    color: inherit;
    text-decoration: none;
  }

  th, td {
    display: table-cell!important;
  }
}
.rbc-month-view {
  overflow: visible !important;
}

/* ==========================================================================
   Mouvement réduit (hors export Floot)

   L'export ne prévoyait aucune alternative pour les personnes qui demandent
   moins d'animation : la flèche du héros tournait en boucle sans fin, ce qui
   fait échouer le critère WCAG 2.2.2 (contenu en mouvement de plus de cinq
   secondes sans mécanisme d'arrêt).

   Règle : on neutralise le mouvement, jamais la visibilité. Chaque élément
   reste à son état final — aucune animation d'entrée ne peut laisser un
   contenu invisible. Les transitions ne sont pas supprimées mais ramenées à
   une durée quasi nulle, ce qui préserve les retours d'état (survol, focus)
   sans déplacement perceptible.
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  /* La flèche de défilement garde sa position de repos et sa pleine
     opacité : sans mouvement, elle doit rester lisible. */
  .c-hero .scrollIndicator {
    animation: none !important;
    transform: translateX(-50%) !important;
  }

  .c-hero .scrollIcon {
    opacity: 1;
  }

  /* Les déplacements au survol deviennent un simple changement de bordure,
     déjà porté par les règles :hover existantes. */
  #news .card:hover,
  #classes .card:hover,
  #workshops .item:hover {
    transform: none !important;
  }
}
