/* ============================================================
   FICHIER : style.css
   ============================================================
   RÔLE : Feuille de styles CSS pour l'ensemble du site.
          Contient tous les styles visuels : couleurs, typographie,
          mises en page, composants, responsive design.

   STRUCTURE DU FICHIER :
   ----------------------
   1. IMPORTS - Polices de caractères externes
   2. VARIABLES CSS - Couleurs et valeurs réutilisables
   3. RESET & BASE - Styles de base pour tous les éléments
   4. TYPOGRAPHY - Styles des textes et titres
   5. LAYOUT - Structure de page (conteneurs, grilles)
   6. HEADER - En-tête et navigation
   7. PROFILE - Section profil utilisateur
   8. WORKSHOP CARDS - Cartes des ateliers
   9. BUTTONS - Boutons de toutes sortes
   10. FORMS - Formulaires et champs de saisie
   11. LANDING PAGE - Page de connexion
   12. RESPONSIVE - Adaptations pour mobiles/tablettes
   ============================================================ */


/* ============================================================
   SECTION 1 : IMPORTS - POLICES DE CARACTÈRES
   ============================================================

   @import url(...) permet de charger des ressources externes.
   Ici, on importe des polices Google Fonts :

   - Inter : police moderne sans-serif pour le texte
   - Merriweather : police avec empattements pour les titres
   - Material Icons Round : bibliothèque d'icônes Google

   POURQUOI DES POLICES EXTERNES ?
   -------------------------------
   Les polices "web-safe" (Arial, Times, etc.) sont limitées.
   Google Fonts offre des centaines de polices gratuites et
   optimisées pour le web.
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Merriweather:ital,wght@0,700;1,400&display=swap');
@import url('https://fonts.googleapis.com/icon?family=Material+Icons+Round');


/* ============================================================
   SECTION 2 : VARIABLES CSS (CSS Custom Properties)
   ============================================================

   QU'EST-CE QU'UNE VARIABLE CSS ?
   -------------------------------
   Une variable CSS (aussi appelée "custom property") permet
   de stocker une valeur et de la réutiliser partout dans le CSS.

   SYNTAXE :
   - Déclaration : --nom-variable: valeur;
   - Utilisation : var(--nom-variable)

   :root
   -----
   :root est un sélecteur qui cible l'élément racine du document
   (généralement <html>). Les variables définies ici sont
   disponibles dans TOUT le document.

   AVANTAGES DES VARIABLES CSS :
   1. Modification facile des couleurs (un seul endroit)
   2. Thèmes clairs/sombres plus simples
   3. Code plus lisible et maintenable
   4. Cohérence visuelle garantie
   ============================================================ */
:root {
  /* ===========================================================
     COULEURS PRINCIPALES (Primary Colors)
     ===========================================================
     La couleur principale définit l'identité visuelle du site.
     On crée des variantes (dark, light) pour les états hover, etc.
     =========================================================== */
  --color-primary: #558B9F;        /* Couleur principale (bleu-vert) */
  --color-primary-dark: #3d6473;   /* Version plus foncée (hover) */
  --color-primary-light: #6fa3b8;  /* Version plus claire */

  /* ===========================================================
     COULEURS D'ARRIÈRE-PLAN (Background Colors)
     ===========================================================
     Définissent les fonds de page et des zones.
     =========================================================== */
  --color-bg-light: #F8FAFC;           /* Fond de page principal */
  --color-bg-dark: #0F172A;            /* Pour un thème sombre */
  --color-surface-light: #FFFFFF;       /* Fond des cartes */
  --color-surface-dark: #1E293B;        /* Cartes en thème sombre */

  /* ===========================================================
     COULEURS DE TEXTE (Text Colors)
     ===========================================================
     Hiérarchie visuelle du texte :
     - primary : texte principal
     - secondary : texte moins important
     - tertiary : texte très léger (labels, hints)
     =========================================================== */
  --color-text-primary: #334155;     /* Texte principal */
  --color-text-secondary: #64748b;   /* Texte secondaire */
  --color-text-tertiary: #94a3b8;    /* Texte tertiaire (léger) */
  --color-text-heading: #1e293b;     /* Titres */
  --color-text-strong: #0f172a;      /* Texte très important */

  /* ===========================================================
     COULEURS SÉMANTIQUES (Semantic Colors)
     ===========================================================
     Couleurs qui ont une SIGNIFICATION :
     - success : vert = réussite, validation
     - error : rouge = erreur, danger
     - warning : orange = attention
     - info : bleu = information
     =========================================================== */
  --color-success: #16a34a;          /* Vert succès */
  --color-success-bg: #f0fdf4;       /* Fond vert clair */
  --color-success-border: #bbf7d0;   /* Bordure verte */
  --color-error: #dc2626;            /* Rouge erreur */
  --color-error-hover: #991b1b;      /* Rouge foncé au survol */
  --color-warning: #d97706;          /* Orange attention */
  --color-info: #4f46e5;             /* Bleu information */

  /* ===========================================================
     COULEURS DES BADGES
     ===========================================================
     Les badges sont de petites étiquettes colorées (catégorie,
     mode, status). Chaque type a son fond et sa couleur de texte.
     =========================================================== */
  --color-badge-amber-bg: #fef3c7;       /* Fond jaune */
  --color-badge-amber-text: #92400e;     /* Texte brun */
  --color-badge-emerald-bg: #d1fae5;     /* Fond vert */
  --color-badge-emerald-text: #065f46;   /* Texte vert foncé */
  --color-badge-indigo-bg: #e0e7ff;      /* Fond violet */
  --color-badge-indigo-text: #3730a3;    /* Texte violet foncé */

  /* ===========================================================
     COULEURS DES BORDURES
     ===========================================================
     Différentes intensités de bordures pour créer une hiérarchie.
     =========================================================== */
  --color-border-light: #e2e8f0;   /* Bordure légère */
  --color-border-medium: #cbd5e1;  /* Bordure moyenne */
  --color-border-dark: #94a3b8;    /* Bordure foncée */

  /* ===========================================================
     OMBRES (Box Shadows)
     ===========================================================
     Les ombres donnent de la profondeur aux éléments.
     Plus l'ombre est grande, plus l'élément semble "élevé".

     SYNTAXE DE BOX-SHADOW :
     décalage-x décalage-y flou étalement couleur

     sm = small (petite)
     md = medium (moyenne)
     lg = large (grande)
     xl = extra-large
     =========================================================== */
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);

  /* ===========================================================
     ESPACEMENTS (Spacing)
     ===========================================================
     Système d'espacement cohérent basé sur des multiples.
     Utiliser ces variables au lieu de valeurs arbitraires
     garantit une cohérence visuelle sur tout le site.

     rem = relative em = relatif à la taille de police racine
     1rem = 16px (par défaut)
     =========================================================== */
  --spacing-xs: 0.25rem;   /* 4px - très petit */
  --spacing-sm: 0.5rem;    /* 8px - petit */
  --spacing-md: 0.75rem;   /* 12px - moyen */
  --spacing-lg: 1rem;      /* 16px - grand */
  --spacing-xl: 1.5rem;    /* 24px - très grand */
  --spacing-2xl: 2rem;     /* 32px */
  --spacing-3xl: 3rem;     /* 48px */
  --spacing-4xl: 4rem;     /* 64px */

  /* ===========================================================
     ARRONDIS (Border Radius)
     ===========================================================
     Définissent le degré d'arrondi des coins des éléments.
     =========================================================== */
  --radius-default: 0.5rem;    /* Arrondi standard (8px) */
  --radius-lg: 1rem;           /* Grand arrondi (16px) */
  --radius-xl: 1.5rem;         /* Très grand arrondi (24px) */
  --radius-full: 9999px;       /* Cercle parfait / pilule */

  /* ===========================================================
     TYPOGRAPHIE (Fonts)
     ===========================================================
     Définit les familles de polices à utiliser.
     La liste après la virgule = polices de secours si la
     première n'est pas disponible.
     =========================================================== */
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-display: 'Merriweather', Georgia, serif;

  /* ===========================================================
     TRANSITIONS (Animations)
     ===========================================================
     Définissent la durée des animations CSS.
     ease-in-out = démarrage et fin progressifs.
     =========================================================== */
  --transition-fast: 150ms ease-in-out;   /* Rapide */
  --transition-base: 300ms ease-in-out;   /* Standard */
  --transition-slow: 500ms ease-in-out;   /* Lente */
}


