/* Story Writer — Arbeitsoberfläche.
   Zwei getrennt gestimmte Paletten; eine Akzentfarbe; Linien statt
   Schatten; keine Verläufe, keine Glaseffekte, keine Animationen. */

:root {
  --bg: #f6f5f2;
  --surface: #ffffff;
  --surface-2: #efede8;
  --line: #dcd8d0;
  --line-strong: #c4bfb4;
  --text: #1d1f21;
  --text-muted: #5f625f;
  --accent: #1f5a6e;
  --accent-strong: #174656;
  --accent-soft: #e2eef1;
  --on-accent: #ffffff;
  --ok: #2d6a3e;
  --ok-soft: #e3f0e6;
  --warn: #8a5a00;
  --warn-soft: #fbf0d9;
  --danger: #a3302a;
  --danger-soft: #f8e4e2;
  --paper: #fffdf8;
  --focus: #2b7a93;
  --radius: 6px;
  --font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-text: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  --font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;
  color-scheme: light;
}

@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) {
    --bg: #f6f5f2; --surface: #ffffff; --surface-2: #efede8; --line: #dcd8d0; --line-strong: #c4bfb4;
    --text: #1d1f21; --text-muted: #5f625f; --accent: #1f5a6e; --accent-strong: #174656; --accent-soft: #e2eef1; --on-accent: #ffffff;
    --ok: #2d6a3e; --ok-soft: #e3f0e6; --warn: #8a5a00; --warn-soft: #fbf0d9; --danger: #a3302a; --danger-soft: #f8e4e2; --paper: #fffdf8; --focus: #2b7a93;
    color-scheme: light;
  }
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #17191b; --surface: #1f2224; --surface-2: #26292c; --line: #34383b; --line-strong: #464b4f;
    --text: #e4e2dd; --text-muted: #a3a39d; --accent: #7fb4c5; --accent-strong: #9cc7d4; --accent-soft: #22363d; --on-accent: #0f1a1e;
    --ok: #8cc79b; --ok-soft: #1f3325; --warn: #e2b760; --warn-soft: #3a2f17; --danger: #ee8e86; --danger-soft: #3d2220; --paper: #1c1f21; --focus: #9cc7d4;
    color-scheme: dark;
  }
}

:root[data-theme="light"] {
  --bg: #f6f5f2; --surface: #ffffff; --surface-2: #efede8; --line: #dcd8d0; --line-strong: #c4bfb4;
  --text: #1d1f21; --text-muted: #5f625f; --accent: #1f5a6e; --accent-strong: #174656; --accent-soft: #e2eef1; --on-accent: #ffffff;
  --ok: #2d6a3e; --ok-soft: #e3f0e6; --warn: #8a5a00; --warn-soft: #fbf0d9; --danger: #a3302a; --danger-soft: #f8e4e2; --paper: #fffdf8; --focus: #2b7a93;
  color-scheme: light;
}

:root[data-theme="dark"] {
  --bg: #17191b; --surface: #1f2224; --surface-2: #26292c; --line: #34383b; --line-strong: #464b4f;
  --text: #e4e2dd; --text-muted: #a3a39d; --accent: #7fb4c5; --accent-strong: #9cc7d4; --accent-soft: #22363d; --on-accent: #0f1a1e;
  --ok: #8cc79b; --ok-soft: #1f3325; --warn: #e2b760; --warn-soft: #3a2f17; --danger: #ee8e86; --danger-soft: #3d2220; --paper: #1c1f21; --focus: #9cc7d4;
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--text); font: 15px/1.5 var(--font-ui); }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3, h4 { margin: 0 0 .5rem; line-height: 1.25; font-weight: 600; }
h1 { font-size: 1.5rem; }
h2 { font-size: 1.05rem; }
h3 { font-size: .95rem; }
p { margin: 0 0 .75rem; }
code, pre { font-family: var(--font-mono); font-size: .85em; }
hr { border: 0; border-top: 1px solid var(--line); }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
[hidden] { display: none !important; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: absolute; left: -999px; top: 0; background: var(--surface); padding: .5rem 1rem; z-index: 10; }
.skip-link:focus { left: 1rem; }

