/* Spook Creative — hourly booking page (extends styles.css) */

.booking-hero{padding-top:150px}
.booking-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1.15fr) minmax(300px,.9fr);gap:clamp(16px,2.4vw,28px);align-items:start}
.booking-panel{border:1px solid var(--line);border-radius:26px;background:var(--panel);padding:clamp(18px,2.6vw,30px)}
.booking-step-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.booking-step-num{font-family:var(--display);font-size:1rem;color:var(--accent);letter-spacing:.06em}
.booking-sub{margin:0 0 6px;font-size:.78rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}

/* Calendar */
.booking-cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.booking-cal-head strong{font-family:var(--display);text-transform:uppercase;font-size:.92rem;letter-spacing:.04em}
.booking-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.booking-cal .cal-dow{padding:6px 0;text-align:center;font-size:.66rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.booking-cal button{appearance:none;border:1px solid transparent;border-radius:12px;background:rgba(255,255,255,.04);color:var(--white);min-height:40px;font-weight:700;font-size:.86rem;cursor:pointer;transition:background .2s var(--ease),border-color .2s var(--ease)}
.booking-cal button:hover:not(:disabled){background:rgba(255,255,255,.12)}
.booking-cal button:disabled{opacity:.28;cursor:default;background:transparent}
.booking-cal button.is-today{border-color:var(--line-strong)}
.booking-cal button.is-selected{background:var(--accent);color:var(--black);border-color:var(--accent)}
.booking-cal .cal-empty{min-height:40px}

/* Slots */
.booking-slots-wrap{margin-top:22px}
.booking-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;margin-top:10px}
.booking-slots button{appearance:none;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.05);color:var(--white);min-height:42px;font-weight:800;font-size:.82rem;cursor:pointer;transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease)}
.booking-slots button:hover:not(:disabled){border-color:var(--line-strong);background:rgba(255,255,255,.12)}
.booking-slots button:disabled{opacity:.3;cursor:default;text-decoration:line-through}
.booking-slots button.is-selected{background:var(--accent);border-color:var(--accent);color:var(--black)}
.booking-slot-hint{font-size:.82rem;margin:4px 0 0}

/* Form */
.booking-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.booking-field{display:grid;gap:6px;font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.booking-field-full{grid-column:1/-1}
.booking-field-inline{grid-template-columns:auto 1fr;align-items:center;text-transform:none;letter-spacing:0;font-size:.86rem;font-weight:600;color:var(--white)}
.input,.textarea,.select{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.05);color:var(--white);font-size:.92rem;font-weight:500}
.input:focus,.textarea:focus,.select:focus{border-color:var(--accent);outline:0}
.select option{background:#181818;color:#fff}
.input.is-invalid,.textarea.is-invalid,.select.is-invalid{border-color:var(--ember)}

/* Summary */
.booking-summary{position:sticky;top:104px}
.booking-quote{margin:0;display:grid;gap:0;border:1px solid var(--line);border-radius:16px;overflow:hidden}
.booking-quote>div{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line)}
.booking-quote>div:last-child{border-bottom:0}
.booking-quote dt{color:var(--muted);font-size:.74rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.booking-quote dd{margin:0;font-weight:700;font-size:.9rem;text-align:right}
.booking-quote-total{background:rgba(215,255,70,.08)}
.booking-quote-total dd{font-family:var(--display);font-size:1.05rem;color:var(--accent)}
.booking-fineprint{font-size:.76rem;margin:10px 0 0;line-height:1.55}

.booking-repeat{margin-top:14px;display:flex;align-items:center;gap:8px;font-size:.86rem;font-weight:600;color:var(--white)}
.booking-repeat-count{width:auto;padding:7px 10px}
.booking-repeat-count:disabled{opacity:.4}

.booking-paychoice{margin:18px 0 0;padding:0;border:0}
.booking-paychoice label{display:grid;grid-template-columns:auto 1fr;grid-auto-rows:auto;column-gap:10px;align-items:start;padding:12px 14px;margin-top:8px;border:1px solid var(--line);border-radius:14px;cursor:pointer;transition:border-color .2s var(--ease)}
.booking-paychoice label:has(input:checked){border-color:var(--accent)}
.booking-paychoice label span{grid-column:2;font-size:.8rem;font-weight:500}
.booking-paychoice input{margin-top:3px;accent-color:var(--accent)}

.booking-accepts{display:grid;gap:8px;margin:18px 0}
.booking-accepts label{display:flex;gap:9px;align-items:flex-start;font-size:.82rem;color:var(--muted)}
.booking-accepts input{margin-top:2px;accent-color:var(--accent)}
.booking-accepts a{color:var(--white);text-decoration:underline}

.booking-errors{margin:0 0 12px;padding:12px 14px;border:1px solid var(--ember);border-radius:14px;background:rgba(255,93,45,.1);color:#ffb59d;font-size:.84rem;line-height:1.5}
.booking-errors ul{margin:6px 0 0;padding-left:18px}

.booking-banner{margin:0 0 26px;padding:18px 22px;border:1px solid var(--accent);border-radius:18px;background:rgba(215,255,70,.08);font-size:.95rem;line-height:1.6}
.booking-banner.is-error{border-color:var(--ember);background:rgba(255,93,45,.1)}
.booking-banner strong{font-family:var(--display);letter-spacing:.02em}

#submit-booking[disabled]{opacity:.55;pointer-events:none}
#submit-booking .spinner{display:inline-block;width:14px;height:14px;margin-right:8px;border:2px solid rgba(0,0,0,.35);border-top-color:#000;border-radius:50%;animation:spk-spin .8s linear infinite;vertical-align:-2px}
@keyframes spk-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  #submit-booking .spinner{animation:none}
  .booking-cal button,.booking-slots button,.booking-paychoice label{transition:none}
}

@media (max-width:1100px){
  .booking-layout{grid-template-columns:1fr 1fr}
  .booking-summary{grid-column:1/-1;position:static}
}
@media (max-width:720px){
  .booking-layout{grid-template-columns:1fr}
  .booking-fields{grid-template-columns:1fr}
  .booking-hero{padding-top:120px}
}
