/* Newsdesk – Gestaltung nach dem Markenhandbuch der Verlagsgruppe Walter Temmer
   (~/VWT-Brand, Version 1.0 vom 23.09.2026).

   Die Regeln des Handbuchs, auf ein Arbeitswerkzeug übertragen:
   - Drei Markenfarben tragen alles: Tinte (Text, Flächen, Hauptaktion), Papier (Grund),
     Rubrikrot als einziger Akzent – Rubrikstrich, Links, Verwerfen, Fehler. Nie als Fläche
     hinter Text, nie für Knöpfe in Serie. Ok- und Warnzustände sind Betriebsfarben, keine
     Markenfarben: gedeckt, sparsam, nur wo ein Zustand ohne sie unlesbar wäre.
   - Zwei Schriften: Newsreader (Titel, Namen, Zitate; Variable Font mit optischem Schnitt),
     Inter (alles andere, Zahlen tabellarisch). Versalien nur gesperrt. Keine 700.
   - Linksbündig, Linien statt Kästen, Karten weiß auf Papier ohne Schatten, Rundung
     höchstens 6 px, keine Pillen, keine Kreise, keine Verläufe, keine Effekte.
   - Der Rubrikstrich steht vor jedem Seitentitel (h1::before). Sonst ist alles Papier,
     Linie und Schrift.

   Dunkler Modus nach Handbuch: Tinte als Fläche, Papier als Text, Rubrikrot hell, Nebel dunkel
   als Linie, Graphit hell als Nebentext. Tokens unten, Komponenten darunter; Seiten ergänzen
   nur Layout in eigenen <style>-Blöcken und benutzen die Klassen von hier. */
:root{
  color-scheme:light dark;
  /* Markenfarben */
  --tinte:#161A20; --papier:#F6F3EE; --rubrikrot:#B7202E; --graphit:#4A515B; --nebel:#D8D3CA;
  --weiss:#FFFFFF; --rot-hell:#F5E3E3; --tinte-hell:#E7E9EC;
  /* Rollen (Hexwerte ausgeschrieben: Tests und Werkzeuge lesen sie direkt) */
  --bg:#F6F3EE; --surface:#FFFFFF; --ink:#161A20; --muted:#4A515B; /* Papier, Weiß, Tinte, Graphit */
  --line:#D8D3CA; --line-strong:#B9B3A8; /* Nebel, Nebel dunkler */
  --accent:#B7202E; --accent-ink:#FFFFFF; --accent-soft:#F5E3E3; /* Rubrikrot, Rot hell */
  --stage:#161A20; --stage-ink:#F6F3EE; --stage-soft:#E7E9EC; /* Hauptaktion in Tinte, Tinte hell */
  --ok:#2E6B45; --ok-ink:#FFFFFF; --ok-soft:#E4EDE6;
  --warn:#7A5400; --warn-ink:#FFFFFF; --warn-soft:#F4EBD6;
  --code-bg:#E7E9EC;
  --shadow:none;
  --serif:'Newsreader', Georgia, 'Times New Roman', serif;
  --sans:'Inter', Arial, Helvetica, sans-serif;
  --mono:'Inter', Arial, Helvetica, sans-serif; /* Zahlen und Kennungen: Inter tabellarisch */
  --code:ui-monospace, Menlo, Consolas, monospace; /* nur für Code und Tasten */
  --fs-xs:12px; --fs-s:13px; --fs-m:14px; --fs-body:15px; --fs-l:17px;
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:24px; --space-6:32px;
  --radius:3px; --radius-card:6px;
  --topbar-h:48px;
  --strich:28px; /* Rubrikstrich vor Seitentiteln */
}
/* Dunkler Satz: Systemeinstellung, sofern nicht ausdrücklich hell gewählt … */
@media (prefers-color-scheme: dark){
  :root:not([data-theme=light]){
    --bg:#161A20; --surface:#1E242B; --ink:#F6F3EE; --muted:#AEB4BC;
    --line:#2A3038; --line-strong:#3D444D;
    --accent:#D8404C; --accent-ink:#161A20; --accent-soft:#3A2226;
    --stage:#F6F3EE; --stage-ink:#161A20; --stage-soft:#262C34;
    --ok:#7FC49A; --ok-ink:#161A20; --ok-soft:#1F3328;
    --warn:#E0B24A; --warn-ink:#161A20; --warn-soft:#3A3014;
    --code-bg:#232A32;
  }
}
/* … oder ausdrücklich dunkel (Umschalter in der Topbar, app.js) */
:root[data-theme=dark]{
  --bg:#161A20; --surface:#1E242B; --ink:#F6F3EE; --muted:#AEB4BC;
  --line:#2A3038; --line-strong:#3D444D;
  --accent:#D8404C; --accent-ink:#161A20; --accent-soft:#3A2226;
  --stage:#F6F3EE; --stage-ink:#161A20; --stage-soft:#262C34;
  --ok:#7FC49A; --ok-ink:#161A20; --ok-soft:#1F3328;
  --warn:#E0B24A; --warn-ink:#161A20; --warn-soft:#3A3014;
  --code-bg:#232A32;
}

