/* ==========================================================================
   Fixtiv — Feuille de style principale
   Site de guides de bricolage statique (HTML pur)
   Palette chaleureuse « bricolage » : orange/cuivre + teintes sombres
   Mode sombre activé via l'attribut data-theme="dark" sur <html>
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. VARIABLES CSS — Thème clair (défaut)
   -------------------------------------------------------------------------- */
:root {
  /* Couleurs principales */
  --color-primary: #e8590c;              /* Orange / cuivre — identité du site */
  --color-primary-hover: #c74e08;        /* Orange foncé au survol */
  --color-primary-dark: #9a3a05;         /* Orange très foncé (textes sur pastilles) */
  --color-primary-soft: #fff3e8;         /* Fond orangé très clair (astuces, badges) */
  --color-primary-border: #f5c9a8;       /* Bordure orangée douce */

  /* Teintes neutres (clair) */
  --color-dark: #1c1917;                 /* Foncé chaleureux — header / footer */
  --color-dark-soft: #292524;            /* Foncé légèrement adouci (hover nav) */
  --color-bg: #f5f4f2;                   /* Fond du site — gris très clair chaud */
  --color-surface: #ffffff;              /* Cartes, boîtes, contenu */
  --color-surface-alt: #f1efec;          /* Fond gris clair (toc, zones secondaires) */

  /* Texte */
  --color-text: #2d2a26;
  --color-text-muted: #6f6a64;
  --color-text-faint: #9a958f;           /* Méta très discrète */
  --color-border: #e5e0da;
  --color-on-dark: #ffffff;              /* Texte clair sur fond sombre */
  --color-on-dark-muted: #c9c5c0;        /* Liens / texte secondaire sur fond sombre */

  /* Forme & profondeur */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-full: 999px;
  --shadow-sm: 0 1px 3px rgba(28, 25, 23, 0.08);
  --shadow-md: 0 4px 14px rgba(28, 25, 23, 0.10);
  --shadow-lg: 0 10px 30px rgba(28, 25, 23, 0.14);

  /* Typographie */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
               "Helvetica Neue", Arial, sans-serif;
  --font-size-base: 17px;
  --line-height-base: 1.7;

  /* Divers */
  --transition: 0.2s ease;
  --container-width: 1080px;
  --content-width: 800px;                /* Largeur de lecture des articles */
  --header-height: 68px;
}

/* --------------------------------------------------------------------------
   2. VARIABLES CSS — Mode sombre
   Activé par <html data-theme="dark"> (basculé par .theme-toggle)
   -------------------------------------------------------------------------- */
[data-theme="dark"] {
  --color-primary: #f0672a;              /* Orange légèrement éclairci pour contraster */
  --color-primary-hover: #ff8a4d;
  --color-primary-dark: #ffb28a;
  --color-primary-soft: #2a1a10;         /* Fond orangé très sombre (astuces) */
  --color-primary-border: #4a2c18;

  --color-dark: #151515;                 /* Header / footer — presque noir */
  --color-dark-soft: #232323;
  --color-bg: #121212;                   /* Fond du site — très sombre */
  --color-surface: #1e1e1e;              /* Cartes et boîtes */
  --color-surface-alt: #262626;          /* Fond gris sombre (toc, secondaire) */

  --color-text: #e8e6e3;
  --color-text-muted: #a8a29e;
  --color-text-faint: #75716c;
  --color-border: #333230;
  --color-on-dark: #f5f5f4;
  --color-on-dark-muted: #b5b1ac;

  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 4px 14px rgba(0, 0, 0, 0.45);
  --shadow-lg: 0 10px 30px rgba(0, 0, 0, 0.5);
}

/* --------------------------------------------------------------------------
   3. RESET & BASE
   -------------------------------------------------------------------------- */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
  color: var(--color-text);
  background-color: var(--color-bg);
  transition: background-color var(--transition), color var(--transition);
}

img {
  max-width: 100%;
  height: auto;
}

a {
  color: var(--color-primary);
  transition: color var(--transition);
}

a:hover {
  color: var(--color-primary-hover);
}

/* Accessibilité : focus visible sur tous les éléments interactifs */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible {
  outline: 3px solid var(--color-primary);
  outline-offset: 2px;
  border-radius: 4px;
}

/* --------------------------------------------------------------------------
   4. HEADER — fond sombre, logo à gauche, nav + thème à droite
   -------------------------------------------------------------------------- */
