/* =====================================================================
   pavapi — feuille de style unique.
   Organisation : jetons → base → primitives → sections → composants.
   Aucune couleur en dur hors de la palette : tout passe par une variable.
   ===================================================================== */

/* ---------- 1. jetons ---------- */
:root{
  --ink:#14110F;
  --surface:#1C1815;
  --surface-2:#241F1A;
  --surface-3:#2C261F;
  --copper:#C97A3D;
  --gold:#E4B767;
  --teal:#4FA8A0;
  --usdc:#5FB0E0;
  --paper:#F2EDE6;
  --paper-dim:#B0A79A;
  --paper-faint:#786F63;
  --line:rgba(242,237,230,0.10);
  --line-strong:rgba(242,237,230,0.20);
  --danger:#C1594A;
  --warn:#E4B767;
  --ok:#7ED6A5;
  --radius:10px;
  --mono:'IBM Plex Mono', ui-monospace, SFMono-Regular, monospace;
}

/* ---------- 2. base ---------- */
*{box-sizing:border-box;}
/* Toute piste de grille destinée à du contenu est déclarée `minmax(0,…)`.
   Sans ce zéro explicite, une piste ne peut pas descendre sous la largeur
   min-content de son contenu et pousse la page en débordement horizontal —
   c'est la cause n°1 de casse sur mobile dans ce fichier. */
/* Une règle d'auteur avec `display` bat la feuille par défaut du navigateur :
   sans ceci, tout élément stylé en flex resterait visible malgré `hidden`. */
[hidden]{display:none !important;}
html{scroll-behavior:smooth;}
body{
  margin:0; background:var(--ink); color:var(--paper);
  font-family:'Inter', system-ui, sans-serif; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:'Fraunces', Georgia, serif; font-weight:500; letter-spacing:-0.015em;}
h2{font-size:clamp(1.6rem,3vw,2.15rem); margin:0 0 12px;}
h3{font-size:1.02rem; margin:0 0 6px;}
p{margin:0 0 10px;}
a{color:inherit;}
img,svg,canvas{display:block; max-width:100%;}
::selection{background:var(--copper); color:var(--ink);}
:focus-visible{outline:2px solid var(--gold); outline-offset:3px; border-radius:4px;}
.mono{font-family:var(--mono);}
.wrap{max-width:1220px; margin:0 auto; padding:0 32px;}
@media(max-width:640px){ .wrap{padding:0 18px;} }
section{padding:70px 0; border-top:1px solid var(--line);}
.section-head{max-width:70ch; margin-bottom:34px;}
.section-head p{color:var(--paper-dim); font-size:0.95rem;}
.ta-r{text-align:right;}
.dim{color:var(--paper-dim);}
.faint{color:var(--paper-faint);}
.apy{color:var(--gold);}
.pos{color:var(--ok);}
.neg{color:var(--danger);}

/* ---------- 3. primitives ---------- */
.btn{
  font:500 0.9rem/1 'Inter',sans-serif; border:none; border-radius:8px; cursor:pointer;
  padding:12px 20px; transition:transform .12s, background .15s, border-color .15s;
  display:inline-flex; align-items:center; justify-content:center; gap:8px; text-decoration:none;
}
.btn:active{transform:scale(.975);}
.btn:disabled{opacity:.45; cursor:not-allowed;}
.btn-primary{background:var(--copper); color:var(--ink);}
.btn-primary:hover:not(:disabled){background:var(--gold);}
.btn-ghost{background:transparent; color:var(--paper); border:1px solid var(--line-strong);}
.btn-ghost:hover{border-color:var(--paper-dim);}
.btn-wallet{background:var(--surface-2); color:var(--paper); border:1px solid var(--line-strong); font-family:var(--mono); font-size:.8rem; padding:9px 14px;}
.btn-cta{width:100%; padding:15px; font-size:.98rem; margin-top:14px;}
.pill{display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line-strong); border-radius:999px; padding:3px 10px; font-size:.72rem; font-family:var(--mono);}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex-shrink:0;animation:pulse 2.4s infinite;}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.tag{display:inline-block; font-size:.66rem; font-family:var(--mono); border:1px solid var(--line-strong); border-radius:4px; padding:1px 5px; color:var(--paper-faint); white-space:nowrap;}
.tag.ok{color:var(--ok); border-color:rgba(126,214,165,.35);}
.tag.warn{color:var(--warn); border-color:rgba(228,183,103,.35);}
.tag.err{color:var(--danger); border-color:rgba(193,89,74,.4);}