/* ---------------------------------------------------------------- Grundlagen */
*{box-sizing:border-box}
html{font-optical-sizing:auto}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--fs-body);line-height:1.5;
  -webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:2px}
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.15;margin:0;text-wrap:balance;letter-spacing:-.005em}
h1{font-size:34px}h2{font-size:24px}h3{font-size:19px}
/* Der Rubrikstrich: ein Zehntel Wortmarke, oben links, vor jedem Seitentitel */
h1::before{content:"";display:block;width:var(--strich);height:4px;background:var(--accent);margin-bottom:10px}
h1.plain::before{display:none}
[hidden]{display:none !important}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.muted{color:var(--muted)}
.small{font-size:var(--fs-xs)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.right{margin-left:auto}
.flex-1{flex:1}
.link-plain{text-decoration:none;color:inherit}
/* Kicker: Inter 600, Versalien gesperrt (+12 %) – die einzige erlaubte Versalschrift */
.eyebrow{font-family:var(--sans);font-weight:600;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.row{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}
.grid{display:grid;gap:var(--space-4)}
.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.grid.cols-3{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
hr{border:none;border-top:1px solid var(--line);margin:18px 0}
pre,code{font-family:var(--code)}
pre{background:var(--code-bg);padding:10px 12px;font-size:var(--fs-xs);overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}
details summary{cursor:pointer;color:var(--muted);font-size:var(--fs-s)}
.kbd{font-family:var(--code);font-size:var(--fs-xs);padding:1px 6px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:var(--radius);background:var(--surface)}
/* Bilder je Farbschema (Logo in Tinte oder Papier). !important, damit keine Komponentenregel
   (.brand img, .login-mark) die Umschaltung überstimmt. */
.only-dark{display:none !important}
@media (prefers-color-scheme: dark){
  :root:not([data-theme=light]) .only-light{display:none !important}
  :root:not([data-theme=light]) .only-dark{display:block !important}
}
:root[data-theme=dark] .only-light{display:none !important}
:root[data-theme=dark] .only-dark{display:block !important}

/* Kürzelhilfe („?“, app.js); Seiten tragen ihre Tasten in den Block help ein */
dialog.help{border:1px solid var(--line-strong);border-radius:var(--radius-card);background:var(--surface);color:var(--ink);padding:var(--space-5);min-width:min(420px,90vw)}
dialog.help::backdrop{background:rgba(22,26,32,.5)}
dialog.help h2{margin:0 0 var(--space-3)}
.help-keys{width:100%;font-size:var(--fs-m)}
.help-keys td{border:none;padding:3px 0}
.help-keys td:first-child{width:120px;white-space:nowrap}
dialog.help form{margin-top:var(--space-4);text-align:right}

/* ---------------------------------------------------------------- Topbar (eine Zeile)
   Signet der Gruppe als Kachel, daneben der Werkzeugname als Kicker; Menü in Inter 500. */
.topbar{display:flex;align-items:center;gap:var(--space-4);height:var(--topbar-h);padding:0 var(--space-5);background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;white-space:nowrap}
.brand{display:inline-flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}
.brand:hover{text-decoration:none}
.brand img{width:28px;height:28px;display:block;border-radius:var(--radius)}
.brand-name{font-family:var(--sans);font-weight:600;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink)}
.dot{width:8px;height:8px;border-radius:1px;display:inline-block;flex:none} /* Portalfarbe: Quadrat, kein Kreis */
.tools{display:flex;gap:var(--space-4);align-items:center;font-size:var(--fs-s);margin-left:auto}
.tools a{color:var(--muted);text-decoration:none}
.tools a:hover{color:var(--ink)}
.topbar-user{display:flex;gap:var(--space-3);align-items:center;font-size:var(--fs-s)}
.topbar-user form{margin:0;display:inline-flex}
/* KI-Zugang: ein Wort mit Marke davor, keine Pille */
.llm{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.llm::before{content:"";width:8px;height:8px;border-radius:1px;background:var(--line-strong)}
.llm.on::before{background:var(--ok)}
.llm.off::before{background:var(--warn)}

/* Menü: <details class="menu"> mit summary und .menu-list */
.menu{position:relative}
.menu>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:var(--space-2);padding:6px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:var(--fs-m);font-weight:500}
.menu>summary::-webkit-details-marker{display:none}
.menu>summary .caret{color:var(--muted);font-size:var(--fs-xs)}
.menu[open]>summary{border-color:var(--ink)}
.menu-list{position:absolute;top:calc(100% + 4px);left:0;min-width:280px;max-height:70vh;overflow:auto;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);padding:var(--space-1) 0;z-index:30;white-space:nowrap}
.menu-item{display:flex;align-items:center;gap:var(--space-2);padding:6px 12px;color:var(--ink);text-decoration:none;font-size:var(--fs-m)}
.menu-item:hover,.menu-item.active{background:var(--stage-soft);text-decoration:none}
.menu-item .menu-name{flex:1}
.menu-label{max-width:16ch;overflow:hidden;text-overflow:ellipsis}
.menu-heading{padding:6px 12px 2px;font-weight:600;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.menu-sep{border-top:1px solid var(--line);margin-top:var(--space-1);padding-top:6px}
/* Tageszähler „3/12“ je Portal; gefüllt von GET /topbar/status (hx-swap-oob) */
.menu-count{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums}
.menu-count:empty{display:none}
.review-n{color:var(--warn);font-weight:600}
.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:var(--fs-xs);font-weight:500;padding:2px 8px;border-radius:var(--radius);background:var(--stage);color:var(--stage-ink);text-decoration:none;font-variant-numeric:tabular-nums}
.badge:hover{text-decoration:none}
.badge.warn{background:var(--warn);color:var(--warn-ink)}
.badge.quiet{background:transparent;color:var(--muted);border:1px solid var(--line)}
.topbar-status{display:flex;align-items:center;gap:var(--space-2);min-height:20px}
.badge-day{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums}
.user-name{color:var(--muted);max-width:18ch;overflow:hidden;text-overflow:ellipsis}
/* Schmale Fenster: die Zeile bleibt eine Zeile, das Entbehrliche geht zuerst. */
@media (max-width:1100px){
  .topbar{gap:var(--space-3);padding:0 var(--space-3)}
  .badge-day,.user-name{display:none}
  .menu-label{max-width:12ch}
}
@media (max-width:820px){
  .llm,.brand-name{display:none}
}

/* ---------------------------------------------------------------- Seite, Karten */
.page{max-width:1280px;margin:0 auto;padding:var(--space-5) 20px 80px}
.page.wide{max-width:none}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:var(--space-4) 18px}
.card.flat{border:none;background:transparent;padding:0}
/* Kennzahl: Zahl groß in Newsreader, Bezeichnung klein in Inter (Handbuch, Gestaltung) */
.stat{display:flex;flex-direction:column;gap:2px}
.stat b{font-family:var(--serif);font-size:30px;font-weight:500;line-height:1;font-variant-numeric:tabular-nums}
.stat span{font-size:var(--fs-xs);color:var(--muted)}
.error-page{max-width:640px;margin:var(--space-6) auto}
.error-page .error-message{font-size:var(--fs-l);margin:var(--space-3) 0}

