/* Local Booking CMS 4.0.54 — Public Booking Wizard UI
   This file is intentionally frontend-oriented: it inherits site fonts, colors and header/footer. */
:root{
  --bk-primary: var(--primary, #2f6b4f);
  --bk-primary-dark: var(--primary-dark, #214f3b);
  --bk-secondary: var(--secondary, #d7a85f);
  --bk-accent: var(--accent, #7fb6a4);
  --bk-cream: var(--cream, #f8f3ea);
  --bk-soft: var(--soft, #fbfaf7);
  --bk-ink: var(--ink, #17211c);
  --bk-muted: var(--muted, #6f766f);
  --bk-border: rgba(23,33,28,.12);
  --bk-shadow: 0 26px 80px rgba(23,33,28,.13);
  --bk-radius: 34px;
}
body.page-booking, body.page-verify-booking{background:linear-gradient(180deg,var(--bk-soft),#fff 42%,var(--bk-cream));}
.booking-public-main{overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,.94));}
.booking-page-hero{position:relative;padding:clamp(74px,10vw,132px) 0 clamp(42px,6vw,80px);background:
  radial-gradient(circle at 12% 18%, color-mix(in srgb,var(--bk-secondary) 22%, transparent), transparent 34%),
  radial-gradient(circle at 92% 8%, color-mix(in srgb,var(--bk-primary) 18%, transparent), transparent 36%),
  linear-gradient(135deg,color-mix(in srgb,var(--bk-cream) 84%, #fff),#fff 58%,color-mix(in srgb,var(--bk-accent) 10%, #fff));}
.booking-page-hero:after{content:"";position:absolute;left:-8%;right:-8%;bottom:-1px;height:70px;background:#fff;border-radius:50% 50% 0 0/100% 100% 0 0;opacity:.9;}
.booking-page-hero .container{position:relative;z-index:1;text-align:center;max-width:920px;}
.booking-page-hero .eyebrow{display:inline-flex;align-items:center;gap:9px;padding:9px 14px;border-radius:999px;background:rgba(255,255,255,.84);border:1px solid var(--bk-border);box-shadow:0 10px 28px rgba(23,33,28,.08);font-weight:900;color:var(--bk-primary-dark);letter-spacing:.03em;text-transform:uppercase;font-size:.78rem;}
.booking-page-hero h1{margin:.55em 0 .28em;font-size:clamp(2.4rem,6.3vw,5.25rem);line-height:.96;letter-spacing:-.06em;color:var(--bk-ink);}
.booking-page-hero .lead{max-width:720px;margin:0 auto;color:var(--bk-muted);font-size:clamp(1.02rem,2vw,1.24rem);line-height:1.72;}
.booking-helper-icons{margin:28px auto 0;display:flex;justify-content:center;flex-wrap:wrap;gap:10px;}
.booking-helper-icons span{display:inline-flex;align-items:center;gap:8px;padding:11px 14px;border-radius:999px;background:#fff;border:1px solid var(--bk-border);box-shadow:0 12px 32px rgba(23,33,28,.08);font-size:.92rem;font-weight:800;color:var(--bk-ink);}
.booking-helper-icons i{font-size:1.15rem;color:var(--bk-primary);}
.booking-public-section{padding:clamp(38px,7vw,86px) 0;background:linear-gradient(180deg,#fff 0%,var(--bk-soft) 100%);}
.booking-shell{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;}
.booking-wizard{position:relative;isolation:isolate;background:rgba(255,255,255,.86);backdrop-filter:blur(14px);border:1px solid var(--bk-border);border-radius:var(--bk-radius);box-shadow:var(--bk-shadow);overflow:hidden;}
.booking-wizard:before{content:"";position:absolute;inset:0 0 auto;height:7px;background:linear-gradient(90deg,var(--bk-primary-dark),var(--bk-primary),var(--bk-secondary),var(--bk-accent));z-index:4;}
.booking-wizard:after{content:"";position:absolute;right:-110px;top:-110px;width:260px;height:260px;border-radius:50%;background:color-mix(in srgb,var(--bk-secondary) 20%, transparent);z-index:-1;}
.booking-wizard-head{padding:clamp(24px,4vw,42px);background:linear-gradient(135deg,rgba(255,255,255,.94),color-mix(in srgb,var(--bk-cream) 52%, #fff));border-bottom:1px solid var(--bk-border);}
.booking-kicker{display:inline-flex;align-items:center;gap:8px;color:var(--bk-primary-dark);font-weight:950;text-transform:uppercase;letter-spacing:.06em;font-size:.78rem;}
.booking-wizard-head h2{margin:10px 0 8px;font-size:clamp(1.75rem,3vw,2.65rem);line-height:1.02;letter-spacing:-.04em;color:var(--bk-ink);}
.booking-wizard-head p{margin:0;max-width:620px;color:var(--bk-muted);line-height:1.65;}
.booking-steps{counter-reset:bkstep;display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:12px;padding:clamp(18px,3vw,28px) clamp(18px,4vw,42px) 0;}
.booking-step-dot{counter-increment:bkstep;position:relative;min-height:64px;border:1px solid var(--bk-border);border-radius:20px;background:#fff;box-shadow:0 12px 32px rgba(23,33,28,.06);display:flex;align-items:center;gap:10px;padding:12px;overflow:hidden;color:var(--bk-muted);font-weight:900;font-size:.78rem;transition:.25s ease;}
.booking-step-dot:before{content:counter(bkstep);width:34px;height:34px;display:grid;place-items:center;border-radius:14px;background:var(--bk-soft);color:var(--bk-muted);font-weight:950;flex:0 0 auto;transition:.25s ease;}
.booking-step-dot span{display:block;line-height:1.15;}
.booking-step-dot.is-active{border-color:color-mix(in srgb,var(--bk-primary) 44%, transparent);box-shadow:0 18px 48px color-mix(in srgb,var(--bk-primary) 14%, transparent);transform:translateY(-2px);color:var(--bk-ink);}
.booking-step-dot.is-active:before{background:var(--bk-primary);color:#fff;}
.booking-step-dot.is-done{background:color-mix(in srgb,var(--bk-primary) 7%, #fff);border-color:color-mix(in srgb,var(--bk-primary) 28%, transparent);}
.booking-step-dot.is-done:before{content:"✓";background:var(--bk-primary-dark);color:#fff;}
.booking-step{display:none;padding:clamp(24px,4vw,44px);animation:bookingStepIn .34s cubic-bezier(.2,.7,.2,1) both;}
.booking-step.is-active{display:block;}
@keyframes bookingStepIn{from{opacity:0;transform:translateY(14px) scale(.992)}to{opacity:1;transform:none}}
.booking-step h2{display:flex;align-items:center;gap:10px;margin:0 0 8px;font-size:clamp(1.45rem,2.8vw,2.2rem);letter-spacing:-.035em;color:var(--bk-ink);}
.booking-step h2 i{width:44px;height:44px;display:grid;place-items:center;border-radius:16px;background:color-mix(in srgb,var(--bk-primary) 11%, #fff);color:var(--bk-primary);}
.booking-muted{margin:0 0 24px;color:var(--bk-muted);line-height:1.65;}
.booking-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:22px 0;}
.booking-select-card{position:relative;text-align:left;border:1px solid var(--bk-border);background:#fff;border-radius:24px;padding:17px;min-height:160px;box-shadow:0 14px 36px rgba(23,33,28,.07);cursor:pointer;transition:.23s ease;color:var(--bk-ink);}
.booking-select-card:hover{transform:translateY(-4px);box-shadow:0 24px 58px rgba(23,33,28,.12);border-color:color-mix(in srgb,var(--bk-primary) 34%, transparent);}
.booking-select-card.is-selected{border-color:var(--bk-primary);box-shadow:0 22px 60px color-mix(in srgb,var(--bk-primary) 18%, transparent);background:linear-gradient(180deg,#fff,color-mix(in srgb,var(--bk-primary) 7%, #fff));}
.booking-select-card.is-selected:after{content:"✓";position:absolute;right:14px;top:14px;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--bk-primary);color:#fff;font-weight:950;box-shadow:0 10px 24px color-mix(in srgb,var(--bk-primary) 28%, transparent);}
.booking-card-media{width:68px;height:68px;border-radius:22px;display:grid;place-items:center;overflow:hidden;margin-bottom:14px;background:linear-gradient(135deg,var(--bk-soft),#fff);border:1px solid var(--bk-border);}
.booking-card-media img{width:100%;height:100%;object-fit:cover;display:block;}
.booking-card-media i{font-size:2rem;color:var(--bk-primary);}
.booking-select-card strong{display:block;font-size:1.08rem;margin-bottom:6px;}
.booking-select-card small{display:inline-flex;padding:6px 10px;border-radius:999px;background:var(--bk-soft);color:var(--bk-primary-dark);font-weight:900;margin-bottom:8px;}
.booking-select-card p{color:var(--bk-muted);font-size:.94rem;line-height:1.5;margin:8px 0 0;}
.booking-form-grid{display:grid;grid-template-columns:1fr;gap:16px;}
.booking-form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr));}
.booking-form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr));}
.booking-form-grid label{display:block;}
.booking-form-grid label>span{display:flex;align-items:center;gap:7px;margin-bottom:9px;color:var(--bk-ink);font-size:.9rem;font-weight:950;}
.booking-form-grid input,.booking-form-grid select,.booking-form-grid textarea{width:100%;border:1.5px solid var(--bk-border);border-radius:18px;background:#fff;padding:15px 16px;color:var(--bk-ink);font:inherit;font-weight:750;outline:none;box-shadow:0 10px 24px rgba(23,33,28,.05);transition:.2s ease;}
.booking-form-grid input:focus,.booking-form-grid select:focus,.booking-form-grid textarea:focus{border-color:var(--bk-primary);box-shadow:0 0 0 5px color-mix(in srgb,var(--bk-primary) 13%, transparent);}
.booking-form-grid input[type="date"],.booking-form-grid input[type="time"]{min-height:58px;font-size:1.02rem;letter-spacing:.01em;}
.booking-form-grid input[type="date"]::-webkit-calendar-picker-indicator,.booking-form-grid input[type="time"]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.75;filter:saturate(1.2);}
.booking-slot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:12px;margin:18px 0 4px;}
.booking-slot{border:1.5px solid var(--bk-border);border-radius:18px;background:#fff;padding:16px 12px;min-height:62px;color:var(--bk-ink);font-size:1rem;font-weight:950;box-shadow:0 12px 28px rgba(23,33,28,.06);cursor:pointer;transition:.2s ease;}
.booking-slot:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--bk-primary) 34%, transparent);}
.booking-slot.is-selected{background:linear-gradient(135deg,var(--bk-primary),var(--bk-primary-dark));color:#fff;border-color:transparent;box-shadow:0 18px 44px color-mix(in srgb,var(--bk-primary) 25%, transparent);}
.booking-alert{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;border-radius:18px;background:var(--bk-soft);border:1px solid var(--bk-border);color:var(--bk-muted);font-weight:750;line-height:1.55;margin:16px 0;}
.booking-alert:before{font-family:"Material Design Icons";content:"\F02FD";color:var(--bk-primary);font-size:1.2rem;line-height:1;}
.booking-alert-ok{background:color-mix(in srgb,#10b981 10%, #fff);border-color:color-mix(in srgb,#10b981 28%, transparent);color:#075d43;}
.booking-alert-ok:before{content:"\F05E0";color:#10b981;}
.booking-alert-error{background:color-mix(in srgb,#ef4444 9%, #fff);border-color:color-mix(in srgb,#ef4444 25%, transparent);color:#8f1d1d;}
.booking-alert-error:before{content:"\F0028";color:#ef4444;}
.booking-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:26px;padding-top:22px;border-top:1px solid var(--bk-border);}
.booking-actions-center{justify-content:center;}
.booking-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;padding:13px 22px;font-weight:950;text-decoration:none;border:1.5px solid transparent;transition:.2s ease;min-height:50px;}
.booking-actions .btn:hover{transform:translateY(-2px);}
.booking-actions .btn-primary{background:linear-gradient(135deg,var(--bk-primary),var(--bk-primary-dark));color:#fff;box-shadow:0 16px 36px color-mix(in srgb,var(--bk-primary) 24%, transparent);}
.booking-actions .btn-outline{background:#fff;color:var(--bk-ink);border-color:var(--bk-border);}
.booking-summary{display:grid;gap:10px;margin:18px 0;}
.booking-summary div{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:14px 16px;border-radius:18px;background:#fff;border:1px solid var(--bk-border);box-shadow:0 8px 20px rgba(23,33,28,.05);}
.booking-summary span{color:var(--bk-muted);font-weight:800;}
.booking-summary strong{color:var(--bk-ink);text-align:right;}
.booking-success-card,.verify-card{max-width:820px;margin:0 auto;background:linear-gradient(180deg,#fff,color-mix(in srgb,var(--bk-soft) 54%, #fff));border:1px solid var(--bk-border);border-radius:var(--bk-radius);box-shadow:var(--bk-shadow);padding:clamp(26px,5vw,52px);text-align:center;}
.booking-success-card>i{font-size:4.1rem;color:#10b981;display:block;margin-bottom:10px;}
.booking-success-card h2,.verify-card h1{font-size:clamp(1.9rem,4vw,3rem);letter-spacing:-.05em;margin:.2em 0;color:var(--bk-ink);}
.booking-success-card p,.verify-card p{color:var(--bk-muted);line-height:1.7;}
.booking-code-box{display:inline-grid;gap:4px;padding:16px 22px;border-radius:20px;background:#fff;border:1px solid var(--bk-border);margin:18px 0 8px;box-shadow:0 10px 26px rgba(23,33,28,.06);}
.booking-code-box span{font-size:.8rem;color:var(--bk-muted);font-weight:900;text-transform:uppercase;letter-spacing:.06em;}
.booking-code-box strong{font-size:1.55rem;color:var(--bk-primary-dark);letter-spacing:.04em;}
.verify-card form{display:grid;gap:12px;margin-top:20px;}
.verify-card input{border:1.5px solid var(--bk-border);border-radius:18px;padding:15px 16px;font:inherit;font-weight:800;}
.verify-card button{border:0;border-radius:999px;padding:14px 18px;background:var(--bk-primary);color:#fff;font-weight:950;cursor:pointer;}
.has-error{animation:bookingShake .42s ease both;}
@keyframes bookingShake{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-4px)}40%,60%{transform:translateX(4px)}}
@media(min-width:1100px){
  .booking-wizard{display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);}
  .booking-wizard-head{grid-row:1 / span 2;border-right:1px solid var(--bk-border);border-bottom:0;min-height:100%;display:flex;flex-direction:column;justify-content:center;}
  .booking-steps{grid-column:2;}
  .booking-step{grid-column:2;}
  .booking-steps{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));}
  .booking-helper-icons{gap:12px;}
}
@media(max-width:900px){
  .booking-form-grid.two,.booking-form-grid.three{grid-template-columns:1fr;}
  .booking-page-hero:after{height:38px;}
}
@media(max-width:680px){
  .booking-page-hero{text-align:center;padding-top:58px;}
  .booking-helper-icons span{width:100%;justify-content:center;}
  .booking-public-section{padding:30px 0 54px;}
  .booking-wizard,.booking-success-card,.verify-card{border-radius:24px;}
  .booking-wizard-head{padding:22px;}
  .booking-steps{padding:16px 16px 0;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;}
  .booking-step-dot{min-height:42px;padding:6px;justify-content:center;border-radius:16px;}
  .booking-step-dot:before{width:30px;height:30px;border-radius:12px;}
  .booking-step-dot span{display:none;}
  .booking-step{padding:20px;}
  .booking-step h2{align-items:flex-start;font-size:1.42rem;}
  .booking-step h2 i{width:38px;height:38px;border-radius:14px;flex:0 0 auto;}
  .booking-card-grid{grid-template-columns:1fr;}
  .booking-slot-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .booking-actions{flex-direction:column-reverse;align-items:stretch;}
  .booking-actions .btn{width:100%;}
  .booking-summary div{display:block;}
  .booking-summary strong{display:block;text-align:left;margin-top:5px;}
  .booking-form-grid input,.booking-form-grid select,.booking-form-grid textarea{font-size:16px;}
}