/* ---------- 4. nav ---------- */
header{position:sticky; top:0; z-index:60; background:rgba(20,17,15,.88); backdrop-filter:blur(12px); border-bottom:1px solid var(--line);}
nav.wrap{display:flex; align-items:center; justify-content:space-between; height:68px; gap:20px;}
.logo{display:flex; align-items:center; gap:9px; font-family:'Fraunces',serif; font-weight:600; font-size:1.2rem; text-decoration:none;}
.logo .mark{width:24px;height:24px;flex-shrink:0;}
.logo-api{color:var(--gold);}
.logo-asset{font-family:var(--mono); font-size:.62rem; color:var(--usdc); border:1px solid rgba(95,176,224,.4); border-radius:4px; padding:1px 5px; letter-spacing:.04em;}
.navlinks{display:flex; gap:26px; font-size:.86rem; color:var(--paper-dim);}
.navlinks a{text-decoration:none;} .navlinks a:hover{color:var(--paper);}
@media(max-width:1000px){ .navlinks{display:none;} }
.nav-right{display:flex; align-items:center; gap:10px;}
.live-pill{display:flex; align-items:center; gap:7px; background:transparent; border:1px solid var(--line); border-radius:999px; padding:6px 12px; font-family:var(--mono); font-size:.72rem; color:var(--paper-dim); cursor:pointer;}
.live-pill:hover{border-color:var(--line-strong); color:var(--paper);}
.live-pill.turbo{border-color:rgba(228,183,103,.5); color:var(--gold);}
@media(max-width:620px){ .live-pill{display:none;} }

/* ---------- 5. hero ---------- */
.hero{padding:76px 0 56px; border-top:none;}
/* `minmax(0,…)` est indispensable : sans lui, une piste de grille ne peut pas
   descendre sous la largeur min-content de son contenu, et la colonne pousse
   la page en débordement horizontal sur mobile. */
.hero-grid{display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:52px; align-items:center;}
@media(max-width:920px){ .hero-grid{grid-template-columns:minmax(0,1fr); gap:36px;} }
.eyebrow{color:var(--copper); font-family:var(--mono); font-size:.82rem; margin-bottom:16px;}
.hero-head{font-size:clamp(2.1rem,4.4vw,3.15rem); line-height:1.08; margin:0 0 20px; max-width:19ch;}
.hero-head .hl{color:var(--usdc);}
.hero-sub{color:var(--paper-dim); font-size:1.02rem; max-width:56ch; margin-bottom:28px;}
.hero-sub b{color:var(--paper);}
.hero-cta{display:flex; gap:12px; flex-wrap:wrap; margin-bottom:34px;}
.hero-stats{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 28px; max-width:640px;}
@media(min-width:700px){ .hero-stats{grid-template-columns:repeat(4,minmax(0,1fr));} }
.hero-stats .stat .num{font-family:var(--mono); font-size:1.35rem;}
.hero-stats .stat .label{font-size:.76rem; color:var(--paper-faint); margin-top:2px; max-width:20ch;}
.hero-side{display:flex; flex-direction:column; align-items:center; gap:12px;}
.vault-visual{width:210px;}
.vault-caption{text-align:center;}
.vault-apy{font-size:2rem; color:var(--gold); line-height:1;}
.vault-lbl{font-size:.76rem; color:var(--paper-faint); margin-top:4px;}
.hero-position{width:100%; max-width:340px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px; font-size:.82rem;}
.hero-position .hp-row{display:flex; justify-content:space-between; gap:10px; padding:3px 0;}
.hero-position .hp-row span:first-child{color:var(--paper-faint);}

