/* ── Fonts ── */
@font-face {
  font-family: 'Cinzel';
  font-weight: 700;
  font-display: swap;
  src: url('/assets/fonts/Cinzel-Bold.woff2') format('woff2');
}

@font-face {
  font-family: 'Cutive Mono';
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/CutiveMono-Regular.woff2') format('woff2');
}

/* ── Variables « legal » ──
   Consommées par /legal/*. La home (index.html) a sa propre section plus bas
   dans ce fichier, avec sa propre palette (--primary-dark…), volontairement
   distincte — voir CLAUDE.md § Site root et § Convention de variables CSS.
   Ces valeurs sont le thème SOMBRE (défaut historique de la section legal) —
   voir plus bas le bloc [data-color-scheme="light"] pour le thème clair, et
   docs/theme-light-dark-spec.md pour la spec complète du toggle. */
:root {
  --bg: #0c0608;
  --bg2: #130a0c;
  --c1: #e8822a; /* ambre chaud — accent principal */
  --c2: #a04828; /* bordeaux-ambre — secondaire */
  --c3: #3a1408; /* très sombre */
  --c4: #1e0c0a; /* fond cards */
  --text: #f0e4d8; /* blanc cassé chaud */
  --text2: #8a6050; /* texte secondaire */
  --border: #3a1a10;
  --gradient: linear-gradient(135deg, #8c1432 0%, #c84020 40%, #f6a608 100%);
  --font-title: 'Cinzel', Georgia, serif;
  --font-mono: 'Cutive Mono', monospace;
  --header-height: 56px;
  color-scheme: dark;
}

/* ── Thème clair « legal » ──
   Bascule via www/color-scheme.js — attribut data-color-scheme sur <html>.
   Valeurs réutilisées de la palette HOME claire (§ plus bas) : même dégradé
   de marque, juste appliqué sur fond clair au lieu de fond sombre.
   ⚠️ --c2 : valeur candidate, contraste texte à valider avec un outil réel
   avant de considérer ce thème comme définitif (voir docs/theme-light-dark-spec.md §4.3). */
:root[data-color-scheme="light"] {
  --bg: #fafaf8;
  --bg2: #f1ece4;
  --c1: #8c1432; /* bordeaux — l'ambre n'a pas assez de contraste texte sur fond clair */
  --c2: #8a5a20;
  --c3: #e8e2d8;
  --c4: #f5f0e8;
  --text: #2a2a28;
  --text2: #6b6b69;
  --border: #e8e8e6;
  color-scheme: light;
}

/* ── Reset ── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

/* ─── ASCENSEUR THÉMÉ (legal, défaut) ────────────────────────────────────
   scrollbar-color est une propriété héritée : une seule déclaration ici
   couvre le scroll de page ET tout panel interne sans règle plus spécifique
   — voir docs/scrollbar-theme-spec.md. Thumb = --border (a déjà sa propre
   valeur clair/sombre via [data-color-scheme], voir plus haut) — surchargé
   pour la home par html:has(body.home) plus bas (--home-border), --border
   étant scopé legal uniquement dans son usage visuel malgré sa portée :root. */
:root {
  scrollbar-width: thin;
  scrollbar-color: var(--border) transparent;
}
*::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
*::-webkit-scrollbar-track {
  background: transparent;
}
*::-webkit-scrollbar-thumb {
  background: var(--border);
  border-radius: 4px;
}
*::-webkit-scrollbar-thumb:hover {
  background: var(--c1, var(--border));
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 14px;
  line-height: 1.7;
  overflow-x: hidden;
}

a {
  color: var(--c1);
  text-decoration: none;
}

a:hover {
  color: var(--text);
}

/* ── Grain overlay ── */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.04;
  background-image: url("/assets/grain.svg");
  background-size: 256px 256px;
}

/* ── Toggle clair/sombre — icônes partagées (home + header.js) ──
   Les deux boutons (home custom, header.js) contiennent en permanence les
   deux icônes .theme-toggle-icon--sun/--moon ; seule celle qui ne correspond
   pas au thème courant est masquée, en pur CSS, sans JS ni flash au clic.
   Voir docs/theme-light-dark-spec.md §5.4/§5.5. */
:root[data-color-scheme="light"] .theme-toggle-icon--sun,
:root[data-color-scheme="dark"] .theme-toggle-icon--moon {
  display: none;
}

