/* ═══════════════════════════════════════════════════════════════════════════════════════════════════
   DOSSIERS DE GROUPE (2026-10-14) : la fenêtre « Analyser un groupe » (Shared/GroupeModal, préfixe grp-) et le bandeau
   du hub d'un combiné (.grp-bandeau, posé sur .resume-banner).
   ⚠️ `position: fixed` et RIEN au-dessus qui pose un `backdrop-filter` (piège du bloc conteneur, cf. anonymiser.css).
   ⚠️ Le z-index se règle AUSSI dans entry.css : la fenêtre vit sous `.fec-content` (règles `.fec-loader:has(.grp-back)`).
   Couleurs : jetons seulement (thèmes clair et sombre).
   ═══════════════════════════════════════════════════════════════════════════════════════════════════ */
.grp-back {
    position: fixed; inset: 0; z-index: 5200; display: flex; align-items: center; justify-content: center;
    padding: 24px 16px; background: rgba(4, 12, 18, .62); animation: grp-in .16s ease-out;
}
html[data-theme="light"] .grp-back { background: rgba(28, 42, 52, .42); }
@keyframes grp-in { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .grp-back { animation: none; } }

.grp-box {
    position: relative; display: flex; flex-direction: column; width: min(1120px, 100%); max-height: 100%; min-height: 0;
    border-radius: 16px; border: 1px solid var(--o12); overflow: hidden;
    background:
        radial-gradient(900px 260px at 0% 0%, color-mix(in srgb, var(--brand) 10%, transparent), transparent 70%),
        var(--color-bg-surface, var(--bg1, #0d1b24));
    box-shadow: 0 24px 70px rgba(0, 0, 0, .46);
}

/* ── En-tête ── */
.grp-hd { flex: 0 0 auto; display: flex; align-items: flex-start; gap: 12px; padding: 16px 18px 12px; }
.grp-hd-ic {
    flex: 0 0 auto; width: 44px; height: 44px; display: grid; place-items: center; border-radius: 12px;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 14%, transparent);
    border: 1px solid color-mix(in srgb, var(--brand) 28%, transparent);
}
.grp-hd-x { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1 1 auto; }
.grp-eyebrow {
    align-self: flex-start; font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
    padding: 2px 8px; border-radius: 999px; color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 12%, transparent);
}
.grp-hd-x b { font-size: 18px; font-weight: 800; letter-spacing: -.02em; color: var(--tx1); }
.grp-hd-x small { font-size: 12px; line-height: 1.5; color: var(--color-text-muted); max-width: 680px; }
.grp-formule {
    flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; margin-top: 2px; font-size: 11px; font-weight: 700;
    padding: 4px 9px; border-radius: 999px; color: var(--color-text-secondary); border: 1px solid var(--o12); background: var(--o4); cursor: help;
}
.grp-x {
    flex: 0 0 auto; width: 30px; height: 30px; display: grid; place-items: center;
    border: 1px solid var(--o12); border-radius: 8px; background: var(--o4); color: var(--color-text-secondary); cursor: pointer;
}
.grp-x:hover { color: var(--tx1); border-color: var(--brand-strong); }

/* ── Étapes ── */
.grp-steps { flex: 0 0 auto; display: flex; gap: 6px; margin: 0; padding: 0 18px 12px; list-style: none; border-bottom: 1px solid var(--o12); }
.grp-steps li { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 600; color: var(--color-text-muted); padding: 5px 10px 5px 5px; border-radius: 999px; }
.grp-steps li span {
    width: 20px; height: 20px; display: grid; place-items: center; border-radius: 50%; font-size: 11px; font-weight: 800;
    background: var(--o8); color: var(--color-text-secondary);
}
.grp-steps li.is-on { color: var(--tx1); background: color-mix(in srgb, var(--brand) 10%, transparent); }
.grp-steps li.is-on span { background: var(--brand-strong); color: var(--brand-contrast, #fff); }
.grp-steps li.is-done span { background: color-mix(in srgb, var(--color-success) 22%, transparent); color: var(--color-success); }

/* ── Corps ── */
.grp-bd { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: 16px 18px; display: flex; flex-direction: column; gap: 14px; }
/*  Le corps défile : ses enfants gardent leur hauteur (un tableau à défilement horizontal se laisserait écraser à zéro). */
.grp-bd > * { flex-shrink: 0; }

.grp-nom { display: flex; flex-direction: column; gap: 5px; max-width: 420px; }
.grp-nom span, .grp-lab { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--color-text-muted); }
.grp-nom input, .grp-soc-nom {
    font: inherit; font-size: 14px; color: var(--tx1); background: var(--color-bg-input, var(--o4)); border: 1px solid var(--o12);
    border-radius: 9px; padding: 8px 11px; min-width: 0;
}
.grp-nom input:focus, .grp-soc-nom:focus { outline: none; border-color: var(--brand-strong); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 18%, transparent); }

.grp-socs { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.grp-soc {
    position: relative; display: flex; flex-direction: column; gap: 10px; padding: 12px; border-radius: 14px; min-width: 0;
    border: 1px solid var(--o12); background: linear-gradient(180deg, var(--o4), transparent);
    transition: border-color .15s ease, transform .15s ease;
}
.grp-soc.has-files { border-color: color-mix(in srgb, var(--brand) 34%, var(--o12)); }
.grp-soc-hd { display: flex; align-items: center; gap: 8px; }
.grp-soc-n {
    flex: 0 0 auto; width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; font-size: 12px; font-weight: 800;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 14%, transparent);
}
.grp-soc-nom { flex: 1 1 auto; }
.grp-soc-x { flex: 0 0 auto; width: 26px; height: 26px; display: grid; place-items: center; border-radius: 7px; border: 1px solid var(--o12); background: transparent; color: var(--color-text-muted); cursor: pointer; }
.grp-soc-x:hover { color: var(--color-danger); border-color: var(--color-danger); }

.grp-drop {
    position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
    padding: 16px 12px; border-radius: 11px; text-align: center; cursor: pointer;
    border: 1.5px dashed color-mix(in srgb, var(--brand-strong) 42%, transparent); background: var(--o4);
    transition: border-color .15s ease, background .15s ease;
}
.grp-drop:hover { border-color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 7%, transparent); }
.grp-drop input[type=file] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.grp-drop.is-busy { cursor: default; border-style: solid; }
.grp-drop.is-busy input[type=file] { pointer-events: none; }
.grp-drop-ic { color: var(--brand-strong); line-height: 0; margin-bottom: 2px; }
.grp-drop-t { font-size: 13px; font-weight: 700; color: var(--tx1); }
.grp-drop-s { font-size: 11px; color: var(--color-text-muted); }

.grp-files { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
.grp-files li { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--color-text-secondary); padding: 4px 6px; border-radius: 7px; background: var(--o4); min-width: 0; }
.grp-file-n { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--tx1); }
.grp-file-s { flex: 0 0 auto; font-size: 11px; color: var(--color-text-muted); font-variant-numeric: tabular-nums; }
.grp-file-x { flex: 0 0 auto; width: 20px; height: 20px; display: grid; place-items: center; border: 0; border-radius: 5px; background: transparent; color: var(--color-text-muted); cursor: pointer; }
.grp-file-x:hover { color: var(--color-danger); background: var(--o8); }

.grp-soc-add {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-height: 140px; border-radius: 14px;
    border: 1.5px dashed var(--o12); background: transparent; color: var(--color-text-secondary); font: inherit; font-size: 13px; font-weight: 700; cursor: pointer;
    transition: border-color .15s ease, color .15s ease, transform .15s ease;
}
.grp-soc-add:hover { border-color: var(--brand-strong); color: var(--brand-strong); transform: translateY(-2px); }

.grp-aide { display: flex; align-items: flex-start; gap: 7px; margin: 0; font-size: 12px; line-height: 1.5; color: var(--color-text-muted); }
.grp-aide .iku-ico { flex: 0 0 auto; margin-top: 2px; }

.grp-avert {
    display: flex; align-items: flex-start; gap: 10px; padding: 11px 13px; border-radius: 11px;
    border: 1px solid var(--color-warning-border, color-mix(in srgb, var(--color-warning) 40%, transparent));
    background: var(--color-warning-bg, color-mix(in srgb, var(--color-warning) 10%, transparent));
}
.grp-avert .iku-ico { flex: 0 0 auto; color: var(--color-warning); margin-top: 1px; }
.grp-avert p { margin: 0; font-size: 12px; line-height: 1.55; color: var(--color-text-secondary); }
.grp-avert b { color: var(--tx1); }

.grp-refus {
    display: flex; align-items: flex-start; gap: 10px; padding: 14px; border-radius: 12px;
    border: 1px solid color-mix(in srgb, var(--color-danger) 40%, transparent); background: var(--color-danger-bg-soft, color-mix(in srgb, var(--color-danger) 8%, transparent));
}
.grp-refus .iku-ico { flex: 0 0 auto; color: var(--color-danger); }
.grp-refus b { color: var(--tx1); font-size: 14px; }
.grp-refus p { margin: 6px 0 0; font-size: 13px; line-height: 1.5; color: var(--color-text-secondary); }
.grp-refus-l { font-size: 12px !important; }
.grp-err { margin: 0; font-size: 12.5px; color: var(--color-danger); }

/* ── Contrôle : résumé, éliminations, équilibre ── */
.grp-resume { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 14px; }
.grp-resume-l, .grp-resume-r { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.grp-chips, .grp-seules { display: flex; flex-wrap: wrap; gap: 6px; }
.grp-chip {
    display: inline-flex; align-items: baseline; gap: 6px; padding: 6px 12px; border-radius: 999px; font: inherit; font-size: 13px; font-weight: 800;
    border: 1px solid var(--o12); background: var(--o4); color: var(--tx1); cursor: pointer; transition: border-color .15s ease, background .15s ease;
}
.grp-chip small { font-size: 11px; font-weight: 600; color: var(--color-text-muted); }
.grp-chip:hover { border-color: var(--brand-strong); }
.grp-chip.is-on { border-color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 14%, transparent); }
.grp-seule {
    display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: 9px; font: inherit; font-size: 12.5px; font-weight: 600;
    border: 1px solid var(--o12); background: transparent; color: var(--color-text-secondary); cursor: pointer;
}
.grp-seule:hover:not(:disabled) { color: var(--tx1); border-color: var(--brand-strong); }
.grp-seule:disabled { opacity: .55; cursor: default; }
/*  2026-10-15 : le choix d'une société passe par le panneau « Périmètre » du hub ; la fenêtre le dit, sans bouton. */
.grp-perim-aide { display: flex; align-items: flex-start; gap: 7px; margin: 0; max-width: 360px; font-size: 12.5px; line-height: 1.45; color: var(--color-text-secondary); }
.grp-perim-aide .iku-ico { flex: 0 0 auto; margin-top: 2px; color: var(--brand); }

.grp-ecartes {
    display: flex; align-items: flex-start; gap: 9px; padding: 10px 12px; border-radius: 11px;
    border: 1px solid var(--color-warning-border, color-mix(in srgb, var(--color-warning) 40%, transparent)); background: var(--o4);
}
.grp-ecartes .iku-ico { flex: 0 0 auto; color: var(--color-warning); margin-top: 2px; }
.grp-ecartes ul { margin: 0; padding-left: 16px; display: flex; flex-direction: column; gap: 3px; font-size: 12px; line-height: 1.5; color: var(--color-text-secondary); }