/* fût */
.fut-liquid{transition:transform 1.1s cubic-bezier(.4,0,.2,1);}

/* ---------- 6. coffre / dépôt ---------- */
.dash{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr)); gap:14px; margin-bottom:26px;}
.dash-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; position:relative; overflow:hidden;}
.dash-card .label{font-size:.74rem; color:var(--paper-faint); text-transform:uppercase; letter-spacing:.06em;}
.dash-card .value{font-family:var(--mono); font-size:1.5rem; margin:6px 0 3px;}
.dash-card .sub{font-size:.76rem; color:var(--paper-dim);}
.dash-card .micro{font-size:.82rem; color:var(--paper-faint); letter-spacing:.02em;}
.dash-card .micro::before{content:'…';}
.dash-card.accent{border-color:rgba(228,183,103,.28);}
.deposit-panel{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:22px; align-items:start;}
@media(max-width:860px){ .deposit-panel{grid-template-columns:minmax(0,1fr);} }
.deposit-form,.deposit-preview{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:22px;}
.mode-switch{display:flex; gap:6px; background:var(--surface-2); border-radius:8px; padding:4px; margin-bottom:18px;}
.mode-btn{flex:1; background:transparent; border:none; color:var(--paper-dim); font:500 .86rem 'Inter',sans-serif; padding:9px; border-radius:6px; cursor:pointer;}
.mode-btn.active{background:var(--surface-3); color:var(--paper);}
.field-label{display:block; font-size:.76rem; color:var(--paper-faint); text-transform:uppercase; letter-spacing:.06em; margin-bottom:8px;}
.amount-row{display:flex; align-items:center; background:var(--surface-2); border:1px solid var(--line-strong); border-radius:8px; padding:4px 14px; transition:border-color .15s;}
.amount-row:focus-within{border-color:var(--copper);}
.amount-row.error{border-color:var(--danger);}
.amount-row input{flex:1; background:none; border:none; color:var(--paper); font-family:var(--mono); font-size:1.5rem; padding:12px 0; width:100%;}
.amount-row input:focus{outline:none;}
.amount-row input::-webkit-outer-spin-button,.amount-row input::-webkit-inner-spin-button{-webkit-appearance:none; margin:0;}
.token-pill{font-family:var(--mono); font-size:.82rem; color:var(--usdc); border:1px solid rgba(95,176,224,.35); border-radius:6px; padding:4px 9px;}
.preset-chips{display:flex; gap:7px; flex-wrap:wrap; margin-top:11px;}
.preset-chips button{background:var(--surface-2); border:1px solid var(--line); color:var(--paper-dim); font-family:var(--mono); font-size:.76rem; padding:6px 11px; border-radius:6px; cursor:pointer;}
.preset-chips button:hover{border-color:var(--line-strong); color:var(--paper);}
.wallet-avail{font-size:.78rem; color:var(--paper-dim); margin:12px 0 0;}
.trust-line{font-size:.75rem; color:var(--paper-faint); margin:12px 0 0; line-height:1.55;}
.alloc-head{display:flex; align-items:center; gap:8px; margin-bottom:12px;}
.alloc-venue{font-size:1.05rem;}
.alloc-apy{font-family:var(--mono); font-size:2.1rem; color:var(--gold); line-height:1;}
.alloc-meta{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px 14px; margin-top:16px; font-size:.78rem;}
.alloc-meta div{display:flex; justify-content:space-between; gap:8px; border-bottom:1px dotted var(--line); padding-bottom:4px;}
.alloc-meta span:first-child{color:var(--paper-faint);}
.alloc-why{margin-top:16px; font-size:.78rem; color:var(--paper-dim); border-left:2px solid var(--copper); padding-left:12px; line-height:1.6;}
.alloc-why ul{margin:6px 0 0; padding-left:16px;}
.alloc-why li{margin-bottom:3px;}
.alloc-penalty{margin-top:8px; color:var(--warn); font-size:.75rem;}

