/*
  Buchungskalender (Erweiterung „booking“) – kit-neutral: Farben aus currentColor und den Tokens des Kits, damit hell/dunkel und
  farbige Abschnitte ohne Anpassung passen. Zustände sind nie nur Farbe: Text im Feld, Muster, Häkchen.
  Knöpfe/Felder des Formulars kommen aus dataform.css (Kern bzw. Kit).

  Tokens (Standardwerte in @layer booking – jede Regel des Kits ohne Layer gewinnt, egal in welcher Reihenfolge die Dateien laden),
  z. B. im Kit-CSS:  .bk{--bk-accent:#0a5; --bk-muted:#555}
    --bk-kit-accent  Akzent aus dem Kit (sonst --k-accent, --b-btn-bg, … bzw. --dff-accent, zuletzt currentColor)
    --bk-accent      Auswahl, Fokus, Rahmen des gewählten Termins
    --bk-muted       Nebentext (Einleitung, Beschreibung, Wochentage, Zustand im Monatsraster) – muss ≥ 4.5:1 zum Hintergrund haben
    --bk-line, --bk-line-strong, --bk-surface, --bk-sel   Linien, Flächen, Auswahl-Hintergrund
    --bk-free, --bk-partial, --bk-full   Zustände (Text in free/partial ≥ 4.5:1; --bk-full nur für Muster)
    --bk-radius, --bk-gap   Rundung, Abstände
  Die übrigen Regeln liegen außerhalb des Layers (Bauteile sollen nicht von allgemeinen Kit-Regeln wie „label{…}“ zerlegt werden);
  Bauteile im Kit gezielt mit „.bk .bk-…“ überschreiben.
*/
@layer booking{
  .bk{--bk-accent:var(--bk-kit-accent,var(--k-accent,var(--b-btn-bg,var(--e-a,var(--f-btn-bg,var(--m-a,var(--g-a,var(--n-a,var(--dff-accent,currentColor)))))))));
    --bk-line:color-mix(in srgb,currentColor 20%,transparent);--bk-line-strong:color-mix(in srgb,currentColor 38%,transparent);
    --bk-surface:color-mix(in srgb,currentColor 4%,transparent);
    /* Nebentext: 90 % der Schriftfarbe – bleibt über 4.5:1, solange die Schrift des Kits selbst lesbar ist (hell und dunkel).
       Nie verschachtelt einsetzen (currentColor wäre dann schon gedämpft) – siehe .bk-d--closed/.bk-d--past. */
    --bk-muted:color-mix(in srgb,currentColor 90%,transparent);
    --bk-sel:color-mix(in srgb,var(--bk-accent) 16%,transparent);--bk-free:color-mix(in srgb,#15803d 70%,currentColor);
    --bk-partial:color-mix(in srgb,#b45309 72%,currentColor);--bk-full:color-mix(in srgb,currentColor 60%,transparent);
    --bk-radius:10px;--bk-gap:clamp(14px,2vw,22px)}
}
.bk{display:grid;gap:var(--bk-gap)}
.bk-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.bk-head{max-width:46em}
.bk-title{margin:0}
.bk-intro,.bk-res__desc{margin:.5em 0 0;color:var(--bk-muted);max-width:60em}
.bk-note,.bk-msg{margin:0;padding:12px 16px;border:1px solid var(--bk-line-strong);border-radius:var(--bk-radius);background:var(--bk-surface)}
.bk-msg{border-inline-start:4px solid var(--bk-accent);font-weight:600}
.bk-note--demo{border-style:dashed;border-inline-start:4px solid var(--bk-partial);font-weight:600}
.bk-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border:2px solid var(--bk-accent);border-radius:var(--bk-radius);background:transparent;color:inherit;font:inherit;font-weight:600;text-decoration:none;cursor:pointer}
.bk-btn:hover{background:var(--bk-sel)}
.bk-res{display:grid;gap:14px}
.bk-res__title{margin:0}
.bk-facts{display:flex;flex-wrap:wrap;gap:6px 8px;list-style:none;margin:0;padding:0}
.bk-facts li{padding:4px 12px;border:1px solid var(--bk-line);border-radius:999px;font-size:.9rem}
.bk-form .dff{max-width:52rem}
/* Formular: Bausteine des Cores/Kits (dataform.css) – hier nur Gruppierung und Abstände */
.bk .dff-set{display:grid;gap:var(--dff-gap,18px);min-width:0;margin:0;padding:0;border:0}
.bk .dff-set__legend{margin:0 0 2px;padding:0;font-size:1.15em;font-weight:700;line-height:1.3}
.bk .dff-set+.dff-actions,.bk .dff-set~.dff-f--check{margin-top:4px}
.bk-pick{padding-bottom:calc(var(--dff-gap,18px) * .5)!important;border-bottom:1px solid var(--bk-line)!important}
.bk-choose{max-width:40rem}
.bk-choose__row{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch}
.bk-choose__row select{flex:1 1 16rem;width:auto!important}
.bk-search{max-width:52rem;padding:clamp(14px,2vw,20px);border:1px solid var(--bk-line);border-radius:var(--bk-radius);background:var(--bk-surface)}
.bk-search__grid{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));align-items:end}
.bk-search__grid .dff-actions{margin:0}
.bk-units,.bk-dates{max-width:34rem}
.bk-pick{gap:12px}
.bk-pick>legend{font-size:1.05em;margin-bottom:4px}
.bk-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}
.bk-month{margin:0;font-weight:700;font-size:1.1rem}
.bk-month:focus{outline:none}.bk-month:focus-visible{outline:2px solid var(--bk-accent);outline-offset:4px}
.bk-nav{display:flex;flex-wrap:wrap;gap:8px}
.bk-nav__a{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border:1px solid var(--bk-line-strong);border-radius:999px;color:inherit;font-weight:600;font-size:.9rem;text-decoration:none}
.bk-nav__a:hover{border-color:var(--bk-accent)}
.bk a:focus-visible,.bk button:focus-visible,.bk select:focus-visible{outline:3px solid var(--bk-accent);outline-offset:2px}
.bk-avail[aria-busy=true]{opacity:.6}

