/* Designed & Built by Point of View Web Solutions — https://www.povwebsolutions.com */
/* ---------- Booking page ---------- */
.book-sec { padding: 48px 0 90px; }
.book-loading { font-family: var(--sans); color: var(--ink-muted); padding: 60px 0; text-align: center; }
.book-shell { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(0,0.85fr); gap: 48px; align-items: start; }
@media (max-width: 940px) { .book-shell { grid-template-columns: 1fr; gap: 28px; } }

.book-back { display: inline-flex; align-items: center; gap: 8px; font-family: var(--sans); font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-muted); text-decoration: none; margin-bottom: 22px; }
.book-back:hover { color: var(--ink); }
.book-head h1 { font-size: clamp(1.9rem, 3.4vw, 2.7rem); margin: 0 0 10px; line-height: 1.08; }
.book-head .book-when { font-family: var(--sans); font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-muted); display: flex; flex-wrap: wrap; gap: 20px; margin-bottom: 26px; }
.book-left-note { font-family: var(--sans); font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--blush-deep, #a8635c); margin: 0 0 26px; }

/* Step rail */
.book-steps { display: flex; gap: 6px; margin: 0 0 26px; }
.book-steps li { flex: 1; list-style: none; font-family: var(--sans); font-size: .62rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); padding-top: 10px; border-top: 2px solid var(--rule); transition: color .2s, border-color .2s; }
.book-steps li.done { border-top-color: var(--blush, #c98b84); color: var(--ink-muted); }
.book-steps li.now { border-top-color: var(--ink); color: var(--ink); }

/* Panels */
.book-step { display: none; }
.book-step.active { display: block; animation: bookIn .28s ease; }
@keyframes bookIn { from { opacity: 0; transform: translateY(8px) } }
.book-step h2 { font-family: var(--serif-display); font-size: 1.5rem; margin: 0 0 6px; }
.book-step .step-hint { font-family: var(--sans); font-size: .86rem; color: var(--ink-muted); margin: 0 0 24px; }

.bk-field { margin: 0 0 20px; }
.bk-field label { display: block; font-family: var(--sans); font-size: .68rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); margin-bottom: 8px; }
.bk-field input[type=text], .bk-field input[type=email], .bk-field input[type=tel], .bk-field input[type=date], .bk-field select, .bk-field textarea {
  width: 100%; font-family: var(--sans); font-size: .95rem; color: var(--ink); background: #fff;
  border: 1px solid var(--rule); border-radius: 10px; padding: 13px 15px; transition: border-color .2s, box-shadow .2s;
}
.bk-field textarea { min-height: 96px; resize: vertical; }
.bk-field input:focus, .bk-field select:focus, .bk-field textarea:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(31,24,18,.08); }
.bk-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 560px) { .bk-row { grid-template-columns: 1fr; gap: 0; } }
.bk-optional { text-transform: none; letter-spacing: 0; font-weight: 500; font-size: .74rem; color: var(--ink-muted); }