/* ---------- 7. graphique ---------- */
.chart-toolbar{display:flex; justify-content:space-between; align-items:center; gap:18px; flex-wrap:wrap; margin-bottom:12px;}
.tabs{display:flex; gap:5px; background:var(--surface-2); border-radius:8px; padding:4px; max-width:100%; overflow-x:auto; scrollbar-width:none;}
.tabs::-webkit-scrollbar{display:none;}
.tabs button{background:transparent; border:none; color:var(--paper-dim); font:500 .8rem 'Inter',sans-serif; padding:7px 13px; border-radius:6px; cursor:pointer; white-space:nowrap;}
.tabs button.active{background:var(--surface-3); color:var(--paper);}
.legend{display:flex; gap:14px; flex-wrap:wrap; font-size:.78rem;}
.legend button{display:flex; align-items:center; gap:6px; background:none; border:none; color:var(--paper-dim); cursor:pointer; font-size:.78rem; padding:2px 0;}
.legend button.off{opacity:.35; text-decoration:line-through;}
.legend i{width:14px; height:2.5px; border-radius:2px; display:block;}
.legend i.dashed{background-image:repeating-linear-gradient(90deg,currentColor 0 4px,transparent 4px 7px);}
.chart-frame{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:8px 6px 4px; height:340px;}
.chart-foot{margin-top:12px; font-size:.78rem; color:var(--paper-faint); display:flex; gap:20px; flex-wrap:wrap;}

/* ---------- 7b. repères ---------- */
.bench-panel{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:24px;}
.bench-head{display:flex; justify-content:space-between; align-items:flex-start; gap:20px; flex-wrap:wrap; padding-bottom:16px; border-bottom:1px solid var(--line);}
.bench-lbl{font-size:.72rem; color:var(--paper-faint); text-transform:uppercase; letter-spacing:.06em;}
.bench-venue{font-size:1.05rem; margin-top:4px;}
.bench-apy{font-size:2rem; color:var(--gold); line-height:1;}
.bench-verdict{margin:16px 0 20px; font-size:.88rem; line-height:1.6; border-left:2px solid var(--ok); padding-left:12px; color:var(--paper-dim);}
.bench-verdict.warn{border-left-color:var(--warn);}
.bench-verdict b{color:var(--paper);}
.bench-rows{display:flex; flex-direction:column;}
.bench-row{display:grid; grid-template-columns:10px minmax(0,1fr) auto 84px 78px; gap:12px; align-items:center; padding:11px 0; border-bottom:1px solid var(--line);}
.bench-row:last-child{border-bottom:none;}
.bench-dot{width:9px; height:9px; border-radius:50%;}
.bench-name{font-size:.88rem; min-width:0;}
.bench-name .why{font-size:.73rem; color:var(--paper-faint); line-height:1.45; margin-top:2px;}
.bench-meta{display:flex; gap:6px; align-items:center; flex-wrap:wrap; justify-content:flex-end; font-size:.7rem;}
.bench-val{text-align:right; font-size:.95rem;}
.bench-delta{text-align:right; font-size:.88rem;}
@media(max-width:760px){
  .bench-row{grid-template-columns:10px minmax(0,1fr) 74px;}
  .bench-meta{display:none;}
  .bench-delta{grid-column:2/4; text-align:left; padding-left:0;}
}