/* ---------------------------------------------------------------- Tabellen */
table{border-collapse:collapse;width:100%;font-size:var(--fs-m)}
th{font-family:var(--sans);font-weight:600;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line-strong);background:var(--bg)}
td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr:hover td{background:var(--surface)}
.table-wrap{overflow-x:auto;position:relative;background:linear-gradient(to left,rgba(22,26,32,.10),transparent 24px) no-repeat right/24px 100%;background-attachment:local}
.table-wrap thead th{position:sticky;top:0;z-index:2} /* Scrollport ist .table-wrap selbst, nicht die Seite */
.col-actions{position:sticky;right:0;background:var(--bg);border-left:1px solid var(--line)}
tr:hover .col-actions{background:var(--surface)}
.col-select{width:32px;text-align:center}
.metaline{font-size:var(--fs-xs);color:var(--muted);margin-top:2px;display:flex;gap:6px;flex-wrap:wrap;align-items:baseline}
tr.is-current td{background:var(--stage-soft)}

/* ---------------------------------------------------------------- Kennzeichen, Score
   Kein Pillenformat: Rundung 3 px, Farbe nur, wo der Zustand sie braucht. */
.pill{display:inline-block;font-family:var(--sans);font-size:var(--fs-xs);font-weight:500;padding:2px 7px;border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--surface);white-space:nowrap;color:var(--ink)}
/* Zuordnung (SpStatus) */
.pill.below{color:var(--muted);border-color:var(--line)}
.pill.candidate{border-color:var(--ink);color:var(--ink)}
.pill.drafting,.pill.in_progress{border-color:var(--warn);color:var(--warn);background:var(--warn-soft)}
.pill.ready{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
.pill.published{border-color:var(--ink);color:var(--stage-ink);background:var(--stage)}
.pill.dismissed,.pill.failed{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
/* Jobs (JobStatus) */
.pill.queued{border-color:var(--ink);color:var(--ink)}
.pill.running{border-color:var(--warn);color:var(--warn);background:var(--warn-soft)}
.pill.done{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
/* Artikel (ArticleStatus), Veröffentlichung, Portal, Story */
.pill.ok,.pill.aktiv,.pill.offen{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
.pill.neu,.pill.zu_kurz,.pill.leer,.pill.platzhalter,.pill.dublette,.pill.vorschlag{border-color:var(--warn);color:var(--warn);background:var(--warn-soft)}
.pill.fehler{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.pill.nur_bezahlt,.pill.archiviert{color:var(--muted);border-color:var(--line)}
.score{font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums}
.score.hi{color:var(--ink)}.score.mid{color:var(--muted)}.score.lo{color:var(--line-strong)}

/* ---------------------------------------------------------------- Knöpfe, Formulare
   Hauptaktion in Tinte, alles andere als Linie. Rubrikrot nur als Text für das Verwerfen. */
.btn{display:inline-block;font:inherit;font-size:var(--fs-s);font-weight:500;padding:7px 12px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);cursor:pointer;text-decoration:none;border-radius:var(--radius);line-height:1.3}
.btn:hover{border-color:var(--ink);text-decoration:none}
.btn.primary{background:var(--stage);color:var(--stage-ink);border-color:var(--stage)}
.btn.primary:hover{opacity:.9}
.btn.danger{color:var(--accent);border-color:var(--line-strong)}
.btn.danger:hover{border-color:var(--accent)}
.btn.quiet{border-color:transparent;background:transparent;color:var(--muted)}
.btn.quiet:hover{color:var(--ink);background:var(--stage-soft)}
.btn.small{padding:4px 8px;font-size:var(--fs-xs)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn-group{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
input[type=text],input[type=number],input[type=url],input[type=email],input[type=password],textarea,select{font:inherit;font-size:var(--fs-m);padding:7px 9px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);width:100%;border-radius:var(--radius)}
input:focus,textarea:focus,select:focus{border-color:var(--ink);outline:none}
textarea{min-height:80px}
label{font-size:var(--fs-xs);color:var(--muted);display:block;margin-bottom:4px}
.field{margin-bottom:var(--space-3)}
.form-row{display:flex;gap:var(--space-3);align-items:end;flex-wrap:wrap}
.form-row .field{flex:1;min-width:160px;margin:0}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips a{text-decoration:none}
.chip{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:var(--fs-xs);padding:2px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);cursor:pointer}
.chip:hover{border-color:var(--ink)}
.chip.active,.chips .pill.active{box-shadow:inset 0 0 0 1px var(--ink);border-color:var(--ink)}
.popover{position:relative}
.popover>summary{list-style:none}
.popover>summary::-webkit-details-marker{display:none}
.popover-body{position:absolute;right:0;top:calc(100% + 4px);z-index:30;min-width:260px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-card);padding:var(--space-3)}

/* ---------------------------------------------------------------- Hinweise, Toasts */
.notice{padding:10px 14px;border-left:3px solid var(--ink);background:var(--stage-soft);margin:0 0 var(--space-4);font-size:var(--fs-m);border-radius:0 var(--radius) var(--radius) 0}
.notice.warn{border-color:var(--warn);background:var(--warn-soft)}
.notice.error{border-color:var(--accent);background:var(--accent-soft)}
.notice.ok{border-color:var(--ok);background:var(--ok-soft)}
.notice.is-hiding{opacity:0;transition:opacity .4s}
.toast-stack{position:fixed;right:var(--space-4);bottom:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);z-index:50;max-width:min(420px,calc(100vw - 32px))}
.toast{padding:10px 14px;border-radius:var(--radius);background:var(--ink);color:var(--bg);font-size:var(--fs-m);border-left:3px solid var(--line-strong)}
.toast.ok{border-color:var(--ok)}
.toast.warn{border-color:var(--warn)}
.toast.error{border-color:var(--accent)}
.toast.is-hiding{opacity:0;transition:opacity .4s}

/* ---------------------------------------------------------------- Aktionsleiste, Massenleiste */
.action-bar{position:sticky;top:var(--topbar-h);z-index:10;display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;padding:var(--space-2) 0;background:var(--bg);border-bottom:1px solid var(--line);margin-bottom:var(--space-3)}
.bulk-bar{position:fixed;left:50%;bottom:var(--space-4);transform:translateX(-50%);z-index:40;display:flex;gap:var(--space-2);align-items:center;padding:var(--space-2) var(--space-4);background:var(--surface);border:1px solid var(--ink);border-radius:var(--radius)}

/* ---------------------------------------------------------------- Prüfblock */
.check{list-style:none;margin:0;padding:0}
.check li{font-size:var(--fs-s);margin-bottom:4px}
.check .warn{color:var(--warn)}
.check .fail{color:var(--accent)}
.check .pass{color:var(--ok)}
.check-group{margin:0 0 var(--space-2)}
.check-group summary{font-size:var(--fs-s)}
.check-item{display:flex;gap:var(--space-2);align-items:baseline;font-size:var(--fs-s);padding:3px 0;cursor:pointer}
.check-item[data-level=fail]{color:var(--accent)}
.check-item[data-level=warn]{color:var(--warn)}
.check-item[data-level=pass]{color:var(--muted)}

/* ---------------------------------------------------------------- Layout: zwei Spalten, Tabs */
.two-pane{display:grid;grid-template-columns:minmax(300px,2fr) minmax(360px,3fr);gap:20px;align-items:start}
.pane{min-width:0}
.pane.sticky{position:sticky;top:calc(var(--topbar-h) + 12px);max-height:calc(100vh - var(--topbar-h) - 24px);overflow:auto}
.tabs{display:none;gap:var(--space-1);border-bottom:1px solid var(--line);margin-bottom:var(--space-3)}
.tabs [role=tab]{font:inherit;font-size:var(--fs-m);padding:8px 12px;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--muted);cursor:pointer}
.tabs [role=tab][aria-selected=true]{color:var(--ink);border-color:var(--accent)}
@media (max-width:960px){
  .two-pane{grid-template-columns:1fr}
  .pane.sticky{position:static;max-height:none}
  .tabs{display:flex}
  .two-pane>#draft-panel{order:-1} /* Entwurf zuerst, auch ohne die Tabs aus app.js */
  /* Aktionen bleiben rechts stehen, die Scroll-Kante wird deutlicher (F15) */
  .table-wrap .col-actions{position:sticky;right:0}
  .table-wrap{background-image:linear-gradient(to left,rgba(22,26,32,.22),transparent 32px)}
  .page{padding-left:var(--space-3);padding-right:var(--space-3)}
}

/* ---------------------------------------------------------------- Inhalt */
.target{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted)}
.target b{color:var(--ink);font-weight:600}
.bar{height:6px;background:var(--line);border-radius:1px;overflow:hidden;min-width:120px}
.bar i{display:block;height:100%;background:var(--ink)}
.sources-list li{margin-bottom:10px;font-size:var(--fs-m)}
.sources-list .src{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted)}
.editor-toolbar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.prose{font-size:var(--fs-body);line-height:1.6}
.prose h2{font-family:var(--serif);font-weight:500;font-size:20px;margin:18px 0 6px}
.prose p{margin:0 0 10px}
.prose ul{margin:0 0 10px 20px}
.prose blockquote{font-family:var(--serif);font-style:italic;font-size:var(--fs-l);margin:12px 0;padding-left:14px;border-left:3px solid var(--line-strong)}
.facts li{margin-bottom:8px;font-size:var(--fs-m)}
.facts .src{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted)}
/* Faktenlage (Faktenblätter): Widersprüche als ruhiger Warnblock, keine Signalfarbe im Fließtext */
.fact-conflicts{border-left:3px solid var(--warn);background:var(--warn-soft);padding:8px 10px;margin:6px 0 12px}
.fact-conflicts p{margin:0 0 4px;color:var(--warn)}
.fact-conflicts ul{margin:0;padding-left:18px}
.fact-conflicts li{margin-bottom:6px;font-size:var(--fs-s)}
.overlap{font-family:var(--mono);font-size:var(--fs-xs)}
.overlap.bad{color:var(--accent)}
.overlap.ok{color:var(--ok)}
.htmx-request .spinner{display:inline}
.spinner{display:none;font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted)}
.pulse{display:inline-block;width:8px;height:8px;border-radius:1px;background:var(--warn);animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}
@media (prefers-reduced-motion: reduce){.pulse{animation:none}}

