/* Identité visuelle « Noir terminal » (cahier §10.2, docs/note-cdc-design-noir-terminal.md) : graphite, une seule
   couleur d'accent (bleu), la couleur réservée aux données. Toutes les couleurs sont des variables (thèmes à venir).
   Police DM Sans hébergée sur le serveur (static/fonts, licence OFL) : aucune ressource externe. */
@font-face{font-family:"DM Sans";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/dm-sans-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/dm-sans-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/dm-sans-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/dm-sans-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/dm-sans-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/dm-sans-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{
  color-scheme:dark;
  /* fond et menu, blocs (cartes), surfaces secondaires (onglets, champs, bandeaux), bordures */
  --bg:#0e0e10; --surface:#131217; --surface-2:#212023; --surface-3:#171719; --border:#222224; --rule:#1b1a1f; --grid:#2a2a2a;
  /* texte : principal, secondaire, discret (contrastes 17,9 / 7,3 / 5,6 sur les blocs) */
  --ink:#ffffff; --ink-2:#a0a2a8; --ink-3:#8a8c92;
  /* une seule couleur d'accent : élément choisi, bordures actives ; liens sur blocs ; bouton principal (5,05:1) */
  --accent:#4a8ad6; --accent-ink:#ffffff; --link:#8bb6ea; --primary:#326fbf; --primary-ink:#ffffff; --active-bg:#22304a;
  /* données : courbe principale, séries, gains, pertes, « à vérifier » */
  --chart-1:#f2f2f3; --chart-muted:#4a4a4a;
  --s1:#5b93ea; --s2:#d95926; --s3:#199e70; --s4:#c98500; --s5:#d55181; --s6:#9b7be0; --s7:#6fa3b3; --s8:#c9783a;
  --good:#5fc39c; --warn:#d9a441; --critical:#e5566f;
  --good-bg:#1b2828; --critical-bg:#2c1a20; --critical-pill:#ff8f9c; --warn-bg:#2a2416; --neutral-bg:#212023; --neutral-ink:#bdbdc0;
  --radius-card:8px; --radius-control:6px;
  --font-body:"DM Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-display:var(--font-body); --font-mono:var(--font-body);   /* plus de Georgia ni de police mono */
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:1.45}
a{color:inherit}
.panel a:not(.btn):not(.inst):not(.nav),.sub a,.note a,.breadcrumb a,.kpi a{color:var(--link)}
.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}
h1,h2,h3{font-family:var(--font-display);font-weight:700;text-wrap:balance;letter-spacing:-.01em}
.muted{color:var(--ink-3)}
.small{font-size:12px}

/* ---------- connexion ---------- */
.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.gate .card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:32px 28px}
.mark{width:40px;height:40px;border-radius:8px;background:var(--primary);color:var(--primary-ink);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:600;font-size:18px}
.gate h1{font-size:22px;margin:18px 0 4px}
.gate label{display:block;font-size:12px;color:var(--ink-2);margin:14px 0 6px}
.gate input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--ink);font:inherit}
.gate input:focus{outline:2px solid var(--accent);outline-offset:1px}
.btn{display:inline-block;text-align:center;padding:10px 14px;border-radius:6px;border:none;background:var(--primary);color:var(--primary-ink);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
.gate .btn{width:100%;margin-top:22px}
.gate .btn.consent-btn{min-height:44px}
.error{margin-top:14px;padding:10px 12px;border-radius:8px;background:color-mix(in oklab,var(--critical) 14%,transparent);color:var(--critical);font-size:13px}

/* ---------- coquille ---------- */
.shell{display:flex;min-height:100vh}
.rail{width:214px;flex:none;background:var(--bg);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 18px;text-decoration:none}
.brand .mark{width:30px;height:30px;font-size:14px;border-radius:8px}
.brand b{font-family:var(--font-display);font-size:15px;font-weight:700}
.rail a.nav{padding:8px 12px;border-radius:6px;color:var(--ink-2);text-decoration:none;display:flex;align-items:center;gap:8px}
.rail a.nav:hover{background:var(--surface-2)}
.rail a.nav.active{background:#ffffff;color:#0e0e10;font-weight:600}   /* élément actif : pastille blanche, texte foncé */
.rail .sep{height:1px;background:var(--border);margin:10px 4px}
.rail .spacer{flex:1}
.rail form button{all:unset;cursor:pointer;padding:9px 12px;border-radius:8px;font-size:12px;color:var(--ink-3)}
.rail form button:hover{background:var(--surface-2)}
.dot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block}
main{flex:1;min-width:0;padding:28px 32px 60px;max-width:1280px}

.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.topbar h1{font-size:24px;margin:0}
.topbar .sub{color:var(--ink-3);font-size:12.5px;margin-top:4px}
.breadcrumb{font-size:12px;color:var(--ink-3);margin-bottom:6px}
.breadcrumb a{text-decoration:none}
.toggle{display:flex;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:3px;gap:2px}
.toggle button{all:unset;cursor:pointer;padding:7px 13px;border-radius:7px;font-size:12.5px;color:var(--ink-2)}
.toggle button[aria-pressed="true"]{background:var(--active-bg);color:var(--ink);font-weight:600}
.toggle button:focus-visible{outline:2px solid var(--accent)}

/* Bascule YTD / origine : sans rechargement */
body[data-mode="ytd"] .m-origin{display:none !important}
body[data-mode="origin"] .m-ytd{display:none !important}

.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:14px;margin-bottom:22px}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px 18px}
.kpi .label{font-size:11.5px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}
.kpi .value{font-size:22px;font-weight:600}
.kpi .sub{font-size:12px;color:var(--ink-3);margin-top:4px}
.kpi .value.pair{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.good{color:var(--good)} .critical{color:var(--critical)} .flat{color:var(--ink-3)}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px}
.grid4 .panel{margin-bottom:0}
@media (max-width:1300px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:700px){.grid4{grid-template-columns:1fr}}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:18px 20px;min-width:0;margin-bottom:16px}
.grid2 .panel,.grid3 .panel{margin-bottom:0}
.st-top>.panel{align-self:start}
.panel h3{font-size:16px;margin:0 0 14px;font-family:var(--font-body)}
.panel .note{font-size:11.5px;color:var(--ink-3);margin-top:10px}

.donut-wrap{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.donut-box{position:relative;flex:none}
.donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none}
.donut-center .num{font-size:13px;font-weight:600}
.legend{display:flex;flex-direction:column;gap:7px;font-size:12.5px;min-width:170px;flex:1}
.legend .row{display:flex;align-items:center;gap:8px;justify-content:space-between}
.legend .k{display:flex;align-items:center;gap:8px;color:var(--ink-2)}
.swatch{width:9px;height:9px;border-radius:2px;flex:none}
.c1{background:var(--s1)} .c2{background:var(--s2)} .c3{background:var(--s3)} .c4{background:var(--s4)}
.c5{background:var(--s5)} .c6{background:var(--s6)} .c7{background:var(--s7)} .c8{background:var(--s8)}

.table-wrap{overflow-x:auto}
table.ledger{width:100%;border-collapse:collapse;font-size:13px}
.ledger th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-3);font-weight:600;padding:0 10px 8px;border-bottom:1px solid var(--border);white-space:nowrap}
.ledger th.r,.ledger td.r{text-align:right}
.ledger td{padding:11px 10px;border-bottom:1px solid var(--border);vertical-align:top}
.ledger tr:last-child td{border-bottom:none}
.ledger tr.total td{font-weight:600;border-top:2px solid var(--border)}
.ledger .inst{font-weight:600;text-decoration:none}
.ledger a.inst:hover{text-decoration:underline}
.ledger .note{color:var(--ink-3);font-size:11.5px;margin-top:3px;line-height:1.4;max-width:46ch}
.pill{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;font-size:12px;font-family:var(--font-mono);font-weight:600;white-space:nowrap}
.pill.good{background:color-mix(in oklab,var(--good) 15%,transparent)}
.pill.critical{background:color-mix(in oklab,var(--critical) 15%,transparent)}
.pill.flat{background:var(--surface-2)}
.nd{color:var(--ink-3);border-bottom:1px dotted var(--ink-3);cursor:help}
.est{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--warn);margin-left:4px}