/* ---------- 8. moteur ---------- */
.engine{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:24px;}
.eng-flow{display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:16px; align-items:center;}
@media(max-width:760px){ .eng-flow{grid-template-columns:minmax(0,1fr);} .eng-arrow{transform:rotate(90deg);} }
.eng-node{background:var(--surface-2); border:1px solid var(--line); border-radius:8px; padding:14px 16px;}
.eng-node .lbl{font-size:.72rem; color:var(--paper-faint); text-transform:uppercase; letter-spacing:.06em; margin-bottom:6px;}
.eng-node .val{font-size:.98rem;}
.eng-arrow{color:var(--paper-faint); font-size:1.3rem; text-align:center;}
.eng-state{display:inline-flex; align-items:center; gap:7px; margin-top:18px; border-radius:999px; padding:6px 14px; font-size:.82rem; font-family:var(--mono); border:1px solid var(--line-strong); color:var(--paper-dim);}
.eng-state.optimal{color:var(--ok); border-color:rgba(126,214,165,.4);}
.eng-state.arming,.eng-state.holding{color:var(--gold); border-color:rgba(228,183,103,.4);}
.eng-state.blocked,.eng-state.degraded{color:var(--danger); border-color:rgba(193,89,74,.4);}
.eng-why{margin-top:12px; font-size:.86rem; color:var(--paper-dim); max-width:80ch; line-height:1.65; border-left:2px solid var(--line-strong); padding-left:12px;}
.eng-meter{margin:20px 0 6px;}
.eng-meter-track{height:6px; background:var(--surface-3); border-radius:3px; overflow:hidden;}
.eng-meter-fill{height:100%; background:linear-gradient(90deg,var(--copper),var(--gold)); border-radius:3px; transition:width .5s cubic-bezier(.4,0,.2,1);}
.eng-meter-cap{font-size:.76rem; color:var(--paper-faint); margin-top:6px;}
.eng-params{display:flex; gap:8px; flex-wrap:wrap; margin-top:18px;}
.eng-chip{font-size:.72rem; font-family:var(--mono); background:var(--surface-2); border:1px solid var(--line); border-radius:6px; padding:5px 10px; color:var(--paper-faint);}
.eng-chip b{color:var(--paper); font-weight:500;}
.eng-log-head{margin-top:26px; font-size:.74rem; text-transform:uppercase; letter-spacing:.07em; color:var(--paper-faint); border-bottom:1px solid var(--line); padding-bottom:8px;}
.eng-log-row{display:grid; grid-template-columns:110px minmax(0,1fr) 80px; gap:12px; padding:10px 0; border-bottom:1px solid var(--line); font-size:.82rem; align-items:baseline;}
.eng-log-why{grid-column:1/-1; font-size:.75rem; color:var(--paper-faint); margin-top:-4px;}
@media(max-width:640px){ .eng-log-row{grid-template-columns:1fr;} }

/* ---------- 9. marchés ---------- */
.market-toolbar{display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:14px;}
.market-toolbar input[type=search]{background:var(--surface-2); border:1px solid var(--line); border-radius:8px; color:var(--paper); font-size:.85rem; padding:9px 13px; min-width:220px; font-family:'Inter',sans-serif;}
.market-toolbar input[type=search]:focus{outline:none; border-color:var(--copper);}
.tscroll{overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface);}
table.mkt{width:100%; border-collapse:collapse; min-width:1040px; font-size:.83rem;}
table.mkt th{position:sticky; top:0; background:var(--surface-2); text-align:left; font:500 .72rem 'Inter',sans-serif; text-transform:uppercase; letter-spacing:.05em; color:var(--paper-faint); padding:11px 12px; white-space:nowrap; cursor:pointer; border-bottom:1px solid var(--line); z-index:2;}
table.mkt th:hover{color:var(--paper);}
table.mkt th.sorted{color:var(--gold);}
table.mkt td{padding:10px 12px; border-bottom:1px solid var(--line); vertical-align:middle;}
table.mkt tr.excluded td{opacity:.5;}
table.mkt tr.current{background:rgba(228,183,103,.07);}
table.mkt tr:hover td{background:rgba(242,237,230,.03);}
.proto{display:flex; align-items:center; gap:8px; white-space:nowrap;}
.proto i{width:8px; height:8px; border-radius:2px; flex-shrink:0;}
.why{font-size:.72rem; color:var(--paper-faint); max-width:34ch; line-height:1.45;}
.score{display:inline-flex; align-items:center; gap:7px; font-family:var(--mono); font-size:.8rem;}
.score-bar{width:38px; height:4px; border-radius:2px; background:var(--surface-3); overflow:hidden;}
.score-bar i{display:block; height:100%;}
.table-foot{font-size:.78rem; color:var(--paper-faint); margin-top:14px; line-height:1.65; max-width:100ch;}