.grp-sec-hd { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-top: 2px; }
.grp-sec-hd h3 { margin: 0; font-size: 15px; font-weight: 800; letter-spacing: -.01em; color: var(--tx1); }
.grp-sec-n { font-size: 12px; color: var(--color-text-muted); }
.grp-vide { margin: 0; padding: 14px; border-radius: 11px; border: 1px dashed var(--o12); font-size: 12.5px; line-height: 1.5; color: var(--color-text-muted); }

.grp-tbl-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--o12); }
.grp-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.grp-tbl th {
    text-align: left; font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--color-text-muted);
    padding: 8px 10px; background: var(--o4); border-bottom: 1px solid var(--o12); white-space: nowrap;
}
.grp-tbl td { padding: 9px 10px; border-bottom: 1px solid var(--o8); vertical-align: top; color: var(--color-text-secondary); }
.grp-tbl tr:last-child td { border-bottom: 0; }
.grp-tbl .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.grp-tbl td.num { color: var(--tx1); }
.grp-tbl td small { display: block; font-size: 10.5px; color: var(--color-text-muted); font-weight: 500; }
.grp-tbl .c-ok { width: 34px; text-align: center; }
.grp-tbl .c-ok input { width: 16px; height: 16px; accent-color: var(--brand-strong); cursor: pointer; }
.grp-tbl tr:not(.is-on) td:not(.c-ok) { opacity: .62; }
.grp-tbl tr.is-on td { background: color-mix(in srgb, var(--brand) 3%, transparent); }
.c-flux { min-width: 220px; }
.c-flux b { display: block; color: var(--tx1); font-size: 13px; }
.grp-sens { display: block; font-size: 12px; color: var(--color-text-secondary); }
.grp-cptes { display: block; margin-top: 3px; font-size: 11px; color: var(--color-text-muted); overflow-wrap: anywhere; }
.grp-etat { display: inline-block; margin-top: 5px; font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.grp-etat.is-ok { color: var(--color-success); background: color-mix(in srgb, var(--color-success) 13%, transparent); }
.grp-etat.is-warn { color: var(--color-warning); background: color-mix(in srgb, var(--color-warning) 13%, transparent); }
.grp-etat.is-sens { color: var(--color-text-muted); background: var(--o8); }
.grp-tbl td.is-ecart { color: var(--color-warning); font-weight: 700; }
.c-ret input {
    width: 112px; font: inherit; font-size: 12.5px; text-align: right; font-variant-numeric: tabular-nums; color: var(--tx1);
    background: var(--color-bg-input, var(--o4)); border: 1px solid var(--o12); border-radius: 7px; padding: 4px 7px;
}
.c-ret input:focus { outline: none; border-color: var(--brand-strong); }
.c-ret input:disabled { opacity: .5; }
.grp-tbl-l td { vertical-align: middle; }
.grp-tbl-l .mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; color: var(--tx1); }
.grp-tbl-l select {
    font: inherit; font-size: 12.5px; color: var(--tx1); background: var(--color-bg-input, var(--o4)); border: 1px solid var(--o12);
    border-radius: 7px; padding: 4px 6px; max-width: 220px;
}
.grp-tbl-l tr.is-on td:first-child { box-shadow: inset 3px 0 0 var(--brand-strong); }

.grp-ctl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.grp-ctl-c { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--o12); background: linear-gradient(180deg, var(--o4), transparent); min-width: 0; }
.grp-ctl-c b { display: inline-flex; align-items: center; gap: 6px; font-size: 18px; font-weight: 800; letter-spacing: -.01em; color: var(--tx1); font-variant-numeric: tabular-nums; }
.grp-ctl-c small { font-size: 11.5px; color: var(--color-text-muted); }
.grp-ctl-c.is-ok { border-color: color-mix(in srgb, var(--color-success) 40%, var(--o12)); }
.grp-ctl-c.is-ok b .iku-ico { color: var(--color-success); }
.grp-ctl-c.is-ko { border-color: var(--color-danger); }
.grp-ctl-c.is-ko b .iku-ico { color: var(--color-danger); }

.grp-liaisons { border: 1px solid var(--o12); border-radius: 12px; padding: 0 12px; background: var(--o4); }
.grp-liaisons summary { display: flex; align-items: center; gap: 8px; padding: 11px 0; cursor: pointer; list-style: none; font-size: 13px; color: var(--tx1); }
.grp-liaisons summary::-webkit-details-marker { display: none; }
.grp-liaisons summary span { font-size: 12px; color: var(--color-text-muted); }
.grp-liaisons summary::after { content: "▾"; margin-left: auto; color: var(--color-text-muted); transition: transform .15s ease; }
.grp-liaisons[open] summary::after { transform: rotate(180deg); }
.grp-liaisons[open] { padding-bottom: 12px; }
.grp-liaisons .grp-aide { margin-bottom: 10px; }
.grp-lien { margin-top: 8px; border: 0; background: none; padding: 0; font: inherit; font-size: 12px; font-weight: 600; color: var(--brand-strong); cursor: pointer; }
.grp-lien:hover { text-decoration: underline; }

/* ── Pied ── */
.grp-ft { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 18px; border-top: 1px solid var(--o12); background: var(--o4); }
.grp-ft-loc { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--color-text-muted); }
.grp-go {
    display: inline-flex; align-items: center; gap: 8px; margin-left: auto; padding: 9px 16px; border-radius: 10px; border: 0; cursor: pointer;
    font: inherit; font-size: 13.5px; font-weight: 800; color: #fff;
    background: linear-gradient(135deg, var(--brand-strong), var(--brand2-strong, var(--brand2)));
    box-shadow: 0 8px 22px -10px color-mix(in srgb, var(--brand) 70%, transparent); transition: transform .15s ease, box-shadow .15s ease, opacity .15s ease;
}
.grp-go .iku-ico { transition: transform .15s ease; }
.grp-go:hover:not(:disabled) { transform: translateY(-1px); }
.grp-go:hover:not(:disabled) .iku-ico { transform: translateX(3px); }
.grp-go:disabled { opacity: .45; cursor: default; box-shadow: none; }
.grp-back-b {
    display: inline-flex; align-items: center; gap: 5px; padding: 8px 12px; border-radius: 9px; border: 1px solid var(--o12);
    background: transparent; font: inherit; font-size: 13px; font-weight: 600; color: var(--color-text-secondary); cursor: pointer;
}
.grp-back-b:hover { color: var(--tx1); border-color: var(--brand-strong); }

/* ── La valorisation du groupe (2026-10-15, lot 5b) : la carte autonome Shared/ValoGroupeCarte, préfixe gvc- (chaque société, part
   détenue saisissable, somme des parties, combiné, écart, remarques). Une valeur absente s'affiche « non calculable », en retrait. ── */
.gvc {
    display: flex; flex-direction: column; gap: 12px; padding: 16px; border-radius: 14px; border: 1px solid var(--o12);
    background: var(--color-bg-surface, var(--o2)); color: var(--tx1); min-width: 0;
}
.gvc-hd { display: flex; flex-direction: column; gap: 4px; }
.gvc-titre { margin: 0; font-size: 15px; font-weight: 800; letter-spacing: -.01em; color: var(--tx1); }
.gvc-sous { margin: 0; font-size: 12px; line-height: 1.5; color: var(--color-text-secondary); }
.gvc-vide { margin: 0; padding: 14px; border-radius: 11px; border: 1px dashed var(--o12); font-size: 12.5px; color: var(--color-text-muted); }

.gvc-table-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--o12); }
.gvc-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.gvc-table thead th {
    text-align: left; font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--color-text-muted);
    padding: 8px 10px; background: var(--o4); border-bottom: 1px solid var(--o12); white-space: nowrap;
}
.gvc-table tbody th, .gvc-table tfoot th { text-align: left; font-weight: 600; padding: 9px 10px; color: var(--tx1); }
.gvc-table td { padding: 9px 10px; color: var(--tx1); }
.gvc-table tbody tr { border-bottom: 1px solid var(--o8); }
.gvc-table tbody tr:last-child { border-bottom: 1px solid var(--o12); }
.gvc-table .gvc-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.gvc-nom { display: block; }
.gvc-meth { display: block; margin-top: 2px; font-size: 10.5px; font-weight: 500; color: var(--color-text-muted); }
.gvc-table tr.is-absent td, .gvc-table tr.is-absent .gvc-nom { color: var(--color-text-muted); }
.gvc-nc { font-style: italic; color: var(--color-text-muted); }

.gvc-pct {
    width: 72px; font: inherit; font-size: 12.5px; text-align: right; font-variant-numeric: tabular-nums; color: var(--tx1);
    background: var(--color-bg-input, var(--o4)); border: 1px solid var(--o12); border-radius: 7px; padding: 4px 7px;
}
.gvc-pct:focus { outline: none; border-color: var(--brand-strong); }
.gvc-pct:disabled { opacity: .5; }
.gvc-pct[aria-invalid="true"] { border-color: var(--color-danger); }
.gvc-unite { margin-left: 4px; color: var(--color-text-muted); }

.gvc-table tfoot tr { border-top: 1px solid var(--o8); }
.gvc-table tr.gvc-total th, .gvc-table tr.gvc-total td { font-weight: 800; background: color-mix(in srgb, var(--brand) 5%, transparent); }
.gvc-table tr.gvc-ecart td { font-weight: 700; }
.gvc-table tr.gvc-ecart td.is-neg { color: var(--color-warning); }

.gvc-erreur { margin: 0; font-size: 12px; color: var(--color-danger); }
.gvc-remarques { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: 12px; line-height: 1.5; color: var(--color-text-secondary); }
.gvc-remarques b { color: var(--tx1); font-weight: 700; }
.gvc-regle { margin: 0; font-size: 11px; line-height: 1.5; color: var(--color-text-muted); }

@media (max-width: 560px) {
    .gvc { padding: 12px; }
    .gvc-table { font-size: 12px; }
    .gvc-pct { width: 60px; }
}

/* ── Le bandeau du hub ── */
.grp-bandeau-formule {
    flex: 0 0 auto; display: inline-flex; align-items: center; gap: 4px; font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 12%, transparent);
}
.grp-bandeau-exemple { cursor: help; }

