/* ——————————————————————————————————————————————————————————————
   while.chat · article.css — Brutalist-Artikel-System (v2)
   Single Source of Truth fuer ALLE Artikel. Per <link> eingebunden,
   nie inline dupliziert. Erbt Tokens + Fonts aus brutalist.css.

   Glyph-Politik: Richtungspfeile (→ ↗ ←) erlaubt als typografische
   Marker. Piktogramme (✦ ✓ ⎘ Icons/SVG) verboten — keine Icons in UI.

   Mobile-First gehaertet: Drop-Cap-Override, TOC-<details>, 44px-Tap-
   Targets, hyphens:auto, Code-Touch-Scroll, kein H-Overflow auf 360px.
—————————————————————————————————————————————————————————————— */

/* —— READING-PROGRESS (oben fixiert) —— */
.progress{ position: fixed; top: 0; left: 0; right: 0; height: 4px; background: transparent; z-index: 70; pointer-events: none; }
.progress .fill{ height: 100%; background: var(--accent); width: 0%; transition: width .08s linear; }
@media (prefers-reduced-motion: reduce){ .progress .fill{ transition: none; } }

/* —— BREADCRUMBS —— */
.crumbs{ padding: 14px 0; border-bottom: 2px solid var(--ink); background: var(--bg); font-family: var(--ff-mono); font-size: 12px; color: var(--ink-mute); letter-spacing: 0.06em; overflow-wrap: anywhere; }
.crumbs a{ color: var(--ink); }
.crumbs a:hover{ background: var(--accent); color: var(--accent-ink); padding: 0 4px; }
.crumbs .sep{ margin: 0 10px; color: var(--ink-mute); }
.crumbs .here{ color: var(--accent); font-weight: 600; }

/* —— ARTICLE-HERO (statisch, ersetzt Three.js) —— */
.art-hero{ padding: 60px 0 70px; border-bottom: 2px solid var(--ink); }
.art-hero .meta-strip{ display:flex; gap: 22px; align-items: center; flex-wrap: wrap; font-family: var(--ff-mono); font-size: 12px; color: var(--ink-mute); padding: 0 32px; margin-bottom: 32px; }
.art-hero .meta-strip .cat-badge{ background: var(--ink); color: var(--bg); padding: 6px 12px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600; }
.art-hero .meta-strip .acc-badge{ background: var(--accent); color: var(--accent-ink); padding: 6px 12px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600; }
.art-hero .meta-strip span b{ color: var(--ink); font-weight: 500; }
.art-hero h1{ font-family: var(--ff-display); font-weight: 700; font-size: clamp(40px, 6.8vw, 96px); line-height: 0.94; letter-spacing: -0.04em; margin: 0 0 28px; padding: 0 32px; text-wrap: balance; max-width: 22ch; hyphens: auto; -webkit-hyphens: auto; overflow-wrap: break-word; }
.art-hero h1 .acc{ background: var(--accent); color: var(--accent-ink); padding: 0 12px; display: inline-block; }
.art-hero .lede{ font-family: var(--ff-display); font-size: clamp(20px, 2.1vw, 26px); line-height: 1.35; max-width: 60ch; margin: 0 32px 36px; color: var(--ink-soft); font-weight: 500; }
.art-hero .lede em{ font-style: normal; background: var(--ink); color: var(--bg); padding: 0 6px; }
.art-hero .author-row{ display:flex; gap: 24px; align-items: center; flex-wrap: wrap; padding: 24px 32px 0; border-top: 2px solid var(--ink); }
.author-chip{ display:flex; align-items: center; gap: 12px; font-family: var(--ff-mono); font-size: 13px; }
.author-chip .avatar{ width: 44px; height: 44px; background: var(--ink); color: var(--bg); display:flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; letter-spacing: -0.02em; flex-shrink: 0; }
.author-chip .author-name b{ display:block; font-weight: 600; color: var(--ink); }
.author-chip .author-name span{ color: var(--ink-mute); font-size: 11px; }
.art-hero .actions{ margin-left: auto; display:flex; gap: 8px; flex-wrap: wrap; font-family: var(--ff-mono); font-size: 11px; }
.art-hero .actions a{ padding: 9px 14px; border: 2px solid var(--ink); letter-spacing: 0.06em; min-height: 40px; display:inline-flex; align-items:center; }
.art-hero .actions a:hover{ background: var(--ink); color: var(--bg); }