/* --- Kopfleiste ------------------------------------------------------- */
.sw-topbar { display: flex; align-items: center; gap: 1.5rem; height: 52px; padding: 0 1.25rem; background: var(--surface); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 5; }
.sw-brand { display: flex; align-items: center; gap: .55rem; color: var(--text); font-weight: 650; letter-spacing: .01em; }
.sw-brand:hover { text-decoration: none; }
.sw-brand__mark { width: 18px; height: 18px; border-radius: 4px; background: var(--accent); display: inline-block; }
.sw-topnav { display: flex; gap: .25rem; flex: 1; }
.sw-topnav a { color: var(--text-muted); padding: .35rem .65rem; border-radius: var(--radius); }
.sw-topnav a:hover { color: var(--text); background: var(--surface-2); text-decoration: none; }
.sw-topbar__right { display: flex; align-items: center; gap: .75rem; margin-left: auto; }
.sw-topbar__toggle { display: none; }
.sw-theme-toggle { background: transparent; border: 1px solid var(--line); color: var(--text-muted); border-radius: var(--radius); width: 32px; height: 32px; cursor: pointer; }
html:not(.has-js) .sw-theme-toggle { display: none; }
.sw-theme-toggle__dark { display: none; }
:root[data-theme="dark"] .sw-theme-toggle__light { display: none; }
:root[data-theme="dark"] .sw-theme-toggle__dark { display: inline; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .sw-theme-toggle__light { display: none; }
  :root:not([data-theme="light"]) .sw-theme-toggle__dark { display: inline; }
}
.sw-user { display: flex; align-items: center; gap: .5rem; color: var(--text); }
.sw-user__initials { width: 28px; height: 28px; border-radius: 50%; background: var(--accent-soft); color: var(--accent-strong); display: grid; place-items: center; font-size: .75rem; font-weight: 600; }
.sw-user__name { font-size: .85rem; color: var(--text-muted); max-width: 18ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.sw-content { min-height: calc(100vh - 52px); }
.sw-body--plain .sw-content, .sw-body--admin .sw-content { max-width: 1100px; margin: 0 auto; padding: 2rem 1.25rem; }

/* --- Rahmen mit Projektnavigation ------------------------------------- */
.sw-shell { display: grid; grid-template-columns: 232px minmax(0, 1fr); min-height: calc(100vh - 52px); }
.sw-shell--plain { grid-template-columns: minmax(0, 1fr); }
.sw-sidebar { background: var(--surface); border-right: 1px solid var(--line); padding: 1rem .75rem 2rem; position: sticky; top: 52px; height: calc(100vh - 52px); overflow-y: auto; }
.sw-sidebar__project { padding: .25rem .5rem 1rem; border-bottom: 1px solid var(--line); margin-bottom: .75rem; }
.sw-sidebar__label, .sw-navgroup__label, .sw-eyebrow { display: block; font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); margin-bottom: .15rem; }
.sw-sidebar__name { font-weight: 650; color: var(--text); word-break: break-word; }
.sw-navgroup { margin-bottom: .9rem; }
.sw-navgroup__label { padding: 0 .5rem; margin-bottom: .25rem; }
.sw-navgroup ul { list-style: none; margin: 0; padding: 0; }
.sw-navlink { display: flex; justify-content: space-between; align-items: center; padding: .3rem .5rem; border-radius: var(--radius); color: var(--text); font-size: .9rem; }
.sw-navlink:hover { background: var(--surface-2); text-decoration: none; }
.sw-navlink.is-active { background: var(--accent-soft); color: var(--accent-strong); font-weight: 600; }
.sw-sidebar__back { display: block; margin: 1rem .5rem 0; font-size: .85rem; color: var(--text-muted); }
.sw-main { padding: 1.5rem 2rem 3rem; min-width: 0; max-width: 1280px; }
.sw-shell--plain .sw-main { margin: 0 auto; width: 100%; }
.sw-shell--wide .sw-main { max-width: none; padding: 1rem 1.25rem 2rem; }
.sw-crumbs { font-size: .85rem; color: var(--text-muted); margin-bottom: .75rem; display: flex; flex-wrap: wrap; gap: .4rem; }

