/* ============================================================
   Regingada Radar — radar.css  (V2)
   Namespaced Radar-Styles (.radar-*), aufgebaut AUSSCHLIESSLICH auf den
   Design-Tokens aus site.css (Farben/Typo/Abstaende · Dark-Primary/Ink-Grund).
   0 externe Loads, 0 Hardcode (Ausnahme: der dezente Fehlerton der
   normalerweise nicht gerenderten Grounding-Warnung).

   Bewusst KEINE generischen Site-Klassen (.wrap/.item/.btn/.glass-card)
   im Radar-Markup wiederverwendet — Kollisionsschutz.

   Ladereihenfolge im <head>: funk-fonts -> funk-mono -> site.css -> radar.css.
   radar.css laedt ZULETZT und darf Site-Defaults fuer diese Subseite gezielt
   ueberschreiben.

   V2-Erweiterungen: Stats-Band-Hero + dekoratives Radar-Emblem (Opacity-Puls,
   keine Rotation), Monats-Timeline mit vertikaler Achse, Filter-Chips + Suche,
   prozedurale Status-Tags (neutrale Hairline-Palette, KEINE Ampel), Scroll-
   Reveal (nur mit .radar-reveal-ready + reduced-motion-sicher), Print.
   ============================================================ */

/* Seiten-Grund = Ink (site.css :root-Default = Dark-Kontext), Text weich-creme. */
body{
  background:var(--bg);
  color:var(--tx-body);
  font-family:var(--font-sans);
}

.radar-wrap{
  max-width:820px;
  margin:0 auto;
  padding:2.4rem 24px 4.5rem;
}

/* ---------- Kopf / Hero mit Stats-Band + Emblem ---------- */
.radar-top{
  border-bottom:1px solid var(--hairline);
  padding-bottom:1.4rem;
  margin-bottom:1.6rem;
}
.radar-hero{
  display:grid;
  grid-template-columns:1fr auto;
  gap:1.4rem;
  align-items:center;
}
.radar-hero-text{min-width:0}
.radar-top h1{
  font-family:var(--font-serif);
  font-size:clamp(1.7rem,3.4vw,2.3rem);
  line-height:1.12;
  letter-spacing:-.01em;
  color:var(--tx);
  margin:0 0 .3rem;
}
.radar-intro{
  color:var(--mut);
  font-size:1.02rem;
  line-height:1.55;
  margin:.3rem 0 0;
  max-width:640px;
  text-wrap:pretty;
}

/* Stats-Band — reine Zahlen aus den Daten (keine Coverage-Behauptung). */
.radar-stats{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:.45rem .7rem;
  margin-top:1.05rem;
  font-family:var(--font-mono);
  font-size:.82rem;
  color:var(--mut);
}
.radar-stats strong{
  font-family:var(--font-serif);
  font-size:1.2rem;
  font-weight:700;
  color:var(--tx);
  margin-right:.15rem;
}
.radar-stat-sep{color:var(--hairline)}

/* Dekoratives Radar-Emblem — 3 Hairline-Ringe + Rand-Ring + regime-farbige
   Punkte. Einzige Bewegung = langsamer Opacity-Puls (>=8s, Delta <=0.15);
   KEINE Rotation. Unter reduced-motion komplett statisch. */
.radar-emblem{
  width:clamp(112px,17vw,168px);
  height:auto;
  flex:none;
}
.radar-ring{
  fill:none;
  stroke:var(--hairline);
  stroke-width:1;
}
.radar-ring--edge{opacity:.55}
.radar-dot{fill:var(--blue)}
.radar-dot--ai-act,
.radar-dot--dma{fill:var(--neon)}
.radar-dot--gdpr{fill:var(--blue);opacity:.65}
.radar-dot--nis2{fill:var(--mut)}
.radar-emblem-dots{animation:radar-pulse 9s ease-in-out infinite}
@keyframes radar-pulse{
  0%,100%{opacity:.88}
  50%{opacity:1}
}
@media(prefers-reduced-motion:reduce){
  .radar-emblem-dots{animation:none}
}

/* Sprachumschalter — Gruppe der jeweils zwei ANDEREN Sprachen (Mono-Kicker-
   Chips oben rechts, Blau = AA auf Ink). Container = <nav>, je Sprache ein <a>. */