/* ---------------------------------------------------------------- Quill (Snow) im dunklen Satz */
.ql-toolbar.ql-snow,.ql-container.ql-snow{border-color:var(--line-strong)}
.ql-snow .ql-stroke{stroke:var(--ink)}
.ql-snow .ql-fill{fill:var(--ink)}
.ql-snow .ql-picker-label,.ql-snow .ql-picker-options{color:var(--ink);background:var(--surface)}
.ql-snow .ql-editor{color:var(--ink);background:var(--surface);font-family:var(--sans)}
.ql-editor .overlap{background:var(--warn-soft);border-bottom:1px dashed var(--warn);font:inherit}

/* ---------------------------------------------------------------- Anmeldung
   Wortmarke der Gruppe, darunter der Werkzeugname als Kicker – kein Kasten, nur Papier. */
.login{max-width:400px;margin:64px auto 0}
.login-mark{display:block;width:230px;height:auto;margin-bottom:var(--space-6)}
.login h1{margin-bottom:var(--space-5)}
.login .field:last-of-type{margin-top:var(--space-4)}
.login .btn.primary{width:100%;padding:10px 12px;font-size:var(--fs-m)}
.login .hint{margin:var(--space-5) 0 0;line-height:1.5}
.login code{font-size:var(--fs-xs)}