/* --- Seitenkopf, Flächen, Raster -------------------------------------- */
.sw-pagehead { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 1.25rem; }
.sw-pagehead p { max-width: 70ch; }
.sw-actions { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.sw-panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem 1.15rem; margin-bottom: 1rem; }
.sw-panel--quiet { background: transparent; }
.sw-panel--warn { border-color: var(--warn); background: var(--warn-soft); }
.sw-panel--danger { border-color: var(--danger); }
.sw-panel__head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin-bottom: .5rem; flex-wrap: wrap; }
.sw-grid { display: grid; gap: 1rem; }
.sw-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sw-grid--main-side { grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); align-items: start; }
.sw-stack > * + * { margin-top: 0; }
.sw-row { display: flex; gap: .75rem; flex-wrap: wrap; align-items: flex-end; }
.sw-empty { border: 1px dashed var(--line-strong); border-radius: var(--radius); padding: 2rem; text-align: center; color: var(--text-muted); }
.sw-muted { color: var(--text-muted); }
.sw-small { font-size: .85rem; }
.sw-strong { font-weight: 600; }
.sw-text-warn { color: var(--warn); }

/* --- Kennzahlen ------------------------------------------------------- */
.sw-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; margin: 0 0 1rem; }
.sw-stats > div { background: var(--surface); padding: .75rem 1rem; }
.sw-stats dt { font-size: .75rem; color: var(--text-muted); }
.sw-stats dd { margin: .15rem 0 0; font-size: 1.25rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.sw-stats small { font-size: .75rem; font-weight: 400; color: var(--text-muted); }
.sw-kv { margin: 0; display: grid; grid-template-columns: 1fr auto; row-gap: .25rem; }
.sw-kv > div { display: contents; }
.sw-kv dd { margin: 0; font-variant-numeric: tabular-nums; }

/* --- Formulare ---------------------------------------------------------- */
.sw-form { display: grid; gap: .8rem; }
.sw-form--compact { gap: .6rem; }
.sw-inline-form { display: flex; gap: .75rem; align-items: flex-end; flex-wrap: wrap; }
.sw-field { display: flex; flex-direction: column; gap: .3rem; min-width: 0; border: 0; padding: 0; margin: 0; }
.sw-field > span, .sw-field > legend, .sw-field-label { font-size: .8rem; font-weight: 600; color: var(--text-muted); }
.sw-field--grow { flex: 1 1 220px; }
.sw-field--end { justify-content: flex-end; }
input, select, textarea, button { font: inherit; color: inherit; }
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select, textarea {
  width: 100%; background: var(--surface); border: 1px solid var(--line-strong); border-radius: var(--radius); padding: .45rem .6rem; color: var(--text);
}
textarea { resize: vertical; line-height: 1.5; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--focus); outline-offset: -1px; border-color: var(--focus); }
.sw-mono { font-family: var(--font-mono); font-size: .85rem; }
.sw-check-field { display: flex; gap: .45rem; align-items: center; font-size: .9rem; }
.sw-checklist { display: grid; gap: .25rem; max-height: 220px; overflow-y: auto; }
.sw-checklist--columns { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.sw-formbar { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; }
.sw-title-input { font-weight: 600; font-size: 1rem; max-width: 520px; }
.sw-search { display: flex; gap: .5rem; margin-bottom: 1rem; max-width: 520px; }
.sw-danger-line { margin-top: .75rem; }

.sw-button { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; padding: .45rem .9rem; border-radius: var(--radius); border: 1px solid var(--accent); background: var(--accent); color: var(--on-accent); font-weight: 600; font-size: .9rem; cursor: pointer; text-decoration: none; white-space: nowrap; }
.sw-button:hover { background: var(--accent-strong); border-color: var(--accent-strong); text-decoration: none; }
.sw-button[disabled] { opacity: .5; cursor: not-allowed; }
.sw-button--ghost { background: var(--surface); color: var(--text); border-color: var(--line-strong); }
.sw-button--ghost:hover { background: var(--surface-2); border-color: var(--line-strong); }
.sw-button--danger { background: var(--danger); border-color: var(--danger); color: #fff; }
.sw-button--danger:hover { background: var(--danger); filter: brightness(.92); }
.sw-button--small { padding: .25rem .6rem; font-size: .8rem; }
.sw-button--block { width: 100%; }
.sw-link { background: none; border: 0; padding: 0; color: var(--accent); cursor: pointer; }
.sw-link--danger { color: var(--danger); }
.sw-icon-button { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); width: 28px; height: 28px; cursor: pointer; color: var(--text-muted); }

/* --- Meldungen, Etiketten ---------------------------------------------- */
.sw-flash { border: 1px solid var(--accent); background: var(--accent-soft); color: var(--text); border-radius: var(--radius); padding: .55rem .8rem; margin-bottom: 1rem; }
.sw-flash--error { border-color: var(--danger); background: var(--danger-soft); }
.sw-flash--quiet { border-color: var(--line); background: var(--surface-2); }
.sw-badge { display: inline-block; min-width: 1.4em; padding: 0 .4em; border-radius: 999px; background: var(--accent); color: var(--on-accent); font-size: .72rem; font-weight: 700; text-align: center; margin-left: .35rem; }
.sw-pill { display: inline-block; padding: .05rem .45rem; border-radius: 4px; font-size: .7rem; font-weight: 700; letter-spacing: .03em; background: var(--surface-2); color: var(--text-muted); border: 1px solid var(--line); vertical-align: middle; }
.sw-pill--pass { background: var(--ok-soft); color: var(--ok); border-color: transparent; }
.sw-pill--warn { background: var(--warn-soft); color: var(--warn); border-color: transparent; }
.sw-pill--fail { background: var(--danger-soft); color: var(--danger); border-color: transparent; }
.sw-tag { display: inline-block; padding: 0 .35rem; border-radius: 3px; font-size: .7rem; font-weight: 700; background: var(--surface-2); border: 1px solid var(--line); color: var(--text-muted); }
.sw-tag--muss { color: var(--danger); }
.sw-tag--darf_nicht { color: var(--warn); }
.sw-job { font-size: .75rem; font-weight: 600; padding: .05rem .4rem; border-radius: 4px; background: var(--surface-2); }
.sw-job--completed { color: var(--ok); }
.sw-job--failed, .sw-job--cancelled { color: var(--danger); }
.sw-job--running, .sw-job--validating, .sw-job--updating-canon, .sw-job--queued { color: var(--accent); }

/* --- Tabellen, Listen --------------------------------------------------- */
.sw-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); margin-bottom: 1rem; }
.sw-panel .sw-table-wrap { border: 0; margin: 0 -1.15rem; border-radius: 0; }
.sw-table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.sw-table th { text-align: left; font-size: .75rem; font-weight: 600; color: var(--text-muted); padding: .55rem .9rem; border-bottom: 1px solid var(--line); background: var(--surface-2); white-space: nowrap; }
.sw-table td { padding: .55rem .9rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.sw-table tbody tr:last-child td { border-bottom: 0; }
.sw-table tbody tr:hover td { background: var(--surface-2); }
.sw-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.sw-table tr.is-muted td { color: var(--text-muted); }
.sw-table--form td { vertical-align: middle; }
.sw-table--form input, .sw-table--form select { min-width: 140px; }
.sw-list { margin: 0; padding-left: 1.1rem; display: grid; gap: .3rem; }
.sw-tabs { display: flex; gap: .25rem; border-bottom: 1px solid var(--line); margin-bottom: 1rem; flex-wrap: wrap; }
.sw-tabs a, .sw-tabs button { padding: .45rem .8rem; border: 0; background: none; color: var(--text-muted); border-bottom: 2px solid transparent; margin-bottom: -1px; cursor: pointer; }
.sw-tabs .is-active { color: var(--text); border-bottom-color: var(--accent); font-weight: 600; }
.sw-chips { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; padding: 0; margin: .75rem 0 0; }
.sw-chips li { display: flex; align-items: center; gap: .3rem; border: 1px solid var(--line); border-radius: 999px; padding: .1rem .2rem .1rem .7rem; font-size: .85rem; }
.sw-chip-remove { border: 0; background: none; color: var(--text-muted); cursor: pointer; width: 22px; height: 22px; border-radius: 50%; }
.sw-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.sw-card { border: 1px solid var(--line); border-radius: var(--radius); padding: .75rem; }
.sw-code { background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--radius); padding: .75rem; overflow-x: auto; margin: 0; }
.sw-code--wrap { white-space: pre-wrap; word-break: break-word; }