.radar-langswitch{
  float:right;
  display:inline-flex;
  gap:.4rem;
}
.radar-lang{
  font-family:var(--font-mono);
  font-size:.78rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--blue);
  text-decoration:none;
  border:1px solid var(--hairline);
  border-radius:6px;
  padding:5px 10px;
  transition:border-color .15s ease,color .15s ease;
}
.radar-lang:hover{
  border-color:var(--bd-accent);
  color:var(--link-hover);
}

/* ---------- Filter-Chips + Suche ---------- */
.radar-controls{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:.7rem 1rem;
  margin:.4rem 0 1.1rem;
}
.radar-chips{
  display:flex;
  flex-wrap:wrap;
  gap:.4rem;
}
.radar-chip{
  font-family:var(--font-mono);
  font-size:.72rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--mut);
  background:transparent;
  border:1px solid var(--hairline);
  border-radius:999px;
  padding:.35rem .8rem;
  cursor:pointer;
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
.radar-chip:hover{
  border-color:var(--bd-accent);
  color:var(--tx);
}
.radar-chip--active,
.radar-chip[aria-pressed="true"]{
  color:var(--tx);
  border-color:var(--bd-accent);
  background:rgba(86,149,233,.12);
}
.radar-chip:focus-visible{outline:2px solid var(--focus-ctx);outline-offset:2px}
.radar-search-input{
  font-family:var(--font-sans);
  font-size:.9rem;
  color:var(--tx);
  background:rgba(255,255,255,.04);
  border:1px solid var(--hairline);
  border-radius:8px;
  padding:.45rem .7rem;
  flex:1 1 13rem;
  min-width:min(13rem,100%);
}
.radar-search-input::placeholder{color:var(--mut)}
.radar-search-input:focus-visible{outline:2px solid var(--focus-ctx);outline-offset:1px}

/* "Keine Treffer"-Zeile — initial hidden (Attribut), via JS getoggelt. */
.radar-empty{
  color:var(--mut);
  font-family:var(--font-mono);
  font-size:.85rem;
  padding:1.1rem 0;
}

/* ---------- Timeline mit vertikaler Achse ---------- */
.radar-timeline{
  position:relative;
  margin-top:1.2rem;
  padding-left:1.7rem;
  border-left:1px solid var(--hairline);
}
.radar-monthgroup{position:relative;margin:0 0 .4rem}
/* Architekten-Fix (Visual-Gate 2026-07-09): site.css setzt globale One-Pager-
   Band-Paddings (`section{padding:84px 0}`) — Radar-Sektionen sind KEINE
   Baender. Neutralisieren; die Radar-Abstaende definiert radar.css selbst. */
.radar-wrap section{padding:0}

/* Monats-Anker an der Achse (Mono-Kicker + Achsen-Knoten). */
.radar-month{
  position:relative;
  font-family:var(--font-mono);
  font-size:.74rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:700;
  color:var(--mut);
  margin:1.7rem 0 .8rem;
}
.radar-month:first-child{margin-top:.2rem}
.radar-month::before{
  content:"";
  position:absolute;
  left:-2.0rem;
  top:.05rem;
  width:.6rem;
  height:.6rem;
  border-radius:50%;
  background:var(--bg);
  border:2px solid var(--bd-accent);
}

/* Item-Karte — eigenstaendige, ruhige Karte via Hairline + leichte Fuellung. */
.radar-item{
  position:relative;
  border:1px solid var(--hairline);
  border-radius:14px;
  padding:1.1rem 1.2rem;
  margin:0 0 1.1rem;
  background:rgba(255,255,255,.03);
}
.radar-item::before{
  content:"";
  position:absolute;
  left:-1.9rem;
  top:1.35rem;
  width:.42rem;
  height:.42rem;
  border-radius:50%;
  background:var(--hairline);
}
.radar-item-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}
.radar-item h3{
  font-family:var(--font-serif);
  font-size:1.16rem;
  font-weight:600;
  line-height:1.24;
  color:var(--tx);
  margin:.55rem 0 .35rem;
}
.radar-item time{
  color:var(--mut);
  font-family:var(--font-mono);
  font-size:.8rem;
  letter-spacing:.04em;
  white-space:nowrap;
}

/* Regime-Badge — Mono-Chip; regime-farbig (Blau-Default, Neon fuer AI-Act/DMA).
   NICHT severity-/ampelfarbig. */
