/* =============================================================
 * booking.css — Booking-Engine (Phase 8.4)
 * Portiert aus mockups/buchungsstrecke.html (casaone-Repo).
 * Farbschema CASA One: Slate #0f172a, Gletscher-Türkis #42cbdd.
 * ============================================================= */

/* Brand-Variablen werden aus dem zentralen Theme gespeist (Tabelle
   korrespondenz_theme, gepflegt im casaone-Admin → "Design Briefvorlagen"
   bzw. "Design Buchungsstrecke" — beide editieren dasselbe Theme).
   --theme-* wird von BT_bookingRenderThemeStyle() im <head> als :root{}
   Block injiziert. Fallback-Werte hier sind identisch mit den CASA-One-
   Standarddefaults (BT_korrespondenzThemeDefaults()), damit Booking und
   Korrespondenz auch ohne aktives Theme exakt gleich aussehen.
   --glacier-dark bleibt lokal (vom Akzent abgeleiteter Hover-Ton). */
:root{
  --slate:        var(--theme-text-heading,     #0F172A);
  --slate-2:      var(--theme-accent-primary-2, #22334A);
  --glacier:      var(--theme-accent-primary,   #42CBDD);
  --glacier-dark: #2a8fa0;
  --snow:         var(--theme-surface-bg,       #F9FAFB);
  --line:         var(--theme-border,           #E5E7EB);
  --ink:          var(--theme-text-default,     #374151);
  --muted:        var(--theme-text-muted,       #6B7280);
  /* Status-Farben kommen jetzt zentral aus dem Theme (success/danger/warning).
     --gold bleibt lokal (semantisch "Angebot offen"), --ok wird zu success. */
  --gold:#c9a14a;
  --ok:           var(--theme-accent-success,   #16A34A);
  --danger:       var(--theme-accent-danger,    #DC2626);
  --warning:      var(--theme-accent-warning,   #B45309);
  --shadow:0 8px 30px rgba(15,23,42,.10);
  /* Kalender-Tints (Variante B) — neutrale Hell-Toene, theme-unabhaengig:
     gewaehlter Zeitraum / frei / Wochenende. */
  --bk-range:#d9eef6;
  --bk-free:#f4f9fc;
  --bk-weekend:#e7eef4;
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:var(--theme-font-family, -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif);
  color:var(--ink);background:var(--snow);line-height:1.5;-webkit-font-smoothing:antialiased;
}
h1,h2,h3,.serif{
  /* Heading-Font folgt dem Theme; .serif behaelt explizit Georgia als
     Opt-in fuer Stellen, die bewusst serifig bleiben sollen. */
  font-family:var(--theme-font-heading, var(--theme-font-family, Georgia,"Times New Roman",serif));
  font-weight:600;color:var(--slate);
}
.serif{font-family:Georgia,"Times New Roman",serif}
button{font-family:inherit;cursor:pointer;border:none}
a{color:inherit}
.muted{color:var(--muted)}
.hidden{display:none}

/* ---- Top bar (3-Spalten-Grid: Home | Logo mittig | Kontakt/Sprache) ---- */
/* Heller Header (kein blauer Hintergrund) — wie das Forsthofgut-Vorbild. */
.topbar{
  background:#fff;color:var(--slate);padding:14px 26px;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;
  border-bottom:1px solid var(--line);
}
.topbar-left{display:flex;align-items:center;justify-self:start;min-width:0}
.topbar-center{display:flex;align-items:center;justify-content:center;min-width:0}
.topbar-right{display:flex;align-items:center;gap:10px;justify-self:end}

/* Home-Button (zurueck zur Hotel-Website) */
.tb-home{display:inline-flex;align-items:center;gap:8px;color:var(--muted);
  text-decoration:none;font-size:13px;font-weight:600;padding:6px 10px;
  border-radius:8px;transition:background .15s,color .15s}
.tb-home:hover{color:var(--slate);background:rgba(15,23,42,.05)}
.tb-home i{font-size:13px}

/* Zentriertes Logo — Breite/Höhe kommen als inline-Style (im Window
   einstellbar); ohne Vorgabe greift der Auto-Fallback (natürliche Größe,
   nach oben gekappt). */
.tb-logo{display:inline-flex;align-items:center;max-width:100%}
/* Keine max-height hier — sonst kappt sie die im Window eingestellte Höhe
   (max-height schlaegt den Inline-Wert). Breite/Höhe steuert der Inline-Style;
   ohne Vorgabe greift die natürliche Größe (durch die Default-Breite bezogen). */
.tb-logo img{max-width:100%;width:auto;height:auto;
  display:block;object-fit:contain}

/* Fallback ohne Logo: Hotelname als Wortmarke */
.brand{display:flex;align-items:baseline;gap:10px}
.brand .mark{
  font-family:Georgia,serif;font-size:22px;letter-spacing:.5px;color:var(--slate);
}

/* Kontakt-Icons (Mail / Telefon) — flaches Design */
.tb-icon{display:inline-grid;place-items:center;width:36px;height:36px;
  border-radius:8px;color:var(--muted);text-decoration:none;font-size:15px;
  transition:background .15s,color .15s}
.tb-icon:hover{color:var(--slate);background:rgba(15,23,42,.05)}

/* ---- Sprachumschalter ---- */
.lang-switch{display:flex;gap:4px;flex-shrink:0}
.lang-item{font-size:12px;font-weight:700;text-decoration:none;color:var(--muted);
  border:1px solid var(--line);border-radius:6px;padding:4px 8px}
.lang-item.active{background:var(--glacier-dark);border-color:var(--glacier-dark);color:#fff}

/* ---- Footer (dunkles 4-Spalten-Layout, datengetrieben) ---- */
.footer{--ft-bg:#1d2a3d;--ft-accent:#16a3b8;--ft-gold:#c79a6d;
  --ft-text:#aab3c0;--ft-muted:#8b97a6;
  background:var(--ft-bg);color:#fff;margin-top:34px}
.footer-top{
  max-width:1180px;margin:0 auto;padding:52px 26px 0;
  display:flex;gap:44px;flex-wrap:wrap;
}
/* Flex statt fixem 4-Spalten-Grid: passt sich der tatsaechlichen Spaltenzahl an
   (Schnellzugriff-Spalte faellt weg, wenn keine Links gepflegt sind) — die
   vorhandenen Spalten fuellen dann die volle Breite statt links zu klumpen. */
.ft-col{flex:1 1 0;min-width:160px}
.ft-brand{flex:1.7 1 0;min-width:240px}
.ft-col-title{font-size:12px;font-weight:900;letter-spacing:.1em;
  text-transform:uppercase;color:#fff;margin-bottom:18px}

/* Marke */
.ft-wordmark{display:flex;align-items:center;margin-bottom:16px}
.ft-mark-text{line-height:1.1;display:flex;flex-direction:column;gap:4px}
.ft-mark-top{font-size:18px;font-weight:900;letter-spacing:.14em;color:#fff}
.ft-mark-bottom{font-size:11px;font-weight:700;letter-spacing:.3em;color:var(--ft-muted)}
.ft-tagline{margin:0 0 18px;font-size:14px;line-height:1.6;color:var(--ft-text);max-width:330px}
.ft-addr{display:flex;align-items:flex-start;gap:9px;font-size:13.5px;color:var(--ft-text)}
.ft-addr i{color:var(--ft-accent);font-size:15px;flex:none;width:18px;text-align:center;margin-top:2px}

/* Kontakt */
.ft-line{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ft-text);
  text-decoration:none;margin-bottom:14px;transition:color .15s}
.ft-line:hover:not(.ft-line--static){color:#fff}
.ft-line i{color:var(--ft-accent);font-size:15px;flex:none;width:18px;text-align:center}
.ft-line span{min-width:0;word-break:break-word}

/* Schnellzugriff */
.ft-quick-links{display:flex;flex-direction:column;gap:13px}
.ft-quick-links a{font-size:14px;color:var(--ft-text);text-decoration:none;width:fit-content;transition:color .15s}
.ft-quick-links a:hover{color:var(--ft-accent)}

/* Social */
.ft-social{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.ft-social-ico{width:42px;height:42px;border-radius:11px;background:rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:center;color:#cdd5df;
  text-decoration:none;font-size:17px;transition:background .15s,color .15s}
.ft-social-ico:hover{background:var(--ft-accent);color:#fff}
.ft-social-sub{margin:0;font-size:13px;color:var(--ft-muted);line-height:1.5}
/* Letzte Spalte (Social) rechtsbuendig — Titel, Icons + Untertitel nach rechts. */
.ft-social-col{text-align:right}
.ft-social-col .ft-social{justify-content:flex-end}

/* Bottom-Bar */
.footer-bottom{
  max-width:1180px;margin:44px auto 0;padding:20px 26px;
  border-top:1px solid rgba(255,255,255,.1);
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
}
.ft-copyright{font-size:13px;color:var(--ft-muted)}
.ft-spacer{flex:1}
.footer-links{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.footer-links a{color:var(--ft-text);text-decoration:none;font-size:13px;font-weight:600;letter-spacing:.3px;transition:color .15s}
.footer-links a:hover{color:#fff}
.ft-divider{width:1px;height:14px;background:rgba(255,255,255,.16)}
.footer-credit{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ft-muted);white-space:nowrap}
.footer-credit i{color:var(--ft-accent);font-size:11px}
.footer-credit a{color:var(--ft-text);text-decoration:none;font-weight:800}
.footer-credit a:hover{color:var(--ft-accent);text-decoration:underline}

@media(max-width:900px){
  .footer-top{gap:32px 36px;padding:38px 20px 0}
  .ft-col,.ft-brand{flex-basis:calc(50% - 18px)}
}
@media(max-width:560px){
  .footer-top{gap:26px;padding:32px 18px 0}
  .ft-col,.ft-brand{flex-basis:100%;min-width:0}
  .ft-social-col{text-align:left}
  .ft-social-col .ft-social{justify-content:flex-start}
  .footer-bottom{flex-direction:column;align-items:flex-start;gap:14px;padding:18px}
  .ft-spacer{display:none}
  .ft-divider{display:none}
}

/* ---- Stepper (runde Icons, verbundene Fortschrittsspur) ---- */
.stepper-wrap{padding:80px 20px 8px}
.stepper{max-width:1180px;margin:0 auto;display:flex;align-items:flex-start}
.step{
  flex:1;min-width:0;position:relative;text-decoration:none;
  display:flex;flex-direction:column;align-items:center;
}
.step.done{cursor:pointer}
/* Verbindungsspur — linke/rechte Haelfte je Schritt, auf Kreis-Mitte (top:27px) */
.step-track-l,.step-track-r{position:absolute;top:27px;height:3px;background:var(--line)}
.step-track-l{left:0;width:50%}
.step-track-r{right:0;width:50%}
.step.done .step-track-l,.step.active .step-track-l,
.step.done .step-track-r{background:var(--glacier)}
/* Kreis */
.step-circle{
  position:relative;z-index:2;width:54px;height:54px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:#eef2f6;border:1px solid #e2e8ef;color:#9aa3af;
}
.step-circle .step-ico{width:23px;height:23px;display:block}
.step.done .step-circle{background:var(--slate-2);border-color:var(--slate-2);color:#fff}
.step.active .step-circle{
  background:linear-gradient(135deg,var(--glacier),var(--glacier-dark));
  border:none;color:#fff;
  box-shadow:0 0 0 6px color-mix(in srgb,var(--glacier) 16%,transparent),
             0 14px 28px color-mix(in srgb,var(--glacier) 34%,transparent);
  animation:stepperPulse 2.2s ease-in-out infinite;
}
@keyframes stepperPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}
/* Haken-Badge auf erledigten Schritten */
.step-check{
  position:absolute;right:-3px;bottom:-3px;width:20px;height:20px;border-radius:50%;
  background:var(--ok);border:2.5px solid #fff;
  display:flex;align-items:center;justify-content:center;
}
.step-check svg{width:11px;height:11px;display:block}
/* Label unter dem Kreis */
.step-label{margin-top:13px;text-align:center;padding:0 6px}
.step .lbl{font-size:14px;font-weight:800;line-height:1.25;color:var(--muted)}
.step.done .lbl,.step.active .lbl{color:var(--slate)}
.step-sub{display:block;font-size:12px;font-weight:700;color:var(--glacier-dark);margin-top:3px}
/* Mobile Caption-Box (aktiver Schritt) — nur < 820px sichtbar */
.step-caption{display:none}

@media(max-width:820px){
  .stepper-wrap{padding:24px 16px 4px}
  .step-track-l,.step-track-r{top:17px;height:2.5px}
  .step-circle{width:34px;height:34px}
  .step-circle .step-ico{width:16px;height:16px}
  .step.active .step-circle{
    box-shadow:0 0 0 4px color-mix(in srgb,var(--glacier) 16%,transparent),
               0 8px 16px color-mix(in srgb,var(--glacier) 34%,transparent);
  }
  .step-check{width:15px;height:15px;border-width:2px}
  .step-check svg{width:8px;height:8px}
  .step-label{display:none}
  .step-caption{
    display:flex;align-items:center;gap:12px;max-width:520px;margin:20px auto 0;
    background:color-mix(in srgb,var(--glacier) 7%,#fff);
    border:1px solid color-mix(in srgb,var(--glacier) 22%,#fff);
    border-radius:14px;padding:14px 16px;
  }
  .step-cap-icon{
    flex:none;width:40px;height:40px;border-radius:11px;color:#fff;
    display:flex;align-items:center;justify-content:center;
    background:linear-gradient(135deg,var(--glacier),var(--glacier-dark));
  }
  .step-cap-icon .step-ico{width:20px;height:20px;display:block}
  .step-cap-body{flex:1;min-width:0;line-height:1.3}
  .step-cap-kicker{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--glacier-dark)}
  .step-cap-title{font-size:17px;font-weight:900;color:var(--slate)}
  .step-cap-sub{font-size:12.5px;font-weight:700;color:var(--muted);margin-top:1px}
}

/* ---- Layout ---- */
.layout{max-width:1300px;margin:26px auto;padding:0 20px;display:grid;
  /* minmax(0,1fr) statt 1fr: erlaubt der Hauptspalte, unter die min-content-
     Breite ihres Inhalts (nowrap-Preise, Stepper) zu schrumpfen — sonst ragt
     auf schmalen Viewports die ganze Spalte nach rechts ueber den Rand. */
  grid-template-columns:minmax(0,1fr) 330px;gap:26px;align-items:start}
@media(max-width:900px){.layout{grid-template-columns:minmax(0,1fr)}}
.layout.no-side{grid-template-columns:minmax(0,1fr)}
.layout.no-side .side{display:none}
.panel{background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow);padding:30px}
.panel h2{font-size:24px;margin-bottom:4px}
.panel .lead{color:var(--muted);margin-bottom:24px;font-size:14px}
.panel .h2-date{color:var(--glacier-dark);font-size:13px;font-weight:700;margin-bottom:8px}

/* ---- Calendar (Variante B — Pill-Design) ---- */
/* Zentrierte Karte wie im Mockup; weiter, weicher, mit mehr Innenabstand. */
.bk-cal-panel{max-width:880px;margin-left:auto;margin-right:auto;
  border-radius:20px;padding:42px 44px 34px}
.bk-cal-panel h2{font-size:30px;font-weight:900;margin-bottom:8px}
.bk-cal-panel .lead{font-size:15px;margin-bottom:26px}

/* Top-Navigation: „Zurück" links, „Weiter" rechts (gerundete Quadrat-Buttons). */
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.cal-navbtn{width:42px;height:42px;border-radius:12px;border:1px solid var(--line);
  background:#fff;color:var(--glacier-dark);display:flex;align-items:center;justify-content:center;
  font-size:15px;transition:background .15s,border-color .15s,color .15s}
.cal-navbtn:hover:not(:disabled){background:var(--snow);border-color:var(--glacier-dark)}
.cal-navbtn:disabled{color:#d3d9e0;cursor:not-allowed}

.cal-wrap{display:flex;gap:42px;flex-wrap:wrap}
.cal{flex:1;min-width:288px}
.cal-mlabel{text-align:center;font-size:17px;font-weight:800;color:var(--slate);margin-bottom:16px}
/* column-gap:0 → die Range-Balken benachbarter Tage stossen luecklos aneinander. */
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:8px;column-gap:0}
.cal-grid .wd{font-size:12px;text-align:center;font-weight:800;color:var(--muted);padding-bottom:8px}
.cal-grid .wd:nth-child(6),.cal-grid .wd:nth-child(7){color:var(--slate-2)}

/* Aeussere Zelle: traegt den verbundenen Range-Balken; Pille sitzt mittig darauf.
   <button>-Reset, weil verfuegbare Tage als <button type="button"> rendern. */
.day{height:56px;display:flex;align-items:center;justify-content:center;
  background:none;border:none;font:inherit;color:inherit;padding:0;cursor:pointer}
.day-empty{height:56px}
.day.past,.day.closed{cursor:default}
.day.in-range{background:var(--bk-range)}
.day.is-start{background:var(--bk-range);border-radius:14px 0 0 14px}
.day.is-end{background:var(--bk-range);border-radius:0 14px 14px 0}

/* Innere Pille: runde Tages-/Preis-Kapsel. */
.day-pill{width:46px;height:46px;border-radius:50%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;font-weight:700;font-size:14px;line-height:1.1;
  background:transparent;color:var(--slate);transition:box-shadow .12s,background .12s}
.day-pill .p{font-size:10px;font-weight:600;color:var(--muted)}

/* Frei / Wochenende — nur wenn der Tag nicht Teil der Auswahl ist. */
.day.available:not(.endpoint):not(.in-range) .day-pill{background:var(--bk-free)}
.day.weekend:not(.endpoint):not(.in-range) .day-pill{background:var(--bk-weekend)}
.day.available:hover:not(.endpoint) .day-pill{box-shadow:0 0 0 2px var(--glacier-dark) inset}
/* Mitteltage der Range: Pille transparent, nur die Zahl auf dem Balken. */
.day.in-range:not(.endpoint) .day-pill{background:transparent}

/* Endpunkte (An-/Abreise): gefuellter Akzent-Kreis mit Schatten. */
.day.endpoint .day-pill{background:var(--glacier-dark);color:#fff;
  box-shadow:0 6px 14px rgba(42,143,160,.34)}
.day.endpoint .day-pill .p{color:rgba(255,255,255,.85)}

/* Vergangene / belegte Tage: gedimmt, keine Preiszeile. */
.day.past .day-pill,.day.closed .day-pill{color:#c4ccd6;background:transparent}

/* ---- Kalender-Legende (4 Eintraege) ---- */
.cal-legend{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-top:26px}
.cal-legend span{display:flex;align-items:center;gap:8px;font-size:13px;
  color:var(--slate-2);font-weight:600}
.lg-dot{width:18px;height:18px;border-radius:50%;display:inline-block;flex-shrink:0}
.lg-dot--endpoint{background:var(--glacier-dark)}
.lg-dot--free{background:var(--bk-free);border:1px solid var(--line)}
.lg-dot--weekend{background:var(--bk-weekend)}
.lg-bar{width:26px;height:14px;border-radius:7px;background:var(--bk-range);
  display:inline-block;flex-shrink:0}

/* ---- Summary-Zeile: Naechte-Pill · Zeitraum · „Weiter" ---- */
.cal-summary{display:flex;align-items:center;gap:14px;margin-top:22px;
  padding-top:22px;border-top:1px solid var(--line);flex-wrap:wrap}
.cal-summary-spacer{flex:1;min-width:20px}
.cal-nights{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:var(--glacier-dark);background:#e6f6f8;border:1px solid #c2e8ed;
  border-radius:8px;padding:7px 12px;white-space:nowrap}
.cal-nights[hidden]{display:none}
.cal-rangetext{font-size:15.5px;font-weight:700;color:var(--slate)}
.cal-rangetext.muted{font-weight:600;color:var(--muted)}
.cal-weiter{display:inline-flex;align-items:center;gap:9px;padding:13px 28px;border:none;
  border-radius:12px;font-size:15px;font-weight:800;background:var(--slate);color:#fff;
  box-shadow:0 4px 12px rgba(15,23,42,.25);transition:filter .15s}
.cal-weiter:hover:not(:disabled){filter:brightness(1.12)}
.cal-weiter:disabled{background:#e4e7ec;color:#9aa3af;cursor:not-allowed;box-shadow:none}

/* ---- Room cards ---- */
.room-card{border:1px solid var(--line);border-radius:12px;margin-bottom:18px;
  overflow:hidden;scroll-margin-top:16px}
.room-head{display:flex;justify-content:space-between;align-items:center;gap:14px;
  background:var(--snow);padding:12px 18px;border-bottom:1px solid var(--line);
  cursor:pointer;transition:background .15s}
.room-head:hover{background:#eef3f6}
.room-card.collapsed .room-head{border-bottom:none}
.room-head .rname{font-weight:700;color:var(--slate);white-space:nowrap;
  display:inline-flex;align-items:center;gap:10px}
/* Flat-Design-Badge vor "Zimmer N": einfarbige Flaeche, weisses Icon,
   kein Verlauf/Gloss/Schatten — ersetzt das plattformabhaengige Bett-Emoji */
.rname-ico{width:32px;height:32px;flex:0 0 auto;
  display:grid;place-items:center;border-radius:10px;
  color:#fff;font-size:14px;background:var(--glacier)}
.room-head-left{display:flex;align-items:center;gap:14px;min-width:0}
.room-head-right{display:flex;align-items:center;gap:18px;flex-shrink:0}
.room-summary-mini{font-size:12.5px;color:var(--muted);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.room-chevron{color:var(--slate-2);font-size:20px;line-height:1;
  width:34px;height:34px;display:grid;place-items:center;border-radius:8px;
  transition:transform .2s,background .15s}
.room-head:hover .room-chevron{background:#dde6ec}
.room-card.collapsed .room-chevron{transform:rotate(-90deg)}
.room-collapse{display:grid;grid-template-rows:1fr;
  transition:grid-template-rows .34s ease}
.room-card.collapsed .room-collapse{grid-template-rows:0fr}
.room-body{overflow:hidden;min-height:0}
.room-occ{display:flex;gap:26px;padding:16px 18px;flex-wrap:wrap;
  border-bottom:1px solid var(--line);background:#fbfdfe}
.room-period-field{min-width:240px}
.period-show,.period-edit{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.period-show{padding-top:5px}
.period-val{font-size:13px;font-weight:600;color:var(--slate)}
.period-edit input[type=date]{width:auto;padding:6px 8px;font-size:13px}
.link-sm{background:none;color:var(--glacier-dark);font-weight:700;font-size:12px;
  text-decoration:underline;padding:2px 0}
.period-badge{display:inline-block;font-size:9px;font-weight:800;text-transform:uppercase;
  letter-spacing:.4px;background:#fff4e0;color:var(--gold);
  border:1px solid #e8d3a3;padding:1px 7px;border-radius:20px;margin-left:6px}
.rt-section-title{font-weight:700;color:var(--slate);font-size:14px;padding:16px 18px 6px}
.rt-block{margin:0 18px 18px;border:1px solid var(--line);border-radius:12px;
  overflow:hidden;background:#fff}
.rt-head{display:flex;background:#fff}
.rt-photo{position:relative;flex:0 0 360px;min-height:276px;
  background:linear-gradient(135deg,var(--slate-2),var(--glacier));
  display:grid;place-items:center;color:rgba(255,255,255,.9);font-size:77px;
  cursor:pointer;transition:filter .15s}
.rt-photo:hover{filter:brightness(1.07)}
.rt-photo:hover .photo-tag{background:var(--glacier-dark)}
.rt-photo .photo-tag{position:absolute;bottom:10px;left:10px;font-size:10px;
  font-weight:700;text-transform:uppercase;letter-spacing:.5px;
  background:rgba(15,23,42,.55);color:#fff;padding:3px 10px;border-radius:20px}
.rt-info-wrap{flex:1;padding:18px 20px;display:flex;flex-direction:column}
.rt-name{font-family:Georgia,serif;font-size:21px;color:var(--slate)}
.rt-desc{font-size:13px;color:var(--muted);margin:8px 0 14px;line-height:1.6}
.rt-feats{display:flex;flex-wrap:wrap;gap:6px}
.rt-feats span{font-size:11px;background:var(--snow);border:1px solid var(--line);
  color:var(--slate-2);padding:3px 10px;border-radius:20px}
.rt-priceline{font-size:12px;color:var(--muted);margin-top:auto;padding-top:14px}
.rt-priceline b{color:var(--slate);font-size:16px;font-family:Georgia,serif}
@media(max-width:680px){.rt-head{flex-direction:column}
  .rt-photo{flex:none;min-height:210px;font-size:65px}}
.field label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.5px;color:var(--muted);margin-bottom:5px}
.field-hint{display:block;margin-top:5px;font-size:11px;line-height:1.4;color:var(--muted)}
select,input[type=text],input[type=email],input[type=tel],input[type=date],textarea{
  width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;
  font-size:14px;font-family:inherit;color:var(--ink);background:#fff}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--glacier-dark);
  box-shadow:0 0 0 3px rgba(66,203,221,.18)}
.stepper-num{display:flex;align-items:center;gap:10px}
.stepper-num button{width:30px;height:30px;border-radius:7px;border:1px solid var(--line);
  background:#fff;font-size:17px;font-weight:700;color:var(--slate-2);line-height:1}
.stepper-num button:hover{border-color:var(--glacier-dark);color:var(--glacier-dark)}
.stepper-num .val{min-width:22px;text-align:center;font-weight:700;font-size:15px}
.child-ages{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.child-ages select{width:120px}
.link-btn{background:none;color:var(--glacier-dark);font-weight:700;font-size:14px;
  padding:6px 0;text-decoration:underline}
.ghost-btn{border:1px dashed var(--glacier-dark);color:var(--glacier-dark);background:#f0fcfd;
  padding:12px;border-radius:10px;width:100%;font-weight:700;font-size:14px}
.remove-x{background:none;color:var(--muted);font-size:13px;font-weight:700}
.remove-x:hover{color:#c0392b}

/* ---- Angebotsliste pro Zimmertyp (einklappbar, Option B) ----
   Der Zimmertyp-Kopf bleibt sichtbar; nur die Raten klappen hinter einer
   Toggle-Leiste mit Anzahl-Badge. Aufklapp-Animation via grid-rows 0fr→1fr. */
.rt-offers-toggle{
  width:100%;display:flex;align-items:center;justify-content:center;gap:10px;
  padding:13px 16px;border-top:1px solid var(--line);background:#fbfdfe;
  color:var(--slate-2);font-weight:700;font-size:13.5px;transition:background .15s}
.rt-offers-toggle:hover{background:#eef3f6}
.rt-offers-count{background:var(--glacier-dark);color:#fff;font-size:11px;
  font-weight:800;border-radius:20px;padding:2px 8px}
.rt-offers-chevron{font-size:12px;color:var(--muted);transition:transform .2s}
.rt-block.offers-open .rt-offers-chevron{transform:rotate(180deg)}
.rt-offers-collapse{display:grid;grid-template-rows:0fr;
  transition:grid-template-rows .3s ease}
.rt-block.offers-open .rt-offers-collapse{grid-template-rows:1fr}
.rt-offers-inner{overflow:hidden;min-height:0}
/* Die Toggle-Leiste traegt die Trennlinie bereits — Offers ohne Oberkante. */
.rt-offers-inner .offers{border-top:none}
@media(prefers-reduced-motion:reduce){.rt-offers-collapse{transition:none}}

/* ---- Offers ---- */
.offers{display:flex;flex-direction:column;gap:10px;padding:14px;
  border-top:1px solid var(--line);background:#fbfdfe}
.offer{border:2px solid var(--line);border-radius:10px;cursor:pointer;background:#fff;
  position:relative;transition:border-color .15s,box-shadow .15s}
.offer:hover{border-color:var(--glacier)}
.offer.selected{border-color:var(--glacier-dark);box-shadow:0 0 0 3px rgba(66,203,221,.2)}

/* Pin-Toggle oben rechts: alternative zum Hover-Intent. Klick pinnt das
   Detail-Panel offen (Hover-Close-Timer wird im JS uebersprungen, solange
   .is-detail-pinned gesetzt ist). Sichtbar nur bei .has-detail; auf der
   gepinnten Karte wird der Button dezent eingefaerbt. */
.offer-detail-toggle{
  position:absolute;top:6px;right:8px;z-index:2;
  width:24px;height:24px;padding:0;display:inline-flex;
  align-items:center;justify-content:center;
  background:transparent;border:0;border-radius:6px;
  color:var(--muted);cursor:pointer;line-height:1;
  transition:color .12s,background .12s;
}
.offer-detail-toggle:hover{color:var(--glacier-dark);background:rgba(66,203,221,.10)}
.offer-detail-toggle:focus-visible{
  outline:none;color:var(--glacier-dark);
  box-shadow:0 0 0 2px rgba(66,203,221,.35);
}
.offer.is-detail-pinned .offer-detail-toggle{color:var(--glacier-dark)}
.offer.is-detail-pinned .offer-detail-toggle i{transform:rotate(180deg)}
.offer-detail-toggle i{font-size:14px;transition:transform .2s ease}
.offer-main{display:flex;align-items:center;gap:14px;padding:13px 16px}
.offer-badge{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;
  padding:4px 9px;border-radius:20px;color:#fff;flex-shrink:0;white-space:nowrap}
.offer-badge.pop{background:var(--gold)}
.offer-titles{flex:1;min-width:0}
.offer-titles .oname{font-family:Georgia,serif;font-size:16px;color:var(--slate)}
.offer-titles .oteaser{font-size:12px;color:var(--muted);margin-top:2px}
.offer-price{text-align:right;flex-shrink:0;display:flex;align-items:center;gap:12px}
.offer-price .pdate{font-size:11px;color:var(--muted)}
.offer-price .pcol .big{font-size:20px;font-weight:800;color:var(--slate);line-height:1.15}
.offer-price .pcol .small{font-size:10.5px;color:var(--muted)}
.offer-pick{flex-shrink:0;padding:9px 16px;border-radius:8px;background:var(--snow);
  font-weight:700;font-size:12.5px;color:var(--slate-2);white-space:nowrap;text-align:center}
.offer.selected .offer-pick{background:var(--glacier-dark);color:#fff}
/* Hover-Detail-Panel auf Offer-Cards: Storno-/Anzahlungs-Policies oben,
   Inklusivleistungen als Tag-Pills darunter. Auf-/Zuklappen via .is-detail-open
   (vom JS gesetzt, Hover-Intent 400 ms). Auf Touch-Geraeten dauerhaft offen. */
.offer-detail{
  max-height:0;opacity:0;overflow:hidden;
  transition:max-height .35s ease, opacity .25s ease, padding .35s ease;
  border-top:0 solid transparent;
}
.offer.is-detail-open .offer-detail,
.offer.is-detail-pinned .offer-detail{
  max-height:2400px;opacity:1;
  border-top:1px dashed var(--line);
}
/* Auf Touch-Geraeten war das Detail-Panel frueher dauerhaft offen (hover:none).
   Jetzt: auch auf Mobile eingeklappt, Klick auf den i-Toggle pinnt es offen
   (.is-detail-pinned). Das haelt die Liste auf schmalen Screens kompakt. */

.offer-detail-policies{
  display:grid;grid-template-columns:1fr 1fr;gap:10px;
  padding:12px 16px 4px;
}
.offer-policy{
  display:flex;align-items:center;gap:10px;
  background:var(--snow);border:1px solid var(--line);
  border-radius:10px;padding:9px 12px;
  text-align:left;width:100%;
  font:inherit;color:inherit;
  transition:border-color .12s,background .12s,box-shadow .12s;
}
button.offer-policy{cursor:pointer}
button.offer-policy:hover{
  background:#fff;border-color:var(--glacier);
  box-shadow:0 2px 10px rgba(42,143,160,.10);
}
button.offer-policy:focus-visible{
  outline:none;border-color:var(--glacier-dark);
  box-shadow:0 0 0 3px rgba(66,203,221,.25);
}
.offer-policy-caret{
  margin-left:auto;color:var(--muted);font-size:11px;
  transition:transform .15s,color .12s;
}
button.offer-policy:hover .offer-policy-caret{
  color:var(--glacier-dark);transform:translateX(2px);
}
.offer-policy-icon{
  width:30px;height:30px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--slate);color:#fff;border-radius:8px;font-size:13px;
}
.offer-policy-text{display:flex;flex-direction:column;min-width:0;gap:1px;line-height:1.25}
.offer-policy-label{
  font-size:9.5px;font-weight:700;letter-spacing:.6px;
  color:var(--muted);text-transform:uppercase;
}
.offer-policy-value{
  font-size:13px;font-weight:700;color:var(--slate);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

.offer-detail-tags{padding:6px 16px 14px}
.offer-detail-head{
  display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  font-size:12px;font-weight:700;color:var(--slate-2);
  padding:8px 0 10px;border-bottom:1px solid var(--line);margin-bottom:10px;
}
.offer-detail-head i{color:var(--ok)}
.offer-detail-head-sub{font-weight:400;color:var(--muted);font-size:11.5px}
.offer-tagblock{margin-top:10px}
.offer-tagblock:first-child{margin-top:0}
.offer-tagblock-title{
  font-size:10px;font-weight:800;letter-spacing:.8px;
  color:var(--slate);text-transform:uppercase;margin-bottom:6px;
}
.offer-tagblock-pills{display:flex;flex-wrap:wrap;gap:6px}
.offer-tag-pill{
  display:inline-block;
  background:var(--snow);border:1px solid var(--line);
  color:var(--slate);font-size:13.5px;line-height:1.4;
  padding:5px 12px;border-radius:999px;
}

/* Auswahl-Zeile: der explizite "Angebot auswaehlen"-Button. Liegt BEWUSST
   ausserhalb des .offer-detail-Collapse (kein overflow:hidden/max-height) —
   sonst ist der Button auf iOS nicht zuverlaessig antippbar. Sichtbar nur,
   wenn die Karte aufgeklappt ist (Hover-Open desktop / Tap-Pin auf Touch). */
.offer-select-row{display:none;justify-content:flex-end;padding:12px 16px 14px;
  border-top:1px dashed var(--line)}
.offer.is-detail-open .offer-select-row,
.offer.is-detail-pinned .offer-select-row{display:flex}
.offer-select-btn{
  background:var(--glacier-dark);color:#fff;border:0;cursor:pointer;
  font:inherit;font-weight:800;font-size:13.5px;
  padding:10px 20px;border-radius:8px;transition:filter .12s,background .12s;
  /* iOS: kein 300ms-Tap-Delay / Doppeltipp-Zoom auf dem Auswahl-Button. */
  touch-action:manipulation;
}
.offer-select-btn:hover{filter:brightness(1.06)}
.offer-select-btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(66,203,221,.4)}
.offer-selected-chip{
  display:inline-flex;align-items:center;gap:7px;
  color:var(--glacier-dark);font-weight:800;font-size:13.5px;
}
.offer-selected-chip i{color:var(--ok)}
/* Header-Chip "Mehr Infos ▾": dezenter Aufklapp-Hinweis statt Auswahl-Pill. */
.offer-pick--hint{
  background:transparent;color:var(--muted);font-weight:700;font-size:12px;
  display:inline-flex;align-items:center;gap:6px;
}
.offer-pick--hint i{font-size:11px;transition:transform .2s ease}
.offer.is-detail-open .offer-pick--hint i,
.offer.is-detail-pinned .offer-pick--hint i{transform:rotate(180deg)}

@media(max-width:620px){
  /* Beim Wrap soll der Inhalt links-buendig sein (sonst rutscht der Preis
     beim Wrap nach rechts und der Badge sieht angeklebt aus). */
  .offer-main{flex-wrap:wrap;align-items:flex-start}
  /* min-width zwingt einen langen Raten-Header (z.B. "Nonrefundable HP")
     dazu, den Preis in die naechste Flex-Zeile zu schieben, statt ihn zu
     ueberdecken. Solange der Header kurz ist, bleibt alles nebeneinander. */
  .offer-titles{min-width:160px}
  .offer-price{text-align:left}
  .offer-detail-policies{grid-template-columns:1fr;padding:10px 12px 4px}
  .offer-detail-tags{padding:6px 12px 12px}
}

/* ---- Extras ---- */
.extras-room{border:1px solid var(--line);border-radius:12px;margin-bottom:16px}
.extra{display:flex;align-items:center;gap:14px;padding:13px 16px;border-bottom:1px solid var(--line)}
.extra:last-child{border-bottom:none}
.extra .ico{width:40px;height:40px;border-radius:9px;background:#eef6f8;display:grid;
  place-items:center;font-size:18px;flex-shrink:0}
/* min-width:0 + Umbruch: ohne das erzwingt der Name die min-content-Breite und
   die Zeile (samt nowrap-Preis/Stepper) sprengt das Panel auf schmalen Screens. */
/* break-word statt anywhere: bricht nur im Notfall (Ueberlang-Wort), nicht
   mitten in normalen Titeln wie "Tresorversicherung" */
.extra .etext{flex:1;min-width:0;overflow-wrap:break-word}
.extra .etext .en{font-weight:700;font-size:14px;color:var(--slate)}
.extra .etext .ed{font-size:12px;color:var(--muted)}
.extra .eprice{font-weight:700;font-size:13px;color:var(--slate-2);white-space:nowrap}
.extra .ico.has-img{background:none;padding:0;overflow:hidden}
.extra .ico.has-img img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}
@media(max-width:620px){
  /* Schmale Screens: Titel laeuft oben ueber die volle Breite weiter
     (statt in der schmalen Spalte mitten im Wort zu brechen) —
     Preis + Stepper wandern in eine eigene Zeile darunter. */
  .extra{display:grid;grid-template-columns:40px minmax(0,1fr) auto;
    grid-template-areas:"ico text text" "ico price step";
    column-gap:14px;row-gap:8px;align-items:center}
  .extra .ico{grid-area:ico}
  .extra .etext{grid-area:text}
  .extra .eprice{grid-area:price;justify-self:start;font-size:14px}
  .extra .stepper-num{grid-area:step;justify-self:end}
}

/* ---- Insurance ---- */
.ins-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:760px){.ins-grid{grid-template-columns:1fr}}
.ins{border:2px solid var(--line);border-radius:12px;padding:18px;cursor:pointer;transition:.15s}
.ins:hover{border-color:var(--glacier)}
.ins.selected{border-color:var(--glacier-dark);box-shadow:0 0 0 3px rgba(66,203,221,.2)}
.ins .in{font-family:Georgia,serif;font-size:17px;color:var(--slate)}
.ins .ip{font-size:13px;color:var(--muted);margin:4px 0 10px}
.ins ul{list-style:none;font-size:12px;color:var(--muted)}
.ins ul li{padding:2px 0 2px 16px;position:relative}
.ins ul li:before{content:"\2022";position:absolute;left:2px;color:var(--glacier-dark)}
.ins .iprice{margin-top:12px;font-weight:800;font-size:16px;color:var(--slate)}
.ins.selected .iprice{color:var(--glacier-dark)}
.ins .iprice-free{font-weight:600;font-size:13px;color:var(--muted)}

/* ---- Summary ---- */
.sum-line{display:flex;justify-content:space-between;padding:11px 0;
  border-bottom:1px solid var(--line);font-size:14px}
.sum-line .sl-main{font-weight:600;color:var(--slate)}
.sum-line .sl-sub{font-size:12px;color:var(--muted)}
.sum-total{display:flex;justify-content:space-between;padding:16px 0 4px;
  font-family:Georgia,serif;font-size:22px;color:var(--slate);font-weight:700}
.availbox{display:flex;gap:12px;align-items:center;background:#eafaf1;
  border:1px solid #bfe6cf;border-radius:10px;padding:14px;margin:20px 0;font-size:14px}
.availbox .adot{width:10px;height:10px;border-radius:50%;background:var(--ok);flex-shrink:0}
/* Fehler-Variante (Pflichtfeld fehlt, CSRF, Persistenz): roter Akzent statt Gruen. */
.availbox--err{background:#fdeceb;border-color:#f3c6c2}
.adot--err{background:#c0392b !important}

/* Mini-Utility-Klassen — ersetzen vereinzelt verbliebene Inline-Styles.
   Bewusst kurz und semantisch genug benannt, um wiederverwendbar zu sein. */
.hl-gold{color:var(--gold)}
.fw-700{font-weight:700}
.fw-normal{font-weight:400}
.fs-sm{font-size:12px}
.fs-xs{font-size:11px}
.mt-xs{margin-top:4px}
.notice-sm{font-size:12px;margin-top:14px}
.no-offers-msg{padding:10px 8px}
.sum-val{font-weight:700}
.sum-disclaimer{text-align:right;font-size:12px}
/* Reiseversicherung PRO ZIMMER: Praemienzeile direkt unter dem Zimmer.
   Die Zimmer-Zeile gibt ihren unteren Rahmen an die RV-Zeile darunter ab,
   damit Zimmer + Versicherung optisch ein Block bleiben. */
.sum-line--withins{border-bottom:none;padding-bottom:2px}
.sum-line--ins{padding:2px 0 11px}
.sum-line--ins .sl-sub{padding-left:14px}
.sum-val--ins{font-weight:600;font-size:13px;color:var(--glacier-dark)}

/* Rabattcode (Schritt 5): gruene Positionszeile bei aktivem Rabatt +
   Eingabefeld mit Einloesen-Button und Inline-Feedback (kein Popup). */
.sum-line--rabatt .sl-main{color:#15803d}
.sum-val--rabatt{color:#15803d}
.srow--rabatt,.srow--rabatt .sk{color:#15803d}
.rc-remove{border:none;background:none;color:#9ca3af;font-size:16px;line-height:1;
  cursor:pointer;padding:0 4px;vertical-align:middle}
.rc-remove:hover{color:#c0392b}
.rc-box{padding:12px 0;border-bottom:1px solid var(--line)}
.rc-label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}
.rc-row{display:flex;gap:8px}
.rc-input{flex:1;max-width:260px;padding:8px 10px;border:1px solid var(--line);
  border-radius:8px;font-size:14px}
.rc-input:focus{outline:none;border-color:var(--glacier-dark)}
.rc-apply{padding:8px 16px;border:1px solid var(--glacier-dark);border-radius:8px;
  background:#fff;color:var(--glacier-dark);font-size:14px;font-weight:600;cursor:pointer}
.rc-apply:hover{background:var(--glacier-dark);color:#fff}
.rc-msg{margin-top:8px;font-size:13px;color:#c0392b}

/* Form-Validation: rote Border bei Pflichtfeld-Fehlern (vom Server gesetzt). */
.is-invalid{border-color:#c0392b !important}
input[type="checkbox"].is-invalid{outline:2px solid #c0392b;outline-offset:1px}

/* ---- Guest form ---- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:600px){.form-grid{grid-template-columns:1fr}}
/* Land-Combobox (Schritt 6): tippen filtert die Liste — Look wie kort-combo
   im Online-Check-in, Farben aus der Booking-Palette. */
.bk-combo{position:relative}
.bk-combo .bk-combo-search{padding-right:32px;cursor:text}
.bk-combo-caret{position:absolute;right:12px;top:50%;transform:translateY(-50%);
  font-size:12px;color:var(--muted);pointer-events:none;transition:transform .15s}
.bk-combo.is-open .bk-combo-caret{transform:translateY(-50%) rotate(180deg)}
.bk-combo-list{display:none;position:absolute;z-index:60;top:calc(100% + 4px);left:0;right:0;
  max-height:260px;overflow-y:auto;padding:4px;background:#fff;
  border:1px solid var(--line);border-radius:10px;
  box-shadow:0 8px 24px rgba(15,23,42,.14);-webkit-overflow-scrolling:touch}
.bk-combo.is-open .bk-combo-list{display:block}
.bk-combo-opt{padding:9px 11px;font-size:14px;line-height:1.3;border-radius:7px;
  cursor:pointer;color:var(--ink)}
.bk-combo-opt[hidden]{display:none}
.bk-combo-opt.is-active,.bk-combo-opt:hover{background:rgba(66,203,221,.16)}
.span2{grid-column:1 / -1}
/* ---- Consent-Zeilen: iOS-Style-Switches (AGB/Datenschutz, Newsletter,
   abweichende Privatadresse). Das Input bleibt type=checkbox (Form-POST
   unveraendert) — nur die Optik ist der iOS-Toggle. ---- */
.checkrow{display:flex;gap:14px;align-items:center;font-size:15px;color:var(--ink);
  margin-top:16px;cursor:pointer;-webkit-tap-highlight-color:transparent;
  padding:6px 0;user-select:none;-webkit-user-select:none}
.checkrow-text{flex:1;line-height:1.45;min-width:0}
.checkrow input[type=checkbox]{
  -webkit-appearance:none;appearance:none;
  flex:0 0 auto;width:52px;height:32px;margin:0;
  border-radius:32px;border:none;background:#d1d5db;
  position:relative;cursor:pointer;
  transition:background .25s ease;
  box-shadow:inset 0 0 0 1px rgba(15,23,42,.06)}
.checkrow input[type=checkbox]::after{
  content:"";position:absolute;top:2px;left:2px;width:28px;height:28px;
  border-radius:50%;background:#fff;
  box-shadow:0 3px 8px rgba(15,23,42,.28),0 1px 1px rgba(15,23,42,.16);
  transition:transform .25s cubic-bezier(.2,.9,.35,1.1)}
.checkrow input[type=checkbox]:checked{background:var(--glacier)}
.checkrow input[type=checkbox]:checked::after{transform:translateX(20px)}
.checkrow input[type=checkbox]:active::after{width:31px}
.checkrow input[type=checkbox]:checked:active::after{transform:translateX(17px)}
.checkrow input[type=checkbox]:focus-visible{outline:2px solid var(--glacier);outline-offset:3px}
/* Pflicht-Consent nicht bestaetigt (Server-Validierung): roter Ring + Track */
.checkrow input[type=checkbox].is-invalid{background:#f3c7c2;
  outline:2px solid #c0392b;outline-offset:2px}
.checkrow input[type=checkbox].is-invalid:checked{background:var(--glacier);outline:none}
@media(prefers-reduced-motion:reduce){
  .checkrow input[type=checkbox],.checkrow input[type=checkbox]::after{transition:none}}

/* ---- Footer nav ---- */
.navbar{display:flex;justify-content:space-between;margin-top:24px;padding-top:20px;
  border-top:1px solid var(--line)}
.nav-back{background:none;color:var(--muted);font-weight:700;font-size:14px;padding:12px 8px;
  text-decoration:none;display:inline-flex;align-items:center}
.nav-back:hover{color:var(--slate)}
.nav-next{background:var(--slate);color:#fff;font-weight:800;font-size:14px;
  padding:13px 30px;border-radius:9px}
.nav-next:hover:not(:disabled){background:var(--slate-2)}
.nav-next:disabled{opacity:.4;cursor:not-allowed}
/* Zwei CTAs (Schritt 6): "unverbindlich anfragen" + "verbindlich buchen".
   Anfrage bleibt slate; Buchen wird als positive Primaeraktion gruen
   hervorgehoben (Online-Buchung mit Sofort-Bestaetigung). */
.nav-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.nav-next--buchen{background:var(--ok);display:inline-flex;align-items:center;gap:8px}
.nav-next--buchen:hover:not(:disabled){background:var(--ok);filter:brightness(.93)}

/* Buchbarkeits-Hinweis unter den CTAs (Schritt 5/6): warum keine Sofortbuchung
   moeglich ist + wie der Gast sie ermoeglicht. Dezenter Amber-Ton. */
.buchbar-hint{margin:12px 0 0;padding:10px 14px;border:1px solid #f0d8a8;
  background:#fdf6e9;border-radius:10px;font-size:13px;line-height:1.45;color:#7a5b1e;
  display:flex;gap:9px;align-items:flex-start}
.buchbar-hint i{color:#c8901f;margin-top:2px;flex-shrink:0}

/* Rabattcode-Deeplink-Banner (?rc=…) unterhalb des Steppers: bestaetigt dem
   Newsletter-Gast, dass sein Code hinterlegt ist. Dezenter Gruen-Ton. */
.rc-prefill-banner{max-width:1180px;margin:10px auto 0;padding:8px 14px;
  border:1px solid #bbf7d0;background:#f0fdf4;border-radius:8px;font-size:.9em;
  line-height:1.45;color:#166534;display:flex;gap:9px;align-items:center}
.rc-prefill-ico{flex-shrink:0}
@media(max-width:1220px){.rc-prefill-banner{margin-left:20px;margin-right:20px}}
@media(max-width:640px){.rc-prefill-banner{margin-left:16px;margin-right:16px}}

/* ---- Sidebar ---- */
.side{position:sticky;top:20px}
.side .panel{padding:0;overflow:hidden}
.side .sh{background:var(--slate);color:#fff;padding:16px 20px}
.side .sh .t{font-family:Georgia,serif;font-size:16px}
.side .sh .d{font-size:12px;color:#9fb3c4;margin-top:2px}
.side .sbody{padding:18px 20px}
.side .srow{display:flex;justify-content:space-between;font-size:13px;padding:6px 0;color:var(--ink)}
.side .srow .sk{color:var(--muted)}
.side .srow.sub{padding-left:12px;font-size:12px}
.side hr{border:none;border-top:1px solid var(--line);margin:10px 0}
.side .grand{display:flex;justify-content:space-between;align-items:baseline;
  background:var(--snow);margin:14px -20px -18px;padding:16px 20px}
.side .grand .gk{font-weight:700;color:var(--slate)}
.side .grand .gv{font-family:Georgia,serif;font-size:24px;font-weight:700;color:var(--slate)}
.side .deposit{font-size:11px;color:var(--muted);text-align:right;margin-top:3px}
.side .empty{color:var(--muted);font-size:13px;font-style:italic}

/* ---- Confirmation ---- */
.confirm{text-align:center;padding:30px 10px}
.confirm .ci{width:74px;height:74px;border-radius:50%;background:#eafaf1;color:var(--ok);
  display:grid;place-items:center;font-size:38px;margin:0 auto 18px}
.confirm h2{font-size:26px;margin-bottom:8px}
.confirm p{color:var(--muted);max-width:440px;margin:0 auto 8px}

.pill{display:inline-block;font-size:10px;font-weight:800;text-transform:uppercase;
  letter-spacing:.5px;background:#eef6f8;color:var(--glacier-dark);padding:2px 8px;border-radius:20px}

/* ---- Platzhalter-Panel (noch nicht umgesetzte Schritte) ---- */
.placeholder{text-align:center;padding:40px 16px;color:var(--muted)}
.placeholder .pi{font-size:40px;margin-bottom:14px}

/* ---- AJAX-Ladezustand ---- */
.is-loading{position:relative;pointer-events:none}
.is-loading:after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.55);
  border-radius:inherit}

/* ---- Schmale Viewports / 320px ---- */
@media(max-width:560px){
  .topbar{padding:11px 14px;gap:8px}
  .topbar .trust{font-size:11px;gap:8px 12px}
  .brand .mark{font-size:19px}
  /* Mobil: Logo deutlich kleiner und zentriert. max-width UND max-height
     kappen hier bewusst die im Window eingestellte (Desktop-)Größe — sonst
     dominiert ein großes Logo die Topbar, der linke Grid-Track (Home-Button)
     kollabiert und das Logo rutscht nach links statt zu zentrieren. */
  .tb-logo img{max-width:120px;max-height:48px}
  .topbar-right{gap:4px}
  .tb-icon{width:34px;height:34px}
  .layout{padding:0 8px;margin:12px auto;gap:14px}
  .panel{padding:14px 11px}
  .panel h2{font-size:21px}
  .room-card{margin-bottom:13px}
  .rt-block{margin:0 8px 12px}
  .rt-info-wrap{padding:12px 11px}
  .offers{padding:9px;gap:8px}
  .room-occ{gap:12px 18px;padding:11px}
  .room-period-field{min-width:0;flex:1 1 100%}
  .room-head{padding:9px 11px;gap:8px}
  .room-head-right{gap:10px}
  .rt-section-title{padding:11px 11px 4px}
  .rt-offers-toggle{padding:10px 12px}
  .offer-main{padding:10px 11px;gap:9px}
  .offer-pick{order:5;flex:1 1 100%}
  .offer-select-row{padding:8px 11px 11px}
  .offer-detail-policies{padding:9px 11px 2px}
  .offer-detail-tags{padding:4px 11px 10px}
  .cal-wrap{gap:16px}
  .navbar{flex-wrap:wrap;gap:10px}
  .nav-next{padding:13px 22px}
  /* Variante-B-Kalender: kompakter auf schmalen Viewports. */
  .bk-cal-panel{padding:20px 14px 18px;border-radius:16px}
  .bk-cal-panel h2{font-size:23px}
  .bk-cal-panel .lead{font-size:14px;margin-bottom:18px}
  .cal{min-width:0;flex-basis:100%}
  .day{height:50px}
  .day-empty{height:50px}
  .day-pill{width:42px;height:42px}
  .cal-legend{gap:14px;margin-top:20px}
  .cal-summary{gap:10px}
  .cal-weiter{padding:12px 22px}
}

/* ============ Phase 8.5 — Zimmerbilder, Lightbox, Smoothness ============ */

/* ---- Echtes Zimmerfoto im rt-photo-Block ---- */
.rt-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rt-photo[data-gallery]{cursor:pointer}

/* ---- Foto-Lightbox (Fancybox-Look: neutraler dunkler Backdrop) ---- */
.lightbox{position:fixed;inset:0;z-index:1000;background:rgba(24,24,27,.95);
  display:flex;align-items:center;justify-content:center;padding:24px 18px}
.lightbox.hidden{display:none}
.lb-close{position:absolute;top:16px;right:18px;width:42px;height:42px;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;font-size:24px;display:grid;place-items:center}
.lb-close:hover{background:rgba(255,255,255,.28)}
.lb-stage{width:min(880px,100%)}
.lb-title{color:#fff;font-family:Georgia,serif;font-size:21px;text-align:center;margin-bottom:12px}
.lb-imgwrap{position:relative}
.lb-img{position:relative;aspect-ratio:16/10;border-radius:13px;overflow:hidden;
  background:linear-gradient(135deg,#2a2a2e,#3a3a40);
  box-shadow:0 22px 55px rgba(0,0,0,.55)}
.lb-img img{width:100%;height:100%;object-fit:cover}
.lb-cap{position:absolute;left:0;right:0;bottom:0;color:#fff;font-size:14px;font-weight:600;
  text-align:center;padding:34px 18px 14px;
  background:linear-gradient(transparent,rgba(0,0,0,.85))}
.lb-arrow{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;
  border-radius:50%;background:rgba(255,255,255,.16);color:#fff;font-size:24px;
  display:grid;place-items:center}
.lb-arrow:hover{background:rgba(255,255,255,.32)}
.lb-prev{left:-60px}
.lb-next{right:-60px}
.lb-thumbs{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin-top:15px}
.lb-thumb{width:76px;height:50px;border-radius:7px;cursor:pointer;object-fit:cover;
  border:2px solid transparent;opacity:.5;transition:.15s}
.lb-thumb:hover{opacity:.85}
.lb-thumb.active{opacity:1;border-color:#fff}
.lb-counter{color:#bbb;font-size:11.5px;text-align:center;margin-top:11px}
@media(max-width:560px){
  .lb-prev{left:6px}
  .lb-next{right:6px}
  .lb-arrow{width:40px;height:40px;font-size:20px;background:rgba(0,0,0,.5)}
  .lb-thumb{width:58px;height:39px}
}

/* ---- Smoothness: sanfter Panel-Auftritt + AJAX-Übergang ---- */
@keyframes bk-fade-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.panel{animation:bk-fade-in .28s ease both}
[data-rooms]{transition:opacity .18s ease}
[data-rooms].is-loading{opacity:.55}
@media(prefers-reduced-motion:reduce){
  .panel{animation:none}
  .room-collapse{transition:none}
}

/* ============================================================
 * Policy-Modal (Storno / Anzahlung) — Look-and-Feel angelehnt an
 * .korte-modal aus korrespondenz_public.css, mit Booking-Variablen.
 * Wird vom JS aus den versteckten .bk-modal-template-Divs in den
 * #bk-policy-modal-host kopiert und per .is-open sichtbar gemacht.
 * ============================================================ */
.bk-modal-template{display:none}

.bk-modal-host{
  position:fixed;inset:0;z-index:1000;
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  background:rgba(15,23,42,.55);
  opacity:0;pointer-events:none;
  transition:opacity .2s ease;
}
.bk-modal-host.is-open{opacity:1;pointer-events:auto}
.bk-modal-host[hidden]{display:none !important}

.bk-modal{
  max-width:620px;width:100%;max-height:calc(100vh - 40px);
  background:#fff;border-radius:12px;overflow:hidden;
  box-shadow:0 20px 60px rgba(15,23,42,.28);
  color:var(--ink);
  display:flex;flex-direction:column;
  transform:translateY(8px) scale(.98);
  transition:transform .22s ease;
}
.bk-modal-host.is-open .bk-modal{transform:none}

.bk-modal-header{
  position:relative;display:flex;align-items:center;gap:14px;
  padding:18px 64px 18px 26px;
  background:linear-gradient(135deg,var(--slate) 0%,var(--slate-2) 100%);
  color:#fff;flex-shrink:0;
}
.bk-modal-close{
  position:absolute;top:50%;right:16px;transform:translateY(-50%);
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;padding:0;border-radius:8px;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.12);color:#fff;
  font-size:14px;cursor:pointer;
  transition:background .12s,border-color .12s;
}
.bk-modal-close:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.28)}
.bk-modal-close:focus-visible{outline:2px solid rgba(255,255,255,.45);outline-offset:2px}

.bk-modal-header-icon{
  flex:0 0 auto;width:38px;height:38px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:10px;font-size:15px;color:#fff;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.10);
}
.bk-modal-header-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.bk-modal-header-kicker{
  font-size:10.5px;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:rgba(255,255,255,.65);line-height:1.1;
}
.bk-modal-header-titel{
  margin:0;font-family:Georgia,serif;
  font-size:18px;font-weight:600;color:#fff;
  letter-spacing:.01em;line-height:1.3;
}

.bk-modal-body{
  padding:22px 26px 24px;background:#fff;overflow-y:auto;
}
.bk-modal-list{margin:0;padding:0;list-style:none;
  display:flex;flex-direction:column;gap:6px}
.bk-modal-list li{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;
  background:var(--snow);border:1px solid var(--line);
  border-left:3px solid var(--slate);
  border-radius:8px;
  font-size:13px;line-height:1.5;color:var(--slate-2);
  transition:background .12s,border-color .12s;
}
.bk-modal-list li:hover{background:#fff;border-color:#cfd9e0}

.bk-modal-beschreibung{
  margin:20px 0 0;padding-top:18px;
  border-top:1px solid var(--line);
  font-size:13px;line-height:1.65;color:#4b5563;
}
.bk-modal-beschreibung p{margin:0 0 10px}
.bk-modal-beschreibung p:last-child{margin-bottom:0}
.bk-modal-beschreibung ul,
.bk-modal-beschreibung ol{margin:8px 0 14px;padding:0;list-style:none}
.bk-modal-beschreibung li{position:relative;padding:4px 0 4px 18px;line-height:1.55}
.bk-modal-beschreibung li::before{
  content:'';position:absolute;left:0;top:12px;
  width:5px;height:5px;border-radius:50%;
  background:var(--muted);
}
.bk-modal-beschreibung a{color:var(--glacier-dark);text-decoration:underline;text-underline-offset:2px}
.bk-modal-beschreibung strong{color:var(--slate)}

@media(max-width:560px){
  .bk-modal-host{padding:12px}
  .bk-modal-header{padding:14px 56px 14px 18px;gap:12px}
  .bk-modal-header-titel{font-size:16px}
  .bk-modal-body{padding:18px 18px 20px}
}
@media(prefers-reduced-motion:reduce){
  .bk-modal-host,.bk-modal{transition:none}
}

/* ============================================================
 * Accessibility-Polish (Phase 8.8.6)
 * Globaler Focus-Visible-Stil fuer alle Klick-Targets — gilt nur bei
 * Tastatur-Navigation (nicht beim Mausklick), so wie es :focus-visible
 * vorsieht. Brand-Farbe als Outline → wirkt mit Theme zusammen.
 * ============================================================ */
.day:focus-visible,
.nav-back:focus-visible, .nav-next:focus-visible,
.room-head:focus-visible, .ghost-btn:focus-visible,
.offer:focus-visible, .ins-card:focus-visible,
.lang-item:focus-visible, .lb-close:focus-visible,
.lb-arrow:focus-visible, .lb-thumb:focus-visible,
.stepper-num button:focus-visible, .extras-room button:focus-visible,
.remove-x:focus-visible, .btn-book:focus-visible, .btn-enquire:focus-visible,
.kort-print-btn:focus-visible {
  outline:2px solid var(--glacier-dark);
  outline-offset:2px;
}

/* ============================================================
 * Responsiveness-Fixes (Phase 8.8.6)
 * ============================================================ */
/* Stepper-Responsiveness wird vollstaendig im Stepper-Block (oben) geregelt:
   < 820px → kompakte Icon-Spur + Caption-Box. */
/* Trust-Bar auf sehr schmalen Viewports (<= 480 px) entfernen — vermeidet
   das Untereinander-Stapeln Brand/Trust/Sprach-Switcher. */
@media(max-width:480px){
  .topbar .trust{display:none}
  .topbar{gap:6px}
  /* Home-Label ausblenden — nur der Pfeil bleibt (kleiner Home-Button links). */
  .tb-home-label{display:none}
  .tb-home{padding:6px 8px}
  /* Logo auf iPhone-Breiten noch kompakter, damit Home-Button (links) und
     Mail/Telefon (rechts) sicher Platz haben und das Logo mittig bleibt. */
  .tb-logo img{max-width:104px;max-height:44px}
  /* Sprachumschalter etwas schmaler — verhindert Überlauf neben den Icons. */
  .lang-item{padding:4px 6px;font-size:11px}
}

/* ============================================================
 * iPhone / iOS-Safari-Feinschliff
 * Diese Regeln betreffen NICHT die reine Breite (das decken die
 * Breakpoints oben ab), sondern plattformspezifische iOS-Eigenheiten:
 *   1. Auto-Zoom beim Antippen von Eingabefeldern verhindern.
 *   2. Notch / Home-Indicator (Safe-Area-Insets) respektieren.
 *   3. Korrekte Voll-Höhe trotz ein-/ausfahrender Safari-Toolbar (dvh).
 *   4. Grauer Tap-Blitz beim Tippen entfernen.
 * Voraussetzung Safe-Area: <meta viewport ... viewport-fit=cover>.
 * iPhone-Breiten (SE 375 · Standard 390 · Pro Max 430) liegen alle
 * unter 480px → ein Großteil greift bereits über max-width:480.
 * ============================================================ */

/* 1) Auto-Zoom verhindern: iOS Safari zoomt beim Fokus auf Felder mit
   Schriftgröße < 16px hinein. Auf schmalen Touch-Viewports daher 16px —
   Desktop behält die kompakten 14px. */
@media(max-width:480px){
  select,
  input[type=text],input[type=email],input[type=tel],
  input[type=date],input[type=number],textarea{
    font-size:16px;
  }
}

/* 2) Safe-Area-Insets — nur wo iOS sie liefert (max()-Support als Gate).
   Topbar/Layout bekommen seitlich Platz, damit in Querformat nichts unter
   der Notch verschwindet; Topbar zusätzlich oben für die Statusleiste. */
@supports(padding:max(0px)){
  .topbar{
    padding-top:max(14px,env(safe-area-inset-top));
    padding-left:max(26px,env(safe-area-inset-left));
    padding-right:max(26px,env(safe-area-inset-right));
  }
  .layout{
    padding-left:max(20px,env(safe-area-inset-left));
    padding-right:max(20px,env(safe-area-inset-right));
  }
  @media(max-width:560px){
    .topbar{
      padding-left:max(14px,env(safe-area-inset-left));
      padding-right:max(14px,env(safe-area-inset-right));
    }
    .layout{
      padding-left:max(10px,env(safe-area-inset-left));
      padding-right:max(10px,env(safe-area-inset-right));
    }
  }
  /* Vollflächige Overlays: Steuerelemente aus den Insets heraushalten. */
  .lightbox{
    padding-top:max(24px,env(safe-area-inset-top));
    padding-bottom:max(24px,env(safe-area-inset-bottom));
  }
  .lb-close{top:max(16px,env(safe-area-inset-top))}
  .bk-modal-host{
    padding-top:max(20px,env(safe-area-inset-top));
    padding-bottom:max(20px,env(safe-area-inset-bottom));
  }
}

/* 3) Dynamische Viewport-Höhe: 100vh ist auf iOS um die Safari-Toolbar zu
   hoch → Modal/Lightbox würden unten abgeschnitten. dvh (mit vh-Fallback)
   misst die tatsächlich sichtbare Höhe. */
.bk-modal{max-height:calc(100vh - 40px)}
@supports(height:100dvh){
  .bk-modal{max-height:calc(100dvh - 40px)}
}
/* Modal-Body soll nicht die ganze Seite mit-scrollen (iOS Scroll-Chaining). */
.bk-modal-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}

/* 4) Grauen iOS-Tap-Blitz auf Klick-Targets entfernen (Fokus-Stile bleiben). */
@media(hover:none) and (pointer:coarse){
  a,button,.day,.offer,.room-head,.ins,.lb-thumb,.lang-item{
    -webkit-tap-highlight-color:transparent;
  }
}

/* ── Pauschalen (Packages) im Angebote-Accordion ──────────────────────── */
.pauschale-offer{border-left:3px solid var(--glacier)}
.pauschale-badge{background:linear-gradient(135deg,var(--glacier) 0%,var(--slate-2) 100%);
  display:inline-flex;align-items:center;gap:4px}
.pauschale-badge i{font-size:9px}
.pauschale-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
.pauschale-info{margin-bottom:12px}
.pauschale-gallery{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;cursor:zoom-in}
/* Erstes Bild gross, restliche als kleine Thumbs darunter */
.pauschale-gallery img{width:86px;height:60px;object-fit:cover;border-radius:6px;
  border:1px solid var(--line);transition:transform .15s ease}
.pauschale-gallery img:first-child{width:100%;height:auto;max-height:280px;object-fit:cover;
  border-radius:10px}
.pauschale-gallery img:hover{transform:scale(1.03)}
/* 2-spaltig, wenn die Breite es zulaesst: Bild gross links, Texte rechts */
@media (min-width:760px){
  .pauschale-info:has(.pauschale-gallery):has(.pauschale-text){
    display:grid;grid-template-columns:minmax(240px,340px) minmax(0,1fr);
    gap:4px 22px;align-items:start}
  .pauschale-info:has(.pauschale-gallery):has(.pauschale-text) .pauschale-gallery{margin-bottom:0}
}
.pauschale-desc{font-size:12.5px;line-height:1.55;color:var(--ink);margin-bottom:10px}
.pauschale-desc ul,.pauschale-desc ol{margin:6px 0 6px 16px;padding-left:8px}
.pauschale-desc li{margin:2px 0}
.pauschale-desc p{margin:6px 0}
.pauschale-desc h3,.pauschale-desc h4,.pauschale-desc h5{margin:8px 0 4px;color:var(--slate)}
.pauschale-verpflegung{margin-top:4px}

/* ---- Package-Deeplink: Empfehlungs-Karte + Detail-Ansicht (Schritt 2) ---- */
/* Empfehlungs-Karte ("Unsere Empfehlung fuer Sie") ueber den Zimmer-Karten */
.pkg-reco{display:flex;border:1px solid var(--line);border-radius:14px;overflow:hidden;
  background:#fff;box-shadow:var(--shadow);margin-bottom:22px}
.pkg-reco-media{position:relative;flex:0 0 42%;min-height:230px;cursor:zoom-in}
.pkg-reco-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.pkg-reco-badge{position:absolute;top:14px;left:14px;z-index:1;
  background:var(--glacier-dark);color:#fff;font-size:12px;font-weight:700;
  padding:6px 13px;border-radius:999px;box-shadow:0 2px 8px rgba(15,23,42,.25)}
.pkg-reco-badge--inline{position:static;display:inline-block;align-self:flex-start;box-shadow:none}
.pkg-reco-body{flex:1;min-width:0;padding:20px 24px;display:flex;flex-direction:column;gap:8px}
.pkg-reco-body h3{font-size:21px}
.pkg-reco-sub{font-size:13.5px;color:var(--ink)}
.pkg-reco-meta{font-size:13px;color:var(--muted);line-height:1.7}
.pkg-reco-foot{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:14px}
.pkg-reco-price{display:flex;flex-direction:column;line-height:1.2}
.pkg-reco-price .ab{font-size:12px;color:var(--muted)}
.pkg-reco-price .big{font-size:24px;font-weight:800;color:var(--slate)}
.pkg-btn{display:inline-block;border:1px solid var(--slate);border-radius:999px;
  padding:9px 24px;font-size:14px;font-weight:600;color:var(--slate);text-decoration:none;
  background:#fff;transition:background .15s,color .15s}
.pkg-btn:hover{background:var(--slate);color:#fff}

/* Zurueck-Link + fokussierte Detail-Karte */
.pkg-back{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;
  color:var(--slate);text-decoration:none;margin-bottom:14px}
.pkg-back:hover{color:var(--glacier-dark)}
.pkg-detail{display:flex;gap:24px;border:1px solid var(--line);border-radius:14px;
  background:#fff;box-shadow:var(--shadow);padding:24px;margin-bottom:8px}
.pkg-detail-media{flex:0 0 40%;min-width:0;cursor:zoom-in}
.pkg-detail-media>img{width:100%;border-radius:10px;display:block}
.pkg-thumbs{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.pkg-thumbs img{width:74px;height:54px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.pkg-detail-body{flex:1;min-width:0}
.pkg-detail-body h3{font-size:25px;margin-bottom:10px}
.pkg-detail-desc{font-size:13.5px;line-height:1.6;color:var(--ink)}
.pkg-detail-desc ul,.pkg-detail-desc ol{margin:8px 0 8px 18px;padding-left:8px}
.pkg-detail-desc li{margin:2px 0}
.pkg-detail-desc p{margin:8px 0}
.pkg-detail-desc h3,.pkg-detail-desc h4,.pkg-detail-desc h5{margin:10px 0 4px;color:var(--slate)}
.pkg-umfasst{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:14px}
.pkg-umfasst-head{font-weight:700;color:var(--slate);margin-bottom:6px}
.pkg-umfasst-dates{font-weight:700;color:var(--slate)}
.pkg-umfasst-name{color:var(--muted)}
.pkg-choose-title{text-align:center;font-size:22px;margin:26px 0 18px}

@media (max-width:720px){
  .pkg-reco{flex-direction:column}
  .pkg-reco-media{flex:0 0 auto;min-height:190px}
  .pkg-reco-body{padding:16px 18px}
  .pkg-reco-foot{flex-direction:column;align-items:stretch}
  .pkg-btn{text-align:center}
  .pkg-detail{flex-direction:column;gap:16px;padding:16px}
  .pkg-detail-media{flex:0 0 auto}
  .pkg-choose-title{font-size:19px;margin:20px 0 14px}
}