/* Guest stepper */
.bk-stepper { display: inline-flex; align-items: center; gap: 0; border: 1px solid var(--rule); border-radius: 999px; overflow: hidden; background: #fff; }
.bk-stepper button { width: 46px; height: 46px; border: 0; background: none; font-size: 1.3rem; line-height: 1; color: var(--ink); cursor: pointer; transition: background .15s; }
.bk-stepper button:hover:not(:disabled) { background: var(--cream); }
.bk-stepper button:disabled { color: var(--rule); cursor: default; }
.bk-stepper span { min-width: 52px; text-align: center; font-family: var(--serif-display); font-size: 1.4rem; }

/* Add-ons */
.bk-addons { display: grid; gap: 10px; margin: 0 0 22px; }
.bk-addon { display: flex; align-items: center; gap: 14px; padding: 16px 18px; border: 1px solid var(--rule); border-radius: 12px; background: #fff; cursor: pointer; transition: border-color .2s, background .2s; }
.bk-addon:hover { border-color: rgba(31,24,18,.4); }
.bk-addon input { width: 18px; height: 18px; accent-color: var(--ink); flex: none; }
.bk-addon.on { border-color: var(--ink); background: var(--cream); }
.bk-addon .a-name { flex: 1; font-family: var(--sans); font-size: .92rem; }
.bk-addon .a-price { font-family: var(--serif-display); font-size: 1.05rem; }

/* Promo */
.bk-promo { display: flex; gap: 10px; align-items: flex-start; }
.bk-promo input { flex: 1; text-transform: uppercase; }
.bk-promo button { white-space: nowrap; padding: 13px 20px; }
.bk-promo-msg { font-family: var(--sans); font-size: .8rem; margin: 8px 0 0; color: var(--ink-muted); }
.bk-promo-msg.good { color: #4a7c59; }
.bk-promo-msg.bad { color: #a8433a; }

/* Waiver */
.bk-waiver { background: var(--cream); border: 1px solid var(--rule); border-radius: 12px; padding: 22px 24px; margin: 0 0 22px; max-height: 260px; overflow-y: auto; }
.bk-waiver h3 { font-family: var(--sans); font-size: .68rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-muted); margin: 0 0 12px; }
.bk-waiver p { font-size: .88rem; line-height: 1.6; color: var(--ink-soft); margin: 0 0 12px; }
.bk-waiver .placeholder-flag { font-family: var(--sans); font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #a8433a; }
.bk-check { display: flex; gap: 12px; align-items: flex-start; font-family: var(--sans); font-size: .9rem; line-height: 1.5; color: var(--ink-soft); margin: 0 0 20px; cursor: pointer; }
.bk-check input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--ink); flex: none; }

#card-container { min-height: 92px; display: block; width: 100%; }
#card-container > div, #card-container iframe { width: 100% !important; }
#card-container:empty { min-height: 92px; border: 1px dashed var(--rule); border-radius: 10px; background: var(--cream); }
.bk-pay-note { font-family: var(--sans); font-size: .8rem; color: var(--ink-muted); margin: 10px 0 0; display: flex; align-items: center; gap: 8px }
.bk-pay-note b { font-weight: 700; color: var(--ink-soft) }
.card-blocked { font-family: var(--sans); font-size: .88rem; line-height: 1.55; color: var(--ink-soft); margin: 0; padding: 14px 16px; border: 1px solid var(--rule); border-radius: 10px; background: var(--cream); }
.bk-nav button[disabled] { opacity: .45; cursor: not-allowed; }
.bk-nav a.btn-quiet { text-decoration: none; display: inline-flex; align-items: center; }

/* Nav buttons */
.bk-nav { display: flex; gap: 14px; align-items: center; margin-top: 28px; }
.btn-quiet { background: none; border: 1px solid var(--rule); border-radius: 999px; padding: 14px 24px; font-family: var(--sans); font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); cursor: pointer; transition: border-color .2s, color .2s; }
.btn-quiet:hover { border-color: var(--ink); color: var(--ink); }
.bk-nav button.btn { border: 0; cursor: pointer; font-family: var(--sans); }
.bk-error { font-family: var(--sans); font-size: .86rem; color: #a8433a; margin: 14px 0 0; }

/* Summary card */
.book-summary { position: sticky; top: 110px; background: var(--cream); border: 1px solid var(--rule); border-radius: var(--radius); overflow: hidden; }
@media (max-width: 940px) { .book-summary { position: static; } }
.book-summary .sum-flyer { display: block; background: var(--bg-2); }
.book-summary .sum-flyer img { width: 100%; height: auto; display: block; }
.book-summary .sum-body { padding: 24px 26px 28px; }
.book-summary h3 { font-family: var(--sans); font-size: .66rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-muted); margin: 0 0 16px; }
.sum-lines { display: grid; gap: 10px; margin: 0 0 16px; }
.sum-line { display: flex; justify-content: space-between; gap: 16px; font-family: var(--sans); font-size: .88rem; color: var(--ink-soft); }
.sum-line .sl-amt { font-variant-numeric: tabular-nums; white-space: nowrap; }
.sum-line.discount { color: #4a7c59; }
.sum-total { display: flex; justify-content: space-between; align-items: baseline; border-top: 1px solid var(--rule); padding-top: 16px; }
.sum-total .st-label { font-family: var(--sans); font-size: .68rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-muted); }
.sum-total .st-amt { font-family: var(--serif-display); font-size: 1.9rem; line-height: 1; }
.sum-fine { font-family: var(--sans); font-size: .76rem; line-height: 1.55; color: var(--ink-muted); margin: 18px 0 0; }

/* Confirmation */
.book-done { max-width: 620px; }
.book-done .done-mark { width: 54px; height: 54px; border-radius: 50%; background: var(--ink); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; margin: 0 0 22px; }
.book-done h1 { font-size: clamp(1.8rem, 3vw, 2.4rem); margin: 0 0 12px; }
.book-done p { color: var(--ink-soft); line-height: 1.62; margin: 0 0 18px; }
.book-done .done-ref { font-family: var(--sans); font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-muted); }
.book-done .done-pay { background: var(--cream); border: 1px solid var(--rule); border-radius: 12px; padding: 24px 26px; margin: 0 0 24px; }
.book-done .done-pay .hold-note { font-family: var(--sans); font-size: .8rem; color: var(--ink-muted); margin: 14px 0 0; }