/* --- Story-Übersicht ---------------------------------------------------- */
.sw-chapter { padding: .6rem 0; border-top: 1px solid var(--line); }
.sw-chapter:first-of-type { border-top: 0; }
.sw-chapter__head { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; align-items: baseline; }
.sw-chapter__head h2 { margin: 0; }
.sw-scenes { margin: .35rem 0 0; padding-left: 1.4rem; font-size: .9rem; display: grid; gap: .15rem; }
.sw-scene-list { list-style: decimal; margin: 0 0 1rem; padding-left: 1.4rem; display: grid; gap: .5rem; }
.sw-scene-list li { padding: .35rem 0; border-bottom: 1px solid var(--line); }
.sw-scene-list li > div:first-child { display: inline-block; }
.sw-row-actions { float: right; display: flex; gap: .25rem; }
.sw-widget ul { padding-left: 1.1rem; }

/* --- Timeline ----------------------------------------------------------- */
.sw-timeline { list-style: none; margin: 0; padding: 0; }
.sw-timeline__day { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); margin: 1rem 0 .35rem; }
.sw-timeline__day:first-child { margin-top: 0; }
.sw-timeline__event { display: grid; grid-template-columns: 64px 1fr; gap: .75rem; padding: .45rem 0 .45rem .75rem; border-left: 2px solid var(--line); }
.sw-timeline__event.has-problem { border-left-color: var(--warn); }
.sw-timeline__time { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--accent-strong); }

