/* ============================================================
   Studio CMS — Design-System "Buehne" (Issue #64, drittes Redesign).
   Identitaet: dunkles, fast monochromes Profi-Werkzeug — die Kundenwebsite
   steht im weissen Scheinwerferlicht (Vorschau = Signatur). Zweiklang:
   SATINIERTES ROSE-KUPFER handelt (Primaeraktionen), KOBALT identifiziert
   (exakt zwei Marken-Funken, beide in der Topbar: Status-Dot + Avatar-Ring).
   Gemeinsames Fundament fuer Studio UND /admin (admin.css baut darauf auf).
   Schrift: Space Grotesk, self-hosted (public/assets/fonts/, SIL OFL) —
   KEINE externen Font-Requests. Funktion + alle id-Hooks unveraendert.
   ============================================================ */

/* ---------- Space Grotesk (self-hosted, SIL OFL — Lizenz: assets/fonts/OFL.txt) ---------- */
@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/space-grotesk-400.woff2") format("woff2")}
@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:500;font-display:swap;src:url("/assets/fonts/space-grotesk-500.woff2") format("woff2")}
@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:700;font-display:swap;src:url("/assets/fonts/space-grotesk-700.woff2") format("woff2")}

:root{
  /* ---------- Buehne: Grund, Panels, Linien ---------- */
  --bg:#15171C; --panel:#1D2028; --line:#232630; --line-strong:#2C3040;

  /* ---------- Text ---------- */
  --text:#F4F2ED; --text-soft:#8E93A3; --muted:#5A5F70;

  /* ---------- Eingabefelder: deutlich heller als Panels (man muss sehen, WO man eingibt) ---------- */
  --input-bg:#262B36; --input-border:#3D4354; --placeholder:#9BA1B2;

  /* ---------- Chat ---------- */
  --bubble-user:#2A2E38; --bubble-user-text:#E8EAF0;

  /* ---------- Satiniertes Rose-Kupfer (Uhrengehaeuse, nicht Bonbon) ----------
     Schimmer-Layer bleibt in ALLEN Zustaenden identisch — Hover/Active aendern
     NUR die Basis-Stops (~6% heller/dunkler). Text immer #2A1410, Fassung
     immer rgba(58,26,16,.55). */
  --satin:linear-gradient(115deg, rgba(255,255,255,0) 20%, rgba(255,240,232,0.10) 50%, rgba(255,255,255,0) 80%), linear-gradient(180deg,#CFA189 0%,#BC8A70 45%,#A5745C 100%);
  --satin-hover:linear-gradient(115deg, rgba(255,255,255,0) 20%, rgba(255,240,232,0.10) 50%, rgba(255,255,255,0) 80%), linear-gradient(180deg,#D9AF98 0%,#C69880 45%,#B0806A 100%);
  --satin-active:linear-gradient(115deg, rgba(255,255,255,0) 20%, rgba(255,240,232,0.10) 50%, rgba(255,255,255,0) 80%), linear-gradient(180deg,#C39678 0%,#B07F62 45%,#99684E 100%);
  --satin-deep:linear-gradient(115deg, rgba(255,255,255,0) 18%, rgba(255,240,232,0.09) 50%, rgba(255,255,255,0) 82%), linear-gradient(180deg,#CB9D85 0%,#B8866C 45%,#9E6E56 100%);
  --satin-deep-hover:linear-gradient(115deg, rgba(255,255,255,0) 18%, rgba(255,240,232,0.09) 50%, rgba(255,255,255,0) 82%), linear-gradient(180deg,#D5A98F 0%,#C29176 45%,#A87860 100%);
  --satin-deep-active:linear-gradient(115deg, rgba(255,255,255,0) 18%, rgba(255,240,232,0.09) 50%, rgba(255,255,255,0) 82%), linear-gradient(180deg,#BF9179 0%,#AC7A60 45%,#92644C 100%);
  --satin-text:#2A1410;
  --satin-edge:rgba(58,26,16,0.55);
  --satin-shadow:inset 0 1px 0 rgba(255,236,228,0.4), inset 0 -1px 0 rgba(58,26,16,0.25), 0 1px 4px rgba(0,0,0,0.3);
  --satin-shadow-active:inset 0 1px 0 rgba(255,236,228,0.28), inset 0 2px 5px rgba(58,26,16,0.4), 0 1px 2px rgba(0,0,0,0.3);
  --copper:#CFA189; --copper-mid:#BC8A70;

  /* ---------- Zustaende ---------- */
  --danger:#E89A8E; --danger-edge:rgba(232,154,142,0.4); --danger-bg:#2A1D1E; --danger-line:#4A2C2C;
  --warn:#D9B36A; --warn-bg:#262117; --warn-line:#3A3220;

  /* ---------- Typografie: Space Grotesk, System-Sans-Fallback ---------- */
  --font:"Space Grotesk",-apple-system,"Segoe UI",system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;

  /* ---------- Abstands-Raster (4er-Basis) ---------- */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-7:48px; --sp-8:64px;

  /* ---------- Radien: praeziser, gefasster als vorher ---------- */
  --r-xs:6px; --r-sm:9px; --r-md:12px; --r-lg:14px; --r-pill:999px;

  /* ---------- Bewegung: dezent, nur opacity/transform/background/border ---------- */
  --ease:cubic-bezier(.2,.8,.2,1);
  --dur:170ms;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:var(--font);color:var(--text);background:var(--bg);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3{font-family:var(--font);font-weight:700;letter-spacing:-.01em;line-height:1.15;margin:0;color:var(--text)}
[hidden]{display:none !important}
img{max-width:100%}
::selection{background:rgba(207,161,137,.3);color:var(--text)}
button,input,select,textarea{font:inherit}
input[type=checkbox]{accent-color:#BC8A70}
/* Tastatur-Fokus: neutral heller Ring, ueberall sichtbar (WCAG) — bewusst KEIN
   Kobalt und KEIN Kupfer, damit Fokus nie mit Marke/Aktion verwechselt wird. */
:focus-visible{outline:2px solid rgba(244,242,237,.75);outline-offset:2px}
input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:0}

/* ---------- Dezente Scrollbars (Studio + Admin) ---------- */
.panel,.log,.table-wrap{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
.panel::-webkit-scrollbar,.log::-webkit-scrollbar,.table-wrap::-webkit-scrollbar{width:8px;height:8px}
.panel::-webkit-scrollbar-track,.log::-webkit-scrollbar-track{background:transparent}
.panel::-webkit-scrollbar-thumb,.log::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--r-pill);border:2px solid transparent;background-clip:content-box}
.panel::-webkit-scrollbar-thumb:hover,.log::-webkit-scrollbar-thumb:hover{background:var(--input-border);background-clip:content-box}

/* ---------- Marken-Lockup (Dots-Logo): monochrom — kein Kobalt, kein Kupfer ---------- */
.dots{display:inline-flex;gap:5px;align-items:center}
.dots .d{width:22px;height:22px;border-radius:50%;background:var(--bubble-user);box-shadow:inset 0 0 0 1px var(--line-strong)}
.dots .d.c{background:var(--input-border)}
.dots .d.b{background:var(--line)}
.dots.sm .d{width:12px;height:12px}

/* ---------- Buttons ----------
   Primaer   = satiniertes Rose-Kupfer, schlank gefasst (edel heisst schmal)
   Sekundaer = transparent mit ruhiger Linie
   Destruktiv = zurueckhaltendes Rot auf dunkel */
.btn{font-weight:600;font-size:12.5px;letter-spacing:.4px;line-height:1.2;border:1px solid transparent;border-radius:var(--r-sm);padding:9px 16px;cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),color var(--dur) var(--ease),opacity var(--dur) var(--ease);display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);white-space:nowrap}
.btn-primary{background:var(--satin);color:var(--satin-text);border:1px solid var(--satin-edge);box-shadow:var(--satin-shadow)}
.btn-primary:hover{background:var(--satin-hover)}
.btn-primary:active{background:var(--satin-active);box-shadow:var(--satin-shadow-active)}
/* Veroeffentlichen: eine Nuance tiefer/gewichtiger als die uebrigen Primaeraktionen */
#publishBtn,#bPublishBtn,#panePublish{background:var(--satin-deep)}
#publishBtn:hover,#bPublishBtn:hover,#panePublish:hover{background:var(--satin-deep-hover)}
#publishBtn:active,#bPublishBtn:active,#panePublish:active{background:var(--satin-deep-active);box-shadow:var(--satin-shadow-active)}
.btn-ghost{background:transparent;color:var(--text-soft);border:1px solid var(--line-strong)}
.btn-ghost:hover{color:var(--text);border-color:var(--input-border);background:rgba(255,255,255,.03)}
.btn-ghost:active{background:rgba(255,255,255,.05)}
.btn-danger{background:transparent;color:var(--danger);border:1px solid var(--danger-edge)}
.btn-danger:hover{background:rgba(232,154,142,.08)}
.btn-danger:active{background:rgba(232,154,142,.13)}
.btn-sm{padding:6px 11px;font-size:11.5px;border-radius:var(--r-xs)}
.btn-block{width:100%}
/* Disabled: entsaettigt + gedimmt — klar als inaktiv erkennbar, kein Bonbon.
   cursor:not-allowed sagt es auch dem Zeiger; Hover-Wechsel sind fuer deaktivierte
   Knoepfe abgeschaltet, damit nichts "anspringt", das nicht klickbar ist. */
.btn:disabled{opacity:.45;filter:saturate(.35);cursor:not-allowed}
.btn-primary:disabled:hover{background:var(--satin)}
#publishBtn:disabled,#bPublishBtn:disabled,#panePublish:disabled{background:var(--satin-deep)}
.btn-ghost:disabled:hover{color:var(--text-soft);border-color:var(--line-strong);background:transparent}
.btn-danger:disabled:hover{background:transparent}
.btn[data-busy]{pointer-events:none;opacity:.7}
.btn[data-busy]::before{content:"";width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- Formularfelder: deutlich heller als Panels, spuerbare Innentiefe ---------- */
.field{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-3)}
.field-label{font-size:.72rem;font-weight:600;color:var(--text-soft);letter-spacing:.08em;text-transform:uppercase}
.muted{color:var(--text-soft);font-weight:400;text-transform:none;letter-spacing:normal}
input,textarea,select{font-size:.95rem;color:var(--text);background:var(--input-bg);border:1.5px solid var(--input-border);border-radius:var(--r-sm);padding:10px 13px;width:100%;box-shadow:inset 0 1px 3px rgba(0,0,0,0.3);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}
input::placeholder,textarea::placeholder{color:var(--placeholder)}
input:hover,textarea:hover,select:hover{border-color:#4A5164}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--placeholder)}
textarea{resize:vertical;min-height:88px;line-height:1.5}
select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' fill='none' stroke='%239BA1B2' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 13px center;padding-right:38px;cursor:pointer}
/* Native File-Inputs bleiben funktional im DOM (gleiche id, gleiche Events),
   nur visuell ersetzt (Upload-Zonen). KEIN display:none — sonst nicht fokussierbar. */
input.file{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.check{display:flex;align-items:center;gap:9px;font-size:.9rem;color:var(--text-soft);cursor:pointer}
.check input{width:18px;height:18px;accent-color:#BC8A70;box-shadow:none}
.err{color:var(--danger);min-height:1.2em;font-size:.87rem;margin:var(--sp-2) 0 0}
.hint{color:var(--text-soft);font-size:.83rem}
.hint strong{color:var(--text);font-weight:600}

/* ---------- Login: dunkle Buehne, selbstbewusste Karte ---------- */
.login-screen{min-height:100%;display:flex;align-items:center;justify-content:center;padding:var(--sp-5);background:radial-gradient(ellipse 90% 70% at 50% 30%, #1B1E25 0%, var(--bg) 70%)}
.login-card{width:100%;max-width:440px;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-lg);box-shadow:0 24px 60px rgba(0,0,0,.5), 0 0 0 1px rgba(255,255,255,.02);padding:42px 40px 34px}
.brand-lockup{display:flex;flex-direction:column;gap:var(--sp-3);align-items:flex-start;margin-bottom:var(--sp-2)}
.wordmark{font-weight:700;font-size:1.9rem;line-height:1;color:var(--text);letter-spacing:-.02em;display:flex;align-items:center;gap:var(--sp-2)}
.wordmark .studio{color:var(--text-soft);background:var(--bubble-user);padding:5px 11px;border-radius:var(--r-xs);font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.brand-by{font-size:.78rem;color:var(--text-soft);font-weight:500;letter-spacing:.04em;margin-top:calc(-1 * var(--sp-1))}
.lead{color:var(--text-soft);margin:var(--sp-4) 0 var(--sp-3);font-size:.98rem;line-height:1.6}
.login-props{list-style:none;display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);padding:0;margin:0 0 var(--sp-5)}
.login-props li{font-size:.78rem;font-weight:500;color:var(--text-soft);display:inline-flex;align-items:center;gap:7px}
.login-props li::before{content:"✓";display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--bubble-user);color:var(--copper);font-size:.62rem;font-weight:700}
.login-card .field{margin-bottom:var(--sp-4)}
.login-foot{margin-top:var(--sp-5);text-align:center;font-size:.74rem;color:var(--muted);line-height:1.5}

/* ---------- App-Grundgeruest ---------- */
#app{display:flex;flex-direction:column;height:100%}
/* Topbar: feste Mindesthoehe (52px + 1px Linie = --topbar-h), damit die
   Seitenleisten (.drawer) genau darunter ansetzen. position+z-index halten das
   Konto-Menue UEBER einer offenen Seitenleiste. */
#app{--topbar-h:53px}
.topbar{position:relative;display:flex;align-items:center;gap:var(--sp-4);min-height:52px;padding:var(--sp-2) var(--sp-5);background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;z-index:35}
.topbar-brand{display:flex;align-items:center;gap:12px;min-width:0}
.topbar-name{font-weight:700;font-size:1rem;color:var(--text);white-space:nowrap;letter-spacing:-.01em}
.tenant-chip{font-size:.74rem;font-weight:500;color:var(--text-soft);background:var(--bg);border:1px solid var(--line);padding:4px 11px;border-radius:var(--r-pill);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.tabs{display:inline-flex;gap:var(--sp-1);background:var(--bg);border:1px solid var(--line);padding:3px;border-radius:var(--r-pill);margin:0 auto}
.tab{border:0;background:transparent;color:var(--text-soft);font-weight:500;font-size:.84rem;padding:7px 18px;border-radius:var(--r-pill);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.tab:hover{color:var(--text)}
.tab.active{background:var(--bubble-user);color:var(--text)}
.bubble.note{opacity:.72;font-size:.86rem}   /* Modell-Kommentar, nicht die Vollzugsmeldung */
.topbar-right{display:flex;align-items:center;gap:12px;margin-left:auto}
/* Status "Live · KI bereit": Marken-Funke 1 — der Kobalt-Status-Dot */
.status{display:inline-flex;align-items:center;gap:7px;font-size:.74rem;color:var(--text-soft);font-weight:500;background:var(--bg);border:1px solid var(--line);padding:5px 12px;border-radius:var(--r-pill);white-space:nowrap}
.status .dot{flex:none}
.status .dot{width:7px;height:7px;border-radius:50%;background:#4C6FFF;box-shadow:0 0 0 3px rgba(76,111,255,.18)}
.status .dot.amber{background:var(--warn);box-shadow:0 0 0 3px rgba(217,179,106,.16)}

/* Nur fuer Screenreader (Avatar-Button-Beschriftung) */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- Profil-Menue: Avatar (Tenant-Initiale) — Marken-Funke 2: der Kobalt-Ring ---------- */
.profile{position:relative}
.avatar{width:30px;height:30px;flex:none;border-radius:50%;background:var(--bubble-user);color:var(--text);font-size:.78rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border:0;box-shadow:0 0 0 1.5px #4C6FFF;transition:background var(--dur) var(--ease)}
.avatar:hover{background:var(--input-bg)}
.profile-dropdown{position:absolute;right:0;top:calc(100% + 10px);min-width:186px;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-md);box-shadow:0 14px 36px rgba(0,0,0,.5);padding:5px;z-index:40}
.menu-item{display:block;width:100%;text-align:left;background:none;border:0;color:var(--text);font-size:.86rem;font-weight:500;padding:9px 12px;border-radius:var(--r-xs);cursor:pointer;transition:background var(--dur) var(--ease)}
.menu-item:hover{background:var(--bubble-user)}
.menu-sep{height:1px;background:var(--line);margin:5px 4px}

/* ---------- Arbeitsflaeche: Panel (Werkzeug) links, Scheinwerfer-Buehne rechts ---------- */
/* Arbeitsflaeche: Panel | Trennlinie | Buehne. Die Panel-Breite steckt in der
   Variable --panel-w auf #app (Issue #68), damit BEIDE Ansichten (Bearbeiten
   und Blog) dieselbe Breite teilen und JS nur eine Stelle setzen muss.
   Default 472px = genau das, was das fruehere minmax(392px,472px) auf breiten
   Schirmen ergab - die Ansicht startet also unveraendert. */
.workspace{flex:1;min-height:0;display:grid;grid-template-columns:var(--panel-w,472px) 9px 1fr}
.panel{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5);overflow:auto;background:var(--panel)}
.panel-head h2{margin:0 0 var(--sp-1);font-size:1.16rem}
.panel-sub{margin:0;color:var(--text-soft);font-size:.86rem;line-height:1.55}

/* ---------- Ziehbare Trennlinie (Issue #68) ----------
   Bewusst zurueckhaltend im Sinne des CI: nur --line / --line-strong und
   gedaempftes Grau. Rose-Kupfer ist Aktionen vorbehalten, Kobalt dem Live-Dot
   und dem Avatar-Ring - eine Trennlinie ist weder das eine noch das andere.
   Sie uebernimmt den frueheren border-right des .panel, damit keine doppelte
   Linie entsteht.
   Die 9px breite Spalte ist die Greifflaeche; sichtbar ist nur die 1px-Linie
   in der Mitte (::before) - ohne Greifflaeche trifft die Maus die Linie nicht. */
.splitter{position:relative;cursor:col-resize;background:transparent;touch-action:none}
.splitter::before{content:"";position:absolute;top:0;bottom:0;left:4px;width:1px;background:var(--line);transition:background var(--dur) var(--ease)}
.splitter:hover::before,.splitter.is-active::before{background:var(--line-strong)}
/* Griff-Andeutung nur bei Hover/Fokus/Ziehen - im Ruhezustand bleibt es eine
   schlichte Linie, damit die Oberflaeche ruhig wirkt. */
.splitter::after{content:"";position:absolute;top:50%;left:50%;width:3px;height:28px;transform:translate(-50%,-50%);border-radius:var(--r-pill);background:var(--muted);opacity:0;transition:opacity var(--dur) var(--ease)}
.splitter:hover::after,.splitter:focus-visible::after,.splitter.is-active::after{opacity:1}
.splitter:focus-visible{outline:2px solid rgba(244,242,237,.75);outline-offset:-2px}
/* Waehrend des Ziehens: das iframe darf keine Pointer-Events schlucken, sonst
   bricht die Bewegung ab, sobald der Zeiger die Vorschau ueberquert.
   Dazu ueberall der Resize-Cursor und keine Textauswahl. */
#app.is-resizing{cursor:col-resize;user-select:none}
#app.is-resizing iframe{pointer-events:none}

/* Seitenauswahl (Multi-Page) */
.panel-head-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-1)}
.panel-head-row h2{margin:0}
.page-nav{display:flex;align-items:center;gap:var(--sp-2);min-width:0}
.page-select{width:auto;min-width:14ch;max-width:28ch;font-size:.82rem;padding:7px 34px 7px 11px}

/* ---------- Chat ---------- */
.log{display:flex;flex-direction:column;gap:var(--sp-2);overflow:auto}
/* Linke Spalte "Seite bearbeiten": oben Seitenauswahl, darunter der Verlauf, der die
   Hoehe fuellt, unten der Composer. Gerollt wird NUR der Verlauf, nicht das Panel -
   so bleibt der Composer immer am unteren Rand. */
.panel-chat{overflow:hidden;gap:var(--sp-3)}
#viewEdit .log{flex:1;min-height:0;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4)}
.log.small{max-height:224px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-3)}
.log.small:empty{display:none}
.bubble{padding:10px 14px;border-radius:var(--r-md);max-width:92%;font-size:.9rem;line-height:1.55;white-space:pre-wrap;word-break:break-word;animation:bubble-in 240ms var(--ease)}
@keyframes bubble-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.bubble.me{align-self:flex-end;background:var(--bubble-user);color:var(--bubble-user-text);border-bottom-right-radius:4px}
.bubble.bot{align-self:flex-start;background:var(--panel);border:1px solid var(--line-strong);color:var(--text);border-bottom-left-radius:4px}
/* Wiederhergestellter Entwurf: bewusst KEINE Bubble und keine Warnfarbe - eine
   ruhige Statuszeile in gedaempftem Text, mit dezenter Linie links. */
.draft-restored{align-self:stretch;display:flex;align-items:center;gap:9px;padding:8px 0 8px 12px;border-left:2px solid var(--line-strong);color:var(--text-soft);font-size:.82rem;line-height:1.5;animation:bubble-in 240ms var(--ease)}
.draft-restored::before{content:"";flex:0 0 auto;width:5px;height:5px;border-radius:50%;background:var(--text-soft);opacity:.7}
.bubble.err{align-self:flex-start;background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-bottom-left-radius:4px}

/* Leerer Chat: kurze Begruessung + klickbare Vorschlaege (aus den Feld-Labels).
   Ruhig und textnah - keine Karte, kein Kupfer: die Vorschlaege sind Angebote,
   keine Aktionen. Ein Klick fuellt nur das Eingabefeld. */
.chat-intro{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-1) var(--sp-1) var(--sp-3)}
.chat-intro-title{margin:0;font-size:1rem;font-weight:700;color:var(--text);letter-spacing:-.01em}
.chat-intro-text{margin:0;font-size:.84rem;color:var(--text-soft);line-height:1.5}
.chat-suggest{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:var(--sp-3)}
.chat-suggest-label{font-size:.72rem;font-weight:500;color:var(--text-soft);letter-spacing:.04em}
.suggestion{max-width:100%;text-align:left;font-size:.84rem;font-weight:500;line-height:1.4;color:var(--text);background:transparent;border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:7px 12px;cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}
.suggestion:hover{border-color:var(--input-border);background:var(--panel)}

/* Modus-Umschalter Umsetzen/Beraten: klein und NEUTRAL. Kupfer tragen jetzt nur
   noch Senden (ohne Entwurf) und Veroeffentlichen - drei Kupferflaechen in einer
   Zeile wuerden sich gegenseitig die Bedeutung nehmen. Was Senden gerade tut,
   sagt zusaetzlich der Platzhalter im Eingabefeld. */
.mode-switch{display:inline-flex;gap:2px;background:var(--bg);border:1px solid var(--line);padding:2px;border-radius:var(--r-xs);flex:none}
.mode-btn{border:1px solid transparent;background:transparent;color:var(--text-soft);font-weight:500;font-size:11.5px;letter-spacing:.2px;padding:4px 10px;border-radius:5px;cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.mode-btn:hover{color:var(--text)}
.mode-btn.active{background:var(--input-bg);color:var(--text);border-color:var(--line-strong)}
/* Modellwahl (nur Admins): eigene schmale Zeile am Ende der Composer-Leiste -
   neben Bueroklammer, Modus und Senden waere das select abgeschnitten. */
.modelbar{order:1;flex:1 1 100%;display:flex;align-items:center;gap:var(--sp-2);min-width:0;padding-top:6px;border-top:1px solid var(--line-strong)}
.modelbar .field-label{flex:none}
.modelbar select{flex:1;width:auto;min-width:0;font-size:.78rem;padding:5px 28px 5px 9px;background-position:right 9px center;box-shadow:none}
/* Berater-Antworten: klar als Beratung erkennbar — Kupfer-Kante + Etikett,
   damit sie nie wie eine ausgefuehrte Aenderung aussehen. */
.bubble.advice{border-left:3px solid var(--copper-mid);padding-top:26px;position:relative}
.bubble.advice::before{content:"Beratung";position:absolute;top:8px;left:14px;font-size:.6rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--copper)}
.advice-apply{margin-top:10px}
.bubble.nudge{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn)}
/* Chat-Eingabe: das prominenteste Eingabeelement — hell abgesetzt, mit Innentiefe */
.composer{display:flex;gap:var(--sp-2);background:var(--input-bg);border:1.5px solid var(--input-border);border-radius:var(--r-md);padding:5px 5px 5px 16px;box-shadow:inset 0 1px 3px rgba(0,0,0,0.3);transition:border-color var(--dur) var(--ease)}
.composer:focus-within{border-color:var(--placeholder)}
.composer input{flex:1;border:0;padding:9px 0;background:transparent;font-size:.95rem;box-shadow:none}
.composer input:focus{outline:none}
/* Chat-Composer: mehrzeiliges Feld oben, darunter eine Leiste mit Bueroklammer,
   Modus, (Admin-)Modellwahl und Senden. Darunter kommt nichts mehr. */
.composer-chat{flex-direction:column;gap:6px;padding:10px 8px 8px 14px;flex:none}
.composer-chat textarea{border:0;background:transparent;box-shadow:none;padding:2px 4px 2px 0;min-height:0;max-height:180px;resize:none;overflow-y:auto;font-size:.95rem;line-height:1.5}
.composer-chat textarea:focus{outline:none}
.composer-bar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);min-width:0}
.composer-bar .send-btn{margin-left:auto;flex:none}
/* Aktionszeile (nur noch im Blog-Entwurf) */
.actions{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3)}
.actions .btn-primary{flex:1;min-width:170px}

/* ---------- Kleine Knoepfe: Icons und Textlinks ----------
   Sekundaere Aktionen stehen auf --text-soft (gut lesbar auf dem Panel), werden
   beim Zeigen hell. Deaktiviert: deutlich gedimmt + cursor:not-allowed, ohne Hover. */
.icon-btn{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;padding:0;border:1px solid transparent;border-radius:var(--r-xs);background:transparent;color:var(--text-soft);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.icon-btn svg{width:17px;height:17px;display:block}
.icon-btn:hover{color:var(--text);background:var(--input-bg)}
.icon-btn[aria-expanded="true"]{color:var(--text);background:var(--input-bg);border-color:var(--line-strong)}
.icon-btn:disabled{opacity:.35;cursor:not-allowed;background:transparent;color:var(--text-soft);border-color:transparent}
/* Kurzes Wort neben dem Icon: nur schmal (Touch - kein Hover, also kein Tooltip).
   Breit bleibt es beim Icon mit Tooltip; aria-label traegt den Namen ueberall. */
.icon-label{display:none}
/* Kurzform schmal ("Verwerfen" statt "Entwurf verwerfen"), damit die drei Entwurfs-Aktionen in eine Zeile passen. */
.nur-schmal{display:none}
/* Tipp zum Tastatur-Diktat (#100): nur schmal sichtbar, siehe @media (max-width:900px). */
.diktat-hinweis{display:none;align-items:center;gap:6px;margin:-4px 2px 0;font-size:.76rem;line-height:1.35;color:var(--text-soft)}
.diktat-hinweis span{flex:1}
.diktat-hinweis-x{flex:none;background:none;border:0;color:var(--text-soft);font-size:1rem;line-height:1;padding:4px 6px;border-radius:var(--r-xs);cursor:pointer}
.diktat-hinweis-x:hover{color:var(--text);background:rgba(255,255,255,.05)}
.diktat-hinweis-x:focus-visible{outline:2px solid var(--copper-mid);outline-offset:1px}
.text-btn{flex:none;background:none;border:0;padding:6px 4px;color:var(--text-soft);font-size:.8rem;font-weight:500;white-space:nowrap;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong);transition:color var(--dur) var(--ease),text-decoration-color var(--dur) var(--ease)}
.text-btn:hover{color:var(--danger);text-decoration-color:currentColor}
.text-btn:disabled{opacity:.4;cursor:not-allowed;color:var(--text-soft);text-decoration-color:transparent}
.expert-tag{font-size:.6rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);border:1px solid var(--line-strong);padding:2px 8px;border-radius:var(--r-pill);vertical-align:middle;margin-left:6px}