/* ---------- 10. fiabilité ---------- */
.proof-grid{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:18px; margin-bottom:18px; align-items:start;}
@media(max-width:900px){ .proof-grid{grid-template-columns:minmax(0,1fr);} }
.proof-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:22px;}
.proof-sub{font-size:.8rem; color:var(--paper-dim); margin-bottom:16px; line-height:1.6;}
.audit-head{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; padding-bottom:12px; border-bottom:1px solid var(--line); margin-bottom:6px;}
.audit-head .big{font-family:var(--mono); font-size:1.7rem; color:var(--ok);}
.audit-head .big.bad{color:var(--danger);}
.audit-row{display:grid; grid-template-columns:16px minmax(0,1fr) minmax(0,auto); gap:10px; padding:7px 0; border-bottom:1px solid var(--line); font-size:.8rem; align-items:baseline;}
.audit-row:last-child{border-bottom:none;}
.audit-row .st{font-family:var(--mono);}
.audit-row .st.ok{color:var(--ok);} .audit-row .st.ko{color:var(--danger);}
.audit-row .det{font-size:.72rem; color:var(--paper-faint); text-align:right; max-width:30ch;}
.feed-row{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,auto); gap:10px; padding:11px 0; border-bottom:1px solid var(--line);}
.feed-row:last-child{border-bottom:none;}
.feed-name{display:flex; align-items:center; gap:8px; font-size:.86rem;}
.feed-role{font-size:.72rem; color:var(--paper-faint); margin-top:2px;}
.feed-metrics{font-family:var(--mono); font-size:.72rem; color:var(--paper-dim); text-align:right; white-space:nowrap;}
.kv{display:flex; justify-content:space-between; gap:12px; padding:7px 0; border-bottom:1px solid var(--line); font-size:.82rem;}
.kv:last-child{border-bottom:none;}
.kv span:first-child{color:var(--paper-faint);}
.kv span:last-child{font-family:var(--mono); text-align:right;}
.score-doc{font-size:.79rem;}
.score-doc .row{display:grid; grid-template-columns:auto minmax(0,1fr); gap:10px; padding:6px 0; border-bottom:1px solid var(--line);}
.score-doc .row b{font-family:var(--mono); color:var(--gold); font-weight:500; white-space:nowrap;}
.score-doc .row span{color:var(--paper-dim); line-height:1.5;}

/* ---------- 11. méthode / sécurité / faq ---------- */
.steps{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); gap:18px;}
.step{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:22px;}
.step .idx{color:var(--copper); font-size:.78rem; margin-bottom:10px;}
.step p{color:var(--paper-dim); font-size:.85rem; margin:0; line-height:1.65;}
.sec-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr)); gap:16px;}
.sec-item{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:18px;}
.sec-item .n{color:var(--gold); font-family:var(--mono); font-size:.9rem; margin-bottom:7px;}
.sec-item .l{font-size:.83rem; color:var(--paper-dim); line-height:1.6;}
.foot-note{font-size:.78rem; color:var(--paper-faint); line-height:1.7; max-width:100ch;}
.faq-item{border-bottom:1px solid var(--line);}
.faq-q{display:flex; justify-content:space-between; gap:16px; align-items:center; padding:17px 0; cursor:pointer; font-size:.95rem;}
.faq-q .plus{color:var(--copper); font-family:var(--mono); transition:transform .2s;}
.faq-item.open .plus{transform:rotate(45deg);}
.faq-a{max-height:0; overflow:hidden; color:var(--paper-dim); font-size:.87rem; line-height:1.75; transition:max-height .3s ease, padding .3s ease;}
.faq-item.open .faq-a{max-height:520px; padding-bottom:18px;}

