:root{
 --bg-0:#080c10;--bg-1:#0e141b;--bg-2:#141c25;--bg-3:#1c2632;
 --border:#1f2a37;--border-strong:#2a3645;
 --text-1:#e6edf3;--text-2:#97a3b1;--text-3:#6b7785;
 --win:#00e676;--win-soft:rgba(0,230,118,.12);--win-mid:rgba(0,230,118,.22);
 --loss:#ff3b5c;--loss-soft:rgba(255,59,92,.12);--loss-mid:rgba(255,59,92,.22);
 --accent:#00d4ff;--accent-soft:rgba(0,212,255,.14);
 --buy:#3b82f6;--sell:#f59e0b;
 --lo:#a855f7;--ny:#3b82f6;--as:#14b8a6;
 --neutral:#94a3b8;--warn:#facc15;
 --shadow:0 4px 24px rgba(0,0,0,.4);--radius:12px;--radius-sm:8px;
 --mono:'JetBrains Mono','SF Mono',Menlo,Consolas,monospace;
 --sans:-apple-system,BlinkMacSystemFont,'Inter','Segoe UI',Roboto,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--bg-0);color:var(--text-1);font-family:var(--sans);font-size:14px;line-height:1.5;overflow:hidden}
.app{display:flex;height:100vh}
.sidebar{width:258px;background:var(--bg-1);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;transition:width .2s ease}
.sidebar.collapsed{width:64px}
.sidebar.collapsed .brand-info,.sidebar.collapsed .nav-item span:not(.ic){display:none}
.sidebar.collapsed .nav-item{justify-content:center;padding:10px 8px}
.sidebar.collapsed .brand{padding:16px 8px;flex-direction:column;gap:8px}
/* V6.34 — Logo réel (crop du blason Soldat) remplace le carré "S" généré */
/* V6.38 — Identité encore plus présente (2e passe) : icône et nom agrandis à nouveau, sidebar
   élargie en conséquence (240→258px) pour ne jamais retronquer le tagline/sub. Toujours sobre :
   pas de couleur d'accent ajoutée, juste plus de poids visuel sur l'existant. */