/* ---------- Seitenleisten (Drawer): Versionen, Bild hochladen, Head-Code ----------
   Am rechten Rand unter der Topbar, nicht-modal (kein Abdunkeln): Chat und
   Vorschau bleiben bedienbar. Auf schmalen Fenstern bildschirmfuellend (siehe
   900px-Breakpoint). */
.drawer{position:fixed;top:var(--topbar-h);right:0;bottom:0;width:min(420px,100vw);z-index:30;display:flex;flex-direction:column;background:var(--panel);border-left:1px solid var(--line-strong);box-shadow:-18px 0 48px rgba(0,0,0,.45);animation:drawer-in 200ms var(--ease)}
@keyframes drawer-in{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
.drawer-head{display:flex;align-items:center;gap:var(--sp-2);padding:10px 10px 10px var(--sp-5);border-bottom:1px solid var(--line);flex:none}
.drawer-title{flex:1;min-width:0;font-weight:700;font-size:.95rem;color:var(--text)}
.drawer-body{flex:1;min-height:0;overflow:auto;padding:var(--sp-4) var(--sp-5) var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
.drawer-body .hint{margin:0}
.drawer-body .field{margin-bottom:0}

/* ---------- Rueckfrage (Entwurf verwerfen) ----------
   Natives <dialog>: Verwerfen im Danger-Stil (nicht Kupfer - es ist keine
   Hauptaktion, sondern eine zerstoerende), Abbrechen hat den Startfokus. */
.confirm{width:min(440px,calc(100vw - 32px));padding:0;border:1px solid var(--line-strong);border-radius:var(--r-lg);background:var(--panel);color:var(--text);box-shadow:0 24px 60px rgba(0,0,0,.55)}
.confirm::backdrop{background:rgba(10,11,14,.62)}
.confirm-body{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-5)}
.confirm-title{font-size:1.05rem;font-weight:700;line-height:1.3}
.confirm-text{margin:0;font-size:.88rem;line-height:1.55;color:var(--text-soft)}
.confirm-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-2)}