header.site-header {
  background-color: var(--color-dark);
  border-bottom: 3px solid var(--color-primary);
  transition: background-color var(--transition);
}

.header-inner {
  max-width: var(--container-width);
  margin: 0 auto;
  padding: 0 24px;
  min-height: var(--header-height);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

/* Logo */
.header-inner .logo {
  font-size: 1.5rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--color-on-dark);
  text-decoration: none;
  padding: 8px 0;
}

.header-inner .logo span {
  color: var(--color-primary);
}

/* Navigation */
.header-inner nav {
  display: flex;
  align-items: center;
  gap: 4px;
}

.header-inner nav a {
  color: var(--color-on-dark-muted);
  text-decoration: none;
  font-size: 0.95rem;
  font-weight: 500;
  padding: 8px 14px;
  border-radius: var(--radius-full);
  transition: color var(--transition), background-color var(--transition);
}

.header-inner nav a:hover {
  color: var(--color-on-dark);
  background-color: var(--color-dark-soft);
}

/* --------------------------------------------------------------------------
   5. BOUTON BAScule JOUR/NUIT (.theme-toggle)
   -------------------------------------------------------------------------- */
.theme-toggle {
  width: 42px;
  height: 42px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15rem;
  line-height: 1;
  color: var(--color-on-dark);
  background-color: transparent;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: var(--radius-full);
  cursor: pointer;
  transition: background-color var(--transition), border-color var(--transition),
              transform var(--transition);
}

.theme-toggle:hover {
  background-color: rgba(255, 255, 255, 0.12);
  border-color: var(--color-primary);
  transform: rotate(15deg);
}

.theme-toggle:active {
  transform: scale(0.92);
}

/* --------------------------------------------------------------------------
   5b. BOUTON LANGUE (.lang-toggle)
   -------------------------------------------------------------------------- */
.lang-toggle {
  width: 42px;
  height: 42px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  color: var(--color-on-dark);
  background-color: transparent;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: var(--radius-full);
  cursor: pointer;
  transition: background-color var(--transition), border-color var(--transition),
              transform var(--transition);
}

.lang-toggle:hover {
  background-color: rgba(255, 255, 255, 0.12);
  border-color: var(--color-primary);
}

.lang-toggle:active {
  transform: scale(0.92);
}

/* --------------------------------------------------------------------------
   6. LAYOUT PRINCIPAL (main)
   -------------------------------------------------------------------------- */
main {
  max-width: var(--container-width);
  margin: 0 auto;
  padding: 48px 24px 64px;
}

/* --------------------------------------------------------------------------
   7. HERO — bannière d'introduction
   -------------------------------------------------------------------------- */
.hero {
  text-align: center;
  padding: 28px 8px 44px;
}

.hero h1 {
  font-size: 2.4rem;
  line-height: 1.2;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--color-text);
}

.hero p {
  max-width: 620px;
  margin: 14px auto 0;
  font-size: 1.1rem;
  color: var(--color-text-muted);
}

/* --------------------------------------------------------------------------
   8. RECHERCHE (.search-box / .search-input)
   -------------------------------------------------------------------------- */
.search-box {
  max-width: 560px;
  margin: 0 auto 36px;
  position: relative;
}

/* Icône loupe intégrée à gauche du champ */
.search-box::before {
  content: "🔍";
  position: absolute;
  left: 18px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1rem;
  pointer-events: none;
  opacity: 0.7;
}

.search-input {
  width: 100%;
  padding: 14px 18px 14px 46px;
  font-family: var(--font-sans);
  font-size: 1rem;
  color: var(--color-text);
  background-color: var(--color-surface);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-full);
  box-shadow: var(--shadow-sm);
  transition: border-color var(--transition), box-shadow var(--transition);
}

.search-input::placeholder {
  color: var(--color-text-faint);
}

.search-input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 4px rgba(232, 89, 12, 0.18);
}

/* Message affiché quand la recherche ne trouve rien */
.search-empty {
  text-align: center;
  padding: 40px 20px;
  font-size: 1.05rem;
  color: var(--color-text-muted);
}

/* --------------------------------------------------------------------------
   9. FILTRES DE CAT�%GORIES (.category-chips / .category-chip)
   -------------------------------------------------------------------------- */
.category-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 0 0 36px;
}

.category-chip {
  display: inline-block;
  padding: 7px 16px;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-text-muted);
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--transition), color var(--transition),
              border-color var(--transition), box-shadow var(--transition);
}