/* --- Zustand und Canon -------------------------------------------------- */
.sw-state-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: .75rem; }
.sw-state-card { border: 1px solid var(--line); border-radius: var(--radius); padding: .65rem; display: grid; gap: .5rem; }
.sw-change { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin: .35rem 0 .6rem; font-size: .95rem; }
.sw-change__old { text-decoration: line-through; color: var(--text-muted); }
.sw-change__new { font-weight: 600; }
blockquote { margin: .35rem 0; padding: .25rem .75rem; border-left: 3px solid var(--line-strong); color: var(--text-muted); font-family: var(--font-text); }

/* --- Prüfberichte ------------------------------------------------------- */
.sw-report__head { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; font-size: .85rem; margin: .5rem 0; }
.sw-check { border-top: 1px solid var(--line); padding: .35rem 0; }
.sw-check summary { display: flex; align-items: center; gap: .5rem; cursor: pointer; list-style: none; font-size: .9rem; }
.sw-check summary::-webkit-details-marker { display: none; }
.sw-check__label { flex: 1; }
.sw-check__score { font-variant-numeric: tabular-nums; color: var(--text-muted); font-size: .8rem; }
.sw-issues { list-style: none; margin: .4rem 0 .2rem; padding: 0; display: grid; gap: .45rem; }
.sw-issue { border-left: 3px solid var(--line-strong); padding: .1rem 0 .1rem .6rem; font-size: .85rem; }
.sw-issue--medium { border-left-color: var(--warn); }
.sw-issue--high, .sw-issue.is-blocking { border-left-color: var(--danger); }
.sw-issue__text { margin: 0; }
.sw-issue__hint { margin: .2rem 0 0; color: var(--text-muted); }
.sw-hints, .sw-notes { margin: .3rem 0; padding-left: 1.1rem; font-size: .8rem; color: var(--text-muted); }

/* --- Vergleich ---------------------------------------------------------- */
.sw-diff { font-family: var(--font-text); line-height: 1.7; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: .75rem; max-height: 360px; overflow-y: auto; }
.diff--alt { background: var(--danger-soft); color: var(--danger); text-decoration: line-through; }
.diff--neu { background: var(--ok-soft); color: var(--ok); }