/* ============================================================
   SECTION 3 : RESET & STYLES DE BASE
   ============================================================

   QU'EST-CE QU'UN CSS RESET ?
   ---------------------------
   Les navigateurs ont des styles par défaut différents.
   Un "reset" supprime ces différences pour partir de zéro
   et avoir un rendu identique partout.

   * (SÉLECTEUR UNIVERSEL)
   -----------------------
   Le sélecteur * cible TOUS les éléments HTML.
   ============================================================ */
* {
  margin: 0;                    /* Supprime les marges par défaut */
  padding: 0;                   /* Supprime les paddings par défaut */
  box-sizing: border-box;       /* Inclut padding et bordure dans la taille */
}

/* ===========================================================
   BOX-SIZING: BORDER-BOX
   ===========================================================
   Par défaut, width/height ne comptent QUE le contenu.
   Avec border-box, padding et bordure sont INCLUS.

   Exemple sans border-box :
   width: 100px + padding: 20px + border: 2px = 142px total

   Avec border-box :
   width: 100px TOTAL (contenu + padding + border)

   C'est BEAUCOUP plus intuitif pour les calculs de mise en page.
   =========================================================== */

/* Défilement fluide lors du clic sur les ancres */
html {
  scroll-behavior: smooth;
}

/* Styles de base du corps de page */
body {
  font-family: var(--font-sans);           /* Police principale */
  background-color: var(--color-bg-light); /* Fond de page */
  color: var(--color-text-primary);        /* Couleur de texte */
  line-height: 1.6;                        /* Interligne confortable */
  -webkit-font-smoothing: antialiased;     /* Lissage des polices (Mac) */
  -moz-osx-font-smoothing: grayscale;      /* Lissage des polices (Firefox) */
}


/* ============================================================
   SECTION 4 : TYPOGRAPHIE
   ============================================================

   Styles pour les éléments de texte : titres, paragraphes, liens.
   ============================================================ */

/* Styles communs à tous les titres (h1 à h6) */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);       /* Police avec empattements */
  font-weight: 700;                       /* Gras */
  color: var(--color-text-heading);       /* Couleur foncée */
  line-height: 1.2;                       /* Interligne serré */
}

/* Tailles spécifiques de chaque niveau de titre */
h1 {
  font-size: 2.25rem;                     /* 36px */
  margin-bottom: var(--spacing-xl);
}

h2 {
  font-size: 1.875rem;                    /* 30px */
  margin-bottom: var(--spacing-lg);
}

h3 {
  font-size: 1.5rem;                      /* 24px */
  margin-bottom: var(--spacing-md);
}

/* Paragraphes */
p {
  margin-bottom: var(--spacing-lg);
}

/* ===========================================================
   LIENS (<a>)
   ===========================================================
   Les liens changent de couleur au survol (hover) pour
   indiquer qu'ils sont interactifs.

   transition : anime le changement de couleur progressivement.
   =========================================================== */
a {
  color: var(--color-primary);
  text-decoration: none;                   /* Pas de soulignement */
  transition: color var(--transition-base);
}

/* État au survol de la souris */
a:hover {
  color: var(--color-primary-dark);
}


/* ============================================================
   SECTION 5 : LAYOUT (MISE EN PAGE)
   ============================================================

   Classes utilitaires pour structurer la page.
   ============================================================ */

/* ===========================================================
   CONTENEURS (.container)
   ===========================================================
   Un conteneur centre le contenu et limite sa largeur maximale
   pour une meilleure lisibilité sur grand écran.

   max-width : largeur maximale
   margin: 0 auto : centre horizontalement
   padding : espace interne sur les côtés
   =========================================================== */
.container {
  max-width: 80rem;                /* 1280px */
  margin: 0 auto;                  /* Centre le conteneur */
  padding: 0 var(--spacing-lg);    /* Marges internes */
}

.container-narrow {
  max-width: 64rem;                /* 1024px - plus étroit */
  margin: 0 auto;
  padding: 0 var(--spacing-lg);
}

/* Zone de contenu principal */
.main-content {
  padding: var(--spacing-3xl) 0;
  max-width: 80rem;
  margin: 0 auto;
}


/* ============================================================
   SECTION 6 : HEADER (EN-TÊTE)
   ============================================================

   L'en-tête contient le logo et la navigation.
   Il reste fixe en haut de la page (sticky).
   ============================================================ */

/* ===========================================================
   POSITION: STICKY
   ===========================================================
   L'élément est normal jusqu'à ce qu'on scrolle.
   Quand il atteint top: 0, il se "colle" en haut de l'écran.

   z-index: 1000 : le place AU-DESSUS des autres éléments
   (plus le z-index est élevé, plus l'élément est "devant")
   =========================================================== */