/* Sold out / waitlist */
.book-soldout { background: var(--cream); border: 1px solid var(--rule); border-radius: 12px; padding: 26px 28px; margin: 0 0 26px; }
.book-soldout .so-flag { font-family: var(--sans); font-size: .7rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: #a8433a; margin: 0 0 10px; }
.book-soldout p { color: var(--ink-soft); margin: 0 0 18px; line-height: 1.6; }

/* ---------- Phones ---------- */
@media (max-width: 620px) {
  .book-sec { padding: 26px 0 60px; }
  .book-head h1 { font-size: 1.6rem; }
  .book-head .book-when { gap: 6px 16px; margin-bottom: 20px; font-size: .68rem; }

  /* Numbers only — four words never fit across a phone */
  .book-steps { gap: 5px; }
  .book-steps li { font-size: 0; padding-top: 8px; }
  .book-steps li::after { content: attr(data-short); font-size: .6rem; letter-spacing: .1em; }

  .book-step h2 { font-size: 1.3rem; }
  .bk-field input[type=text], .bk-field input[type=email], .bk-field input[type=tel],
  .bk-field select, .bk-field textarea { font-size: 16px; padding: 14px 15px; }

  /* Comfortable thumb targets */
  .bk-stepper button { width: 54px; height: 54px; font-size: 1.5rem; }
  .bk-stepper span { min-width: 60px; font-size: 1.5rem; }
  .bk-addon { padding: 15px 16px; min-height: 56px; }
  .bk-addon input { width: 22px; height: 22px; }
  .bk-check input { width: 22px; height: 22px; }

  .bk-promo { flex-direction: column; }
  .bk-promo button { width: 100%; min-height: 50px; }

  .bk-waiver { max-height: 220px; padding: 18px 18px; }

  .bk-nav { flex-direction: column-reverse; align-items: stretch; gap: 10px; }
  .bk-nav .btn, .bk-nav button, .bk-nav a.btn-quiet { width: 100%; justify-content: center; min-height: 52px; }

  .book-summary .sum-body { padding: 20px 20px 24px; }
  .book-summary .sum-flyer img { max-height: 340px; width: auto; margin: 0 auto; }
  .book-summary .sum-flyer { display: flex; justify-content: center; }

  .book-done .done-mark { width: 46px; height: 46px; }
  .book-done h1 { font-size: 1.55rem; }
  .book-soldout { padding: 20px; }
}

/* Landscape phones and small tablets keep the two-column summary but tighter */
@media (min-width: 621px) and (max-width: 940px) {
  .book-summary .sum-flyer img { max-height: 420px; width: auto; margin: 0 auto; }
  .book-summary .sum-flyer { display: flex; justify-content: center; }
}

/* ---------- Time slots ---------- */
/* ---- Which date? (an event that runs on several) ----
   Same shape as .bk-pack below, and for the same reason: .bk-field label is
   an uppercase caption, so a label that is a choice rather than a caption
   has to say so with the more specific selector. */
.bk-dates{display:grid;gap:10px}
.bk-field label.bk-date,.bk-date{display:flex;flex-direction:row;align-items:center;gap:13px;
  padding:15px 18px;border:1px solid var(--rule);border-radius:14px;background:#fff;cursor:pointer;
  transition:border-color .18s;letter-spacing:normal;text-transform:none;font-size:1rem;
  font-weight:400;color:var(--ink);margin-bottom:0}
.bk-date:hover{border-color:var(--ink)}
.bk-date.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.bk-date.full{opacity:.55;cursor:not-allowed}
.bk-date.full:hover{border-color:var(--rule)}
.bk-date input{accent-color:var(--ink);width:18px;height:18px;flex:none;margin:0}
.bd-label{flex:1}
.bd-left{margin-left:auto;padding-left:14px;font-family:var(--sans);font-size:.7rem;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted);white-space:nowrap}
.bk-date.full .bd-left{color:var(--ink-muted)}