/* Aktionen unter einer erfolgreichen Umsetzung: "Rückgängig" (nur solange es der
   letzte Schritt ist, sonst grau) und schmal "Vorschau ansehen" (breit unsichtbar). */
.bubble-actions{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:6px;white-space:normal}
.chat-action{padding:0;background:none;border:0;color:var(--text-soft);font-size:.82rem;font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong)}
.chat-action:hover{color:var(--text);text-decoration-color:currentColor}
.chat-action:disabled{opacity:.4;cursor:not-allowed;color:var(--text-soft);text-decoration-color:transparent}
.preview-link{display:none}

/* ---------- Schmale Fenster: Tabs Chat | Vorschau ----------
   Breit unsichtbar; im 900px-Breakpoint sichtbar. Der Spiegel-Knopf
   Veroeffentlichen erscheint nur im Chat-Tab (im Vorschau-Tab steht das Original). */
.pane-tabs{display:none;align-items:center;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3);background:var(--panel);border-bottom:1px solid var(--line)}
.pane-tab{display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;color:var(--text-soft);font-weight:500;font-size:.86rem;padding:7px 14px;border-radius:var(--r-pill);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.pane-tab:hover{color:var(--text)}
.pane-tab.active{background:var(--bubble-user);color:var(--text)}
.pane-dot{width:6px;height:6px;border-radius:50%;background:var(--warn);flex:none}
.pane-publish{margin-left:auto}

/* Sektions-Karten ("group") */
.group{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:var(--sp-4)}
.group-title{font-weight:600;font-size:.92rem;color:var(--text);margin-bottom:var(--sp-3);display:flex;align-items:center;gap:9px}
.group-title.between{justify-content:space-between}
.draft{border-color:rgba(207,161,137,.5);box-shadow:0 0 0 3px rgba(207,161,137,.08)}

/* Blog: gefuehrte Schritt-Karten — der aktive Schritt traegt die Kupfer-Nummer */
.step-n{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;border-radius:50%;background:var(--bubble-user);color:var(--text-soft);font-size:.74rem;font-weight:700;flex:0 0 auto;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.group.step{transition:border-color var(--dur) var(--ease)}
.group.step:focus-within{border-color:var(--input-border)}
.group.step:focus-within .step-n{background:var(--satin);color:var(--satin-text)}
/* SEO & Links: erkennbar optional */
.group.optional{background:transparent;border-style:dashed}
.group.optional .group-title{color:var(--text-soft)}
.optional-tag{font-size:.6rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line-strong);padding:2px 8px;border-radius:var(--r-pill)}

/* Leere Container kollabieren */
.thumbs:empty,.links-list:empty,.faces-sel:empty,.posts-list:empty{display:none}

/* ---------- Bilder (Panel-Listen) ---------- */
.imgadd{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.imgadd input[type=text]{flex:1;min-width:150px}
.thumbs{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-3)}
.thumb{display:flex;align-items:center;gap:10px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-2)}
.thumb img{width:72px;height:72px;object-fit:cover;border-radius:var(--r-xs);flex:0 0 auto}
.thumb.featured img{width:84px;height:84px}
.thumb .cap{flex:1;font-size:.84rem;color:var(--text-soft)}

