/* Belegungsplan: universelle Suche, Heute-Spur und fliegendes Datumsmenü */

/* --- Universelle Suche -------------------------------------------------- */
.plan-search{display:flex;flex-direction:column;gap:6px;margin:-4px 0 14px;padding:14px 18px;border:1px solid var(--line);border-radius:12px;background:#fff}
.plan-search>label{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.plan-search-field{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.plan-search-field input{flex:1;min-width:240px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit;font-size:14px}
.plan-search-field input:focus{outline:2px solid var(--green);outline-offset:1px}
.plan-search-field button{flex:none}
.plan-search-reset{flex:none;color:var(--muted);font-size:12px;font-weight:750;text-decoration:none;white-space:nowrap}
.plan-search-reset:hover{color:var(--ink)}
.plan-search>small{color:var(--muted);font-size:11px}

/* --- Zeitleiste: abgestufte Schritte ----------------------------------- */
.plan-stepper{display:inline-flex;align-items:stretch;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:#fff}
.plan-stepper a{display:inline-flex;align-items:center;padding:9px 13px;border-right:1px solid var(--line);color:var(--ink);font-size:12px;font-weight:750;text-decoration:none;white-space:nowrap}
.plan-stepper a:last-child{border-right:0}
.plan-stepper a:hover{background:#f2f6f3}
.plan-stepper a.is-week{background:#f7faf8}
.plan-stepper a.is-week:hover{background:#eaf2ed}
.plan-stepper a.is-now{background:var(--green);border-color:var(--green);color:#fff}
.plan-stepper a[hidden]{display:none}
/* Ansicht-Umschalter (14 Tage / Monat) im selben Segment-Stil wie die Zeitleiste. */
.plan-span-switch{display:inline-flex;align-items:stretch;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:#fff}
.plan-span-switch a{display:inline-flex;align-items:center;padding:9px 13px;border-right:1px solid var(--line);color:var(--ink);font-size:12px;font-weight:750;text-decoration:none;white-space:nowrap}
.plan-span-switch a:last-child{border-right:0}
.plan-span-switch a:hover{background:#f2f6f3}
.plan-span-switch a.active{background:var(--green);border-color:var(--green);color:#fff}

/* --- Ergebnisleiste ----------------------------------------------------- */
/* Die Leiste darf mit der Trefferzahl nicht mitwachsen: Zählung oben,
   Lage darunter, Aktionen in einer Reihe, Liste erst auf Klick. */
.plan-result{margin:-6px 0 14px;padding:12px 16px;border:1px solid #e6c97a;border-radius:12px;background:#fffaf0}
.plan-result.is-empty{border-color:#e2c3bd;background:#fdf2ef}
.plan-result-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.plan-result-top>strong{font-size:13px}
.plan-count{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border:1px solid #e0d0a6;border-radius:999px;background:#fff;font-size:12px;font-weight:750}
.plan-count b{font-family:Georgia,serif;font-size:14px}
.plan-count.is-units{border-color:#bcd8c6}
.plan-count.is-cats{border-color:#c3cfe6}
.plan-result-where{margin:8px 0 0;color:#7a5310;font-size:12px}
.plan-result-many{margin:7px 0 0;padding:7px 10px;border-radius:8px;background:#fff3d6;color:#7a5310;font-size:11.5px;font-weight:700}
.plan-result-actions{display:flex;align-items:center;gap:8px;margin-top:11px;padding-top:11px;border-top:1px dashed #e6d3a8;flex-wrap:wrap}
.plan-result-actions .button-link{padding:8px 12px;font-size:12px}
.plan-hitstep{display:inline-flex;align-items:stretch;overflow:hidden;border:1px solid #dbc48c;border-radius:9px;background:#fff}
.plan-hitstep a,.plan-hitstep .is-off{display:inline-flex;align-items:center;padding:7px 12px;color:var(--ink);font-size:13px;font-weight:800;text-decoration:none}
.plan-hitstep .is-off{color:#cfd6d1}
.plan-hitstep a:hover{background:#fdf3dd}
.plan-hitstep a[hidden]{display:none}
.plan-hitstep b{display:inline-flex;align-items:center;padding:7px 12px;border-left:1px solid #eadfc2;border-right:1px solid #eadfc2;font-size:12px;font-weight:750;white-space:nowrap}
.plan-result-toggle{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font-size:12px;font-weight:750;text-decoration:none}
.plan-result-toggle:hover{border-color:#a8c2b2}
.plan-result-toggle.is-on{border-color:var(--green);background:var(--green-soft);color:var(--green)}
.plan-toggle-box{display:grid;place-items:center;width:15px;height:15px;border:1px solid #b7c4bc;border-radius:4px;background:#fff;font-size:10px;font-weight:900;line-height:1}
.plan-result-toggle.is-on .plan-toggle-box{border-color:var(--green);color:var(--green)}

/* --- Trefferliste ------------------------------------------------------- */
.plan-hitlist{margin-top:11px;overflow:hidden;border:1px solid #e6d3a8;border-radius:10px;background:#fff}
.plan-hitlist>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 13px;background:#fdf7ea;font-size:12px;font-weight:750;cursor:pointer;list-style:none}
.plan-hitlist>summary::-webkit-details-marker{display:none}
.plan-hitlist>summary::after{content:'▾';color:var(--muted);font-size:12px}
.plan-hitlist[open]>summary{border-bottom:1px solid #f0e3c6}
.plan-hitlist[open]>summary::after{content:'▴'}
.plan-hitlist>summary small{color:var(--muted);font-weight:600}
.plan-hitlist-table{width:100%;border-collapse:collapse;font-size:12px}
.plan-hitlist-table th{padding:7px 13px;border-bottom:1px solid var(--line);background:#fbfcfa;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;text-align:left}
.plan-hitlist-table td{padding:8px 13px;border-top:0;border-bottom:1px solid #f0f2ef;font-size:12px;vertical-align:middle}
.plan-hitlist-table tr:last-child td{border-bottom:0}
.plan-hitlist-table tr.is-current td{background:#fffaf0}
.plan-hitlist-table td span{color:var(--muted);font-size:11px}
.plan-hit-number{width:34px;color:var(--muted);font-weight:800}
.plan-where{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:800;text-decoration:none;white-space:nowrap}
.plan-where-im_bild{background:var(--green);color:#fff}
.plan-where-andere_kategorie{background:#e3eef8;color:#2d5d8a}
.plan-where-ohne_platz{background:#e9ece9;color:#5e6862}
.plan-where-ausserhalb{background:var(--amber-soft);color:var(--amber)}
.plan-where:hover{box-shadow:0 2px 8px rgba(23,37,31,.18)}
.plan-hitlist-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 13px;border-top:1px solid #f0e3c6;background:#fdfbf5;color:var(--muted);font-size:11.5px}
.plan-hitlist-pager b{color:var(--ink)}
.plan-hitlist-steps{display:flex;gap:10px}
.plan-hitlist-steps a{color:var(--green);font-weight:750;text-decoration:none}
.plan-hitlist-units{padding:10px 13px;border-top:1px solid #f0e3c6;background:#fbfdfb;font-size:12px}
.plan-hitlist-units small{color:var(--muted)}
.plan-hitlist-units ul{margin:6px 0 0;padding-left:18px}
.plan-hitlist-units li{margin:2px 0}

/* --- »Nur Treffer zeigen«: der Sonderzustand sagt, dass er einer ist ---- */
.plan-filter-band{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px;padding:10px 15px;border:1px solid #e6c97a;border-radius:11px;background:#fff6e0;color:#7a5310;font-size:12px;font-weight:750;flex-wrap:wrap}
.plan-filter-band a{color:#7a5310}
.plan-filtered-count{margin-left:9px;padding:2px 8px;border:1px solid #b9cfc1;border-radius:999px;background:#fff;color:#2d6146;font-size:10px;font-style:normal;font-weight:800}
.booking-bar.search-current{z-index:7;outline:3px solid #c48c23;outline-offset:2px;box-shadow:0 0 0 6px rgba(243,201,107,.45),0 5px 16px rgba(73,48,13,.32)}

/* Treffer werden hervorgehoben, nicht gefiltert: Der Plan soll als Ganzes
   lesbar bleiben, damit Nachbarbelegungen und Lücken sichtbar bleiben. */
.booking-bar.search-hit{z-index:6;outline:3px solid var(--green);outline-offset:2px;box-shadow:0 0 0 6px rgba(33,107,74,.22),0 5px 14px rgba(16,58,40,.28)}
.booking-bar.search-dimmed{opacity:.32;filter:saturate(.5)}
.occupancy-row.search-hit-row>.sticky-col{background:#e3f1e8!important;box-shadow:inset 5px 0 0 var(--green);color:#14512f}
.occupancy-row.search-hit-row>.sticky-col small{color:#3c6f55}
.category-row.search-hit-category th{background:#dcece2!important;border-color:#a9c9b8!important}
.plan-search-chip{margin-left:10px;padding:2px 8px;border-radius:999px;background:var(--green);color:#fff;font-size:10px;font-style:normal;font-weight:800;letter-spacing:.04em}
.legend-box.search-hit{background:#fff;border:2px solid var(--green)}

/* --- Heute-Spur --------------------------------------------------------- */
/* Feste Spaltenbreiten (155px Platzspalte + Spanne × 43px Tagesspalten) machen
   die Position der Spur berechenbar. table-layout:fixed + explizite col-Breiten
   erzwingen exakt 155/43px je Spalte – unabhängig von der Spanne. (Zuvor nur
   width gesetzt und auf gleichmäßige Auto-Verteilung gehofft; das ging bei 31
   Tagen knapp auf, bei 14 Tagen wurden die Spalten ungleich und Raster, Balken
   und Spuren liefen auseinander – Befund Oliver, 27.09.2026.) --plan-width kommt
   je Ansicht aus der Vorlage; der Rückfallwert ist der Monat. */
.occupancy-shell .occupancy-canvas{position:relative;width:100%;min-width:var(--plan-min-width,1488px)}
.occupancy-shell .occupancy-table{width:100%;min-width:var(--plan-min-width,1488px);table-layout:fixed}
.occupancy-table col.unit-column{width:155px}
/* Tagesspalten ohne feste Breite: table-layout:fixed verteilt die Restbreite
   gleichmäßig, so füllt die Ansicht die verfügbare Breite (14 Tage werden breit
   statt schmal). Die tatsächliche Spaltenbreite misst JS und legt sie als
   --day-col-w ab; Heute-Spur, Hover-Spur und Fadenkreuz rechnen damit. */
.occupancy-shell .occupancy-table .sticky-col{z-index:4}
/* top/bottom 1px: Die äußeren Tabellenränder gehören ebenfalls der Tabelle
   und liegen unter der Spur – 1px Abstand hält sie frei.
   z-index 0 statt 3 (28.08.2026): Die Spur ist eine Orientierungshilfe im
   Datumsraster und lag über den Buchungsbalken – dort verdeckte sie Farbe und
   Beschriftung, obwohl der Balken die eigentliche Information trägt. Sie
   liegt jetzt darunter (Balken: z-index 1). **Nicht** unter null: Bei
   negativem Wert verschwände sie hinter den Tageszellen und wäre auf den
   freien Plätzen gar nicht mehr zu sehen. */
.plan-today-line{position:absolute;top:1px;bottom:1px;left:calc(var(--unit-col-w,155px) + var(--today-offset) * var(--day-col-w,43px));z-index:0;width:var(--day-col-w,43px);background:rgba(243,201,107,.22);box-shadow:inset 2px 0 0 #c48c23,inset -2px 0 0 #c48c23;pointer-events:none}
/* Die Spur gehört ins Datumsraster. Über den Kategorie-Überschriften – die
   quer über alle Spalten laufen und gar keinen Tagesbezug haben – sieht sie
   aus wie ein Fehler. Die Überschriftenzeilen heben sich deshalb über die
   Spur (z-index 5 > 0), die Spur wirkt dadurch je Kategorie unterbrochen.
   Unter 780px ist die Zeile bereits klebend positioniert; dort genügt der
   z-index, sonst ginge das waagerechte Mitlaufen der Überschrift verloren. */
@media(min-width:781px){.occupancy-shell .category-row th{position:relative;z-index:5}}
@media(max-width:780px){.occupancy-shell .category-row th{z-index:5}}

/* Dasselbe gilt für das Monatsband: »August 2026« ist eine Zeitraum-Überschrift
   und kein Tag. Die Spur beginnt deshalb erst an der Tageszeile (»Do 27.08.«),
   das Monatsband bleibt ausgespart (Wunsch Oliver, 27.08.). Bewusst über den
   z-index statt über ein festes `top` an der Spur: Die Bandhöhe darf sich
   ändern, ohne dass die Spur nachjustiert werden muss. */
.occupancy-shell .occupancy-table .month-row th{position:relative;z-index:5}

/* Bei `border-collapse:collapse` gehört die 1px-Rasterlinie der **Tabelle**,
   nicht der Zelle. Der Hintergrund der klebenden Platzspalte deckt deshalb
   alles ab außer genau diesem Spalt – und dort schlug die Heute-Spur beim
   waagerechten Scrollen durch (sichtbar als dünne Striche in »Platz«,
   »Freie Plätze je Nacht« und an jeder Zeilengrenze). Die hochgezogenen
   Zellen zeichnen ihre waagerechte Rasterlinie darum selbst: ein 1px-Streifen
   im eigenen Stapelkontext schließt den Spalt. Eine Linie je Zeile genügt –
   die Unterkante einer Zelle ist die Oberkante der nächsten, die
   Tabellenoberkante hält die Spur mit `top:1px` frei. Bewusst Pseudoelemente
   statt `box-shadow`: der bleibt für Trefferkante und Fokusmarkierung frei. */
.occupancy-shell .occupancy-table .sticky-col::after,
.occupancy-shell .category-row th::after{content:'';position:absolute;left:-1px;right:-1px;bottom:-1px;height:1px;z-index:-1;background:var(--line)}
.occupancy-shell .category-row th::after{background:#ccd9d0}
.occupancy-shell .category-row.search-hit-category th::after{background:#a9c9b8}
/* Das hochgezogene Monatsband braucht denselben Streifen an seiner Unterkante,
   sonst schlägt die Spur durch die Rasterlinie zur Tageszeile durch. */
.occupancy-shell .occupancy-table .month-row th::after{content:'';position:absolute;left:-1px;right:-1px;bottom:-1px;height:1px;z-index:-1;background:#d3dcd6}

/* Sobald waagerecht gescrollt wird, verschwinden Tagesspalten hinter der
   Platzspalte – und zwar auch mitten in einer Spalte. Ohne sichtbare Kante
   sieht das aus, als kollidiere die Beschriftung (»Platz«, »Freie Plätze je
   Nacht«) mit einem halben Datum. Die Schattenkante macht aus der Kollision
   eine erkennbare Überlagerung. Sie erscheint nur, wenn wirklich etwas
   dahinter liegt (Klasse vom Skript gesetzt). */
.occupancy-shell.is-scrolled-x .occupancy-table .sticky-col::before,
.plan-floating-head.is-scrolled-x .occupancy-table .sticky-col::before{content:'';position:absolute;top:-1px;bottom:-1px;left:calc(100% + 1px);width:10px;z-index:-1;background:linear-gradient(90deg,rgba(23,37,31,.17),rgba(23,37,31,0))}
/* --- Fadenkreuz (Variante B+, Stärke 50 %) ----------------------------- */
/* Zeile und Spalte unter dem Mauszeiger leicht hervorheben. Rangfolge im
   Plan (Stand 28.08.2026): Suchtreffer (6/7) > Fadenkreuz (2) >
   Buchungsbalken (1) > Heute-Spur (0). Das Fadenkreuz folgt dem Mauszeiger
   und soll dort sichtbar sein, wo man hinzeigt – auch über einer Buchung;
   die Heute-Spur ist dagegen bloße Orientierung und gehört nach hinten.
   Darüber liegen weiterhin die klebende Platzspalte (4) und die
   Überschriftenzeilen (5). Die Werte sind die 50-%-Stufe aus dem Mockup
   (`docs/mockups/belegungsplan-fadenkreuz.html`), fest eingerechnet.
   Nur mit Maus: Auf Zeigegeräten ohne Hover bliebe das Kreuz nach dem
   Antippen stehen und wäre reiner Lärm. */
@media (hover:hover) and (pointer:fine){
  .plan-hover-line{position:absolute;top:1px;bottom:1px;left:calc(var(--unit-col-w,155px) + var(--hover-offset,0) * var(--day-col-w,43px));width:calc(var(--hover-span,1) * var(--day-col-w,43px));z-index:2;background:rgba(33,107,74,.08);box-shadow:inset 1px 0 0 rgba(33,107,74,.25),inset -1px 0 0 rgba(33,107,74,.25);pointer-events:none;display:none}
  .occupancy-shell.is-crosshair .plan-hover-line{display:block}
  .occupancy-shell.is-crosshair .occupancy-row:hover>td{background:rgba(33,107,74,.035)}
  .occupancy-shell.is-crosshair .occupancy-row:hover>.sticky-col{background:rgba(33,107,74,.05);box-shadow:inset 4px 0 0 rgba(33,107,74,.43)}
  .occupancy-shell.is-crosshair .day-row th.day.is-hovered{background:#e6f1ea;color:#14512f;box-shadow:inset 0 -3px 0 var(--green)}
  .occupancy-shell.is-crosshair .day-row th.day.today.is-hovered{background:#fff2d4;color:#7a5310;box-shadow:inset 0 3px 0 #c48c23,inset 0 -3px 0 var(--green)}
}
@media (prefers-reduced-motion:no-preference){
  .plan-hover-line{transition:left .07s linear,width .07s linear}
}
.occupancy-table th.day.today{background:#fff2d4;color:#7a5310;font-weight:800;box-shadow:inset 0 3px 0 #c48c23}
.occupancy-table th.day.today b{display:block;margin-top:1px;font-size:8px;letter-spacing:.07em;text-transform:uppercase}
.legend-box.today{background:rgba(243,201,107,.35);border-color:#c48c23}

/* --- Monatsband und Tageszeile ----------------------------------------- */
.occupancy-table .month-row th{height:26px;padding:0 8px;background:#f2f5f1;color:#38564a;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-color:#d3dcd6}
.occupancy-table .month-row .sticky-col{background:#f2f5f1;text-align:left}
.occupancy-table .day-row th{height:48px}

/* --- Fliegendes Datumsmenü --------------------------------------------- */
/* Der Kopf wird geklont und beim Wegscrollen oben eingeblendet. Er ist selbst
   ein waagerechter Scrollbereich; das Skript hält seinen scrollLeft mit dem
   Plan gleich. Dadurch bleibt die klebende Platzspalte auch im Klon stehen. */
.plan-floating-head{position:fixed;top:0;z-index:30;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid var(--line);background:#fff;box-shadow:0 8px 20px rgba(23,37,31,.16);pointer-events:none;scrollbar-width:none}
.plan-floating-head[hidden]{display:none}
.plan-floating-head::-webkit-scrollbar{display:none}
.plan-floating-head .occupancy-table{width:100%;min-width:var(--plan-min-width,1488px);table-layout:fixed;border-collapse:collapse}
.plan-floating-head .occupancy-table th{border:1px solid var(--line)}

@media(max-width:780px){
  .plan-search-field input{min-width:0;flex:1 1 100%}
  .plan-search-field button{flex:1 1 auto}
  .plan-search-outside ul{flex-direction:column}
}

/* Rückfrage zum Sperrblock: ein Kärtchen **über** dem Balken, nicht im 46-px-Feld.
   confirm.js setzt die Rückfrage neben den Knopf, also in das Formular im
   Sperrbalken. Dort ragte sie in die Zeilen darunter und lag hinter deren
   Buchungsbalken; die Knöpfe erbten die 24-px-Regel des ×-Knopfes und lagen
   übereinander (Befunde Oliver, 13.09.2026). Jetzt: eigenes Kärtchen mit
   Pfeil, über dem Balken (unten ist bei der letzten Zeile kein Platz, oben
   liegt höchstens die Kopfzeile darunter), zwei gleich breite Knöpfe,
   z-index über Balken (1), Treffern (6/7) und Verschiebequelle (8). */
.unit-block-bar{position:relative}
/* confirm.js versteckt den ×-Knopf per hidden – die Grid-Regel des Knopfes in app.css schlug das. */
.unit-block-bar button[hidden]{display:none}
.unit-block-bar .confirm-bar{position:absolute;left:0;bottom:calc(100% + 10px);z-index:12;display:grid;grid-template-columns:1fr 1fr;gap:10px 8px;width:290px;padding:12px 14px 12px;border:1px solid #d9c59d;border-radius:12px;background:#fff;color:var(--ink);box-shadow:0 14px 36px rgba(31,26,20,.28);white-space:normal;text-align:left;font-size:13px;line-height:1.4;cursor:default}
.unit-block-bar .confirm-bar::after{content:'';position:absolute;left:20px;bottom:-7px;width:12px;height:12px;background:#fff;border-right:1px solid #d9c59d;border-bottom:1px solid #d9c59d;transform:rotate(45deg)}
.unit-block-bar .confirm-bar-frage{grid-column:1/-1;max-width:none;font-weight:750;color:#3a2a10}
.unit-block-bar .confirm-bar-frage::before{content:'Sperrblock';display:block;margin-bottom:2px;font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#8a6b3a}
.unit-block-bar .confirm-bar button{display:inline-flex;align-items:center;justify-content:center;width:auto;height:auto;margin:0;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-size:13px;font-weight:750;line-height:1.2;cursor:pointer}
.unit-block-bar .confirm-bar button.confirm-bar-ja{border-color:#a83c2e;background:#a83c2e;color:#fff}
.unit-block-bar .confirm-bar button.confirm-bar-ja:hover{background:#8f3225}
.unit-block-bar .confirm-bar button.confirm-bar-nein:hover{background:#f3f6f3}

/* ===== Umbuchung mit Vorschau, Rückgängig, Legende & Bedienung (27.09.2026) ===== */
.plan-control-buttons{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.plan-help-hint{margin:10px 0 0;color:var(--muted);font-size:12.5px}
.plan-help-hint .linklike{border:0;background:none;padding:0;color:var(--green);font:inherit;font-weight:700;cursor:pointer;text-decoration:underline}
.plan-help-hint kbd,.plan-help-keys kbd{font:600 11px/1 Consolas,ui-monospace,monospace;border:1px solid #cfd8d1;border-bottom-width:2px;border-radius:5px;padding:2px 6px;background:#fff;color:var(--ink)}
.plan-help-dialog,.move-preview-dialog{border:1px solid var(--line);border-radius:14px;padding:0;background:var(--card);color:var(--ink);box-shadow:0 18px 50px #17251f33}
.plan-help-dialog{width:min(720px,calc(100vw - 32px));max-height:min(86vh,760px)}
.plan-help-dialog::backdrop{background:#17251f55}
.plan-help-dialog header,.move-preview-dialog header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px 12px;border-bottom:1px solid var(--line)}
.plan-help-dialog h2,.move-preview-dialog h2{font-size:20px;margin:0 0 2px}
.plan-help-dialog section{padding:12px 18px;border-bottom:1px solid var(--line)}
.plan-help-dialog section:last-child{border-bottom:0}
.plan-help-dialog h3{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.plan-help-dialog .legend{margin:0;padding:0;gap:8px 16px;flex-wrap:wrap}
.plan-help-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:5px;font-size:13.5px;line-height:1.5}
.plan-help-swatch{display:inline-block;width:14px;height:10px;border-radius:3px;vertical-align:0}
.plan-help-swatch.free{background:#d7f1e1;box-shadow:inset 3px 0 0 #2b8a5f}
.plan-help-swatch.busy{background:#fff0cf;box-shadow:inset 3px 0 0 #c48c23}
.plan-help-swatch.blocked{background:#f7ded9;box-shadow:inset 3px 0 0 #a33b32}
.plan-help-keys{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;margin:0;font-size:13px}
.plan-help-keys div{display:flex;gap:10px;align-items:baseline}
.plan-help-keys dt{white-space:nowrap}.plan-help-keys dd{margin:0;color:var(--muted)}
.legend-box.moved-trigger{background:#fff;border:2px solid var(--green)}
.legend-box.moved-auto{background:#fff3d6;border:2px solid #c48c23}

/* Zielplätze beim Ziehen / Antippen */
.occupancy-shell.is-choosing-target .occupancy-row.target-free>th{box-shadow:inset 5px 0 0 #2b8a5f}
.occupancy-shell.is-choosing-target .occupancy-row.target-free td{background-color:#f1faf4}
.occupancy-shell.is-choosing-target .occupancy-row.target-busy>th{box-shadow:inset 5px 0 0 #c48c23}
.occupancy-shell.is-choosing-target .occupancy-row.target-busy td{background-color:#fffaee}
.occupancy-shell.is-choosing-target .occupancy-row.target-blocked>th{box-shadow:inset 5px 0 0 #a33b32;opacity:.75}
.occupancy-shell.is-choosing-target .occupancy-row.target-blocked td{background-color:#fcf1ef}

/* Vorschau: bisherige Belegung gestrichelt, neue Lage als Schatten */
.booking-bar.preview-leaving{opacity:.45;outline:2px dashed #9fb2a7;outline-offset:-2px}
.occupancy-row.preview-affected>th{background:#fff3d6!important}
.move-ghost{position:absolute;z-index:6;border:2px dashed var(--green);background:#ffffffe6;color:var(--green);border-radius:7px;font-size:11.5px;font-weight:800;display:flex;align-items:center;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;box-shadow:0 4px 12px #17251f1f}
.move-ghost.is-auto{border-color:#c48c23;background:#fff3d6e6;color:#795414}

/* Vorschau-Fenster: seitliches Panel, der Plan bleibt sichtbar */
.move-preview-dialog{position:fixed;inset:auto 18px 18px auto;margin:0;width:min(400px,calc(100vw - 32px));max-height:calc(100vh - 110px);overflow:auto;z-index:30}
.mp-body{padding:4px 0}
.mp-move{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:11px 18px;border-bottom:1px solid var(--line)}
.mp-badge{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-radius:5px;padding:2px 7px;background:var(--green-soft);color:var(--green);align-self:start}
.mp-move.is-auto .mp-badge{background:#fff3d6;color:#795414}
.mp-who{font-weight:700}.mp-who small{font-weight:500;color:var(--muted)}
.mp-route{font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}
.mp-route s{color:var(--muted);font-weight:500}
.mp-meta{font-size:12px;color:var(--muted);margin-top:2px}
.mp-chip{display:inline-block;margin:5px 6px 0 0;font-size:11.5px;font-weight:600;border-radius:99px;padding:2px 9px;background:#fff0cf;color:#6b4a12}
.mp-section{margin:0;padding:10px 18px 2px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.mp-section.is-ok{color:var(--green);padding-bottom:10px}
.mp-upgrade{margin:0;padding:10px 18px;font-size:12.5px;background:#e3ecf7;color:#2b5a8a}
.mp-loading,.mp-error{margin:0;padding:18px}
.mp-error{color:var(--red);font-weight:600}
.mp-foot{padding:14px 18px;display:flex;flex-direction:column;gap:8px;background:#fafbf8;border-top:1px solid var(--line)}
.mp-lock{display:flex;gap:8px;align-items:center;font-size:13px}
.mp-lock input{accent-color:var(--green);width:16px;height:16px}
.mp-note{margin:0;font-size:12px;color:var(--muted)}
.mp-stale{margin:0;padding:8px 10px;border-radius:8px;background:#fff0cf;color:#6b4a12;font-size:12.5px;font-weight:600}
.mp-actions{display:flex;gap:8px;flex-wrap:wrap}
.mp-actions .primary{flex:1}

/* Meldung nach dem Verschieben */
.move-toast{position:sticky;bottom:16px;z-index:25;margin:16px auto 0;max-width:820px;background:#173d2e;color:#eaf3ee;border-radius:12px;padding:12px 14px 12px 16px;display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;box-shadow:0 14px 34px #17251f40}
.move-toast strong{color:#fff}
.move-toast .mt-text{flex:1;min-width:240px;font-size:13.5px}
.move-toast .mt-text small{display:block;color:#b9d3c5;font-size:12px;margin-top:2px}
.move-toast .mt-text a{color:#fff}
.move-toast .mt-timer{font-variant-numeric:tabular-nums;font-size:12px;color:#b9d3c5}
.move-toast form{margin:0}
.move-toast .mt-undo button{background:#fff;color:#173d2e;border:0;border-radius:8px;padding:8px 14px;font-weight:800;cursor:pointer}
.move-toast .mt-close{background:transparent;color:#cfe7da;border:0;padding:6px 8px;cursor:pointer}
.move-toast.is-warn{background:#fff;color:var(--ink);border:1px solid #e9d3a0;box-shadow:0 14px 34px #17251f26}
.move-toast.is-warn strong{color:var(--ink)}
.move-toast.is-warn .mt-text small{color:var(--muted)}
.move-toast.is-warn .mt-close{color:var(--green)}
.move-toast .mt-icon{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;flex:none;font-weight:800;background:#fff0cf;color:#a46510}
.move-toast .mt-link{color:var(--green);font-weight:700}
.booking-bar.moved-trigger{box-shadow:0 0 0 2px var(--green),0 4px 12px #216b4a33}
.booking-bar.moved-auto{box-shadow:0 0 0 2px #c48c23,0 4px 12px #a4651033}
@media(max-width:680px){
  .move-preview-dialog{inset:auto 0 0 0;width:100%;max-height:78vh;border-radius:16px 16px 0 0}
  .move-toast{position:static}
  .plan-help-keys{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:no-preference){.move-ghost{transition:opacity .15s}}

/* Platzverlauf in der Buchung */
.platzverlauf{margin:14px 0 4px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fafbf8}
.platzverlauf h3{margin:0 0 4px;font-size:13px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.platzverlauf-list{list-style:none;margin:0;padding:0}
.platzverlauf-list li{position:relative;padding:10px 0 10px 22px;border-top:1px dashed var(--line)}
.platzverlauf-list li:first-child{border-top:0}
.platzverlauf-list li::before{content:"";position:absolute;left:3px;top:16px;width:9px;height:9px;border-radius:50%;background:var(--green)}
.platzverlauf-list li.is-auto::before{background:#c48c23}
.platzverlauf-list li.is-undo::before{background:#9aa6a0}
.pv-when{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.pv-what{font-weight:700;margin:1px 0}
.pv-why{font-size:12.5px;color:#40504a}
.pv-chip{display:inline-block;margin-top:6px;font-size:11.5px;font-weight:700;border-radius:99px;padding:2px 9px;background:#e3ecf7;color:#2b5a8a}
.pv-chip.is-ok{background:var(--green-soft);color:var(--green)}
.pv-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;align-items:center}
.pv-acts form{margin:0}

/* hidden-Attribut muss gegen display:flex gewinnen (Schließen der Meldung, Häkchen im Panel) */
.move-toast[hidden],.move-preview-dialog [hidden],.plan-help-dialog [hidden]{display:none!important}
.mp-more summary{cursor:pointer;padding:10px 18px;font-size:12.5px;font-weight:700;color:var(--green)}
.mp-more[open] summary{border-bottom:1px solid var(--line)}
/* Einstellungen › Abläufe: Umbuchungsvorschau */
.settings-radio-label{display:block;font-weight:700;margin-bottom:6px}
.settings-radio-list{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}
.settings-radio-list label{display:flex;gap:8px;align-items:center;font-weight:500}
.settings-radio-list input{accent-color:var(--green)}

/* Ansicht-Gruppe in der Kopfzeile (27.09.2026): Spanne, Freie Plätze, Legende */
.plan-view-row{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.plan-tool-toggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);padding:0 13px;font:inherit;font-size:12px;font-weight:750;cursor:pointer;white-space:nowrap;min-height:36px;box-shadow:none}
.plan-tool-toggle:hover{background:#f2f6f3}
.plan-tool-toggle .ptt-box{width:15px;height:15px;border-radius:4px;border:1.5px solid #b7c2bb;background:#fff;display:inline-grid;place-items:center;flex:none}
.plan-tool-toggle[aria-pressed=true]{border-color:#bcd4c6;background:var(--green-soft);color:var(--green)}
.plan-tool-toggle[aria-pressed=true] .ptt-box{background:var(--green);border-color:var(--green)}
.plan-tool-toggle[aria-pressed=true] .ptt-box::after{content:'';width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
.plan-tool-help{width:36px;min-height:36px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--green);font:800 15px/1 Georgia,serif;cursor:pointer;display:inline-grid;place-items:center;padding:0;box-shadow:none}
.plan-tool-help:hover{background:var(--green-soft);border-color:#bcd4c6}
.plan-tool-toggle:focus-visible,.plan-tool-help:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.plan-controls .category-filter{flex:1 1 auto;min-width:0}
@media(max-width:780px){.plan-view-row{justify-content:flex-start}}

/* Werkzeugleiste als Kopf des Plans (28.09.2026): Blättern, Zeitraum, Spanne, Freie Plätze, Legende */
.plan-toolbar{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0;background:#fbfcfa;position:relative;z-index:3}
.plan-toolbar ~ .occupancy-shell{border-top-left-radius:0;border-top-right-radius:0}
.plan-toolbar ~ .plan-filter-band{margin-top:0;border-radius:0}
.plan-tb-group{display:inline-flex;align-items:stretch;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fff;height:34px;margin:0}
.plan-tb-group a{display:inline-flex;align-items:center;justify-content:center;min-width:34px;padding:0 11px;border-right:1px solid var(--line);color:var(--ink);font-size:12.5px;font-weight:750;text-decoration:none;white-space:nowrap}
.plan-tb-group a:last-of-type{border-right:0}
.plan-tb-group a[hidden]{display:none}
.plan-tb-group a:hover{background:#f2f6f3}
.plan-stepper.plan-tb-group a.is-now,.plan-span-switch.plan-tb-group a.active{background:var(--green);color:#fff}
.plan-stepper.plan-tb-group a:not(.is-now){font-size:15px}
.plan-range-wrap{position:relative}
.plan-range{display:inline-flex;align-items:center;gap:8px;height:34px;border:0;background:transparent;padding:0 8px;border-radius:8px;cursor:pointer;color:var(--ink);box-shadow:none}
.plan-range strong{font-family:Georgia,serif;font-size:17px;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.plan-range span{color:var(--muted);font-size:12px}
.plan-range:hover,.plan-range[aria-expanded=true]{background:#eef3ef}
.plan-range-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:20;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 34px #17251f26;padding:12px 14px;width:min(320px,calc(100vw - 40px))}
.plan-range-pop[hidden]{display:none!important}
.plan-range-pop .plan-date-jump{width:100%}
.plan-tb-spacer{flex:1}
.plan-tb-sep{width:1px;height:22px;background:var(--line)}
.plan-switch{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 10px 0 8px;border:0;border-radius:9px;background:transparent;cursor:pointer;font:inherit;font-size:12.5px;font-weight:750;color:var(--ink);box-shadow:none}
.plan-switch:hover{background:#eef3ef}
.plan-switch i{position:relative;width:30px;height:18px;border-radius:99px;background:#cfd8d1;flex:none;transition:background .15s}
.plan-switch i::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:transform .15s}
.plan-switch[aria-pressed=true] i{background:var(--green)}
.plan-switch[aria-pressed=true] i::after{transform:translateX(12px)}
.plan-legend-btn{display:inline-flex;align-items:center;gap:7px;height:34px;border:0;background:transparent;padding:0 8px;border-radius:9px;cursor:pointer;font:inherit;font-size:12.5px;font-weight:750;color:var(--green);box-shadow:none}
.plan-legend-btn:hover{background:#eef3ef}
.plan-legend-btn .q{width:18px;height:18px;border-radius:50%;border:1.5px solid currentColor;display:grid;place-items:center;font:800 11px/1 Georgia,serif}
.plan-tb-group a:focus-visible,.plan-range:focus-visible,.plan-switch:focus-visible,.plan-legend-btn:focus-visible{outline:2px solid var(--green);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.plan-switch i,.plan-switch i::after{transition:none}}
@media(max-width:700px){.plan-tb-spacer{flex-basis:100%;height:0}.plan-range strong{font-size:15px}}

/* Kategorien (28.09.2026): Chips so viele wie Platz haben, Rest + Mehrfachauswahl im Fenster */
.plan-cat-row{position:relative;align-items:center;gap:8px}
.plan-cat-row.is-fitted .category-filter{overflow:visible;flex:1 1 auto;min-width:0;flex-wrap:wrap;margin:0;padding:4px 0}
.plan-cat-row .category-filter a[hidden]{display:none!important}
.cat-more-wrap{position:relative;flex:none}
.cat-more{display:inline-flex;align-items:center;gap:4px;border:1px dashed #b7c8bd;background:#fff;color:var(--green);border-radius:99px;padding:9px 14px;font:inherit;font-size:13px;font-weight:750;cursor:pointer;white-space:nowrap;box-shadow:none}
.cat-more:hover,.cat-more[aria-expanded=true]{background:var(--green-soft);border-style:solid;border-color:#bcd4c6}
.cat-more:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.cat-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:25;width:min(380px,calc(100vw - 32px));background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 34px #17251f26;overflow:hidden;margin:0}
.cat-pop[hidden]{display:none!important}
.cat-pop-head{padding:10px;border-bottom:1px solid var(--line)}
.cat-pop-head input{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit;background:#fff}
.cat-opts{max-height:320px;overflow:auto;padding:4px}
.cat-opt{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13.5px}
.cat-opt[hidden]{display:none!important}
.cat-opt:hover{background:#f2f6f3}
.cat-opt input{accent-color:var(--green);width:16px;height:16px;flex:none}
.cat-opt span{flex:1;min-width:0}
.cat-opt small{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.cat-opt:has(input:checked){background:var(--green-soft)}
.cat-opt:has(input:checked) span{font-weight:700;color:var(--green)}
.cat-empty{margin:0;padding:12px;color:var(--muted);font-size:13px}
.cat-pop-foot{display:flex;align-items:center;gap:8px;padding:10px 12px;border-top:1px solid var(--line);background:#fafbf8}
.cat-count{flex:1;font-size:12px;color:var(--muted)}
.cat-pop-foot .cat-all{border:0;background:transparent;color:var(--green);font-weight:700;padding:8px 6px;cursor:pointer;box-shadow:none}
.cat-pop-foot .cat-apply{padding:8px 14px}

/* Kategorien (28.09.2026, Regel): gewählte Chips mit × zum Abwählen, Hinweis im Fenster */
.cat-chip-sel{display:inline-flex;flex:none;align-items:stretch}
.cat-chip-sel a.active{border-top-right-radius:0;border-bottom-right-radius:0;padding-right:8px}
.category-filter .cat-chip-sel a.cat-remove{display:grid;place-items:center;padding:0 11px 0 9px;border:1px solid var(--green);border-left:1px solid #ffffff55;border-radius:0 999px 999px 0;background:var(--green);color:#fff;font-size:16px;font-weight:700;line-height:1}
.category-filter .cat-chip-sel a.cat-remove:hover{background:#0f4a36;border-color:#0f4a36}
.category-filter .cat-chip-sel a.cat-remove:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.cat-hint{margin:0;padding:9px 12px;border-bottom:1px solid var(--line);background:#fafbf8;color:var(--muted);font-size:12.5px;line-height:1.45}
@media (max-width:700px){.plan-cat-row .cat-more-wrap{position:static}.plan-cat-row .cat-pop{left:0;right:auto}}
/* Befristete Reservierung (02.10.2026): schraffiert grün statt Sperr-Rot, läuft von selbst ab */
.unit-block-bar.reserved-bar{border-color:#5f8f73;background:repeating-linear-gradient(135deg,#dcefe3 0,#dcefe3 8px,#cbe6d5 8px,#cbe6d5 16px);color:#1f5136;overflow:visible}
.unit-block-bar.reserved-bar small{color:#2f6a49}
.unit-block-bar.reserved-bar.art-angebot{border-color:#6c7fae;background:repeating-linear-gradient(135deg,#e2e8f6 0,#e2e8f6 8px,#d3dcf0 8px,#d3dcf0 16px);color:#2b3c66}
.unit-block-bar.reserved-bar.art-angebot small{color:#3d4f7d}
.legend-box.reserved{background:repeating-linear-gradient(135deg,#dcefe3 0,#dcefe3 4px,#cbe6d5 4px,#cbe6d5 8px);border-color:#5f8f73}
.reserved-actions{position:relative}
.reserved-actions>summary{display:grid;place-items:center;width:24px;height:24px;border-radius:6px;background:#fff9;color:#1f5136;font-weight:800;cursor:pointer;list-style:none}
.reserved-actions>summary::-webkit-details-marker{display:none}
.reserved-actions>summary:focus-visible{outline:2px solid #1f5136;outline-offset:1px}
.reserved-menu{position:absolute;right:0;bottom:calc(100% + 6px);z-index:14;display:grid;gap:6px;min-width:230px;padding:10px;border:1px solid #c9d8cf;border-radius:10px;background:#fff;box-shadow:0 12px 30px rgba(20,40,30,.22)}
.reserved-menu form{display:flex;flex-wrap:wrap;gap:6px;margin:0}
.unit-block-bar .reserved-menu button{display:inline-flex;width:auto;height:auto;padding:6px 10px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);font-size:12px;font-weight:700}
.unit-block-bar .reserved-menu button.danger{border-color:#a83c2e;color:#a83c2e}
.reserved-menu a{font-size:12px;font-weight:700;color:#2b3c66}
.reservierung-hinweis{background:#e4f2ea;color:#1f5136}.reservierung-hinweis span{color:#2f6a49}
/* Sperrblock im Plan ändern (05.10.2026): Beginn · Nächte · Ende untereinander */
.reserved-menu form.block-edit-form{display:grid;gap:8px;min-width:240px}
.block-edit-form label{display:grid;gap:3px;font-size:11.5px;font-weight:700;color:var(--muted)}
.block-edit-form input{box-sizing:border-box;width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:7px;font:inherit;font-size:13px;color:var(--ink)}
.unit-block-bar .reserved-menu .block-edit-form button.primary{justify-content:center;background:var(--green,#2f6a49);border-color:var(--green,#2f6a49);color:#fff}

/* Platzeinschränkungen (05.10.2026): schraffiert, Platz bleibt für passende Fahrzeuge buchbar */
.occupancy-block.eingeschraenkt{background:repeating-linear-gradient(135deg,rgba(184,134,11,.16) 0 5px,transparent 5px 10px)}
.einschraenkung-badge{display:inline-block;margin-top:3px;padding:1px 6px;border-radius:999px;background:#fbf1d6;color:#7a5a06;font-size:11px;font-weight:600;line-height:1.5;text-decoration:none;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.einschraenkung-badge:hover,.einschraenkung-badge:focus-visible{background:#f5e2ac;outline:2px solid #b8860b;outline-offset:1px}
/* Formular »Plätze einschränken« (Überarbeitung 06.10.2026): Schritte, Chips, Schalter */
.einschraenkung-form{display:grid;gap:16px;padding:18px}
.einschraenkung-form h3{display:flex;align-items:center;gap:8px;margin:0;font-size:15px}
.einschraenkung-form p{margin:0}
.ef-nr{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#e6efe9;color:#216b4a;font-size:12px;font-weight:800}
.ef-block{display:grid;gap:12px;align-content:start;min-width:0;padding:16px;border:1px solid #dfe7e2;border-radius:10px;background:#fbfcfb}
.ef-kopf{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.ef-kopf p{margin-top:3px;color:#617068;font-size:13px}
.ef-zahl{flex:none;padding:4px 11px;border-radius:999px;background:#eef2ef;color:#4a5a50;font-size:12px;font-weight:700}
.ef-zahl.ef-zahl-aktiv{background:#216b4a;color:#fff}
.ef-leiste{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 18px}
.ef-kategorie{flex:0 1 340px}
.ef-knoepfe{display:flex;gap:4px;padding-bottom:6px}
.ef-text{padding:6px 10px;border:0;border-radius:7px;background:transparent;color:#216b4a;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.ef-text:hover,.ef-text:focus-visible{background:#e6efe9}
.ef-feld{display:grid;gap:5px;min-width:0}
.ef-feld>span:first-child{color:#3d5147;font-size:11px;font-weight:800;letter-spacing:.02em}
.einschraenkung-form input[type=text],.einschraenkung-form input[type=number],.einschraenkung-form input[type=date],.einschraenkung-form select{width:100%;min-height:40px;padding:8px 10px;border:1px solid #cdd8d2;border-radius:8px;background:#fff;color:inherit;font:inherit;font-size:14px}
.einschraenkung-form input:focus-visible,.einschraenkung-form select:focus-visible{outline:2px solid #216b4a;outline-offset:1px;border-color:#216b4a}
.ef-einheit{position:relative;display:block;max-width:160px}
.ef-einheit input{padding-right:34px!important}
.ef-einheit em{position:absolute;right:11px;top:50%;transform:translateY(-50%);color:#617068;font-style:normal;font-size:13px;pointer-events:none}
.ef-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:230px;overflow:auto;padding:2px}
.ef-chip{position:relative;display:inline-flex;cursor:pointer}
.ef-chip input{position:absolute;opacity:0;width:1px;height:1px}
.ef-chip span{display:inline-flex;align-items:baseline;gap:5px;padding:6px 12px;border:1px solid #cdd8d2;border-radius:999px;background:#fff;color:#2c3b33;font-size:13px;font-weight:600;line-height:1.3;transition:background .12s,border-color .12s}
.ef-chip small{color:#7b8a82;font-size:11px;font-weight:500}
.ef-chip:hover span{border-color:#216b4a}
.ef-chip input:focus-visible+span{outline:2px solid #216b4a;outline-offset:2px}
.ef-chip input:checked+span{background:#216b4a;border-color:#216b4a;color:#fff}
.ef-chip input:checked+span small{color:#d6eadf}
.ef-chip-nein input:checked+span{background:#fde4dc;border-color:#d9785a;color:#8a2f13}
.ef-chip-nein input:checked+span::before{content:"✕";font-size:11px}
.ef-raster{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.ef-zwei{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:10px}
.ef-schalter{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;font-weight:600;color:#2c3b33}
.ef-schalter input{appearance:none;-webkit-appearance:none;flex:none;position:relative;width:38px;height:22px;margin:0;border-radius:999px;background:#cdd8d2;cursor:pointer;transition:background .15s}
.ef-schalter input::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.ef-schalter input:checked{background:#216b4a}
.ef-schalter input:checked::after{transform:translateX(16px)}
.ef-schalter input:focus-visible{outline:2px solid #216b4a;outline-offset:2px}
.ef-hinweis{color:#617068;font-size:12px;line-height:1.5}
.ef-hinweis[hidden],.einschraenkung-platzliste[hidden],.einschraenkung-ende[hidden]{display:none!important}
.ef-fuss{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;margin:2px -18px -18px;padding:14px 18px;border-top:1px solid #dfe7e2;background:#f6f8f6;border-radius:0 0 14px 14px}
.ef-fuss p{flex:1 1 320px;color:#76500f;font-size:13px;line-height:1.45}
.ef-fuss button{flex:none}
.ef-fehler{padding:10px 12px;border-radius:8px;background:#fde4dc;color:#8a2f13;font-size:13px}
@media(max-width:980px){.ef-raster{grid-template-columns:1fr 1fr}.ef-raster>.ef-block:last-child{grid-column:1/-1}}
@media(max-width:640px){.ef-raster{grid-template-columns:1fr}.ef-kopf{flex-direction:column}.ef-fuss button{width:100%}}
.einschraenkung-liste{display:grid;gap:14px}
.einschraenkung-karte{border:1px solid #dce5df;border-radius:8px;padding:14px 16px;display:grid;gap:10px;scroll-margin-top:90px}
.einschraenkung-karte:target{border-color:#b8860b;box-shadow:0 0 0 3px rgba(184,134,11,.18)}
.einschraenkung-karte header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.einschraenkung-karte h3{margin:0 0 2px;font-size:17px}
.einschraenkung-karte p{margin:0}
.einschraenkung-karte footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px}
.einschraenkung-ende-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.einschraenkung-ende-form label{display:grid;gap:4px;font-weight:600}
.einschraenkung-ende-form label.einschraenkung-offen{display:flex;padding-bottom:8px}
.einschraenkung-chip{display:inline-block;padding:2px 9px;border-radius:999px;background:#eef2ef;color:#4a5a50;font-size:12px;font-weight:600;white-space:nowrap}
.einschraenkung-chip.aktiv{background:#fbf1d6;color:#7a5a06}
.einschraenkung-chip.warn{background:#fde4dc;color:#9a3412}
.einschraenkung-betroffene{width:100%;border-collapse:collapse;font-size:14px}
.einschraenkung-betroffene caption{text-align:left;font-weight:600;padding-bottom:6px}
.einschraenkung-betroffene th,.einschraenkung-betroffene td{text-align:left;padding:6px 8px;border-top:1px solid #e6ece8}
@media(max-width:600px){.einschraenkung-karte header{flex-direction:column}}