/* —— OPTIONALES HERO-BILD (statisch, ersetzt canvas) —— */
.art-hero-image{ margin: 0 32px 36px; border: 2px solid var(--ink); aspect-ratio: 16/9; object-fit: cover; width: calc(100% - 64px); display:block; background: var(--bg-deep); }

/* —— BODY-LAYOUT —— */
/* Default: TOC + Prose (2 Spalten) — das STANDARD-Rezept. */
.art-body-wrap{ padding: 70px 0 100px; }
.art-body-wrap .grid{ display:grid; grid-template-columns: 240px minmax(0,1fr); gap: 50px; max-width: 1100px; margin: 0 auto; padding: 0 32px; }
/* Opt-in: zusaetzliche rechte Sidebar (Stats/Share) fuer Sonderfaelle. */
.art-body-wrap .grid.with-aside{ grid-template-columns: 240px minmax(0,1fr) 240px; max-width: 1320px; }
/* Grid-Items duerfen unter ihre Content-Min-Breite schrumpfen — sonst blaeht
   ein <pre> oder langes Wort die Spalte auf und overflow-x:clip schneidet ab. */
.art-body-wrap .grid > *{ min-width: 0; }

/* —— TOC (Desktop: sticky Sidebar) —— */
.toc{ position: sticky; top: 90px; align-self: start; font-family: var(--ff-mono); font-size: 12px; border-top: 2px solid var(--ink); padding-top: 16px; }
.toc > summary{ list-style: none; }            /* details-Marker aus */
.toc > summary::-webkit-details-marker{ display:none; }
.toc h5, .toc > summary{ font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-mute); margin: 0 0 16px; font-weight: 600; }
.toc ol{ list-style: none; counter-reset: t; padding: 0; margin: 0; }
.toc li{ counter-increment: t; padding: 6px 0; border-bottom: 1px solid var(--rule-soft); }
.toc li a{ display:block; color: var(--ink-soft); position: relative; padding-left: 32px; line-height: 1.4; min-height: 32px; }
.toc li a::before{ content: counter(t, decimal-leading-zero); position: absolute; left: 0; color: var(--ink-mute); }
.toc li a:hover, .toc li a.active{ color: var(--accent); }
.toc li a.active::after{ content: "←"; margin-left: 8px; color: var(--accent); }

/* —— ASIDE (Desktop: rechte Spalte) —— */
.aside{ position: sticky; top: 90px; align-self: start; font-family: var(--ff-mono); font-size: 11px; color: var(--ink-mute); display:flex; flex-direction: column; gap: 24px; }
.aside .block-card{ border: 2px solid var(--ink); padding: 18px 16px; background: var(--paper); }
.aside .block-card h6{ font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; margin: 0 0 12px; color: var(--ink-mute); font-weight: 600; }
.aside .block-card .v{ font-family: var(--ff-display); font-size: 32px; font-weight: 700; letter-spacing: -0.02em; color: var(--ink); line-height: 1; }
.aside .block-card .v.acc{ color: var(--accent); }
.aside .block-card p{ margin: 8px 0 0; line-height: 1.5; color: var(--ink-soft); }
.aside .share a{ display:flex; justify-content: space-between; align-items:center; padding: 12px 14px; border: 2px solid var(--ink); color: var(--ink); font-size: 11px; letter-spacing: 0.08em; margin-bottom: 6px; min-height: 44px; }
.aside .share a:hover{ background: var(--ink); color: var(--bg); }
.aside .share a::after{ content: "↗"; }

