/* BauWalker.OS — Design-System (Papier-Palette + Fraunces).
 *
 * Einzige Quelle für die Design-Tokens. Vorher standen identische
 * :root-Blöcke separat in onboarding.css, bw-panel.css und inline in
 * dashboard/home/dokumente/besprechungen/platform.blade.php — sechsfach
 * kopiert, mit stillen Abweichungen (--danger vs. --error, Mono-Reihenfolge,
 * Hell/Dunkel-Standard). Diese Datei ist jetzt die einzige, die die Token
 * DEFINIERT; die anderen binden sie per <link> ein und ergänzen nur noch
 * ihre eigenen, seitenspezifischen Klassen. Siehe docs/design-system.md für
 * die Regeln, wann welche Klasse/welches Token gilt.
 *
 * Standard-Thema ist DUNKEL (Sergey, 09.09.26) — unabhängig von der Seite:
 * :root trägt die dunklen Werte, @media (prefers-color-scheme: light)
 * schaltet auf hell um, wenn das System das meldet, und data-theme="light"/
 * "dark" (persistiertes Nutzerprofil) gewinnt in beide Richtungen.
 *
 * CACHEBUSTER: onboarding.css/bw-panel.css binden diese Datei per
 * @import url("design-system.css?v=N") ein — reines CSS hat kein
 * filemtime() wie die <link>-Einbindungen in den Blade-Views. Bei jeder
 * inhaltlichen Änderung hier das N in BEIDEN @import-Zeilen hochzählen,
 * sonst bleibt die alte Fassung im Browser-Cache der Onboarding-/
 * Panel-Seiten hängen.
 */

@font-face{
  font-family:"Cascadia Mono";
  font-style:normal;
  font-weight:200 700;
  font-display:swap;
  src:url("../fonts/CascadiaMono-VariableFont_wght.ttf") format("truetype-variations"),
      url("../fonts/CascadiaMono-VariableFont_wght.ttf") format("truetype");
}

:root{
  color-scheme:dark;
  --paper:#191b17; --panel:#212420; --panel2:#1c1f1b; --ink:#e9e7dd; --muted:#a7a293; --faint:#7c7768;
  --line:#33372e; --line2:#2a2e26;
  --accent:#e2733f; --accent-soft:#3a271c; --accent-ink:#f0a97f;
  --slate:#8fb6cc; --slate-soft:#233139;
  --ok:#77b487; --ok-soft:#23342a;
  --warn:#d6a552; --warn-soft:#352b18;
  --error:#e0785c; --error-soft:#3a221c;
  --grid:#2a2e26;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.28);

  --serif:"Fraunces",ui-serif,"Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;

  --radius-sm:7px; --radius-md:9px; --radius-lg:12px; --radius-xl:14px; --radius-full:999px;
}
@media (prefers-color-scheme: light){:root{
  color-scheme:light;
  --paper:#f4f1ea; --panel:#fbfaf6; --panel2:#f7f4ec; --ink:#1c1e1b; --muted:#6f6a5f; --faint:#9a9384;
  --line:#e0dacd; --line2:#ece7db; --accent:#bd4b1a; --accent-soft:#f3e2d6; --accent-ink:#8f3811;
  --slate:#33505f; --slate-soft:#dfe7ec; --ok:#3f7a4b; --ok-soft:#e4efe5; --warn:#a6741a; --warn-soft:#f6ecd6;
  --error:#a8341a; --error-soft:#f4dfd8;
  --grid:#ece7db; --shadow:0 1px 2px rgba(40,34,20,.05),0 10px 30px rgba(40,34,20,.06);
}}
:root[data-theme="light"]{color-scheme:light;--paper:#f4f1ea;--panel:#fbfaf6;--panel2:#f7f4ec;--ink:#1c1e1b;--muted:#6f6a5f;--faint:#9a9384;--line:#e0dacd;--line2:#ece7db;--accent:#bd4b1a;--accent-soft:#f3e2d6;--accent-ink:#8f3811;--slate:#33505f;--slate-soft:#dfe7ec;--ok:#3f7a4b;--ok-soft:#e4efe5;--warn:#a6741a;--warn-soft:#f6ecd6;--error:#a8341a;--error-soft:#f4dfd8;--grid:#ece7db;--shadow:0 1px 2px rgba(40,34,20,.05),0 10px 30px rgba(40,34,20,.06);}
:root[data-theme="dark"]{color-scheme:dark;--paper:#191b17;--panel:#212420;--panel2:#1c1f1b;--ink:#e9e7dd;--muted:#a7a293;--faint:#7c7768;--line:#33372e;--line2:#2a2e26;--accent:#e2733f;--accent-soft:#3a271c;--accent-ink:#f0a97f;--slate:#8fb6cc;--slate-soft:#233139;--ok:#77b487;--ok-soft:#23342a;--warn:#d6a552;--warn-soft:#352b18;--error:#e0785c;--error-soft:#3a221c;--grid:#2a2e26;--shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.28);}

*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--sans);color:var(--ink);background:var(--paper);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Mobile-Tabbar (chat/dokumente/besprechungen/einstellungen) — gemeinsam für
   die bw-shell-Seiten (home/dokumente/besprechungen) UND /einstellungen
   (bw-panel.css), deshalb hier statt in einer der drei Muster-Dateien aus
   docs/design-system.md §3 — siehe Plan-Begründung. Sichtbarkeitswechsel mit
   der Sidebar (bw-shell.css) an derselben Grenze, 640px, s. dort. */
.bw-tabbar{position:fixed;bottom:0;left:0;right:0;z-index:30;display:flex;justify-content:space-around;background:var(--panel);border-top:1px solid var(--line);padding-bottom:max(10px, env(safe-area-inset-bottom))}
/* height (nicht nur min-height) + no-wrap/ellipsis auf dem Label: die
   tatsächliche Panel-Höhe MUSS den 56px entsprechen, mit denen die
   Bodenabstände der Seiten (siehe dortige padding-bottom-Regeln) rechnen —
   ein zweizeiliges Label in einer langen Übersetzung (z. B. "Besprechungen")
   würde sie sonst sprengen und die Rechnung an jeder Stelle unterlaufen, die
   von 56px ausgeht. */
.bw-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:1;height:56px;text-decoration:none;color:var(--muted);font-size:11px}
.bw-tab svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;flex-shrink:0}
.bw-tab span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bw-tab[aria-current="page"]{color:var(--accent)}
@media not all and (max-width:640px){
  .bw-tabbar{display:none}
}
