/* Minimal, élégant et responsive */
:root{
  --bg:#0b1020; --panel:#121830; --muted:#8aa0c7; --text:#e6eeff; --accent:#4da3ff; --accent2:#9b7bff; --ok:#21d07a; --warn:#ffb84d; --err:#ff6584;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:radial-gradient(1200px 800px at 10% 0%, #10193a 0%, #0b1020 45%, #0b1020 100%);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif}
.hero{position:relative;overflow:hidden;background:linear-gradient(135deg, rgba(77,163,255,.2), rgba(155,123,255,.15));border-bottom:1px solid rgba(255,255,255,.06)}
.hero__inner{max-width:1100px;margin:0 auto;padding:64px 24px 72px}
.hero h1{margin:0 0 8px;font-size:42px;letter-spacing:.3px}
.lead{opacity:.9;max-width:900px}
.btn{display:inline-block;margin-right:12px;margin-top:16px;padding:10px 16px;border-radius:9px;border:1px solid rgba(255,255,255,.2);text-decoration:none;color:var(--text);transition:.25s ease}
.btn--primary{background:linear-gradient(135deg,var(--accent),var(--accent2));border:none}
.btn:hover{transform:translateY(-1px);box-shadow:0 6px 22px rgba(0,0,0,.25)}

/* Hero amélioré */
.overtitle{opacity:.85;margin:0 0 6px;font-weight:600;letter-spacing:.3px}
.hamburger-btn{position:fixed;top:16px;right:16px;width:40px;height:36px;border:1px solid rgba(255,255,255,.2);border-radius:10px;background:rgba(0,0,0,.5);display:none;align-items:center;justify-content:center;gap:4px;padding:6px;cursor:pointer; z-index: 100;}
.hamburger-btn span{display:block;width:20px;height:2px;background:#fff;opacity:.9}
@media (max-width: 820px){.hamburger-btn{display:flex}}

/* TOC responsive en tiroir */
.toc{position:sticky;top:0;background:linear-gradient(180deg, rgba(0,0,0,.12), rgba(0,0,0,0));padding:8px 16px;backdrop-filter:blur(6px);z-index:20}
@media (max-width: 820px){
  .toc{position:fixed;top:0;left:0;height:100vh;width:84vw;max-width:360px;background:#0f1430;border-right:1px solid rgba(255,255,255,.08);transform:translateX(-100%);transition:transform .28s ease;box-shadow:0 20px 60px rgba(0,0,0,.55)}
  .toc.open{transform:translateX(0)}
  .toc h3{margin-top:16px}
  .toc nav{display:block;overflow:auto;max-height:calc(100vh - 120px)}
  .toc-close{display:block;margin:12px 0 8px;padding:8px 12px;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);color:var(--text)}
}
.toc-close{display:none}
.toc-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(2px);z-index:15}
@media (min-width: 821px){.toc-backdrop{display:none !important}}

/* Masquer la TOC sur mobile hors ouverture */
@media (max-width: 820px){
  .toc{display:block}
  .toc[hidden]{display:none}
}

.toc nav{display:flex;flex-wrap:wrap;gap:8px;overflow-x:auto; -webkit-overflow-scrolling:touch}
.toc a{color:var(--muted);text-decoration:none;padding:6px 10px;border-radius:7px;border:1px solid rgba(255,255,255,.08)}
.toc a:hover{color:var(--text);border-color:rgba(255,255,255,.18)}

.container{max-width:1100px;margin:24px auto;padding:0 16px}
.card{background:linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.02));border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:22px;margin:16px 0;box-shadow:0 10px 40px rgba(0,0,0,.25)}
.card--wide{padding:6px 22px}
.card h2{margin-top:6px}
.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width: 900px){.grid.two{grid-template-columns:1fr}}
.param h3{margin:.3rem 0}
.vars code{background:rgba(255,255,255,.08);padding:2px 6px;border-radius:6px}