header {
  background-color: var(--color-primary);
  color: white;
  box-shadow: var(--shadow-md);
  position: sticky;
  top: 0;
  z-index: 1000;
}

/* ===========================================================
   FLEXBOX (.header-container)
   ===========================================================
   display: flex active Flexbox pour disposer les éléments.

   justify-content: space-between :
   → Premier élément à gauche, dernier à droite, espace au milieu

   align-items: center :
   → Centre verticalement les éléments
   =========================================================== */
.header-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--spacing-md) var(--spacing-xl);
}

/* Logo cliquable */
.header-logo {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);                   /* Espace entre icône et texte */
  color: white;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.25rem;
  transition: opacity var(--transition-base);
}

/* Le texte du logo est masqué sur mobile */
.header-logo-text {
  display: none;
}

/* Effet de survol sur le logo */
.header-logo:hover {
  opacity: 0.9;
}

/* Conteneur de l'icône du logo */
.header-logo-icon {
  background-color: rgba(255, 255, 255, 0.2);
  padding: var(--spacing-sm);
  border-radius: var(--radius-full);
  backdrop-filter: blur(4px);              /* Effet de flou derrière */
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Navigation */
.header-nav {
  display: flex;
  align-items: center;
  gap: var(--spacing-xl);
  font-size: 0.875rem;
  font-weight: 500;
}

.header-nav a {
  color: white;
  transition: color var(--transition-base);
}

.header-nav a:hover {
  color: rgba(255, 255, 255, 0.8);
}

/* Bouton "Mon profil" avec icône */
.header-profile-btn {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  background-color: rgba(255, 255, 255, 0.1);
  padding: var(--spacing-sm) var(--spacing-lg);
  border-radius: var(--radius-full);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: white;
  transition: background-color var(--transition-base);
}

.header-profile-btn:hover {
  background-color: rgba(255, 255, 255, 0.2);
}

/* ===========================================================
   MENU MOBILE (HAMBURGER)
   ===========================================================
   Bouton hamburger visible uniquement sur mobile.
   Ouvre un menu de navigation en overlay.
   =========================================================== */

/* Bouton hamburger - masqué par défaut sur desktop */
.mobile-menu-btn {
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: var(--radius-default);
  padding: var(--spacing-sm);
  color: white;
  cursor: pointer;
  transition: background-color var(--transition-base);
}

.mobile-menu-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}

/* Overlay du menu mobile - couvre tout l'écran */
.mobile-nav-overlay {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1001;
  opacity: 0;
  transition: opacity var(--transition-base);
}

.mobile-nav-overlay.active {
  display: block;
  opacity: 1;
}

/* Panneau du menu mobile - glisse depuis la droite */
.mobile-nav {
  position: fixed;
  top: 0;
  right: -280px;
  width: 280px;
  height: 100%;
  background-color: var(--color-primary);
  z-index: 1002;
  transition: right var(--transition-base);
  display: flex;
  flex-direction: column;
  box-shadow: var(--shadow-lg);
}

.mobile-nav.active {
  right: 0;
}

/* En-tête du menu mobile */
.mobile-nav-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--spacing-lg);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.mobile-nav-title {
  color: white;
  font-family: var(--font-display);
  font-size: 1.125rem;
  font-weight: 700;
}

/* Bouton fermer */
.mobile-nav-close {
  background: transparent;
  border: none;
  color: white;
  cursor: pointer;
  padding: var(--spacing-xs);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-default);
  transition: background-color var(--transition-base);
}

.mobile-nav-close:hover {
  background: rgba(255, 255, 255, 0.1);
}

/* Liens de navigation mobile */
.mobile-nav-links {
  display: flex;
  flex-direction: column;
  padding: var(--spacing-lg);
  gap: var(--spacing-sm);
}

.mobile-nav-links a {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  color: white;
  padding: var(--spacing-md) var(--spacing-lg);
  border-radius: var(--radius-default);
  font-size: 1rem;
  font-weight: 500;
  transition: background-color var(--transition-base);
}

.mobile-nav-links a:hover {
  background: rgba(255, 255, 255, 0.1);
}

.mobile-nav-links a .material-icons-round {
  font-size: 1.25rem;
}


/* ============================================================
   SECTION 7 : PROFILE (PROFIL UTILISATEUR)
   ============================================================

   Styles pour la page de profil (avatar, informations).
   ============================================================ */
.profile-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin-bottom: var(--spacing-4xl);
}

/* ===========================================================
   AVATAR UTILISATEUR
   ===========================================================
   Un cercle avec une icône au centre.
   Le dégradé (linear-gradient) crée un effet de profondeur.
   =========================================================== */
.profile-avatar {
  width: 6rem;
  height: 6rem;
  background: linear-gradient(135deg, rgba(85, 139, 159, 0.1), rgba(85, 139, 159, 0.2));
  border-radius: var(--radius-full);       /* Cercle parfait */
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-primary);
  margin-bottom: var(--spacing-lg);
  box-shadow: 0 0 0 4px white, var(--shadow-lg);
}

.profile-avatar .material-icons-round {
  font-size: 3rem;
}

/* Carte d'informations du profil */
.profile-info-card {
  background-color: var(--color-surface-light);
  padding: var(--spacing-2xl);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border-light);
  max-width: 32rem;
  margin: 0 auto;
  width: 100%;
}

/* Lignes d'information (label + valeur) */
.profile-info-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: var(--spacing-md);
  border-bottom: 1px solid var(--color-border-light);
  margin-bottom: var(--spacing-lg);
}

.profile-info-row:last-child {
  border-bottom: none;
  margin-bottom: 0;
}

.profile-info-label {
  color: var(--color-text-secondary);
  font-weight: 500;
}

.profile-info-value {
  font-weight: 600;
  color: var(--color-text-strong);
  word-break: break-all;                   /* Casse les mots longs (emails) */
}

/* Bouton d'édition */
.profile-edit-btn {
  display: flex;
  align-items: center;
  gap: var(--spacing-xs);
  color: var(--color-primary);
  font-size: 0.875rem;
  font-weight: 500;
  margin-top: var(--spacing-lg);
  padding-top: var(--spacing-lg);
  border-top: 1px solid var(--color-border-light);
  background: none;
  border: none;
  cursor: pointer;
  transition: color var(--transition-base);
}

.profile-edit-btn:hover {
  color: var(--color-primary-dark);
}


/* ============================================================
   SECTION 8 : EN-TÊTES DE SECTION
   ============================================================

   Styles pour les titres de sections avec icône.
   ============================================================ */