/* ---------- SIGNATUR: die Scheinwerfer-Buehne ----------
   Radiales Licht faellt auf die Vorschau-Karte; die Kundenwebsite (der helle
   iframe-Inhalt) IST die Buehne — bewusst hell auf dunklem Werkzeug. */
.stage{padding:var(--sp-5);overflow:hidden;display:flex;background:radial-gradient(ellipse 90% 70% at 50% 38%, #262B38 0%, #15171C 70%)}
.browser{flex:1;display:flex;flex-direction:column;background:var(--panel);border-radius:var(--r-lg);box-shadow:0 0 0 1px rgba(255,255,255,0.14), 0 0 90px rgba(255,255,255,0.10), 0 24px 60px rgba(0,0,0,0.5);overflow:hidden;position:relative}
/* Vorschau-Kopfzeile: die EINZIGE Toolbar der Vorschau. Links Zustand + Ansicht,
   rechts die Entwurfs-Aktionen. Keine Deko-Punkte, keine Schein-Adressleiste -
   die Domain steht nur noch klein als Text. Bricht bei wenig Platz in zwei Zeilen um. */
.browser-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);padding:8px 10px 8px 12px;border-bottom:1px solid var(--line-strong);background:var(--panel)}
.bar-group{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0} /* umbrechen statt abschneiden, wenn die Vorschau schmal ist (Live/Entwurf + Markierungen) */
.bar-actions{margin-left:auto;gap:var(--sp-2)}
.browser-bar .url{font-size:.74rem;color:var(--text-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:26ch;margin-left:6px}
/* Status-Badge: "Live" ruhig und neutral; "Entwurf · n Änderungen" im warmen
   Hinweis-Ton (--warn) - ein Zustand, keine Aktion, darum kein Kupfer. */
.draft-badge{display:inline-flex;align-items:center;gap:7px;flex:none;font-size:.74rem;font-weight:500;color:var(--text-soft);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:4px 11px 4px 9px;white-space:nowrap}
.draft-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--text-soft);flex:none}
.draft-badge .badge-state{font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase}
.draft-badge[data-state="draft"]{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}
.draft-badge[data-state="draft"]::before{background:var(--warn)}
iframe{flex:1;border:0;width:100%;background:#fff}
/* ---------- Viewport-Umschalter (Issue #77) ----------
   Modell (B): der Umschalter aendert NUR die iframe-Breite innerhalb der
   Buehne. Die Trennlinie aus #68 bleibt, wo der Nutzer sie hingezogen hat -
   sie ist eine Aussage ueber die Arbeitsflaeche, der Umschalter eine ueber
   das Geraet.

   WICHTIG (Falle 3 aus #77): Die Breite haengt am IFRAME, nicht an .browser.
   Der Versionshinweis #verBanner ist ein Geschwister des iframes innerhalb
   von .browser und gehoert zum Studio, nicht zur Kundenseite. Greift die
   Regel eine Ebene hoeher, schrumpft "Du siehst eine fruehere Version" mit
   dem Geraet mit - falsch, er soll die Buehne fuellen.

   max-width:100% ist die Notbremse fuer sehr schmale Buehnen: lieber ein
   schmaleres Geraet als ein waagerechter Rollbalken. */
.stage iframe{width:var(--preview-w,100%);max-width:100%;margin-inline:auto}
/* Die grosse Vorschau uebernimmt die Geraetewahl. Wer auf Mobil umschaltet
   und dann vergroessert, will das Handy groesser sehen - nicht ploetzlich
   wieder Desktop. #previewModal liegt AUSSERHALB von #app, erbt die Variable
   also nicht; app.js setzt sie dort zusaetzlich. */
.pv-modal iframe{width:var(--preview-w,100%);max-width:100%;margin-inline:auto}

/* Der Umschalter selbst: bewusst neutral. Nur --line-strong und gedaempfter
   Text, Typografie wie das LIVE-VORSCHAU-Label daneben. Rose-Kupfer bleibt
   Aktionen vorbehalten - eine Geraetewahl ist keine Aktion. */
.viewport-switch{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r-xs);overflow:hidden;flex:none}
.vp-btn{font-family:var(--mono);font-size:.6rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--text-soft);background:transparent;border:0;padding:4px 9px;cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.vp-btn+.vp-btn{border-left:1px solid var(--line-strong)}
.vp-btn:hover{color:var(--text);background:var(--input-bg)}
.vp-btn[aria-pressed="true"]{color:var(--text);background:var(--input-bg)}
/* Vorher/Nachher + Markierung (gleiches Aussehen wie die Breiten-Umschaltung, eigene
   Klassen, weil app.js alle .vp-btn als Breiten-Knoepfe behandelt) */