/* ══════════════════════════════════════════════════
   HOME (www/index.html)
   Déplacé depuis le <style> inline de index.html (2026-07-31).
   Palette et reset volontairement autonomes vis-à-vis de la section « legal »
   ci-dessus — voir CLAUDE.md § Site root.
   Tout ce bloc est scopé sous body.home (voir class="home" sur <body> dans
   index.html) : les pages légales chargent aussi ce fichier et ont elles
   aussi un <header>/<footer> (générés par header.js/footer.js) — sans ce
   scope, des sélecteurs génériques comme `footer { margin-top: 4rem }` ou
   `body::before` (grain overlay ci-dessus) auraient fuité sur ces pages.
══════════════════════════════════════════════════ */
body.home {
  --primary-dark: #8c1432;
  --primary-light: #f6a608;
  --dark-bg: #1d1d1b;
  --light-bg: #fafaf8;
  --text-dark: #2a2a28;
  --text-light: #6b6b69;
  --home-border: #e8e8e6;
  --card-bg: #ffffff; /* header, product-card, about-section, dropdown mobile */
  --header-bg: #ffffff;
  --shine-color: rgba(255, 255, 255, 0.4); /* balayage .shiny/.shiny-slow — voir bloc dark plus bas */
  --shine-color-slow: rgba(255, 255, 255, 0.2);

  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  background: var(--light-bg);
  color: var(--text-dark);
  line-height: 1.6;
  font-size: 16px;
  overflow-x: visible;
  color-scheme: light;
}

/* ── Thème sombre HOME ──
   Bascule via www/color-scheme.js — attribut data-color-scheme sur <html>.
   Valeurs réutilisées de la palette « legal » sombre (§ plus haut) — voir
   docs/theme-light-dark-spec.md §4.2. --primary-dark/--primary-light/
   --dark-bg (dégradé de marque + bandeau footer) ne changent pas : déjà
   éprouvés sur fond sombre comme sur fond clair. */
:root[data-color-scheme="dark"] body.home {
  --light-bg: #0c0608;
  --text-dark: #f0e4d8;
  --text-light: #8a6050;
  --home-border: #3a1a10;
  --card-bg: #1e0c0a;
  --header-bg: #130a0c;
  /* .shiny/.shiny-slow balaient un blanc translucide conçu pour un fond
     clair — sur fond sombre, ce même blanc lu par-dessus une icône ou le
     logo produit un flash trop cru. Repris en ambre de marque (--primary-light),
     cohérent avec le glow ambre déjà utilisé en dark (ex. header.js
     text-shadow sur --header-c1). */
  --shine-color: rgba(19, 10, 12, 0.35);
  --shine-color-slow: rgba(19, 10, 12, 0.3);
  color-scheme: dark;
}

/* ─── ASCENSEUR THÉMÉ (home — surcharge) ──────────────────────────────────
   La home est distinguée de la section legal par une classe sur <body>
   (`body.home`), pas par un attribut sur <html> — or scrollbar-color doit
   être posée sur l'élément de scroll réel de la page (<html> en mode
   standards, `document.scrollingElement`), pas sur <body> lui-même (aucune
   propagation body→viewport garantie pour cette propriété, contrairement à
   `color-scheme`/`background` qui ont ce cas explicitement prévu par leurs
   specs respectives — voir docs/scrollbar-theme-spec.md §8 pour le détail).
   `:root:has(body.home)` cible directement <html>, sans dépendre d'une
   propagation implémentation-dépendante — MAIS `<html>` ne voit pas les
   variables déclarées sous body.home (une custom property ne remonte
   jamais d'un enfant vers son parent) : --home-border est donc dupliquée
   ici (2 valeurs, clair/sombre) — **à garder synchronisée** avec les
   déclarations `--home-border` de body.home ci-dessus/plus bas si l'une
   des deux change. Vérifié réellement (getComputedStyle + CSS.supports) :
   voir www/CLAUDE.md § Ascenseurs thémés. */
:root:has(body.home) {
  --home-border: #e8e8e6; /* dupliqué de body.home (clair, défaut) */
  scrollbar-color: var(--home-border) transparent;
}
:root[data-color-scheme="dark"]:has(body.home) {
  --home-border: #3a1a10; /* dupliqué de :root[data-color-scheme="dark"] body.home */
}
:root:has(body.home) *::-webkit-scrollbar-thumb {
  background: var(--home-border);
}