.section-header {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-2xl);
}

.section-header .material-icons-round {
  color: var(--color-primary);
  font-size: 2rem;
}

.section-header h2 {
  margin: 0;
}


/* ============================================================
   SECTION 9 : CARTES D'ATELIERS (WORKSHOP CARDS)
   ============================================================

   Les cartes affichent les informations des ateliers.
   Elles sont composées d'une image et d'un contenu textuel.
   ============================================================ */

/* Liste des cartes (disposition verticale) */
.workshop-list {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-xl);
}

/* ===========================================================
   CARTE D'ATELIER
   ===========================================================
   Structure en carte avec ombre et arrondi.
   L'effet hover ajoute une ombre plus prononcée.
   =========================================================== */
.workshop-card {
  background-color: var(--color-surface-light);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border-light);
  overflow: hidden;                        /* Cache ce qui dépasse (arrondi) */
  transition: all var(--transition-base);
  display: flex;
  flex-direction: column;
}

.workshop-card:hover {
  box-shadow: var(--shadow-md);            /* Ombre plus forte au survol */
}

/* Layout interne (image + contenu) */
.workshop-card-layout {
  display: flex;
  flex-direction: column;
}

/* Conteneur de l'image */
.workshop-image-container {
  position: relative;                      /* Pour positionner le badge */
  width: 100%;
  height: 12rem;
  overflow: hidden;
}

/* ===========================================================
   IMAGE DE L'ATELIER
   ===========================================================
   object-fit: cover : l'image remplit le conteneur
   sans déformation, en coupant si nécessaire.

   L'effet de zoom au survol utilise transform: scale().
   =========================================================== */
.workshop-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition-slow);
}

.workshop-card:hover .workshop-image {
  transform: scale(1.05);                  /* Zoom de 5% au survol */
}

/* Badge positionné sur l'image */
.workshop-badge {
  position: absolute;
  top: var(--spacing-md);
  left: var(--spacing-md);
  background-color: rgba(255, 255, 255, 0.9);
  backdrop-filter: blur(8px);
  color: var(--color-text-strong);
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: var(--spacing-xs) var(--spacing-md);
  border-radius: var(--radius-full);
  box-shadow: var(--shadow-sm);
}

/* Variante : badge organisateur */
.workshop-badge.organizer {
  background-color: var(--color-primary);
  color: white;
}

/* Contenu textuel de la carte */
.workshop-content {
  padding: var(--spacing-2xl);
  display: flex;
  flex-direction: column;
  flex: 1;                                 /* Remplit l'espace disponible */
}

/* En-tête de la carte (titre + badges) */
.workshop-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: var(--spacing-lg);
  gap: var(--spacing-lg);
  flex-wrap: wrap;
}

.workshop-title {
  color: var(--color-primary);
  font-size: 1.5rem;
  margin: 0;
}

/* Groupe de badges */
.workshop-badges {
  display: flex;
  gap: var(--spacing-sm);
  flex-wrap: wrap;
}

/* ===========================================================
   BADGES
   ===========================================================
   Petites étiquettes colorées pour catégorie, mode, status.
   =========================================================== */
.badge {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-xs);
  padding: var(--spacing-xs) var(--spacing-md);
  border-radius: var(--radius-full);
  font-size: 0.75rem;
  font-weight: 500;
}

/* Variantes de badges */
.badge-hybrid {
  background-color: var(--color-badge-indigo-bg);
  color: var(--color-badge-indigo-text);
}

.badge-category {
  background-color: var(--color-badge-amber-bg);
  color: var(--color-badge-amber-text);
}

.badge-offline {
  background-color: var(--color-badge-emerald-bg);
  color: var(--color-badge-emerald-text);
}

.badge-online {
  background-color: #dbeafe;
  color: #1e40af;
}

.badge-published {
  background-color: var(--color-success-bg);
  color: var(--color-success);
  border: 1px solid var(--color-success-border);
}

/* Icône dans les badges (taille réduite) */
.badge-icon {
  font-size: 0.75rem;
}

/* Icône dans les boutons (taille adaptée) */
.btn-icon {
  font-size: 1rem;
}

/* Détails de l'atelier (dates, lieu, etc.) */
.workshop-details {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--spacing-lg);
  margin-bottom: var(--spacing-lg);
  color: var(--color-text-secondary);
  font-size: 0.875rem;
}

.workshop-detail-item {
  display: flex;
  align-items: flex-start;
  gap: var(--spacing-sm);
}

.workshop-detail-item .material-icons-round {
  color: var(--color-text-tertiary);
  font-size: 1.25rem;
  margin-top: 2px;
}

/* Description de l'atelier - show full description, no truncation */
.workshop-description {
  color: var(--color-text-secondary);
  font-size: 0.875rem;
  line-height: 1.6;
  margin-bottom: var(--spacing-lg);
}

/* Date display in workshop cards */
.workshop-date {
  margin: 0;
  font-weight: 500;
  color: var(--color-text-primary);
}

/* Pied de carte (prix + bouton) */
.workshop-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--spacing-lg);
  border-top: 1px solid var(--color-border-light);
  margin-top: auto;                        /* Colle le footer en bas */
}

.workshop-price {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-text-strong);
}

/* Ligne prix et status (flex responsive) */
.workshop-price-status {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--spacing-sm);
  flex-wrap: wrap;
  gap: var(--spacing-sm);
}

.workshop-actions {
  display: flex;
  gap: var(--spacing-md);
  align-items: center;
}


/* ============================================================
   SECTION 10 : BOUTONS
   ============================================================

   Classes réutilisables pour tous les boutons du site.
   ============================================================ */

/* ===========================================================
   BOUTON DE BASE (.btn)
   ===========================================================
   Classe de base avec les propriétés communes à tous les boutons.
   On ajoute une classe modificatrice (btn-primary, btn-delete)
   pour la couleur.
   =========================================================== */
.btn {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-sm);
  padding: var(--spacing-sm) var(--spacing-lg);
  border-radius: var(--radius-default);
  font-size: 0.875rem;
  font-weight: 500;
  font-family: var(--font-sans);
  cursor: pointer;
  transition: all var(--transition-base);
  border: none;
  text-decoration: none;
}

/* Bouton principal (bleu) */
.btn-primary {
  background-color: var(--color-primary);
  color: white;
  box-shadow: var(--shadow-sm);
}

.btn-primary:hover {
  background-color: var(--color-primary-dark);
  box-shadow: var(--shadow-md);
}