.radar-regime{
  font-family:var(--font-mono);
  font-size:.68rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--blue);
  border:1px solid var(--bd-accent);
  border-radius:6px;
  padding:.18rem .5rem;
  white-space:nowrap;
}
.radar-regime--ai-act,
.radar-regime--dma{
  color:var(--neon);
  border-color:var(--neon);
}

.radar-orient{
  color:var(--tx-body);
  font-size:.98rem;
  line-height:1.55;
  margin:.35rem 0 .7rem;
  text-wrap:pretty;
}

/* Knoten-Chips — Norm-ID (Mono-Code) + Korpus-Titel auf leichter Fuellung. */
.radar-nodes{
  list-style:none;
  margin:.5rem 0;
  padding:0;
  display:flex;
  flex-wrap:wrap;
  gap:.45rem;
}
.radar-nodes li{
  background:rgba(255,255,255,.05);
  border:1px solid var(--hairline);
  border-radius:7px;
  padding:.2rem .55rem;
  font-size:.82rem;
  line-height:1.4;
  color:var(--tx-body);
}
.radar-nodes code{
  font-family:var(--font-mono);
  font-size:.78rem;
  color:var(--blue);
}

/* Karten-Fuss: Status-Tag + Quelle. */
.radar-item-foot{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.55rem 1rem;
  margin-top:.5rem;
}

/* Prozeduraler Status-Tag — neutrale Palette (Hairline-Border + Muted),
   KEINE Ampel-/Severity-Farbe. 'future' (wirksam ab) nur dezent blau betont. */
.radar-status{
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  font-family:var(--font-mono);
  font-size:.68rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--mut);
  border:1px solid var(--hairline);
  border-radius:6px;
  padding:.2rem .5rem;
}
.radar-status time{
  font-family:var(--font-mono);
  font-size:.68rem;
  color:inherit;
}
.radar-status--future{
  color:var(--tx);
  border-color:var(--bd-accent);
}

/* Quelle — Aussenlink, Blau-AA mit Hover-Neon-Unterstreichung. */
.radar-src{
  font-family:var(--font-mono);
  font-size:.82rem;
  letter-spacing:.02em;
  color:var(--blue);
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:border-color .15s ease,color .15s ease;
}
.radar-src:hover{
  color:var(--link-hover);
  border-bottom-color:var(--link-hover-bd);
}

/* Grounding-Warnung (nur wenn ein Knoten fehlt) — dezenter Fehlerton auf Ink. */
.radar-warn{
  color:#FF9E9E;
  font-family:var(--font-mono);
  font-size:.78rem;
  margin:.4rem 0 0;
}

/* ---------- Scroll-Reveal (nur mit .radar-reveal-ready) ----------
   Architekten-Fix (Visual-Gate 2026-07-09): Basis-Zustand ist IMMER
   sichtbar — kein `opacity:0`-Default, sonst bleiben Below-Fold-Karten
   ohne Scroll (Print, Screenshot, Find-in-Page, IO-Ausfall) unsichtbar.
   Die Entrance-Animation laeuft rein ADDITIV erst, wenn JS beim
   Intersect `.radar-in` setzt. */
.radar-reveal-ready .radar-item.radar-in{
  animation:radar-item-in .5s ease both;
}
@keyframes radar-item-in{
  from{opacity:0;transform:translateY(12px)}
  to{opacity:1;transform:none}
}
@media(prefers-reduced-motion:reduce){
  .radar-reveal-ready .radar-item.radar-in{
    animation:none;
  }
}

/* ---------- Newsletter-Hinweis + Footer ---------- */
/* .radar-wrap vorangestellt: muss den section-Padding-Neutralisierer schlagen. */
.radar-wrap .radar-newsletter{
  margin-top:2.4rem;
  border-top:1px solid var(--hairline);
  padding-top:1.4rem;
}
.radar-newsletter h2{
  font-family:var(--font-serif);
  font-size:1.1rem;
  font-weight:600;
  color:var(--tx);
  margin:0 0 .4rem;
}
.radar-newsletter p{
  color:var(--mut);
  font-size:.92rem;
  line-height:1.55;
  max-width:640px;
}

.radar-foot{margin-top:1.8rem}
.radar-stand{
  font-family:var(--font-mono);
  font-size:.76rem;
  letter-spacing:.04em;
  color:var(--mut);
  margin:0 0 1rem;
}