/* ---------------------------------------------------------------- Zwei Einstiege (U1)
   Stapel (Redaktion): eine Entscheidung im Mittelpunkt, große Schrift, viel Papier.
   Überblick (Leitung): dicht, Zahlen zuerst, Farbe nur für Zustände. */
.focus{max-width:680px;margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-6)}
.focus-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);
  margin-bottom:var(--space-5)}
.focus-head h1{font-size:30px}
.focus-meter{font-family:var(--mono);font-size:var(--fs-s);color:var(--muted);white-space:nowrap;
  font-variant-numeric:tabular-nums;padding-bottom:4px}
.focus-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden}
.focus-card .card-body{padding:var(--space-5)}
.focus-card .card-kicker{font-weight:600;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--space-2)}
.focus-card h2{font-size:26px;margin-bottom:var(--space-2)}
.focus-card .card-lead{color:var(--muted);margin:0 0 var(--space-4)}
.focus-empty{text-align:left;padding:var(--space-6) var(--space-5);color:var(--muted)}
.focus-empty strong{display:block;font-family:var(--serif);font-size:22px;font-weight:500;color:var(--ink);
  margin-bottom:var(--space-2)}

/* Die drei Entscheidungen: die Hauptaktion in Tinte, Verwerfen mit rotem Zeichen, Später als Linie */
.decisions{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:var(--space-3);margin-top:var(--space-5)}
@media(max-width:560px){.decisions{grid-template-columns:1fr}}
.decision{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:var(--space-3) var(--space-4);
  border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);cursor:pointer;
  font-size:var(--fs-m);font-weight:500;font-family:inherit;color:var(--ink);text-align:left;line-height:1.3}
