/* CopyFlow — système visuel V4.2 pour /app (GÉNÉRÉ par scripts/gen_ui_css.py depuis le design master figé
   feature/design-preview-v4-2 @ e481d84 — ne pas éditer à la main : modifier ui.css pour les ajustements d'intégration).
   Jetons de repli ; règles de coque globales ; composants des nouveaux écrans préfixés .v42 (aucune collision avec les
   classes historiques des modules du journal). Les couleurs effectives sont posées sur <html> par ui/theme.js. */

:root {
  --font: 'Plus Jakarta Sans', 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --mono: 'JetBrains Mono', ui-monospace, Consolas, monospace;
  --fs-xs: 11.5px; --fs-meta: 12px; --fs-sm: 12.5px; --fs-body: 13px; --fs-h3: 13.5px; --fs-h2: 15px; --fs-h1: 21px;
  --fs-kpi: 26px; --fs-kpi-lg: 34px;
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 20px; --s6: 24px; --s7: 32px;
  --gap: 14px;                     /* espace entre panneaux */
  --pp: 18px;                      /* padding de panneau */
  --row: 38px;
  --r-xs: 8px; --r-sm: 10px; --r-md: 12px; --r-lg: 14px; --r-xl: 16px; --r-ws: 24px; --r-pill: 999px;
  --t: 160ms; --ease: cubic-bezier(.2, .7, .2, 1);

  /* vignettes de thème (fixes) */
  --th-l-bg: #F3EEE8; --th-l-pnl: #FFFDFB; --th-d-bg: #0C0907; --th-d-pnl: #2A1E17;

  /* ---------- SOMBRE (identité de la référence) ---------- */
  --bg: #0B0806;
  --glow-1: rgba(150, 72, 24, .30);
  --glow-2: rgba(110, 50, 18, .22);
  --glow-3: rgba(46, 227, 160, .05);
  --pnl-top: rgba(46, 33, 25, .82);
  --pnl-bot: rgba(26, 19, 15, .82);
  --pnl-edge: rgba(255, 222, 196, .07);       /* liseré lumineux haut du panneau */
  --pnl-ring: rgba(255, 222, 196, .045);
  --card: rgba(255, 236, 218, .045);          /* sous-surface dans un panneau (lignes, tuiles) */
  --card-2: rgba(255, 236, 218, .075);
  --card-hi: rgba(255, 236, 218, .11);
  --inset: rgba(0, 0, 0, .28);                /* creux : segments, champs */
  --line: rgba(255, 228, 205, .06);
  --line-2: rgba(255, 228, 205, .12);
  --text: #F5EDE5;
  --text-2: #BBAA9B;
  --text-3: #7F7064;
  --text-inv: #120C08;
  --tip-bg: #FFFFFF; --tip-text: #1A120C;
  --pos: #34E3A2; --pos-soft: rgba(52, 227, 162, .13); --pos-glow: rgba(52, 227, 162, .45);
  --neg: #FF6B5F; --neg-soft: rgba(255, 107, 95, .13);
  --warn: #F6BD4A; --warn-soft: rgba(246, 189, 74, .14);
  --info: #8EA9FF;
  --chart-grid: rgba(255, 228, 205, .06);
  --chart-axis: #7F7064;
  --bar-a: rgba(120, 78, 52, .55); --bar-b: rgba(70, 44, 28, .35);       /* barres neutres brunes */
  --brand-card-1: #E08A43; --brand-card-2: #A3511D; --brand-card-3: #3A1E10;   /* carte « vedette » */
  --shot-bg: #140E0A; --shot-up: #E9DCCF; --shot-dn: #6B5547;
  --sh-pnl: 0 0 0 1px var(--pnl-ring), inset 0 1px 0 var(--pnl-edge), 0 24px 48px -24px rgba(0, 0, 0, .75);
  --sh-pop: 0 0 0 1px rgba(255, 228, 205, .08), 0 24px 60px -16px rgba(0, 0, 0, .8);
  --sh-btn: inset 0 1px 0 rgba(255, 255, 255, .25), 0 8px 20px -8px var(--ac-glow);
  --scrim: rgba(6, 4, 3, .6);
  --grain: .05;
  --blur: none;
  color-scheme: dark;

  --ws-1: #1D1A17; --ws-2: #151311; --ws-3: #0F0E0D; --pnl-mid: rgba(34, 30, 27, .9); --pnl2-top: #1E1B19; --pnl2-bot: #1B1917;
  --feature-text: #F4EFEA; --focus-ring: #F2661C; --ac-hover: #FF7A33; --ac-border: rgba(242, 102, 28, .45);
  --sh-shell: 0 30px 70px -30px rgba(0, 0, 0, .9); --sh-elev: 0 10px 24px -12px rgba(0, 0, 0, .7);
  --scroll-thumb: rgba(255, 255, 255, .16); --scroll-thumb-hover: rgba(255, 255, 255, .28);
  /* accent par défaut = Ember (orange de la référence) ; réécrit par v4.js */
  --ac-1: #FF9B52; --ac-2: #F2661C; --ac: #F57A2B; --ac-text: #FF9B52; --ac-on: #1A0D05;
  --ac-soft: rgba(245, 122, 43, .16); --ac-glow: rgba(245, 122, 43, .55); --ac-focus: rgba(245, 122, 43, .4);
  /* V4.2 : portée « coque » (identique à l'espace de travail sauf en mode mixte) + mobile */
  --shell-text: var(--text); --shell-text-2: var(--text-2); --shell-text-3: var(--text-3); --shell-card: var(--card); --shell-card-2: var(--card-2);
  --shell-card-hi: var(--card-hi); --shell-line: var(--line); --shell-line-2: var(--line-2); --shell-inset: var(--inset); --shell-pnl-top: var(--pnl-top);
  --shell-pnl-mid: var(--pnl-mid); --shell-pnl-bot: var(--pnl-bot); --shell-pnl-ring: var(--pnl-ring); --shell-ac-text: var(--ac-text); --shell-ac-soft: var(--ac-soft);
  --shell-focus-ring: var(--focus-ring); --shell-sh-pop: var(--sh-pop); --shell-scroll-thumb: var(--scroll-thumb);
  --m-page: var(--bg); --m-topbar: var(--bg);
}

[data-theme="light"], [data-theme="mixed"] {
  --bg: #F3EEE8;
  --glow-1: rgba(255, 186, 130, .38);
  --glow-2: rgba(240, 200, 160, .35);
  --glow-3: rgba(46, 200, 140, .06);
  --pnl-top: rgba(255, 253, 250, .92);
  --pnl-bot: rgba(251, 246, 240, .92);
  --pnl-edge: rgba(255, 255, 255, .9);
  --pnl-ring: rgba(92, 54, 26, .07);
  --card: rgba(120, 76, 40, .045);
  --card-2: rgba(120, 76, 40, .075);
  --card-hi: rgba(120, 76, 40, .11);
  --inset: rgba(120, 76, 40, .07);
  --line: rgba(92, 54, 26, .07);
  --line-2: rgba(92, 54, 26, .16);
  --text: #23170F;
  --text-2: #6F5D50;
  --text-3: #A08F82;
  --text-inv: #FFFFFF;
  --tip-bg: #23170F; --tip-text: #FFF8F2;
  --pos: #0D9466; --pos-soft: rgba(13, 148, 102, .1); --pos-glow: rgba(13, 148, 102, .3);
  --neg: #D63A2F; --neg-soft: rgba(214, 58, 47, .09);
  --warn: #B87500; --warn-soft: rgba(214, 150, 20, .13);
  --info: #3D5FD9;
  --chart-grid: rgba(92, 54, 26, .07);
  --chart-axis: #A08F82;
  --bar-a: rgba(176, 130, 96, .45); --bar-b: rgba(176, 130, 96, .16);
  --brand-card-1: #FFC08A; --brand-card-2: #F28A45; --brand-card-3: #C9581C;
  --shot-bg: #FBF7F2; --shot-up: #3B2A1E; --shot-dn: #C9B6A6;
  --sh-pnl: 0 0 0 1px var(--pnl-ring), inset 0 1px 0 var(--pnl-edge), 0 18px 40px -26px rgba(92, 54, 26, .35);
  --sh-pop: 0 0 0 1px rgba(92, 54, 26, .08), 0 22px 50px -16px rgba(92, 54, 26, .35);
  --scrim: rgba(40, 24, 12, .28);
  --grain: .035;
  color-scheme: light;
}
[data-density="compact"] { --gap: 10px; --pp: 14px; --row: 32px; --fs-kpi: 22px; --fs-kpi-lg: 28px; }
/* === fin des jetons : aucune couleur littérale en dessous === */