/* Bouton secondaire (transparent) */
.btn-secondary {
  background-color: transparent;
  color: var(--color-text-secondary);
}

.btn-secondary:hover {
  color: var(--color-text-primary);
}

/* Bouton de suppression (rouge) */
.btn-delete {
  background-color: transparent;
  color: var(--color-error);
}

.btn-delete:hover {
  color: var(--color-error-hover);
}

/* Bouton style lien */
.btn-link {
  background-color: transparent;
  color: var(--color-primary);
  padding: 0;
}

.btn-link:hover {
  color: var(--color-primary-dark);
}

/* Bouton pleine largeur */
.btn-block {
  width: 100%;
  justify-content: center;
}


/* ============================================================
   SECTION 11 : FOOTER (PIED DE PAGE)
   ============================================================ */
footer {
  background-color: var(--color-surface-light);
  border-top: 1px solid var(--color-border-light);
  margin-top: var(--spacing-3xl);
  padding: var(--spacing-2xl) 0;
}

.footer-content {
  text-align: center;
  color: var(--color-text-secondary);
  font-size: 0.875rem;
}


/* ============================================================
   SECTION 12 : UTILITAIRES
   ============================================================

   Classes utilitaires pour des ajustements rapides.
   Inspirées de frameworks comme Tailwind CSS.
   ============================================================ */

/* Alignement du texte */
.text-center {
  text-align: center;
}

/* Classes de marge inférieure (margin-bottom) */
.mb-0 { margin-bottom: 0; }
.mb-1 { margin-bottom: var(--spacing-xs); }
.mb-2 { margin-bottom: var(--spacing-sm); }
.mb-3 { margin-bottom: var(--spacing-md); }
.mb-4 { margin-bottom: var(--spacing-lg); }
.mb-6 { margin-bottom: var(--spacing-xl); }
.mb-8 { margin-bottom: var(--spacing-2xl); }

/* Classes de marge supérieure (margin-top) */
.mt-0 { margin-top: 0; }
.mt-1 { margin-top: var(--spacing-xs); }
.mt-2 { margin-top: var(--spacing-sm); }
.mt-3 { margin-top: var(--spacing-md); }
.mt-4 { margin-top: var(--spacing-lg); }
.mt-6 { margin-top: var(--spacing-xl); }
.mt-8 { margin-top: var(--spacing-2xl); }
.mt-section { margin-top: var(--spacing-4xl); }

/* État vide (aucun élément à afficher) */
.empty-state {
  text-align: center;
  padding: var(--spacing-3xl) var(--spacing-lg);
  color: var(--color-text-secondary);
  display: flex;
  flex-direction: column;
  align-items: center;
}


/* ============================================================
   SECTION 13 : BOUTONS DE FILTRAGE
   ============================================================

   Boutons pour filtrer les ateliers par mode.
   ============================================================ */
.filter-container {
  display: flex;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-4xl);
  justify-content: center;
  flex-wrap: wrap;
}

.filter-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-sm);
  padding: var(--spacing-md) var(--spacing-xl);
  border-radius: var(--radius-full);
  font-size: 0.875rem;
  font-weight: 500;
  font-family: var(--font-sans);
  cursor: pointer;
  transition: all var(--transition-base);
  border: 2px solid var(--color-border-light);
  background-color: var(--color-surface-light);
  color: var(--color-text-secondary);
}

.filter-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background-color: rgba(85, 139, 159, 0.05);
}

/* État actif (filtre sélectionné) */
.filter-btn.active {
  background-color: var(--color-primary);
  color: white;
  border-color: var(--color-primary);
  box-shadow: var(--shadow-sm);
}

.filter-btn .material-icons-round {
  font-size: 1.25rem;
}


/* ============================================================
   SECTION 14 : CARTE GOOGLE MAPS
   ============================================================ */
.map-section {
  margin-top: var(--spacing-4xl);
  padding-top: var(--spacing-4xl);
  border-top: 1px solid var(--color-border-light);
}

.map-container {
  width: 100%;
  height: 400px;
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  border: 1px solid var(--color-border-light);
}


/* ============================================================
   SECTION 15 : FORMULAIRES
   ============================================================

   Styles pour les champs de formulaire.
   ============================================================ */

/* Carte contenant le formulaire */
.form-card {
  background-color: var(--color-surface-light);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border-light);
  padding: var(--spacing-3xl);
  margin-bottom: var(--spacing-3xl);
}

.workshop-form {
  max-width: 100%;
}

/* Section du formulaire (groupe de champs) */
.form-section {
  margin-bottom: var(--spacing-3xl);
  padding-bottom: var(--spacing-3xl);
  border-bottom: 1px solid var(--color-border-light);
}

.form-section:last-of-type {
  border-bottom: none;
  margin-bottom: var(--spacing-2xl);
  padding-bottom: 0;
}

/* Titre de section */
.form-section-title {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  color: var(--color-primary);
  font-size: 1.25rem;
  margin-bottom: var(--spacing-xl);
  font-family: var(--font-display);
}

.form-section-title .material-icons-round {
  font-size: 1.5rem;
}

/* Groupe de champ (label + input) */
.form-group {
  margin-bottom: var(--spacing-xl);
}

/* Label du champ */
.form-label {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  font-weight: 500;
  color: var(--color-text-primary);
  margin-bottom: var(--spacing-sm);
  font-size: 0.875rem;
}

.form-label .material-icons-round {
  font-size: 1.125rem;
  color: var(--color-text-tertiary);
}

/* ===========================================================
   CHAMPS DE FORMULAIRE (input, textarea, select)
   ===========================================================
   Styles communs pour tous les champs de saisie.

   :focus : état quand le champ est actif (cliqué)
   ::placeholder : style du texte indicatif
   =========================================================== */
.form-input,
.form-textarea,
.form-select {
  width: 100%;
  padding: var(--spacing-md) var(--spacing-lg);
  border: 2px solid var(--color-border-light);
  border-radius: var(--radius-default);
  font-family: var(--font-sans);
  font-size: 0.9375rem;
  color: var(--color-text-primary);
  background-color: var(--color-surface-light);
  transition: all var(--transition-base);
}

/* État focus (champ actif) */
.form-input:focus,
.form-textarea:focus,
.form-select:focus {
  outline: none;                           /* Supprime le contour par défaut */
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(85, 139, 159, 0.1);
}

/* Texte placeholder */
.form-input::placeholder,
.form-textarea::placeholder {
  color: var(--color-text-tertiary);
}

