/* Thème clair */
:root{--ia-bg:#f4f6fa;--ia-side:#eef1f6;--ia-border:#dde3ec;--ia-text:#1f2937;--ia-muted:#5b6575;--ia-accent:#2453c6}
body{background:var(--ia-bg);color:var(--ia-text)}
.login-bg{background:linear-gradient(135deg,#eef2fb,#f8fafc)}
.module-muted>:not(.alert){filter:grayscale(.85);opacity:.72}
.nav-tabs .nav-link.disabled{color:#9aa3af;background:#f1f3f6;cursor:not-allowed}
.card{background:#fff;border-color:var(--ia-border);box-shadow:0 1px 2px rgba(16,24,40,.04)}
.card-header{background:#f8fafc;border-color:var(--ia-border)}
.stat .fs-4{white-space:nowrap}
.table{--bs-table-bg:transparent}
.text-secondary{color:var(--ia-muted)!important}
.text-warning{color:#b45309!important}.text-info{color:#0369a1!important}.text-success{color:#15803d!important}.text-danger{color:#b91c1c!important}
.alert-info{background:#eaf3fe;border-color:#c9e0fb;color:#0b4a8b}
.best-odd{background:#198754!important;color:#fff!important;font-weight:700}
.topbar{border-bottom:1px solid var(--ia-border);background:#fff}
.md p:last-child{margin-bottom:0}.md h3,.md h4{font-size:1rem;font-weight:600;margin-top:.6rem}
.nav-tabs .nav-link{color:#374151}.nav-tabs .nav-link.active{font-weight:600;color:#1d3f91}
.dot{display:inline-block;width:.7em;height:.7em;border-radius:50%;margin-right:.2em}

/* ---------- Mise en page : barre latérale fixe (260 px) + contenu qui ne déborde jamais ---------- */
:root{--sbw:260px}
html,body{overflow-x:hidden}
.app-shell{display:flex;min-height:100vh}
.app-main{flex:1 1 0;min-width:0;max-width:100%}
.content{max-width:100%}
.content img,.content canvas{max-width:100%}
.content .row{--bs-gutter-x:1rem}
.table-responsive{max-width:100%}
.sidebar{flex:0 0 var(--sbw);width:var(--sbw);height:100vh;position:sticky;top:0;display:flex;flex-direction:column;background:var(--ia-side);border-right:1px solid var(--ia-border);padding:.9rem .7rem;z-index:1040;transition:width .18s,flex-basis .18s}
.side-head{display:flex;align-items:center;gap:.5rem;padding:0 .35rem .9rem}
.sidebar .brand{font-weight:700;font-size:1.1rem;color:#111827;text-decoration:none;display:flex;align-items:center;gap:.5rem;white-space:nowrap;overflow:hidden}
.sidebar .brand i{color:var(--ia-accent);font-size:1.25rem}
.side-close{margin-left:auto}
.side-scroll{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;margin:0 -.2rem;padding:0 .2rem}
.side-foot{border-top:1px solid var(--ia-border);padding-top:.5rem;margin-top:.5rem}
.sidebar .side-link,.sidebar .side-group{display:flex;align-items:center;gap:.6rem;white-space:nowrap;min-width:0;border-radius:.45rem;text-decoration:none}
.sidebar .side-link{color:#374151;padding:.32rem .6rem;font-size:.9rem;line-height:1.35}
.sidebar .side-link .bi{flex:0 0 1.1rem;text-align:center;font-size:1rem}
.sidebar .lbl{overflow:hidden;text-overflow:ellipsis;min-width:0}
.sidebar .side-link.top{font-weight:600;font-size:.93rem;padding:.45rem .6rem;margin-bottom:.15rem}
.sidebar .side-link:hover{background:#e2e8f3;color:#111827}
.sidebar .side-link.active{background:#dbe5fb;color:#1d3f91;font-weight:600}
.sidebar .side-group{color:var(--ia-muted);font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:.45rem .6rem;margin-top:.35rem}
.sidebar .side-group .bi:first-child{flex:0 0 1.1rem;text-align:center;font-size:1rem}
.sidebar .side-group:hover{color:#111827;background:#e7ecf4}
.sidebar .side-group .chev{margin-left:auto;font-size:.75rem;transition:transform .2s}
.sidebar .side-group.collapsed .chev{transform:rotate(-90deg)}
.side-sub{padding-left:.55rem}
.side-sub .side-link{padding:.26rem .6rem;font-size:.875rem}
.side-sep{font-size:.75rem;color:var(--ia-muted);font-style:italic;padding:.35rem .6rem .1rem;white-space:nowrap}
.side-title{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#9aa3af;padding:1rem .6rem 0}
.side-hr{margin:.3rem .6rem .2rem;border-color:var(--ia-border);opacity:1}
.sidebar .menu-later{opacity:.62}
.side-sub.later .side-link{color:#8a93a3}
.soon-badge{background:#e3e7ee;color:#6b7280;font-weight:600;font-size:.62rem;letter-spacing:.02em;text-transform:none;padding:.2em .45em;margin-left:.15rem}
.sidebar .nb{font-size:.7rem}
.side-backdrop{display:none}
/* Barre réduite (bouton ☰ sur ordinateur, mémorisé) : icônes seules */
@media(min-width:992px){
 html.sb-collapsed{--sbw:68px}
 html.sb-collapsed .sidebar .lbl,html.sb-collapsed .sidebar .chev,html.sb-collapsed .sidebar .soon-badge,html.sb-collapsed .side-hr{display:none}
 html.sb-collapsed .sidebar .side-link,html.sb-collapsed .sidebar .side-group{justify-content:center;padding-left:.3rem;padding-right:.3rem;position:relative}
 html.sb-collapsed .side-sub{padding-left:0}
 html.sb-collapsed .sidebar .nb{position:absolute;top:0;right:2px}
 html.sb-collapsed .side-head{justify-content:center;padding-left:0;padding-right:0}
}
/* Petits écrans : menu en tiroir (☰) */
@media(max-width:991.98px){
 .sidebar{position:fixed;left:0;top:0;bottom:0;width:280px;flex-basis:auto;transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 30px rgba(15,23,42,.18)}
 html.sb-open .sidebar{transform:none}
 html.sb-open .side-backdrop{display:block;position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:1035}
}
.topbar{border-bottom:1px solid var(--ia-border);background:#fff;position:sticky;top:0;z-index:1020}
.topbar .form-select{max-width:140px}
.bell .badge{font-size:.65rem}
.notif-menu{min-width:340px;max-width:min(420px,92vw)}
.notif-alert{border-left:4px solid currentColor}
/* Validation de la proposition */
.validate-card{border:2px solid #9db5ee;background:linear-gradient(180deg,#f3f7ff,#fff)}
.validate-card .form-check-input{width:1.35em;height:1.35em;margin-top:.1em}
.validate-card .pin{max-width:190px;font-size:1.1rem}.validate-card .pin:not(:placeholder-shown){letter-spacing:.3em}
.table-responsive>.table th,.table-responsive>.table td:first-child{white-space:nowrap}

/* ---------- Chiffres : alignement tabulaire, unités discrètes, pastilles P/L ---------- */
.num,.table td.text-end,.table th.text-end,.stat .fs-4,.stat .fs-5{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.num{white-space:nowrap}
.num .u{font-size:.78em;font-weight:400;opacity:.62}
.stat .fs-4{font-size:1.45rem!important;letter-spacing:-.01em;line-height:1.25}
.stat .fs-4 .u{font-size:.58em;opacity:.55;font-weight:500}
.stat .stat-sub{font-size:.78rem;color:var(--ia-muted);margin-top:.15rem}
.stat .stat-sub .pill{font-size:.75rem}
.stat .stat-sub .u{opacity:.75}
.sub{font-size:.76rem;color:var(--ia-muted);font-weight:400;line-height:1.2}
.sub .bi{font-size:.72rem}
.tbl-num>thead th{white-space:nowrap;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ia-muted);border-bottom-width:1px;padding-top:.5rem;padding-bottom:.5rem;vertical-align:bottom}
.tbl-num>tbody td{padding-top:.5rem;padding-bottom:.5rem}
.tbl-num>tfoot .tot th,.tbl-num>tfoot th{border-top:2px solid var(--ia-border);border-bottom:0;padding-top:.55rem;font-weight:600}
.tbl-num .row-cash td{background:#fafbfc}
.tbl-num .row-cash td:first-child b,.tbl-num .row-cash .fw-semibold{color:#475569}
.pill{display:inline-flex;align-items:center;gap:.25em;padding:.18em .55em;border-radius:999px;font-size:.8rem;font-weight:600;line-height:1.3;white-space:nowrap;font-variant-numeric:tabular-nums}
.pill .u{opacity:.7}
.pill-pos{background:#e7f6ec;color:#15803d}
.pill-neg{background:#fdecec;color:#b91c1c}
.pill-neu{background:#eef1f5;color:#64748b}
.pill .arr{font-size:.65em}
.pl-pos{color:#15803d}.pl-neg{color:#b91c1c}.pl-neu{color:#64748b}
.wcell{display:inline-flex;flex-direction:column;align-items:flex-end;gap:.2rem;min-width:5.2rem}
.wbar{width:100%;height:4px;border-radius:4px;background:#e8ecf2;overflow:hidden}
.wbar>span{display:block;height:100%;border-radius:4px;background:var(--ia-accent);opacity:.8}
.src-ic{font-size:.75rem;vertical-align:.05em;cursor:help}
.src-dot{color:#94a3b8;margin-left:-.35rem;margin-right:-.4rem;cursor:help}
.aname{display:inline-block;max-width:10.5rem;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}
.tbl-num>thead th .sub{font-size:.68rem;text-transform:none;letter-spacing:0;font-weight:500}
.tbl-num td>.mt-1 .pill{font-size:.74rem;padding:.12em .5em}