.stand-switch{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r-xs);overflow:hidden;flex:none}
.stand-btn{font-family:var(--mono);font-size:.6rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--text-soft);background:transparent;border:0;padding:4px 9px;cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.stand-btn+.stand-btn{border-left:1px solid var(--line-strong)}
.stand-btn:hover{color:var(--text);background:var(--input-bg)}
.stand-btn[aria-pressed="true"]{color:var(--text);background:var(--input-bg)}
.mark-toggle{border:1px solid var(--line-strong);border-radius:var(--r-xs)}
.mark-toggle[aria-pressed="true"]{color:var(--copper);border-color:var(--copper)}
.auch-geaendert{font-size:.76rem;color:var(--text-soft);padding:6px 12px;border-bottom:1px solid var(--line);background:var(--bg)}
.auch-geaendert strong{color:var(--copper);font-weight:600}
/* Dialog vor dem Veroeffentlichen */
.publish-confirm{width:min(560px,calc(100vw - 32px))}
.publish-liste{display:flex;flex-direction:column;gap:12px;max-height:min(60vh,520px);overflow:auto;padding-right:4px}
.publish-seite{display:flex;flex-direction:column;gap:6px}
.publish-seite-titel{font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft)}
.publish-feld{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 10px;display:flex;flex-direction:column;gap:4px}
.publish-feld-label{font-size:.8rem;font-weight:600;color:var(--text)}
.publish-wert{font-size:.78rem;line-height:1.45;color:var(--text-soft);word-break:break-word}
.publish-wert .alt{text-decoration:line-through;opacity:.75}
.publish-wert .pfeil{color:var(--copper);padding:0 4px}
.publish-bilder{display:flex;align-items:center;gap:8px}
.publish-bilder img{width:64px;height:44px;object-fit:cover;border-radius:4px;border:1px solid var(--line-strong);background:var(--panel)}
.vp-btn:focus-visible{outline:2px solid rgba(244,242,237,.75);outline-offset:-2px}
.ver-banner{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;background:var(--bg);border-bottom:1px solid var(--line-strong);padding:10px var(--sp-4);font-size:.84rem;color:var(--text-soft)}
.ver-banner-text{flex:1;min-width:200px}
.ver-banner-text strong{color:var(--copper)}
.ver-banner .btn{flex-shrink:0}

