/* Flash messages */
.scc-flash-region{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
/* Pages d'administration : les flashs suivent la largeur de la colonne de contenu (g4-15). */
.scc-main:has(>.scc-admin-page)>.scc-flash-region{max-width:1080px}
.scc-flash{padding:10px 16px;border-radius:var(--scc-r-input);font-size:13.5px;font-weight:500;line-height:1.5;border:1px solid transparent}
.scc-flash-error{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.scc-flash-success{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.scc-flash-warning{background:#fffbeb;border-color:#fde68a;color:#92400e}
/* Information (C-09, g3-14) : remplace .alert-info hérité de base.html.twig. */
.scc-flash-info{background:var(--scc-accent-soft);border-color:var(--scc-border);color:var(--scc-accent-dark)}

.scc-dot{width:7px;height:7px;border-radius:50%;display:inline-block;background:var(--c,currentColor);margin-right:5px;vertical-align:middle}
.scc-chip-sev{display:inline-flex;align-items:center;font-size:12px;font-weight:600;color:var(--c)}
.scc-chip-status{display:inline-flex;align-items:center;gap:0;font-size:11.5px;font-weight:600;padding:2px 8px;border:0;border-radius:var(--scc-r-pill)}
/* Étiquette conforme (C-07, DS §4) : pastille de couleur + texte, ni fond ni bordure. Couleurs par
   propriétés : --c pour la pastille, --tc pour le texte (variante contrastée ; défaut --text2).
   --caps : petites capitales colorées sans pastille (maquette Alertes) ; --muted : neutre. */
.scc-tag{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;color:var(--tc,var(--scc-text2))}
.scc-tag::before{content:"";width:7px;height:7px;border-radius:50%;flex:none;background:var(--c,var(--scc-muted2))}
.scc-tag--caps{font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--tc,var(--c,var(--scc-muted2)))}
.scc-tag--caps::before{display:none}
.scc-tag--muted{--c:var(--scc-muted2);--tc:var(--scc-muted2)}
.scc-exploited{display:inline-flex;align-items:center;font-size:12px;font-weight:600;color:#b91c1c}
.scc-dot-pulse{width:7px;height:7px;border-radius:50%;background:#dc2626;margin-right:5px;display:inline-block;animation:scc-pulse 1.6s infinite}
.scc-ring{position:relative;display:inline-flex;align-items:center;justify-content:center}
.scc-ring-val{position:absolute;font-weight:600;font-size:18px}
.scc-ring-label{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.scc-grade{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:6px;font-size:12px;font-weight:700}
.scc-grade-full{min-width:0;height:auto;padding:2px 9px;border-radius:7px;font-size:13px;font-weight:600}
/* Indicateur (g1-03, maquette) : libellé 12,5 px, valeur Mono 30 px / -1px et sous-libellé sur la même
   ligne, alignés en bas ; un second sous-libellé ou un bloc noyau passe sur sa propre ligne. */
.scc-kpi{padding:18px 20px;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;align-items:end;align-content:start}
.scc-kpi>*{grid-column:1 / -1}
.scc-kpi>.scc-kpi-value{grid-column:1}
.scc-kpi>.scc-kpi-value+.scc-kpi-sub{grid-column:2;margin:0 0 6px}
.scc-kpi-label{font-size:12.5px;color:var(--scc-muted);font-weight:500;margin-bottom:10px}
.scc-kpi-value{font-size:30px;font-weight:600;letter-spacing:-1px;line-height:1.25;color:var(--scc-text)}
/* Valeur textuelle (« En panne », « En ligne ») : Sans 20 px, même hauteur de ligne que le chiffre
   (37,5 px) pour garder la rangée de KPI alignée ; 20 px / 600 reste un « grand texte » (≥ 3:1). */
.scc-kpi-value--text{font-size:20px;letter-spacing:-.2px;line-height:37.5px}
.scc-kpi-core{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:var(--scc-text);margin-top:8px;white-space:nowrap}
.scc-kpi-core-from{color:var(--scc-text3)}
.scc-kpi-core-to{color:#15803d}
.scc-kpi-sub{font-size:12px;color:var(--scc-muted);margin-top:2px}
.scc-progress{height:6px;border-radius:4px;background:var(--scc-chip);overflow:hidden}
.scc-progress-fill{height:100%;background:var(--scc-accent);border-radius:4px}
.scc-segs{display:flex;gap:6px;height:6px;margin:15px 0 4px}
.scc-seg{border-radius:3px;min-width:6px}
.scc-spark{display:block}
.scc-toggle{display:inline-flex;align-items:center;width:40px;height:23px;border-radius:999px;background:var(--scc-chip);padding:2px;transition:background .2s}
.scc-toggle.is-on{background:var(--scc-accent)}
.scc-toggle-knob{width:19px;height:19px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.scc-toggle.is-on .scc-toggle-knob{transform:translateX(17px)}
.scc-ver{font-size:12.5px;color:var(--scc-muted)}
.scc-ver-arrow{color:var(--scc-muted2)}
.scc-ver-fixed{color:#15803d;font-weight:600}
/* Puce d'environnement (C-14) : production au jeton --scc-text3, pré-production et développement aux
   teintes d'env_meta (SentinelleExtension, lue aussi par le PDF ; égalité gardée par
   DesignBricksMacroTest). Plus de couleur en ligne (lot design 2). */
.scc-chip-env{font-size:10.5px;font-weight:700;letter-spacing:.4px;white-space:nowrap;color:var(--scc-text3)}
.scc-chip-env.is-preprod{color:#b45309}
.scc-chip-env.is-dev{color:#0e7490}
.scc-chip-mini{display:inline-flex;align-items:center;font-size:12px;font-weight:500}
.scc-chevron{color:var(--scc-muted2)}
.scc-tl-item{display:flex;align-items:flex-start;gap:10px;padding:8px 0}
.scc-tl-dot{width:9px;height:9px;border-radius:50%;background:var(--scc-accent);margin-top:4px;flex:none}
.scc-tl-body{flex:1;min-width:0}
.scc-tl-kind{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted)}
.scc-tl-text{font-size:13.5px;color:var(--scc-text2)}
.scc-tl-date{font-size:12px;color:var(--scc-muted);margin-left:auto}
.scc-tab[data-tab]{cursor:pointer}
.scc-tl-sub{font-size:13px;margin:0 0 16px}
.scc-tl-card{padding:8px 24px}
.scc-tl-row{display:flex;gap:16px;padding:15px 0;border-bottom:1px solid var(--scc-border)}
.scc-tl-row:last-child{border-bottom:none}
.scc-tl-row-dot{width:11px;height:11px;border-radius:50%;margin-top:3px;flex:none}
.scc-tl-row-body{flex:1;min-width:0;overflow-wrap:anywhere}
.scc-tl-row-kind{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted2);margin-bottom:2px}
.scc-tl-row-text{font-size:13.5px;color:var(--scc-text2);line-height:1.5}
.scc-tl-row-when{font-size:12px;color:var(--scc-muted2);white-space:nowrap;flex:none}
/* Ligne du Journal d'audit (C-12, g3-01) : même rythme que .scc-tl-row (maquette isAudit) ; le texte
   se coupe n'importe où (une adresse d'acteur ne passe plus sous la date) ; la date passe sur sa
   ligne sous 640 px (responsive.css). Conteneur : .scc-card.scc-tl-card. */
.scc-audit-item{display:flex;gap:16px;padding:15px 0;border-bottom:1px solid var(--scc-border)}
.scc-audit-item:last-child{border-bottom:none}
.scc-audit-dot{width:10px;height:10px;border-radius:50%;margin-top:6px;flex:none;background:var(--scc-muted2)}
.scc-audit-text{flex:1;min-width:0;font-size:14px;line-height:1.5;color:var(--scc-text2);overflow-wrap:anywhere}
.scc-audit-item strong{font-weight:600;overflow-wrap:anywhere}
.scc-audit-when{flex:none;font-size:12px;color:var(--scc-muted2);white-space:nowrap}
/* Ligne d'échéance (C-12, g1-24, g1-25) : pastille, corps, bloc date à droite ; sous 640 px le bloc
   date passe sous le texte, aligné sur le titre (responsive.css). Conteneur : .scc-card, padding 0. */
.scc-deadline-row{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:flex-start;padding:12px 16px}
.scc-deadline-row+.scc-deadline-row{border-top:1px solid var(--scc-border)}
.scc-deadline-dot{width:8px;height:8px;border-radius:50%;margin-top:7px;flex:none;background:var(--c,var(--scc-muted2))}
.scc-deadline-body{flex:1 1 260px;min-width:0;overflow-wrap:anywhere}
.scc-deadline-title{font-weight:600;color:var(--scc-text)}
.scc-deadline-meta{margin-top:2px;font-size:13px;color:var(--scc-muted)}
.scc-deadline-date{flex:0 0 auto;text-align:right;font-size:12px;color:var(--scc-muted)}
.scc-deadline-date .scc-mono{font-size:14px;font-weight:600;color:var(--scc-text)}
.scc-tl-more,.scc-tl-empty{font-size:12.5px;padding:14px 0}
.scc-tl-pager{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:14px 0 2px;font-size:12.5px}
.scc-sec-head{margin-bottom:12px}
.scc-nav-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;font-size:13.5px;font-weight:500;color:var(--scc-text3)}
.scc-nav-item.is-active{background:var(--scc-accent-soft);color:var(--scc-accent-dark);font-weight:600}
/* Badge de navigation (C-04, g1-07) : texte en variante foncée #b91c1c (5,9:1 sur #fef2f2 ; #dc2626
   n'en faisait que 4,41). Variantes posées par nav_item (V0b) : neutre pour Remédiation (des tickets,
   pas des failles critiques, g1-19), ambre pour les Alertes (maquette). */
.scc-nav-badge{margin-left:auto;font-size:11px;font-weight:700;color:#b91c1c;background:#fef2f2;border-radius:999px;padding:1px 7px;font-family:'IBM Plex Mono',monospace}
.scc-nav-badge.is-neutral{color:var(--scc-text3);background:var(--scc-chip)}
.scc-nav-badge.is-warning{color:#b45309;background:#fffbeb}
.scc-nav-item.is-disabled{color:var(--scc-muted2);cursor:default}
.scc-soon{margin-left:auto;font-style:normal;font-size:10.5px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;color:var(--scc-muted2);background:var(--scc-chip);border-radius:var(--scc-r-pill);padding:1px 6px}
/* ── Chrome applicatif (sidebar + header) ── */
.scc-app{position:fixed;inset:0;display:grid;grid-template-columns:var(--scc-sidebar-w) 1fr;background:var(--scc-bg)}
.scc-sidebar{width:var(--scc-sidebar-w);background:var(--scc-surface);border-right:1px solid var(--scc-border);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:16px 12px;overflow-y:auto}
.scc-brand{display:flex;align-items:center;gap:10px;padding:6px 8px 14px;border-bottom:1px solid var(--scc-border);margin-bottom:12px}
.scc-brand-logo{width:30px;height:30px;border-radius:8px;background:var(--scc-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex:none}
.scc-brand-name{font-size:14.5px;font-weight:600;color:var(--scc-text);line-height:1.2}
.scc-brand-sub{font-size:12px;color:var(--scc-muted)}
.scc-nav-group{margin-bottom:14px}
.scc-nav-group-label{font-size:10.5px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--scc-muted);padding:4px 10px;margin-bottom:2px}
.scc-nav-group a{display:block}
.scc-sidebar-foot{margin-top:auto;padding:12px 10px 6px}
.scc-sidebar-note{border:1px solid var(--scc-border);background:var(--scc-surf2);border-radius:var(--scc-r-card);padding:10px 12px}
.scc-sidebar-note-text{font-size:12.5px;color:var(--scc-text2);margin-top:3px}
.scc-app-main{display:flex;flex-direction:column;min-width:0;height:100vh;overflow-y:auto}
.scc-header{height:var(--scc-header-h);flex:none;position:sticky;top:0;z-index:20;background:var(--scc-surface);backdrop-filter:blur(8px);border-bottom:1px solid var(--scc-border);display:flex;align-items:center;gap:18px;padding:0 28px}
.scc-profile{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--scc-text2)}
.scc-profile-sep{color:var(--scc-muted2)}
.scc-profile a{color:var(--scc-accent);font-weight:500}
.scc-main{padding:26px 32px 56px}
/* Enveloppe d'écran (C-13) : pleine largeur, comme les écrans voisins ; jamais de largeur en ligne.
   --narrow : écran de lecture (820 px, maquette du Journal d'audit). */
.scc-page{min-width:0}
.scc-page--narrow{max-width:820px}
/* ── Champs de formulaire ── */
/* .scc-field = CONTENEUR d'un couple libellé + champ, et rien d'autre (C-01, contrat de classes) :
   le contrôle de la modale est .scc-modal-field. Libellé : .scc-field-label. Les alias transitoires
   (.scc-label, <label class="scc-field">) sont retirés par la reprise R. */
.scc-field{margin-bottom:16px}
/* Style de libellé (12,5 px / 600 / --text3) : une seule déclaration pour tous les libellés de
   champ — libellé au-dessus du champ, légende, filtre. */
.scc-field-label,.scc-legend,.scc-filter-field{font-size:12.5px;font-weight:600;color:var(--scc-text3)}
.scc-field-label{display:block;margin-bottom:7px}
/* Case à cocher ou radio + libellé sur une ligne (C-02). */
.scc-check{display:flex;align-items:center;gap:8px;margin:0;font-size:13.5px;font-weight:500;color:var(--scc-text2);cursor:pointer}
.scc-check input{flex:none;width:16px;height:16px;margin:0;accent-color:var(--scc-accent)}
.scc-check-list{display:flex;flex-direction:column;gap:8px}
/* Groupe de champs sans cadre propre : le cadre, s'il en faut un, est une .scc-card. */
.scc-fieldset{border:0;padding:0;margin:0 0 16px;min-width:0}
.scc-legend{display:block;padding:0;margin-bottom:7px}
.scc-field--inline{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.scc-input{width:100%;height:var(--scc-btn-h);padding:0 12px;border:1px solid var(--scc-border);border-radius:var(--scc-r-input);background:var(--scc-surface);color:var(--scc-text);font-family:inherit;font-size:14px}
/* Champ d'identifiant en Mono (V4) : .scc-mono ne l'emportait pas sur font-family:inherit. */
.scc-input.scc-mono{font-family:'IBM Plex Mono',ui-monospace,monospace}
/* Zone de texte : <textarea class="scc-input scc-textarea"> (ou textarea.scc-input) — hauteur libre. */
.scc-textarea,textarea.scc-input{height:auto;min-height:76px;padding:9px 12px;line-height:1.5;resize:vertical}
/* Focus des champs (g5-08) : anneau plein 2 px accent, comme le reste de l'interface ; le halo à 35 %
   faisait moins de 3:1 sur blanc. */
.scc-input:focus{outline:2px solid var(--scc-accent);outline-offset:1px;border-color:var(--scc-accent)}
/* ── Pages d'erreur 403/404/500 (error/error_page.html.twig, maquette errFull) ──
   Plein écran fixe, colonne centrée ; centrage vertical par marges automatiques (marque en tête,
   bouton en pied) : centré s'il y a de la place, aligné en haut sur un écran bas (jamais
   justify-content:center, qui coupe le haut). Marge latérale 16 px sur téléphone, 40 px dès 800 px. */
.scc-error-page{position:fixed;inset:0;overflow:auto;display:flex;flex-direction:column;align-items:center;background:var(--scc-bg);padding:40px clamp(16px, 5vw, 40px);text-align:center}
.scc-error-brand{display:flex;align-items:center;gap:11px;margin-top:auto;margin-bottom:40px}
/* Pictogramme : 74 px fixes, la colonne flexible l'écrasait en paysage (844 × 390). */
.scc-error-icon{width:74px;height:74px;flex:none;border-radius:20px;background:var(--scc-surface);border:1px solid var(--scc-border);display:flex;align-items:center;justify-content:center;margin-bottom:24px;color:var(--scc-accent)}
.scc-error-code{font-size:13px;font-weight:700;font-family:'IBM Plex Mono',monospace;letter-spacing:1px;color:var(--scc-muted2);margin-bottom:10px}
.scc-error-title{font-size:27px;font-weight:600;margin:0 0 12px;letter-spacing:-.4px;color:var(--scc-text)}
.scc-error-text{font-size:15px;color:var(--scc-text3);line-height:1.6;max-width:440px;margin:0 0 28px}
.scc-error-cta{margin-bottom:auto}
/* ── Login 2 colonnes ── */
.scc-login{position:fixed;inset:0;display:grid;grid-template-columns:1.05fr .95fr;background:var(--scc-bg)}
.scc-login-hero{background:var(--scc-accent-dark);color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:40px 48px}
.scc-login-hero .scc-brand{border-bottom-color:rgba(255,255,255,.15)}
.scc-login-hero .scc-brand-name{color:#fff}
.scc-login-hero-body{max-width:460px;margin-bottom:24px}
.scc-login-eyebrow{font-size:11px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:rgba(255,255,255,.72);margin-bottom:18px}
.scc-login-title{font-size:34px;line-height:1.18;font-weight:600;letter-spacing:-.5px;margin-bottom:16px}
.scc-login-lead{font-size:15px;line-height:1.6;color:rgba(255,255,255,.8);margin-bottom:34px}
/* Statistiques du hero (g5-10) : une valeur ne se coupe jamais (« 15 min ») ; les blocs passent à la ligne. */
.scc-login-stats{display:flex;flex-wrap:wrap;gap:16px 36px}
.scc-login-stat-value{font-size:26px;font-weight:600;line-height:1;white-space:nowrap}
.scc-login-stat-label{font-size:12px;color:rgba(255,255,255,.7);margin-top:6px}
.scc-login-panel{display:flex;align-items:center;justify-content:center;padding:40px}
/* Une seule colonne (mot de passe, invitation, lien expiré : pas de hero) : carte centrée (g5-03).
   Posé par .scc-login--single, ou déduit de l'absence de hero. */
.scc-login--single,.scc-login:not(:has(.scc-login-hero)){grid-template-columns:1fr}
.scc-login-box{width:100%;max-width:380px;padding:28px}
.scc-login-box-title{font-size:20px;font-weight:600;color:var(--scc-text);margin-bottom:4px}
.scc-login-box-sub{font-size:13.5px;color:var(--scc-muted);margin-bottom:20px}
.scc-login-submit{width:100%;justify-content:center;height:auto;min-height:42px;padding-top:8px;padding-bottom:8px;font-size:14px;line-height:1.3;text-align:center}
/* Blocs du formulaire de connexion (C-02, maquette) : erreur, séparateur « ou » à filets, bloc
   « Mot de passe oublié ? ». */
.scc-login-error{margin:0 0 14px}
.scc-login-form-pw .scc-login-submit,.scc-login-form-magic .scc-login-submit{margin-top:4px}
.scc-login-divider{display:flex;align-items:center;gap:12px;margin:22px 0;font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:var(--scc-muted2)}
.scc-login-divider::before,.scc-login-divider::after{content:"";flex:1;height:1px;background:var(--scc-border)}
.scc-login-divider-text{flex:none}
.scc-login-magic .scc-field{margin-bottom:14px}
.scc-login-magic-label{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--scc-text3)}
/* Liens sous la carte : retour au tableau de bord (réauthentification), pages publiques. */
.scc-login-back{margin-top:16px;font-size:13px;text-align:center}
.scc-login-legal{margin-top:20px;font-size:12px;text-align:center}
@media(max-width:860px){.scc-login{position:static;min-height:100vh;grid-template-columns:1fr}.scc-login-hero{padding:32px 28px}.scc-login-title{font-size:27px}.scc-login-lead{margin-bottom:22px}.scc-login-stats{gap:12px 28px}.scc-login-stat-value{font-size:22px}}
.scc-modal-body{padding:20px}
.scc-site-card{padding:18px;transition:box-shadow .2s,transform .2s}
.scc-site-card:hover{box-shadow:var(--scc-sh-hover);transform:translateY(-2px)}
.scc-site-top{display:flex;gap:14px;align-items:center}
.scc-site-id{flex:1;min-width:0}
.scc-site-name{font-size:15px;font-weight:600;color:var(--scc-text);display:flex;align-items:center;gap:8px}
.scc-site-url{font-size:12.5px;color:var(--scc-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-site-core{font-size:12.5px;color:var(--scc-text3);margin-top:4px}
/* « · N exploitées » après la version du noyau : le séparateur reste collé au badge, jamais seul en
   fin de ligne derrière la puce de version (g1-06). */
.scc-site-core-exp{white-space:nowrap}
/* Légende de sévérité des cartes (g1-14, maquette) : carré de 8 px à la couleur de la sévérité,
   libellé --text3, chiffre Mono --text2 en 600 (un <b> dans un parent 600 synthétisait du 900). */
.scc-site-hub{display:flex;flex-wrap:wrap;gap:4px 16px;margin:0 0 10px;padding:8px 0;border-top:1px solid var(--scc-border);border-bottom:1px solid var(--scc-border);font-size:12.5px}
.scc-site-hub-item{display:inline-flex;align-items:baseline;gap:5px;white-space:nowrap}
.scc-site-hub-val{display:inline-flex;align-items:baseline;gap:0}
.scc-site-hub-val .scc-perf-dot{align-self:center;margin-right:4px}
.scc-site-hub-unit{font-size:11px;color:var(--scc-muted2)}
.scc-site-chips{display:flex;flex-wrap:wrap;gap:8px 14px;margin:10px 0 14px}
.scc-sev-count{display:inline-flex;align-items:center;font-size:12px;color:var(--scc-text3)}
.scc-sev-count .scc-dot{width:8px;height:8px;border-radius:2px}
.scc-sev-count b{margin-left:3px;color:var(--scc-text2);font-weight:600}
/* Total de failles de la carte (STL-5) et « autres risques » comptés à part : neutres,
   la sévérité reste portée par les cases colorées. */
.scc-sev-total{display:inline-flex;align-items:baseline;gap:4px;font-size:12px;font-weight:600;color:var(--scc-text3)}
.scc-sev-total b{color:var(--scc-text);font-size:12.5px;font-weight:600}
.scc-sev-other{display:inline-flex;align-items:center;font-size:12px;color:var(--scc-muted)}
/* Pied de carte (g1-13, maquette) : filet et 13 px au-dessus ; tendance à gauche, modules et âge du
   scan à droite (le premier élément n'est plus poussé au milieu). */
.scc-site-foot{display:flex;align-items:center;gap:12px;font-size:12px;padding-top:13px;border-top:1px solid var(--scc-border)}
.scc-site-foot>.scc-muted:not(:first-child){margin-left:auto}
/* Carte d'un site jamais raccordé (STL-8) : message à la place de la barre de sévérité et
   des compteurs. Même emprise verticale (segs 12px + chips) pour garder la grille alignée. */
.scc-site-nodata{display:flex;align-items:flex-start;gap:8px;margin:12px 0 14px;font-size:12.5px;line-height:1.45;color:var(--scc-text3)}
.scc-site-nodata .scc-dot8{margin-top:5px}

/* Dashboard (re-skin) */
.scc-dash{display:flex;flex-direction:column;gap:16px}
.scc-dash-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
/* Titre de page : une seule définition (C-05, DS §3 et maquette : 24 px / 600, -.4px). */
.scc-page-title{font-size:24px;font-weight:600;letter-spacing:-.4px;color:var(--scc-text);margin:0}
.scc-dash-sub{font-size:14px;margin-top:4px}
.scc-dash-actions{display:flex;gap:8px;flex-shrink:0}
/* Rangée d'indicateurs : 18 px sous elle hors des écrans en colonne flex (tableau de bord, fiche
   site), où l'écart de la colonne (16 px) suffit ; un titre de section qui suit garde ses 28 px
   (marges fusionnées). V1/V3 : plus de marge en ligne dans les gabarits. */
.scc-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}
.scc-dash>.scc-kpi-grid,.scc-site-detail>.scc-kpi-grid{margin-bottom:0}
.scc-dash-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.scc-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.scc-filter-label{font-size:13px}
/* Filtres (g1-04, g1-29, maquette) : boutons discrets ; l'actif en aplat doux (--accent-soft, texte
   --accent-dark), jamais en accent plein ; survol --surf2. */
.scc-filters .scc-btn{height:34px;padding:0 13px;border-radius:8px;font-weight:500;color:var(--scc-text3);cursor:pointer}
.scc-filters .scc-btn:not(.is-active):hover{background:var(--scc-surf2)}
.scc-filters .scc-btn.is-active{background:var(--scc-accent-soft);border-color:var(--scc-border);color:var(--scc-accent-dark);font-weight:600}
.scc-dash-bar-right{display:flex;align-items:center;gap:12px}
/* Bascule Cartes/Tableau en contrôle segmenté (g1-04, maquette). */
.scc-view-toggle{display:inline-flex;gap:3px;padding:3px;background:var(--scc-chip);border-radius:9px}
.scc-view-toggle .scc-btn{height:30px;padding:0 13px;border:0;border-radius:7px;background:transparent;font-size:12.5px;color:var(--scc-muted);cursor:pointer}
.scc-view-toggle .scc-btn.is-active{background:var(--scc-surface);color:var(--scc-accent-dark);box-shadow:0 1px 2px rgba(22,32,55,.10)}
.scc-count{font-size:12.5px}
/* Mise à jour du noyau disponible (tableau de bord) ; la variante sécurité reprend la teinte critique. */
/* Version cible du noyau (C-07, g1-06) : puce neutre --chip en Mono (maquette), couleur sémantique
   sur le texte seulement (#b45309 4,55:1 et #b91c1c 5,87:1 sur --chip) ; plus de pilule bordée. */
.scc-core-upd{display:inline-flex;align-items:center;margin-left:6px;padding:1px 7px;border-radius:5px;background:var(--scc-chip);color:#b45309;font-family:'IBM Plex Mono',monospace;font-size:11.5px;font-weight:600;white-space:nowrap}
.scc-core-upd.is-security{color:#b91c1c}
.scc-site-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
/* Cartes d'une rangée à la même hauteur (g1-15) : le lien étire sa carte. */
.scc-site-grid>.scc-card-link{display:flex}
.scc-site-grid>.scc-card-link>.scc-site-card{flex:1;min-width:0}
.scc-card-link{display:block;text-decoration:none;color:inherit}
.scc-site-table-wrap{padding:0;overflow:hidden}
/* Vue Tableau du tableau de bord (g1-16, maquette) : en-tête sur bande --surf2, nom du site 13,5 /
   600, URL en Mono --muted2 bornée en largeur (l'ellipsis agit, la colonne ne s'élargit plus). */
.scc-site-table-wrap .scc-table th{background:var(--scc-surf2)}
.scc-site-table-name{font-size:13.5px}
.scc-table .scc-site-url{max-width:240px;color:var(--scc-muted2)}
.scc-table{width:100%;border-collapse:collapse;font-size:13px}
.scc-table th{text-align:left;padding:10px 14px;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted);border-bottom:1px solid var(--scc-border)}
.scc-table td{padding:11px 14px;border-bottom:1px solid var(--scc-border);color:var(--scc-text2)}
.scc-table tr:last-child td{border-bottom:none}
/* Lien de tableau (nom de site…) au style du texte, souligné au survol. Spécificité d'une classe
   (:where) et boutons exclus : un <a class="scc-btn-primary"> garde ses couleurs, .scc-link
   (lien d'action, C-08) l'emporte. */
.scc-table :where(a:not([class*="scc-btn"])){color:var(--scc-text);text-decoration:none;font-weight:600}
.scc-table :where(a:not([class*="scc-btn"])):hover,.scc-table :where(a:not([class*="scc-btn"])):focus-visible{text-decoration:underline}
/* Actions de ligne (.scc-cell-actions, contrat § 5) au-delà de 640 px : la cellule reste une cellule
   de tableau ; ses boutons, liens et formulaires se suivent sur une ligne, 8 px d'écart, sans retour
   à la ligne (la colonne prend leur largeur, comme l'ancien conteneur flex ; le tableau défile dans
   son cadre s'il le faut). Sous 640 px, la carte les pose en bas, à la ligne (responsive.css). */
.scc-cell-actions{white-space:nowrap}
/* Spécificité d'une cellule de tableau : un formulaire d'action qui porte aussi .scc-page-actions
   (rejet d'une demande de connexion : motif + bouton) reste en ligne, 8 px entre ses champs. */
.scc-table .scc-cell-actions>*{display:inline-flex;align-items:center;gap:8px;vertical-align:middle;margin:2px 8px 2px 0}
.scc-table .scc-cell-actions>:last-child{margin-right:0}
.scc-row-link{cursor:pointer}
.scc-row-link:hover{background:var(--scc-surf2)}
@media(max-width:1100px){.scc-kpi-grid{grid-template-columns:repeat(2,1fr)}}

/* ── Détail site (re-skin) ── */
.scc-site-detail{display:flex;flex-direction:column;gap:16px}
/* Bandeau « Connecteur jamais raccordé » (STL-8) : information à traiter, pas une sévérité —
   donc teinte d'accent, jamais le rouge/orange réservés aux failles. */
.scc-site-banner{display:flex;gap:12px;align-items:flex-start;padding:16px 18px;border-left:4px solid var(--scc-accent);background:var(--scc-accent-soft)}
/* Variantes d'alerte (fiche site, V2) : silence de collecte à la teinte « Élevée », collecte
   incomplète à la teinte « Modérée » (§ 4) ; titre à la teinte, corps --text2. */
.scc-site-banner--warning{border-left-color:#c2410c;background:#fff7ed}
.scc-site-banner--warning .scc-site-banner-title{color:#c2410c}
.scc-site-banner--caution{border-left-color:#b45309;background:#fffbeb}
.scc-site-banner--caution .scc-site-banner-title{color:#b45309}
.scc-site-banner-glyph{flex:none;font-size:20px;line-height:1.2}
.scc-site-banner-icon{flex:none;color:var(--scc-accent-dark);margin-top:1px}
.scc-site-banner-title{font-weight:600;color:var(--scc-accent-dark)}
.scc-site-banner-text{color:var(--scc-text2);margin-top:2px}
.scc-site-banner-hint{margin-top:6px;font-size:13px}
/* Pas de soulignement : `.scc-root a` le retire partout (convention du design system). */
.scc-site-banner-link{font-weight:600;color:var(--scc-accent-dark);white-space:nowrap}
.scc-site-banner-link:hover{color:var(--scc-accent)}
.scc-text2{color:var(--scc-text2)}
/* Carte d'en-tête de la fiche site (g2-17) : grande carte, rayon 16 px et 24×26 px (DS §5, maquette). */
.scc-detail-head{display:flex;gap:28px;padding:24px 26px;border-radius:var(--scc-r-lg);align-items:flex-start}
.scc-detail-id{min-width:0;flex:1}
.scc-detail-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.scc-detail-url{font-size:13px;color:var(--scc-muted);margin-top:3px}
.scc-detail-synth{font-size:13.5px;line-height:1.55;color:var(--scc-text2);margin-top:12px;max-width:760px}
.scc-detail-synth p{margin:0 0 6px}
.scc-detail-synth p:last-child{margin-bottom:0}
.scc-mini-stats{display:flex;gap:36px;flex-wrap:wrap;margin-top:16px}
.scc-mini-stat{min-width:120px}
.scc-mini-label{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted);margin-bottom:6px}
.scc-mini-val{display:flex;align-items:center;gap:8px;font-size:13px}
.scc-mini-rem{min-width:160px}
.scc-mini-rem .scc-progress{flex:1}
.scc-detail-actions{display:flex;align-items:center;gap:12px;margin-top:18px}
.scc-detail-gen{font-size:12px}
/* Meta-row (business + server facts) */
.scc-site-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:18px;padding-top:16px;border-top:1px solid var(--scc-border)}
.scc-meta-chip{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;background:var(--scc-surf2);border-radius:8px;padding:5px 11px}
.scc-meta-chip.scc-meta-text{color:var(--scc-text3);font-weight:400}
.scc-meta-chip.scc-meta-text strong{font-weight:600}
/* Module grid wrapper */
.scc-mods-grid-wrap{overflow-x:auto}
.scc-module-row-wrap{display:contents}
.scc-module-row-wrap.is-inactive .scc-module-row{opacity:.62}
/* Section « Modules désactivés · hors score » (STL-9) : repliée par défaut (<details>, 0 JS).
   Les lignes restent pleinement lisibles ; seule la sévérité est atténuée, avec le badge
   « Hors score ». Styles portés par .scc-module-row, jamais par un wrapper display:contents. */
.scc-disabled-section{padding:0;overflow:hidden;margin-top:16px}
.scc-disabled-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:16px 20px;cursor:pointer;list-style:none}
.scc-disabled-summary::-webkit-details-marker{display:none}
.scc-disabled-section[open] .scc-other-chev{transform:rotate(90deg)}
.scc-disabled-title{font-size:15px;font-weight:700;color:var(--scc-text)}
.scc-disabled-intro{padding:0 20px 14px;font-size:13px;line-height:1.55;color:var(--scc-text3);border-bottom:1px solid var(--scc-border)}
.scc-disabled-intro p{margin:0 0 8px}
.scc-disabled-intro p:last-child{margin-bottom:0}
.scc-disabled-cmd{display:inline-block;margin-top:2px;padding:6px 10px;border-radius:8px;background:var(--scc-surf2);border:1px solid var(--scc-border);font-size:12px;color:var(--scc-text2);word-break:break-all}
.scc-sev-out{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.scc-sev-out-dot{opacity:.55}
.scc-chip-outofscore{display:inline-flex;align-items:center;padding:1px 7px;border-radius:6px;font-size:11.5px;font-weight:600;background:var(--scc-chip);color:var(--scc-muted);white-space:nowrap}
.scc-chip-disabled{display:inline-flex;align-items:center;padding:2px 8px;border-radius:6px;font-size:11.5px;font-weight:600;background:var(--scc-chip);color:var(--scc-muted2);white-space:nowrap}
/* Grille graph + plan */
.scc-detail-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:16px}
.scc-chart-card,.scc-plan-card{padding:18px 20px}
.scc-chart{width:100%;height:200px;display:block;margin-top:6px}
.scc-chart-empty{padding:48px 0;text-align:center}
.scc-chart-foot{display:flex;gap:28px;font-size:12px;margin-top:10px}
.scc-chart-foot b{margin-left:5px;font-weight:600}
.scc-plan{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:12px}
.scc-plan-item{display:flex;align-items:flex-start;gap:12px}
.scc-plan-num{flex:none;width:22px;height:22px;border-radius:6px;background:var(--scc-accent-soft);color:var(--scc-accent-dark);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;margin-top:1px}
.scc-plan-text{font-size:13px;color:var(--scc-text2);line-height:1.5}
/* Corps d'une action (maquette Sentinelle.dc.html) : ces classes étaient utilisées par
   site.html.twig sans être définies — pastille invisible, détail collé au titre. */
.scc-plan-body{min-width:0;display:flex;flex-direction:column;gap:2px}
.scc-plan-head{display:flex;align-items:center;gap:7px}
.scc-plan-dot{width:7px;height:7px;border-radius:50%;flex:none}
.scc-plan-title{font-size:13.5px;font-weight:600;color:var(--scc-text2);line-height:1.3}
.scc-plan-detail{font-size:12px;color:var(--scc-muted);line-height:1.45}
.scc-plan-link{color:var(--scc-accent-dark)}
.scc-plan-link:hover{color:var(--scc-accent)}
@media(max-width:1100px){.scc-detail-grid{grid-template-columns:minmax(0,1fr)}}
/* Score expliqué + « Pour progresser » (STL-10), empilés sous l'en-tête. Dépliant 0-JS (<details>, même patron que
   .scc-other) ; les lignes « Pour progresser » reprennent les classes du Plan d'action. */
.scc-ring-help{display:block;margin-top:8px;max-width:128px;font-size:12px;font-weight:600;line-height:1.35;text-align:center;color:var(--scc-accent-dark)}
a.scc-ring-help:hover{color:var(--scc-accent)}
.scc-score-why{display:flex;flex-direction:column;gap:16px;padding:18px 20px}
.scc-score-explain>summary{list-style:none;cursor:pointer;display:flex;align-items:flex-start;gap:8px}
.scc-score-explain>summary::-webkit-details-marker{display:none}
.scc-score-explain-chev{flex:none;margin-top:5px;color:var(--scc-muted2);transition:transform .15s}
.scc-score-explain[open] .scc-score-explain-chev{transform:rotate(90deg)}
.scc-score-explain-title{display:block;font-size:15px;font-weight:700;color:var(--scc-text)}
.scc-score-explain-gist{display:block;font-size:12.5px;margin-top:2px}
.scc-score-explain-body{max-width:820px;margin-top:14px;padding-left:20px;display:flex;flex-direction:column;gap:12px;font-size:13px;color:var(--scc-text3);line-height:1.55;scroll-margin-top:calc(var(--scc-header-h) + 72px)}
.scc-score-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.scc-score-step{display:flex;align-items:flex-start;gap:12px}
.scc-score-step>div{min-width:0;flex:1}
.scc-score-step-title{font-weight:600;color:var(--scc-text2)}
/* Lot mobile : la marge est sur le cadre qui défile (.scc-table-wrap, contexte de formatage). */
.scc-score-load-wrap{margin-top:6px}
.scc-score-load{border-collapse:collapse;font-size:12.5px;width:100%;max-width:480px}
.scc-score-load td{padding:4px 0;border-bottom:1px solid var(--scc-border)}
.scc-score-load td+td{padding-left:18px;text-align:right}
.scc-score-load-total td{border-bottom:none;font-weight:600;color:var(--scc-text2)}
.scc-score-result{font-size:13.5px;color:var(--scc-text2)}
.scc-score-note{background:var(--scc-surf2);border-radius:10px;padding:11px 13px;font-size:12.5px;color:var(--scc-muted);line-height:1.55}
.scc-score-note strong{font-weight:600;color:var(--scc-text3)}
.scc-score-link{align-self:flex-start;font-size:12.5px;font-weight:600;color:var(--scc-accent-dark)}
.scc-score-link:hover{color:var(--scc-accent)}
.scc-score-progress{border-top:1px solid var(--scc-border);padding-top:16px}
.scc-score-progress .scc-section-title{margin:0}
.scc-score-progress-empty{margin:0;font-size:13px}
.scc-progress-list{max-width:980px}
.scc-progress-list .scc-plan-body{flex:1}
.scc-gain{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:1px;text-align:right}
.scc-gain-to{font-size:12.5px;font-weight:600;color:var(--scc-text3);white-space:nowrap}
.scc-gain-pts{font-size:12px;font-weight:600;color:#15803d}
.scc-gain-cum{font-size:11.5px;font-weight:500;color:var(--scc-muted)}
/* « ? » à côté d'un libellé de score (maquette : Explicatif du score) → /help#score. */
.scc-kpi-label-help{display:flex;align-items:center;gap:6px}
.scc-help-dot{width:16px;height:16px;border-radius:50%;border:1px solid var(--scc-border);background:var(--scc-surf2);color:var(--scc-muted);font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:1}
.scc-help-dot:hover{color:var(--scc-accent-dark);border-color:var(--scc-accent)}
/* Aide : section « Comment est calculé le score de santé ? » (ancre #score, STL-10). */
.scc-help-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
/* Cartes de l'Aide (contact, état du service, questions fréquentes ; V3) : .scc-card + marge 20×22,
   titre 15 / 600 ; bouton d'action en pleine largeur sous les coordonnées. */
.scc-help-card{padding:20px 22px}
.scc-help-card-title{font-size:15px;font-weight:600;color:var(--scc-text);margin:0 0 6px}
.scc-help-status{display:flex;flex-direction:column;gap:11px;margin-top:12px}
.scc-help-card .scc-btn--block{margin-top:16px}
.scc-help-section{padding:20px 22px;margin-top:16px;scroll-margin-top:calc(var(--scc-header-h) + 16px)}
.scc-help-h2{font-size:17px;font-weight:600;color:var(--scc-text);margin:0 0 8px}
.scc-help-h3{font-size:14px;font-weight:600;color:var(--scc-text2);margin:20px 0 8px}
.scc-help-p{font-size:13px;color:var(--scc-text3);line-height:1.6;margin:8px 0 0}
.scc-help-p strong{font-weight:600;color:var(--scc-text2)}
.scc-help-table{font-size:12.5px}
.scc-help-table td,.scc-help-table th{padding:8px 12px}
.scc-help-formula{margin:10px 0 0;padding:10px 13px;background:var(--scc-surf2);border-radius:10px;font-size:12.5px;color:var(--scc-text2);overflow-x:auto}
.scc-help-list{margin:8px 0 0;padding-left:18px;font-size:13px;color:var(--scc-text3);line-height:1.6}
.scc-help-list li+li{margin-top:3px}
.scc-help-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.scc-help-col-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted);margin-top:4px}
@media(max-width:720px){.scc-help-cols{grid-template-columns:1fr}}
/* ── Voie 5 « saisie » (lot design 2, 15/10) : intérieurs des cartes de l'Aide, styles en ligne
   passés en classes (§ 8, règle 2). Valeurs inchangées. ── */
.scc-help-lead{font-size:12.5px;color:var(--scc-muted);margin:0 0 16px;line-height:1.5}
.scc-help-actions{display:flex;gap:8px}
.scc-help-flash{margin:0 0 12px}
.scc-help-contacts{display:flex;flex-direction:column;gap:9px}
.scc-help-contact{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--scc-text2);text-decoration:none}
.scc-help-contact--off{color:var(--scc-muted)}
.scc-help-contact-dot{width:7px;height:7px;border-radius:50%;background:var(--scc-accent);flex:none}
.scc-help-contact--off .scc-help-contact-dot{background:var(--scc-muted2)}
.scc-help-edit{display:inline-block;margin-top:12px;font-size:12.5px;color:var(--scc-accent);text-decoration:none}
.scc-help-status-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.scc-help-status-label{font-size:13px;color:var(--scc-text3)}
.scc-help-version{font-size:12px;color:var(--scc-muted);margin:14px 0 0}
.scc-help-faq{border-bottom:1px solid var(--scc-border)}
.scc-help-faq-q{padding:12px 0;font-size:13.5px;font-weight:600;color:var(--scc-text2);cursor:pointer;list-style:none}
.scc-help-faq-a{padding:0 0 13px;margin:0;font-size:13px;color:var(--scc-text3);line-height:1.6}
/* ── fin Voie 5 ── */
/* Onglets */
.scc-tabs{display:flex;gap:22px;border-bottom:1px solid var(--scc-border);padding:0 2px}
.scc-tab{display:inline-flex;align-items:center;gap:6px;padding:10px 0;font-size:13.5px;font-weight:600;color:var(--scc-muted);background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;font-family:inherit;cursor:pointer}
.scc-tab.is-active{color:var(--scc-accent-dark);border-bottom-color:var(--scc-accent)}
.scc-tab.is-disabled{color:var(--scc-muted2);cursor:default}
.scc-tab .scc-soon{margin-left:0}
/* Table modules */
.scc-mods-card{padding:0;overflow:hidden}
.scc-mods-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:0 0 14px}
.scc-mods-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.scc-mods-search-wrap{position:relative;display:flex;align-items:center}
.scc-mods-search-icon{position:absolute;left:10px;pointer-events:none}
.scc-mods-search{height:34px;width:200px;font-size:13px;padding-left:30px}
.scc-mods-bar .scc-filters .scc-btn{cursor:pointer;height:34px}
.scc-table-wrap{overflow-x:auto}
.scc-mods-table th:last-child,.scc-mods-table td:last-child{text-align:right}
.scc-mrow.is-core{background:var(--scc-surf2)}
.scc-mod-name{font-weight:600;color:var(--scc-text)}
.scc-mod-name a{color:var(--scc-text)}
.scc-mod-meta{display:flex;align-items:center;gap:8px;margin-top:2px;font-size:12px}
.scc-mod-status{color:var(--scc-muted)}
.scc-mod-chev a{color:var(--scc-muted2)}
.scc-overdue{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;color:#b91c1c;white-space:nowrap}
.scc-overdue::before{content:"";width:6px;height:6px;border-radius:50%;background:#dc2626;flex:none}
.scc-mods-empty{padding:32px 20px}

/* ── New Task-9 macros ── */
.scc-sev-dot{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600}
.scc-dot8{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
.scc-module-row{display:grid;grid-template-columns:1.6fr 150px 140px 110px 70px 140px 40px;gap:14px;padding:14px 20px;border-bottom:1px solid var(--scc-border);align-items:center;text-decoration:none;color:inherit;transition:background .12s}
.scc-module-row:hover{background:var(--scc-surf2)}
.scc-mr-name{min-width:0}
/* En-tête de la ligne de module : le nom d'abord ; les puces passent à la ligne avant de le tronquer. */
.scc-mr-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;min-width:0}
.scc-mr-title{min-width:0;max-width:100%;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-mr-machine{font-size:11.5px;color:var(--scc-muted2)}
.scc-module-row-header{display:grid;grid-template-columns:1.6fr 150px 140px 110px 70px 140px 40px;gap:14px;padding:12px 20px;background:var(--scc-surf2);border-bottom:1px solid var(--scc-border);font-size:11.5px;font-weight:600;color:var(--scc-muted);text-transform:uppercase;letter-spacing:.4px}
.scc-cve-card{padding:18px 20px}
.scc-cve-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:9px}
.scc-cve-title{margin:0 0 11px;font-size:13.5px;font-weight:600;line-height:1.45;color:var(--scc-text2)}
.scc-cve-id{font-size:14px;font-weight:600;color:var(--scc-text)}
.scc-cve-age{font-size:12.5px;margin-left:auto}
.scc-cve-foot{display:flex;align-items:center;gap:22px;flex-wrap:wrap;padding-top:13px;border-top:1px solid var(--scc-border);font-size:12.5px}
.scc-cve-installed{color:#b45309;font-weight:600}
.scc-cve-fixed{color:#15803d;font-weight:600}
.scc-cve-link{margin-left:auto;font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px;color:var(--scc-accent)}
.scc-muted2{color:var(--scc-muted2)}

/* ── Task-10: Chrome — sidebar & header refinements ── */

/* Sidebar note header */
.scc-sidebar-note-header{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.scc-sidebar-note-dot{width:7px;height:7px;border-radius:50%;background:#16a34a;flex:none}
/* Une définition (C-14) : l'ardoise littérale est remplacée par --text3. */
.scc-sidebar-note-label{font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--scc-text3)}

/* Breadcrumb — link segments accent, separators muted, last segment bold */
.scc-crumbs{display:flex;align-items:center;gap:7px;font-size:14px;flex:none;white-space:nowrap}
.scc-crumb{font-size:14px;color:var(--scc-muted)}
.scc-crumb:last-child{font-weight:600;color:var(--scc-text2)}
.scc-crumb-link{text-decoration:none;cursor:pointer;color:var(--scc-muted)}
.scc-crumb-link:hover{color:var(--scc-text2)}
/* Séparateur du fil d'Ariane : --muted2 (C-14, g4-12 ; l'ancien gris faisait 1,65:1). Une définition. */
.scc-crumb-sep{color:var(--scc-muted2)}

/* Header right controls */
.scc-header-right{display:flex;align-items:center;gap:18px;flex:1 1 auto;justify-content:flex-end}

/* Inert button modifier */
.scc-btn-inert{cursor:not-allowed;opacity:.8}
.scc-btn-inert:hover{opacity:.8}

/* Accent action button */
.scc-btn-accent{height:38px;padding:0 14px;border-radius:9px;border:none;background:var(--scc-accent);color:#fff;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-family:inherit}

/* Icon button */
.scc-icon-btn{position:relative;width:38px;height:38px;border-radius:9px;border:1px solid var(--scc-border);background:var(--scc-surface);display:inline-flex;align-items:center;justify-content:center;color:var(--scc-text3);font-family:inherit}

/* ⌘K button */
.scc-cmd-btn{height:38px;padding:0 11px;border-radius:9px;border:1px solid var(--scc-border);background:var(--scc-surface);display:inline-flex;align-items:center;gap:7px;color:var(--scc-muted);font-size:12px;font-weight:600;font-family:inherit}
.scc-cmd-key{font-family:'IBM Plex Mono',monospace;border:1px solid var(--scc-border);border-radius:5px;padding:1px 5px;font-size:10.5px}
/* Palette hors de .scc-root : police et couleur Sentinelle reprises ici (g2-02). */
.scc-cmd-overlay{position:fixed;inset:0;background:rgba(15,22,34,.45);z-index:95;display:none;align-items:flex-start;justify-content:center;padding:12vh 24px 24px;font-family:'IBM Plex Sans',-apple-system,system-ui,sans-serif;font-size:var(--scc-fs-base);line-height:var(--scc-lh);color:var(--scc-text);-webkit-font-smoothing:antialiased}
.scc-cmd-overlay.is-open{display:flex}
.scc-cmd-panel{background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.32);max-width:560px;width:100%;display:flex;flex-direction:column;max-height:64vh;overflow:hidden}
.scc-cmd-search{border:none;border-bottom:1px solid var(--scc-border);padding:15px 18px;font-size:15px;font-family:inherit;color:var(--scc-text);background:var(--scc-surface)}
.scc-cmd-search:focus-visible{outline:2px solid var(--scc-accent);outline-offset:-2px}
.scc-cmd-list{overflow-y:auto;padding:7px}
.scc-cmd-group{padding:4px 0}
.scc-cmd-group-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted2);padding:7px 11px 4px}
.scc-cmd-item{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:9px 11px;border:none;border-radius:8px;background:none;cursor:pointer;text-align:left;text-decoration:none;font-family:inherit}
.scc-cmd-item-label{font-size:13.5px;font-weight:500;color:var(--scc-text2)}
.scc-cmd-item-hint{font-size:11.5px;color:var(--scc-muted2);flex:none}
.scc-cmd-item:hover,.scc-cmd-item.is-active{background:var(--scc-surf2)}
.scc-cmd-empty{padding:18px;text-align:center;font-size:13px;color:var(--scc-muted)}

/* Notification bell */
.scc-notif-wrap{position:relative}
.scc-notif-badge{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:#dc2626;color:#fff;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--scc-surface);font-family:'IBM Plex Mono',monospace}
.scc-notif-dropdown{position:absolute;top:calc(100% + 6px);right:0;width:360px;max-height:440px;overflow:hidden;background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:13px;box-shadow:0 14px 38px rgba(22,32,55,.18);z-index:80;display:none}
.scc-notif-dropdown.is-open{display:block}
.scc-notif-head{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--scc-border)}
.scc-notif-title{font-size:13.5px;font-weight:600;color:var(--scc-text)}
.scc-notif-markread{border:none;background:none;font-size:12px;font-weight:600;color:var(--scc-accent);cursor:pointer;padding:0}
.scc-notif-list{max-height:340px;overflow-y:auto}
.scc-notif-item{display:flex;gap:11px;padding:12px 16px;border-bottom:1px solid var(--scc-border);text-decoration:none;cursor:pointer}
.scc-notif-item:hover{background:var(--scc-surf2)}
.scc-notif-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex:none}
.scc-notif-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.scc-notif-item-title{font-size:13px;font-weight:600;color:var(--scc-text2)}
.scc-notif-item-detail{font-size:12px;color:var(--scc-muted);line-height:1.45}
.scc-notif-item-time{font-size:11.5px;color:var(--scc-muted2);margin-top:2px}
.scc-notif-empty{padding:26px 16px;text-align:center;font-size:13px;color:var(--scc-muted)}
.scc-notif-foot{display:block;width:100%;padding:11px;border-top:1px solid var(--scc-border);background:var(--scc-surf2);font-size:12.5px;font-weight:600;color:var(--scc-accent);text-align:center;text-decoration:none}

/* Intervention modal — une seule définition (C-09 : l'ancienne modale, padding 18×20 et filet sur
   l'en-tête, est retirée). Modale et palette sont rendues hors de .scc-root : elles reprennent
   ici la police et la couleur de texte Sentinelle (g2-02), quel que soit le body. */
.scc-modal-overlay button,.scc-modal-overlay input,.scc-modal-overlay select,.scc-modal-overlay textarea,.scc-cmd-overlay button,.scc-cmd-overlay input{font-family:inherit}
.scc-modal-overlay{position:fixed;inset:0;background:rgba(15,22,34,.45);z-index:90;display:none;align-items:center;justify-content:center;padding:24px;font-family:'IBM Plex Sans',-apple-system,system-ui,sans-serif;font-size:var(--scc-fs-base);line-height:var(--scc-lh);color:var(--scc-text);-webkit-font-smoothing:antialiased}
.scc-modal-overlay.is-open{display:flex}
.scc-modal{background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);max-width:480px;width:100%;padding:28px 30px}
.scc-modal-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:6px}
.scc-modal-title{font-size:19px;font-weight:600;margin:0}
.scc-modal-x{width:30px;height:30px;border-radius:8px;border:1px solid var(--scc-border);background:var(--scc-surf2);color:var(--scc-muted);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.scc-modal-intro{font-size:13.5px;color:var(--scc-text3);line-height:1.6;margin:0 0 18px}
/* Contrôle (select, textarea) de la modale : .scc-modal-field. */
.scc-modal-field{width:100%;padding:10px 12px;border:1px solid var(--scc-border);border-radius:9px;font-size:13.5px;font-weight:400;background:var(--scc-surface);color:var(--scc-text2);margin:0 0 14px;font-family:inherit}
.scc-modal-field:focus-visible{outline:2px solid var(--scc-accent);outline-offset:-2px}
.scc-field-textarea{height:78px;resize:none;margin-bottom:18px}
.scc-urg{display:flex;gap:8px;margin-bottom:14px}
.scc-urg-pill{position:relative;flex:1;text-align:center;padding:9px;border:1px solid var(--scc-border);border-radius:9px;font-size:13px;color:var(--scc-muted);cursor:pointer}
.scc-urg-pill input{position:absolute;opacity:0;width:0;height:0}
/* Le radio est masqué : l'anneau de focus clavier se porte sur la pastille (sinon il s'affiche
   sur un élément de 0 px), et la pastille ancre aussi la bulle de validation « required ». */
.scc-urg-pill:has(input:focus-visible){outline:2px solid var(--scc-accent);outline-offset:2px}
.scc-urg-pill span{font-weight:500}
.scc-urg-pill input:checked + span{font-weight:600}
.scc-urg-pill--critique input:checked + span{color:#b91c1c}
.scc-urg-pill:has(input:checked){background:var(--scc-surf2)}
.scc-urg-pill--critique:has(input:checked){background:#fef2f2;border-color:#fecaca;color:#b91c1c}
.scc-modal-submit{width:100%;justify-content:center;margin-top:4px}
.scc-modal-foot{font-size:11.5px;color:var(--scc-muted2);text-align:center;margin:12px 0 0}

/* Profile menu */
.scc-profile-menu{position:relative}
.scc-profile-trigger{display:flex;align-items:center;gap:10px;padding:4px 8px 4px 6px;border:1px solid var(--scc-border);border-radius:10px;background:var(--scc-surface);cursor:pointer}
.scc-avatar{width:32px;height:32px;border-radius:50%;background:var(--scc-text3);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex:none}
.scc-profile-info{display:flex;flex-direction:column;line-height:1.2;text-align:left}
.scc-profile-name{font-size:13px;font-weight:600;color:var(--scc-text2);display:block}
.scc-profile-role{font-size:11.5px;color:var(--scc-muted);display:block}
.scc-profile-menu.is-open .scc-profile-dropdown{display:block}
.scc-profile-dropdown{position:absolute;top:calc(100% + 6px);right:0;width:248px;background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:13px;box-shadow:0 14px 38px rgba(22,32,55,.18);z-index:80;padding:7px;display:none}
.scc-profile-head{display:flex;align-items:center;gap:11px;padding:8px 9px 11px;margin-bottom:5px;border-bottom:1px solid var(--scc-border)}
.scc-avatar-lg{width:38px;height:38px;font-size:14px}
.scc-profile-head-info{display:flex;flex-direction:column;min-width:0}
.scc-profile-head-name{font-size:13.5px;font-weight:600;color:var(--scc-text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-profile-head-email{font-size:11.5px;color:var(--scc-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-profile-head-role{font-size:11.5px;color:var(--scc-muted2);margin-top:2px}
.scc-profile-item{display:block;padding:8px 12px;border-radius:8px;font-size:13px;font-weight:500;color:var(--scc-text2);text-decoration:none}
.scc-profile-item:hover{background:var(--scc-surf2)}
.scc-profile-logout-form{margin:0}
.scc-profile-logout{display:block;width:100%;padding:8px 12px;border:0;border-radius:8px;background:none;font:inherit;font-size:13px;font-weight:500;text-align:left;color:var(--scc-text2);text-decoration:none;cursor:pointer}
.scc-profile-logout:hover{background:var(--scc-surf2)}

/* ── Task-12: Module detail screen ── */
.scc-module-detail{display:flex;flex-direction:column;gap:16px}

/* Header card */
.scc-mod-head-card{padding:23px 26px}
.scc-mod-head-body{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}
.scc-mod-head-left{min-width:0;flex:1}
.scc-mod-head-title{display:flex;align-items:center;gap:11px;margin-bottom:7px;flex-wrap:wrap}
.scc-mod-machine{font-size:13px}
.scc-mod-exploited-badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#b91c1c}
.scc-mod-summary{font-size:14.5px;color:var(--scc-text3);line-height:1.6;margin:0 0 16px;max-width:660px}
.scc-mod-facts{display:flex;gap:26px;flex-wrap:wrap}
.scc-mod-fact{}
.scc-mod-fact-label{font-size:11.5px;color:var(--scc-muted2);margin-bottom:3px}
.scc-mod-fact-val{font-size:14px;font-weight:600}
.scc-mod-installed{color:#b45309}
.scc-mod-fixed{color:#15803d}
.scc-mod-status-inline{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600}
.scc-mod-head-actions{display:flex;flex-direction:column;gap:9px;flex-shrink:0}
.scc-mod-btn-update{padding:10px 16px;font-size:13.5px;justify-content:center}
.scc-mod-btn-drupal{padding:10px 16px;border:1px solid var(--scc-border);border-radius:9px;background:var(--scc-surface);font-size:13.5px;font-weight:600;color:var(--scc-text3);display:flex;align-items:center;gap:8px;white-space:nowrap;justify-content:center;text-decoration:none}
.scc-mod-btn-drupal:hover{background:var(--scc-surf2)}

/* Que faire? */
.scc-mod-quefaire-card{padding:22px 24px}
.scc-mod-section-title{font-size:17px;font-weight:600;margin:0 0 5px}
.scc-mod-intro{font-size:14px;color:var(--scc-text3);line-height:1.6;margin:0 0 18px;max-width:780px}
.scc-mod-quefaire-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.scc-mod-steps{display:flex;flex-direction:column;gap:13px}
.scc-mod-step{display:flex;gap:11px;align-items:flex-start}
.scc-mod-step-num{width:23px;height:23px;flex:none;border-radius:7px;background:var(--scc-chip);color:var(--scc-text3);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.scc-mod-step-text{font-size:13.5px;color:var(--scc-text3);line-height:1.5;padding-top:2px}
.scc-mod-cmds-col{}
.scc-mod-cmds-label{font-size:11.5px;font-weight:600;color:var(--scc-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:9px}
.scc-mod-cmds{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.scc-mod-cmd{display:flex;align-items:center;gap:9px;background:var(--scc-surf2);border:1px solid var(--scc-border);border-radius:8px;padding:10px 12px;font-size:12.5px;color:var(--scc-text2);overflow-x:auto}
.scc-mod-cmd-dollar{color:var(--scc-muted2);flex:none}
.scc-mod-impact{background:#fffbeb;border-radius:8px;padding:11px 13px;font-size:12.5px;color:#92400e;line-height:1.5}
@media(max-width:860px){.scc-mod-quefaire-grid{grid-template-columns:1fr}}

/* Remediation status bar */
.scc-mod-status-bar{padding:15px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.scc-mod-status-bar-label{font-size:13.5px;font-weight:600;color:var(--scc-text2)}
.scc-mod-status-form{display:contents}
.scc-mod-status-btns{display:flex;gap:7px}
.scc-mod-status-btn{cursor:pointer}
/* Délai et ancienneté de la barre de statut (C-13, g2-21) : classes jusqu'ici stylées en ligne. */
.scc-mod-sla-label{margin-left:auto;font-size:13px;font-weight:600}
.scc-mod-detected-label{font-size:13px}
.scc-mod-status-btn.is-active{background:var(--scc-accent);border-color:var(--scc-accent);color:#fff}

/* Governance + Priority grid */
.scc-mod-gov-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:16px}
@media(max-width:900px){.scc-mod-gov-grid{grid-template-columns:1fr}}
.scc-mod-gov-card{padding:18px 22px}
.scc-mod-prio-card{padding:18px 22px}
.scc-mod-card-title{font-size:14.5px;font-weight:600;margin:0}
.scc-mod-gov-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.scc-mod-gov-desc{font-size:12.5px;color:var(--scc-muted);margin:0 0 14px;line-height:1.5}
.scc-mod-gov-form{display:flex;flex-direction:column;gap:12px}
.scc-mod-gov-textarea-wrap{}
.scc-mod-gov-textarea{height:72px;resize:vertical;padding:8px 12px;font-family:inherit;font-size:13px}
.scc-mod-gov-btns{display:flex;gap:8px;flex-wrap:wrap}
.scc-mod-gov-btn{cursor:pointer}
.scc-mod-gov-btn.is-active{background:var(--scc-accent);border-color:var(--scc-accent);color:#fff}
.scc-mod-gov-current{display:flex;align-items:center;gap:7px;margin-top:14px;font-size:12.5px;font-weight:600;flex-wrap:wrap}
.scc-mod-gov-meta{font-weight:400;font-size:12px}
.scc-mod-prio-score{display:flex;align-items:baseline;gap:10px;margin:12px 0}
.scc-mod-prio-val{font-size:30px;font-weight:700}
.scc-mod-prio-label{font-size:13px;font-weight:600}
.scc-mod-prio-explain{margin:-4px 0 12px;font-size:12.5px;line-height:1.45}
.scc-mod-prio-factors{display:flex;flex-direction:column;gap:8px}
.scc-mod-prio-row{display:flex;justify-content:space-between;align-items:center;font-size:12.5px}
.scc-mod-prio-key{}
.scc-mod-prio-owner{font-weight:600;color:var(--scc-text2)}

/* CVE list */
/* Réserve sur la version cible d'une bibliothèque (STL-4) : une faille sans correctif connu. */
.scc-mod-target-note{margin:-8px 0 14px;font-size:12.5px;font-weight:600;color:#b45309}
.scc-mod-cve-title{font-size:17px;font-weight:600;margin:4px 0 14px}
.scc-mod-cve-list{display:flex;flex-direction:column;gap:13px}
.scc-mod-cve-empty{padding:16px 0}

/* Écran compte (mot de passe) */
.scc-account{max-width:520px}
.scc-account-head{margin-bottom:18px}
.scc-account-sub{margin:6px 0 0;font-size:13.5px;line-height:1.5;max-width:480px}
.scc-account-card{padding:22px 24px}
.scc-account-actions{margin-top:4px}
.scc-account-submit{height:var(--scc-btn-h);padding:0 18px;cursor:pointer}

/* ── Priorités screen ── */
.scc-prio-screen{display:flex;flex-direction:column;gap:0}
.scc-prio-subtitle{color:var(--scc-muted);margin:5px 0 14px;font-size:14px}
.scc-prio-subtitle strong{font-weight:600;color:var(--scc-text3)}
/* Répartition des failles de la file par site (STL-5) : relie le total aux cartes. */
.scc-prio-bysite{margin:-8px 0 14px;font-size:12.5px}
.scc-prio-bysite b{font-weight:600;color:var(--scc-text3)}

/* Exclusion notes */
.scc-prio-note{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--scc-muted);background:var(--scc-surf2);border:1px solid var(--scc-border);border-radius:8px;padding:7px 12px;margin-bottom:10px}
.scc-prio-note-dot{width:7px;height:7px;border-radius:50%;flex:none;display:inline-block}

/* Table card */
.scc-prio-card{background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:var(--scc-r-card);overflow-x:auto;box-shadow:var(--scc-sh-card);margin-top:4px}

/* Header row — colonnes : rang, priorité, site (1fr), module (1.25fr : nom, identifiant, ligne de
   détail et bouton « Demander une intervention », qui ne tenait pas dans 1fr à 1440 px, g1-21),
   sévérité, criticité, ancienneté, SLA, chevron. */
.scc-prio-header-row{display:grid;grid-template-columns:34px 134px 1fr 1.25fr 122px 116px 104px 116px 24px;gap:12px;padding:13px 20px;background:var(--scc-surf2);border-bottom:1px solid var(--scc-border);font-size:11.5px;font-weight:600;color:var(--scc-muted);text-transform:uppercase;letter-spacing:.4px;align-items:center;min-width:960px}

/* Sort buttons in header */
.scc-prio-sort-btn{border:none;background:none;text-align:left;padding:0;font-family:inherit;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;cursor:pointer;color:var(--scc-muted)}
.scc-prio-sort-btn:hover{color:var(--scc-text2)}
.scc-sort-arrow{font-style:normal;font-size:10px;font-weight:700}

/* Data row (grille ; lien étiré sur le nom) */
.scc-prio-row{position:relative;display:grid;grid-template-columns:34px 134px 1fr 1.25fr 122px 116px 104px 116px 24px;gap:12px;padding:13px 20px;border-bottom:1px solid var(--scc-border);align-items:center;text-decoration:none;color:inherit;transition:background .12s;min-width:960px}
/* Lien de la rangée : celui du nom, étiré sur toute la rangée (le bouton d'intervention reste au-dessus). */
.scc-prio-mod-link{color:inherit;text-decoration:none;min-width:0;display:block}
.scc-prio-mod-link::after{content:'';position:absolute;inset:0}
/* Le lien étiré recouvre la rangée : les textes qu'on veut pouvoir survoler (infobulle EPSS) ou
   sélectionner (site, identifiant du module) passent au-dessus, en largeur réduite à leur
   contenu pour que le reste de la rangée reste cliquable. */
.scc-prio-row .scc-prio-exploited,.scc-prio-row .scc-prio-site-name,.scc-prio-row .scc-prio-site-expo,.scc-prio-row .scc-prio-mod-machine{position:relative;z-index:1;width:fit-content;max-width:100%}
.scc-prio-mod-cell .scc-btn{position:relative;z-index:1;width:fit-content;height:28px;margin-top:6px;padding:0 8px;font-size:11.5px;white-space:nowrap;max-width:100%;cursor:pointer}
.scc-mod-iv{margin-top:12px}
/* Page d'un constat (dans le shell, structure de la fiche module) */
.scc-finding-age-card,.scc-finding-sources-card{padding:20px 26px}
.scc-finding-age{margin:6px 0 2px;font-size:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.scc-finding-age-sub{font-size:12.5px;margin:0}
.scc-finding-sources li{display:flex;align-items:center}
.scc-finding-source-dot{color:#16a34a;margin-right:8px;font-size:12px;line-height:1}
.scc-finding-source-link{color:var(--scc-accent);text-decoration:none;font-weight:500}
.scc-finding-source-link:hover{text-decoration:underline}
.scc-finding-sources{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:14px}
.scc-prio-row:last-child{border-bottom:none}
.scc-prio-row:hover{background:var(--scc-surf2)}

/* Rank cell */
.scc-prio-rank{font-size:14px;font-weight:700;color:var(--scc-muted2)}

/* Priority score + bar */
.scc-prio-score-cell{display:flex;align-items:center;gap:9px}
.scc-prio-score{font-size:15px;font-weight:700;width:28px;flex:none}
.scc-prio-bar-track{flex:1;height:5px;border-radius:3px;background:var(--scc-chip);overflow:hidden;max-width:60px}
.scc-prio-bar-fill{display:block;height:100%;border-radius:3px}

/* Site cell */
.scc-prio-site-cell{min-width:0;display:flex;flex-direction:column;gap:2px}
.scc-prio-site-name{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--scc-text)}
.scc-prio-site-expo{font-size:11.5px;color:var(--scc-muted2)}

/* Module cell */
.scc-prio-mod-cell{min-width:0;display:flex;flex-direction:column;gap:2px}
.scc-prio-mod-name{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--scc-text)}
.scc-prio-mod-machine{font-size:11.5px;color:var(--scc-muted2)}

/* Severity cell */
.scc-prio-sev-cell{display:flex;flex-direction:column;gap:3px}

/* Exploited badge */
.scc-prio-exploited{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;color:#b91c1c;margin-top:3px}
.scc-prio-exploited-dot{width:6px;height:6px;border-radius:50%;background:#dc2626;display:inline-block;flex:none;animation:scc-pulse 1.6s infinite}

/* Criticité cell */
.scc-prio-crit-cell{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600}

/* Age + SLA */
.scc-prio-age{font-size:12.5px;color:var(--scc-muted)}
.scc-prio-sla{font-size:12px;font-weight:600}

/* Empty state */
.scc-prio-empty{padding:48px 20px;text-align:center;font-size:14px;color:var(--scc-muted)}

/* ===== Kanban Remédiation ===== */
.scc-page-sub{font-size:14px;color:var(--scc-muted);margin:5px 0 18px;line-height:1.5}
.scc-kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}
.scc-kanban-col{background:var(--scc-surf2);border:1px solid var(--scc-border);border-radius:14px;padding:14px}
.scc-kanban-colhead{display:flex;align-items:center;gap:9px;margin-bottom:12px;padding:0 4px}
.scc-kanban-dot{width:9px;height:9px;border-radius:50%;flex:none;display:inline-block}
.scc-kanban-collabel{font-size:13.5px;font-weight:600;color:var(--scc-text2);white-space:nowrap}
.scc-kanban-count{margin-left:auto;font-size:12px;font-weight:600;font-family:'IBM Plex Mono',monospace}
/* Teinte de colonne (statut de remédiation, § 4) : point et compteur. À traiter neutre, En cours
   bleu foncé, Corrigé vert. */
.scc-kanban-col--todo .scc-kanban-dot{background:var(--scc-muted2)}
.scc-kanban-col--todo .scc-kanban-count{color:var(--scc-muted)}
.scc-kanban-col--progress .scc-kanban-dot{background:var(--scc-accent-dark)}
.scc-kanban-col--progress .scc-kanban-count{color:var(--scc-accent-dark)}
.scc-kanban-col--done .scc-kanban-dot{background:#15803d}
.scc-kanban-col--done .scc-kanban-count{color:#15803d}
.scc-kanban-cards{display:flex;flex-direction:column;gap:10px}
.scc-kanban-card{background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:11px;padding:12px 13px;box-shadow:0 1px 2px rgba(22,32,55,.04)}
.scc-kanban-card.is-done{opacity:.82}
.scc-kanban-cardhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}
.scc-kanban-mod{font-size:14px;font-weight:600;color:var(--scc-text);text-decoration:none;display:block;margin-bottom:2px}
.scc-kanban-mod:hover{text-decoration:underline}
.scc-kanban-meta{font-size:12px;color:var(--scc-muted);margin-top:2px}
/* Carte de bibliothèque (STL-4) : version cible, réserve éventuelle, commande repliée (0 JS). */
.scc-kanban-target{font-size:12px;color:var(--scc-text3);margin-top:4px}
.scc-kanban-target-note{font-size:11.5px;font-weight:600;color:#b45309;margin-top:2px}
.scc-kanban-cmd{margin-top:6px;font-size:12px}
.scc-kanban-cmd summary{cursor:pointer;color:var(--scc-accent-dark);font-weight:600}
.scc-kanban-cmd code{display:block;margin-top:6px;padding:7px 9px;border-radius:8px;background:var(--scc-surf2);border:1px solid var(--scc-border);font-size:11.5px;color:var(--scc-text2);white-space:pre-wrap;word-break:break-all}
.scc-kanban-site{font-size:12px;color:var(--scc-muted2);margin-bottom:11px}
.scc-kanban-foot{display:flex;align-items:center;justify-content:space-between;padding-top:10px;border-top:1px solid var(--scc-border)}
.scc-kanban-assignee{font-size:11.5px;color:var(--scc-muted)}
.scc-kanban-arrows{display:flex;gap:5px}
.scc-kanban-arrowform{display:inline}
.scc-kanban-arrow{width:26px;height:26px;border-radius:7px;border:1px solid var(--scc-border);background:var(--scc-surface);color:var(--scc-text3);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.scc-kanban-arrow:hover{background:var(--scc-surf2)}
.scc-kanban-empty{font-size:12.5px;color:var(--scc-muted);padding:8px 4px;font-style:italic}
/* ── Veille CVE ── */
.scc-cve-table{background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px rgba(22,32,55,.04)}
/* Cinq colonnes (g2-13) : Avis (titre, identifiant, module), Sévérité, CVSS, Sites touchés, Publiée ;
   la CVE n'a plus de colonne propre (Q4 : elle est dans l'identifiant sous le titre). */
.scc-cve-header-row{display:grid;grid-template-columns:minmax(0,1.6fr) 130px 140px 170px 110px;gap:14px;padding:12px 20px;background:var(--scc-surf2);border-bottom:1px solid var(--scc-border);font-size:11.5px;font-weight:600;color:var(--scc-muted);text-transform:uppercase;letter-spacing:.4px;align-items:center}
.scc-cve-row{display:grid;grid-template-columns:minmax(0,1.6fr) 130px 140px 170px 110px;gap:14px;padding:14px 20px;border-bottom:1px solid var(--scc-border);align-items:center;text-decoration:none;color:inherit;transition:background .12s}
.scc-cve-row:last-child{border-bottom:none}
.scc-cve-row:hover{background:var(--scc-surf2)}
.scc-cve-advisory{min-width:0}
/* Titre de l'avis : premier bloc direct seulement (le nom du module, dessous, garde son style). */
.scc-cve-advisory>div:first-child{font-size:13.5px;font-weight:600;color:var(--scc-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-cve-sa{font-size:11.5px;color:var(--scc-muted2);font-family:'IBM Plex Mono',monospace}
.scc-cve-sev{display:inline-flex;align-items:center}
.scc-sev-origin{font-size:12px;font-weight:500;color:var(--scc-muted)}
.scc-cve-cvss{font-size:13px;font-weight:600;font-family:'IBM Plex Mono',monospace}
/* N6 : un score par ligne, sans retour dans la colonne ; le second (constat) en retrait. */
.scc-cve-cvss-line{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-cve-cvss-line.is-other{font-size:12px;font-weight:500;color:var(--scc-muted)}
.scc-cve-sites{font-size:13px;font-weight:600;color:var(--scc-text3);font-family:'IBM Plex Mono',monospace}
.scc-cve-sites-main,.scc-cve-sites-off{display:block}
.scc-cve-sites-main{color:var(--scc-text);font-weight:700}
.scc-cve-sites-off{font-size:11.5px;font-weight:400;color:var(--scc-muted)}
.scc-cve-published{font-size:12.5px;color:var(--scc-muted)}
.scc-cve-module{min-width:0;font-size:13px;color:var(--scc-text3)}
.scc-cve-advisory .scc-cve-module{margin-top:4px}
.scc-cve-module div:first-child{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-cve-fixedin{font-size:11.5px;color:#15803d;font-family:'IBM Plex Mono',monospace}
.scc-cve-epss{font-size:12.5px;font-family:'IBM Plex Mono',monospace;color:var(--scc-muted2)}
.scc-cve-epss.is-high{color:#b45309;font-weight:600}
.scc-cve-empty{padding:24px 20px;font-size:13.5px;color:var(--scc-muted);font-style:italic}

/* ── Fiche CVE transversale (C2) ── */
/* Lien de retour : à la largeur de son texte, y compris dans un parent flex en colonne (fiche module,
   fiche d'avis) où il prenait toute la ligne. */
.scc-back{display:inline-flex;align-self:flex-start;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--scc-muted);text-decoration:none;margin-bottom:14px}
.scc-back:hover{color:var(--scc-text2)}
.scc-cve-detail{display:flex;flex-direction:column;gap:16px}
.scc-cve-detail-head-card{padding:24px 26px}
.scc-cve-detail-chips{display:flex;align-items:center;gap:11px;flex-wrap:wrap;margin-bottom:10px}
.scc-cve-detail-chip-cve{font-size:17px;font-weight:600}
/* CVSS de la fiche d'avis (C-04, g2-05) : la teinte sémantique vient du gabarit ; #dc2626 sur --chip
   ne faisait que 4,38:1. Fond surface + bordure neutre : #dc2626 4,83, #c2410c 5,18, #b45309 5,02. */
.scc-cve-detail-chip-cvss{font-size:12.5px;font-weight:600;padding:1px 8px;border-radius:5px;background:var(--scc-surface);border:1px solid var(--scc-border)}
.scc-cve-detail-exploited{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:#b91c1c}
.scc-cve-detail-title{margin:0 0 10px}
.scc-cve-detail-desc{font-size:14.5px;color:var(--scc-text3);line-height:1.6;margin:0 0 18px;max-width:760px}
.scc-cve-detail-meta{display:flex;gap:28px;flex-wrap:wrap;align-items:center;padding-top:16px;border-top:1px solid var(--scc-border)}
.scc-cve-detail-fact{}
.scc-cve-detail-fact-label{font-size:11.5px;color:var(--scc-muted2);margin-bottom:3px}
.scc-cve-detail-fact-val{font-size:14px;font-weight:600;color:var(--scc-text3)}
.scc-cve-detail-fixed{color:#15803d}
.scc-cve-detail-official-link{margin-left:auto;align-self:center;font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px;color:var(--scc-accent);text-decoration:none}
.scc-cve-detail-official-link:hover{text-decoration:underline}
.scc-cve-detail-kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.scc-cve-detail-section-title{font-size:17px;font-weight:600;margin:4px 0 10px}
.scc-cve-detail-table-wrap{background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px rgba(22,32,55,.04)}
.scc-cve-detail-row-header{display:grid;grid-template-columns:1.6fr 200px 170px 40px;gap:14px;padding:12px 20px;background:var(--scc-surf2);border-bottom:1px solid var(--scc-border);font-size:11.5px;font-weight:600;color:var(--scc-muted);text-transform:uppercase;letter-spacing:.4px;align-items:center}
.scc-cve-detail-row{display:grid;grid-template-columns:1.6fr 200px 170px 40px;gap:14px;padding:14px 20px;border-bottom:1px solid var(--scc-border);align-items:center;text-decoration:none;color:inherit;transition:background .12s}
.scc-cve-detail-row:last-child{border-bottom:none}
.scc-cve-detail-row:hover{background:var(--scc-surf2)}
.scc-cve-detail-site-cell{min-width:0;display:flex;flex-direction:column;gap:2px}
.scc-cve-detail-site-name{font-size:14px;font-weight:600;color:var(--scc-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-cve-detail-site-url{font-size:11.5px}
.scc-cve-detail-version{font-size:12.5px}
.scc-cve-detail-ver-installed{color:#b45309}
.scc-cve-detail-ver-arrow{color:var(--scc-muted2)}
.scc-cve-detail-ver-fixed{color:#15803d;font-weight:600}
.scc-cve-detail-rem{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600}
.scc-cve-detail-origin{margin:0 0 14px;font-size:13px;color:var(--scc-text3)}
.scc-cve-detail-state{display:flex;flex-direction:column;gap:2px;font-size:12.5px;font-weight:600}
.scc-cve-detail-state > span:first-child{display:inline-flex;align-items:center;gap:6px}
.scc-cve-detail-state-sub{font-size:11.5px;font-weight:500;color:var(--scc-muted)}
.scc-cve-detail-empty{padding:24px 20px;font-size:13.5px;color:var(--scc-muted);font-style:italic}
@media(max-width:1100px){.scc-cve-detail-kpi-grid{grid-template-columns:repeat(2,1fr)}}

/* ===== Matrice Comparaison versions ===== */
.scc-matrix-wrap{background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:14px;overflow-x:auto;box-shadow:0 1px 2px rgba(22,32,55,.04)}
.scc-matrix{width:100%;border-collapse:collapse;min-width:760px}
.scc-matrix thead tr{background:var(--scc-surf2);border-bottom:1px solid var(--scc-border)}
.scc-matrix th{text-align:left;padding:13px 14px;font-size:11.5px;font-weight:600;color:var(--scc-muted);text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}
.scc-matrix-site-h{position:sticky;left:0;background:var(--scc-surf2);z-index:1}
.scc-matrix-latest{display:block;font-size:10.5px;font-weight:500;color:var(--scc-muted2);text-transform:none;letter-spacing:0;font-family:'IBM Plex Mono',monospace;margin-top:2px}
.scc-matrix-row{border-bottom:1px solid var(--scc-border);cursor:pointer}
.scc-matrix-row:hover{background:var(--scc-surf2)}
.scc-matrix-site{padding:11px 18px;font-size:13.5px;font-weight:600;white-space:nowrap;position:sticky;left:0;background:var(--scc-surface)}
.scc-matrix-row:hover .scc-matrix-site{background:var(--scc-surf2)}
.scc-matrix-url{display:block;font-size:11.5px;font-weight:400;color:var(--scc-muted2);font-family:'IBM Plex Mono',monospace}
.scc-matrix-link{color:inherit}
.scc-matrix-link:hover{color:var(--scc-accent-dark)}
.scc-matrix td{padding:9px 14px}
.scc-matrix-pill{display:inline-flex;flex-direction:column;gap:1px;padding:5px 10px;border-radius:7px}
/* Version et état d'une cellule jamais coupés au milieu (g2-14) : la matrice défile dans son cadre. */
.scc-matrix-ver{font-size:12.5px;font-weight:600;font-family:'IBM Plex Mono',monospace;white-space:nowrap}
.scc-matrix-sub{font-size:11.5px;white-space:nowrap}
@media(max-width:700px){.scc-cve-detail-kpi-grid{grid-template-columns:1fr}}
.scc-portfolio-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}
.scc-portfolio-card{padding:20px 22px}
.scc-portfolio-head{display:flex;gap:18px;align-items:center;margin-bottom:18px}
.scc-portfolio-id{min-width:0}
.scc-portfolio-name{font-size:16px;font-weight:600;margin-bottom:3px}
.scc-portfolio-sites{font-size:12.5px;color:var(--scc-muted2)}
.scc-portfolio-stats{display:flex;gap:18px;padding:14px 0;border-top:1px solid var(--scc-border);border-bottom:1px solid var(--scc-border);margin-bottom:14px}
.scc-portfolio-stat-label{font-size:11.5px;color:var(--scc-muted2);margin-bottom:3px}
.scc-portfolio-stat-val{font-size:18px;font-weight:600}
.scc-portfolio-btn{display:block;width:100%;box-sizing:border-box;text-align:center;padding:9px;border:1px solid var(--scc-border);border-radius:9px;background:var(--scc-surface);font-size:13px;font-weight:600;color:var(--scc-text3);cursor:pointer;text-decoration:none}

/* ══════════ Admin (Sentinelle) ══════════ */
.scc-select{width:100%;height:var(--scc-btn-h);padding:0 12px;border:1px solid var(--scc-border);border-radius:var(--scc-r-input);background:var(--scc-surface);color:var(--scc-text);font-family:inherit;font-size:14px}
.scc-select:focus{outline:2px solid var(--scc-accent);outline-offset:1px;border-color:var(--scc-accent)}
.scc-input:disabled,.scc-select:disabled{background:var(--scc-surf2);color:var(--scc-muted);cursor:not-allowed}
.scc-admin-page{max-width:1080px}
.scc-admin-form{max-width:560px}
/* Carte de formulaire étroite d'un écran client (Équipe : invitation, modification d'un compte). */
.scc-form-card{max-width:640px}
/* Empreinte (SHA-256) ou jeton : Mono, coupée n'importe où plutôt que de déborder (relecture du
   trimestriel, V4). */
.scc-hash{font-family:'IBM Plex Mono',ui-monospace,monospace;overflow-wrap:anywhere;word-break:break-all}
/* Bloc de commande à copier (installation du connecteur : /connector, /connect) : Mono 12 px sur fond
   --bg, bordé, retour à la ligne n'importe où (une URL ou un secret ne fait plus déborder la page). */
.scc-cmd-block{margin:8px 0;padding:10px 12px;border:1px solid var(--scc-border);border-radius:8px;background:var(--scc-bg);color:var(--scc-text2);font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.scc-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}
/* .scc-page-title : une seule définition, section Dashboard — jamais de surcharge de taille. */
.scc-page-subtitle{font-size:14px;color:var(--scc-muted);margin-top:2px}
.scc-page-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.scc-empty{text-align:center;padding:56px 24px;color:var(--scc-muted)}
/* Note de bas d'écran sous un tableau ou une liste (méthode de calcul, périmètre) : détachée de la
   carte qui la précède (Disponibilité, Échéances ; V1). */
.scc-page-note{margin-top:12px;font-size:13px;line-height:1.55}
/* État de surveillance d'un site (écran Disponibilité) : texte coloré 600, teintes de la palette
   (§ 4) — panne en rouge foncé (texte de « Critique »), vérification en ambre, en ligne en vert. */
.scc-avail-state{font-weight:600}
.scc-avail-state--down{color:#b91c1c}
.scc-avail-state--suspect{color:#b45309}
.scc-avail-state--up{color:#15803d}
.scc-empty-icon{color:var(--scc-muted2);margin-bottom:12px;display:flex;justify-content:center}
.scc-empty-text{font-size:14px;margin-bottom:16px}
/* Encart secret — panneau volontairement sombre (pas de token clair pour ça ; cibles du thème sombre) */
.scc-secret-reveal{background:#0e1521;border-radius:var(--scc-r-input);padding:14px 16px;display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}
.scc-secret-reveal-body{min-width:0}
.scc-secret-reveal-label{font-size:12px;color:#94a0b4;margin-bottom:4px}
.scc-secret-reveal-value{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:13px;word-break:break-all;color:#e8edf4}
.scc-secret-copy{height:34px;padding:0 12px;border-radius:var(--scc-r-input);border:1px solid #2a3543;background:#18212e;color:#e8edf4;font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit;flex-shrink:0}
/* Rôle et statut de client (C-07, g4-17) : pastille + texte, plus de pilule bordée ni de gris
   littéral (l'ancien gris d'« Archivé » faisait 3,6:1). */
.scc-chip-role{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;white-space:nowrap}
.scc-chip-role::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.scc-chip-role--admin{color:var(--scc-accent-dark)}
.scc-chip-role--dsi{color:#15803d}
.scc-chip-role--dev{color:var(--scc-text3)}
.scc-chip-cstatus{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;white-space:nowrap}
.scc-chip-cstatus--active{color:#15803d}
.scc-chip-cstatus--archived{color:var(--scc-muted2)}
.scc-list-filter{margin-bottom:14px;max-width:320px}
.scc-table tbody tr[hidden]{display:none}
.scc-confirm summary{list-style:none;cursor:pointer;display:inline-flex}
.scc-confirm summary::-webkit-details-marker{display:none}
/* Confirmation en popover (g4-14) : au-delà de 640 px le panneau ne prend plus de place dans le flux —
   il élargissait la cellule et faisait recalculer toutes les colonnes du tableau. Calé sous le
   déclencheur, à gauche ; à droite seulement dans une cellule ordinaire de tableau (action en fin de
   ligne : il s'étend vers la gauche, dans la largeur du tableau), jamais dans une cellule qui couvre
   la ligne (colspan : le bouton y est à gauche). Le cadre qui défile garde son défilement (le
   relâcher faisait défiler toute la zone principale dès que le tableau dépasse l'écran) ; il réserve
   seulement sous le tableau la hauteur du panneau tant qu'il est ouvert (pseudo-élément : le
   padding du cadre est souvent posé en ligne), pour ne pas le rogner.
   Sous 640 px, le panneau revient dans le flux (responsive.css). */
.scc-confirm{position:relative}
.scc-confirm-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:30;width:max-content;max-width:340px;padding:12px 14px;box-shadow:var(--scc-sh-pop);white-space:normal}
.scc-table td:not([colspan]) .scc-confirm-panel{left:auto;right:0}
.scc-table-wrap:has(.scc-confirm[open])::after{content:"";display:block;height:170px}
.scc-confirm-text{font-size:12.5px;color:var(--scc-text2);margin-bottom:10px}

/* ── Sélecteur d'organisation (header) ── */
.scc-org-menu{position:relative}
.scc-org-trigger{display:flex;align-items:center;gap:8px;height:38px;padding:0 12px;border:1px solid var(--scc-border);border-radius:9px;background:var(--scc-surface);color:var(--scc-text2);font-size:13.5px;font-weight:500;font-family:inherit;cursor:pointer;max-width:220px}
.scc-org-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-org-dropdown{position:absolute;top:calc(100% + 6px);left:0;min-width:220px;max-height:60vh;overflow-y:auto;background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:13px;box-shadow:0 14px 38px rgba(22,32,55,.18);z-index:80;padding:6px;display:none}
.scc-org-menu:hover .scc-org-dropdown,.scc-org-menu:focus-within .scc-org-dropdown{display:block}
/* Ouverture au clic (header.js : .is-open et `hidden`, g1-10), comme le menu profil ; sans script, le
   survol et le focus ouvrent toujours la liste. */
.scc-org-menu.is-open .scc-org-dropdown{display:block}
.scc-org-item{display:block;padding:8px 12px;border-radius:8px;font-size:13px;font-weight:500;color:var(--scc-text2);text-decoration:none;white-space:nowrap}
.scc-org-item:hover{background:var(--scc-surf2)}
.scc-org-item.is-active{color:var(--scc-accent);font-weight:600}

/* ── Alertes ── */
.scc-chip-mode{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;white-space:nowrap}
.scc-chip-mode::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
/* Mode d'envoi (C-07, g3-07) : pastille + texte coloré, plus de pilule bordée ; teintes ramenées à la
   palette (§4) — urgence en rouge foncé, récapitulatifs en accent foncé (au lieu de deux
   bleus et d'un indigo hors palette), délais en orange, baisse de score en ambre, annonces et échéances neutres. */
.scc-chip-mode--immediate{color:#b91c1c}
.scc-chip-mode--digest{color:var(--scc-accent-dark)}
.scc-chip-mode--sla{color:#c2410c}
.scc-chip-mode--scoredrop{color:#b45309}
.scc-chip-mode--weekly{color:var(--scc-accent-dark)}
.scc-chip-mode--monthly{color:var(--scc-accent-dark)}
.scc-chip-mode--quarterly{color:var(--scc-accent-dark)}
.scc-chip-mode--announcement{color:var(--scc-muted)}
.scc-chip-mode--deadlines{color:var(--scc-muted)}
/* Sondes externes : panne de site (même urgence que l'alerte immédiate) et fichier exposé
   (même palette que le dépassement de délai, action attendue du client). */
.scc-chip-mode--availability{color:#b91c1c}
.scc-chip-mode--exposure{color:#c2410c}
/* Aggravation vers critique (EscalationDispatcher) : la palette de l'alerte immédiate. */
.scc-chip-mode--escalation{color:#b91c1c}
/* Santé et accès (HealthAlertDispatcher) : l'accès reprend la palette de l'immédiat, la santé celle du délai. */
.scc-chip-mode--access{color:#b91c1c}
.scc-chip-mode--health{color:#c2410c}
/* Journal des envois (/alerts) : détail replié de chaque envoi, sans JavaScript (P17). */
.scc-journal-details{margin-top:6px;font-size:12px}
.scc-journal-details summary{cursor:pointer;color:var(--scc-accent-dark);font-weight:600}
.scc-journal-details ul{margin:6px 0 0;padding-left:16px;color:var(--scc-text2)}
.scc-alert-channels{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}
.scc-alert-channel{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;min-width:200px}
.scc-alert-channel-name{font-size:14px;font-weight:600;color:var(--scc-text)}
.scc-alert-channel-state{font-size:12px;font-weight:600;color:var(--scc-muted)}
.scc-alert-channel-state.is-on{color:#15803d}
.scc-alert-channel.is-soon{opacity:.6}

/* ── Alertes — nouvelle structure maquette ── */
.scc-alerts-grid{display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:start}
@media(max-width:860px){.scc-alerts-grid{grid-template-columns:1fr}}
.scc-alerts-feed{padding:0;overflow:hidden}
.scc-event-row{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;text-decoration:none;color:inherit;border-bottom:1px solid var(--scc-border);transition:background .12s}
.scc-event-row:last-child{border-bottom:none}
.scc-event-row:hover{background:var(--scc-surf2)}
.scc-event-dot{flex-shrink:0;width:9px;height:9px;border-radius:50%;margin-top:5px}
.scc-event-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.scc-event-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.scc-event-head strong{font-size:13.5px;font-weight:600;color:var(--scc-text)}
/* Étiquette d'événement (C-07, g3-06) : petites capitales colorées sans fond ni bordure (maquette
   Alertes, comme .scc-tag--caps) ; les fonds et bordures en ligne disparaissent avec V3. */
.scc-event-tag{display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:0;border:0;background:none}
.scc-event-detail{font-size:12.5px;color:var(--scc-muted);line-height:1.4}
.scc-event-time{flex-shrink:0;font-size:11.5px;color:var(--scc-muted2);white-space:nowrap;margin-top:3px}
.scc-notif-panel{padding:20px;display:flex;flex-direction:column;gap:12px}
.scc-notif-panel h3{font-size:15px;font-weight:700;color:var(--scc-text);margin:0}
.scc-notif-panel form{display:flex;flex-direction:column;gap:10px}
.scc-switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--scc-border);cursor:pointer;font-size:13.5px;color:var(--scc-text2)}
.scc-switch-row:last-of-type{border-bottom:none}
/* Toggle switch (checkbox stylée) */
.scc-switch{appearance:none;-webkit-appearance:none;position:relative;width:36px;height:20px;border-radius:10px;background:var(--scc-muted2);border:none;cursor:pointer;flex-shrink:0;transition:background .15s}
.scc-switch::after{content:'';position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.scc-switch:checked{background:var(--scc-accent)}
.scc-switch:checked::after{transform:translateX(16px)}
/* Règle verrouillée (toujours active) : interrupteur estompé, ligne non cliquable. */
.scc-switch:disabled{opacity:.55;cursor:default}
.scc-switch-row:has(.scc-switch:disabled){cursor:default}
/* Libellé d'une règle (maquette Alertes, g3-21) : 13,5 / 600 --text2, précision en ligne d'aide
   11,5 px --muted2 dessous. Canaux d'envoi séparés des règles par un filet. */
.scc-switch-text{display:flex;flex-direction:column;min-width:0}
.scc-switch-label{font-size:13.5px;font-weight:600;color:var(--scc-text2)}
.scc-switch-hint{font-size:11.5px;line-height:1.4;color:var(--scc-muted2)}
.scc-notif-panel .scc-fieldset{margin-top:6px;padding-top:16px;border-top:1px solid var(--scc-border)}
/* Légende flottante : hors du filet (une légende rendue se place sur la bordure haute du fieldset). */
.scc-notif-panel .scc-fieldset>.scc-legend{float:left;width:100%;margin-bottom:9px}
.scc-notif-panel .scc-fieldset>.scc-legend~*{clear:both}
/* Titre de section en tête de carte (C-06) : la marge intérieure de la carte suffit ; 28 px de plus
   le faisaient démarrer à 46 px du bord. Premier enfant de la carte, ou de son premier bloc
   (.scc-sec-head, enveloppe de padding). */
.scc-card>.scc-section-title:first-child,.scc-card>:first-child>.scc-section-title:first-child{margin-top:0}
.scc-sec-head>.scc-section-title{margin-bottom:0}
/* Titre de section d'un groupe en retard (g1-11) : pastille rouge et texte neutre, jamais de rouge
   en texte sur --bg (4,27:1). */
.scc-section-title--danger{display:flex;align-items:center;gap:8px}
.scc-section-title--danger::before{content:"";width:8px;height:8px;border-radius:50%;background:#dc2626;flex:none}
/* En-tête de carte (maquette) : titre à gauche, méta ou action à droite (g2-18). */
.scc-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap;margin-bottom:12px}
.scc-card-head .scc-section-title{margin:0}
.scc-others-title{margin:22px 0 14px}
/* Précision d'un titre de section (unité comptée, STL-5) : lue après le titre, jamais à sa place. */
.scc-section-title-sub{font-weight:500;font-size:13px}
/* ── Vu depuis Internet (fiche site, N21) ── */
.scc-ext-intro{margin:0 0 4px;font-size:13px}
.scc-ext-family{margin-top:14px}
.scc-ext-family-title{margin-bottom:4px;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted)}
.scc-ext-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 0;border-top:1px solid var(--scc-border);font-size:13px}
.scc-ext-label{color:var(--scc-text2)}
.scc-ext-result{display:inline-flex;align-items:center;gap:6px;font-weight:600;white-space:nowrap}
.scc-ext-result::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.scc-ext-result--ok{color:#15803d}
.scc-ext-result--constats{color:#c2410c}
.scc-ext-result--non_verifie{color:var(--scc-muted)}
.scc-ext-note{margin:12px 0 0;font-size:12.5px}
.scc-others-card{padding:0;overflow:hidden}
.scc-other-row-header,.scc-other-row{display:grid;grid-template-columns:1.6fr 140px 110px 70px 110px 140px;gap:14px;align-items:center;padding:14px 20px}
.scc-other-row-header{padding:12px 20px;background:var(--scc-surf2);border-bottom:1px solid var(--scc-border);font-size:11.5px;font-weight:600;color:var(--scc-muted);text-transform:uppercase;letter-spacing:.4px}
.scc-other-row{border-bottom:1px solid var(--scc-border);font-size:13px}
.scc-other-row:last-child{border-bottom:none}
.scc-other-row:hover{background:var(--scc-surf2)}
.scc-other-target{font-size:12.5px;color:var(--scc-text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scc-other-kind{font-size:11.5px;font-weight:600;color:var(--scc-muted2)}
.scc-other-info{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;color:var(--scc-muted);background:var(--scc-chip);border-radius:6px;padding:2px 8px}
.scc-other-target-cell{display:flex;align-items:center;gap:8px;min-width:0}
.scc-other{border-bottom:1px solid var(--scc-border)}
.scc-other:last-child{border-bottom:none}
.scc-other>summary.scc-other-row{border-bottom:none;cursor:pointer;list-style:none}
.scc-other>summary.scc-other-row::-webkit-details-marker{display:none}
.scc-other-chev{flex:none;transition:transform .15s}
.scc-other[open] .scc-other-chev{transform:rotate(90deg)}
.scc-other-cves{padding:4px 20px 14px 44px;background:var(--scc-surf2);display:flex;flex-direction:column;gap:8px}
.scc-other-cve{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12.5px}
/* Bibliothèque vulnérable (STL-4) : cible de remédiation en tête du détail. */
.scc-other-pkg{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--scc-text3);padding:6px 0 8px;border-bottom:1px solid var(--scc-border)}
.scc-other-pkg b{font-weight:600;color:var(--scc-text2)}
.scc-other-pkg-note{font-weight:600;color:#b45309}
.scc-other-pkg-link{margin-left:auto;font-weight:600;color:var(--scc-accent-dark)}
.scc-other-pkg-link:hover{color:var(--scc-accent)}
/* Graphique du score : la marge du SVG passe sur le conteneur (elle fusionnait avec lui et
   décalait les étiquettes). Étiquettes de 16 px posées à 0 du haut et du bas : leur milieu
   tombe à 8 px, sur les lignes y=8 et y=192 ; gouttière gauche pour ne jamais toucher la courbe. */
.scc-chart-wrap{position:relative;padding-left:30px;margin-top:6px}
.scc-chart-wrap .scc-chart{margin-top:0}
.scc-chart-grid{stroke:var(--scc-border);stroke-width:1;vector-effect:non-scaling-stroke}
.scc-chart-axis{position:absolute;left:0;width:24px;text-align:right;line-height:16px;font-size:10.5px;color:var(--scc-muted2);font-family:'IBM Plex Mono',monospace}
.scc-chart-axis-top{top:0}
.scc-chart-axis-bottom{bottom:0}
.scc-chart-marker{stroke:var(--scc-muted2);stroke-width:1;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}
.scc-chart-marks{position:absolute;left:30px;right:0;top:0;bottom:0;pointer-events:none}
.scc-chart-mark{position:absolute;top:2px;transform:translateX(5px);padding:0 5px;border-radius:4px;background:var(--scc-surface);color:var(--scc-muted);font-size:10.5px;line-height:16px;white-space:nowrap}
.scc-chart-mark.is-left{transform:translateX(calc(-100% - 5px))}
.scc-chart-stored{fill:none;stroke:var(--scc-muted2);stroke-width:1.5;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}
.scc-chart-xaxis{display:flex;justify-content:space-between;margin:4px 0 0 30px;font-size:10.5px;color:var(--scc-muted)}
.scc-chart-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:8px;font-size:12px;color:var(--scc-muted)}
.scc-chart-legend-swatch{display:inline-block;width:18px;height:0;margin-right:6px;vertical-align:middle;border-top:2px solid var(--scc-accent)}
.scc-chart-legend-swatch.is-stored{border-top:2px dashed var(--scc-muted2)}
.scc-inv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.scc-inv-card{background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:14px;padding:18px 20px;box-shadow:0 1px 2px rgba(22,32,55,.04)}
.scc-inv-label{font-size:12px;color:var(--scc-muted);margin-bottom:9px}
.scc-inv-value{font-size:21px;font-weight:600;color:var(--scc-text2);margin-bottom:5px}
.scc-inv-sub{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600}

/* Écran Paramètres (settings) — cartes SLA + Analyse&sync, calquées sur la maquette */
.scc-set{display:flex;flex-direction:column;gap:16px;max-width:720px}
.scc-set-card{padding:22px 24px;display:flex;flex-direction:column;gap:4px}
.scc-set-card h3{font-size:15px;font-weight:600;color:var(--scc-text);margin:0}
.scc-set-card>.scc-muted{font-size:12.5px;margin:0 0 12px}
.scc-set-list{display:flex;flex-direction:column;gap:12px}
.scc-set-row{display:flex;align-items:center;gap:13px}
.scc-set-name{flex:1;display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--scc-text2)}
.scc-set-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.scc-set-control{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--scc-muted)}
.scc-set-num{width:64px;height:34px;text-align:center;border:1px solid var(--scc-border);border-radius:9px;background:var(--scc-surface);color:var(--scc-text2);font-family:'IBM Plex Mono',monospace;font-size:13px;font-weight:600}
.scc-set-num:focus{outline:2px solid var(--scc-accent);outline-offset:1px;border-color:var(--scc-accent)}
.scc-set-num:disabled{background:var(--scc-surf2);color:var(--scc-muted);cursor:not-allowed}
.scc-field-hint{font-size:12.5px;font-weight:400;color:var(--scc-muted2);margin:6px 0 0}
.scc-set-kv{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid var(--scc-border)}
.scc-set-kv:first-of-type{padding-top:0;border-top:none}
.scc-set-kv-label{font-size:13px;color:var(--scc-muted)}
.scc-set-kv-value{font-size:13px;font-weight:600;color:var(--scc-text2)}
.scc-set-kv-value.is-mono{font-family:'IBM Plex Mono',monospace}
.scc-set-card .scc-btn-primary{align-self:flex-start;margin-top:14px}

/* Écran Rapports */
.scc-report-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:20px}
.scc-report-actions{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
/* Rangée étroite (~700 px) : les boutons passent à la ligne entiers, le formulaire d'export dessous,
   jamais un libellé écrasé sur trois lignes. Rangée alignée en bas : un champ à libellé au-dessus
   (« Évolution depuis le », .scc-filter-field de /reports/{siteId}) a son contrôle au niveau des
   boutons (V3, besoin 9). */
.scc-report-actions>.scc-btn-secondary,.scc-report-actions label{flex:none;white-space:nowrap}
/* Case « Anonymiser » centrée sur la ligne des boutons (hauteur d'un bouton). */
.scc-report-actions>.scc-check{height:var(--scc-btn-h)}

/* Page de direction et résumé exécutif (dashboard/_executive_summary.html.twig, lot direction 2) :
   les classes du PDF (pdf/_theme.html.twig), réécrites ici avec les jetons de l'écran. */
.scc-exec{font-size:13.5px;line-height:1.55;color:var(--scc-text2)}
.scc-exec-card{padding:28px 32px;margin-bottom:8px}
.scc-exec .pdf-brand{width:100%;border-collapse:collapse;border-bottom:2px solid var(--scc-text);margin-bottom:14px}
.scc-exec .pdf-brand td{width:50%;padding:0 0 10px;vertical-align:bottom}
.scc-exec .pdf-brand-name{font-size:15px;font-weight:600;color:var(--scc-accent)}
.scc-exec .pdf-brand-org{font-size:13px;font-weight:500;color:var(--scc-text3);text-align:right}
.scc-exec .pdf-title{font-size:20px;font-weight:700;color:var(--scc-text);margin:0 0 4px}
.scc-exec .pdf-period{font-size:12px;color:var(--scc-muted2);margin:0 0 16px}
.scc-exec .pdf-kpi{width:100%;border-collapse:separate;border-spacing:10px 0;margin:4px -10px 14px}
/* Chiffres alignés en haut : un libellé sur deux lignes décalait le chiffre de sa case de 9 px (V6). */
.scc-exec .pdf-kpi td{border:1px solid var(--scc-border);background:var(--scc-surf2);border-radius:8px;text-align:center;padding:12px 8px;vertical-align:top}
.scc-exec .pdf-kpi-v{font-family:'IBM Plex Mono',monospace;font-size:22px;font-weight:500;color:var(--scc-text)}
.scc-exec .pdf-kpi-l{font-size:12px;color:var(--scc-muted)}
.scc-exec .pdf-tone-danger{color:#dc2626}
.scc-exec .pdf-tone-warning{color:#b45309}
.scc-exec .pdf-tone-success{color:#15803d}
/* Note du tableau de synthèse (score_badge) : couleur de la note comme au PDF (§ 4), E en variante
   texte #b91c1c. */
.scc-exec .pdf-score{font-weight:600}
.scc-exec .pdf-grade-a{color:#15803d}
.scc-exec .pdf-grade-b{color:#4d7c0f}
.scc-exec .pdf-grade-c{color:#a16207}
.scc-exec .pdf-grade-d{color:#c2410c}
.scc-exec .pdf-grade-e{color:#b91c1c}
.scc-exec .pdf-callout{border-left:3px solid var(--scc-accent);background:var(--scc-accent-soft);border-radius:6px;padding:12px 14px;margin:12px 0}
.scc-exec .pdf-callout-title{font-weight:600;color:var(--scc-text);margin:0 0 6px}
.scc-exec .pdf-callout-body ul{margin:0;padding-left:20px}
.scc-exec .pdf-callout-warning{border-left-color:#b45309;background:#fffbeb}
/* Lot mobile : les marges sont sur le cadre qui défile (contexte de formatage : celles du tableau
   ne fusionneraient plus avec ses voisins). */
.scc-exec .scc-table-wrap{margin:6px 0 8px}
.scc-exec .pdf-exec-rows{width:100%;border-collapse:collapse;margin:0}
.scc-exec .pdf-decision-summary{font-weight:600;color:var(--scc-text);margin:6px 0 10px}
.scc-exec .pdf-decision-more{font-size:12px;font-weight:400;color:var(--scc-muted2)}
.scc-exec .pdf-actions-wrap{margin:0 0 8px}
.scc-exec .pdf-actions{width:100%;border-collapse:collapse;font-size:13px;margin:0}
.scc-exec .pdf-actions th{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted2);border-bottom:1px solid var(--scc-border);padding:6px 8px;text-align:left}
.scc-exec .pdf-actions td{padding:8px;border-bottom:1px solid var(--scc-chip);vertical-align:top}
.scc-exec .pdf-actions tr.grp td{font-weight:600;color:var(--scc-text);padding-top:12px}
.scc-exec .pdf-action-task{font-weight:600;color:var(--scc-text)}
.scc-exec .pdf-action-why{font-size:12px;color:var(--scc-muted2)}
.scc-exec .pdf-actions .overdue{color:#b91c1c}
.scc-exec .pdf-callout-danger{border-left-color:#dc2626;background:#fef2f2}
.scc-exec .pdf-callout-success{border-left-color:#15803d;background:#f0fdf4}
.scc-exec .pdf-exec-rows th{font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--scc-muted);border-bottom:1px solid var(--scc-border);padding:8px 6px;text-align:left}
.scc-exec .pdf-exec-rows td{padding:8px 6px;border-bottom:1px solid var(--scc-chip)}
.scc-exec .pdf-exec-more,.scc-exec .pdf-exec-foot{font-size:12px;color:var(--scc-muted);margin:6px 0 0}
/* Ronde 3 (point 29) : note posée sur un inventaire inconnu. */
.scc-exec .pdf-exec-note-flag{font-size:11.5px;color:var(--scc-muted)}

/* ══════════ Lot mobile (08/10) : éléments propres au tiroir ══════════
   Masqués au-delà de 900 px ; responsive.css les montre sous le seuil. Après .scc-icon-btn, dont
   ils reprennent l'allure : même spécificité, la dernière règle l'emporte. */
.scc-nav-toggle{display:none}
.scc-nav-close{display:none}
/* Sélecteur d'organisation du tiroir (lot mobile) : montré sous 900 px (responsive.css), en tête. */
.scc-nav-org{display:none;padding-bottom:10px;border-bottom:1px solid var(--scc-border)}
.scc-nav-org-item{padding:7px 10px;border-radius:8px;font-size:13.5px;font-weight:500;color:var(--scc-text3);overflow-wrap:anywhere}
.scc-nav-org-item.is-active{background:var(--scc-accent-soft);color:var(--scc-accent-dark);font-weight:600}
/* Fermeture de la palette ⌘K (lot mobile) : montrée sous 640 px, palette en plein écran. Hors de
   .scc-root (la palette y échappe pour rester active quand le fond est inerte) : anneau propre. */
.scc-cmd-close{display:none;width:38px;height:38px;align-items:center;justify-content:center;border:1px solid var(--scc-border);border-radius:9px;background:var(--scc-surf2);color:var(--scc-muted);font-size:20px;line-height:1;cursor:pointer;font-family:inherit}
.scc-cmd-close:focus-visible{outline:2px solid var(--scc-accent);outline-offset:2px}
/* ── Demandes d'intervention (lot « suivi des demandes ») ──
   Détail client et admin : méta en puces dans la carte (sans le filet de .scc-site-meta, qui
   suit d'habitude un en-tête), texte saisi qui garde ses retours à la ligne, signature d'étape
   discrète. Admin : barre de filtres qui passe à la ligne (pas .scc-filters, qui défile sous
   640 px), champ de note sur plusieurs lignes. */
.scc-iv-meta{margin-top:0;padding-top:0;border-top:0}
.scc-iv-text{white-space:pre-line;margin:0}
.scc-iv-by{color:var(--scc-muted2);font-size:12.5px}
.scc-iv-aside{font-weight:400;font-size:12.5px}
.scc-iv-hint{margin:0 0 12px}
.scc-iv-hint-sm{font-size:12.5px;margin:6px 0 10px}
.scc-iv-to{margin-bottom:14px}
.scc-iv-note-field{height:auto;padding:10px 12px;line-height:1.5;resize:vertical}
/* Barre de filtres d'un écran (C-13, g1-24, g3-26) : chaque filtre est un libellé au style de
   .scc-field-label au-dessus d'un .scc-select (38 px). L'alias .scc-iv-filters est retiré (R). */
.scc-filter-bar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end;margin:0 0 16px}
.scc-filter-field{display:flex;flex-direction:column;gap:7px;min-width:0;max-width:100%}
.scc-filter-field .scc-select{width:auto;min-width:160px;max-width:100%}
.scc-iv-nowrap{white-space:nowrap}
.scc-iv-gap{margin-top:16px}
.scc-iv-back{margin:14px 0 0}
.scc-flash a.scc-iv-flash-link{color:inherit;font-weight:600;text-decoration:underline}
/* ── Voie 1 « shell » (lot design 2, 15/10) : groupe Administration repliable (D1, g4-04) ──
   `<details>` de _nav_admin.html.twig : l'en-tête garde le style de .scc-nav-group-label (sur-titre
   10,5 px, DS § 3), avec un chevron à droite. Replié, il montre la pastille ambre du total à traiter
   (lue « Administration 2 à traiter ») ; ouvert, elle s'efface : l'entrée garde la sienne. */
.scc-nav-fold-head{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;border-radius:8px}
.scc-nav-fold-head::-webkit-details-marker{display:none}
.scc-nav-fold-head:hover{color:var(--scc-text2)}
.scc-nav-fold-head::after{content:"";flex:none;width:6px;height:6px;margin:0 3px 3px 0;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease}
.scc-nav-fold[open]>.scc-nav-fold-head::after{margin-bottom:0;transform:rotate(45deg)}
.scc-nav-fold-title{flex:1;min-width:0}
.scc-nav-fold-head .scc-nav-badge{letter-spacing:0}
.scc-nav-fold[open]>.scc-nav-fold-head .scc-nav-badge,.scc-nav-fold[open]>.scc-nav-fold-head .scc-nav-fold-sr{display:none}
.scc-nav-fold-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
@media (prefers-reduced-motion:reduce){.scc-nav-fold-head::after{transition:none}}
/* ── Voie 1 « shell » (lot design 2) : galerie /admin/design (route de dev), sans style en ligne (V4) ── */
.scc-gallery-row{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin:8px 0 24px}
.scc-gallery-row--tight{gap:12px}
.scc-gallery-row--top{align-items:flex-start;gap:24px}
.scc-gallery-cell{display:flex;flex-direction:column;align-items:center;gap:6px}
.scc-gallery-caption{font-size:12px}
.scc-gallery-block{margin:8px 0 24px}
.scc-gallery-block--narrow{max-width:320px}
.scc-gallery-block--card{max-width:380px}
.scc-gallery-block--wide{max-width:700px}
.scc-gallery-block--nav{max-width:220px;background:var(--scc-surface);border:1px solid var(--scc-border);border-radius:8px;padding:8px}
.scc-gallery-block--frame{border:1px solid var(--scc-border);border-radius:12px;overflow:hidden}
/* Voie 1 « shell » (lot design 2) — échelle typographique (DS § 3) appliquée hors pages publiques :
   un texte courant en minuscules sous 11,5 px (puces, heures, sous-libellés) passe au palier
   « labels » 11,5 px ; .scc-soon (sur-titre en capitales) passe de 10 à 10,5 px, plus petit palier.
   Gardés, justifiés : sur-titres en capitales de 10,5 à 11 px (palier DS) ; compteurs en pastille
   (.scc-nav-badge 11 px, .scc-notif-badge 10,5 px dans un rond de 17 px) ; glyphes-icônes
   (.scc-help-dot « ? », .scc-sort-arrow ▲▼) ; touches .scc-cmd-key (10,5 px) ; graduations des
   graphiques (.scc-chart-*, .scc-live-axis : colonne d'axe de 24 px). */

/* ── Voie 2 « écrans » (15/10) : fiche site, page des modules ── */
.scc-card-gap{margin-bottom:18px}
.scc-card-flush{padding:0}
/* Carte « Effort de migration » et jauge (onglet Migration). */
.scc-mig-effort-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.scc-mig-effort-title{font-weight:600}
.scc-mig-gauge-title{font-weight:600;margin-bottom:8px}
.scc-mig-note{font-size:13px}
.scc-mig-gauge-note{font-size:13px;margin-top:8px}
.scc-mig-list{margin:10px 0 0;padding-left:18px;font-size:13px;line-height:1.7}
.scc-mig-rules-title{font-size:12px;font-weight:600;margin-top:12px}
.scc-mig-rules{margin:4px 0 0;padding-left:18px;font-size:12px;line-height:1.6}
.scc-mig-foot{font-size:12px;margin-top:8px}
/* Page des modules : en-têtes triables (bouton dans l'en-tête), ligne dépliable. */
.scc-sort-btn{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit}
.scc-sort-btn:focus-visible{outline:2px solid var(--scc-accent);outline-offset:2px;border-radius:3px}
.scc-sort-btn::after{content:"";width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;opacity:.3}
th[aria-sort="ascending"] .scc-sort-btn::after{border-top:0;border-bottom:5px solid currentColor;opacity:1}
th[aria-sort="descending"] .scc-sort-btn::after{opacity:1}
#mods tr.mrow{cursor:pointer}
#mods tr.mrow-core{background:var(--scc-surf2)}
#mods tr.mrow:focus-visible{outline:2px solid var(--scc-accent);outline-offset:-2px}
.scc-ext-pending{margin:0 0 6px}
/* Actions de ligne entre 641 et 1100 px : la colonne ne garde plus la largeur de toutes les actions
   sur une ligne (le tableau défilait, actions hors écran) ; elles passent à la ligne, empilées au
   besoin, et la cellule reste collée au bord droit du cadre quand le tableau défile (jamais hors d'atteinte). Sous 640 px la carte s'en charge (responsive.css). */
@media (min-width:641px) and (max-width:1100px){
  .scc-cell-actions{white-space:normal}
  .scc-table--cards .scc-cell-actions{white-space:normal;position:sticky;right:0;z-index:1;background:var(--scc-surface);box-shadow:-8px 0 8px -8px rgba(15,23,42,.18)}
  /* Revue du lot design 2 (I-2) : la cellule collée de la ligne suivante recouvrait la confirmation
     ouverte (« Régénérer ») ; la cellule qui porte une confirmation ouverte passe au-dessus. */
  .scc-table--cards .scc-cell-actions:has(.scc-confirm[open]){z-index:3}
  .scc-table .scc-cell-actions>*{margin:2px 8px 2px 0}
  .scc-table .scc-cell-actions>.scc-confirm[open]{display:block;margin-right:0}
}

/* ── Hub « état du site » de la fiche (maquette A) : quatre tuiles égales sous l'en-tête ──
   Le lien du titre s'étend à toute la tuile (::after) ; le lien « Comment est-il calculé ? » de la
   tuile Sécurité passe au-dessus (z-index). 2 × 2 sous 900 px, une colonne sous 640 px
   (responsive.css). Tons des valeurs (seuils publics de Google) : vert A, ambre « Modérée »,
   rouge « Critique » du § 4 ; jamais seuls (chiffre visible, libellé du ton). */
.scc-hub{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.scc-hub-tile{position:relative;display:flex;flex-direction:column;gap:6px;min-width:0;padding:16px 18px;transition:box-shadow .15s}
.scc-hub-tile:hover{box-shadow:var(--scc-sh-hover)}
.scc-hub-head{display:flex;align-items:center;gap:8px;color:var(--scc-muted2);margin-bottom:4px}
.scc-hub-icon{flex:none;display:block}
.scc-root .scc-hub-link{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted2)}
.scc-hub-link::after{content:"";position:absolute;inset:0;border-radius:inherit}
.scc-hub-main{display:flex;align-items:center;gap:12px;min-width:0}
.scc-hub-col{display:flex;flex-direction:column;gap:4px;min-width:0}
.scc-hub-value{display:flex;align-items:center;gap:6px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:24px;font-weight:600;line-height:1.15;letter-spacing:-.5px;color:var(--scc-text)}
.scc-hub-value--none{color:var(--scc-muted2)}
.scc-hub-duo{display:flex;gap:18px}
.scc-hub-duo-col{min-width:0}
.scc-hub-duo-label{font-size:11.5px;color:var(--scc-muted2)}
.scc-hub-sub{font-size:12.5px;line-height:1.4;color:var(--scc-muted);overflow-wrap:anywhere}
.scc-hub-note{font-size:12px;color:var(--scc-muted2)}
.scc-hub-fail{font-size:12.5px;font-weight:600;line-height:1.4;color:#b45309;overflow-wrap:anywhere}
.scc-hub-cap{font-size:12px;font-weight:600;line-height:1.35;color:#c2410c}
.scc-hub-help{position:relative;z-index:1;display:inline-block;align-self:flex-start;max-width:none;margin-top:0;text-align:left}
.scc-hub-go{margin-top:auto;padding-top:4px;font-size:12px;font-weight:600;color:var(--scc-accent-dark)}
.scc-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.scc-perf-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none;margin-right:6px;vertical-align:middle;background:var(--scc-muted2)}
.scc-perf-dot.is-good{background:#15803d}
.scc-perf-dot.is-average{background:#b45309}
.scc-perf-dot.is-poor{background:#dc2626}
.scc-perf-ink.is-good{color:#15803d}
.scc-perf-ink.is-average{color:#b45309}
.scc-perf-ink.is-poor{color:#b91c1c}

/* ── Onglet Performance de la fiche ── */
.scc-perf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.scc-perf-box{padding:16px 18px;min-width:0}
.scc-perf-box-title{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--scc-muted2)}
.scc-perf-score{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap}
.scc-perf-score-val{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:34px;font-weight:600;line-height:1.1;letter-spacing:-1px;color:var(--scc-text)}
.scc-perf-score-max{font-size:13px;color:var(--scc-muted2)}
.scc-perf-tone{margin-left:8px;font-size:12.5px;font-weight:600}
.scc-perf-note{font-size:12px;color:var(--scc-muted2);margin-top:2px}
.scc-perf-vitals{width:100%;border-collapse:collapse;font-size:13px}
.scc-perf-vitals td{padding:7px 0;border-top:1px solid var(--scc-border);color:var(--scc-text2)}
.scc-perf-vitals .scc-perf-vital-val{text-align:right;white-space:nowrap;padding-left:12px}
.scc-perf-box .scc-table-wrap{margin-top:10px}
.scc-perf-source{font-size:12px;line-height:1.45;color:var(--scc-muted);margin:10px 0 0}
.scc-perf-text{font-size:13px;color:var(--scc-muted);margin:4px 0 0}
.scc-perf-spark{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--scc-muted2)}
.scc-perf-eco{display:flex;align-items:center;gap:16px}
.scc-perf-eco-letter{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:38px;font-weight:700;line-height:1}
.scc-perf-failing{margin-bottom:16px}