/* Les encarts « thèmes » (highlight / badge) ont un fond translucide
   bordeaux/ambre pensé pour se détacher d'un fond clair, et un texte
   --primary-dark fixe. Sur fond sombre les deux se fondent quasi dans la
   page (illisible) — on leur donne un vrai fond de surface (--card-bg,
   déjà utilisé pour les cartes produits en dark) et un texte ambre
   (--primary-light), déjà le choix retenu ailleurs dans ce bloc pour la
   lisibilité sur fond sombre. */
:root[data-color-scheme="dark"] .home .section-highlight,
:root[data-color-scheme="dark"] .home .about-highlight,
:root[data-color-scheme="dark"] .home .product-themes-badge {
  background: var(--card-bg);
}

:root[data-color-scheme="dark"] .home .section-highlight p,
:root[data-color-scheme="dark"] .home .about-highlight p,
:root[data-color-scheme="dark"] .home .product-themes-badge {
  color: var(--primary-light);
}

/* Neutralise le grain overlay de la section legal (non désiré sur la home) */
body.home::before {
  display: none;
}

/* === HEADER === */
.home header {
  background: var(--header-bg);
  padding: 1.5rem 2rem;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  position: sticky;
  top: 0;
  z-index: 100;
}

.home .header-container {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.home .header-container nav {
  display: flex;
  align-items: center;
  gap: 0;
  flex: 1;
  justify-content: end;
  margin-right: 2rem;
}

.home .logo {
  font-size: 1.8rem;
  font-weight: 700;
  background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  text-decoration: none;
  transition: opacity 0.3s;
  /* Couleur du SVG inliné (wordmark en fill:currentColor, voir
     draxolotl-home.js/inlineLogo) — fixée explicitement à --text-dark, sinon
     la règle générique `a { color: var(--c1) }` (section legal du fichier)
     s'appliquerait à cet <a>. --text-dark bascule déjà avec le thème. */
  color: var(--text-dark);
}

.home .logo:hover {
  opacity: 0.8;
}

.home .logo img,
.home .logo .svg-host {
  height: auto;
  min-height: 50px;
  display: block;
}

/* .svg-host : span shadow-DOM injecté par inlineLogo() (voir
   draxolotl-home.js) à la place de l'<img>. Un <span> n'est pas un élément
   remplacé (contrairement à <img>) : sans aspect-ratio explicite, il n'a
   aucune dimension intrinsèque à préserver quand seule sa hauteur est
   contrainte — aspect-ratio (calculé depuis le viewBox du SVG source)
   reproduit le comportement de l'<img> d'origine. */
.home .logo .svg-host {
  aspect-ratio: 3245.73 / 457.97; /* viewBox logo-draxolotl-horizontal_couleurs.svg */
}

.home nav a {
  margin-left: 2rem;
  text-decoration: none;
  color: var(--text-dark);
  font-weight: 500;
  transition: color 0.3s;
}

.home nav a:hover {
  color: var(--primary-dark);
}

/* === LANG SELECTOR === */
.home .lang-selector {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.home .lang-select {
  /* `background: transparent` auparavant — visuellement correct dans le
     header (fond déjà --header-bg derrière), mais Chromium calcule le fond
     du POPUP natif des options depuis la valeur effective de background du
     <select> lui-même : "transparent" n'est pas une couleur exploitable pour
     ce popup séparé, qui retombe alors sur un blanc par défaut malgré
     `color-scheme: dark` correctement hérité (bug réel signalé le
     2026-08-11 — le menu déroulant restait blanc en thème sombre). Une
     couleur concrète (identique au fond du header, donc invisible en tant
     que tel) donne au popup une vraie référence à utiliser. */
  background: var(--header-bg);
  border: 1px solid var(--home-border);
  color: var(--text-dark);
  padding: 0.5rem 0.75rem;
  border-radius: 0.35rem;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.3s;
}

.home .lang-select option {
  /* Les <option> du popup ne dérivent pas toujours proprement le fond/texte
     du <select> parent (widget natif séparé) — stylées explicitement plutôt
     que de compter sur l'héritage, même raison que ci-dessus. */
  background: var(--header-bg);
  color: var(--text-dark);
}

.home .lang-select:hover {
  border-color: var(--primary-dark);
  color: var(--primary-dark);
}

.home .lang-select:focus {
  outline: none;
  border-color: var(--primary-light);
  /* 0.1 auparavant — quasi invisible en pratique (bug réel trouvé le
     2026-08-11), remonté à 0.5 + anneau élargi pour rester une vraie
     alternative à l'outline supprimé (CLAUDE.md § Accessibilité). */
  box-shadow: 0 0 0 3px rgba(246, 166, 8, 0.5);
}

/* === THEME TOGGLE (clair/sombre) ===
   Voir docs/theme-light-dark-spec.md §5.5. Le bouton contient les deux icônes
   (soleil/lune) en permanence — c'est la règle .theme-toggle-icon--* ci-dessous
   (partagée avec header.js, hors scope .home) qui masque celle qui ne
   correspond pas au thème courant, en pur CSS via [data-color-scheme]. */
.home .theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  background: transparent;
  border: 1px solid var(--home-border);
  border-radius: 0.35rem;
  color: var(--text-dark);
  cursor: pointer;
  transition: all 0.3s;
}

.home .theme-toggle:hover {
  border-color: var(--primary-dark);
  color: var(--primary-dark);
}

.home .theme-toggle:focus-visible {
  outline: none;
  border-color: var(--primary-light);
  /* même correctif que .lang-select ci-dessus — voir ce commentaire */
  box-shadow: 0 0 0 3px rgba(246, 166, 8, 0.5);
}

.home .theme-toggle svg {
  width: 18px;
  height: 18px;
}

/* === NAV BURGER (mobile uniquement) === */
.home .nav-burger {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 0.35rem;
  cursor: pointer;
  flex-shrink: 0;
}

.home .nav-burger:focus-visible {
  outline: 2px solid var(--primary-light);
  outline-offset: 2px;
}

.home .nav-burger span {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--text-dark);
  border-radius: 1px;
  transition: transform 0.25s ease, opacity 0.25s ease;
}