/* ── Le groupe d'exemple (2026-10-15) : la carte de l'étape 1, la note du contrôle ── */
.grp-exemple {
    display: flex; align-items: center; gap: 12px; padding: 11px 13px; border-radius: 12px;
    border: 1px dashed color-mix(in srgb, var(--brand) 40%, var(--o12));
    background: color-mix(in srgb, var(--brand) 6%, transparent);
}
.grp-exemple.is-on { border-style: solid; }
.grp-exemple-ic {
    flex: 0 0 auto; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 9px;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 14%, transparent);
}
.grp-exemple-x { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }
.grp-exemple-x b { font-size: 13.5px; font-weight: 800; color: var(--tx1); }
.grp-exemple-x small { font-size: 12px; line-height: 1.5; color: var(--color-text-secondary); }
.grp-exemple-b {
    flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border-radius: 10px; cursor: pointer;
    font: inherit; font-size: 13px; font-weight: 800; color: var(--brand-strong); white-space: nowrap;
    border: 1px solid color-mix(in srgb, var(--brand) 45%, transparent); background: var(--color-bg-surface, transparent);
    transition: transform .15s ease, border-color .15s ease;
}
.grp-exemple-b:hover:not(:disabled) { transform: translateY(-1px); border-color: var(--brand-strong); }
.grp-exemple-b:disabled { opacity: .55; cursor: default; }
.grp-exemple-note {
    display: flex; align-items: flex-start; gap: 10px; padding: 11px 13px; border-radius: 11px;
    border: 1px solid color-mix(in srgb, var(--brand) 32%, var(--o12)); background: color-mix(in srgb, var(--brand) 7%, transparent);
}
.grp-exemple-note .iku-ico { flex: 0 0 auto; color: var(--brand-strong); margin-top: 1px; }
.grp-exemple-note p { margin: 0; font-size: 12.5px; line-height: 1.55; color: var(--color-text-secondary); }
.grp-exemple-note b { color: var(--tx1); }

@media (max-width: 760px) {
    .grp-exemple { flex-wrap: wrap; align-items: flex-start; }
    .grp-exemple-x { flex-basis: calc(100% - 44px); }
    .grp-exemple-b { width: 100%; justify-content: center; }
}

@media (max-width: 760px) {
    .grp-back { padding: 0; }
    .grp-box { width: 100%; height: 100%; max-height: 100%; border-radius: 0; border: 0; }
    .grp-hd { padding: 12px 14px 10px; }
    .grp-formule { display: none; }
    .grp-steps { padding: 0 14px 10px; overflow-x: auto; }
    .grp-steps li { white-space: nowrap; }
    .grp-bd { padding: 12px 14px; }
    .grp-socs { grid-template-columns: 1fr; }
    .grp-ctl { grid-template-columns: 1fr; }
    .grp-ft { padding: 10px 14px; flex-wrap: wrap; }
    .grp-ft-loc { display: none; }
}

/* ── Lot 4 (2026-10-15) : le sélecteur « Société » d'un groupe (Shared/SelecteurSociete), en tête du hub et du pilotage ── */
.soc-sel {
    display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; margin: 0 0 10px; padding: 7px 10px; border-radius: 12px;
    border: 1px solid color-mix(in srgb, var(--brand) 26%, var(--o12)); background: color-mix(in srgb, var(--brand) 6%, transparent);
}
.soc-sel-lbl { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 800; color: var(--brand-strong); cursor: help; }
.soc-sel-dd { min-width: 210px; max-width: 320px; flex: 0 1 auto; }
.soc-sel-etat { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--mut2); }
.soc-sel-etat.is-ko { color: var(--color-warning, var(--mut2)); }
.soc-sel.is-compact { margin: 0; padding: 2px 6px; border-radius: 10px; gap: 6px; }
.soc-sel.is-compact .soc-sel-dd { min-width: 170px; }
.soc-sel.is-compact .soc-sel-etat span { display: none; }
@media (max-width: 767px) {
    .soc-sel { padding: 6px 8px; width: 100%; box-sizing: border-box; }
    .soc-sel-dd { min-width: 0; flex: 1 1 160px; max-width: none; }
    .soc-sel.is-compact .soc-sel-lbl-t { display: none; }
    .soc-sel.is-compact .soc-sel-dd { min-width: 120px; }
}

/* La carte « lecture seule » du Groupe (FinTreePopup, RoLock) : un lien par société */
.ro-lock-socs { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-top: 4px; }
.ro-lock-soc { display: inline-flex; align-items: center; gap: 6px; }

/* Panneau Périmètre : les remarques de l'agrégation, repliées */
.gpf-rem { margin: 2px 6px 0; font-size: 11px; line-height: 1.45; color: var(--mut2); }
.gpf-rem summary { cursor: pointer; font-weight: 700; color: var(--color-text-secondary); }
.gpf-rem summary:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 4px; }
.gpf-rem ul { margin: 4px 0 0; padding-left: 16px; display: flex; flex-direction: column; gap: 3px; }

/* Lignes liées d'un groupe (HYPCLI.GRP., CustomFinTree) : « liée à <vendeur> », forçage */
.fin-lie {
    flex: 0 0 auto; display: inline-flex; align-items: center; gap: 3px; margin-left: 6px; padding: 0 6px; border-radius: 999px; border: 0;
    font: inherit; font-size: 10px; font-weight: 700; line-height: 16px; white-space: nowrap; cursor: pointer;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 12%, transparent);
}
.fin-lie.is-force { color: var(--color-text-secondary); background: var(--o10); }
.fin-lie:hover { background: color-mix(in srgb, var(--brand) 20%, transparent); }
.fin-lie:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.finmod-regle { margin: 0 0 8px; font-size: 11.5px; line-height: 1.45; color: var(--color-text-secondary); }
/* Forçage par exercice ou mois par mois (2026-10-15) : une saisie par ligne, la liste défile au-delà de quelques lignes. */
.finmod-lie { width: 300px; max-width: calc(100vw - 24px); }
.finmod-lie .finmod-inp input { width: 96px; }
.finmod-seg.finmod-lie-mode { display: flex; width: 100%; max-width: none; margin: 0 0 6px; }
.finmod-lie-mode .finmod-btn { flex: 1 1 0; white-space: nowrap; }
.finmod-lie-liste { max-height: min(240px, 40vh); overflow-y: auto; margin: 0 -4px 8px; padding: 0 4px; }
.finmod-lie-liste .finmod-row { margin-bottom: 6px; }

/* ═══════════════════════════════════════════════════════════════════════════════════════════════════
   VERROU D'USAGE DU MODE GROUPE (2026-10-15, Shared/VerrouGroupe, préfixe pgv-) et REPORTING DU GROUPE
   (Shared/ReportingGroupeVue, préfixe rgp-). Registre : Services/PorteeGroupe.cs.
   ⚠️ « pg- » est déjà pris par la prévision glissante (prevision-glissante.css) : préfixe pgv-.
   Couleurs : jetons seulement (thèmes clair et sombre). Rendus au premier niveau de FecLoader (hors .fec-loader).
   ═══════════════════════════════════════════════════════════════════════════════════════════════════ */