/* ---------- Toast ---------- */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(14px);background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);padding:12px 22px;border-radius:var(--r-sm);box-shadow:0 14px 36px rgba(0,0,0,.5);font-weight:500;font-size:.88rem;opacity:0;transition:opacity 260ms var(--ease),transform 260ms var(--ease);z-index:50;max-width:90vw}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- Responsive ---------- */
/* ---------- Klick-zum-Aendern: Popover am Text, schmal als Bottom-Sheet ---------- */
.feld-pop{position:fixed;z-index:60;width:min(340px,calc(100vw - 24px));background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-md);box-shadow:0 18px 44px rgba(0,0,0,.55);padding:12px 14px 14px;display:flex;flex-direction:column;gap:10px}
.feld-pop[hidden]{display:none}
.feld-pop-kopf{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-right:30px}
.feld-pop-label{margin:0;font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--copper);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.feld-pop-x{position:absolute;top:8px;right:8px;background:none;border:0;color:var(--text-soft);font-size:1.25rem;line-height:1;cursor:pointer;padding:2px 6px;border-radius:var(--r-xs)}
.feld-pop-x:hover{color:var(--text);background:rgba(255,255,255,.05)}
.feld-pop-x:focus-visible{outline:2px solid var(--copper-mid);outline-offset:1px}
.feld-pop-wahl{display:flex;gap:8px;flex-wrap:wrap}
.feld-pop-wahl .btn{flex:1 1 auto}
.feld-pop-hinweis{margin:0;font-size:.8rem;color:var(--text-soft)}
.feld-pop-form{display:flex;flex-direction:column;gap:8px}
.feld-pop-form[hidden]{display:none}
.feld-pop-form textarea{width:100%;box-sizing:border-box;resize:none;min-height:40px;max-height:180px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--r-sm,8px);color:var(--text);font:inherit;padding:9px 10px}
.feld-pop-form textarea:focus{outline:2px solid var(--copper-mid);outline-offset:1px}
.feld-pop-fuss{display:flex;align-items:center;gap:8px}
.feld-pop-zaehler{margin-right:auto;font-family:var(--mono);font-size:.72rem;color:var(--text-soft)}
.feld-pop-zaehler.zu-lang{color:var(--danger)}
.feld-pop-fehler{margin:0;font-size:.8rem;color:var(--danger)}
.feld-pop.sheet{left:0 !important;right:0;bottom:0;top:auto !important;width:auto;border-radius:var(--r-lg) var(--r-lg) 0 0;padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}