/* —— PROSE (Haupttext) —— */
.prose{ font-family: var(--ff-body); font-size: 18px; line-height: 1.65; color: var(--ink-soft); max-width: 65ch; hyphens: auto; -webkit-hyphens: auto; overflow-wrap: break-word; }
.prose p{ margin: 0 0 22px; }
.prose > p:first-of-type::first-letter{ font-family: var(--ff-display); font-size: 80px; font-weight: 700; float: left; line-height: 0.74; margin: 6px 14px 0 0; background: var(--accent); color: var(--accent-ink); padding: 2px 10px 6px; }
.prose h2{ font-family: var(--ff-display); font-weight: 700; font-size: clamp(28px, 3vw, 40px); letter-spacing: -0.028em; line-height: 1.05; margin: 60px 0 18px; color: var(--ink); position: relative; padding-top: 28px; border-top: 2px solid var(--ink); scroll-margin-top: 90px; hyphens: auto; -webkit-hyphens: auto; }
.prose h2 .num{ font-family: var(--ff-mono); font-size: 13px; font-weight: 500; color: var(--ink-mute); display: block; margin-bottom: 6px; letter-spacing: 0.1em; }
.prose h3{ font-family: var(--ff-display); font-weight: 700; font-size: 22px; letter-spacing: -0.018em; line-height: 1.25; margin: 36px 0 12px; color: var(--ink); scroll-margin-top: 90px; }
.prose a{ color: var(--ink); border-bottom: 2px solid var(--accent); }
.prose a:hover{ background: var(--accent); color: var(--accent-ink); border-color: var(--accent); }
.prose strong, .prose b{ color: var(--ink); font-weight: 700; }
.prose em{ font-style: italic; }

/* —— LISTEN (▸ + decimal-leading-zero, typografisch) —— */
.prose ul, .prose ol{ margin: 0 0 22px; padding-left: 0; list-style: none; }
.prose ul li, .prose ol li{ position: relative; padding-left: 28px; margin-bottom: 8px; }
.prose ul li::before{ content: "▸"; position: absolute; left: 0; color: var(--accent); font-weight: 700; }
.prose ol{ counter-reset: ol; }
.prose ol li{ counter-increment: ol; }
.prose ol li::before{ content: counter(ol, decimal-leading-zero); position: absolute; left: 0; color: var(--accent); font-family: var(--ff-mono); font-size: 14px; font-weight: 600; top: 4px; }

/* —— BLOCKQUOTE —— */
.prose blockquote{ margin: 32px 0; padding: 24px 28px; border: 2px solid var(--ink); background: var(--bg-deep); font-family: var(--ff-display); font-size: 22px; line-height: 1.35; color: var(--ink); font-weight: 500; position: relative; }
.prose blockquote::before{ content: "\201C"; font-family: var(--ff-display); font-size: 60px; line-height: 0; position: absolute; top: 24px; left: -8px; color: var(--accent); background: var(--bg); padding: 0 4px; }
.prose blockquote cite{ display:block; margin-top: 14px; font-family: var(--ff-mono); font-size: 12px; color: var(--ink-mute); letter-spacing: 0.08em; font-style: normal; }
.prose blockquote cite::before{ content: "— "; }