/* --- Editor ------------------------------------------------------------- */
.sw-editor__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; flex-wrap: wrap; margin-bottom: .75rem; }
.sw-editor__head h1 { margin: 0; }
.sw-editor__meta { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; font-size: .85rem; }
.sw-wordcount { font-variant-numeric: tabular-nums; font-weight: 600; }
.sw-meter { width: 90px; height: 5px; background: var(--surface-2); border-radius: 3px; overflow: hidden; display: inline-block; }
.sw-meter span { display: block; height: 100%; background: var(--accent); }
.sw-editor__grid { display: grid; grid-template-columns: 260px minmax(0, 1fr) 340px; gap: 1rem; align-items: start; }
.sw-pane { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: .9rem 1rem; min-width: 0; }
.sw-pane > section + section { border-top: 1px solid var(--line); margin-top: .9rem; padding-top: .9rem; }
.sw-pane h2 { font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); }
.sw-pane--knowledge, .sw-pane--ai { position: sticky; top: 64px; max-height: calc(100vh - 76px); overflow-y: auto; }
.sw-pane--editor { padding: .5rem 1rem 1rem; }
.sw-md__bar { display: flex; justify-content: space-between; align-items: center; gap: .5rem; margin: .25rem 0 .5rem; }
.sw-toolbar { display: flex; gap: 1rem; font-size: .85rem; }
.sw-manuscript, textarea.sw-manuscript { font-family: var(--font-text); font-size: 1.08rem; line-height: 1.75; background: var(--paper); padding: 1.5rem clamp(1rem, 4vw, 3rem); min-height: 62vh; border-color: var(--line); max-width: 100%; }
.sw-manuscript-preview { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem clamp(1rem, 4vw, 3rem); }
.sw-workflow { list-style: none; padding: 0; margin: 0 0 .5rem; display: grid; gap: .4rem; }
.sw-actions-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem; }
.sw-actions-grid .sw-button { white-space: normal; }
.sw-job-status { border: 1px solid var(--line); border-radius: var(--radius); padding: .6rem; background: var(--surface-2); font-size: .85rem; margin-top: .5rem; }
.sw-progress { height: 4px; background: var(--line); border-radius: 2px; overflow: hidden; margin: .4rem 0; }
.sw-progress span { display: block; height: 100%; width: 0; background: var(--accent); }
.sw-suggestion { margin-top: .75rem; }
.sw-model-list { max-height: 180px; overflow-y: auto; padding-left: 1.1rem; }

/* --- Lesetext (Markdown) --------------------------------------------------- */
.sw-prose { font-family: var(--font-text); font-size: 1.02rem; line-height: 1.7; max-width: 72ch; }
.sw-prose h1, .sw-prose h2, .sw-prose h3 { font-family: var(--font-ui); margin-top: 1.2rem; }
.sw-prose table { border-collapse: collapse; }
.sw-prose td, .sw-prose th { border: 1px solid var(--line); padding: .3rem .5rem; }
.sw-prose pre { background: var(--surface-2); padding: .6rem; overflow-x: auto; }