*, *::before, *::after { box-sizing: border-box; }

.v42 .mono { font-family: var(--mono); font-size: .92em; letter-spacing: -.01em; }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; border-radius: var(--r-xs); }
svg.i { width: 16px; height: 16px; flex: none; stroke: currentColor; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
svg.i.sm { width: 13px; height: 13px; } svg.i.lg { width: 19px; height: 19px; }
.v42 .muted { color: var(--text-3); } .v42 .t2 { color: var(--text-2); } .v42 .small { font-size: var(--fs-meta); } .v42 .xs { font-size: var(--fs-xs); }
.v42 .pos { color: var(--pos); } .v42 .neg { color: var(--neg); } .v42 .warn { color: var(--warn); }
.v42 .row { display: flex; align-items: center; gap: var(--s2); } .v42 .row.wrap { flex-wrap: wrap; } .v42 .spacer { flex: 1; }
.v42 .col { display: flex; flex-direction: column; gap: var(--gap); min-width: 0; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }

/* ===================================================================== coque */
.shell { position: relative; z-index: 1; display: grid; grid-template-columns: var(--sbw, 228px) minmax(0, 1fr); gap: var(--gap); padding: var(--gap); min-height: 100vh; }
.shell.collapsed { --sbw: 68px; }
.sidebar { position: sticky; top: var(--gap); height: calc(100vh - var(--gap) * 2); display: flex; flex-direction: column; padding: 6px 4px; background: transparent; }
.sb-brand { display: flex; align-items: center; gap: 10px; height: 44px; padding: 0 6px; margin-bottom: 8px; font-weight: 800; font-size: 15px; letter-spacing: .02em; white-space: nowrap; color: var(--text-2); }
.sb-mark { width: 34px; height: 34px; border-radius: 11px; display: grid; place-items: center; flex: none; color: var(--ac-on);
  background: linear-gradient(160deg, var(--ac-1), var(--ac-2)); box-shadow: var(--sh-btn); }
.sb-brand b { color: var(--ac-text); font-weight: 800; }
.sb-scroll { flex: 1; overflow-y: auto; overflow-x: hidden; scrollbar-width: none; }
.sb-label { font-size: var(--fs-xs); font-weight: 700; color: var(--text-3); letter-spacing: .08em; text-transform: uppercase; padding: 14px 10px 5px; white-space: nowrap; }
.sb-item { display: flex; align-items: center; gap: 10px; width: 100%; height: 36px; padding: 0 6px; border: 0; border-radius: 12px; background: none; color: var(--text-2);
  font-size: var(--fs-sm); font-weight: 600; cursor: pointer; white-space: nowrap; text-decoration: none; text-align: left; transition: background var(--t), color var(--t); }
.sb-item .ib { width: 28px; height: 28px; border-radius: 9px; display: grid; place-items: center; flex: none; color: var(--text-3); transition: background var(--t), color var(--t); }
.sb-item:hover { background: var(--card); color: var(--text); }
.sb-item.on { color: var(--text); background: var(--card-2); }
.sb-item.on .ib { color: var(--ac-on); background: linear-gradient(160deg, var(--ac-1), var(--ac-2)); box-shadow: var(--sh-btn); }
.sb-item .lbl { overflow: hidden; text-overflow: ellipsis; }
.sb-item .cnt { margin-left: auto; font-size: var(--fs-xs); font-weight: 700; color: var(--ac-text); background: var(--ac-soft); border-radius: var(--r-pill); padding: 1px 7px; }
.sb-item .chev { margin-left: auto; transition: transform var(--t); color: var(--text-3); }
.sb-item[aria-expanded="true"] .chev { transform: rotate(90deg); }
.sb-sub { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--t) var(--ease); }
.sb-sub.open { grid-template-rows: 1fr; } .sb-sub > div { min-height: 0; overflow: hidden; }
.sb-state { display: flex; align-items: center; gap: 8px; width: 100%; margin-bottom: 6px; padding: 9px 10px; border: 0; border-radius: var(--r-md); background: var(--card); cursor: pointer; color: var(--text-2); font-size: var(--fs-meta); text-align: left; }
.sb-state b { color: var(--text); font-weight: 700; display: block; font-size: var(--fs-sm); }
.sb-foot { padding-top: 6px; }
.avatar { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; flex: none; font-size: 11px; font-weight: 800; color: var(--ac-on); background: linear-gradient(160deg, var(--ac-1), var(--ac-2)); }
.shell.collapsed .lbl, .shell.collapsed .sb-label, .shell.collapsed .chev, .shell.collapsed .cnt, .shell.collapsed .sb-state .st-txt, .shell.collapsed .sb-brand .lbl { display: none; }
.shell.collapsed .sb-item, .shell.collapsed .sb-state, .shell.collapsed .sb-brand { justify-content: center; padding: 0; }
.shell.collapsed .sb-state { height: 36px; } .shell.collapsed .sb-label { height: 10px; padding: 0; }

.frame { min-width: 0; display: flex; flex-direction: column; gap: var(--gap); }
.topbar { display: flex; align-items: center; gap: var(--s3); height: 52px; padding: 0 4px; }
.search { display: flex; align-items: center; gap: 10px; flex: 1; max-width: 460px; height: 42px; padding: 0 8px 0 16px; border: 0; border-radius: var(--r-pill);
  background: var(--card); color: var(--text-3); font-size: var(--fs-sm); cursor: text; }
.search kbd { margin-left: auto; font-family: var(--font); font-size: var(--fs-meta); font-weight: 600; color: var(--text-2); padding: 5px 12px; border-radius: var(--r-pill); background: var(--card-2); }
.tb-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.rbtn { width: 42px; height: 42px; border-radius: 50%; border: 0; display: grid; place-items: center; cursor: pointer; color: var(--text-2); position: relative; flex: none;
  background: var(--card); font-size: var(--fs-meta); font-weight: 800; }
.rbtn:hover { color: var(--text); }
.rbtn .dot { position: absolute; top: 10px; right: 11px; width: 7px; height: 7px; border-radius: 50%; background: var(--ac); box-shadow: 0 0 8px var(--ac-glow); }
.profile { display: flex; align-items: center; gap: 10px; height: 42px; padding: 0 12px 0 5px; border: 0; border-radius: var(--r-pill); cursor: pointer; color: var(--text);
  background: var(--card); text-align: left; }
.profile .avatar { width: 32px; height: 32px; font-size: 10.5px; letter-spacing: -.02em; } .profile .p-txt b { display: block; font-size: var(--fs-sm); } .profile .p-txt span { display: block; font-size: var(--fs-xs); color: var(--text-3); }

