:root {
  /* Wesergebirge-Palette: Waldgrün trägt, Sonnenblume markiert Wahl und Weg, Terrakotta nur für Warnung und Herz. */
  --forest: #0f3d2e;
  --forest-2: #17503d;
  --meadow: #2e7d4f;
  --meadow-ink: #23663f;
  --meadow-soft: #e3eedf;
  --sun: #f2b33d;
  --sun-soft: #fdf0cf;
  --terracotta: #a9432a;
  --warn-bg: #f8e2d9;
  --paper: #f4f1e6;
  --paper-2: #fffdf7;
  --card: #fffefa;
  --ink: #17261f;
  --muted: #4f5d55;
  --line: #dcdfd1;
  /* Kompatible Altnamen für Verwaltungsansichten */
  --pine: var(--meadow-ink);
  --pine-soft: var(--meadow-soft);
  --radius: 14px;
  --radius-lg: 22px;
  --shadow-1: 0 1px 0 rgb(15 61 46 / .06), 0 2px 6px -2px rgb(15 61 46 / .14);
  --shadow-2: 0 1px 0 rgb(15 61 46 / .05), 0 10px 24px -12px rgb(15 61 46 / .32);
  --font-display: ui-rounded, "SF Pro Rounded", "Nunito", "Quicksand", "Varela Round", system-ui, sans-serif;
  --font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  color-scheme: light;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 16px/1.5 var(--font-body); }
h1, h2, h3 { font-family: var(--font-display); color: var(--ink); }
h1 { font-size: 26px; line-height: 1.15; margin: 0; font-weight: 800; letter-spacing: -.4px; overflow-wrap: anywhere; }
h2 { font-size: 19px; line-height: 1.25; margin: 0 0 10px; font-weight: 800; letter-spacing: -.2px; }
p { margin: 0 0 8px; }
a { color: var(--meadow-ink); text-underline-offset: 2px; }
small, .small { font-size: 13.5px; }
.muted { color: var(--muted); }
.sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
button, input, select, textarea { font: inherit; color: inherit; }
input, select, textarea { width: 100%; min-height: 44px; padding: 10px 12px; font-size: 16px; background: #fff; border: 1.5px solid var(--line); border-radius: 12px; }
input:hover, select:hover, textarea:hover { border-color: #c3c9b6; }
input[type="checkbox"] { width: 22px; min-height: 22px; height: 22px; flex: none; accent-color: var(--meadow); }
input[type="radio"] { accent-color: var(--meadow); }
textarea { resize: vertical; }
:focus-visible { outline: 3px solid var(--forest); outline-offset: 2px; box-shadow: 0 0 0 6px var(--sun); }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; min-width: 44px; padding: 8px 16px; border: 1.5px solid #cfd5c3; border-radius: 14px; background: var(--card); color: var(--ink); text-decoration: none; font-weight: 650; cursor: pointer; list-style: none; box-shadow: var(--shadow-1); }
.btn:hover { border-color: var(--meadow); }
.btn:active { transform: translateY(1px); box-shadow: none; }
.btn.primary { background: var(--meadow); border-color: var(--meadow); color: #fff; box-shadow: inset 0 -2px 0 rgb(0 0 0 / .16), var(--shadow-1); }
.btn.primary:hover { background: var(--meadow-ink); }
.btn.danger { background: var(--terracotta); border-color: var(--terracotta); color: #fff; }
.btn.small { padding: 6px 12px; font-size: 14.5px; }
.btn.wide { width: 100%; }
.btn[disabled], .btn[aria-busy="true"] { opacity: .65; cursor: progress; }
.stack { display: flex; flex-direction: column; gap: 12px; }
.stack label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; font-weight: 600; }
.stack label.check { flex-direction: row; align-items: flex-start; gap: 10px; font-weight: 400; min-height: 44px; }
.form-error { background: var(--warn-bg); color: #6d2915; padding: 10px 12px; border-radius: 12px; }

body.public { min-height: 100vh; display: flex; flex-direction: column; background: radial-gradient(120% 60% at 50% 0%, var(--meadow-soft), var(--paper) 60%); }
.public-main { flex: 1; width: 100%; max-width: 420px; margin: 0 auto; padding: 48px 16px 16px; }
.public-main h1 { margin-bottom: 20px; }
.public-footer { padding: 16px; text-align: center; font-size: 14px; }
.public-footer a { display: inline-flex; align-items: center; min-height: 44px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