/* --- Rahmenmodule: admin, tables, forms, dashboard ---------------------- */
.page-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 1.25rem; }
.page-heading p { color: var(--text-muted); }
.admin-dashboard { display: block; }
.admin-dashboard-grid, .dashboard-widgets, .metric-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.admin-dashboard-grid > *, .dashboard-widget, .metric-card, .detail-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem; }
.metric-card { display: flex; gap: .75rem; }
.metric-card strong { display: block; font-size: 1.3rem; }
.admin-new, .admin-actions { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1rem; }
.admin-actions-table { display: flex; gap: .4rem; }
.admin-delete { margin-top: 1rem; }
.admin-delete-confirm { color: var(--danger); }
.admin-delete-unconfirmed { color: var(--text-muted); }
.empty-state { border: 1px dashed var(--line-strong); border-radius: var(--radius); padding: 1.5rem; text-align: center; color: var(--text-muted); }
.table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.table th { text-align: left; font-size: .75rem; color: var(--text-muted); background: var(--surface-2); padding: .5rem .8rem; border-bottom: 1px solid var(--line); }
.table td { padding: .5rem .8rem; border-bottom: 1px solid var(--line); }
.table-filters { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: .75rem; align-items: flex-end; }
.table-pagination { display: flex; gap: .5rem; align-items: center; margin-top: .75rem; }
.table-pagination-status { color: var(--text-muted); font-size: .85rem; }
.table-edit { white-space: nowrap; }
.table-empty { color: var(--text-muted); text-align: center; padding: 1.5rem; }
.form { display: grid; gap: .8rem; max-width: 720px; }
.form-field { display: flex; flex-direction: column; gap: .3rem; }
.form-field label { font-size: .8rem; font-weight: 600; color: var(--text-muted); }
.form-field-invalid input, .form-field-invalid select, .form-field-invalid textarea { border-color: var(--danger); }
.form-help { font-size: .8rem; color: var(--text-muted); }
.form-error, .error { color: var(--danger); }
.form-action { display: flex; gap: .5rem; }
.rich-text { border: 1px solid var(--line-strong); border-radius: var(--radius); }
.rich-text-toolbar { display: flex; gap: .25rem; padding: .3rem; border-bottom: 1px solid var(--line); background: var(--surface-2); }
.rich-text-editor { min-height: 160px; padding: .6rem; }
.rich-text-fallback { width: 100%; }
.dashboard-page { max-width: 1100px; }
.dashboard-section { margin-bottom: 1.25rem; }
.konto-seite { max-width: 720px; display: grid; gap: 1rem; }
.logout-form { margin-top: 1.5rem; }
.hinweis { border: 1px solid var(--line); background: var(--surface-2); border-radius: var(--radius); padding: .6rem .8rem; }

/* Einfache Formulare anderer Module (Anmeldung, Konto) */
.sw-body--plain main form:not([class]) { display: grid; gap: .6rem; max-width: 380px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.25rem; }
.sw-body--plain main form:not([class]) p { margin: 0; }
main button:not([class]), main input[type="submit"] { padding: .45rem .9rem; border-radius: var(--radius); border: 1px solid var(--accent); background: var(--accent); color: var(--on-accent); font-weight: 600; cursor: pointer; }

/* --- Schmale Geräte ------------------------------------------------------ */
@media (max-width: 1280px) {
  .sw-editor__grid { grid-template-columns: minmax(0, 1fr) 320px; }
  .sw-pane--knowledge { grid-column: 1 / -1; position: static; max-height: none; order: 3; }
}

@media (max-width: 980px) {
  .sw-shell { grid-template-columns: minmax(0, 1fr); }
  .sw-sidebar { position: static; height: auto; border-right: 0; border-bottom: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: .25rem 1rem; padding: .6rem .9rem; }
  .sw-sidebar__project { border: 0; margin: 0; padding: .25rem 0; width: 100%; }
  .sw-navgroup { margin: 0; }
  .sw-navgroup ul { display: flex; flex-wrap: wrap; gap: .1rem; }
  .sw-sidebar__back { margin: .25rem 0; }
  .sw-main { padding: 1rem; }
  .sw-grid--2, .sw-grid--main-side { grid-template-columns: minmax(0, 1fr); }
  .sw-editor__grid { grid-template-columns: minmax(0, 1fr); }
  .sw-pane--ai { position: static; max-height: none; }
}

@media (max-width: 720px) {
  .sw-topbar { gap: .75rem; }
  .sw-topbar__toggle { display: inline-flex; background: none; border: 1px solid var(--line); border-radius: var(--radius); padding: .2rem .5rem; color: var(--text); }
  .sw-topnav { display: none; position: absolute; top: 52px; left: 0; right: 0; background: var(--surface); border-bottom: 1px solid var(--line); flex-direction: column; padding: .5rem; }
  .sw-topnav.is-open { display: flex; }
  .sw-user__name { display: none; }
  .sw-pagehead { flex-direction: column; }
  .sw-navgroup__label { display: none; }
  .sw-actions-grid { grid-template-columns: minmax(0, 1fr); }
}

@media print {
  .sw-topbar, .sw-sidebar, .sw-pane--knowledge, .sw-pane--ai, .sw-tabs { display: none !important; }
  .sw-shell, .sw-editor__grid { display: block; }
  body { background: #fff; color: #000; }
}