/* ---------- 12. footer / modales / toast ---------- */
footer{border-top:1px solid var(--line); padding:36px 0 46px;}
.foot-row{display:flex; justify-content:space-between; align-items:center; gap:20px; flex-wrap:wrap; margin-bottom:18px;}
.foot-links{display:flex; gap:22px; font-size:.85rem; color:var(--paper-dim);}
.foot-links a{text-decoration:none;} .foot-links a:hover{color:var(--paper);}
.modal-overlay{position:fixed; inset:0; background:rgba(10,8,7,.78); backdrop-filter:blur(6px); z-index:100; display:none; align-items:center; justify-content:center; padding:20px;}
.modal-overlay.open{display:flex;}
.modal{background:var(--surface); border:1px solid var(--line-strong); border-radius:14px; padding:26px; width:100%; max-width:440px; max-height:88vh; overflow-y:auto;}
.modal-wide{max-width:720px;}
.modal-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;}
.modal-head h3{margin:0; font-size:1.15rem;}
.modal-close{background:none; border:none; color:var(--paper-faint); font-size:1.05rem; cursor:pointer; padding:4px 8px;}
.modal .sub{color:var(--paper-dim); font-size:.83rem; line-height:1.65; margin-bottom:18px;}
.auth-opt{display:flex; align-items:center; gap:12px; width:100%; background:var(--surface-2); border:1px solid var(--line); border-radius:9px; padding:14px 16px; margin-bottom:9px; color:var(--paper); font-size:.9rem; cursor:pointer; text-decoration:none; text-align:left;}
.auth-opt:hover{border-color:var(--line-strong);}
.auth-icon{width:26px; height:26px; border-radius:7px; flex-shrink:0;}
.auth-opt small{display:block; color:var(--paper-faint); font-size:.72rem; margin-top:2px;}
.modal-status{display:flex; align-items:center; gap:10px; color:var(--paper-dim); font-size:.85rem; padding:10px 0;}
.spinner{width:15px; height:15px; border:2px solid var(--line-strong); border-top-color:var(--copper); border-radius:50%; animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg)}}
.tx-row{display:grid; grid-template-columns:auto 1fr auto; gap:10px; padding:8px 0; border-bottom:1px solid var(--line); font-size:.8rem; align-items:baseline;}
.tx-list{max-height:250px; overflow-y:auto; margin-top:8px;}
.toast{position:fixed; bottom:24px; left:50%; transform:translate(-50%,90px); background:var(--surface-3); border:1px solid var(--line-strong); border-radius:10px; padding:13px 20px; display:flex; align-items:center; gap:10px; font-size:.85rem; z-index:200; opacity:0; transition:transform .35s cubic-bezier(.4,0,.2,1), opacity .35s; max-width:min(92vw,560px);}
.toast.show{transform:translate(-50%,0); opacity:1;}
.toast-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex-shrink:0;}
.boot-error{position:fixed; inset:auto 20px 20px 20px; background:var(--danger); color:#fff; padding:16px 20px; border-radius:10px; font-size:.85rem; z-index:300; display:flex; flex-direction:column; gap:6px;}
.boot-error code{background:rgba(0,0,0,.25); padding:1px 5px; border-radius:4px; font-family:var(--mono);}

/* ---------- 13. accessibilité ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important;}
  html{scroll-behavior:auto;}
}
