#booking-portal {
  --book-bg: rgba(22,49,42,.87); --book-surface: rgba(246,243,232,.1); --book-soft: rgba(230,222,197,.13); --book-ink:#f7f2e7; --book-muted:#d7e0d5; --book-accent:#f4d77a; --book-accent-deep:#c89d36; --book-glow:rgba(244,215,122,.28); --book-line:rgba(249,231,167,.28); --book-reflect:rgba(255,240,184,.32); --book-button-ink:#183c34; color-scheme:dark;
}
.booking-backdrop { position:fixed; inset:0; z-index:1000; display:grid; place-items:center; padding:24px; background:rgba(24,25,23,.30); -webkit-backdrop-filter:blur(18px) saturate(125%); backdrop-filter:blur(18px) saturate(125%); opacity:0; transition:opacity .38s ease; }
.booking-backdrop.is-open { opacity:1; }
.booking-dialog { width:min(100%,1040px); max-height:min(88dvh,860px); display:flex; flex-direction:column; overflow:hidden; color:var(--book-ink); border:1px solid var(--book-line); border-radius:28px; background:var(--book-bg); -webkit-backdrop-filter:blur(34px) saturate(145%); backdrop-filter:blur(34px) saturate(145%); box-shadow:0 35px 100px rgba(20,22,20,.24), inset 0 1px 0 var(--book-reflect); transform:translateY(12px) scale(.985); transition:transform .4s cubic-bezier(.2,.8,.2,1); position:relative; isolation:isolate; }
.booking-backdrop.is-open .booking-dialog { transform:none; }
.booking-dialog::before { content:""; position:absolute; inset:0 0 auto; height:180px; z-index:-1; pointer-events:none; background:radial-gradient(ellipse at 18% 0%,var(--book-reflect),transparent 68%); opacity:.62; }
.booking-top { padding:24px 30px 16px; border-bottom:1px solid var(--book-line); }
.booking-topline { display:flex; justify-content:space-between; align-items:center; gap:16px; }
.booking-kicker { margin:0; color:var(--book-accent); font-size:11px; letter-spacing:.16em; text-transform:uppercase; }
.booking-close { width:44px;height:44px; flex:0 0 44px; border:1px solid var(--book-line);border-radius:50%;background:var(--book-surface);color:var(--book-ink);font-size:24px;cursor:pointer; }
.booking-progress { display:flex; align-items:center; gap:8px; margin-top:16px; }
.booking-progress span { display:flex; align-items:center; gap:7px; color:var(--book-muted); font-size:11px; }
.booking-progress i { width:22px;height:22px;display:grid;place-items:center;border:1px solid var(--book-line);border-radius:50%;font-style:normal;font-size:10px; }
.booking-progress span[aria-current="step"] { color:var(--book-ink); }
.booking-progress span[aria-current="step"] i,.booking-progress span.is-done i { color:var(--book-accent);background:var(--book-surface);border-color:var(--book-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--book-accent) 12%,transparent); }
.booking-progress b { height:1px; flex:1; max-width:32px; background:var(--book-line); }
.booking-content { min-height:0; overflow:auto; overscroll-behavior:contain; flex:1; }
.booking-layout { display:grid; grid-template-columns:minmax(0,1fr) 260px; min-height:0; }
.booking-main { padding:30px; min-width:0; }
.booking-step { animation:booking-enter .32s cubic-bezier(.2,.8,.2,1) both; }
@keyframes booking-enter { from{opacity:0;transform:translateX(var(--step-shift,18px))}to{opacity:1;transform:none} }
.booking-step h2,.booking-success h2 { margin:0 0 8px; color:var(--book-ink);font-size:clamp(25px,4vw,36px);line-height:1.13;font-weight:500;letter-spacing:-.035em; }
.booking-lead { margin:0 0 22px;color:var(--book-muted);font-size:14px;line-height:1.6; }
.booking-options { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px; }
.booking-choice { position:relative; min-height:116px; padding:18px; text-align:left; color:var(--book-ink); border:1px solid var(--book-line);border-radius:18px;background:linear-gradient(145deg,var(--book-reflect),transparent 72%),var(--book-surface);box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 8px 22px rgba(30,30,28,.045);cursor:pointer;transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease,background .22s ease; }
.booking-choice:hover,.booking-action:hover,.booking-date:hover,.booking-time:hover { transform:scale(1.015);border-color:color-mix(in srgb,var(--book-accent) 60%,var(--book-line));box-shadow:inset 0 1px 0 var(--book-reflect),0 10px 26px color-mix(in srgb,var(--book-accent) 15%,transparent); }
.booking-choice:active,.booking-action:active,.booking-date:active,.booking-time:active,.booking-close:active { transform:scale(.98); }
.booking-choice[aria-pressed="true"],.booking-time[aria-pressed="true"] { border-color:var(--book-accent);background:linear-gradient(145deg,var(--book-reflect),transparent 72%),color-mix(in srgb,var(--book-accent) 15%,var(--book-surface));box-shadow:inset 0 1px 0 var(--book-reflect),0 0 0 3px color-mix(in srgb,var(--book-accent) 12%,transparent),0 12px 30px color-mix(in srgb,var(--book-accent) 14%,transparent); }
.booking-choice strong { display:block;font-size:15px;font-weight:550; }
.booking-choice small { display:block;margin-top:8px;color:var(--book-muted);font-size:12px;line-height:1.45; }
.booking-check { position:absolute;right:14px;top:14px;width:20px;height:20px;border:1px solid var(--book-line);border-radius:50%; }
.booking-choice[aria-pressed="true"] .booking-check { border-color:var(--book-accent);background:var(--book-accent);box-shadow:inset 0 0 0 5px var(--book-surface); }
.booking-segment { display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px;border:1px solid var(--book-line);border-radius:18px;background:var(--book-soft); }
.booking-segment button { min-height:62px;border:1px solid transparent;border-radius:13px;background:transparent;color:var(--book-muted);font:inherit;cursor:pointer;transition:.28s cubic-bezier(.2,.8,.2,1); }
.booking-segment button[aria-pressed="true"] { color:var(--book-ink);background:linear-gradient(145deg,var(--book-reflect),transparent 75%),var(--book-surface);border-color:color-mix(in srgb,var(--book-accent) 58%,var(--book-line));box-shadow:0 5px 18px rgba(28,27,25,.09),0 0 18px color-mix(in srgb,var(--book-accent) 12%,transparent),inset 0 1px 0 var(--book-reflect); }
.booking-audience { display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 18px;margin-top:16px;padding:12px 14px;border:1px solid var(--book-line);border-radius:14px;background:rgba(255,250,233,.055);color:var(--book-muted);font-size:13px; }
.booking-audience .booking-segment { margin:0; }
.booking-audience .booking-segment button { min-height:44px; }
.booking-guardian-note { margin:14px 0 0;padding:13px 15px;border:1px solid color-mix(in srgb,var(--book-accent) 44%,transparent);border-radius:12px;background:color-mix(in srgb,var(--book-accent) 9%,transparent);color:var(--book-muted);font-size:12px;line-height:1.65; }
.booking-cal-head { display:flex;align-items:center;justify-content:space-between;margin:4px 0 12px; }
.booking-cal-head strong { font-weight:550;text-transform:capitalize; }
.booking-cal-nav { width:44px;height:44px;border:1px solid var(--book-line);border-radius:50%;background:var(--book-surface);color:var(--book-ink);font-size:20px;cursor:pointer; }
.booking-calendar { display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center; }
.booking-weekday { display:grid;place-items:center;height:34px;color:var(--book-muted);font-size:11px; }
.booking-date { min-height:42px;border:1px solid transparent;border-radius:14px;background:transparent;color:var(--book-ink);font:inherit;cursor:pointer;transition:transform .18s ease,background .2s ease,border-color .2s ease; }
.booking-date:disabled { color:var(--book-muted);opacity:.34;cursor:not-allowed; }
.booking-date.is-today:not([aria-pressed="true"]) { border-color:var(--book-line); }
.booking-date[aria-pressed="true"] { color:var(--book-ink);background:var(--book-surface);border-color:var(--book-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--book-accent) 12%,transparent),inset 0 1px 0 var(--book-reflect); }
.booking-time-grid { max-height:310px;overflow:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:3px 8px 3px 2px;overscroll-behavior:contain; }
.booking-time { min-height:48px;border:1px solid var(--book-line);border-radius:14px;background:var(--book-surface);color:var(--book-ink);font-variant-numeric:tabular-nums;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease; }
.booking-field { display:grid;gap:7px;margin:0 0 14px; }
.booking-field label { color:var(--book-muted);font-size:12px; }
.booking-field input,.booking-field textarea { width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--book-line);border-radius:13px;outline:none;background:var(--book-surface);color:var(--book-ink);font:inherit;font-size:14px;transition:border-color .2s,box-shadow .2s; }
.booking-field textarea { min-height:78px;resize:vertical; }
.booking-privacy-hint { display:block;margin-top:8px;color:var(--book-muted);opacity:.82;font-size:11px;line-height:1.5; }
.booking-field input:focus,.booking-field textarea:focus { border-color:var(--book-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--book-accent) 15%,transparent); }
.booking-field [aria-invalid="true"] { border-color:#aa7267; }
.booking-error { min-height:18px;margin:0 0 8px;color:#9a635a;font-size:12px; }
.booking-summary { padding:28px 22px;border-left:1px solid var(--book-line);background:color-mix(in srgb,var(--book-soft) 55%,transparent); }
.booking-summary h3 { margin:0 0 20px;font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--book-accent); }
.booking-summary dl { margin:0;display:grid;gap:15px; }
.booking-summary div { display:grid;gap:4px; }
.booking-summary dt { color:var(--book-muted);font-size:11px; }
.booking-summary dd { margin:0;font-size:13px;line-height:1.4; }
.booking-footer { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 30px max(18px,env(safe-area-inset-bottom));border-top:1px solid var(--book-line);background:color-mix(in srgb,var(--book-bg) 85%,transparent); }
.booking-action { min-width:124px;min-height:48px;padding:0 20px;border:1px solid var(--book-line);border-radius:999px;background:var(--book-surface);color:var(--book-ink);font:inherit;font-size:13px;cursor:pointer;transition:transform .2s,border-color .2s,box-shadow .2s,background .2s; }
.booking-action--primary { position:relative;isolation:isolate;overflow:hidden;background:linear-gradient(135deg,#fae8ad 0%,#f1cf72 45%,#e2b94e 100%);border-color:rgba(255,239,178,.8);color:var(--book-button-ink);box-shadow:0 8px 24px rgba(216,179,74,.18),inset 0 1px 0 rgba(255,255,255,.55); }
.booking-action--primary::before { content:"";position:absolute;z-index:-1;inset:0 0 48%;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.28),transparent);pointer-events:none; }
.booking-action--primary:hover { background:linear-gradient(135deg,#fff0b8 0%,#f7dc8b 48%,#ecc65d 100%);box-shadow:0 10px 32px rgba(232,196,95,.3),inset 0 1px 0 rgba(255,255,255,.68); }
.booking-action:disabled { opacity:.45;cursor:not-allowed;transform:none; }
.booking-hint { flex:1;text-align:center;color:var(--book-muted);font-size:11px; }
.booking-mobile-summary { display:none; }
.booking-success { max-width:540px;margin:auto;padding:48px 34px;text-align:center; }
.booking-success p { color:var(--book-muted);line-height:1.65; }
.booking-success-mark { width:72px;height:72px;margin:0 auto 22px;display:grid;place-items:center;border:1px solid var(--book-accent);border-radius:50%;background:var(--book-surface);color:var(--book-accent);font-size:32px;box-shadow:0 0 0 9px color-mix(in srgb,var(--book-accent) 10%,transparent);animation:booking-check .5s cubic-bezier(.2,.8,.2,1) both; }
@keyframes booking-check { from{opacity:0;transform:scale(.65)}to{opacity:1;transform:scale(1)} }
.booking-success-note { font-size:12px; }
.booking-trap { position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap; }
#booking-portal :focus-visible { outline:2px solid var(--book-accent);outline-offset:3px; }
@media(max-width:720px) {
 .booking-backdrop { padding:0;align-items:stretch; }
 .booking-dialog { width:100%;height:100dvh;height:100svh;max-height:100dvh;border-radius:0;border:0;padding-top:env(safe-area-inset-top); }
 .booking-top { padding:15px 18px 12px; }
 .booking-progress { gap:5px; }
 .booking-progress span { font-size:0; }
 .booking-progress i { width:26px;height:26px;font-size:10px; }
 .booking-progress b { max-width:none; }
 .booking-layout { display:block; }
 .booking-main { padding:22px 18px; }
 .booking-summary { display:none; }
 .booking-choice { min-height:106px;padding:15px; }
 .booking-time-grid { grid-template-columns:repeat(3,minmax(0,1fr));max-height:none; }
 .booking-footer { flex-wrap:wrap;padding:12px 18px max(16px,env(safe-area-inset-bottom)); }
 .booking-mobile-summary { display:grid;flex:0 0 100%;box-sizing:border-box;gap:3px;padding:10px 12px;border:1px solid var(--book-line);border-radius:13px;background:var(--book-surface); }
 .booking-mobile-summary strong { font-size:11px;font-weight:550; }
 .booking-mobile-summary span { color:var(--book-muted);font-size:10px; }
 .booking-hint { display:none; }
 .booking-action { min-width:0;flex:1; }
 .booking-success { padding:38px 24px; }
}
@media(max-width:390px) { .booking-options { grid-template-columns:1fr; } .booking-choice { min-height:82px; } .booking-date { min-height:40px; } .booking-time-grid { gap:6px; } }
@media(prefers-reduced-motion:reduce) { #booking-portal *,#booking-portal *::before,#booking-portal *::after { animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important; } }