.decision:disabled{opacity:.5;cursor:not-allowed}
.decision .sign{font-size:20px;line-height:1;margin-bottom:4px}
.decision .hint{font-size:var(--fs-xs);font-weight:400;color:var(--muted)}
.decision.go{background:var(--stage);color:var(--stage-ink);border-color:var(--stage)}
.decision.go .hint{color:var(--stage-ink);opacity:.7}
.decision.stop .sign{color:var(--accent)}
.decision.later{color:var(--muted)}
.decision:not(:disabled):hover{border-color:var(--ink)}
.decision.go:not(:disabled):hover{opacity:.92}

/* Überblick */
.cockpit{max-width:1100px;margin:0 auto;padding:var(--space-5) var(--space-4)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-5) var(--space-4);
  margin:var(--space-5) 0 var(--space-6);padding:var(--space-4) 0;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line)}
.kpi{padding:0}
.kpi b{display:block;font-family:var(--serif);font-size:32px;font-weight:500;line-height:1.05;font-variant-numeric:tabular-nums}
.kpi span{display:block;font-size:var(--fs-xs);color:var(--muted);margin-top:4px}
.kpi.warn b{color:var(--warn)}
.otable{width:100%;border-collapse:collapse;font-size:var(--fs-m)}
.otable th{text-align:left;font-size:11px;letter-spacing:.12em;text-transform:uppercase;background:transparent;
  color:var(--muted);font-weight:600;padding:0 var(--space-4) var(--space-2) 0;border-bottom:1px solid var(--line-strong)}
.otable td{padding:var(--space-3) var(--space-4) var(--space-3) 0;border-bottom:1px solid var(--line);
  vertical-align:middle}
.otable td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.otable tr:last-child td{border-bottom:none}
.otable tr:hover td{background:transparent}
.otable .bar{display:block;height:4px;border-radius:1px;background:var(--line);overflow:hidden;margin-top:4px}
.otable .bar i{display:block;height:100%;background:var(--ink)}
.soon{border-left:3px solid var(--line-strong);padding:var(--space-2) var(--space-4);color:var(--muted);
  font-size:var(--fs-m);margin-top:var(--space-5)}
.soon b{color:var(--ink);font-weight:600}
.entries{display:flex;gap:var(--space-4);align-items:center;font-size:var(--fs-m);font-weight:500}
.entries a{color:var(--muted);text-decoration:none;padding:2px 0;border-bottom:2px solid transparent}
.entries a:hover{color:var(--ink);text-decoration:none}
.entries a[aria-current=page]{color:var(--ink);border-bottom-color:var(--accent)}

/* ---------------------------------------------------------------- Kartenstapel (U2)
   Eine Karte trägt die Entscheidung, die nächsten liegen sichtbar darunter. */
.cards{position:relative;display:flex;flex-direction:column;gap:var(--space-3)}
.cards .card{padding:var(--space-5);touch-action:pan-y}
.card-next{padding:var(--space-3) var(--space-5) !important;opacity:.55;border-color:var(--line)}
.card-next .card-title{font-size:var(--fs-m);font-family:var(--sans);font-weight:500;margin:0;letter-spacing:0}
.card-next .card-why,.card-next .card-facts,.card-next .card-facts-empty,
.card-next .card-conflict{display:none}
.card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);
  font-size:var(--fs-xs);color:var(--muted);margin-bottom:var(--space-3)}
