/* --------------------------------------------------------------------------
   Schrift: Inter (SIL Open Font License 1.1) – lokal gehostet.
   Bewusst NICHT über Google Fonts eingebunden: das würde bei jedem Seitenaufruf
   die IP-Adresse der Besucher an Google übertragen (DSGVO, DSB-Entscheidung
   2021-0.586.257 vom 14.12.2021). Lizenztext: assets/fonts/Inter-LICENSE-OFL.txt
   -------------------------------------------------------------------------- */
@font-face{
  font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(../fonts/inter-latin-wght-normal.woff2) format('woff2-variations');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(../fonts/inter-latin-ext-wght-normal.woff2) format('woff2-variations');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ==========================================================================
   WESPENALARM · Basis-Stylesheet (Tokens + gemeinsame Komponenten)
   wird von index.html und admin.html geladen
   ========================================================================== */

:root{
  /* Farben – übernommen aus dem Prototyp */
  --blue:#1B5FD9;
  --blue-dark:#0B4BB8;
  --blue-light:#3D9BF5;
  --sky:#38B6E8;
  --cyan-ink:#0B6BA8;
  --grad:linear-gradient(135deg,#1B5FD9,#3D9BF5);

  --ink:#232A34;
  --ink-2:#4A525E;
  --muted:#6E7681;
  --muted-2:#98A0AC;

  --paper:#FFFFFF;
  --paper-2:#FAFBFC;
  --sand:#F1EDE8;
  --tint:#E8F2FE;
  --line:#E6ECF4;
  --line-2:#F0F1F4;

  --green:#1E7A43;
  --green-bg:#E7F6EC;
  --red:#E5484D;
  --red-bg:#FDECEC;
  --amber:#B4690E;
  --amber-bg:#FDF3E3;

  /* Maße */
  --r-lg:26px;
  --r-md:18px;
  --r-sm:12px;
  --shadow:0 5px 16px rgba(35,42,52,.06);
  --shadow-md:0 10px 28px rgba(27,95,217,.14);
  --shadow-lg:0 18px 44px rgba(35,42,52,.14);
  --wrap:1140px;
  --header-h:64px;
}

*,*::before,*::after{box-sizing:border-box}

[hidden]{display:none !important}

html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
}

body{
  margin:0;
  background:var(--paper-2);
  color:var(--ink);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

img{max-width:100%;display:block}
a{color:var(--blue);text-decoration:none}
a:hover{color:var(--blue-dark);text-decoration:underline}
input,textarea,select,button{font:inherit;color:inherit}
input::placeholder,textarea::placeholder{color:#767E8A}

:focus-visible{outline:3px solid var(--blue);outline-offset:2px;border-radius:6px}

h1,h2,h3,h4{margin:0;letter-spacing:-.02em;font-weight:800;line-height:1.15;text-wrap:balance}
p{margin:0;text-wrap:pretty}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:20px}
@media (min-width:768px){.wrap{padding-inline:32px}}

.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;
}
.skip-link{
  position:absolute;left:12px;top:-60px;z-index:200;
  background:var(--blue);color:#fff;padding:10px 16px;border-radius:0 0 12px 12px;
  transition:top .2s;
}
.skip-link:focus{top:0;color:#fff;text-decoration:none}

/* ---------- Buttons ---------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:12px 22px;border:0;border-radius:999px;
  font-size:15.5px;font-weight:700;letter-spacing:-.01em;
  cursor:pointer;text-decoration:none;white-space:nowrap;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease;
}
.btn:hover{text-decoration:none}
.btn:active{transform:scale(.97)}

.btn-primary{background:var(--grad);color:#fff;box-shadow:0 8px 20px rgba(27,95,217,.32)}
.btn-primary:hover{color:#fff;box-shadow:0 12px 26px rgba(27,95,217,.42);transform:translateY(-2px)}

.btn-ghost{background:var(--paper);color:var(--ink);border:1.5px solid var(--line)}
.btn-ghost:hover{border-color:var(--blue);color:var(--blue)}

.btn-quiet{background:var(--tint);color:var(--cyan-ink)}
.btn-quiet:hover{background:#DBEAFD;color:var(--cyan-ink)}

.btn-danger{background:var(--red-bg);color:var(--red)}
.btn-danger:hover{background:#FBD8D8;color:var(--red)}

.btn-sm{min-height:44px;padding:9px 16px;font-size:14px}
.btn-block{width:100%}

/* ---------- Formularelemente ------------------------------------------- */
.field{display:block;margin-bottom:14px}
.field > .label,
.label{
  display:block;margin-bottom:6px;
  font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);
}
.input,.textarea,.select{
  width:100%;min-height:48px;padding:12px 14px;
  background:var(--paper);border:1.5px solid var(--line);border-radius:var(--r-sm);
  font-size:16px;transition:border-color .18s,box-shadow .18s;
  /* Textfarbe ausdrücklich setzen: sonst erbt das Feld die Farbe des Umfelds –
     in einem dunklen Kasten schreibt man dann weiß auf weißem Grund. */
  color:var(--ink);-webkit-text-fill-color:var(--ink);
}
.input::placeholder,.textarea::placeholder{color:var(--muted);opacity:1}
.input:focus,.textarea:focus,.select:focus{
  border-color:var(--blue);box-shadow:0 0 0 4px rgba(27,95,217,.12);outline:none;
}
.textarea{min-height:96px;resize:vertical;line-height:1.5}
.select{appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%236E7681' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:38px;
}
.input.is-error,.textarea.is-error,.select.is-error{border-color:var(--red);background:#FFF8F8}
.hint{margin-top:5px;font-size:12.5px;color:var(--muted)}
.grid-2{display:grid;gap:14px}
@media (min-width:600px){.grid-2{grid-template-columns:1fr 1fr}}

/* Checkbox / Radio */
.check{display:flex;gap:11px;align-items:flex-start;cursor:pointer;font-size:14px;line-height:1.45;color:var(--ink-2)}
.check input{
  flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--blue);cursor:pointer;
}

/* ---------- Chips & Badges --------------------------------------------- */
.chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 12px;border-radius:999px;
  font-size:12.5px;font-weight:700;white-space:nowrap;
  background:var(--tint);color:var(--cyan-ink);
}
.chip-green{background:var(--green-bg);color:var(--green)}
.chip-red{background:var(--red-bg);color:var(--red)}
.chip-amber{background:var(--amber-bg);color:var(--amber)}
.chip-grey{background:#EFF2F7;color:var(--muted)}

/* ---------- Karten ------------------------------------------------------ */
.card{
  background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-lg);
  box-shadow:var(--shadow);
}
.card-pad{padding:20px}
@media (min-width:768px){.card-pad{padding:26px}}