.status{display:inline-block;min-width:22px;text-align:center;font-size:13px}
.status.ok{color:var(--good)} .status.avertissement{color:var(--warn)} .status.erreur{color:var(--critical)} .status.info{color:var(--ink-3)}
.badge{display:inline-block;padding:1px 7px;border-radius:6px;font-size:11px;background:var(--surface-2);color:var(--ink-2)}

.alerts{display:flex;flex-direction:column;gap:8px}
.alert{border:1px solid var(--border);border-left:4px solid var(--ink-3);border-radius:8px;padding:9px 12px;font-size:12.5px;background:var(--surface)}
.alert.avertissement{border-left-color:var(--warn)}
.alert.erreur{border-left-color:var(--critical)}
.alert .where{font-size:11px;color:var(--ink-3)}

.linechart{width:100%;height:auto;overflow:visible;display:block}
.linechart .grid line{stroke:var(--grid)}
.linechart text{fill:var(--ink-3);font-family:var(--font-mono);font-size:11px}
.linechart .line{fill:none;stroke-width:1.8;stroke:var(--chart-1);stroke-linejoin:round}
.linechart .area{opacity:.08;fill:var(--chart-1)}
.linechart .dot{fill:var(--surface);stroke-width:1.5;stroke:var(--chart-1)}
.linechart .flow-up{fill:var(--good)} .linechart .flow-down{fill:var(--critical)}
.linechart .flow-line{stroke:var(--ink-3);stroke-dasharray:2 3}
.linechart .projection{fill:none;stroke:var(--s1);stroke-width:2;stroke-dasharray:2 4;stroke-linecap:round}
.linechart .proj-dot{fill:var(--s1)}
.linechart .invested{fill:none;stroke:var(--ink-3);stroke-width:1.5;stroke-dasharray:6 4}
.tooltip{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:11.5px;box-shadow:0 8px 24px -10px rgba(0,0,0,.4);opacity:0;transition:opacity .1s;max-width:280px;font-family:var(--font-mono);color:var(--ink);z-index:10}

.tooltip.wide{max-width:none;white-space:normal;font-family:var(--font-body);font-size:12.5px;line-height:1.45}
.tip{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;margin-left:5px;border-radius:50%;border:1px solid var(--ink-3);color:var(--ink-3);font-size:10px;font-weight:600;font-family:var(--font-body);line-height:1;letter-spacing:0;text-transform:none;vertical-align:1px;cursor:help}
.tip:hover,.tip:focus-visible{border-color:var(--accent);color:var(--link)}
.tip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}

dl.facts{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0;font-size:13px}
dl.facts dt{color:var(--ink-3)}
dl.facts dd{margin:0}
footer.note{margin-top:30px;padding-top:16px;border-top:1px solid var(--border);color:var(--ink-3);font-size:11.5px;line-height:1.6;max-width:80ch}
details summary{cursor:pointer;color:var(--ink-2);font-size:12.5px}