@keyframes fadein { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* ===================================================================== panneaux */
.v42 .pnl { position: relative; min-width: 0; border-radius: var(--r-xl); padding: var(--pp); background: linear-gradient(180deg, var(--pnl-top), var(--pnl-mid) 55%, var(--pnl-bot)); box-shadow: var(--sh-pnl); }
.v42 .pnl.sub { background: linear-gradient(180deg, var(--pnl2-top), var(--pnl2-bot)); box-shadow: 0 0 0 1px var(--pnl-ring); border-radius: var(--r-md); }
.v42 .pnl.flush { padding: 0; overflow: hidden; }
.v42 .pnl.feature { color: var(--text); background: radial-gradient(120% 110% at 0% 0%, var(--brand-card-1) 0%, var(--brand-card-2) 38%, var(--brand-card-3) 85%); box-shadow: var(--sh-pnl), 0 30px 60px -30px var(--ac-glow); }
.v42 .pnl.feature { color: var(--feature-text); }
.v42 .pnl.feature .muted, .v42 .pnl.feature .t2 { color: inherit; opacity: .78; }
.v42 .pnl.feature .r, .v42 .pnl.feature .delta { color: inherit; }
.v42 .ph { display: flex; align-items: flex-end; gap: var(--s4); flex-wrap: wrap; padding: 2px 4px 0; }
.v42 .ph h1 { margin: 0; font-size: var(--fs-h1); font-weight: 800; letter-spacing: -.02em; line-height: 1.2; }
.v42 .ph .sub { color: var(--text-3); font-size: var(--fs-sm); margin-top: 3px; }
.v42 .ph .actions { margin-left: auto; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.v42 .hd { display: flex; align-items: center; gap: var(--s2); margin-bottom: var(--s3); min-width: 0; }
.v42 .hd h2 { margin: 0; font-size: var(--fs-h2); font-weight: 700; letter-spacing: -.01em; white-space: nowrap; }
.v42 .hd h3 { margin: 0; font-size: var(--fs-h3); font-weight: 700; white-space: nowrap; }
.v42 .hd .aside { color: var(--text-3); font-size: var(--fs-meta); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v42 .hd .right { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.v42 .grid { display: grid; gap: var(--gap); min-width: 0; }
.v42 .g2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .v42 .g3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .v42 .g4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.v42 .g5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } .v42 .g6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.v42 .span2 { grid-column: span 2; } .v42 .span3 { grid-column: span 3; }

/* chiffres */
.v42 .kpi .l { font-size: var(--fs-meta); color: var(--text-2); font-weight: 600; display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.v42 .kpi .v { font-size: var(--fs-kpi); font-weight: 700; letter-spacing: -.025em; line-height: 1.15; margin-top: 4px; white-space: nowrap; display: flex; align-items: baseline; gap: 6px; }
.v42 .kpi .v.lg { font-size: var(--fs-kpi-lg); font-weight: 600; }
.v42 .kpi .v.md { font-size: 20px; } .v42 .kpi .v.sm { font-size: 16px; }
.v42 .kpi .u { font-size: .55em; color: var(--text-3); font-weight: 600; }
.v42 .kpi .f { margin-top: 5px; font-size: var(--fs-meta); color: var(--text-3); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.v42 .delta { display: inline-flex; align-items: center; gap: 2px; font-size: var(--fs-meta); font-weight: 700; }
.v42 .delta.pos { color: var(--pos); } .v42 .delta.neg { color: var(--neg); }
.v42 .tile { border-radius: var(--r-md); padding: 12px 14px; background: var(--card); min-width: 0; }
.v42 .tile.hi { background: var(--card-2); }
.v42 .tiles { display: grid; gap: 8px; }

/* ===================================================================== contrôles */
.v42 .btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; height: 36px; padding: 0 16px; border: 0; border-radius: var(--r-pill); cursor: pointer;
  background: var(--card-2); color: var(--text); font-size: var(--fs-sm); font-weight: 700; white-space: nowrap; text-decoration: none; transition: background var(--t), transform var(--t), box-shadow var(--t); }
.v42 .btn:hover { background: var(--card-hi); }
.v42 .btn:active { transform: translateY(1px); }
.v42 .btn:disabled { opacity: .45; cursor: default; }
.v42 .btn.primary { color: var(--ac-on); background: linear-gradient(180deg, var(--ac-1), var(--ac-2)); box-shadow: var(--sh-btn); }
.v42 .btn.primary:hover { filter: brightness(1.06); }
.v42 .btn.white { background: var(--tip-bg); color: var(--tip-text); }
.v42 .btn.ghost { background: transparent; color: var(--text-2); } .v42 .btn.ghost:hover { background: var(--card); color: var(--text); }
.v42 .btn.danger { background: var(--neg); color: var(--text-inv); box-shadow: inset 0 1px 0 var(--pnl-edge); }
.v42 .btn.danger-soft { background: var(--neg-soft); color: var(--neg); }
.v42 .btn.go-long { background: var(--pos-soft); color: var(--pos); } .v42 .btn.go-short { background: var(--neg-soft); color: var(--neg); }
.v42 .btn.sm { height: 30px; padding: 0 12px; font-size: var(--fs-meta); } .v42 .btn.xs { height: 26px; padding: 0 10px; font-size: var(--fs-xs); }
.v42 .btn.lg { height: 42px; padding: 0 20px; font-size: var(--fs-body); } .v42 .btn.block { width: 100%; }
.v42 .ibtn { width: 30px; height: 30px; border-radius: 50%; border: 0; display: inline-grid; place-items: center; cursor: pointer; background: var(--card); color: var(--text-2); flex: none; }
.v42 .ibtn:hover { background: var(--card-hi); color: var(--text); } .v42 .ibtn:disabled { opacity: .35; cursor: default; }
.v42 .link { border: 0; background: none; padding: 0; cursor: pointer; color: var(--ac-text); font-size: var(--fs-meta); font-weight: 700; display: inline-flex; align-items: center; gap: 2px; white-space: nowrap; }
.v42 .seg { display: inline-flex; gap: 2px; padding: 3px; border-radius: var(--r-pill); background: var(--inset); }
.v42 .seg button { height: 28px; padding: 0 12px; border: 0; border-radius: var(--r-pill); background: none; cursor: pointer; color: var(--text-2); font-size: var(--fs-meta); font-weight: 600; white-space: nowrap; display: inline-flex; align-items: center; gap: 5px; }
.v42 .seg button:hover { color: var(--text); }
.v42 .seg button.on { background: var(--card-hi); color: var(--text); box-shadow: inset 0 1px 0 var(--pnl-edge); }
.v42 .tabs { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; padding: 4px; border-radius: var(--r-pill); background: var(--inset); width: max-content; max-width: 100%; }
.v42 .tabs button { flex: none; height: 32px; padding: 0 14px; border: 0; border-radius: var(--r-pill); background: none; color: var(--text-2); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; white-space: nowrap; }
.v42 .tabs button.on { color: var(--ac-on); background: linear-gradient(180deg, var(--ac-1), var(--ac-2)); box-shadow: var(--sh-btn); }
.v42 .tabs button:not(.on):hover { color: var(--text); }
.v42 .chip { height: 28px; padding: 0 12px; border: 0; border-radius: var(--r-pill); background: var(--card); color: var(--text-2); font-size: var(--fs-meta); font-weight: 600; cursor: pointer; white-space: nowrap; display: inline-flex; align-items: center; gap: 5px; }
.v42 .chip:hover { color: var(--text); background: var(--card-2); }
.v42 .chip.on { background: var(--ac-soft); color: var(--ac-text); box-shadow: inset 0 0 0 1px var(--ac-soft); }
.v42 .input { display: flex; align-items: center; gap: 8px; height: 34px; padding: 0 12px; border-radius: var(--r-pill); background: var(--inset); color: var(--text-3); min-width: 0; }
.v42 .input input { border: 0; outline: 0; background: none; width: 100%; min-width: 0; color: var(--text); font-size: var(--fs-sm); }
.v42 .input:focus-within { box-shadow: 0 0 0 2px var(--ac-focus); }
.v42 .sel { height: 30px; padding: 0 28px 0 12px; border: 0; border-radius: var(--r-pill); background: var(--inset); color: var(--text); font-size: var(--fs-meta); font-weight: 600; cursor: pointer; appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position: calc(100% - 15px) 13px, calc(100% - 11px) 13px; background-size: 4px 4px; background-repeat: no-repeat; }
.v42 .num-in { width: 52px; height: 26px; border: 0; border-radius: var(--r-xs); background: var(--inset); color: var(--text); text-align: center; font-size: var(--fs-meta); font-weight: 700; }
.v42 .field { display: flex; flex-direction: column; gap: 6px; }
.v42 .field label { font-size: var(--fs-meta); color: var(--text-2); font-weight: 600; }
.v42 .field .ctl { height: 38px; padding: 0 14px; border: 0; border-radius: var(--r-md); background: var(--inset); color: var(--text); outline: 0; font-size: var(--fs-sm); }
.v42 .field textarea.ctl { height: auto; min-height: 84px; padding: 10px 14px; resize: vertical; line-height: 1.5; }
.v42 .field .ctl:focus { box-shadow: 0 0 0 2px var(--ac-focus); }
.v42 .sw { position: relative; width: 34px; height: 20px; flex: none; border: 0; border-radius: var(--r-pill); background: var(--card-hi); cursor: pointer; transition: background var(--t); }
.v42 .sw::after { content: ""; position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: var(--text-2); transition: transform var(--t) var(--ease), background var(--t); }
.v42 .sw.on { background: linear-gradient(180deg, var(--ac-1), var(--ac-2)); } .v42 .sw.on::after { transform: translateX(14px); background: var(--ac-on); }
.v42 .sw.sm { width: 28px; height: 16px; } .v42 .sw.sm::after { width: 10px; height: 10px; } .v42 .sw.sm.on::after { transform: translateX(12px); }
.v42 .check { width: 16px; height: 16px; border-radius: 5px; flex: none; display: grid; place-items: center; background: var(--inset); }
.v42 .check.on { background: linear-gradient(180deg, var(--ac-1), var(--ac-2)); color: var(--ac-on); } .v42 .check svg { width: 11px; height: 11px; stroke-width: 2.6; }
.v42 .chk { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); color: var(--text-2); min-height: 30px; }

/* ===================================================================== pastilles, statuts */
.v42 .pill { display: inline-flex; align-items: center; gap: 5px; height: 21px; padding: 0 8px; border-radius: var(--r-pill); font-size: var(--fs-xs); font-weight: 700; white-space: nowrap; background: var(--card-2); color: var(--text-2); }
.v42 .pill.pos { background: var(--pos-soft); color: var(--pos); } .v42 .pill.neg { background: var(--neg-soft); color: var(--neg); }
.v42 .pill.warn { background: var(--warn-soft); color: var(--warn); } .v42 .pill.ac { background: var(--ac-soft); color: var(--ac-text); } .v42 .pill.info { background: var(--card-2); color: var(--info); }
.v42 .pill.outline { background: transparent; box-shadow: inset 0 0 0 1px var(--line-2); }
.v42 .st { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-meta); color: var(--text-2); white-space: nowrap; }
.v42 .st i { width: 7px; height: 7px; border-radius: 50%; flex: none; background: var(--text-3); }
.v42 .st.ok i { background: var(--pos); box-shadow: 0 0 8px var(--pos-glow); } .v42 .st.warn i { background: var(--warn); } .v42 .st.err i { background: var(--neg); border-radius: 2px; transform: rotate(45deg); }
.v42 .st.off i { background: transparent; box-shadow: inset 0 0 0 1.5px var(--text-3); }
.v42 .r { font-weight: 700; white-space: nowrap; } .v42 .r.pos { color: var(--pos); } .v42 .r.neg { color: var(--neg); } .v42 .r.zero { color: var(--text-3); }
.v42 .dir { display: inline-flex; align-items: center; gap: 3px; font-size: var(--fs-meta); font-weight: 700; }
.v42 .dir.long { color: var(--pos); } .v42 .dir.short { color: var(--neg); } .v42 .dir svg { width: 12px; height: 12px; stroke-width: 2.2; }
.v42 .bar { height: 5px; border-radius: 3px; background: var(--card-2); overflow: hidden; }
.v42 .bar > i { display: block; height: 100%; border-radius: 3px; background: var(--text-3); }
.v42 .bar > i.ac { background: linear-gradient(90deg, var(--ac-2), var(--ac-1)); } .v42 .bar > i.pos { background: var(--pos); } .v42 .bar > i.warn { background: var(--warn); } .v42 .bar > i.neg { background: var(--neg); }
.v42 .conf { display: inline-flex; gap: 2px; } .v42 .conf i { width: 10px; height: 4px; border-radius: 2px; background: var(--card-hi); } .v42 .conf i.on { background: var(--ac-text); }
.v42 .crown { color: var(--warn); font-size: 13px; }

/* ===================================================================== listes & tableaux */
.v42 .list { display: flex; flex-direction: column; gap: 6px; }
.v42 .li { display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 8px 12px; border-radius: var(--r-md); background: var(--card); min-width: 0; }
.v42 .li.click { cursor: pointer; transition: background var(--t); } .v42 .li.click:hover { background: var(--card-2); }
.v42 .li .body { flex: 1; min-width: 0; }
.v42 .li .title { font-weight: 700; font-size: var(--fs-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v42 .li .meta { font-size: var(--fs-xs); color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 1px; }
.v42 .li .ic { width: 34px; height: 34px; border-radius: 11px; display: grid; place-items: center; flex: none; background: var(--card-2); color: var(--text-2); }
.v42 .li .ic.ac { background: var(--ac-soft); color: var(--ac-text); } .v42 .li .ic.warn { background: var(--warn-soft); color: var(--warn); } .v42 .li .ic.neg { background: var(--neg-soft); color: var(--neg); } .v42 .li .ic.pos { background: var(--pos-soft); color: var(--pos); }
.v42 .li.dense { min-height: 0; padding: 6px 10px; }
.v42 .tbl-wrap { overflow: auto; }
.v42 table.t { width: 100%; border-collapse: separate; border-spacing: 0 4px; font-size: var(--fs-sm); }
.v42 table.t th { position: sticky; top: 0; z-index: 1; height: 28px; padding: 0 10px; text-align: left; font-size: var(--fs-xs); font-weight: 700; color: var(--text-3); text-transform: uppercase; letter-spacing: .05em; white-space: nowrap; cursor: pointer; user-select: none; background: transparent; }
.v42 table.t th.num, .v42 table.t td.num { text-align: right; }
.v42 table.t th.sorted { color: var(--ac-text); }
.v42 table.t td { height: var(--row); padding: 0 10px; white-space: nowrap; background: var(--card); }
.v42 table.t td:first-child { border-radius: var(--r-sm) 0 0 var(--r-sm); } .v42 table.t td:last-child { border-radius: 0 var(--r-sm) var(--r-sm) 0; }
.v42 table.t tbody tr:hover td { background: var(--card-2); }
.v42 table.t tr.click { cursor: pointer; }
.v42 table.t .sec { color: var(--text-3); }
.v42 table.t.dense td { height: 32px; }
.v42 .mrows { display: none; }

/* ===================================================================== graphiques */
.v42 .chart { position: relative; }
.v42 .chart svg { display: block; width: 100%; height: auto; overflow: visible; }
.v42 .chart .gl { stroke: var(--chart-grid); }
.v42 .chart .ax { fill: var(--chart-axis); font-size: 10.5px; font-family: var(--font); font-weight: 600; }
.v42 .chart .line { fill: none; stroke: var(--ac-1); stroke-width: 2; stroke-linejoin: round; }
.v42 .chart .line.alt { stroke: var(--text-3); stroke-width: 1.4; stroke-dasharray: 4 4; }
.v42 .chart .dd { fill: var(--neg); opacity: .12; }
.v42 .chart .cursor { stroke: var(--text); stroke-opacity: .35; stroke-dasharray: 2 3; }
.v42 .chart .dotp { fill: var(--tip-bg); stroke: var(--ac-1); stroke-width: 3; filter: drop-shadow(0 0 6px var(--ac-glow)); }
.v42 .chart-tip { position: absolute; pointer-events: none; transform: translate(-50%, calc(-100% - 14px)); padding: 7px 11px; border-radius: 12px; background: var(--tip-bg); color: var(--tip-text); font-size: var(--fs-xs); white-space: nowrap; box-shadow: var(--sh-pop); z-index: 3; }
.v42 .chart-tip b { display: block; font-size: var(--fs-sm); }
.v42 .legend { display: flex; gap: 14px; flex-wrap: wrap; font-size: var(--fs-meta); color: var(--text-2); margin-top: 8px; }
.v42 .legend i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; background: var(--ac-1); }
.v42 .legend i.pos { background: var(--pos); } .v42 .legend i.neg { background: var(--neg); opacity: .5; } .v42 .legend i.bar { background: var(--bar-a); } .v42 .legend i.alt { background: var(--text-3); }
.v42 .hbar { display: grid; grid-template-columns: minmax(84px, 150px) 1fr 64px; align-items: center; gap: 10px; height: 28px; font-size: var(--fs-sm); }
.v42 .hbar .lab { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; } .v42 .hbar .lab .muted { font-size: var(--fs-xs); font-weight: 500; }
.v42 .hbar .track { position: relative; height: 10px; }
.v42 .hbar .track::before { content: ""; position: absolute; left: 50%; top: -5px; bottom: -5px; width: 1px; background: var(--line-2); }
.v42 .hbar .fill { position: absolute; top: 0; bottom: 0; border-radius: 4px; background: linear-gradient(90deg, var(--bar-b), var(--bar-a)); }
.v42 .hbar .fill.hi { background: linear-gradient(90deg, var(--ac-2), var(--ac-1)); box-shadow: 0 0 14px -2px var(--ac-glow); }
.v42 .hbar .fill.lo { background: var(--neg-soft); box-shadow: inset 0 0 0 1px var(--neg-soft); }
.v42 .hbar .v { text-align: right; }
.v42 .heat { display: grid; gap: 3px; }
.v42 .heat .c { height: 26px; border-radius: 6px; display: grid; place-items: center; font-size: var(--fs-xs); font-weight: 700; color: var(--text); }
.v42 .heat .h { font-size: var(--fs-xs); color: var(--text-3); display: grid; place-items: center; font-weight: 600; }
.v42 .funnel { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; align-items: end; }
.v42 .funnel .st-f { border-radius: var(--r-md); padding: 12px; background: var(--card); position: relative; min-width: 0; }
.v42 .funnel .st-f .bar-f { height: 6px; border-radius: 3px; margin-top: 10px; background: linear-gradient(90deg, var(--ac-2), var(--ac-1)); }
.v42 .funnel .conv { position: absolute; right: -14px; top: 50%; transform: translateY(-50%); z-index: 2; font-size: var(--fs-xs); font-weight: 800; color: var(--ac-text); background: var(--bg); border-radius: var(--r-pill); padding: 2px 6px; box-shadow: 0 0 0 1px var(--line-2); }

/* ===================================================================== cockpit */
.v42 .opband { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.25fr); gap: 10px; align-items: stretch; }
.v42 .ctl-card { border-radius: var(--r-lg); padding: 12px 14px; background: var(--card); min-width: 0; display: flex; align-items: center; gap: 12px; }
.v42 .ctl-card .cl { font-size: var(--fs-xs); color: var(--text-3); text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }
.v42 .ctl-card .cv { font-size: 17px; font-weight: 800; letter-spacing: -.01em; white-space: nowrap; }
.v42 .sig { width: 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; flex: none; background: var(--card-2); color: var(--text-3); }
.v42 .sig.armed { color: var(--ac-on); background: linear-gradient(160deg, var(--ac-1), var(--ac-2)); box-shadow: var(--sh-btn); }
.v42 .sig.live { color: var(--text-inv); background: var(--warn); box-shadow: 0 8px 20px -8px var(--warn); }
.v42 .sig.err { color: var(--text-inv); background: var(--neg); }
.v42 .sig svg { width: 18px; height: 18px; stroke-width: 2.2; }
.v42 .hold { position: relative; overflow: hidden; }
.v42 .hold .hf { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: var(--ac-on); opacity: .18; }
.v42 .hold.holding .hf { width: 100%; transition: width 1.1s linear; }
.v42 .cockpit { display: grid; grid-template-columns: minmax(300px, 1.05fr) minmax(0, 1.6fr) minmax(280px, 1fr); gap: var(--gap); align-items: start; }
.v42 .acc { padding: 9px 10px; border-radius: var(--r-md); background: var(--card); cursor: pointer; transition: background var(--t); }
.v42 .acc:hover { background: var(--card-2); } .v42 .acc.is-sel { box-shadow: inset 0 0 0 1px var(--ac); background: var(--card-2); }
.v42 .acc.off { opacity: .55; }
.v42 .acc .l1 { display: flex; align-items: center; gap: 8px; min-width: 0; }
.v42 .acc .nm { font-weight: 700; font-size: var(--fs-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v42 .acc .l2 { display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-top: 6px; font-size: var(--fs-meta); }
.v42 .acc .l3 { display: flex; align-items: center; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.v42 .flow-wrap { position: relative; border-radius: var(--r-lg); background: radial-gradient(60% 60% at 50% 50%, var(--card-2), transparent 70%); }
.v42 .flow-svg { display: block; width: 100%; height: auto; }
.v42 .flow-svg .lnk { fill: none; stroke: var(--line-2); stroke-width: 1.4; }
.v42 .flow-svg .lnk.long { stroke: var(--pos); stroke-width: 2; filter: drop-shadow(0 0 4px var(--pos-glow)); }
.v42 .flow-svg .lnk.short { stroke: var(--neg); stroke-width: 2; }
.v42 .flow-svg .lnk.inv { stroke-dasharray: 5 5; }
.v42 .flow-svg .lnk.cross { stroke: var(--warn); }
.v42 .flow-svg .lnk.paused { stroke-opacity: .35; }
.v42 .flow-svg .pulse { fill: none; stroke: var(--ac-1); stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 2 60; animation: flowpulse 2.4s linear infinite; filter: drop-shadow(0 0 5px var(--ac-glow)); }
@keyframes flowpulse { from { stroke-dashoffset: 62; } to { stroke-dashoffset: 0; } }
.v42 .flow-svg .node { fill: var(--pnl-top); stroke: var(--line-2); stroke-width: 1.2; }
.v42 .flow-svg .node.sel { stroke: var(--ac); stroke-width: 2; }
.v42 .flow-svg .gnode { fill: var(--card-2); stroke: var(--line-2); }
.v42 .flow-svg .leader { fill: url(#ldr); filter: drop-shadow(0 0 18px var(--ac-glow)); }
.v42 .flow-svg text { font-family: var(--font); fill: var(--text-2); font-size: 11px; font-weight: 600; }
.v42 .flow-svg text.v { font-size: 10.5px; font-weight: 700; } .v42 .flow-svg text.pos { fill: var(--pos); } .v42 .flow-svg text.neg { fill: var(--neg); }
.v42 .flow-svg text.lt { fill: var(--ac-on); font-weight: 800; font-size: 12px; } .v42 .flow-svg text.gt { fill: var(--text); font-weight: 800; font-size: 11px; }
.v42 .flow-svg .halo { fill: var(--pos); opacity: .14; } .v42 .flow-svg .halo.neg { fill: var(--neg); }
.v42 .flow-card { position: absolute; right: 12px; top: 12px; width: 250px; z-index: 4; border-radius: var(--r-lg); padding: 14px; background: linear-gradient(180deg, var(--pnl-top), var(--pnl-bot)); box-shadow: var(--sh-pop); -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur); }
.v42 .evt { display: grid; grid-template-columns: 62px 10px 1fr; gap: 8px; align-items: center; padding: 6px 4px; font-size: var(--fs-meta); }
.v42 .evt .tm { color: var(--text-3); font-family: var(--mono); font-size: var(--fs-xs); }
.v42 .evt .k { width: 7px; height: 7px; border-radius: 50%; background: var(--text-3); } .v42 .evt .k.ok { background: var(--pos); } .v42 .evt .k.warn { background: var(--warn); } .v42 .evt .k.err { background: var(--neg); } .v42 .evt .k.info { background: var(--info); }
.v42 .evt + .evt { box-shadow: inset 0 1px 0 var(--line); }

/* fiche Trade */
.v42 .shot { display: block; width: 100%; border: 0; padding: 0; border-radius: var(--r-lg); overflow: hidden; cursor: zoom-in; background: var(--shot-bg); }
.v42 .thumbs { display: flex; gap: 8px; margin-top: 8px; }
.v42 .thumbs button { width: 80px; height: 50px; padding: 0; border: 0; border-radius: var(--r-sm); overflow: hidden; cursor: pointer; background: var(--shot-bg); opacity: .55; }
.v42 .thumbs button.on { opacity: 1; box-shadow: 0 0 0 2px var(--ac); } .v42 .thumbs .add { display: grid; place-items: center; color: var(--text-3); background: var(--card); opacity: 1; }
.v42 dl.dl { display: grid; grid-template-columns: repeat(var(--n, 3), minmax(0, 1fr)); gap: 8px; margin: 0; }
.v42 dl.dl > div { padding: 10px 12px; border-radius: var(--r-sm); background: var(--card); min-width: 0; }
.v42 dl.dl dt { font-size: var(--fs-xs); color: var(--text-3); font-weight: 600; } .v42 dl.dl dd { margin: 3px 0 0; font-size: var(--fs-sm); font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v42 .prose { font-size: var(--fs-body); line-height: 1.6; color: var(--text-2); margin: 0; }
.v42 details.more > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-sm); color: var(--text-2); font-weight: 700; }
.v42 details.more > summary::-webkit-details-marker { display: none; }
.v42 details.more > summary .chev { transition: transform var(--t); } .v42 details.more[open] > summary .chev { transform: rotate(90deg); }
.v42 details.more > .inner { padding-top: 10px; }
.v42 .cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.v42 .cal .dh { font-size: var(--fs-xs); color: var(--text-3); font-weight: 700; padding: 0 4px; }
.v42 .cal .d { min-height: 64px; padding: 7px; border-radius: var(--r-sm); background: var(--card); font-size: var(--fs-xs); color: var(--text-3); display: flex; flex-direction: column; justify-content: space-between; }
.v42 .cal .d.has { cursor: pointer; color: var(--text-2); } .v42 .cal .d.has.p { background: var(--pos-soft); } .v42 .cal .d.has.n { background: var(--neg-soft); }
.v42 .cal .d .rv { font-size: var(--fs-sm); font-weight: 800; }
.v42 .cal .blank { background: transparent; }

/* superpositions */
.v42 .scrim { position: fixed; inset: 0; z-index: 80; background: var(--scrim); animation: fadein var(--t); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.v42 .pop-anchor { position: relative; }
.v42 .popover { position: absolute; top: calc(100% + 8px); right: 0; z-index: 60; min-width: 260px; padding: 6px; border-radius: var(--r-lg); background: linear-gradient(180deg, var(--pnl-top), var(--pnl-bot)); box-shadow: var(--sh-pop); -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur); }
.v42 .pi { display: flex; width: 100%; align-items: center; gap: 8px; min-height: 34px; padding: 4px 10px; border: 0; border-radius: var(--r-sm); background: none; color: var(--text); font-size: var(--fs-sm); cursor: pointer; text-align: left; }
.v42 .pi:hover, .v42 .pi.on { background: var(--card-2); } .v42 .pi svg.i { color: var(--text-3); } .v42 .pi .k { margin-left: auto; font-size: var(--fs-xs); color: var(--text-3); }
.v42 .pl { padding: 8px 10px 4px; font-size: var(--fs-xs); color: var(--text-3); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.v42 .drawer { position: fixed; top: 10px; right: 10px; bottom: 10px; z-index: 81; width: min(380px, calc(100vw - 20px)); display: flex; flex-direction: column; border-radius: var(--r-xl); background: linear-gradient(180deg, var(--pnl-top), var(--pnl-bot)); box-shadow: var(--sh-pop); -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur); animation: fadein var(--t); }
.v42 .drawer-head { display: flex; align-items: center; gap: 8px; padding: 18px 18px 8px; } .v42 .drawer-head h2 { margin: 0; font-size: var(--fs-h2); }
.v42 .drawer-body { flex: 1; overflow: auto; padding: 8px 18px 18px; display: flex; flex-direction: column; gap: 18px; }
.v42 .drawer-body h3 { margin: 0 0 8px; font-size: var(--fs-meta); color: var(--text-3); text-transform: uppercase; letter-spacing: .06em; }
.v42 .drawer-foot { display: flex; gap: 8px; padding: 14px 18px; }
.v42 .modal { position: fixed; z-index: 81; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(460px, calc(100vw - 24px)); max-height: calc(100vh - 24px); overflow: auto; border-radius: var(--r-xl); padding: 22px; background: linear-gradient(180deg, var(--pnl-top), var(--pnl-bot)); box-shadow: var(--sh-pop); -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur); animation: fadein var(--t); }
.v42 .modal h2 { margin: 0 0 6px; font-size: 17px; font-weight: 800; } .v42 .modal .m-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 20px; }
.v42 .cmdk { position: fixed; z-index: 81; left: 50%; top: 12vh; transform: translateX(-50%); width: min(580px, calc(100vw - 24px)); border-radius: var(--r-xl); overflow: hidden; background: linear-gradient(180deg, var(--pnl-top), var(--pnl-bot)); box-shadow: var(--sh-pop); -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur); }
.v42 .cmdk .input { height: 52px; border-radius: 0; background: transparent; box-shadow: inset 0 -1px 0 var(--line); padding: 0 18px; }
.v42 .cmdk .res { padding: 6px; max-height: 360px; overflow: auto; }
.v42 .lightbox { position: fixed; inset: 0; z-index: 90; background: var(--scrim); display: grid; place-items: center; padding: 30px; }
.v42 .lightbox .frame-img { width: min(1100px, 100%); border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--sh-pop); }
.v42 .lightbox .close { position: absolute; top: 16px; right: 16px; }

.v42 .alert { display: flex; align-items: flex-start; gap: 10px; padding: 11px 14px; border-radius: var(--r-md); background: var(--card); font-size: var(--fs-sm); color: var(--text-2); }
.v42 .alert b { color: var(--text); } .v42 .alert.warn { background: var(--warn-soft); } .v42 .alert.warn svg.i { color: var(--warn); } .v42 .alert.neg { background: var(--neg-soft); } .v42 .alert.neg svg.i { color: var(--neg); }
.v42 .alert .act { margin-left: auto; flex: none; }
.v42 .empty { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 64px 20px; }
.v42 .empty .e-ic { width: 48px; height: 48px; border-radius: 15px; display: grid; place-items: center; background: var(--card-2); color: var(--text-2); }
.v42 .empty h3 { margin: 0; font-size: var(--fs-h2); } .v42 .empty p { margin: 0 0 8px; max-width: 380px; color: var(--text-3); font-size: var(--fs-sm); }
.v42 .skel { border-radius: var(--r-sm); background: linear-gradient(90deg, var(--card), var(--card-2), var(--card)); background-size: 200% 100%; animation: shimmer 1.2s linear infinite; }
@keyframes shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }

/* réglages / apparence */
.v42 .settings { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: var(--gap); align-items: start; }
.v42 .snav { display: flex; flex-direction: column; gap: 2px; }
.v42 .snav button { display: flex; align-items: center; gap: 10px; height: 36px; padding: 0 8px; border: 0; border-radius: 12px; background: none; color: var(--text-2); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; text-align: left; white-space: nowrap; flex: none; }
.v42 .snav button:hover { background: var(--card); color: var(--text); } .v42 .snav button.on { background: var(--card-2); color: var(--text); } .v42 .snav button.on svg.i { color: var(--ac-text); }
.v42 .srow { display: flex; align-items: center; gap: 14px; padding: 12px 14px; border-radius: var(--r-md); background: var(--card); }
.v42 .srow + .srow { margin-top: 6px; } .v42 .srow .body { flex: 1; min-width: 0; } .v42 .srow .title { font-weight: 700; font-size: var(--fs-sm); } .v42 .srow .meta { font-size: var(--fs-meta); color: var(--text-3); margin-top: 2px; }
.v42 .choice { display: grid; grid-template-columns: repeat(3, minmax(0, 150px)); gap: 12px; }
.v42 .choice button { padding: 0; border: 0; background: none; cursor: pointer; text-align: left; color: var(--text-2); font-size: var(--fs-meta); font-weight: 700; }
.v42 .choice .thumb { height: 84px; border-radius: var(--r-md); margin-bottom: 7px; overflow: hidden; display: flex; box-shadow: 0 0 0 1px var(--line-2); }
.v42 .choice .thumb > span { flex: 1; display: flex; gap: 6px; padding: 8px; }
.v42 .choice .thumb b { width: 22%; border-radius: 6px; } .v42 .choice .thumb i { flex: 1; border-radius: 6px; padding: 8px; }
.v42 .choice .thumb i::before { content: ""; display: block; width: 50%; height: 5px; border-radius: 3px; background: linear-gradient(90deg, var(--ac-2), var(--ac-1)); }
.v42 .choice .tl { background: var(--th-l-bg); } .v42 .choice .tl b, .v42 .choice .tl i { background: var(--th-l-pnl); }
.v42 .choice .td { background: var(--th-d-bg); } .v42 .choice .td b, .v42 .choice .td i { background: var(--th-d-pnl); }
.v42 .choice button.on { color: var(--text); } .v42 .choice button.on .thumb { box-shadow: 0 0 0 2px var(--ac); }
.v42 .swatches { display: flex; gap: 10px; flex-wrap: wrap; }
.v42 .swb { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; width: 74px; padding: 0; border: 0; background: none; cursor: pointer; font-size: var(--fs-xs); font-weight: 600; color: var(--text-3); text-align: center; }
.v42 .swb .c { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; box-shadow: inset 0 1px 0 var(--pnl-edge); }
.v42 .swb.on { color: var(--text); } .v42 .swb.on .c { box-shadow: 0 0 0 2px var(--bg), 0 0 0 4px var(--text); }