/* —— CODE (Touch-Scroll, kein Page-Overflow) —— */
.prose code{ font-family: var(--ff-mono); font-size: 0.92em; background: var(--ink); color: var(--bg); padding: 1px 6px; overflow-wrap: break-word; }
.prose pre{ margin: 32px 0; padding: 0; border: 2px solid var(--ink); background: var(--ink); color: var(--bg); overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; font-family: var(--ff-mono); font-size: 13px; line-height: 1.6; }
.prose pre .head{ background: var(--accent); color: var(--accent-ink); padding: 6px 14px; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 600; display:flex; justify-content: space-between; position: sticky; left: 0; }
.prose pre code{ display:block; background: transparent; color: var(--bg); padding: 18px 22px; font-size: 13px; white-space: pre; overflow-wrap: normal; }
.prose pre code .kw{ color: #ff5b1f; }
.prose pre code .str{ color: #1aff8c; }
.prose pre code .com{ color: rgba(255,255,255,0.4); }

/* —— CALLOUT (ersetzt insight-box / highlight-box / takeaway) —— */
.callout{ margin: 32px 0; padding: 22px 26px 24px; border: 2px solid var(--ink); background: var(--ink); color: var(--bg); display:grid; grid-template-columns: 110px 1fr; gap: 24px; }
.callout .tag{ font-family: var(--ff-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
.callout p{ margin: 0; font-family: var(--ff-display); font-size: 17px; line-height: 1.45; color: var(--bg); }
.callout p + p{ margin-top: 10px; }
.callout.warning{ background: var(--accent); color: var(--accent-ink); }
.callout.warning .tag{ color: var(--ink); }
.callout.warning p{ color: var(--accent-ink); }

/* —— FIGURE (full-bleed Desktop, gezaehmt Mobile) —— */
.prose figure{ margin: 36px -40px; }
.prose figure img{ width: 100%; height: auto; display:block; border: 2px solid var(--ink); }
.prose figure .img{ aspect-ratio: 16/9; background: repeating-linear-gradient(135deg, var(--bg-deep) 0 14px, var(--bg) 14px 28px); border: 2px solid var(--ink); display:flex; align-items:flex-end; padding: 16px; font-family: var(--ff-mono); font-size: 11px; color: var(--ink-mute); position: relative; }
.prose figure .img .label{ position:absolute; top: 14px; left: 14px; background: var(--ink); color: var(--bg); padding: 4px 10px; letter-spacing: 0.08em; font-size: 10px; font-weight: 600; }
.prose figure figcaption{ font-family: var(--ff-mono); font-size: 11px; color: var(--ink-mute); margin-top: 10px; letter-spacing: 0.06em; padding: 0 6px; }

/* —— TABELLE (Scroll-Wrapper gegen Overflow) —— */
.prose .table-scroll{ overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 32px 0; border: 2px solid var(--ink); }
.prose table{ width: 100%; border-collapse: collapse; font-family: var(--ff-mono); font-size: 13px; }
.prose .table-scroll table{ margin: 0; border: 0; }
.prose th, .prose td{ padding: 10px 14px; text-align: left; border-bottom: 1px solid var(--rule-soft); white-space: nowrap; }
.prose th{ background: var(--ink); color: var(--bg); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; font-size: 11px; border-bottom: 0; }
.prose tr:hover td{ background: var(--bg-deep); }

/* —— HR (nur Regel, kein Deko-Glyph) —— */
.prose hr{ border: 0; border-top: 2px solid var(--ink); margin: 50px 0; }

/* ——————————————————————————————————————————————————————————————
   BRUTALIST-MODUL-BIBLIOTHEK
   Generische Bausteine fuer die VIZ-Subtyp-Mappings in Sprint 2.
   Alle statisch, harte Kanten, Mono-Akzente, kein Animate-Schnickschnack.
—————————————————————————————————————————————————————————————— */

/* —— TOGGLE (Brutalist <details>, ersetzt faq/tactic/analogy/view-toggle)
   PFLICHT-konform: ein einziges Toggle-Muster. Kein Scanner/Deep-Read/Visual-3er. */
.b-toggle{ border: 2px solid var(--ink); margin: 24px 0; background: var(--paper); }
.b-toggle > summary{ list-style: none; cursor: pointer; padding: 16px 20px; font-family: var(--ff-mono); font-size: 13px; font-weight: 600; letter-spacing: 0.04em; color: var(--ink); display:flex; justify-content: space-between; align-items:center; gap: 16px; min-height: 52px; }
.b-toggle > summary::-webkit-details-marker{ display:none; }
.b-toggle > summary::after{ content: "+"; font-family: var(--ff-mono); font-size: 20px; color: var(--accent); line-height: 1; }
.b-toggle[open] > summary::after{ content: "\2212"; }                /* minus */
.b-toggle[open] > summary{ border-bottom: 2px solid var(--ink); }
.b-toggle .b-toggle-body{ padding: 20px; font-family: var(--ff-body); font-size: 15px; line-height: 1.65; color: var(--ink-soft); }

/* —— FAQ (Liste aus b-toggle, ersetzt faq-item/faq-chevron) —— */
.faq{ margin: 40px 0; }
.faq .faq-q{ /* alias: nutze .b-toggle-Struktur */ }
.faq > .b-toggle + .b-toggle{ margin-top: -2px; }                    /* Kanten teilen */

/* —— TABS (Brutalist, ersetzt hormone-tabs etc.) —— */
.b-tabs{ border: 2px solid var(--ink); margin: 32px 0; background: var(--paper); }
.b-tablist{ display:flex; flex-wrap: wrap; border-bottom: 2px solid var(--ink); }
.b-tab{ font-family: var(--ff-mono); font-size: 12px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; padding: 14px 18px; cursor: pointer; color: var(--ink-mute); background: transparent; border: 0; border-right: 2px solid var(--ink); min-height: 48px; }
.b-tab[aria-selected="true"]{ background: var(--ink); color: var(--bg); }
.b-tab:hover{ color: var(--ink); }
.b-tab[aria-selected="true"]:hover{ color: var(--bg); }
.b-tab:last-child{ border-right: 0; }                                /* kein Doppel-Band zur Container-Kante (Disziplin wie .b-cards) */
.b-tabpanel{ padding: 24px 22px; font-family: var(--ff-body); font-size: 15px; line-height: 1.65; color: var(--ink-soft); }
.b-tabpanel[hidden]{ display:none; }

/* —— CARD-SEQUENZ (ersetzt lever-step / pipeline-node) —— */
.b-cards{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 2px solid var(--ink); border-left: 2px solid var(--ink); margin: 32px 0; }
.b-card{ border-right: 2px solid var(--ink); border-bottom: 2px solid var(--ink); padding: 22px 20px; background: var(--paper); }
.b-card .b-card-num{ font-family: var(--ff-mono); font-size: 12px; font-weight: 600; color: var(--accent); letter-spacing: 0.1em; margin-bottom: 10px; }
.b-card h4{ font-family: var(--ff-display); font-size: 17px; font-weight: 700; letter-spacing: -0.015em; line-height: 1.2; margin: 0 0 8px; color: var(--ink); }
.b-card p{ font-size: 14px; line-height: 1.55; color: var(--ink-soft); margin: 0; }
.b-card p + p{ margin-top: 10px; }
/* Pipeline-Variante: Karten als Kette mit Mono-Pfeil dazwischen */
.b-cards.pipeline{ display:flex; flex-wrap: wrap; align-items: stretch; border: 0; gap: 0; }
.b-cards.pipeline .b-card{ flex: 1 1 200px; border: 2px solid var(--ink); }
.b-cards.pipeline .b-card + .b-card{ margin-left: -2px; }

/* —— BAR-CHART (statisch, ersetzt bar-fill/bar-track) —— */
.b-bars{ margin: 32px 0; border: 2px solid var(--ink); padding: 22px 24px; background: var(--paper); font-family: var(--ff-mono); }
.b-bar{ margin: 0 0 16px; }
.b-bar:last-child{ margin-bottom: 0; }
.b-bar .b-bar-head{ display:flex; justify-content: space-between; font-size: 12px; color: var(--ink); margin-bottom: 6px; letter-spacing: 0.04em; }
.b-bar .b-bar-head .val{ color: var(--accent); font-weight: 600; }
.b-bar .b-bar-track{ height: 18px; border: 2px solid var(--ink); background: var(--bg); }
.b-bar .b-bar-fill{ height: 100%; background: var(--accent); }

/* —— CLUSTER-NODE-WRAP (Pillar/Spoke/BOFU-Chips in .b-tabpanel)
   Brutalist-Chips für den Cluster-Visualizer: harte Kanten, Mono, kein Radius. */
.cluster-node-wrap{ display:flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 10px; }
.cluster-node-wrap .cluster-pillar{ font-family: var(--ff-mono); font-size: 12px; font-weight: 600; letter-spacing: 0.04em; background: var(--ink); color: var(--bg); padding: 6px 12px; }
.cluster-node-wrap .cluster-spoke{ font-family: var(--ff-mono); font-size: 12px; background: var(--paper); color: var(--ink-soft); border: 2px solid var(--ink); padding: 4px 10px; }
.cluster-node-wrap .cluster-spoke-bofu{ font-family: var(--ff-mono); font-size: 12px; font-weight: 600; background: var(--accent); color: var(--accent-ink); padding: 6px 12px; }
.cluster-node-wrap .cluster-arrow{ font-family: var(--ff-mono); color: var(--accent); font-weight: 700; }

/* —— VIZ-BLOCK (Titel + Quelle um b-bars / Tabellen / Pipelines)
   Chart-Titel und Quellenangaben sind Content — dieser Wrapper haelt sie. */
.prose .viz{ margin: 36px 0; }
.prose .viz .viz-title{ font-family: var(--ff-mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-mute); font-weight: 600; margin: 0 0 12px; }
.prose .viz .b-bars, .prose .viz .table-scroll, .prose .viz .b-cards{ margin: 0; }
.prose .viz .viz-source{ font-family: var(--ff-mono); font-size: 10.5px; color: var(--ink-mute); letter-spacing: 0.04em; margin: 12px 0 0; }

/* —— END-OF-ARTICLE AUTHOR-BLOCK —— */
.author-block{ margin: 70px 0 0; padding: 32px; border: 2px solid var(--ink); background: var(--paper); display:grid; grid-template-columns: 90px 1fr; gap: 24px; }
.author-block .avatar{ width: 90px; height: 90px; background: var(--ink); color: var(--bg); display:flex; align-items: center; justify-content: center; font-family: var(--ff-display); font-weight: 700; font-size: 30px; flex-shrink: 0; }
.author-block h4{ font-family: var(--ff-display); font-size: 24px; font-weight: 700; margin: 0 0 4px; letter-spacing: -0.02em; }
.author-block .role{ font-family: var(--ff-mono); font-size: 11px; color: var(--ink-mute); letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 12px; }
.author-block p{ font-family: var(--ff-body); font-size: 15px; color: var(--ink-soft); line-height: 1.55; margin: 0 0 14px; max-width: 60ch; }
.author-block .links{ display:flex; gap: 10px; flex-wrap: wrap; font-family: var(--ff-mono); font-size: 11px; }
.author-block .links a{ padding: 9px 12px; border: 2px solid var(--ink); letter-spacing: 0.06em; min-height: 40px; display:inline-flex; align-items:center; }
.author-block .links a:hover{ background: var(--ink); color: var(--bg); }

/* —— MICRO-JOURNAL-CTA (PFLICHT — Brutalist-Variante) —— */
.micro-journal{ margin: 48px 0 0; border: 2px solid var(--ink); background: var(--bg-deep); padding: 28px 30px; }
.micro-journal .mj-tag{ font-family: var(--ff-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-mute); margin-bottom: 12px; }
.micro-journal h3{ font-family: var(--ff-display); font-size: clamp(22px, 2.6vw, 30px); font-weight: 700; letter-spacing: -0.02em; line-height: 1.1; margin: 0 0 10px; color: var(--ink); }
.micro-journal p{ font-family: var(--ff-body); font-size: 15px; line-height: 1.6; color: var(--ink-soft); max-width: 56ch; margin: 0 0 18px; }
.micro-journal .mj-field{ display:flex; gap: 0; border: 2px solid var(--ink); background: var(--paper); }
.micro-journal textarea{ flex: 1; border: 0; background: transparent; padding: 14px 16px; font-family: var(--ff-body); font-size: 15px; line-height: 1.5; resize: none; outline: 0; color: var(--ink); min-height: 52px; }
.micro-journal .mj-send{ background: var(--ink); color: var(--bg); border: 0; padding: 0 22px; font-family: var(--ff-mono); font-size: 13px; font-weight: 600; letter-spacing: 0.04em; cursor: pointer; min-width: 84px; }
.micro-journal .mj-send:hover{ background: var(--accent); color: var(--accent-ink); }

/* —— RELATED —— */
.related{ padding: 90px 0; border-top: 2px solid var(--ink); border-bottom: 2px solid var(--ink); background: var(--bg-deep); }
.related .sec-h{ margin-bottom: 36px; font-size: clamp(32px, 4.4vw, 56px); }
.related-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 2px solid var(--ink); border-left: 2px solid var(--ink); }
.related-card{ padding: 26px 24px 28px; border-right: 2px solid var(--ink); border-bottom: 2px solid var(--ink); background: var(--bg); min-height: 220px; display:flex; flex-direction: column; }
.related-card:hover{ background: var(--ink); color: var(--bg); }
.related-card:hover h5{ color: var(--accent); }
.related-card .meta-row{ font-family: var(--ff-mono); font-size: 10.5px; color: var(--ink-mute); letter-spacing: 0.08em; margin-bottom: 10px; }
.related-card:hover .meta-row{ color: rgba(255,255,255,0.5); }
.related-card .meta-row .cat{ color: var(--accent); text-transform: uppercase; font-weight: 600; }
.related-card h5{ font-family: var(--ff-display); font-size: 19px; font-weight: 700; letter-spacing: -0.018em; line-height: 1.2; margin: 0 0 8px; text-wrap: balance; }
.related-card p{ font-size: 13.5px; line-height: 1.5; color: var(--ink-soft); margin: 0 0 auto 0; }
.related-card:hover p{ color: rgba(255,255,255,0.7); }
.related-card .read{ font-family: var(--ff-mono); font-size: 11px; color: var(--ink-mute); margin-top: 18px; letter-spacing: 0.08em; }
.related-card:hover .read{ color: var(--accent); }

/* —— NEWSLETTER-STRIP —— */
.nl{ padding: 80px 0; border-bottom: 2px solid var(--ink); }
.nl-row{ display:grid; grid-template-columns: 1.2fr 1fr; gap: 60px; align-items: center; }
.nl h2{ font-family: var(--ff-display); font-size: clamp(28px, 3.4vw, 44px); font-weight: 700; letter-spacing: -0.03em; line-height: 1; margin: 0 0 14px; }
.nl h2 em{ font-style: normal; background: var(--accent); color: var(--accent-ink); padding: 0 8px; }
.nl p{ font-family: var(--ff-display); font-size: 16px; line-height: 1.5; max-width: 50ch; margin: 0; color: var(--ink-soft); }
.nl form{ display:flex; gap: 0; border: 2px solid var(--ink); background: var(--paper); }
.nl input{ flex: 1; border: 0; background: transparent; padding: 16px 18px; font-family: var(--ff-mono); font-size: 14px; outline: 0; color: var(--ink); min-height: 52px; }
.nl button{ background: var(--ink); color: var(--bg); border: 0; padding: 0 24px; font-family: var(--ff-mono); font-size: 13px; font-weight: 600; letter-spacing: 0.04em; cursor: pointer; min-width: 110px; }
.nl button:hover{ background: var(--accent); color: var(--accent-ink); }
.nl .small{ font-family: var(--ff-mono); font-size: 11px; color: var(--ink-mute); margin-top: 10px; }

/* ——————————————————————————————————————————————————————————————
   MOBILE-EXCELLENCE (gehaertet, Desktop-First-konsistent zu brutalist.css)
—————————————————————————————————————————————————————————————— */

@media (max-width: 1100px){
  .art-body-wrap .grid, .art-body-wrap .grid.with-aside{ grid-template-columns: 200px minmax(0,1fr); gap: 40px; }
  .aside{ display: none; }
  .prose figure{ margin: 36px 0; }
}

@media (max-width: 780px){
  .art-body-wrap .grid{ grid-template-columns: minmax(0,1fr); gap: 32px; }
  /* TOC → eingeklapptes <details> oben */
  .toc{ position: static; border: 2px solid var(--ink); border-top: 2px solid var(--ink); padding: 0; }
  .toc > summary{ cursor: pointer; padding: 14px 18px; margin: 0; display:flex; justify-content: space-between; align-items:center; min-height: 48px; }
  .toc > summary::after{ content: "+"; color: var(--accent); font-size: 20px; }   /* Marker-Groesse wie .b-toggle (geteiltes Toggle-Vokabular) */
  .toc[open] > summary::after{ content: "\2212"; }
  .toc[open] > summary{ border-bottom: 2px solid var(--ink); }
  .toc ol{ padding: 8px 18px 14px; }
  /* Aufgeklapptes Mobil-TOC ist primaere Navigation -> 44px Tap-Target */
  .toc li a{ min-height: 44px; display: flex; align-items: center; }
  .art-hero{ padding: 36px 0 44px; }
  .art-hero h1{ font-size: clamp(34px, 8.5vw, 54px); padding: 0 20px; }
  .art-hero .meta-strip{ padding: 0 20px; gap: 10px; }
  .art-hero .lede{ margin: 0 20px 28px; }
  .art-hero .author-row{ padding: 20px 20px 0; }
  .art-hero .actions{ margin-left: 0; }
  .art-hero-image{ margin: 0 20px 28px; width: calc(100% - 40px); }
  .author-block{ grid-template-columns: 1fr; }
  .related-grid{ grid-template-columns: 1fr; }
  .nl-row{ grid-template-columns: 1fr; }
  .b-cards{ grid-template-columns: 1fr; }
  .b-cards.pipeline{ flex-direction: column; }
  .b-cards.pipeline .b-card + .b-card{ margin-left: 0; margin-top: -2px; }
  .callout{ grid-template-columns: 1fr; gap: 12px; }
}

@media (max-width: 600px){
  /* Seitenrand der Lesespalte an die Hero-Sektion angleichen (20px wie .art-hero) */
  .art-body-wrap .grid{ padding: 0 20px; }
  /* Drop-Cap gezaehmt — sonst bricht der erste Absatz */
  .prose > p:first-of-type::first-letter{ font-size: 54px; margin: 4px 10px 0 0; padding: 1px 7px 4px; }
  .prose{ font-size: 17px; }
  .prose figure{ margin: 28px -20px; }
  .b-tablist{ flex-direction: column; }
  .b-tab{ border-right: 0; border-bottom: 2px solid var(--ink); }
  .b-tab:last-child{ border-bottom: 0; }
}

@media (max-width: 360px){
  .art-hero h1{ font-size: 32px; }
  .wrap{ padding: 0 16px; }
}

/* Touch-Geraete: Tap-Targets garantiert ≥44px */
@media (hover: none){
  .art-hero .actions a, .author-block .links a{ min-height: 44px; }
  .prose a{ padding: 1px 0; }
}

@media (prefers-reduced-motion: reduce){
  *{ animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}