.home .nav-burger[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.home .nav-burger[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}

.home .nav-burger[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* === HERO === */
.home .hero {
  max-width: 1200px;
  margin: 0 auto;
  padding: 5rem 2rem;
  text-align: center;
}

.home .hero-badge {
  display: inline-block;
  margin-bottom: 2rem;
  /* Couleur du SVG inliné (wordmark en fill:currentColor, voir
     draxolotl-home.js/inlineLogo) — --text-dark bascule déjà avec le thème. */
  color: var(--text-dark);
}

.home .hero-badge img,
.home .hero-badge .svg-host {
  max-width: 400px;
  height: auto;
  min-height: 400px;
  display: block;
  animation: float 3s ease-in-out infinite;
}

.home .hero-badge .svg-host {
  aspect-ratio: 1007.58 / 993.46; /* viewBox logo-draxolotl-vertical_couleurs.svg */
}

@keyframes float {
  0%, 100% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-8px);
  }
}

.home .hero h1 {
  font-size: 3.5rem;
  font-weight: 800;
  margin-bottom: 1rem;
  color: var(--text-dark);
  line-height: 1.1;
}

.home .gradient {
  background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%);
  font-weight: 600;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.home .hero p {
  font-size: 1.3rem;
  color: var(--text-light);
  margin-bottom: 2rem;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}

.home .hero-features {
  display: flex;
  justify-content: center;
  gap: 2rem;
  margin-top: 3rem;
  flex-wrap: wrap;
}

.home .feature-item {
  text-align: center;
}

.home .feature-icon {
  width: 36px;
  height: 36px;
  margin: 0 auto 0.5rem auto;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}

.home .feature-icon img {
  width: 48px !important;
  height: 48px !important;
  max-width: 100%;
  display: block;

}

.home .shiny {
  position: relative;
  overflow: hidden;
}

.home .shiny::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(90deg, transparent, var(--shine-color), transparent);
  animation: shine 3s ease-in-out infinite;
  pointer-events: none;
}

.home .shiny-slow {
  position: relative;
  overflow: hidden;
}

.home .shiny-slow::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(90deg, transparent, var(--shine-color-slow), transparent);
  animation: shine 5s ease-in-out infinite;
  pointer-events: none;
}

@keyframes shine {
  0%, 100% {
    transform: translateX(-100%);
  }
  50% {
    transform: translateX(100%);
  }
}

.home #products-casual-games,
.home #products-core-games,
.home #products-apps,
.home #about {
  scroll-margin-top: 120px; /* hauteur du header + un peu de buffer */
}

.home .feature-item small {
  color: var(--text-light);
  font-size: 0.9rem;
}