/* panneau Preview (outil de revue) */

 
 
  

/* ===================================================================== responsive */
.mnav, .msheet, .mtitle { display: none; }
@media (max-width: 1380px) { .v42 .cockpit { grid-template-columns: minmax(280px, 1fr) minmax(0, 1.5fr); } .v42 .cockpit > .cp-right { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1200px) { .v42 .g6 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .v42 .g5 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .v42 .g4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .v42 .opband { grid-template-columns: 1fr 1fr; } .v42 .opband > :last-child { grid-column: 1 / -1; } }
@media (max-width: 1024px) {
  .shell { --sbw: 68px; } .shell.force-open { --sbw: 228px; }
  .shell:not(.force-open) .lbl, .shell:not(.force-open) .sb-label, .shell:not(.force-open) .chev, .shell:not(.force-open) .cnt, .shell:not(.force-open) .sb-state .st-txt, .shell:not(.force-open) .sb-brand .lbl { display: none; }
  .shell:not(.force-open) .sb-item, .shell:not(.force-open) .sb-state, .shell:not(.force-open) .sb-brand { justify-content: center; padding: 0; }
  .shell:not(.force-open) .sb-state { height: 36px; } .shell:not(.force-open) .sb-label { height: 10px; padding: 0; }
  .v42 .cockpit { grid-template-columns: minmax(0, 1fr); } .v42 .cockpit > .cp-right { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v42 .g3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .v42 .g2.stack-md { grid-template-columns: minmax(0, 1fr); }
  .v42 .settings { grid-template-columns: minmax(0, 1fr); } .v42 .snav { flex-direction: row; overflow-x: auto; scrollbar-width: none; }
  .search { max-width: none; } .profile .p-txt { display: none; }
  .v42 .funnel { grid-template-columns: repeat(3, minmax(0, 1fr)); } .v42 .funnel .conv { display: none; }
}
@media (max-width: 720px) {
  :root { --gap: 10px; --pp: 14px; --fs-h1: 19px; --fs-kpi: 22px; --fs-kpi-lg: 28px; }
  .shell { display: block; padding: 0 10px 92px; } .sidebar { display: none; }
  .topbar { position: sticky; top: 0; z-index: 30; height: 58px; margin: 0 -10px; padding: 0 10px 0 16px; background: linear-gradient(180deg, var(--bg) 60%, transparent); }
  .mtitle { display: block; font-weight: 800; font-size: 16px; } .search, .tb-hide-m, .profile { display: none !important; }
  .rbtn { width: 36px; height: 36px; }
  .v42 .ph .actions { margin-left: 0; width: 100%; } .v42 .ph .actions .btn.primary { flex: 1; }
  .v42 .grid:not(.keep2), .v42 .g2, .v42 .g3, .v42 .g4, .v42 .g5, .v42 .g6, .v42 .cockpit > .cp-right { grid-template-columns: minmax(0, 1fr) !important; } .v42 .g4.keep2, .v42 .g6.keep2, .v42 .g5.keep2, .v42 .g3.keep2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .v42 .span2, .v42 .span3 { grid-column: auto; }
  .v42 .opband { grid-template-columns: minmax(0, 1fr); }
  .v42 .tbl-wrap.mcard { display: none; } .v42 .mrows { display: flex; flex-direction: column; gap: 6px; }
  .v42 .mrow { display: grid; grid-template-columns: 1fr auto; gap: 2px 10px; padding: 10px 12px; border-radius: var(--r-md); background: var(--card); cursor: pointer; }
  .v42 .mrow .a { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: var(--fs-sm); min-width: 0; } .v42 .mrow .b { font-size: var(--fs-xs); color: var(--text-3); }
  .v42 .mrow .rv { grid-row: span 2; align-self: center; font-size: 15px; font-weight: 800; }
  .v42 dl.dl { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .v42 .hbar { grid-template-columns: 86px 1fr 54px; }
  .v42 .funnel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v42 .flow-card { position: static; width: auto; margin-top: 10px; }
  .v42 .chiprow { flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; }
  .v42 .choice { grid-template-columns: repeat(3, minmax(0, 1fr)); }
   
  .mnav { display: flex; position: fixed; left: 10px; right: 10px; bottom: 10px; z-index: 60; height: 64px; padding: 6px; gap: 4px; border-radius: 24px;
    background: linear-gradient(180deg, var(--pnl-top), var(--pnl-bot)); box-shadow: var(--sh-pop); -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur); }
  .mnav button { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; border: 0; border-radius: 18px; background: none; color: var(--text-3); font-size: 10px; font-weight: 700; cursor: pointer; }
  .mnav button svg.i { width: 19px; height: 19px; }
  .mnav button.on { color: var(--ac-on); background: linear-gradient(180deg, var(--ac-1), var(--ac-2)); box-shadow: var(--sh-btn); }
  .msheet { display: block; position: fixed; left: 8px; right: 8px; bottom: 8px; z-index: 81; max-height: 80vh; overflow: auto; padding: 10px 12px 18px; border-radius: var(--r-xl); background: linear-gradient(180deg, var(--pnl-top), var(--pnl-bot)); box-shadow: var(--sh-pop); -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur); }
  .msheet .grab { width: 38px; height: 4px; border-radius: 2px; background: var(--card-hi); margin: 2px auto 8px; }
  .v42 .drawer { left: 8px; right: 8px; width: auto; }
}

/* ============================================================================================ V4.1 */
/* ---- coque fixe (desktop / tablette) : seule la zone de travail défile ---- */
@media (min-width: 721px) {
  
  .shell { height: 100dvh; min-height: 0; padding: 12px 12px 12px 8px; gap: 8px; }
  .sidebar { position: relative; top: 0; height: 100%; }
  .frame { height: 100%; min-height: 0; gap: 10px; }
  .topbar { flex: none; height: 46px; padding: 0 4px; }
  .ws { flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; scrollbar-gutter: stable;
    border-radius: var(--r-ws); padding: 20px 18px 28px 22px; background: linear-gradient(180deg, var(--ws-1) 0%, var(--ws-2) 42%, var(--ws-3) 100%); box-shadow: var(--sh-shell);
    scrollbar-width: thin; scrollbar-color: var(--scroll-thumb) transparent; }
  .ws::-webkit-scrollbar { width: 12px; }
  .ws::-webkit-scrollbar-track { background: transparent; margin: 18px 0; }
  .ws::-webkit-scrollbar-thumb { background: var(--scroll-thumb); border-radius: 8px; border: 3px solid transparent; background-clip: padding-box; }
  .ws::-webkit-scrollbar-thumb:hover { background: var(--scroll-thumb-hover); border: 3px solid transparent; background-clip: padding-box; }
  /* bandeau opérationnel du Cockpit : reste visible pendant le défilement de l'espace de travail */
  .v42 .sticky-strip { position: sticky; top: -20px; z-index: 20; box-shadow: var(--sh-elev); }
}
.ws { min-width: 0; }

/* ---- regroupement : une seule surface pour une rangée d'indicateurs (moins de « card soup ») ---- */
.v42 .grid.merged { gap: 6px 22px; padding: var(--pp); border-radius: var(--r-xl); background: linear-gradient(180deg, var(--pnl-top), var(--pnl-mid) 55%, var(--pnl-bot)); box-shadow: var(--sh-pnl); }
.v42 .grid.merged > .pnl { background: none; box-shadow: none; padding: 4px 0; border-radius: 0; }
.v42 .grid.merged > .pnl.feature { background: var(--ac-soft); color: var(--text); padding: 10px 12px; margin: -6px 0; border-radius: var(--r-md); box-shadow: inset 0 0 0 1px var(--ac-border); }
.v42 .grid.merged.sections { gap: var(--s5) 28px; }
.v42 .grid.merged.sections > .pnl { padding: 0; }
.v42 .tiles.flat .tile { background: none; padding: 4px 0; border-radius: 0; }
.v42 .tiles.flat .tile.hi { background: none; }
.v42 .tiles.flat .tile.hi-ac { background: var(--ac-soft); padding: 8px 10px; border-radius: var(--r-md); }
.v42 .tiles.surface { padding: 12px var(--pp); border-radius: var(--r-xl); background: linear-gradient(180deg, var(--pnl2-top), var(--pnl2-bot)); box-shadow: 0 0 0 1px var(--pnl-ring); }
.v42 .chart .ax { font-size: 11px; }

/* ---- tiroir de détail de compte : à droite, ne recouvre plus le Flow ---- */
.v42 .acc-drawer { position: fixed; z-index: 75; top: 70px; right: 16px; bottom: 16px; width: 330px; overflow: auto; padding: 16px; border-radius: var(--r-xl);
  background: linear-gradient(180deg, var(--pnl-top), var(--pnl-bot)); box-shadow: var(--sh-pop); animation: slidein 180ms var(--ease); }
@keyframes slidein { from { transform: translateX(14px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes slideup { from { transform: translateY(24px); } to { transform: none; } }

/* ---- Theme Studio ---- */
.v42 .studio-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
.v42 .tok { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: var(--r-md); background: var(--card); min-width: 0; }
.v42 .tok .nm { flex: 1; min-width: 0; font-size: var(--fs-meta); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v42 .tok .hx { font-family: var(--mono); font-size: var(--fs-xs); color: var(--text-3); }
.v42 .cpick { position: relative; width: 30px; height: 30px; border-radius: 9px; flex: none; box-shadow: inset 0 0 0 1px var(--line-2); overflow: hidden; cursor: pointer; }
.v42 .cpick input { position: absolute; inset: -6px; width: calc(100% + 12px); height: calc(100% + 12px); border: 0; padding: 0; opacity: 0; cursor: pointer; }
.v42 .presets { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.v42 .preset { padding: 0; border: 0; background: none; cursor: pointer; text-align: left; color: var(--text-2); font-size: var(--fs-meta); font-weight: 700; }
.v42 .preset .pv { display: flex; height: 64px; border-radius: var(--r-md); overflow: hidden; margin-bottom: 6px; box-shadow: 0 0 0 1px var(--line-2); }
.v42 .preset .pv i { flex: 1; } .v42 .preset .pv i:last-child { flex: .6; }
.v42 .preset.on { color: var(--text); } .v42 .preset.on .pv { box-shadow: 0 0 0 2px var(--focus-ring); }
.v42 .specimen-ws { border-radius: var(--r-lg); padding: 16px; background: linear-gradient(180deg, var(--ws-1), var(--ws-2) 45%, var(--ws-3)); box-shadow: var(--sh-shell); }
.v42 .ta { width: 100%; min-height: 220px; padding: 12px; border: 0; border-radius: var(--r-md); background: var(--inset); color: var(--text); font-family: var(--mono); font-size: var(--fs-xs); resize: vertical; }

@media (max-width: 720px) {
  .ws { background: none; padding: 0; }
  .v42 .acc-drawer { top: auto; left: 8px; right: 8px; bottom: 84px; width: auto; max-height: 70vh; animation-name: slideup; box-shadow: var(--sh-pop), 0 0 0 100vmax var(--scrim); }
  .v42 .acc-drawer .tiles.g2.keep2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }

  .v42 .sticky-strip { position: static; }
}

/* V4.1 — rangée basse du Cockpit : 3 colonnes sur grand écran, ordres pleine largeur + 2 colonnes sur tablette */
.v42 .grid.cp-bottom { grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr) minmax(0, 1fr); }
@media (max-width: 1200px) { .v42 .grid.cp-bottom { grid-template-columns: repeat(2, minmax(0, 1fr)); } .v42 .grid.cp-bottom > :first-child { grid-column: 1 / -1; } }

/* V4.1 — tiroir de compte ouvert (grand écran) : il POUSSE l'espace de travail au lieu de recouvrir Groupes / bandeau */
@media (min-width: 1101px) {
  .shell.drawer-open .ws { margin-right: 338px; }
  .shell.drawer-open .cockpit { grid-template-columns: minmax(280px, 1fr) minmax(0, 1.5fr); }
  .shell.drawer-open .cockpit > .cp-right { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .shell.drawer-open .opband { grid-template-columns: 1fr 1fr; } .shell.drawer-open .opband > :last-child { grid-column: 1 / -1; }
  .shell.drawer-open .g6, .shell.drawer-open .g5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .shell.drawer-open .grid.cp-bottom { grid-template-columns: repeat(2, minmax(0, 1fr)); } .shell.drawer-open .grid.cp-bottom > :first-child { grid-column: 1 / -1; }
  .v42 .acc-drawer { top: 70px; bottom: 12px; right: 12px; width: 326px; }
}
@media (min-width: 721px) and (max-width: 1100px) { .v42 .acc-drawer { box-shadow: var(--sh-pop), 0 0 0 100vmax var(--scrim); } }

/* ============================================================================================ V4.2 */
/* ---- portée « coque » : la barre latérale, l'en-tête et la navigation mobile reprennent les jetons --shell-* ----
   (en clair / sombre ils valent ceux de l'espace de travail ; en mixte, sous-thème sombre argenté) */
.sidebar, .topbar, .mnav {
  --text: var(--shell-text); --text-2: var(--shell-text-2); --text-3: var(--shell-text-3);
  --card: var(--shell-card); --card-2: var(--shell-card-2); --card-hi: var(--shell-card-hi); --line: var(--shell-line); --line-2: var(--shell-line-2);
  --inset: var(--shell-inset); --pnl-top: var(--shell-pnl-top); --pnl-mid: var(--shell-pnl-mid); --pnl-bot: var(--shell-pnl-bot); --pnl-ring: var(--shell-pnl-ring);
  --ac-text: var(--shell-ac-text); --ac-soft: var(--shell-ac-soft); --focus-ring: var(--shell-focus-ring); --sh-pop: var(--shell-sh-pop); --scroll-thumb: var(--shell-scroll-thumb);
  color: var(--text);
}
/* mixte : transition coque sombre -> espace de travail clair (rayon + liseré + ombre profonde, voir --sh-shell) */
[data-theme="mixed"] .ws { color-scheme: light; }
[data-theme="mixed"] body::before { opacity: calc(var(--grain) * .6); }

/* ---- Theme Studio V4.2 : cartes de thème complètes (coque · espace de travail · surface · accent) ---- */
.v42 .tgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(176px, 1fr)); gap: 10px; }
.v42 .tcard { position: relative; display: flex; flex-direction: column; gap: 6px; min-width: 0; color: var(--text); font-size: var(--fs-sm); font-weight: 650; }
.v42 .mini { display: grid; grid-template-columns: 26% 1fr; height: 72px; border-radius: var(--r-lg); overflow: hidden; box-shadow: 0 0 0 1px var(--line-2); transition: box-shadow var(--t); }
.v42 .tcard.on .mini { box-shadow: 0 0 0 2px var(--ac-2), 0 0 0 5px var(--ac-soft); }
.v42 .tcard-hit { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: pointer; border-radius: var(--r-lg); }
.v42 .tcard-hit:hover .mini { box-shadow: 0 0 0 1px var(--ac-border); }
.v42 .tcard.on .tcard-hit:hover .mini { box-shadow: 0 0 0 2px var(--ac-2), 0 0 0 5px var(--ac-soft); }
.v42 .mini .m-sh { display: flex; flex-direction: column; gap: 5px; padding: 9px 7px; }
.v42 .mini .m-sh i { display: block; height: 4px; border-radius: 2px; opacity: .85; } .v42 .mini .m-sh i:first-child { width: 70%; height: 6px; opacity: 1; }
.v42 .mini .m-ws { position: relative; margin: 6px 6px 6px 0; border-radius: 9px; padding: 8px; display: flex; flex-direction: column; gap: 6px; }
.v42 .mini .m-pn { flex: 1; border-radius: 6px; display: flex; align-items: flex-end; padding: 5px; }
.v42 .mini .m-ac { width: 42%; height: 7px; border-radius: 4px; }
.v42 .mini .m-tx { width: 60%; height: 4px; border-radius: 2px; opacity: .55; }
.v42 .tcard .nm { display: flex; align-items: center; gap: 6px; min-width: 0; } .v42 .tcard .nm span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v42 .tcard .sub { font-size: var(--fs-xs); font-weight: 500; color: var(--text-3); margin-top: -4px; }
.v42 .badge-def { display: inline-block; white-space: nowrap; font-size: 10.5px; font-weight: 700; padding: 1px 7px; border-radius: var(--r-pill); color: var(--ac-text); background: var(--ac-soft); flex: none; }
.v42 .tcard .acts { display: flex; gap: 4px; flex-wrap: wrap; }
.v42 .tcard .acts .ibtn { width: 26px; height: 26px; }
.v42 .subhead { display: flex; align-items: center; gap: 8px; margin: 14px 0 8px; font-size: var(--fs-xs); font-weight: 700; color: var(--text-3); letter-spacing: .06em; text-transform: uppercase; }
.v42 .subhead::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.v42 .cur-theme { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: var(--fs-sm); }
.v42 .tok-group { margin-bottom: 14px; } .v42 .tok-group:last-of-type { margin-bottom: 0; }
.v42 .field { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.v42 .field input[type="text"] { height: 38px; padding: 0 12px; border: 0; border-radius: var(--r-sm); background: var(--inset); color: var(--text); box-shadow: inset 0 0 0 1px var(--line-2); }
.v42 .field input[type="text"]:focus { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
.v42 .field .hint { font-size: var(--fs-xs); color: var(--text-3); } .v42 .field .hint.warn { color: var(--warn); } .v42 .field .hint.neg { color: var(--neg); }
.v42 .check-row { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-size: var(--fs-sm); cursor: pointer; }

/* ---- correctif 1 : Gestion du risque à 1440 px — 4 colonnes (le type d'action passe sous le nom du compte), bouton toujours visible ---- */
.v42 .grid.cp-risk { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); }
.v42 .risk-t th, .v42 .risk-t td { padding-left: 8px; padding-right: 8px; white-space: nowrap; }
.v42 .risk-t .act-l { display: block; margin-top: 1px; font-size: var(--fs-xs); color: var(--text-3); font-weight: 500; }
.v42 .risk-t .rb { display: inline-block; width: 36px; vertical-align: middle; margin-right: 8px; }
.v42 .risk-t td:last-child, .v42 .risk-t th:last-child { text-align: right; }
@media (max-width: 1200px) { .v42 .grid.cp-risk { grid-template-columns: minmax(0, 1fr); } }
@media (min-width: 1101px) { .shell.drawer-open .grid.cp-risk { grid-template-columns: minmax(0, 1fr); } }

/* ---- mobile : défilement naturel ; en mixte la page prend la couleur de l'espace de travail ---- */
@media (max-width: 720px) {
  
  .topbar { background: var(--m-topbar); }
  [data-theme="mixed"] .topbar { border-radius: 0 0 18px 18px; margin-bottom: 6px; }
  /* correctif 2 : diagnostics de copie en grille compacte 2 colonnes */
  .v42 .tiles.diag { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 12px 14px; }
  /* table du risque : sur mobile, lignes-cartes (même modèle que les ordres récents) — DLL, DPT, type d'action et bouton visibles */
  .v42 .risk-m .mrow { cursor: default; } .v42 .risk-m .rv { font-size: var(--fs-sm); }
}