/* Zone de texte multi-lignes */
.form-textarea {
  resize: vertical;                        /* Redimensionnable verticalement */
  min-height: 100px;
}

/* Liste déroulante */
.form-select {
  cursor: pointer;
  appearance: none;                        /* Supprime l'apparence native */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--spacing-lg) center;
  padding-right: var(--spacing-3xl);
}

/* Texte d'aide sous le champ */
.form-hint {
  display: block;
  margin-top: var(--spacing-xs);
  font-size: 0.8125rem;
  color: var(--color-text-tertiary);
  font-style: italic;
}

/* Ligne de champs côte à côte */
.form-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--spacing-xl);
}

/* Boutons d'action du formulaire */
.form-actions {
  display: flex;
  gap: var(--spacing-lg);
  justify-content: flex-end;
  padding-top: var(--spacing-xl);
  border-top: 1px solid var(--color-border-light);
}


/* ============================================================
   SECTION 16 : MESSAGES D'ALERTE
   ============================================================ */
.alert {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  padding: var(--spacing-lg) var(--spacing-xl);
  border-radius: var(--radius-default);
  margin-bottom: var(--spacing-2xl);
  font-weight: 500;
}

.alert .material-icons-round {
  font-size: 1.5rem;
}

/* Alerte succès (vert) */
.alert-success {
  background-color: var(--color-success-bg);
  color: var(--color-success);
  border: 1px solid var(--color-success-border);
}

/* Alerte erreur (rouge) */
.alert-error {
  background-color: #fef2f2;
  color: var(--color-error);
  border: 1px solid #fecaca;
}


/* ============================================================
   SECTION 17 : PAGE DE CONNEXION (LANDING PAGE)
   ============================================================

   Design en deux colonnes : branding à gauche, formulaire à droite.
   ============================================================ */
.landing-page {
  min-height: 100vh;                       /* Occupe toute la hauteur */
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--color-primary) 0%, #3d6473 100%);
  padding: var(--spacing-lg);
}

/* ===========================================================
   CSS GRID (.landing-container)
   ===========================================================
   display: grid active CSS Grid pour créer une grille.
   grid-template-columns: 1fr 1fr crée 2 colonnes égales.
   (1fr = une fraction de l'espace disponible)
   =========================================================== */
.landing-container {
  display: grid;
  grid-template-columns: 1fr;              /* 1 colonne sur mobile */
  max-width: 75rem;
  width: 100%;
  background-color: var(--color-surface-light);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-xl);
  overflow: hidden;
}

/* Partie gauche (branding) */
.landing-left {
  background: linear-gradient(135deg, var(--color-primary) 0%, #3d6473 100%);
  color: white;
  padding: var(--spacing-4xl);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.landing-brand {
  margin-bottom: var(--spacing-4xl);
}

/* Logo de la landing page */
.landing-logo {
  width: 5rem;
  height: 5rem;
  background-color: rgba(255, 255, 255, 0.2);
  border-radius: var(--radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--spacing-xl);
  backdrop-filter: blur(10px);
}

.landing-logo .material-icons-round {
  font-size: 3rem;
  color: white;
}

.landing-title {
  font-family: var(--font-display);
  font-size: 2.5rem;
  font-weight: 700;
  margin-bottom: var(--spacing-lg);
  color: white;
}

.landing-subtitle {
  font-size: 1.125rem;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.9);
  margin-bottom: 0;
}

/* Liste des fonctionnalités */
.landing-features {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-xl);
}

.landing-feature {
  display: flex;
  gap: var(--spacing-lg);
  align-items: flex-start;
}

.landing-feature .material-icons-round {
  font-size: 2rem;
  color: rgba(255, 255, 255, 0.9);
  background-color: rgba(255, 255, 255, 0.1);
  padding: var(--spacing-md);
  border-radius: var(--radius-default);
  flex-shrink: 0;
}

.landing-feature h3 {
  font-size: 1.125rem;
  font-weight: 600;
  margin-bottom: var(--spacing-xs);
  color: white;
}

.landing-feature p {
  font-size: 0.9375rem;
  color: rgba(255, 255, 255, 0.8);
  margin: 0;
}

/* Partie droite (formulaire) */
.landing-right {
  padding: var(--spacing-4xl);
  display: flex;
  align-items: center;
  justify-content: center;
}

.login-card {
  width: 100%;
  max-width: 28rem;
}

.login-header {
  text-align: center;
  margin-bottom: var(--spacing-3xl);
}

.login-header h2 {
  font-size: 2rem;
  margin-bottom: var(--spacing-sm);
  color: var(--color-text-heading);
}

.login-header p {
  color: var(--color-text-secondary);
  margin: 0;
}

.login-form {
  margin-bottom: var(--spacing-2xl);
}

/* ===========================================================
   SÉLECTEUR DE TYPE D'UTILISATEUR
   ===========================================================
   Boutons radio stylisés comme des onglets.
   Le vrai input[type="radio"] est caché.
   =========================================================== */
.user-type-toggle {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-2xl);
  background-color: var(--color-bg-light);
  padding: var(--spacing-xs);
  border-radius: var(--radius-default);
}

/* Cache les vrais boutons radio */
.user-type-toggle input[type="radio"] {
  display: none;
}

/* Style des labels (apparence de boutons) */
.user-type-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-sm);
  padding: var(--spacing-md) var(--spacing-lg);
  border-radius: var(--radius-default);
  font-weight: 500;
  font-size: 0.875rem;
  cursor: pointer;
  transition: all var(--transition-base);
  color: var(--color-text-secondary);
  background-color: transparent;
}

.user-type-btn .material-icons-round {
  font-size: 1.25rem;
}

/* ===========================================================
   SÉLECTEUR + (ADJACENT SIBLING)
   ===========================================================
   input[type="radio"]:checked + .user-type-btn
   → Sélectionne le .user-type-btn qui suit IMMÉDIATEMENT
     un input[type="radio"] qui est coché (:checked)
   =========================================================== */
.user-type-toggle input[type="radio"]:checked + .user-type-btn {
  background-color: white;
  color: var(--color-primary);
  box-shadow: var(--shadow-sm);
}

.user-type-btn:hover {
  color: var(--color-primary);
}

/* Pied du formulaire de connexion */
.login-footer {
  text-align: center;
  padding-top: var(--spacing-2xl);
  border-top: 1px solid var(--color-border-light);
}

.login-footer p {
  color: var(--color-text-secondary);
  margin-bottom: var(--spacing-md);
  font-size: 0.875rem;
}

.signup-link {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-sm);
  color: var(--color-primary);
  font-weight: 500;
  text-decoration: none;
  transition: color var(--transition-base);
}