@media (max-width:900px){
  /* Gestapelt ergibt eine senkrechte Trennlinie keinen Sinn: display:none nimmt
     sie auch aus der Tab-Reihenfolge. Layout exakt wie vor Issue #68. */
  .workspace{grid-template-columns:1fr;grid-auto-rows:min-content}
  .splitter{display:none}
  .panel{border-bottom:1px solid var(--line);max-height:none}
  .stage{min-height:60vh}
  .topbar{gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) var(--sp-4)}
  .tabs{order:3;width:100%;margin:var(--sp-1) 0 0;justify-content:center}
  .topbar-right{order:2;gap:var(--sp-2)}
  /* "Seite bearbeiten": Chat und Vorschau als Tabs statt gestapelt. Die sichtbare
     Haelfte fuellt die Hoehe; Veroeffentlichen bleibt ueber den Spiegel-Knopf in
     der Tab-Leiste auch im Chat-Tab erreichbar. Der Blog bleibt gestapelt. */
  #viewEdit{grid-template-rows:auto minmax(0,1fr);grid-auto-rows:auto}
  .pane-tabs{display:flex}
  #viewEdit .panel{border-bottom:0;min-height:0}
  #viewEdit .stage{min-height:0;padding:var(--sp-3)}
  #viewEdit[data-pane="chat"] .stage{display:none}
  #viewEdit[data-pane="preview"] .panel{display:none}
  #viewEdit[data-pane="preview"] .pane-publish{display:none}
  .preview-link{display:block}
  .icon-btn.with-label{width:auto;min-height:36px;gap:6px;padding:0 10px 0 8px;font-size:.78rem;font-weight:500}
  .icon-btn.with-label .icon-label{display:inline}
  .nur-breit{display:none}
  .nur-schmal{display:inline}
  .diktat-hinweis:not([hidden]){display:flex}
  .bar-actions{width:100%;justify-content:flex-end}
  .browser-bar .url{display:none}
  /* Notfalls bricht auch die linke Gruppe um - lieber zwei Zeilen als ein
     abgeschnittenes Icon. */
  .bar-group{flex-wrap:wrap;row-gap:6px}
  /* Seitenleisten: bildschirmfuellend und UEBER der Topbar (mit eigenem Schliessen). */
  .drawer{top:0;width:100%;z-index:45;border-left:0;box-shadow:none}
}
@media (max-width:600px){
  /* Topbar knapp halten: der KI-Status bleibt als Punkt (Text im Tooltip). */
  .status{padding:6px}
  .status .status-text{display:none}
  .topbar-name{font-size:.95rem}
}
@media (max-width:480px){
  .panel,.stage{padding:var(--sp-4)}
  #viewEdit .panel{padding:var(--sp-3)}
  #viewEdit .stage{padding:var(--sp-2)}
  /* Kopfzeile verdichten, damit Badge, Geraetewahl, Vollbild und Versionen auf
     390px in EINE Zeile passen. */
  .browser-bar{padding:8px}
  .draft-badge{gap:5px;padding:4px 8px 4px 7px}
  .draft-badge .badge-state{letter-spacing:.08em}
  .vp-btn{padding:4px 6px;letter-spacing:.1em}
  .login-card{padding:32px 24px}
  .wordmark{font-size:1.6rem}
}
@media (prefers-reduced-motion:reduce){*{animation:none !important;transition:none !important}}

