/* app.css — the non-home shell: dashboards, auth, admin, legal, gate, errors.
   Scoped under its own classes; the home/search pages use reference.css. */

@font-face {
  font-family: 'Inter';
  src: url('/fonts/inter-var.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root {
  --paper:#f7f7f7;--white:#ffffff;--ink:#15181c;--text:#262a30;--muted:#4b5563;--faint:#858c99;--line:#d9dee8;--line-strong:#c1c9d6;--accent:#1f5eff;--accent-dark:#1448d6;--accent-soft:#e6eeff;--accent-line:#b9ccfb;--ok:#15803d;--ok-soft:#dcfce7;--warn:#b45309;--warn-soft:#fef3c7;--bad:#dc2626;--bad-soft:#fee2e2;--radius-s:8px;--radius:12px;--radius-l:16px;--shadow-1:0 1px 2px rgba(16,24,40,.04);--shadow-2:0 4px 16px rgba(16,24,40,.08);--shadow-3:0 12px 32px rgba(16,24,40,.12);--font:'Inter',Arial,Helvetica,sans-serif;--header-h:64px;
  --shell-wide:1344px;--shell-narrow:760px;--shell-form:420px;--badge-gray:var(--muted);--badge-green:var(--ok);--badge-gold:var(--warn);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
body { font: 16px/1.55 var(--font); color: #36393a; background: var(--paper); -webkit-font-smoothing: antialiased; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; }

.shell--wide { width: min(var(--shell-wide), calc(100% - 96px)); margin: 0 auto; }
.shell--narrow { width: min(var(--shell-narrow), calc(100% - 48px)); margin: 0 auto; }
.shell--form { width: min(var(--shell-form), calc(100% - 48px)); margin: 0 auto; }

h1, h2, h3 { font-weight: 600; color: var(--ink); }

/* ── Buttons ─────────────────────────────────────────────── */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; border-radius: 10px; padding: 12px 24px; font-size: 15px; font-weight: 600; line-height: 1.3; min-height: 46px; text-decoration: none; transition: background .18s, color .18s; }
.btn--dark { background: var(--ink); color: #fff; }
.btn--dark:hover { background: #000; color: #fff; }
.btn--ghost { background: transparent; color: var(--ink); border: 1px solid var(--line); }
.btn--ghost:hover { background: #f4f4f5; }

/* ── Badge ───────────────────────────────────────────────── */
.badge { display: inline-block; padding: 3px 10px; border-radius: 9999px; font-size: 12px; font-weight: 600; line-height: 1.4; }
.badge--gray { background: #f3f4f6; color: var(--badge-gray); }
.badge--green { background: #dcfce7; color: var(--badge-green); }
.badge--gold { background: #fef3c7; color: var(--badge-gold); }

/* ── Card ────────────────────────────────────────────────── */
.card { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: 24px; }

/* ── Stat grid ───────────────────────────────────────────── */
.stat-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
@media (min-width: 640px) { .stat-grid { grid-template-columns: repeat(4, 1fr); } }
.stat { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; }
.stat-value { font-size: 28px; font-weight: 700; line-height: 1.2; color: var(--ink); }
.stat-label { font-size: 13px; color: var(--muted); margin-top: 4px; }

/* ── Limits bar ──────────────────────────────────────────── */
.limits-bar { display: flex; flex-wrap: wrap; gap: 12px; }
.limits-item { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }

/* ── Form fields ─────────────────────────────────────────── */
.field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.field label { font-size: 13px; font-weight: 600; color: var(--ink); }
.field input, .field select, .field textarea { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; font: inherit; background: var(--white); color: var(--ink); }
.field input:focus, .field select:focus, .field textarea:focus { outline: 2px solid var(--accent); outline-offset: 1px; }
.field-error { font-size: 13px; color: #dc2626; }
.field-hint { font-size: 12px; color: var(--muted); }

/* ── Flash ───────────────────────────────────────────────── */
.flash { padding: 12px 16px; border-radius: 10px; font-size: 14px; margin-bottom: 16px; }
.flash--success { background: #dcfce7; color: #166534; }
.flash--error { background: #fee2e2; color: #991b1b; }
.flash--info { background: #dbeafe; color: #1e40af; }

/* ── Gate page ───────────────────────────────────────────── */
.gate-page { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 60vh; padding: 80px 24px; text-align: center; }
.gate-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--faint); margin-bottom: 24px; }
.gate-title { font-size: 32px; line-height: 1.2; margin-bottom: 16px; color: var(--ink); }
.gate-sub { font-size: 16px; color: var(--muted); max-width: 480px; margin: 0 auto 40px; }
.gate-button { display: inline-block; padding: 14px 32px; background: var(--accent); color: #fff; border-radius: 12px; font-size: 15px; font-weight: 600; }
.gate-button:hover { background: var(--accent-dark); }
.gate-privacy { display: block; margin-top: 32px; font-size: 13px; color: var(--faint); text-decoration: underline; }
.gate-privacy:hover { color: var(--ink); }

/* ── Error page ──────────────────────────────────────────── */
.error-page { display: flex; align-items: center; justify-content: center; min-height: 50vh; padding: 48px 16px; }
.error-inner { max-width: 380px; width: 100%; text-align: center; }
.error-code { font-size: 56px; font-weight: 700; color: #e4e4e7; margin-bottom: 16px; line-height: 1; }
.error-inner h1 { font-size: 20px; margin-bottom: 8px; }
.error-desc { font-size: 14px; color: var(--muted); margin-bottom: 24px; }

/* ── Legal page ──────────────────────────────────────────── */
.legal-page { padding: 48px 0 80px; }
.legal-inner { width: min(var(--shell-narrow), calc(100% - 48px)); margin: 0 auto; }
.legal-logo { font-size: 22px; font-weight: 800; letter-spacing: -1px; color: var(--ink); }
.legal-inner h1 { font-size: 28px; margin-top: 32px; }
.legal-updated { font-size: 13px; color: var(--muted); margin-top: 8px; }
.legal-draft { margin-top: 16px; padding: 12px 16px; background: #fef3c7; border: 1px solid #fde68a; border-radius: 10px; font-size: 14px; color: #92400e; }
.legal-section { margin-top: 32px; }
.legal-section h2 { font-size: 17px; margin-bottom: 8px; }
.legal-section p { font-size: 15px; line-height: 1.7; color: #52525b; margin-top: 8px; }
.legal-crosslink { margin-top: 48px; font-size: 14px; }
.legal-crosslink a { text-decoration: underline; color: var(--muted); }
.legal-crosslink a:hover { color: var(--ink); }

/* ── HTMX indicator ──────────────────────────────────────── */
.htmx-indicator { display: none; }
.htmx-request .htmx-indicator { display: block; }
.htmx-request.htmx-swapping .htmx-indicator { display: none; }

/* ── Mobile-first: 375px is the baseline ─────────────────── */
@media (min-width: 640px) {
  .gate-title { font-size: 36px; }
}
@media (min-width: 900px) {
  .gate-title { font-size: 40px; }
}

/* Native event tabs retain keyboard support without a client island. */
.fz .occasions { border: 0; }
.fz .occasions label { padding: 8px; border-radius: 25px; font-size: 12px; cursor: pointer; }
.fz .occasions label:has(:checked) { background: var(--ink); color: white; }
.fz .occasions input { accent-color: var(--accent); }
.fz .vendor-card { position: relative; }
.skip-link { position: absolute; top: -100px; left: 16px; z-index: 100; background: white; padding: 12px; }
.skip-link:focus { top: 8px; }
.fz .vendor-section .category-chips { flex-wrap: wrap; overflow: visible; }
.fz .occasions label { display: flex; align-items: center; justify-content: center; text-align: center; }
.fz .occasions input { appearance: none; width: 0; margin: 0; }
.fz .occasions label:has(:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.fz .story-copy h2, .fz .story-blue h2, .fz .closing-dark h2, .fz .moment-banner h2 { color: inherit; }
.fz .story-grid .story-blue::after { right: 0; top: 0; font-size: 150px; }
.fz .spotlight-section .spotlight-grid { display: grid; grid-template-columns: minmax(0, 1fr); overflow: visible; }
.fz .spotlight-section .vendor-card { min-width: 0; }
@media (min-width: 640px) {
  .fz .spotlight-section .spotlight-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.auth-page { padding-top: 48px; padding-bottom: 64px; overflow-wrap: anywhere; }
.auth-page h1 { font-size: 24px; margin-bottom: 12px; }
.auth-page p { margin-bottom: 16px; }
.auth-page .btn { width: 100%; }
.auth-terms { margin-top: 20px; font-size: 12px; color: var(--muted); }
.field input { min-width: 0; width: 100%; }
/* Shell controls must win over the inherited reference homepage type rules. */
.fz .auth-page h1 { font-size: 24px; line-height: 1.25; }
.fz .btn--dark { color: white; }
.fz .error-inner h1 { font-size: 20px; }
.fz .legal-inner h1 { font-size: 28px; }
.fz .saved-page { padding-top: 32px; padding-bottom: 64px; }
.fz .results-grid .load-more { grid-column: 1 / -1; text-align: center; }
.fz .save.active,.fz .save-text.active { color: #245bee; background: #e8eefb; }
.fz .filters details,.fz .filters fieldset { min-width: 0; border: 0; }
.fz .filters select,.fz .filters input { max-width: 100%; }
.fz .active-filters { flex-wrap: wrap; }
.fz .results-toolbar { flex-wrap: wrap; gap: 16px; }
.fz .toolbar-actions { flex-wrap: wrap; }
.fz .results-toolbar h2 { font-size: 22px; }
.fz .map-price { padding: 6px 10px; border-radius: 20px; background: white; color: #101f3b; border: 1px solid #245bee; font-size: 12px; }
.fz .search-map { height: 440px; width: 100%; margin: 20px 0; }
.fz .festorra-listing audio { max-width: 100%; width: 160px; }
.fz .nav-saved-label,.fz .nav-dashboard-label { display: none; }
.fz .header-actions .nav-text { display: inline-flex; align-items: center; gap: 3px; font-size: 12px; }
@media (min-width: 640px) { .fz .nav-saved-label,.fz .nav-dashboard-label { display: inline; } }
@media (max-width: 639px) { .fz .site-header .nav-how { display: none; } }
.fz .festorra-listing .nav-r button { color: inherit; background: transparent; border: 1px solid currentColor; border-radius: 8px; padding: 8px 12px; }
.fz .map-count { position: absolute; z-index: 2; top: 12px; left: 12px; background: white; padding: 8px; border-radius: 8px; }
.fz .vendor-dashboard { padding-top: 32px; padding-bottom: 64px; overflow-wrap: anywhere; }
.fz .vendor-dashboard h1 { font-size: 26px; line-height: 1.25; }
.fz .vendor-dashboard h2 { font-size: 21px; margin: 20px 0 12px; }
.fz .vendor-dashboard h3 { font-size: 17px; }
.fz .dashboard-nav { display: flex; flex-wrap: wrap; gap: 10px 16px; margin: 20px 0; }
.fz .dashboard-nav a { text-decoration: underline; font-size: 14px; }
.fz .vendor-dashboard .card { margin: 12px 0; }
.fz .media-grid { display: grid; grid-template-columns: minmax(0,1fr); gap: 12px; }
.fz .media-card img { width: 100%; height: 180px; object-fit: cover; }
.fz .vendor-dashboard fieldset { min-width: 0; border: 0; padding: 12px 0; }
.fz .vendor-dashboard .field select,.fz .vendor-dashboard .field input { min-width: 0; max-width: 100%; }
@media (min-width: 640px) { .fz .media-grid { grid-template-columns: repeat(3,minmax(0,1fr)); } }
/* Guided setup: native-sized Choices and FilePond, scoped to their own classes. */
.fz .choices { width:100%; min-width:0; margin:0; color:var(--ink); font:inherit; }
.fz .choices__inner { box-sizing:border-box; min-width:0; width:100%; background:var(--paper); border:1px solid var(--line); border-radius:12px; padding:8px 12px; font:inherit; }
.fz .choices__input { background:transparent; font:inherit; max-width:100%; min-width:0; }
.fz .choices__list--multiple .choices__item { border:0; background:var(--ink); color:var(--paper); border-radius:14px; max-width:100%; overflow-wrap:anywhere; }
.fz .choices__list--dropdown { border-radius:12px; background:var(--paper); border-color:var(--line); z-index:20; word-break:normal; }
.fz .choices__list--dropdown .choices__item { overflow-wrap:anywhere; padding-right:12px; }
.fz .choices__list--dropdown .choices__item--selectable.is-highlighted { background:#f1efe8; }
.fz .choices__list--single .choices__item { overflow-wrap:anywhere; }
.fz .choices .choices__button { min-width:24px; min-height:24px; }
.fz .filepond--root { font-family:inherit; font-size:14px; max-width:100%; color:var(--ink); }
.fz .filepond--panel-root { background:#f1efe8; border-radius:12px; }
.fz .filepond--drop-label { color:var(--ink); }
.fz .filepond--item-panel { background:var(--ink); }
.fz .filepond--label-action { color:inherit; text-decoration-color:currentColor; }
.setup-fields { border:0; padding:0; margin:24px 0; min-width:0; }
.setup-fields legend { font-size:1.1rem; font-weight:600; margin-bottom:14px; }
.setup-warning { background:#fff2cd; color:#543e00; padding:16px; border-radius:12px; margin:16px 0; }
.setup-summary { overflow-wrap:anywhere; }
.setup-summary p { white-space:pre-wrap; }
.summary-photos { display:grid; grid-template-columns:repeat(auto-fill,minmax(72px,1fr)); gap:8px; }
.summary-photos img { width:100%; aspect-ratio:1; object-fit:cover; border-radius:8px; }
[hidden] { display:none !important; }
.fz #wizard .filter-hint { display:block; }
.fz .choices input.choices__input { width:100% !important; border:0; padding:4px; box-shadow:none; border-radius:0; margin:0; min-height:0; }
.fz .setup-fields .filter-hint { display:block; }
/* Phase 11: shared tokens and search; specificity overrides the reference sheet. */
:root .fz .header-sticky { position:sticky; top:0; z-index:40; }
:root .fz .site-header { position:sticky; top:0; z-index:40; height:var(--header-h); border-bottom:1px solid var(--line); }
:root .fz .site-header .header-inner { height:calc(var(--header-h) - 1px); }
:root .fz :is(a,button,input,select,textarea,summary):focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
:root .fz .btn { border-radius:var(--radius-s); min-height:44px; padding:12px 16px; font-size:14px; font-weight:600; }
:root .fz .btn--primary { background:var(--accent); color:var(--white); border:1px solid transparent; }
:root .fz .btn--primary:hover { background:var(--accent-dark); color:var(--white); }
:root .fz .btn--ghost { background:var(--white); border:1px solid var(--line); color:var(--ink); }
:root .fz .btn--ghost:hover { background:var(--paper); border-color:var(--line-strong); }
:root .fz .btn--quiet { color:var(--muted); background:none; border:0; font-size:13px; }
:root .fz .card { border-radius:var(--radius-l); box-shadow:var(--shadow-1); padding:20px; }
:root .fz .empty { padding:32px 20px; border:1px dashed var(--line-strong); border-radius:var(--radius-l); text-align:center; background:var(--white); }
:root .fz .empty h2 { font-size:16px; letter-spacing:0; }
:root .fz .empty p { margin:12px 0 20px; color:var(--muted); font-size:14px; }
:root .fz .badge--ok { background:var(--ok-soft); color:var(--ok); }
:root .fz .badge--warn { background:var(--warn-soft); color:var(--warn); }
:root .fz .badge--bad { background:var(--bad-soft); color:var(--bad); }
:root .fz .badge--ok::before { content:''; display:inline-block; width:6px; height:6px; border-radius:50%; background:currentColor; margin-right:6px; }
:root .fz .search-page { --gutter:16px; width:calc(100% - 2*var(--gutter)); margin:auto; padding:32px 0 48px; color:var(--text); }
:root .fz .search-hero { margin-bottom:24px; }
:root .fz .search-hero h1 { font-size:32px; line-height:1.1; letter-spacing:-1.5px; font-weight:700; }
:root .fz .search-hero h1 span { color:var(--accent); }
:root .fz .search-hero p { color:var(--muted); font-size:15px; margin-top:12px; }
:root .fz .search-bar { position:sticky; top:var(--header-h); z-index:30; }
:root .fz .search-page .eyebrow { display:block; font-size:11px; font-weight:700; letter-spacing:1.25px; text-transform:uppercase; color:var(--muted); margin-bottom:8px; }
:root .fz .search-choices { display:flex; flex-wrap:wrap; gap:12px; justify-content:space-between; align-items:center; margin:16px 0; min-width:0; }
:root .fz .choices-right { display:flex; gap:8px; align-items:center; }
:root .fz .occasion-chips { display:flex; gap:8px; max-width:100%; overflow-x:auto; scrollbar-width:none; padding:3px; }
:root .fz .chip { display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; gap:8px; min-height:36px; padding:8px 12px; border:1px solid var(--line); border-radius:999px; background:var(--white); color:var(--ink); font-size:13px; font-weight:500; cursor:pointer; position:relative; }
:root .fz .chip small { color:var(--muted); font-size:12px; font-weight:400; }
:root .fz .chip:has(:checked) { background:var(--ink); color:var(--white); }
:root .fz .chip:has(:checked) small { color:var(--white); }
:root .fz :is(.chip,.segmented label)>input { position:absolute; opacity:0; width:1px; height:1px; }
:root .fz :is(.chip,.segmented label):has(:focus-visible) { outline:2px solid var(--accent); outline-offset:2px; }
:root .fz .segmented { display:flex; padding:4px; border:1px solid var(--line); border-radius:999px; background:var(--white); gap:4px; min-width:0; }
:root .fz .segmented :is(label,a) { position:relative; display:flex; align-items:center; gap:8px; padding:8px 16px; border-radius:999px; font-size:13px; cursor:pointer; color:var(--ink); text-decoration:none; }
:root .fz .segmented svg { width:16px; height:16px; }
:root .fz .segmented :is(label:has(:checked),a[aria-current]) { background:var(--accent); color:white; }
:root .fz .search-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:20px; margin:0; align-items:start; }
/* Filters live in a popover drawer that slides in from the left (both modes). */
:root .fz [popover].filters { position:fixed; inset:0 auto 0 0; width:min(340px,88vw); height:auto; max-height:none; margin:0; border:0; border-right:1px solid var(--line); border-radius:0; box-shadow:var(--shadow-3); overflow-y:auto; transform:translateX(-100%); transition:transform .25s ease, display .25s allow-discrete, overlay .25s allow-discrete; }
:root .fz [popover].filters:popover-open { transform:none; }
:root .fz [popover].filters:not(:popover-open) { display:none; }
@starting-style { :root .fz [popover].filters:popover-open { transform:translateX(-100%); } }
:root .fz [popover].filters::backdrop { background:rgba(16,24,40,.35); }
:root .fz .filter-head>div { display:flex; gap:12px; align-items:center; }
:root .fz .filters { display:block; padding:20px; border:1px solid var(--line); border-radius:var(--radius-l); background:var(--white); }
:root .fz .filter-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:20px; }
:root .fz .filter-head h2 { font-size:18px; letter-spacing:-.2px; }
:root .fz .filters .field { margin:0 0 20px; font-size:13px; font-weight:600; color:var(--ink); }
:root .fz .filters :is(input,select) { color:var(--ink); accent-color:var(--accent); }
:root .fz .filters :is(select,input:not([type=checkbox],[type=radio])) { min-height:44px; border:1px solid var(--line); border-radius:var(--radius); padding:8px 12px; background:var(--white); font-size:14px; }
:root .fz .filters fieldset { display:block; padding:0 0 20px; margin:0 0 20px; border:0; border-bottom:1px solid var(--line); }
:root .fz .filters legend { font-size:13px; font-weight:600; margin-bottom:12px; }
:root .fz .filters .check-row { display:flex; gap:8px; align-items:center; font-size:13px; margin:0; padding:8px 0; color:var(--text); }
:root .fz .filters .check-row input { width:16px; height:16px; flex-shrink:0; }
:root .fz .filters .check-row input[type=radio] { appearance:none; border:1px solid var(--line-strong); border-radius:4px; }
:root .fz .filters .check-row input[type=radio]:checked { background:var(--accent); box-shadow:inset 0 0 0 3px white; }
:root .fz .check-row span { margin-left:auto; color:var(--muted); }
:root .fz .filters .filter-hint { display:block; font-size:12px; color:var(--muted); margin:8px 0 0; }
:root .fz .budget-control { display:flex; align-items:center; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
:root .fz .budget-control span { padding-left:12px; font-size:13px; color:var(--muted); }
:root .fz .budget-control input { width:100%; min-width:0; border:0!important; }
:root .fz .more-tags summary { font-size:13px; cursor:pointer; color:var(--muted); padding:8px 0; }
:root .fz .results-column { position:relative; min-width:0; }
:root .fz .results-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:20px; align-items:start; }
:root .fz .results-main { min-width:0; }
:root .fz .results-toolbar { display:flex; justify-content:space-between; gap:16px; align-items:center; margin:0 0 16px; }
:root .fz .rank-note { order:3; flex-basis:100%; margin:-8px 0 0; color:var(--muted); font-size:13px; }
:root .fz .near-misses { margin-top:32px; padding-top:24px; border-top:1px solid var(--line); }
:root .fz .near-misses h2 { font-size:20px; margin:0 0 4px; }
:root .fz .near-misses .rank-note { margin:0 0 16px; }
:root .fz .near-note { color:var(--warn); font-size:13px; margin:4px 0 0; }
:root .fz .result-terms { color:var(--muted); font-size:12px; margin:4px 0 0; }
:root .fz .zones-note { color:var(--muted); font-size:13px; }
:root .fz .results-toolbar h2 { font-size:18px; letter-spacing:-.2px; font-weight:600; }
:root .fz .sort-control { font-size:13px; color:var(--muted); display:flex; align-items:center; gap:4px; max-width:100%; }
:root .fz .sort-control select { border:0; background:transparent; min-width:0; color:var(--ink); font-size:13px; padding:8px 0; max-width:180px; }
:root .fz .active-filters { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 16px; }
:root .fz .active-filters:empty { display:none; }
:root .fz .chip--active { background:var(--accent-soft); color:var(--accent); border:0; overflow-wrap:anywhere; max-width:100%; flex-shrink:1; }
:root .fz .results-list { display:grid; grid-template-columns:minmax(0,1fr); gap:20px; }
:root .fz :is(.load-more,[data-search-pins]) { grid-column:1/-1; }
:root .fz .result-card { position:relative; display:grid; grid-template-columns:minmax(0,1fr); background:var(--white); border:1px solid var(--line); border-radius:var(--radius-l); box-shadow:var(--shadow-1); padding:12px; transition:border-color 150ms ease,box-shadow 150ms ease; }
:root .fz .result-card:hover { border-color:var(--line-strong); box-shadow:var(--shadow-2); }
:root .fz .result-photo { display:block; border-radius:var(--radius); overflow:hidden; aspect-ratio:16/10; }
:root .fz .result-photo img { width:100%; height:100%; object-fit:cover; }
:root .fz .empty-cover { height:100%; background:linear-gradient(135deg,var(--paper),var(--line)); }
:root .fz .result-card .save { top:20px; right:20px; z-index:2; width:36px; height:36px; background:white; border:0; box-shadow:var(--shadow-1); }
:root .fz .result-card .save.active { color:var(--bad); background:white; }
:root .fz .result-body { padding:16px 8px 8px; min-width:0; }
:root .fz .result-body h3 { display:flex; gap:8px; align-items:center; font-size:16px; font-weight:600; letter-spacing:0; }
:root .fz .result-body svg { flex-shrink:0; width:16px; height:16px; stroke-width:1.65; }
:root .fz .verified,:root .fz .result-rating svg { color:var(--accent); }
:root .fz .result-link::after { content:''; position:absolute; inset:0; border-radius:var(--radius-l); }
:root .fz .result-rating,:root .fz .result-meta { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin-top:8px; color:var(--muted); font-size:13px; }
:root .fz .result-rating strong { color:var(--ink); font-weight:500; }
:root .fz .result-tags { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
:root .fz .tag { background:var(--paper); color:var(--muted); border-radius:6px; padding:4px 8px; font-size:12px; font-weight:500; }
:root .fz .result-footer { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px; margin-top:16px; }
:root .fz .result-footer p { color:var(--muted); font-size:13px; }
:root .fz .result-footer strong { color:var(--ink); }
:root .fz .result-footer .btn { position:relative; z-index:2; font-size:13px; padding:8px 12px; }
:root .fz .load-more { width:100%; }
/* Phase 13: map mode = full-bleed map band, bar floating over its bottom edge, cards in a grid below. */
:root .fz .search-page--map { padding-top:0; width:100%; }
:root .fz .search-page--map :is(.search-choices,.search-layout) { margin-inline:var(--gutter); }
:root .fz .map-hero { position:relative; z-index:0; height:300px; background:var(--paper); overflow:hidden; }
:root .fz .map-hero>p { padding:20px; color:var(--muted); }
:root .fz .search-page--map .search-bar { margin:-24px 0 0; width:100%; border-radius:0; border-inline:0; }
:root .fz .search-bar .locate { min-height:52px; }
:root .fz .map-hero :is(.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right) { bottom:24px; }
:root .fz .map-price { background:var(--accent); color:white; border:1px solid var(--accent); padding:6px 10px; font-size:12px; font-weight:600; border-radius:20px; box-shadow:var(--shadow-1); }
:root .fz .map-price:hover { background:white; color:var(--accent); }
:root .fz .map-price::after { content:''; position:absolute; bottom:-5px; left:calc(50% - 4px); border-width:5px 4px 0; border-style:solid; border-color:var(--accent) transparent transparent; }
:root .fz #results.htmx-request { opacity:.6; }
:root .fz #results.htmx-request::before { content:''; position:absolute; top:-8px; left:0; right:0; height:2px; background:var(--accent); }
@media(min-width:640px) {
 :root .fz .search-page { --gutter:24px; }
 :root .fz .map-hero { height:360px; }
 :root .fz .search-page--map .search-bar { margin-top:-40px; }
 :root .fz .map-hero :is(.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right) { bottom:40px; }
 :root .fz .results-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(min-width:900px) {
 :root .fz .search-page { --gutter:32px; }
 :root .fz .search-hero h1 { font-size:48px; line-height:1.05; }
 :root .fz .btn { min-height:40px; }
 :root .fz .map-hero { height:440px; }
 :root .fz .results-list { gap:24px; }
}
@media(min-width:641px) {
 :root .fz .search-page--map .search-bar { grid-template-columns:minmax(140px,1.4fr) minmax(120px,1fr) minmax(120px,.9fr) auto auto; }
 :root .fz .search-bar .locate { padding:0 12px; margin-left:8px; }
 :root .fz .search-bar .locate span { display:none; }
}
@media(min-width:901px) { :root .fz .search-page--map .search-bar { grid-template-columns:minmax(200px,1.6fr) minmax(160px,.8fr) minmax(150px,.7fr) auto auto; } }
@media(min-width:1190px) {
 :root .fz .results-list { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(prefers-reduced-motion:reduce) { :root .fz *, :root .fz *::before, :root .fz *::after { transition:none!important; scroll-behavior:auto!important; } }

:root .fz .empty>svg { width:32px; height:32px; color:var(--faint); margin:0 auto 12px; }
:root .fz .search-page svg { stroke-width:1.65; }
@media(min-width:900px) { :root .fz .card { padding:24px; } }
/* Phase 18: dates, availability, facts, terms. */
:root .fz .more-dates { font-size:13px; margin:12px 0 0; padding:16px; background:var(--white); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-1); }
:root .fz .search-page--map .more-dates { margin-inline:var(--gutter); }
:root .fz .search-form.has-date label:has(.date-more) > div { display:flex; align-items:center; gap:6px; }
:root .fz .search-form input[type=date]::-webkit-calendar-picker-indicator { width:24px; height:24px; cursor:pointer; }
:root .fz button.date-more { display:inline-grid; place-items:center; flex:none; width:32px; height:32px; padding:0; border:0; border-radius:6px; background:none; color:var(--ink); cursor:pointer; }
:root .fz button.date-more svg { width:24px; height:24px; }
:root .fz button.date-more:hover { color:var(--accent); }
:root .fz .more-dates-body { display:grid; grid-template-columns:1fr; gap:14px 20px; }
:root .fz .more-dates-body > label:not(.check-row) > span { display:block; font-size:11px; font-weight:700; letter-spacing:1px; text-transform:uppercase; color:var(--muted); margin-bottom:6px; }
:root .fz .more-dates-body input[type=date] { width:100%; min-height:44px; border:1px solid var(--line); border-radius:8px; padding:0 12px; background:var(--white); color:var(--ink); font-size:15px; }
:root .fz .more-dates-body .check-row { margin:0; min-height:44px; font-size:14px; color:var(--text); }
@media(min-width:640px) {
 :root .fz .more-dates-body { grid-template-columns:repeat(3,minmax(0,1fr)); }
 :root .fz .more-dates-body .check-row { padding-top:14px; border-top:1px solid var(--line); }
 :root .fz .more-dates-body .check-row:last-child { grid-column:span 2; }
}
:root .fz .date-group { margin:0 0 28px; }
:root .fz .date-group > h3 { font-size:17px; margin:0 0 10px; display:flex; gap:10px; align-items:baseline; }
:root .fz .date-group > h3 span { color:var(--muted); font-size:13px; font-weight:400; }
:root .fz .date-group > .btn { margin-top:12px; }
:root .fz .result-card--unavailable { opacity:.6; }
:root .fz .result-card--unavailable .result-photo { filter:grayscale(1); }
:root .fz .unavailable-note { color:var(--warn); font-weight:600; }
:root .fz .date-chips { display:flex; flex-wrap:wrap; gap:4px; margin:6px 0 0; }
:root .fz .chip--day { min-height:24px; padding:2px 8px; font-size:11px; background:var(--ok-soft); color:var(--ok); border-color:transparent; }
:root .fz .fact-facets .field--inline { font-size:13px; }
:root .fz .fact-facets .field--inline input { max-width:120px; }
:root .fz .terms-accept span a { text-decoration:underline; }
@media print { .site-header, .site-footer, nav, .no-print, .mobile-cta { display:none !important; } .terms-text { white-space:pre-wrap; font:12pt/1.5 Inter, sans-serif; } }
:root .fz .terms-page { padding:32px 0; }
:root .fz .terms-actions { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 20px; }
:root .fz .terms-text { white-space:pre-wrap; overflow-wrap:anywhere; font:15px/1.6 Inter, sans-serif; background:var(--white); border:1px solid var(--line); border-radius:12px; padding:20px; }
/* /categories: the home category grid at full length, page title sized like the home section headings. */
:root .fz .all-categories { padding-top:40px; }
:root .fz .all-categories h1 { font-size:33px; line-height:1.19; letter-spacing:-1.1px; }
@media(max-width:700px) { :root .fz .all-categories { padding-top:24px; } :root .fz .all-categories h1 { font-size:29px; } }