.signup-link:hover {
  color: var(--color-primary-dark);
}

.signup-link .material-icons-round {
  font-size: 1.125rem;
}


/* ============================================================
   SECTION 18 : RESPONSIVE DESIGN (MEDIA QUERIES)
   ============================================================

   Les MEDIA QUERIES permettent d'adapter le design selon
   la taille de l'écran.

   SYNTAXE :
   @media (condition) { styles }

   CONDITIONS COURANTES :
   - min-width: Xpx → écrans >= X pixels de large
   - max-width: Xpx → écrans <= X pixels de large

   APPROCHE MOBILE-FIRST :
   On écrit d'abord les styles mobiles (par défaut)
   puis on ajoute des styles pour les écrans plus grands.
   ============================================================ */

/* Écrans >= 640px (tablettes portrait) */
@media (min-width: 640px) {
  /* Affiche le texte du logo sur tablette */
  .header-logo-text {
    display: inline-block;
  }
}

/* Écrans >= 768px (tablettes paysage) */
@media (min-width: 768px) {
  /* Les cartes passent en layout horizontal */
  .workshop-card-layout {
    flex-direction: row;
  }

  .workshop-image-container {
    width: 33.333%;                        /* 1/3 de la largeur */
    height: auto;
  }

  .workshop-content {
    width: 66.667%;                        /* 2/3 de la largeur */
  }

  /* Détails sur 2 colonnes */
  .workshop-details {
    grid-template-columns: 1fr 1fr;
  }

  /* Affiche les liens de navigation */
  .header-nav a:not(.header-profile-btn) {
    display: inline-block;
  }

  /* Champs de formulaire sur 2 colonnes */
  .form-row {
    grid-template-columns: 1fr 1fr;
  }
}

/* Écrans >= 1024px (desktop) */
@media (min-width: 1024px) {
  /* Landing page en 2 colonnes */
  .landing-container {
    grid-template-columns: 1fr 1fr;
  }

  .landing-left {
    min-height: 600px;
  }
}

/* Écrans < 768px (mobiles) */
@media (max-width: 767px) {
  /* Cache les liens de navigation (sauf profil) */
  .header-nav a:not(.header-profile-btn) {
    display: none;
  }

  /* Affiche le menu hamburger sur mobile */
  .mobile-menu-btn {
    display: flex;
  }

  /* Réduction des tailles de titres */
  h1 {
    font-size: 1.875rem;
  }

  h2 {
    font-size: 1.5rem;
  }

  /* Header des cartes en colonne */
  .workshop-header {
    flex-direction: column;
    align-items: flex-start;
  }

  /* Touch targets : min 44px pour l'accessibilité mobile */
  .btn {
    min-height: 44px;
    padding: var(--spacing-md) var(--spacing-xl);
  }

  /* ===========================================================
     FILTER BUTTONS - HORIZONTAL SCROLL ON MOBILE
     ===========================================================
     Filters scroll horizontally instead of wrapping.
     Compact chip-style design for mobile touch targets.
     =========================================================== */
  .filter-container {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none; /* Firefox */
    -ms-overflow-style: none; /* IE/Edge */
    gap: var(--spacing-sm);
    padding-bottom: var(--spacing-sm); /* prevent cut-off */
    margin-bottom: var(--spacing-2xl); /* 32px gap to cards */
    justify-content: flex-start;
  }

  .filter-container::-webkit-scrollbar {
    display: none; /* Chrome/Safari */
  }

  .filter-btn {
    flex-shrink: 0; /* prevent shrinking */
    white-space: nowrap; /* prevent text wrap */
    min-height: 32px; /* compact height */
    padding: var(--spacing-xs) var(--spacing-md); /* 4px 12px */
    font-size: 0.75rem; /* 12px */
    border-radius: var(--radius-full); /* chip style */
  }

  .filter-btn .material-icons-round {
    font-size: 1rem; /* 16px icons */
  }

  /* ===========================================================
     WORKSHOP LIST - HORIZONTAL PADDING ON MOBILE
     ===========================================================
     Add horizontal margin to cards to match page container padding.
     =========================================================== */
  .workshop-list {
    padding: 0 var(--spacing-lg); /* 16px horizontal padding */
  }

  /* Réduction du padding des cartes de formulaire */
  .form-card {
    padding: var(--spacing-xl);
  }

  .login-card {
    padding: var(--spacing-xl);
  }

  /* Landing page ajustements */
  .landing-left {
    padding: var(--spacing-xl);
  }

  .landing-right {
    padding: var(--spacing-lg);
  }

  /* ===========================================================
     WORKSHOP CARDS - COMPACT MOBILE STYLING
     ===========================================================
     Reduce card height on mobile while keeping
     essential info visible: title, badges, date/time,
     location (if offline), full description, price, and CTA button.
     =========================================================== */

  /* Reduce padding in workshop content for mobile */
  .workshop-content {
    padding: var(--spacing-md) var(--spacing-lg);
  }

  /* Reduce gap in workshop details for mobile */
  .workshop-details {
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
  }

  /* More compact detail items */
  .workshop-detail-item {
    gap: var(--spacing-sm);
  }

  .workshop-detail-item .material-icons-round {
    font-size: 1.125rem;
    margin-top: 1px;
  }

  /* Smaller workshop title on mobile */
  .workshop-title {
    font-size: 1.25rem;
  }

  /* Reduce header margin */
  .workshop-header {
    margin-bottom: var(--spacing-sm);
    gap: var(--spacing-sm);
  }

  /* Slightly smaller description text on mobile */
  .workshop-description {
    margin-bottom: var(--spacing-md);
    font-size: 0.8125rem;
  }

  /* More compact footer */
  .workshop-footer {
    padding-top: var(--spacing-md);
  }

  /* Smaller price on mobile */
  .workshop-price {
    font-size: 1rem;
  }

  /* Reduce image height on mobile */
  .workshop-image-container {
    height: 10rem;
  }

  /* Tighter workshop date display */
  .workshop-date {
    font-size: 0.8125rem;
  }
}

/* Écrans < 480px (petits mobiles) */
@media (max-width: 480px) {
  /* Profile info rows empilées verticalement */
  .profile-info-row {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--spacing-xs);
  }

  /* Confirmation actions empilées */
  .confirmation-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .confirmation-actions .btn {
    width: 100%;
    justify-content: center;
  }

  /* Encore plus de réduction du padding */
  .form-card,
  .login-card {
    padding: var(--spacing-lg);
  }

  /* Filter buttons - keep horizontal scroll on small screens */
  /* Note: flex: 1 removed to preserve horizontal scrolling behavior */

  /* Workshop details en une colonne */
  .workshop-details {
    grid-template-columns: 1fr;
  }

  /* Section headers plus compacts */
  .section-header {
    gap: var(--spacing-sm);
  }

  .section-header h2 {
    font-size: 1.25rem;
  }
}


