/* Book a tour card and dialog (assets/js/book-tour.js) and the LUV-backed forms (assets/js/forms.js).
   Loaded on every page after site.css. */
/* ── Book a tour card (assets/js/book-tour.js) ── */
.book-dialog { border: 0; padding: 0; margin: auto; width: min(620px, calc(100vw - 32px)); max-height: calc(100dvh - 48px); background: #fff; color: var(--ink); box-shadow: 0 40px 90px -30px rgba(7, 11, 32, 0.6); overflow: auto; overscroll-behavior: contain; }
.book-dialog::backdrop { background: rgba(7, 11, 32, 0.62); backdrop-filter: blur(3px); }
.book-dialog[open] { animation: bt-in 0.32s cubic-bezier(0.16, 1, 0.3, 1); }
@keyframes bt-in { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.bt-card { padding: 34px 38px 32px; }
.book-inline { max-width: 680px; }
.bt-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
.bt-title { margin: 0; font-size: clamp(30px, 3.2vw, 42px); font-weight: 300; letter-spacing: -0.02em; line-height: 1; }
.bt-close { flex: none; width: 44px; height: 44px; margin: -8px -10px 0 0; border: 1px solid var(--line); background: #fff; color: var(--ink); font-size: 22px; line-height: 1; cursor: pointer; transition: background-color 0.15s, color 0.15s; }
.bt-close:hover { background: var(--ink); color: #fff; }
.bt-context { margin: 12px 0 0; font-size: 13px; color: var(--muted); }
.bt-form { margin-top: 26px; display: grid; gap: 26px; }
.bt-form[hidden], .bt-done[hidden] { display: none; }
.bt-step { border: 0; padding: 0; margin: 0; min-width: 0; }
.bt-step[hidden] { display: none; }
.bt-label { display: block; padding: 0; margin: 0 0 12px; font-size: 13px; letter-spacing: 0.01em; color: var(--muted); }
.bt-label .hint { margin-left: 8px; font-size: 12px; }
.bt-loading { margin: 0; font-size: 14px; color: var(--muted); }
.bt-days { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 6px; scroll-snap-type: x proximity; scrollbar-width: thin; }
.bt-days button { flex: 0 0 64px; scroll-snap-align: start; display: grid; justify-items: center; gap: 2px; padding: 10px 0 9px; border: 1px solid var(--line); background: #fff; color: var(--ink); cursor: pointer; transition: border-color 0.15s, background-color 0.15s, color 0.15s; }
.bt-days small { font-size: 11px; color: var(--muted); }
.bt-days b { font-size: 22px; font-weight: 400; line-height: 1.1; }
.bt-times { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; }
.bt-times button { min-height: 44px; border: 1px solid var(--line); background: #fff; color: var(--ink); font-size: 14px; cursor: pointer; transition: border-color 0.15s, background-color 0.15s, color 0.15s; }
.bt-days button:hover, .bt-times button:hover { border-color: var(--ink); }
.bt-days button[aria-checked="true"], .bt-times button[aria-checked="true"] { background: var(--ink); border-color: var(--ink); color: #fff; }
.bt-days button[aria-checked="true"] small { color: #bdbec4; }
.bt-days button:focus-visible, .bt-times button:focus-visible, .bt-close:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.bt-form .consent { margin: -6px 0 0; }
.bt-submit { justify-self: start; min-width: 200px; }
.bt-done { margin-top: 22px; }
.bt-done:focus { outline: none; }
.bt-done .bt-done-when { margin: 0 0 14px; font-size: clamp(26px, 3vw, 36px); font-weight: 300; line-height: 1.15; letter-spacing: -0.01em; }
.bt-done p { font-size: 15px; line-height: 1.6; }
.bt-where { color: var(--muted); font-size: 13px !important; }
html.has-dialog { overflow: hidden; }

/* Tour type: two large radio tiles (real radios, styled through the label). */
.bt-types { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.bt-types label { position: relative; display: block; cursor: pointer; }
.bt-types input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.bt-types span { display: grid; gap: 3px; min-height: 64px; padding: 12px 14px; border: 1px solid var(--line); background: #fff; transition: border-color 0.15s, background-color 0.15s, color 0.15s; }
.bt-types b { font-size: 15px; font-weight: 500; }
.bt-types small { font-size: 12px; color: var(--muted); line-height: 1.35; }
.bt-types label:hover span { border-color: var(--ink); }
.bt-types input:checked + span { background: var(--ink); border-color: var(--ink); color: #fff; }
.bt-types input:checked + span small { color: #bdbec4; }
.bt-types input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.bt-types label:active span { transform: scale(0.99); }

/* Loading: quiet grey blocks in the shape of the days and times. */
.bt-skel-row { display: flex; gap: 8px; }
.bt-skel { display: block; height: 44px; background: linear-gradient(90deg, var(--mist) 0%, #e8eaef 50%, var(--mist) 100%); background-size: 200% 100%; animation: bt-skel 1.2s linear infinite; }
.bt-skel-day { flex: 0 0 64px; height: 72px; }
@keyframes bt-skel { from { background-position: 100% 0; } to { background-position: -100% 0; } }
.bt-days button:active, .bt-times button:active { transform: scale(0.97); }
.bt-submit[disabled] { opacity: 0.6; cursor: progress; }
.bt-context { padding: 10px 12px; border-left: 2px solid #b9935c; background: #f6efe3; color: var(--ink) !important; }
.bt-context[hidden] { display: none; }

/* Forms: required marker, checkbox rows, selects. */
.req { color: #a23b2a; }
.field select { appearance: none; -webkit-appearance: none; padding-right: 28px; color: var(--ink); background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%230b1028' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 4px center; cursor: pointer; }
.field.check { grid-template-columns: 20px minmax(0, 1fr); align-items: start; gap: 12px; }
.field.check input { width: 20px; height: 20px; min-height: 0; margin: 2px 0 0; padding: 0; accent-color: var(--ink); border: 0; cursor: pointer; }
.field.check label { font-size: 13px; line-height: 1.5; color: var(--muted); cursor: pointer; }
.field.check .field-error { grid-column: 2; }
.lead-form .consent { margin: 0; }
.lead-form [type=submit] { min-width: 200px; }
.lead-form [type=submit][disabled] { opacity: 0.6; cursor: progress; }
.form-status:focus { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (max-width: 760px) {
  .book-dialog { width: 100vw; max-width: 100vw; max-height: 100dvh; height: 100dvh; margin: 0; }
  .bt-card { padding: 22px 22px 28px; }
  .bt-form .form-grid { grid-template-columns: 1fr; }
  .bt-submit, .lead-form [type=submit] { width: 100%; }
  .lead-form .form-grid { grid-template-columns: 1fr; }
  .bt-types { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) { .book-dialog[open] { animation: none; } .bt-skel { animation: none; } }