.category-chip:hover {
  color: var(--color-primary);
  border-color: var(--color-primary);
}

.category-chip.active {
  color: #ffffff;
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  box-shadow: var(--shadow-sm);
}

/* --------------------------------------------------------------------------
   10. GRILLE D'ARTICLES (.grid) — 2 colonnes desktop, 1 colonne mobile
   -------------------------------------------------------------------------- */
.grid {
  display: grid;
  grid-template-columns: 1fr;            /* Mobile : 1 colonne */
  gap: 24px;
}

/* --------------------------------------------------------------------------
   11. CARTES D'ARTICLES (.article-card)
   -------------------------------------------------------------------------- */
.article-card {
  display: block;
  position: relative;
  padding: 26px 28px 22px;
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  text-decoration: none;
  color: inherit;
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition), box-shadow var(--transition),
              border-color var(--transition);
}

/* Dans la grille, la carte remplit toute sa cellule */
.grid .article-card {
  height: 100%;
}

.article-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
  border-color: var(--color-primary);
  color: inherit;
}

/* Pastille catégorie (badge) en haut de la carte */
.article-card .badge {
  display: inline-block;
  margin-bottom: 12px;
  padding: 3px 12px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-primary-dark);
  background-color: var(--color-primary-soft);
  border: 1px solid var(--color-primary-border);
  border-radius: var(--radius-full);
}

.article-card h2 {
  font-size: 1.28rem;
  line-height: 1.35;
  font-weight: 700;
  color: var(--color-text);
  transition: color var(--transition);
}

.article-card:hover h2 {
  color: var(--color-primary);
}

.article-card p {
  margin-top: 10px;
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--color-text-muted);
}

.article-card .meta {
  margin-top: 14px;
  font-size: 0.8rem;
  color: var(--color-text-faint);
}

/* Lien « voir tous les guides » présent sur l'accueil */
.archive-link {
  text-align: center;
}

.archive-link .article-card {
  margin: 0 auto;
  max-width: 460px;
  background-color: var(--color-surface-alt);
  border-style: dashed;
}

/* --------------------------------------------------------------------------
   12. FIL D'ARIANE (.breadcrumbs)
   -------------------------------------------------------------------------- */
.breadcrumbs {
  font-size: 0.85rem;
  color: var(--color-text-muted);
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--color-border);
}

.breadcrumbs a {
  color: var(--color-text-muted);
  text-decoration: none;
  transition: color var(--transition);
}

.breadcrumbs a:hover {
  color: var(--color-primary);
}

/* --------------------------------------------------------------------------
   13. SOMMAIRE / TABLE DES MATIÈRES (.toc)
   -------------------------------------------------------------------------- */
.toc {
  margin: 24px 0 32px;
  padding: 20px 24px;
  background-color: var(--color-surface-alt);
  border-left: 4px solid var(--color-primary);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  box-shadow: var(--shadow-sm);
}

.toc h3 {
  font-size: 0.85rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-muted);
  margin-bottom: 12px;
}

.toc a {
  display: block;
  padding: 4px 0;
  color: var(--color-text);
  text-decoration: none;
  font-size: 0.95rem;
  transition: color var(--transition), padding-left var(--transition);
}

.toc a:hover {
  color: var(--color-primary);
  padding-left: 6px;
}

/* --------------------------------------------------------------------------
   14. PAGES D'ARTICLES (article.post)
   Largeur réduite pour une lecture confortable
   -------------------------------------------------------------------------- */
article.post {
  max-width: var(--content-width);
  margin: 0 auto;
}

article.post h1 {
  font-size: 2.1rem;
  line-height: 1.25;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--color-text);
  margin-bottom: 10px;
}

article.post .post-meta {
  font-size: 0.9rem;
  color: var(--color-text-muted);
  padding-bottom: 20px;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 28px;
}

article.post h2 {
  font-size: 1.55rem;
  line-height: 1.3;
  font-weight: 700;
  color: var(--color-text);
  margin: 40px 0 16px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--color-primary-soft);
}

article.post h3 {
  font-size: 1.2rem;
  line-height: 1.35;
  font-weight: 700;
  color: var(--color-text);
  margin: 28px 0 12px;
}

article.post p {
  margin-bottom: 18px;
  color: var(--color-text);
}