/* ---------- Wespen-Logo ------------------------------------------------- */
.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none}
.brand:hover{text-decoration:none}
.brand-mark{
  width:38px;height:38px;border-radius:50%;background:var(--grad);
  display:flex;align-items:center;justify-content:center;flex:none;
  box-shadow:0 4px 10px rgba(27,95,217,.35);
}
.brand-name{display:block;font-size:19px;font-weight:900;letter-spacing:.02em;color:var(--ink);line-height:1.05}
.brand-sub{display:block;font-size:10px;font-weight:600;letter-spacing:.02em;color:var(--muted);margin-top:2px;text-transform:none}

/* ---------- Modal / Overlay -------------------------------------------- */
.modal{
  position:fixed;inset:0;z-index:120;display:none;
  padding:0;background:rgba(20,26,35,.55);backdrop-filter:blur(4px);
}
.modal[open],.modal.is-open{display:flex;align-items:flex-end;justify-content:center}
@media (min-width:768px){.modal.is-open{align-items:center}}
.modal-box{
  width:100%;max-width:720px;max-height:88vh;display:flex;flex-direction:column;
  background:var(--paper);border-radius:24px 24px 0 0;
  animation:waUp .28s cubic-bezier(.2,.8,.3,1);
}
@media (min-width:768px){.modal-box{border-radius:24px;max-height:82vh}}
.modal-head{
  display:flex;align-items:center;gap:12px;padding:18px 20px;
  border-bottom:1px solid var(--line-2);position:sticky;top:0;background:var(--paper);
  border-radius:24px 24px 0 0;
}
.modal-head h2{font-size:18px;flex:1}
.modal-body{padding:20px;overflow-y:auto;font-size:14px;line-height:1.6;color:var(--ink-2)}
.modal-body h3{font-size:14px;margin:18px 0 4px;color:var(--ink)}
.modal-body h3:first-child{margin-top:0}
.modal-body p{margin:0 0 10px}
.icon-btn{
  width:44px;height:44px;flex:none;border:0;border-radius:50%;background:#F1F4F9;
  color:var(--ink);font-size:17px;line-height:1;cursor:pointer;
}
.icon-btn:hover{background:#E4EAF3}

@keyframes waUp{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes waPop{0%{transform:scale(.5);opacity:0}65%{transform:scale(1.06)}100%{transform:scale(1);opacity:1}}
@keyframes waFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes waWiggle{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(5deg)}}
@keyframes waShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

/* ---------- Hinweisboxen ------------------------------------------------ */
.note{
  display:flex;gap:10px;padding:13px 15px;border-radius:var(--r-md);
  font-size:13.5px;line-height:1.5;
}
.note-info{background:var(--tint);color:var(--cyan-ink)}
.note-warn{background:var(--amber-bg);color:var(--amber)}
.note-error{background:var(--red-bg);color:var(--red)}
.note-ok{background:var(--green-bg);color:var(--green)}
.note strong{font-weight:800}

/* ---------- Knöpfe mit Symbol im Stil der Auswahlkarten ------------------ */
.btn-illu{
  width:32px;height:32px;flex:none;border-radius:50%;
  background:rgba(255,255,255,.94);
  display:flex;align-items:center;justify-content:center;
  margin:-4px 2px -4px -10px;
  box-shadow:0 2px 5px rgba(11,62,143,.22);
}
.btn-illu img{width:24px;height:24px;display:block}
.btn-sm .btn-illu{width:28px;height:28px;margin-left:-8px}
.btn-sm .btn-illu img{width:21px;height:21px}

/* Etwas plastischer, passend zu den weichen 3D-Symbolen */
.btn-primary{
  background:var(--grad);color:#fff;
  box-shadow:0 8px 20px rgba(27,95,217,.32), inset 0 1px 0 rgba(255,255,255,.42);
}
.btn-primary:hover{
  color:#fff;transform:translateY(-2px);
  box-shadow:0 12px 26px rgba(27,95,217,.42), inset 0 1px 0 rgba(255,255,255,.42);
}
.btn-primary:active{
  transform:translateY(0) scale(.985);
  box-shadow:0 4px 12px rgba(27,95,217,.34), inset 0 2px 5px rgba(11,62,143,.28);
}
.btn-ghost .btn-illu{background:#EFF4FD;box-shadow:none}
