/* ============================================================
   Dashboard — seitenspezifische Stile

   Aus page-dashboard.php herausgeloest (Befund ARC-01: rund 150 KB
   CSS lagen in dreizehn Templates und waren damit weder cachebar
   noch ueber das Token-System steuerbar).

   Wird in functions.php nur auf dieser Seite geladen.
   ============================================================ */

/* HINWEIS ZUR TOKEN-MIGRATION (teilweise erledigt, HT-DS3.2B)

   Erledigt: Neutralfarben und das Markenblau laufen jetzt ueber Tokens.
   #2D6CF6 war ein zweites, fast identisches Blau neben --ht-primary
   (#2F6BFF) und ist aufgeloest.

   Bewusst NICHT migriert: #0F1B2D und #566276.
   Das sind die Werte von --ht-text-primary/-secondary aus dem HELLEN
   Token-Satz ([data-theme="light"] in ht-tokens.css). Die Seite rendert
   dunkel. Gepruefte Selektoren (.card-head h3, .la-row .v,
   .tracker-tile__title, .attack-kpi-card .val) werden saemtlich von
   ht-cockpit.css ueberschrieben — die Deklarationen sind wirkungslos.
   Ein Ersatz durch var(--ht-text-primary) wuerde sie wirksam machen und
   das Design veraendern.

   Die zwei Stellen, an denen ein solcher Literal tatsaechlich gewann und
   sichtbar falsch rendert (.last-date, .nc-bullets), sind einzeln
   korrigiert — gemessen, nicht pauschal ersetzt.

   Der Rest gehoert zu ARC-01: solange die Templates Inline-Styles mit
   diesen Literalen setzen und ht-cockpit.css per [style*="..."] dagegen
   patcht, haengt die Kaskade am Literalstring. Erst wenn die Inline-Styles
   verschwinden, koennen die Patch-Regeln und diese Deklarationen weg. */

    /* ===== Live Attack Map Page (scoped) ===== */
    .live-attack-page { max-width:1320px; margin:0 auto; padding:var(--ht-space-6) var(--ht-space-6) var(--ht-space-10); box-sizing:border-box; }
    .live-attack-page *, .live-attack-page *::before, .live-attack-page *::after { box-sizing:border-box; }
    .live-attack-page .card { background:linear-gradient(180deg,#FFFFFF 0%,#FFFFFF 100%); border:1px solid rgba(45,108,246,.14); border-radius:12px; padding:var(--ht-pad-card); box-shadow:0 18px 45px rgba(0,0,0,.24); }
    .live-attack-page .card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--ht-space-4); margin-bottom:var(--ht-space-25); }
    .live-attack-page .card-head h3 { color:#0F1B2D; margin:0; font-size:var(--ht-type-title); font-weight:var(--ht-font-weight-bold); display:flex; align-items:center; gap:var(--ht-space-15); }
    .live-attack-page .col-sub { color:var(--ht-text-muted); font-size:var(--ht-type-caption); }
    .la-link { color:var(--ht-primary-text); font-weight:var(--ht-font-weight-semibold); text-decoration:none; font-size:var(--ht-type-body-sm); display:inline-flex; align-items:center; gap:var(--ht-space-1); margin-top:var(--ht-space-25); }
    .la-link:hover { text-decoration:underline; }
    .la-row { display:grid; grid-template-columns:1fr auto; gap:var(--ht-space-3); min-height:28px; align-items:center; padding:var(--ht-space-15) 0; border-bottom:1px solid rgba(16,30,54,.05); font-size:var(--ht-type-body-sm); color:#566276; }
    .la-row:last-of-type { border-bottom:none; }
    .la-row .v { color:#0F1B2D; font-weight:var(--ht-font-weight-bold); font-size:var(--ht-type-body-sm); }
    .la-rank { color:var(--ht-text-muted); font-weight:var(--ht-font-weight-bold); width:14px; display:inline-block; }
    .la-bar { height:5px; border-radius:3px; background:var(--ht-primary); }
    .up { color:var(--ht-primary-text); font-weight:var(--ht-font-weight-semibold); } .down { color:#FF3B3B; font-weight:var(--ht-font-weight-semibold); }
    .la-badge { font-size:var(--ht-type-meta); font-weight:var(--ht-font-weight-bold); border-radius:6px; padding:var(--ht-space-05) var(--ht-space-2); white-space:nowrap; }
    .la-badge.crit { background:rgba(255,59,59,.13); border:1px solid rgba(255,59,59,.35); color:#FF6B6B; }
    .la-badge.high { background:rgba(255,138,0,.13); border:1px solid rgba(255,138,0,.35); color:#FFA640; }
    .la-badge.med { background:rgba(255,212,59,.13); border:1px solid rgba(255,212,59,.35); color:#E0A104; }

    .attack-top-grid { display:grid; grid-template-columns:1fr; gap:var(--ht-gap-grid); align-items:stretch; margin-bottom:var(--ht-space-45); }
    .attack-intro { display:flex; flex-direction:column; gap:var(--ht-space-4); order:2; }
    .attack-intro .live-badge { align-self:flex-start; display:inline-flex; align-items:center; gap:var(--ht-space-15); background:rgba(45,108,246,.13); border:1px solid rgba(45,108,246,.35); color:var(--ht-primary-text); font-size:var(--ht-type-meta); font-weight:var(--ht-font-weight-bold); letter-spacing:.08em; border-radius:6px; padding:var(--ht-space-1) var(--ht-space-2); }
    .attack-intro .live-badge .pulse { width:7px; height:7px; border-radius:50%; background:var(--ht-primary); box-shadow:0 0 8px var(--ht-primary); }
    .attack-intro h1 { font-size:var(--ht-type-page-title); line-height:var(--ht-leading-tight); margin:0; color:#0F1B2D; font-weight:var(--ht-font-weight-heavy); letter-spacing:-.02em; }
    .attack-intro .subline { color:#0F1B2D; font-weight:var(--ht-font-weight-semibold); margin:0; font-size:var(--ht-type-body-lg); }
    .attack-intro p { color:#566276; line-height:var(--ht-leading-relaxed); margin:0; font-size:var(--ht-type-body); }
    .attack-kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:var(--ht-gap-grid); margin-bottom:var(--ht-space-45); }
    .attack-kpi-card { background:linear-gradient(180deg,#FFFFFF 0%,#FFFFFF 100%); border:1px solid rgba(45,108,246,.14); border-radius:10px; padding:var(--ht-pad-card-dense) var(--ht-pad-card); }
    .attack-kpi-card .lbl { color:var(--ht-text-muted); font-size:var(--ht-type-caption); margin-bottom:var(--ht-space-15); }
    .attack-kpi-card .val { color:#0F1B2D; font-size:var(--ht-type-metric); font-weight:var(--ht-font-weight-heavy); line-height:var(--ht-leading-tight); }
    .attack-kpi-card .delta { font-size:var(--ht-type-caption); margin-top:var(--ht-space-1); }
    .tracker-tile-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--ht-gap-grid); margin-top:var(--ht-space-4); }
    .tracker-tile { background:linear-gradient(180deg,#FFFFFF 0%,#F8FAFD 100%); border:1px solid rgba(45,108,246,.14); border-radius:12px; padding:var(--ht-pad-card-dense) var(--ht-pad-card); box-shadow:0 10px 28px rgba(16,30,54,.06); min-height:154px; }
    .tracker-tile__head { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--ht-space-25); margin-bottom:var(--ht-space-25); }
    .tracker-tile__title { font-size:var(--ht-type-caption); font-weight:var(--ht-font-weight-heavy); color:#0F1B2D; text-transform:uppercase; letter-spacing:.04em; }
    .tracker-tile__src { font-size:var(--ht-type-meta); color:var(--ht-text-muted); }
    .tracker-tile__value { font-size:var(--ht-type-metric); line-height:var(--ht-leading-tight); font-weight:var(--ht-font-weight-heavy); color:#0F1B2D; margin:var(--ht-space-1) 0 var(--ht-space-25); }
    .tracker-tile__sub { font-size:var(--ht-type-caption); color:var(--ht-text-muted); margin-bottom:var(--ht-space-25); }
    .tracker-tile__list { display:flex; flex-direction:column; gap:var(--ht-space-15); }
    .tracker-tile__row { display:flex; align-items:center; justify-content:space-between; gap:var(--ht-space-25); font-size:var(--ht-type-body-sm); color:#566276; }
    .tracker-tile__row strong { color:#0F1B2D; font-weight:var(--ht-font-weight-bold); }
    .tracker-tile__row a { color:var(--ht-primary-text); text-decoration:none; font-weight:var(--ht-font-weight-bold); }
    .tracker-tile__row a:hover { text-decoration:underline; }
    .tracker-pill { display:inline-flex; align-items:center; gap:var(--ht-space-15); font-size:var(--ht-type-meta); font-weight:var(--ht-font-weight-bold); border-radius:999px; padding:var(--ht-space-1) var(--ht-space-2); background:#F1F5FB; border:1px solid rgba(45,108,246,.12); color:#566276; }
    .tracker-pill i { width:7px; height:7px; border-radius:50%; display:inline-block; background:var(--ht-primary); }

    .attack-map-card { background:linear-gradient(180deg,#FFFFFF 0%,#F4F7FB 100%); border:1px solid rgba(45,108,246,.18); border-radius:14px; padding:var(--ht-pad-card); overflow:hidden; min-width:0; display:flex; flex-direction:column; }
    .map-filter-bar { display:grid; grid-template-columns:repeat(4,minmax(130px,1fr)) auto; gap:var(--ht-space-35); align-items:end; margin-bottom:var(--ht-space-35); }
    .map-filter-bar label { display:block; font-size:var(--ht-type-meta); color:var(--ht-text-muted); margin-bottom:var(--ht-space-1); }
    .map-filter-bar select, .map-reset { background:#F4F7FB; border:1px solid rgba(16,30,54,.10); border-radius:8px; height:38px; color:#0F1B2D; padding:0 var(--ht-space-3); font-size:var(--ht-type-body-sm); width:100%; }
    .map-reset { width:auto; cursor:pointer; white-space:nowrap; }
    .map-reset:hover { border-color:rgba(45,108,246,.4); color:var(--ht-primary-text); }
    .map-stage { width:100%; height:460px; min-height:420px; max-height:560px; border-radius:12px; overflow:hidden; position:relative; background:#F4F7FB; flex:0 0 auto; }
    .map-stage > #map-attack, .map-stage .leaflet-container { width:100%!important; height:100%!important; display:block!important; }
    .map-stage .leaflet-container { background:#F4F7FB !important; }
    .map-stage .leaflet-tile { filter:saturate(1.1) brightness(.85) contrast(1.05); }
    .map-legend { position:absolute; bottom:12px; left:12px; z-index:600; display:flex; gap:var(--ht-space-35); background:rgba(2,8,17,.82); border:1px solid rgba(16,30,54,.08); border-radius:8px; padding:var(--ht-space-15) var(--ht-space-3); font-size:var(--ht-type-caption); color:#566276; }
    .map-legend span { display:inline-flex; align-items:center; gap:var(--ht-space-15); }
    .map-legend i { width:8px; height:8px; border-radius:50%; display:inline-block; }
    .map-updated { position:absolute; bottom:12px; right:12px; z-index:600; font-size:var(--ht-type-caption); color:var(--ht-text-muted); background:rgba(2,8,17,.82); padding:var(--ht-space-15) var(--ht-space-25); border-radius:8px; }
    .map-zoom { position:absolute; top:12px; right:12px; z-index:600; display:flex; flex-direction:column; gap:var(--ht-space-15); }
    .map-zoom button { width:34px; height:34px; background:rgba(2,8,17,.85); border:1px solid rgba(16,30,54,.1); border-radius:7px; color:#0F1B2D; cursor:pointer; font-size:var(--ht-type-body-lg); display:flex; align-items:center; justify-content:center; transition:border-color .2s; }
    .map-zoom button:hover { border-color:rgba(45,108,246,.45); color:var(--ht-primary-text); }

    .attack-card-grid-4 { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--ht-gap-grid); margin-bottom:var(--ht-space-35); }
    .attack-card-grid-3 { display:grid; grid-template-columns:1fr 1fr 2fr; gap:var(--ht-gap-grid); margin-bottom:var(--ht-space-35); }
    .ransomware-wide-card { display:grid; grid-template-columns:220px 1fr 1fr 1.4fr; gap:var(--ht-space-6); align-items:center; }
    .ransomware-wide-card .rw-donut { display:flex; flex-direction:column; align-items:center; gap:var(--ht-space-2); }

    .la-donut { width:118px; height:118px; border-radius:50%; position:relative; flex:0 0 auto; }
    .la-donut::after { content:''; position:absolute; inset:19px; border-radius:50%; background:#FFFFFF; }
    .la-legend { display:flex; flex-direction:column; gap:var(--ht-space-15); font-size:var(--ht-type-body-sm); color:#566276; }
    .la-legend span { display:inline-flex; align-items:center; gap:var(--ht-space-15); }
    .la-legend i { width:8px; height:8px; border-radius:2px; display:inline-block; }
    .la-legend b { margin-left:auto; color:#0F1B2D; font-weight:var(--ht-font-weight-bold); padding-left:var(--ht-space-35); }

    .newsletter-cta { margin-top:var(--ht-space-45); display:grid; grid-template-columns:auto 1fr auto; gap:var(--ht-space-6); align-items:center; padding:var(--ht-space-55) var(--ht-space-7); background:linear-gradient(90deg,rgba(45,108,246,.16),rgba(7,19,30,.95)); border:1px solid rgba(45,108,246,.28); border-radius:14px; }
    .newsletter-cta .nl-icon { width:54px; height:54px; border-radius:50%; background:rgba(45,108,246,.15); border:1px solid rgba(45,108,246,.35); display:flex; align-items:center; justify-content:center; color:var(--ht-primary-text); font-size:var(--ht-icon-xl); }
    .newsletter-cta h3 { margin:0 0 var(--ht-space-1); color:#0F1B2D; font-size:var(--ht-type-title); }
    .newsletter-cta p { margin:0; color:#566276; font-size:var(--ht-type-body-sm); line-height:var(--ht-leading-normal); }
    .newsletter-cta .nl-form { display:flex; gap:var(--ht-space-25); }
    .newsletter-cta input { flex:1; min-width:200px; background:#F4F7FB; border:1px solid rgba(16,30,54,.12); border-radius:8px; height:42px; color:#0F1B2D; padding:0 var(--ht-space-35); font-size:var(--ht-type-body-sm); }
    .newsletter-cta .nl-btn { background:var(--ht-primary); color:#fff; font-weight:var(--ht-font-weight-bold); border:none; border-radius:var(--ht-radius-sm); height:42px; padding:0 var(--ht-space-5); cursor:pointer; white-space:nowrap; font-size:var(--ht-type-body-sm); }

    @media (max-width:1100px){
      .attack-top-grid { grid-template-columns:1fr; }
      .tracker-tile-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
      .attack-card-grid-4 { grid-template-columns:repeat(2,minmax(0,1fr)); }
      .attack-card-grid-3 { grid-template-columns:1fr 1fr; }
      .attack-card-grid-3 > :last-child { grid-column:1 / -1; }
      .ransomware-wide-card { grid-template-columns:1fr 1fr; }
      .newsletter-cta { grid-template-columns:1fr; text-align:center; justify-items:center; }
      .newsletter-cta .nl-form { width:100%; }
    }
    @media (max-width:720px){
      .attack-card-grid-4, .attack-card-grid-3, .ransomware-wide-card, .map-filter-bar, .tracker-tile-grid { grid-template-columns:1fr; }
      .attack-card-grid-3 > :last-child { grid-column:auto; }
      .map-stage { height:300px; min-height:300px; max-height:300px; }
    }

    /* ===== Check-Point-Style dunkles Map-Hero ===== */
    .cp-head .live-badge { display:inline-flex; align-items:center; gap:var(--ht-space-15); background:rgba(45,108,246,.13); border:1px solid rgba(45,108,246,.35); color:var(--ht-primary-text); font-size:var(--ht-type-meta); font-weight:var(--ht-font-weight-bold); letter-spacing:.08em; border-radius:6px; padding:var(--ht-space-1) var(--ht-space-2); }
    .cp-head .live-badge .pulse { width:7px; height:7px; border-radius:50%; background:var(--ht-primary); box-shadow:0 0 8px var(--ht-primary); animation:cpPulse 1.4s infinite; }
    .cp-head h1 { font-size:clamp(2rem, 1.6rem + 1.1vw, 2.75rem); margin:var(--ht-space-25) 0 var(--ht-space-05); color:#0F1B2D; font-weight:var(--ht-font-weight-heavy); letter-spacing:-.02em; }
    .cp-head p { color:#566276; margin:0; font-size:var(--ht-type-body); }

    .cp-hero { margin-bottom:var(--ht-space-35); }
    .cp-map-card { position:relative; border-radius:16px; overflow:hidden; background:#070d1a; border:1px solid #16223c; box-shadow:0 26px 70px rgba(2,7,18,.5); min-width:0; }
    .cp-map-stage { width:100%; height:680px; position:relative; }
    .cp-map-stage > #map-attack { position:absolute; inset:0; width:100%!important; height:100%!important; display:block!important; background:#070d1a; }
    .cp-map-stage > #map-attack canvas { border-radius:0; }
    .cp-ov { position:absolute; z-index:600; background:rgba(7,13,26,.74); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); border:1px solid rgba(64,120,200,.22); border-radius:12px; color:var(--ht-text-secondary); }
    .cp-counter { top:16px; left:16px; padding:var(--ht-space-3) var(--ht-space-4); }
    .cp-counter .lbl { font-size:var(--ht-type-meta); letter-spacing:.12em; text-transform:uppercase; color:#7d93b8; display:flex; align-items:center; gap:var(--ht-space-15); }
    .cp-counter .lbl .dot { width:8px; height:8px; border-radius:50%; background:#21d07a; box-shadow:0 0 10px #21d07a; animation:cpPulse 1.4s infinite; }
    .cp-counter .num { font:var(--ht-font-weight-heavy) var(--ht-type-metric)/1 'JetBrains Mono',ui-monospace,monospace; color:#fff; margin-top:var(--ht-space-15); letter-spacing:-.01em; }
    .cp-counter .sub { font-size:var(--ht-type-meta); color:#8aa0c4; margin-top:var(--ht-space-1); }
    @keyframes cpPulse { 0%,100%{opacity:1} 50%{opacity:.35} }
    .cp-legend { bottom:16px; left:16px; display:flex; gap:var(--ht-space-35); padding:var(--ht-space-2) var(--ht-space-3); font-size:var(--ht-type-caption); }
    .cp-legend span { display:inline-flex; align-items:center; gap:var(--ht-space-15); }
    .cp-legend i { width:8px; height:8px; border-radius:50%; display:inline-block; }
    .cp-note { bottom:16px; right:16px; padding:var(--ht-space-15) var(--ht-space-25); font-size:var(--ht-type-meta); color:#8aa0c4; max-width:48%; text-align:right; line-height:var(--ht-leading-snug); }
    .cp-zoom { position:absolute; top:16px; right:16px; z-index:600; display:flex; flex-direction:column; gap:var(--ht-space-15); }
    .cp-zoom button { width:34px; height:34px; background:rgba(7,13,26,.8); border:1px solid rgba(64,120,200,.25); border-radius:8px; color:var(--ht-text-secondary); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:.2s; }
    .cp-zoom button:hover { border-color:#3f7bd6; color:#fff; }

    /* Daten als transparente Glas-Overlays auf der Karte */
    .cp-mapdata { position:absolute; z-index:560; width:288px; max-width:33%; background:rgba(7,13,26,.40); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); border:1px solid rgba(120,160,220,.12); border-radius:12px; padding:var(--ht-space-25) var(--ht-space-35); }
    .cp-mapdata.left  { left:16px; top:118px; }
    .cp-mapdata.right { right:16px; top:16px; }
    .cp-md-sec + .cp-md-sec { margin-top:var(--ht-space-25); padding-top:var(--ht-space-2); border-top:1px solid rgba(120,160,220,.12); }
    .cp-mapdata h4 { margin:0 0 var(--ht-space-15); font-size:var(--ht-type-meta); color:#eaf1fc; font-weight:var(--ht-font-weight-bold); display:flex; align-items:center; justify-content:space-between; gap:var(--ht-space-2); }
    .cp-mapdata h4 .src { font-size:var(--ht-type-micro); font-weight:var(--ht-font-weight-semibold); color:#88a0c4; letter-spacing:.03em; text-transform:uppercase; white-space:nowrap; }
    @media (max-width:900px){
      .cp-map-card { overflow:visible; }
      .cp-mapdata { position:static; width:auto; max-width:none; margin:var(--ht-space-25) 0 0; background:linear-gradient(180deg,#0b1426,#0a1120); -webkit-backdrop-filter:none; backdrop-filter:none; }
      .cp-mapdata.left, .cp-mapdata.right { left:auto; right:auto; top:auto; }
    }
    .cp-rrow { padding:var(--ht-space-05) 0; }
    .cp-rtop { display:flex; align-items:center; gap:var(--ht-space-2); font-size:var(--ht-type-caption); }
    .cp-rtop .rk { color:var(--ht-text-muted); font-weight:var(--ht-font-weight-bold); font-size:var(--ht-type-meta); width:15px; }
    .cp-rtop .nm { color:var(--ht-text-primary); font-weight:var(--ht-font-weight-semibold); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .cp-rtop .ct { color:#9fb4d6; font-weight:var(--ht-font-weight-bold); }
    .cp-bar { height:4px; border-radius:3px; background:rgba(63,123,214,.15); margin-top:var(--ht-space-05); overflow:hidden; }
    .cp-bar i { display:block; height:100%; border-radius:3px; background:linear-gradient(90deg,var(--ht-primary),#46b3ff); }
    .cp-atk { display:flex; flex-direction:column; }
    .cp-atk-empty { color:#6f86ab; font-size:var(--ht-type-caption); padding:var(--ht-space-05) 0; }
    .cp-atk-row { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:var(--ht-space-2); padding:var(--ht-space-05) 0; border-bottom:1px solid rgba(63,123,214,.07); font-size:var(--ht-type-caption); animation:cpFadeIn .35s ease; }
    .cp-atk-row:last-child { border-bottom:none; }
    .cp-atk-row .s { color:#9fb4d6; text-align:right; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .cp-atk-row .t { color:#fff; font-weight:var(--ht-font-weight-semibold); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .cp-atk-row i { color:#46b3ff; font-size:var(--ht-icon-sm); justify-self:center; }
    @keyframes cpFadeIn { from{opacity:0; transform:translateY(-3px)} to{opacity:1; transform:none} }
    @media (max-width:1100px){ .cp-map-stage { height:500px; } }
    @media (max-width:720px){ .cp-map-stage { height:340px; } .cp-note { display:none; } .cp-counter .num { font-size:var(--ht-type-metric); } }
