/* Booking portal — "Golden Hour" tokens (design_handoff_golden_hour_theme,
   07-28): Public Sans body + Source Serif 4 display, terracotta #BE5A38
   accent, warm paper #FAF7F1 ground, ink #211A14, sharp 3/4px radii.
   Scoped under .bk-*. VIP checkout gets the body.bk-vip skin (end of file). */

:root{
  --bk-accent:#BE5A38; --bk-accent-dark:#A84C2D;
  --bk-ink:#211A14; --bk-body:#5C5245; --bk-muted:#8A7E6E;
  --bk-ground:#FAF7F1; --bk-card:#FFFDF9; --bk-border:#E7DFD3;
  --bk-tint:#F8EDE5; --bk-tint-soft:#FCF6EF;
  --bk-good:#3D6B34; --bk-warn:#A8641F; --bk-error:#c5221f;
  --bk-r:3px; --bk-r-lg:4px;
  --bk-serif:'Source Serif 4',Georgia,serif;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bk-ground);color:var(--bk-ink);font-family:'Public Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
button{font-family:inherit}

/* Header — slim checkout tunnel: logo, phone, lock. No nav = no leaks. */
.bk-header{background:#fff;border-bottom:1px solid var(--bk-border);padding:.7rem 1.25rem;display:flex;align-items:center;justify-content:space-between}
.bk-logo img{display:block;height:40px;width:auto}
.bk-header-right{display:flex;align-items:center;gap:1.1rem}
.bk-phone{color:#5C5245;text-decoration:none;font-size:.85rem;font-weight:600}
.bk-phone:hover{color:var(--bk-ink)}
.bk-secure{color:var(--bk-muted);font-size:.8rem}
@media(max-width:560px){.bk-secure{display:none}}

/* Layout */
.bk-main{max-width:1080px;margin:0 auto;padding:1.25rem 1rem 6.5rem}
.bk-cols{display:grid;grid-template-columns:1fr 340px;gap:1.25rem;align-items:start}
/* Mobile: single column — the summary card STAYS (promise pair + line items
   must be visible, not just the price bar); it stacks after the steps, and
   its own CTA is hidden in favor of the sticky bar. */
@media(max-width:880px){
  .bk-cols{grid-template-columns:1fr}
  .bk-summary{position:static}
  .bk-sum-card .bk-cta,.bk-sum-card .bk-trust{display:none}
  .bk-mobilebar[hidden]{display:none}
  .bk-mobilebar{display:flex}
}
@media(min-width:881px){.bk-mobilebar{display:none!important}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.bk-tourhead{margin:.25rem 0 1rem}
.bk-tourhead h1{font-size:1.45rem;font-weight:800;letter-spacing:-.01em}
.bk-stars{display:flex;flex-direction:column;gap:.15rem;margin-top:.3rem;font-size:.85rem}
.bk-stars-row{display:flex;align-items:center;gap:.4rem}
.bk-stars-num{font-weight:700}
.bk-stars-icons{color:var(--bk-accent);letter-spacing:.05em}
.bk-stars-logos{display:inline-flex;align-items:center;gap:.35rem;margin-left:.25rem}
.bk-stars-logos img{display:block;width:14px;height:14px}
.bk-stars-count{color:var(--bk-body);font-size:.8rem}

.bk-mockbadge{background:#FDF3E4;border:1px solid #E3B87B;color:#8A6117;border-radius:var(--bk-r);padding:.5rem .8rem;font-size:.8rem;margin-bottom:1rem}

/* Cards */
.bk-card{background:var(--bk-card);border:1px solid var(--bk-border);border-radius:var(--bk-r-lg);padding:1.1rem 1.15rem;margin-bottom:1rem}
.bk-card-title{font-size:.95rem;font-weight:700;margin-bottom:.8rem}

/* Pickup-type toggle — two price-honest option cards */
.bk-options{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
@media(max-width:560px){.bk-options{grid-template-columns:1fr}}
.bk-opt{border:2px solid var(--bk-border);border-radius:var(--bk-r-lg);background:#fff;padding:.85rem .9rem;text-align:left;cursor:pointer;transition:border-color .12s,background .12s}
.bk-opt:hover{border-color:#D5C9B8}
.bk-opt[aria-pressed="true"]{border-color:var(--bk-accent);background:var(--bk-tint-soft)}
.bk-opt-label{font-weight:700;font-size:.92rem;display:flex;justify-content:space-between;gap:.5rem}
.bk-opt-price{color:var(--bk-accent);white-space:nowrap}
.bk-opt-sub{color:var(--bk-body);font-size:.8rem;margin-top:.25rem;line-height:1.35}

/* Quick chips */
.bk-chips{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.8rem}
.bk-chip{border:1.5px solid var(--bk-border);background:#fff;border-radius:999px;padding:.4rem .85rem;font-size:.82rem;font-weight:600;color:#5C5245;cursor:pointer}
.bk-chip:hover{border-color:var(--bk-accent);color:var(--bk-accent)}
.bk-chip[aria-pressed="true"]{background:var(--bk-accent);border-color:var(--bk-accent);color:#fff}
.bk-chip:disabled{opacity:.4;cursor:default}

/* Calendar */
.bk-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}
.bk-cal-month{font-weight:700;font-size:.95rem}
.bk-cal-nav{border:1px solid var(--bk-border);background:#fff;border-radius:var(--bk-r);width:32px;height:32px;font-size:1.1rem;line-height:1;cursor:pointer;color:#5C5245}
.bk-cal-nav:hover:not(:disabled){border-color:var(--bk-accent);color:var(--bk-accent)}
.bk-cal-nav:disabled{opacity:.35;cursor:default}
.bk-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.bk-cal-dow{margin-bottom:4px}
.bk-cal-dow span{text-align:center;font-size:.7rem;font-weight:600;color:var(--bk-muted);text-transform:uppercase;letter-spacing:.04em;padding:.2rem 0}
/* Approved calendar option 3b: every bookable day is a bordered, visibly
   tappable cell; dead days lose the border entirely. */
.bk-day{position:relative;border:1px solid var(--bk-border);background:#fff;border-radius:var(--bk-r);min-height:42px;font-size:.88rem;font-weight:600;color:var(--bk-ink);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.bk-day:hover:not(:disabled){border-color:var(--bk-accent)}
.bk-day:disabled{color:#CFC6B6;cursor:default;background:transparent;border-color:transparent;font-weight:400}
.bk-day.bk-soldout:disabled{text-decoration:line-through}
.bk-day[aria-selected="true"]{background:var(--bk-accent);border-color:var(--bk-accent);color:#fff;box-shadow:0 2px 6px rgba(190,90,56,.35)}
.bk-day .bk-seats{font-size:.6rem;font-weight:700;color:var(--bk-warn);line-height:1}
.bk-day[aria-selected="true"] .bk-seats{color:#F3D5C6}
.bk-day.bk-today::after{content:"";position:absolute;bottom:4px;width:4px;height:4px;border-radius:50%;background:var(--bk-accent)}
.bk-day[aria-selected="true"].bk-today::after{background:#fff}
.bk-cal-note{margin-top:.6rem;font-size:.8rem;color:var(--bk-muted);min-height:1.1em}
.bk-cal-note .bk-err{color:var(--bk-error);font-weight:600}
.bk-cal-note button{border:none;background:none;color:var(--bk-accent);font-weight:700;cursor:pointer;font-size:.8rem;text-decoration:underline}

/* Steppers */
.bk-step-row{display:flex;align-items:center;justify-content:space-between;padding:.55rem 0;border-bottom:1px solid #EFE8DB}
.bk-step-row:last-child{border-bottom:none}
.bk-step-who b{font-size:.9rem}
.bk-step-who small{display:block;color:var(--bk-muted);font-size:.75rem;margin-top:.1rem}
.bk-step-ctrl{display:flex;align-items:center;gap:.7rem}
.bk-step-btn{width:34px;height:34px;border-radius:50%;border:1.5px solid var(--bk-border);background:#fff;font-size:1.15rem;line-height:1;cursor:pointer;color:#5C5245}
.bk-step-btn:hover:not(:disabled){border-color:var(--bk-accent);color:var(--bk-accent)}
.bk-step-btn:disabled{opacity:.35;cursor:default}
.bk-step-n{min-width:1.4em;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}

/* Coming-next placeholder */
.bk-card-soon{background:var(--bk-tint-soft);border-color:#E6D2BE}
.bk-soon-list{list-style:none}
.bk-soon-list li{padding:.35rem 0;font-size:.88rem;font-weight:600}
.bk-soon-list li span{color:var(--bk-muted);font-weight:400}

/* Summary */
.bk-summary{position:sticky;top:1rem}
.bk-sum-rows{margin-bottom:.4rem}
.bk-sum-rows div{display:flex;justify-content:space-between;gap:.75rem;padding:.3rem 0;font-size:.86rem}
.bk-sum-rows dt{color:var(--bk-body)}
.bk-sum-rows dd{font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.bk-sum-total{display:flex;justify-content:space-between;border-top:1px solid var(--bk-border);padding-top:.7rem;margin-top:.4rem;font-weight:800;font-size:1.05rem}
.bk-sum-total span:last-child{font-variant-numeric:tabular-nums}
/* Promise box = GOOD news → green semantics (the accent tint read as a warning — Kevin 2026-07-15) */
.bk-promise{display:flex;flex-direction:column;gap:.2rem;background:#EAF2E7;border-radius:var(--bk-r);padding:.6rem .75rem;margin:.8rem 0;font-size:.78rem;font-weight:600;color:#3D6B34}
.bk-cta{width:100%;background:var(--bk-accent);color:#fff;border:none;border-radius:3px;padding:.85rem 1rem;font-size:1rem;font-weight:700;cursor:pointer;transition:background .15s}
.bk-cta:hover:not(:disabled){background:var(--bk-accent-dark)}
.bk-cta:disabled{background:#DCB4A0;cursor:default}
.bk-trust{text-align:center;color:var(--bk-muted);font-size:.75rem;margin-top:.6rem}

/* Mobile sticky bar */
.bk-mobilebar{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--bk-border);padding:.65rem 1rem calc(.65rem + env(safe-area-inset-bottom));display:flex;align-items:center;gap:1rem;z-index:100;box-shadow:0 -4px 16px rgba(0,0,0,.06)}
.bk-mb-price{display:flex;flex-direction:column}
.bk-mb-price span{font-weight:800;font-size:1.1rem;font-variant-numeric:tabular-nums}
.bk-mb-price small{color:var(--bk-muted);font-size:.72rem}
.bk-cta-mb{flex:1;width:auto}

/* Pickup step — hotel autocomplete */
.bk-hotel-search{position:relative}
.bk-hotel-search input{width:100%;border:1.5px solid var(--bk-border);border-radius:3px;padding:.75rem .9rem;font-size:16px;font-family:inherit;color:var(--bk-ink);background:#fff}
.bk-hotel-search input:focus{outline:none;border-color:var(--bk-accent);box-shadow:0 0 0 3px rgba(190,90,56,.12)}
.bk-hotel-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--bk-border);border-radius:4px;box-shadow:0 8px 24px rgba(0,0,0,.1);max-height:290px;overflow-y:auto;z-index:50}
.bk-hotel-row{display:block;width:100%;text-align:left;border:none;background:none;padding:.6rem .9rem;cursor:pointer;border-bottom:1px solid #F3EEE4}
.bk-hotel-row:last-child{border-bottom:none}
.bk-hotel-row:hover,.bk-hotel-row.bk-active{background:var(--bk-tint-soft)}
.bk-hotel-row b{display:block;font-size:.9rem;color:var(--bk-ink)}
.bk-hotel-row small{color:var(--bk-muted);font-size:.76rem}
.bk-hotel-row mark{background:none;color:var(--bk-accent);font-weight:700}
.bk-hotel-empty{padding:.8rem .9rem;color:var(--bk-muted);font-size:.85rem}
.bk-hotel-picked{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;background:var(--bk-tint-soft);border:1.5px solid var(--bk-accent);border-radius:4px;padding:.7rem .9rem;margin-top:.7rem}
.bk-hotel-picked .bk-hp-name{font-weight:700;font-size:.92rem}
.bk-hotel-picked .bk-hp-sub{color:var(--bk-body);font-size:.78rem;margin-top:.15rem}
.bk-hotel-picked{flex-wrap:wrap}
.bk-hp-vouch{flex:1 1 100%;margin-top:.55rem;padding:.55rem .7rem;background:#FAF3E4;border:1px solid #EAD9B4;border-radius:var(--bk-r);color:#5C5245;font-size:.8rem;line-height:1.55}
.bk-hp-vouch b{color:#211A14}
.bk-hotel-picked button{border:none;background:none;color:var(--bk-accent);font-weight:700;font-size:.8rem;cursor:pointer;white-space:nowrap;padding:.1rem 0}
.bk-linkbtn{border:none;background:none;color:var(--bk-muted);font-size:.8rem;text-decoration:underline;cursor:pointer;margin-top:.7rem;padding:0}
.bk-linkbtn:hover{color:var(--bk-accent)}
.bk-nohotel{background:var(--bk-ground);border:1px solid var(--bk-border);border-radius:4px;padding:.8rem .9rem;margin-top:.6rem;font-size:.84rem;color:var(--bk-body);line-height:1.5}
.bk-nohotel b{color:var(--bk-ink)}
.bk-nohotel .bk-nh-opt{display:block;margin-top:.5rem}
.bk-nohotel button.bk-nh-cta{border:1.5px solid var(--bk-accent);background:#fff;color:var(--bk-accent);border-radius:var(--bk-r);padding:.4rem .8rem;font-weight:700;font-size:.8rem;cursor:pointer;margin-top:.3rem}
.bk-nohotel button.bk-nh-cta:hover{background:var(--bk-tint-soft)}

/* Pickup step — meeting-point cards */
.bk-mp-cards{display:grid;gap:.7rem}
.bk-mp-card{border:2px solid var(--bk-border);border-radius:var(--bk-r-lg);background:#fff;padding:.85rem .95rem;text-align:left;cursor:pointer;transition:border-color .12s,background .12s}
.bk-mp-card:hover{border-color:#D5C9B8}
.bk-mp-card[aria-pressed="true"]{border-color:var(--bk-accent);background:var(--bk-tint-soft)}
.bk-mp-name{font-weight:700;font-size:.92rem}
.bk-mp-meta{color:var(--bk-body);font-size:.8rem;margin-top:.25rem}
.bk-mp-meta a{color:var(--bk-accent);font-weight:600}
.bk-mp-single{cursor:default}
.bk-mp-single:hover{border-color:var(--bk-accent)}
.bk-mp-role{display:inline-block;background:var(--bk-tint);color:#A84C2D;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:.15rem .5rem;margin-left:.35rem;vertical-align:middle}

/* Mobile thumb targets. Selectors are deliberately scoped under .bk-main so
   they out-SPECIFY the base rules — the old version relied on being last in
   the file, an invariant a comment can't enforce and that later appends had
   already eroded (07-26 design review #16). */
@media(max-width:880px){
  .bk-main .bk-step-btn{width:44px;height:44px}
  .bk-main .bk-day{min-height:46px}
  .bk-main .bk-chip{min-height:44px;display:inline-flex;align-items:center;padding:.5rem 1rem}  /* GUARANTEED 44px floor — padding math landed at 42 */
  .bk-main .bk-cal-nav{width:44px;height:44px}
}

/* Contact form */
.bk-field{display:flex;flex-direction:column;margin-bottom:.9rem}
.bk-field label{font-size:.78rem;font-weight:600;color:#5C5245;margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.04em}
.bk-field input,.bk-phone-row select{border:1.5px solid var(--bk-border);border-radius:3px;padding:.7rem .85rem;font-size:16px;font-family:inherit;color:var(--bk-ink);background:#fff}
.bk-field input:focus,.bk-phone-row select:focus{outline:none;border-color:var(--bk-accent);box-shadow:0 0 0 3px rgba(190,90,56,.12)}
.bk-field input[aria-invalid="true"]{border-color:var(--bk-error)}
.bk-field-hint{color:var(--bk-muted);font-size:.75rem;margin-top:.3rem}
.bk-field-err{color:var(--bk-error);font-size:.78rem;font-weight:600;margin-top:.3rem;display:none}
.bk-field-err.bk-show{display:block}
.bk-phone-row{display:flex;gap:.5rem}
.bk-phone-row select{flex:0 0 auto;max-width:130px;cursor:pointer}
.bk-phone-row input{flex:1;min-width:0}

/* Payment card */
.bk-pay-divider{display:flex;align-items:center;gap:.75rem;margin:.9rem 0;color:var(--bk-muted);font-size:.78rem}
.bk-pay-divider::before,.bk-pay-divider::after{content:"";flex:1;height:1px;background:var(--bk-border)}
.bk-paybtn{margin-top:1rem}
.bk-pay-cancel{text-align:center;color:#3D6B34;background:#EAF2E7;border-radius:var(--bk-r);padding:.5rem .7rem;font-size:.78rem;font-weight:600;margin-top:.7rem}
.bk-pay-err{background:#fdeceb;border:1px solid #f5c6c4;color:var(--bk-error);border-radius:var(--bk-r);padding:.6rem .8rem;font-size:.83rem;margin-top:.7rem}
.bk-done-copy{color:var(--bk-body);font-size:.9rem;line-height:1.55}
#bkPaymentElement,#bkExpressPay{min-height:0}
/* The classic Card Element renders bare fields with no chrome of its own — the
   Payment Element used to supply its own bordered card. Give it the same input
   shell as the contact fields so the checkout still reads as one form. Stripe
   puts StripeElement--focus / --invalid on the MOUNT node, so these hook it. */
#bkPaymentElement{border:1px solid var(--bk-border);border-radius:var(--bk-r);padding:.85rem .9rem;background:#fff;transition:border-color .15s,box-shadow .15s}
#bkPaymentElement.StripeElement--focus{border-color:var(--bk-accent);box-shadow:0 0 0 3px rgba(190,90,56,.14)}
#bkPaymentElement.StripeElement--invalid{border-color:var(--bk-error)}
.bk-pay-divider[hidden]{display:none}

/* International-number suggestion */
.bk-phone-suggest{background:var(--bk-tint-soft);border:1px solid #E6D2BE;border-radius:4px;padding:.6rem .75rem;margin-top:.45rem}
.bk-phone-suggest[hidden]{display:none}
.bk-ps-label{display:block;font-size:.78rem;color:#A84C2D;font-weight:600;margin-bottom:.35rem}
.bk-ps-chip{display:inline-block;border:1.5px solid var(--bk-accent);background:#fff;color:var(--bk-ink);border-radius:999px;padding:.4rem .8rem;font-size:.85rem;font-weight:700;cursor:pointer;margin:.15rem .3rem .15rem 0;font-variant-numeric:tabular-nums}
.bk-ps-chip:hover{background:var(--bk-tint)}

/* Grid children default to min-width:auto, which lets the steps column GROW
   to the Stripe iframe's intrinsic width instead of forcing it to shrink —
   the S23-width (360px) overflow. min-width:0 restores real constraint. */
.bk-cols>*{min-width:0}

/* Confirmation */
.bk-confirm{border-color:var(--bk-good);border-width:2px}
.bk-confirm-head{font-size:1.3rem;font-weight:800;margin-bottom:.3rem}
.bk-confirm-ref{display:inline-block;background:#EAF2E7;color:#3D6B34;border-radius:999px;padding:.35rem .9rem;font-weight:800;font-size:1rem;margin-bottom:.8rem;font-variant-numeric:tabular-nums}
.bk-confirm-next{background:var(--bk-ground);border-radius:4px;padding:.8rem .95rem;margin:.8rem 0;font-size:.88rem}
.bk-confirm-next b{display:block;margin-bottom:.4rem}
.bk-confirm-next ul{list-style:none;display:flex;flex-direction:column;gap:.35rem}
.bk-confirm .bk-trust a{color:var(--bk-accent);font-weight:700}

/* Priced, pax-aware calendar days */
.bk-day{min-height:50px}
.bk-day-n{line-height:1.1}
.bk-day-p{font-size:.72rem;font-weight:600;color:var(--bk-body);line-height:1;font-variant-numeric:tabular-nums}
.bk-day[aria-selected="true"] .bk-day-p{color:#F3D5C6}
@media(max-width:880px){.bk-day{min-height:54px}}

/* Ready-to-pay CTA goes GREEN — orange while choosing, green when the action
   is the positive final one (progress-as-color; Kevin 2026-07-15). Must stay
   out-specifies .bk-cta (.bk-cta.bk-go) so source order no longer matters. */
.bk-cta.bk-go{background:#3D6B34}
.bk-cta.bk-go:hover:not(:disabled){background:#31562A}
.bk-cta.bk-go:disabled{background:#AFC4A8}

/* Hotel search needs BREATHING ROOM: while the dropdown is open, the page
   gains temporary bottom space and the input glides toward the viewport top,
   so results are never clipped at the fold (Kevin, 2026-07-15). */
.bk-main.bk-search-room{padding-bottom:60vh}
.bk-hotel-search{scroll-margin-top:96px}
.bk-hotel-results{max-height:min(340px,60vh)}

/* The [hidden] attribute must ALWAYS win — a display:flex/grid on a class
   otherwise overrides it (bit us twice: the pay divider, then the empty
   picked-hotel bar). Blanket rule kills the whole bug family. */
[hidden]{display:none!important}

/* The 7 PM next-day lock — night-indigo, distinct from error red and go green */
.bk-late-banner{background:#F4F1FA;border:1.5px solid #B8A8D4;border-radius:4px;padding:.7rem .85rem;margin-top:.6rem;font-size:.86rem;line-height:1.5;color:#4A3A6B}
.bk-late-banner .bk-nh-cta{display:block;margin-top:.5rem;border-color:#B8A8D4;color:#5A4880;background:#fff}
.bk-late-banner .bk-nh-cta:hover{background:#EBE6F4}
.bk-late-alt{display:block;margin-top:.35rem;color:#7A6F94;font-size:.8rem}
.bk-day.bk-late{border-color:#B8A8D4;background:#F4F1FA;color:#4A3A6B}
.bk-day.bk-late:hover{border-color:#8A6FA0}
.bk-mp-late{background:#F4F1FA;border:1.5px solid #B8A8D4;border-radius:4px;padding:.6rem .8rem;margin-top:.7rem;font-size:.83rem;line-height:1.45;color:#4A3A6B}

/* Express checkout card (wallets above the contact form) */
.bk-express-note{color:var(--bk-muted);font-size:.78rem;margin-top:.55rem;text-align:center}
.bk-express-status{background:var(--bk-tint-soft);border:1.5px solid var(--bk-accent);border-radius:4px;padding:.6rem .8rem;margin-top:.6rem;font-size:.85rem;color:var(--bk-ink)}

/* LA ↔ Anaheim flip link under the tour header */
.bk-tour-flip{font-size:.85rem;color:var(--bk-body);margin:-.35rem 0 .9rem}
.bk-tour-flip .bk-linkbtn{font-size:.85rem}
.bk-mp-flip{margin:.9rem 0 0}

/* Tour chooser (generic Book Now lands here with no ?act) */
.bk-chooser{display:grid;gap:.7rem}
.bk-choose{display:flex;align-items:center;justify-content:space-between;gap:.9rem;border:2px solid var(--bk-border);border-radius:var(--bk-r-lg);background:#fff;padding:1rem 1.05rem;text-align:left;cursor:pointer;transition:border-color .12s,background .12s;font-family:inherit}
.bk-choose:hover{border-color:var(--bk-accent);background:var(--bk-tint-soft)}
/* flex:1 is REQUIRED now the card has three children: with the thumb added,
   justify-content:space-between pushed the leftover space BETWEEN the thumb
   and a short description (Anaheim's one-liner), indenting it while the
   longer cards looked fine. Growing the text column absorbs that space. */
.bk-ch-main{display:block;min-width:0;flex:1 1 auto}
.bk-ch-name{display:block;font-weight:800;font-size:1rem;color:var(--bk-ink)}
/* ONE line (Kevin, 07-26). Ellipsis is the guard, not the plan — copy that
   needs truncating on a phone is copy that's too long. */
.bk-ch-sub{display:block;color:var(--bk-body);font-size:.82rem;margin-top:.25rem;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk-ch-price{flex:none;text-align:right;font-weight:800;font-size:.95rem;color:var(--bk-accent);white-space:nowrap}
.bk-ch-price small{display:block;font-weight:600;font-size:.68rem;color:var(--bk-muted);margin-top:.1rem}

/* Hotel Pickup Finder — unified dropdown (our hotels + Places) + the map */
.bk-results-head{padding:.5rem .9rem .35rem;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--bk-muted);background:#F6F1E8;border-top:1px solid var(--bk-border)}
.bk-place-row small{display:block}
.bk-finder-rec{background:#EAF2E7;border:1.5px solid var(--bk-good);border-radius:4px;padding:.7rem .85rem;margin-top:.6rem;font-size:.86rem;line-height:1.5;color:#2E4F27}
.bk-finder-rec b{color:#243D1C}
.bk-finder-rec .bk-nh-cta{display:block;margin-top:.5rem;border-color:var(--bk-good);color:#3D6B34}
.bk-finder-rec .bk-nh-cta:hover{background:#DEEAD6}
.bk-finder-map{height:260px;border:1px solid var(--bk-border);border-radius:4px;margin-top:.6rem;overflow:hidden}
.bk-finder-map-note{color:var(--bk-body);font-size:.82rem;margin-top:.4rem;font-weight:600}
@media (max-width:640px){.bk-finder-map{height:220px}}

/* --- VIP merchandising (07-25 build-out) --- */
.bk-vip-perks{background:linear-gradient(135deg,#FCF6EF,#fff)}
.bk-perks{list-style:none;margin:.35rem 0 .75rem;display:flex;flex-direction:column;gap:.5rem}
/* Elegant minimal marker — emojis read theme-park, not private tour (Kevin, 07-27) */
.bk-perks li{font-size:.92rem;line-height:1.45;color:#5C5245;position:relative;padding-left:1rem}
.bk-perks li b{color:#211A14}
.bk-perks li::before{content:'•';position:absolute;left:.1rem;color:#A8894A}
.bk-vip-time{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#FCF6EF;border:1px solid #E7DFD3;border-radius:4px;padding:.75rem .9rem;margin-top:.6rem;flex-wrap:wrap}
.bk-vip-time label{display:flex;flex-direction:column;gap:.15rem;flex:1;min-width:200px}
.bk-vip-time label small{color:#8A7E6E;font-size:.78rem;line-height:1.4}
.bk-vip-time select{font-family:inherit;font-size:.9rem;padding:.5rem .6rem;border:1.5px solid #D5C9B8;border-radius:6px;background:#fff;min-width:150px}
.bk-vip-notes{background:#FCF6EF;border:1px solid #E7DFD3;border-radius:4px;padding:.75rem .9rem;margin-top:.6rem}
.bk-vip-notes label{display:block;font-size:.95rem}
.bk-vip-notes .bk-optional{color:#8A7E6E;font-size:.78rem;font-weight:400;margin-left:.2rem} /* NOT .bk-opt — that's the option-card button class (border+padding) */
.bk-vip-notes label small{display:block;margin-top:.15rem;color:#8A7E6E;font-size:.78rem;line-height:1.4;font-weight:400}
.bk-vip-notes textarea{width:100%;box-sizing:border-box;margin-top:.5rem;font-family:inherit;font-size:.9rem;line-height:1.4;padding:.5rem .6rem;border:1.5px solid #D5C9B8;border-radius:6px;background:#fff;resize:vertical;min-height:64px}

/* Day-specific heads-up (Monday Griffith note). Deliberately a SOFT INFO tone
   — warm sand (Golden Hour re-skin), no border-left accent bar, no warning
   colours: it must inform without discouraging Monday bookings. */
.bk-day-note{background:#FAF3E4;border:1px solid #EAD9B4;border-radius:4px;padding:.7rem .85rem;margin-top:.6rem;font-size:.85rem;line-height:1.55;color:#5C5245}
.bk-day-note b{color:#211A14}


/* ---- 07-26 design review ---- */

/* #4/Mockup B — social proof + the promise repeated AT the money moment, where
   the card number gets typed. The top-of-page star row is 3 screens away by then. */
/* Reassurance green, not the warm accent tint (Kevin, 07-29): this card sits
   directly above the card field, where the warm shade read as a caution. Same
   #EAF2E7 as .bk-pay-cancel just below the Pay button and .bk-promise, so the
   payment step is bracketed by one consistent "you're safe here" colour. Star
   icons stay accent-warm — gold/orange stars are the convention and reading
   them as green would be worse. */
.bk-pay-trust{display:flex;flex-direction:column;gap:.3rem;background:#EAF2E7;border:1px solid #CFE0C8;border-radius:4px;padding:.6rem .75rem;margin-bottom:.85rem}
.bk-pay-trust-stars{display:flex;align-items:center;gap:.4rem;font-size:.85rem;font-weight:700;color:var(--bk-ink)}
.bk-pay-trust-stars .bk-stars-icons{color:#BE5A38;letter-spacing:.5px}
.bk-pay-trust-stars img{display:block;border-radius:2px}
.bk-pay-trust-line{font-size:.78rem;color:var(--bk-body);line-height:1.45}

/* #3/Mockup C — the escape hatches become visible peers of the search box
   instead of hiding behind a 12.8px muted underline. */
.bk-pu-outs{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.7rem}
.bk-pu-out{flex:1 1 auto;min-height:44px;border:1.5px solid var(--bk-border);background:#fff;border-radius:4px;padding:.55rem .8rem;font-family:inherit;font-size:.83rem;font-weight:600;color:#5C5245;cursor:pointer;text-align:left;line-height:1.35}
.bk-pu-out:hover{border-color:var(--bk-accent);color:var(--bk-accent)}
.bk-pu-out small{display:block;font-weight:500;font-size:.76rem;color:var(--bk-muted);margin-top:.1rem}
.bk-pu-out:hover small{color:inherit;opacity:.85}

/* #2/Mockup A — VIP merchandising hero */
/* height:auto is REQUIRED — the width/height attrs (kept so the browser can
   reserve space and avoid layout shift) otherwise pin the box to 506px tall
   and aspect-ratio does NOT override an explicit height. */
.bk-vip-hero{width:100%;height:auto;border-radius:4px;display:block;margin-bottom:.9rem;aspect-ratio:3/2;object-fit:cover}

/* #17 — chooser cards get their product photo */
.bk-ch-thumb{width:56px;height:56px;border-radius:4px;object-fit:cover;flex-shrink:0}
/* Belt against the 375px crush: the nowrap price column may never take more
   than a third of the card, and its sub-label may wrap. */
.bk-choose .bk-ch-price{max-width:34%}
.bk-choose .bk-ch-price small{white-space:normal}

/* #11 — currency, stated once */
.bk-usd{font-size:.75rem;color:var(--bk-muted);font-weight:500}
/* #8 — the express BENEFIT reads before the buttons, at body size */
.bk-express-lead{font-size:.88rem;color:var(--bk-body);line-height:1.5;margin:-.15rem 0 .7rem}
/* #18 — the locked cell says what it IS, not just a symbol. Tight type so the
   word fits the 46px cell without changing grid rhythm. */
.bk-day-p.bk-day-late{font-size:.56rem;font-weight:700;letter-spacing:-.01em}

/* Chooser on narrow phones: a 56px thumb + a right-hand price column left the
   text only ~113px, so every card wrapped into a 330px-tall block. Below 430px
   the price drops to its own row and the description gets the full width back
   (07-26 design review #17 follow-up — caught on the 375px pass). */
@media(max-width:430px){
  /* The sub-text is ONE line, so it gets the FULL card width on its own row —
     beside a 56px thumb it only had ~203px (≈29 chars) and every description
     ellipsised. Name sits next to the thumb, sub and price span. */
  .bk-choose{display:grid;grid-template-columns:56px 1fr;grid-template-areas:"thumb name" "sub sub" "price price";gap:.4rem .75rem;align-items:center;padding:.85rem .9rem}
  .bk-choose .bk-ch-thumb{grid-area:thumb}
  .bk-choose .bk-ch-main{display:contents}
  .bk-choose .bk-ch-name{grid-area:name}
  .bk-choose .bk-ch-sub{grid-area:sub;margin-top:0}
  .bk-choose .bk-ch-price{grid-area:price;max-width:none;text-align:left;display:flex;align-items:baseline;gap:.4rem;white-space:normal}
  .bk-choose .bk-ch-price small{margin-top:0}
}
/* The call-us fallback that used to live inside the removed dropdown */
.bk-pu-help{flex:1 1 100%;font-size:.8rem;color:var(--bk-muted);line-height:1.5;margin-top:.1rem}
.bk-pu-help a{color:var(--bk-accent);font-weight:600}
/* Multi-option zone card (DTLA): each choice gets its own blurb + CTA */
.bk-finder-opt{margin-top:.7rem;padding-top:.7rem;border-top:1px solid rgba(0,0,0,.07)}
.bk-finder-opt:first-of-type{border-top:none;padding-top:.2rem}
.bk-finder-opt-blurb{font-size:.84rem;line-height:1.5;color:var(--bk-body);margin-bottom:.45rem}
.bk-finder-opt-blurb b{color:var(--bk-ink)}
.bk-finder-opt .bk-nh-cta{display:block;width:100%}
/* Meeting-time chip above each map pin (classic Marker label + className) */
.bk-map-lbl{background:#fff;border:1.5px solid #3D6B34;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700;color:#2E4F27;box-shadow:0 1px 4px rgba(0,0,0,.22);transform:translateY(-36px);white-space:nowrap}


/* ============================================================
   Golden Hour re-skin additions (design handoff, 07-28)
   ============================================================ */

/* Serif display faces — headings carry the weight, so 600 not 800 */
.bk-tourhead h1,.bk-cal-month,.bk-sum-card .bk-card-title{font-family:var(--bk-serif);font-weight:600;letter-spacing:-.01em}
/* The logo JPG has a white box — multiply melts it into warm paper */
.bk-logo img{mix-blend-mode:multiply}
/* Calendar legend row (static markup after #bkCalNote in book.html) */
.bk-cal-legend{margin-top:.5rem;font-size:.72rem;font-weight:600;color:var(--bk-body)}

/* ---- VIP skin: cream page, ink frame, gold actions. booking.js adds
   body.bk-vip under the same condition that un-hides #bkVipPerks. ---- */
body.bk-vip{background:#F2ECDF;color:#26201A}
body.bk-vip .bk-header{background:#211A14;border-bottom-color:#211A14}
body.bk-vip .bk-logo img{content:url("../logos/la-in-a-day-logo-01.png");mix-blend-mode:normal;height:34px}
body.bk-vip .bk-phone{color:#F0E7D4}
body.bk-vip .bk-phone:hover{color:#fff}
body.bk-vip .bk-secure{color:#DCCDAF}
body.bk-vip .bk-card{background:#FFFDF8;border-color:#E3D8C2}
body.bk-vip .bk-vip-perks{background:#FFFDF8} /* the peach gradient reads off-palette on cream */
body.bk-vip .bk-tourhead h1 em,body.bk-vip .bk-vip-accent{font-style:italic;color:#A8894A}
body.bk-vip .bk-stars-icons{color:#B08D3C}
/* inputs — all of them, not just the hotel search (spec: white, #D8CBAE border) */
body.bk-vip .bk-hotel-search input,body.bk-vip .bk-vip-time select,body.bk-vip .bk-vip-notes textarea,body.bk-vip .bk-field input,body.bk-vip .bk-phone-row select{background:#fff;border-color:#D8CBAE}
body.bk-vip .bk-hotel-search input:focus,body.bk-vip .bk-field input:focus,body.bk-vip .bk-phone-row select:focus{border-color:#A8894A;box-shadow:0 0 0 3px rgba(168,137,74,.12)}
/* selected / picked states go gold */
body.bk-vip .bk-opt[aria-pressed="true"],body.bk-vip .bk-hotel-picked{background:#F7F0DE;border-color:#A8894A}
body.bk-vip .bk-hotel-picked button,body.bk-vip .bk-opt-price,body.bk-vip .bk-cal-note button{color:#8A6F35}
body.bk-vip .bk-chip[aria-pressed="true"]{background:#C9A84C;border-color:#C9A84C;color:#211A14}
body.bk-vip .bk-step-btn:hover:not(:disabled),body.bk-vip .bk-cal-nav:hover:not(:disabled),body.bk-vip .bk-day:hover:not(:disabled){border-color:#A8894A;color:#8A6F35}
/* calendar */
body.bk-vip .bk-day{border-color:#E3D8C2}
body.bk-vip .bk-day .bk-day-p{color:#8A6F35}
body.bk-vip .bk-day[aria-selected="true"]{background:#C9A84C;border-color:#C9A84C;color:#211A14;box-shadow:0 2px 8px rgba(201,168,74,.45)}
body.bk-vip .bk-day[aria-selected="true"] .bk-day-p{color:#423624}
body.bk-vip .bk-day:disabled{color:#C6B896;border-color:transparent}
body.bk-vip .bk-day.bk-today::after{background:#A8894A}
/* ink order-summary card */
body.bk-vip .bk-sum-card{background:#211A14;border-color:#211A14;color:#F5EFE5}
body.bk-vip .bk-sum-card .bk-sum-rows dt{color:#B8A98E}
body.bk-vip .bk-sum-total{border-top-color:#3E3428}
body.bk-vip .bk-sum-card .bk-promise{background:#2C3A24;color:#A9D492}
body.bk-vip .bk-cta{background:#C9A84C;color:#211A14;font-weight:800}
body.bk-vip .bk-cta:hover:not(:disabled){background:#E8C96A}
body.bk-vip .bk-cta:disabled{background:#D8C9A4;color:#7A6C50}
body.bk-vip .bk-sum-card .bk-trust{color:#B8A98E}
/* mobile bar follows the ink summary */
body.bk-vip .bk-mobilebar{background:#211A14;border-top-color:#211A14;color:#F5EFE5}
body.bk-vip .bk-mb-price small{color:#B8A98E}