article.post ul,
article.post ol {
  margin: 0 0 18px 24px;
  color: var(--color-text);
}

article.post li {
  margin-bottom: 8px;
  line-height: 1.65;
}

article.post li::marker {
  color: var(--color-primary);
}

/* Encadré « astuce » */
article.post .tip {
  background-color: var(--color-primary-soft);
  border-left: 4px solid var(--color-primary);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  padding: 16px 20px;
  margin: 24px 0;
  box-shadow: var(--shadow-sm);
}

article.post .tip strong {
  color: var(--color-primary-dark);
}

article.post .tip a {
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   15. ARTICLES CONNEXES (.related)
   -------------------------------------------------------------------------- */
.related {
  max-width: var(--content-width);
  margin: 48px auto 0;
  padding-top: 32px;
  border-top: 1px solid var(--color-border);
}

.related h3 {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-text);
  margin-bottom: 18px;
}

.related-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}

.related .related-card {
  display: block;
  padding: 14px 18px;
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  color: var(--color-text);
  text-decoration: none;
  font-size: 0.95rem;
  font-weight: 600;
  transition: border-color var(--transition), box-shadow var(--transition),
              transform var(--transition);
}

.related .related-card:hover {
  color: var(--color-primary);
  border-color: var(--color-primary);
  box-shadow: var(--shadow-sm);
  transform: translateX(4px);
}

/* --------------------------------------------------------------------------
   16. PAGES STATIQUES (.page / .legal)
   À propos, Contact, Mentions légales…
   -------------------------------------------------------------------------- */
.page {
  max-width: var(--content-width);
  margin: 0 auto;
}

.page h1 {
  font-size: 2rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--color-text);
  margin-bottom: 16px;
}

.page p {
  margin-bottom: 16px;
  color: var(--color-text);
}

.legal h2 {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--color-text);
  margin: 32px 0 12px;
  padding-bottom: 6px;
  border-bottom: 2px solid var(--color-primary-soft);
}

/* --------------------------------------------------------------------------
   17. FOOTER — sombre, texte centré, liens gris clair
   -------------------------------------------------------------------------- */
footer.site-footer {
  background-color: var(--color-dark);
  color: var(--color-on-dark-muted);
  text-align: center;
  padding: 26px 24px;
  font-size: 0.88rem;
  border-top: 3px solid var(--color-primary);
  transition: background-color var(--transition);
}

footer.site-footer a {
  color: #d6d2cd;
  text-decoration: none;
  font-weight: 600;
  transition: color var(--transition);
}

footer.site-footer a:hover {
  color: var(--color-primary);
}

/* --------------------------------------------------------------------------
   18. RESPONSIVE — breakpoint principal à 768px
   -------------------------------------------------------------------------- */
@media (min-width: 768px) {
  /* Grille : 2 colonnes sur desktop */
  .grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 28px;
  }

  /* Articles connexes : 2 colonnes sur desktop */
  .related-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }
}

@media (max-width: 767.98px) {
  /* Padding réduit sur mobile */
  main {
    padding: 32px 16px 48px;
  }

  .header-inner {
    padding: 0 16px;
  }

  /* Hero plus compact */
  .hero h1 {
    font-size: 1.9rem;
  }

  .hero p {
    font-size: 1rem;
  }

  /* Titres d'articles adaptés au mobile */
  article.post h1 {
    font-size: 1.7rem;
  }

  article.post h2 {
    font-size: 1.35rem;
  }

  /* Cartes : padding réduit */
  .article-card {
    padding: 20px 20px 18px;
  }

  /* Sommaire : marge intérieure réduite */
  .toc {
    padding: 16px 18px;
  }
}

/* Header mobile : navigation + bouton thème passent sous le logo */
@media (max-width: 560px) {
  .header-inner {
    flex-direction: column;
    align-items: stretch;
    padding-top: 10px;
    padding-bottom: 10px;
    text-align: center;
  }

  .header-inner .logo {
    text-align: center;
  }

  .header-inner nav {
    justify-content: center;
    gap: 8px;
  }

  /* Bouton thème positionné en absolu en haut à droite du header */
  .theme-toggle {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 38px;
    height: 38px;
  }

  header.site-header {
    position: relative;
  }
}

/* --------------------------------------------------------------------------
   19. PRÉFÉRENCE DE MOUVEMENT RÉDUIT (accessibilité)
   -------------------------------------------------------------------------- */
@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;
  }
}