/* === CTA BUTTON === */
.home .btn {
  display: inline-block;
  padding: 0.9rem 2rem;
  border-radius: 0.5rem;
  text-decoration: none;
  font-weight: 600;
  transition: all 0.3s;
  border: 2px solid transparent;
  cursor: pointer;
  font-size: 1rem;
}

.home .btn-primary {
  background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%);
  align-content: center;
  color: white;
  border-color: var(--primary-dark);
}

.home .btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 16px rgba(140, 20, 50, 0.3);
}

.home .btn-secondary {
  background: var(--card-bg);
  align-content: center;
  color: var(--primary-dark);
  border-color: var(--home-border);
}

.home .btn-secondary:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 16px rgba(140, 20, 50, 0.3);
}

/* === PRODUCTS SECTION === */
.home .section {
  max-width: 1200px;
  margin: 0 auto;
  padding: 4rem 2rem;
}

.home .section-title {
  font-size: 2.5rem;
  font-weight: 700;
  margin-bottom: 1rem;
  color: var(--text-dark);
}

.home .section-subtitle {
  font-size: 1.1rem;
  color: var(--text-light);
  margin-bottom: 1rem;
}

.home .section-highlight {
  background: linear-gradient(135deg, rgba(140, 20, 50, 0.1) 0%, rgba(246, 166, 8, 0.1) 100%);
  padding: 1rem;
  border-left: 4px solid var(--primary-light);
  border-radius: 0.5rem;
  margin-bottom: 2rem;
}

.home .section-highlight p {
  margin: 0;
  font-weight: 600;
  color: var(--primary-dark);
}

.home .products-section {
  max-width: 1200px;
  margin: 0 auto;
  padding: 4rem 2rem;
}

.home .products-subsection {
  margin-bottom: 4rem;
}

.home .products-subsection:last-child {
  margin-bottom: 0;
}

.home .products-subsection-title {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--text-dark);
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 2px solid var(--primary-light);
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  max-width: 100%;
}

.home .subsection-icon {
  width: 32px;
  height: 32px;
  display: block;
}

.home .coming-soon {
  padding: 2rem;
  background: linear-gradient(135deg, rgba(140, 20, 50, 0.05) 0%, rgba(246, 166, 8, 0.05) 100%);
  border: 2px solid var(--primary-light);
  border-radius: 1rem;
  text-align: center;
  color: var(--text-dark);
  font-size: 1.1rem;
  max-width: 500px;
  margin: 0 auto;
}

.home .products-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 2rem;
  justify-content: center;
}

.home .product-card {
  width: 350px;
  background: var(--card-bg);
  border-radius: 1rem;
  overflow: hidden;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  transition: all 0.3s;
  flex-shrink: 0;
}

.home .product-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15);
}

.home .product-image {
  width: 100%;
  height: 200px;
  background: linear-gradient(135deg, #f0f0f0 0%, #e0e0e0 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 3rem;
  overflow: hidden;
}

.home .product-content {
  padding: 2rem;
}

.home .product-title {
  font-size: 1.5rem;
  font-weight: 700;
  margin-bottom: 0.5rem;
  color: var(--text-dark);
}

.home .product-description {
  color: var(--text-light);
  margin-bottom: 1.5rem;
  font-size: 0.95rem;
}

.home .product-themes-badge {
  display: inline-block;
  background: rgba(140, 20, 50, 0.1);
  border: 1px solid var(--primary-light);
  color: var(--primary-dark);
  padding: 0.4rem 0.8rem;
  border-radius: 0.5rem;
  font-size: 0.85rem;
  font-weight: 600;
  margin-bottom: 1rem;
}

.home .product-theme-icon img {
  height: 1em;
  width: auto;
  vertical-align: -0.125em;
}

.home .product-store-icon img {
  height: 1.5em;
  width: auto;
  vertical-align: -0.125em;
}

.home .product-cta {
  display: flex;
  gap: 1rem;
}

.home .product-cta a {
  flex: 1;
  text-align: center;
}

/* === IMAGE CAROUSEL === */
.home .carousel {
  width: 100%;
  height: 200px;
  background: linear-gradient(135deg, #f0f0f0 0%, #e0e0e0 100%);
  border-radius: 0.75rem;
  position: relative;
  overflow: hidden;
  margin-bottom: 1.5rem;
  cursor: pointer;
}

.home .carousel-image {
  width: 100%;
  height: 100%;
  position: absolute;
  opacity: 0;
  transition: opacity 0.6s ease-in-out;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.5rem;
  background: linear-gradient(135deg, #f0f0f0 0%, #e0e0e0 100%);
}

.home .carousel-image.active {
  opacity: 1;
}

.home .carousel-nav {
  position: absolute;
  bottom: 1rem;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 0.5rem;
  z-index: 10;
}

.home .carousel-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.5);
  cursor: pointer;
  transition: all 0.3s;
  border: 1px solid white;
}

.home .carousel-dot.active {
  background: white;
  width: 20px;
  border-radius: 4px;
}

.home .carousel-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 0, 0, 0.3);
  color: white;
  border: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  z-index: 5;
  transition: all 0.3s;
}

