/* base.css — Fonts, Farb-/Typo-Tokens, Reset, generische Elemente (Buttons,
   Layout-Grid). Muss als ERSTES Stylesheet geladen werden: enthält den
   generischen .hide-Fallback, den feature-spezifische Dateien (board.css:
   .tc-likebar.hide, kb.css: .kb-children.hide, promoter.css: #cForm.hide, …)
   per kombiniertem Selektor gezielt überschreiben — Ladereihenfolge ist dafür
   nicht relevant, aber .hide muss ueberhaupt einmal zentral definiert sein. */

/* Vendored Fonts (self-hosted, kein CDN zur Laufzeit; siehe static/fonts/LICENSE.md) */
@font-face{font-family:'Bebas Neue';font-style:normal;font-weight:400;font-display:swap;
  src:url('/static/fonts/bebas-neue-v16-latin-400.woff2') format('woff2');}
@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:300 700;font-display:swap;
  src:url('/static/fonts/space-grotesk-v22-latin-variable.woff2') format('woff2');}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;
  src:url('/static/fonts/jetbrains-mono-v24-latin-variable.woff2') format('woff2');}

:root{
  /* Berlin-Club-Palette: tiefes Schwarz-Lila, Acid-Lime + Hot-Magenta als Zweifarb-Akzent.
     Dark ist der einzige Modus (kein prefers-color-scheme-Zweig mehr). */
  --bg:#0a0912; --panel:#151320; --line:#2c2839; --line2:#211e2c;
  --text:#f4f2f8; --muted:#a49dbb; --faint:#6d6785;
  --accent:#c6f135; --accent-weak:rgba(198,241,53,.14);
  --accent2:#ff2e88; --accent2-weak:rgba(255,46,136,.16);
  --anfrage:#8d87a8; --option:#ffb238; --vertrag:#5fb2ff; --bestaetigt:#33e29b;
  --floor-a:#ff5f7e; --floor-b:#ffc23c; --floor-c:#b98bff; --floor-d:#39d6e8; --floor-e:#9089a8;
  --floor-free:#241f30;
  --warn:#ffb238; --warn-bg:rgba(255,178,56,.14);
  --crit:#ff5f7e; --crit-bg:rgba(255,95,126,.14);
  --shadow:0 1px 0 rgba(255,255,255,.02),0 12px 32px rgba(0,0,0,.5);
  --mono:'JetBrains Mono',ui-monospace,"Cascadia Code",Consolas,monospace;
  --sans:'Space Grotesk',system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --display:'Bebas Neue',var(--sans);
  --sidebar-w:238px;
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{font-family:var(--sans);background:var(--bg);color:var(--text);
     margin:0;padding:0 clamp(12px,3vw,28px) 48px;line-height:1.5;
     padding-left:calc(var(--sidebar-w) + clamp(12px,3vw,28px));
     -webkit-font-smoothing:antialiased;}
h1,h2,h3{font-family:var(--sans);}

button{font-family:var(--sans);font-size:13px;cursor:pointer;border-radius:9px;
       border:1px solid var(--line);background:var(--panel);color:var(--text);
       padding:7px 12px;box-shadow:var(--shadow);}
button:hover{border-color:var(--accent);}
button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
button.primary{background:var(--accent);border-color:var(--accent);color:#0a0912;font-weight:700;}
button.primary:hover{filter:brightness(1.08);}
button.nav{padding:7px 11px;font-size:15px;line-height:1;}
@media (max-width:520px){
  button{padding:8px 11px;font-size:12.5px;}
}

.layout{display:grid;grid-template-columns:1fr 340px;gap:20px;max-width:1240px;margin:14px auto 0;}
@media (max-width:960px){.layout{grid-template-columns:1fr;}}
.main{max-width:1240px;}

section.hide{display:none;}
.hide{display:none;}