/* Legende: Muster statt nur Farbe */
.bk-legend{display:flex;flex-wrap:wrap;gap:6px 18px;list-style:none;margin:0;padding:0;font-size:.875rem;color:var(--bk-muted)}
.bk-legend li{display:inline-flex;align-items:center;gap:8px}
.bk-key{display:inline-block;width:18px;height:18px;border:1.5px solid var(--bk-line-strong);border-radius:4px}
.bk-key--free{border-color:var(--bk-free)}
.bk-key--partial{border-color:var(--bk-partial);background:linear-gradient(135deg,transparent 50%,color-mix(in srgb,var(--bk-partial) 35%,transparent) 50%)}
.bk-key--full{background:repeating-linear-gradient(135deg,var(--bk-full) 0 2px,transparent 2px 6px)}
.bk-key--closed{background:var(--bk-surface);border-style:dashed}

/* Monatsraster (Übernachtung) */
.bk-gridwrap{overflow-x:auto}
.bk-grid{width:100%;min-width:320px;table-layout:fixed;border-collapse:separate;border-spacing:3px}
.bk-grid th{padding:4px 2px;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--bk-muted);text-align:center}
.bk-d{height:3.6em;padding:0;vertical-align:top;border:1.5px solid var(--bk-line);border-radius:8px;text-align:center}
.bk-d--out{border:0}
.bk-d__b{display:grid;align-content:start;justify-items:center;gap:2px;width:100%;height:100%;min-height:3.6em;padding:4px 2px;border:0;border-radius:6px;background:transparent;color:inherit;font:inherit;cursor:pointer}
.bk-d__b[aria-disabled=true]{cursor:default}
.bk-d>.bk-d__n,.bk-d>.bk-d__s{display:block;padding:0 2px}
.bk-d__n{font-weight:700;font-variant-numeric:tabular-nums;line-height:1.5}
.bk-d__s{font-size:.66rem;line-height:1.2;color:var(--bk-muted);overflow-wrap:anywhere}
.bk-d--free{border-color:color-mix(in srgb,var(--bk-free) 60%,transparent)}
.bk-d--partial{border-color:var(--bk-partial);background:linear-gradient(135deg,transparent 60%,color-mix(in srgb,var(--bk-partial) 22%,transparent) 60%)}
.bk-d--full{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--bk-full) 45%,transparent) 0 2px,transparent 2px 7px)}
.bk-d--full .bk-d__n{text-decoration:line-through}
.bk-d--closed,.bk-d--past{background:var(--bk-surface);border-style:dashed;color:var(--bk-muted)}
.bk-d--closed .bk-d__s,.bk-d--past .bk-d__s{color:inherit}   /* schon gedämpft – nicht doppelt */
.bk-d.is-today .bk-d__n{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.bk-d.is-sel{background:var(--bk-sel);border-color:var(--bk-accent)}
.bk-d.is-start,.bk-d.is-end{border-width:3px;border-color:var(--bk-accent)}
.bk-d.is-start .bk-d__n::after{content:" →"}
.bk-d.is-end .bk-d__n::before{content:"→ "}
.bk-d__b:focus-visible{outline:3px solid var(--bk-accent);outline-offset:1px}

/* Zeitfenster (Woche) und Termine: Radiobuttons als Kacheln, mind. 44 px */
.bk-week{display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:10px}
.bk-day{padding:10px;border:1px solid var(--bk-line);border-radius:var(--bk-radius)}
.bk-day.is-today{border-color:var(--bk-accent)}
.bk-day__h{margin:0 0 8px;font-weight:700}
.bk-day__wd{text-transform:uppercase;font-size:.8rem;letter-spacing:.05em;color:var(--bk-muted)}
.bk-day__none{margin:0;font-size:.875rem;color:var(--bk-muted)}
.bk-slots,.bk-events{display:grid;gap:6px;list-style:none;margin:0;padding:0}
.bk-slot,.bk-ev{position:relative}
.bk-slot input,.bk-ev input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.bk-slot label,.bk-ev label{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:2px 10px;min-height:44px;padding:6px 10px;border:1.5px solid var(--bk-line-strong);border-radius:8px;cursor:pointer}
.bk-slot__t{font-weight:700;font-variant-numeric:tabular-nums}
.bk-state{font-size:.8rem;color:var(--bk-muted)}
.bk-state--free{color:var(--bk-free)}
.bk-state--partial{color:var(--bk-partial)}
.bk-slot input:checked+label,.bk-ev input:checked+label{border-color:var(--bk-accent);border-width:3px;background:var(--bk-sel)}
.bk-slot input:checked+label::before,.bk-ev input:checked+label::before{content:"✓";font-weight:700}
.bk-slot input:focus-visible+label,.bk-ev input:focus-visible+label{outline:3px solid var(--bk-accent);outline-offset:2px}
.bk-slot input:disabled+label,.bk-ev input:disabled+label{cursor:not-allowed;border-style:dashed;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--bk-full) 25%,transparent) 0 2px,transparent 2px 8px)}
.bk-slot input:disabled+label .bk-slot__t{text-decoration:line-through}
.bk-ev label{display:grid;grid-template-columns:1fr auto;padding:10px 14px}
.bk-ev__date{font-weight:700}
.bk-ev__time{grid-row:2;color:var(--bk-muted);font-variant-numeric:tabular-nums}
.bk-ev .bk-state{grid-row:1/3;grid-column:2;align-self:center;font-weight:600}
.bk-ev input:checked+label::before{grid-column:1/-1}
.bk-summary{margin:0;font-weight:600}
.bk-summary:empty{display:none}