@media (max-width:860px){
  .shell{flex-direction:column}
  .rail{width:100%;height:auto;position:static;flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border);padding:10px 12px;align-items:center}
  .brand{padding:0 10px 0 0}
  .rail .spacer,.rail .sep{display:none}
  .rail a.nav{white-space:nowrap}
  main{padding:20px 16px 50px}
  .grid2,.grid3{grid-template-columns:1fr}
  .ledger .hide-sm{display:none}
}
.upload{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:4px 0 8px}
.upload input[type=file]{font:inherit;font-size:13px;max-width:100%}
.upload button,.actions button{font:inherit;font-size:13px;padding:7px 14px;border-radius:6px;border:1px solid var(--primary);background:var(--primary);color:var(--primary-ink);cursor:pointer}
.actions{display:flex;gap:6px;justify-content:flex-end}
.actions form{margin:0}
.actions button.secondary{background:transparent;color:var(--ink-2);border-color:var(--border)}
.periods{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin:0 0 8px}
.periods button{all:unset;cursor:pointer;padding:4px 10px;border-radius:7px;font-size:12px;color:var(--ink-2);border:1px solid var(--border)}
.periods button[aria-pressed="true"]{background:var(--surface-2);color:var(--ink);font-weight:600}
.periods button:focus-visible{outline:2px solid var(--accent)}
.period-custom{font-size:12px;color:var(--ink-3);margin-left:6px}
.period-custom input{font:inherit;font-size:12px;padding:2px 4px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink)}
.is-hidden{display:none}
.more-rows{all:unset;cursor:pointer;display:inline-block;margin-top:8px;padding:5px 12px;border-radius:7px;font-size:12.5px;color:var(--link);border:1px solid var(--border)}
.more-rows:hover{background:var(--surface-2)}
.more-rows:focus-visible,.fold:focus-visible{outline:2px solid var(--accent)}
h3.foldable{cursor:pointer;user-select:none}
.fold{all:unset;display:inline-block;width:0;height:0;margin-right:9px;vertical-align:2px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--ink-3);transition:transform .15s}
.panel.is-folded .fold{transform:rotate(-90deg)}
.panel.is-folded > :not(h3){display:none}
.rail a.nav.sub{padding:5px 12px 5px 28px;font-size:12.5px;color:var(--ink-3)}
.rail a.nav.sub.active{color:#0e0e10}
.rail-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);padding:4px 12px}
@media (max-width:860px){.rail-label{display:none}.rail a.nav.sub{padding:9px 10px}}
/* Ce qui a bougé : barres divergentes autour d'un axe central */
.mv-track{position:relative;width:180px;height:12px;background:var(--surface-2);border-radius:3px}
.mv-track::after{content:"";position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--ink-3)}
.mv-bar{position:absolute;top:0;bottom:0;width:0}
.mv-bar.pos{left:50%;background:var(--good);border-radius:0 3px 3px 0}
.mv-bar.neg{right:50%;background:var(--critical);border-radius:3px 0 0 3px}
.mv-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px}
.mv-form select{font:inherit;padding:3px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink)}
.mv-summary{margin:0 0 12px}
@media (max-width:700px){.mv-track{width:90px}}
/* Lignes regroupées par classe d'actifs */
tr.group td{background:var(--surface-2);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2)}
/* Filtre par classe d'actifs au-dessus des tableaux */
.class-filter{display:flex;align-items:center;gap:6px;margin:0 0 8px;color:var(--ink-3)}
.class-filter select{font:inherit;padding:3px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink)}
.is-filtered{display:none !important}
/* Tableau par classe : une classe se déplie sur ses lignes */
tr.cp-class{cursor:pointer}
tr.cp-class:hover td{background:var(--surface-2)}
.cp-caret{display:inline-block;transition:transform .15s;color:var(--ink-3)}
tr.cp-class[aria-expanded="true"] .cp-caret{transform:rotate(90deg)}
tr.cp-line td{font-size:12.5px;color:var(--ink-2)}
tr.cp-line td:first-child{padding-left:28px}
/* constatations des produits structurés : forme + couleur (jamais la couleur seule) */
.cp{font-weight:600}
.cp.touche,.cp.touche_estime{color:var(--good)} .cp.rate,.cp.rate_estime{color:var(--critical)} .cp.a_venir{color:var(--ink-3)}
.cp.touche_estime,.cp.rate_estime{opacity:.55}
.linechart .series2{fill:none;stroke:var(--good);stroke-width:1.5;stroke-dasharray:5 4}
.linechart .cp-touche{fill:var(--good);stroke:var(--surface);stroke-width:1.5}
.linechart .cp-rate{stroke:var(--critical);stroke-width:2.2;stroke-linecap:round}
.linechart .cp-a_venir{fill:none;stroke:var(--ink-3);stroke-width:1.2}
.linechart .cp-estime{opacity:.5}
.linechart .rate-line{fill:none;stroke:var(--s6);stroke-width:1.6}
.linechart .barrier-coupon{stroke:var(--critical);stroke-width:1.2;stroke-dasharray:6 4}
.linechart .barrier-rappel{stroke:var(--ink-3);stroke-width:1.2;stroke-dasharray:6 4}
.linechart .barrier-label{font-size:9px}
.ratechart{margin-top:6px}
/* Page Produits structurés */
.st-chart{width:100%;min-height:120px}
.st-chart svg{display:block;overflow:visible}
.st-grid{stroke:var(--border);stroke-width:1}
.st-axis{font-size:10px;fill:var(--ink-3)}
.st-lbl{font-size:10px;fill:var(--ink-2);font-family:var(--font-mono)}
.st-lbl-r{fill:var(--s1)}
.st-lbl-cms{fill:var(--critical);font-weight:600}
.st-lbl-scen{fill:var(--accent);font-weight:600}
.st-zone{fill:color-mix(in oklab,var(--good) 12%,transparent)}
.st-coupon{stroke:var(--good);stroke-width:2.5}
.st-coupon.st-thin{stroke-width:1;stroke-dasharray:3 3;opacity:.7}
.st-rappel{stroke:var(--s1);stroke-width:2.5}
.st-cms{stroke:var(--critical);stroke-width:1.5}
.st-scen{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:5 4}
.st-line{fill:none;stroke:var(--s1);stroke-width:1.6}
.st-bar-good{fill:color-mix(in oklab,var(--good) 70%,transparent)}
.st-bar-bad{fill:color-mix(in oklab,var(--critical) 60%,transparent)}
.st-alt{stroke:var(--ink-2);stroke-width:1.2;stroke-dasharray:4 3}
.st-controls{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:center;margin:0 0 14px}
.st-controls label{display:flex;flex-direction:column;gap:6px;font-size:13px}
.st-controls input[type=range]{width:280px;max-width:80vw}
.st-controls input[type=number]{width:80px;font:inherit;padding:3px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink)}
.st-reset{padding:6px 12px;font-size:12px}
/* Sous-groupes ETF / Fonds / Titres en direct dans la classe Actions */
tr.subgroup td{font-size:11.5px;font-weight:600;color:var(--ink-3);padding-left:18px;background:color-mix(in oklab,var(--surface-2) 45%,transparent)}
tr.cp-kind td{font-weight:600;color:var(--ink-2);background:color-mix(in oklab,var(--surface-2) 45%,transparent)}
tr.cp-kind td:first-child{padding-left:18px}
.st-howto{margin:0 0 14px;padding-left:18px;color:var(--ink-2);line-height:1.5}
.st-modes{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 12px;font-size:13px}
.st-modes label{display:flex;gap:6px;align-items:center;cursor:pointer}
.st-presets{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 10px;color:var(--ink-3)}
.st-years{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px;margin:0 0 6px}
.st-year{display:flex;flex-direction:column;gap:3px;font-size:11.5px;color:var(--ink-3)}
.st-year input{width:100%;font:inherit;font-size:13px;padding:3px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink)}
.st-fan{fill:color-mix(in oklab,var(--s1) 18%,transparent);stroke:none}
#st-simulateur select{font:inherit;padding:3px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink)}
.st-check span:first-child{display:flex;gap:6px;align-items:center}
/* Fiches des produits structurés */
.st-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:14px}
@media (max-width:700px){.st-cards{grid-template-columns:1fr}}
.st-card{border:1px solid var(--border);border-radius:8px;padding:14px 16px;background:var(--surface);display:flex;flex-direction:column;gap:10px}
.st-card-title{font-family:var(--font-display);font-size:17px;font-weight:600}
.st-card-title a{color:var(--ink);text-decoration:none}
.st-card-where{font-size:12.5px;color:var(--ink-2);margin-top:2px}
.st-card-desc{font-size:12.5px;color:var(--ink-3);margin-top:6px;line-height:1.45}
.st-card-figs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;border-top:1px solid var(--border);padding-top:10px}
@media (max-width:520px){.st-card-figs{grid-template-columns:repeat(2,1fr)}}
.st-card-figs > div{display:flex;flex-direction:column;gap:2px}
.st-card-figs .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3)}
.st-card-figs b{font-size:15px}
.st-card-figs .sub{font-size:11px;color:var(--ink-3)}
.st-card footer{color:var(--ink-3);border-top:1px solid var(--border);padding-top:8px}
.st-card-syn{background:color-mix(in oklab,var(--surface-2) 55%,transparent);border-radius:8px;padding:8px 10px;line-height:28px}
.st-card-syn .pill{line-height:18px}
/* même pastille que la fiche d'un produit (refonte) : neutre grise, verte si positif (R18, Recette du 03/11) */
.st-card-syn .pill{padding:1px 8px;border-radius:999px;font-family:inherit;font-size:12px;font-weight:500;background:var(--pill-neutral-bg);color:var(--pill-neutral-ink)}
.st-card-syn .pill.good{background:var(--pill-positive-bg);color:var(--pill-positive-ink)}
.st-card-syn .syn-note{display:block;margin:4px 0;line-height:1.5}
.st-cards-alt{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 12px}
.st-cards-alt input{width:70px;font:inherit;padding:3px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink)}
/* Utilisateurs */
.ok-msg{margin:0 0 14px;padding:10px 12px;border-radius:8px;background:color-mix(in oklab,var(--good) 14%,transparent);color:var(--good);font-size:13px}
main > .error{margin:0 0 14px}
.inline-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:0}
.stack-form{display:grid;gap:10px;margin:6px 0;text-align:left}
.stack-form.wide{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-items:end}
.stack-form label{display:grid;gap:4px;font-size:12px;color:var(--ink-2)}
.stack-form input,.stack-form select,.inline-form select{font:inherit;font-size:13px;padding:7px 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--ink);min-width:0}
.stack-form button,.inline-form button{font:inherit;font-size:13px;padding:7px 14px;border-radius:6px;border:1px solid var(--primary);background:var(--primary);color:var(--primary-ink);cursor:pointer}
.inline-form button.secondary{background:transparent;color:var(--ink-2);border-color:var(--border)}
.actions button.danger{background:transparent;color:var(--critical);border-color:var(--critical)}
.user-more summary{cursor:pointer;font-size:13px;color:var(--link)}
.user-more[open]{min-width:240px}
.user-more .actions{margin-top:10px;flex-wrap:wrap}
/* Page compte : premier écran (valeur, rendement net, à faire), progression sous la courbe, détail replié */
.fresh{font-size:11px;padding:1px 8px;border-radius:6px;margin-left:4px}
.fresh.ok{background:color-mix(in oklab,var(--good) 14%,transparent);color:var(--good)}
.fresh.old{background:color-mix(in oklab,var(--warn) 16%,transparent);color:var(--warn)}
.kpis.hero{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.kpis.hero .value.big{font-size:30px;line-height:1.15}
.kpis.hero .value.small-gain{font-size:16px;font-weight:600;margin-top:4px}
.panel.todo h3{margin-bottom:8px}
.panel.todo.has-items{border-color:color-mix(in oklab,var(--warn) 55%,var(--border))}
.panel.todo .checks-line{margin:8px 0 0}
.panel.todo details.infos{margin-top:8px}
.panel.todo details.infos summary{cursor:pointer;color:var(--ink-3)}
.grid2.chart-first{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.contrib{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
.contrib .label{font-size:12px;color:var(--ink-3);margin-bottom:2px}
.contrib .num{font-size:18px;font-weight:600}
.contrib .total{border-left:1px solid var(--border);padding-left:12px}
.section-title{font-size:17px;margin:26px 0 12px}
.section-title .small a{color:inherit}
table.bridge td:first-child{max-width:360px}
table.bridge tr.total td{font-weight:600;border-top:1px solid var(--border)}
.progress{margin-top:12px}
.progress .kpis.progress-kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:12px}
.progress .kpi{padding:12px 14px}
.progress .kpi .value{font-size:19px}
.progress-title{font-size:13px;margin:4px 0 6px}
.panel-tools{display:flex;justify-content:flex-end;margin:-6px 0 10px}
@media (max-width:900px){.grid2.chart-first{grid-template-columns:minmax(0,1fr)}.contrib .total{border-left:0;padding-left:0}}
.kpis.hero .value.big .pill{font-size:28px;padding:0;background:none;font-family:inherit;font-weight:700}
.kpis.hero .value.big .pill.good{color:var(--good)} .kpis.hero .value.big .pill.critical{color:var(--critical)}
.kpis.hero .value.big .nd{font-size:24px}
details.infos-only{margin:-6px 0 16px}
details.infos-only summary{cursor:pointer;color:var(--ink-3)}
.progress .split{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px;align-items:start;margin:4px 0 14px;padding:14px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.progress .split .contrib{grid-template-columns:repeat(auto-fit,minmax(115px,1fr))}
.progress .compo .donut-wrap{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
@media (max-width:900px){.progress .split{grid-template-columns:minmax(0,1fr)}}
.chart-row{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:22px;align-items:start}
.chart-side{border-left:1px solid var(--border);padding-left:20px}
.chart-side .donut-wrap{flex-direction:column;align-items:stretch;gap:10px}
.chart-side .donut-box{align-self:center}
.chart-side .progress-title{margin-top:0}
.class-result{margin:4px 0 14px;padding:12px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.class-result .contrib{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:10px}
.class-result .contrib .num{font-size:16px;white-space:nowrap}
.class-result .contrib .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:900px){.chart-row{grid-template-columns:minmax(0,1fr)}.chart-side{border-left:0;padding-left:0;border-top:1px solid var(--border);padding-top:12px}
  .class-result .contrib{grid-auto-flow:row;grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}}
.to-class{cursor:pointer;border-radius:6px}
.to-class:hover .label,.legend .row.to-class:hover .k{text-decoration:underline}
tr.flash td{background:color-mix(in oklab,var(--accent, #c9a227) 22%,transparent);transition:background .4s}
.compo-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.compo-head .progress-title{margin:0}
.compo-toggle{margin:0}
.panel-tools{gap:12px;flex-wrap:wrap;align-items:center}
.pos-views{margin:0;align-items:center}
.pos-views .small{margin-right:4px}
/* Légende du camembert : montant au survol (ordinateur), sous le pourcentage sur écran tactile */
.legend .val{display:inline-flex;flex-direction:column;align-items:flex-end;text-align:right}
@media (hover:hover){.legend .val .amt{display:none}.legend .row:hover .val .pct{display:none}.legend .row:hover .val .amt{display:inline}}
@media (hover:none){.legend .val .amt{font-size:11px;color:var(--ink-3)}}
.ledger td.r .note{margin-left:auto;text-align:right}
table.bridge tr.subtotal td{font-weight:600;color:var(--critical);border-top:1px dashed var(--border)}
table.bridge tr.subtotal td:first-child{color:var(--ink-2)}
table.bridge .note-rate{margin-top:4px}
table.bridge tr.total td .note{font-weight:400}

/* ---------- assistant ---------- */
.chat-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:16px;align-items:start}
.chat-list{position:sticky;top:16px;display:flex;flex-direction:column;gap:2px;max-height:calc(100vh - 32px);overflow:auto}
.chat-list a{text-decoration:none;display:flex;flex-direction:column;padding:7px 9px;border-radius:8px;font-size:13px}
.chat-list a:hover{background:var(--surface-2)}
.chat-list a.active{background:var(--surface-2);font-weight:600}
.chat-list .chat-new{color:var(--link);font-weight:600;margin-bottom:6px}
.chat-thread{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}
.chat-msg{max-width:860px;padding:10px 14px;border-radius:8px;border:1px solid var(--border);overflow-wrap:anywhere}
.chat-msg p{margin:0 0 8px}
.chat-msg p:last-child{margin-bottom:0}
.chat-msg.user{align-self:flex-end;background:var(--surface-2);border-color:transparent;max-width:640px}
.chat-msg.assistant{align-self:flex-start;background:var(--surface)}
.chat-msg.site{align-self:center;font-size:12px;color:var(--ink-3);border-style:dashed}
.chat-msg h4{font-size:13.5px;margin:10px 0 6px}
.chat-msg ul,.chat-msg ol{margin:4px 0 8px;padding-left:20px}
.chat-msg pre{background:var(--surface-2);border-radius:8px;padding:8px 10px;overflow:auto;font-family:var(--font-mono);font-size:12px;white-space:pre-wrap}
.chat-msg code{font-family:var(--font-mono);font-size:12px;background:var(--surface-2);padding:0 4px;border-radius:4px}
.chat-msg .table-wrap{margin:6px 0 10px}
.chat-msg.live{border-style:dashed}
.chat-activity::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:6px;animation:chat-pulse 1.2s ease-in-out infinite}
@keyframes chat-pulse{50%{opacity:.25}}
@media (prefers-reduced-motion: reduce){.chat-activity::before{animation:none}}
.chat-files{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.chat-steps{margin-top:6px;font-size:12px;color:var(--ink-3)}
.chat-steps summary{cursor:pointer}
.chat-proposal{border:1px solid color-mix(in oklab,var(--accent) 45%,var(--border));border-radius:8px;padding:10px 14px;display:flex;flex-direction:column;gap:6px;max-width:860px}
.chat-proposal .actions{display:flex;gap:8px}
.chat-form{display:flex;flex-direction:column;gap:8px}
.chat-form textarea{width:100%;font:inherit;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--ink);resize:vertical}
.chat-form textarea:focus{outline:2px solid var(--accent);outline-offset:1px}
.chat-form-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
.chat-form-tools input[type=file]{font:inherit;font-size:12.5px;max-width:100%}
.chat-form button{font:inherit;font-size:13px;padding:7px 16px;border-radius:6px;border:1px solid var(--primary);background:var(--primary);color:var(--primary-ink);cursor:pointer}
.chat-form button:disabled,.chat-form textarea:disabled{opacity:.55;cursor:not-allowed}
@media (max-width: 900px){
  .chat-layout{grid-template-columns:1fr}
  .chat-list{position:static;max-height:none}
}
.chat-h{font-size:14px;margin:0 0 14px;font-family:var(--font-body)}

/* ---------- bulle de l'assistant (toutes les pages) ---------- */
.chat-bubble{position:fixed;right:20px;bottom:20px;z-index:60;width:54px;height:54px;border-radius:50%;border:none;background:var(--primary);color:var(--primary-ink);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.chat-bubble:hover{filter:brightness(1.07)}
.chat-bubble:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.chat-widget.is-open + .chat-bubble{display:none}
.cw-panel{position:fixed;right:20px;bottom:20px;z-index:61;width:min(420px,calc(100vw - 32px));height:min(620px,calc(100vh - 40px));display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 36px rgba(0,0,0,.22);overflow:hidden}
.cw-panel[hidden]{display:none}
.cw-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px 10px 16px;border-bottom:1px solid var(--border);font-family:var(--font-display);font-size:15px}
.cw-tools{display:flex;align-items:center;gap:4px;font-family:var(--font-body)}
.cw-tools button,.cw-tools a{font:inherit;font-size:12px;color:var(--ink-2);background:transparent;border:1px solid transparent;border-radius:7px;padding:4px 8px;cursor:pointer;text-decoration:none}
.cw-tools button:hover,.cw-tools a:hover{background:var(--surface-2)}
.cw-tools .cw-close{font-size:20px;line-height:1;padding:0 8px}
.cw-body{flex:1;overflow-y:auto;padding:12px;margin:0;gap:10px}
.cw-body .chat-msg{max-width:100%;font-size:13px;padding:8px 11px}
.cw-body .chat-msg.user{max-width:88%}
.cw-body .chat-proposal{font-size:12.5px}
.cw-empty p{margin:0 0 8px}
.cw-form{border-top:1px solid var(--border);padding:10px 12px;display:flex;flex-direction:column;gap:6px}
.cw-form textarea{width:100%;font:inherit;font-size:13px;padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--ink);resize:none}
.cw-form textarea:focus{outline:2px solid var(--accent);outline-offset:1px}
.cw-actions{display:flex;align-items:center;gap:8px}
.cw-attach{cursor:pointer;font-size:16px;padding:2px 4px;border-radius:6px;position:relative}
.cw-attach:hover{background:var(--surface-2)}
.cw-attach input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.cw-files{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cw-form button[type=submit]{font:inherit;font-size:13px;padding:6px 14px;border-radius:6px;border:1px solid var(--primary);background:var(--primary);color:var(--primary-ink);cursor:pointer}
.cw-form button:disabled,.cw-form textarea:disabled{opacity:.55;cursor:not-allowed}
@media (max-width:600px){
  .cw-panel{right:0;bottom:0;width:100vw;height:100dvh;border-radius:0;border:none}
  .chat-bubble{right:16px;bottom:16px}
}
@media print{.chat-bubble,.chat-widget{display:none}}
.fee-cmp .fee + .fee{margin-top:6px;padding-top:6px;border-top:1px dotted var(--border)}
.fee-st{font-size:10.5px;padding:1px 6px;border-radius:6px;background:var(--surface-2);color:var(--ink-3)}
.fee-st.a_confirmer{background:color-mix(in oklab,var(--warn) 16%,transparent);color:var(--warn)}
.fee-st.constate{background:color-mix(in oklab,var(--accent, #c9a227) 14%,transparent)}
.st-hist-wrap{position:relative}
.st-cross{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:3 3}
.st-dot{fill:var(--s1);stroke:var(--surface);stroke-width:1.5}
.st-tip{position:absolute;display:none;pointer-events:none;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 9px;font-size:12px;line-height:1.4;box-shadow:0 8px 24px -10px rgba(0,0,0,.4);white-space:nowrap;z-index:5}
.st-prod{cursor:pointer;outline:none}
.st-prod:hover .st-prod-name,.st-prod:focus .st-prod-name{fill:var(--s1);text-decoration:underline}
.st-prod-who{font-size:9px;opacity:.8}
.st-card{scroll-margin-top:80px}
.st-card.st-flash{animation:stflash 1.6s ease-out}
@keyframes stflash{0%{box-shadow:0 0 0 3px var(--s1)}100%{box-shadow:0 0 0 3px transparent}}
/* Sélecteur de période en haut de page */
.period-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:-6px 0 16px}
.period-bar .pb-chip{font-size:12.5px;padding:4px 10px;border-radius:8px;border:1px solid var(--border);color:var(--ink-2);text-decoration:none;background:var(--surface)}
.period-bar .pb-chip.on{background:var(--surface-2);color:var(--ink);font-weight:600;border-color:var(--ink-3)}
.period-bar .pb-chip.off{opacity:.45;cursor:not-allowed}
.period-bar .pb-dates{font-size:12.5px;color:var(--ink-3);margin-left:6px;display:inline-flex;gap:4px;align-items:center}
.period-bar .pb-dates.on{color:var(--ink)}
.period-bar input[type=date],.period-bar select{font:inherit;font-size:12px;padding:2px 4px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink)}
.period-bar button{font:inherit;font-size:12px;padding:3px 10px;border-radius:6px;border:1px solid var(--border);background:var(--surface-2);cursor:pointer}
.warn-note{color:var(--warn)}
.alerts-link{margin:-6px 0 16px}
.value-bridge{font-size:13px;color:var(--ink-2);line-height:1.6;margin:12px 0 10px;padding:10px 12px;background:var(--surface-2);border-radius:8px}
.fee-cmp td,.fee-cmp th{white-space:normal}
.fee-cmp td:first-child{min-width:200px}
.fee-cmp td.r{min-width:120px;max-width:230px}
.fee-cmp .note{font-size:11px}
/* Accès direct aux comptes : recherche, cartes sous le titre, comptes dans la barre latérale. */
.go-account input{width:280px;max-width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}
.go-account input:focus{outline:2px solid var(--accent);outline-offset:-1px}
.acc-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:22px}
.ac-card{display:block;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 14px;text-decoration:none;color:inherit}
a.ac-card:hover,.ac-card summary:hover{border-color:var(--accent)}
.ac-card summary{list-style:none;cursor:pointer}
.ac-card summary::-webkit-details-marker{display:none}
details.ac-card[open]{grid-column:1/-1}
details.ac-card[open] summary{border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:4px}
.ac-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ac-card{min-width:0;align-self:start}
a.ac-card,details.ac-card:not([open]){align-self:stretch}
.ac-title::after{content:" ›";color:var(--ink-3)}
details.ac-card .ac-title::after{content:" ▾"}
.ac-sub{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ac-value{font-size:16px;margin-top:8px}
.ac-rate{font-size:12.5px;margin-top:2px}
.ac-card ul{list-style:none;margin:0;padding:0}
.ac-card li a{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:7px 4px;border-top:1px solid var(--border);text-decoration:none}
.ac-card li:first-child a{border-top:0}
.ac-card li a:hover{background:var(--surface-2)}
.rail a.nav.acc{padding:4px 12px 4px 28px;font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.rail a.nav.acc.active{color:var(--ink);font-weight:600}
.rail .nav-group summary{cursor:pointer;padding:4px 12px 4px 28px;font-size:12.5px;color:var(--ink-2)}
.rail .nav-group a.nav.acc{padding-left:40px}
.rail .nav-group .count{color:var(--ink-3);font-size:11px}
@media (max-width:860px){.rail a.nav.acc,.rail .nav-group{display:none}.go-account,.go-account input{width:100%}.acc-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:861px){.rail{overflow-y:auto}}
/* Conditions à plusieurs éléments (« change 0,30 % ; monétaire 0 % ») : une ligne par élément, texte courant qui passe à la ligne. */
.fee-cmp .num{white-space:normal}
.fee-cmp .fee-list{list-style:none;margin:0;padding:0;font-size:12.5px;line-height:1.5}
.fee-cmp .fee-list li{white-space:normal}
.fee-cmp .fee .note{margin-top:2px}
.topbar .go-account{align-self:flex-end}
a.ac-card{display:flex;flex-direction:column}a.ac-card .ac-rate{margin-top:auto;padding-top:4px}
.go-account{position:relative}
.go-account input{width:320px}
.go-list{position:absolute;right:0;top:calc(100% + 4px);z-index:20;width:min(440px,90vw);max-height:360px;overflow-y:auto;margin:0;padding:4px 0;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12)}
.go-list li[role=option]{padding:6px 14px;cursor:pointer;display:flex;flex-direction:column}
.go-list li[role=option] b{font-weight:600;font-size:13px}
.go-list li[role=option] span{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.go-list li.on,.go-list li[role=option]:hover{background:var(--surface-2)}
.go-list .go-person{padding:8px 14px 2px;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.go-list .go-none{padding:8px 14px;color:var(--ink-3);font-size:12.5px}
@media (max-width:860px){.go-account input{width:100%}.go-list{left:0;right:auto;width:100%}}
.kpi-line{font-size:12px;color:var(--ink-2);margin-top:8px;padding-top:6px;border-top:1px solid var(--border);line-height:1.5}
.kpi-line b{font-weight:600;color:var(--ink)}
.own-list{list-style:none;margin:4px 0 0;padding:0;font-size:12px;color:var(--ink-2)}
ul.own-list{display:flex;flex-wrap:wrap;gap:2px 12px}
.own-list summary{cursor:pointer;color:var(--ink-2)}
.own-list ul{list-style:none;margin:4px 0 0;padding:0}
.own-list b{font-weight:600;color:var(--ink)}
/* double authentification */
.gate .card.wide{max-width:520px}
.gate .check{display:flex;gap:8px;align-items:center;margin-top:16px;color:var(--ink-2)}
.gate .check input{width:auto;margin:0}
.gate-msg{margin:14px 0 0}
.gate-alt{margin-top:16px;font-size:12.5px;color:var(--ink-2)}
.gate-alt summary{cursor:pointer}
.gate-alt a{color:var(--ink-2);display:inline-flex;align-items:center;min-height:44px}
button.link{all:unset;cursor:pointer;color:var(--link);text-decoration:underline;font-size:12.5px}
.gate-section{margin-top:22px;padding-top:18px;border-top:1px solid var(--border)}
.gate-section h3{font-size:15px;margin:0 0 6px}
.steps{padding-left:18px;margin:8px 0;line-height:1.5}
.qr{display:flex;justify-content:center;margin:12px 0}
.qr svg{width:264px;height:264px;max-width:100%;border-radius:8px}   /* QR code plus grand (Recette du 30/10/2026, n° 2) */
code.secret{font-size:14px;letter-spacing:.04em;word-break:break-all;user-select:all}
.recovery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;list-style:none;padding:0;margin:12px 0 18px}
.recovery code{font-size:15px;letter-spacing:.06em}
/* Activation sur téléphone (Recette du 30/10/2026, n° 1) : lien vers l'application seulement sur un téléphone ; clé
   visible avec « Copier la clé » (forms.js). États de Mon compte sur une ligne (n° 18). */
.on-phone{display:none;margin:8px 0}
@media (pointer:coarse),(max-width:600px){.on-phone{display:block}.on-phone .btn{width:100%}}
.key-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.key-line code.secret{font-size:15px}
.mfa-status .status{white-space:nowrap}
.btn.small-btn{padding:6px 12px;font-size:12.5px;font-weight:500}
.btn.secondary-btn{background:transparent;color:var(--ink-2);border:1px solid var(--border)}
.panel .stack-form .btn{justify-self:start}
.mfa-status td{vertical-align:middle}
.mfa-status form{margin:0}
table.flows-split tr.subtotal td{font-weight:600;border-top:1px dashed var(--border)}
table.flows-split tr.group td{text-transform:none;letter-spacing:0;font-size:12.5px}
.linechart .gross{fill:none;stroke:var(--ink-3);stroke-width:1.2;stroke-dasharray:4 4}
/* Date de valeur des cases « Valeur nette » : plage des relevés, détail au clic. */
.value-dates{font-size:12px;color:var(--ink-2);margin-top:8px;padding-top:6px;border-top:1px solid var(--border)}
.value-dates summary{cursor:pointer;list-style:none;line-height:1.5}
.value-dates summary::-webkit-details-marker{display:none}
.value-dates .vd-more{color:var(--link)}
.value-dates .vd-more::after{content:" ›"}
.value-dates[open] .vd-more::after{content:" ▾"}
.vd-table{width:100%;border-collapse:collapse;margin-top:6px}
.vd-table td{padding:2px 4px 2px 0;vertical-align:top}
.vd-table td.r{text-align:right}
.vd-table .vd-h td{color:var(--ink-3);padding-top:6px;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.demo-banner{position:sticky;top:0;z-index:50;background:var(--warn);color:#fff;text-align:center;font-size:13px;font-weight:600;padding:5px 12px;letter-spacing:.02em}
.linechart .line.estimated{stroke:var(--ink-3);stroke-dasharray:5 5;stroke-width:1.5}
/* Gestionnaire de plusieurs familles : famille ouverte en titre du menu, recherche au clic ; page « Mes familles ». */
.fam-pick{position:relative;margin-bottom:8px}
.fam-pick summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
.fam-pick summary::-webkit-details-marker{display:none}
.fam-pick summary:hover{border-color:var(--accent)}
.fam-pick-name{display:flex;flex-direction:column;min-width:0;flex:1}
.fam-pick-name b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fam-pick-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.fam-pick-caret{color:var(--ink-3)}
.fam-pop{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);min-width:220px}
.fam-pop input{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:13px;background:var(--surface);color:var(--ink)}
.fam-pop-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin:8px 2px 2px}
.fam-pop ul{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}
.fam-pop li a{display:block;padding:5px 8px;border-radius:6px;text-decoration:none;font-size:13px}
.fam-pop li a:hover,.fam-pop li a[aria-current]{background:var(--surface-2)}
.fam-pop-none{font-size:12px;color:var(--ink-3);margin:6px 2px}
.fam-pop-more{display:block;margin-top:6px;padding:6px 8px;border-top:1px solid var(--border);font-size:12.5px;color:var(--link);text-decoration:none}
.fam-search input{width:320px;max-width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}
.fam-sort{margin-bottom:8px;color:var(--ink-2)}
.fam-sort a{color:var(--ink-2)}
.fam-table tr.on td{background:var(--surface-2)}
.fam-table td .status{margin:1px 0;display:inline-block}
@media (max-width:860px){.fam-search,.fam-search input{width:100%}.fam-pop{position:static;box-shadow:none}}
.fam-pick .mark{width:30px;height:30px;font-size:14px;border-radius:8px;flex:none}
/* Import : lecture d'un relevé (démonstration) et écarts qui retiennent un import. */
.sim-read{border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin-bottom:10px;background:var(--surface-2)}
.sim-read ul{margin:6px 0 0;padding-left:18px;font-size:13px}
.import-reading{margin-left:10px}
tr.sub-row td{border-top:none;padding-top:0}
/* Assistant : historique des discussions (bulle) et recherche (page Assistant). */
.cw-history{padding:10px 12px;overflow-y:auto;flex:1;min-height:0}
.cw-history input{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:13px;background:var(--surface);color:var(--ink)}
.cw-hist-list{list-style:none;margin:8px 0 0;padding:0}
.cw-hist-list button{all:unset;box-sizing:border-box;cursor:pointer;display:flex;justify-content:space-between;gap:10px;width:100%;padding:7px 8px;border-radius:8px;font-size:13px}
.cw-hist-list button:hover{background:var(--surface-2)}
.cw-hist-list button span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cw-hist[aria-expanded="true"]{font-weight:600}
.chat-search input{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:13px;background:var(--surface);color:var(--ink);margin:6px 0}
.chat-widget [hidden]{display:none!important}
[data-mode-panel].is-hidden{display:none!important}   /* simulateur : réglages du mode choisi seulement */
.rail a.nav.fam-top{margin-bottom:6px;font-weight:600}
/* Compte ouvert dans le menu : trait fin à gauche, nom en entier (sur deux lignes si besoin), sans aplat. */
.rail a.nav.acc.active{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35;background:none;font-weight:600;color:var(--ink);border-radius:0;box-shadow:inset 2px 0 0 var(--accent);margin-left:20px;padding-left:8px}
.rail a.nav.acc:hover{background:none;color:var(--ink)}
.rail .nav-group a.nav.acc.active{margin-left:32px}

/* Partage d'un écart avec l'établissement (Contrôles) et vue établissement. */
.share-form{display:block;margin-top:2px}
.share-item{border-top:1px solid var(--border);padding:8px 0}
.share-item:first-of-type{border-top:0}
.mail-preview pre{white-space:pre-wrap;font-family:inherit;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px}

/* Téléphone : barre du haut = famille (ou établissement) + bouton « Menu » ; le menu se déplie en liste verticale. */
.rail-toggle{display:none}
@media (max-width:860px){
  .rail{flex-wrap:wrap;overflow:visible;gap:6px;position:relative}
  .rail-toggle{display:inline-flex;order:2;margin-left:auto;font:inherit;font-size:13px;padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--ink);cursor:pointer}
  .rail .brand,.rail .fam-pick{order:1;flex:1;min-width:0;margin:0}
  .rail:not(.open) > :not(.brand):not(.fam-pick):not(.rail-toggle){display:none}
  .rail.open > *:not(.brand):not(.fam-pick):not(.rail-toggle){order:3;flex-basis:100%}
  .rail.open a.nav{white-space:normal;padding:11px 10px;border-radius:8px}
  .rail.open a.nav.sub{padding-left:26px}
  .rail.open form{flex-basis:100%}
  .rail.open form button{padding:11px 10px}
  .rail.open .sep{display:block;height:1px;background:var(--border);margin:4px 0}
}

/* Répartitions de la vue globale : autant de colonnes que la largeur le permet (personne, établissement, classe, zone, secteur). */
.grid4.grid-fit{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}

/* Contrôles : détail du calcul des commissions et question à la banque. */
.fee-detail,.fee-question{margin-top:4px}
.fee-detail summary,.fee-question summary{font-size:12.5px}
.fee-calc{margin:6px 0}
.fee-question textarea{width:100%;font:inherit;font-size:12.5px;border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--surface);color:var(--ink);margin:6px 0}

/* Bandeau des répartitions (classes, zones, secteurs) : une couleur fixe par catégorie sur tout le site
   (repartitions.py), jamais deux fois la même dans un bloc ; « Non détaillé » en gris. */
:root{   /* valeurs du thème sombre « Noir terminal » (les valeurs claires reviendront avec le thème clair) */
  --p1:#5b93ea; --p2:#2cbcab; --p3:#f0954a; --p4:#e86a9a; --p5:#a687e6; --p6:#5cc06a;
  --p7:#b98a62; --p8:#e0be4a; --p9:#e8665a; --p10:#66bfe8; --p11:#a0b14a; --p12:#c983d6; --p-nd:#77756d;
}
.rep-band{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 16px}
@media (max-width:900px){.rep-band{grid-template-columns:minmax(0,1fr)}}
.rep-block{margin:0}
.rep-block h3{margin-bottom:2px}
.rep-base{margin-bottom:8px}
.rep-head{display:flex;justify-content:center;margin:2px 0 8px}
.rep-ring{width:110px;height:110px}
.rep-ring-bg{stroke:var(--surface-2)}
.rep-seg{cursor:pointer;transition:stroke-width .1s}
.rep-seg:hover,.rep-seg.on,.rep-seg:focus-visible{stroke-width:13;outline:none}
.rep-ring-txt{font-family:var(--font-mono);font-size:9px;fill:var(--ink)}
.rep-list{list-style:none;margin:0;padding:0}
.rep-item{display:grid;grid-template-columns:10px minmax(0,1fr) auto 48px;grid-template-rows:auto 5px;column-gap:8px;row-gap:3px;align-items:center;padding:5px 6px;border-radius:7px;cursor:pointer;font-size:13px}
.rep-item:hover,.rep-item:focus-visible{background:var(--surface-2);outline:none}
.rep-item.on{background:var(--surface-2);box-shadow:inset 2px 0 0 var(--accent)}
.rep-dot{width:10px;height:10px;border-radius:50%}
.rep-name{line-height:1.25}
.rep-amt{font-size:12px;color:var(--ink-2)}
.rep-pct{font-size:12px;text-align:right}
.rep-bar{grid-column:2 / 5;width:100%;height:5px;background:var(--surface-2);border-radius:3px;display:block}
.rep-bar rect{fill:var(--c)}
.rep-dot{background:var(--c)}
.rep-seg{stroke:var(--c)}
.c-p1{--c:var(--p1)}.c-p2{--c:var(--p2)}.c-p3{--c:var(--p3)}.c-p4{--c:var(--p4)}.c-p5{--c:var(--p5)}.c-p6{--c:var(--p6)}
.c-p7{--c:var(--p7)}.c-p8{--c:var(--p8)}.c-p9{--c:var(--p9)}.c-p10{--c:var(--p10)}.c-p11{--c:var(--p11)}.c-p12{--c:var(--p12)}.c-p-nd{--c:var(--p-nd)}
.rep-more summary{font-size:12.5px;padding:4px 6px;color:var(--ink-2)}
.rep-filterbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 8px}
.rep-search{font:inherit;font-size:12.5px;padding:4px 8px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--ink);min-width:200px}
.rep-chip{background:var(--surface-2);border-radius:999px;padding:3px 10px}
.is-repfiltered{display:none !important}
/* Paramétrage (§6.10) : parcours, onglets, organigramme */
.param-etapes{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;counter-reset:etape}
.param-etapes li{counter-increment:etape;display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;min-width:120px}
.param-etapes li a{font-weight:600;color:inherit;text-decoration:none}
.param-etapes li a::before{content:counter(etape) ". ";color:var(--ink-3)}
.param-etapes li.done{border-color:color-mix(in oklab,var(--good) 45%,var(--border))}
.param-etapes li.done .small{color:var(--good)}
.param-etapes li.todo .small{color:var(--warn)}
.param-etapes li.current{background:var(--surface-2)}
.param-manques{margin-top:12px}
.param-manques ul,.param-journal ul{margin:6px 0 0;padding-left:18px}
.param-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 16px;border-bottom:1px solid var(--border)}
.param-tabs a{padding:8px 12px;color:var(--ink-2);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;font-size:13.5px}
.param-tabs a.active{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.orga{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.orga-box{border:1px solid var(--border);border-radius:8px;padding:10px 12px;display:grid;gap:6px;align-content:start}
.orga-box.societe{background:var(--surface-2)}
.orga-title{font-weight:600;font-size:13.5px}
.param-del{display:inline-block;margin-top:8px}
.param-del summary{color:var(--critical)}
.param-journal{margin-top:10px}
.stack-form fieldset{border:1px solid var(--border);border-radius:8px;padding:6px 10px;display:flex;flex-wrap:wrap;gap:4px 12px}
.stack-form label.check{display:flex;gap:6px;align-items:center;color:var(--ink)}
.param-propose{margin-bottom:8px}
.param-copy{margin-top:12px}
.panel .user-more{margin-top:10px}
/* Bibliothèque des documents (documents.html) et liens vers les pièces */
.doc-filters{display:grid;gap:12px}
.doc-search{display:flex;gap:8px}
.doc-search input{flex:1;min-width:0;font:inherit;font-size:14px;padding:8px 12px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--ink)}
.doc-search button,.doc-selects button{font:inherit;font-size:13px;padding:7px 14px;border-radius:6px;border:1px solid var(--primary);background:var(--primary);color:var(--primary-ink);cursor:pointer}
.doc-selects{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.doc-selects label{display:grid;gap:4px;font-size:12px;color:var(--ink-2)}
.doc-selects select{font:inherit;font-size:13px;padding:6px 8px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--ink);max-width:260px}
.doc-selects button.secondary{background:transparent;color:var(--ink-2);border-color:var(--border)}
.doc-table td{vertical-align:top}
.nowrap{white-space:nowrap}
.badge.warn{background:color-mix(in oklab,var(--warn) 18%,transparent);color:var(--warn)}
.show-sm{display:none}
.h-link{float:right;font-size:12px;font-weight:400}
.check-doc a{color:var(--ink-2)}
@media (max-width:720px){.show-sm{display:inline}.doc-selects label{flex:1 1 140px}.doc-selects select{max-width:none;width:100%}.h-link{float:none;display:block;margin-top:4px}}
/* Coffre-fort (coffre.html, coffre_piece.html) */
.coffre-alerts{list-style:none;padding:0;margin:0;display:grid;gap:6px;font-size:13px}
.coffre-alerts a{color:inherit}
.coffre-keep{border:1px solid var(--border);border-radius:8px;padding:8px 12px;margin:12px 0;display:grid;gap:4px}
.coffre-keep legend{padding:0 4px;color:var(--ink-2)}
.coffre-keep input{margin-right:6px}
.actions.left{justify-content:flex-start;flex-wrap:wrap}
.coffre-depot input[type=file]{font:inherit;font-size:13px;max-width:100%}

/* Mon compte : mot de passe ressaisi avant de générer de nouveaux codes de secours (revue du 27/10/2026, n° 11). */
.inline-pw { max-width: 11rem; margin: 0 .4rem .3rem 0; }
/* ======================================================================================================================
   « Noir terminal » : règles de mise en page (cahier §10.2). Placées en dernier : elles l'emportent sur les règles
   plus anciennes ci-dessus sans les réécrire une à une.
   ==================================================================================================================== */
/* Grand chiffre en haut (vue globale, personne, compte) : le premier indicateur, seul et très grand, sans carte ;
   les suivants en cartes compactes dessous. Montant et « € » restent dans le même élément (concordance). */
.kpis.hero{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:20px}
.kpis.hero > .kpi:first-child{grid-column:1/-1;background:none;border:none;padding:2px 0 8px}
.kpis.hero > .kpi:first-child .label{font-size:13px;text-transform:none;letter-spacing:0;color:var(--ink-2);margin-bottom:0}
.kpis.hero > .kpi:first-child .value{font-size:clamp(40px,6vw,72px);font-weight:700;letter-spacing:-.03em;line-height:1.05;white-space:normal}
.kpis.hero > .kpi:first-child .sub{font-size:13px;color:var(--ink-2)}
.kpi{border-radius:var(--radius-card);padding:14px 16px}
.kpi .label{font-size:11.5px;color:var(--ink-3);font-weight:500}
.kpis.hero .value.big{font-size:28px;font-weight:700}
/* Pastilles de variation : vert, rouge, ambre sur fond sombre de leur couleur ; toujours doublées d'un signe. */
.pill{font-family:var(--font-body);font-variant-numeric:tabular-nums;border-radius:var(--radius-control)}
.pill.good{background:var(--good-bg);color:var(--good)}
.pill.critical{background:var(--critical-bg);color:var(--critical-pill)}
.pill.flat{background:var(--neutral-bg);color:var(--neutral-ink)}
.badge{border-radius:var(--radius-control)}
.badge.warn,.est{color:var(--warn)}
/* Blocs : arrondis serrés, aucune ombre, titres 16 px ; formulaires et boutons à 6 px. */
.panel{border-radius:var(--radius-card)}
.panel h3,.chat-h{font-weight:700}
.ledger th{color:var(--ink-3);font-weight:500;letter-spacing:.02em}
.ledger td{border-bottom-color:var(--rule)}
.ledger tr.total td{border-top-color:var(--border)}
input,select,textarea{color-scheme:dark}
.stack-form input,.stack-form select,.inline-form select,.doc-search input,.doc-selects select,.gate input{border-radius:var(--radius-control);background:var(--surface-3);border-color:var(--border)}
.stack-form button,.inline-form button,.upload button,.actions button,.chat-form button,.cw-form button[type=submit],.doc-search button,.doc-selects button{border-radius:var(--radius-control);font-weight:500}
.actions button.secondary,.inline-form button.secondary,.doc-selects button.secondary,.btn.secondary-btn{background:transparent;color:var(--ink);border:1px solid var(--border)}
.actions button.danger{background:transparent;color:var(--critical);border-color:var(--critical)}
.alert{background:var(--surface);border-radius:var(--radius-control)}
.error{background:var(--critical-bg);color:var(--critical-pill)}
.ok-msg{background:var(--good-bg);color:var(--good)}
.mark{font-weight:700}
/* Sous 1240 px, les blocs côte à côte passent sur une colonne ; titres et boutons passent à la ligne. */
@media (max-width:1240px){.grid2,.grid3{grid-template-columns:minmax(0,1fr)}}
.topbar,.panel-tools,.period-bar{flex-wrap:wrap}
.period-bar .pb-dates{flex-wrap:wrap;margin-left:0}
.period-bar .pb-chip.on{background:#ffffff;color:#0e0e10;border-color:#ffffff}   /* période choisie : même pastille que le menu */
.period-bar button{color:var(--ink)}
.doc-selects label,.stack-form label{min-width:0;max-width:100%}
input[type=file]{max-width:100%;min-width:0;width:100%;color:var(--ink-2)}
.topbar h1,.panel h3{overflow-wrap:anywhere}
/* Jamais de défilement horizontal : un tableau passe en lignes empilées dès que SON bloc fait moins de 600 px ou
   qu'il n'y tient pas (app.js mesure le bloc et pose la classe « stacked ») ; chaque valeur est précédée du titre
   de sa colonne (data-label, posé par app.js). */
.table-wrap:has(> table.stacked){overflow-x:visible}
table.ledger.stacked{display:block;width:100%}
table.ledger.stacked thead{display:none}
table.ledger.stacked tbody,table.ledger.stacked tfoot{display:block}
table.ledger.stacked tr{display:block;padding:8px 0;border-bottom:1px solid var(--rule)}
table.ledger.stacked tr:last-child{border-bottom:none}
table.ledger.stacked td{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:3px 0;border:none;text-align:right;min-width:0}
table.ledger.stacked td::before{content:attr(data-label);color:var(--ink-3);font-size:12px;text-align:left;flex:0 1 auto;max-width:48%}
table.ledger.stacked td:not([data-label])::before,table.ledger.stacked td[data-label=""]::before{content:none}
table.ledger.stacked td:first-child{display:block;text-align:left;font-weight:600;padding-bottom:4px}
table.ledger.stacked td:first-child::before{content:none}
table.ledger.stacked td:empty{display:none}
table.ledger.stacked td.hide-sm{display:none}
table.ledger.stacked td > *{min-width:0;overflow-wrap:anywhere}
/* Très petit écran : les colonnes de part en % disparaissent (classe « pct » dans les gabarits). */
@media (max-width:340px){.pct{display:none}}

/* Validation des formulaires (forms.js) sur les pages de connexion, hors gabarit commun. */
.field-error { display: block; margin: 4px 0 0; color: var(--negative, #e5566f); font-size: 12.5px; line-height: 16px; }
.is-invalid { border-color: var(--negative, #e5566f) !important; }
/* Palette pastel A des classes et cinq couleurs par rang des zones, secteurs, établissements (note de charte §14,
   choix de Maxime du 30/10/2026) : variables --cls-* et --cat-* de refonte.css ; « Non détaillé » en gris. */
.c-cls-actions{--c:var(--cls-actions)}.c-cls-obligations{--c:var(--cls-obligations)}.c-cls-structures{--c:var(--cls-structures)}
.c-cls-fonds-euro{--c:var(--cls-fonds-euro)}.c-cls-liquidites{--c:var(--cls-liquidites)}
.c-cat-1{--c:var(--cat-1)}.c-cat-2{--c:var(--cat-2)}.c-cat-3{--c:var(--cat-3)}.c-cat-4{--c:var(--cat-4)}.c-cat-5{--c:var(--cat-5)}.c-cat-autres{--c:var(--cat-autres)}
.c-p-nd{--c:var(--chart-muted)}
/* Pages d'accès sur téléphone (Recette, 30/10/2026) : champs à 16 px (sinon l'iPhone agrandit la page), champs et
   boutons de 44 px de haut, liens touchables sur 44 px. */
.gate input:not([type="checkbox"]){font-size:16px;min-height:44px}
.gate .btn{min-height:44px}

/* Paramètres › Conditions de frais (30/10/2026) : lignes empilées, pas de tableau large (pas de défilement horizontal). */
.fee-holder{font-size:13px;font-weight:600;color:var(--ink-2);margin:22px 0 8px;text-transform:none}
.fee-block h3{margin-bottom:6px}
.fee-terms{list-style:none;margin:10px 0 0;padding:0}
.fee-term{padding:10px 0;border-top:1px solid var(--border);min-width:0}
.fee-term:first-child{border-top:0}
.fee-term.is-off{opacity:.65}
.fee-main{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline}
.fee-val{font-variant-numeric:tabular-nums}
.fee-term .note{margin-top:3px;overflow-wrap:anywhere}
.fee-actions{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:4px}
.fee-actions details[open]{flex-basis:100%}
.fee-add,.fee-old{margin-top:12px}
.fee-form{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));align-items:start;max-width:100%}
.fee-date{display:grid;gap:6px;min-width:0}
.fee-date .check{margin:0}
.fee-form .hint,.fee-form button{grid-column:1/-1;justify-self:start}
/* Conditions de frais au téléphone (recette du 30/10/2026) : zones à toucher de 44 px, espacées ; champs à 16 px (pas de
   zoom de l'iPhone à la saisie) ; « ? » et ligne de titre (qui replie le bloc) gardent leur dessin, leur zone à toucher grandit. */
@media (pointer:coarse){
  .fee-page details>summary{min-height:44px;display:flex;align-items:center;padding:0 4px}
  .fee-actions{gap:4px 28px}
  /* refonte.css fait hériter la taille du libellé (12 px) avec une priorité très haute : forcée ici, au tactile seulement */
  .fee-form input,.fee-form select{font-size:16px!important}
  .fee-page .q{position:relative}
  .fee-page .q::after{content:"";position:absolute;inset:-13px}
  .fee-page .panel>h3.foldable{min-height:44px;padding:10px 0;box-sizing:border-box}   /* toute la ligne replie le bloc */
}

/* Paramètres › Confidentialité › Données transmises : une ligne par service, détail au clic (zone de 44 px au tactile). */
.share-list{list-style:none;margin:0;padding:0}
.share-list>li{padding:10px 0;border-top:1px solid var(--border)}
.share-list>li:first-child{border-top:0}
.share-list summary{cursor:pointer;overflow-wrap:anywhere}
@media (pointer:coarse){.share-list summary{min-height:44px;display:flex;flex-wrap:wrap;align-items:center;gap:0 6px}}