.brand{padding:20px 16px;border-bottom:1px solid var(--border);cursor:pointer;display:flex;align-items:center;gap:12px}
.brand:hover{background:var(--bg-2)}
.brand-icon{width:52px;height:52px;border-radius:13px;object-fit:cover;flex-shrink:0;box-shadow:0 4px 16px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.08)}
.brand-info{flex:1;min-width:0}
.brand-name{font-weight:800;font-size:19px;letter-spacing:.3px;line-height:1.2;color:var(--text-1)}
.brand-tagline{font-size:10.5px;color:var(--text-2);letter-spacing:.1px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-sub{font-size:9.5px;color:var(--text-3);margin-top:3px;font-family:var(--mono);letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-toggle{background:transparent;border:none;color:var(--text-3);cursor:pointer;font-size:14px;padding:4px 6px;border-radius:4px;line-height:1}
.sidebar-toggle:hover{color:var(--text-1);background:var(--bg-2)}
.nav{padding:14px 10px;flex:1;overflow-y:auto}
.nav-bottom{padding:8px 10px 12px;border-top:1px solid var(--border);flex-shrink:0}
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;margin-bottom:4px;border-radius:var(--radius-sm);color:var(--text-2);cursor:pointer;font-weight:500;font-size:13.5px;transition:all .15s;user-select:none}
.nav-item:hover{background:var(--bg-2);color:var(--text-1)}
.nav-item.active{background:var(--accent-soft);color:var(--accent)}
.nav-item .ic{width:18px;display:grid;place-items:center}
.sidebar-footer{padding:14px;border-top:1px solid var(--border)}
.user{display:flex;gap:10px;align-items:center;padding:8px;border-radius:var(--radius-sm)}
.user-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#ec4899);display:grid;place-items:center;font-weight:700;font-size:13px}
.user-name{font-size:13px;font-weight:600}
.user-email{font-size:11px;color:var(--text-3)}
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
/* V6.42 — flex-wrap : sans effet tant que la barre d'actions tient sur une ligne (desktop
   inchangé), mais empêche le titre et les boutons de se chevaucher dès que la largeur manque
   (tablette/mobile) — la barre d'actions passe alors sur une 2e ligne au lieu de se télescoper. */
/* V6.48 — position:relative sert désormais d'ancrage au panneau de notifications (voir
   .notif-panel) : avec le passage en flex-wrap (V6.42), la cloche n'est plus systématiquement
   tout à droite d'une seule ligne — ancrer le panneau sur .topbar plutôt que sur .notif-wrap
   garantit qu'il reste toujours flush avec le bord droit réel de la barre, quelle que soit la
   ligne où la cloche atterrit. */
.topbar{min-height:60px;border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding:10px 24px;background:var(--bg-1);position:relative}
.page-title{font-size:17px;font-weight:600}
.topbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;background:var(--bg-2);color:var(--text-1);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:500;font-family:inherit;transition:all .15s}
.btn:hover{background:var(--bg-3);border-color:var(--border-strong)}
.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}
.btn-primary{background:var(--accent);color:var(--bg-0);border-color:var(--accent);font-weight:600}
.btn-primary:hover{background:#00b8e0}
.btn-sm{padding:5px 10px;font-size:12px}
.btn-danger{color:var(--loss);border-color:var(--loss-mid)}
.btn-danger:hover{background:var(--loss-soft)}
.dropdown{position:relative;display:inline-block}
.dropdown-menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--bg-1);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);min-width:220px;padding:6px;z-index:50;display:none}
.dropdown.open .dropdown-menu{display:block;animation:fadeIn .12s ease}
.dropdown-item{display:block;width:100%;text-align:left;padding:9px 12px;background:transparent;border:none;color:var(--text-1);font-family:inherit;font-size:13px;border-radius:6px;cursor:pointer}
.dropdown-item:hover{background:var(--bg-2)}
.fab{position:fixed;bottom:24px;right:24px;width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#0ea5e9);color:var(--bg-0);border:none;cursor:pointer;font-size:30px;font-weight:700;display:grid;place-items:center;box-shadow:0 8px 24px rgba(0,212,255,.35),0 4px 12px rgba(0,0,0,.4);z-index:80;transition:transform .15s,box-shadow .15s;line-height:1}
.fab:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 12px 32px rgba(0,212,255,.5),0 6px 16px rgba(0,0,0,.4)}
.fab:active{transform:scale(0.95)}
.fab-label{position:absolute;right:74px;background:var(--bg-1);color:var(--text-1);padding:7px 12px;border-radius:8px;font-size:12px;font-weight:600;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;border:1px solid var(--border-strong);box-shadow:var(--shadow);font-family:var(--sans)}
.fab:hover .fab-label{opacity:1}
/* V6.15 — Expanding FAB (Nouveau trade + Nouvelle analyse) */
.fab-stack{position:fixed;bottom:24px;right:24px;z-index:80;display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.fab-stack .fab{position:static}
.fab-action{display:flex;align-items:center;gap:10px;opacity:0;transform:translateY(14px) scale(.7);pointer-events:none;transition:opacity .2s cubic-bezier(.34,1.2,.64,1),transform .2s cubic-bezier(.34,1.2,.64,1)}
/* V6.41 — l'ouverture au survol pur (:hover) est retirée : elle déclenchait le sous-menu
   au moindre passage de souris. Remplacée par un délai JS (~300ms) — voir initFab() dans
   trades-ui.js, qui bascule la classe .hover-open après ce délai réel de survol. */
.fab-stack.open .fab-action,.fab-stack.hover-open .fab-action{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}
.fab-stack .fab-action:nth-child(2){transition-delay:.04s}
.fab-action-label{background:var(--bg-1);color:var(--text-1);padding:7px 12px;border-radius:8px;font-size:12px;font-weight:600;white-space:nowrap;border:1px solid var(--border-strong);box-shadow:var(--shadow)}
.fab-mini{width:48px;height:48px;border-radius:50%;border:none;cursor:pointer;font-size:20px;display:grid;place-items:center;box-shadow:0 6px 18px rgba(0,0,0,.4);transition:transform .14s}
.fab-mini:hover{transform:scale(1.1)}
.fab-mini:active{transform:scale(.92)}
.fab-stack .fab-main{transition:transform .22s cubic-bezier(.34,1.4,.64,1),box-shadow .15s}
.fab-stack.open .fab-main{transform:rotate(135deg)}
/* V6.16 — Centre de notifications */
/* V6.48 — plus de position:relative ici : le panneau (.notif-panel) s'ancre désormais sur
   .topbar (voir plus haut), pas sur ce wrapper — sinon il resterait piégé dans le
   sous-arbre le plus proche et déborderait de .main{overflow:hidden} dès que la cloche
   n'est pas sur la ligne la plus à droite (cas fréquent depuis le flex-wrap du header). Le
   badge de notification reste ancré sur .notif-bell, qui garde son position:relative propre. */
.notif-wrap{position:static}
.notif-bell{background:var(--bg-2);border:1px solid var(--border);color:var(--text-1);width:34px;height:34px;border-radius:8px;cursor:pointer;font-size:16px;display:grid;place-items:center;transition:background .15s,border-color .15s;position:relative}
.notif-bell:hover{background:var(--bg-3);border-color:var(--border-strong)}
.notif-badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:linear-gradient(135deg,#ff5b5b,#ff8a3d);color:#fff;font-size:10px;font-weight:800;display:none;place-items:center;box-shadow:0 2px 6px rgba(255,91,91,.5);border:1.5px solid var(--bg-1);font-family:var(--sans)}
@keyframes notifPop{0%{transform:scale(0)}60%{transform:scale(1.25)}100%{transform:scale(1)}}
.notif-badge.pop{animation:notifPop .32s cubic-bezier(.34,1.4,.64,1)}
.notif-panel{position:absolute;top:calc(100% + 6px);right:0;width:380px;max-width:92vw;background:var(--bg-1);border:1px solid var(--border-strong);border-radius:12px;box-shadow:0 16px 48px rgba(0,0,0,.55);z-index:200;display:none;overflow:hidden}
.notif-panel.open{display:block;animation:sldFadeIn .18s ease both}
.notif-panel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}
.notif-panel-title{font-size:13px;font-weight:700;color:var(--text-1)}
.notif-list{max-height:440px;overflow-y:auto}
.notif-item{display:flex;gap:10px;padding:11px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;position:relative}
.notif-item:hover{background:var(--bg-2)}
.notif-item.unread{background:rgba(0,212,255,.045)}
.notif-item.unread::before{content:'';position:absolute;left:5px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;background:var(--accent)}
.notif-ico{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;font-size:15px;flex-shrink:0}
.notif-lvl-critical{border-left:3px solid #ff5b5b}
.notif-lvl-important{border-left:3px solid #f0a23d}
.notif-lvl-standard{border-left:3px solid var(--border-strong)}
.notif-body{flex:1;min-width:0}
.notif-t{font-size:12.5px;font-weight:600;color:var(--text-1);margin-bottom:2px}
.notif-d{font-size:11.5px;color:var(--text-2);line-height:1.45}
.notif-meta{font-size:10px;color:var(--text-3);margin-top:3px;display:flex;gap:6px;align-items:center}
.notif-empty{padding:36px 20px;text-align:center;color:var(--text-3);font-size:12px}
/* V6.16 — Onglet Paramètres */
.set-section{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;overflow:hidden}
.set-head{display:flex;align-items:center;gap:10px;padding:13px 16px;font-size:13px;font-weight:700;color:var(--text-1);background:var(--bg-2);border-bottom:1px solid var(--border)}
.set-head .ic{font-size:16px}
.set-body{padding:14px 16px}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--border)}
.set-row:last-child{border-bottom:none}
.set-label{font-size:12.5px;color:var(--text-1)}
.set-sub{font-size:11px;color:var(--text-3);margin-top:2px}
.set-toggle{position:relative;width:42px;height:23px;border-radius:12px;background:var(--bg-3);border:1px solid var(--border-strong);cursor:pointer;flex-shrink:0;transition:background .18s}
.set-toggle.on{background:var(--accent)}
.set-toggle::after{content:'';position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform .18s cubic-bezier(.34,1.3,.64,1)}
.set-toggle.on::after{transform:translateX(19px)}
.set-pill-group{display:flex;gap:4px;background:var(--bg-3);padding:3px;border-radius:8px}
.set-pill{padding:6px 13px;border-radius:6px;font-size:11px;font-weight:600;color:var(--text-2);cursor:pointer;border:none;background:transparent;transition:all .15s cubic-bezier(.22,1,.36,1)}
.set-pill:hover:not(.active){color:var(--text-1);background:rgba(255,255,255,.04)}
.set-pill.active{background:linear-gradient(135deg,var(--accent),#0ea5e9);color:var(--bg-0);box-shadow:0 2px 8px var(--accent-soft)}
/* V6.17 — Champs éditables Paramètres : style dark premium (plus de fond blanc) */
.set-row input[type=text],.set-row input[type=password],.set-row input[type=number],.set-row select{
 background:var(--bg-3);border:1px solid var(--border-strong);color:var(--text-1);
 border-radius:8px;padding:8px 12px;font-size:12.5px;font-family:var(--sans);
 outline:none;transition:border-color .15s,box-shadow .15s,background .15s}
.set-row input::placeholder{color:var(--text-3)}
.set-row input[type=text]:hover,.set-row input[type=password]:hover,.set-row input[type=number]:hover,.set-row select:hover{border-color:var(--accent)}
.set-row input[type=text]:focus,.set-row input[type=password]:focus,.set-row input[type=number]:focus,.set-row select:focus{
 border-color:var(--accent);background:var(--bg-2);box-shadow:0 0 0 3px var(--accent-soft)}
.set-row select{
 cursor:pointer;-webkit-appearance:none;appearance:none;padding-right:30px;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2397a3b1' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
 background-repeat:no-repeat;background-position:right 11px center}
.set-row select option{background:var(--bg-1);color:var(--text-1)}
.sim-active{background:var(--win)!important;color:var(--bg-0)!important;border-color:var(--win)!important}
/* V6.5 — Daily Loss Lock visuel */
@keyframes pulseCrit{0%,100%{box-shadow:0 0 0 0 rgba(255,82,82,.4)}50%{box-shadow:0 0 0 10px rgba(255,82,82,0)}}
.acc-card.locked{border-color:var(--loss)!important;animation:pulseCrit 1.5s ease-in-out infinite}
.acc-card.warn-dd{border-color:var(--warn)!important;box-shadow:0 0 0 1px var(--warn)}
.lock-badge{display:flex;align-items:center;gap:6px;background:rgba(255,82,82,.15);color:var(--loss);padding:6px 10px;border-radius:6px;font-size:11px;font-weight:700;margin-top:8px;border:1px solid rgba(255,82,82,.3)}
.warn-badge{display:flex;align-items:center;gap:6px;background:rgba(250,204,21,.12);color:var(--warn);padding:6px 10px;border-radius:6px;font-size:11px;font-weight:700;margin-top:8px;border:1px solid rgba(250,204,21,.3)}
.risk-tracker{background:var(--bg-1);border:1px solid var(--accent);border-radius:var(--radius);padding:14px 16px;margin-bottom:16px;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center}
/* V6.23 — Barres de risque : repères de seuils 50%/80% + remplissage dégradé continu + animation de croissance */
.risk-bar{height:10px;background-color:var(--bg-3);border-radius:5px;overflow:hidden;position:relative;background-image:linear-gradient(90deg,rgba(255,255,255,.14) 0 100%),linear-gradient(90deg,rgba(255,255,255,.14) 0 100%);background-repeat:no-repeat;background-position:50% 0,80% 0;background-size:1.5px 100%}
.risk-bar-fill{height:100%;background:linear-gradient(90deg,var(--win),#4fd99a);transition:width .85s cubic-bezier(.22,1,.36,1),background .35s ease;border-radius:5px;will-change:width}
.risk-bar-fill.warn{background:linear-gradient(90deg,var(--warn),#f5cb5c)}
.risk-bar-fill.crit{background:linear-gradient(90deg,var(--loss),#ff6b81)}
body.no-anim .risk-bar-fill{transition:none}
.risk-tracker .label{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.5px;font-weight:700}
.risk-tracker .val{font-family:var(--mono);font-weight:700;font-size:13px;text-align:right}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
#globalRefreshBtn.spinning{color:var(--accent);border-color:var(--accent);pointer-events:none}
#globalRefreshBtn.spinning::before{content:'↻';display:inline-block;animation:spin .8s linear infinite;margin-right:5px}
#globalRefreshBtn.spinning span,#globalRefreshBtn.spinning{letter-spacing:.5px}
.trackers-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:18px}
.tracker-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:20px;position:relative;overflow:hidden}
.tracker-card.day-done{border-color:var(--win);box-shadow:0 0 0 1px var(--win)}
.tracker-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px;gap:8px}
.tracker-name{font-weight:700;font-size:14px;line-height:1.3}
.tracker-sub{font-size:10px;color:var(--text-3);font-family:var(--mono);margin-top:3px;letter-spacing:.4px}
.tracker-kpis{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:8px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.tracker-kpi-val{font-size:30px;font-weight:800;font-family:var(--mono);line-height:1;letter-spacing:-1px;display:flex;align-items:baseline;gap:4px}
.tracker-kpi-val .small{font-size:14px;color:var(--text-3);font-weight:600}
.tracker-kpi-lbl{font-size:11px;color:var(--text-3);margin-top:6px;font-weight:500}
.tracker-chart{position:relative;height:230px;display:grid;place-items:center;margin:6px 0 2px}
/* V6.21 — Anneaux de progression en SVG pur (continuité parfaite, caps arrondis, animation de croissance) */
.trk-svg{width:230px;height:230px;display:block;overflow:visible}
.trk-arc{transition:stroke-dashoffset .95s cubic-bezier(.22,1,.36,1)}
body.no-anim .trk-arc{transition:none}
.trk-track{stroke:rgba(255,255,255,.07)}
.trk-center-val{fill:var(--text-1);font-size:30px;font-weight:800;font-family:var(--sans)}
.trk-center-lbl{fill:var(--text-3);font-size:10px;font-family:var(--sans);letter-spacing:1.5px}
.tracker-legend{display:flex;flex-direction:column;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border);font-size:13px}
.tracker-leg-item{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;font-family:var(--mono)}
.tracker-leg-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}
.tracker-leg-name{font-family:var(--sans);font-weight:600;font-size:13px}
.tracker-leg-frac{font-size:12px;color:var(--text-2)}
.tracker-leg-pct{font-size:12px;color:var(--text-3);min-width:40px;text-align:right}
.day-done-badge{position:absolute;top:0;right:0;background:var(--win);color:var(--bg-0);font-size:9px;font-weight:700;padding:4px 10px;border-bottom-left-radius:8px;letter-spacing:.5px}
.trends-section{background:linear-gradient(135deg,rgba(78,163,138,0.05),rgba(198,107,107,0.05));border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-bottom:18px}
.trends-master{background:linear-gradient(135deg,rgba(0,212,255,0.08),rgba(168,85,247,0.08));border:1px solid var(--accent);border-radius:var(--radius-sm);padding:16px;margin-bottom:14px;position:relative}
.trends-master::before{content:'⭐ MAÎTRE';position:absolute;top:-9px;left:14px;background:var(--accent);color:var(--bg-0);font-size:10px;font-weight:800;padding:2px 8px;border-radius:4px;letter-spacing:.5px}
.trends-tf-row{display:grid;grid-template-columns:90px 1fr;gap:12px;align-items:center;margin-bottom:8px}
.trends-tf-row:last-child{margin-bottom:0}
.trends-tf-label{font-weight:700;font-size:12px;color:var(--text-2);text-transform:uppercase;letter-spacing:.5px}
.trends-btns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.trend-btn{padding:9px 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-2);color:var(--text-3);cursor:pointer;font-family:inherit;font-size:12px;font-weight:700;letter-spacing:.4px;transition:all .15s;text-transform:uppercase}
.trend-btn:hover{border-color:var(--text-2);color:var(--text-1)}
.trend-btn.active.bull{background:#4ea38a;color:#fff;border-color:#4ea38a;box-shadow:0 0 0 1px #4ea38a}
.trend-btn.active.range{background:#7d8290;color:#fff;border-color:#7d8290;box-shadow:0 0 0 1px #7d8290}
.trend-btn.active.bear{background:#c66b6b;color:#fff;border-color:#c66b6b;box-shadow:0 0 0 1px #c66b6b}
.trends-pair-row{display:grid;grid-template-columns:120px repeat(4,1fr);gap:8px;align-items:center;padding:8px 10px;border-radius:6px;margin-bottom:4px;font-size:12px;background:var(--bg-2);border:1px solid var(--border)}
.trends-pair-name{font-weight:700;font-size:13px}
.trends-pair-tf{display:grid;grid-template-columns:1fr 1fr 1fr;gap:3px}
.trend-mini-btn{padding:4px;border-radius:4px;border:1px solid var(--border);background:var(--bg-3);color:var(--text-3);cursor:pointer;font-family:inherit;font-size:10px;font-weight:700;letter-spacing:.3px;transition:all .12s;text-align:center}
.trend-mini-btn:hover{color:var(--text-1)}
.trend-mini-btn.active.bull{background:#4ea38a;color:#fff;border-color:#4ea38a}
.trend-mini-btn.active.range{background:#7d8290;color:#fff;border-color:#7d8290}
.trend-mini-btn.active.bear{background:#c66b6b;color:#fff;border-color:#c66b6b}
.dispatch-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-2)}
.dispatch-col{padding:14px;min-height:180px;border-right:1px solid var(--border)}
.dispatch-col:last-child{border-right:none}
.dispatch-col.bull{background:rgba(78,163,138,0.07)}
.dispatch-col.range{background:rgba(125,130,144,0.07)}
.dispatch-col.bear{background:rgba(198,107,107,0.07)}
.dispatch-col-head{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--border);text-align:center}
.dispatch-col.bull .dispatch-col-head{color:#4ea38a}
.dispatch-col.range .dispatch-col-head{color:#a3a8b8}
.dispatch-col.bear .dispatch-col-head{color:#c66b6b}
.dispatch-item{padding:6px 9px;background:var(--bg-1);border:1px solid var(--border);border-radius:5px;font-size:11.5px;margin-bottom:5px;font-weight:600;display:flex;justify-content:space-between;align-items:center;gap:6px}
.dispatch-item .auto-tag{font-size:9px;color:var(--text-3);font-weight:500}
.trends-tf-tabs{display:flex;gap:6px;margin-bottom:14px;border-bottom:1px solid var(--border);padding-bottom:10px}
.trends-tf-tab{padding:7px 14px;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;color:var(--text-3)}
.trends-tf-tab.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.trends-reset-info{font-size:10px;color:var(--text-3);font-family:var(--mono);margin-top:8px;letter-spacing:.3px}
.content{flex:1;overflow-y:auto;padding:24px}
.tab-panel{display:none}
.tab-panel.active{display:block;animation:fadeIn .2s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:20px}
.card-title{font-size:13px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.6px;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center}
.card-title .actions{display:flex;gap:6px}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
.kpi{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;position:relative;overflow:hidden}
.kpi-label{font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--text-3);font-weight:600}
.kpi-value{font-size:26px;font-weight:700;font-family:var(--mono);margin-top:6px;letter-spacing:-.5px}
.kpi-change{font-size:12px;margin-top:4px;font-family:var(--mono)}
.kpi.win-bg::after{content:'';position:absolute;top:0;right:0;bottom:0;width:3px;background:var(--win)}
.kpi.loss-bg::after{content:'';position:absolute;top:0;right:0;bottom:0;width:3px;background:var(--loss)}
.kpi.acc-bg::after{content:'';position:absolute;top:0;right:0;bottom:0;width:3px;background:var(--accent)}
.kpi.warn-bg::after{content:'';position:absolute;top:0;right:0;bottom:0;width:3px;background:var(--warn)}
.win{color:var(--win)}.loss{color:var(--loss)}.muted{color:var(--text-3)}
.dash-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:16px}
/* V6.42 — flex-wrap : .cal-month a un min-width fixe (140px) qui, combiné aux 3 boutons de
   .cal-nav et au titre "Calendrier P&L", pouvait dépasser la largeur d'une carte étroite
   (mobile) sans jamais s'enrouler — la carte débordait horizontalement hors de l'écran. */
.cal-header{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;margin-bottom:14px}
.cal-nav{display:flex;gap:6px;align-items:center}
.cal-month{font-weight:600;font-size:14px;min-width:140px;text-align:center}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-day-h{font-size:11px;text-align:center;padding:6px 0;color:var(--text-3);font-weight:600;text-transform:uppercase}
.cal-day{aspect-ratio:1;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:6px;display:flex;flex-direction:column;cursor:pointer;transition:all .12s;position:relative;overflow:hidden}
.cal-day:hover{border-color:var(--accent)}
.cal-day.empty{background:transparent;border:none;cursor:default}
.cal-day.today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.cal-day.win{background:var(--win-soft);border-color:rgba(0,230,118,.3)}
.cal-day.loss{background:var(--loss-soft);border-color:rgba(255,59,92,.3)}
.cal-day-num{font-size:11px;color:var(--text-2);font-weight:600}
.cal-day-pl{font-size:11px;font-family:var(--mono);font-weight:700;margin-top:auto}
.cal-day-cnt{font-size:9px;color:var(--text-3)}
.week-summary{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow-y:auto}
.week-row{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;display:flex;justify-content:space-between;align-items:center;font-size:12px}
.week-row .lbl{color:var(--text-3)}
.week-row .val{font-family:var(--mono);font-weight:700}
.insight-box{background:linear-gradient(135deg,var(--accent-soft),rgba(168,85,247,.08));border:1px solid var(--accent);border-radius:var(--radius-sm);padding:14px;margin-top:12px;font-size:13px;line-height:1.6;color:var(--text-1)}
.insight-box .ih{font-size:11px;color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.7px;margin-bottom:6px;display:flex;align-items:center;gap:6px}
.acc-strip{position:relative;margin-bottom:16px}
.acc-scroll{display:flex;gap:14px;overflow-x:auto;scroll-behavior:smooth;padding:2px 2px 12px}
.acc-scroll::-webkit-scrollbar{height:8px}
.acc-card{flex:0 0 320px;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:18px;position:relative}
.acc-card.challenge{border-color:rgba(168,85,247,.4)}
.acc-card.challenge::before{content:'CHALLENGE';position:absolute;top:8px;right:10px;font-size:9px;color:#c084fc;font-weight:700;letter-spacing:.7px}
.acc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.acc-name{font-weight:700;font-size:15px}
/* V6.30 — Badge logo broker / prop firm (monogramme coloré, pas d'image externe) */
.broker-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:8px;font-weight:800;letter-spacing:.3px;flex-shrink:0;font-family:var(--sans);line-height:1}
.broker-badge-img{overflow:hidden;background:#0a0a0a;border:1px solid var(--border)}
.acc-tag{padding:3px 8px;border-radius:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.acc-tag.ic{background:rgba(0,212,255,.15);color:var(--accent)}
.acc-tag.ftmo{background:rgba(168,85,247,.18);color:#c084fc}
.acc-balance{font-family:var(--mono);font-size:22px;font-weight:700;margin:6px 0}
.acc-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.acc-stat .l{font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.5px}
.acc-stat .v{font-family:var(--mono);font-weight:600;font-size:13px;margin-top:2px}
.progress{height:6px;background:var(--bg-3);border-radius:4px;overflow:hidden}
.progress-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--win));border-radius:4px;transition:width .65s cubic-bezier(.22,1,.36,1)}
/* V6.15 — Animations d'entrée légères (opacity+transform, GPU-friendly) */
@keyframes sldFadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.tracker-card{animation:sldFadeIn .42s cubic-bezier(.22,1,.36,1) both}
.tracker-card:nth-child(2){animation-delay:.06s}
.tracker-card:nth-child(3){animation-delay:.12s}
.tracker-card:nth-child(4){animation-delay:.18s}
.analysis-card{animation:sldFadeIn .35s ease both}
.news-card{animation:sldFadeIn .3s ease both}
@media (prefers-reduced-motion:reduce){.tracker-card,.analysis-card,.news-card{animation:none}}
/* V6.16 — Mode performance : coupe les animations/transitions */
body.no-anim *,body.no-anim *::before,body.no-anim *::after{animation-duration:.001s!important;transition-duration:.001s!important}
.progress-info{display:flex;justify-content:space-between;font-size:11px;margin-top:6px;color:var(--text-3);font-family:var(--mono)}
.acc-mini-chart{height:60px;margin-top:8px}
.acc-rules{font-size:10px;color:var(--text-3);margin-top:8px;font-family:var(--mono);display:flex;justify-content:space-between}
.acc-arrow{position:absolute;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:50%;background:var(--bg-2);border:1px solid var(--border-strong);color:var(--text-1);cursor:pointer;display:grid;place-items:center;font-size:16px;z-index:5;opacity:.85}
.acc-arrow:hover{background:var(--bg-3);opacity:1}
.acc-arrow.left{left:-12px}.acc-arrow.right{right:-12px}
.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border);position:relative;scroll-behavior:smooth}
.table-wrap::-webkit-scrollbar{height:12px}
.table-wrap::-webkit-scrollbar-track{background:var(--bg-2);border-radius:6px}
.table-wrap::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px;border:2px solid var(--bg-2)}
.table-wrap::-webkit-scrollbar-thumb:hover{background:var(--accent)}
.scroll-hint{display:flex;gap:8px;justify-content:flex-end;margin-bottom:8px;font-size:11px;color:var(--text-3)}
.scroll-hint .nav-arrows{display:flex;gap:4px}
.scroll-hint button{width:28px;height:28px;display:grid;place-items:center;padding:0;font-size:14px}
.table{width:100%;border-collapse:collapse;font-size:13px}
.table th{background:var(--bg-2);padding:11px 12px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);border-bottom:1px solid var(--border);white-space:nowrap}
.table td{padding:11px 12px;border-bottom:1px solid var(--border);font-family:var(--mono);white-space:nowrap;vertical-align:middle}
.table tr.win-row{background:rgba(0,230,118,.04)}
.table tr.win-row:hover{background:rgba(0,230,118,.08)}
.table tr.loss-row{background:rgba(255,59,92,.04)}
.table tr.loss-row:hover{background:rgba(255,59,92,.08)}
.table tr:hover{background:var(--bg-2)}
.table tr.partial-row{background:rgba(0,212,255,.08)!important}
.table tr.partial-row:hover{background:rgba(0,212,255,.14)!important}
.tag-cp{background:rgba(0,212,255,.18);color:var(--accent)}
.tag{display:inline-flex;padding:3px 9px;border-radius:100px;font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;font-family:var(--sans)}
.tag-buy{background:rgba(59,130,246,.18);color:var(--buy)}
.tag-sell{background:rgba(245,158,11,.18);color:var(--sell)}
.tag-win{background:var(--win-mid);color:var(--win)}
.tag-loss{background:var(--loss-mid);color:var(--loss)}
.tag-be{background:rgba(148,163,184,.18);color:var(--neutral)}
.tag-lo{background:rgba(168,85,247,.18);color:var(--lo)}
.tag-ny{background:rgba(59,130,246,.18);color:var(--ny)}
.tag-as{background:rgba(20,184,166,.18);color:var(--as)}
.tag-setup{background:var(--bg-3);color:var(--text-2)}
.tag-ic{background:rgba(0,212,255,.15);color:var(--accent)}
.tag-ftmo{background:rgba(168,85,247,.18);color:#c084fc}
.pair-cell{display:inline-flex;align-items:center;gap:4px;font-weight:600;font-size:12px}
.pair-flag{display:inline-flex;align-items:center;gap:3px}
.pair-sep{color:var(--text-3);margin:0 2px}
.filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.filter-chip{padding:7px 13px;background:var(--bg-2);border:1px solid var(--border);border-radius:100px;font-size:12px;cursor:pointer;font-weight:500;color:var(--text-2);transition:all .15s}
.filter-chip:hover{color:var(--text-1);border-color:var(--border-strong)}
.filter-chip.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.filter-sel{padding:7px 10px;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;color:var(--text-1);font-size:12px;font-family:inherit;cursor:pointer}
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px);z-index:100;display:none;align-items:flex-start;justify-content:center;padding:40px 20px;overflow-y:auto}
.modal-backdrop.show{display:flex}
.modal{background:var(--bg-1);border:1px solid var(--border-strong);border-radius:var(--radius);width:100%;max-width:760px;box-shadow:var(--shadow)}
.modal.lg{max-width:900px}
.modal.sm{max-width:480px}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--border)}
.modal-title{font-size:16px;font-weight:700}
.modal-close{background:transparent;border:none;color:var(--text-3);cursor:pointer;font-size:22px;line-height:1}
.modal-close:hover{color:var(--text-1)}
.modal-body{padding:22px}
.modal-foot{padding:16px 22px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid .full{grid-column:1/-1}
.form-grid .third{grid-column:span 2}
.form-row{display:flex;flex-direction:column;gap:6px}
.form-row label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);font-weight:600}
.form-row input,.form-row select,.form-row textarea{padding:9px 11px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-1);font-family:inherit;font-size:13px;transition:border .15s}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:var(--accent)}
.form-row input[type=number],.form-row input[type=date],.form-row input[type=time]{font-family:var(--mono)}
.form-row textarea{resize:vertical;min-height:60px}
.form-row .computed{font-family:var(--mono);font-size:13px;padding:9px 11px;background:rgba(0,212,255,.08);border:1px dashed var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-weight:600}
.form-section{grid-column:1/-1;border-top:1px solid var(--border);padding-top:14px;margin-top:6px}
.form-section h4{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.7px;font-weight:700;margin-bottom:10px}
.partials-list{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.partial-item{display:grid;grid-template-columns:auto 1fr 1fr 1fr 1fr auto;gap:8px;align-items:center;padding:8px;background:var(--bg-2);border-radius:6px}
.partial-item label{font-size:10px;color:var(--text-3);text-transform:uppercase;font-weight:600}
.partial-item input{padding:6px 8px;font-size:12px;background:var(--bg-3);border:1px solid var(--border);border-radius:4px;color:var(--text-1);font-family:var(--mono)}
.partial-item .x{background:transparent;border:none;color:var(--loss);cursor:pointer;font-size:18px}
.chart-wrap{position:relative;height:380px}
.chart-wrap-sm{position:relative;height:280px}
.chart-wrap-mini{position:relative;height:60px}
.analyses-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px}
.analysis-card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:16px;cursor:pointer;transition:all .15s}
.analysis-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.analysis-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;flex-wrap:wrap;gap:6px}
.analysis-title{font-size:14px;font-weight:700;margin-bottom:4px}
.analysis-meta{font-size:11px;color:var(--text-3);margin-bottom:10px;font-family:var(--mono)}
.analysis-result{margin-top:10px;padding-top:10px;border-top:1px solid var(--border);font-size:12px;display:flex;justify-content:space-between;align-items:center}
.bias-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:100px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.bias-pill.bull{background:var(--win-mid);color:var(--win)}
.bias-pill.bear{background:var(--loss-mid);color:var(--loss)}
.bias-pill.neutral{background:rgba(148,163,184,.18);color:var(--neutral)}
.perf-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}
.stat-list{display:flex;flex-direction:column;gap:8px}
.stat-row{display:flex;justify-content:space-between;padding:10px 12px;background:var(--bg-2);border-radius:var(--radius-sm);font-size:13px}
.stat-row .l{color:var(--text-3)}
.stat-row .v{font-family:var(--mono);font-weight:700}
.empty{text-align:center;padding:40px 20px;color:var(--text-3)}
.empty-emoji{font-size:36px;margin-bottom:8px}
.empty-title{font-size:14px;font-weight:600;color:var(--text-2);margin-bottom:4px}
.empty-sub{font-size:12px}
.day-details{background:var(--bg-1);border:1px solid var(--border-strong);border-radius:var(--radius);padding:18px;width:100%;max-width:560px}
.iframe-wrap{width:100%;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);background:var(--bg-1)}
.iframe-wrap iframe{width:100%;min-height:600px;border:0;display:block}
/* V6.37 — Retour à investing.com : essai TradingView abandonné, la traduction française
   complète des annonces/résultats (priorité utilisateur) prime sur le thème sombre natif —
   TradingView traduit l'interface mais garde les noms d'indicateurs en anglais technique
   (Core CPI MM, GDP QQ...). Aucun paramètre de couleur natif fiable trouvé pour investing.com
   après recherche (leur builder interactif propose des couleurs mais le paramètre d'URL
   exact n'est documenté nulle part et je n'ai pas pu l'inspecter — accès à investing.com et
   tradingview.com bloqué par la politique de navigation). Retour au filtre CSS le plus abouti
   déjà validé (brightness+contrast, sans invert() qui corrompait les couleurs des drapeaux). */
