/* ================================================================
   Taaka — Styles principaux
   Plateforme Nationale de Recherche Scientifique du Bénin
   ================================================================ */

  :root {
    --noir: #1a6b45;
    --noir-doux: #0d4229;
    --couleur-entete: #1a6b45;
    --noir-clair: #e8f5ee;
    --jaune: #d4a800;
    --jaune-clair: #fef3c0;
    --jaune-sombre: #b89200;
    --rouge: #c0392b;
    --gris: #f4f4f0;
    --gris-bord: #e0ddd5;
    --texte: #1c1c18;
    --texte-muted: #6b6860;
    --blanc: #ffffff;
    --ombre: 0 2px 12px rgba(0,0,0,0.08);
    --radius: 10px;
    --font-titre: 'Bitter', Georgia, serif;
    --font-corps: 'Source Sans 3', 'Helvetica Neue', Arial, sans-serif;
    --font-mono: 'JetBrains Mono', monospace;
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }

  html { scroll-behavior: smooth; }
  :focus-visible { outline: 2px solid var(--jaune); outline-offset: 3px; border-radius: 3px; }
  .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

  body {
    font-family: var(--font-corps);
    background: #fafaf7;
    color: var(--texte);
    font-size: 16px;
    line-height: 1.6;
  }

  /* ===== NAVIGATION ===== */
  nav {
    background: var(--noir);
    border-bottom: 3px solid var(--jaune);
    position: sticky;
    top: 0;
    z-index: 100;
    padding: 0 2rem;
    display: flex;
    align-items: center;
    height: 66px;
    gap: 1.5rem;
    box-shadow: 0 2px 12px rgba(0,0,0,0.25);
    justify-content: space-between;
  }

  .nav-logo {
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    flex-shrink: 0;
    cursor: pointer;
  }

  /* Logo SVG livre ouvert style Taaka */
  .nav-logo-icone {
    width: 44px; height: 44px;
    background: var(--jaune);
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
  }

  .nav-logo-icone svg { width: 26px; height: 26px; }

  .nav-logo-texte {
    display: flex;
    flex-direction: column;
    line-height: 1;
    gap: 2px;
  }

  .nav-logo-nom {
    font-family: var(--font-titre);
    font-size: 1.6rem;
    color: var(--blanc);
    font-weight: 700;
    letter-spacing: 0.02em;
  }

  .nav-logo-nom span { color: var(--jaune); }

  .nav-logo-tagline {
    font-size: 0.58rem;
    font-weight: 400;
    font-style: italic;
    letter-spacing: 0.1em;
    color: rgba(255,255,255,0.72);
  }



  /* Menu hamburger mobile */
  .nav-hamburger {
    display: none;
    flex-direction: column;
    gap: 5px;
    cursor: pointer;
    padding: 6px;
    margin-left: auto;
    background: transparent;
    border: none;
  }

  .nav-hamburger span {
    display: block;
    width: 22px; height: 2px;
    background: white;
    border-radius: 2px;
    transition: all 0.3s;
  }

  .nav-liens {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
  }

  .nav-lien {
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    text-decoration: none;
    color: rgba(255,255,255,0.75);
    font-size: 0.875rem;
    font-weight: 600;
    font-family: var(--font-corps);
    padding: 4px 0;
    transition: all 0.2s;
    cursor: pointer;
    white-space: nowrap;
  }

  .nav-lien:hover, .nav-lien.actif { color: var(--jaune); border-bottom-color: var(--jaune); }

  /* Drawer mobile */
  .nav-drawer {
    display: none;
    position: fixed;
    top: 66px; left: 0; right: 0;
    bottom: 0;
    background: var(--noir);
    border-bottom: 3px solid var(--jaune);
    padding: 1rem 1.5rem 2rem;
    z-index: 99;
    flex-direction: column;
    gap: 0;
    box-shadow: 0 8px 24px rgba(0,0,0,0.3);
    overflow-y: auto;
  }

  .nav-drawer.ouvert { display: flex; }

  .nav-drawer .nav-lien {
    padding: 12px 0;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    font-size: 1rem;
  }

  .nav-drawer .nav-lien:last-child { border-bottom: none; }

  .nav-drawer-search {
    display: flex;
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 8px;
    overflow: hidden;
    margin-bottom: 0.5rem;
  }

  .nav-drawer-search input {
    flex: 1; border: none; background: transparent;
    padding: 10px 14px; color: white; font-size: 0.9rem;
    font-family: var(--font-corps); outline: none;
  }

  .nav-drawer-search input::placeholder { color: rgba(255,255,255,0.4); }

  .nav-drawer-search button {
    background: var(--jaune); border: none; padding: 0 16px;
    color: var(--noir); font-weight: 700; cursor: pointer;
    font-family: var(--font-corps); font-size: 0.85rem;
  }

  /* ===== BOUTONS ===== */
  .btn {
    padding: 8px 18px;
    border-radius: 8px;
    font-family: var(--font-corps);
    font-size: 0.875rem;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s;
    border: none;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }

  .btn-primaire { background: var(--jaune); color: var(--noir); }
  .btn-primaire:hover { background: var(--jaune-sombre); transform: translateY(-1px); }
  .btn-secondaire { background: transparent; color: var(--noir); border: 1.5px solid var(--gris-bord); }
  .btn-secondaire:hover { background: var(--gris); }
  .btn-noir { background: var(--noir); color: white; }
  .btn-noir:hover { background: var(--noir-doux); transform: translateY(-1px); }

  /* ===== PAGES (SPA) ===== */
  .page { display: none; }

  /* ===== HERO ===== */
  .hero {
    background:
      radial-gradient(ellipse 65% 90% at 10% 55%, rgba(26,107,69,0.055) 0%, transparent 65%),
      radial-gradient(ellipse 55% 75% at 88% 35%, rgba(245,200,0,0.065) 0%, transparent 60%),
      radial-gradient(ellipse 40% 60% at 50% 100%, rgba(26,107,69,0.03) 0%, transparent 60%),
      #ffffff;
    color: #1a1a1a;
    padding: 5rem 2rem 4rem;
    text-align: center;
    position: relative;
    overflow: hidden;
  }

  .hero::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    background: linear-gradient(90deg, #1a6b45, #d4a800, #1a6b45);
  }
  .hero::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 1px;
    background: #e8e8e4;
  }

  .hero-contenu { position: relative; max-width: 780px; margin: 0 auto; }

  .hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #e8f5ee;
    border: 1px solid #1a6b4533;
    color: #1a6b45;
    padding: 4px 14px;
    border-radius: 20px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: 1.5rem;
  }

  .hero-nom {
    font-family: var(--font-titre);
    font-size: clamp(4rem, 12vw, 7rem);
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #1a6b45;
    display: block;
    line-height: 1;
    margin-bottom: 0.5rem;
  }

  .hero-nom span { color: var(--jaune); }


  /* ===== BADGE REPUBLIQUE ===== */
  .hero-republique {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    border: 1px solid var(--gris-bord);
    border-radius: 8px;
    padding: 5px 12px;
    margin-bottom: 1.75rem;
    background: #fafaf7;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
  }
  .hero-republique-ligne1 {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.65rem;
    font-weight: 700;
    color: var(--texte);
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }
  .hero-republique-ligne2 {
    font-size: 0.62rem;
    font-weight: 400;
    font-style: italic;
    color: var(--texte-muted);
    letter-spacing: 0.04em;
  }

  .hero-sous-titre {
    font-size: 0.78rem;
    font-weight: 400;
    font-style: italic;
    letter-spacing: 0.15em;
    color: #4a4840;
    display: block;
    margin-bottom: 1.5rem;
  }

  .hero h1 {
    font-family: var(--font-titre);
    font-size: clamp(1.3rem, 3vw, 1.8rem);
    line-height: 1.3;
    margin-bottom: 1rem;
    font-weight: 400;
    font-style: italic;
    color: #3a3830;
  }

  .hero h1 em { color: var(--jaune); font-style: normal; font-weight: 700; }

  .hero p {
    font-size: 1rem;
    opacity: 0.7;
    max-width: 560px;
    margin: 0 auto 2.5rem;
    line-height: 1.7;
  }

  .hero-recherche {
    display: flex;
    max-width: 620px;
    margin: 0 auto 2rem;
    background: white;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,0.12);
  }

  .hero-recherche input {
    flex: 1;
    border: none;
    padding: 15px 18px;
    font-size: 0.95rem;
    font-family: var(--font-corps);
    color: #1a1a1a;
    outline: none;
    min-width: 0;
  }

  .hero-recherche button {
    background: var(--jaune);
    border: none;
    padding: 0 24px;
    color: var(--noir);
    font-weight: 700;
    font-size: 0.9rem;
    cursor: pointer;
    transition: background 0.2s;
    font-family: var(--font-corps);
    white-space: nowrap;
  }

  .hero-recherche button:hover { background: var(--jaune-sombre); }

  .hero-stats {
    display: flex;
    justify-content: center;
    gap: 3rem;
    margin-top: 3rem;
    padding-top: 2rem;
    border-top: 1px solid #e4e2da;
    flex-wrap: wrap;
  }

  @keyframes statEntree {
    from { opacity: 0; transform: translateY(18px); }
    to   { opacity: 1; transform: translateY(0); }
  }

  .hero-stat {
    animation: statEntree 0.5s ease-out backwards;
  }
  .hero-stat:nth-child(1) { animation-delay: 0.1s; }
  .hero-stat:nth-child(2) { animation-delay: 0.22s; }
  .hero-stat:nth-child(3) { animation-delay: 0.34s; }
  .hero-stat:nth-child(4) { animation-delay: 0.46s; }
  @media (prefers-reduced-motion: reduce) {
    .hero-stat { animation: none; }
  }

  .hero-stat .chiffre {
    font-family: var(--font-titre);
    font-size: 2rem;
    font-weight: 700;
    color: #1a6b45;
    display: block;
    transition: color 0.2s;
  }

  .hero-stat .label { font-size: 0.82rem; color: #8a8880; font-style: italic; }

  /* ===== DISCIPLINES ===== */
  .disciplines-section { padding: 4rem 2rem; background: #e8f5ee; }
  .disciplines-section > *:not(.grille-disciplines) { max-width: 1200px; margin-left: auto; margin-right: auto; }
  .disciplines-section .grille-disciplines { max-width: 960px; margin-left: auto; margin-right: auto; }

  .section-titre {
    font-family: var(--font-titre);
    font-size: 1.6rem;
    font-weight: 700;
    color: #1a6b45;
    margin-bottom: 0.5rem;
  }

  .section-sous-titre { color: #6b6860; margin-bottom: 1.5rem; font-size: 0.95rem; font-style: italic; }

  .grille-disciplines {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    max-width: 960px;
    margin: 0 auto;
  }

  .carte-discipline {
    background: #ffffff;
    border: 1.5px solid #c5ddd0;
    border-radius: 12px;
    padding: 1.5rem 1rem;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s ease;
    box-shadow: 0 1px 4px rgba(0,0,0,0.05);
  }

  .carte-discipline:hover {
    background: #e8f5ee;
    border-color: #1a6b45;
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(0,0,0,0.1);
  }

  .carte-discipline .icone { font-size: 2rem; margin-bottom: 10px; display: block; }
  .carte-discipline .nom { font-size: 0.82rem; font-weight: 700; color: #1a1a1a; display: block; }
  .carte-discipline .sous-nom { font-size: 0.71rem; color: var(--texte-muted); display: block; margin-top: 2px; line-height: 1.3; }
  .carte-discipline .nb { font-size: 0.72rem; color: #8a8880; display: block; margin-top: 5px; font-style: italic; }

  /* ===== PUBLICATIONS ===== */
  .publications-section { padding: 3rem 2rem 4rem; background: #ffffff; }
  .publications-section > * { max-width: 1200px; margin-left: auto; margin-right: auto; }

  .pubs-header { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 1.5rem; flex-wrap: wrap; gap: 1rem; color: #1a1a1a; }

  .grille-pubs {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 14px;
  }

  .carte-pub {
    background: var(--blanc);
    border: 1px solid var(--gris-bord);
    border-radius: var(--radius);
    padding: 1.5rem;
    cursor: pointer;
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    gap: 10px;
    border-top: 3px solid transparent;
  }

  .carte-pub:hover {
    box-shadow: 0 6px 24px rgba(0,0,0,0.1);
    border-top-color: var(--jaune);
    transform: translateY(-2px);
  }

  .pub-type {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 3px 10px;
    border-radius: 20px;
    width: fit-content;
  }

  .type-article { background: #e8f0fe; color: #1a56db; }
  .type-these { background: #fce8e6; color: #c0392b; }
  .type-memoire { background: #fafae0; color: #7a6e00; }
  .type-rapport { background: #f0f0f0; color: #444; }

  .pub-titre { font-family: var(--font-titre); font-size: 1.02rem; font-weight: 700; color: var(--texte); line-height: 1.4; }
  .pub-auteur { font-size: 0.85rem; color: var(--noir); font-weight: 700; }

  .pub-meta { display: flex; gap: 12px; font-size: 0.78rem; color: var(--texte-muted); flex-wrap: wrap; }
  .pub-meta span { display: flex; align-items: center; gap: 4px; }

  .pub-resume { font-size: 0.875rem; color: var(--texte-muted); line-height: 1.6; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }

  .pub-mots-cles { display: flex; gap: 6px; flex-wrap: wrap; }

  .mot-cle {
    background: var(--gris);
    border: 1px solid var(--gris-bord);
    padding: 2px 9px;
    border-radius: 20px;
    font-size: 0.73rem;
    color: var(--texte-muted);
  }

  .pub-stats {
    display: flex;
    gap: 14px;
    font-size: 0.78rem;
    color: var(--texte-muted);
    padding-top: 8px;
    border-top: 1px solid var(--gris-bord);
    margin-top: auto;
  }

  /* ===== PAGE RECHERCHE ===== */
  .recherche-page { display: grid; grid-template-columns: 270px 1fr; gap: 2rem; max-width: 1200px; margin: 0 auto; padding: 2rem; }

  .filtres-sidebar {
    background: var(--blanc);
    border: 1px solid var(--gris-bord);
    border-radius: var(--radius);
    padding: 1.5rem;
    height: fit-content;
    position: sticky;
    top: 82px;
  }

  .filtres-sidebar h3 { font-family: var(--font-titre); font-size: 0.95rem; color: var(--texte); margin-bottom: 1rem; padding-bottom: 8px; border-bottom: 2px solid var(--jaune); font-weight: 700; }

  .filtre-groupe { margin-bottom: 1.2rem; }
  .filtre-groupe label { display: block; font-size: 0.78rem; font-weight: 700; color: var(--texte-muted); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 6px; }

  .filtre-groupe select, .filtre-groupe input[type=text] {
    width: 100%; padding: 8px 12px;
    border: 1px solid var(--gris-bord); border-radius: 8px;
    font-family: var(--font-corps); font-size: 0.875rem; color: var(--texte);
    background: var(--blanc); outline: none; transition: border-color 0.2s;
  }

  .filtre-groupe select:focus, .filtre-groupe input[type=text]:focus { border-color: var(--noir); }

  .checkbox-groupe { display: flex; flex-direction: column; gap: 6px; }

  .checkbox-groupe label {
    display: flex; align-items: center; gap: 8px;
    font-size: 0.85rem; color: var(--texte); cursor: pointer;
    font-weight: 400; text-transform: none; letter-spacing: normal;
  }

  .checkbox-groupe input[type=checkbox] { accent-color: var(--noir); width: 14px; height: 14px; }

  /* Filtres toggle mobile */
  .filtres-toggle {
    display: none;
    width: 100%;
    padding: 10px 16px;
    background: var(--noir);
    color: white;
    border: none;
    border-radius: 8px;
    font-family: var(--font-corps);
    font-weight: 700;
    font-size: 0.875rem;
    cursor: pointer;
    margin-bottom: 1rem;
    align-items: center;
    gap: 8px;
    justify-content: center;
  }

  .resultats-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 12px; border-bottom: 1px solid var(--gris-bord); flex-wrap: wrap; gap: 8px; }

  .resultats-nb { font-weight: 600; color: var(--texte); font-size: 0.95rem; }
  .resultats-nb span { color: var(--noir); font-family: var(--font-titre); }

  .tri-select { padding: 6px 10px; border: 1px solid var(--gris-bord); border-radius: 6px; font-size: 0.85rem; font-family: var(--font-corps); }

  .liste-resultats { display: flex; flex-direction: column; gap: 16px; }

  .resultat-item {
    background: var(--blanc); border: 1px solid var(--gris-bord);
    border-radius: var(--radius); padding: 1.5rem; cursor: pointer;
    transition: all 0.2s; border-left: 3px solid transparent;
  }

  .resultat-item:hover { border-left-color: var(--jaune); box-shadow: var(--ombre); }

  /* ===== PAGE PUBLICATION ===== */
  .pub-detail { max-width: 900px; margin: 0 auto; padding: 2rem; }

  .pub-detail-header { background: var(--blanc); border: 1px solid var(--gris-bord); border-top: 4px solid var(--jaune); border-radius: var(--radius); padding: 2rem; margin-bottom: 1.5rem; }

  .pub-detail h1 { font-family: var(--font-titre); font-size: 1.7rem; font-weight: 700; color: var(--noir); line-height: 1.3; margin-bottom: 1rem; }

  .pub-detail-meta { display: flex; gap: 1rem; flex-wrap: wrap; margin: 1rem 0; }

  .meta-chip { background: var(--gris); border: 1px solid var(--gris-bord); padding: 4px 12px; border-radius: 6px; font-size: 0.8rem; color: var(--texte-muted); display: flex; align-items: center; gap: 5px; }

  .pub-detail-actions { display: flex; gap: 12px; margin-top: 1.5rem; flex-wrap: wrap; }

  .pdf-viewer {
    background: var(--blanc); border: 1px solid var(--gris-bord); border-radius: var(--radius);
    padding: 2rem; margin-bottom: 1.5rem; text-align: center; min-height: 360px;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;
    color: var(--texte-muted);
    background: repeating-linear-gradient(45deg, var(--gris), var(--gris) 10px, var(--blanc) 10px, var(--blanc) 20px);
  }

  .citation-box { background: var(--jaune-clair); border: 1px solid var(--jaune); border-left: 4px solid var(--jaune); border-radius: var(--radius); padding: 1.5rem; margin-bottom: 1.5rem; }

  .citation-box h4 { font-family: var(--font-titre); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--noir); font-weight: 700; margin-bottom: 8px; }

  .citation-texte { font-family: var(--font-mono); font-size: 0.82rem; color: var(--texte); line-height: 1.7; white-space: pre-wrap; word-break: break-word; }

  /* ===== PROFIL ===== */
  .profil-page { max-width: 1000px; margin: 0 auto; padding: 2rem; }

  .profil-header {
    background: var(--noir);
    border-bottom: 4px solid var(--jaune);
    border-radius: var(--radius);
    padding: 2.5rem;
    color: white;
    display: flex;
    gap: 2rem;
    align-items: flex-start;
    margin-bottom: 2rem;
    flex-wrap: wrap;
  }

  .profil-avatar {
    width: 90px; height: 90px;
    background: var(--jaune);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-titre); font-size: 2rem; font-weight: 700;
    flex-shrink: 0; color: var(--noir);
  }

  .profil-info h2 { font-family: var(--font-titre); font-size: 1.6rem; font-weight: 700; margin-bottom: 6px; }
  .profil-institution { opacity: 0.7; font-size: 0.9rem; font-style: italic; margin-bottom: 1rem; }
  .profil-stats { display: flex; gap: 2rem; flex-wrap: wrap; }
  .profil-stat .val { font-family: var(--font-titre); font-size: 1.6rem; font-weight: 700; color: var(--jaune); }
  .profil-stat .lab { font-size: 0.78rem; opacity: 0.7; }

  /* ===== DÉPÔT ===== */
  .depot-page { max-width: 780px; margin: 0 auto; padding: 2rem; width: 100%; box-sizing: border-box; }

  .depot-page h1 { font-family: var(--font-titre); font-size: 1.8rem; color: var(--noir); margin-bottom: 0.5rem; }

  .formulaire { background: var(--blanc); border: 1px solid var(--gris-bord); border-radius: var(--radius); padding: 2rem; margin-top: 1.5rem; display: flex; flex-direction: column; gap: 1.2rem; }

  .champ { display: flex; flex-direction: column; gap: 6px; }
  .champ label { font-size: 0.85rem; font-weight: 700; color: var(--texte); }
  .champ label span { color: var(--rouge); margin-left: 2px; }

  .champ input[type=text], .champ input[type=date], .champ input[type=email], .champ input[type=number], .champ select, .champ textarea {
    padding: 10px 14px; border: 1.5px solid var(--gris-bord); border-radius: 8px;
    font-family: var(--font-corps); font-size: 0.9rem; color: var(--texte);
    outline: none; transition: border-color 0.2s; background: var(--blanc);
  }

  .champ input:focus, .champ select:focus, .champ textarea:focus { border-color: var(--noir); }
  .champ textarea { resize: vertical; min-height: 120px; }

  /* ===== SÉLECTEUR TYPE D'ACCÈS (dépôt) ===== */
  .cartes-acces { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1.5rem; }
  .carte-acces {
    border: 2px solid var(--gris-bord); border-radius: 12px; padding: 1.25rem;
    cursor: pointer; transition: border-color 0.2s, background 0.2s, box-shadow 0.2s; user-select: none;
  }
  .carte-acces:hover { border-color: var(--vert); background: rgba(26,107,69,0.04); }
  .carte-acces.active {
    border-color: var(--vert); background: rgba(26,107,69,0.07);
    box-shadow: 0 0 0 3px rgba(26,107,69,0.12);
  }
  .carte-acces-icone { font-size: 1.75rem; margin-bottom: 0.5rem; }
  .carte-acces-titre { font-weight: 700; font-size: 1rem; margin-bottom: 0.35rem; color: var(--noir); }
  .carte-acces.active .carte-acces-titre { color: var(--vert); }
  .carte-acces-desc { font-size: 0.83rem; color: var(--texte-muted); line-height: 1.5; margin-bottom: 0.6rem; }
  .carte-acces-liste { list-style: none; padding: 0; margin: 0; font-size: 0.82rem; color: var(--texte-muted); }
  .carte-acces-liste li { margin-bottom: 3px; }

  /* Badge accès restreint sur la fiche publication */
  .badge-restreint {
    display: inline-flex; align-items: center; gap: 5px;
    background: #fff3cd; border: 1px solid #e6a817; color: #7a4f00;
    border-radius: 20px; padding: 4px 12px; font-size: 0.8rem; font-weight: 600; margin-bottom: 10px;
  }

  .zone-upload {
    border: 2px dashed var(--gris-bord); border-radius: var(--radius);
    padding: 2.5rem; text-align: center; cursor: pointer;
    transition: all 0.2s; background: var(--gris);
  }

  .zone-upload:hover { border-color: var(--noir); background: var(--jaune-clair); }
  .zone-upload .icone-upload { font-size: 2.5rem; margin-bottom: 10px; display: block; }
  .zone-upload p { font-size: 0.9rem; color: var(--texte-muted); }
  .zone-upload strong { color: var(--noir); }

  .champs-deux-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

  .etapes-depot {
    display: flex; justify-content: center; gap: 0; margin-bottom: 2rem;
    background: var(--blanc); border: 1px solid var(--gris-bord); border-radius: var(--radius);
    overflow: hidden; padding: 1.25rem 1rem; flex-wrap: wrap;
  }

  .etape { display: flex; align-items: center; gap: 8px; flex: 1; padding: 0.4rem 0; opacity: 0.4; font-size: 0.8rem; font-weight: 600; position: relative; justify-content: center; min-width: 110px; }
  .etape.active { opacity: 1; color: var(--noir); }
  .etape.done { opacity: 0.7; color: var(--noir); }
  .etape-nb { width: 24px; height: 24px; border-radius: 50%; background: var(--gris-bord); display: flex; align-items: center; justify-content: center; font-size: 0.75rem; font-weight: 700; color: var(--texte-muted); flex-shrink: 0; }
  .etape.active .etape-nb { background: var(--jaune); color: var(--noir); }
  .etape.done .etape-nb { background: var(--noir); color: white; }
  .etape:not(:last-child)::after { content: '→'; position: absolute; right: -6px; color: var(--gris-bord); font-size: 0.9rem; }

  /* ===== AUTH ===== */
  .auth-tabs { display: flex; background: var(--gris); border-radius: 8px; padding: 4px; margin-bottom: 1.5rem; gap: 4px; }

  .auth-tab { flex: 1; padding: 8px; text-align: center; font-size: 0.85rem; font-weight: 600; border-radius: 6px; cursor: pointer; transition: all 0.2s; color: var(--texte-muted); border: none; background: transparent; font-family: var(--font-corps); }

  .auth-tab.actif { background: var(--noir); color: white; }

  /* ===== DASHBOARD ===== */
  .dashboard { max-width: 1200px; margin: 0 auto; padding: 2rem; }

  .stats-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 2rem; }

  .stat-card { background: var(--blanc); border: 1px solid var(--gris-bord); border-top: 3px solid var(--jaune); border-radius: var(--radius); padding: 1.5rem; display: flex; flex-direction: column; gap: 8px; }

  .stat-card .etiquette { font-size: 0.78rem; color: var(--texte-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }
  .stat-card .valeur { font-family: var(--font-titre); font-size: 2.1rem; font-weight: 700; color: var(--noir); }
  .stat-card .tendance { font-size: 0.8rem; color: #137333; font-weight: 600; }

  .admin-tabs { display: flex; gap: 4px; border-bottom: 2px solid var(--gris-bord); margin-bottom: 1.5rem; flex-wrap: wrap; }

  .admin-tab { padding: 10px 18px; font-size: 0.85rem; font-weight: 600; cursor: pointer; color: var(--texte-muted); background: none; border: none; border-bottom: 3px solid transparent; margin-bottom: -2px; font-family: var(--font-corps); transition: all 0.2s; white-space: nowrap; }

  .admin-tab:hover { color: var(--texte); }
  .admin-tab.actif { color: var(--noir); border-bottom-color: var(--jaune); }

  .table-admin { width: 100%; border-collapse: collapse; font-size: 0.875rem; }

  .table-admin th { text-align: left; padding: 10px 14px; background: var(--gris); font-size: 0.76rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--texte-muted); border-bottom: 2px solid var(--gris-bord); }

  .table-admin td { padding: 12px 14px; border-bottom: 1px solid var(--gris-bord); color: var(--texte); vertical-align: middle; }

  .table-admin tr:hover td { background: var(--gris); }

  .badge { padding: 3px 10px; border-radius: 20px; font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }

  .badge-attente { background: #fff3e0; color: #c45e00; }
  .badge-valide { background: #e6f4ea; color: #137333; }
  .badge-rejete { background: #fce8e6; color: #c0392b; }
  .badge-moderateur { background: #e8f0fe; color: #1a56db; }
  .badge-validateur-scientifique { background: #f3e8ff; color: #7c3aed; }

  /* ===== À PROPOS ===== */
  .apropos { max-width: 900px; margin: 0 auto; padding: 3rem 2rem; }
  .apropos h1 { font-family: var(--font-titre); font-size: 2rem; font-weight: 700; color: var(--noir); margin-bottom: 1rem; }
  .apropos-section { margin-bottom: 2.5rem; }
  .apropos-section h2 { font-family: var(--font-titre); font-size: 1.25rem; color: var(--noir); margin-bottom: 0.75rem; padding-bottom: 6px; border-bottom: 3px solid var(--jaune); display: inline-block; }
  .apropos-section p { color: var(--texte-muted); line-height: 1.8; margin-bottom: 0.75rem; }

  .partenaires-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(175px, 1fr)); gap: 12px; margin-top: 1rem; }

  .partenaire-card { background: var(--blanc); border: 1px solid var(--gris-bord); border-radius: var(--radius); padding: 1.25rem; text-align: center; font-size: 0.85rem; font-weight: 600; color: var(--texte-muted); transition: all 0.2s; }

  .partenaire-card:hover { border-color: var(--noir); color: var(--noir); border-bottom: 3px solid var(--jaune); }

  /* ===== CLASSEMENT ===== */
  .classement { max-width: 900px; margin: 0 auto; padding: 2rem; }

  .top-auteur { display: flex; align-items: center; gap: 1rem; background: var(--blanc); border: 1px solid var(--gris-bord); border-radius: var(--radius); padding: 1rem 1.5rem; margin-bottom: 10px; transition: all 0.2s; cursor: pointer; }

  .top-auteur:hover { border-color: var(--noir); box-shadow: var(--ombre); border-left: 3px solid var(--jaune); }

  .rang { font-family: var(--font-titre); font-size: 1.5rem; font-weight: 700; color: var(--gris-bord); width: 36px; text-align: center; flex-shrink: 0; }

  .rang-1 { color: var(--jaune); }
  .rang-2 { color: #9e9e9e; }
  .rang-3 { color: #cd7f32; }

  .auteur-avatar { width: 46px; height: 46px; border-radius: 50%; background: var(--noir-clair); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 1rem; color: var(--noir); flex-shrink: 0; }

  .auteur-info { flex: 1; min-width: 0; }
  .auteur-nom { font-weight: 700; color: var(--texte); }
  .auteur-inst { font-size: 0.82rem; color: var(--texte-muted); }
  .auteur-chiffres { text-align: right; flex-shrink: 0; }
  .auteur-chiffres .pubs { font-family: var(--font-titre); font-size: 1.4rem; color: var(--noir); font-weight: 700; }
  .auteur-chiffres .lab { font-size: 0.75rem; color: var(--texte-muted); }

  /* ===== PAGES AIDE ===== */
  .aide-page { max-width: 860px; margin: 0 auto; padding: 3rem 2rem; }
  .aide-page h1 { font-family: var(--font-titre); font-size: 2rem; color: var(--noir); margin-bottom: 0.5rem; border-bottom: 4px solid var(--jaune); display: inline-block; padding-bottom: 4px; }
  .aide-section { margin: 2rem 0; }
  .aide-section h2 { font-family: var(--font-titre); font-size: 1.2rem; color: var(--noir); margin-bottom: 0.75rem; }
  .aide-section p, .aide-section li { color: var(--texte-muted); line-height: 1.8; margin-bottom: 0.6rem; }
  .aide-section ul, .aide-section ol { padding-left: 1.5rem; }
  .aide-etape { display: flex; gap: 1rem; align-items: flex-start; background: var(--blanc); border: 1px solid var(--gris-bord); border-left: 4px solid var(--jaune); border-radius: 8px; padding: 1rem 1.25rem; margin-bottom: 10px; }
  .aide-etape-nb { width: 28px; height: 28px; border-radius: 50%; background: var(--jaune); color: var(--noir); font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 0.85rem; margin-top: 1px; }
  .aide-etape-texte strong { display: block; color: var(--noir); margin-bottom: 2px; font-size: 0.9rem; }
  .aide-etape-texte span { font-size: 0.85rem; color: var(--texte-muted); }

  /* ===== FOOTER ===== */
  footer { background: #0d4229; color: rgba(255,255,255,0.9); padding: 3rem 2rem 1.5rem; margin-top: 0; }

  .footer-grille { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 2rem; max-width: 1200px; margin: 0 auto 2rem; }

  .footer-logo { font-family: var(--font-titre); font-size: 1.6rem; font-weight: 700; color: #d4a800; margin-bottom: 0.75rem; }
  .footer-logo span { color: var(--jaune); }
  .footer-desc { font-size: 0.85rem; line-height: 1.7; color: rgba(255,255,255,0.85); }

  .footer-col h4 { font-size: 0.78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--jaune); margin-bottom: 12px; }
  .footer-col ul { list-style: none; display: flex; flex-direction: column; gap: 6px; }
  .footer-col ul li a { color: rgba(255,255,255,0.9); text-decoration: none; font-size: 0.875rem; transition: color 0.2s; cursor: pointer; }
  .footer-col ul li a:hover { color: white; }

  .footer-discipline-link {
    background: none; border: none;
    font-family: var(--font-corps);
    color: rgba(255,255,255,0.9);
    font-size: 0.875rem;
    cursor: pointer;
    padding: 3px 0;
    text-align: left;
    display: block;
    width: 100%;
    transition: color 0.2s;
  }
  .footer-discipline-link:hover { color: white; }

  .footer-bas { border-top: 1px solid rgba(255,255,255,0.15); padding-top: 1.5rem; margin-top: 2rem; font-size: 0.8rem; color: rgba(255,255,255,0.75); }

  /* ===== BANDEAU COOKIES ===== */
  #bandeauCookies {
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 2000;
    background: #fff; border-top: 3px solid var(--jaune);
    box-shadow: 0 -4px 24px rgba(0,0,0,0.12);
    display: flex; align-items: center; gap: 1.25rem;
    padding: 1.1rem 2rem; flex-wrap: wrap;
    animation: cookieEntree 0.4s cubic-bezier(0.22,1,0.36,1) both;
  }
  @keyframes cookieEntree {
    from { transform: translateY(100%); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
  }
  .cookie-icone { font-size: 2rem; color: var(--jaune-sombre); flex-shrink: 0; }
  .cookie-texte { flex: 1; min-width: 200px; }
  .cookie-titre { font-weight: 700; font-size: 0.95rem; color: var(--noir); margin-bottom: 3px; }
  .cookie-desc  { font-size: 0.82rem; color: var(--texte-muted); line-height: 1.5; margin: 0; }
  .cookie-actions { display: flex; gap: 0.6rem; flex-shrink: 0; flex-wrap: wrap; }
  .cookie-btn-refus  { font-size: 0.85rem; padding: 8px 18px; }
  .cookie-btn-accept { font-size: 0.85rem; padding: 8px 18px; }

  @media (max-width: 600px) {
    #bandeauCookies { padding: 1rem; gap: 0.75rem; }
    .cookie-actions { width: 100%; justify-content: flex-end; }
  }

  /* ===== TOAST ===== */
  .toast-container { position: fixed; bottom: 2rem; right: 2rem; z-index: 1000; display: flex; flex-direction: column; gap: 10px; }

  .toast { background: var(--noir); color: white; padding: 12px 20px; border-radius: 10px; font-size: 0.875rem; box-shadow: 0 8px 24px rgba(0,0,0,0.25); animation: slideIn 0.3s ease; display: flex; align-items: center; gap: 8px; max-width: 340px; border-left: 3px solid var(--jaune); }

  .toast.succes { background: #1a3d1a; border-left-color: #4caf50; }
  .toast.erreur { background: #3d1a1a; border-left-color: var(--rouge); }

  @keyframes slideIn { from { opacity: 0; transform: translateX(40px); } to { opacity: 1; transform: translateX(0); } }
  @keyframes spin { to { transform: rotate(360deg); } }

  /* ===== MODAL ===== */
  .modal-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 200; align-items: center; justify-content: center; padding: 1rem; }
  .modal-overlay.ouvert { display: flex; }

  .modal { background: var(--blanc); border-radius: 14px; padding: 2rem; max-width: 520px; width: 100%; max-height: 90vh; overflow-y: auto; box-shadow: 0 24px 64px rgba(0,0,0,0.3); border-top: 4px solid var(--jaune); }

  .modal-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 1.5rem; }
  .modal h3 { font-family: var(--font-titre); font-size: 1.3rem; color: var(--noir); }

  .btn-fermer { background: var(--gris); border: none; width: 32px; height: 32px; border-radius: 50%; cursor: pointer; font-size: 1.1rem; display: flex; align-items: center; justify-content: center; transition: background 0.2s; }
  .btn-fermer:hover { background: var(--gris-bord); }

  /* ===== UTILITAIRES ===== */
  .breadcrumb { display: flex; gap: 8px; align-items: center; font-size: 0.82rem; color: var(--texte-muted); padding: 0.75rem 2rem; max-width: 1200px; margin: 0 auto; border-bottom: 1px solid var(--gris-bord); }
  .breadcrumb a { color: var(--noir); text-decoration: none; cursor: pointer; font-weight: 600; }
  .breadcrumb a:hover { text-decoration: underline; }
  .breadcrumb span { opacity: 0.4; }

  .page-header-bar { background: linear-gradient(135deg, #0b3d27 0%, #1a6b45 55%, #1f8054 100%); border-bottom: 3px solid var(--jaune); padding: 1.5rem 2rem 1.25rem; }
  .page-header-bar h1 { font-family: var(--font-titre); font-size: 1.5rem; font-weight: 700; color: white; }
  .page-header-bar p { color: rgba(255,255,255,0.55); font-size: 0.88rem; margin-top: 4px; }

  /* ===== RESPONSIVE MOBILE ===== */
  @media (max-width: 768px) {
    /* Nav : masquer liens desktop et boutons auth → tout passe par le drawer */
    .nav-liens { display: none; }
    .nav-hamburger { display: flex; }
    nav { padding: 0 1rem; gap: 0.75rem; }
    .nav-logo-tagline { display: none; }
    .nav-logo-nom { font-size: 1.35rem; }
    /* CRITIQUE : cacher les boutons auth desktop sur mobile (drawer les remplace) */
    #navAuth, #navUser { display: none !important; }

    /* Page header */
    .page-header-bar { padding: 1.1rem 1rem 1rem; }
    .page-header-bar h1 { font-size: 1.25rem; }

    /* Modal */
    .modal { padding: 1.25rem; border-radius: 10px; }
    .modal-overlay { padding: 0.5rem; align-items: flex-end; }
    .modal { max-height: 95vh; border-radius: 14px 14px 0 0; }

    /* Breadcrumb */
    .breadcrumb { padding: 0.6rem 1rem; }

    /* Recherche et filtres */
    .recherche-page { grid-template-columns: 1fr; }
    .filtres-sidebar { position: static; }
    .filtres-toggle { display: flex; }
    .filtres-sidebar-contenu { display: none; }
    .filtres-sidebar-contenu.ouvert { display: block; }

    /* Grilles */
    .grille-pubs { grid-template-columns: 1fr; }
    .grille-disciplines { grid-template-columns: repeat(2, 1fr); }
    .footer-grille { grid-template-columns: 1fr 1fr; }
    .champs-deux-cols { grid-template-columns: 1fr; }
    .hero-stats { gap: 1.5rem; }
    .pub-detail-actions { flex-direction: column; }
    .admin-tabs { overflow-x: auto; padding-bottom: 4px; }

    /* Hero */
    .hero { padding: 3rem 1rem 2.5rem; }
    .hero-nom { font-size: clamp(2.5rem, 13vw, 5rem); }

    /* Profil */
    .profil-header { flex-direction: column; }

    /* Formulaire dépôt */
    .depot-page { padding: 1rem; }
    .formulaire { padding: 1.25rem; gap: 1rem; }
    .zone-upload { padding: 1.5rem 1rem; }
    .zone-upload .icone-upload { font-size: 2rem; margin-bottom: 6px; }
    .aide-page { padding: 1.5rem 1rem; }

    /* Etapes dépôt */
    .etapes-depot { padding: 0.75rem 0.5rem; gap: 0; }
    .etape { min-width: 70px; font-size: 0.75rem; gap: 5px; }
    .etape-nb { width: 20px; height: 20px; font-size: 0.68rem; }

    /* Page discipline */
    .disc-hero-inner { padding: 1.25rem; gap: 1rem; }
    .disc-hero .icone-3d { width: 56px; height: 56px; font-size: 1.6rem; border-radius: 16px; }
    .disc-hero-titre { font-size: 1.1rem; }
    .disc-page-body { padding: 1.25rem; }

    /* Tables admin */
    .table-admin { font-size: 0.8rem; }
    .pub-detail { padding: 1rem; }
  }

  @media (max-width: 540px) {
    .cartes-acces { grid-template-columns: 1fr; }
  }

  @media (max-width: 480px) {
    .footer-grille { grid-template-columns: 1fr; }
    .hero-stats { gap: 1rem; }
    .hero-stat .chiffre { font-size: 1.5rem; }
    .hero-recherche { flex-direction: column; border-radius: 12px; }
    .hero-recherche input { padding: 14px 16px; }
    .hero-recherche button { padding: 12px; width: 100%; justify-content: center; }
    .stat-card .valeur { font-size: 1.7rem; }
    .table-admin { font-size: 0.8rem; }
    .table-admin th, .table-admin td { padding: 8px 10px; }
    .grille-disciplines { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }
    /* Modal plein écran sur très petits écrans */
    .modal-overlay { padding: 0; align-items: flex-end; }
    .modal { border-radius: 14px 14px 0 0; max-height: 96vh; padding: 1rem; }

    /* Formulaire dépôt très petit écran */
    .depot-page { padding: 0.5rem; }
    .formulaire { padding: 0.9rem; gap: 0.85rem; border-radius: 8px; }
    .zone-upload { padding: 1.25rem 0.75rem; }
    .zone-upload p { font-size: 0.82rem; }
    .etapes-depot { flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; padding: 0.6rem 0.5rem; }
    .etape { min-width: 60px; font-size: 0.68rem; flex-shrink: 0; }
    .champ input[type=text], .champ input[type=date], .champ input[type=email],
    .champ input[type=number], .champ select, .champ textarea { font-size: 0.88rem; padding: 9px 11px; }
    .champ label { font-size: 0.8rem; }
  }





  /* ===== RESPONSIVE PAYSAGE MOBILE ===== */
  @media (max-height: 500px) and (orientation: landscape) {
    nav { height: 52px; padding: 0 1rem; }
    .nav-hamburger { display: flex; }
    .nav-liens { display: none; }
    #navAuth, #navUser { display: none !important; }
    .nav-drawer { top: 52px; }
    .hero { padding: 2rem 1rem 1.5rem; }
    .hero-nom { font-size: 3rem; }
  }

  /* ===== GRANDS ÉCRANS ===== */
  @media (min-width: 1400px) {
    nav { padding: 0 4rem; }
    .hero-contenu { max-width: 900px; }
    .disciplines-section, .publications-section { padding-left: 4rem; padding-right: 4rem; }
    .grille-pubs { grid-template-columns: repeat(3, 1fr); }
  }


  /* ===== ICÔNES 3D PHOSPHOR ===== */
  .icone-3d {
    width: 58px; height: 58px;
    border-radius: 16px;
    display: flex; align-items: center; justify-content: center;
    margin: 0 auto 14px;
    font-size: 1.6rem;
    box-shadow:
      0 8px 20px rgba(0,0,0,0.18),
      0 1px 0 rgba(255,255,255,0.55) inset,
      0 -2px 0 rgba(0,0,0,0.15) inset;
    transition: transform 0.22s cubic-bezier(.34,1.56,.64,1), box-shadow 0.22s;
  }
  .carte-discipline:hover .icone-3d {
    transform: translateY(-4px) scale(1.08);
    box-shadow: 0 16px 36px rgba(0,0,0,0.2), 0 1px 0 rgba(255,255,255,0.55) inset;
  }
  .icone-lsh   { background: linear-gradient(145deg, #fde68a, #f59e0b); color: #78350f; }
  .icone-seg   { background: linear-gradient(145deg, #6ee7b7, #10b981); color: #064e3b; }
  .icone-sjp   { background: linear-gradient(145deg, #93c5fd, #3b82f6); color: #1e3a8a; }
  .icone-mpc   { background: linear-gradient(145deg, #d8b4fe, #9333ea); color: #fff; }
  .icone-sna   { background: linear-gradient(145deg, #86efac, #22c55e); color: #14532d; }
  .icone-sti   { background: linear-gradient(145deg, #cbd5e1, #64748b); color: #fff; }
  .icone-med   { background: linear-gradient(145deg, #fca5a5, #ef4444); color: #fff; }
  .icone-staps { background: linear-gradient(145deg, #fdba74, #f97316); color: #fff; }

  /* Sizing icônes inline */
  .ph-inline   { vertical-align: -3px; font-size: 1.05em; }
  .ph-contact  { margin-right: 8px; vertical-align: -3px; color: var(--noir); font-size: 1.05em; }
  .btn i, .nav-lien i, .admin-tab i { font-size: 1em; vertical-align: -2px; }
  .page-header-bar h1 i { font-size: 1.25rem; vertical-align: -3px; margin-right: 6px; }
  .modal h3 i { vertical-align: -2px; margin-right: 6px; }
  .icone-upload-zone { font-size: 3rem; display: block; margin-bottom: 10px; color: var(--texte-muted); }
  .section-titre i { vertical-align: -2px; margin-right: 4px; }

  /* ===== RESPONSIVE TABLETTE PETITE (769–900px) : hamburger ===== */
  @media (min-width: 769px) and (max-width: 900px) {
    .nav-liens { display: none; }
    .nav-hamburger { display: flex; }
    #navAuth, #navUser { display: none !important; }
    nav { padding: 0 1.25rem; }
    .nav-logo-tagline { display: none; }
  }

  /* ===== RESPONSIVE TABLETTE / IPAD ===== */
  @media (min-width: 769px) and (max-width: 1024px) {
    nav { padding: 0 1.5rem; gap: 1rem; }
    .nav-logo-tagline { display: none; }
    .nav-lien { font-size: 0.8rem; }
    .hero { padding: 4rem 2rem 3rem; }
    .grand-titre, .hero-nom { font-size: clamp(3rem, 8vw, 5rem); }
    .grille-pubs { grid-template-columns: repeat(2, 1fr); }
    .grille-disciplines { grid-template-columns: repeat(2, 1fr) !important; }
    .footer-grille { grid-template-columns: 1fr 1fr; }
    .recherche-page { grid-template-columns: 260px 1fr; }
    .champs-deux-cols { grid-template-columns: 1fr 1fr; }
    .stats-grille { grid-template-columns: repeat(3, 1fr); }
    .pub-detail { padding: 1.5rem; }
    .profil-page { padding: 1.5rem; }
  }

  /* ===== TRANSITIONS DE PAGE ===== */
  @keyframes pageFadeIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  .page.active {
    display: block;
    animation: pageFadeIn 0.22s ease-out both;
  }
  @media (prefers-reduced-motion: reduce) {
    .page.active { animation: none; }
    .icone-3d, .carte-discipline, .carte-pub { transition: none !important; }
  }



  /* ===== CARTES DISCIPLINE — REDESIGN PREMIUM ===== */
  .carte-discipline {
    border-radius: 18px;
    position: relative;
    overflow: hidden;
    box-shadow: 0 2px 10px rgba(26,107,69,0.07), 0 1px 3px rgba(0,0,0,0.04);
    transition: transform 0.3s cubic-bezier(.34,1.56,.64,1),
                box-shadow 0.3s ease, border-color 0.2s, background 0.2s;
    padding-bottom: 2.5rem;
  }
  .carte-discipline::after {
    content: 'Explorer →';
    position: absolute;
    bottom: 10px; left: 0; right: 0;
    text-align: center;
    font-size: 0.67rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--noir);
    opacity: 0;
    transform: translateY(5px);
    transition: opacity 0.2s, transform 0.2s;
  }
  .carte-discipline:hover {
    transform: translateY(-10px) scale(1.03);
    box-shadow: 0 24px 50px rgba(26,107,69,0.17), 0 6px 16px rgba(0,0,0,0.07);
    border-color: #1a6b45;
    background: linear-gradient(160deg, #f2fbf5, #ffffff);
  }
  .carte-discipline:hover::after { opacity: 1; transform: translateY(0); }
  .carte-discipline .nb {
    display: inline-flex;
    align-items: center;
    background: rgba(26,107,69,0.1);
    border-radius: 20px;
    padding: 2px 12px;
    font-size: 0.7rem;
    font-weight: 700;
    font-style: normal;
    color: #0d4229;
    margin-top: 6px;
  }

  /* ===== CARTES PUBLICATION — RAFFINEMENT ===== */
  .carte-pub {
    border-radius: 14px;
    transition: transform 0.22s ease, box-shadow 0.22s ease, border-top-color 0.15s;
  }
  .carte-pub:hover {
    transform: translateY(-5px);
    box-shadow: 0 18px 40px rgba(0,0,0,0.1), 0 4px 10px rgba(0,0,0,0.05);
  }

  /* ===== RÉSULTATS — HOVER PRÉCIS ===== */
  .resultat-item {
    border-left-width: 4px;
    transition: border-left-color 0.18s, box-shadow 0.18s, transform 0.18s;
  }
  .resultat-item:hover {
    border-left-color: var(--jaune);
    box-shadow: 0 6px 22px rgba(0,0,0,0.08);
    transform: translateX(3px);
  }

  /* ===== STAGGER ANIMATION LISTE ===== */
  @keyframes cardSlideIn {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  .liste-resultats .resultat-item { animation: cardSlideIn 0.3s ease-out both; }
  .liste-resultats .resultat-item:nth-child(1) { animation-delay: 0ms; }
  .liste-resultats .resultat-item:nth-child(2) { animation-delay: 50ms; }
  .liste-resultats .resultat-item:nth-child(3) { animation-delay: 100ms; }
  .liste-resultats .resultat-item:nth-child(4) { animation-delay: 150ms; }
  .liste-resultats .resultat-item:nth-child(5) { animation-delay: 200ms; }
  .liste-resultats .resultat-item:nth-child(n+6) { animation-delay: 240ms; }
  @media (prefers-reduced-motion: reduce) {
    .liste-resultats .resultat-item { animation: none; }
  }

  /* ===== PAGE DISCIPLINE ===== */
  .disc-hero { border-bottom: 3px solid var(--jaune); }
  .disc-hero-inner {
    max-width: 1200px; margin: 0 auto;
    padding: 2rem; display: flex;
    align-items: center; gap: 1.5rem; flex-wrap: wrap;
  }
  .disc-hero .icone-3d {
    width: 76px; height: 76px; font-size: 2.2rem;
    border-radius: 22px; flex-shrink: 0; margin: 0;
  }
  .disc-hero-info { flex: 1; min-width: 200px; }
  .disc-hero-label {
    font-size: 0.67rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: 0.14em;
    color: var(--texte-muted); margin-bottom: 4px;
  }
  .disc-hero-titre {
    font-family: var(--font-titre);
    font-size: clamp(1.15rem, 3vw, 1.65rem);
    font-weight: 700; color: var(--texte);
    line-height: 1.2; margin-bottom: 8px;
  }
  .disc-hero-badges { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
  .disc-sigle { padding: 3px 14px; border-radius: 20px; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.07em; }
  .disc-nb-pubs { font-size: 0.85rem; color: var(--texte-muted); font-style: italic; }
  .disc-page-body { max-width: 1200px; margin: 0 auto; padding: 2rem; }

  /* ===== BOUTONS — ÉLÉVATION ===== */
  .btn-primaire { box-shadow: 0 2px 8px rgba(245,200,0,0.22); letter-spacing: 0.01em; }
  .btn-primaire:hover { box-shadow: 0 6px 22px rgba(245,200,0,0.32); transform: translateY(-2px); }
  .btn-secondaire:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0,0,0,0.06); }

  /* ===== MOTS-CLÉS — INTERACTIF ===== */
  .mot-cle { transition: background 0.15s, color 0.15s, border-color 0.15s; cursor: default; }
  .mot-cle:hover { background: var(--noir); color: white; border-color: var(--noir); }

  /* ===== LIEN AUTEUR ===== */
  .lien-auteur {
    cursor: pointer; font-weight: 700; color: var(--noir);
    border-bottom: 1px dashed rgba(26,107,69,0.35);
    transition: border-color 0.15s, color 0.15s;
  }
  .lien-auteur:hover { border-bottom-color: var(--noir); color: #0d4229; }

  /* ===== STAT CARDS — HOVER ===== */
  .stat-card { transition: transform 0.2s ease, box-shadow 0.2s ease; cursor: default; }
  .stat-card:hover { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(0,0,0,0.09); }

  /* ===== PARTENAIRE CARD — AFFINÉ ===== */
  .partenaire-card { transition: transform 0.2s, box-shadow 0.2s; }
  .partenaire-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,0,0,0.08); }

  /* ===== SECTION TITRE ===== */
  .section-titre { letter-spacing: -0.01em; }