/* ---------- Link-Zeilen (Blog: Affiliate-Haken) ---------- */
.links-list{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-3)}
.link-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.link-row .lr-url{flex:2;min-width:150px}
.link-row .lr-note{flex:1;min-width:110px}
.link-row .lr-aff{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--text-soft);white-space:nowrap;background:var(--bg);border:1px solid var(--line);padding:8px 12px;border-radius:var(--r-sm)}
.link-row .lr-aff input{width:15px;height:15px;accent-color:#BC8A70;box-shadow:none}

/* ---------- Listen: Beitraege / Versionen / Snippets / Uploads ---------- */
.posts-list{display:flex;flex-direction:column;gap:var(--sp-2)}
.post-row{display:flex;align-items:center;gap:10px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 13px;transition:border-color var(--dur) var(--ease)}
.post-row:hover{border-color:var(--line-strong)}
/* Team (Konto-Menue -> Team) */
.team-row{flex-wrap:wrap}
.team-row .post-info{flex:1 1 180px;min-width:0}
.team-row.is-off .post-title{color:var(--text-soft);text-decoration:line-through}
.team-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;width:100%}
.team-actions select{width:auto;flex:0 0 auto;font-size:.78rem;padding:5px 28px 5px 9px;background-position:right 9px center;box-shadow:none}
.team-note{font-size:.74rem}
.team-otp{display:flex;flex-direction:column;gap:8px;padding:12px 13px;border:1px solid var(--input-border);border-radius:var(--r-sm);background:var(--bg)}
.team-otp-label{font-weight:600;font-size:.84rem;color:var(--text)}
.team-otp-row{display:flex;align-items:center;gap:8px}
.team-otp-code{flex:1;font-family:var(--mono);font-size:1rem;letter-spacing:.06em;color:var(--text);user-select:all;word-break:break-all}
.team-otp .btn{align-self:flex-start}
.team-msg{margin:0;font-size:.82rem;color:var(--text-soft);min-height:1em}
.team-msg:empty{display:none}
.team-msg.err{color:var(--danger)}
.team-new,.team-log{display:flex;flex-direction:column;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--line)}
.team-new .btn{align-self:flex-start}
.team-log-list{display:flex;flex-direction:column;gap:4px}
.team-log-row{font-size:.76rem;color:var(--text-soft);line-height:1.45}
.post-info{flex:1;min-width:0}
.post-title{font-weight:600;font-size:.87rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.post-slug{font-size:.75rem;color:var(--text-soft)}

/* Versions-Zeile: Datum oben, Message darunter, Buttons als eigene Zeile */
.ver-row{flex-direction:column;align-items:stretch;gap:6px}
.ver-row .post-info{width:100%}
.ver-row .post-title{white-space:normal;overflow:visible;text-overflow:clip;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ver-row.ver-current{border-color:var(--copper-mid);box-shadow:inset 0 0 0 1px var(--copper-mid)}
.ver-badge{display:none;font-size:.64rem;font-weight:700;letter-spacing:.04em;color:var(--satin-text);background:var(--copper);padding:2px 9px;border-radius:var(--r-pill)}
.ver-row.ver-current .ver-badge{display:inline-block}
.ver-row .post-slug{white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:2px}
.ver-actions{display:flex;gap:var(--sp-2);justify-content:flex-end;width:100%}

/* Bild hochladen: Pending-Upload-Zeilen */
.upl-row{align-items:flex-start}
.upl-thumb{width:56px;height:42px;object-fit:cover;border-radius:var(--r-xs);border:1px solid var(--line-strong);flex-shrink:0;background:var(--panel)}
.upl-controls{display:flex;flex-direction:column;gap:6px;align-items:stretch;flex-shrink:0;max-width:190px}
.upl-controls select{font-size:.78rem;padding:6px 30px 6px 9px}
.upl-controls .linkish{align-self:flex-end;padding:0}

/* ---------- Zweispaltige Reihe ---------- */
.row2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.row2 .field{margin-bottom:0}

/* ---------- Upload-Zonen: gestaltete Drop-Areas statt nativer File-Inputs ---------- */
.dropzone{border:1.5px dashed var(--input-border);border-radius:var(--r-md);background:var(--bg);padding:var(--sp-4);display:flex;align-items:center;gap:var(--sp-3);position:relative;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}
.dropzone:hover{border-color:var(--placeholder)}
.dropzone.drag{border-color:var(--copper-mid);background:var(--panel)}
.dz-ico{width:32px;height:32px;flex:0 0 auto;color:var(--text-soft)}
.dz-body{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.dz-btn{display:inline-flex;align-items:center;font-size:12px;font-weight:600;letter-spacing:.3px;color:var(--text);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--r-xs);padding:7px 12px;cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.dz-btn:hover{background:var(--bubble-user);border-color:var(--placeholder)}
/* Fokus-Ring am Label, wenn das (visuell versteckte) Input per Tastatur fokussiert ist */
.dropzone .file:focus-visible ~ .dz-body .dz-btn,.dropzone .file:focus-visible + .dz-body .dz-btn{outline:2px solid rgba(244,242,237,.75);outline-offset:2px}
.dz-hint{font-size:.8rem;color:var(--text-soft)}
.dz-name{font-size:.76rem;font-weight:500;color:var(--text);background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:4px 11px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* editierbare Bildunterschrift in der Bildliste */
.thumb .thumb-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-1)}
.cap-input{width:100%;font-size:.84rem;padding:7px 10px;border:1.5px solid var(--input-border);border-radius:var(--r-xs);background:var(--input-bg);color:var(--text);box-shadow:inset 0 1px 3px rgba(0,0,0,0.3)}
.cap-input:focus{outline:none;border-color:var(--placeholder)}
.cap-hint{font-size:.73rem;color:var(--text-soft);line-height:1.4}

/* ---------- Bild-Werkzeuge: Gesichter-Blur & Zuschnitt ---------- */
.img-tools{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-2)}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:.84rem;color:var(--text);cursor:pointer}
.chk input{accent-color:#BC8A70;box-shadow:none}
.chk-sm{font-size:.78rem}
.crop-editor{margin-top:var(--sp-3);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}
.crop-frame{width:260px;max-width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:var(--r-sm);position:relative;background:#000;cursor:grab;touch-action:none;user-select:none}
.crop-frame:active{cursor:grabbing}
.crop-frame img{position:absolute;top:0;left:0;max-width:none;user-select:none;-webkit-user-drag:none}
.crop-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* ---------- Gesichts-Auswahl ---------- */
.faces-sel{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.faces-row{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.face-item{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;border:2px solid transparent;border-radius:var(--r-sm);padding:3px;background:var(--bg);transition:border-color var(--dur) var(--ease)}
.face-item:hover{border-color:var(--line-strong)}
.face-item.on{border-color:var(--copper-mid)}
.face-item img{width:56px;height:56px;object-fit:cover;border-radius:6px;display:block}
.face-item input{margin:0;box-shadow:none;accent-color:#BC8A70}
.face-tag{font-size:.66rem;color:var(--text-soft)}
.thumb-block{flex-direction:column;align-items:stretch}
.thumb-top{display:flex;align-items:center;gap:10px}

/* Hinweis: ohne Web-Recherche erstellt */
.web-note{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn);border-radius:var(--r-sm);padding:9px 12px;font-size:.82rem;margin-bottom:var(--sp-3);line-height:1.45}

/* Auswahl-/Galerie-Panel fuer in der Vorschau angeklickte Bilder */
.img-panel{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:10px 13px}
.img-panel-text{font-size:.86rem;color:var(--text-soft)}
.img-panel-text code{font-family:var(--mono);background:var(--panel);color:var(--text);padding:2px 7px;border-radius:5px;font-size:.78rem;border:1px solid var(--line-strong)}
.img-panel-actions{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}

/* ---------- Vollbild-Overlay (Vorschau + Passwort-Dialog) ---------- */
.pv-modal{position:fixed;inset:0;z-index:60;background:var(--bg);display:flex;flex-direction:column}
.pv-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);background:var(--panel);border-bottom:1px solid var(--line)}
.pv-title{font-weight:600;color:var(--text)}
.pv-modal iframe{flex:1;border:0;background:#fff}
.pw-modal-body{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--sp-5);overflow:auto;background:radial-gradient(ellipse 90% 70% at 50% 30%, #1B1E25 0%, var(--bg) 70%)}
.pw-modal-card{width:100%;max-width:384px;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-lg);box-shadow:0 24px 60px rgba(0,0,0,.5);padding:32px}
.pw-modal-card .field{margin-bottom:var(--sp-4)}

/* Dezenter Text-Schalter (im Panel v. a. "Pfad kopieren") */
.linkish{align-self:flex-start;background:none;border:0;padding:4px 0;color:var(--text-soft);font-size:.8rem;font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong);transition:color var(--dur) var(--ease),text-decoration-color var(--dur) var(--ease)}
.linkish:hover{color:var(--text);text-decoration-color:currentColor}