.formula{background:rgba(0,0,0,.25);border-radius:12px;padding:12px 14px;border:1px solid rgba(255,255,255,.06);overflow-x:auto; -webkit-overflow-scrolling:touch}
.note{color:var(--muted)}

.controls{display:flex;flex-wrap:wrap;gap:12px;padding:14px}
.control{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:10px;display:flex;flex-direction:column}
.control input,.control select{margin-top:6px;background:#0f1430;color:var(--text);border:1px solid rgba(255,255,255,.18);border-radius:8px;padding:8px 10px}
.switch{position:relative;display:inline-block;width:48px;height:26px}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#314060;transition:.3s;border-radius:999px}
.slider:before{position:absolute;content:"";height:20px;width:20px;left:3px;top:3px;background:white;border-radius:50%;transition:.3s}
.switch input:checked + .slider{background:linear-gradient(135deg,var(--accent),var(--accent2))}
.switch input:checked + .slider:before{transform:translateX(22px)}

.charts{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width: 1000px){.charts{grid-template-columns:1fr}}
.chart-card{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:16px;overflow:hidden}
.caption{color:var(--muted)}

/* Fix Chart.js layout: donner une hauteur explicite et éviter overflow */
.chart-card canvas{display:block;width:100% !important;height:360px !important;max-height:60vh}
#chart-slope{height:320px !important}
#chart-profile{height:420px !important}
@media (max-width: 720px){
  .chart-card canvas{height:300px !important}
  #chart-profile{height:360px !important}
}

/* Tables enrichies */
.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:10px 0 6px}
.table-wrap table{min-width:720px}
table{width:100%;border-collapse:separate;border-spacing:0;margin:10px 0 6px;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.06);border-radius:12px;overflow:hidden}
th,td{padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.06)}
th{background:rgba(255,255,255,.05);text-align:left}
tr:last-child td{border-bottom:none}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.08);font-size:12px}

.footer{padding:24px 0;border-top:1px solid rgba(255,255,255,.06);margin-top:24px;background:linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.01))}
.footer .container{display:flex;justify-content:center}

/* Détails repliables dans le tableau des variables */
.table-details{display:none;background:rgba(255,255,255,.03)}
.table-details.open{display:table-row}
.table-details td{padding:0}
.table-details .details-wrap{padding:12px 12px 14px;border-top:1px solid rgba(255,255,255,.06)}
.table-details .meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}
.table-details .meta div{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px}
.table-details h5{margin:8px 0 6px;font-size:14px;color:var(--muted)}
.vars-toggle{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.12);cursor:pointer;background:rgba(255,255,255,.04);color:var(--text)}
.vars-toggle:hover{background:rgba(255,255,255,.07)}
.vars-toggle .chev{display:inline-block;min-width:1em;text-align:center}

/* Petits écrans: masquer visuellement les colonnes supplémentaires (déjà réduites à 3) et améliorer lisibilité */
@media (max-width:720px){
  #vars-table th:nth-child(3), #vars-table td:nth-child(3){text-align:right}
}

/* Equations MathJax responsives (SVG) */
.mjx-container[jax="SVG"]{max-width:100%; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch}
.mjx-container[jax="SVG"] svg{max-width:100% !important; height:auto !important}
/* Autoriser le scroll horizontal des blocs de formules longs */
.formula{overflow-x:auto; -webkit-overflow-scrolling:touch}

/* Sommaire (toc) responsive: défilement horizontal si nécessaire */
@media (max-width:720px){
  .toc nav{white-space:nowrap}
  .toc nav a{display:inline-block; flex:0 0 auto}
}

/* Tables: fallback responsive même sans wrapper sur mobile */
@media (max-width:720px){
  .card > table{display:block; width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch}
}

/* Détails repliables: meta en 1 colonne sur mobile */
@media (max-width:720px){
  .table-details .meta{grid-template-columns:1fr}
}