.pgv-verrou {
    display: flex; flex-direction: column; align-items: flex-start; gap: 10px; max-width: 640px; margin: 0 auto;
    padding: 22px 22px 18px; border-radius: 16px; border: 1px solid var(--o12);
    background:
        radial-gradient(520px 180px at 0% 0%, color-mix(in srgb, var(--brand) 9%, transparent), transparent 70%),
        var(--o4);
    color: var(--tx1); text-align: left;
}
.pgv-place { display: flex; align-items: flex-start; justify-content: center; padding: 28px 16px; min-height: 0; width: 100%; box-sizing: border-box; }
.pgv-place.is-compact { padding: 10px 4px; }
.pgv-place.is-compact .pgv-verrou { padding: 14px 14px 12px; gap: 8px; border-radius: 12px; }
.pgv-place.is-compact .pgv-t { font-size: 14px; }
.pgv-place.is-compact .pgv-p, .pgv-place.is-compact .pgv-note { font-size: 11.5px; }
.pgv-pill {
    display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
    padding: 3px 9px; border-radius: 999px; color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 13%, transparent);
}
.pgv-t { margin: 0; font-size: 17px; font-weight: 800; line-height: 1.3; letter-spacing: -.01em; color: var(--tx1); }
.pgv-p { margin: 0; font-size: 13px; line-height: 1.55; color: var(--color-text-secondary); }
.pgv-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 2px; }
.pgv-btn {
    display: inline-flex; align-items: center; gap: 7px; min-height: 36px; padding: 7px 14px; border-radius: 9px; cursor: pointer;
    font: inherit; font-size: 13px; font-weight: 700; border: 1px solid transparent;
    color: var(--brand-contrast, #04121a); background: var(--brand-strong);
}
.pgv-btn:hover { filter: brightness(1.07); }
.pgv-btn:disabled { opacity: .6; cursor: progress; }
.pgv-btn.is-alt { color: var(--tx1); background: var(--o6, var(--o4)); border-color: var(--o12); }
.pgv-btn.is-alt:hover { border-color: var(--brand-strong); filter: none; }
.pgv-btn:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.pgv-note { margin: 0; font-size: 11.5px; line-height: 1.5; color: var(--color-text-muted); }

/* La fenêtre (porte fermée avant d'ouvrir sa surface) : au-dessus de tout le reste, partage compris (6600). */
.pgv-back {
    position: fixed; inset: 0; z-index: 7000; display: flex; align-items: center; justify-content: center;
    padding: 24px 16px; background: rgba(4, 12, 18, .62); animation: grp-in .16s ease-out;
}
html[data-theme="light"] .pgv-back { background: rgba(28, 42, 52, .42); }
@media (prefers-reduced-motion: reduce) { .pgv-back { animation: none; } }
.pgv-fen {
    position: relative; width: min(640px, 100%); max-height: 100%; overflow: auto; border-radius: 16px;
    background: var(--color-bg-surface, var(--bg1, #0d1b24)); box-shadow: 0 24px 70px rgba(0, 0, 0, .46);
}
.pgv-fen .pgv-verrou { border: 0; max-width: none; padding: 24px 24px 20px; }
.pgv-x {
    position: absolute; top: 12px; right: 12px; z-index: 1; width: 30px; height: 30px; display: grid; place-items: center;
    border: 1px solid var(--o12); border-radius: 8px; background: var(--o4); color: var(--color-text-secondary); cursor: pointer;
}
.pgv-x:hover { color: var(--tx1); border-color: var(--brand-strong); }
.pgv-fen .pgv-t { padding-right: 36px; }

/* L'étiquette « Dossier de la société » d'une porte du hub fermée en mode groupe (un seul libellé, celui de la fenêtre du verrou) */
.pgv-etiq {
    display: inline-flex; align-items: center; gap: 4px; vertical-align: middle; margin-left: 6px; padding: 1px 8px; border-radius: 999px;
    font-size: 10.5px; font-weight: 800; line-height: 18px; white-space: nowrap; cursor: help;
    color: var(--color-text-secondary); background: var(--o8, var(--o4)); border: 1px solid var(--o12);
    /*  Jamais étirée en barre pleine largeur par un parent en flex colonne ou en grille (« Face à mon secteur », 15/10). */
    align-self: flex-start; justify-self: start; width: max-content; max-width: 100%;
}
.intent-card-hero > .pgv-etiq, .intent-card-banner > .pgv-etiq { position: absolute; top: 12px; left: 14px; z-index: 3; margin: 0; }
.intent-card-banner > .pgv-etiq ~ .intent-card-banner-body .intent-card-banner-title-row { padding-top: 20px; }
.pgv-carte-rep { display: flex; flex-direction: column; gap: 4px; padding: 16px; }
.pgv-carte-rep .intent-card-title { margin: 0 0 2px; }

/* ── Le reporting du groupe ── */
/* Au-dessus du hub et de ses boutons flottants ; le panneau Périmètre (6100) reste au-dessus : cocher une société recalcule le tableau. */
.rgp-back { position: fixed; inset: 0; z-index: 5100; display: flex; background: var(--hx5, #060d14); }
.rgp-root { display: flex; flex-direction: column; width: 100%; min-height: 0; color: var(--tx1); }
.rgp-hd { flex: 0 0 auto; display: flex; align-items: flex-start; gap: 12px; padding: 18px 20px 12px; border-bottom: 1px solid var(--o12); }
.rgp-hd-ic {
    flex: 0 0 auto; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 14%, transparent); border: 1px solid color-mix(in srgb, var(--brand) 28%, transparent);
}
.rgp-hd-x { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1 1 auto; }
.rgp-eyebrow { align-self: flex-start; font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 12%, transparent); }
.rgp-t { margin: 0; font-size: 19px; font-weight: 800; letter-spacing: -.02em; line-height: 1.25; }
.rgp-hd-x small { font-size: 12px; line-height: 1.5; color: var(--color-text-muted); }
.rgp-x { flex: 0 0 auto; width: 32px; height: 32px; display: grid; place-items: center; border: 1px solid var(--o12); border-radius: 8px; background: var(--o4); color: var(--color-text-secondary); cursor: pointer; }
.rgp-x:hover { color: var(--tx1); border-color: var(--brand-strong); }
.rgp-corps { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 14px 20px 28px; display: flex; flex-direction: column; gap: 14px; }
/* Le panneau Périmètre (en bas à gauche, ≈ 330 px) : de quoi faire défiler les notes au-dessus de lui. */
/* … et la languette « Valeur » (valorisation flottante, bord droit). Les blocs gardent leur hauteur : seul le corps défile. */
@media (min-width: 768px) { .rgp-corps { padding-bottom: 340px; padding-right: 48px; } }
.rgp-corps > * { flex-shrink: 0; }
.rgp-vide { margin: 40px auto; max-width: 560px; text-align: center; font-size: 14px; color: var(--color-text-secondary); }
.rgp-ctrl { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.rgp-seg { display: inline-flex; flex-wrap: wrap; gap: 2px; padding: 3px; border-radius: 10px; background: var(--o4); border: 1px solid var(--o12); }
.rgp-seg button { font: inherit; font-size: 12.5px; font-weight: 700; padding: 6px 11px; border-radius: 7px; border: 0; cursor: pointer; background: transparent; color: var(--color-text-secondary); }
.rgp-seg button.is-on { background: var(--brand-strong); color: var(--brand-contrast, #04121a); }
.rgp-seg button:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.rgp-synth { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; max-width: 760px; }
.rgp-synth > div { display: flex; flex-direction: column; gap: 2px; padding: 10px 14px; border-radius: 12px; background: var(--o4); border: 1px solid var(--o12); }
.rgp-synth span { font-size: 11.5px; font-weight: 700; color: var(--color-text-muted); }
.rgp-synth b { font-size: 18px; font-weight: 800; font-variant-numeric: tabular-nums; }
.rgp-synth small { font-size: 11.5px; font-weight: 700; }
.rgp-synth .is-pos b, .rgp-synth .is-pos small, .rgp-e.is-pos { color: var(--color-success); }
.rgp-synth .is-neg b, .rgp-synth .is-neg small, .rgp-e.is-neg { color: var(--color-danger); }
html[data-theme="light"] .rgp-synth .is-pos b, html[data-theme="light"] .rgp-synth .is-pos small, html[data-theme="light"] .rgp-e.is-pos { color: var(--st-green, #047857); }
html[data-theme="light"] .rgp-synth .is-neg b, html[data-theme="light"] .rgp-synth .is-neg small, html[data-theme="light"] .rgp-e.is-neg { color: #b91c1c; }
.rgp-tab-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--o12); background: var(--o4); max-width: 100%; }
.rgp-tab-wrap:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.rgp-tab { border-collapse: collapse; width: max-content; min-width: 100%; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.rgp-tab th, .rgp-tab td { padding: 7px 10px; text-align: right; border-bottom: 1px solid var(--o8, var(--o12)); white-space: nowrap; vertical-align: top; }
.rgp-tab thead th { position: sticky; top: 0; z-index: 2; font-size: 11px; font-weight: 800; color: var(--color-text-muted); background: var(--color-bg-surface, var(--bg1, #0d1b24)); }
.rgp-tab .rgp-c-nom { position: sticky; left: 0; z-index: 1; text-align: left; min-width: 170px; max-width: 260px; white-space: normal; background: var(--color-bg-surface, var(--bg1, #0d1b24)); }
.rgp-tab thead .rgp-c-nom { z-index: 3; }
.rgp-tab .rgp-c-cumul { font-weight: 800; border-left: 1px solid var(--o12); }
.rgp-v, .rgp-e { display: block; }
.rgp-e { font-size: 11px; font-weight: 700; color: var(--color-text-muted); }
.rgp-e small { margin-left: 4px; font-weight: 600; }
.rgp-nom { display: block; font-weight: 700; }
.rgp-etiq { display: inline-block; margin-top: 2px; font-size: 10.5px; color: var(--color-text-muted); }
.rgp-tab tr.is-groupe th, .rgp-tab tr.is-groupe td { font-weight: 800; background: color-mix(in srgb, var(--brand) 8%, transparent); }
.rgp-tab tr.is-groupe .rgp-c-nom { background: color-mix(in srgb, var(--brand) 8%, var(--color-bg-surface, var(--bg1, #0d1b24))); }
.rgp-tab tr.is-elim td, .rgp-tab tr.is-elim th { font-style: italic; color: var(--color-text-secondary); }
.rgp-tab tr.is-hors td, .rgp-tab tr.is-hors th { opacity: .62; }
.rgp-tab tr.is-hors:first-of-type td { border-top: 2px solid var(--o12); }
.rgp-lien {
    display: inline-flex; align-items: center; gap: 4px; margin: 3px 6px 0 0; padding: 2px 8px; border-radius: 999px; cursor: pointer;
    font: inherit; font-size: 10.5px; font-weight: 700; border: 1px solid color-mix(in srgb, var(--brand) 35%, transparent);
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 10%, transparent);
}
.rgp-lien.is-discret { color: var(--color-text-secondary); background: transparent; border-color: var(--o12); }
.rgp-lien:hover { border-color: var(--brand-strong); }
.rgp-lien:disabled { opacity: .55; cursor: progress; }
.rgp-lien:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.rgp-notes { display: flex; flex-direction: column; gap: 6px; max-width: 900px; margin: 0; font-size: 12px; line-height: 1.55; color: var(--color-text-secondary); }
.rgp-notes p { margin: 0; }
.rgp-manque { color: var(--tx1); }
.rgp-pied { display: flex; gap: 8px; }
.rgp-btn {
    display: inline-flex; align-items: center; gap: 7px; min-height: 36px; padding: 7px 14px; border-radius: 9px; cursor: pointer;
    font: inherit; font-size: 13px; font-weight: 700; color: var(--tx1); background: var(--o4); border: 1px solid var(--o12);
}
.rgp-btn:hover { border-color: var(--brand-strong); }
@media (max-width: 640px) {
    .rgp-hd { padding: 14px 16px 10px; }
    .rgp-corps { padding: 12px 16px 24px; }
    .rgp-t { font-size: 16px; }
    .rgp-synth { grid-template-columns: 1fr; }
    .rgp-tab .rgp-c-nom { min-width: 120px; max-width: 150px; }
    .pgv-verrou { padding: 18px 16px 14px; }
}
/* ── Mode groupe (2026-10-15, demande d'Arthur) : la barre du pilotage et le détail par entité des tableaux financiers ──
   Barre (FinTreePopup, .fintree-head.is-groupe) : le sélecteur d'entité en tête, son type (badge), la puce « Périmètre n/N », puis
   « Détail : par poste | par entité » sur le Groupe. Grille (CustomFinTree, portée .de-host) : sous une ligne du Groupe, une sous-ligne
   par société cochée, « Ajustements du groupe », « Éliminations » ; corps plus petit, encre atténuée, filet de rattachement à gauche,
   comme les comptes du détail par compte. Surfaces de la colonne figée OPAQUES (verre + teinte en image de fond). */
.soc-sel-type {
    flex: 0 0 auto; display: inline-flex; align-items: center; padding: 0 7px; border-radius: 999px; font-size: 10px; font-weight: 800;
    line-height: 17px; letter-spacing: .02em; white-space: nowrap; cursor: help;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 14%, transparent);
}
.soc-sel-type.is-soc { color: var(--color-text-secondary); background: var(--o10); }
.soc-sel-type.is-adj { color: var(--txt-teal2, var(--brand-strong)); background: color-mix(in srgb, var(--txt-teal2, var(--brand)) 12%, transparent); }
.fintree-head.is-groupe .soc-sel { flex: 0 0 auto; gap: 6px; padding: 2px 4px 2px 2px; }
.fintree-head.is-groupe .soc-sel-lbl { display: none; }   /* la liste a sa propre icône */
.fintree-head.is-groupe .soc-sel-dd { min-width: 150px; }
/* Une ligne à 1 440 px : la pastille « Bilans équilibrés » (le contrôle Actif = Passif reste en bas du tableau) cède la première. */
@media (max-width: 1560px) { .fintree-head.is-groupe .fintree-chip-eq { display: none !important; } }
/* Sur le Groupe (lecture seule), la pastille « Groupe : lecture seule » garde son icône et sa bulle : le badge « Groupe combiné » le dit déjà. */
@media (max-width: 1560px) { .fintree-head.is-combine .fintree-ro-btn .fintree-side-btn-lbl { display: none; } }
.fintree-head.is-groupe .soc-sel-dd .custom-dropdown-value { font-weight: 700; }
.grp-perim-puce .grp-perim-n { font-variant-numeric: tabular-nums; color: var(--brand-strong); }
/*  16/10 (scénarios de groupe) : le scénario de groupe affiché, dit (pas un bouton : il se choisit dans la barre du groupe du hub). */
.grp-scen-puce { cursor: default; gap: 6px; }
.grp-scen-puce .grp-scen-n { font-weight: 800; max-width: 18ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.grp-scen-puce.is-alt { border-color: color-mix(in srgb, var(--brand) 55%, transparent); background: color-mix(in srgb, var(--brand) 12%, transparent); }
.grp-scen-puce.is-alt .grp-scen-n { color: var(--brand-strong); }
@media (max-width: 767px) { .grp-scen-puce .fintree-side-btn-lbl { display: none; } .grp-scen-puce .grp-scen-n { max-width: 12ch; } }
/* ── 17/10 (Arthur : « améliore la disposition, un sélecteur de scénario ») : LE BLOC DE CONTEXTE du pilotage en mode groupe. L'entité
   pilotée, le périmètre et le scénario de groupe dans UNE pilule à filets (comme « Groupe combiné │ 3/3 » de la barre du hub), au lieu de
   trois pastilles ; les trois gâchettes y perdent leur cadre. Hors base, le bloc prend la teinte de la marque (on ne lit pas la base). ── */
.grp-ctx { flex: 0 0 auto; display: inline-flex; align-items: center; min-width: 0; height: 30px; box-sizing: border-box; border-radius: 9px;
    border: 1px solid color-mix(in srgb, var(--brand) 26%, var(--o12)); background: color-mix(in srgb, var(--brand) 5%, transparent); }
.grp-ctx.is-alt { border-color: color-mix(in srgb, var(--brand) 55%, transparent); background: color-mix(in srgb, var(--brand) 11%, transparent); }
.grp-ctx > * + * { border-left: 1px solid color-mix(in srgb, var(--brand) 22%, var(--o10)); }
.fintree-head.is-groupe .grp-ctx .soc-sel { margin: 0; padding: 0 4px 0 2px; border: 0; border-radius: 0; background: none; }
.fintree-head.is-groupe .grp-ctx .soc-sel-dd { min-width: 0; }
.fintree-head.is-combine .grp-ctx .soc-sel-type { display: none; }   /* « Groupe combiné » répétait « Groupe » */
.grp-ctx .grp-perim-puce { height: 28px; border: 0; border-radius: 0; background: none; padding: 0 9px; gap: 5px; }
.grp-ctx .grp-perim-puce:hover { background: color-mix(in srgb, var(--brand) 12%, transparent); }
.grp-scen-sel { display: inline-flex; align-items: center; gap: 5px; height: 28px; padding: 0 2px 0 9px; font-size: 12px; font-weight: 600; color: var(--tx2); }
.grp-scen-sel > .iku-ico { color: var(--brand); flex: none; }
.grp-scen-sel .custom-dropdown { display: block; }
.grp-ctx :is(.soc-sel-dd, .grp-scen-sel) .custom-dropdown-trigger { height: 28px; min-width: 0; padding: 0 8px; gap: 6px; border: 0; border-radius: 0; background: none;
    font-size: 12px; font-weight: 800; color: var(--tx1); box-shadow: none; }
.grp-ctx :is(.soc-sel-dd, .grp-scen-sel) .custom-dropdown-trigger:hover:not(:disabled),
.grp-ctx :is(.soc-sel-dd, .grp-scen-sel) .custom-dropdown.open .custom-dropdown-trigger { background: color-mix(in srgb, var(--brand) 12%, transparent); }
.grp-ctx.is-alt .grp-scen-sel .custom-dropdown-value { color: var(--brand-strong); }
.grp-scen-sel .custom-dropdown-value { max-width: 18ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.grp-ctx .grp-scen-sel:last-child .custom-dropdown-trigger { border-radius: 0 8px 8px 0; }
html[data-theme="light"] .grp-ctx { background: color-mix(in srgb, var(--brand) 6%, #fff); }
/* Une ligne jusqu'à ~1 440 px : les témoins redondants cèdent avant les gestes (« Bilans équilibrés » : le contrôle Actif = Passif est en
   bas du tableau ; « Groupe : lecture seule » et « Détail » gardent leur icône, leur bulle, leur choix). */
@media (max-width: 1800px) {
    .fintree-head.is-groupe .fintree-chip-eq { display: none !important; }
    .fintree-head.is-groupe .fintree-ro-btn .fintree-side-btn-lbl { display: none; }
    .fintree-head.is-groupe .grp-detail-l { display: none; }
}
@media (max-width: 1500px) { .fintree-head.is-groupe .grp-scen-l { display: none; } .grp-scen-sel .custom-dropdown-value { max-width: 12ch; } }
@media (max-width: 767px) {
    .grp-ctx { flex: 1 1 100%; }
    .grp-ctx .soc-sel { flex: 0 1 auto; }
    .grp-ctx .grp-scen-sel { flex: 1 1 auto; min-width: 0; }   /* le nom du scénario prend la place restante */
    .grp-scen-sel .custom-dropdown, .grp-scen-sel .custom-dropdown-trigger { min-width: 0; max-width: 100%; }
    .grp-scen-sel .custom-dropdown-value { max-width: none; }
}
/* ── 15/10 (recette des finitions, agent A) : la puce « Périmètre n/N » du hub, à côté du sélecteur « Société » ; elle ouvre le panneau
   Périmètre (Shared/PerimetreGroupe), qui ne flotte plus en permanence. ── */
.soc-sel-perim {
    flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 10px; margin: 0; border-radius: 999px; cursor: pointer;
    font: inherit; font-size: 12px; font-weight: 700; color: var(--tx1); white-space: nowrap;
    background: var(--o5); border: 1px solid color-mix(in srgb, var(--brand) 30%, var(--o12)); transition: background .14s, border-color .14s;
}
.soc-sel-perim:hover { background: color-mix(in srgb, var(--brand) 12%, transparent); border-color: color-mix(in srgb, var(--brand) 45%, var(--o12)); }
.soc-sel-perim:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.soc-sel-perim .iku-ico { color: var(--brand); }
.soc-sel-perim b { font-variant-numeric: tabular-nums; color: var(--brand-strong); }
/* ── fin puce Périmètre du hub ── */
.grp-detail { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; }
.grp-detail-l { font-size: 11px; font-weight: 700; color: var(--mut1); }
.grp-detail-seg { border-radius: 8px; }
.grp-detail-seg .iku-seg-b { height: 26px; padding: 0 10px; font-size: 12px; white-space: nowrap; text-decoration: none; }
@media (max-width: 1180px) { .grp-detail-l { display: none; } }
/* Balayage des largeurs (2026-10-15) : la barre du mode groupe porte trois éléments de plus (entité, périmètre, détail) ; elle cède
   ses libellés plus tôt que celle d'une société seule, pour tenir sur une ligne de 768 à 1 440 px (une société seule : inchangée). */
@media (max-width: 1365px) { .fintree-head.is-groupe :is(.fintree-cop-btn, .grp-perim-puce) .fintree-side-btn-lbl { display: none; } }
@media (max-width: 1240px) { .fintree-head.is-groupe .fintree-vtabs { display: none; } .fintree-head.is-groupe .fintree-vsel { display: inline-block; } }
@media (max-width: 1180px) { .fintree-head.is-groupe .fintree-side-btn-lbl { display: none; } }
@media (max-width: 960px) {
    .fintree-head.is-groupe .soc-sel-type { display: none; }
    .fintree-head.is-groupe .soc-sel-dd { min-width: 130px; }
    .fintree-head.is-groupe .rb-puce .fintree-eq-lbl { display: none; }
    .grp-detail-seg .iku-seg-b { padding: 0 7px; }
}
/* Sous 768 px : deux rangs nets, l'entité (avec son périmètre et son détail) puis les gestes, la croix au bout du second. */
@media (max-width: 767px) {
    .fintree-head.is-groupe > :is(.grp-ctx, .soc-sel, .grp-perim-puce, .grp-detail) { order: -2; }
    .fintree-head.is-groupe::before { content: ""; order: -1; flex: 0 0 100%; height: 0; }
    .grp-detail-seg .iku-seg-b { padding: 0 6px; font-size: 11px; }
}
@media (max-width: 360px) {
    .fintree-head.is-groupe .soc-sel-dd { min-width: 100px; }
    .grp-detail-seg .iku-seg-b { padding: 0 5px; }
}
@media (max-width: 767px) {
    .fintree-head.is-groupe .soc-sel { width: auto; padding: 2px 4px; }
    .fintree-head.is-groupe .soc-sel-dd { min-width: 0; max-width: 150px; }
    .fintree-head.is-groupe .soc-sel-type { display: none; }
    .grp-perim-puce .fintree-side-btn-lbl { display: none; }
}

/* La barre du hub en mode groupe : « Groupe Orvane · 3 sociétés · combiné » avant les exercices. */
.recap-grp { display: inline-flex; align-items: center; gap: 5px; font-weight: 700; color: var(--brand-strong); }
.recap-grp .iku-ico { width: 13px; height: 13px; }
.recap-ent { font-weight: 700; color: var(--color-text-primary, var(--tx1)); }
.recap-ent.is-groupe { font-weight: 600; color: var(--color-text-secondary); }
/*  Finitions (15/10) : deux blocs insécables (groupe · entité [Organigramme], puis exercices · comptes au) qui passent à la
    ligne ENTRE eux : jamais un « · » en fin de ligne. Hors groupe, le bloc s'efface (display: contents) : la barre d'avant.
    Le chrono (ornement) laisse sa place en mode groupe : les deux blocs tiennent alors sur deux lignes à 1440. */
.recap-bloc { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; max-width: 100%; }
.recap-bloc-non { display: contents; }
.recap-elapsed.is-groupe { display: none; }
.recap-ent-x { white-space: nowrap; }
@media (max-width: 520px) { .recap-bloc { flex-wrap: wrap; row-gap: 2px; } }
/*  Splice du groupe (16/10) : le bouton « Mettre à jour » (provisoire) chevauchait « Organigramme » et la pastille « Provisoire » à
    1440 px. Le récap descendait sous la largeur de son bloc le plus large (plancher de 260 px) et les blocs, insécables, débordaient
    sur les actions. En mode groupe, le plancher est ce bloc : quand il ne tient pas à côté des actions, ce sont elles qui passent à
    la ligne (calées à droite), et le récap prend la largeur. Entre 601 et 1 180 px, le récap d'un dossier seul tient sur une ligne
    coupée (hub-perso.css) : en mode groupe, les blocs passent à la ligne entre eux, jamais coupés. */
.recap-bar .recap-content.is-groupe { flex: 1 1 260px; min-width: min-content; }
.recap-bar .recap-content.is-groupe .recap-text { flex-wrap: wrap; overflow: visible; min-width: min-content; }
.recap-bar .recap-content.is-groupe ~ .recap-actions { margin-left: auto; }
@media (max-width: 600px) {
    .recap-bar .recap-content.is-groupe { flex: 1 1 180px; min-width: 0; }
    .recap-bar .recap-content.is-groupe .recap-text { min-width: 0; }
    .recap-bar .recap-content.is-groupe ~ .recap-actions { margin-left: 0; }
}

/* Sous-lignes d'entité */
.de-host {
    --de-ink: #aebfc7;
    --de-row: rgba(0, 0, 0, .20);
    --de-edge: color-mix(in srgb, var(--brand, #0bb3c9) 50%, transparent);
    --de-elim-ink: #d2bb82;
}
html[data-theme="light"] .de-host {
    --de-ink: #3d4f58;
    --de-row: rgba(15, 40, 55, .04);
    --de-edge: color-mix(in srgb, var(--brand, #0AACA5) 55%, transparent);
    --de-elim-ink: #7a5f18;
}
.de-host .ftt tbody tr.de-sub > td { background-color: var(--de-row); color: var(--de-ink); font-size: 10.5px; font-style: normal; font-weight: 400; font-variant-numeric: tabular-nums; }
.de-host .ftt tbody tr.de-sub > td.ftt-frozen {
    background-color: var(--ftt-frost, var(--ftt-surface, #fff));
    background-image: linear-gradient(var(--de-row), var(--de-row));
    box-shadow: inset 2px 0 0 var(--de-edge), inset -1px 0 0 var(--ftt-frost-edge, transparent),
                7px 0 9px -7px rgba(var(--shadow-col, 0 0 0), calc(.6 * var(--shadow-mul, 1)));
}
.de-host .ftt tbody tr.de-sub > td.is-annual { font-weight: 500; }
.de-host .ftt tbody tr.de-fin > td { border-bottom: 1px solid var(--ftt-line-soft, rgba(127, 127, 127, .25)); }
.de-host .ftt tbody tr.de-elim > td:not(.ftt-frozen) { color: var(--de-elim-ink); font-style: italic; }
.de-host .ftt tbody tr.de-adj > td:not(.ftt-frozen) { font-style: italic; }
.de-host .de-lbl {
    display: flex; align-items: center; gap: 6px; min-width: 0; max-width: 100%; padding: 0 0 0 12px; border: 0; background: none;
    font: inherit; color: var(--de-ink); text-align: left;
}
.de-host .de-lbl .iku-ico { flex: 0 0 auto; width: 11px; height: 11px; opacity: .75; }
.de-host .de-nom { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.de-host tr.de-elim .de-lbl { color: var(--de-elim-ink); font-style: italic; }
.de-host button.de-lien { cursor: pointer; }
.de-host button.de-lien:hover .de-nom { color: var(--brand-strong); text-decoration: underline; text-underline-offset: 2px; }
.de-host button.de-lien:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; border-radius: 3px; }
html[data-density="compact"] .de-host .ftt tbody tr.de-sub > td { padding-top: 0; padding-bottom: 0; }
@media (max-width: 767px) { .de-host .de-lbl { padding-left: 2px; } .de-host .de-lbl .iku-ico { display: none; } }

/* ═══════════════════════════════════════════════════════════════════════════════════════════════════
   ORGANIGRAMME JURIDIQUE DU GROUPE (2026-10-15, maquette validée par Arthur ; Shared/OrganigrammeGroupeVue, préfixe org-).
   Plein écran comme le reporting du groupe (sol --hx5). Vue LARGE : 1640 px au plus, gouttière de 16 px.
   Couleurs : jetons seulement. Les sociétés prennent les séries de la palette active (--serie-1 à 4, dans l'ordre du groupe) ;
   les catégories de flux, les séries 5 et 6 et le trait de marque (distincts des sociétés et entre eux, recalculés par ikuSeries),
   chacune avec son propre tiret ; la détention, le trait neutre ; l'EBITDA des mini-graphiques, le trait de marque.
   ═══════════════════════════════════════════════════════════════════════════════════════════════════ */
.org-back { position: fixed; inset: 0; z-index: 5100; display: flex; background: var(--hx5); }
.org-root {
    --org-fl-ventes: var(--serie-5); --org-fl-dividendes: var(--serie-6); --org-fl-financement: var(--serie-trait);
    --org-trait: var(--color-text-muted); --org-pos: var(--st-green); --org-neg: var(--st-red); --org-warn: var(--st-amber);
    --org-surf: var(--surf-1b); --org-surf-2: var(--o4); --org-line: var(--o12);
    /* Couleurs des entités (15/10) : la série n de la palette active (rang posé par OrganigrammeGroupe : 1, 2, 3, 4, 7) ; 0 = ajustements
       du groupe, teinte neutre et pointillés. En clair, voir le bloc @supports plus bas : même teinte qu'en sombre. */
    --org-ent-0: var(--color-text-muted);
    --org-ent-1: var(--serie-1); --org-ent-2: var(--serie-2); --org-ent-3: var(--serie-3); --org-ent-4: var(--serie-4); --org-ent-7: var(--serie-7);
    display: flex; flex-direction: column; width: 100%; min-height: 0; color: var(--tx1); font-size: 14px; line-height: 1.45;
}
/* Une société garde SA couleur d'un thème à l'autre : ikuSeries calcule les séries claires et sombres séparément (en Sobre, la
   série 3 était cyan en sombre et violette en clair). En clair, l'entité prend la teinte et la saturation de la série SOMBRE,
   luminosité retournée dans la bande claire (1,2 − l : 0,75 devient 0,45 et 0,55 devient 0,65) : la série vive sur fond sombre
   reste la plus contrastée sur fond clair, comme ikuSeries les range. */
@supports (color: oklch(from red calc(1.2 - l) c h)) {
    html[data-theme="light"] .org-root {
        --org-ent-1: oklch(from var(--serie-sombre-1, var(--serie-1)) calc(1.2 - l) c h);
        --org-ent-2: oklch(from var(--serie-sombre-2, var(--serie-2)) calc(1.2 - l) c h);
        --org-ent-3: oklch(from var(--serie-sombre-3, var(--serie-3)) calc(1.2 - l) c h);
        --org-ent-4: oklch(from var(--serie-sombre-4, var(--serie-4)) calc(1.2 - l) c h);
        --org-ent-7: oklch(from var(--serie-sombre-7, var(--serie-7)) calc(1.2 - l) c h);
    }
}
.org-hd { flex: 0 0 auto; display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px 12px; border-bottom: 1px solid var(--org-line); }
.org-hd-ic {
    flex: 0 0 auto; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 14%, transparent); border: 1px solid color-mix(in srgb, var(--brand) 28%, transparent);
}
.org-hd-ic .iku-ico { width: 22px; height: 22px; }
.org-hd-x { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1 1 auto; }
.org-eyebrow { align-self: flex-start; font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 12%, transparent); }
.org-t { margin: 0; font-size: 22px; font-weight: 800; letter-spacing: -.02em; line-height: 1.2; }
.org-hd-x small { font-size: 12.5px; line-height: 1.5; color: var(--color-text-muted); }
.org-hd-d { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; align-self: center; }
.org-x { flex: 0 0 auto; width: 32px; height: 32px; display: grid; place-items: center; border: 1px solid var(--org-line); border-radius: 8px; background: var(--o4); color: var(--color-text-secondary); cursor: pointer; }
.org-x:hover { color: var(--tx1); border-color: var(--brand-strong); }
.org-scen { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; border-radius: 999px; padding: 4px 12px; border: 1px solid var(--org-line); background: var(--o4); color: var(--color-text-secondary); white-space: nowrap; }
.org-scen.is-mod { padding: 3px 4px 3px 12px; border-color: color-mix(in srgb, var(--org-warn) 60%, transparent); color: var(--org-warn); }
.org-scen button { font: inherit; font-size: 12px; font-weight: 700; border: 0; border-radius: 999px; padding: 3px 10px; background: var(--o8); color: var(--tx1); cursor: pointer; }
.org-scen button:hover { background: color-mix(in srgb, var(--brand) 18%, transparent); }
/*  16/10 (scénarios de groupe, reco 3) : sur la base modifiée, « Enregistrer comme scénario de groupe » (le geste principal) et son nom. */
.org-scen button.is-pri { background: var(--brand); color: #04161d; }
.org-scen button.is-pri:hover { filter: brightness(1.06); background: var(--brand); }
.org-scen button:disabled { opacity: .5; cursor: default; }
.org-enr { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: flex-end; gap: 6px; flex: 1 1 100%; }
.org-enr label { display: grid; gap: 3px; font-size: 11.5px; font-weight: 700; color: var(--color-text-secondary); flex: 1 1 200px; max-width: 280px; }
.org-enr input { min-height: 32px; box-sizing: border-box; padding: 4px 10px; border-radius: 8px; border: 1px solid var(--org-line); background: var(--org-surf-2); color: var(--tx1); font: inherit; font-size: 13px; font-weight: 600; }
.org-enr input:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: 1px; }
.org-enr button { font: inherit; font-size: 12px; font-weight: 700; min-height: 32px; border-radius: 999px; padding: 4px 12px; border: 1px solid var(--org-line); background: var(--o4); color: var(--tx1); cursor: pointer; }
.org-enr .org-enr-ok { background: var(--brand); border-color: var(--brand); color: #04161d; }
.org-enr button:disabled { opacity: .5; cursor: default; }
@media (max-width: 640px) { .org-scen.is-mod { white-space: normal; flex-wrap: wrap; border-radius: 14px; padding: 6px 8px 6px 12px; } }
.org-occupe { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--color-text-muted); }
.org-spin { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--o12); border-top-color: var(--brand-strong); animation: org-tourne .8s linear infinite; }
@keyframes org-tourne { to { transform: rotate(360deg); } }

.org-corps { flex: 1 1 auto; min-height: 0; overflow: auto; }
.org-wrap { max-width: 1640px; margin: 0 auto; padding: 16px 16px 48px; display: grid; gap: 22px; }
.org-vide { margin: 40px 0; text-align: center; color: var(--color-text-muted); }
.org-num { font-variant-numeric: tabular-nums; }
.org-faint { color: var(--color-text-muted); font-weight: 600; }
.org-eyebrow-s { font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--color-text-muted); font-weight: 700; }
.org-note { margin: 0; font-size: 12px; line-height: 1.5; color: var(--color-text-secondary); }
.org-note p { margin: 0 0 6px; }

/* ── Tuiles ── */
.org-tuiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
.org-tuile { display: grid; gap: 2px; padding: 12px 14px; border-radius: 12px; background: var(--org-surf); border: 1px solid var(--org-line); min-width: 0; }
.org-tuile b { font-size: 20px; font-weight: 750; }
.org-tuile-s { font-size: 12px; color: var(--color-text-secondary); }
.org-dl { font-size: 11.5px; font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.org-dl.is-up { color: var(--org-pos); }
.org-dl.is-down { color: var(--org-neg); }

/* ── Deux colonnes : organigramme (2/3), panneau (1/3, collant) ── */
.org-main { display: grid; grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr); gap: 20px; align-items: start; }
.org-zone { position: relative; display: grid; gap: 0; min-width: 0; }
.org-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; z-index: 0; }
.org-lbls { position: absolute; inset: 0; pointer-events: none; z-index: 3; }
.org-rangee { position: relative; z-index: 1; display: grid; gap: 92px clamp(28px, 5vw, 88px); justify-items: center; align-items: start; }
.org-rangee + .org-rangee { margin-top: 128px; }
.org-rangee.is-tete { grid-template-columns: minmax(0, 560px); justify-content: center; }
.org-rangee.org-n2:not(.is-tete) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.org-rangee.org-n3:not(.is-tete) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.org-rangee.org-n1:not(.is-tete) { grid-template-columns: minmax(0, 560px); justify-content: center; }
.org-rangee.is-autonomes { margin-top: 18px; }
.org-sanslien { margin-bottom: 14px; padding: 10px 12px; border-radius: 10px; border: 1px dashed var(--org-line); }
.org-autonomes-t { margin-top: 48px; font-weight: 700; }
.org-branche { display: grid; justify-items: center; gap: 12px; width: 100%; min-width: 0; }

/* ── 16/10 (Arthur) : « Organigramme │ Groupe combiné », en haut à gauche de la zone, collé en haut au défilement. Dans le flux, au-dessus
   des cartes : le coin libre à côté de la carte de tête (zone plafonnée à ~1 060 px par .org-wrap) est plus étroit que le sélecteur. ── */
.org-mode { position: sticky; top: 8px; z-index: 4; display: flex; margin-bottom: 14px; }
.org-seg.org-mode-seg { flex: 0 0 auto; flex-wrap: nowrap; padding: 3px; border-radius: 10px; background: var(--org-surf); border: 1px solid var(--org-line);
    box-shadow: 0 2px 8px rgba(var(--shadow-col), calc(.16 * var(--shadow-mul))); }
.org-mode-seg button { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.org-seg.org-mode-seg button[aria-pressed="true"] { background: color-mix(in srgb, var(--brand) 16%, var(--org-surf)); color: var(--brand-strong); }
.org-mode-dot { width: 9px; height: 9px; border-radius: 2px; background: var(--brand); flex: none; }
.org-zone.is-combine .org-svg, .org-zone.is-combine .org-lbls { display: none; }
.org-rangee.is-tete.is-combine { grid-template-columns: minmax(0, 820px); }
.org-carte.is-combine { max-width: 820px; border-color: color-mix(in srgb, var(--brand) 45%, var(--org-line)); }
.org-carte.is-combine .org-carte-h { cursor: default; }
.org-carte.is-combine .org-carte-h:hover { background: none; }

/* ── Détention (trait plein) et flux (pointillés) ── */
.org-det { stroke: var(--org-trait); stroke-width: 2.2; fill: none; }
.org-det-pt { fill: var(--org-trait); }
.org-fl { stroke-width: 1.8; transition: opacity .15s; }
.org-fl.is-zero { stroke-width: 1; opacity: .45; }
.org-fl-ventes { stroke: var(--org-fl-ventes); stroke-dasharray: 5 4; }
.org-fl-dividendes { stroke: var(--org-fl-dividendes); stroke-dasharray: 9 4; }
.org-fl-financement { stroke: var(--org-fl-financement); stroke-dasharray: 2 4; stroke-linecap: round; }
.org-svg.is-focus .org-fl { opacity: .12; }
.org-svg.is-focus .org-fl.is-on { opacity: 1; stroke-width: 2.4; }
.org-lbl {
    position: absolute; transform: translate(-50%, -50%); display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; pointer-events: auto; cursor: default;
    background: var(--org-surf); border: 1px solid currentColor; border-radius: 999px; padding: 2px 8px; font-size: 11px; font-weight: 700;
    box-shadow: 0 1px 3px rgba(var(--shadow-col), calc(.18 * var(--shadow-mul))); transition: opacity .15s;
}
.org-lbl b { font-weight: 650; color: var(--tx1); font-variant-numeric: tabular-nums; }
.org-lbl-t { color: var(--color-text-secondary); font-weight: 600; }
.org-lbl.is-v { max-width: 104px; white-space: normal; text-align: center; justify-content: center; flex-wrap: wrap; line-height: 1.2; border-radius: 10px; }
.org-root.is-fl-focus .org-lbl:not(.is-on) { opacity: .25; }
.org-pct {
    position: relative; z-index: 2; display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px 3px 10px; border-radius: 999px;
    background: var(--org-surf); border: 1.5px solid var(--org-trait); font-size: 12px; font-weight: 700; color: var(--color-text-secondary);
}
.org-pct input { width: 46px; border: 0; background: transparent; color: var(--tx1); font: inherit; font-weight: 700; text-align: right; padding: 2px 0; }
.org-pct input:focus { outline: 2px solid var(--brand-strong); outline-offset: 2px; border-radius: 4px; }

/* ── Carte d'une société ── */
.org-carte {
    width: 100%; max-width: 560px; min-width: 0; display: grid; overflow: hidden; border-radius: 14px;
    background: var(--org-surf); border: 1px solid var(--org-line); transition: box-shadow .15s;
}
.org-carte.is-sel { outline: 2px solid var(--brand-strong); outline-offset: 3px; }
.org-carte.is-hl { box-shadow: 0 0 0 2px var(--org-hlc, var(--brand-strong)); }
.org-carte.is-hors { opacity: .72; border-style: dashed; }
.org-carte-h { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 14px 16px 10px; cursor: pointer; }
.org-carte-h:hover { background: var(--o4); }
.org-carte-h:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: -2px; }
.org-dot { width: 12px; height: 12px; border-radius: 3px; background: var(--org-c, var(--serie-1)); flex: none; }
.org-dot.is-ajust { background: transparent; border: 1.5px dashed var(--org-ent-0); }
.org-carte-t { display: grid; gap: 2px; min-width: 0; }
.org-nom { font-weight: 800; font-size: 15px; overflow-wrap: anywhere; }
.org-meta { font-size: 12px; color: var(--color-text-muted); }
.org-carte-d { display: grid; justify-items: end; gap: 3px; }
.org-chip { font-size: 11px; font-weight: 700; border-radius: 999px; padding: 2px 9px; white-space: nowrap; color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 13%, transparent); }
.org-chip.is-hors { color: var(--color-text-muted); background: var(--o8); }
.org-chip.is-liee { color: var(--color-text-muted); background: var(--o8); }
.org-hcount { font-size: 11px; font-weight: 700; color: var(--color-text-muted); white-space: nowrap; }
.org-hcount.is-mod { color: var(--org-warn); }
.org-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; background: var(--org-line); border-block: 1px solid var(--org-line); }
.org-rangee.org-n3 .org-kpis, .org-rangee.org-n2:not(.is-tete) .org-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.org-kpi { display: grid; gap: 1px; padding: 9px 12px; min-width: 0; background: var(--org-surf); }
.org-kpi-l { font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--color-text-muted); font-weight: 700; }
.org-kpi-v { font-size: 15px; font-weight: 650; }
.org-kpi-d { font-size: 11px; color: var(--color-text-secondary); min-height: 1.3em; }
.org-spark { padding: 10px 14px 4px; }
.org-spark:last-child { padding-bottom: 12px; }   /* vue Chiffres clés : le mini-graphique ferme la carte, ses années ne touchent pas le bord */
.org-spark svg { display: block; overflow: visible; }
.org-sp-base { stroke: var(--org-line); }
.org-sp-ca { fill: var(--org-c, var(--serie-1)); opacity: .85; }
.org-sp-ca.is-p { opacity: .45; }
.org-sp-eb { stroke: var(--serie-trait); stroke-width: 1.6; }
.org-sp-pt { fill: var(--org-surf); stroke: var(--serie-trait); stroke-width: 1.4; }
.org-sp-an { font-size: 10px; fill: var(--color-text-muted); font-variant-numeric: tabular-nums; }
/*  16/10 (Arthur : « on ne sait pas ce qu'on lit ») : légende du mini-graphique et zone de survol par exercice (bulle data-tip). */
.org-sp-leg { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px 12px; margin: 0 0 2px; font-size: 10.5px; color: var(--color-text-secondary); }
.org-sp-leg span { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.org-sp-leg i { display: inline-block; flex: 0 0 auto; }
.org-sw-ca { width: 9px; height: 9px; border-radius: 2px; background: var(--org-c, var(--serie-1)); opacity: .85; }
.org-sw-p { width: 9px; height: 9px; border-radius: 2px; background: var(--org-c, var(--serie-1)); opacity: .45; }
.org-sw-eb { width: 14px; height: 2px; border-radius: 1px; background: var(--serie-trait); position: relative; }
.org-sw-eb::after { content: ""; position: absolute; left: 4px; top: -2.5px; width: 5px; height: 5px; border-radius: 50%; box-sizing: border-box; background: var(--org-surf); border: 1.4px solid var(--serie-trait); }
.org-sp-hit { fill: transparent; cursor: default; }
.org-sp-hit:hover { fill: color-mix(in srgb, var(--color-text-primary) 6%, transparent); }
/*  Jauge de la marge d'EBITDA (16/10) : la piste = 100 % du CA, le plein = l'EBITDA ; négative en rouge. */
.org-jauge { display: block; position: relative; height: 4px; margin-top: 4px; border-radius: 2px; overflow: hidden; background: color-mix(in srgb, var(--color-text-primary) 10%, transparent); }
.org-jauge > span { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 2px; background: var(--org-c, var(--serie-1)); }
.org-tuile .org-jauge > span { background: var(--serie-1); }
.org-jauge.is-neg > span { background: var(--color-danger, #d64545); }
.org-panel { padding: 12px 14px 14px; display: grid; gap: 10px; border-top: 1px solid var(--org-line); }
.org-tbl-wrap { overflow-x: auto; }
.org-tbl { border-collapse: collapse; width: 100%; font-size: 11.5px; }
.org-tbl th, .org-tbl td { padding: 4px 5px; text-align: right; white-space: nowrap; }
.org-tbl th:first-child { text-align: left; white-space: normal; font-weight: 600; }
.org-tbl thead th { font-size: 11px; color: var(--color-text-muted); font-weight: 700; border-bottom: 1px solid var(--org-line); }
.org-tbl thead th.is-p { color: var(--brand-strong); }
.org-tbl td.is-p { background: color-mix(in srgb, var(--brand) 7%, transparent); }
.org-tbl tr.is-tot th, .org-tbl tr.is-tot td { font-weight: 750; border-top: 1px solid var(--org-line); }
.org-tbl tr.is-sub th, .org-tbl tr.is-sub td { color: var(--color-text-muted); font-size: 11px; font-weight: 500; }
.org-valo { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.org-valo-b { display: grid; gap: 2px; padding: 8px 10px; border-radius: 8px; background: var(--o4); min-width: 0; }
.org-valo-b b { font-size: 15px; font-weight: 700; }

/* ── Panneau de droite ── */
.org-side {
    position: sticky; top: 0; display: grid; max-height: calc(100vh - 110px); overflow: auto; border-radius: 14px;
    background: var(--org-surf); border: 1px solid var(--org-line);
}
.org-side-sec { border-bottom: 1px solid var(--org-line); }
.org-side-sec:last-child { border-bottom: 0; }
.org-side-h, .org-ent-h {
    width: 100%; display: flex; align-items: center; gap: 8px; padding: 13px 16px; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer;
}
.org-side-h:hover { background: var(--o4); }
.org-side-h:focus-visible, .org-ent-h:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: -2px; }
.org-chev { width: 7px; height: 7px; flex: none; border-right: 2px solid var(--color-text-muted); border-bottom: 2px solid var(--color-text-muted); transform: rotate(-45deg); transition: transform .15s; }
.is-open > .org-side-h .org-chev, .is-open > .org-ent-h .org-chev { transform: rotate(45deg); }
.org-side-sum { margin-left: auto; font-size: 11.5px; font-weight: 600; color: var(--color-text-secondary); text-align: right; }
.org-side-b { padding: 0 16px 14px; }
.org-corps-sec { display: grid; gap: 10px; }
.org-seg { display: flex; flex-wrap: wrap; gap: 2px; padding: 2px; border-radius: 8px; background: var(--o8); }
.org-seg button { flex: 1 1 auto; border: 0; background: transparent; padding: 5px 10px; border-radius: 6px; font: inherit; font-size: 12px; font-weight: 700; color: var(--color-text-secondary); cursor: pointer; }
.org-seg button[aria-pressed="true"] { background: var(--org-surf); color: var(--tx1); box-shadow: 0 1px 2px rgba(var(--shadow-col), calc(.2 * var(--shadow-mul))); }
.org-seg button:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: 1px; }
.org-flux-row { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; gap: 8px; align-items: center; font-size: 12.5px; }
.org-flux-row.is-off { opacity: .45; }
.org-flux-tt { font-weight: 700; color: var(--tx1); }
.org-flux-l { color: var(--tx1); font-weight: 600; }
.org-fl-ligne { display: inline-block; width: 20px; height: 0; border-top: 2px dashed currentColor; }
.org-fl-ligne-dividendes { border-top-style: solid; border-image: repeating-linear-gradient(90deg, currentColor 0 9px, transparent 9px 13px) 2; }
.org-fl-ligne-financement { border-top-style: dotted; }
.org-fl-pt { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: 0; }
.org-flux-list { display: grid; gap: 3px; font-size: 12px; color: var(--color-text-secondary); }
.org-flux-it { display: flex; justify-content: space-between; gap: 8px; padding: 2px 4px; margin-inline: -4px; border-radius: 6px; }
.org-flux-it:hover, .org-flux-it.is-on, .org-flux-it:focus-visible { background: var(--o8); outline: none; }
.org-flux-it b { color: var(--tx1); font-weight: 650; white-space: nowrap; }
.org-sw { position: relative; width: 38px; height: 22px; flex: none; border-radius: 999px; border: 0; padding: 0; background: var(--o12); cursor: pointer; transition: background .15s; }
.org-sw::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: var(--color-text-muted); transition: transform .15s; }
.org-sw[aria-checked="true"] { background: var(--brand-strong); }
.org-sw[aria-checked="true"]::after { transform: translateX(16px); background: var(--surf-1); }
.org-sw:disabled { opacity: .5; cursor: default; }
.org-sw:focus-visible { outline: 2px solid var(--brand-strong); outline-offset: 2px; }
.org-reset { justify-self: start; border: 1px solid var(--org-line); background: transparent; border-radius: 8px; padding: 6px 10px; font: inherit; font-size: 12px; font-weight: 700; color: var(--color-text-secondary); cursor: pointer; }
.org-reset:hover { border-color: var(--brand-strong); color: var(--tx1); }
.org-ent { border-top: 1px solid var(--org-line); }
.org-ent-h { padding: 9px 0; font-weight: 800; font-size: 13px; }
.org-ent-n { min-width: 0; overflow-wrap: anywhere; }
.org-ent-c { margin-left: auto; font-size: 11px; font-weight: 700; color: var(--color-text-muted); white-space: nowrap; }
.org-ent-c.is-mod { color: var(--org-warn); }
.org-ent-b { display: grid; gap: 6px; padding: 0 0 10px 2px; }
.org-cat { display: grid; gap: 4px; }
.org-cat h4 { margin: 6px 0 0; font-size: 10.5px; letter-spacing: .07em; text-transform: uppercase; color: var(--color-text-muted); }
.org-hyp { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 8px 10px; border-radius: 8px; border: 1px solid var(--org-line); }
.org-hyp.is-off { opacity: .62; }
.org-hyp.is-mod { border-color: color-mix(in srgb, var(--org-warn) 55%, transparent); }
.org-hyp-l { font-size: 13px; font-weight: 600; overflow-wrap: anywhere; }
.org-hyp-e { font-size: 11.5px; color: var(--color-text-secondary); }

/* ── Sections du bas ── */
.org-sec { display: grid; gap: 14px; padding: 16px; border-radius: 14px; background: var(--org-surf); border: 1px solid var(--org-line); }
.org-sec h3 { margin: 2px 0 0; font-size: 17px; font-weight: 750; }
.org-sec-h { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; }
.org-sec-ctrl { display: flex; flex-wrap: wrap; gap: 8px; }
.org-sec-ctrl .org-seg { flex-wrap: nowrap; }
.org-gap { font-size: 13px; }
.org-gap .is-pos { color: var(--org-pos); }
.org-gap .is-neg { color: var(--org-neg); }
.org-two { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; }
.org-bars { display: grid; gap: 8px; }
.org-brow { display: grid; grid-template-columns: 170px minmax(0, 1fr) 100px; gap: 10px; align-items: center; }
.org-brow.is-hors { opacity: .6; }
.org-brow.is-total { border-top: 1px solid var(--org-line); padding-top: 8px; }
.org-brow-n { font-size: 13px; font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.org-brow-v { text-align: right; font-weight: 650; }
.org-track { height: 18px; border-radius: 5px; overflow: hidden; display: flex; background: var(--o4); }
.org-track span { height: 100%; }
.org-track span.is-neg { opacity: .5; }
.org-track span.is-elim { background: var(--color-text-muted); }
.org-track span.is-ajust { background: repeating-linear-gradient(135deg, var(--org-ent-0) 0 4px, transparent 4px 7px) !important; box-shadow: inset 0 0 0 1px var(--org-ent-0); }
.org-legende { display: flex; flex-wrap: wrap; gap: 12px; font-size: 12px; color: var(--color-text-secondary); }
.org-legende i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: -1px; }

/* ── Barres du hub et du pilotage : la porte de l'organigramme ── */
.recap-org {
    display: inline-flex; align-items: center; gap: 5px; margin-left: 6px; padding: 2px 9px; border-radius: 999px; font: inherit; font-size: 12px; font-weight: 700;
    color: var(--brand-strong); background: color-mix(in srgb, var(--brand) 12%, transparent); border: 1px solid color-mix(in srgb, var(--brand) 26%, transparent); cursor: pointer;
}
.recap-org:hover { background: color-mix(in srgb, var(--brand) 20%, transparent); }

/* ── Petits écrans ── */
@media (max-width: 1000px) {
    .org-main { grid-template-columns: minmax(0, 1fr); }
    .org-side { position: static; max-height: none; order: -1; }
}
@media (max-width: 760px) {
    .org-svg, .org-lbls { display: none; }
    .org-rangee, .org-rangee.org-n2:not(.is-tete), .org-rangee.org-n3:not(.is-tete) { grid-template-columns: minmax(0, 1fr); gap: 16px; }
    .org-rangee + .org-rangee { margin-top: 16px; }
    .org-kpis, .org-rangee.org-n3 .org-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .org-valo, .org-two { grid-template-columns: minmax(0, 1fr); }
    .org-brow { grid-template-columns: 110px minmax(0, 1fr) 84px; }
    .org-hd { flex-wrap: wrap; } .org-hd-ic { display: none; } .org-hd-x { flex: 1 1 0; } .org-x { order: 2; }
    .org-hd-d { order: 3; width: 100%; justify-content: flex-start; }
    .org-t { font-size: 19px; }
    .org-eyebrow { text-wrap: balance; border-radius: 10px; }   /* deux lignes équilibrées, pas l'année seule en dessous */
    .org-tuiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .org-tuile:last-child:nth-child(odd) { grid-column: 1 / -1; }
    .org-sec-ctrl .org-seg { flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) { .org-sw, .org-sw::after, .org-chev, .org-fl, .org-lbl { transition: none; } .org-spin { animation: none; } }
html[data-motion="reduites"] .org-sw, html[data-motion="reduites"] .org-sw::after { transition: none; }

/* ── Valeur transitoire (2026-10-15) : pendant la préparation des sociétés, ce qui vient d'une projection ou d'une valorisation
   dit « en préparation », sans chiffre (FecLoader.Societes.cs, GroupeEnPreparation). Un point qui respire, rien de plus. ── */
.grp-attente { display: flex; align-items: center; gap: 8px; color: var(--color-text-muted); font-size: .86rem; line-height: 1.4; }
.grp-attente-pt { flex: 0 0 auto; width: 7px; height: 7px; border-radius: 50%; background: var(--brand); opacity: .55; animation: grp-respire 1.6s ease-in-out infinite; }
.grp-attente-vue { justify-content: center; padding: 40px 16px; font-size: .95rem; }
@keyframes grp-respire { 0%, 100% { opacity: .25; transform: scale(.8); } 50% { opacity: .8; transform: scale(1); } }
@media (prefers-reduced-motion: reduce) { .grp-attente-pt { animation: none; } }

/* ── « Ces FEC concernent n sociétés : les analyser en groupe ? » (2026-10-15) : posée sur le fond de la fenêtre du groupe ── */
.dzg-dlg {
    width: min(560px, 100%); max-height: 100%; overflow: auto; padding: 18px 20px 16px; border-radius: 16px; border: 1px solid var(--o12);
    /*  La surface du thème clair est translucide : posée sur un fond plein, sinon l'accueil se lisait au travers. */
    background-image:
        radial-gradient(700px 220px at 0% 0%, color-mix(in srgb, var(--brand) 10%, transparent), transparent 70%),
        linear-gradient(var(--color-bg-surface, transparent), var(--color-bg-surface, transparent));
    background-color: #0d1b24;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .46);
}
html[data-theme="light"] .dzg-dlg { background-color: #f5f9fb; }
.dzg-dlg h2 { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; font-size: 16px; font-weight: 800; color: var(--color-text-primary); }
.dzg-dlg h2 .iku-ico { flex: none; color: var(--brand-strong); }
.dzg-sub { margin: 0 0 12px; font-size: 13px; line-height: 1.5; color: var(--color-text-secondary); }
.dzg-socs { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 6px; }
.dzg-socs li { display: grid; grid-template-columns: auto 1fr; gap: 10px; padding: 7px 10px; border-radius: 9px; background: var(--o4); font-size: 12.5px; }
.dzg-socs li b { color: var(--color-text-primary); white-space: nowrap; }
.dzg-socs li span { color: var(--color-text-muted); overflow-wrap: anywhere; }
.dzg-ft { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.dzg-non, .dzg-oui { padding: 9px 14px; border-radius: 10px; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.dzg-non { border: 1px solid var(--o12); background: transparent; color: var(--color-text-secondary); }
.dzg-oui { border: 0; color: #fff; background: linear-gradient(135deg, var(--brand-strong), var(--brand2-strong, var(--brand2))); }
.dzg-non:disabled, .dzg-oui:disabled { opacity: .55; cursor: default; }

/*  SPLICE DU GROUPE (2026-10-16) : « Mettre à jour » une société du groupe ouvert (fenêtre du groupe), le réel de chaque société
    (bandeau du hub). */
.grp-maj { display: flex; flex-direction: column; gap: 8px; padding: 11px 13px; border-radius: 12px; border: 1px solid var(--o12); background: var(--o4); }
.grp-maj-hd { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; font-size: 13px; color: var(--tx1); }
.grp-maj-hd .iku-ico { color: var(--brand); align-self: center; }
.grp-maj-hd small { flex-basis: 100%; font-size: 12px; line-height: 1.45; color: var(--color-text-secondary); }
.grp-maj-l { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.grp-maj-l li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.grp-maj-n { font-size: 13px; font-weight: 700; color: var(--tx1); }
.grp-maj-r { font-size: 12px; color: var(--color-text-muted); font-variant-numeric: tabular-nums; }
.grp-maj-b {
    margin-left: auto; display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: 9px; font: inherit; font-size: 12.5px; font-weight: 700;
    border: 1px solid var(--o12); background: transparent; color: var(--tx1); cursor: pointer;
}
.grp-maj-b:hover:not(:disabled) { border-color: var(--brand-strong); }
.grp-maj-b:disabled { opacity: .55; cursor: default; }
.grp-arrets { margin: 6px 0 0; font-size: 12px; line-height: 1.45; color: var(--color-text-secondary); }
.grp-bandeau-reel { color: var(--color-text-secondary); }