/* Disclaimer — gestrichelte Karte, ruhiger Mut-Ton (§43b: kein Werbe-Claim). */
.radar-disclaimer{
  padding:1.1rem 1.2rem;
  border:1px dashed var(--hairline);
  border-radius:12px;
  color:var(--mut);
  font-size:.9rem;
  line-height:1.55;
  margin:0 0 1rem;
}

.radar-links{
  display:flex;
  flex-wrap:wrap;
  gap:.4rem 1.1rem;
  margin:1rem 0;
}
.radar-links a{
  font-family:var(--font-mono);
  font-size:.8rem;
  letter-spacing:.02em;
  color:var(--blue);
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:border-color .15s ease,color .15s ease;
}
.radar-links a:hover{
  color:var(--link-hover);
  border-bottom-color:var(--link-hover-bd);
}

/* CTA zur Suite — Blau-Arrow-Link (kein .btn; erbt Site-Hover-Tokens). */
.radar-cta{
  display:inline-block;
  margin-top:1.2rem;
  font-weight:700;
  color:var(--blue);
  text-decoration:none;
  border-bottom:2px solid var(--bd-accent);
  transition:color .15s ease,border-bottom-color .15s ease;
}
.radar-cta:hover{
  color:var(--link-hover);
  border-bottom-color:var(--link-hover-bd);
}

/* ---------- Teaser-Fragment (Include in index.html) ---------- */
.radar-teaser{
  border:1px solid var(--hairline);
  border-radius:14px;
  padding:1.2rem 1.3rem;
  background:rgba(255,255,255,.03);
}
.radar-teaser-list{
  list-style:none;
  margin:0 0 1rem;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:.7rem;
}
.radar-teaser-item{
  display:grid;
  grid-template-columns:auto auto 1fr;
  align-items:baseline;
  gap:.4rem .7rem;
  padding-bottom:.7rem;
  border-bottom:1px solid var(--hairline);
}
.radar-teaser-item:last-child{border-bottom:0;padding-bottom:0}
.radar-teaser-item time{
  color:var(--mut);
  font-family:var(--font-mono);
  font-size:.76rem;
  white-space:nowrap;
}
.radar-teaser-title{
  font-family:var(--font-serif);
  font-size:1rem;
  color:var(--tx);
}
.radar-teaser-orient{
  grid-column:1 / -1;
  color:var(--mut);
  font-size:.88rem;
  line-height:1.5;
}
.radar-teaser-more{
  font-weight:700;
  color:var(--blue);
  text-decoration:none;
  border-bottom:2px solid var(--bd-accent);
}
.radar-teaser-more:hover{color:var(--link-hover);border-bottom-color:var(--link-hover-bd)}
.radar-teaser-disc{
  margin:.9rem 0 0;
  color:var(--mut);
  font-size:.8rem;
  line-height:1.5;
}

/* ---------- Responsive <=768px — Achse links kollabiert, Emblem weg ---------- */
@media(max-width:768px){
  .radar-wrap{padding:1.6rem 16px 3.2rem}
  .radar-langswitch{float:none;display:inline-block;margin-bottom:1rem}
  .radar-top{padding-bottom:1rem;margin-bottom:1.4rem}
  .radar-hero{grid-template-columns:1fr}
  .radar-emblem{display:none}            /* rein dekorativ -> auf Mobile aus */
  .radar-controls{flex-direction:column;align-items:stretch}
  /* Architekten-Fix (Visual-Gate): in der Column wirkt flex-basis:13rem sonst
     als HOEHE -> Suchfeld blaeht sich auf ~200px auf. */
  .radar-search-input{flex:0 0 auto;width:100%}
  .radar-timeline{padding-left:1.1rem}
  .radar-month::before{left:-1.4rem}
  .radar-item::before{display:none}
  .radar-item{padding:1rem}
  .radar-item-head{flex-wrap:wrap;gap:8px}
  .radar-teaser-item{grid-template-columns:auto 1fr}
}

/* ---------- Print — ruhig, ohne interaktive Chrome ---------- */
@media print{
  body{background:#fff;color:#000}
  .radar-controls,.radar-emblem,.radar-cta,.radar-langswitch{display:none}
  .radar-reveal-ready .radar-item.radar-in{animation:none}
  .radar-item{break-inside:avoid}
}
