/* ============================================================
   CHEST — DA (tokens + utilitaires)
   Référence : CHEST-DA.md. À charger APRÈS tokens.css.
   Les valeurs sont celles de la maquette, à l'identique.
   ============================================================ */

:root{
  /* Fond & surfaces */
  --chest-bg:            #050505;
  --chest-page:          rgba(8,8,10,.72);
  --chest-surface:       rgba(255,255,255,.025);
  --chest-surface-2:     rgba(255,255,255,.055);
  --chest-border:        rgba(255,255,255,.12);
  --chest-rule:          rgba(255,255,255,.08);
  --chest-rule-v:        rgba(255,255,255,.09);
  --chest-rule-row:      rgba(255,255,255,.055);

  /* Encres */
  --chest-ink:           #f6f6f7;
  --chest-ink-2:         #9b9ba1;
  --chest-ink-3:         #5c5c63;

  /* Accent de marque */
  --chest-acc:           #fc1283;
  --chest-acc-2:         #f9a45e;
  --chest-grad:          linear-gradient(135deg,#fc1283,#f9a45e);

  /* Signaux */
  --chest-green:         #33e6a6;  --chest-green-lite: #7ff3ca;
  --chest-red:           #ff4d5e;  --chest-red-lite:   #ff94a0;
  --chest-blue:          #4d8dff;  --chest-blue-lite:  #9dbcff;
  --chest-amber:         #e8b339;  --chest-amber-lite: #f4d07a;

  /* Lueurs contextuelles */
  --chest-glow-brand:    rgba(252,18,131,.34);
  --chest-glow-swyper:   rgba(227,87,40,.42);
  --chest-glow-berich:   rgba(8,153,129,.5);
  --chest-glow-pos:      rgba(51,230,166,.4);
  --chest-glow-neg:      rgba(255,77,94,.4);

  /* Rayons */
  --chest-r-sm: 12px;
  --chest-r:    16px;
  --chest-r-lg: 18px;
  --chest-r-xl: 20px;
  --chest-r-pill: 999px;

  --chest-ease: cubic-bezier(.16,1,.3,1);
}

/* ---------- Page ---------- */
/* Empeche toute page de se deplacer horizontalement (retour utilisateur repete
   sur mobile : "je veux juste pouvoir descendre") - un element ponctuellement
   trop large ne doit jamais faire glisser tout l'ecran sur le cote, au pire il
   est simplement rogne. S'applique a TOUTES les pages (chaque page de contenu
   a son propre html/body, chargee dans l'iframe du shell - voir app.html). */
html, body{ overflow-x:hidden; max-width:100%; }

.chest-root{
  background: var(--chest-bg);
  color: var(--chest-ink);
  font-family: 'Instrument Sans', system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
}
/* Reglage "Taille de l'affichage" (compte.html) - --chest-ui-scale est pose
   tres tot par un petit script inline en tete de chaque page (avant le premier
   rendu, aucun flash) a partir de localStorage("chest_ui_scale"). `zoom` (pas
   `transform:scale`) car il redimensionne aussi la mise en page elle-meme (les
   tailles ici sont presque toutes en px, pas en rem) sans decaler le point
   d'ancrage ni casser position:fixed - supporte par tous les moteurs cibles
   (Safari/Chrome mobile, Firefox recent). */
html{ --chest-ui-scale: 1; }
body.chest-root{ zoom: var(--chest-ui-scale); }
/* Pas de regle globale ".chest-root a{color:...}" : elle battait par
   specificite les couleurs des composants (nav, boutons-liens...) qui
   n'ont qu'une seule classe - constate en direct, le texte du menu
   ressortait rose partout au lieu du gris attendu. Chaque lien doit fixer
   sa propre couleur (voir .chest-nav__item, .chest-topbar__btn, etc.);
   .chest-link est l'exception explicite pour un lien "en dur" dans du texte. */
.chest-link{ color: var(--chest-acc); text-decoration: none; }
.chest-link:hover{ color: var(--chest-acc-2); }

/* Surface pleine page (contient nav + sections) */
.chest-page{
  border: 1px solid var(--chest-border);
  border-radius: var(--chest-r-xl);
  overflow: hidden;
  background: var(--chest-page);
  backdrop-filter: blur(30px) saturate(1.2);
  -webkit-backdrop-filter: blur(30px) saturate(1.2);
}

/* Séparation entre deux sujets d'une même page */
.chest-section + .chest-section{ border-top: 1px solid var(--chest-rule); }
.chest-section{ padding: 30px 34px 34px; }

/* Grain — sur un calque plein écran, sous le contenu */
.chest-grain{
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  mix-blend-mode: overlay; opacity: .055;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 180px 180px;
}

/* ---------- Typographie ---------- */
.chest-hero-num{ font-size:78px; font-weight:700; letter-spacing:-.05em; line-height:.9; font-variant-numeric:tabular-nums; }
.chest-h1{ font-size:56px; font-weight:700; letter-spacing:-.045em; line-height:1.04; margin:0; }
.chest-h2{ font-size:19px; font-weight:700; letter-spacing:-.025em; }
.chest-body{ font-size:13.5px; line-height:1.6; color:var(--chest-ink-2); text-wrap:pretty; }
.chest-label{ font-size:10px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:var(--chest-ink-3); }
.chest-step{ font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:var(--chest-ink-3); }
.chest-num{ font-variant-numeric: tabular-nums; }

/* Titre en dégradé — le padding évite le rognage des jambages et du % */
.chest-grad-text{
  background: linear-gradient(120deg,#fff 20%,var(--chest-acc-2) 95%);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
  line-height:1.08; padding-bottom:.08em; display:inline-block;
}
.chest-grad-text--white{ background: linear-gradient(180deg,#fff,rgba(255,255,255,.55)); }

/* ---------- Bandeau de KPI (remplace les cartes de stats) ---------- */
.chest-kpis{ display:grid; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); }
.chest-kpis > *{ padding:2px 22px; border-left:1px solid var(--chest-rule-v); }
.chest-kpis > *:first-child{ padding-left:0; border-left:none; }
.chest-kpis > *:last-child{ padding-right:0; }
.chest-kpi__val{ font-size:25px; font-weight:700; letter-spacing:-.03em; font-variant-numeric:tabular-nums; }
.chest-kpi__val.is-pos{ color:var(--chest-green); text-shadow:0 0 18px rgba(51,230,166,.35); }
.chest-kpi__val.is-neg{ color:var(--chest-red);   text-shadow:0 0 18px rgba(255,77,94,.3); }
.chest-kpi__note{ font-size:11px; color:var(--chest-ink-3); margin-top:3px; }
/* Sous 640px, 4-5 colonnes cote a cote debordent (texte qui retombe sur 2
   lignes, chevauche les boutons fixes comme le calculateur de lot) - on
   repasse en grille 2 colonnes, sans filet vertical (l'espacement suffit). */
@media (max-width:640px){
  .chest-kpis{ grid-auto-flow:row; grid-template-columns:repeat(2,minmax(0,1fr)); row-gap:22px; }
  .chest-kpis > *{ border-left:none !important; padding-left:0 !important; }
}

/* ---------- Fenêtre liquid glass ---------- */
.chest-glass{
  position: relative; overflow: hidden;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: var(--chest-r-lg);
  background: linear-gradient(160deg, rgba(9,9,11,.62), rgba(9,9,11,.74));
  backdrop-filter: blur(34px) brightness(.34) saturate(1.05);
  -webkit-backdrop-filter: blur(34px) brightness(.34) saturate(1.05);
  box-shadow:
    0 18px 44px rgba(0,0,0,.45),
    inset 1.5px 1.5px 0 rgba(255,255,255,.2),
    inset -1.5px -1.5px 0 rgba(255,255,255,.06),
    inset 0 0 40px rgba(255,255,255,.035);
}
.chest-glass::before{
  content:''; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background: linear-gradient(135deg, rgba(255,255,255,.14) 0%, rgba(255,255,255,.02) 26%,
              transparent 48%, rgba(255,255,255,.035) 74%, rgba(255,255,255,.1) 100%);
}
.chest-glass::after{
  content:''; position:absolute; top:0; left:8%; right:8%; height:1px; pointer-events:none;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent);
}
/* Variante pour une carte (backtest, annonce) */
.chest-glass--mini{
  border-radius: var(--chest-r);
  background: linear-gradient(160deg, rgba(9,9,11,.5), rgba(9,9,11,.66));
  backdrop-filter: blur(22px) brightness(.62) saturate(1.05);
  -webkit-backdrop-filter: blur(22px) brightness(.62) saturate(1.05);
  box-shadow:
    0 14px 34px rgba(0,0,0,.4),
    inset 1.5px 1.5px 0 rgba(255,255,255,.16),
    inset -1.5px -1.5px 0 rgba(255,255,255,.05);
}
.chest-glass--mini::before{ display:none; }

/* ---------- Lueur qui suit le curseur (haut du Dashboard seulement) ---------- */
.chest-spot{ position:relative; }
.chest-spot__layer{
  position:absolute; inset:0; z-index:0; pointer-events:none;
  background: radial-gradient(620px circle at var(--mx,72%) var(--my,3%), rgba(252,18,131,.17), transparent 70%);
  mask-image: linear-gradient(180deg,#000 0%,#000 40%,transparent 57%);
  -webkit-mask-image: linear-gradient(180deg,#000 0%,#000 40%,transparent 57%);
}
.chest-spot > :not(.chest-spot__layer){ position:relative; }

/* ---------- Lumière derrière un bloc de titre (jamais sur les lettres) ---------- */
.chest-titleglow{ position:relative; }
.chest-titleglow::before{
  content:''; position:absolute; left:-80px; top:-90px; width:620px; height:400px;
  pointer-events:none; filter: blur(90px);
  background: radial-gradient(45% 50% at 30% 50%, rgba(252,18,131,.4), transparent 72%),
              radial-gradient(40% 44% at 62% 40%, rgba(249,164,94,.26), transparent 74%);
}
.chest-titleglow > *{ position:relative; }

/* ---------- Héros centré ---------- */
.chest-hero{ position:relative; text-align:center; padding:56px 24px 30px; overflow:hidden; }
.chest-hero::before{
  content:''; position:absolute; inset:0; pointer-events:none;
  background: radial-gradient(ellipse 55% 64% at 50% 20%, var(--chest-hero-glow, var(--chest-glow-brand)), transparent 72%);
  transition: background .5s ease;
}
.chest-hero::after{
  content:''; position:absolute; left:0; right:0; bottom:0; height:120px; pointer-events:none;
  background: linear-gradient(180deg, transparent, rgba(8,8,10,.95));
}
.chest-hero > *{ position:relative; }
.chest-hero[data-glow="swyper"]{ --chest-hero-glow: var(--chest-glow-swyper); }
.chest-hero[data-glow="berich"]{ --chest-hero-glow: var(--chest-glow-berich); }
.chest-hero[data-glow="pos"]   { --chest-hero-glow: var(--chest-glow-pos); }
.chest-hero[data-glow="neg"]   { --chest-hero-glow: var(--chest-glow-neg); }

/* ---------- Boutons ---------- */
.chest-btn{
  font: inherit; font-size:13px; font-weight:600; cursor:pointer;
  padding:11px 22px; border-radius:var(--chest-r-pill); border:none; color:#fff;
  background: var(--chest-grad);
  box-shadow: 0 10px 30px rgba(252,18,131,.3);
  transition: transform .18s var(--chest-ease), box-shadow .18s;
}
.chest-btn:hover{ transform: translateY(-1px); box-shadow: 0 16px 44px rgba(252,18,131,.45); }

/* Secondaire : transparent, contour dégradé AU SURVOL */
.chest-btn-2{
  font: inherit; font-size:13px; font-weight:600; cursor:pointer; color:var(--chest-ink);
  padding:11px 22px; border-radius:var(--chest-r-pill); border:1px solid transparent;
  background: linear-gradient(rgba(255,255,255,.04),rgba(255,255,255,.04)) padding-box,
              linear-gradient(135deg,rgba(255,255,255,.16),rgba(255,255,255,.16)) border-box;
  transition: background .2s, color .2s, box-shadow .2s;
}
.chest-btn-2:hover{
  color:#fff;
  background: linear-gradient(rgba(255,255,255,.04),rgba(255,255,255,.04)) padding-box,
              var(--chest-grad) border-box;
  box-shadow: 0 8px 26px rgba(252,18,131,.2);
}

/* ---------- Segmenté & onglets ---------- */
.chest-seg{
  display:inline-flex; gap:2px; padding:3px;
  border:1px solid var(--chest-border); border-radius:var(--chest-r-pill);
  background: rgba(255,255,255,.03);
}
.chest-seg > *{
  font-size:11.5px; font-weight:600; padding:6px 12px; border-radius:var(--chest-r-pill);
  border:none; background:transparent; color:var(--chest-ink-2); cursor:pointer;
  font-family:inherit; transition: color .18s, background .18s;
}
.chest-seg > *:hover{ color:var(--chest-ink); }
.chest-seg > .is-active{ background:var(--chest-ink); color:var(--chest-bg); font-weight:700; }

.chest-tabs{ display:flex; align-items:center; gap:2px; padding:3px;
  border:1px solid rgba(255,255,255,.1); border-radius:var(--chest-r-pill); background:rgba(255,255,255,.03); }
.chest-tabs > *{
  font-size:12.5px; font-weight:600; padding:7px 15px; border-radius:var(--chest-r-pill);
  color:var(--chest-ink-2); cursor:pointer; border:none; background:transparent; font-family:inherit;
  transition: color .18s, background .18s;
}
.chest-tabs > *:hover{ color:var(--chest-ink); background:rgba(255,255,255,.05); }
.chest-tabs > .is-active{
  font-weight:700; color:var(--chest-ink);
  background: rgba(255,255,255,.08);
  box-shadow: inset 0 0 0 1px rgba(252,18,131,.45);
}

/* ---------- Tuile & survol ---------- */
.chest-tile{
  border:1px solid var(--chest-border); border-radius:var(--chest-r); background:var(--chest-surface);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
  transition: transform .22s var(--chest-ease), border-color .22s, background .22s, box-shadow .22s;
}
.chest-tile--hoverable:hover{
  transform: translateY(-3px);
  border-color: rgba(249,164,94,.45);
  background: linear-gradient(135deg, rgba(252,18,131,.13), rgba(249,164,94,.1));
  box-shadow: 0 10px 30px rgba(252,18,131,.18);
}
.chest-empty{
  border:1px dashed rgba(255,255,255,.18); border-radius:var(--chest-r);
  color:var(--chest-ink-3); font-size:11.5px; line-height:1.5; padding:16px;
}

/* ---------- Pastilles ---------- */
.chest-pill{
  font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  padding:3px 9px; border-radius:var(--chest-r-pill); white-space:nowrap;
}
.chest-pill.is-pos{ color:var(--chest-green); background:rgba(51,230,166,.14); }
.chest-pill.is-neg{ color:var(--chest-red);   background:rgba(255,77,94,.14); }
.chest-pill.is-wait{ color:var(--chest-amber); background:rgba(232,179,57,.14); }
.chest-pill.is-info{ color:var(--chest-blue);  background:rgba(77,141,255,.14); }
.chest-pill.is-mute{ color:var(--chest-ink-2); background:rgba(255,255,255,.06); }

.chest-check{
  width:22px; height:22px; border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center; font-size:11px;
}
.chest-check.is-ok{ color:var(--chest-green); background:rgba(51,230,166,.16); box-shadow:0 0 12px rgba(51,230,166,.25); }
.chest-check.is-ko{ color:var(--chest-red);   background:rgba(255,77,94,.16);  box-shadow:0 0 12px rgba(255,77,94,.25); }

/* Tuile de signal (palette de DA) */
.chest-signal{
  border-radius:var(--chest-r-sm); padding:13px 14px;
  border:1px solid rgba(var(--chest-signal-rgb),.35);
  background: linear-gradient(160deg, rgba(var(--chest-signal-rgb),.18), rgba(var(--chest-signal-rgb),.03));
  box-shadow: 0 10px 26px rgba(var(--chest-signal-rgb),.16), inset 0 1px 0 rgba(255,255,255,.1);
}
.chest-signal--pos { --chest-signal-rgb: 51,230,166; }
.chest-signal--neg { --chest-signal-rgb: 255,77,94; }
.chest-signal--info{ --chest-signal-rgb: 77,141,255; }
.chest-signal--wait{ --chest-signal-rgb: 232,179,57; }

/* ---------- Avatar ---------- */
.chest-avatar{
  border-radius:12px; display:flex; align-items:center; justify-content:center;
  font-weight:800; color:#fff; background:var(--chest-grad); flex-shrink:0;
}
.chest-avatar--round{ border-radius:var(--chest-r-pill); }

/* ---------- Lignes de liste / tableau ---------- */
.chest-row{
  display:grid; align-items:center; column-gap:14px; padding:14px 22px;
  border-bottom:1px solid var(--chest-rule-row); font-size:12.5px;
  transition: background .18s;
}
.chest-row:hover{ background: rgba(255,255,255,.035); }
.chest-row--head{
  border-bottom:1px solid rgba(255,255,255,.1);
  font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--chest-ink-3);
}
/* Repère "maintenant" */
.chest-row.is-now{
  background: rgba(252,18,131,.07);
  border-top: 2px solid var(--chest-acc);
  box-shadow: inset 0 2px 12px rgba(252,18,131,.25);
}

/* ---------- Duo de blocs cote a cote, separes par un filet vertical
   (objectifs | calendrier, etc.) - empile verticalement sous 760px, le
   filet devenant horizontal entre les deux. ---------- */
.chest-split{ display:grid; grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr); }
@media (max-width:760px){
  .chest-split{ grid-template-columns:minmax(0,1fr); }
  .chest-split > :nth-child(2){ height:1px; width:100%; }
}

/* ---------- Ticker ---------- */
.chest-ticker{ display:flex; align-items:stretch; overflow:hidden; border-bottom:1px solid var(--chest-rule); }
.chest-ticker__viewport{ flex:1; min-width:0; overflow:hidden; display:flex; }
.chest-ticker__track{ display:flex; width:max-content; animation: chest-ticker 42s linear infinite; }
.chest-ticker__item{
  display:flex; align-items:baseline; gap:9px; padding:11px 22px;
  border-right:1px solid rgba(255,255,255,.07); font-size:12.5px; white-space:nowrap;
}
.chest-ticker__meta{
  flex-shrink:0; padding:11px 20px; font-size:11px; color:var(--chest-ink-3);
  white-space:nowrap; border-left:1px solid rgba(255,255,255,.07); background:rgba(8,8,10,.9);
}
@keyframes chest-ticker{ from{ transform:translate3d(0,0,0); } to{ transform:translate3d(-50%,0,0); } }
@media (prefers-reduced-motion: reduce){ .chest-ticker__track{ animation:none; } }

/* ---------- Coque d'application : grille sidebar + contenu, plein-bleed
   (pas de carte flottante — voir CHEST App.dc.html, la vraie maquette
   d'app cliquable, contrairement à CHEST DA.dc.html qui n'était qu'une
   galerie de pages empilées). Le grain reste un calque fixe plein écran. ---------- */
.chest-shell{
  --chest-nav-w: 248px;
  position: relative; display:grid; min-height: 100vh; min-height: 100dvh; background: var(--chest-bg);
  grid-template-columns: var(--chest-nav-w) minmax(0,1fr);
  transition: grid-template-columns .28s var(--chest-ease);
}
.chest-shell.is-collapsed{ --chest-nav-w: 62px; }
.chest-shell::after{
  content:''; position:fixed; inset:0; pointer-events:none; z-index:0;
  mix-blend-mode: overlay; opacity:.055;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 180px 180px;
}
.chest-shell > .chest-main{ position:relative; z-index:1; min-width:0; display:flex; flex-direction:column; }
/* Position fixed en PERMANENCE (pas seulement sous 760px) : sinon cette
   div participe a la grille a 2 colonnes de .chest-shell comme un 3e enfant
   et fait passer .chest-main a la ligne suivante, colonne 1 - constate en
   direct (tout le contenu se retrouvait sous la sidebar, largeur 248px). */
.chest-sidebar-overlay{ position:fixed; inset:0; z-index:75; background:rgba(0,0,0,.5); opacity:0; pointer-events:none; transition:opacity .25s; }
.chest-shell.is-mobile-open .chest-sidebar-overlay{ opacity:1; pointer-events:auto; }

/* ---------- Sidebar rétractable (remplace tiroir/onglets/rail — retour
   direct utilisateur : un volet universel à gauche, permanent, avec un
   onglet à bulle qui replie/déplie). Un seul marquage HTML, identique sur
   chaque page, piloté par nav.js (classe .is-collapsed + localStorage). ---------- */
.chest-sidebar{
  position:sticky; top:0; align-self:start; height:100vh; height:100dvh; z-index:30;
  display:flex; flex-direction:column; overflow:visible;
  background:rgba(8,8,10,.86); backdrop-filter:blur(30px) saturate(1.2); -webkit-backdrop-filter:blur(30px) saturate(1.2);
}
/* Le nav et le pied de sidebar, eux, doivent rogner leur propre contenu au
   repli (labels qui n'ont pas le temps de disparaitre) - mais PAS la
   sidebar elle-meme, sinon l'onglet courbe qui deborde a right:-16px se
   retrouve coupe (constate en direct - le bouton pour plier/deplier
   devenait quasi invisible). */
.chest-nav{ overflow:hidden; }
.chest-sidebar__toggle{
  position:absolute; top:50%; right:-16px; z-index:2; transform:translateY(-50%);
  width:16px; height:96px; padding:0; border:none; background:none; cursor:pointer;
  color:var(--chest-ink-2); display:flex; align-items:center; justify-content:center; transition:color .2s;
}
.chest-sidebar__toggle:hover{ color:var(--chest-ink); }
.chest-sidebar__toggle svg{ width:13px; height:13px; margin-left:-3px; transition:transform .28s var(--chest-ease); }
.chest-shell.is-collapsed .chest-sidebar__toggle svg{ transform:none; }
.chest-shell:not(.is-collapsed) .chest-sidebar__toggle svg{ transform:rotate(180deg); }
.chest-sidebar__toggle-bg{ position:absolute; top:0; left:-2px; width:calc(100% + 2px); height:100%; overflow:visible; }

/* Volet : une bosse du volet lui-même (pas un bouton posé à côté).
   Le bord du volet se soulève autour du chevron : même matière que le volet,
   et le filet de bord contourne la courbe au lieu de passer derrière.
   Le tracé est ouvert (sans Z) : le remplissage se ferme tout seul, mais le
   trait ne dessine que la courbe, jamais la base collée au volet.
   Sélecteurs volontairement plus spécifiques que le patch (qui fixe des
   tailles et des couleurs en !important). */
.chest-shell .chest-sidebar .chest-sidebar__toggle{
  width:22px !important; height:112px !important; right:-22px !important;
  color:var(--chest-ink-2) !important;
}
.chest-shell .chest-sidebar .chest-sidebar__toggle:hover{ color:var(--chest-ink) !important; }
.chest-shell .chest-sidebar .chest-sidebar__toggle svg.chest-sidebar__toggle-bg{
  left:-1px; top:0; width:calc(100% + 1px) !important; height:100% !important; margin:0 !important; transform:none !important;
}
.chest-shell .chest-sidebar .chest-sidebar__toggle-bg path{
  fill:#070709 !important; stroke:rgba(255,255,255,.12) !important; stroke-width:1px !important;
  vector-effect:non-scaling-stroke; transition:stroke .2s;
}
.chest-shell .chest-sidebar .chest-sidebar__toggle:hover .chest-sidebar__toggle-bg path{ stroke:rgba(255,255,255,.28) !important; fill:#070709 !important; }
.chest-shell .chest-sidebar .chest-sidebar__toggle svg:last-child{ width:12px !important; height:12px !important; margin-left:-5px !important; }

.chest-sidebar__label{ padding:20px 14px 10px; font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:var(--chest-ink-3); white-space:nowrap; overflow:hidden; }
.chest-shell.is-collapsed .chest-sidebar__label{ height:22px; padding:0; }
.chest-shell.is-collapsed .chest-sidebar__label span{ display:none; }

.chest-nav{ display:flex; flex-direction:column; gap:3px; padding:0 12px; flex:1; overflow:hidden; }
.chest-shell.is-collapsed .chest-nav{ padding:0 11px; }
.chest-nav__item{
  display:flex; align-items:center; gap:12px; width:100%; font:inherit; font-size:13.5px; font-weight:600;
  padding:11px 14px; border-radius:12px; cursor:pointer; border:none; text-decoration:none;
  color:var(--chest-ink-2); background:transparent; transition:background .18s, color .18s; flex-shrink:0;
}
.chest-shell.is-collapsed .chest-nav__item{ justify-content:center; padding:11px 0; gap:0; }
.chest-nav__item:hover{ background:rgba(255,255,255,.05); color:var(--chest-ink); }
.chest-nav__item.is-active{ font-weight:700; color:var(--chest-ink); background:rgba(255,255,255,.08); box-shadow:inset 0 0 0 1px rgba(252,18,131,.45); }
.chest-nav__ic{ width:18px; height:18px; flex-shrink:0; border-radius:5px; background:rgba(255,255,255,.14); mask-position:center; -webkit-mask-position:center; mask-size:contain; -webkit-mask-size:contain; mask-repeat:no-repeat; -webkit-mask-repeat:no-repeat; }
.chest-nav__item.is-active .chest-nav__ic{ background:var(--chest-grad); }
.chest-nav__item-label{ flex:1; text-align:left; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.chest-shell.is-collapsed .chest-nav__item-label, .chest-shell.is-collapsed .chest-nav__mark{ display:none; }
.chest-nav__mark{ width:5px; height:5px; border-radius:50%; flex-shrink:0; background:transparent; }
.chest-nav__item.is-active .chest-nav__mark{ background:var(--chest-acc); box-shadow:0 0 9px rgba(252,18,131,.85); }

.chest-sidebar__account{ margin-top:auto; padding:16px 18px 20px; border-top:1px solid var(--chest-rule); }
.chest-shell.is-collapsed .chest-sidebar__account{ padding:16px 0 20px; display:flex; flex-direction:column; align-items:center; gap:12px; }
.chest-sidebar__account-label{ font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--chest-ink-3); margin-bottom:9px; white-space:nowrap; }
.chest-shell.is-collapsed .chest-sidebar__account-label, .chest-shell.is-collapsed .chest-sidebar__account-name, .chest-shell.is-collapsed .chest-sidebar__account-meta{ display:none; }
.chest-sidebar__account-row{ display:flex; align-items:center; gap:10px; margin-bottom:14px; min-width:0; }
.chest-shell.is-collapsed .chest-sidebar__account-row{ margin-bottom:0; }
.chest-sidebar__account-avatar{ width:26px; height:26px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:10.5px; font-weight:800; color:#fff; background:var(--chest-grad); flex-shrink:0; }
.chest-shell.is-collapsed .chest-sidebar__account-avatar{ width:30px; height:30px; }
.chest-sidebar__account-name{ display:block; font-size:12.5px; font-weight:700; line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.chest-sidebar__account-meta{ display:block; font-size:10.5px; color:var(--chest-ink-2); }
.chest-sidebar__logout{
  width:100%; font:inherit; font-size:12px; font-weight:600; color:var(--chest-ink-2); padding:9px 14px;
  border-radius:999px; border:1px solid transparent; cursor:pointer;
  background:linear-gradient(rgba(255,255,255,.04),rgba(255,255,255,.04)) padding-box,
             linear-gradient(135deg,rgba(255,255,255,.14),rgba(255,255,255,.14)) border-box;
  transition:color .2s, background .2s, box-shadow .2s;
}
.chest-sidebar__logout:hover{
  color:#fff;
  background:linear-gradient(rgba(255,255,255,.04),rgba(255,255,255,.04)) padding-box, var(--chest-grad) border-box;
  box-shadow:0 8px 26px rgba(252,18,131,.2);
}
.chest-shell.is-collapsed .chest-sidebar__logout{ width:30px; height:30px; padding:0; border-radius:999px; display:flex; align-items:center; justify-content:center; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.14); }
.chest-sidebar__logout svg{ display:none; width:15px; height:15px; }
.chest-shell.is-collapsed .chest-sidebar__logout svg{ display:block; }
.chest-shell.is-collapsed .chest-sidebar__logout-text{ display:none; }

/* ---------- Topbar interne (dans .chest-main, pas dans la sidebar) ---------- */
.chest-topbar{
  position:sticky; top:0; z-index:20; display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:12px 26px; border-bottom:1px solid var(--chest-rule);
  background:rgba(8,8,10,.86); backdrop-filter:blur(30px) saturate(1.2); -webkit-backdrop-filter:blur(30px) saturate(1.2);
}
.chest-topbar .brand{ display:flex; align-items:center; gap:11px; text-decoration:none; color:var(--chest-ink); min-width:0; flex-shrink:0; }
.chest-topbar .brand img{ width:28px; height:28px; filter:drop-shadow(0 0 8px rgba(252,18,131,.55)); }
.chest-topbar .brand span{ font-size:17px; font-weight:700; letter-spacing:-.02em; }
.chest-topbar__actions{ display:flex; align-items:center; gap:8px; flex-shrink:0; }
.chest-topbar__btn{
  width:32px; height:32px; border-radius:999px; cursor:pointer; display:flex; align-items:center; justify-content:center;
  font:inherit; font-size:11.5px; font-weight:800; flex-shrink:0; color:var(--chest-ink-2);
  background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.14); text-decoration:none; transition:box-shadow .18s;
}
.chest-topbar__btn--round{ color:#fff; background:var(--chest-grad); border:none; }
.chest-topbar__btn.is-active{ box-shadow:0 0 0 2px rgba(252,18,131,.55); }
/* Meme piege [hidden] vs display:flex deja documente en CLAUDE.md (.wel-edit__check) : sans cette
   regle, le bouton "Membres (admin)" (data-admin-only hidden) restait visible pour TOUT LE MONDE,
   admin ou pas - specificite egale (une classe = un attribut), [hidden] perdait a chaque fois. */
.chest-topbar__btn[hidden]{ display:none; }

/* Sous 640px (vrai mobile - un panneau/fenetre desktop peut legitimement
   faire ~700-750px de large sans etre un telephone, voir retour direct
   utilisateur : la sidebar passait en tiroir plein ecran a une largeur qui
   restait confortable pour la version repliee 62px) : la sidebar quitte la
   grille, devient un tiroir plein-hauteur qui glisse par-dessus le contenu
   (toujours 248px, jamais l'état "62px replié" qui n'a pas de sens sur
   mobile) - .is-collapsed n'a alors plus d'effet sur elle, seul
   .is-mobile-open pilote sa visibilité. */
@media (max-width:640px){
  .chest-shell{ grid-template-columns:1fr; }
  .chest-sidebar{ position:fixed; left:0; top:0; bottom:0; z-index:80; width:248px; transform:translateX(-100%); transition:transform .28s var(--chest-ease); }
  .chest-shell.is-mobile-open .chest-sidebar{ transform:translateX(0); }
  .chest-sidebar__toggle{ display:none; }
  .chest-topbar__menu{ display:flex !important; }
}
.chest-topbar__menu{ display:none; width:32px; height:32px; border-radius:10px; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.04); color:var(--chest-ink-2); cursor:pointer; align-items:center; justify-content:center; flex-shrink:0; }

/* ---------- Icônes de navigation (masques CSS — même glyphe en gris au
   repos, en dégradé de marque une fois actif via .chest-nav__item.is-active,
   voir règle plus haut). Tracés identiques à CHEST App.dc.html. ---------- */
.chest-ic-dashboard{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='8' height='8' rx='2'/%3E%3Crect x='13' y='3' width='8' height='5' rx='2'/%3E%3Crect x='3' y='13' width='8' height='8' rx='2'/%3E%3Crect x='13' y='10' width='8' height='11' rx='2'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='8' height='8' rx='2'/%3E%3Crect x='13' y='3' width='8' height='5' rx='2'/%3E%3Crect x='3' y='13' width='8' height='8' rx='2'/%3E%3Crect x='13' y='10' width='8' height='11' rx='2'/%3E%3C/svg%3E"); }
.chest-ic-backtesting{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 17l5-5 4 3 6-8'/%3E%3Cpath d='M3 21h18'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 17l5-5 4 3 6-8'/%3E%3Cpath d='M3 21h18'/%3E%3C/svg%3E"); }
.chest-ic-journal{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='16' height='18' rx='2'/%3E%3Cpath d='M8 8h8M8 12h8M8 16h5'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='16' height='18' rx='2'/%3E%3Cpath d='M8 8h8M8 12h8M8 16h5'/%3E%3C/svg%3E"); }
.chest-ic-strategies{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 20V8M9 20V4M15 20v-9M21 20v-6'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 20V8M9 20V4M15 20v-9M21 20v-6'/%3E%3C/svg%3E"); }
.chest-ic-calendar{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E"); }
.chest-ic-berich{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L4 14h6l-1 8 9-12h-6z'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L4 14h6l-1 8 9-12h-6z'/%3E%3C/svg%3E"); }
.chest-ic-school{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 9.5L12 4 2 9.5l10 5.5 10-5.5z'/%3E%3Cpath d='M6 12.2V17c0 1.4 2.7 2.8 6 2.8s6-1.4 6-2.8v-4.8'/%3E%3Cpath d='M22 9.5V15'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 9.5L12 4 2 9.5l10 5.5 10-5.5z'/%3E%3Cpath d='M6 12.2V17c0 1.4 2.7 2.8 6 2.8s6-1.4 6-2.8v-4.8'/%3E%3Cpath d='M22 9.5V15'/%3E%3C/svg%3E"); }
.chest-ic-account{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8.5' r='3.6'/%3E%3Cpath d='M4.8 20c.9-3.4 3.8-5.4 7.2-5.4s6.3 2 7.2 5.4'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8.5' r='3.6'/%3E%3Cpath d='M4.8 20c.9-3.4 3.8-5.4 7.2-5.4s6.3 2 7.2 5.4'/%3E%3C/svg%3E"); }
.chest-ic-logout{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 17l5-5-5-5M20 12H9M11 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 17l5-5-5-5M20 12H9M11 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5'/%3E%3C/svg%3E"); }
.chest-ic-members{ mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.2'/%3E%3Cpath d='M2.5 19.5a6.5 6.5 0 0 1 13 0'/%3E%3Cpath d='M15.5 5.5a3.2 3.2 0 0 1 0 6.2'/%3E%3Cpath d='M17 13.2a5.5 5.5 0 0 1 4.5 6.3'/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.2'/%3E%3Cpath d='M2.5 19.5a6.5 6.5 0 0 1 13 0'/%3E%3Cpath d='M15.5 5.5a3.2 3.2 0 0 1 0 6.2'/%3E%3Cpath d='M17 13.2a5.5 5.5 0 0 1 4.5 6.3'/%3E%3C/svg%3E"); }

/* ---------- Lueur de fond du canvas ---------- */
.chest-ambient{
  position:absolute; inset:-10% -10% auto -10%; height:1100px; pointer-events:none;
  filter: blur(120px); opacity:.9;
  background: radial-gradient(40% 50% at 22% 20%, rgba(252,18,131,.38), transparent 70%),
              radial-gradient(38% 46% at 78% 8%, rgba(249,164,94,.26), transparent 72%);
  animation: chest-drift 46s ease-in-out infinite;
}
@keyframes chest-drift{
  0%  { transform: translate3d(-4%,-2%,0) scale(1.1); }
  50% { transform: translate3d(4%,3%,0)   scale(1.25); }
  100%{ transform: translate3d(-4%,-2%,0) scale(1.1); }
}
@media (prefers-reduced-motion: reduce){ .chest-ambient{ animation:none; } }

/* ============================================================
   SITE UNIFIÉ — shell (app.html) + pages embarquées
   La sidebar et la topbar vivent UNE fois, dans app.html ; chaque page est
   chargée dans .chest-view. Les pages gardent leur propre marquage de
   sidebar/topbar pour rester utilisables seules, mais l'y cachent dès
   qu'elles détectent qu'elles sont dans le shell (html.is-embedded, posé
   par js/theme.js avant le premier rendu).
   ============================================================ */

/* ---------- Côté page embarquée ---------- */
html.is-embedded,
html.is-embedded body{ background:transparent !important; }
html.is-embedded .chest-sidebar,
html.is-embedded .chest-sidebar-overlay,
html.is-embedded .chest-topbar{ display:none !important; }
html.is-embedded .chest-shell{ display:block; min-height:0; background:transparent; transition:none; }
html.is-embedded .chest-shell::after{ display:none; }
html.is-embedded .chest-main{ min-height:100vh; min-height:100dvh; }
/* .chest-main est un flex : un <main class="container"> à marges auto s'y
   rétrécit à son contenu et se centre. Il doit prendre toute la largeur. */
.chest-main > main.container{ width:100%; margin-left:0 !important; margin-right:0 !important; }

/* ---------- Côté shell ---------- */
/* 100dvh partout ci-dessous (2026-09-26, retour utilisateur : "sur mon téléphone avec Safari je
   peux pas voir en bas comme la calculatrice de lot") - `100vh` sur mobile Safari se calcule sur la
   plus grande hauteur possible (barre d'adresse/outils repliées), pas la hauteur RÉELLEMENT visible
   quand ces barres sont affichées ; d'habitude un simple scroll de la page fait disparaître ces
   barres et corrige l'affichage tout seul - mais ici .chest-main a son propre overflow:hidden (tout
   le défilement réel se passe DANS l'iframe), donc la page extérieure ne défile jamais et Safari ne
   réduit jamais ses barres : le bas du contenu (calculatrice de lot, graphiques) restait caché en
   permanence derrière elles. `100dvh` (hauteur de viewport DYNAMIQUE, ajustée en direct par le
   navigateur) remplace `100vh` sur les navigateurs qui le comprennent (règle en double : la 2e
   valeur écrase la 1re si comprise, sinon le navigateur garde 100vh tel quel - aucun risque de
   casser un vieux navigateur). */
html.is-shell, html.is-shell body{ height:100%; overflow:hidden; }
.chest-shell.is-app{ height:100vh; height:100dvh; min-height:0; }
.chest-shell.is-app > .chest-main{ height:100vh; height:100dvh; min-height:0; overflow:hidden; }
.chest-shell.is-app .chest-topbar{ flex-shrink:0; }
.chest-view{ position:relative; flex:1 1 auto; min-height:0; }
.chest-view iframe{
  position:absolute; inset:0; width:100%; height:100%; border:0; background:transparent;
  opacity:1; transform:none;
  transition:opacity .24s var(--chest-ease), transform .24s var(--chest-ease);
}
/* Pendant un changement de page : le contenu s'efface en glissant à peine,
   la sidebar et la topbar, elles, ne bougent pas. */
.chest-shell.is-navigating .chest-view iframe{ opacity:0; transform:translateY(8px); transition-duration:.14s; }

/* Barre de progression fine sous la topbar */
.chest-progress{
  position:absolute; left:0; bottom:-1px; height:2px; width:0; opacity:0; pointer-events:none;
  background:var(--chest-grad); box-shadow:0 0 12px rgba(252,18,131,.6);
}
.chest-shell.is-navigating .chest-progress{ opacity:1; width:78%; transition:width 1.4s cubic-bezier(.1,.6,.2,1), opacity .1s; }
.chest-shell.is-done .chest-progress{ opacity:0; width:100%; transition:width .18s ease-out, opacity .3s .18s; }

/* Fil d'Ariane : catégorie › page — ce qui relie les écrans entre eux */
.chest-crumb{
  display:flex; align-items:center; gap:10px; min-width:0; margin-right:auto; margin-left:6px;
  padding-left:16px; border-left:1px solid var(--chest-rule);
  font-size:12.5px; color:var(--chest-ink-3); white-space:nowrap;
}
.chest-crumb__sep{ opacity:.5; }
.chest-crumb b{ color:var(--chest-ink); font-weight:700; letter-spacing:-.01em; overflow:hidden; text-overflow:ellipsis; }
.chest-crumb__cat{ text-transform:uppercase; letter-spacing:.16em; font-size:10px; font-weight:600; }
.chest-topbar{ justify-content:flex-start; position:relative; }
.chest-topbar__actions{ margin-left:0; }
@media (max-width:640px){ .chest-crumb{ display:none; } .chest-topbar__actions{ margin-left:auto; } }

/* ============================================================
   DASHBOARD — petits ajustements
   ============================================================ */
/* Fenêtre du graphique d'equity : 20 % plus transparente que le verre
   standard (fond 0.62/0.74 -> 0.50/0.59, voile de luminosité relevé). */
.chest-glass.chest-glass--chart{
  background:linear-gradient(160deg, rgba(9,9,11,.5), rgba(9,9,11,.59));
  backdrop-filter:blur(34px) brightness(.42) saturate(1.05);
  -webkit-backdrop-filter:blur(34px) brightness(.42) saturate(1.05);
}
/* PnL non réalisé et profit du jour : vert si positif, rouge si négatif
   (dashboard.js pose déjà .pos / .neg selon le signe). */
.chest-root #resPnl.pos, .chest-root #resToday.pos{ color:var(--chest-green); }
.chest-root #resPnl.neg, .chest-root #resToday.neg{ color:var(--chest-red); }