.card-portal{display:inline-flex;align-items:center;gap:6px;color:var(--ink);font-weight:600}
.card-meta .score{font-variant-numeric:tabular-nums}
.card-title{font-family:var(--serif);font-size:26px;line-height:1.2;text-wrap:balance;font-weight:500;
  margin:0 0 var(--space-3)}
.card-why{color:var(--muted);margin:0 0 var(--space-3)}
.card-why b{color:var(--ink);font-weight:600}
.card-facts{list-style:none;margin:0 0 var(--space-3);padding:0;display:flex;flex-direction:column;gap:6px}
.card-facts li{padding-left:var(--space-4);position:relative;font-size:var(--fs-m)}
.card-facts li::before{content:"";position:absolute;left:0;top:.7em;width:6px;height:2px;background:var(--accent)}
.card-facts .src{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}
.card-facts-empty,.card-conflict{font-size:var(--fs-s);color:var(--muted);margin:0 0 var(--space-3)}
.card-conflict{color:var(--warn)}

/* Die drei Entscheidungen sitzen in der Karte: zwei Formulare und das Verwerfen-Fenster */
.card .decisions{margin-top:var(--space-4)}
.card .decisions form{display:contents}
.card .decisions .decision{width:100%}
.reject-popover{position:relative}
.reject-popover>summary{list-style:none;display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.reject-popover>summary::-webkit-details-marker{display:none}
.reject-popover .popover-body{position:absolute;z-index:20;left:0;top:calc(100% + 6px);width:min(320px,86vw);
  background:var(--surface);border:1px solid var(--ink);border-radius:var(--radius-card);
  padding:var(--space-4);text-align:left}
@media(max-width:560px){.reject-popover .popover-body{left:auto;right:0}}
.reasons{border:none;padding:0;margin:0 0 var(--space-3)}
.reasons legend{padding:0;margin-bottom:6px}
.reason-option{display:block;font-size:var(--fs-m);padding:3px 0;cursor:pointer}

/* Laufzeile über dem Stapel (U3): schmal, still, im Ruhezustand unsichtbar */
.run{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);
  font-size:var(--fs-xs);color:var(--muted);min-height:20px;margin-bottom:var(--space-3)}
.run:empty{display:none}
.run-item{display:inline-flex;align-items:center;gap:6px}
.run-item.done{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--accent)}
.run-item.done:hover{text-decoration:none}
.run-item.bad{color:var(--accent)}
.run-item form{display:inline}
.spin{width:9px;height:9px;border-radius:1px;border:2px solid var(--line-strong);
  border-top-color:var(--ink);animation:spin 900ms linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.spin{animation:none}}

/* ---------------------------------------------------------------- Freigabe-Feed (U5)
   Ein Beitrag je Block: links der Text, rechts das Bild, darunter die Felder fürs Portal
   und die drei Wege hinaus. */
.feed{max-width:860px}
.rev{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);
  padding:var(--space-5);margin-bottom:var(--space-5)}
.rev-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);
  font-size:var(--fs-xs);color:var(--muted);margin-bottom:var(--space-3)}
.rev-head .warn-text{color:var(--warn)}
.rev-body{display:grid;grid-template-columns:1fr 280px;gap:var(--space-5);align-items:start}
@media(max-width:720px){.rev-body{grid-template-columns:1fr}}
.rev-text h2{font-family:var(--serif);font-size:24px;line-height:1.25;text-wrap:balance;font-weight:500;
  margin:0 0 var(--space-2)}
.rev-teaser{color:var(--muted);margin:0 0 var(--space-3)}
.rev-article{max-height:320px;overflow:auto;padding-right:var(--space-3);
  border-left:2px solid var(--line);padding-left:var(--space-4);margin-bottom:var(--space-3)}
.rev-article h2,.rev-article h3{font-family:var(--serif);font-size:18px;font-weight:500;
  margin:var(--space-4) 0 var(--space-2)}
.rev-article p{margin:0 0 var(--space-3)}
.rev-image img{width:100%;height:auto;border-radius:var(--radius);display:block;background:var(--line)}
.rev-credit{font-size:var(--fs-xs);color:var(--muted);margin:6px 0 var(--space-3)}
.rev-noimage{border:1px dashed var(--line-strong);border-radius:var(--radius);padding:var(--space-4);
  font-size:var(--fs-xs);color:var(--muted);margin-bottom:var(--space-3);
  display:flex;align-items:center;gap:8px}
.rev-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);
  align-items:end;margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--line)}