/* Buchung ansehen / stornieren */
.bk-dl{display:grid;grid-template-columns:minmax(8rem,12rem) 1fr;gap:8px 16px;margin:0}
.bk-dl dt{color:var(--bk-muted)}
.bk-dl dd{margin:0;font-weight:600}
.bk-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}
.bk-status{display:inline-block;padding:2px 10px;border:1.5px solid var(--bk-line-strong);border-radius:999px}
.bk-status--bestaetigt{border-color:var(--bk-free)}
.bk-status--neu,.bk-status--zahlung_offen{border-color:var(--bk-partial)}
.bk-status--storniert,.bk-status--abgelehnt{border-style:dashed;text-decoration:line-through}
.bk-actions{margin:0}
.bk-btn--ghost{border-color:var(--bk-line-strong)}
.bk-cancel{display:grid;gap:10px;padding:16px;border:1px solid var(--bk-line);border-radius:var(--bk-radius);max-width:40rem}
.bk-cancel__t{margin:0;font-size:1.15rem}
.bk-cancel p{margin:0}
.bk-check{display:flex;gap:10px;align-items:flex-start}
.bk-check input{width:22px;height:22px;margin:2px 0 0;accent-color:var(--bk-accent)}

@media (max-width:560px){
  .bk-d__s{font-size:.6rem}
  .bk-dl{grid-template-columns:1fr}
}
@media (forced-colors:active){
  .bk-d.is-sel,.bk-slot input:checked+label,.bk-ev input:checked+label{border-color:Highlight;forced-color-adjust:none;background:Highlight;color:HighlightText}
}
@media (prefers-reduced-motion:reduce){.bk *{transition:none!important}}

/* Personenwahl (Leistung mit Personen) */
.bk-staff{display:grid;gap:8px}
.bk-staff__t{margin:0;font-weight:600}
.bk-staff__list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.bk-staff__o{flex-direction:column;align-items:flex-start;justify-content:center;gap:0;border-radius:var(--bk-radius);padding:6px 14px}
.bk-staff__r{font-weight:400;font-size:.8rem;color:var(--bk-muted)}
.bk-staff__o[aria-current=true]{border:3px solid var(--bk-accent);background:var(--bk-sel)}
.bk-staff__o[aria-current=true] .bk-staff__n::before{content:"✓ "}
.bk-staff__more{margin:0;font-size:.875rem}

/* Suche über mehrere Unterkünfte */
.bk-results{display:grid;gap:10px}
.bk-results:focus{outline:none}
.bk-results__t{margin:0;font-weight:600}
.bk-results__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:12px;list-style:none;margin:0;padding:0}
.bk-result{display:grid;gap:8px;padding:12px;border:1.5px solid var(--bk-free);border-radius:var(--bk-radius)}
.bk-result p{margin:0}
.bk-result__name{font-weight:700}
.bk-result__price{font-size:.9rem;color:var(--bk-muted)}
.bk-result__img,.bk-res__img{width:100%;height:auto;border-radius:calc(var(--bk-radius) - 2px)}
.bk-res__img{max-width:32rem}
.bk-search__grid>.dff-f{grid-column:auto}