.home .carousel-arrow:hover {
  background: rgba(0, 0, 0, 0.5);
}

.home .carousel-arrow.prev {
  left: 0.5rem;
}

.home .carousel-arrow.next {
  right: 0.5rem;
}

/* === ABOUT SECTION === */
.home .about-section {
  background: var(--card-bg);
}

.home .about-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: center;
}

.home .about-text h2 {
  font-size: 2rem;
  margin-bottom: 1.5rem;
  color: var(--text-dark);
}

.home .about-text p {
  color: var(--text-light);
  margin-bottom: 1rem;
  line-height: 1.8;
}

.home .about-highlight {
  background: linear-gradient(135deg, rgba(140, 20, 50, 0.1) 0%, rgba(246, 166, 8, 0.1) 100%);
  padding: 2rem;
  border-left: 4px solid var(--primary-light);
  border-radius: 0.5rem;
  margin-top: 2rem;
}

.home .about-highlight p {
  margin: 0;
  font-weight: 600;
  color: var(--primary-dark);
}

.home .about-image {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 400px;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  border-radius: 1rem;
  font-size: 5rem;
}

@media (max-width: 768px) {
  .home .about-content {
    grid-template-columns: 1fr;
  }

  .home .about-text h2 {
    font-size: 1.5rem;
  }

  .home .about-image {
    height: 250px;
  }
}

/* === FOOTER === */
.home footer {
  background: var(--dark-bg);
  color: white;
  padding: 3rem 2rem;
  margin-top: 4rem;
}

.home .footer-container {
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 2rem;
  margin-bottom: 2rem;
}

.home .footer-section h4 {
  margin-bottom: 1rem;
  color: var(--primary-light);
  font-weight: 600;
}

.home .footer-section ul {
  list-style: none;
}

.home .footer-section a {
  color: rgba(255, 255, 255, 0.7);
  text-decoration: none;
  display: block;
  margin-bottom: 0.5rem;
  transition: color 0.3s;
}

.home .footer-section a:hover {
  color: var(--primary-light);
}

.home .footer-desc {
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 1rem;
}

.home .social-links {
  display: flex;
  gap: 1rem;
  margin-top: 1rem;
}

.home .social-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  color: white;
  text-decoration: none;
  transition: all 0.3s;
}

.home .social-link:hover {
  background: var(--primary-light);
  transform: scale(1.1);
}

.home .footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding-top: 2rem;
  text-align: center;
  color: rgba(255, 255, 255, 0.6);
}

/* === RESPONSIVE === */
@media (max-width: 1024px) {
  .home .products-grid {
    /* 2 cards par ligne */
  }

  .home .product-card {
    width: 350px;
  }
}

@media (max-width: 768px) {
  .home header {
    padding: 1rem 1.25rem;
  }

  .home .logo img,
  .home .logo .svg-host {
    height: 28px;
    min-height: 0;
    width: auto;
    max-width: 150px;
  }

  .home .hero h1 {
    font-size: 2.2rem;
  }

  .home .hero p {
    font-size: 1rem;
  }

  .home .hero-badge img,
  .home .hero-badge .svg-host {
    max-width: min(400px, 70vw);
    min-height: 0;
  }

  .home .nav-burger {
    display: flex;
  }

  .home .header-container nav {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    margin-right: 0;
    background: var(--header-bg);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
    padding: 0.5rem 2rem;
  }

  .home .header-container nav.open {
    display: flex;
  }

  .home nav a {
    margin-left: 0;
    padding: 0.9rem 0;
    border-bottom: 1px solid var(--home-border);
  }

  .home nav a:last-child {
    border-bottom: none;
  }

  .home .hero-features {
    flex-direction: column;
    gap: 1rem;
  }

  .home .product-card {
    width: 100%;
    max-width: 350px;
  }

  .home .section {
    padding: 2rem 1rem;
  }
}