.rev-fields .field.wide{grid-column:1 / -1}
.rev-fields>button{grid-column:1 / -1;justify-self:start}
.rev-fields .field{display:flex;flex-direction:column;gap:4px;margin:0}
.rev-fields label{font-size:var(--fs-xs);color:var(--muted)}
.rev-fields input{width:100%}
@media(max-width:720px){.rev-fields{grid-template-columns:1fr}
  .rev-fields .field.wide,.rev-fields>button{grid-column:auto}}
.rev-decisions{margin-top:var(--space-4)}
.decision.hold{color:var(--ink)}
.decision.hold .sign{color:var(--warn)}
.rev-done{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-3);
  border-left:3px solid var(--ok);background:var(--ok-soft);border-radius:0 var(--radius) var(--radius) 0;
  padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4)}
.rev-done.error{border-color:var(--accent);background:var(--accent-soft)}
.rev-done strong{font-weight:600}

/* Überblick (U8): Tagesauswahl, Redakteurszeile */
.cockpit-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);
  flex-wrap:wrap}
.daypick{display:flex;align-items:center;gap:var(--space-3);font-size:var(--fs-s);padding-bottom:6px}
.daypick strong{font-variant-numeric:tabular-nums;font-weight:600}
.daypick a{color:var(--muted);text-decoration:none}
.daypick a:hover{color:var(--ink)}
.cockpit h2{font-size:var(--fs-l);margin:var(--space-6) 0 var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--line-strong)}
.otable tr.idle td{color:var(--muted)}

/* ---------------------------------------------------------------- Stapel: Dashboard und Themenliste
   Dashboard: Portale als Tabelle, „heute geplant von Tagesziel“ mit Balken. Themenliste: ein Thema je
   Zeile mit Kästchen, Meta, Überschrift, Aussagen; Aktionen rechts. */
.ptable td{vertical-align:middle}
.ptable .portal-link{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:500;text-decoration:none}
.ptable .portal-link:hover{text-decoration:underline}
.ptable b{font-family:var(--serif);font-size:20px;font-weight:500}
.wide-focus{max-width:860px}
.crumbs{font-size:var(--fs-s);color:var(--muted);margin:0 0 var(--space-3)}
.crumbs a{color:var(--muted)}
.pick-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;
  border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);margin-bottom:var(--space-4)}
.check-label{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-s);cursor:pointer}
.topics{display:flex;flex-direction:column}
.topic{display:grid;grid-template-columns:28px 1fr auto;gap:var(--space-4);padding:var(--space-4) 0;
  border-bottom:1px solid var(--line);align-items:start}
.topic:last-child{border-bottom:none}
.topic-pick{padding-top:4px}
.topic-pick input{width:18px;height:18px;accent-color:var(--ink)}
.topic-title{font-family:var(--serif);font-size:21px;line-height:1.25;font-weight:500;margin:0 0 var(--space-2);text-wrap:balance}
.topic .card-meta{margin-bottom:6px}
.topic .card-facts{margin:0}
.topic-actions{display:flex;gap:6px;align-items:flex-start;white-space:nowrap}
.topic-actions .reject-popover .popover-body{left:auto;right:0}
.topic-actions form{display:inline}
@media(max-width:640px){.topic{grid-template-columns:28px 1fr}.topic-actions{grid-column:2}}

/* Freigabe: Ein-Quellen-Warnung und Einplanen */
.rev-single{border-left:3px solid var(--warn);background:var(--warn-soft);padding:10px 14px;margin:0 0 var(--space-3);font-size:var(--fs-m)}
.rev-single label{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:var(--fs-s);color:var(--ink)}
.rev-when{display:flex;align-items:center;gap:8px;font-size:var(--fs-s);color:var(--muted);margin-top:var(--space-3)}
.rev-when input{width:auto}
/* Dashboard schmal: der Portalname ist der Link, der Knopf rechts entfällt */
@media(max-width:720px){.ptable td:last-child,.ptable th:last-child{display:none}}

/* Monatsdeckel im Dashboard */
.budget{font-size:var(--fs-s);color:var(--muted);margin:0 0 var(--space-3)}
.budget b{font-weight:600;color:var(--ink)}
.budget.blocked{color:var(--accent)}
.budget.blocked b{color:var(--accent)}

/* Prüf-Checkliste vor der Freigabe (Vertrag) */
.checklist{border:1px solid var(--line);border-radius:4px;padding:.5rem .75rem;margin:.75rem 0;display:grid;gap:.3rem}
.checklist legend{font-weight:600;padding:0 .25rem}
.checklist label{display:flex;gap:.5rem;align-items:flex-start;line-height:1.35}
.checklist input{margin-top:.2rem}
.protocol td.mono{font-size:.8rem}

/* Regeln (Blacklist, Überlappung) */
.rule{border-top:1px solid var(--line);padding:.5rem 0}
.rule summary{cursor:pointer}
.rule-form{display:grid;gap:.5rem;margin:.5rem 0 .75rem}
.rev-override{margin:.5rem 0}