#econFrame{filter:brightness(0.42) contrast(1.25)}
.toggle-group{display:inline-flex;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:3px}
.toggle-group button{background:transparent;border:none;padding:6px 12px;border-radius:6px;color:var(--text-3);cursor:pointer;font-size:12px;font-weight:600;font-family:inherit}
.toggle-group button.active{background:var(--bg-3);color:var(--text-1)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ai-layout{display:grid;grid-template-columns:1fr 360px;gap:16px;height:calc(100vh - 160px)}
.ai-chat{display:flex;flex-direction:column;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.ai-msgs{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:12px}
.ai-msg{max-width:85%;padding:12px 14px;border-radius:14px;font-size:13.5px;line-height:1.55;white-space:pre-wrap}
.ai-msg.user{align-self:flex-end;background:var(--accent);color:var(--bg-0);border-bottom-right-radius:4px;font-weight:500}
.ai-msg.bot{align-self:flex-start;background:var(--bg-2);color:var(--text-1);border:1px solid var(--border);border-bottom-left-radius:4px}
.ai-msg.bot .src{display:block;font-size:10px;color:var(--text-3);margin-top:8px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px}
.ai-input{border-top:1px solid var(--border);padding:12px;display:flex;gap:8px;background:var(--bg-1)}
.ai-input input{flex:1;padding:10px 12px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-1);font-family:inherit;font-size:13px}
.ai-input input:focus{outline:none;border-color:var(--accent)}
.ai-suggestions{display:flex;gap:6px;flex-wrap:wrap;padding:10px 12px;background:var(--bg-2);border-top:1px solid var(--border)}
.ai-sugg{padding:5px 10px;font-size:11px;background:var(--bg-3);border:1px solid var(--border);border-radius:100px;cursor:pointer;color:var(--text-2)}
.ai-sugg:hover{border-color:var(--accent);color:var(--accent)}
.ai-side{display:flex;flex-direction:column;gap:14px;overflow-y:auto;padding-right:4px}
.ai-card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:14px}
.ai-card-h{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.6px;font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.alert-item{padding:9px 11px;background:var(--bg-2);border-radius:var(--radius-sm);margin-bottom:6px;font-size:12px;border-left:3px solid var(--warn)}
.alert-item.danger{border-left-color:var(--loss);background:var(--loss-soft)}
.alert-item.info{border-left-color:var(--accent);background:var(--accent-soft)}
.alert-item.good{border-left-color:var(--win);background:var(--win-soft)}
.alert-item .at{font-size:10px;color:var(--text-3);margin-top:3px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.4px}
.news-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;border-left:3px solid var(--text-3);cursor:pointer;transition:all .15s}
.news-card:hover{border-color:var(--accent);transform:translateX(2px)}
.news-card.imp-4{border-left-color:#a855f7}
.news-card.imp-3{border-left-color:var(--loss)}
.news-card.imp-2{border-left-color:var(--warn)}
.news-card.imp-1{border-left-color:var(--win)}
.news-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:8px;flex-wrap:wrap}
.news-title{font-size:13px;font-weight:600;line-height:1.4}
.news-meta{font-size:10px;color:var(--text-3);font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px}
.news-sum{font-size:12px;color:var(--text-2);line-height:1.5;margin-top:4px}
.news-tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.agent-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:11px;margin-bottom:8px}
.agent-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}
.agent-name{font-size:13px;font-weight:700}
.agent-status{font-size:10px;padding:2px 7px;border-radius:100px;font-family:var(--mono);letter-spacing:.4px;text-transform:uppercase}
.agent-status.ok{background:var(--win-mid);color:var(--win)}
.agent-status.warn{background:rgba(250,204,21,.18);color:var(--warn)}
.agent-status.alert{background:var(--loss-mid);color:var(--loss)}
.agent-body{font-size:12px;color:var(--text-2);line-height:1.5}
.bk-row{display:flex;justify-content:space-between;align-items:center;padding:11px 13px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:8px;font-size:13px}
.bk-row .l{font-family:var(--mono);font-size:12px}
.bk-row .actions{display:flex;gap:6px}
.mp-card{padding:14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-1);text-align:center;transition:transform .15s,border-color .15s}
.mp-card:hover{transform:translateY(-2px)}
/* V6.27 — Échelle d'attention unique et cohérente : vert → jaune → orange → rouge */
.mp-card.mp-l1{border-color:rgba(0,230,118,.45);background:rgba(0,230,118,.07)}
.mp-card.mp-l2{border-color:rgba(250,204,21,.5);background:rgba(250,204,21,.07)}
.mp-card.mp-l3{border-color:rgba(255,138,61,.55);background:rgba(255,138,61,.09)}
.mp-card.mp-l4{border-color:rgba(255,59,92,.6);background:rgba(255,59,92,.09)}
.mp-card.mp-l1 .mp-val{color:#4fd99a}
.mp-card.mp-l2 .mp-val{color:#f5cb5c}
.mp-card.mp-l3 .mp-val{color:#ff9d5c}
.mp-card.mp-l4 .mp-val{color:#ff6b81}
.mp-legend{grid-column:1/-1;display:flex;gap:16px;flex-wrap:wrap;font-size:11px;color:var(--text-3);padding:2px 2px 8px}
.mp-legend span{display:flex;align-items:center;gap:5px}
.mp-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}
/* V6.28 — Fil d'actualités macro : design premium */
.mnf-item{position:relative;flex-shrink:0;padding:13px 15px 12px 17px;background:var(--bg-2);border:1px solid var(--border);border-radius:10px;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease;overflow:hidden}
.mnf-item:hover{transform:translateY(-2px);border-color:var(--border-strong);box-shadow:0 8px 22px rgba(0,0,0,.32)}
.mnf-item::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px}
.mnf-item.imp4::before{background:linear-gradient(180deg,#ff5b5b,#ff8a8a)}
.mnf-item.imp3::before{background:linear-gradient(180deg,#ff9d5c,#ffba85)}
.mnf-item.imp2::before{background:linear-gradient(180deg,#f5cb5c,#f7da86)}
.mnf-item.imp1::before{background:linear-gradient(180deg,#4fd99a,#7ee2b4)}
.mnf-top{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.mnf-badge{font-size:9px;font-weight:800;letter-spacing:.6px;padding:3px 8px;border-radius:5px;text-transform:uppercase;flex-shrink:0}
.mnf-badge.imp4{background:rgba(255,91,91,.16);color:#ff7b7b}
.mnf-badge.imp3{background:rgba(255,157,92,.16);color:#ffae78}
.mnf-badge.imp2{background:rgba(245,203,92,.16);color:#f5cb5c}
.mnf-badge.imp1{background:rgba(79,217,154,.16);color:#6fdfaa}
.mnf-cat{font-size:10px;color:var(--text-3);font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.mnf-time{margin-left:auto;font-size:10px;color:var(--text-3);font-family:var(--mono);white-space:nowrap}
.mnf-title{font-size:13.5px;font-weight:700;color:var(--text-1);line-height:1.42;letter-spacing:-.1px}
.mnf-sum{font-size:11.5px;color:var(--text-2);line-height:1.55;margin-top:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mnf-foot{display:flex;align-items:center;gap:7px;margin-top:9px;padding-top:8px;border-top:1px solid var(--border);font-size:10px}
.mnf-src{color:var(--text-2);font-weight:700}
.mnf-mkt{color:var(--text-3)}
.mnf-link{margin-left:auto;color:var(--accent);text-decoration:none;font-weight:600}
.mnf-link:hover{text-decoration:underline}
body.no-anim .mnf-item{transition:none}
.mp-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--text-3);font-weight:700}
.mp-val{font-size:14px;font-weight:700;margin-top:6px}
.mp-em{font-size:22px;margin-bottom:4px}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--bg-1)}
::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:6px}
::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}
@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.dash-grid{grid-template-columns:1fr}.perf-grid{grid-template-columns:1fr}.two-col{grid-template-columns:1fr}.ai-layout{grid-template-columns:1fr;height:auto}}
@media(max-width:720px){.sidebar{width:64px}.brand{flex-direction:column;gap:8px}.brand-info,.nav-item span:not(.ic),.user-name,.user-email{display:none}.nav-item{justify-content:center}}
/* V6.42 — Palier tablette/mobile : grilles denses (formulaires, trackers, dispatch macro,
   clôtures partielles) repassées en 1 colonne ou compactées, cartes de compte en largeur
   fluide (au lieu d'un 320px fixe qui dépasse un écran de ~360-390px), espace repris sur le
   padding de contenu et les popovers (modale, notifications). Le tableau Journal garde son
   défilement horizontal natif (.table-wrap) plutôt qu'une réécriture en cartes empilées —
   pattern déjà établi et fiable (cf. calendrier économique, Flux Macro) pour ce cas précis. */
@media(max-width:640px){
 .content{padding:14px}
 .kpi-grid{grid-template-columns:repeat(2,1fr);gap:10px}
 .kpi{padding:14px 16px}
 .kpi-value{font-size:22px}
 .trackers-strip{grid-template-columns:1fr}
 .dispatch-grid{grid-template-columns:1fr}
 .dispatch-col{border-right:none;border-bottom:1px solid var(--border)}
 .dispatch-col:last-child{border-bottom:none}
 .form-grid{grid-template-columns:1fr}
 .form-grid .third{grid-column:1/-1}
 .partial-item{grid-template-columns:1fr 1fr;row-gap:6px}
 .trends-pair-row{grid-template-columns:1fr;row-gap:6px}
 .analyses-grid{grid-template-columns:1fr}
 .acc-card{flex-basis:min(320px,82vw)}
 .modal-backdrop{padding:16px 8px}
 .modal-body{padding:16px}
 .set-row{flex-wrap:wrap}
 .set-row>div:first-child{flex:1 1 100%}
 .fab,.fab-stack .fab-main{width:52px;height:52px;font-size:26px}
 .fab-stack{bottom:16px;right:16px}
 .notif-panel{width:calc(100vw - 24px);right:-12px}
}
@media(max-width:420px){.kpi-grid{grid-template-columns:1fr}}