.bk-slots{display:flex;flex-direction:column;gap:26px;margin:4px 0 28px}
.bk-slot-day h3{font-family:var(--serif-elegant);font-weight:400;font-size:1.15rem;margin:0 0 4px}
.bk-slot-count{margin:0 0 12px;font-size:.82rem;color:var(--ink-muted)}
.bk-slot-grid{display:flex;flex-wrap:wrap;gap:10px}
.bk-slot{font:inherit;font-size:.95rem;padding:12px 20px;min-height:48px;border:1px solid var(--rule);background:#fff;border-radius:40px;cursor:pointer;color:var(--ink);transition:border-color .15s,background .15s}
.bk-slot:hover{border-color:var(--ink)}
.bk-slot.on{background:var(--ink);border-color:var(--ink);color:#f7f1e8}
.bk-slot.gone{opacity:.35;text-decoration:line-through;cursor:not-allowed}
.bk-slot.gone:hover{border-color:var(--rule)}
@media(max-width:560px){.bk-slot{flex:1 1 calc(50% - 5px);padding:12px 10px;text-align:center}}

.bk-packs{display:flex;flex-direction:column;gap:10px}
.bk-field label.bk-pack,.bk-pack{display:flex;flex-direction:row;align-items:flex-start;gap:14px;padding:16px 18px;border:1px solid var(--rule);border-radius:14px;background:#fff;cursor:pointer;transition:border-color .18s,box-shadow .18s;letter-spacing:normal;text-transform:none;font-size:1rem}
.bk-pack:hover{border-color:var(--ink)}
.bk-pack.on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset}
.bk-pack input{margin-top:4px;accent-color:var(--ink)}
.bk-pack .p-main{display:flex;flex-direction:column;gap:4px;flex:1;margin:0}
.bk-pack .p-name{font-weight:600;letter-spacing:normal;text-transform:none;font-size:1.02rem;color:var(--ink)}
.bk-pack .p-note{font-size:.86rem;color:var(--ink-soft);line-height:1.5;text-transform:none;letter-spacing:normal;font-weight:400}
.bk-pack .p-price{font-weight:600;white-space:nowrap;margin-left:auto;letter-spacing:normal;text-transform:none;font-size:1.02rem}

/* ---- Ticket types: a row per kind, each with its own count ---- */
.bk-tiers{display:flex;flex-direction:column;gap:10px}
.bk-tier{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--rule);border-radius:12px;background:var(--bg-card);transition:border-color .15s,background .15s}
.bk-tier.on{border-color:var(--ink);background:#fff}
.bk-tier .t-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.bk-tier .t-name{font-weight:600}
.bk-tier .t-note{font-size:.82rem;color:var(--ink-muted);line-height:1.4}
.bk-tier .t-price{font-weight:600;white-space:nowrap;font-size:1.02rem}
.bk-tier .t-step{flex:none}
@media (max-width:560px){
  .bk-tier{flex-wrap:wrap;gap:10px}
  .bk-tier .t-main{flex:1 1 100%}
  .bk-tier .t-price{margin-left:auto}
}
.bk-hint{margin:8px 0 0;font-size:.86rem;color:var(--ink-soft)}
@media(max-width:600px){.bk-pack{padding:14px}}

.bk-field input[type=date]{min-height:48px;appearance:none;-webkit-appearance:none}
.bk-field input[type=date]::-webkit-date-and-time-value{text-align:left}

/* ---------- Waiver: notices, popup ---------- */
.bk-notice{display:flex;gap:14px;align-items:flex-start;background:var(--cream);border:1px solid var(--rule);border-left:3px solid #a8433a;border-radius:10px;padding:14px 16px;margin:0 0 12px}
.bk-notice-flag{font-family:var(--sans);font-size:.64rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#a8433a;flex:none;padding-top:2px}
.bk-notice p{margin:0;font-size:.74rem;line-height:1.6;color:var(--ink-soft);letter-spacing:.01em}
.bk-waiver-open{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:18px 0 22px}
.bk-waiver-open .w-ver{font-family:var(--sans);font-size:.74rem;color:var(--ink-muted)}
.bk-check.locked{opacity:.62}
.w-lock-note{font-style:normal;font-size:.8rem;color:var(--ink-muted)}
.w-modal{position:fixed;inset:0;z-index:900;background:rgba(38,32,28,.55);display:flex;align-items:center;justify-content:center;padding:24px}
.w-sheet{background:#fff;border-radius:16px;width:min(720px,100%);max-height:min(86vh,860px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 80px rgba(38,32,28,.3)}
.w-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 26px 16px;border-bottom:1px solid var(--rule)}
.w-head h2{margin:0;font-size:1.4rem;line-height:1.2}
.w-head p{margin:6px 0 0;font-family:var(--sans);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted)}
.w-close{border:0;background:none;font-size:1.7rem;line-height:1;color:var(--ink-muted);cursor:pointer;padding:0 4px;min-height:44px;min-width:44px}
.w-close:hover{color:var(--ink)}
.w-body{overflow-y:auto;padding:22px 26px 8px;-webkit-overflow-scrolling:touch}
.w-body section{margin:0 0 22px}
.w-body h3{font-family:var(--sans);font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 10px}
.w-body p{font-size:.9rem;line-height:1.68;color:var(--ink-soft);margin:0 0 12px}
.w-body .w-flag{font-weight:600;color:var(--ink);font-size:.84rem;letter-spacing:.02em}
.w-end{text-align:center;font-family:var(--sans);font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);padding:10px 0 18px}
.w-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 26px 20px;border-top:1px solid var(--rule);background:var(--cream)}
.w-progress{font-family:var(--sans);font-size:.76rem;color:var(--ink-muted)}
.w-foot .btn{border:0;cursor:pointer;font-family:var(--sans)}
.w-foot .btn[disabled]{opacity:.45;cursor:not-allowed}
@media(max-width:600px){.w-modal{padding:0}.w-sheet{border-radius:0;max-height:100vh;height:100%}.w-head,.w-body,.w-foot{padding-left:18px;padding-right:18px}.w-foot{flex-direction:column;align-items:stretch;gap:10px}.w-foot .btn{width:100%}}

.book-done .done-sub{font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 22px}
.done-when{background:var(--cream);border:1px solid var(--rule);border-radius:14px;padding:26px 28px;margin:0 0 20px;text-align:center}
.done-when .dw-time{font-family:var(--serif-display);font-size:clamp(2.4rem,6vw,3.4rem);line-height:1;margin:0 0 8px}
.done-when .dw-date{font-size:1.12rem;color:var(--ink);margin:0 0 4px}
.done-when .dw-where{font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}
