  /* Polices de marque Kabin (charte 2023), substitut Roboto si absentes */
  @font-face { font-family: "Forma DJR Deck"; src: url("brand/fonts/forma-djr-deck-bold.otf") format("opentype"); font-weight: 700; font-style: normal; font-display: swap; }
  @font-face { font-family: "Forma DJR Deck"; src: url("brand/fonts/forma-djr-deck-medium.otf") format("opentype"); font-weight: 500; font-style: normal; font-display: swap; }
  @font-face { font-family: "Forma DJR Text"; src: url("brand/fonts/forma-djr-text-regular.otf") format("opentype"); font-weight: 400; font-style: normal; font-display: swap; }
  @font-face { font-family: "Forma DJR Text"; src: url("brand/fonts/forma-djr-text-italic.otf") format("opentype"); font-weight: 400; font-style: italic; font-display: swap; }
  @font-face { font-family: "GT Flexa"; src: url("brand/fonts/gt-flexa-medium.ttf") format("truetype"); font-weight: 500; font-style: normal; font-display: swap; }

  :root {
    /* Theme sombre (defaut) */
    --bg: #0E1116;
    --panel: #161B22;
    --panel-2: #1C232D;
    --line: #2A3340;
    --line-soft: #222A34;
    --ink: #E6EBF0;
    --ink-dim: #8B97A6;
    --ink-faint: #5A6675;
    --amber: #F0AD47;
    --coral: #E94932;
    --pink: #EA6EB6;
    --blue: #3259B3;
    --blue-bright: #5B8DEF;
    --green: #386937;
    --green-bright: #57A056;
    --grey: #9A9A9A;
    /* Carte */
    --map-bg: #10151B;
    --map-land: #1E262F;
    --map-stroke: #10151B;
    /* Noir de marque (en-tete, identique dans les deux themes) */
    --brand-black: #1D1D1B;
    --mono: "SFMono-Regular", "JetBrains Mono", "Menlo", "Consolas", monospace;
    --sans: "Forma DJR Text", Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
    --deck: "Forma DJR Deck", "Forma DJR Text", Roboto, -apple-system, sans-serif;
    --flexa: "GT Flexa", "Forma DJR Text", Roboto, -apple-system, sans-serif;
  }

  /* Theme clair (charte : contenu fond blanc, texte noir #1D1D1B) */
  body.theme-light {
    --bg: #FFFFFF;
    --panel: #FFFFFF;
    --panel-2: #F4F6F8;
    --line: #E2E5EA;
    --line-soft: #ECEEF1;
    --ink: #1D1D1B;
    --ink-dim: #5B6470;
    --ink-faint: #8A93A0;
    --blue-bright: #3259B3;
    --green-bright: #386937;
    --map-bg: #EEF1F4;
    --map-land: #D9DEE5;
    --map-stroke: #FFFFFF;
  }
  * { box-sizing: border-box; }
  html, body { margin: 0; padding: 0; background: var(--bg); color: var(--ink); font-family: var(--sans); }
  body { font-size: 14px; line-height: 1.5; }

  .wrap { max-width: 1320px; margin: 0 auto; padding: 28px 24px 80px; }

  /* Header : bandeau noir de marque (titre sur fond noir, charte) */
  header.top { background: var(--brand-black); border-radius: 12px; padding: 16px 22px 22px;
    margin-bottom: 26px; }
  .brand-row { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 16px; }
  .brand-logo { height: 26px; width: auto; display: block; }
  .header-main { display: flex; justify-content: space-between; align-items: flex-end; flex-wrap: wrap; gap: 16px; }
  .title-block h1 { font-family: var(--deck); font-size: 23px; margin: 0; letter-spacing: -0.01em;
    font-weight: 700; color: #fff; display: inline-block; max-width: 100%; }
  /* Soulignement degrade 5 couleurs (signature charte), largeur = titre, slide gauche->droite au chargement */
  .title-block h1::after { content: ""; display: block; height: 4px; width: 100%; border-radius: 3px; margin: 9px 0 0;
    background: linear-gradient(90deg, var(--amber) 0%, var(--coral) 28%, var(--pink) 50%, var(--blue) 74%, var(--green) 100%);
    transform-origin: left center; animation: brand-underline-slide 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.15s both; }
  @keyframes brand-underline-slide { from { transform: scaleX(0); } to { transform: scaleX(1); } }
  @media (prefers-reduced-motion: reduce) { .title-block h1::after { animation: none; } }
  .title-block .sub { color: rgba(255,255,255,0.62); font-size: 13px; margin-top: 11px; }
  .snapshot-tag { font-family: var(--mono); font-size: 11px; color: rgba(255,255,255,0.72);
    border: 1px solid rgba(255,255,255,0.22); border-radius: 4px; padding: 6px 10px; white-space: nowrap; }
  .snapshot-tag b { color: var(--amber); font-weight: 600; }
  /* Bascule de theme clair / sombre */
  .theme-toggle { display: inline-flex; align-items: center; gap: 7px; font-family: var(--mono);
    font-size: 11px; color: #fff; background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.22); border-radius: 6px; padding: 6px 11px; cursor: pointer;
    transition: background 0.12s ease; white-space: nowrap; }
  .theme-toggle:hover { background: rgba(255,255,255,0.18); }
  .tt-ico { width: 11px; height: 11px; border-radius: 50%;
    background: var(--amber); box-shadow: inset -3px -3px 0 0 var(--brand-black); }
  body.theme-light .tt-ico { box-shadow: none; background: var(--amber); }

  /* Polices de marque sur titres et labels */
  .d-name, .pod-actor { font-family: var(--deck); }
  .ctrl label, .map-head h2, thead th, .d-field .k, .pod-field .k, .pod-eyebrow,
  .pa-acc-label, .pa-detail-label { font-family: var(--flexa); }

  /* Disclaimer */
  .disclaimer { font-size: 12px; color: var(--ink-faint); border-left: 2px solid var(--line);
    padding: 6px 0 6px 12px; margin-bottom: 24px; max-width: 760px; }

  /* Layout */
  .grid { display: grid; grid-template-columns: 1fr; gap: 26px; }

  /* Grille 2 colonnes 50/50 : liste a gauche, carte a droite (>= 600px) */
  .split { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; align-items: start; margin-bottom: 8px; }
  /* La liste scrolle a l'interieur de sa colonne, ne pousse pas la carte hors zone */
  .split > .table-card { max-height: calc(100vh - 120px); overflow-x: auto; overflow-y: auto; }
  /* Le tableau garde une largeur minimale, scroll horizontal interne si la colonne est etroite */
  .split > .table-card table { min-width: 460px; }
  /* La carte reste visible en haut de sa colonne meme si la liste est longue */
  .split > .map-card { position: sticky; top: 16px; align-self: start; }

  /* Map */
  .map-card { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 18px 18px 10px; position: relative; }
  svg.worldmap { cursor: grab; }
  svg.worldmap.panning { cursor: grabbing; }
  /* Controles de zoom de la carte */
  .map-zoom { position: absolute; bottom: 22px; right: 14px; display: flex; flex-direction: column; gap: 4px; z-index: 3; }
  .map-zoom button { width: 28px; height: 28px; font-family: var(--mono); font-size: 16px; line-height: 1;
    background: var(--panel); color: var(--ink-dim); border: 1px solid var(--line); border-radius: 6px; cursor: pointer;
    display: flex; align-items: center; justify-content: center; transition: background 0.12s ease, color 0.12s ease; }
  .map-zoom button:hover { color: var(--ink); border-color: var(--ink-faint); background: var(--panel-2); }
  .map-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; }
  .map-head h2 { font-size: 13px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-dim); margin: 0; font-weight: 600; }
  .map-head .hint { font-size: 11px; color: var(--ink-faint); }
  .seg.map-mode { align-self: center; flex-wrap: nowrap; }
  .seg.map-mode .tab { white-space: nowrap; text-transform: none; }
  svg.worldmap { width: 100%; height: auto; display: block; background: var(--map-bg); }
  .heat-legend { display: flex; align-items: center; gap: 8px; padding: 8px 2px 12px; flex-wrap: wrap; }
  .heat-legend .hl-label { font-size: 11px; color: var(--ink-faint); }
  .heat-legend .hl-bar { width: 150px; height: 8px; border-radius: 4px;
    background: linear-gradient(90deg, #FAD9D2 0%, #E9897A 50%, #C2371F 100%); }
  .heat-legend .hl-note { font-size: 10px; color: var(--ink-faint); margin-left: 6px; font-style: italic; }
  .heat-legend .hl-hatch { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; color: var(--ink-faint); }
  .heat-legend .hl-hatch[hidden] { display: none; }
  .heat-legend .hl-hatch-swatch { width: 16px; height: 8px; border-radius: 2px; border: 1px solid var(--line);
    background-image: repeating-linear-gradient(45deg, var(--ink-faint) 0, var(--ink-faint) 1px, transparent 1px, transparent 3px); }
  /* Tous les pays du monde (paths ISO). Defaut = terre neutre. */
  .worldmap path { fill: var(--map-land); stroke: var(--map-stroke); stroke-width: 0.3; vector-effect: non-scaling-stroke; transition: fill 0.12s ease; }
  /* Pays sans acteur mais dans le scope : reste neutre, non cliquable visuellement */
  /* Pays avec acteurs : couleur heatmap appliquee en inline (style.fill). */
  .worldmap path.has-actors { cursor: pointer; transition: fill 0.12s ease, opacity 0.12s ease; }
  .worldmap path.has-actors:hover { opacity: 0.82; }
  .worldmap path.selected { stroke: var(--ink); stroke-width: 0.9; }
  /* Surcouche : pays present sans parc installe chiffre (mode parc installe). */
  .worldmap path.hatched { fill: url(#hatch); }
  .map-overlay text { font-family: var(--mono); pointer-events: none; }
  .ov-label { font-size: 11px; fill: var(--ink-dim); text-anchor: middle; }
  .ov-count { font-size: 17px; font-weight: 700; fill: var(--ink); text-anchor: middle; }
  .ov-ring { fill: none; stroke: var(--blue-bright); stroke-width: 1; opacity: 0.5; }

  /* Controls */
  .controls { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-end; margin-bottom: 4px; }
  .ctrl { display: flex; flex-direction: column; gap: 6px; }
  .ctrl label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-faint); font-weight: 600; }
  .chips { display: flex; flex-wrap: wrap; gap: 6px; }
  .chip { font-family: var(--mono); font-size: 11px; padding: 5px 10px; border-radius: 5px;
    border: 1px solid var(--line); background: var(--panel); color: var(--ink-dim); cursor: pointer;
    user-select: none; transition: all 0.12s ease; display: inline-flex; align-items: center; gap: 6px; }
  .chip:hover { border-color: var(--ink-faint); color: var(--ink); }
  .chip.on { background: var(--panel-2); color: var(--ink); border-color: var(--ink-faint); }
  .chip .swatch { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
  /* Compteur d'acteurs dans une chip statut */
  .chip-count { font-family: var(--mono); font-size: 10px; color: var(--ink-faint); }
  .chip.on .chip-count { color: var(--ink-dim); }

  /* Onglets calque : segmented control (selection unique) */
  .seg { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--line); border-radius: 7px;
    overflow: hidden; background: var(--panel); }
  .tab { font-family: var(--mono); font-size: 11px; text-transform: capitalize; padding: 6px 13px;
    border: none; border-right: 1px solid var(--line); background: transparent; color: var(--ink-dim);
    cursor: pointer; display: inline-flex; align-items: center; gap: 7px; transition: background 0.12s ease, color 0.12s ease; }
  .tab:last-child { border-right: none; }
  .tab:hover { color: var(--ink); background: var(--panel-2); }
  .tab.on { color: var(--ink); background: var(--panel-2); box-shadow: inset 0 -2px 0 0 var(--blue-bright); }
  .tab-count { font-family: var(--mono); font-size: 10px; color: var(--ink-faint); }
  .tab.on .tab-count { color: var(--blue-bright); }
  .tab .swatch { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
  select.sort { font-family: var(--mono); font-size: 12px; background: var(--panel); color: var(--ink);
    border: 1px solid var(--line); border-radius: 5px; padding: 7px 10px; cursor: pointer; }
  .reset { font-size: 11px; color: var(--ink-faint); background: none; border: none; cursor: pointer;
    text-decoration: underline; padding: 0; align-self: flex-end; margin-bottom: 8px; }
  .reset:hover { color: var(--ink); }

  .count-line { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); margin: 16px 0 10px; }
  .count-line b { color: var(--ink); }

  /* Table */
  .table-card { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
  table { width: 100%; border-collapse: collapse; }
  thead th { font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-faint);
    text-align: left; padding: 12px 14px; border-bottom: 1px solid var(--line); font-weight: 600; white-space: nowrap; }
  tbody tr { border-bottom: 1px solid var(--line-soft); cursor: pointer; transition: background 0.1s ease; }
  tbody tr:last-child { border-bottom: none; }
  tbody tr:hover { background: var(--panel-2); }
  tbody td { padding: 12px 14px; vertical-align: top; }
  .actor-name-cell { display: flex; align-items: center; gap: 8px; }
  .logo-chip { width: 22px; height: 22px; border-radius: 4px; background: #F2F2F2; flex-shrink: 0; overflow: hidden; display: flex; align-items: center; justify-content: center; }
  .logo-chip img { width: 100%; height: 100%; object-fit: contain; display: block; }
  .logo-chip--empty { background: transparent; }
  .actor-name { font-weight: 600; font-size: 14px; }
  .actor-country { font-family: var(--mono); font-size: 11px; color: var(--ink-dim); margin-top: 2px; }
  .layer-tag { font-family: var(--mono); font-size: 9px; text-transform: uppercase; letter-spacing: 0.05em;
    color: var(--ink-faint); border: 1px solid var(--line); border-radius: 3px; padding: 2px 5px; display: inline-block; }
  .status-badge { font-size: 11px; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
  .status-badge .dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
  .num { font-family: var(--mono); font-size: 13px; }
  .num .sub { font-size: 10px; color: var(--ink-faint); display: block; margin-top: 2px; line-height: 1.3; }
  .kind-tag { font-family: var(--mono); font-size: 9px; padding: 1px 4px; border-radius: 3px; margin-left: 4px; vertical-align: middle; }
  .kind-contracted { background: rgba(240,173,71,0.15); color: var(--amber); }
  .kind-installed { background: rgba(87,160,86,0.13); color: var(--green-bright); }
  .kind-unknown { background: var(--line); color: var(--ink-faint); }
  .kind-reservable { background: rgba(91,141,239,0.15); color: var(--blue-bright); }
  .pa-line { font-family: var(--mono); font-size: 10px; color: var(--ink-dim); margin-top: 4px; line-height: 1.3; }
  .pa-line .kind-tag { margin-left: 4px; }
  .nd { color: var(--ink-faint); font-family: var(--mono); font-size: 12px; }
  .conf { display: inline-block; font-family: var(--mono); font-size: 9px; padding: 1px 4px; border-radius: 3px; margin-left: 4px; }
  .conf-high { background: rgba(87,160,86,0.13); color: var(--green-bright); }
  .conf-med  { background: rgba(240,173,71,0.13); color: var(--amber); }
  .conf-low  { background: rgba(233,73,50,0.13); color: var(--coral); }
  .conf-none { background: var(--line); color: var(--ink-faint); }

  /* Drawer */
  .scrim { position: fixed; inset: 0; background: rgba(0,0,0,0.55); opacity: 0; pointer-events: none;
    transition: opacity 0.2s ease; z-index: 40; }
  .scrim.open { opacity: 1; pointer-events: auto; }
  .drawer { position: fixed; top: 0; right: 0; height: 100%; width: 460px; max-width: 92vw;
    background: var(--panel); border-left: 1px solid var(--line); transform: translateX(100%);
    transition: transform 0.24s cubic-bezier(0.4,0,0.2,1); z-index: 50; overflow-y: auto; }
  .drawer.open { transform: translateX(0); }
  .drawer-inner { padding: 26px 26px 60px; }
  .drawer-close { position: absolute; top: 18px; right: 20px; background: none; border: none;
    color: var(--ink-dim); font-size: 22px; cursor: pointer; line-height: 1; }
  .drawer-close:hover { color: var(--ink); }
  .d-name { font-size: 24px; font-weight: 680; letter-spacing: -0.01em; margin: 0 6px 4px 0; }
  .d-images { margin: 0; }
  .d-images.two { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .d-images figure { margin: 0 0 18px; }
  .d-img { width: 100%; height: auto; max-height: 220px; object-fit: cover; display: block;
    border-radius: 8px; border: 1px solid var(--line); background: var(--panel-2); }
  .d-images.two .d-img { max-height: 150px; }
  .img-src { display: block; margin-top: 5px; font-size: 11.5px; line-height: 1.3;
    color: var(--ink-dim); text-decoration: underline; text-decoration-color: var(--ink-faint);
    text-underline-offset: 2px; }
  .img-src:hover { color: var(--ink); text-decoration-color: var(--ink-dim); }
  .d-meta { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 22px; }
  .d-field { border-top: 1px solid var(--line-soft); padding: 14px 0; }
  .d-field:first-of-type { border-top: 1px solid var(--line); }
  .d-field .k { font-size: 10px; text-transform: uppercase; letter-spacing: 0.07em; color: var(--ink-faint); margin-bottom: 5px; font-weight: 600; }
  .d-field .v { font-size: 15px; }
  .d-field .v.mono { font-family: var(--mono); font-size: 14px; }
  /* Liens source nus, enfants directs d'une valeur de champ (usage / operation) : convention source.
     Combinateur enfant pour ne pas toucher les liens imbriques (.hw-line a, .d-note a) du meme .v. */
  .d-field .v > a { color: var(--ink-dim); text-decoration: underline; text-decoration-color: var(--ink-faint);
    text-underline-offset: 2px; }
  .d-field .v > a:hover { color: var(--ink); text-decoration-color: var(--ink-dim); }
  .d-note { font-family: var(--sans); font-size: 12px; color: var(--ink-dim); margin-top: 6px; line-height: 1.5;
    border-left: 2px solid var(--line); padding-left: 10px; }
  .d-invest { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
  .d-invest > span { font-family: var(--mono); font-size: 11px; background: var(--panel-2);
    border: 1px solid var(--line); border-radius: 4px; padding: 3px 8px; }
  /* Chip investisseur enrichie (schema objet) */
  .inv-chip { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px; font-family: var(--mono);
    font-size: 11px; background: var(--panel-2); border: 1px solid var(--line); border-radius: 4px; padding: 3px 8px; }
  .inv-star { color: var(--amber, #F0AD47); font-size: 12px; line-height: 1; background: none;
    border: none; padding: 0; margin-right: 1px; display: inline-flex; align-items: center; }
  .inv-legend { font-family: var(--mono); font-size: 10px; color: var(--ink-faint); font-weight: 400;
    text-transform: none; letter-spacing: 0; margin-left: 8px; }
  .inv-legend .inv-star { font-size: 11px; }
  .inv-name { color: var(--ink); text-decoration: none; font-weight: 600; text-underline-offset: 2px; }
  a.inv-name:hover { text-decoration: underline; }
  .role-badge { font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em;
    padding: 3px 8px; border-radius: 4px; font-weight: 600; white-space: nowrap; }
  .inv-year { color: var(--ink-faint); }
  .inv-src { color: var(--ink-dim); text-decoration: underline; text-decoration-color: var(--ink-faint);
    text-underline-offset: 2px; font-size: 12px; }
  .inv-src:hover { color: var(--ink); text-decoration-color: var(--ink-dim); }
  .d-final { font-size: 13px; color: var(--ink); margin-top: 22px; padding: 14px;
    background: var(--panel-2); border-radius: 8px; border: 1px solid var(--line-soft); line-height: 1.55; }
  /* Lien externe + badge etat dans le volet */
  .d-link { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; margin-bottom: 22px; }
  .d-link-a { font-family: var(--mono); font-size: 13px; color: var(--blue-bright); text-decoration: none;
    text-underline-offset: 2px; word-break: break-all; }
  .d-link-a:hover { text-decoration: underline; }
  .link-badge { font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em;
    padding: 3px 8px; border-radius: 4px; font-weight: 600; white-space: nowrap; }
  .d-link-dates { flex-basis: 100%; font-size: 11px; color: var(--ink-faint); font-family: var(--mono); line-height: 1.4; }
  /* Section reseaux sociaux du volet */
  .soc-list { display: flex; flex-direction: column; gap: 11px; }
  .soc-row { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; font-family: var(--mono); font-size: 13px; }
  .soc-ico { display: inline-flex; width: 15px; height: 15px; flex: none; }
  .soc-ico svg { width: 15px; height: 15px; fill: currentColor; display: block; }
  .soc-link { color: var(--blue-bright); text-decoration: none; text-underline-offset: 2px; }
  .soc-link:hover { text-decoration: underline; }
  .soc-stat { color: var(--ink-dim); font-size: 12px; }
  .soc-badge { font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em;
    padding: 2px 7px; border-radius: 4px; font-weight: 600; white-space: nowrap; }
  .soc-parent { font-size: 11px; color: var(--ink-faint); font-style: italic; }
  .soc-empty { font-size: 12px; color: var(--ink-faint); font-style: italic; }

  footer.legend { margin-top: 30px; padding-top: 18px; border-top: 1px solid var(--line);
    font-size: 11px; color: var(--ink-faint); display: flex; flex-wrap: wrap; gap: 22px; }
  footer.legend .leg-group b { color: var(--ink-dim); font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; font-size: 10px; }
  footer.legend code { font-family: var(--mono); }

  .empty { padding: 40px; text-align: center; color: var(--ink-faint); font-family: var(--mono); font-size: 13px; }

  /* Popover chiffre pods */
  .pod-trigger { cursor: pointer; border-bottom: 1px dotted var(--ink-faint); }
  .pod-trigger:hover { border-bottom-color: var(--blue-bright); }
  /* Volet lateral chiffre (reutilise la mecanique du drawer) */
  .pod-panel { position: fixed; top: 0; right: 0; height: 100%; width: 380px; max-width: 90vw;
    background: var(--panel); border-left: 1px solid var(--line); transform: translateX(100%);
    transition: transform 0.24s cubic-bezier(0.4,0,0.2,1); z-index: 55; overflow-y: auto; }
  .pod-panel.open { transform: translateX(0); }
  .pod-panel-inner { padding: 26px 26px 60px; }
  .pod-panel-close { position: absolute; top: 18px; right: 20px; background: none; border: none;
    color: var(--ink-dim); font-size: 22px; cursor: pointer; line-height: 1; }
  .pod-panel-close:hover { color: var(--ink); }
  .pod-eyebrow { font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-faint); font-weight: 600; margin-bottom: 14px; }
  .pod-big { display: flex; align-items: baseline; gap: 10px; margin-bottom: 4px; }
  .pod-big .pv { font-family: var(--mono); font-size: 38px; font-weight: 700; color: var(--ink); line-height: 1; letter-spacing: -0.02em; }
  .pod-big .pk { font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em; padding: 4px 7px; border-radius: 4px; }
  .pod-actor { font-size: 15px; font-weight: 600; margin-bottom: 22px; }
  .pod-field { border-top: 1px solid var(--line-soft); padding: 13px 0; }
  .pod-field:first-of-type { border-top: 1px solid var(--line); }
  .pod-field .k { font-size: 10px; text-transform: uppercase; letter-spacing: 0.07em; color: var(--ink-faint); margin-bottom: 5px; font-weight: 600; }
  .pod-field .v { font-family: var(--mono); font-size: 14px; color: var(--ink); }
  .pod-panel-note { font-size: 12px; color: var(--ink-dim); margin-top: 20px; padding: 14px;
    background: var(--panel-2); border-radius: 8px; border: 1px solid var(--line-soft); line-height: 1.55; }
  /* Volet parc actif : chiffre ventile + accordeons */
  .pod-big .pv-cats { font-size: 21px; font-weight: 700; }
  .pod-releve { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); margin-bottom: 6px; }
  .pa-accordions { margin-top: 22px; }
  .pa-acc { border-top: 1px solid var(--line-soft); }
  .pa-acc:first-child { border-top: 1px solid var(--line); }
  .pa-acc-head { display: flex; align-items: center; gap: 10px; padding: 12px 0; cursor: pointer; user-select: none; }
  .pa-acc-head:hover .pa-acc-label { color: var(--ink); }
  .pa-acc-head:focus-visible { outline: 2px solid var(--blue-bright); outline-offset: 2px; }
  .pa-acc-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-faint); font-weight: 600; flex: 1; }
  .pa-acc-val { font-family: var(--mono); font-size: 15px; color: var(--ink); font-weight: 700; }
  .pa-acc-chev { font-family: var(--mono); font-size: 15px; color: var(--ink-dim); width: 14px; text-align: center; transition: transform 0.18s; }
  .pa-acc.open .pa-acc-chev { transform: rotate(45deg); }
  .pa-acc-body { display: none; padding: 0 0 12px; }
  .pa-acc.open .pa-acc-body { display: block; }
  .pa-acc-body ul { margin: 0; padding-left: 18px; }
  .pa-acc-body li { font-size: 12px; color: var(--ink-dim); line-height: 1.55; margin-bottom: 6px; }
  .pod-source { margin-top: 22px; padding-top: 14px; border-top: 1px solid var(--line-soft);
    font-size: 11px; color: var(--ink-dim); line-height: 1.5; }
  .pa-src-link { color: var(--ink-dim); text-decoration: underline; text-decoration-color: var(--ink-faint);
    text-underline-offset: 2px; }
  .pa-src-link:hover { color: var(--ink); text-decoration-color: var(--ink-dim); }
  .pa-src-meta { color: var(--ink-faint); }
  /* Bloc Materiel (hardware) : une ligne par sous-champ present */
  .hw-line { margin-bottom: 8px; }
  .hw-line:last-child { margin-bottom: 0; }
  .hw-line .d-note { margin-top: 4px; }
  /* Constat court (puces visibles) */
  .pa-constat { margin: 14px 0 0; padding-left: 18px; }
  .pa-constat li { font-size: 12px; color: var(--ink-dim); line-height: 1.55; margin-bottom: 6px; }
  /* Liens sources inline dans les notes : couleur texte (pas le bleu navigateur) + souligne discret */
  .d-note a, .d-final a, .pa-constat a, .pod-panel-note a, .pa-acc-body a, .pa-bd a, .hw-line a {
    color: var(--ink); text-decoration: underline; text-underline-offset: 2px;
    text-decoration-color: var(--ink-faint); }
  .d-note a:hover, .d-final a:hover, .pa-constat a:hover, .pod-panel-note a:hover,
  .pa-acc-body a:hover, .pa-bd a:hover, .hw-line a:hover { color: var(--ink); text-decoration-color: var(--ink); }
  /* Alerte veille : encart discret (pas de couleur vive) */
  .pa-veille { margin-top: 12px; padding: 10px 12px; font-size: 12px; line-height: 1.5;
    color: var(--ink-dim); background: var(--panel-2); border-radius: 8px;
    border-left: 3px solid var(--amber); }
  /* Bloc API : tags de scope avec tooltip */
  .api-scopes { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 6px; }
  .api-scope { font-family: var(--mono); font-size: 11px; background: var(--panel-2);
    border: 1px solid var(--line); border-radius: 4px; padding: 3px 8px; cursor: help; }
  /* Detail par lieu (breakdown) */
  .pa-detail { margin-top: 16px; }
  .pa-detail-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em;
    color: var(--ink-faint); font-weight: 600; margin-bottom: 8px; }
  .pa-detail-head { display: flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; }
  .pa-detail-head .pa-detail-label { flex: 1; margin-bottom: 0; }
  .pa-detail-head:hover .pa-detail-label { color: var(--ink-dim); }
  .pa-detail-head:focus-visible { outline: 2px solid var(--blue-bright); outline-offset: 2px; }
  .pa-detail-toggle .pa-bd { margin-top: 8px; }
  .pa-detail.open .pa-acc-chev { transform: rotate(45deg); }
  .pa-detail-more { display: none; }
  .pa-detail.open .pa-detail-more { display: block; }
  .pa-more-link { display: inline-block; margin-top: 8px; font-size: 12px; color: var(--ink-dim);
    text-decoration: underline; cursor: pointer; }
  .pa-more-link:hover { color: var(--ink); }
  .pa-detail.open .pa-more-link { display: none; }
  .pa-bd { margin: 0; padding-left: 18px; }
  .pa-bd li { font-size: 12px; color: var(--ink-dim); line-height: 1.55; margin-bottom: 6px; }
  .pa-bd-note { color: var(--ink-faint); }

  /* Bloc Equipements signales */
  .eq-list { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; list-style: none; }
  .eq-item { display: flex; align-items: flex-start; gap: 9px; font-size: 13px; color: var(--ink); }
  .eq-icon { flex: none; width: 16px; height: 16px; color: var(--ink-dim); margin-top: 1px; }
  .eq-icon svg { width: 16px; height: 16px; display: block; }
  .eq-label { font-weight: 600; color: var(--ink-dim); font-size: 12px; min-width: 110px; flex-shrink: 0; }
  .eq-detail { color: var(--ink); font-size: 13px; }

  @media (max-width: 720px) {
    thead th.hide-sm, tbody td.hide-sm { display: none; }
    .wrap { padding: 20px 14px 60px; }
  }

  /* Mobile : une seule colonne, liste et carte empilees (les deux visibles) */
  @media (max-width: 599.98px) {
    .split { grid-template-columns: 1fr; }
    .split > .table-card { max-height: none; }
    .split > .map-card { position: static; top: auto; }
    /* Volet plein ecran, croix de fermeture existante conservee */
    .drawer { width: 100%; max-width: 100%; border-left: none; }
    .pod-panel { width: 100%; max-width: 100%; border-left: none; }
  }