/* ============================================================
   SECTION 19 : MATERIAL ICONS
   ============================================================

   Configuration de la bibliothèque d'icônes Google Material Icons.
   ============================================================ */
.material-icons-round {
  font-family: 'Material Icons Round';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  display: inline-block;
  line-height: 1;
  text-transform: none;
  letter-spacing: normal;
  word-wrap: normal;
  white-space: nowrap;
  direction: ltr;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: 'liga';
}


/* ============================================================
   SECTION 20 : PAGE DE CONFIRMATION
   ============================================================

   Styles pour la page de confirmation d'inscription à un atelier.
   Design moderne avec icône de succès, carte détaillée et résumé.
   ============================================================ */

/* En-tête de confirmation avec icône de succès */
.confirmation-header {
  text-align: center;
  margin-bottom: var(--spacing-3xl);
}

/* Icône de succès (cercle vert avec coche) */
.confirmation-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  border-radius: var(--radius-full);
  background-color: var(--color-success-bg);
  color: var(--color-success);
  margin-bottom: var(--spacing-xl);
  box-shadow: 0 0 0 8px rgba(22, 163, 74, 0.1);
}

.confirmation-icon .material-icons-round {
  font-size: 2.5rem;
}

.confirmation-title {
  font-size: 2rem;
  color: var(--color-text-heading);
  margin-bottom: var(--spacing-md);
}

.confirmation-subtitle {
  font-size: 1.125rem;
  color: var(--color-text-secondary);
  max-width: 32rem;
  margin: 0 auto !important;
}

.confirmation-subtitle strong {
  color: var(--color-text-strong);
}

/* Carte de confirmation */
.confirmation-card {
  background-color: var(--color-surface-light);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
  border: 1px solid var(--color-border-light);
  overflow: hidden;
  max-width: 56rem;
  margin: 0 auto;
}

/* Barre de référence */
.confirmation-reference {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-md);
  padding: var(--spacing-lg) var(--spacing-2xl);
  background-color: var(--color-bg-light);
  border-bottom: 1px solid var(--color-border-light);
}

.reference-label {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--color-text-tertiary);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

.reference-value {
  font-family: monospace;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--color-primary);
  background-color: var(--color-surface-light);
  border: 1px solid var(--color-border-light);
  padding: var(--spacing-xs) var(--spacing-md);
  border-radius: var(--radius-default);
  box-shadow: var(--shadow-sm);
}

/* Corps de la carte */
.confirmation-body {
  padding: var(--spacing-2xl);
}

/* Layout atelier (image + détails) */
.confirmation-workshop {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-2xl);
}

@media (min-width: 768px) {
  .confirmation-workshop {
    flex-direction: row;
  }
}

/* Image de l'atelier */
.confirmation-image {
  width: 100%;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background-color: var(--color-bg-light);
  border: 1px solid var(--color-border-light);
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05);
}

@media (min-width: 768px) {
  .confirmation-image {
    width: 33.333%;
    flex-shrink: 0;
  }
}

.confirmation-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  aspect-ratio: 4 / 3;
}

/* Détails de l'atelier */
.confirmation-details {
  flex: 1;
}

.confirmation-workshop-title {
  font-size: 1.5rem;
  color: var(--color-text-heading);
  margin: 0 0 var(--spacing-sm) 0;
  line-height: 1.3;
}

.confirmation-workshop-description {
  color: var(--color-text-secondary);
  font-size: 0.9375rem;
  line-height: 1.6;
  margin: 0 0 var(--spacing-xl) 0;
}

/* Grille d'infos (date, lieu) */
.confirmation-info-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--spacing-lg);
}

@media (min-width: 640px) {
  .confirmation-info-grid {
    grid-template-columns: 1fr 1fr;
  }
}

/* Boîte d'info individuelle */
.confirmation-info-box {
  display: flex;
  align-items: flex-start;
  gap: var(--spacing-md);
  padding: var(--spacing-md);
  background-color: var(--color-bg-light);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-default);
}

.confirmation-info-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  background-color: var(--color-surface-light);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-default);
  color: var(--color-primary);
  flex-shrink: 0;
  box-shadow: var(--shadow-sm);
}

.confirmation-info-icon .material-icons-round {
  font-size: 1.25rem;
}

.confirmation-info-content {
  flex: 1;
}

.confirmation-info-label {
  font-size: 0.6875rem;
  font-weight: 700;
  color: var(--color-text-tertiary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 2px 0;
}

.confirmation-info-value {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-text-strong);
  margin: 0;
}

.confirmation-info-secondary {
  font-size: 0.75rem;
  color: var(--color-text-secondary);
  margin: 0;
}

/* Section paiement/résumé */
.confirmation-summary {
  margin-top: var(--spacing-2xl);
  padding-top: var(--spacing-xl);
  border-top: 1px solid var(--color-border-light);
}

.confirmation-summary-header {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-lg);
}

@media (min-width: 640px) {
  .confirmation-summary-header {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-end;
  }
}

.confirmation-summary-title {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--color-text-strong);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin: 0 0 var(--spacing-md) 0;
}

.confirmation-summary-rows {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
}

.confirmation-summary-row {
  display: flex;
  justify-content: space-between;
  font-size: 0.875rem;
  color: var(--color-text-secondary);
}

.confirmation-summary-row.total {
  font-weight: 700;
  color: var(--color-text-strong);
  font-size: 1rem;
  padding-top: var(--spacing-sm);
  border-top: 1px solid var(--color-border-light);
  margin-top: var(--spacing-sm);
}

/* Badge de statut */
.confirmation-status-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-sm);
  background-color: var(--color-success-bg);
  color: var(--color-success);
  padding: var(--spacing-sm) var(--spacing-md);
  border-radius: var(--radius-full);
  border: 1px solid var(--color-success-border);
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
}

.confirmation-status-badge .material-icons-round {
  font-size: 1rem;
}

/* Actions de la page de confirmation */
.confirmation-actions {
  display: flex;
  justify-content: center;
  gap: var(--spacing-lg);
  margin-top: var(--spacing-3xl);
}

.confirmation-actions .btn {
  padding: var(--spacing-md) var(--spacing-2xl);
}
