:root {
  --cream: #f5f0e4;
  --cream-2: #efe8d8;
  --pine: #001840;
  --pine-2: #000f2e;
  --amber: #f7f3e9;
  --amber-2: #95312d;
  --amber-hover: #fffdf8;
  --sage: #e7edf6;
  --ink: #17233a;
  --muted: #566074;
  --line: rgba(0, 24, 64, .14);
  --danger: #9f332b;
  --paper: var(--cream);
  --paper-deep: var(--cream-2);
  --forest: var(--pine);
  --forest-2: var(--pine-2);
  --amber-deep: var(--amber-2);
  --sage-2: #b9c8b8;
  --display: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif;
  --ui: "Inter", "Inter Fallback", system-ui, sans-serif;
  --soft-shadow: 0 1px 2px rgba(0,24,64,.06), 0 8px 24px rgba(0,24,64,.08);
}

* { box-sizing: border-box; }
html { overflow-x: clip; color-scheme: light; scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; overflow-x: clip; background: var(--cream); color: var(--ink); font-family: var(--ui); font-size: 17px; line-height: 1.65; }
body::before { display: none; }
::selection { background: #dbe9ed; color: #000f2e; }
* { scrollbar-width: thin; scrollbar-color: var(--forest-2) var(--paper-deep); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--paper-deep); }
::-webkit-scrollbar-thumb { background: var(--forest-2); border: 2px solid var(--paper-deep); border-radius: 8px; }
/* The single authoritative 2px navy / 2px-offset focus ring now lives in postcard.css's
   unconditional :focus-visible rule; this losing duplicate (and its #376b82/#79a3b5 off-palette
   colors) is removed rather than left to rely on !important to mask it. */
.dashboard-nav :focus-visible, .conditions-board :focus-visible { outline-color: #79a3b5; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
img { display: block; max-width: 100%; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { text-wrap: balance; }
.skip-link { position: fixed; z-index: 1000; top: 8px; left: 8px; display: inline-flex; align-items: center; min-height: 44px; padding: 8px 16px; background: #376b82; color: #fff; font-weight: 750; transform: translateY(-150%); }
.skip-link:focus { transform: none; }
.brand { display: inline-flex; align-items: center; gap: 10px; color: var(--forest); font-family: var(--display); font-size: 1.65rem; font-weight: 800; line-height: 1; text-decoration: none; }
.brand > span > span { color: var(--amber-deep); }
.brand img { width: 40px; height: 44px; object-fit: contain; }
.brand-inverse { color: var(--paper); }
.brand-inverse > span > span { color: var(--amber); }
.field-help { color: var(--muted); font-size: .92rem; }
.money { font-variant-numeric: tabular-nums; font-weight: 700; }

/* Public acquisition surface */
.marketing-page { background: var(--paper); }
.site-header { position: sticky; z-index: 50; top: 0; display: flex; align-items: center; justify-content: space-between; min-height: 76px; padding: 10px clamp(18px, 4vw, 58px); border-bottom: 1px solid rgba(83,103,95,.45); background: rgba(244,240,228,.96); }
.site-header nav { display: flex; align-items: center; gap: clamp(14px, 2.6vw, 34px); }
.site-header nav a { color: var(--forest); font-size: .92rem; font-weight: 700; text-decoration: none; }
.site-header nav a:hover { text-decoration: underline; }
.site-header .header-demo { min-height: 44px; display: inline-flex; align-items: center; padding: 0 14px; border-radius: 10px; background: var(--forest); color: #fff; }
.marketing-shell { overflow: clip; }
.marketing-hero { position: relative; display: grid; grid-template-columns: minmax(0,1.15fr) minmax(330px,.72fr); align-items: center; gap: clamp(38px,7vw,110px); min-height: calc(100vh - 76px); padding: clamp(54px,8vw,112px) clamp(18px,6vw,92px); }
.marketing-hero::after { content: ""; position: absolute; z-index: -1; right: -80px; bottom: -80px; width: 500px; height: 420px; background: url('/assets/decor/topo-contours.svg') center/contain no-repeat; opacity: .12; }
.hero-copy { max-width: 790px; }
.hero-copy h1 { max-width: 13ch; margin-bottom: 24px; color: var(--forest); font-family: var(--display); font-size: clamp(4rem,8vw,7.1rem); font-weight: 800; letter-spacing: -.025em; line-height: .82; }
.hero-copy > p { max-width: 60ch; color: var(--muted); font-size: clamp(1.08rem,2vw,1.3rem); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 30px 0 44px; }
.hero-actions .primary-action, .hero-actions .secondary-action { padding-inline: 20px; }
.hero-facts { display: grid; grid-template-columns: repeat(3,1fr); max-width: 760px; margin: 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.hero-facts li { padding: 17px 18px; border-right: 1px solid var(--line); }
.hero-facts li:first-child { padding-left: 0; }.hero-facts li:last-child { border: 0; }
.hero-facts strong, .hero-facts span { display: block; }.hero-facts strong { color: var(--forest); font-family: var(--display); font-size: 2rem; line-height: 1; font-variant-numeric: tabular-nums; }.hero-facts span { margin-top: 5px; color: var(--muted); font-size: .78rem; }
.demo-board { position: relative; display: grid; gap: 24px; padding: 30px; border-radius: 14px; background: var(--forest) url('/assets/materials/enamel-patina.png') center/cover; color: #fff; box-shadow: var(--soft-shadow); }
.demo-board::after { content: ""; position: absolute; inset: 7px; border: 1px solid rgba(255,255,255,.15); border-radius: 9px; pointer-events: none; }
.demo-board h2 { margin: 14px 0 10px; font-family: var(--display); font-size: clamp(2.4rem,5vw,3.6rem); line-height: .9; }.demo-board p { color: #d7e3da; }
.demo-board .demo-badge { color: #d7e3da; border-color: rgba(255,255,255,.3); }
.demo-qr { position: relative; z-index: 1; display: grid; place-items: center; gap: 8px; padding: 18px; border-radius: 12px; background: var(--paper); color: var(--forest); font-weight: 750; text-decoration: none; }
.demo-qr img { width: min(100%,220px); }.demo-qr span { display: flex; align-items: center; gap: 5px; }.demo-qr svg { width: 17px; }
.how-strip { display: grid; grid-template-columns: .75fr 1.25fr; gap: clamp(40px,7vw,100px); padding: 72px clamp(18px,6vw,92px); background: var(--sage); }
.how-strip h2, .audience-copy h2 { color: var(--forest); font-family: var(--display); font-size: clamp(2.7rem,5vw,4.8rem); line-height: .88; }
.how-strip > div p, .audience-copy > p { color: var(--muted); font-size: 1.08rem; }
.how-strip ol { display: grid; grid-template-columns: repeat(3,1fr); margin: 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.how-strip li { padding: 20px; border-right: 1px solid var(--line); }.how-strip li:last-child { border: 0; }.how-strip li svg { width: 30px; height: 30px; margin-bottom: 24px; color: var(--forest); }.how-strip li strong, .how-strip li span { display: block; }.how-strip li strong { color: var(--forest); font-family: var(--display); font-size: 1.55rem; }.how-strip li span { margin-top: 6px; color: var(--muted); font-size: .9rem; }
.audience-section { display: grid; grid-template-columns: minmax(0,1fr) minmax(380px,.75fr); gap: clamp(44px,8vw,120px); padding: 100px clamp(18px,6vw,92px); border-bottom: 1px solid var(--line); }
.host-section { background: var(--paper-deep); }
.commission-math { display: grid; grid-template-columns: repeat(2,1fr); margin: 32px 0 0; border-block: 1px solid var(--line); }.commission-math div { display: flex; justify-content: space-between; gap: 18px; padding: 13px 12px; border-bottom: 1px solid rgba(125,143,130,.46); }.commission-math div:nth-last-child(-n+2) { border-bottom: 0; }.commission-math dt { color: var(--muted); }.commission-math dd { margin: 0; color: var(--forest); font-weight: 800; font-variant-numeric: tabular-nums; }
.host-steps { display: grid; gap: 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }.host-steps li { padding: 13px 0; border-top: 1px solid var(--line); }.host-steps li:first-child { border: 0; }
.lead-form { align-self: start; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding: 28px; border-radius: 14px; background: var(--forest) url('/assets/materials/enamel-patina.png') center/cover; color: #fff; box-shadow: var(--soft-shadow); }.lead-form h3, .lead-form > p { grid-column: 1/-1; }.lead-form h3 { margin: 0; font-family: var(--display); font-size: 2.25rem; }.lead-form > p { color: #d5e2d8; }.lead-form label { color: #eaf0eb; }.lead-form input, .lead-form select, .lead-form textarea { border-color: rgba(255,255,255,.4); background: rgba(255,255,255,.94); }.lead-form .span-two { grid-column: 1/-1; }.lead-form .primary-action { background: var(--amber); color: var(--forest); }
.form-confirmation { display: flex; align-items: center; gap: 20px; padding: 38px clamp(18px,6vw,92px); background: var(--amber); color: var(--forest); }.form-confirmation svg { width: 44px; height: 44px; }.form-confirmation h2 { margin-bottom: 3px; font-family: var(--display); font-size: 2.5rem; }.form-confirmation p { margin: 0; }
.site-footer { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 34px; padding: 34px clamp(18px,6vw,92px); background: var(--forest); color: #dbe6de; }.site-footer p { max-width: 65ch; margin: 0; text-align: center; }.site-footer > a:last-child { color: #fff; font-weight: 700; }

/* Guest surface */
.guest-canvas { min-height: 100vh; }
.guest-shell { position: relative; width: min(100%, 880px); margin: 0 auto; padding: 18px 18px 118px; overflow: clip; }
.guest-shell::after { content: ""; position: absolute; right: -110px; bottom: 30px; width: 360px; height: 280px; background: url('/assets/decor/topo-contours.svg') center / contain no-repeat; opacity: .09; pointer-events: none; }
.guest-masthead { position: relative; display: flex; align-items: center; min-height: 64px; padding: 4px 0 14px; border-bottom: 1px solid rgba(63, 84, 71, .35); }
.property-lockup { display: flex; align-items: center; gap: 5px; margin-left: auto; max-width: 42%; color: var(--forest); font-weight: 650; font-size: .9rem; text-align: right; }
.property-lockup svg { width: 17px; flex: 0 0 17px; }
.valley-stamp { display: none; }
.conditions-board { isolation: isolate; position: relative; display: grid; grid-template-columns: 56px 1fr; gap: 8px 12px; margin: 18px 0 28px; padding: 23px 22px 18px; overflow: hidden; border: 1px solid #08251d; border-radius: 14px; background-color: var(--forest); background-image: url('/assets/materials/enamel-patina.png'); background-size: 100% 100%; color: #fffdf5; box-shadow: var(--soft-shadow); }
.conditions-board::after { content: ""; position: absolute; inset: 6px; border: 1px solid rgba(255,255,255,.18); border-radius: 9px; pointer-events: none; }
.weather-icon { display: grid; place-items: center; align-self: start; width: 50px; height: 54px; color: var(--amber); }
.weather-icon svg { width: 42px; height: 42px; stroke-width: 1.8; }
.conditions-copy { position: relative; z-index: 1; }
.temperature { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; font-family: var(--display); font-size: clamp(2rem, 11vw, 3.4rem); font-weight: 700; font-variant-numeric: tabular-nums; line-height: .95; }
.temperature span { font-family: var(--ui); font-size: 1rem; font-weight: 550; }
.conditions-copy p { margin: 10px 0 0; color: #ffd178; font-size: 1.04rem; font-weight: 700; }
.condition-meta { grid-column: 1 / -1; display: flex; gap: 18px; padding-top: 13px; border-top: 1px solid rgba(255,255,255,.28); color: #dbe9df; font-size: .83rem; }
.condition-meta span { display: inline-flex; align-items: center; gap: 6px; }
.condition-meta svg { width: 15px; }
.condition-contours { position: absolute; z-index: -1; top: -20px; right: -55px; width: 230px; opacity: .16; filter: invert(1); }
.fastener { position: absolute; z-index: 2; width: 13px; height: 13px; opacity: .8; }
.fastener-a { top: 8px; left: 8px; }.fastener-b { top: 8px; right: 8px; }.fastener-c { bottom: 8px; left: 8px; }.fastener-d { bottom: 8px; right: 8px; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 14px; }
.section-heading h1, .section-heading h2 { margin: 0; color: var(--forest); font-family: var(--display); font-size: clamp(2rem, 9vw, 3rem); font-weight: 800; line-height: .95; }
.section-heading h2 { font-size: 2rem; }
.section-heading p { margin: 7px 0 0; max-width: 58ch; color: var(--muted); }
.source-note, .record-count { flex: 0 0 auto; padding: 5px 9px; border: 1px solid var(--line); border-radius: 99px; color: var(--muted); font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.recommendation-list { position: relative; }
.recommendation-list.is-ranking { animation: board-shuffle 440ms cubic-bezier(.16,1,.3,1); }
@keyframes board-shuffle { from { clip-path: inset(0 0 22% 0); filter: blur(3px); transform: translateY(12px); } to { clip-path: inset(0); filter: blur(0); transform: none; } }
.best-fit { position: relative; margin-bottom: 22px; overflow: hidden; border-radius: 14px; background: rgba(244,240,228,.72); box-shadow: inset 0 0 0 1px var(--line); }
.best-fit-photo { position: relative; aspect-ratio: 16 / 11; overflow: hidden; border-radius: 14px 14px 0 0; background: var(--sage); }
.best-fit-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.demo-flag { position: absolute; top: 10px; left: 10px; padding: 5px 9px; border-radius: 99px; background: rgba(244,240,228,.92); color: var(--forest); font-size: .68rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.photo-title { position: absolute; z-index: 2; inset: auto 0 0; padding: 26px 14px 12px; background: rgba(23,54,47,.92); color: #fff; }
.best-fit-content { position: relative; z-index: 2; padding: 10px 64px 10px 14px; color: var(--ink); }
.vendor-name { margin-bottom: 1px; color: #c9ddcf; font-size: .78rem; font-weight: 700; }
.best-fit h2 { margin-bottom: 3px; color: #fff; font-family: var(--display); font-size: clamp(2rem, 10vw, 3.2rem); font-weight: 800; line-height: .88; letter-spacing: -.02em; }
.fit-reason { max-width: 62ch; margin-bottom: 7px; color: var(--muted); font-size: .8rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.activity-facts { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; border-top: 1px solid var(--line); }
.activity-facts div { padding: 10px 7px; border-right: 1px solid var(--line); }
.activity-facts div:first-child { padding-left: 0; }.activity-facts div:last-child { border-right: 0; }
.activity-facts dt { color: var(--muted); font-size: .62rem; text-transform: uppercase; letter-spacing: .05em; }
.activity-facts dd { margin: 0; color: var(--forest); font-size: .8rem; font-weight: 750; font-variant-numeric: tabular-nums; }
.book-button, .primary-action { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 52px; border: 0; border-radius: 12px; background: var(--forest); color: #fff; font-weight: 750; text-decoration: none; cursor: pointer; box-shadow: 0 8px 20px rgba(24, 54, 47, .16), 0 2px 5px rgba(24, 54, 47, .18); transition: transform 160ms ease-out, background 160ms ease-out, box-shadow 160ms ease-out; }
.book-button { position: absolute; right: 12px; bottom: 18px; width: 44px; min-height: 44px; border: 1px solid rgba(255,255,255,.4); background: var(--amber); color: var(--forest); box-shadow: none; }
.book-button span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.book-button:hover, .primary-action:hover { background: #214c41; transform: translateY(-2px); box-shadow: 0 12px 25px rgba(24, 54, 47, .2), 0 3px 7px rgba(24, 54, 47, .2); }
.primary-action:disabled { cursor: not-allowed; opacity: .68; transform: none; box-shadow: none; }
.book-button svg, .primary-action svg { width: 19px; }
.recommendation-row { position: relative; display: grid; grid-template-columns: 116px 1fr 48px; min-height: 132px; padding: 10px 0; border-top: 1px solid var(--line); }
.recommendation-row:last-child { border-bottom: 1px solid var(--line); }
.recommendation-row > img { width: 106px; height: 112px; align-self: center; object-fit: cover; border-radius: 12px; }
.row-copy { align-self: center; min-width: 0; padding: 0 6px; }
.row-copy > p:first-child { margin-bottom: 0; color: var(--muted); font-size: .75rem; font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.row-copy h2 { margin-bottom: 5px; color: var(--forest); font-family: var(--display); font-size: 1.42rem; font-weight: 800; line-height: 1; }
.row-facts { display: flex; flex-wrap: wrap; gap: 4px 12px; color: var(--forest); font-size: .78rem; font-variant-numeric: tabular-nums; }
.row-reason { display: none; }
.row-actions { display: grid; align-content: center; justify-items: center; gap: 7px; border-left: 1px solid var(--line); }
.category-medallion { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--sage); color: var(--forest); }
.category-medallion svg { width: 17px; height: 17px; }
.row-book { display: grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 50%; background: transparent; color: var(--forest); cursor: pointer; }
.row-book:hover { color: var(--amber-deep); }
.row-book svg { width: 22px; }
.visually-hidden { position: absolute!important; width: 1px!important; height: 1px!important; padding: 0!important; margin: -1px!important; overflow: hidden!important; clip: rect(0,0,0,0)!important; white-space: nowrap!important; border: 0!important; }
.demo-disclosure { display: flex; align-items: flex-start; gap: 8px; margin: -2px 0 15px; padding: 9px 10px; border: 1px solid rgba(82,103,95,.28); background: rgba(217,230,218,.5); color: var(--muted); font-size: .8rem; line-height: 1.35; }
.demo-disclosure svg { width: 17px; height: 17px; flex: 0 0 17px; color: var(--forest); }
.guest-context { display: none; }
.ranking-actions { display: grid; justify-items: end; gap: 8px; }
.personalize-fab { z-index: 2; display: flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; padding: 0 12px; border: 0; border-radius: 12px; background: var(--amber); color: var(--forest); font-family: var(--display); font-size: 1.05rem; font-weight: 800; cursor: pointer; box-shadow: 0 7px 18px rgba(66, 48, 16, .18), 0 2px 5px rgba(66, 48, 16, .15); }
.personalize-fab svg { width: 17px; }
.personalize-panel { position: fixed; z-index: 50; inset: 0; width: 100%; max-width: none; height: 100%; max-height: none; margin: 0; overflow-y: auto; border: 0; background: var(--paper); padding: 22px 18px max(30px, env(safe-area-inset-bottom)); }
.personalize-panel::backdrop { background: rgba(9,27,22,.72); }
.personalize-panel::before { content: ""; position: fixed; inset: 0; z-index: -1; background: url('/assets/materials/map-paper.webp') repeat; opacity: .38; }
.personalize-panel form { width: min(100%, 620px); margin: auto; }
.personalize-panel header { display: flex; align-items: start; justify-content: space-between; gap: 20px; margin-bottom: 28px; }
.personalize-panel h2 { margin-bottom: 3px; color: var(--forest); font-family: var(--display); font-size: 2.5rem; line-height: .95; }
.personalize-panel header p { color: var(--muted); }
.icon-button { display: grid; place-items: center; width: 44px; height: 44px; flex: 0 0 44px; border: 1px solid var(--line); border-radius: 50%; background: transparent; cursor: pointer; }
.personalize-panel fieldset { margin: 0 0 25px; padding: 0; border: 0; }
.personalize-panel legend { margin-bottom: 10px; color: var(--forest); font-family: var(--display); font-size: 1.5rem; font-weight: 750; }
.personalize-panel .field-help { margin: -7px 0 10px; }
.choice-grid { display: grid; gap: 8px; }
.party-grid { grid-template-columns: repeat(2, 1fr); }.interest-grid { grid-template-columns: repeat(2, 1fr); }.energy-grid { grid-template-columns: repeat(3, 1fr); }
.choice-grid input { position: absolute; opacity: 0; pointer-events: none; }
.choice-grid span { display: grid; place-items: center; min-height: 48px; padding: 8px; border: 1px solid var(--line); border-radius: 12px; color: var(--forest); font-weight: 650; cursor: pointer; }
.choice-grid input:checked + span { border-color: var(--forest); background: var(--forest); color: #fff; }
.choice-grid input:focus-visible + span { outline: 2px solid #376b82; outline-offset: 2px; }
.date-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 20px; }
.date-grid label, .auth-paper label, .promo-confirm label, .offering-editor label { display: grid; gap: 5px; color: var(--muted); font-size: .82rem; font-weight: 650; }
input, select, textarea { width: 100%; min-height: 46px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,255,255,.45); color: var(--ink); }
textarea { resize: vertical; }
input::placeholder, textarea::placeholder { color: #566a62; }
.personalize-panel .primary-action { width: 100%; background: var(--amber); color: var(--forest); font-family: var(--display); font-size: 1.35rem; }
.form-error { min-height: 1.2em; margin: 8px 0; color: var(--danger); font-weight: 650; }
.booking-dialog { width: min(calc(100% - 28px), 460px); padding: 30px 25px; border: 0; border-radius: 14px; background: var(--paper); color: var(--ink); box-shadow: 0 28px 70px rgba(7, 24, 19, .35), 0 7px 18px rgba(7, 24, 19, .22); }
.booking-dialog::backdrop { background: rgba(9, 27, 22, .72); backdrop-filter: blur(3px); }
.dialog-close { position: absolute; top: 14px; right: 14px; }
.booking-dialog h2 { max-width: 9ch; color: var(--forest); font-family: var(--display); font-size: 2.4rem; line-height: .95; }
.promo-copy { display: flex; align-items: center; justify-content: space-between; width: 100%; margin: 18px 0; padding: 13px 15px; border: 1px dashed var(--forest); border-radius: 10px; background: var(--sage); color: var(--forest); font-size: 1.25rem; font-weight: 800; letter-spacing: .08em; cursor: pointer; }
.booking-dialog .primary-action { width: 100%; }

/* Auth and errors */
.auth-shell { min-height: 100vh; display: grid; align-content: center; justify-items: center; gap: 30px; padding: 30px 18px; background-color: var(--paper); background-image: url('/assets/decor/topo-contours.svg'); background-position: 110% 110%; background-repeat: no-repeat; background-size: min(70vw, 680px); }
.auth-paper { width: min(100%, 460px); padding: 28px; border-top: 5px solid var(--forest); background: rgba(255,255,255,.38); box-shadow: var(--soft-shadow); }
.auth-paper h1, .error-shell h1 { color: var(--forest); font-family: var(--display); font-size: 3rem; line-height: .9; }
.auth-paper form { display: grid; gap: 16px; }
.auth-paper .primary-action { margin-top: 4px; }
.demo-entry { display: grid; gap: 7px; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--line); }
.demo-entry span { color: var(--muted); font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.demo-entry a { color: var(--forest); font-weight: 700; }
.error-shell { min-height: 100vh; display: grid; align-content: center; justify-items: start; max-width: 640px; margin: auto; padding: 40px 22px; }
.error-shell > p { max-width: 55ch; color: var(--muted); font-size: 1.1rem; }
.error-shell .primary-action { padding: 0 18px; }

/* Operational dashboards */
.dashboard-page { background: #ece9df; }
.dashboard-shell { min-height: 100vh; }
.dashboard-nav { position: fixed; inset: 0 auto 0 0; z-index: 30; display: flex; flex-direction: column; width: 255px; padding: 24px 18px; background-color: var(--forest); background-image: url('/assets/materials/enamel-patina.png'); background-size: cover; color: #fff; }
.dashboard-nav::after { content: ""; position: absolute; inset: 8px; border: 1px solid rgba(255,255,255,.12); border-radius: 12px; pointer-events: none; }
.dashboard-nav nav { display: grid; gap: 4px; margin: 55px 0 24px; }
.dashboard-nav nav a { position: relative; z-index: 1; display: flex; align-items: center; gap: 11px; min-height: 44px; padding: 0 12px; border-radius: 10px; color: #dfe8e1; font-weight: 650; text-decoration: none; }
.dashboard-nav nav a:hover { background: rgba(255,255,255,.08); }.dashboard-nav nav a.active { background: var(--amber); color: var(--forest); }
.dashboard-nav nav svg { width: 19px; }
.nav-account { position: relative; z-index: 1; display: grid; grid-template-columns: 38px 1fr 34px; align-items: center; gap: 9px; margin-top: auto; padding-top: 18px; border-top: 1px solid rgba(255,255,255,.18); }
.avatar { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--sage); color: var(--forest); font-weight: 800; }
.nav-account strong, .nav-account small { display: block; }.nav-account small { color: #b9c8bf; }
.nav-account button { display: grid; place-items: center; width: 34px; height: 34px; border: 0; background: transparent; color: #dfe8e1; cursor: pointer; }
.dashboard-main { width: calc(100% - 255px); margin-left: 255px; padding: 42px clamp(28px, 5vw, 74px) 80px; }
.dashboard-header { display: flex; align-items: end; justify-content: space-between; gap: 30px; margin-bottom: 34px; }
.dashboard-header h1 { margin-bottom: 7px; color: var(--forest); font-family: var(--display); font-size: clamp(3rem, 6vw, 5.2rem); font-weight: 800; line-height: .86; letter-spacing: -.02em; }
.dashboard-header p:last-child { max-width: 65ch; margin-bottom: 0; color: var(--muted); }
.secondary-action, .text-action { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; padding: 0 14px; border: 1px solid var(--forest); border-radius: 10px; background: transparent; color: var(--forest); font-weight: 700; text-decoration: none; cursor: pointer; }
.secondary-action:hover { background: var(--forest); color: #fff; }.secondary-action svg { width: 17px; }
.primary-action:disabled, .secondary-action:disabled { cursor: not-allowed; opacity: .62; box-shadow: none; }
.primary-action:disabled:hover { background: var(--forest); transform: none; box-shadow: none; }
.secondary-action:disabled:hover { background: transparent; color: var(--forest); }
.text-action { min-height: auto; padding: 7px 0; border: 0; color: var(--danger); text-decoration: underline; text-underline-offset: .2em; }
.metric-strip { display: grid; grid-template-columns: repeat(4, 1fr); margin-bottom: 52px; border-block: 1px solid var(--line); }
.metric-strip > div { min-width: 0; padding: 20px 22px; border-right: 1px solid var(--line); }
.metric-strip > div:first-child { padding-left: 0; }.metric-strip > div:last-child { border-right: 0; }
.metric-strip span, .metric-strip small { display: block; color: var(--muted); }.metric-strip span { font-size: .78rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }.metric-strip strong { display: block; margin: 2px 0 3px; color: var(--forest); font-family: var(--display); font-size: clamp(2.2rem, 4vw, 3.8rem); font-weight: 750; line-height: 1; font-variant-numeric: tabular-nums; }
.dashboard-section { margin-top: 58px; scroll-margin-top: 28px; }
.dashboard-section > .section-heading { margin-bottom: 16px; }
.dashboard-section > .section-heading h2 { font-size: 2.4rem; }
.data-table-wrap { overflow-x: auto; border-block: 1px solid var(--line); }
table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
th { padding: 11px 12px; color: var(--muted); font-size: .72rem; letter-spacing: .05em; text-align: left; text-transform: uppercase; }
td { padding: 13px 12px; border-top: 1px solid rgba(125,143,130,.46); vertical-align: middle; }
td strong, td small { display: block; } td small { color: var(--muted); }
.status { display: inline-flex; padding: 4px 7px; border-radius: 99px; background: #d6ded8; color: #334b42; font-size: .7rem; font-weight: 800; letter-spacing: .04em; }
.status-booked, .status-paid { background: #c9e6d1; color: #1b6331; }.status-disputed { background: #f2d4c5; color: #8a2d27; }.status-void { background: #ddd9d0; color: #645f55; }.status-clicked { background: #f5dfb4; color: #774800; }
.property-assets { display: grid; gap: 16px; }
.property-asset { display: grid; grid-template-columns: 1fr 220px; border-block: 1px solid var(--line); background: rgba(255,255,255,.28); }
.property-copy { padding: 24px; }.property-copy h3 { margin: 0 0 8px; color: var(--forest); font-family: var(--display); font-size: 2.1rem; }.property-copy h3 span { color: var(--muted); font-family: var(--ui); font-size: .78rem; font-weight: 650; white-space: nowrap; }.property-copy > p { max-width: 52ch; color: var(--muted); }
.copy-text { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; padding: 0; border: 0; background: transparent; color: var(--forest); font-weight: 700; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }.copy-text svg { width: 16px; }
.promo-field { display: flex; align-items: center; gap: 12px; margin-top: 18px; }.promo-field span { color: var(--muted); }.promo-field strong { padding: 6px 9px; border: 1px dashed var(--forest); background: var(--sage); color: var(--forest); letter-spacing: .08em; }
.qr-card { display: grid; place-items: center; align-content: center; gap: 8px; padding: 18px; border-left: 1px solid var(--line); }.qr-card img { width: 155px; background: var(--paper); }.qr-card a { display: flex; align-items: center; gap: 6px; min-height: 44px; color: var(--forest); font-size: .86rem; font-weight: 700; }.qr-card svg { width: 15px; }
.payout-callout { display: flex; align-items: center; justify-content: space-between; gap: 30px; padding: 28px; border-radius: 14px; background-color: var(--forest); background-image: url('/assets/materials/enamel-patina.png'); color: #fff; box-shadow: var(--soft-shadow); }.payout-callout h2 { margin-bottom: 5px; font-family: var(--display); font-size: 2.3rem; }.payout-callout p:last-child { color: #cedbd2; }.payout-callout .primary-action { padding: 0 18px; background: var(--amber); color: var(--forest); }
.locked-action-panel { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; gap: 18px; padding: 24px; border: 1px solid var(--line); border-radius: 14px; background: var(--sage); }
.locked-action-panel > svg { width: 34px; height: 34px; color: var(--forest); }
.locked-action-panel h3 { margin-bottom: 4px; color: var(--forest); font-family: var(--display); font-size: 1.7rem; }
.locked-action-panel p { margin: 0; color: var(--muted); }
.locked-action-panel .primary-action { padding-inline: 16px; }
.action-notice { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: center; gap: 12px; margin-bottom: 16px; padding: 13px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--sage); color: var(--forest); }
.action-notice > svg { width: 21px; }
.action-notice strong, .action-notice span { display: block; }
.action-notice span { color: var(--muted); font-size: .82rem; }
.action-notice a, .action-notice button, .promo-locked a { min-height: 44px; border: 0; background: transparent; color: var(--forest); font-weight: 700; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.action-notice-warning { background: var(--cream-2); }
.promo-locked { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 110px; color: var(--muted); }
.promo-locked svg { width: 22px; color: var(--forest); }
.void-action { min-height: 44px; }
.void-dialog { position: relative; width: min(calc(100% - 28px), 520px); padding: 34px 30px 28px; border: 0; border-radius: 16px; background: var(--cream); color: var(--ink); box-shadow: 0 28px 70px rgba(7,24,19,.35), 0 7px 18px rgba(7,24,19,.22); }
.void-dialog::backdrop { background: rgba(9,27,22,.72); }
.void-dialog .dialog-close { position: absolute; top: 14px; right: 14px; }
.void-dialog-icon { width: 34px; height: 34px; color: var(--danger); }
.void-dialog h2 { margin: 12px 50px 10px 0; color: var(--forest); font-family: var(--display); font-size: 2.35rem; line-height: 1; }
.void-dialog p { color: var(--muted); }
.void-dialog #voidDialogContext { color: var(--forest); font-weight: 700; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; }
.danger-action { min-height: 44px; padding: 0 16px; border: 0; border-radius: 10px; background: var(--danger); color: #fff; font-weight: 700; cursor: pointer; }
.demo-badge { display: inline-flex; align-items: center; gap: 6px; width: fit-content; padding: 5px 9px; border: 1px solid var(--line); border-radius: 99px; color: var(--muted); font-size: .74rem; font-weight: 700; }.demo-badge svg { width: 15px; }
.confirmation-list { border-block: 1px solid var(--line); }
.confirmation-row { display: grid; grid-template-columns: minmax(270px, 1fr) minmax(340px, .9fr) auto; align-items: center; gap: 20px; padding: 14px 0; border-top: 1px solid rgba(125,143,130,.46); }.confirmation-row:first-child { border-top: 0; }
.confirmation-identity { display: flex; align-items: center; gap: 13px; }.confirmation-identity img { width: 76px; height: 66px; object-fit: cover; border-radius: 10px; }.confirmation-identity strong, .confirmation-identity span, .confirmation-identity small { display: block; }.confirmation-identity span, .confirmation-identity small { color: var(--muted); font-size: .85rem; }
.confirm-form { display: flex; align-items: end; gap: 10px; }.confirm-form label > span:first-child { display: block; margin-bottom: 4px; color: var(--muted); font-size: .75rem; font-weight: 650; }.money-input { position: relative; display: block; }.money-input b { position: absolute; top: 11px; left: 11px; color: var(--muted); }.money-input input { padding-left: 25px; }.confirm-form .primary-action { min-height: 46px; padding: 0 14px; white-space: nowrap; }
.empty-state { padding: 44px 20px; text-align: center; }.empty-state svg { width: 42px; height: 42px; color: var(--forest); }.empty-state h3 { margin: 10px 0 3px; color: var(--forest); font-family: var(--display); font-size: 1.8rem; }.empty-state p { color: var(--muted); }
.property-performance { border-block: 1px solid var(--line); }.performance-row { display: grid; grid-template-columns: minmax(180px, .9fr) 2fr 90px; align-items: center; gap: 20px; padding: 16px 0; border-top: 1px solid rgba(125,143,130,.46); }.performance-row:first-child { border-top: 0; }.performance-row strong, .performance-row span { display: block; }.performance-row span { color: var(--muted); font-size: .82rem; }.performance-row b { color: var(--forest); text-align: right; font-variant-numeric: tabular-nums; }.bar-track { height: 10px; overflow: hidden; border-radius: 99px; background: #d8ddd4; }.bar-track span { height: 100%; border-radius: inherit; background: var(--amber); }
.offering-editor { border-block: 1px solid var(--line); }.offering-editor details { border-top: 1px solid rgba(125,143,130,.46); }.offering-editor details:first-child { border-top: 0; }.offering-editor summary { display: grid; grid-template-columns: 76px 1fr 24px; align-items: center; gap: 13px; padding: 12px 0; cursor: pointer; list-style: none; }.offering-editor summary::-webkit-details-marker { display: none; }.offering-editor summary img { width: 76px; height: 58px; object-fit: cover; border-radius: 9px; }.offering-editor summary strong, .offering-editor summary small { display: block; }.offering-editor summary small { color: var(--muted); }.offering-editor details[open] summary > svg { transform: rotate(180deg); }.offering-editor form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 8px 0 20px 89px; }.offering-editor .span-two { grid-column: 1/-1; }.check-label { display: flex!important; align-items: center; flex-direction: row; }.check-label input { width: auto; min-height: 0; }.offering-editor .secondary-action { justify-self: end; }
.offer-policy { max-width: 34ch; color: var(--muted); font-size: .75rem; text-align: right; }
.offer-editor { display: grid; gap: 14px; }
.offer-control { border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.28); }
.offer-control > header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 17px 18px; border-bottom: 1px solid var(--line); }
.offer-control > header span, .offer-control > header strong { display: block; }
.offer-control > header div > span { color: var(--muted); font-size: .75rem; }
.offer-control > header strong { color: var(--forest); font-family: var(--display); font-size: 1.45rem; }
.pause-offer { display: flex; align-items: center; gap: 12px; padding: 11px 18px; border-bottom: 1px solid var(--line); background: var(--sage); }
.pause-offer button { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; border: 0; background: transparent; color: var(--forest); font-weight: 800; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.pause-offer button svg, .pause-offer.paused svg { width: 17px; }
.pause-offer small { color: var(--muted); }
.pause-offer.paused { margin: 0; color: var(--forest); }
.offer-control details { padding: 0 18px; }
.offer-control summary { display: flex; align-items: center; justify-content: space-between; min-height: 52px; color: var(--forest); font-weight: 800; cursor: pointer; list-style: none; }
.offer-control summary::-webkit-details-marker { display: none; }
.offer-control summary svg { width: 18px; transition: transform 180ms ease-out; }
.offer-control details[open] summary svg { transform: rotate(180deg); }
.offer-form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding-bottom: 20px; }
.offer-form label, .offer-form legend { color: var(--muted); font-size: .78rem; font-weight: 700; }
.offer-form label > span { font-weight: 400; }
.offer-form .span-two { grid-column: 1 / -1; }
.offer-days { display: flex; flex-wrap: wrap; gap: 7px; margin: 0; padding: 0; border: 0; }
.offer-days legend { width: 100%; margin-bottom: 4px; }
.offer-days label { position: relative; }
.offer-days input { position: absolute; opacity: 0; }
.offer-days label span { display: grid; place-items: center; min-width: 48px; min-height: 44px; padding: 0 8px; border: 1px solid var(--line); border-radius: 99px; color: var(--forest); cursor: pointer; }
.offer-days input:checked + span { border-color: var(--forest); background: var(--forest); color: #fff; }
.offer-days input:focus-visible + span { outline: 2px solid #376b82; outline-offset: 2px; }
.offer-form > button { justify-self: end; }
.promo-confirm { display: grid; grid-template-columns: .75fr 1.25fr; gap: 40px; padding: 28px; background: var(--sage); box-shadow: inset 0 4px var(--forest); }.promo-confirm h2 { margin-bottom: 6px; color: var(--forest); font-family: var(--display); font-size: 2.4rem; }.promo-confirm > div > p:last-child { color: var(--muted); }.promo-confirm form { display: grid; grid-template-columns: 1fr 1.3fr; gap: 10px; }.promo-confirm form .primary-action { align-self: end; }
.dispute-list, .partner-roster, .property-roster { border-block: 1px solid var(--line); }.dispute-list article { display: grid; grid-template-columns: 38px 1fr auto; gap: 14px; align-items: center; padding: 16px 0; }.dispute-list article > svg { color: var(--danger); }.dispute-list strong, .dispute-list span { display: block; }.dispute-list span { color: var(--muted); }.dispute-list p { margin: 4px 0 0; }
.partner-roster article, .property-roster article { display: grid; grid-template-columns: 46px 1fr auto auto; align-items: center; gap: 13px; padding: 13px 0; border-top: 1px solid rgba(125,143,130,.46); }.partner-roster article:first-child, .property-roster article:first-child { border-top: 0; }.vendor-avatar { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: var(--forest); color: #fff; font-family: var(--display); font-weight: 750; }.partner-roster strong, .partner-roster small, .property-roster strong, .property-roster small { display: block; }.partner-roster small, .property-roster small { color: var(--muted); }.partner-roster a, .property-roster a { display: flex; align-items: center; gap: 5px; color: var(--forest); font-weight: 700; }.partner-roster a svg, .property-roster a svg { width: 16px; }.property-roster { margin-top: 24px; }.property-roster article { grid-template-columns: 1fr auto; }
code { padding: 2px 5px; background: rgba(23,54,47,.08); color: var(--forest); font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: .83em; }
.guest-feedback { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 42px; padding-block: 22px; border-block: 1px solid var(--line); }.guest-feedback h2 { margin-bottom: 3px; color: var(--forest); font-family: var(--display); font-size: 2rem; }.guest-feedback p { margin: 0; color: var(--muted); }.feedback-actions { display: flex; gap: 8px; }.feedback-actions button { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; padding: 0 13px; border: 1px solid var(--forest); border-radius: 10px; background: transparent; color: var(--forest); font-weight: 700; cursor: pointer; }.feedback-actions button:hover, .feedback-actions button.selected { background: var(--forest); color: #fff; }.feedback-actions button:disabled:not(.selected) { opacity: .5; }.feedback-actions svg { width: 17px; }.feedback-status { flex: 0 0 100%; font-size: .84rem; }
.crm-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; margin-bottom: 18px; }.crm-filters label { min-width: 150px; }.crm-filters label, .lead-update label { color: var(--muted); font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }.crm-filters input, .crm-filters select, .lead-update input, .lead-update select { min-height: 42px; margin-top: 4px; }.lead-roster { border-block: 1px solid var(--line); }.lead-row { display: grid; grid-template-columns: 54px minmax(210px,.75fr) minmax(460px,1.25fr); align-items: center; gap: 18px; padding: 16px 0; border-top: 1px solid rgba(125,143,130,.46); }.lead-row:first-child { border: 0; }.lead-score { display: grid; place-items: center; width: 50px; height: 50px; border-radius: 50%; background: var(--forest); color: #fff; }.lead-score strong { font-family: var(--display); font-size: 1.6rem; line-height: .8; }.lead-score span { font-size: .6rem; text-transform: uppercase; }.lead-identity strong, .lead-identity span, .lead-identity small { display: block; }.lead-identity span, .lead-identity p, .lead-identity small { color: var(--muted); }.lead-identity p { margin: 4px 0; }.lead-identity a { color: var(--forest); }.lead-update { display: grid; grid-template-columns: 120px 145px 1fr auto; align-items: end; gap: 8px; }.lead-update .secondary-action { min-height: 42px; }.funnel-summary { display: grid; grid-template-columns: repeat(4,1fr); margin-bottom: 18px; border-block: 1px solid var(--line); }.funnel-summary div { padding: 14px 16px; border-right: 1px solid var(--line); }.funnel-summary div:first-child { padding-left: 0; }.funnel-summary div:last-child { border: 0; }.funnel-summary span, .funnel-summary strong { display: block; }.funnel-summary span { color: var(--muted); font-size: .74rem; font-weight: 700; text-transform: uppercase; }.funnel-summary strong { color: var(--forest); font-family: var(--display); font-size: 2.25rem; font-variant-numeric: tabular-nums; }
.onboarding-track { padding: 28px; background: var(--sage); box-shadow: inset 0 4px var(--forest); }.onboarding-steps { display: grid; grid-template-columns: repeat(4,1fr); gap: 0; margin: 20px 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }.onboarding-steps li { display: grid; grid-template-columns: 32px 1fr; gap: 10px; padding: 18px 15px; border-right: 1px solid var(--line); }.onboarding-steps li:last-child { border: 0; }.onboarding-steps li > span { display: grid; place-items: center; width: 28px; height: 28px; border: 1px solid var(--forest); border-radius: 50%; color: var(--forest); font-weight: 800; }.onboarding-steps li.complete > span { background: var(--forest); color: #fff; }.onboarding-steps strong { color: var(--forest); }.onboarding-steps p { margin: 5px 0 0; color: var(--muted); font-size: .84rem; }.agreement-panel { border-top: 1px solid var(--line); }.agreement-panel summary { display: flex; align-items: center; justify-content: space-between; min-height: 52px; color: var(--forest); font-weight: 800; cursor: pointer; }.agreement-panel summary svg { width: 18px; }.agreement-copy { max-width: 760px; padding: 10px 0 5px; }.agreement-copy h3 { color: var(--forest); font-family: var(--display); font-size: 2rem; }.agreement-copy form { display: grid; gap: 12px; max-width: 580px; }.agreement-copy .check-label { gap: 8px; }.agreement-receipt { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--forest); }.agreement-receipt svg { width: 20px; }

@media (min-width: 720px) {
  .guest-shell { padding: 24px 30px 130px; }
  .guest-masthead { min-height: 76px; }
  .brand { font-size: 2rem; }.brand img { width: 48px; height: 52px; }
  .property-lockup { max-width: none; font-size: 1rem; }
  .valley-stamp { display: block; position: absolute; right: -18px; top: -15px; width: 98px; opacity: .18; transform: rotate(5deg); pointer-events: none; }
  .property-lockup { margin-right: 78px; }
  .conditions-board { grid-template-columns: 80px 1fr; padding: 30px 34px 23px; }
  .weather-icon { width: 72px; height: 65px; }.weather-icon svg { width: 58px; height: 58px; }
  .temperature span { font-size: 1.25rem; }.conditions-copy p { font-size: 1.2rem; }
  .best-fit { display: grid; grid-template-columns: 1.2fr .8fr; min-height: 400px; border-bottom: 1px solid var(--line); background: rgba(244,240,228,.72); }
  .best-fit-photo { position: relative; inset: auto; height: 100%; aspect-ratio: auto; border-radius: 14px 0 0 14px; }
  .best-fit-content { position: relative; inset: auto; display: flex; flex-direction: column; justify-content: center; padding: 26px 22px 26px 28px; background: transparent; color: var(--ink); }
  .photo-title .vendor-name { font-size: .9rem; }.photo-title h2 { font-size: 3.15rem; }.fit-reason { color: var(--muted); font-size: 1rem; white-space: normal; }.activity-facts { margin-bottom: 16px; border-block: 1px solid var(--line); }.activity-facts dt { color: var(--muted); }.activity-facts dd { color: var(--forest); font-size: .94rem; }
  .book-button { position: static; width: 100%; min-height: 52px; background: var(--forest); color: #fff; box-shadow: 0 8px 20px rgba(24, 54, 47, .16), 0 2px 5px rgba(24, 54, 47, .18); }.book-button span { position: static; width: auto; height: auto; overflow: visible; clip: auto; }
  .recommendation-row { grid-template-columns: 190px 1fr 54px; min-height: 150px; }
  .recommendation-row > img { width: 176px; height: 128px; }
  .row-copy h2 { font-size: 1.8rem; }.row-reason { display: block; margin: 6px 0 0; color: var(--muted); font-size: .88rem; }
  .interest-grid { grid-template-columns: repeat(3, 1fr); }.party-grid { grid-template-columns: repeat(4, 1fr); }
}

@media (min-width: 1160px) {
  .guest-canvas { display: grid; grid-template-columns: minmax(620px, 880px) minmax(260px, 330px); justify-content: center; gap: clamp(40px, 6vw, 90px); padding: 30px 45px; }
  .guest-shell { width: 100%; padding-top: 0; }
  .guest-context { display: block; position: sticky; top: 70px; align-self: start; padding-top: 80px; }
  .guest-context > img { width: 122px; margin-bottom: 22px; opacity: .6; }
  .guest-context h2 { color: var(--forest); font-family: var(--display); font-size: 2.6rem; line-height: .95; }
  .guest-context > p { color: var(--muted); }
  .guest-context ul { display: grid; gap: 0; margin: 25px 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
  .guest-context li { display: grid; grid-template-columns: 25px 1fr; gap: 10px; padding: 13px 0; border-top: 1px solid var(--line); }.guest-context li:first-child { border: 0; }.guest-context li svg { width: 20px; color: var(--forest); }.guest-context li strong { color: var(--forest); }.guest-context small { color: var(--muted); }
}

@media (max-width: 900px) {
  .site-header nav a:not(.header-demo) { display: none; }
  .marketing-hero { grid-template-columns: 1fr; min-height: auto; }.hero-copy h1 { font-size: clamp(4rem,13vw,6.4rem); }.demo-board { grid-template-columns: 1fr 250px; align-items: center; }
  .how-strip, .audience-section { grid-template-columns: 1fr; }.how-strip ol { margin-top: 8px; }
  .site-footer { grid-template-columns: 1fr auto; }.site-footer p { grid-column: 1/-1; grid-row: 2; text-align: left; }
  .lead-row { grid-template-columns: 54px 1fr; }.lead-update { grid-column: 2; }.onboarding-steps { grid-template-columns: repeat(2,1fr); }.onboarding-steps li:nth-child(2) { border-right: 0; }.onboarding-steps li:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
}

@media (max-width: 980px) {
  .dashboard-nav { position: static; width: 100%; min-height: 76px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; padding: 12px 18px; }
  .dashboard-nav::after { inset: 5px; }.dashboard-nav .brand { font-size: 1.45rem; }.dashboard-nav .brand img { width: 34px; height: 38px; }
  .dashboard-nav nav { display: flex; justify-content: center; margin: 0; }.dashboard-nav nav a { font-size: 0; padding: 0 12px; }.dashboard-nav nav a svg { width: 21px; height: 21px; }
  .nav-account { grid-template-columns: 34px 34px; margin: 0; padding: 0; border: 0; }.nav-account > div { display: none; }.avatar { width: 34px; height: 34px; }
  .dashboard-main { width: 100%; margin: 0; padding: 34px 24px 70px; }
  .dashboard-header h1 { font-size: 4.2rem; }
  .metric-strip { grid-template-columns: repeat(2, 1fr); }.metric-strip > div:nth-child(2) { border-right: 0; }.metric-strip > div:nth-child(n+3) { border-top: 1px solid var(--line); }.metric-strip > div:nth-child(3) { padding-left: 0; }
  .confirmation-row { grid-template-columns: 1fr; gap: 10px; }.confirm-form { justify-self: start; }
  .promo-confirm { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .site-header { min-height: 66px; }.site-header .brand { font-size: 1.3rem; }.site-header .brand img { width: 34px; height: 38px; }.site-header .header-demo { font-size: .78rem; padding-inline: 10px; }
  .marketing-hero { padding-block: 48px 64px; }.hero-copy h1 { max-width: none; font-size: clamp(3.35rem,14vw,4.2rem); }.hero-actions { display: grid; }.hero-facts { grid-template-columns: 1fr; }.hero-facts li { padding: 13px 0; border-right: 0; border-bottom: 1px solid var(--line); }.hero-facts li:last-child { border: 0; }.demo-board { grid-template-columns: 1fr; padding: 24px; }.demo-qr { width: 100%; }.demo-qr img { width: 180px; }
  .how-strip, .audience-section { padding-block: 64px; }.how-strip ol { grid-template-columns: 1fr; }.how-strip li { display: grid; grid-template-columns: 34px 1fr; column-gap: 12px; padding: 16px 0; border-right: 0; border-bottom: 1px solid var(--line); }.how-strip li:last-child { border: 0; }.how-strip li svg { grid-row: 1/3; margin: 0; }.how-strip li span { grid-column: 2; }.lead-form { grid-template-columns: 1fr; padding: 22px; }.lead-form h3, .lead-form > p, .lead-form .span-two { grid-column: auto; }.commission-math { grid-template-columns: 1fr; }.commission-math div:nth-last-child(2) { border-bottom: 1px solid rgba(125,143,130,.46); }.site-footer { grid-template-columns: 1fr; }.site-footer p { grid-column: auto; grid-row: auto; }.form-confirmation { align-items: flex-start; }
  .dashboard-nav { grid-template-columns: 1fr auto; }.dashboard-nav nav { position: fixed; z-index: 40; inset: auto 8px 8px; justify-content: space-around; padding: 7px; border: 1px solid rgba(255,255,255,.12); border-radius: 14px; background: var(--forest); box-shadow: 0 15px 35px rgba(0,0,0,.25), 0 4px 10px rgba(0,0,0,.18); }.dashboard-nav nav a { width: 52px; justify-content: center; }.nav-account { display: none; }
  .dashboard-main { padding: 28px 17px 100px; }.dashboard-header { display: grid; }.dashboard-header h1 { font-size: 3.5rem; }.dashboard-header .secondary-action, .dashboard-header form { justify-self: start; }
  .metric-strip > div { padding: 15px 12px; }.metric-strip > div:first-child, .metric-strip > div:nth-child(3) { padding-left: 0; }.metric-strip strong { font-size: 2.35rem; }
  .property-asset { grid-template-columns: 1fr; }.qr-card { border-left: 0; border-top: 1px solid var(--line); }.payout-callout { display: grid; }
  .performance-row { grid-template-columns: 1fr 65px; gap: 8px; }.performance-row .bar-track { grid-column: 1 / -1; grid-row: 2; }.performance-row b { grid-column: 2; grid-row: 1; }
  .offering-editor form { grid-template-columns: 1fr; padding-left: 0; }.offering-editor .span-two { grid-column: auto; }
  .offer-policy { max-width: none; text-align: left; }
  #offers > .section-heading { display: block; }
  #offers .offer-policy { display: block; margin-top: 8px; }
  .offer-form { grid-template-columns: 1fr; }
  .offer-form .span-two { grid-column: auto; }
  .pause-offer { align-items: flex-start; flex-direction: column; gap: 2px; }
  .promo-confirm form { grid-template-columns: 1fr; }.partner-roster article { grid-template-columns: 42px 1fr auto; }.partner-roster .demo-badge { display: none; }.partner-roster a { grid-column: 2; }
  .data-table-wrap { margin-inline: -17px; padding-inline: 17px; }
  .lead-row { grid-template-columns: 44px 1fr; gap: 12px; }.lead-score { width: 42px; height: 42px; }.lead-update { grid-column: 1/-1; grid-template-columns: 1fr 1fr; }.lead-update .lead-notes, .lead-update button { grid-column: 1/-1; }.funnel-summary { grid-template-columns: repeat(2,1fr); }.funnel-summary div:nth-child(2) { border-right: 0; }.funnel-summary div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }.onboarding-track { margin-inline: -17px; padding-inline: 17px; }.onboarding-steps { grid-template-columns: 1fr; }.onboarding-steps li { border-right: 0; border-bottom: 1px solid var(--line); }.onboarding-steps li:last-child { border: 0; }.guest-feedback { flex-wrap: wrap; align-items: flex-start; }.feedback-actions { width: 100%; }.feedback-actions button { flex: 1; }
}

@media (max-width: 719px) {
  .guest-shell { padding-top: 10px; }
  .guest-masthead { min-height: 54px; padding-bottom: 8px; }
  .brand { font-size: 1.5rem; }.brand img { width: 35px; height: 38px; }
  .property-lockup { font-size: .82rem; }
  .conditions-board { grid-template-columns: 48px 1fr; margin: 10px 0 18px; padding: 16px 18px 13px; }
  .weather-icon { width: 43px; height: 43px; }.weather-icon svg { width: 36px; height: 36px; }
  .temperature { font-size: 2.72rem; }.temperature span { font-size: .92rem; }
  .conditions-copy p { margin-top: 6px; font-size: .93rem; }
  .condition-meta { gap: 14px; padding-top: 8px; font-size: .77rem; }
  .section-heading { gap: 10px; margin-bottom: 9px; }
  .section-heading h1 { font-size: 2.45rem; }.section-heading p { margin-top: 4px; font-size: .9rem; line-height: 1.35; }
  .source-note { padding: 4px 7px; font-size: .66rem; }
  .demo-disclosure { margin: 0 0 9px; padding: 7px 8px; font-size: .75rem; }
  .best-fit { margin-bottom: 12px; }
  .best-fit-content { padding: 8px 60px 8px 12px; }
  .fit-reason { margin-bottom: 4px; }
  .activity-facts div { padding-block: 7px; }
  .book-button { right: 10px; bottom: 11px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms!important; animation-iteration-count: 1!important; transition-duration: .01ms!important; }
}

/* Public guest and partner journeys */
.public-page { background: var(--paper); }
.public-page::after { content: ""; position: fixed; z-index: -1; inset: 76px 0 auto auto; width: min(42vw, 620px); height: min(42vw, 620px); background: url('/assets/decor/topo-contours.svg') center/contain no-repeat; opacity: .07; pointer-events: none; }
.public-header { position: sticky; z-index: 80; top: 0; display: flex; align-items: center; justify-content: space-between; min-height: 76px; padding: 10px clamp(18px, 4vw, 64px); border-bottom: 1px solid rgba(82,103,95,.44); background: rgba(244,240,228,.96); backdrop-filter: blur(14px); }
.public-header nav { display: flex; align-items: center; gap: clamp(16px, 2.5vw, 36px); }
.public-header nav a { position: relative; color: var(--forest); font-size: .9rem; font-weight: 750; text-decoration: none; }
.public-header nav a:not(.public-login)::after { content: ""; position: absolute; inset: auto 0 -8px; height: 2px; background: var(--amber-deep); transform: scaleX(0); transform-origin: left; transition: transform 180ms ease-out; }
.public-header nav a:hover::after, .public-header nav a[aria-current="page"]::after { transform: scaleX(1); }
.public-login { display: inline-flex; align-items: center; gap: 7px; min-height: 43px; padding: 0 14px; border: 1px solid var(--forest); }
.public-login:hover { background: var(--forest); color: #fff; }
.public-login svg { width: 16px; }
.public-menu { display: none; align-items: center; gap: 7px; min-height: 44px; padding: 0 12px; border: 1px solid var(--forest); background: transparent; color: var(--forest); font-weight: 750; }
.public-menu svg { width: 18px; }
.public-shell { overflow: clip; }
.public-page::after { display: none; }
.eyebrow { display: flex; align-items: center; gap: 8px; margin-bottom: 18px; color: var(--amber-deep); font-size: .75rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.eyebrow svg { width: 17px; }
.public-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 20px; margin-top: 30px; }
.public-primary { min-height: 56px; padding: 0 21px; border-radius: 0; background: var(--amber); color: var(--forest); box-shadow: 7px 7px 0 rgba(23,54,47,.16); }
.public-primary:hover { background: #f6b958; color: var(--forest); box-shadow: 4px 4px 0 rgba(23,54,47,.22); transform: translate(3px,3px); }
.text-action { display: inline-flex; align-items: center; gap: 8px; color: var(--forest); font-weight: 750; text-decoration: underline; text-decoration-color: var(--amber-deep); text-decoration-thickness: 2px; }
.text-action svg { width: 17px; }
.public-hero-image { position: relative; overflow: hidden; background: var(--sage); }
.public-hero-image img { width: 100%; height: 100%; object-fit: cover; animation: public-photo-reveal 900ms cubic-bezier(.16,1,.3,1) both; }
.image-caption { position: absolute; right: 0; bottom: 0; padding: 8px 12px; background: var(--paper); color: var(--forest); font-size: .7rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
@keyframes public-photo-reveal { from { clip-path: inset(0 0 18% 0); transform: scale(1.035); } to { clip-path: inset(0); transform: scale(1); } }

.guest-public-hero { position: relative; display: grid; grid-template-columns: minmax(0, 1.22fr) minmax(410px, .78fr); min-height: calc(100svh - 76px); background: var(--forest); }
.guest-hero-image { grid-column: 1 / -1; grid-row: 1; min-height: calc(100svh - 76px); }
.guest-hero-image::after { content: ""; position: absolute; inset: 0 auto 0 0; width: 2px; background: var(--amber); }
.guest-hero-image img { object-position: 62% center; filter: saturate(.86) contrast(1.04); }
.guest-hero-plate { position: relative; z-index: 2; grid-column: 1; grid-row: 1; align-self: center; width: min(650px, calc(100% - 7vw)); margin-left: clamp(24px, 6vw, 92px); padding: clamp(34px, 5vw, 64px); background: var(--forest) url('/assets/materials/enamel-patina.png') center/cover; color: #fff; box-shadow: 18px 18px 0 rgba(9,29,23,.32); }
.guest-hero-plate::before { content: "Bow Valley field note  /  01"; display: block; padding-bottom: 13px; border-bottom: 1px solid rgba(255,255,255,.25); color: #c7d8cc; font-size: .67rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.guest-hero-plate .eyebrow { margin-top: 25px; color: #ffd178; }
.guest-hero-plate h1 { max-width: 9ch; margin-bottom: 24px; font-family: var(--display); font-size: clamp(4.6rem, 7vw, 7.2rem); font-weight: 800; letter-spacing: -.035em; line-height: .8; }
.guest-hero-plate > p { max-width: 49ch; color: #d6e3da; font-size: 1.1rem; }
.guest-hero-plate .text-action { color: #fff; }
.conditions-ticket { position: absolute; right: clamp(-250px, -16vw, -150px); bottom: clamp(24px, 8vh, 80px); display: grid; grid-template-columns: 1fr auto; width: 315px; padding: 17px 20px; border-top: 4px solid var(--amber); background: var(--paper); color: var(--forest); box-shadow: var(--soft-shadow); transform: rotate(-2deg); }
.conditions-ticket > span { display: flex; align-items: center; gap: 7px; font-size: .73rem; font-weight: 800; text-transform: uppercase; }
.conditions-ticket svg { width: 18px; color: var(--amber-deep); }
.conditions-ticket strong { grid-row: 1 / 3; grid-column: 2; align-self: center; padding-left: 16px; font-family: var(--display); font-size: 3.7rem; line-height: .8; font-variant-numeric: tabular-nums; }
.conditions-ticket p { margin: 5px 0 0; color: var(--muted); font-size: .77rem; }

.guest-promise { display: grid; grid-template-columns: minmax(230px, .65fr) minmax(0, 1.35fr); align-items: stretch; padding: 0 clamp(18px, 6vw, 92px); background: var(--amber); color: var(--forest); }
.guest-promise > p { display: grid; align-items: center; margin: 0; padding: 30px 34px 30px 0; border-right: 1px solid rgba(23,54,47,.4); font-family: var(--display); font-size: 2rem; font-weight: 800; line-height: .95; }
.guest-promise ul { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; padding: 0; list-style: none; }
.guest-promise li { display: grid; grid-template-columns: 31px 1fr; gap: 10px; padding: 28px clamp(17px, 2.2vw, 32px); border-right: 1px solid rgba(23,54,47,.4); }
.guest-promise li:last-child { border: 0; }
.guest-promise li svg { width: 24px; }
.guest-promise li strong, .guest-promise li span { display: block; }
.guest-promise li strong { margin-bottom: 3px; font-size: .92rem; }
.guest-promise li span { font-size: .8rem; }

.guide-preview { display: grid; grid-template-columns: minmax(0,.8fr) minmax(470px,1.2fr); gap: clamp(54px,9vw,140px); align-items: center; padding: clamp(82px,10vw,150px) clamp(18px,7vw,110px); background: var(--paper); }
.guide-preview-copy h2, .partner-fork h2, .partner-economics h2, .partner-flow > h2, .host-kit h2, .ledger-copy h2 { color: var(--forest); font-family: var(--display); font-size: clamp(3.2rem,5.3vw,5.7rem); font-weight: 800; letter-spacing: -.025em; line-height: .83; }
.guide-preview-copy > p:not(.eyebrow), .partner-economics > div > p:last-child, .host-kit > div > p:last-child, .ledger-copy > p:not(.eyebrow) { max-width: 52ch; color: var(--muted); font-size: 1.06rem; }
.guide-preview-copy ol { margin: 34px 0 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.guide-preview-copy li { display: flex; gap: 19px; padding: 13px 0; border-top: 1px solid rgba(82,103,95,.35); color: var(--forest); font-weight: 700; }
.guide-preview-copy li:first-child { border: 0; }
.guide-preview-copy li span { color: var(--amber-deep); font-variant-numeric: tabular-nums; }
.guide-preview-board { position: relative; padding: 24px; border: 1px solid #092a21; border-radius: 14px; background: var(--forest) url('/assets/materials/enamel-patina.png') center/cover; color: #fff; box-shadow: var(--soft-shadow); transform: rotate(1.4deg); }
.guide-preview-board::before { content: ""; position: absolute; inset: -22px -34px auto auto; width: 95px; height: 95px; background: url('/assets/decor/bow-valley-stamp.svg') center/contain no-repeat; opacity: .72; transform: rotate(8deg); }
.guide-preview-board header { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 13px; border-bottom: 1px solid rgba(255,255,255,.28); color: #c9d9cf; font-size: .7rem; font-weight: 750; text-transform: uppercase; }
.preview-weather { display: grid; grid-template-columns: 52px auto 1fr; align-items: center; gap: 13px; padding: 24px 0; }
.preview-weather svg { width: 42px; height: 42px; color: var(--amber); }
.preview-weather strong { font-family: var(--display); font-size: 4rem; line-height: .8; }
.preview-weather span { padding-left: 16px; border-left: 1px solid rgba(255,255,255,.25); color: #d3e0d7; font-size: .82rem; }
.preview-best { padding: 25px; background: var(--paper); color: var(--forest); }
.preview-best > span { color: var(--amber-deep); font-size: .7rem; font-weight: 800; text-transform: uppercase; }
.preview-best h3 { margin: 6px 0 2px; font-family: var(--display); font-size: 2.8rem; line-height: .9; }
.preview-best p { color: var(--muted); font-size: .86rem; }
.preview-best a { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; }
.preview-best a svg { width: 16px; }
.guide-preview-board > ul { margin: 0; padding: 5px 0 0; list-style: none; }
.guide-preview-board > ul li { display: grid; grid-template-columns: 28px 1fr auto; align-items: center; gap: 9px; padding: 13px 4px; border-bottom: 1px solid rgba(255,255,255,.2); }
.guide-preview-board > ul li:last-child { border: 0; }
.guide-preview-board > ul svg { width: 18px; color: var(--amber); }
.guide-preview-board > ul span { color: #e2eae4; }

.partner-fork { padding: clamp(76px,9vw,130px) clamp(18px,7vw,110px); background: var(--sage); }
.partner-fork h2 { max-width: 12ch; }
.partner-fork > div { display: grid; grid-template-columns: repeat(2,1fr); margin-top: 52px; border-block: 1px solid var(--forest); }
.partner-fork a { display: grid; grid-template-columns: 1fr 42px; gap: 11px 20px; padding: 30px; text-decoration: none; transition: background 180ms ease-out, color 180ms ease-out; }
.partner-fork a:first-child { border-right: 1px solid var(--forest); }
.partner-fork a:hover { background: var(--forest); color: #fff; }
.partner-fork a span { grid-column: 1; font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.partner-fork a strong { grid-column: 1; font-family: var(--display); font-size: clamp(2rem,3vw,3.1rem); line-height: .9; }
.partner-fork a svg { grid-column: 2; grid-row: 1 / 3; align-self: center; width: 30px; height: 30px; }

.public-footer { display: grid; grid-template-columns: auto minmax(280px,1fr) auto; align-items: center; gap: clamp(25px,5vw,70px); padding: 38px clamp(18px,5vw,72px); background: var(--forest); color: #dbe6de; }
.public-footer p { max-width: 65ch; margin: 0; font-size: .83rem; }
.public-footer nav { display: flex; gap: 18px; }
.public-footer nav a { color: #fff; font-size: .8rem; font-weight: 700; }

/* Partner hero surfaces */

.host-hero-copy h1 { max-width: 8ch; margin-bottom: 25px; color: var(--forest); font-family: var(--display); font-size: clamp(4.7rem,7vw,7.6rem); font-weight: 800; letter-spacing: -.035em; line-height: .78; }
.host-hero-copy > p:not(.eyebrow) { max-width: 50ch; color: var(--muted); font-size: 1.1rem; }
.vendor-hero-image { min-height: calc(100svh - 76px); }
.vendor-hero-image img { object-position: 50% center; }
.commission-flag { position: absolute; z-index: 3; left: calc(38% - 70px); bottom: 6vh; display: grid; width: 260px; padding: 20px 24px; border: 1px solid var(--forest); background: var(--amber); color: var(--forest); box-shadow: 10px 10px 0 rgba(23,54,47,.26); transform: rotate(-2deg); }
.commission-flag span, .commission-flag small { font-size: .7rem; font-weight: 750; text-transform: uppercase; }
.commission-flag strong { margin: 6px 0; font-family: var(--display); font-size: 5rem; line-height: .78; }
.partner-economics { display: grid; grid-template-columns: minmax(0,1fr) minmax(390px,.7fr); gap: clamp(50px,9vw,140px); align-items: center; padding: clamp(80px,10vw,140px) clamp(18px,7vw,110px); background: var(--sage); }
.partner-economics h2 { max-width: 10ch; }
.partner-economics dl { margin: 0; border-block: 1px solid var(--forest); }
.partner-economics dl div { display: flex; justify-content: space-between; gap: 20px; padding: 16px 3px; border-top: 1px solid rgba(23,54,47,.35); }
.partner-economics dl div:first-child { border: 0; }
.partner-economics dt { color: var(--muted); }
.partner-economics dd { margin: 0; color: var(--forest); font-family: var(--display); font-size: 1.7rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.partner-flow { padding: clamp(80px,9vw,130px) clamp(18px,7vw,110px); }
.partner-flow > h2 { max-width: 11ch; }
.partner-flow ol { display: grid; grid-template-columns: repeat(4,1fr); margin: 50px 0 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.partner-flow li { position: relative; padding: 26px clamp(16px,2.4vw,34px); border-right: 1px solid var(--line); }
.partner-flow li:last-child { border: 0; }
.partner-flow li > span { position: absolute; top: 12px; right: 12px; color: var(--line); font-family: var(--display); font-size: 2.2rem; font-weight: 800; }
.partner-flow li > svg { width: 34px; height: 34px; margin: 24px 0 42px; color: var(--amber-deep); }
.partner-flow h3 { margin-bottom: 7px; color: var(--forest); font-family: var(--display); font-size: 1.8rem; }
.partner-flow li p { color: var(--muted); font-size: .9rem; }

.partner-form { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; padding: clamp(24px,4vw,46px); background: var(--paper); color: var(--ink); box-shadow: 14px 14px 0 rgba(7,25,20,.36); }
.partner-form label { color: var(--forest); font-size: .8rem; font-weight: 750; }
.partner-form label > span { color: var(--muted); font-weight: 550; }
.partner-form input, .partner-form select, .partner-form textarea { margin-top: 6px; border-radius: 0; background: rgba(255,255,255,.55); }
.partner-form .span-two { grid-column: 1 / -1; }
.partner-form .consent-row { display: flex; align-items: flex-start; gap: 9px; color: var(--muted); font-weight: 550; }
.partner-form .consent-row input { width: 18px; min-height: 18px; margin: 2px 0 0; }
.application-confirmation { padding: clamp(32px,5vw,60px); background: var(--paper); color: var(--forest); box-shadow: 14px 14px 0 rgba(7,25,20,.36); }
.application-confirmation > svg { width: 52px; height: 52px; color: var(--amber-deep); }
.application-confirmation h3 { margin: 18px 0 8px; font-family: var(--display); font-size: 3.2rem; line-height: .9; }
.application-confirmation p { color: var(--muted); }
.application-confirmation a { display: inline-flex; align-items: center; gap: 7px; font-weight: 800; }

/* Founding vendor join surface */

.invite-note { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 26px; color: var(--forest); font-size: .9rem; font-weight: 700; }
.invite-note svg { width: 19px; color: var(--amber-deep); }
.join-trust { display: flex; flex-wrap: wrap; gap: 9px 22px; margin: 30px 0 0; padding: 18px 0 0; border-top: 1px solid var(--line); color: var(--forest); font-size: .84rem; font-weight: 650; list-style: none; }
.join-trust li::before { content: ""; display: inline-block; width: 6px; height: 6px; margin: 0 8px 2px 0; border-radius: 50%; background: var(--amber-deep); }
.perk-console { position: relative; padding: clamp(26px,4vw,42px); overflow: hidden; border: 1px solid rgba(255,255,255,.17); border-radius: 16px; background: var(--forest) url('/assets/materials/enamel-patina.png') center/cover; color: #fff; box-shadow: var(--soft-shadow); }
.perk-console::after { content: ""; position: absolute; inset: 8px; border: 1px solid rgba(255,255,255,.14); border-radius: 11px; pointer-events: none; }
.perk-console-head, .perk-console-title, .perk-price, .perk-console dl div { position: relative; z-index: 1; }
.perk-console-head { display: flex; justify-content: space-between; gap: 18px; padding-bottom: 15px; border-bottom: 1px solid rgba(255,255,255,.24); color: #d2dfd6; font-size: .74rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.perk-console-head strong { color: #ffd178; }
.perk-console-title { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 28px 0 22px; }
.perk-console-title small { color: #cbd9cf; }
.perk-console-title h2 { margin: 4px 0 0; color: #fff; font-family: var(--display); font-size: clamp(2.2rem,4vw,3.5rem); font-weight: 600; line-height: .95; }
.perk-toggle { display: flex; align-items: center; justify-content: flex-end; width: 58px; height: 32px; padding: 3px; border-radius: 999px; background: var(--amber); }
.perk-toggle i { display: block; width: 26px; height: 26px; border-radius: 50%; background: var(--forest); }
.perk-price { display: flex; align-items: center; gap: 18px; padding: 20px 0; border-block: 1px solid rgba(255,255,255,.24); }
.perk-price strong { color: #ffd178; font-family: var(--display); font-size: clamp(4rem,7vw,5.8rem); font-weight: 600; font-variant-numeric: tabular-nums; line-height: .8; }
.perk-price span { color: #e3ebe5; line-height: 1.4; }
.perk-console dl { margin: 8px 0 0; }
.perk-console dl div { display: flex; justify-content: space-between; gap: 20px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,.19); }
.perk-console dt { color: #cbd9cf; }.perk-console dd { margin: 0; font-weight: 700; }
.perk-console > p { position: relative; z-index: 1; margin: 18px 0 0; color: #cbd9cf; font-size: .78rem; }
.founding-window { padding: clamp(62px,8vw,96px) 0; background: var(--sage); }
.founding-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(360px,.75fr); gap: clamp(48px,8vw,120px); align-items: end; padding-inline: clamp(20px,6vw,92px); }
.founding-grid h2, .founder-copy h2 { max-width: 12ch; color: var(--forest); font-family: var(--display); font-size: clamp(2.8rem,5vw,4.8rem); font-weight: 600; letter-spacing: -.03em; line-height: .98; }
.founding-grid p, .founder-copy p { max-width: 62ch; color: var(--muted); }
.founding-grid dl { margin: 0; border-block: 1px solid var(--forest); }
.founding-grid dl div { display: flex; justify-content: space-between; gap: 22px; padding: 15px 2px; border-top: 1px solid rgba(18,59,46,.28); }
.founding-grid dl div:first-child { border: 0; }.founding-grid dd { margin: 0; color: var(--forest); font-family: var(--display); font-size: 1.55rem; font-weight: 600; }

.join-math { display: grid; grid-template-columns: 1.35fr repeat(3,1fr); margin-top: 48px; border-block: 1px solid var(--forest); }
.join-math > div { min-height: 142px; padding: 22px; border-right: 1px solid var(--line); }
.join-math > div:last-child { border: 0; }.join-math span, .join-math strong, .join-math small { display: block; }
.join-math span { color: var(--muted); font-size: .8rem; }.join-math strong { margin-top: 12px; color: var(--forest); font-family: var(--display); font-size: 2.7rem; font-weight: 600; font-variant-numeric: tabular-nums; line-height: 1; }.join-math small { color: var(--muted); }
.join-math-total { background: var(--forest); }.join-math-total span { color: #cbd9cf; }.join-math-total strong { color: #ffd178; font-size: 3.8rem; }

.founder-story { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(400px,.95fr); min-height: 680px; background: var(--paper-deep); }
.founder-image { min-height: 620px; overflow: hidden; }.founder-image img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.82) sepia(.08); }
.founder-copy { align-self: center; padding: clamp(54px,7vw,108px); }.founder-copy .text-action { margin-top: 20px; }
.apply-resources { display: grid; gap: 8px; margin-top: 26px; }.apply-resources a { display: inline-flex; align-items: center; gap: 9px; color: #fff; font-weight: 700; }.apply-resources svg { width: 18px; color: var(--amber); }
.join-form { border-radius: 16px; box-shadow: var(--soft-shadow); }
#vendor-form, #host-form { scroll-margin-top: 96px; }

/* Host partner surface */
.host-public-hero { display: grid; grid-template-columns: minmax(0,1.12fr) minmax(430px,.88fr); min-height: calc(100svh - 76px); background: var(--paper-deep); }
.host-hero-image { min-height: calc(100svh - 76px); }
.host-hero-image img { object-position: 62% center; }
.host-hero-copy { align-self: center; padding: clamp(48px,6vw,92px); }
.host-hero-copy h1 { max-width: 9ch; }
.host-hero-facts { display: grid; grid-template-columns: repeat(3,1fr); margin: 44px 0 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.host-hero-facts li { padding: 16px 12px; border-right: 1px solid var(--line); }
.host-hero-facts li:first-child { padding-left: 0; }
.host-hero-facts li:last-child { border: 0; }
.host-hero-facts strong, .host-hero-facts span { display: block; }
.host-hero-facts strong { color: var(--forest); font-family: var(--display); font-size: 2.3rem; line-height: 1; }
.host-hero-facts span { color: var(--muted); font-size: .71rem; text-transform: uppercase; }
.host-kit { display: grid; grid-template-columns: minmax(0,.8fr) minmax(480px,1.2fr); gap: clamp(55px,9vw,130px); align-items: center; padding: clamp(82px,10vw,145px) clamp(18px,7vw,110px); }
.host-kit h2 { max-width: 10ch; }
.host-kit ol { display: grid; margin: 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.host-kit li { display: grid; grid-template-columns: 46px 1fr; gap: 7px 17px; padding: 22px 0; border-top: 1px solid var(--line); }
.host-kit li:first-child { border: 0; }
.host-kit li svg { grid-row: 1 / 3; width: 34px; height: 34px; color: var(--amber-deep); }
.host-kit li strong { color: var(--forest); font-family: var(--display); font-size: 1.7rem; }
.host-kit li span { color: var(--muted); }
.host-ledger { display: grid; grid-template-columns: minmax(480px,1.1fr) minmax(300px,.9fr); gap: clamp(55px,9vw,140px); align-items: center; padding: clamp(82px,10vw,145px) clamp(18px,7vw,110px); background: var(--sage); }
.ledger-board { padding: 28px; border: 1px solid #08251d; border-radius: 14px; background: var(--forest) url('/assets/materials/enamel-patina.png') center/cover; color: #fff; box-shadow: var(--soft-shadow); transform: rotate(-1deg); }
.ledger-board header, .ledger-board > div, .ledger-board footer { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 20px; padding: 15px 0; border-bottom: 1px solid rgba(255,255,255,.22); }
.ledger-board header { padding-top: 0; color: #cbd9cf; font-size: .72rem; text-transform: uppercase; }
.ledger-board header strong { grid-column: 2 / 4; }
.ledger-board > div span:nth-child(2) { color: #ffd178; font-size: .72rem; font-weight: 750; text-transform: uppercase; }
.ledger-board > div strong, .ledger-board footer strong { font-variant-numeric: tabular-nums; }
.ledger-board footer { border: 0; font-family: var(--display); font-size: 1.8rem; }
.ledger-board footer strong { grid-column: 3; }
.ledger-copy h2 { max-width: 9ch; }
.legal-shell { width: min(100% - 36px, 840px); min-height: 70vh; margin: 0 auto; padding: clamp(70px,10vw,130px) 0; }
.legal-shell h1 { color: var(--forest); font-family: var(--display); font-size: clamp(4.5rem,10vw,7.5rem); line-height: .8; }
.legal-shell h2 { margin-top: 42px; color: var(--forest); font-family: var(--display); font-size: 2rem; }
.legal-shell p { color: var(--muted); font-size: 1.05rem; }
.legal-note { margin-top: 48px; padding: 18px 0; border-block: 1px solid var(--line); }
.auth-notice { padding: 12px 0; border-block: 1px solid var(--amber-deep); color: var(--forest); }

@media (max-width: 1060px) {
  .guest-public-hero { grid-template-columns: 1fr; min-height: auto; padding: 64px 24px; }
  .guest-hero-image { position: absolute; inset: 0; min-height: 100%; }
  .guest-hero-plate { grid-column: 1; width: min(650px, calc(100% - 10vw)); margin: 0; }
  .conditions-ticket { right: -18vw; }
  .guest-promise { grid-template-columns: 1fr; }.guest-promise > p { padding: 24px 0; border-right: 0; border-bottom: 1px solid rgba(23,54,47,.4); }
  .guide-preview, .partner-economics, .host-kit, .host-ledger { grid-template-columns: 1fr; }
  .guide-preview-copy, .partner-economics > div, .host-kit > div, .ledger-copy { max-width: 700px; }
  .host-public-hero { grid-template-columns: 1fr 1fr; }
  .commission-flag { left: calc(50% - 70px); }
  .partner-flow ol { grid-template-columns: repeat(2,1fr); }.partner-flow li:nth-child(2) { border-right: 0; }.partner-flow li:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
}

@media (max-width: 780px) {
  .public-header { min-height: 66px; }
  .public-header .brand { font-size: 1.5rem; }.public-header .brand img { width: 35px; height: 39px; }
  .public-menu { display: inline-flex; }
  .public-header nav { position: absolute; top: 100%; left: 0; right: 0; display: none; align-items: stretch; padding: 12px 18px 20px; border-bottom: 1px solid var(--line); background: var(--paper); box-shadow: 0 14px 24px rgba(23,54,47,.14); }
  .public-header nav.is-open { display: grid; }
  .public-header nav a { padding: 11px 0; }
  .public-login { justify-content: center; margin-top: 5px; }
  .guest-public-hero { min-height: calc(100svh - 66px); padding: 28px 18px; align-items: end; }
  .guest-hero-image img { object-position: 66% center; }
  .guest-hero-plate { width: 100%; align-self: end; padding: 26px 22px; box-shadow: 8px 8px 0 rgba(9,29,23,.32); }
  .guest-hero-plate h1 { font-size: clamp(4rem,17vw,5.2rem); }
  .conditions-ticket { position: static; width: 100%; margin-top: 34px; transform: none; }
  .guest-promise ul { grid-template-columns: 1fr; }.guest-promise li { border-right: 0; border-bottom: 1px solid rgba(23,54,47,.4); padding-inline: 0; }.guest-promise li:last-child { border-bottom: 0; }
  .guide-preview { grid-template-columns: 1fr; padding-block: 74px; }.guide-preview-board { padding: 18px; transform: none; }.guide-preview-board::before { width: 70px; height: 70px; }.guide-preview-copy h2, .partner-fork h2, .partner-economics h2, .partner-flow > h2, .host-kit h2, .ledger-copy h2 { font-size: clamp(3.3rem,14vw,4.6rem); }
  .partner-fork > div { grid-template-columns: 1fr; }.partner-fork a:first-child { border-right: 0; border-bottom: 1px solid var(--forest); }.partner-fork a { padding-inline: 0; }
  .public-footer { grid-template-columns: 1fr; }.public-footer nav { flex-wrap: wrap; }
  .host-public-hero { grid-template-columns: 1fr; }
  .host-hero-copy { padding: 54px 20px 64px; }
  .host-hero-copy h1 { max-width: 12ch; font-size: clamp(3.7rem,15vw,4.5rem); }
  .host-hero-copy { grid-row: 1; }
  .vendor-hero-image, .host-hero-image { grid-row: 2; min-height: 48svh; }
  .vendor-hero-image img { object-position: 40% center; }
  .vendor-hero-image .image-caption { right: auto; left: 0; }
  .commission-flag { position: relative; grid-column: 1; grid-row: 2; align-self: end; justify-self: end; left: auto; top: auto; right: auto; bottom: auto; width: 225px; margin: 0 18px 32px 0; }
  .partner-economics, .partner-flow, .host-kit, .host-ledger { padding-block: 74px; }
  .partner-flow ol { grid-template-columns: 1fr; }.partner-flow li { border-right: 0; border-bottom: 1px solid var(--line); }.partner-flow li:nth-child(2) { border-right: 0; }.partner-flow li:last-child { border-bottom: 0; }

  .partner-form { grid-template-columns: 1fr; padding: 24px 18px; box-shadow: 7px 7px 0 rgba(7,25,20,.36); }.partner-form .span-two { grid-column: auto; }
  .host-hero-facts { grid-template-columns: 1fr; }.host-hero-facts li { display: flex; align-items: baseline; gap: 11px; padding: 11px 0; border-right: 0; border-bottom: 1px solid var(--line); }.host-hero-facts li:last-child { border: 0; }
  .ledger-board { padding: 20px 16px; transform: none; }.ledger-board header, .ledger-board > div, .ledger-board footer { gap: 9px; }.ledger-board > div span:nth-child(2) { display: none; }
}

@media (max-width: 430px) {
  .public-actions { align-items: stretch; flex-direction: column; }.public-actions .text-action { justify-content: center; min-height: 44px; }
  .guest-public-hero { min-height: auto; padding: 0 0 34px; background: var(--paper-deep); }
  .guest-hero-image { position: relative; grid-row: 1; min-height: 32svh; }
  .guest-hero-image img { object-position: 68% center; }
  .guest-hero-plate { grid-row: 2; align-self: start; width: auto; margin: -42px 18px 0; padding: 25px 21px; }
  .guest-hero-plate h1 { font-size: clamp(3.6rem, 16vw, 4.5rem); }
  .guest-hero-plate::before { display: none; }.guest-hero-plate .eyebrow { margin-top: 0; }
  .preview-weather { grid-template-columns: 42px auto 1fr; }.preview-weather strong { font-size: 3.3rem; }.preview-best { padding: 21px 17px; }.preview-best h3 { font-size: 2.35rem; }
  .commission-flag { top: auto; right: auto; bottom: auto; width: 205px; margin-right: 12px; }.commission-flag strong { font-size: 4.2rem; }
  .host-hero-copy { padding-top: 46px; }
}

/* Consumer marketplace guest experience */
.guest-page {
  --market-ink: #000f2e;
  --market-subtle: #5f665f;
  --market-line: #cfc8b8;
  --market-accent: #b93f38;
  --market-soft: #f7f3e9;
  background: #ffffff;
  color: var(--market-ink);
  font-size: 15px;
  line-height: 1.4;
}
.guest-page ::selection { background: #f5d4d1; color: #111111; }
.guest-page * { scrollbar-color: #b0b0b0 transparent; }
.guest-page :focus-visible { outline-color: var(--market-ink); outline-offset: 2px; }
.guest-page h1, .guest-page h2, .guest-page h3 { color: var(--market-ink); font-family: var(--ui); letter-spacing: -.025em; }
.market-header { position: sticky; z-index: 80; top: 0; border-bottom: 1px solid var(--market-line); background: rgba(255,255,255,.97); }
.market-header-row { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 28px; width: min(100% - 64px, 1344px); min-height: 88px; margin-inline: auto; }
.market-brand { display: inline-flex; align-items: center; justify-self: start; gap: 9px; color: var(--pine); font-size: 1.08rem; font-weight: 700; text-decoration: none; }
.market-brand img { width: 31px; height: 35px; }
.market-search { display: grid; grid-template-columns: 1.2fr 1fr 1fr 48px; align-items: center; min-width: 480px; min-height: 64px; padding: 6px; border: 1px solid #d8d8d8; border-radius: 999px; background: #ffffff; box-shadow: 0 3px 12px rgba(0,0,0,.1); transition: box-shadow 180ms ease-out, transform 180ms ease-out; }
.market-search:hover { box-shadow: 0 5px 18px rgba(0,0,0,.14); transform: translateY(-1px); }
.market-search > button { display: grid; min-width: 0; min-height: 44px; padding: 3px 18px; border: 0; border-left: 1px solid #e5e5e5; background: transparent; text-align: left; cursor: pointer; }
.market-search > button:first-child { border: 0; }
.market-search span, .market-search strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.market-search span { color: var(--market-subtle); font-size: .7rem; }
.market-search strong { color: var(--market-ink); font-size: .82rem; font-weight: 600; }
.market-search .market-search-submit { display: grid; place-items: center; align-self: center; width: 46px; min-height: 46px; padding: 0; border: 0; border-radius: 50%; background: var(--market-accent); color: #ffffff; }
.market-search-submit svg { width: 19px; }
.market-header-actions { display: flex; align-items: center; justify-self: end; gap: 12px; }
.current-location { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; padding: 0 14px; border-radius: 999px; font-size: .78rem; font-weight: 600; }
.current-location svg { width: 17px; color: var(--amber-2); }
.header-icon, .detail-header button { display: grid; place-items: center; min-width: 44px; min-height: 44px; border: 1px solid var(--market-line); border-radius: 50%; background: #ffffff; cursor: pointer; }
.header-icon svg, .detail-header button svg { width: 19px; }
.market-filters { display: flex; gap: 10px; width: min(100% - 64px, 1344px); margin-inline: auto; padding: 13px 0 14px; overflow-x: auto; scrollbar-width: none; }
.market-filters::-webkit-scrollbar { display: none; }
.filter-button { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 7px; min-height: 40px; padding: 0 16px; border: 1px solid var(--market-line); border-radius: 999px; background: #ffffff; color: var(--market-ink); font-size: .78rem; font-weight: 500; cursor: pointer; transition: border-color 160ms ease-out, background 160ms ease-out, transform 160ms ease-out; }
.filter-button svg { width: 15px; }
.filter-button:hover { border-color: #8c8c8c; transform: translateY(-1px); }
.filter-button.is-active { border-color: var(--market-ink); background: var(--market-ink); color: #ffffff; }
.market-main { width: min(100% - 64px, 1344px); margin-inline: auto; padding: 44px 0 96px; }
.market-intro { display: flex; align-items: end; justify-content: space-between; gap: 40px; margin-bottom: 42px; }
.market-intro h1 { margin-bottom: 8px; font-size: clamp(2.3rem, 3.7vw, 3.9rem); font-weight: 650; line-height: 1.02; }
.market-intro > div:first-child > p { margin: 0; color: var(--market-subtle); font-size: 1rem; }
.weather-note { display: grid; grid-template-columns: 34px minmax(0, 270px); align-items: center; gap: 12px; padding: 14px 17px; border-radius: 14px; background: var(--market-soft); }
.weather-note > svg { width: 28px; height: 28px; color: var(--amber-2); }
.weather-note span, .weather-note strong { display: block; }
.weather-note span { color: var(--market-subtle); font-size: .75rem; }
.weather-note strong { margin-bottom: 2px; color: var(--market-ink); font-size: .82rem; }
.market-status { min-height: 20px; margin: -24px 0 8px; color: var(--market-subtle); font-size: .74rem; }
/* .experience-card is still the live postcard-grid article wrapper (see guest.ejs); the rest of
   this block styled a horizontal carousel rail (.experience-shelf/.shelf-heading/.experience-rail)
   that no longer exists in the markup (DESIGN.md: "the former horizontal category rail is
   intentionally removed"). Its dead, more-specific ".browse-all > p" rule was also winning the
   cascade over .guide-orient's 16px rule in guest-marketplace.css, so it is removed rather than
   overridden. */
.experience-card { isolation: isolate; position: relative; min-width: 0; scroll-snap-align: start; }
.experience-card[hidden] { display: none; }
.experience-card-photos img { flex: 0 0 100%; width: 100%; height: 100%; object-fit: cover; scroll-snap-align: start; transition: filter 350ms ease-out; }
.experience-card:hover .experience-card-photos img { filter: saturate(1.04); }
.market-badge { position: absolute; z-index: 3; top: 12px; left: 12px; padding: 7px 10px; border-radius: 999px; background: rgba(255,255,255,.94); color: var(--market-ink); font-size: .69rem; font-weight: 600; line-height: 1; box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.save-button { position: absolute; z-index: 5; top: 8px; right: 8px; display: grid; place-items: center; width: 40px; height: 40px; border: 0; border-radius: 50%; background: transparent; color: #ffffff; filter: drop-shadow(0 1px 2px rgba(0,0,0,.65)); cursor: pointer; }
.save-button svg { width: 24px; fill: rgba(0,0,0,.22); stroke-width: 1.8; }
.save-button.is-saved svg, .detail-header [data-save].is-saved svg { fill: var(--market-accent); color: var(--market-accent); }
.card-photo-arrow { position: absolute; z-index: 5; top: 50%; display: grid; place-items: center; width: 34px; height: 34px; border: 0; border-radius: 50%; background: rgba(255,255,255,.94); color: var(--market-ink); box-shadow: 0 2px 8px rgba(0,0,0,.16); opacity: 0; cursor: pointer; transform: translateY(-50%); transition: opacity 160ms ease-out, background 160ms ease-out; }
.card-photo-arrow:hover { background: #ffffff; }
.card-photo-arrow:disabled { opacity: 0; pointer-events: none; }
.card-photo-back { left: 9px; }
.card-photo-next { right: 9px; }
.experience-card-photo:hover .card-photo-arrow:not(:disabled), .card-photo-arrow:focus-visible { opacity: 1; }
.card-photo-arrow svg { width: 17px; }
.card-photo-count { position: absolute; z-index: 4; right: 11px; bottom: 10px; padding: 5px 8px; border-radius: 999px; background: rgba(20,20,20,.72); color: #ffffff; font-size: .63rem; font-variant-numeric: tabular-nums; line-height: 1; backdrop-filter: blur(5px); }
.experience-card-copy { position: relative; z-index: 3; padding-top: 10px; }
.experience-card-copy .card-vendor { overflow: hidden; margin-bottom: 3px; color: #595959; font-size: .68rem; text-overflow: ellipsis; white-space: nowrap; }
.experience-card-title { display: block; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
.experience-card-copy h3 { min-height: 2.45em; margin-bottom: 3px; font-size: .94rem; font-weight: 550; line-height: 1.22; }
.experience-card-copy p { margin: 1px 0; color: var(--market-subtle); font-size: .76rem; line-height: 1.33; }
.experience-card-copy p strong { color: var(--market-ink); font-weight: 550; }
.experience-card-copy p s { color: var(--market-subtle); }
.experience-card-copy small { display: block; margin-top: 2px; color: #595959; font-size: .68rem; }
.experience-card-copy .card-offer-terms { margin-top: 7px; color: #595959; line-height: 1.35; }
.card-rating { color: var(--market-ink); white-space: nowrap; }
.browse-all { margin-top: 72px; padding-top: 54px; border-top: 1px solid var(--market-line); }
.browse-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 38px 24px; margin-top: 20px; }
.market-disclosure { display: grid; grid-template-columns: 22px 1fr; gap: 12px; max-width: 760px; margin: 72px auto 0; padding: 22px 0; border-block: 1px solid var(--market-line); }
.market-disclosure svg { width: 19px; }
.market-disclosure p { margin: 0; color: var(--market-subtle); font-size: .77rem; }
.market-disclosure strong { color: var(--market-ink); }
.market-bottom-nav { display: none; }

body.detail-is-open { background: #ffffff; }
.detail-is-open .market-header, .detail-is-open .market-main, .detail-is-open .market-bottom-nav { display: none; }
.experience-detail { min-height: 100vh; background: #ffffff; }
.detail-header { position: sticky; z-index: 90; top: 0; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; min-height: 78px; padding: 0 max(32px, calc((100% - 1200px) / 2)); border-bottom: 1px solid var(--market-line); background: rgba(255,255,255,.97); }
.detail-header > p { margin: 0; color: var(--market-subtle); font-size: .8rem; }
.detail-header > div { display: flex; justify-self: end; gap: 10px; }
.detail-header .detail-back { display: flex; justify-self: start; gap: 9px; width: auto; padding: 0 15px; border-radius: 999px; }
.detail-header .detail-back span { font-size: .78rem; font-weight: 600; }
.detail-shell { width: min(100% - 64px, 1200px); margin-inline: auto; padding: 30px 0 100px; }
.detail-gallery { position: relative; height: min(56vw, 560px); overflow: hidden; border-radius: 16px; background: #eeeeee; }
.detail-gallery-track { display: flex; width: 100%; height: 100%; overflow-x: auto; overscroll-behavior-inline: contain; scroll-behavior: smooth; scroll-snap-type: x mandatory; scrollbar-width: none; }
.detail-gallery-track::-webkit-scrollbar { display: none; }
.detail-gallery-slide { flex: 0 0 100%; height: 100%; margin: 0; scroll-snap-align: start; }
.detail-gallery-slide img { width: 100%; height: 100%; object-fit: cover; }
.detail-gallery-arrow { position: absolute; z-index: 3; top: 50%; display: grid; place-items: center; width: 46px; height: 46px; border: 0; border-radius: 50%; background: rgba(255,255,255,.95); color: var(--market-ink); box-shadow: 0 2px 10px rgba(0,0,0,.17); cursor: pointer; transform: translateY(-50%); }
.detail-gallery-arrow:disabled { opacity: .35; cursor: default; }
.detail-gallery-arrow svg { width: 20px; }
.detail-gallery-back { left: 18px; }
.detail-gallery-next { right: 18px; }
.detail-gallery-footer { position: absolute; z-index: 3; right: 18px; bottom: 18px; left: 18px; display: flex; align-items: center; justify-content: space-between; pointer-events: none; }
.detail-gallery-footer > span { padding: 8px 11px; border-radius: 999px; background: rgba(20,20,20,.76); color: #ffffff; font-size: .7rem; font-variant-numeric: tabular-nums; backdrop-filter: blur(5px); }
.detail-gallery-dots { display: flex; gap: 5px; padding: 8px 10px; border-radius: 999px; background: rgba(20,20,20,.58); backdrop-filter: blur(5px); }
.detail-gallery-dots span { width: 6px; height: 6px; border-radius: 50%; background: rgba(255,255,255,.55); }
.detail-gallery-dots span.is-active { background: #ffffff; transform: scale(1.25); }
.detail-layout { display: grid; grid-template-columns: minmax(0, 720px) 340px; justify-content: space-between; gap: 72px; padding-top: 40px; }
.detail-content > section { padding: 32px 0; border-bottom: 1px solid var(--market-line); }
.detail-content > section:first-child { padding-top: 0; }
.detail-title-block > p:first-child { margin-bottom: 8px; color: var(--market-subtle); font-size: .8rem; }
.detail-title-block h1 { max-width: 16ch; margin-bottom: 14px; font-size: clamp(2.35rem, 4.8vw, 4.5rem); font-weight: 650; line-height: .98; }
.detail-title-block > p:nth-of-type(2) { max-width: 62ch; color: var(--market-subtle); font-size: 1rem; line-height: 1.55; }
.detail-rating { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 18px; font-size: .82rem; }
.detail-rating strong { font-size: .9rem; }
.google-rating-label { padding: 5px 8px; border-radius: 6px; background: var(--market-soft); color: var(--market-subtle); font-size: .68rem; }
.detail-offer-callout { display: grid; grid-template-columns: 24px 1fr; gap: 12px; margin-top: 22px; padding: 16px; border-radius: 14px; background: var(--market-soft); }
.detail-offer-callout[hidden] { display: none; }
.detail-offer-callout svg { width: 20px; color: var(--market-accent); }
.detail-offer-callout strong { display: block; margin-bottom: 3px; font-size: .88rem; }
.detail-offer-callout p { margin: 0; color: var(--market-subtle); font-size: .75rem; line-height: 1.4; }
.detail-host { display: flex; align-items: center; gap: 14px; }
.host-avatar, .operator-avatar { display: grid; flex: 0 0 auto; place-items: center; width: 54px; height: 54px; border-radius: 50%; background: var(--pine); color: #ffffff; font-size: 1.15rem; font-weight: 650; }
.detail-host h2, .operator-card h3 { margin-bottom: 2px; font-size: 1rem; }
.detail-host p, .operator-card p { margin: 0; color: var(--market-subtle); font-size: .8rem; }
.detail-highlights { display: grid; gap: 22px; }
.detail-highlights article, .things-to-know article { display: grid; grid-template-columns: 28px 1fr; gap: 14px; }
.detail-highlights svg, .things-to-know svg { width: 22px; }
.detail-highlights h3, .things-to-know h3 { margin-bottom: 2px; font-size: .92rem; }
.detail-highlights p, .things-to-know p { margin: 0; color: var(--market-subtle); font-size: .8rem; }
.detail-section > h2 { margin-bottom: 24px; font-size: 1.7rem; font-weight: 650; }
.detail-itinerary { display: grid; gap: 0; }
.detail-itinerary article { position: relative; display: grid; grid-template-columns: 44px 1fr; gap: 14px; padding-bottom: 26px; }
.detail-itinerary article:not(:last-child)::after { content: ""; position: absolute; top: 32px; bottom: 2px; left: 15px; width: 1px; background: var(--market-line); }
.detail-itinerary article > span { display: grid; z-index: 1; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--market-soft); font-size: .76rem; font-weight: 650; }
.detail-itinerary h3 { margin-bottom: 4px; font-size: .94rem; }
.detail-itinerary p { margin: 0; color: var(--market-subtle); font-size: .84rem; line-height: 1.5; }
.google-review-card { display: grid; grid-template-columns: 74px 1fr; gap: 20px; padding: 24px; border-radius: 14px; background: var(--market-soft); }
.google-wordmark { align-self: center; color: #4285f4; font-size: 1.1rem; font-weight: 650; }
.google-review-card strong { font-size: .9rem; }
.google-review-card p { margin: 5px 0 0; color: var(--market-subtle); font-size: .79rem; line-height: 1.5; }
.operator-card { display: flex; align-items: center; gap: 16px; }
.things-to-know { display: grid; gap: 22px; }
.things-to-know h2 { margin-bottom: 2px; }
.detail-booking-card { position: sticky; top: 112px; align-self: start; padding: 24px; border-radius: 16px; background: #ffffff; box-shadow: 0 2px 4px rgba(0,0,0,.08), 0 12px 30px rgba(0,0,0,.11); }
.detail-price { display: flex; align-items: baseline; gap: 5px; }
.detail-price span { font-size: .78rem; }
.detail-price strong { font-size: 1.25rem; }
.detail-price small { color: var(--market-subtle); }
.detail-price s { margin-left: 3px; color: var(--market-subtle); font-size: .78rem; }
.detail-booking-rating { display: flex; gap: 7px; margin: 5px 0 20px; color: var(--market-subtle); font-size: .72rem; }
.detail-date-button, .detail-guests-button { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 56px; padding: 0 14px; border: 1px solid var(--market-line); background: #ffffff; cursor: pointer; }
.detail-date-button { border-radius: 11px 11px 0 0; }
.detail-guests-button { margin-top: -1px; border-radius: 0 0 11px 11px; }
.detail-date-button span, .detail-guests-button span { color: var(--market-subtle); font-size: .73rem; }
.detail-date-button strong, .detail-guests-button strong { font-size: .78rem; }
.reserve-button { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 50px; margin-top: 16px; border: 0; border-radius: 10px; background: var(--market-accent); color: #ffffff; font-weight: 600; cursor: pointer; }
.reserve-button:hover { background: #b73731; }
.reserve-button svg { width: 17px; }
.detail-booking-card > p { margin: 12px 0 0; color: var(--market-subtle); font-size: .7rem; text-align: center; }
.mobile-reserve-bar { display: none; }
.guest-page .booking-dialog { max-width: 480px; padding: 32px; border: 0; border-radius: var(--radius); background: #ffffff; color: var(--market-ink); box-shadow: var(--shadow-modal); }
.guest-page .booking-dialog::backdrop { background: rgba(0,0,0,.45); backdrop-filter: blur(2px); }
.guest-page .booking-dialog h2 { font-size: var(--fs-25); }
.guest-page .booking-dialog > p { color: var(--market-subtle); }
.promo-line { display: flex; align-items: center; justify-content: space-between; margin: 20px 0; padding: 13px 14px; border-radius: 10px; background: var(--market-soft); font-size: .76rem; }
.promo-line .promo-copy { display: inline-flex; align-items: center; gap: 7px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.guest-page .booking-dialog .primary-action { background: var(--market-accent); color: #ffffff; }
.selection-dialog { width: min(calc(100% - 32px), 560px); padding: 30px; border: 0; border-radius: var(--radius); background: #ffffff; color: var(--market-ink); box-shadow: var(--shadow-modal); }
.selection-dialog::backdrop { background: rgba(0,0,0,.42); backdrop-filter: blur(2px); }
.selection-dialog h2 { margin-bottom: 7px; font-size: var(--fs-31); }
.selection-dialog > p { margin-bottom: 24px; color: var(--market-subtle); }
.selection-close { position: absolute; top: 20px; right: 20px; display: grid; place-items: center; width: 40px; height: 40px; border: 0; border-radius: 50%; background: var(--market-soft); cursor: pointer; }
.selection-close svg { width: 18px; }
.selection-dialog form { display: grid; gap: 14px; }
.selection-dialog form > label { display: grid; gap: 6px; color: var(--market-ink); font-size: var(--fs-13); font-weight: 600; }
.selection-dialog input, .selection-dialog select { width: 100%; min-height: 50px; padding: 0 13px; border: 1px solid var(--market-line); border-radius: var(--radius); background: #ffffff; color: var(--market-ink); }
.selection-apply { min-height: 50px; margin-top: 4px; border: 0; border-radius: var(--radius); background: var(--market-accent); color: #ffffff; font-weight: 600; cursor: pointer; }
.availability-dialog fieldset { display: grid; gap: 8px; margin: 0; padding: 0; border: 0; }
.availability-dialog legend { margin-bottom: 8px; font-size: .76rem; font-weight: 600; }
.date-choice { display: grid; grid-template-columns: 22px 1fr; align-items: center; gap: 10px; min-height: 62px; padding: 10px 13px; border: 1px solid var(--market-line); border-radius: 10px; cursor: pointer; }
.date-choice:has(input:checked) { border-color: var(--market-ink); background: var(--market-soft); }
.date-choice input { width: 17px; min-height: 17px; }
.date-choice span, .date-choice strong, .date-choice small { display: block; }
.date-choice strong { font-size: .82rem; }
.date-choice small { color: var(--market-subtle); font-size: .72rem; font-weight: 400; }

@media (max-width: 1180px) {
  .market-header-row, .market-filters, .market-main { width: min(100% - 40px, 1080px); }
  .experience-rail { grid-auto-columns: calc((100% - 72px) / 4); }
  .browse-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .detail-layout { grid-template-columns: minmax(0, 650px) 320px; gap: 42px; }
}

@media (max-width: 860px) {
  .market-header-row { grid-template-columns: auto 1fr auto; gap: 14px; min-height: 76px; }
  .market-brand span { display: none; }
  .market-search { min-width: 0; grid-template-columns: 1fr 44px; min-height: 54px; }
  .market-search > button { display: none; }
  .market-search > button:first-child { display: grid; padding-inline: 15px; }
  .market-search .market-search-submit { display: grid; width: 42px; min-height: 42px; }
  .current-location { display: none; }
  .detail-layout { grid-template-columns: 1fr; }
  .detail-booking-card { display: none; }
  /* .mobile-reserve-bar styled the pre-postcard-viewer detail page's sticky reserve bar; it has
     no matching element in any current view (0 matches in src/views/) and is removed rather than
     tokenized, per "remove dead legacy rules rather than piling overrides." */
}

@media (max-width: 640px) {
  .guest-page { font-size: var(--fs-16); }
  .market-header { position: relative; }
  .market-header-row { grid-template-columns: 1fr; width: calc(100% - 32px); min-height: auto; padding: 18px 0 12px; }
  .market-brand, .market-header-actions { display: none; }
  .market-search { grid-template-columns: 1fr 42px; width: 100%; min-height: 56px; }
  .market-search > button:first-child span { display: none; }
  .market-search > button:first-child strong { font-size: .88rem; }
  .market-filters { width: 100%; padding: 8px 16px 14px; }
  .filter-button { min-height: 42px; padding-inline: 15px; }
  .market-main { width: 100%; padding: 26px 0 106px; }
  .market-intro { display: block; margin-bottom: 28px; padding: 0 16px; }
  .market-intro h1 { max-width: 10ch; margin-bottom: 8px; font-size: clamp(2.45rem, 12vw, 3.3rem); line-height: .98; }
  .market-intro > div:first-child > p { max-width: 34ch; font-size: .91rem; }
  .weather-note { margin-top: 18px; padding: 12px 14px; }
  .market-status { margin: -12px 16px 10px; }
  .experience-shelf { margin-bottom: 43px; }
  .shelf-heading { padding: 0 16px; }
  .shelf-heading h2 { font-size: 1.35rem; }
  .shelf-heading p { font-size: .76rem; }
  .shelf-arrows { display: none; }
  .experience-rail { grid-auto-columns: 45%; gap: 12px; padding: 0 16px; scroll-padding-inline: 16px; }
  .experience-card-photo { border-radius: 15px; }
  .card-photo-arrow { display: none; }
  .experience-card-copy h3 { min-height: 2.35em; font-size: .9rem; }
  .experience-card-copy p { font-size: .73rem; }
  .market-badge { top: 9px; left: 9px; }
  .market-badge-offer .badge-label { display: none; }
  .browse-all { margin-top: 48px; padding: 38px 16px 0; }
  .browse-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 12px; }
  .market-disclosure { margin: 58px 16px 0; }
  .market-bottom-nav { position: fixed; z-index: 70; right: 0; bottom: 0; left: 0; display: grid; grid-template-columns: repeat(4, 1fr); min-height: 68px; padding-bottom: env(safe-area-inset-bottom); border-top: 1px solid var(--market-line); background: rgba(255,255,255,.98); }
  .market-bottom-nav button, .market-bottom-nav a { display: grid; place-items: center; align-content: center; gap: 2px; min-height: 62px; border: 0; background: transparent; color: var(--market-subtle); font-size: .66rem; text-decoration: none; }
  .market-bottom-nav svg { width: 21px; }
  .market-bottom-nav .is-active { color: var(--market-accent); }
  .detail-header { grid-template-columns: 44px 1fr auto; min-height: 68px; padding: 0 14px; }
  .detail-header .detail-back { width: 44px; padding: 0; }
  .detail-header .detail-back span { display: none; }
  .detail-header > p { justify-self: center; }
  .detail-header > div { gap: 6px; }
  .detail-header > div button { border: 0; }
  .detail-shell { width: 100%; padding: 0 0 112px; }
  .detail-gallery { height: 72vw; border-radius: 0; }
  .detail-gallery-arrow { width: 40px; height: 40px; }
  .detail-gallery-back { left: 12px; }
  .detail-gallery-next { right: 12px; }
  .detail-gallery-footer { right: 14px; bottom: 12px; left: 14px; }
  .detail-layout { display: block; padding: 28px 20px 0; }
  .detail-title-block h1 { max-width: none; font-size: clamp(2.3rem, 10.5vw, 3.4rem); }
  .detail-content > section { padding: 28px 0; }
  .detail-section > h2 { font-size: 1.55rem; }
  .google-review-card { grid-template-columns: 1fr; gap: 10px; padding: 20px; }
  .mobile-reserve-bar { padding-inline: 16px; }
  .guest-page .booking-dialog { width: calc(100% - 20px); max-height: calc(100svh - 20px); margin: auto auto 10px; padding: 28px 22px; border-radius: var(--radius); }
  .selection-dialog { width: calc(100% - 16px); max-height: calc(100svh - 16px); margin: auto auto 8px; padding: 28px 20px; border-radius: var(--radius); }
}

@media (prefers-reduced-motion: reduce) {
  .experience-card-photos img, .market-search, .filter-button, .card-photo-arrow { transition: none; }
  .experience-rail, .experience-card-photos, .detail-gallery-track { scroll-behavior: auto; }
}

/* 2026 design-overhaul implementation */
.site-container { width: min(100% - 48px, 1200px); margin-inline: auto; }
.public-shell { overflow: clip; }
.public-page h1, .public-page h2, .auth-page h1, .auth-page h2, .admin-login-page h1 { color: var(--pine); font-family: var(--display); font-weight: 600; letter-spacing: -.025em; line-height: 1.05; }
.public-page h1 { max-width: 12ch; font-size: clamp(3rem, 5vw, 4rem); }
.public-page h2 { font-size: clamp(2.25rem, 3.4vw, 2.5rem); line-height: 1.1; }
.public-page h3 { font-size: clamp(1.25rem, 2vw, 1.5rem); }
.eyebrow { margin: 0 0 16px; color: var(--pine); font-size: .76rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.primary-action, .secondary-action { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 50px; padding: 12px 18px; border-radius: 8px; font-weight: 600; line-height: 1.2; text-decoration: none; transition: transform 180ms ease-out, background-color 180ms ease-out, border-color 180ms ease-out, color 180ms ease-out, box-shadow 180ms ease-out; }
.primary-action { border: 1px solid transparent; background: var(--amber); color: var(--pine); box-shadow: none; }
.primary-action:hover { background: var(--amber-hover); color: var(--pine); box-shadow: var(--soft-shadow); transform: translateY(-2px); }
.primary-action svg, .secondary-action svg, .text-action svg { width: 20px; height: 20px; stroke-width: 1.5; transition: transform 180ms ease-out; }
.primary-action:hover svg, .secondary-action:hover svg, .text-action:hover svg { transform: translateX(4px); }
.secondary-action { border: 1px solid var(--pine); background: transparent; color: var(--pine); box-shadow: none; }
.secondary-action:hover { background: var(--pine); color: var(--cream); transform: translateY(-2px); }
.secondary-action.on-dark { border-color: rgba(245,240,228,.65); color: var(--cream); }
.secondary-action.on-dark:hover { border-color: var(--cream); background: var(--cream); color: var(--pine); }
.public-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.public-header { position: sticky; z-index: 100; top: 0; display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 72px; padding: 8px max(24px, calc((100vw - 1200px) / 2)); border-bottom: 1px solid var(--line); background: rgba(245,240,228,.82); backdrop-filter: blur(12px); }
.public-header .brand { font-size: 1.35rem; }
.public-header .brand img { width: 34px; height: 38px; }
.public-call { display: inline-flex; align-items: center; gap: 8px; min-width: 44px; min-height: 44px; margin-left: auto; padding: 0 12px; border: 1px solid var(--line); border-radius: 8px; color: var(--pine); font-size: 13px; font-weight: 600; line-height: 1; text-decoration: none; transition: background-color 180ms ease-out, border-color 180ms ease-out; }
.public-call:hover { border-color: var(--pine); background: rgba(0,24,64,.06); }
.public-call svg { width: 20px; height: 20px; }
.public-header nav { display: flex; align-items: center; gap: 28px; }
.public-header nav a { position: relative; min-height: 44px; display: inline-flex; align-items: center; gap: 6px; color: var(--pine); font-size: .86rem; font-weight: 600; text-decoration: none; }
.public-header nav a[aria-current="page"]::after { content: ""; position: absolute; right: 0; bottom: 4px; left: 0; height: 2px; background: var(--amber); }
.public-header .public-login { min-height: 44px; padding: 0 14px; border: 1px solid var(--pine); border-radius: 8px; }
.public-header .public-login:hover { background: var(--pine); color: var(--cream); }
.public-menu { display: none; min-width: 44px; min-height: 44px; border: 1px solid var(--line); border-radius: 8px; background: transparent; color: var(--pine); }
.public-footer { display: grid; grid-template-columns: minmax(260px, 1fr) 160px 130px; gap: 44px; padding: 56px max(24px, calc((100vw - 1200px) / 2)) 34px; background: var(--pine-2); color: var(--cream); }
.public-footer .footer-brand p { max-width: 42ch; margin: 18px 0 8px; color: rgba(245,240,228,.78); }
.public-footer .footer-brand small { color: var(--amber); }
.public-footer nav { display: grid; align-content: start; gap: 8px; }
.public-footer nav strong { margin-bottom: 5px; font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; }
.public-footer nav a { color: rgba(245,240,228,.78); text-decoration: none; }
.public-footer nav a:hover { color: var(--cream); text-decoration: underline; }
.footer-disclosure { grid-column: 1 / -1; margin: 10px 0 0; padding-top: 20px; border-top: 1px solid rgba(245,240,228,.14); color: rgba(245,240,228,.62); font-size: .78rem; }

/* Homepage */
.home-hero { position: relative; min-height: 88vh; overflow: hidden; background: var(--pine); }
.home-hero::after { content: ""; position: absolute; inset: 0; background: rgba(232,163,61,.06); pointer-events: none; }
.home-hero-photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; filter: saturate(.9) contrast(.98); }
.home-hero-inner { position: relative; z-index: 1; display: flex; align-items: center; min-height: 88vh; padding-block: 64px; }
.home-hero-panel { width: min(100%, 560px); padding: 64px; border-radius: 16px; background: var(--pine); color: var(--cream); }
.home-hero-panel .eyebrow, .home-hero-panel h1 { color: var(--cream); }
.home-hero-panel h1 { margin-bottom: 20px; font-size: clamp(3.2rem, 5vw, 4rem); }
.home-hero-panel > p:last-of-type { max-width: 48ch; margin-bottom: 0; color: rgba(245,240,228,.82); }
.weather-chip { position: absolute; right: 0; bottom: 48px; display: grid; grid-template-columns: 10px 1fr; align-items: start; gap: 11px; max-width: 430px; padding: 16px 18px; border-radius: 12px; background: rgba(255,255,255,.85); color: var(--pine); backdrop-filter: blur(12px); box-shadow: var(--soft-shadow); }
.weather-chip strong, .weather-chip span { display: block; }
.weather-chip span { color: var(--muted); font-size: .82rem; }
.live-dot { width: 9px; height: 9px; margin-top: 7px; border-radius: 50%; background: #2c824e; box-shadow: 0 0 0 0 rgba(44,130,78,.45); animation: live-pulse 2s infinite; }
@keyframes live-pulse { 70% { box-shadow: 0 0 0 8px rgba(44,130,78,0); } 100% { box-shadow: 0 0 0 0 rgba(44,130,78,0); } }
.scroll-cue { position: absolute; bottom: 22px; left: 50%; display: flex; align-items: center; gap: 7px; color: var(--cream); font-size: .75rem; text-decoration: none; transform: translateX(-50%); }
.scroll-cue svg { width: 16px; }
.locality-bar { margin: 0; padding: 14px 24px; border-bottom: 1px solid var(--line); background: var(--cream); color: var(--pine); font-size: .84rem; font-weight: 500; text-align: center; }
.proof-strip { padding-block: 28px; border-block: 1px solid var(--line); background: var(--sage); color: var(--pine); }
.proof-strip .site-container { display: grid; grid-template-columns: repeat(3, 1fr); }
.proof-strip p { display: flex; align-items: center; gap: 12px; margin: 0; padding: 0 24px; border-right: 1px solid rgba(18,59,46,.24); }
.proof-strip p:first-child { padding-left: 0; }
.proof-strip p:last-child { padding-right: 0; border: 0; }
.proof-strip svg { width: 20px; height: 20px; flex: 0 0 20px; color: var(--amber-2); stroke-width: 1.5; }
.proof-strip span, .proof-strip strong { display: block; }
.proof-strip span { font-size: .82rem; }
.proof-strip strong { font-size: .92rem; }
.home-how { display: grid; grid-template-columns: minmax(0, 7fr) minmax(340px, 5fr); align-items: center; gap: 72px; padding-block: 96px; }
.home-how-copy > p:not(.eyebrow) { max-width: 58ch; color: var(--muted); }
.home-timeline { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; margin: 36px 0 0; padding: 0; list-style: none; }
.home-timeline::before { content: ""; position: absolute; top: 18px; right: 12%; left: 12%; height: 1px; background: var(--line); }
.home-timeline li { position: relative; z-index: 1; padding-right: 16px; }
.home-timeline li > span { display: grid; place-items: center; width: 36px; height: 36px; margin-bottom: 15px; border-radius: 50%; background: var(--amber); color: var(--pine); font-weight: 600; }
.home-timeline strong, .home-timeline small { display: block; }
.home-timeline small { margin-top: 4px; color: var(--muted); line-height: 1.4; }
.product-shot { position: relative; display: flex; justify-content: center; padding: 22px 54px 22px 0; }
.phone-frame { position: relative; width: 270px; aspect-ratio: 9 / 19.5; padding: 11px; border: 8px solid var(--pine-2); border-radius: 40px; background: var(--pine-2); box-shadow: var(--soft-shadow); transform: rotate(2deg); }
.phone-speaker { position: absolute; z-index: 2; top: 16px; left: 50%; width: 64px; height: 6px; border-radius: 999px; background: var(--pine-2); transform: translateX(-50%); }
.phone-screen { height: 100%; overflow: hidden; border-radius: 25px; background: var(--cream); }
.phone-screen header { display: flex; align-items: center; gap: 7px; padding: 22px 12px 10px; border-bottom: 1px solid var(--line); font-size: .62rem; font-weight: 600; }
.phone-screen header b { margin-left: auto; padding: 2px 5px; border: 1px solid var(--amber); border-radius: 999px; color: var(--pine); font-size: .48rem; text-transform: uppercase; }
.phone-weather { display: grid; grid-template-columns: 28px 48px 1fr; align-items: center; gap: 6px; margin: 10px; padding: 10px; border-radius: 8px; background: var(--pine); color: var(--cream); }
.phone-weather svg { width: 24px; color: var(--amber); }
.phone-weather strong { font-family: var(--display); font-size: 1.5rem; }
.phone-weather span { font-size: .52rem; line-height: 1.35; }
.phone-label { margin: 14px 12px 7px; color: var(--muted); font-size: .52rem; font-weight: 600; text-transform: uppercase; }
.phone-activity { width: calc(100% - 24px); aspect-ratio: 4 / 3; margin-inline: 12px; border-radius: 9px; object-fit: cover; filter: saturate(.9); }
.phone-screen h3 { margin: 10px 12px 3px; color: var(--pine); font-family: var(--display); font-size: 1.25rem; line-height: 1; }
.phone-screen > p:not(.phone-label) { margin: 0 12px; color: var(--muted); font-size: .55rem; }
.phone-screen > a { display: flex; align-items: center; justify-content: center; gap: 5px; margin: 12px; padding: 9px; border-radius: 6px; background: var(--pine); color: var(--cream); font-size: .62rem; font-weight: 600; text-decoration: none; }
.phone-screen > a svg { width: 12px; }
.shot-qr { position: absolute; right: 0; bottom: 46px; display: grid; width: 132px; gap: 6px; padding: 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--cream); color: var(--pine); font-size: .66rem; line-height: 1.25; text-align: center; text-decoration: none; box-shadow: var(--soft-shadow); }
.shot-qr img { width: 100%; }
.guide-showcase { padding-block: 96px; background: var(--pine); color: var(--cream); }
.guide-showcase-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(420px, 7fr); align-items: center; gap: 72px; }
.guide-showcase h2, .guide-showcase .eyebrow { color: var(--cream); }
.guide-showcase-copy > p:not(.eyebrow) { max-width: 44ch; color: rgba(245,240,228,.72); }
.field-guide-card { overflow: hidden; border: 1px solid rgba(245,240,228,.18); border-radius: 16px; }
.field-guide-best { display: grid; grid-template-columns: auto 1fr auto; align-items: end; gap: 18px; padding: 24px; background: var(--cream); color: var(--pine); }
.field-guide-best > span { align-self: start; padding: 5px 8px; border-radius: 999px; background: var(--amber); font-size: .68rem; font-weight: 600; text-transform: uppercase; }
.field-guide-best small { color: var(--muted); }
.field-guide-best h3 { margin: 3px 0; color: var(--pine); font-family: var(--display); font-size: 1.65rem; }
.field-guide-best p { margin: 0; color: var(--muted); font-size: .78rem; }
.field-guide-best > strong { font-family: var(--display); font-size: 1.7rem; }
.field-guide-card > a { display: grid; grid-template-columns: 24px 1fr auto 20px; align-items: center; gap: 13px; min-height: 78px; padding: 14px 20px; border-top: 1px solid rgba(245,240,228,.18); color: var(--cream); text-decoration: none; transition: transform 180ms ease-out, background 180ms ease-out; }
.field-guide-card > a:hover { background: rgba(245,240,228,.08); transform: translateY(-2px); }
.field-guide-card > a:hover > strong { color: var(--amber); transform: translateX(-4px); }
.field-guide-card > a svg { width: 20px; stroke-width: 1.5; }
.field-guide-card > a span, .field-guide-card > a small { display: block; }
.field-guide-card > a small { color: rgba(245,240,228,.62); }
.field-guide-card > a > strong { font-variant-numeric: tabular-nums; transition: color 180ms ease-out, transform 180ms ease-out; }
.partner-fork { display: grid; grid-template-columns: 5fr 7fr; gap: 64px; padding-block: 96px; }
.partner-fork > div:first-child h2 { max-width: 14ch; margin-bottom: 0; }
.partner-fork-links { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.partner-fork-links a { position: relative; display: grid; align-content: space-between; min-height: 220px; padding: 24px; border: 1px solid var(--line); border-radius: 16px; color: var(--pine); text-decoration: none; transition: background 180ms ease-out, color 180ms ease-out, transform 180ms ease-out, box-shadow 180ms ease-out; }
.partner-fork-links a:hover { background: var(--pine); color: var(--cream); transform: translateY(-2px); box-shadow: var(--soft-shadow); }
.partner-fork-links a span { color: var(--muted); font-size: .78rem; font-weight: 600; text-transform: uppercase; }
.partner-fork-links a:hover span { color: rgba(245,240,228,.68); }
.partner-fork-links a strong { max-width: 16ch; font-family: var(--display); font-size: 1.55rem; line-height: 1.1; }
.partner-fork-links a svg { position: absolute; right: 22px; bottom: 22px; width: 20px; }
.final-cta { display: flex; align-items: center; justify-content: space-between; gap: 40px; margin-bottom: 96px; padding: 42px 48px; border-radius: 16px; background: var(--pine); color: var(--cream); }
.final-cta h2 { margin-bottom: 6px; color: var(--cream); }
.final-cta p, .final-cta .public-actions { margin: 0; }
.partner-final-cta { gap: 32px; padding: 48px; border-radius: 8px; }
.partner-final-cta h2 { margin-bottom: 8px; font-size: 39px; line-height: 1.1; }
.partner-final-cta p { max-width: 65ch; }

/* Guest demo */
.guest-page { background: var(--cream-2); }
.demo-app-shell { display: grid; grid-template-columns: minmax(0, 680px) minmax(300px, 360px); justify-content: center; gap: 56px; width: min(100% - 48px, 1096px); margin-inline: auto; padding: 28px 0 96px; }
.demo-main { min-width: 0; }
.demo-property-bar { display: grid; grid-template-columns: 34px 42px 1fr auto; align-items: center; gap: 10px; min-height: 64px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.demo-mark { display: grid; place-items: center; }
.demo-mark img { width: 30px; }
.lodge-avatar { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: var(--sage); color: var(--pine); font-size: .7rem; font-weight: 600; }
.demo-property-bar strong, .demo-property-bar span { display: block; }
.demo-property-bar > div:nth-child(3) span { color: var(--muted); font-size: .72rem; }
.demo-outline-pill { padding: 4px 8px; border: 1px solid var(--amber); border-radius: 999px; color: var(--pine); font-size: .66rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.weather-banner { margin: 18px 0 28px; padding: 18px; border-radius: 12px; background: var(--pine); color: var(--cream); }
.weather-now { display: flex; align-items: center; gap: 12px; }
.weather-now > svg { width: 32px; height: 32px; color: var(--amber); stroke-width: 1.5; }
.weather-now strong, .weather-now span { display: block; }
.weather-now strong { font-size: 1.1rem; }
.weather-now span { color: rgba(245,240,228,.72); font-size: .78rem; }
.weather-wind { float: right; display: flex; align-items: center; gap: 6px; margin-top: -30px; font-size: .76rem; }
.weather-wind svg { width: 17px; }
.micro-forecast { display: grid; grid-template-columns: repeat(5, 1fr); margin-top: 16px; border-top: 1px solid rgba(245,240,228,.18); border-bottom: 1px solid rgba(245,240,228,.18); }
.micro-forecast > div { display: grid; place-items: center; gap: 3px; padding: 8px 4px; border-right: 1px solid rgba(245,240,228,.14); font-size: .68rem; }
.micro-forecast > div:last-child { border: 0; }
.micro-forecast svg { width: 17px; color: var(--amber); }
.weather-banner > small { display: block; margin-top: 8px; color: rgba(245,240,228,.58); font-size: .68rem; text-align: right; }
.demo-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; }
.demo-section-heading h1 { margin-bottom: 5px; color: var(--pine); font-family: var(--display); font-size: clamp(2.3rem, 5vw, 3rem); font-weight: 600; line-height: 1; }
.demo-section-heading p { margin: 0; color: var(--muted); font-size: .86rem; }
.quick-rank { display: flex; flex-wrap: wrap; gap: 8px; margin: 20px 0 8px; }
.quick-rank button { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--pine); font-size: .78rem; font-weight: 600; cursor: pointer; transition: background 180ms ease-out, color 180ms ease-out, border-color 180ms ease-out; }
.quick-rank button svg { width: 16px; stroke-width: 1.5; }
.quick-rank button:hover, .quick-rank button.is-active { border-color: var(--pine); background: var(--pine); color: var(--cream); }
.quick-rank button:disabled { opacity: .6; cursor: wait; }
.rank-toast { min-height: 22px; margin: 0 0 8px; color: var(--pine); font-size: .78rem; font-weight: 500; }
.demo-disclosure { border: 0; border-radius: 8px; background: var(--sage); }
.demo-list .best-fit { display: grid; grid-template-columns: 40% 60%; min-height: 330px; margin-bottom: 18px; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: var(--cream); box-shadow: none; }
.demo-list .best-fit-photo { height: 100%; min-height: 330px; border-radius: 16px 0 0 16px; }
.demo-list .best-fit-photo::after { content: ""; position: absolute; inset: 0; background: rgba(232,163,61,.06); pointer-events: none; }
.demo-list .best-fit-photo img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.9); }
.demo-list .demo-flag { z-index: 1; background: rgba(245,240,228,.9); }
.demo-list .best-fit-content { display: flex; flex-direction: column; justify-content: center; padding: 26px; }
.best-fit-label { margin: 0 0 7px; color: var(--amber-2); font-size: .7rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.demo-list .vendor-name { margin: 0; color: var(--muted); font-size: .74rem; }
.demo-list .best-fit h2 { margin: 4px 0 9px; color: var(--pine); font-family: var(--display); font-size: clamp(1.75rem, 3vw, 2.25rem); font-weight: 600; line-height: 1.05; }
.demo-list .fit-reason { margin: 0; color: var(--muted); font-size: .82rem; white-space: normal; }
.activity-meta { display: flex; flex-wrap: wrap; gap: 8px 14px; margin: 18px 0; padding-block: 12px; border-block: 1px solid var(--line); color: var(--pine); font-size: .72rem; font-variant-numeric: tabular-nums; }
.activity-meta span { display: inline-flex; align-items: center; gap: 5px; }
.activity-meta svg { width: 15px; stroke-width: 1.5; }
.demo-list .book-button { position: static; width: 100%; min-height: 48px; border: 0; border-radius: 8px; background: var(--pine); color: var(--cream); box-shadow: none; }
.demo-list .book-button span { position: static; width: auto; height: auto; overflow: visible; clip: auto; }
.demo-list .book-button:hover { background: var(--pine-2); transform: translateY(-2px); box-shadow: var(--soft-shadow); }
.demo-list .recommendation-row { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; align-items: center; gap: 14px; min-height: 120px; padding: 12px 0; border-top: 1px solid var(--line); transition: transform 180ms ease-out; }
.demo-list .recommendation-row:hover { transform: translateY(-2px); }
.demo-list .recommendation-row > img { width: 96px; height: 96px; border-radius: 12px; object-fit: cover; filter: saturate(.9); }
.demo-list .row-copy { padding: 0; }
.demo-list .row-copy > p:first-child { margin: 0; color: var(--muted); font-size: .68rem; }
.demo-list .row-copy h2 { margin: 2px 0 7px; color: var(--pine); font-family: var(--ui); font-size: 1rem; font-weight: 600; line-height: 1.25; }
.reason-chip { display: inline-flex; padding: 4px 7px; border-radius: 999px; background: var(--sage); color: var(--pine); font-size: .62rem; font-weight: 500; }
.demo-list .row-facts { gap: 9px; margin-top: 7px; color: var(--muted); font-size: .68rem; }
.row-price { display: flex; align-items: center; gap: 5px; color: var(--pine); }
.row-price strong { font-size: .9rem; font-variant-numeric: tabular-nums; }
.row-price s { color: var(--muted); font-size: .72rem; }
.row-price .row-book { border-radius: 8px; transition: transform 180ms ease-out, background 180ms ease-out; }
.network-offer { display: grid; grid-template-columns: auto 1fr; align-items: baseline; gap: 3px 12px; margin: 18px 0 2px; padding: 13px 14px; border-radius: 12px; background: #fff4d4; color: var(--forest); }
.network-offer span { grid-column: 1 / -1; color: #6f4b00; font-size: .7rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.network-offer strong { font-family: var(--display); font-size: 2rem; line-height: 1; }
.network-offer s { color: #6b6659; font-size: .78rem; }
.network-offer small { grid-column: 1 / -1; color: #554f42; font-size: .76rem; }
.booking-actions { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 10px; }
.call-action, .booking-call { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; color: var(--forest); font-weight: 800; text-underline-offset: 4px; }
.call-action svg, .booking-call svg, .row-call svg { width: 17px; }
.row-call { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-width: 44px; min-height: 44px; color: var(--forest); font-size: .72rem; font-weight: 800; }
.row-offer { flex-basis: 100%; color: #6f4b00; font-weight: 750; }
.booking-call { margin-top: 8px; }
.booking-dialog > small { display: block; margin-top: 12px; color: var(--muted); line-height: 1.5; }
.recommendation-row:hover .row-book { background: var(--sage); transform: translateX(4px); }
.recommendation-list.is-ranking { animation: demo-reflow 300ms cubic-bezier(.16,1,.3,1); }
@keyframes demo-reflow { from { opacity: .55; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.demo-sidebar { position: sticky; top: 100px; align-self: start; padding: 30px; border: 1px solid var(--line); border-radius: 16px; background: var(--cream); }
.demo-sidebar h2 { margin-bottom: 18px; color: var(--pine); font-family: var(--display); font-size: 2rem; font-weight: 600; line-height: 1.08; }
.demo-sidebar ul { margin: 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.demo-sidebar li { display: grid; grid-template-columns: 22px 1fr; gap: 10px; padding: 14px 0; border-top: 1px solid var(--line); }
.demo-sidebar li:first-child { border: 0; }
.demo-sidebar li > svg { width: 20px; color: var(--pine); stroke-width: 1.5; }
.demo-sidebar li span, .demo-sidebar li strong { display: block; }
.demo-sidebar li span { color: var(--muted); font-size: .74rem; line-height: 1.45; }
.demo-sidebar li strong { margin-bottom: 2px; color: var(--pine); }
.sidebar-qr { display: grid; place-items: center; gap: 8px; padding: 22px 0; border-bottom: 1px solid var(--line); color: var(--pine); font-size: .78rem; font-weight: 600; }
.sidebar-qr img { width: 144px; }
.demo-sidebar > small { display: block; margin-top: 14px; color: var(--muted); }
.evaluator-cta { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 48px; padding: 28px; border-radius: 16px; background: var(--pine); color: var(--cream); }
.evaluator-cta h2 { margin: 0; color: var(--cream); font-family: var(--display); font-size: 1.8rem; }
.evaluator-cta p { margin: 3px 0 0; color: rgba(245,240,228,.65); }
.evaluator-cta > div:last-child { display: grid; gap: 8px; }
.evaluator-cta a { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 130px; padding: 8px 0; border-bottom: 1px solid rgba(245,240,228,.22); color: var(--cream); font-size: .78rem; font-weight: 600; text-decoration: none; }
.evaluator-cta a svg { width: 17px; }
.feedback-float { position: fixed; z-index: 30; bottom: 20px; left: 50%; display: flex; align-items: center; gap: 8px; width: auto; margin: 0; padding: 8px 10px 8px 16px; border: 0; border-radius: 999px; background: var(--pine-2); color: var(--cream); box-shadow: var(--soft-shadow); transform: translate(-50%, 130%); transition: transform 300ms ease-out; }
.feedback-float.is-visible { transform: translate(-50%, 0); }
.feedback-float span { white-space: nowrap; font-size: .78rem; font-weight: 600; }
.feedback-float button { display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 12px; border: 1px solid rgba(245,240,228,.28); border-radius: 999px; background: transparent; color: var(--cream); font-size: .72rem; }
.feedback-float button:hover, .feedback-float button.selected { background: var(--cream); color: var(--pine); }
.feedback-float svg { width: 14px; }
.feedback-float .feedback-status { display: none; }
.feedback-float.is-thanked span, .feedback-float.is-thanked button { display: none; }
.feedback-float.is-thanked .feedback-status { display: block; margin: 0; padding: 4px 8px; color: var(--cream); }

/* Partner acquisition */

.vendor-hero { grid-template-columns: 7fr 5fr; }

.micro-trust { display: flex; align-items: center; gap: 7px; margin: 20px 0 0; color: var(--muted); font-size: .78rem; }
.micro-trust svg { width: 17px; color: var(--pine); }

.commission-card { position: absolute; z-index: 2; bottom: 24px; left: 24px; width: min(280px, calc(100% - 48px)); padding: 20px; border-radius: 12px; background: var(--amber); color: var(--pine); }
.commission-card span, .commission-card strong, .commission-card small { display: block; }
.commission-card span { font-size: .74rem; font-weight: 600; }
.commission-card strong { margin-block: 3px; font-family: var(--display); font-size: 3.5rem; line-height: 1; }
.commission-card small { color: rgba(18,59,46,.76); }
.image-caption { position: absolute; z-index: 2; right: 16px; bottom: 16px; padding: 7px 10px; border-radius: 999px; background: rgba(245,240,228,.88); color: var(--pine); font-size: .68rem; font-weight: 600; }
.host-kpis { display: grid; grid-template-columns: repeat(3, 1fr); margin: 32px 0 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.host-kpis li { padding: 16px; border-right: 1px solid var(--line); }
.host-kpis li:first-child { padding-left: 0; }
.host-kpis li:last-child { border: 0; }
.host-kpis strong, .host-kpis span { display: block; }
.host-kpis strong { color: var(--amber-2); font-family: var(--display); font-size: 2rem; line-height: 1; font-variant-numeric: tabular-nums; }
.host-kpis span { margin-top: 6px; color: var(--muted); font-size: .68rem; line-height: 1.35; }
.commission-section { padding-block: 96px; background: var(--cream-2); }
.commission-grid { display: grid; grid-template-columns: 7fr 5fr; align-items: end; gap: 72px; }
.commission-grid h2 { max-width: 17ch; }
.commission-bar { display: flex; height: 92px; margin-top: 30px; overflow: hidden; border-radius: 12px; color: var(--cream); font-size: .66rem; font-variant-numeric: tabular-nums; }
.commission-bar span { display: flex; flex-direction: column; justify-content: center; padding: 10px; overflow: hidden; }
.commission-bar b { display: block; }
.vendor-share { flex: 90; background: var(--pine); }
.property-share { flex: 7; min-width: 54px; background: var(--amber); color: var(--pine); }
.platform-share { flex: 3; min-width: 48px; background: var(--muted); }
.commission-legend { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; color: var(--muted); font-size: .72rem; }
.commission-legend span { display: flex; align-items: center; gap: 6px; }
.commission-legend i { width: 8px; height: 8px; border-radius: 50%; }
.legend-pine { background: var(--pine); }.legend-amber { background: var(--amber); }.legend-muted { background: var(--muted); }
.commission-points { margin: 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.commission-points li { display: grid; grid-template-columns: 24px 1fr; gap: 10px; padding: 16px 0; border-top: 1px solid var(--line); }
.commission-points li:first-child { border: 0; }
.commission-points svg { width: 20px; color: var(--pine); stroke-width: 1.5; }
.partner-flow { padding-block: 96px; }

.partner-flow ol { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); margin: 0; padding: 0; list-style: none; }
.partner-flow ol::before { content: ""; position: absolute; top: 29px; right: 10%; left: 10%; height: 1px; background: var(--line); }
.partner-flow li { position: relative; min-height: 250px; padding: 24px; border: 1px solid var(--line); border-right: 0; border-radius: 0; background: var(--cream); }
.partner-flow li:first-child { border-radius: 16px 0 0 16px; }
.partner-flow li:last-child { border-right: 1px solid var(--line); border-radius: 0 16px 16px 0; }
.partner-flow li > span { position: relative; z-index: 1; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--amber); color: var(--pine); font-size: .78rem; font-weight: 600; }
.partner-flow li > svg { width: 24px; height: 24px; margin: 28px 0 18px; color: var(--pine); stroke-width: 1.5; }
.partner-flow h3 { margin-bottom: 8px; color: var(--pine); }
.partner-flow p { margin: 0; color: var(--muted); font-size: .82rem; line-height: 1.5; }
.category-section { padding-block: 96px; background: var(--sage); }
.category-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.category-grid > div { display: flex; align-items: center; gap: 12px; min-height: 84px; padding: 18px; border: 1px solid rgba(18,59,46,.18); border-radius: 16px; background: rgba(245,240,228,.42); color: var(--pine); transition: border-color 180ms ease-out, transform 180ms ease-out; }
.category-grid > div:hover { border-color: var(--amber-2); transform: translateY(-2px); }
.category-grid svg { width: 22px; stroke-width: 1.5; }
.category-grid span { font-weight: 600; }
.faq-section { display: grid; grid-template-columns: 4fr 8fr; gap: 64px; padding-block: 96px; }

.faq-list { border-top: 1px solid var(--line); }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 66px; color: var(--pine); font-weight: 600; cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary svg { width: 20px; transition: transform 300ms ease-out; }
.faq-list details[open] summary svg { transform: rotate(45deg); }
.faq-list details p { max-width: 62ch; margin: 0 0 20px; color: var(--muted); }

.partner-form, .application-confirmation { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; padding: 32px; border: 0; border-radius: 8px; background: var(--cream); color: var(--ink); box-shadow: none; }
.partner-form label { color: var(--pine); font-size: 13px; font-weight: 600; }
.partner-form label > span { color: var(--muted); font-weight: 400; }
.partner-form input, .partner-form select, .partner-form textarea, .auth-form-wrap input, .money-field input, .operator-card input { width: 100%; min-height: 48px; margin-top: 8px; padding: 12px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,.58); color: var(--ink); }
.partner-form textarea { resize: vertical; }
.partner-form input:focus, .partner-form select:focus, .partner-form textarea:focus, .auth-form-wrap input:focus, .operator-card input:focus { outline: 2px solid #376b82; outline-offset: 2px; border-color: var(--pine); }
.partner-form :is(input, select, textarea)[aria-invalid="true"], .auth-form-wrap input[aria-invalid="true"], .operator-card input[aria-invalid="true"] { border-color: var(--danger); }
.inline-error { display: block; grid-column: 1 / -1; margin-top: 4px; color: var(--danger) !important; font-size: 13px; font-weight: 500 !important; }
.form-error-summary { padding: 16px; border: 1px solid #d8766e; border-radius: 8px; background: #fff0ed; color: #721c17; }
.form-error-summary strong, .form-error-summary p { display: block; margin: 0; }
.form-error-summary p { margin-top: 4px; color: #721c17; font-size: 13px; }
.partner-form .span-two { grid-column: 1 / -1; }
.partner-form .consent-row { display: flex; align-items: center; gap: 12px; min-height: 44px; color: var(--muted); font-weight: 400; line-height: 1.5; }
.partner-form .consent-row input { width: 18px; min-height: 18px; margin: 2px 0 0; flex: 0 0 18px; }
.partner-form .consent-row a { color: var(--pine); }
.form-promise { max-width: 65ch; justify-self: center; color: var(--muted); font-size: 13px; line-height: 1.5; text-align: center; }
.form-promise a { color: var(--pine); text-underline-offset: 4px; }
.partner-form.is-loading button { cursor: wait; opacity: .72; }
.application-confirmation { display: block; text-align: center; }
.application-confirmation > svg { width: 48px; height: 48px; color: var(--pine); }
.application-confirmation h3 { margin: 16px 0 8px; color: var(--pine); font-family: var(--display); font-size: 31px; }
.application-confirmation p { color: var(--muted); }
.application-confirmation ol { display: grid; grid-template-columns: repeat(3, 1fr); margin: 28px 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.application-confirmation li { padding: 14px 6px; border-right: 1px solid var(--line); font-size: .78rem; }
.application-confirmation li:last-child { border: 0; }
.application-confirmation li span { display: grid; place-items: center; width: 26px; height: 26px; margin: 0 auto 6px; border-radius: 50%; background: var(--amber); color: var(--pine); }
.application-confirmation a { display: inline-flex; align-items: center; gap: 7px; color: var(--pine); font-weight: 600; }
.application-confirmation a svg { width: 18px; }
.mobile-apply-bar { display: none; }

.ledger-board { padding: 28px; border: 0; border-radius: 16px; background: var(--cream); color: var(--ink); box-shadow: var(--soft-shadow); transform: none; }
.ledger-board header, .ledger-board > div, .ledger-board footer { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 14px; padding: 14px 0; border-top: 1px solid var(--line); }
.ledger-board header { padding-top: 0; border: 0; }
.ledger-board header strong { padding: 4px 7px; border-radius: 999px; background: var(--sage); color: var(--pine); font-size: .62rem; letter-spacing: .05em; text-transform: uppercase; }
.ledger-board > div > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ledger-board em { padding: 4px 7px; border-radius: 999px; font-size: .62rem; font-style: normal; font-weight: 600; }
.status-confirmed { background: var(--sage); color: var(--pine); }
.status-pending { border: 1px solid var(--amber); color: var(--pine); }
.ledger-board footer { padding-bottom: 0; font-weight: 600; }
.ledger-board footer span { grid-column: 1 / 3; }
.earnings-section { padding-block: 96px; background: var(--sage); }
.earnings-card { display: grid; grid-template-columns: 7fr 5fr; gap: 64px; padding: 42px; border-radius: 16px; background: var(--cream); }
.earnings-card h2 { margin-bottom: 30px; }
.earnings-card label { display: flex; justify-content: space-between; margin: 16px 0 6px; color: var(--pine); font-size: .78rem; font-weight: 600; }
.earnings-card input[type="range"] { width: 100%; accent-color: var(--amber-2); }
.earnings-card output { font-variant-numeric: tabular-nums; }
.money-field { position: relative; max-width: 220px; }
.money-field span { position: absolute; z-index: 1; top: 17px; left: 12px; color: var(--muted); }
.money-field input { padding-left: 28px; }
.earnings-output { display: grid; place-items: center; align-content: center; padding-left: 40px; border-left: 1px solid var(--line); text-align: center; }
.earnings-output > span { color: var(--muted); font-size: .72rem; text-transform: uppercase; }
.earnings-output strong { margin: 8px 0 0; color: var(--amber-2); font-family: var(--display); font-size: clamp(3.6rem, 7vw, 5.4rem); font-weight: 600; line-height: 1; font-variant-numeric: tabular-nums; }
.earnings-output small { color: var(--muted); }
.earnings-output p { margin: 18px 0 0; color: var(--pine); font-weight: 500; }
.clear-design { display: grid; grid-template-columns: 7fr 5fr; align-items: center; gap: 72px; padding-block: 96px; }
.clear-design > div > p:not(.eyebrow) { max-width: 58ch; color: var(--muted); }
.clear-design ul { margin: 24px 0 0; padding: 0; border-block: 1px solid var(--line); list-style: none; }
.clear-design li { display: flex; align-items: center; gap: 10px; padding: 12px 0; border-top: 1px solid var(--line); color: var(--pine); }
.clear-design li:first-child { border: 0; }
.clear-design li svg { width: 20px; stroke-width: 1.5; }
.cross-link-card { position: relative; display: grid; min-height: 220px; align-content: end; padding: 28px; border: 1px solid var(--line); border-radius: 16px; color: var(--pine); text-decoration: none; transition: background 180ms ease-out, color 180ms ease-out, transform 180ms ease-out, box-shadow 180ms ease-out; }
.cross-link-card:hover { background: var(--pine); color: var(--cream); transform: translateY(-2px); box-shadow: var(--soft-shadow); }
.cross-link-card span, .cross-link-card strong { display: block; }
.cross-link-card span { color: var(--muted); font-size: .76rem; }
.cross-link-card:hover span { color: rgba(245,240,228,.66); }
.cross-link-card strong { margin-top: 5px; font-family: var(--display); font-size: 1.8rem; }
.cross-link-card svg { position: absolute; top: 26px; right: 26px; width: 22px; }

/* Sign-in, legal, and operator entry */
.partner-auth { display: grid; grid-template-columns: 45% 55%; min-height: 100vh; }
.auth-brand-panel { position: relative; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; padding: 48px max(48px, calc((100vw - 1200px) / 2)); background: var(--pine); color: var(--cream); }
.auth-brand-panel::after, .operator-entry::before { content: ""; position: absolute; inset: 0; background: url('/assets/decor/topo-contours.svg') center / cover no-repeat; opacity: .06; pointer-events: none; }
.auth-brand-panel > * { position: relative; z-index: 1; }
.auth-brand-panel h1 { max-width: 8ch; margin-bottom: 18px; color: var(--cream); font-size: clamp(3rem, 5vw, 4rem); }
.auth-brand-panel > div > p { max-width: 43ch; color: rgba(245,240,228,.72); }
.auth-brand-panel ol { margin: 36px 0 0; padding: 0; border-block: 1px solid rgba(245,240,228,.18); list-style: none; }
.auth-brand-panel li { display: flex; align-items: center; gap: 12px; padding: 13px 0; border-top: 1px solid rgba(245,240,228,.18); }
.auth-brand-panel li:first-child { border: 0; }
.auth-brand-panel li svg { width: 20px; color: var(--amber); stroke-width: 1.5; }
.auth-form-panel { display: grid; place-items: center; padding: 48px 24px; background: var(--cream); }
.auth-form-wrap { width: min(100%, 420px); }
.auth-heading h2, .auth-success h2 { margin-bottom: 8px; color: var(--pine); font-size: 2.5rem; }
.auth-heading p, .auth-success p { color: var(--muted); }
.auth-form-wrap form { display: grid; gap: 20px; margin-top: 30px; }
.auth-form-wrap form > label, .auth-form-wrap .auth-field > label, .auth-form-wrap legend, .operator-card label { color: var(--pine); font-size: .78rem; font-weight: 600; }
.field-message { display: block; margin-top: 5px; color: var(--muted); font-size: .68rem; font-weight: 400; }
.auth-form-wrap fieldset { margin: 0; padding: 0; border: 0; }
.password-field { position: relative; display: block; }
.password-field input { padding-right: 96px; }
.password-field button { position: absolute; right: 2px; bottom: 2px; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 12px; border: 0; border-radius: 8px; background: transparent; color: var(--pine); font: inherit; font-size: 13px; font-weight: 650; cursor: pointer; }
.password-field button:hover { background: rgba(0,24,64,.08); }
.password-field button:focus-visible { outline: 2px solid #376b82; outline-offset: 2px; }
.password-field button svg { width: 16px; height: 16px; }
.role-segments { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 7px; }
.role-segments input { position: absolute; opacity: 0; pointer-events: none; }
.role-segments span { display: flex; align-items: center; justify-content: center; gap: 7px; min-height: 48px; border: 1px solid var(--line); border-radius: 8px; color: var(--pine); cursor: pointer; }
.role-segments input:checked + span { border-color: var(--pine); background: var(--pine); color: var(--cream); }
.role-segments input:focus-visible + span { outline: 2px solid #376b82; outline-offset: 2px; }
.role-segments svg { width: 18px; }
.auth-form-wrap .primary-action { width: 100%; background: var(--pine); color: var(--cream); }
.auth-form-wrap .primary-action:hover { background: var(--pine-2); }
.auth-microcopy, .auth-apply-links { color: var(--muted); font-size: .7rem; text-align: center; }
.auth-form-wrap .form-error-summary { margin-top: 22px; }
.auth-support { margin-top: 22px; color: var(--muted); font-size: .76rem; text-align: center; }
.auth-support a { display: inline-flex; align-items: center; min-height: 44px; color: var(--pine); font-weight: 650; text-underline-offset: 3px; }
.auth-apply-links { margin-top: 22px; }
.auth-apply-links a { display: inline-flex; align-items: center; min-height: 44px; color: var(--pine); }
.demo-entry { margin-top: 30px; border-top: 1px solid var(--line); }
.demo-entry summary { display: flex; align-items: center; min-height: 44px; padding: 12px 0; color: var(--muted); font-size: 13px; cursor: pointer; }
.demo-entry > div { display: grid; gap: 6px; }
.demo-entry a { display: inline-flex; align-items: center; min-height: 44px; color: var(--pine); font-size: 13px; }
.demo-entry p { display: grid; gap: 4px; margin: 0 0 10px; }
.demo-entry code { overflow-wrap: anywhere; color: var(--pine); font-size: .72rem; }
.auth-success > svg { width: 48px; height: 48px; color: var(--pine); }
.auth-success .primary-action { margin: 24px 0 14px; }
.auth-success > a:last-child { display: flex; align-items: center; justify-content: center; min-height: 44px; color: var(--pine); font-size: 13px; text-align: center; }
.legal-layout { display: grid; grid-template-columns: 200px minmax(0, 720px); justify-content: center; gap: 56px; padding-block: 80px 96px; }
.legal-header { grid-column: 1 / -1; max-width: 720px; margin-left: 256px; }
.legal-header > span { display: inline-flex; padding: 6px 10px; border-radius: 999px; background: var(--sage); color: var(--pine); font-size: .72rem; }
.legal-header h1 { margin: 18px 0 16px; font-size: 3rem; }
.legal-header p { color: var(--muted); font-size: 1.2rem; line-height: 1.6; }
.legal-toc { position: sticky; top: 104px; align-self: start; }
.legal-toc > strong { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; }
.legal-toc nav { display: grid; gap: 3px; margin-top: 14px; }
.legal-toc a { padding: 7px 10px; border-left: 1px solid var(--line); color: var(--muted); font-size: .76rem; text-decoration: none; }
.legal-toc a:hover, .legal-toc a.is-active { border-left-color: var(--amber-2); color: var(--pine); }
.legal-copy { font-size: 1.06rem; line-height: 1.75; }
.legal-copy section { scroll-margin-top: 110px; padding: 34px 0; border-top: 1px solid var(--line); }
.legal-copy section:first-child { padding-top: 0; border: 0; }
.legal-copy h2 { display: flex; align-items: baseline; gap: 12px; margin-bottom: 16px; font-size: 2rem; }
.legal-copy h2 span { color: var(--amber-2); font-family: var(--ui); font-size: .8rem; font-weight: 600; }
.legal-copy p { margin-bottom: 0; }
.legal-note, .legal-contact { padding: 20px; border-radius: 16px; background: var(--sage); color: var(--pine); }

.legal-contact { grid-column: 2; display: flex; align-items: center; gap: 14px; }
.legal-contact svg { width: 28px; flex: 0 0 28px; }
.legal-contact p { margin: 0; }
.operator-entry { position: relative; display: grid; min-height: 100vh; place-items: center; overflow: hidden; padding: 24px; background: var(--pine-2); }
.operator-card { position: relative; z-index: 1; width: min(100%, 440px); padding: 38px; border: 1px solid rgba(245,240,228,.1); border-radius: 16px; background: var(--pine); color: var(--cream); }
.operator-mark { display: inline-grid; margin-bottom: 28px; }
.operator-card .eyebrow, .operator-card h1 { color: var(--cream); }
.operator-card h1 { margin-bottom: 24px; font-size: 2.7rem; }
.operator-card form { display: grid; gap: 16px; }
.operator-card input { border-color: rgba(245,240,228,.18); background: rgba(255,255,255,.08); color: var(--cream); }
.operator-card .field-message { color: rgba(245,240,228,.58); }
.operator-note { display: flex; align-items: center; gap: 8px; margin: 24px 0 0; color: rgba(245,240,228,.62); font-size: .7rem; }
.operator-note svg { width: 17px; color: var(--amber); }

.reveal-ready .reveal-group > * { opacity: 0; transform: translateY(12px); transition: opacity 500ms ease-out, transform 500ms ease-out; }
.reveal-ready .reveal-group.is-visible > * { opacity: 1; transform: none; }
.reveal-ready .reveal-group.is-visible > *:nth-child(2) { transition-delay: 60ms; }

@media (max-width: 980px) {
  .public-header { gap: 8px; min-height: 64px; padding-inline: 16px; }
  .public-call { width: 44px; margin-left: auto; padding: 0; justify-content: center; }
  .public-call span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .public-menu { display: inline-flex; align-items: center; gap: 6px; }
  .public-header nav { position: fixed; inset: 0; z-index: -1; display: flex; flex-direction: column; align-items: stretch; justify-content: center; gap: 6px; padding: 84px 24px 40px; background: var(--pine); opacity: 0; visibility: hidden; transform: translateY(-12px); transition: opacity 220ms ease-out, transform 220ms ease-out, visibility 220ms; }
  .public-header nav.is-open { z-index: 1; opacity: 1; visibility: visible; transform: none; }
  .public-header nav a { justify-content: space-between; min-height: 58px; border-bottom: 1px solid rgba(245,240,228,.18); color: var(--cream); font-family: var(--display); font-size: 1.6rem; }
  .public-header nav a[aria-current="page"]::after { right: auto; bottom: 0; width: 60px; }
  .public-header .public-login { margin-top: 20px; border-color: var(--amber); color: var(--cream); }
  .public-menu { position: relative; z-index: 2; }
  body.menu-open { overflow: hidden; }
  .home-how, .guide-showcase-grid, .partner-fork, .commission-grid, .faq-section, .earnings-card, .clear-design { grid-template-columns: 1fr; gap: 48px; }

  .product-shot { max-width: 520px; margin-inline: auto; }

  .partner-flow ol { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .partner-flow ol::before { display: none; }
  .partner-flow li, .partner-flow li:first-child, .partner-flow li:last-child { border: 1px solid var(--line); border-radius: 16px; }

  .earnings-output { min-height: 260px; padding: 36px 0 0; border-top: 1px solid var(--line); border-left: 0; }
  .legal-header { margin-left: 0; }
}

@media (max-width: 760px) {
  body { font-size: 16px; }
  .site-container { width: min(100% - 36px, 1200px); }
  .public-page h1 { font-size: clamp(2.65rem, 12vw, 3.2rem); }
  .public-page h2 { font-size: clamp(2rem, 9vw, 2.35rem); }
  .home-hero, .home-hero-inner { min-height: calc(100svh - 64px); }
  .home-hero-inner { align-items: end; width: 100%; padding: 0; }
  .home-hero-photo { object-position: 63% center; }
  .home-hero-panel { width: calc(100% - 28px); margin: 0 14px 104px; padding: 30px 24px; }
  .home-hero-panel h1 { font-size: clamp(2.75rem, 12vw, 3.25rem); }
  .weather-chip { right: 14px; bottom: 25px; left: 14px; max-width: none; }
  .scroll-cue { display: none; }
  .proof-strip { padding-block: 18px; }
  .proof-strip .site-container { grid-template-columns: 1fr; }
  .proof-strip p, .proof-strip p:first-child, .proof-strip p:last-child { padding: 10px 0; border-right: 0; border-bottom: 1px solid rgba(18,59,46,.24); }
  .proof-strip p:last-child { border-bottom: 0; }
  .home-how, .guide-showcase, .partner-fork, .commission-section, .partner-flow, .category-section, .faq-section, .earnings-section, .clear-design { padding-block: 56px; }

  .home-how { gap: 30px; }
  .home-timeline { grid-template-columns: 1fr; gap: 12px; }
  .home-timeline::before { top: 12px; bottom: 12px; left: 17px; width: 1px; height: auto; }
  .home-timeline li { display: grid; grid-template-columns: 36px 1fr; column-gap: 12px; padding: 0; }
  .home-timeline li > span { grid-row: 1 / 3; margin: 0; }
  .product-shot { padding: 14px 38px 14px 0; }
  .phone-frame { width: 238px; }
  .shot-qr { right: -2px; width: 110px; }
  .guide-showcase-grid { grid-template-columns: 1fr; }
  .field-guide-best { grid-template-columns: 1fr auto; }
  .field-guide-best > span { grid-column: 1 / -1; width: fit-content; }
  .field-guide-card > a { grid-template-columns: 22px 1fr auto 16px; padding-inline: 14px; }
  .partner-fork-links { grid-template-columns: 1fr; }
  .partner-fork-links a { min-height: 170px; }
  .final-cta { flex-direction: column; align-items: stretch; margin-bottom: 56px; padding: 30px 24px; }
  .final-cta .public-actions { flex-direction: column; }
  .public-footer { grid-template-columns: 1fr 1fr; gap: 34px; padding: 44px 18px 90px; }
  .footer-brand { grid-column: 1 / -1; }
  .demo-app-shell { grid-template-columns: 1fr; width: min(100% - 28px, 680px); gap: 0; padding-top: 14px; }
  .demo-sidebar { position: static; margin-top: 40px; }
  .demo-list .best-fit { grid-template-columns: 1fr; }
  .demo-list .best-fit-photo { min-height: auto; aspect-ratio: 4 / 3; border-radius: 16px 16px 0 0; }
  .demo-list .best-fit-content { padding: 22px 18px; }
  .booking-actions { grid-template-columns: 1fr; }
  .call-action { justify-content: flex-start; }
  .quick-rank { display: grid; grid-template-columns: repeat(2, 1fr); }
  .quick-rank button { justify-content: center; }
  .demo-list .recommendation-row { grid-template-columns: 82px minmax(0, 1fr) auto; gap: 11px; }
  .demo-list .recommendation-row > img { width: 82px; height: 82px; }
  .reason-chip { display: none; }
  .row-price { align-self: stretch; flex-direction: column; justify-content: space-between; }
  .evaluator-cta { align-items: stretch; flex-direction: column; }
  .feedback-float { right: 12px; bottom: 12px; left: 12px; justify-content: center; transform: translateY(130%); }
  .feedback-float.is-visible { transform: none; }

  .host-kpis { grid-template-columns: repeat(3, 1fr); }
  .host-kpis li { padding: 12px 8px; }
  .commission-grid { gap: 36px; }
  .commission-bar { height: 78px; }
  .commission-bar span { padding: 7px; }
  .partner-flow ol { grid-template-columns: 1fr; }
  .partner-flow li { min-height: 0; }
  .category-grid { grid-template-columns: 1fr 1fr; }

  .partner-form, .application-confirmation { grid-template-columns: 1fr; padding: 24px 16px; }
  .partner-form .span-two { grid-column: 1; }
  .application-confirmation ol { grid-template-columns: 1fr; }
  .application-confirmation li { border-right: 0; border-bottom: 1px solid var(--line); }
  .mobile-apply-bar { position: fixed; z-index: 60; right: 12px; bottom: 12px; left: 12px; display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; border-radius: 8px; background: var(--amber); color: var(--pine); font-weight: 600; text-decoration: none; box-shadow: var(--soft-shadow); }
  .mobile-apply-bar svg { width: 18px; }
  .earnings-card { padding: 26px 20px; }
  .clear-design { gap: 30px; }
  .partner-auth { grid-template-columns: 1fr; }
  .auth-brand-panel { min-height: 82px; padding: 16px 18px; }
  .auth-brand-panel > div { display: none; }
  .auth-brand-panel .brand { font-size: 1.45rem; }
  .auth-form-panel { min-height: calc(100vh - 82px); padding-block: 42px; }
  .legal-layout { display: block; padding-block: 56px; }
  .legal-header h1 { font-size: 2.7rem; }
  .legal-header p { font-size: 1.05rem; }
  .legal-toc { display: none; }

  .legal-contact { margin-top: 32px; }
  .operator-card { padding: 30px 22px; }
}

@media (max-width: 420px) {
  .site-container { width: min(100% - 28px, 1200px); }
  .home-hero-panel { margin-inline: 10px; padding: 26px 20px; }
  .home-hero-panel .public-actions { flex-direction: column; }
  .phone-frame { width: 218px; }
  .shot-qr { width: 98px; }
  .category-grid { grid-template-columns: 1fr; }
  .demo-property-bar { grid-template-columns: 30px 38px 1fr auto; gap: 7px; }
  .demo-property-bar > div:nth-child(3) span { display: none; }
  .weather-wind { float: none; margin: 12px 0 0 44px; }
  .micro-forecast { margin-top: 12px; }
  .demo-list .row-copy h2 { font-size: .9rem; }
  .demo-list .row-facts { gap: 5px; }
  .host-kpis { grid-template-columns: 1fr; }
  .host-kpis li, .host-kpis li:first-child { display: flex; align-items: baseline; gap: 10px; padding: 11px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .host-kpis li:last-child { border-bottom: 0; }
  .ledger-board header, .ledger-board > div, .ledger-board footer { grid-template-columns: minmax(0, 1fr) auto; }
  .ledger-board em { display: none; }
  .ledger-board footer span { grid-column: 1; }
}

@media (max-width: 640px) {
  .locked-action-panel { grid-template-columns: 40px 1fr; padding: 20px 16px; }
  .locked-action-panel .primary-action { grid-column: 1 / -1; width: 100%; }
  .action-notice { grid-template-columns: 24px 1fr; }
  .action-notice > :last-child { grid-column: 2; justify-self: start; }
  .promo-locked { align-items: flex-start; flex-direction: column; }
  .void-dialog { padding: 30px 20px 22px; }
  .dialog-actions { align-items: stretch; flex-direction: column-reverse; }
  .dialog-actions .secondary-action, .dialog-actions form, .dialog-actions .danger-action { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .reveal-ready .reveal-group > * { opacity: 1; transform: none; }
}

html.visual-review { scroll-behavior: auto !important; }
html.visual-review .public-header, html.visual-review .demo-sidebar { position: static !important; }
html.visual-review .feedback-float,
html.visual-review .mobile-apply-bar { display: none !important; }
html.visual-review .reveal-group > * {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

.join-page .perk-console-title h2 { color: #fff; }
.mobile-apply-bar { transition: opacity 180ms ease-out, transform 180ms ease-out; }
.mobile-apply-bar.is-hidden { opacity: 0; pointer-events: none; transform: translateY(120%); }

@media (max-width: 1060px) {

  .founding-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 780px) {

  .perk-console { max-width: 620px; }
  .founding-grid, .founder-story { grid-template-columns: 1fr; }
  .founding-grid { align-items: start; }
  .join-math { grid-template-columns: 1fr 1fr; }
  .join-math > div { border-bottom: 1px solid var(--line); }
  .join-math > div:nth-child(2) { border-right: 0; }
  .join-math > div:nth-last-child(-n+2) { border-bottom: 0; }
  .founder-image { min-height: 48svh; }
  .founder-copy { padding: 58px 20px 76px; }

  .partner-form { grid-template-columns: 1fr; padding: 24px 16px; }
  .partner-form .span-two { grid-column: auto; }
}

@media (max-width: 430px) {
  .public-header .brand { gap: 7px; font-size: 1.18rem; }
  .public-header .brand img { width: 29px; height: 33px; }
  .public-menu { width: 44px; justify-content: center; padding-inline: 0; }
  .public-menu span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

  .join-trust { display: grid; gap: 8px; margin-top: 24px; padding-top: 16px; }
  .perk-console { padding: 24px 20px; }
  .perk-price strong { font-size: 4rem; }
  .join-math { grid-template-columns: 1fr; }
  .join-math > div { min-height: auto; border-right: 0; border-bottom: 1px solid var(--line); }
  .join-math > div:nth-last-child(-n+2) { border-bottom: 1px solid var(--line); }
  .join-math > div:last-child { border-bottom: 0; }

}

@media (max-width: 760px) {
  .partner-final-cta { gap: 24px; margin-bottom: 64px; padding: 32px 24px; }
  .partner-final-cta h2 { font-size: 31px; }
  .partner-final-cta .primary-action { width: 100%; }
}

/* Marketplace canvas wins over the retired guest-board background. */
.guest-page { background: #f7f3e9; color: var(--market-ink, #000f2e); font-size: var(--fs-16); line-height: 1.4; }

/* Guest-owned booking postcard. */
.booking-status { min-height: 100dvh; box-sizing: border-box; padding: clamp(22px, 6vw, 62px) 16px 70px; background: #efe8db; color: #001840; }
.booking-status__brand { display: block; width: min(210px, 58vw); margin: 0 auto 24px; }
.booking-status__brand img { display: block; width: 100%; height: auto; }
.booking-status__card { width: min(680px, 100%); box-sizing: border-box; margin: auto; overflow: hidden; border: 1px solid #d9cdbb; background: #fffdf7; box-shadow: 0 20px 56px rgba(38, 43, 36, .14); }
.booking-status__card::before { content: ""; display: block; height: 9px; background: repeating-linear-gradient(135deg, #b9362b 0, #b9362b 14px, #fffdf7 14px, #fffdf7 26px, #376b82 26px, #376b82 40px, #fffdf7 40px, #fffdf7 52px); }
.booking-status__photo { display: block; width: 100%; height: clamp(210px, 46vw, 360px); object-fit: cover; }
.booking-status__content { padding: clamp(24px, 6vw, 48px); }
.booking-status__state { display: inline-block; margin-bottom: 20px; padding: 6px 10px; border-radius: 999px; background: #eee8db; color: #524b43; font-size: .7rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.booking-status__state--pending, .booking-status__state--confirmed, .booking-status__state--completed { background: #e6eee8; color: #214735; }
.booking-status__state--cancelled, .booking-status__state--vendor-cancelled, .booking-status__state--not-confirmed, .booking-status__state--no-show { background: #f2dcd6; color: #7e2d23; }
.booking-status__hello { margin: 0; color: #b9362b; font: 700 clamp(2.3rem, 9vw, 4.2rem)/.9 "Postcard Script", var(--display); transform: rotate(-1deg); transform-origin: left center; }
.booking-status__eyebrow { margin: 14px 0 7px; color: #6b6258; font-size: .72rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.booking-status h1 { margin: 0 0 8px; font-family: var(--display); font-size: clamp(2.1rem, 8vw, 3.9rem); line-height: .95; }
.booking-status__date { margin: 0; color: #675f55; line-height: 1.5; }
.booking-status .price-breakdown { display: grid; gap: 0; margin: 24px 0; font-variant-numeric: tabular-nums; }
.booking-status .price-breakdown > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 18px; padding: 8px 0; border-bottom: 1px solid #e4dac9; }
.booking-status .price-breakdown dt, .booking-status .price-breakdown dd { margin: 0; }
.booking-status .price-breakdown dt { color: #001840; font-size: .82rem; font-weight: 700; }
.booking-status .price-breakdown dt small { display: block; margin-top: 2px; color: #6b6258; font-size: .72rem; font-weight: 500; }
.booking-status .price-breakdown dd { text-align: right; font-weight: 750; }
.booking-status .price-breakdown__discount dd { color: #b9362b; }
.booking-status .price-breakdown > .price-breakdown__total { margin-top: 4px; padding-top: 13px; border-top: 2px solid #001840; border-bottom: 0; }
.booking-status .price-breakdown__total dt, .booking-status .price-breakdown__total dd { font-size: 1rem; font-weight: 850; }
.booking-status__message { display: grid; gap: 4px; padding: 16px 18px; border: 1px solid #d9cdbb; border-radius: 12px; background: #f4eee3; line-height: 1.45; }
.booking-status__message span { color: #5c554d; }
.booking-status__cancel { margin-top: 24px; padding: 20px; border: 1px solid #d9cdbb; border-radius: 14px; background: #fffaf0; }
.booking-status__cancel h2 { margin: 0 0 6px; font-family: var(--display); font-size: 1.45rem; }
.booking-status__cancel p { margin: 0 0 14px; color: #5c554d; line-height: 1.5; }
.booking-status__cancel-trigger { min-height: 44px; padding: 0 16px; border: 1px solid #a83c32; border-radius: 10px; background: transparent; color: #842d25; font-weight: 800; }
.booking-status__cancel-dialog { width: min(calc(100% - 24px), 500px); padding: 0; border: 0; border-radius: 16px; background: #fffdf7; color: #28221d; box-shadow: 0 24px 68px rgba(38, 43, 36, .24); }
.booking-status__cancel-dialog::backdrop { background: rgba(0, 15, 46, .64); }
.booking-status__cancel-dialog form { display: grid; gap: 16px; padding: clamp(24px, 6vw, 38px); }
.booking-status__cancel-dialog h2 { margin: 0; font-family: var(--display); font-size: clamp(1.8rem, 6vw, 2.5rem); }
.booking-status__cancel-dialog p { margin: 0; color: #5c554d; line-height: 1.5; }
.booking-status__cancel-dialog label { display: grid; gap: 7px; font-weight: 800; }
.booking-status__cancel-dialog label span { color: #6b6258; font-size: .78rem; font-weight: 600; }
.booking-status__cancel-dialog textarea { min-height: 96px; padding: 12px; border: 1px solid #bfb4a4; border-radius: 10px; background: #fff; color: #28221d; font: inherit; resize: vertical; }
.booking-status__cancel-error { min-height: 1.4em; color: #842d25 !important; font-weight: 750; }
.booking-status__cancel-actions { display: flex; justify-content: flex-end; gap: 10px; }
.booking-status__cancel-actions button { min-height: 44px; padding: 0 16px; border: 1px solid #bfb4a4; border-radius: 10px; background: #fff; color: #28221d; font-weight: 800; }
.booking-status__cancel-actions .booking-status__cancel-confirm { border-color: #842d25; background: #842d25; color: #fff; }
.booking-status__cancel-actions button:disabled { opacity: .6; cursor: wait; }
.booking-status__vendor { margin-top: 24px; padding-top: 20px; border-top: 1px dashed #cfc1ae; }
.booking-status__vendor h2 { margin: 0 0 8px; color: #6b6258; font-size: .72rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.booking-status__vendor > strong { display: block; font-family: var(--display); font-size: 1.4rem; }
.booking-status__vendor div { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 8px; }
.booking-status__vendor a { color: #376b82; font-weight: 750; }
.booking-status__actions { display: flex; margin-top: 26px; }
.booking-status__actions .primary-action { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; padding: 0 20px; border-radius: 9px; background: #001840; color: #fff; font-weight: 800; text-decoration: none; }
@media (max-width: 520px) { .booking-status { padding-inline: 10px; } .booking-status__content { padding-inline: 22px; } .booking-status .price-breakdown > div { grid-template-columns: minmax(0, 1fr) auto; gap: 12px; } .booking-status__actions a { width: 100%; } .booking-status__cancel-actions { align-items: stretch; flex-direction: column-reverse; } }

/* Host preview banner on signed property links (?preview=host) — display-only, no attribution change */
.host-preview-bar { background: #1d3a5f; color: #fff; padding: 10px 16px; text-align: center; font-size: 0.9rem; line-height: 1.4; }
.host-preview-bar strong { color: #ffd9a0; }

/* Pilot status + founder block on the vendor and host pages */
.pilot-founder { display: grid; grid-template-columns: minmax(0, 7fr) minmax(280px, 5fr); align-items: center; gap: 64px; padding-block: 96px; border-top: 1px solid var(--line); }

.pilot-status h2 { max-width: 16ch; margin: 0 0 24px; color: var(--forest); font-family: var(--display); font-size: 39px; line-height: 1.1; }
.pilot-status p { max-width: 62ch; margin: 0 0 16px; color: var(--muted); font-size: 16px; line-height: 1.55; }
.pilot-founder__card { margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 8px; background: var(--paper); box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.pilot-founder__card img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
.pilot-founder__card figcaption { padding: 24px; }
.pilot-founder__card h3 { margin: 0 0 8px; color: var(--forest); font-size: 20px; }
.pilot-founder__card p { margin: 0 0 12px; color: var(--muted); font-size: 16px; line-height: 1.55; }
.pilot-founder__contact { margin: 0 !important; color: var(--ink) !important; }
.pilot-founder__contact a { display: inline-flex; align-items: center; min-height: 44px; color: var(--forest); font-weight: 700; text-underline-offset: .2em; }
@media (max-width: 780px) {
  .pilot-founder { grid-template-columns: 1fr; gap: 32px; padding-block: 64px; }
  .pilot-status h2 { font-size: 31px; }
}

/* Unified operational world for every non-guest surface — tokens from DESIGN.md. */
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) {
  --cream: #f7f3e9;
  --cream-2: #eeeae1;
  --paper: #fffdf8;
  --paper-deep: #f7f3e9;
  --pine: #001840;
  --pine-2: #000f2e;
  --forest: #001840;
  --forest-2: #000f2e;
  --amber: #e31925;
  --amber-2: #b80f1a;
  --amber-deep: #b80f1a;
  --amber-hover: #b80f1a;
  --sage: #eeeae1;
  --sage-2: #e2ddd1;
  --ink: #000f2e;
  --muted: #566074;
  --line: #cfc8b8;
  --display: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif;
  --ui: "Inter", "Inter Fallback", system-ui, sans-serif;
  --soft-shadow: 0 3px 8px rgba(0,24,64,.1), 0 18px 42px rgba(0,24,64,.09);
  background: #f7f3e9;
  color: #000f2e;
  font-family: "Inter", "Inter Fallback", system-ui, sans-serif;
}

:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) ::selection,
.error-shell ::selection { background: #dbe9ed; color: #000f2e; }
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) * { scrollbar-color: #5f665f #eeeae1; }
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) :focus-visible,
.error-shell :focus-visible { outline: 2px solid #376b82; outline-offset: 2px; }

:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) h1,
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) h2,
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) h3,
.error-shell h1 { color: var(--ink); font-family: "Inter", "Inter Fallback", system-ui, sans-serif; letter-spacing: -.025em; }

:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) .brand,
.error-shell .brand { color: var(--ink); font-family: "Inter", "Inter Fallback", system-ui, sans-serif; font-size: 1.25rem; font-weight: 650; letter-spacing: -.025em; }
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) .brand > span > span { color: var(--amber); }

:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) input,
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) select,
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) textarea,
.operator-card input {
  min-height: 48px;
  border: 1px solid #aaa392;
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
}
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) input::placeholder,
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) textarea::placeholder { color: var(--muted); }

:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) .secondary-action {
  min-height: 46px;
  border: 1px solid #aaa392;
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
  font-size: .88rem;
  font-weight: 600;
}
:where(.public-page, .dashboard-page, .auth-page, .admin-login-page) .secondary-action:hover { border-color: var(--ink); background: var(--paper-deep); color: var(--ink); }

/* Shared public navigation */
.public-header {
  min-height: 76px;
  padding: 10px max(24px, calc((100vw - 1320px) / 2));
  border-bottom: 1px solid var(--line);
  background: rgba(255,253,248,.96);
  backdrop-filter: blur(12px);
}
.brand-art { display: block; line-height: 0; }
.public-header .brand-responsive { flex: 0 0 auto; }
.public-header .brand-responsive img { display: block; width: clamp(190px, 19vw, 224px); height: auto; }
.public-header nav { gap: clamp(18px, 2.2vw, 32px); }
.public-header nav a { color: var(--ink); font-size: .84rem; font-weight: 550; }
.public-header nav a:not(.public-login)::after { bottom: -10px; height: 2px; background: var(--ink); }
.public-header .public-login { min-height: 44px; padding: 0 14px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); }
.public-header .public-login:hover { border-color: var(--ink); background: var(--paper-deep); color: var(--ink); }
.public-menu { border-color: var(--line); border-radius: 999px; color: var(--ink); }

.public-footer {
  grid-template-columns: minmax(260px, 1fr) 150px 120px;
  gap: 48px;
  padding: 58px max(24px, calc((100vw - 1320px) / 2)) 34px;
  border-top: 1px solid var(--line);
  background: var(--paper-deep);
  color: var(--ink);
}
.public-footer .brand { color: var(--ink); }
.public-footer .footer-lockup img { display: block; width: min(224px, 100%); height: auto; }
.public-footer .footer-brand p { color: var(--muted); }
.public-footer .footer-brand small { color: var(--muted); }
.public-footer nav strong { color: var(--ink); }
.public-footer nav a { display: inline-flex; align-items: center; min-height: 44px; color: var(--muted); }
.public-footer nav a:hover { color: var(--ink); }
.footer-disclosure { grid-column: 1 / -1; padding-top: 22px; border-top: 1px solid var(--line); color: var(--muted); }

/* Marketplace homepage */
.marketplace-home { overflow: hidden; }
.marketplace-home .site-container { width: min(100% - 48px, 1320px); }
.home-market-hero {
  display: grid;
  grid-template-columns: minmax(0, .92fr) minmax(480px, 1.08fr);
  align-items: center;
  gap: clamp(44px, 7vw, 96px);
  min-height: 720px;
  padding-block: clamp(58px, 8vw, 112px);
}
.home-market-copy h1 { max-width: 11ch; margin-bottom: 24px; font-size: clamp(3.5rem, 6vw, 6rem); font-weight: 650; line-height: .96; }
.home-market-copy > p { max-width: 57ch; color: var(--muted); font-size: clamp(1rem, 1.4vw, 1.15rem); line-height: 1.58; }
.home-search-link {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr auto;
  align-items: center;
  max-width: 720px;
  min-height: 72px;
  margin-top: 34px;
  padding: 0 10px 0 8px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 3px 12px rgba(0,0,0,.1);
  text-decoration: none;
  transition: box-shadow 160ms ease-out, transform 160ms ease-out;
}
.home-search-link:hover { box-shadow: 0 6px 20px rgba(0,0,0,.14); transform: translateY(-1px); }
.home-search-link > span { display: grid; gap: 1px; min-width: 0; padding: 0 18px; border-right: 1px solid var(--line); }
.home-search-link > span:nth-child(3) { border-right: 0; }
.home-search-link small { color: var(--muted); font-size: .68rem; }
.home-search-link strong { overflow: hidden; font-size: .84rem; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.home-search-link b { display: flex; align-items: center; justify-content: center; gap: 8px; min-width: 156px; height: 46px; padding: 0 15px; border-radius: 999px; background: var(--amber); color: #ffffff; font-size: .76rem; font-weight: 600; white-space: nowrap; }
.home-search-link b span { display: inline; }
.home-search-link svg { width: 19px; }
.home-trust-line { display: flex; align-items: center; gap: 7px; margin-top: 18px; color: var(--muted); font-size: .76rem !important; }
.home-trust-line svg { width: 17px; color: var(--amber); }
.home-market-photo { position: relative; min-height: 580px; margin: 0; overflow: hidden; border-radius: 20px; }
.home-market-photo img { width: 100%; height: 100%; min-height: 580px; object-fit: cover; }
.home-market-photo figcaption { position: absolute; right: 18px; bottom: 18px; display: grid; gap: 1px; padding: 12px 16px; border-radius: 14px; background: var(--paper); box-shadow: 0 5px 18px rgba(0,0,0,.15); font-size: .78rem; }
.home-market-photo figcaption span { color: var(--muted); }
@keyframes marketplace-home-enter {
  from { opacity: .001; transform: translateY(18px); filter: blur(7px); }
  to { opacity: 1; transform: none; filter: blur(0); }
}
.home-market-copy { animation: marketplace-home-enter 520ms cubic-bezier(.16,1,.3,1) both; }
.home-market-photo { animation: marketplace-home-enter 680ms 70ms cubic-bezier(.16,1,.3,1) both; }

.home-market-section { padding-block: 40px 96px; }
.home-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 22px; }
.home-section-heading h2, .home-benefit-intro h2, .home-partner-paths h2, .home-final-cta h2 { margin-bottom: 7px; font-size: clamp(2rem, 3.3vw, 3.2rem); font-weight: 650; line-height: 1.05; }
.home-section-heading p, .home-benefit-intro p, .home-partner-paths > div > p, .home-final-cta p { margin: 0; color: var(--muted); }
.home-section-heading > a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; font-size: .84rem; font-weight: 600; }
.home-section-heading > a svg { width: 17px; }
.home-experience-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 24px; }
.home-experience-card { color: var(--ink); text-decoration: none; }
.home-experience-card > div { position: relative; aspect-ratio: 1 / 1.05; overflow: hidden; border-radius: 16px; background: #f0f0f0; }
.home-experience-card img { width: 100%; height: 100%; object-fit: cover; transition: transform 450ms cubic-bezier(.16,1,.3,1); }
.home-experience-card:hover img { transform: scale(1.025); }
.home-experience-card > div > span { position: absolute; top: 12px; left: 12px; padding: 7px 10px; border-radius: 999px; background: rgba(255,255,255,.94); font-size: .68rem; font-weight: 600; }
.home-experience-card > small { display: block; margin-top: 11px; color: var(--muted); font-size: .72rem; }
.home-experience-card h3 { margin: 3px 0 5px; font-size: .95rem; font-weight: 600; line-height: 1.28; }
.home-experience-card p { margin: 0; font-size: .78rem; line-height: 1.4; }
.home-experience-card .home-rating { color: var(--muted); }
.home-rating strong { color: var(--ink); font-weight: 550; }

.home-market-benefits { padding-block: 92px; background: var(--paper-deep); }
.home-market-benefits > .site-container { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(50px, 8vw, 110px); }
.home-benefit-intro h2 { max-width: 11ch; }
.home-benefit-intro p { max-width: 46ch; }
.home-benefit-list { border-top: 1px solid var(--line); }
.home-benefit-list article { display: grid; grid-template-columns: 44px 1fr; gap: 18px; padding: 24px 0; border-bottom: 1px solid var(--line); }
.home-benefit-list article > svg { width: 28px; height: 28px; stroke-width: 1.6; }
.home-benefit-list h3 { margin-bottom: 5px; font-size: 1.05rem; font-weight: 600; }
.home-benefit-list p { max-width: 58ch; margin: 0; color: var(--muted); font-size: .9rem; }

.home-partner-paths { display: grid; grid-template-columns: 1.25fr 1fr 1fr; gap: 18px; padding-block: 96px; }
.home-partner-paths > div { padding-right: clamp(20px, 4vw, 60px); }
.home-partner-paths > a { position: relative; display: grid; align-content: space-between; min-height: 230px; padding: 24px; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); text-decoration: none; transition: border-color 160ms ease-out, transform 160ms ease-out; }
.home-partner-paths > a:hover { border-color: var(--ink); transform: translateY(-2px); }
.home-partner-paths > a span { color: var(--muted); font-size: .72rem; }
.home-partner-paths > a strong { max-width: 15ch; font-size: 1.35rem; font-weight: 600; line-height: 1.15; }
.home-partner-paths > a svg { position: absolute; right: 22px; bottom: 22px; width: 20px; }
.home-final-cta { display: flex; align-items: center; justify-content: space-between; gap: 32px; margin-bottom: 96px; padding: 42px; border-radius: 20px; background: var(--ink); color: #ffffff; }
.home-final-cta h2, .public-page .home-final-cta h2 { color: #ffffff; }
.home-final-cta p { color: #cddbd6; }
.home-final-cta .primary-action { flex: 0 0 auto; }

/* Partner acquisition pages */
.public-page:not(.guest-page) .eyebrow { display: none; }
.public-page h1, .public-page h2, .public-page h3 { font-family: "Inter", "Inter Fallback", system-ui, sans-serif; }
.public-page h1 { color: var(--ink); font-size: clamp(3rem, 5vw, 4.8rem); font-weight: 650; line-height: 1.02; }
.public-page h2 { color: var(--ink); font-size: clamp(2rem, 3vw, 3rem); font-weight: 650; line-height: 1.08; }
.public-page h3 { color: var(--ink); font-weight: 600; }

.public-actions { gap: 12px; }
.public-primary { min-height: 50px; border-radius: 8px; background: var(--amber); color: #ffffff; box-shadow: none; }
.public-primary:hover { background: var(--amber-hover); color: #ffffff; transform: translateY(-1px); box-shadow: none; }
.micro-trust, .join-trust { color: var(--muted); }
.host-kpis { border-color: var(--line); }
.host-kpis li { border-color: var(--line); }
.host-kpis strong { color: var(--ink); font-family: "Inter", "Inter Fallback", system-ui, sans-serif; font-size: 1.8rem; }
.founding-window { background: var(--ink); color: #ffffff; }
.founding-window h2 { color: #ffffff; }
.founding-window p, .founding-window dt { color: #cddbd6; }
.founding-window dd { color: #ffffff; }
.perk-console { border: 1px solid var(--line); border-radius: 20px; background: var(--paper); color: var(--ink); box-shadow: 0 2px 4px rgba(0,0,0,.07), 0 12px 28px rgba(0,0,0,.08); }
.perk-console::before, .perk-console::after { display: none; }
.perk-console-head, .perk-console-title, .perk-console dl, .perk-console > p { border-color: var(--line); }
.perk-console h2, .perk-console strong, .perk-console dd { color: var(--ink); font-family: "Inter", "Inter Fallback", system-ui, sans-serif; }
.join-page .perk-console-head, .join-page .perk-console-head strong, .join-page .perk-console-title small,
.join-page .perk-console dt, .join-page .perk-console > p { color: var(--muted); }
.join-page .perk-console-title h2 { color: var(--ink); }
.join-page .perk-price span { color: var(--muted); }
.join-page .perk-console-head, .join-page .perk-console dl div { border-color: var(--line); }

.perk-toggle { background: var(--amber); }
.partner-flow { padding-block: 92px; }
.partner-flow ol { border-color: var(--line); }
.partner-flow li { border-color: var(--line); background: var(--paper); }
.partner-flow li > span { background: var(--ink); color: #ffffff; }
.partner-flow ol::before { background: var(--line); }
.partner-flow li > svg { color: var(--ink); }

.apply-resources a { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink); }
.partner-form, .application-confirmation { border: 1px solid var(--line); border-radius: 8px; background: var(--paper); color: var(--ink); }
.partner-form label { color: var(--ink); }
.partner-form input, .partner-form select, .partner-form textarea { background: var(--paper); }
.partner-form input:focus, .partner-form select:focus, .partner-form textarea:focus { border-color: var(--ink); outline: 2px solid var(--ink); }
.founder-story { background: var(--paper); color: var(--ink); }
.founder-copy h2 { color: var(--ink); }
.founder-copy p { color: var(--muted); }

.host-ledger h2 { color: var(--ink); }
.host-ledger { background: var(--paper); }
.faq-section { padding-block: 92px; }
.faq-list { border-color: var(--line); }
.faq-list details, .faq-list summary { border-color: var(--line); }
.faq-list summary { color: var(--ink); }
.faq-list p { color: var(--muted); }
.mobile-apply-bar { border: 0; border-radius: 8px; background: var(--amber); color: #ffffff; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.public-page .partner-final-cta h2 { font-size: 39px; }
.partner-final-cta .primary-action { border-radius: 8px; }

/* Authentication, legal, and utility pages */
.partner-auth { grid-template-columns: minmax(380px, 45%) 1fr; }
.auth-brand-panel { background: var(--ink); color: #ffffff; }
.auth-brand-panel::after { background: none; }
.auth-brand-panel .brand, .auth-brand-panel .brand > span > span { color: #f5f0e4; }
.auth-brand-panel .auth-lockup img { display: block; width: min(230px, 100%); height: auto; }
.auth-brand-panel h1 { color: #ffffff; font-family: var(--display); font-size: clamp(3rem, 5vw, 4.5rem); font-weight: 650; }
.auth-brand-panel > div > p { color: #cddbd6; }
.auth-brand-panel ol, .auth-brand-panel li { border-color: rgba(255,255,255,.22); }
.auth-brand-panel li svg { color: var(--amber); }
.auth-brand-panel :focus-visible { outline-color: #ffffff; }
.auth-form-panel { background: var(--paper); }
.auth-heading h2, .auth-success h2 { color: #001840; font-family: var(--display); font-weight: 650; }
.auth-heading p, .auth-success p, .auth-microcopy, .auth-apply-links { color: var(--muted); }
.auth-form-wrap form > label, .auth-form-wrap .auth-field > label, .auth-form-wrap legend { color: var(--ink); }
.password-field button { color: var(--ink); }
.password-field button:hover { background: var(--sage-2); }
.role-segments { border-color: var(--line); background: var(--paper-deep); }
.role-segments input {
  width: 1px;
  height: 1px;
  min-height: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.role-segments input:checked + span { background: var(--ink); color: #ffffff; }
.auth-form-wrap .primary-action { background: var(--amber); color: #ffffff; }
.auth-form-wrap .primary-action:hover { background: var(--amber-hover); }
.demo-entry { border-color: var(--line); }
.demo-entry a, .auth-apply-links a, .auth-support a, .demo-entry code { color: var(--ink); }
.legal-layout { background: var(--paper); }
.legal-header > span { background: #f4f4f4; color: var(--muted); }
.legal-header h1, .legal-copy h2 { color: var(--ink); font-family: "Inter", "Inter Fallback", system-ui, sans-serif; }
.legal-header p, .legal-copy, .legal-toc a { color: var(--muted); }
.legal-toc a { border-color: var(--line); }
.legal-toc a:hover, .legal-toc a.is-active { border-color: var(--ink); color: var(--ink); }
.legal-copy h2 span { color: var(--amber); }
.legal-copy section { border-color: var(--line); }
.legal-note, .legal-contact { background: var(--paper-deep); color: var(--ink); }
.operator-entry { background: var(--paper-deep); }
.operator-entry::before { display: none; }
.operator-card { border: 1px solid var(--line); border-radius: 20px; background: var(--paper); color: var(--ink); box-shadow: 0 2px 4px rgba(0,0,0,.07), 0 18px 48px rgba(0,0,0,.1); }
.operator-card .eyebrow { display: none; }
.operator-card h1 { color: var(--ink); font-family: "Inter", "Inter Fallback", system-ui, sans-serif; font-weight: 650; }
.operator-card label { color: var(--ink); }
.operator-card input { background: var(--paper); color: var(--ink); }
.operator-card .field-message, .operator-note { color: var(--muted); }
.operator-note svg { color: var(--amber); }
.error-shell { min-height: 100vh; width: min(100% - 36px, 620px); padding-block: 72px; color: var(--ink); font-family: "Inter", "Inter Fallback", system-ui, sans-serif; }
.error-shell h1 { margin: 24px 0 10px; font-size: clamp(2.6rem, 7vw, 4.6rem); font-weight: 650; line-height: 1; }
.error-shell > p { color: var(--muted); }

/* Operational dashboards */
.dashboard-page { background: #eeeae1; }
.dashboard-nav {
  width: 248px;
  padding: 22px 16px;
  border-right: 0;
  background: #000f2e url('/assets/materials/enamel-patina.png') center/cover;
  color: #ffffff;
}
.dashboard-nav::after { display: block; }
.dashboard-nav .brand { color: #ffffff; }
.dashboard-nav .brand > span > span { color: #ef8c82; }
.dashboard-nav .dashboard-lockup img { display: block; width: min(192px, 100%); height: auto; }
.dashboard-nav .brand:not(.dashboard-lockup) img { width: 38px; height: 38px; }
.market-brand img { width: 34px; height: 34px; }
.dashboard-nav nav { gap: 3px; margin-top: 48px; }
.dashboard-nav nav a { color: #cddbd6; font-size: .82rem; font-weight: 650; }
.dashboard-nav nav a:hover { background: rgba(255,255,255,.09); color: #ffffff; }
.dashboard-nav nav a.active { background: #fffdf8; color: #000f2e; }
.dashboard-nav nav svg { stroke-width: 1.8; }
.nav-account { grid-template-columns: 38px 1fr 44px; border-color: rgba(255,255,255,.18); }
.avatar { background: #376b82; color: #ffffff; }
.nav-account small { color: #a9beb6; }
.nav-account button { width: 44px; height: 44px; color: #dfe8e1; }
.nav-account button:hover { color: #ffffff; }
.dashboard-main { width: calc(100% - 248px); margin-left: 248px; padding: 46px clamp(28px, 5vw, 76px) 92px; }
.dashboard-header { align-items: center; margin-bottom: 30px; }
.dashboard-header h1 { max-width: 15ch; margin-bottom: 7px; color: #001840; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; font-size: clamp(2.7rem, 4.8vw, 4.1rem); font-weight: 750; line-height: .92; }
.dashboard-header p:last-child { color: #5f665f; }
.metric-strip { gap: 1px; margin-bottom: 56px; overflow: hidden; border: 1px solid #cfc8b8; border-radius: 14px; background: #cfc8b8; }
.metric-strip > div { padding: 22px; border: 0; background: #fffdf8; }
.metric-strip > div:first-child { padding-left: 22px; }
.metric-strip span { color: #5f665f; font-size: .7rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.metric-strip small { color: #5f665f; font-size: .68rem; }
.metric-strip strong { margin: 7px 0 5px; color: #001840; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; font-size: clamp(2.1rem, 3vw, 3.2rem); font-weight: 750; letter-spacing: -.02em; }
.dashboard-section { margin-top: 64px; scroll-margin-top: 24px; }
.dashboard-section > .section-heading { align-items: center; margin-bottom: 18px; }
.dashboard-section > .section-heading h2, .payout-callout h2, .promo-confirm h2 { color: #001840; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; font-size: clamp(1.9rem, 2.8vw, 2.55rem); font-weight: 750; }
.dashboard-section > .section-heading p { color: #5f665f; }
.record-count, .offer-policy, .demo-badge { border-color: #cfc8b8; color: #5f665f; }
.data-table-wrap { border: 1px solid #cfc8b8; border-radius: 14px; background: #fffdf8; }
th { padding: 13px 15px; background: #f7f3e9; color: #5f665f; font-size: .68rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
td { padding: 14px 15px; border-color: #e5dfd2; }
td small { color: #5f665f; }
.status { background: #ddd9d0; color: #645f55; font-size: .66rem; letter-spacing: 0; }
.status-booked, .status-confirmed, .status-paid { background: #dceae4; color: #235f48; }
.status-clicked { background: #fff1d6; color: #7a4d00; }
.status-disputed { background: #fbe6e4; color: #8b2c27; }
.property-assets { gap: 18px; }
.property-asset { overflow: hidden; border: 1px solid #cfc8b8; border-radius: 14px; background: #fffdf8; }
.property-copy h3 { color: #001840; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; font-size: 1.65rem; font-weight: 750; }
.property-copy h3 span, .property-copy > p { color: #5f665f; }
.copy-text { color: #001840; font-weight: 700; }
.promo-field strong { border-color: #001840; background: #f7f3e9; color: #001840; }
.qr-card { border-color: #cfc8b8; }
.qr-card a { color: #001840; }
.payout-callout { border: 0; border-radius: 14px; background: #000f2e url('/assets/materials/enamel-patina.png') center/cover; color: #ffffff; box-shadow: none; }
.dashboard-section.payout-callout h2 { color: #ffffff; }
.payout-callout p:last-child { color: #cddbd6; }
.payout-callout .primary-action { background: #b93f38; color: #ffffff; }
.locked-action-panel, .action-notice, .onboarding-track, .promo-confirm { border: 1px solid #cfc8b8; border-radius: 14px; background: #fffdf8; box-shadow: none; }
.locked-action-panel > svg, .locked-action-panel h3, .action-notice, .agreement-panel summary, .agreement-receipt, .promo-locked svg { color: #001840; }
.locked-action-panel h3, .agreement-copy h3 { font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; }
.locked-action-panel p, .action-notice span, .onboarding-steps p { color: #5f665f; }
.confirmation-list, .property-performance, .offering-editor, .lead-roster, .dispute-list, .partner-roster, .property-roster { border-color: var(--line); }
.confirmation-row, .performance-row, .offering-editor details, .lead-row, .partner-roster article, .property-roster article { border-color: var(--line); }
.empty-state svg { color: #b93f38; }
.empty-state h3 { color: #001840; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; }
.empty-state p { color: #5f665f; }
.bar-track { background: var(--sage-2); }
.bar-track span { background: #b93f38; }
.onboarding-track { padding: 28px; }
.onboarding-steps { border-color: var(--line); }
.onboarding-steps li { border-color: var(--line); }
.onboarding-steps li > span { border-color: #001840; color: #001840; }
.onboarding-steps li.complete > span { background: #001840; color: #ffffff; }
.offer-control { border-color: #cfc8b8; background: #fffdf8; }
.offer-control > header, .pause-offer { border-color: var(--line); }
.offer-control > header strong { color: #001840; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; }
.pause-offer { background: #f7f3e9; }
.pause-offer button, .offer-control summary { color: #001840; }
.offer-days label span { border-color: #aca99e; color: #001840; }
.offer-days input:checked + span { border-color: #001840; background: #001840; color: #ffffff; }
.vendor-avatar, .lead-score { background: #001840; color: #ffffff; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; }
.lead-score strong, .funnel-summary strong { color: inherit; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; }
.funnel-summary { border-color: var(--line); }
.funnel-summary div { border-color: var(--line); }
.funnel-summary strong { color: #001840; }
.crm-filters label, .lead-update label { color: #5f665f; letter-spacing: .04em; text-transform: uppercase; }
.void-dialog { background: #fffdf8; color: #000f2e; }
.void-dialog::backdrop { background: rgba(0,0,0,.54); }
.void-dialog h2 { color: #001840; font-family: "Postcard Serif", "Postcard Serif Fallback", Georgia, serif; }
.void-dialog p { color: #5f665f; }
.void-dialog #voidDialogContext { color: #001840; }
.host-public-page > .public-header { display: flex; visibility: visible; }
.dashboard-page .crm-filters input, .dashboard-page .crm-filters select, .dashboard-page .lead-update input, .dashboard-page .lead-update select,
.dashboard-page .channel-input-form input, .dashboard-page .channel-input-form select { min-height: 44px; }

@media (max-width: 1080px) {
  .home-market-hero { grid-template-columns: 1fr 1fr; gap: 38px; min-height: 640px; }
  .home-market-copy h1 { font-size: clamp(3.2rem, 6vw, 4.8rem); }
  .home-market-photo, .home-market-photo img { min-height: 500px; }
  .home-experience-grid { gap: 16px; }
  .home-partner-paths { grid-template-columns: 1fr 1fr; }
  .home-partner-paths > div { grid-column: 1 / -1; max-width: 680px; padding: 0 0 18px; }
}

@media (max-width: 980px) {
  /* `top: 76px` + `height: calc(100vh - 76px)` (not `inset: 76px 0 auto`/`0`): `.public-header`
     carries `backdrop-filter`, which makes it the containing block for this fixed nav, so a
     `bottom` offset was never resolving against the viewport, only against the ~100px header box.
     With `bottom: auto` that silently content-sized the panel (leaving the hero paragraph peeking
     in below the last link, round 3, Sonnet P3); with `bottom: 0` it collapsed to a ~40px sliver.
     `top` still works because the header's own top edge sits at the viewport top (it is
     `position: sticky; top: 0`); `height` is built from a viewport unit instead of `bottom` so it
     stays correct regardless of which box it is contained by. Push-below-header clearance lives
     in `top`/`height`, not `padding-top`, so it cannot be clobbered by `.public-page`'s own,
     higher-specificity `padding` override below (round 4 follow-up). */
  .public-header nav { position: fixed; top: 76px; right: 0; left: 0; height: calc(100vh - 76px); overflow-y: auto; display: none; padding: 18px 24px 26px; border-bottom: 1px solid var(--line); background: var(--paper); }
  .public-header nav.is-open { display: grid; }
  .public-header nav a { min-height: 48px; padding: 0; border-bottom: 1px solid var(--sage-2); }
  .public-header nav a::after { display: none; }
  .public-header .public-login { justify-content: center; border: 0; border-radius: 10px; background: var(--ink); color: #ffffff; }
  .public-menu { display: inline-flex; }
  .home-market-hero { grid-template-columns: 1fr; padding-top: 52px; }
  .home-market-copy { max-width: 760px; }
  .home-market-photo { min-height: 520px; }
  .home-market-photo img { min-height: 520px; }
  .home-market-benefits > .site-container { grid-template-columns: 1fr; gap: 42px; }
  .home-benefit-intro h2 { max-width: 15ch; }
  .dashboard-nav { position: static; width: 100%; min-height: 76px; grid-template-columns: auto 1fr auto; padding: 12px 18px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.14); }
  .dashboard-nav nav { margin: 0; }
  .dashboard-nav nav a { padding: 0 13px; font-size: 0; }
  .dashboard-nav nav a svg { width: 21px; height: 21px; }
  .dashboard-nav nav a.active { background: #fffdf8; }
  .dashboard-main { width: 100%; margin: 0; padding: 34px 24px 74px; }
}

@media (max-width: 760px) {
  .marketplace-home .site-container, .site-container { width: min(100% - 32px, 1320px); }
  .home-market-hero { min-height: 0; padding-block: 38px 68px; }
  .home-market-copy h1 { max-width: 12ch; font-size: clamp(2.65rem, 12vw, 4rem); }
  .home-market-copy > p { font-size: 1rem; }
  .home-search-link { grid-template-columns: 1fr auto; min-height: 62px; margin-top: 26px; }
  .home-search-link > span { display: none; }
  .home-search-link > span:first-child { display: grid; border: 0; }
  .home-search-link b { min-width: 150px; height: 42px; }
  .home-trust-line { align-items: flex-start; line-height: 1.45; }
  .home-market-photo, .home-market-photo img { min-height: 430px; }
  .home-market-section { padding-block: 0 72px; }
  .home-section-heading { align-items: start; }
  .home-experience-grid { grid-auto-columns: 45%; grid-auto-flow: column; grid-template-columns: none; gap: 12px; margin-right: -16px; overflow-x: auto; padding-right: 16px; scroll-snap-type: x mandatory; scrollbar-width: none; }
  .home-experience-grid::-webkit-scrollbar { display: none; }
  .home-experience-card { scroll-snap-align: start; }
  .home-market-benefits { padding-block: 68px; }
  .home-partner-paths { grid-template-columns: 1fr; padding-block: 72px; }
  .home-partner-paths > div { grid-column: auto; }
  .home-partner-paths > a { min-height: 190px; }
  .home-final-cta { display: grid; margin-bottom: 72px; padding: 28px 24px; }
  .home-final-cta .primary-action { justify-self: start; }
  .public-footer { grid-template-columns: 1fr 1fr; padding-inline: 18px; }
  .public-footer .footer-brand, .footer-disclosure { grid-column: 1 / -1; }

  .partner-form, .application-confirmation { padding: 24px 16px; }
  .public-page .partner-final-cta h2 { font-size: 31px; }
  .partner-auth { grid-template-columns: 1fr; }
  .auth-brand-panel { min-height: 112px; justify-content: center; padding: 18px 24px; }
  .auth-brand-panel .auth-lockup img { width: min(210px,100%); }
  .auth-brand-panel ol { display: none; }
  .auth-form-panel { min-height: calc(100vh - 112px); padding-block: 36px 64px; }
  .legal-layout { padding-top: 52px; }
  .dashboard-nav { grid-template-columns: 1fr auto; }
  .dashboard-nav nav { position: fixed; z-index: 60; inset: auto 8px 8px; justify-content: space-around; padding: 7px; border: 1px solid rgba(255,255,255,.14); border-radius: 14px; background: rgba(0,15,46,.97); box-shadow: 0 4px 22px rgba(0,15,46,.24); }
  /* Labeled bottom bar (matches the vendor pattern): icon over a short label, 44px+ targets. */
  .dashboard-nav nav a { flex: 1 1 0; min-width: 64px; min-height: 48px; flex-direction: column; gap: 3px; justify-content: center; color: #cddbd6; font-size: .62rem; font-weight: 750; letter-spacing: .02em; }
  .dashboard-nav nav a svg { width: 20px; height: 20px; flex: 0 0 20px; }
  .dashboard-nav nav a.active { background: #fffdf8; color: #000f2e; }
  .dashboard-main { padding: 30px 16px 104px; }
  .dashboard-header h1 { font-size: 2.65rem; }
  .metric-strip { grid-template-columns: repeat(2, 1fr); }
  .metric-strip > div:nth-child(n+3) { border-top: 0; }
  .dashboard-section { margin-top: 52px; }
  .dashboard-section > .section-heading { align-items: flex-start; }
  .data-table-wrap { margin-inline: 0; padding-inline: 0; }
  .onboarding-track { margin-inline: 0; padding: 20px 16px; }
}

@media (max-width: 430px) {
  .public-header { min-height: 68px; padding-inline: 16px; }
  .public-header nav { top: 68px; height: calc(100vh - 68px); }
  .public-header .brand-responsive img { width: 190px; height: auto; }
  .home-market-photo, .home-market-photo img { min-height: 350px; }
  .home-market-photo { border-radius: 16px; }
  .home-market-photo figcaption { right: 12px; bottom: 12px; }
  .home-section-heading > a { font-size: 0; min-width: 48px; justify-content: center; }
  .home-section-heading > a svg { width: 20px; }
  .home-experience-grid { grid-auto-columns: 45%; }
  .home-partner-paths > a { min-height: 170px; }
  .public-footer { grid-template-columns: 1fr; }
  .public-footer .footer-brand, .footer-disclosure { grid-column: auto; }
  .partner-form { grid-template-columns: 1fr; }
  .partner-form .span-two { grid-column: auto; }

  .dashboard-header { align-items: flex-start; }
  .metric-strip > div { padding: 17px 14px; }
  .metric-strip > div:first-child { padding-left: 14px; }
  .metric-strip strong { font-size: 2rem; }
  .property-asset { grid-template-columns: 1fr; }
  .qr-card { border-left: 0; border-top: 1px solid var(--line); }
  .payout-callout { display: grid; padding: 22px; }
}

@media (prefers-reduced-motion: reduce) {
  .home-experience-card img, .home-search-link { transition: none; }
  .home-market-copy, .home-market-photo { animation: none; }
}

/* Self-hosted type (all OFL, latin subsets): the guide looks the same on every guest's phone. */
@font-face {
  font-family: "Postcard Serif";
  src: url("/assets/fonts/Rokkitt-latin.woff2") format("woff2"), url("/assets/fonts/Rokkitt-wght.ttf") format("truetype");
  font-display: swap;
  font-weight: 100 900;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  src: url("/assets/fonts/Inter-latin.woff2") format("woff2");
  font-display: swap;
  font-weight: 100 900;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Metric-matched local fallbacks (measured with fontkit against the shipped woff2 files) keep the
   swap from Georgia/Arial to Rokkitt/Inter from shifting layout while the preloaded fonts arrive. */
@font-face {
  font-family: "Postcard Serif Fallback";
  src: local("Georgia");
  size-adjust: 96.5%;
  ascent-override: 84.7%;
  descent-override: 33.2%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Inter Fallback";
  src: local("Arial");
  size-adjust: 107.6%;
  ascent-override: 90%;
  descent-override: 22.4%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Postcard Logo";
  src: url("/assets/brand/Kalam-Bold.ttf") format("truetype");
  font-display: swap;
  font-weight: 700;
}

:root {
  --postcard-cream: #f7f3e9;
  --postcard-paper: #fffdf8;
  --postcard-ink: #001840;
  --postcard-ink-deep: #000f2e;
  --postcard-red: #e31925;
  --postcard-red-dark: #b80f1a;
  --postcard-blue: #24527a;
  --postcard-blue-soft: #e5edf8;
  --logo-navy: #001840;
  --logo-red: #e31925;
  --postcard-rule: #cfc8b8;
  --postcard-muted: #566074;
  --postcard-shadow: 0 3px 8px rgba(0, 24, 64, .1), 0 18px 42px rgba(0, 24, 64, .09);
  --postcard-font-logo: "Postcard Logo", "Kalam", "Segoe Print", cursive;
  --forest: var(--postcard-ink);
  --paper: var(--postcard-cream);
  --ink: var(--postcard-ink-deep);
  --muted: var(--postcard-muted);
  --line: var(--postcard-rule);
  --coral: var(--postcard-red);
}

html { background: var(--postcard-cream); scrollbar-color: var(--postcard-red) var(--postcard-cream); }
body { background-color: var(--postcard-cream); color: var(--postcard-ink-deep); }
body::selection, ::selection { background: var(--postcard-blue-soft); color: var(--postcard-ink-deep); }
a { text-underline-offset: .18em; }
/* The one authoritative focus ring (house rule: 2px navy, 2px offset) for every page that does not
   load the backend cockpit; backend-watermelon.css governs its own green ring under .dashboard-page
   / .auth-page / .admin-login-page. Kept as the single full shorthand so page-specific partial
   outline-color overrides (now removed from styles.css and postcard-card.css) cannot reintroduce a
   second focus color by only winning on outline-width/outline-style. */
:focus-visible { outline: 2px solid var(--postcard-ink) !important; outline-offset: 2px !important; }
input, select, textarea { caret-color: var(--postcard-red); }

h1, h2, h3, .market-intro h1, .shelf-heading h2, .dashboard-header h1, .section-heading h2, .home-market-copy h1, .home-section-heading h2, .home-benefit-intro h2, .home-partner-paths h2, .home-final-cta h2, .auth-heading h2 {
  font-family: var(--display);
  font-weight: 650;
  letter-spacing: -.025em;
}
.public-page h1, .public-page h2, .public-page h3, .dashboard-page h1, .dashboard-page h2,
.marketplace-home h1, .marketplace-home h2, .join-page h1, .join-page h2, .host-public-page h1, .host-public-page h2 {
  font-family: var(--display) !important;
}

.public-header {
  background: rgba(247, 243, 233, .97);
  border-color: var(--postcard-rule);
}
.public-header::after, .market-header::after {
  content: "";
  position: absolute;
  inset: auto 0 -7px;
  height: 7px;
  background: repeating-linear-gradient(135deg, var(--postcard-red) 0 10px, transparent 10px 18px, var(--postcard-blue) 18px 28px, transparent 28px 36px);
  opacity: .92;
  pointer-events: none;
}
.public-header nav a { color: var(--postcard-ink); }
.public-header nav a[aria-current="page"] { color: var(--postcard-ink); }
.primary-action, .public-primary, .selection-apply, .reserve-button, .mobile-reserve-bar button {
  background: var(--postcard-ink) !important;
  color: #fff !important;
  border-color: var(--postcard-ink) !important;
}
.primary-action:hover, .public-primary:hover, .selection-apply:hover, .reserve-button:hover { background: var(--postcard-ink-deep) !important; }
.secondary-action { border-color: var(--postcard-ink) !important; color: var(--postcard-ink) !important; background: var(--postcard-paper) !important; }
.secondary-action:hover { background: #ede8dc !important; }

.public-footer {
  background: var(--postcard-ink-deep);
  color: var(--postcard-cream);
  border-top: 7px solid transparent;
  border-image: repeating-linear-gradient(135deg, var(--postcard-red) 0 10px, transparent 10px 18px, #79a3b5 18px 28px, transparent 28px 36px) 7;
}
.public-page .public-footer a, .public-page .public-footer strong, .public-footer a, .public-footer strong { color: #fff !important; }
.public-page .public-footer p, .public-page .public-footer small, .footer-brand p, .footer-disclosure, .public-footer small { color: #d8e0dc !important; }

/* Guest guide: editorial postcard rack */
.guest-page, .guest-page .market-main { background-color: var(--postcard-cream); }
.guest-page .market-main {
  background-image: linear-gradient(rgba(247,243,233,.82), rgba(247,243,233,.82)), url("/assets/materials/map-paper.webp");
  background-size: auto, 900px auto;
}
.market-header {
  position: sticky;
  background: rgba(247, 243, 233, .96);
  border-color: var(--postcard-rule);
  backdrop-filter: blur(12px);
}
.market-header-row { position: relative; }
.market-brand { color: var(--postcard-ink); font-family: var(--display); font-size: 1.22rem; font-weight: 700; }
.market-search { border-color: #bbb4a5; background: var(--postcard-paper); box-shadow: 0 3px 12px rgba(0,24,64,.12); }
.market-search button + button { border-color: var(--postcard-rule); }
.market-search-submit { background: var(--postcard-red) !important; }
.market-filters { scrollbar-color: var(--postcard-blue) transparent; }
.filter-button { border-color: #aaa392; color: var(--postcard-ink); background: rgba(255,253,248,.74); }
.filter-button:hover { border-color: var(--postcard-ink); }
.filter-button.is-active { background: var(--postcard-ink); border-color: var(--postcard-ink); color: #fff; }

.postcard-guide-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(240px, .55fr);
  align-items: center;
  gap: clamp(36px, 7vw, 110px);
  min-height: 390px;
  margin-top: 48px;
  padding: clamp(44px, 6vw, 86px);
  overflow: hidden;
  border: 1px solid rgba(126, 116, 96, .28);
  border-radius: 16px;
  background-color: var(--postcard-paper);
  background-image: linear-gradient(rgba(255,253,248,.8), rgba(255,253,248,.8)), url("/assets/materials/map-paper.webp");
  background-size: auto, 720px auto;
  box-shadow: var(--postcard-shadow);
}
.postcard-guide-hero::after {
  content: "";
  position: absolute;
  right: -6%;
  bottom: 13%;
  width: 30%;
  height: 1px;
  background: var(--postcard-blue);
  box-shadow: 0 8px 0 rgba(55,107,130,.7), 0 16px 0 rgba(55,107,130,.45);
  transform: rotate(-6deg);
}
.postcard-hero-copy { position: relative; z-index: 1; }
.postcard-hero-copy > span { display: block; margin-bottom: 18px; color: var(--postcard-blue); font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.postcard-guide-hero h1 { max-width: 11ch; margin: 0 0 20px; color: var(--postcard-ink); font-size: clamp(3.8rem, 7vw, 6rem); line-height: .86; }
.postcard-guide-hero h1 em, .home-market-copy h1 em { color: var(--postcard-red); font-style: normal; }
.postcard-guide-hero p { max-width: 60ch; margin: 0; color: var(--postcard-muted); font-size: 1rem; line-height: 1.55; }
.date-postmark {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  justify-self: center;
  width: 210px;
  aspect-ratio: 1;
  padding: 28px;
  border: 3px double var(--postcard-blue);
  border-radius: 50%;
  color: var(--postcard-blue);
  text-align: center;
  transform: rotate(4deg);
}
.date-postmark::after { content: ""; position: absolute; right: -58px; width: 72px; height: 1px; background: currentColor; box-shadow: 0 8px 0 currentColor, 0 16px 0 currentColor; }
.date-postmark span { font-size: .72rem; font-weight: 800; letter-spacing: .12em; }
.date-postmark strong { font-family: var(--display); font-size: 4rem; line-height: .8; }
.date-postmark small { max-width: 11ch; font-size: .72rem; font-weight: 650; line-height: 1.3; }
.airmail-divider { height: 8px; margin: 48px 0 62px; background: repeating-linear-gradient(135deg, var(--postcard-red) 0 12px, transparent 12px 22px, var(--postcard-blue) 22px 34px, transparent 34px 44px); opacity: .88; }

.experience-shelf { margin-bottom: clamp(70px, 8vw, 110px); }
.shelf-heading h2, .browse-all h2 { color: var(--postcard-ink); }
.shelf-heading p, .browse-all > p { color: var(--postcard-muted); }
.shelf-arrows button { background: var(--postcard-paper); border-color: var(--postcard-rule); color: var(--postcard-ink); }
.experience-rail { gap: 18px; padding-block: 10px 28px; }
.experience-card {
  padding: 10px 10px 18px;
  border: 1px solid rgba(126,116,96,.23);
  border-radius: 14px;
  background-color: var(--postcard-paper);
  background-image: linear-gradient(rgba(255,253,248,.84), rgba(255,253,248,.84)), url("/assets/materials/map-paper.webp");
  background-size: auto, 600px auto;
  box-shadow: var(--postcard-shadow);
  transition: transform 240ms cubic-bezier(.16,1,.3,1), box-shadow 240ms ease-out;
}
.experience-card:hover { transform: translateY(-4px) rotate(-.25deg); box-shadow: 0 8px 18px rgba(0,24,64,.12), 0 24px 48px rgba(0,24,64,.12); }
.experience-card:nth-child(even):hover { transform: translateY(-4px) rotate(.25deg); }
.experience-card-photo { border-radius: 9px; aspect-ratio: 1 / .92; }
.experience-card-photo::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 1px rgba(0,24,64,.08); pointer-events: none; }
.experience-card-copy { padding: 15px 4px 0; }
.experience-card-title h3 { color: var(--postcard-ink); font-size: 1.52rem; line-height: 1.04; }
.experience-card-copy > p, .experience-card-copy > small { color: var(--postcard-muted); }
.experience-card-copy > p strong { color: var(--postcard-ink); font-variant-numeric: tabular-nums; }
.experience-card-copy s { color: #76766f; }
.card-vendor { min-height: 30px; }
.vendor-stamp {
  display: inline-block;
  padding: 4px 7px 3px;
  border: 1px solid var(--postcard-blue);
  border-radius: 4px;
  color: var(--postcard-blue);
  font-size: .63rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  transform: rotate(-1.5deg);
}
.perk-stamp {
  top: 13px !important;
  left: auto !important;
  right: 13px !important;
  display: grid !important;
  place-items: center;
  width: 76px;
  height: 76px;
  padding: 8px !important;
  border: 2px dashed var(--postcard-red) !important;
  border-radius: 4px !important;
  background: var(--postcard-paper) !important;
  color: var(--postcard-red) !important;
  font-family: var(--display);
  font-size: 1.28rem !important;
  line-height: .92;
  text-align: center;
  box-shadow: 0 0 0 4px rgba(255,253,248,.92), 0 4px 12px rgba(0,24,64,.15);
  transform: rotate(2deg);
}
.perk-stamp .badge-label { display: block; font-family: Inter, system-ui, sans-serif; font-size: .58rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.card-postmark {
  position: absolute;
  right: 96px;
  top: 18px;
  display: grid;
  place-items: center;
  width: 66px;
  height: 66px;
  border: 2px solid rgba(55,107,130,.85);
  border-radius: 50%;
  background: rgba(255,253,248,.84);
  color: var(--postcard-blue);
  font-size: .5rem;
  line-height: 1;
  text-align: center;
  transform: rotate(-8deg);
}
.card-postmark b { letter-spacing: .08em; }
.card-postmark i { font-style: normal; font-weight: 800; }
.card-postmark small { max-width: 48px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.postcard-note { margin-top: 12px !important; color: var(--postcard-red) !important; font-family: "Segoe Print", "Bradley Hand", cursive; font-size: 1rem; line-height: 1.3; transform: rotate(-1deg); }
.card-book-link { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 44px; margin-top: 12px; border: 1px solid var(--postcard-ink); background: var(--postcard-ink); color: #fff; font-weight: 800; }
.card-call { display: inline-flex; align-items: center; min-height: 44px; margin-top: 8px; color: var(--postcard-ink) !important; font-size: .78rem; font-weight: 800; text-decoration: underline; }
.browse-disclosure { margin-block: 30px 80px; }
.browse-disclosure > summary { display: flex; align-items: center; justify-content: space-between; min-height: 64px; padding: 16px 18px; border-block: 1px solid var(--postcard-rule); color: var(--postcard-ink); cursor: pointer; list-style: none; }
.browse-disclosure > summary::-webkit-details-marker { display: none; }
.browse-disclosure > summary span, .browse-disclosure > summary small { display: block; }
.browse-disclosure > summary strong { font-family: var(--display); font-size: 1.6rem; }
.browse-disclosure > summary small { margin-top: 3px; color: var(--postcard-muted); }
.browse-disclosure[open] > summary i { transform: rotate(180deg); }
.browse-disclosure .browse-grid { margin-top: 28px; }
.market-badge:not(.perk-stamp) { background: var(--postcard-paper); color: var(--postcard-ink); }
.save-button { color: var(--postcard-paper); }
.market-disclosure { border-color: var(--postcard-rule); background: rgba(255,253,248,.72); }
.market-bottom-nav { background: rgba(255,253,248,.96); border-color: var(--postcard-rule); }
.market-bottom-nav .is-active { color: var(--postcard-red); }

/* Public acquisition surfaces */
.public-page, .public-shell { background-color: var(--postcard-cream); }
.public-shell { background-image: linear-gradient(rgba(247,243,233,.88), rgba(247,243,233,.88)), url("/assets/materials/map-paper.webp"); background-size: auto, 1000px auto; }
.home-market-hero { position: relative; }
.home-market-copy h1 { color: var(--postcard-ink); }
.home-market-copy h1 { max-width: 9ch; font-size: clamp(4rem, 7vw, 6rem); line-height: .88; }
.home-market-photo { border-radius: 16px; box-shadow: var(--postcard-shadow); }
.home-market-photo { padding: 10px; background: var(--postcard-paper); transform: rotate(1deg); }
.home-market-photo img { border-radius: 9px; }
.home-postmark { width: 132px; aspect-ratio: 1; right: 22px !important; bottom: 18px !important; display: grid !important; place-items: center; padding: 18px !important; border: 2px solid var(--postcard-blue); border-radius: 50% !important; background: rgba(255,253,248,.9) !important; color: var(--postcard-blue) !important; text-align: center; transform: rotate(-6deg); }
.home-postmark strong, .home-postmark span { color: inherit !important; }
.home-search-link { border-color: var(--postcard-rule); background: var(--postcard-paper); box-shadow: var(--postcard-shadow); }
.home-search-link b { background: var(--postcard-red); }
.home-experience-card { padding: 10px 10px 18px; border: 1px solid rgba(126,116,96,.23); border-radius: 14px; background: var(--postcard-paper); box-shadow: 0 3px 9px rgba(0,24,64,.08), 0 16px 32px rgba(0,24,64,.06); }
.home-experience-card > div { border-radius: 9px; }
.home-market-benefits, .earnings-section { background: rgba(255,253,248,.68); }
.founding-window { background: var(--postcard-blue-soft); color: var(--postcard-ink-deep); }
.founding-window h2, .founding-window p, .founding-window dt, .founding-window dd { color: var(--postcard-ink-deep) !important; }
.form-promise { color: var(--postcard-ink-deep) !important; }
.home-partner-paths > a, .cross-link-card { border-color: var(--postcard-rule); background: var(--postcard-paper); }
.join-trust li::before { background: var(--postcard-red); }
.founding-grid dl div, .join-math, .faq-list details { border-color: var(--postcard-rule); }

.perk-console { background-color: var(--postcard-paper); background-image: linear-gradient(rgba(255,253,248,.86),rgba(255,253,248,.86)),url("/assets/materials/map-paper.webp"); border: 1px solid rgba(126,116,96,.25); }
.perk-console-title h2, .perk-price strong { color: var(--postcard-ink); font-family: var(--display); }
.perk-toggle { background: var(--postcard-ink); }

.host-tracks h2 { color: var(--postcard-ink); font-size: clamp(2.3rem,4vw,4rem); line-height: .96; }
.vendor-stamp-sheet { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; padding: 18px; background: var(--postcard-blue-soft); border: 1px solid #b6cbd2; }
.vendor-stamp-card { display: grid; place-content: center; min-height: 190px; padding: 24px 14px; border: 2px dashed var(--postcard-blue); background: var(--postcard-paper); color: var(--postcard-blue); text-align: center; transform: rotate(-1deg); }
.vendor-stamp-card:nth-child(2) { transform: rotate(1.2deg); }
.vendor-stamp-card:nth-child(3) { transform: rotate(-.5deg); }
.vendor-stamp-card b { font-family: var(--display); font-size: 1.5rem; line-height: 1; }
.vendor-stamp-card small { margin-top: 8px; font-size: .66rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.vendor-stamp-card.is-open { opacity: .64; }
.host-tracks { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; padding-block: clamp(60px,8vw,100px); }
.host-tracks article { position: relative; min-height: 330px; padding: clamp(32px,4vw,52px); border: 1px solid rgba(126,116,96,.3); background: var(--postcard-paper); box-shadow: var(--postcard-shadow); }
.host-tracks article:first-child { transform: rotate(-.5deg); }
.host-tracks article:last-child { transform: rotate(.5deg); }
.track-stamp { display: inline-block; margin-bottom: 32px; padding: 7px 10px; border: 1px solid var(--postcard-red); color: var(--postcard-red); font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }

.founding-cohort { background: var(--postcard-ink-deep); color: #fff; }
.founding-cohort > div { display: grid; grid-template-columns: 46px minmax(0,1fr) auto; align-items: center; gap: 22px; padding-block: 30px; }
.founding-cohort svg { width: 34px; height: 34px; color: #79a3b5; }
.founding-cohort h2 { margin: 0 0 4px; color: #fff !important; font-size: clamp(1.45rem, 2.4vw, 2.15rem); }
.founding-cohort p { max-width: 74ch; margin: 0; color: #cddbd6; }
.founding-cohort .secondary-action { border-color: #fff !important; background: transparent !important; color: #fff !important; }
.founding-cohort .secondary-action:hover { background: #fff !important; color: var(--postcard-ink-deep) !important; }

.proof-disclosure { display: inline-flex; align-items: center; gap: 8px; width: fit-content; margin-top: 16px !important; padding: 4px 8px; border: 1px solid var(--postcard-red); border-radius: 8px; color: #8b2c27 !important; font-size: 13px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.proof-disclosure svg { width: 15px; }
.workspace-preview { overflow: hidden; border: 1px solid var(--postcard-rule); border-radius: 14px; background: var(--postcard-paper); box-shadow: var(--postcard-shadow); color: var(--postcard-ink-deep); }
.workspace-preview--host { display: grid; grid-template-columns: 86px minmax(0,1fr); min-height: 360px; }
.workspace-preview__rail { display: grid; align-content: start; gap: 7px; padding: 18px 10px; background: var(--postcard-ink-deep); color: #cddbd6; }
.workspace-preview__rail img { width: 28px; margin: 0 auto 24px; }
.workspace-preview__rail span { padding: 8px 7px; border-radius: 7px; font-size: .66rem; text-align: center; }
.workspace-preview__rail .is-current { background: var(--postcard-paper); color: var(--postcard-ink-deep); }
.workspace-preview__main { min-width: 0; padding: 22px; }
.workspace-preview__main > header { display: flex; justify-content: space-between; gap: 16px; }
.workspace-preview__main > header strong { font-family: var(--display); font-size: 1.3rem; }
.workspace-preview__main > header small { color: var(--postcard-muted); }
.preview-kpis { display: grid; grid-template-columns: repeat(4,1fr); margin: 19px 0; border: 1px solid var(--postcard-rule); }
.preview-kpis span { min-width: 0; padding: 12px; border-right: 1px solid var(--postcard-rule); color: var(--postcard-muted); font-size: var(--fs-13); font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.preview-kpis span:last-child { border-right: 0; }
.preview-kpis strong { display: block; margin-top: 5px; color: var(--postcard-ink); font-family: var(--display); font-size: var(--fs-20); font-variant-numeric: tabular-nums; letter-spacing: 0; text-transform: none; }
.preview-workspace-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.preview-workspace-grid > div { min-width: 0; padding: 15px; border: 1px solid var(--postcard-rule); }
.preview-workspace-grid > div > strong { display: block; margin-bottom: 12px; font-size: var(--fs-13); }
.preview-workspace-grid span { display: grid; grid-template-columns: 78px 1fr 28px; align-items: center; gap: 8px; margin-top: 8px; color: var(--postcard-muted); font-size: var(--fs-13); }
/* min-width keeps the smallest real bar (3%, the "Completed" row against 151 scans) visible
   instead of rounding to nothing (round 4, Opus R3 #4): 4px is the smallest step on the house
   spacing scale. */
.preview-workspace-grid b { display: block; width: var(--preview-bar); min-width: 4px; height: 3px; background: var(--postcard-ink); }
.preview-workspace-grid span small { font-size: inherit; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
.preview-workspace-grid code { display: block; overflow: hidden; padding: 9px; background: var(--postcard-cream); color: var(--postcard-ink); font-size: var(--fs-13); text-overflow: ellipsis; white-space: nowrap; }
.preview-workspace-grid .preview-kit-actions { display: block; color: var(--postcard-blue); font-weight: 750; }

.vendor-product-pair { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(210px,.8fr); align-items: center; gap: 18px; }
.workspace-preview--vendor { padding: 18px; }
.workspace-preview--vendor > header { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--postcard-rule); }
.workspace-preview--vendor > header strong { font-family: var(--display); font-size: 1.3rem; }
.workspace-preview--vendor > header span { color: #8b2c27; font-size: .66rem; font-weight: 800; }
.workspace-preview--vendor article { display: grid; grid-template-columns: 120px 1fr; gap: 14px; margin-top: 16px; }
.vendor-preview-photo { min-height: 105px; border-radius: 10px; background: var(--postcard-rule) url('/assets/photos/rundle-bike/legacy-trail-wide.jpg') center/cover; }
.workspace-preview--vendor article > span { display: grid; align-content: center; gap: 5px; }
.workspace-preview--vendor article b { width: fit-content; padding: 3px 7px; border-radius: 999px; background: #dceae4; color: #235f48; font-size: .58rem; text-transform: uppercase; }
.workspace-preview--vendor article strong { color: var(--postcard-ink); }
.workspace-preview--vendor article small { color: var(--postcard-muted); }
.workspace-preview--vendor footer { display: grid; grid-template-columns: repeat(3,1fr); margin-top: 18px; border-top: 1px solid var(--postcard-rule); }
.workspace-preview--vendor footer span { padding-top: 10px; color: var(--postcard-muted); font-size: .66rem; font-weight: 750; text-align: center; }
.guest-card-preview { overflow: hidden; border-radius: 14px; background: var(--postcard-paper); box-shadow: var(--postcard-shadow); transform: rotate(1.2deg); }
.guest-card-preview__photo { position: relative; min-height: 145px; background: #d7ddd4 url('/assets/photos/rundle-bike/ready-to-roll.jpg') center/cover; }
.guest-card-preview__photo > span { position: absolute; top: 10px; left: 10px; padding: 7px 10px; border-radius: 4px; background: var(--postcard-red); color: #fff; font-family: var(--display); font-size: 1.3rem; font-weight: 750; }
.guest-card-preview__photo small { display: block; font: 700 .5rem/1.1 var(--ui); text-transform: uppercase; }
.guest-card-preview > div:last-child { padding: 15px; }
.guest-card-preview > div > small, .guest-card-preview > div > strong { display: block; }
.guest-card-preview > div > small { color: var(--postcard-blue); font-size: .58rem; font-weight: 800; text-transform: uppercase; }
.guest-card-preview > div > strong { margin: 3px 0; color: var(--postcard-ink); }
.guest-card-preview p { margin: 0 0 12px; color: var(--postcard-muted); font-size: .7rem; line-height: 1.4; }
.guest-card-preview button { width: 100%; min-height: 38px; border: 0; border-radius: 9px; background: var(--postcard-ink); color: #fff; font-size: .68rem; font-weight: 750; pointer-events: none; }
.time-to-live { display: flex; align-items: flex-start; gap: 9px; max-width: 55ch; padding: 12px 14px; border: 1px solid var(--postcard-rule); border-radius: 10px; background: rgba(255,253,248,.7); color: var(--postcard-ink) !important; }
.time-to-live svg { flex: 0 0 18px; width: 18px; color: var(--postcard-blue); }
.confirmation-actions { display: grid; gap: 10px; margin-top: 18px; }
.confirmation-actions .primary-action { justify-content: center; text-decoration: none; }
.faq-cta { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 36px; padding: 30px; border-radius: 14px; background: var(--postcard-ink-deep); color: #fff; }
.faq-cta h2 { max-width: 18ch; margin: 0; color: #fff !important; font-size: clamp(1.6rem, 3vw, 2.4rem); }
.faq-cta .primary-action { flex: 0 0 auto; background: var(--postcard-paper) !important; color: var(--postcard-ink-deep) !important; }

/* Operational surfaces share the public guide's ink, paper, and postal accents. */
.dashboard-shell { background: #eeeae1; }
.dashboard-nav { background: var(--postcard-ink-deep) url('/assets/materials/enamel-patina.png') center/cover; border-color: transparent; }
.dashboard-nav nav a { color: #cddbd6; }
.dashboard-nav nav a:hover { background: rgba(255,255,255,.09); color: #fff; }
.dashboard-nav nav a.active { background: var(--postcard-paper); color: var(--postcard-ink-deep); }
.dashboard-nav nav a.active::before { background: var(--postcard-red); }
.dashboard-main { background: #eeeae1; }
.dashboard-header h1 { color: var(--postcard-ink); }
.metric-strip, .data-table-wrap, .property-asset, .offer-control, .lead-roster, .partner-roster, .property-roster, .promo-confirm { background: var(--postcard-paper); border-color: var(--postcard-rule); }
.payout-callout { background: var(--postcard-ink-deep) url('/assets/materials/enamel-patina.png') center/cover; border-color: transparent; }
.metric-strip strong, .dashboard-section:not(.payout-callout) h2, .section-heading h2 { color: var(--postcard-ink); }
.metric-strip > div, .data-table-wrap th, .data-table-wrap td, .offer-control > header, .pause-offer { border-color: #ddd6c8; }
.dashboard-section { border-color: var(--postcard-rule); }
.status-booked, .status-confirmed, .status-paid { background: #dceae4; color: #235f48; }
.status, .status-void { background: #ddd9d0; color: #645f55; }
.auth-brand-panel h1, .auth-heading h2, .auth-success h2 { font-family: var(--display); }
.vendor-calendar input[type="checkbox"], .vendor-weekly input[type="checkbox"], .vendor-check input[type="checkbox"], .platform-booking__check input[type="checkbox"], .check-label input[type="checkbox"], .consent-row input[type="checkbox"] { accent-color: var(--postcard-ink); }
.lead-update { grid-template-columns: 120px 145px minmax(160px,1fr); }
.lead-update > button:first-of-type { grid-column: 2; justify-self: end; }
.account-create-action { grid-column: 3; justify-self: start; gap: 7px; white-space: nowrap; }
.lead-update .form-error { grid-column: 1 / -1; }
.account-create-action svg { width: 17px; }
@media (max-width: 640px) {
  .lead-update > button:first-of-type, .lead-update .account-create-action { grid-column: 1 / -1; justify-self: stretch; }
}
.activation-link-notice { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 14px; margin: 0 0 22px; padding: 16px 18px; border: 1px solid var(--postcard-blue); border-radius: 14px; background: var(--postcard-blue-soft); color: var(--postcard-ink-deep); }
.activation-link-notice strong, .activation-link-notice span, .activation-link-notice code { display: block; }
.activation-link-notice span { color: var(--postcard-muted); font-size: .8rem; }
.activation-link-notice code { margin-top: 7px; overflow: hidden; background: var(--postcard-paper); text-overflow: ellipsis; white-space: nowrap; }
.activation-page .auth-form-wrap { align-self: center; }
.host-first-run { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; margin: -4px 0 24px; padding: 0; overflow: hidden; border: 1px solid var(--postcard-rule); border-radius: 12px; background: var(--postcard-rule); list-style: none; }
.host-first-run li { display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 10px 14px; background: var(--postcard-paper); color: var(--postcard-muted); font-size: .8rem; font-weight: 750; }
.host-first-run li.complete { color: #235f48; }
.host-first-run svg { width: 17px; }
.record-count, .demo-badge { border-color: var(--postcard-blue); color: var(--postcard-blue); }
.avatar, .vendor-avatar { background: var(--postcard-blue); color: #fff; }
.offer-days input:checked + span { background: var(--postcard-ink) !important; border-color: var(--postcard-ink) !important; }
.auth-brand-panel { background-color: var(--postcard-ink-deep); background-image: linear-gradient(rgba(0,15,46,.92),rgba(0,15,46,.92)),url("/assets/materials/map-paper.webp"); }
.auth-brand-panel::after { border-color: #9fbeb6; }
.auth-form-panel { background: var(--postcard-cream); }
.role-segments input:checked + span { background: var(--postcard-ink); color: #fff; }

.validation-metric { position: relative; }
.milestone-track { display: block; height: 5px; margin-top: 11px; overflow: hidden; border-radius: 5px; background: #ddd6c8; }
.milestone-track b { display: block; height: 100%; min-width: 2px; border-radius: inherit; background: var(--postcard-red); }
.property-distribution-card { grid-template-columns: minmax(0,1fr) 240px; }
.property-title-line, .property-roster-preview article > header, .property-roster-controls article > header, .channel-report > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
.property-title-line h3, .property-roster-preview h3, .property-roster-controls h3, .channel-report h3 { margin: 0; color: var(--postcard-ink); font-size: 1.7rem; }
.property-title-line p, .property-roster-preview header p, .property-roster-controls header p, .channel-report header p { margin: 4px 0 0; color: var(--postcard-muted); }
.property-title-line > a, .property-roster-preview header a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; color: var(--postcard-blue); font-weight: 750; text-decoration: underline; text-underline-offset: .22em; }
.property-title-line svg, .property-roster-preview header svg { width: 17px; }
.signed-link-field { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 7px 14px; margin: 22px 0 16px; padding: 14px 16px; border: 1px solid var(--postcard-rule); background: #f1eee5; }
.signed-link-field > span { grid-column: 1/-1; color: var(--postcard-muted); font-size: .68rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.signed-link-field code, .channel-message code { min-width: 0; overflow: hidden; color: var(--postcard-ink); font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.signed-link-field .copy-text { min-height: 44px; }
.channel-message-list { border-block: 1px solid var(--postcard-rule); }
.channel-message { border-top: 1px solid #ddd6c8; }
.channel-message:first-child { border-top: 0; }
.channel-message summary { display: flex; align-items: center; justify-content: space-between; min-height: 52px; cursor: pointer; }
.channel-message summary > span { display: inline-flex; align-items: center; gap: 9px; color: var(--postcard-ink); font-weight: 750; }
.channel-message summary svg { width: 18px; }
.channel-message summary > svg { transition: transform .2s ease-out; }
.channel-message[open] summary > svg { transform: rotate(180deg); }
.channel-message > div { display: grid; gap: 9px; padding: 0 0 16px 27px; }
.channel-message p { max-width: 68ch; margin: 0; color: var(--postcard-muted); }
.channel-message .copy-text { justify-self: start; }
.qr-card > span { color: var(--postcard-muted); font-size: .7rem; font-weight: 800; letter-spacing: .05em; text-align: center; text-transform: uppercase; }
.qr-card small { max-width: 19ch; color: var(--postcard-muted); text-align: center; }
.channel-report { margin-top: 18px; }
.channel-report > header { align-items: end; padding: 0 2px 10px; }
.channel-report .data-table-wrap table { min-width: 840px; }
.property-roster-preview, .property-roster-controls { display: grid; gap: 18px; }
.property-roster-preview > article, .property-roster-controls > article, .channel-ops { overflow: hidden; border: 1px solid var(--postcard-rule); border-radius: 14px; background: var(--postcard-paper); box-shadow: 0 3px 8px rgba(0,24,64,.06), 0 14px 30px rgba(0,24,64,.05); }
.property-roster-preview article > header, .property-roster-controls article > header { padding: 18px 20px; border-bottom: 1px solid var(--postcard-rule); }
.property-roster-preview ul { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); margin: 0; padding: 0; list-style: none; }
.property-roster-preview li { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 64px; padding: 10px 20px; border-bottom: 1px solid #e5ded0; }
.property-roster-preview li:nth-child(odd) { border-right: 1px solid #e5ded0; }
.property-roster-preview li strong, .property-roster-preview li small { display: block; }
.property-roster-preview li small { color: var(--postcard-muted); }
.roster-note { display: flex; align-items: center; gap: 9px; margin: 0; padding: 13px 20px; color: var(--postcard-muted); background: #f1eee5; }
.roster-note svg { width: 18px; flex: 0 0 18px; color: var(--postcard-blue); }
.admin-channel-funnels { display: grid; gap: 14px; }
.channel-ops > summary { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 72px; padding: 12px 18px; cursor: pointer; }
.channel-ops > summary strong, .channel-ops > summary small { display: block; }
.channel-ops > summary strong { color: var(--postcard-ink); font-size: 1.15rem; }
.channel-ops > summary small { margin-top: 4px; color: var(--postcard-muted); }
.channel-ops > summary svg { width: 19px; transition: transform .2s ease-out; }
.channel-ops[open] > summary svg { transform: rotate(180deg); }
.channel-ops .data-table-wrap { border-inline: 0; border-bottom: 0; border-radius: 0; }
.channel-ops table { min-width: 1180px; }
.channel-input-form { display: grid; grid-template-columns: 74px 82px auto; gap: 5px; align-items: end; min-width: 250px; }
.channel-input-form label { color: var(--postcard-muted); font-size: .62rem; font-weight: 750; text-transform: uppercase; }
.channel-input-form input { min-height: 44px; margin-top: 3px; padding: 6px 7px; }
.channel-input-form .secondary-action { min-height: 44px; padding: 6px 9px; }
.property-roster-controls article > header > div:last-child { display: flex; align-items: center; gap: 14px; }
.roster-control-list form { display: grid; grid-template-columns: 44px minmax(180px,1fr) minmax(210px,.5fr) auto; align-items: center; gap: 12px; padding: 11px 20px; border-top: 1px solid #e5ded0; }
.roster-control-list form:first-child { border-top: 0; }
.roster-control-list label strong, .roster-control-list label small { display: block; }
.roster-control-list label small { color: var(--postcard-muted); }
.roster-control-list select { min-height: 44px; }
.roster-control-list .secondary-action { min-height: 44px; }

@media (max-width: 980px) {
  .postcard-guide-hero { grid-template-columns: minmax(0,1fr) 190px; }
  .date-postmark { width: 176px; }

  .property-distribution-card { grid-template-columns: minmax(0,1fr) 210px; }
  .property-roster-preview ul { grid-template-columns: 1fr; }
  .property-roster-preview li:nth-child(odd) { border-right: 0; }
}

@media (max-width: 760px) {
  .public-header::after { bottom: -5px; height: 5px; }
  .postcard-guide-hero { grid-template-columns: minmax(0,1fr) 118px; gap: 12px; min-height: 0; margin-top: 20px; padding: 34px 20px 30px; }
  .postcard-guide-hero h1 { font-size: clamp(3.1rem, 14vw, 4.7rem); }
  .postcard-guide-hero p { grid-column: 1 / -1; font-size: .9rem; }
  .date-postmark { width: 116px; padding: 15px; border-width: 2px; }
  .date-postmark::after { right: -24px; width: 35px; }
  .date-postmark strong { font-size: 2.5rem; }
  .date-postmark small { font-size: .57rem; }
  .airmail-divider { height: 6px; margin: 28px 0 40px; }
  .market-header-row { grid-template-columns: auto minmax(0,1fr); gap: 10px; }
  .market-brand { display: inline-flex; }
  .market-header-actions { display: none; }
  .experience-rail { grid-auto-columns: 45%; gap: 12px; }
  .experience-card { padding: 8px 8px 15px; }
  .experience-card-title h3 { font-size: 1.35rem; }
  .perk-stamp { width: 66px; height: 66px; right: 10px !important; top: 10px !important; font-size: 1.12rem !important; }
  .card-postmark { width: 58px; height: 58px; right: 85px; top: 14px; }
  .home-market-copy h1 { font-size: clamp(3.7rem,16vw,5.2rem); }
  .home-market-photo { transform: none; }
  .host-tracks { grid-template-columns: 1fr; }
  .host-tracks article:first-child, .host-tracks article:last-child { transform: none; }
  .vendor-stamp-sheet { grid-template-columns: repeat(3, minmax(150px,1fr)); overflow-x: auto; }
  .vendor-stamp-card { min-height: 160px; }
  .founding-cohort > div { grid-template-columns: 36px 1fr; }
  .founding-cohort .secondary-action { grid-column: 1 / -1; }

  .vendor-product-pair { grid-template-columns: 1fr 44%; }
  .workspace-preview--host { min-height: 330px; }
  .preview-kpis { grid-template-columns: repeat(2,1fr); }
  .preview-kpis span:nth-child(2) { border-right: 0; }
  .preview-kpis span:nth-child(-n+2) { border-bottom: 1px solid var(--postcard-rule); }
  .faq-cta { align-items: flex-start; flex-direction: column; padding: 24px; }
  .dashboard-main { background: #eeeae1; }
  .activation-link-notice { grid-template-columns: 1fr; align-items: start; }
  .host-first-run { grid-template-columns: 1fr; }
  .property-distribution-card { grid-template-columns: 1fr; }
  .property-distribution-card .qr-card { border-left: 0; border-top: 1px solid var(--postcard-rule); }
  .roster-control-list form { grid-template-columns: 42px 1fr auto; }
  .roster-control-list select { grid-column: 2; }
  .roster-control-list button { grid-column: 3; grid-row: 1/3; }
}

@media (max-width: 430px) {
  .postcard-guide-hero { grid-template-columns: minmax(0,1fr) 100px; border-radius: 12px; }
  .postcard-guide-hero h1 { font-size: 3.08rem; }
  .postcard-hero-copy > span { font-size: .63rem; }
  .date-postmark { width: 98px; }
  .date-postmark strong { font-size: 2.15rem; }
  .date-postmark span, .date-postmark small { font-size: .5rem; }
  .experience-rail { grid-auto-columns: 45%; }
  .postcard-note { font-size: 1rem; }

  .workspace-preview--host { grid-template-columns: 56px minmax(0,1fr); }
  .workspace-preview__rail { padding-inline: 6px; }
  .workspace-preview__rail span { font-size: .55rem; }
  .workspace-preview__main { padding: 14px; }
  .preview-workspace-grid { grid-template-columns: 1fr; }
  .vendor-product-pair { grid-template-columns: 1fr; }
  .guest-card-preview { width: 78%; justify-self: end; margin-top: -10px; }
  .property-title-line, .property-roster-preview article > header, .property-roster-controls article > header, .channel-report > header { align-items: flex-start; flex-direction: column; }
  .signed-link-field { grid-template-columns: 1fr; }
  .signed-link-field > span { grid-column: auto; }
  .signed-link-field code, .channel-message code { white-space: normal; overflow-wrap: anywhere; }
  .property-roster-preview ul { grid-template-columns: 1fr; }
  .property-roster-preview li { padding-inline: 15px; }
  .property-roster-controls article > header > div:last-child { align-items: flex-start; flex-direction: column; }
  .roster-control-list form { grid-template-columns: 38px 1fr; padding: 12px 14px; }
  .roster-control-list select, .roster-control-list button { grid-column: 2; grid-row: auto; width: 100%; }
}

/* Compact guide hierarchy: search, filters, context, then one recommendation grid. */
.guest-page .market-header-row {
  display: grid;
  grid-template-columns: auto minmax(480px, 680px);
  justify-content: space-between;
  gap: 28px;
  min-height: 78px;
}
.guest-page .header-market-search {
  width: 100%;
  min-height: 54px;
  margin: 0;
  border: 1px solid rgba(89,84,73,.22);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.guest-page .header-market-search:hover { box-shadow: var(--shadow-hover); }
.guest-page .header-market-search > button { min-height: 42px; }
.guest-page .header-market-search .market-search-submit {
  min-width: 94px;
  min-height: 42px;
  border-radius: var(--radius);
}
.guest-page .guide-context {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 20px;
  width: min(100% - 48px, var(--guest-max));
  margin: 18px auto 0;
  padding: 0 0 18px;
  border-bottom: 1px solid rgba(89,84,73,.2);
}
.guest-page .guide-context p { margin: 0; }
.guest-page .guide-context .guide-postmark {
  color: var(--postcard-blue);
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.guest-page .guide-context p:last-child {
  color: #625f58;
  font-family: var(--display);
  font-size: 1rem;
  font-style: italic;
}
.guest-page .browse-all { margin-top: 24px; }
.guest-page .demo-listing-label {
  display: inline-flex;
  margin-top: 7px;
  padding: 3px 7px;
  border: 1px solid rgba(55,107,130,.5);
  border-radius: 4px;
  color: var(--postcard-blue);
  font-size: .62rem;
  font-weight: 850;
  letter-spacing: .06em;
  line-height: 1.2;
  text-transform: uppercase;
}
.guest-page .availability-note {
  margin: 12px 0 0;
  color: #625f58;
  font-size: .72rem;
  line-height: 1.45;
  text-align: center;
}
.guest-page .detail-back { color: inherit; text-decoration: none; }

@media (max-width: 1020px) and (min-width: 761px) {
  .guest-page .market-header-row { grid-template-columns: auto minmax(440px, 1fr); }
  .guest-page .header-market-search { width: 100%; }
}

@media (max-width: 760px) {
  .guest-page .market-header-row { grid-template-columns: 1fr; }
  .guest-page .header-market-search { display: none; }
  .guest-page .guide-context {
    display: block;
    width: calc(100% - 32px);
    margin-top: 14px;
    padding-bottom: 14px;
  }
  .guest-page .guide-context .guide-postmark { font-size: .66rem; }
  .guest-page .guide-context p:last-child { margin-top: 5px; font-size: .92rem; }
  .guest-page .browse-all { margin-top: 0; }
  .guest-page .demo-listing-label { margin-top: 5px; font-size: .56rem; }
  .guest-page .detail-booking-card {
    display: block;
    position: static;
    margin: 8px 0 20px;
    box-shadow: none;
  }
  .guest-page .mobile-reserve-bar { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .experience-card { transition: none; }
  .experience-card:hover, .experience-card:nth-child(even):hover { transform: none; }
}

/* ---------- Review fixes (2026-08-17): honesty labels, notices, dialogs, a11y sizing ---------- */
[data-lucide] { display: inline-block; width: 1em; height: 1em; vertical-align: -.125em; }
body:has(dialog[open]) { overflow: hidden; }
.demo-pill { position: absolute; z-index: 4; top: 12px; left: 12px; padding: 4px 9px; border-radius: 999px; background: rgba(0, 24, 64, .9); color: #fffdf8; font-size: .72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.demo-tag { display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 999px; background: #efe9d8; color: #4f5f58; font-size: .72rem; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; vertical-align: middle; }
.experience-card-copy .card-vendor { overflow: visible; white-space: normal; font-size: .78rem; }
.experience-card-copy .card-offer-terms, .experience-card-copy small { font-size: .78rem; }
.experience-card-copy .card-price-line small { color: #595959; font-size: .78rem; font-weight: 600; }
.experience-card-copy .vendor-stamp { font-size: .74rem; }
.experience-card-heading { margin: 0; font-size: inherit; font-weight: inherit; }
.experience-card-heading .experience-card-title { font: inherit; }
.market-bottom-nav span { font-size: .76rem; }
.market-status { font-size: .84rem; }
.experience-card-copy s { color: #62625c; }
/* Save heart moves to the lower-left of the photo so it never sits over the perk stamp or the postmark. */
.experience-card-photo .save-button { top: auto; right: auto; bottom: 10px; left: 10px; width: 44px; height: 44px; }
.demo-pill { top: auto; right: auto; bottom: 18px; left: 62px; }
.card-photo-arrow, .shelf-arrows button, .selection-close, .detail-gallery-arrow { min-width: 44px; min-height: 44px; }
.selection-close { width: 44px; height: 44px; }
.detail-demo-note { display: flex; align-items: center; gap: 8px; margin: 6px 0 12px; padding: 8px 12px; border-radius: 10px; background: #efe9d8; color: #4f5f58; font-size: .85rem; }
.detail-demo-note svg { width: 16px; flex: none; }
.rating-source-label { color: #6a6a6a; font-size: .8rem; }
.rating-note-card { display: grid; grid-template-columns: 22px 1fr; gap: 12px; padding: 14px 16px; border: 1px solid var(--line, #d9d3c3); border-radius: 12px; background: #fbf8f0; }
.rating-note-card svg { width: 20px; margin-top: 2px; }
.rating-note-card p { margin: 4px 0 0; color: #595959; font-size: .9rem; }
.about-dialog { width: min(calc(100% - 28px), 560px); }
.about-dialog p { margin: 10px 0; line-height: 1.55; }
.about-links { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 16px; }
.about-links a { min-height: 44px; display: inline-flex; align-items: center; font-weight: 700; }
.promo-copy-status, .copy-status { display: block; min-height: 1.2em; margin-top: 4px; color: #4f5f58; font-size: .8rem; }
.feedback-float .feedback-prompt { font-size: .82rem; }
.home-demo-label { display: inline-flex; align-items: center; gap: 6px; color: #4f5f58; font-size: .8rem; font-weight: 700; }
.home-demo-label svg { width: 14px; }
.preview-bar { position: sticky; z-index: 40; top: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px 16px; padding: 10px 16px; background: #001840; color: #fffdf8; font-size: .9rem; }
.preview-bar svg { width: 18px; }
.preview-bar form { display: inline; }
.preview-bar button { min-height: 44px; padding: 6px 14px; border: 1px solid rgba(255,253,248,.55); border-radius: 999px; background: transparent; color: inherit; font-weight: 700; cursor: pointer; }
.action-notice-success { background: #e7edf8; color: #173f73; }
.action-notice-info { background: #eaf1f5; color: #274a5c; }
.action-notice-error { border-color: #d8766e; background: #fff0ed; color: #721c17; }
.action-notice-error strong { color: #721c17; }
.form-error { margin: 8px 0 0; padding: 8px 12px; border-left: 3px solid #b93f38; background: #fff0ed; color: #721c17; font-size: .88rem; font-weight: 650; }
.confirmation-row.has-error, .offer-control.has-error, .lead-update.has-error, .channel-input-form.has-error { outline: 2px solid #d8766e; outline-offset: 4px; border-radius: 12px; }
[aria-invalid="true"] { border-color: #b93f38 !important; box-shadow: 0 0 0 2px rgba(185, 63, 56, .18); }
.offer-form label small, .offering-editor label small { display: block; margin-top: 4px; color: #6a6a6a; font-size: .78rem; font-weight: 500; }
.offer-form label[hidden] { display: none; }
.pause-offer.paused { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.pause-offer.paused button { min-height: 40px; padding: 6px 14px; border: 1px solid var(--line, #d9d3c3); border-radius: 999px; background: #fffdf8; font-weight: 700; cursor: pointer; }
.empty-inline { margin: 0; color: #6a6a6a; font-size: .9rem; }
.status-paid { background: #dfe9f2; color: #274a5c; }
.inline-form { display: inline; }
.inline-form button.copy-text { padding: 4px 8px; }
.roster-vendor-previews { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--line, #d9d3c3); font-size: .82rem; }
.data-table-wrap { position: relative; }
.data-table-wrap::after { content: "Scroll for more →"; position: absolute; right: 8px; bottom: 4px; padding: 2px 8px; border-radius: 999px; background: rgba(0,24,64,.92); color: #fffdf8; font-size: .7rem; opacity: 0; pointer-events: none; }
@media (max-width: 760px) { .data-table-wrap::after { opacity: .9; } .data-table-wrap { padding-bottom: 22px; } }
.legal-copy a { color: inherit; font-weight: 700; }

/* Guest marketplace redesign — photography leads, postcard details carry only useful information. */
.guest-page { --guest-max: 1240px; --guest-text: #44403c; color: var(--guest-text); }
.guest-page .airmail-top { height: 5px; background: repeating-linear-gradient(135deg, var(--postcard-red) 0 12px, transparent 12px 22px, var(--postcard-blue) 22px 34px, transparent 34px 44px); }
.guest-page .market-header { top: 0; border-bottom: 1px solid rgba(89, 84, 73, .18); background: rgba(247, 243, 233, .96); backdrop-filter: blur(12px); }
.guest-page .market-header::after { content: none; }
.guest-page .market-header-row { display: flex; justify-content: space-between; width: min(100% - 48px, var(--guest-max)); min-height: 72px; }
.guest-page .market-brand { display: inline-flex; align-items: center; color: var(--postcard-ink); text-decoration: none; }
.guest-page .market-brand .market-brand-logo { display: block; width: 224px; height: 56px; background: url("/assets/brand/postcardperks-stamp-lockup.webp?v=20260822-kalam") center / 224px auto no-repeat; }
.guest-page .market-header-actions { gap: 14px; }
.guest-page .currency-label { display: grid; place-items: center; min-width: 54px; min-height: 44px; color: var(--postcard-ink); font-size: .78rem; font-weight: 800; }
.guest-page .operator-link { display: inline-flex; align-items: center; min-height: 44px; padding: 0 17px; border: 1px solid var(--postcard-ink); border-radius: 999px; color: var(--postcard-ink); font-size: .82rem; font-weight: 800; text-decoration: none; }
.guest-page .operator-link:hover { background: var(--postcard-ink); color: #fff; }
.guest-page .header-icon { min-width: 44px; min-height: 44px; }
.guest-page .market-main { width: auto; max-width: none; padding: 0 0 72px; }

.guest-page .postcard-guide-hero { display: grid; grid-template-columns: minmax(420px, .88fr) minmax(0, 1.12fr); align-items: stretch; gap: 0; width: min(100% - 48px, var(--guest-max)); height: 460px; min-height: 0; margin: 28px auto 0; padding: 0; overflow: hidden; border: 0; border-radius: 16px; background: var(--postcard-ink-deep); box-shadow: var(--postcard-shadow); }
.guest-page .postcard-guide-hero::after { content: none; }
.guest-page .postcard-hero-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(34px, 4vw, 48px); color: #fff; }
.guest-page .postcard-guide-hero h1 { max-width: 9ch; margin: 0 0 20px; color: #fff; font-family: var(--display) !important; font-size: clamp(3.8rem, 5.8vw, 5.5rem); line-height: .86; letter-spacing: -.03em; }
.guest-page .postcard-guide-hero h1 em { color: #f07b6f; }
.guest-page .postcard-guide-hero p { max-width: 48ch; margin: 0; color: #dce7e2; font-size: 1rem; line-height: 1.55; }
.guest-page .hero-photo { position: relative; min-width: 0; height: 460px; min-height: 0; overflow: hidden; }
.guest-page .hero-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0,15,46,.22), transparent 35%), linear-gradient(0deg, rgba(0,15,46,.2), transparent 45%); pointer-events: none; }
.guest-page .hero-photo > img { width: 100%; height: 100%; object-fit: cover; }
.guest-page .date-postmark { z-index: 2; inset: auto 24px 22px auto; width: 148px; min-height: 148px; padding: 21px; border: 2px solid rgba(255,253,248,.88); background: rgba(0,15,46,.74); color: #fffdf8; transform: rotate(-4deg); backdrop-filter: blur(7px); }
.guest-page .date-postmark::after { content: none; }
.guest-page .date-postmark span { font-size: .64rem; }
.guest-page .date-postmark strong { margin: 7px 0 6px; font-family: Inter, system-ui, sans-serif; font-size: 1.05rem; font-weight: 850; line-height: 1; }
.guest-page .date-postmark small { max-width: 12ch; font-size: .62rem; line-height: 1.25; }

.guest-page .market-search { grid-template-columns: 1.15fr 1fr 1fr auto; width: min(620px, calc(100% + 130px)); min-width: 0; min-height: 66px; margin-top: 30px; border: 0; border-radius: var(--radius); box-shadow: var(--shadow); transform: none; }
.guest-page .market-search:hover { transform: none; box-shadow: var(--shadow-hover); }
.guest-page .market-search > button { min-height: 52px; padding-inline: 16px; border-left-color: #ded8ca; }
.guest-page .market-search span { color: var(--postcard-muted); font-size: var(--fs-13); }
.guest-page .market-search strong { color: var(--postcard-ink-deep); font-size: var(--fs-13); }
.guest-page .market-search .market-search-submit { display: flex; place-items: unset; align-items: center; justify-content: center; gap: 7px; width: auto; min-width: 100px; min-height: 52px; padding: 0 17px; border-radius: 10px; background: var(--postcard-ink) !important; }
.guest-page .market-search-submit span { color: #fff; font-size: var(--fs-13); font-weight: 800; }
.guest-page .mobile-search { display: none; }

.guest-page .market-filters { gap: 4px; width: min(100% - 48px, var(--guest-max)); margin: 18px auto 0; padding: 14px 0 12px; border-bottom: 1px solid rgba(89,84,73,.22); }
.guest-page .filter-button { display: grid; flex: 1 0 92px; place-items: center; gap: 7px; min-width: 92px; min-height: 66px; padding: 8px 11px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: #57534e; }
.guest-page .filter-button svg { width: 20px; height: 20px; }
.guest-page .filter-button span { font-size: .73rem; font-weight: 750; white-space: nowrap; }
.guest-page .filter-button:hover { border-color: var(--postcard-rule); background: rgba(255,253,248,.56); }
.guest-page .filter-button.is-active { border-color: var(--postcard-ink); background: transparent; color: var(--postcard-ink); }
.guest-page .market-status { width: min(100% - 48px, var(--guest-max)); min-height: 22px; margin: 8px auto 0; color: #57534e; }

.guest-page .experience-shelf, .guest-page .browse-all, .guest-page .market-disclosure { width: min(100% - 48px, var(--guest-max)); margin-inline: auto; }
.guest-page .experience-shelf { margin-top: 48px; margin-bottom: 72px; }
.guest-page .shelf-heading, .guest-page .browse-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 22px; }
.guest-page .shelf-heading h2, .guest-page .browse-heading h2 { margin: 0 0 5px; color: var(--postcard-ink-deep); font-size: clamp(2rem, 3vw, 2.55rem); line-height: 1; }
.guest-page .shelf-heading p, .guest-page .browse-heading p { margin: 0; color: #57534e; font-size: var(--fs-13); }
.guest-page .shelf-arrows { display: flex; gap: 8px; }
.guest-page .shelf-arrows button { width: 44px; height: 44px; border-radius: 50%; }
.guest-page .experience-rail { grid-auto-columns: calc((100% - 54px) / 4); gap: 18px; padding: 2px 0 10px; }
.guest-page .experience-card { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; cursor: pointer; transition: transform .22s cubic-bezier(.2,.8,.2,1); }
.guest-page .experience-card:hover, .guest-page .experience-card:nth-child(even):hover { transform: translateY(-3px); box-shadow: none; }
.guest-page .experience-card-photo { aspect-ratio: 4 / 3; border-radius: 14px; background: #e3ded3; }
.guest-page .experience-card-photo::after { box-shadow: inset 0 0 0 1px rgba(0,15,46,.08); }
.guest-page .experience-card-photos img { filter: none; }
.guest-page .experience-card:hover .experience-card-photos img { filter: saturate(1.04) contrast(1.02); }
.guest-page .market-badge-offer { top: 12px !important; right: auto !important; left: 12px !important; display: grid; width: auto; min-width: 74px; height: auto; min-height: 48px; place-items: start; padding: 7px 10px; border: 0; border-radius: 4px; background: var(--postcard-red); color: #fff; text-align: left; transform: none; box-shadow: 0 4px 12px rgba(54,26,23,.22); }
.guest-page .market-badge-offer strong { font-family: Inter, system-ui, sans-serif; font-size: .92rem; line-height: 1; }
.guest-page .market-badge-offer small { margin-top: 3px; font-size: .58rem; font-weight: 800; letter-spacing: .06em; line-height: 1; text-transform: uppercase; }
.guest-page .experience-card-photo .save-button { top: 10px; right: 10px; bottom: auto; left: auto; background: rgba(255,253,248,.92); color: var(--postcard-ink-deep); box-shadow: 0 3px 10px rgba(0,15,46,.18); }
.guest-page .experience-card-photo .save-button.is-saved { background: var(--postcard-ink); color: #fff; }
.guest-page .card-photo-count { right: 12px; bottom: 10px; }
.guest-page .experience-card-copy { padding: 11px 2px 0; }
.guest-page .experience-card-copy h3 { min-height: 0; margin: 0 0 4px; font-family: Inter, system-ui, sans-serif; font-size: .98rem; font-weight: 750; line-height: 1.28; }
.guest-page .experience-card-title { color: var(--postcard-ink-deep); text-decoration: none; }
.guest-page .experience-card-title::after { content: ""; position: absolute; inset: 0; z-index: -1; }
.guest-page .experience-card-copy .card-meta, .guest-page .experience-card-copy .card-operator { overflow: hidden; margin: 0; color: #57534e; font-size: .79rem; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
.guest-page .experience-card-copy .card-price-line { display: flex; align-items: baseline; gap: 5px; margin: 5px 0 1px; color: var(--postcard-ink-deep); font-size: .82rem; }
.guest-page .experience-card-copy .card-price-line strong { font-weight: 800; }
.guest-page .experience-card-copy .card-price-line s, .guest-page .experience-card-copy .card-price-line span { color: #625f58; }
.guest-page .experience-card-copy .card-operator { color: #6b675f; font-size: .72rem; }

.guest-page .browse-all { margin-bottom: 72px; }
.guest-page .browse-heading { margin-bottom: 26px; }
.guest-page .browse-heading label { display: grid; gap: 5px; color: #57534e; font-size: .68rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.guest-page .browse-heading select { min-width: 190px; min-height: 44px; padding: 0 36px 0 12px; border: 1px solid #aaa392; border-radius: 9px; background: var(--postcard-paper); color: var(--postcard-ink-deep); font-weight: 650; }
.guest-page .browse-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 38px 18px; margin-top: 0; }
.guest-page .show-more { display: block; min-height: 48px; margin: 34px auto 0; padding: 0 22px; border: 1px solid var(--postcard-ink); border-radius: 8px; background: transparent; color: var(--postcard-ink); font-weight: 800; cursor: pointer; }
.guest-page .show-more:hover { background: var(--postcard-ink); color: #fff; }
.guest-page .market-disclosure { margin-bottom: 54px; padding: 17px 20px; border-radius: 12px; color: #4b4842; }
.guest-page .footer-feedback { display: flex; align-items: center; gap: 6px; color: #57534e; }
.guest-page .footer-feedback button { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--postcard-rule); border-radius: 50%; background: var(--postcard-paper); color: var(--postcard-ink); cursor: pointer; }
.guest-page .footer-feedback .feedback-status { grid-column: 1 / -1; }

.guest-page .experience-detail { background: var(--postcard-paper); }
.guest-page .detail-header { min-height: 72px; border-color: var(--postcard-rule); background: rgba(255,253,248,.96); backdrop-filter: blur(12px); }
.guest-page .detail-brand { color: var(--postcard-ink); font-family: var(--display); font-size: 1.25rem; font-weight: 750; text-decoration: none; }
.guest-page .detail-shell { width: min(100% - 48px, 1180px); padding-top: 24px; }
.guest-page .detail-gallery { height: 540px; border-radius: 14px; background: #ded9ce; }
.guest-page .detail-gallery-track { display: grid; grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 4px; overflow: hidden; scroll-snap-type: none; }
.guest-page .detail-gallery-slide { min-width: 0; height: auto; overflow: hidden; }
.guest-page .detail-gallery-slide:first-child { grid-row: 1 / 3; }
.guest-page .detail-gallery-slide:last-child:nth-child(4) { grid-column: 2 / 4; }
.guest-page .detail-gallery-slide:nth-child(n+6) { display: none; }
.guest-page .detail-gallery-slide img { transition: transform .5s cubic-bezier(.2,.8,.2,1); }
.guest-page .detail-gallery-slide:hover img { transform: scale(1.025); }
.guest-page .detail-gallery-arrow, .guest-page .detail-gallery-dots { display: none; }
.guest-page .detail-layout { grid-template-columns: minmax(0, 700px) 350px; gap: 70px; }
.guest-page .detail-title-block h1 { color: var(--postcard-ink-deep); }
.guest-page .detail-title-block > p:nth-of-type(2), .guest-page .detail-highlights p, .guest-page .things-to-know p, .guest-page .operator-card p { color: #57534e; }
.guest-page .detail-offer-callout { background: #f5e1de; }
.guest-page .detail-offer-callout svg { color: var(--postcard-red); }
.guest-page .detail-content > section { border-color: var(--postcard-rule); }
.guest-page .detail-booking-card { top: 96px; border: 1px solid var(--postcard-rule); background: var(--postcard-paper); box-shadow: 0 6px 16px rgba(0,24,64,.09), 0 24px 46px rgba(0,24,64,.1); }
.guest-page .booking-field { display: grid; gap: 5px; margin-top: 12px; color: #57534e; font-size: .7rem; font-weight: 800; }
.guest-page .booking-field input, .guest-page .booking-field select { min-height: 48px; padding: 0 12px; border: 1px solid #aaa392; border-radius: 9px; background: #fff; color: var(--postcard-ink-deep); font: inherit; font-size: .84rem; }
/* Legacy flex summary belongs to the old detail booking card only; the dl-based
   .price-breakdown component (viewer/dialog) must keep its own grid layout. */
.guest-page .detail-booking-card .price-breakdown { display: flex; justify-content: space-between; gap: 16px; margin: 18px 0 12px; padding-top: 14px; border-top: 1px solid var(--postcard-rule); color: #57534e; font-size: .8rem; }
.guest-page .detail-booking-card .price-breakdown > strong { color: var(--postcard-ink-deep); font-size: 1rem; font-variant-numeric: tabular-nums; }
.guest-page .reserve-button { width: 100%; min-height: 50px; border-radius: 8px; }
.guest-page .operator-card a { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; margin-top: 10px; color: var(--postcard-ink); font-weight: 800; }

.guest-page .booking-dialog { width: min(calc(100% - 28px), 520px); }
.guest-page .booking-dialog h2 { max-width: 13ch; margin: 20px 0 12px; }
.guest-page .booking-operator { display: flex; align-items: center; gap: 12px; padding-right: 40px; }
.guest-page .booking-operator-mark { display: grid; flex: 0 0 48px; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--postcard-blue-soft); color: var(--postcard-blue); font-family: var(--display); font-size: 1.5rem; font-weight: 800; }
.guest-page .booking-operator span, .guest-page .booking-operator strong { display: block; }
.guest-page .booking-operator span { color: #625f58; font-size: .72rem; }
.guest-page .booking-operator strong { color: var(--postcard-ink-deep); font-size: .95rem; }
.guest-page .booking-perk-summary { display: grid; grid-template-columns: 22px 1fr; gap: 10px; margin: 14px 0; padding: 13px; border-radius: 10px; background: #f5e1de; color: var(--postcard-red-dark); }
.guest-page .booking-perk-summary[hidden] { display: none; }
.guest-page .booking-perk-summary p { margin: 3px 0 0; color: #6b3b37; font-size: .8rem; }
.guest-page .booking-steps { display: grid; gap: 8px; margin: 16px 0; padding-left: 22px; color: #4b4842; font-size: .86rem; line-height: 1.45; }
.guest-page .promo-line { border-color: var(--postcard-rule); background: #f1eee5; }

@media (max-width: 1020px) {
  .guest-page .postcard-guide-hero { grid-template-columns: .9fr 1.1fr; height: 430px; }
  .guest-page .postcard-hero-copy { padding: 38px; }
  .guest-page .postcard-guide-hero h1 { font-size: clamp(3.5rem, 7vw, 4.7rem); }
  .guest-page .hero-photo { height: 430px; }
  .guest-page .market-search { width: calc(100% + 90px); }
  .guest-page .experience-rail { grid-auto-columns: calc((100% - 36px) / 3); }
  .guest-page .browse-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .guest-page .detail-gallery { height: 460px; }
  .guest-page .detail-layout { grid-template-columns: minmax(0, 1fr) 330px; gap: 42px; }
}

@media (max-width: 760px) {
  .guest-page { padding-bottom: 78px; }
  .guest-page .airmail-top { height: 4px; }
  .guest-page .market-header-row { width: min(100% - 28px, var(--guest-max)); min-height: 64px; }
  .guest-page .market-brand small, .guest-page .currency-label, .guest-page .header-icon { display: none; }
  .guest-page .operator-link { min-height: 40px; padding-inline: 13px; font-size: .74rem; }
  .guest-page .postcard-guide-hero { display: block; width: auto; height: auto; min-height: 0; margin: 0; border-radius: 0; box-shadow: none; }
  .guest-page .postcard-hero-copy { position: relative; z-index: 2; min-height: 470px; justify-content: end; padding: 34px 20px 30px; background: linear-gradient(0deg, rgba(7,31,25,.92) 0, rgba(7,31,25,.3) 70%, rgba(7,31,25,.12) 100%); }
  .guest-page .postcard-guide-hero h1 { max-width: 8ch; margin-bottom: 14px; font-size: clamp(3.65rem, 16vw, 5rem); }
  .guest-page .postcard-guide-hero p { max-width: 36ch; color: #eef4f1; font-size: .92rem; }
  .guest-page .hero-photo { position: absolute; inset: 0 0 auto; height: 470px; min-height: 470px; }
  .guest-page .hero-photo::after, .guest-page .date-postmark, .guest-page .market-search { display: none; }
  .guest-page .mobile-search { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 52px; margin-top: 22px; padding: 0 16px; border: 0; border-radius: 10px; background: var(--postcard-paper); color: var(--postcard-ink-deep); font-weight: 800; box-shadow: 0 8px 24px rgba(7,31,25,.25); }
  .guest-page .market-filters { width: 100%; margin-top: 0; padding: 10px 12px 8px; background: var(--postcard-cream); }
  .guest-page .filter-button { flex-basis: 76px; min-width: 76px; min-height: 62px; }
  .guest-page .market-status { width: calc(100% - 40px); margin-top: 8px; }
  .guest-page .experience-shelf, .guest-page .browse-all, .guest-page .market-disclosure { width: calc(100% - 40px); }
  .guest-page .experience-shelf { margin-top: 34px; margin-bottom: 60px; }
  .guest-page .shelf-heading, .guest-page .browse-heading { align-items: flex-start; }
  .guest-page .shelf-heading h2, .guest-page .browse-heading h2 { font-size: 2rem; }
  .guest-page .shelf-arrows { display: none; }
  .guest-page .experience-rail { grid-auto-columns: 86%; gap: 14px; margin-right: -20px; padding-right: 20px; }
  .guest-page .browse-heading { display: grid; }
  .guest-page .browse-heading label { width: 100%; }
  .guest-page .browse-heading select { width: 100%; }
  .guest-page .browse-grid { grid-template-columns: 1fr; gap: 34px; }
  .guest-page .experience-card-photo { aspect-ratio: 4 / 3; }
  .guest-page .footer-feedback { flex-wrap: wrap; }
  .guest-page .market-bottom-nav { display: none; }
  .guest-page .detail-header { grid-template-columns: 1fr auto; padding: 0 14px; }
  .guest-page .detail-brand { display: none; }
  .guest-page .detail-shell { width: 100%; padding-top: 0; }
  .guest-page .detail-gallery { height: min(78vw, 390px); border-radius: 0; }
  .guest-page .detail-gallery-track { display: flex; gap: 0; overflow-x: auto; scroll-snap-type: x mandatory; }
  .guest-page .detail-gallery-slide { flex: 0 0 100%; height: 100%; scroll-snap-align: start; }
  .guest-page .detail-gallery-slide:first-child { grid-row: auto; }
  .guest-page .detail-gallery-slide:last-child:nth-child(4) { grid-column: auto; }
  .guest-page .detail-gallery-slide:nth-child(n+6) { display: block; }
  .guest-page .detail-gallery-arrow, .guest-page .detail-gallery-dots { display: flex; }
  .guest-page .detail-layout { display: block; padding: 28px 20px 100px; }
  .guest-page .detail-booking-card { display: none; }
  .guest-page .mobile-reserve-bar { display: grid; grid-template-columns: 1fr minmax(150px, auto); gap: 12px; padding: 10px 14px; border-top: 1px solid var(--postcard-rule); background: rgba(255,253,248,.97); }
  .guest-page .mobile-reserve-bar > div { display: grid; align-content: center; justify-items: start; }
  .guest-page .mobile-reserve-bar > div > span, .guest-page .mobile-reserve-bar > div > s { display: none; }
  .guest-page .mobile-reserve-bar > div > strong { font-size: 1.05rem; line-height: 1; }
  .guest-page .mobile-reserve-bar > div > small { display: block; margin-top: 3px; color: #625f58; font-size: .62rem; }
  .guest-page .mobile-reserve-bar button { min-height: 48px; border-radius: 8px; }
}

/* Mobile guest guide: search, scan, book. Same paper, ink and type as desktop — one guide, two sizes. */
@media (max-width: 760px) {
  .guest-page {
    padding-bottom: 0;
    background: var(--postcard-cream);
    color: var(--postcard-ink-deep);
  }
  .guest-page .market-main {
    padding: 0 0 40px;
    background: var(--postcard-cream);
    background-image: none;
  }
  .guest-page .postcard-guide-hero,
  .guest-page .experience-shelf,
  .guest-page .market-disclosure {
    display: none;
  }

  .guest-page .market-header {
    position: sticky;
    top: 0;
    z-index: 80;
    border-bottom: 1px solid rgba(89, 84, 73, .18);
    background: rgba(247, 243, 233, .97);
    box-shadow: var(--shadow);
    backdrop-filter: blur(12px);
  }
  .guest-page .market-header-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 6px 12px;
    width: calc(100% - 32px);
    min-height: 0;
    padding: 6px 0 10px;
    transition: padding 200ms cubic-bezier(.2,.8,.2,1);
  }
  .guest-page .market-brand {
    display: grid;
    align-items: center;
    min-height: 40px;
    overflow: hidden;
    transition: min-height 200ms cubic-bezier(.2,.8,.2,1), opacity 160ms linear;
  }
  .guest-page .market-brand .market-brand-logo { width: 176px; height: 44px; background-size: contain; background-position: left center; }
  /* Scrolling down collapses the full logo so the guide keeps its viewport; scrolling up brings
     it back. The condensed state keeps a small stamp mark at left (round 3, Opus #13) instead
     of hiding the brand entirely, so the tel: button in the same row never reads as a stray
     control alone at the right with nothing across from it. */
  /* The stamp graphic stays 28px; the link itself stays a 44 x 44 tap target (round 4, Opus #7),
     with the mark at its left edge so it lines up with the content below. */
  .guest-page .market-header.is-condensed .market-brand { min-height: 44px; height: 44px; width: 44px; justify-items: start; opacity: 1; }
  .guest-page .market-header.is-condensed .market-brand-logo { width: 28px; height: 28px; background-image: url("/assets/brand/postcardperks-stamp.svg?v=20260822-kalam"); background-size: contain; background-position: left center; }
  .guest-page .market-header.is-condensed .market-header-row { padding-top: 8px; padding-bottom: 8px; }
  .guest-page .market-header-actions { display: none; }
  .guest-page .mobile-search {
    display: grid;
    grid-column: 1 / -1;
    grid-template-columns: 20px minmax(0, 1fr) 34px;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-height: 52px;
    margin: 0;
    padding: 4px 8px 4px 12px;
    border: 1px solid rgba(89,84,73,.22);
    border-radius: var(--radius);
    background: var(--postcard-paper);
    color: var(--postcard-ink-deep);
    text-align: left;
    box-shadow: var(--shadow);
  }
  .guest-page .mobile-search > span,
  .guest-page .mobile-search strong,
  .guest-page .mobile-search small { display: block; min-width: 0; }
  .guest-page .mobile-search strong {
    overflow: hidden;
    font-size: var(--fs-16);
    font-weight: 750;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .guest-page .mobile-search small {
    overflow: hidden;
    margin-top: 2px;
    color: var(--postcard-muted);
    font-size: var(--fs-13);
    font-weight: 500;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .guest-page .mobile-search small span { display: inline; }
  .guest-page .mobile-search .icon { width: 20px; height: 20px; }
  .guest-page .mobile-search .mobile-search-tune {
    width: 34px;
    height: 34px;
    padding: 8px;
    border: 1px solid rgba(89,84,73,.3);
    border-radius: 50%;
    color: var(--postcard-ink);
  }

  .guest-page .market-filters {
    gap: 2px;
    width: 100%;
    margin: 0;
    padding: 6px 8px 4px;
    border-bottom: 1px solid rgba(89,84,73,.16);
    background: var(--postcard-cream);
    scroll-padding-inline: 8px;
    /* fade hints that the rail scrolls */
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent);
  }
  .guest-page .filter-button {
    flex: 0 0 auto;
    min-width: 72px;
    min-height: 56px;
    gap: 4px;
    padding: 6px 10px;
    color: var(--postcard-muted);
  }
  .guest-page .filter-button .icon { width: 20px; height: 20px; }
  .guest-page .filter-button span { font-size: .78rem; font-weight: 650; }
  .guest-page .filter-button.is-active {
    border-color: var(--postcard-ink);
    color: var(--postcard-ink);
  }

  .guest-page .browse-all {
    width: calc(100% - 32px);
    margin: 0 auto;
    padding: 18px 0 0;
    border: 0;
  }
  .guest-page .browse-heading {
    display: grid;
    gap: 12px;
    margin: 0 0 18px;
  }
  .guest-page .browse-heading p {
    color: var(--postcard-muted);
    font-size: var(--fs-13);
  }
  .guest-page .browse-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px 12px;
  }
  .guest-page .experience-card { cursor: pointer; }
  .guest-page .experience-card-photo {
    aspect-ratio: 1;
    border-radius: 12px;
    background: #eee;
  }
  .guest-page .experience-card-photo::after { box-shadow: none; }
  .guest-page .market-badge-offer {
    top: 8px !important;
    left: 8px !important;
    min-width: 0;
    min-height: 0;
    padding: 6px 8px;
    border-radius: 999px;
    background: rgba(255,255,255,.96);
    color: #222;
    text-align: center;
    box-shadow: 0 2px 8px rgba(0,0,0,.14);
  }
  .guest-page .market-badge-offer strong { font-size: .72rem; }
  .guest-page .market-badge-offer small {
    margin-top: 2px;
    color: #666;
    font-size: .5rem;
  }
  .guest-page .experience-card-photo .save-button {
    top: 2px;
    right: 2px;
    width: 44px;
    height: 44px;
    background: transparent;
    color: #fff;
    box-shadow: none;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,.65));
  }
  .guest-page .experience-card-photo .save-button svg {
    width: 25px;
    fill: rgba(0,0,0,.18);
  }
  .guest-page .experience-card-copy { padding: 8px 2px 0; }
  .guest-page .experience-card-copy h3 {
    display: -webkit-box;
    min-height: 2.5em;
    margin-bottom: 3px;
    overflow: hidden;
    color: #222;
    font-size: .9rem;
    font-weight: 750;
    line-height: 1.25;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }
  .guest-page .experience-card-copy .card-meta {
    color: #525252;
    font-size: .72rem;
  }
  .guest-page .experience-card-copy .card-price-line {
    flex-wrap: wrap;
    gap: 2px 4px;
    margin-top: 5px;
    color: #222;
    font-size: .78rem;
    line-height: 1.25;
  }
  .guest-page .experience-card-copy .card-price-line span { font-size: .7rem; }
  .guest-page .experience-card-copy .card-operator { display: none; }
  .guest-page .show-more {
    width: 100%;
    min-height: 50px;
    margin-top: 28px;
  }

  .guest-page .detail-header {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    z-index: 95;
    grid-template-columns: 1fr auto;
    min-height: 64px;
    padding: 10px 12px;
    border: 0;
    background: transparent;
    backdrop-filter: none;
  }
  .guest-page .detail-header .detail-back { width: 44px; padding: 0; }
  .guest-page .detail-header .detail-back span { display: none; }
  .guest-page .detail-header button {
    border: 0;
    background: rgba(255,255,255,.96);
    color: #222;
    box-shadow: 0 2px 8px rgba(0,0,0,.16);
  }
  .guest-page .detail-gallery { height: min(78vw, 390px); }
  .guest-page .detail-gallery-arrow { display: none; }
  .guest-page .detail-layout { padding: 22px 20px 100px; }
  .guest-page .detail-content > section { padding: 22px 0; }
  .guest-page .detail-title-block h1 {
    max-width: none;
    margin-bottom: 8px;
    color: #222;
    font-size: 1.8rem;
    font-weight: 750;
    line-height: 1.15;
  }
  .guest-page .detail-title-block > p:first-child { margin-bottom: 5px; }
  .guest-page .detail-title-block > p:nth-of-type(2) {
    color: #4f4f4f;
    font-size: .95rem;
    line-height: 1.5;
  }
  .guest-page .detail-demo-note {
    padding: 8px 10px;
    font-size: .76rem;
    line-height: 1.35;
  }
  .guest-page .detail-highlights {
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
  }
  .guest-page .detail-highlights article {
    display: block;
    min-width: 0;
  }
  .guest-page .detail-highlights svg { width: 20px; margin-bottom: 7px; }
  .guest-page .detail-highlights h3 {
    overflow: hidden;
    font-size: .8rem;
    line-height: 1.3;
    text-overflow: ellipsis;
  }
  .guest-page .detail-highlights p {
    margin-top: 2px;
    font-size: .72rem;
    line-height: 1.35;
  }
  .guest-page .detail-host { align-items: flex-start; }
  .guest-page .detail-host a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 36px;
    margin-top: 5px;
    color: #222;
    font-size: .82rem;
    font-weight: 700;
  }
  .guest-page .detail-host a svg { width: 16px; }
  .guest-page .detail-section > h2 {
    margin-bottom: 18px;
    font-size: 1.3rem;
  }
  .guest-page .things-to-know { display: grid; gap: 17px; }
  .guest-page .things-to-know h2 { margin-bottom: 0; }
  .guest-page .things-to-know article { gap: 11px; }
  .guest-page .things-to-know p { font-size: .78rem; }
  .guest-page .mobile-reserve-bar {
    grid-template-columns: 1fr minmax(160px, auto);
    padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
    background: rgba(255,255,255,.98);
  }
  .guest-page .mobile-reserve-bar button {
    border: 0;
    border-radius: 9px;
    background: var(--postcard-ink);
    color: #fff;
    font-weight: 750;
  }

  .guest-page .selection-dialog,
  .guest-page .booking-dialog {
    width: 100%;
    max-width: none;
    max-height: min(88svh, 760px);
    margin: auto 0 0;
    padding: 28px 20px calc(24px + env(safe-area-inset-bottom));
    border: 0;
    border-radius: 18px 18px 0 0;
  }
  .guest-page .selection-dialog h2,
  .guest-page .booking-dialog h2 {
    max-width: none;
    margin: 10px 0 20px;
    font-size: 1.6rem;
  }
  .guest-page .selection-dialog form { gap: 14px; }
  .guest-page .selection-dialog::backdrop,
  .guest-page .booking-dialog::backdrop { background: rgba(0,0,0,.46); }
}

@media (prefers-reduced-motion: reduce) {
  .guest-page .experience-card, .guest-page .detail-gallery-slide img { transition: none; }
}

/* Author display rules must never override the hidden attribute (demo note, gallery arrows, offer fields). */
[hidden] { display: none !important; }

/* ---------- Guest guide polish (2026-08-18 UX audit): one paper, one ink, one primary button ---------- */
.guest-page {
  --guest-primary: var(--postcard-ink);
  --guest-primary-hover: var(--postcard-ink-deep);
  --guest-control-radius: 10px;
  font-size: 16px;
}
.guest-page .market-brand .market-brand-logo {
  background-image: url("/assets/brand/postcardperks-stamp-lockup.webp?v=20260822-kalam");
}
/* Header: brand left, search centred — the bar is the primary control, not an afterthought on the right. */
@media (min-width: 1021px) {
  .guest-page .market-header-row { display: grid; grid-template-columns: 1fr minmax(660px, 720px) 1fr; align-items: center; gap: 24px; }
  .guest-page .market-header-row .market-brand { justify-self: start; }
  .guest-page .market-header-row .header-market-search { grid-column: 2; }
}
.guest-page .header-market-search { grid-template-columns: 1.08fr .9fr .9fr 1.12fr auto; width: 100%; }
.guest-page .market-header-call {
  display: inline-flex;
  grid-column: 3;
  align-items: center;
  justify-self: end;
  gap: 8px;
  min-width: 44px;
  min-height: 44px;
  padding: 0 12px;
  border: 1px solid rgba(89,84,73,.32);
  border-radius: 8px;
  color: var(--postcard-blue);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  transition: background-color 180ms ease-out, border-color 180ms ease-out, color 180ms ease-out;
}
.guest-page .market-header-call:hover { border-color: var(--postcard-blue); background: var(--postcard-blue-soft); }
.guest-page .market-header-call .icon { width: 20px; height: 20px; }
.guest-page .market-header-call-label { display: none; }
.guest-page .header-market-search > button { border-radius: var(--radius); }
.guest-page .header-market-search > button:hover { background: rgba(0, 24, 64, .05); }
.guest-page .market-search .market-search-submit { border-radius: var(--radius); }
.guest-page .market-activity-field {
  position: relative;
  display: grid;
  align-content: center;
  min-width: 0;
  min-height: 42px;
  padding: 6px 12px 5px 16px;
  border-left: 1px solid #ded8ca;
  border-radius: var(--radius);
}
.guest-page .market-activity-field:hover { background: rgba(0,24,64,.05); }
.guest-page .market-activity-field:focus-within { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }
.guest-page .market-activity-field > span { color: var(--postcard-muted); font-size: var(--fs-13); line-height: 1; }
.guest-page .market-activity-field select {
  min-width: 0;
  width: 100%;
  margin-top: 3px;
  padding: 0;
  border: 0;
  border-radius: var(--radius);
  outline: 0;
  background: transparent;
  color: var(--postcard-ink-deep);
  font: inherit;
  font-size: .82rem;
  font-weight: 750;
  cursor: pointer;
}
.guest-page .mobile-search-row { display: none; }

/* Filter rail: compact, left-aligned category tabs (not five items spread over the whole width). */
.guest-page .market-filters { justify-content: flex-start; gap: 6px; padding: 8px 0 0; border-bottom: 1px solid rgba(89,84,73,.16); }
.guest-page .filter-button { flex: 0 0 auto; min-width: 0; min-height: 60px; padding: 8px 18px 10px; color: var(--postcard-muted); }
.guest-page .filter-button .icon { width: 22px; height: 22px; }
.guest-page .filter-button span { font-size: .8rem; font-weight: 700; }
.guest-page .filter-button:hover { border-color: rgba(0,24,64,.35); background: transparent; color: var(--postcard-ink); }
.guest-page .filter-button.is-active { color: var(--postcard-ink); border-color: var(--postcard-ink); }

/* Context row + heading: no dead band, one hairline, status line lives under the H1. */
.guest-page .guide-context { margin-top: 14px; padding-bottom: 12px; border-bottom: 0; }
.guest-page .guide-context .guide-postmark { font-size: .78rem; }
.guest-page .guide-context .guide-tagline { color: var(--postcard-muted); font-family: var(--display); font-size: 1.05rem; font-style: italic; }
.guest-page .browse-all { margin-top: 6px; padding-top: 0; border-top: 0; }
.guest-page .browse-heading { align-items: flex-end; margin-bottom: 22px; }
.guest-page .browse-heading .market-status { display: block; width: auto; min-height: 1.4em; margin: 0; padding: 0; color: var(--postcard-muted); font-size: .94rem; position: static; overflow: visible; clip: auto; white-space: normal; }
.guest-page .browse-grid { gap: 34px 20px; }
.guest-page .show-more { min-height: 50px; padding: 0 24px; border: 1.5px solid var(--postcard-ink); border-radius: var(--guest-control-radius); color: var(--postcard-ink); }
.guest-page .show-more:hover { background: var(--postcard-ink); color: #fff; }

/* Empty state: a real block, not a hidden status line. */
.guest-page .browse-empty { display: grid; justify-items: center; gap: 8px; max-width: 460px; margin: 30px auto 10px; padding: 34px 24px; border: 1px dashed rgba(89,84,73,.32); border-radius: 14px; background: rgba(255,253,248,.7); text-align: center; }
.guest-page .browse-empty-mark { display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: 4px; border-radius: 50%; background: var(--postcard-blue-soft); color: var(--postcard-blue); }
.guest-page .browse-empty-mark .icon { width: 24px; height: 24px; }
.guest-page .browse-empty h2 { margin: 0; color: var(--postcard-ink-deep); font-family: var(--display); font-size: 1.6rem; }
.guest-page .browse-empty p { margin: 0; color: var(--postcard-muted); font-size: .95rem; line-height: 1.5; }
.guest-page .browse-empty-reset { min-height: 46px; margin-top: 10px; padding: 0 20px; border: 0; border-radius: var(--guest-control-radius); background: var(--guest-primary); color: #fff; font: inherit; font-weight: 750; cursor: pointer; }
.guest-page .browse-empty-reset:hover { background: var(--guest-primary-hover); }


/* Dialogs (search, about, booking): one paper, one radius, one primary button. */
.guest-page .selection-dialog, .guest-page .booking-dialog { border: 0; border-radius: 18px; background: var(--postcard-paper); color: var(--postcard-ink-deep); box-shadow: 0 30px 80px rgba(0,15,46,.35); }
.guest-page .selection-dialog::backdrop, .guest-page .booking-dialog::backdrop { background: rgba(0,15,46,.5); backdrop-filter: blur(4px); }
.guest-page .selection-dialog h2, .guest-page .booking-dialog h2 { max-width: none; font-family: var(--display); font-weight: 650; letter-spacing: -.02em; }
.guest-page .selection-dialog form { display: grid; gap: 16px; }
.guest-page .selection-field { display: grid; gap: 6px; color: var(--postcard-muted); font-size: .8rem; font-weight: 750; }
.guest-page .selection-field small { color: var(--postcard-muted); font-size: .78rem; font-weight: 500; }
.guest-page .selection-field input, .guest-page .selection-field select { min-height: 48px; padding: 0 14px; border: 1px solid #aaa392; border-radius: var(--guest-control-radius); background: #fff; color: var(--postcard-ink-deep); font: inherit; font-size: 1rem; font-weight: 500; }
.guest-page .selection-select { position: relative; display: block; }
.guest-page .selection-select select { width: 100%; padding-right: 42px; appearance: none; -webkit-appearance: none; }
.guest-page .selection-select .selection-chevron { position: absolute; top: 50%; right: 14px; width: 16px; height: 16px; color: var(--postcard-ink); transform: translateY(-50%) rotate(90deg); pointer-events: none; }
.guest-page .stepper { display: grid; grid-template-columns: 48px 1fr 48px; align-items: center; gap: 8px; }
.guest-page .stepper output { display: block; color: var(--postcard-ink-deep); font-size: 1.05rem; font-weight: 700; text-align: center; font-variant-numeric: tabular-nums; }
.guest-page .stepper-btn { width: 48px; height: 48px; border: 1.5px solid var(--postcard-ink); border-radius: 50%; background: transparent; color: var(--postcard-ink); font: inherit; font-size: 1.4rem; font-weight: 500; line-height: 1; cursor: pointer; }
.guest-page .stepper-btn:hover:not(:disabled) { background: rgba(0,24,64,.06); }
.guest-page .stepper-btn:disabled { opacity: .3; cursor: default; }
.guest-page .selection-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 4px; }
.guest-page .selection-clear { min-height: 44px; padding: 0 6px; border: 0; background: transparent; color: var(--postcard-ink); font: inherit; font-weight: 700; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.guest-page .selection-apply { flex: 1 1 auto; max-width: 260px; min-height: 50px; padding: 0 20px; border: 0; border-radius: var(--guest-control-radius); background: var(--guest-primary); color: #fff; font: inherit; font-size: 1rem; font-weight: 750; cursor: pointer; }
.guest-page .selection-apply:hover { background: var(--guest-primary-hover); }
.guest-page .selection-close { display: grid; place-items: center; }
.guest-page .selection-close .icon { width: 20px; height: 20px; }
.guest-page .about-steps { display: grid; gap: 12px; margin: 14px 0 6px; padding-left: 22px; line-height: 1.5; }
.guest-page .about-steps strong { color: var(--postcard-ink); }
.guest-page .about-contact { display: flex; align-items: center; gap: 8px; }
.guest-page .about-contact a { color: var(--postcard-ink); font-weight: 700; }
.guest-page .about-links a { color: var(--postcard-ink); }

.guest-page .booking-dialog h2 { margin: 18px 0 12px; font-size: 1.9rem; line-height: 1.05; }
.guest-page .booking-operator span { font-size: .78rem; }
.guest-page .booking-perk-summary { grid-template-columns: 22px 1fr; margin: 12px 0 14px; padding: 12px 14px; border-radius: var(--guest-control-radius); background: #f5e6e4; color: var(--postcard-red-dark); }
.guest-page .booking-perk-summary .icon { width: 20px; height: 20px; margin-top: 2px; }
.guest-page .booking-perk-summary strong { font-size: .98rem; }
.guest-page .booking-perk-summary p { color: #6b3b37; font-size: .86rem; }
.guest-page #booking-dialog-copy { color: var(--postcard-muted); font-size: .96rem; line-height: 1.5; }
.guest-page .promo-line { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 4px 14px; margin: 16px 0 0; padding: 12px 14px; border: 1px dashed rgba(89,84,73,.4); border-radius: var(--guest-control-radius); background: #f3efe4; }
.guest-page .promo-line > span:first-child { color: var(--postcard-muted); font-size: .74rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
.guest-page .promo-copy { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 44px; padding: 0; border: 0; background: transparent; color: var(--postcard-ink-deep); font: inherit; cursor: pointer; }
.guest-page .promo-copy strong { font-family: var(--display); font-size: 1.5rem; font-weight: 700; letter-spacing: .08em; }
.guest-page .promo-copy-action { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border: 1px solid rgba(0,24,64,.35); border-radius: 999px; color: var(--postcard-ink); font-size: .82rem; font-weight: 700; white-space: nowrap; }
.guest-page .promo-copy.is-copied .promo-copy-action { background: var(--postcard-ink); border-color: var(--postcard-ink); color: #fff; }
.guest-page .promo-copy-action .icon { width: 16px; height: 16px; }
.guest-page .promo-copy-status { grid-column: 1 / -1; min-height: 0; margin: 0; }
.guest-page .promo-copy-status:empty { display: none; }
.guest-page .promo-how { margin: 10px 0 0; color: var(--postcard-muted); font-size: .84rem; line-height: 1.5; }
.guest-page .booking-dialog .primary-action { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 50px; margin-top: 18px; border-radius: var(--guest-control-radius); background: var(--guest-primary); color: #fff; font-weight: 750; text-decoration: none; }
.guest-page .booking-dialog .primary-action:hover { background: var(--guest-primary-hover); }
.guest-page .booking-dialog .primary-action .icon { width: 18px; height: 18px; }
.guest-page .booking-call { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; margin-top: 8px; color: var(--postcard-ink); font-weight: 750; }
.guest-page .booking-call .icon { width: 18px; height: 18px; }
.guest-page .dialog-close .icon { width: 20px; height: 20px; }
@keyframes guest-spin { to { transform: rotate(360deg); } }
.guest-page .icon.is-spinning { animation: guest-spin 900ms linear infinite; }

@media (max-width: 1020px) and (min-width: 761px) {
  .guest-page .market-header-row { grid-template-columns: auto minmax(0, 1fr) auto; }
  .guest-page .market-header-row .header-market-search { grid-column: 2; }
  .guest-page .market-header-call { grid-column: 3; }
  .guest-page .market-header-call-label { display: inline; }
  .guest-page .market-header-call-number { display: none; }
}
@media (max-width: 760px) {
  .guest-page .market-header-call { grid-column: 2; grid-row: 1; }
  .guest-page .mobile-search-row {
    display: grid;
    grid-column: 1 / -1;
    grid-template-columns: minmax(0, 1fr) minmax(116px, .56fr);
    gap: 6px;
    min-width: 0;
  }
  .guest-page .mobile-search-row .mobile-search { grid-column: auto; min-width: 0; }
  .guest-page .mobile-activity-field {
    display: grid;
    align-items: center;
    min-width: 0;
    min-height: 52px;
    padding: 0 9px;
    border: 1px solid rgba(89,84,73,.22);
    border-radius: var(--radius);
    background: var(--postcard-paper);
    box-shadow: var(--shadow);
  }
  .guest-page .mobile-activity-field:focus-within { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }
  .guest-page .mobile-activity-field select {
    min-width: 0;
    width: 100%;
    padding: 0;
    border: 0;
    border-radius: var(--radius);
    outline: 0;
    background: transparent;
    color: var(--postcard-ink-deep);
    font: inherit;
    font-size: .78rem;
    font-weight: 750;
    cursor: pointer;
  }
  .guest-page .market-filters { gap: 2px; padding: 6px 8px 4px; }
  .guest-page .filter-button { min-height: 56px; padding: 6px 12px; }
  .guest-page .filter-button .icon { width: 20px; height: 20px; }
  .guest-page .filter-button span { font-size: .78rem; }
  .guest-page .guide-context { margin-top: 12px; padding-bottom: 8px; }
  .guest-page .guide-context .guide-tagline { margin-top: 4px; font-size: .98rem; }
  .guest-page .browse-all { padding-top: 12px; }
  .guest-page .browse-heading { margin-bottom: 18px; }
  .guest-page .browse-grid { gap: 22px 12px; }
  .guest-page .browse-heading .market-status { font-size: .9rem; }
  .guest-page .browse-empty { margin: 16px auto 8px; padding: 26px 18px; }
  .guest-page .selection-dialog, .guest-page .booking-dialog { border-radius: 18px 18px 0 0; }
  .guest-page .booking-dialog h2 { font-size: 1.7rem; }
  .guest-page .selection-apply { max-width: none; }
}
@media (max-width: 360px) {
  .guest-page .mobile-search-row { grid-template-columns: minmax(0, 1fr) 108px; }
  .guest-page .mobile-search { gap: 8px; padding-left: 12px; }
  .guest-page .mobile-activity-field { padding-inline: 7px; }
  .guest-page .mobile-activity-field select { font-size: .72rem; }
  .guest-page .market-header-call-label { display: inline; }
  .guest-page .market-header-call-number { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .guest-page .market-brand, .guest-page .market-header-row, .guest-page .market-header-call { transition: none; }
  .guest-page .icon.is-spinning { animation: none; }
}

/* Error page: same paper, ink and brand as the guest guide. */
.error-shell { color: var(--postcard-ink-deep); font-family: "Inter", "Inter Fallback", system-ui, sans-serif; }
.error-shell .error-brand { display: inline-block; margin-bottom: 8px; line-height: 0; }
.error-shell .error-brand img { display: block; width: 200px; height: auto; }
.error-shell h1 { color: var(--postcard-ink-deep); font-family: var(--display); font-weight: 650; letter-spacing: -.02em; }
.error-shell > p { color: var(--postcard-muted); }
.error-shell .primary-action { display: inline-flex; align-items: center; gap: 8px; min-height: 48px; border-radius: 10px; background: var(--postcard-ink); color: #fff; }
.error-shell .primary-action:hover { background: var(--postcard-ink-deep); color: #fff; }
.error-shell .primary-action .icon { width: 18px; height: 18px; }
.error-shell .error-help { margin-top: 26px; color: var(--postcard-muted); font-size: .92rem; }
.error-shell .error-help a { color: var(--postcard-ink); font-weight: 700; }

/* Critique pass — make the postcard the guest-page structure, not just its garnish. */
.guest-page .guide-intro {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 168px;
  gap: clamp(28px, 5vw, 72px);
  align-items: center;
  width: min(calc(100% - 64px), 1440px);
  margin: 28px auto 0;
  padding: clamp(26px, 4vw, 48px) clamp(24px, 4vw, 58px);
  border: 1px solid rgba(126, 116, 96, .28);
  border-radius: 14px;
  background-color: var(--postcard-paper);
  background-image: linear-gradient(rgba(255, 253, 248, .89), rgba(255, 253, 248, .89)), url("/assets/materials/map-paper.webp");
  box-shadow: 0 8px 18px rgba(0, 24, 64, .08), 0 28px 56px rgba(0, 24, 64, .07);
  transform: rotate(-.16deg);
}
.guest-page .guide-intro-copy { max-width: 72ch; }
.guest-page .guide-intro .guide-tagline {
  margin: 0 0 6px;
  color: var(--postcard-blue);
  font-family: var(--postcard-font-script);
  font-size: clamp(1.2rem, 2vw, 1.55rem);
  line-height: 1;
}
.guest-page .guide-intro h1 {
  max-width: 17ch;
  margin: 0;
  color: var(--postcard-ink-deep);
  font-family: var(--display);
  font-size: clamp(2.25rem, 4.5vw, 4.6rem);
  font-weight: 650;
  letter-spacing: -.03em;
  line-height: .95;
  text-wrap: balance;
}
.guest-page .guide-intro-copy > p:not(.guide-tagline) { max-width: 62ch; margin: 16px 0 0; color: var(--postcard-muted); line-height: 1.55; }
.guest-page .guide-intro-copy > a { display: inline-flex; align-items: center; min-height: 44px; margin-top: 12px; color: var(--postcard-ink); font-weight: 800; text-decoration: underline; text-decoration-color: rgba(0, 24, 64, .35); text-underline-offset: .24em; }
.guest-page .guide-intro-copy > a:hover { text-decoration-color: currentColor; }
.guest-page .guide-intro .guide-postmark {
  display: grid;
  place-content: center;
  width: 164px;
  aspect-ratio: 1;
  margin: 0;
  border: 2px solid var(--postcard-blue);
  border-radius: 50%;
  color: var(--postcard-blue);
  font-size: .7rem;
  font-weight: 850;
  letter-spacing: .09em;
  line-height: 1.45;
  text-align: center;
  text-transform: uppercase;
  transform: rotate(5deg);
}
.guest-page .guide-intro .guide-postmark::before,
.guest-page .guide-intro .guide-postmark::after { content: ""; display: block; width: 106px; height: 1px; margin: 6px auto; background: currentColor; opacity: .65; }
.guest-page .guide-intro .guide-postmark span { display: block; }
.guest-page .booking-dialog { position: relative; overflow: auto; background-image: linear-gradient(rgba(255,253,248,.92), rgba(255,253,248,.92)), url("/assets/materials/map-paper.webp"); }
.guest-page .booking-dialog::after { content: ""; position: absolute; top: 18px; right: 18px; width: 45px; aspect-ratio: 379 / 451; background: url("/components/assets/postcard-stamp.svg?v=20260822-kalam") center / contain no-repeat; opacity: .72; transform: rotate(7deg); pointer-events: none; }
.guest-page .booking-mail-caption { display: block; max-width: 15ch; padding-right: 56px; color: var(--postcard-blue); font-family: var(--postcard-font-script); font-size: var(--fs-20); line-height: 1.1; } /* handwriting floor */
.guest-page .booking-operator { margin-top: 14px; }
/* Guest footer: the one live rule set (round 4). The earlier flex/grid iterations of this footer
   were deleted rather than overridden. Desktop: brand and sign-off in column 1, links in column 2
   behind a border-left divider that only spans the nav's own box, then the full-width demo
   disclosure as row 2 and the airmail edge pinned inside the bottom padding. Under 760px every
   block gets its own row (see the media block below), so no two blocks can share a grid cell. */
.guest-page .guest-footer {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: start;
  gap: var(--sp-24, 24px) var(--sp-48, 48px);
  width: min(100% - 48px, var(--guest-max));
  margin: var(--sp-64, 64px) auto 0;
  padding: var(--sp-32, 32px) var(--sp-48, 48px) var(--sp-48, 48px);
  border: 1px solid rgba(126,116,96,.32);
  border-radius: var(--radius);
  background-color: var(--postcard-paper);
  background-image: linear-gradient(rgba(255,253,248,.9),rgba(255,253,248,.9)),url("/assets/materials/map-paper.webp");
  box-shadow: var(--shadow);
  color: var(--postcard-muted);
  font-size: var(--fs-13);
}
.guest-page .guest-footer p { margin: 0; }
.guest-page .guest-footer::after { content: ""; position: absolute; right: 16px; bottom: 12px; left: 16px; height: 6px; background: repeating-linear-gradient(135deg, var(--postcard-red) 0 12px, transparent 12px 22px, var(--postcard-blue) 22px 34px, transparent 34px 44px); opacity: .82; }
.guest-page .guest-footer-brand { grid-column: 1; grid-row: 1; max-width: 46ch; }
/* Plain sans at a scale size: the handwriting face is not loaded on the guide (house rule: two families). */
.guest-page .guest-footer-signoff { display: block; margin-bottom: var(--sp-4, 4px); color: var(--postcard-blue); font-family: var(--postcard-font-ui); font-size: var(--fs-16); font-weight: 400; line-height: 1.5; }
.guest-page .guest-footer-brand strong { display: block; color: var(--postcard-ink); font-family: var(--display); font-size: var(--fs-20); font-weight: 700; }
.guest-page .guest-footer-brand p { margin-top: var(--sp-4, 4px); font-size: var(--fs-13); line-height: 1.5; }
.guest-page .guest-footer nav { grid-column: 2; grid-row: 1; align-self: stretch; display: flex; flex-wrap: wrap; align-content: flex-start; align-items: center; gap: var(--sp-4, 4px) var(--sp-24, 24px); padding-left: var(--sp-32, 32px); border-left: 1px solid rgba(89,84,73,.25); }
.guest-page .guest-footer nav a, .guest-page .guest-footer nav button { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0; border: 0; background: transparent; color: var(--postcard-ink); font: inherit; font-size: var(--fs-13); font-weight: 700; line-height: 1; text-decoration: underline; text-underline-offset: .22em; text-decoration-color: rgba(0,24,64,.35); cursor: pointer; }
.guest-page .guest-footer nav a:hover, .guest-page .guest-footer nav button:hover { text-decoration-color: currentColor; }
.guest-page .guest-footer-disclosure { grid-column: 1 / -1; grid-row: 2; padding-top: var(--sp-16, 16px); border-top: 1px solid rgba(89,84,73,.2); color: var(--postcard-ink-soft, #566074); font-size: var(--fs-13); line-height: 1.5; }

.founding-terms { margin: 28px 0 0; border-block: 1px solid var(--postcard-rule); }
.founding-terms div { display: flex; justify-content: space-between; gap: 20px; padding: 12px 2px; border-top: 1px solid rgba(89,84,73,.2); }
.founding-terms div:first-child { border-top: 0; }
.founding-terms dt { color: var(--postcard-muted); }
.founding-terms dd { margin: 0; color: var(--postcard-ink); font-family: var(--display); font-size: 1.2rem; font-weight: 700; }

@media (max-width: 760px) {
  .guest-page .guide-intro { grid-template-columns: 1fr; width: calc(100% - 24px); gap: 22px; margin-top: 14px; padding: 24px 20px 22px; }
  .guest-page .guide-intro h1 { font-size: clamp(2.15rem, 11vw, 3.3rem); }
  .guest-page .guide-intro .guide-postmark { justify-self: end; width: 118px; font-size: .58rem; }
  .guest-page .guide-intro .guide-postmark::before, .guest-page .guide-intro .guide-postmark::after { width: 76px; margin-block: 4px; }
  /* One column, one row per block: brand, links, disclosure. Each block is placed explicitly so no
     two of them can ever share a cell (round 3 regression: brand and nav both stayed in row 1). */
  /* The bottom margin is the floating map pill's footprint (48px + 24px offset + safe area, rounded
     up to 96px): the footer is the last thing on the page, so at full scroll the fixed pill rests
     below it instead of on its airmail edge. The footer is hidden in map view. */
  .guest-page .guest-footer { grid-template-columns: minmax(0, 1fr); gap: var(--sp-16, 16px); width: calc(100% - 24px); margin-bottom: calc(var(--sp-96, 96px) + env(safe-area-inset-bottom)); padding: var(--sp-24, 24px) var(--sp-24, 24px) var(--sp-48, 48px); }
  .guest-page .guest-footer-brand { grid-column: 1; grid-row: 1; max-width: none; }
  .guest-page .guest-footer nav { grid-column: 1; grid-row: 2; gap: var(--sp-4, 4px) var(--sp-16, 16px); padding-left: 0; border-left: 0; }
  .guest-page .guest-footer-disclosure { grid-column: 1; grid-row: 3; }
  .guest-page .guest-footer nav a, .guest-page .guest-footer nav button { justify-content: center; min-width: 44px; }
  .guest-page .booking-dialog::after { width: 38px; }
  .guest-page .booking-mail-caption { font-size: 18px; }
}

/* Full postcard world — featured mail, paper grain, tear lines, and mobile rack density. */
.guest-page .market-main {
  background-image:
    radial-gradient(circle, rgba(0, 24, 64, .025) 0 .55px, transparent .7px),
    radial-gradient(circle, rgba(227, 25, 37, .018) 0 .45px, transparent .65px),
    linear-gradient(rgba(247,243,233,.86), rgba(247,243,233,.86)),
    url("/assets/materials/map-paper.webp");
  background-position: 0 0, 5px 7px, 0 0, center top;
  background-size: 9px 9px, 13px 13px, auto, 900px auto;
}
.guest-page .guide-intro {
  position: relative;
  display: block;
  width: min(1120px, calc(100% - 48px));
  margin-bottom: 64px;
  padding: 16px 0 0;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  transform: none;
}
.guest-page .guide-intro::after,
.guest-page .browse-all::after {
  content: "";
  display: block;
  height: 10px;
  border-top: 1px dashed rgba(36, 82, 122, .48);
  background: radial-gradient(circle, rgba(227,25,37,.7) 0 1.2px, transparent 1.5px) 1px 3px / 18px 8px repeat-x;
  pointer-events: none;
}
.guest-page .guide-intro::after { position: absolute; right: 24px; bottom: -42px; left: 24px; }
.guest-page .browse-all { position: relative; }
.guest-page .browse-all::after { margin: 52px 0 0; }
.guest-page .featured-perk { min-width: 0; }
.guest-page .featured-perk__stage { position: relative; height: clamp(420px, calc(100dvh - 315px), 540px); min-height: 0; }
.guest-page .featured-perk__slide {
  position: relative;
  display: grid;
  width: 100%;
  height: 100%;
  place-items: center;
}
.guest-page .featured-perk__postcard {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
  width: min(calc(100% - 136px), clamp(680px, calc(162dvh - 510px), 875px));
  aspect-ratio: 1.62 / 1;
  overflow: hidden;
  border-radius: 8px;
  background-color: var(--postcard-paper);
  background-image: linear-gradient(rgba(255,253,248,.91),rgba(255,253,248,.91)),url("/assets/materials/map-paper.webp");
  background-size: auto, 720px auto;
  box-shadow: 0 1px 3px rgba(0,0,0,.08);
  transform: rotate(-.45deg);
  transform-origin: 50% 80%;
}
.guest-page .featured-perk__photo { position: relative; min-height: 0; margin: 16px 0 16px 16px; overflow: hidden; border-radius: 8px; background: var(--postcard-cream); }
.guest-page .featured-perk__photo::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 1px rgba(0,24,64,.18); pointer-events: none; }
.guest-page .featured-perk__photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center center; filter: var(--postcard-photo-filter); }
.guest-page .featured-perk__message {
  position: relative;
  display: flex;
  min-width: 0;
  padding: clamp(22px, 2.5dvh, 28px) clamp(24px, 2.6vw, 40px) clamp(28px, 3dvh, 36px);
  border-left: 1px solid rgba(89,84,73,.24);
  color: var(--postcard-ink);
  flex-direction: column;
}
.guest-page .featured-perk__message-head { display: flex; align-items: flex-start; justify-content: space-between; min-height: 112px; gap: 18px; }
.guest-page .featured-perk__wish { max-width: 14ch; color: var(--postcard-blue); font-family: var(--postcard-font-logo); font-size: 1rem; font-weight: 700; line-height: 1.05; }
.guest-page .featured-perk__copy { display: grid; align-content: start; gap: 12px; min-height: 0; }
.guest-page .featured-perk__copy h2 { max-width: 13ch; margin: 0; color: var(--postcard-ink-deep); font-family: var(--postcard-font-logo); font-size: clamp(2rem, 2.85vw, 2.7rem); font-weight: 700; letter-spacing: -.025em; line-height: .95; text-wrap: balance; }
.guest-page .featured-perk__copy p { display: -webkit-box; max-width: 31ch; margin: 0; overflow: hidden; color: var(--postcard-ink-soft); font-family: var(--postcard-font-display); font-size: 1.05rem; font-weight: 500; line-height: 1.38; -webkit-box-orient: vertical; -webkit-line-clamp: 4; }
.guest-page .featured-perk__signoff { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-top: auto; padding-top: 14px; border-top: 1px solid rgba(36,82,122,.22); }
.guest-page .featured-perk__signoff small { max-width: 18ch; overflow: hidden; color: var(--postcard-blue); font-family: var(--postcard-font-logo); font-size: .9rem; font-weight: 700; line-height: 1.15; text-overflow: ellipsis; }
.guest-page .guide-intro .featured-perk .guide-postmark {
  position: relative;
  flex: 0 0 auto;
  width: 112px;
  margin: 0;
  padding: 10px;
  border-width: 2px;
  background: var(--postcard-paper);
  box-shadow: 0 3px 10px rgba(0,24,64,.1);
  font-size: .54rem;
  line-height: 1.28;
  transform: rotate(-8deg);
}
.guest-page .guide-intro .featured-perk .guide-postmark__place { font-size: .8em; letter-spacing: .14em; line-height: 1; }
.guest-page .guide-intro .featured-perk .guide-postmark__date { font-size: 1.33em; font-weight: 850; letter-spacing: .07em; line-height: 1.05; }
.guest-page .guide-intro .featured-perk .guide-postmark strong { display: block; margin: 3px 0; font-size: .7rem; font-weight: 850; letter-spacing: .04em; line-height: 1.2; }
.guest-page .guide-intro .featured-perk .guide-postmark.is-date-only .guide-postmark__date { font-size: 1rem; }
.guest-page .guide-intro .featured-perk .guide-postmark::before,
.guest-page .guide-intro .featured-perk .guide-postmark::after { width: 78px; margin-block: 3px; }
.guest-page .featured-perk__under { display: grid; min-height: 0; justify-items: stretch; gap: 8px; width: min(calc(100% - 136px), clamp(680px, calc(162dvh - 510px), 875px)); margin: 12px auto 0; }
.guest-page .featured-perk__open { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; padding: 12px 24px; border: 0; border-radius: 8px; background: var(--postcard-ink); color: #fff; font: inherit; font-weight: 800; cursor: pointer; transition: background 180ms ease-out, box-shadow 180ms ease-out, transform 180ms ease-out; }
.guest-page .featured-perk__open:hover { background: var(--postcard-ink-deep); box-shadow: 0 4px 12px rgba(0,0,0,.10); transform: translateY(-1px); }
.guest-page .featured-perk__open:focus-visible { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }

.guest-page .booking-dialog[open] { animation: postcard-mail-arrive 360ms cubic-bezier(.16,1,.3,1) both; }
.guest-page .booking-dialog::before { content: ""; position: absolute; top: 28px; right: 42px; z-index: 2; width: 82px; aspect-ratio: 1; border: 3px double var(--postcard-blue); border-radius: 50%; opacity: 0; transform: rotate(-11deg); pointer-events: none; }
.guest-page .booking-dialog[open]::after { animation: postcard-stamp-thunk 220ms 180ms cubic-bezier(.16,1,.3,1) both; }
.guest-page .booking-dialog[open]::before { animation: postcard-postmark-ink 180ms 350ms linear forwards; }

@media (min-width: 761px) and (max-height: 740px) {
  .guest-page .featured-perk__message { padding: 18px 24px 22px; }
  .guest-page .featured-perk__message-head { min-height: 86px; gap: 12px; }
  .guest-page .featured-perk__wish { max-width: 13ch; font-size: .94rem; }
  .guest-page .featured-perk__copy { gap: 8px; }
  .guest-page .featured-perk__copy h2 { font-size: clamp(1.8rem, 2.7vw, 2.3rem); }
  .guest-page .featured-perk__copy p { font-size: .9rem; line-height: 1.32; -webkit-line-clamp: 3; }
  .guest-page .featured-perk__signoff { gap: 12px; padding-top: 9px; }
  .guest-page .featured-perk__signoff small { font-size: .78rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark { width: 86px; padding: 7px; font-size: .46rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark strong { font-size: .58rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark.is-date-only .guide-postmark__date { font-size: .78rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark::before,
  .guest-page .guide-intro .featured-perk .guide-postmark::after { width: 60px; margin-block: 2px; }
  .guest-page .featured-perk__signoff .postcard-price__stamp { min-width: 46px; min-height: 30px; padding-inline: 6px; }
  .guest-page .featured-perk__signoff .postcard-price__perk { font-size: .96rem; }
}

@media (max-width: 760px) {
  .guest-page .guide-intro { width: calc(100% - 12px); margin-bottom: 50px; padding-top: 10px; }
  .guest-page .guide-intro::after { right: 14px; bottom: -34px; left: 14px; }
  .guest-page .featured-perk__stage { height: clamp(350px, calc(100dvh - 330px), 440px); }
  .guest-page .featured-perk__postcard { grid-template-columns: 1fr; grid-template-rows: minmax(154px, 56%) minmax(0, 44%); width: calc(100% - 12px); height: 100%; min-height: 0; aspect-ratio: auto; transform: rotate(-.3deg); }
  .guest-page .featured-perk__photo { margin: 12px 12px 0; }
  .guest-page .featured-perk__message { min-height: 0; padding: 10px 16px 12px; border-top: 1px solid rgba(89,84,73,.24); border-left: 0; }
  .guest-page .featured-perk__message-head { min-height: 52px; }
  .guest-page .featured-perk__wish { max-width: 13ch; font-size: 1rem; }
  .guest-page .featured-perk__copy { gap: 0; }
  .guest-page .featured-perk__copy h2 { max-width: 15ch; font-size: clamp(1.45rem, 6.8vw, 2rem); }
  .guest-page .featured-perk__copy p { display: none; }
  .guest-page .featured-perk__signoff { padding-top: 7px; }
  .guest-page .featured-perk__signoff small { font-size: .8rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark { width: 76px; padding: 6px; font-size: .42rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark strong { font-size: .55rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark.is-date-only .guide-postmark__date { font-size: .72rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark::before,
  .guest-page .guide-intro .featured-perk .guide-postmark::after { width: 58px; margin-block: 2px; }
  .guest-page .featured-perk__under { width: calc(100% - 12px); margin-top: 8px; }
  .guest-page .market-filters { overflow-x: auto; padding-right: 34px; scrollbar-width: none; scroll-snap-type: x proximity; mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 28px), transparent 100%); }
  .guest-page .market-filters::-webkit-scrollbar { display: none; }
  .guest-page .filter-button { scroll-snap-align: start; }
}
@media (max-width: 480px) {
  .guest-page .browse-grid { grid-template-columns: minmax(0, 1fr); gap: 30px; }
  .guest-page .postcard-card__title { font-size: 1.05rem; }
  .guest-page .postcard-card__facts { font-size: .88rem; }
  .guest-page .postcard-card__open { font-size: .8rem; }
}
@media (max-width: 380px) {
  .guest-page .featured-perk__stage { height: clamp(350px, calc(100dvh - 320px), 400px); }
  .guest-page .featured-perk__postcard { grid-template-rows: 50% 50%; }
  .guest-page .featured-perk__message { padding: 8px 12px 9px; }
  .guest-page .featured-perk__message-head { min-height: 42px; }
  .guest-page .featured-perk__wish { font-size: .82rem; }
  .guest-page .featured-perk__copy h2 { font-size: clamp(1.15rem, 6vw, 1.48rem); line-height: .92; }
  .guest-page .featured-perk__signoff small { font-size: .72rem; }
  .guest-page .guide-intro .featured-perk .guide-postmark { width: 60px; }
  .guest-page .featured-perk__signoff .postcard-price__was { font-size: .68rem; }
  .guest-page .featured-perk__signoff .postcard-price__stamp { min-width: 42px; min-height: 27px; padding-inline: 5px; }
  .guest-page .featured-perk__signoff .postcard-price__perk { font-size: .86rem; }
}
@media (prefers-reduced-motion: reduce) {
  .guest-page .booking-dialog[open], .guest-page .booking-dialog[open]::before, .guest-page .booking-dialog[open]::after { animation: none; }
  .guest-page .booking-dialog::before { opacity: .68; }
}

/* The final booking decision stays visible on phones while contact details scroll. */
.guest-page .platform-booking__payment-note { margin: 2px 0 0; color: var(--postcard-ink-soft); font-size: 1rem; line-height: 1.45; }
.guest-page .platform-booking__submit-bar .postcard-viewer__book { width: 100%; margin: 0; font-variant-numeric: tabular-nums; }

@media (max-width: 719px) {
  .guest-page .platform-booking:not(.is-confirmed) {
    box-sizing: border-box;
    width: calc(100% - 12px);
    height: calc(100dvh - max(12px, env(safe-area-inset-top)));
    max-height: none;
    margin: max(12px, env(safe-area-inset-top)) auto 0;
    padding: 20px 18px 0;
    overflow: hidden;
    border-radius: var(--radius, 8px) var(--radius, 8px) 0 0;
  }
  .guest-page .platform-booking:not(.is-confirmed) [data-booking-content] {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    height: 100%;
    min-height: 0;
  }
  .guest-page .platform-booking:not(.is-confirmed) h2 { padding-bottom: 8px; }
  .guest-page .platform-booking:not(.is-confirmed) form {
    min-height: 0;
    padding: 4px 3px 18px;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
  }
  .guest-page .platform-booking__submit-bar {
    position: sticky;
    z-index: 3;
    bottom: 0;
    margin-inline: -18px;
    padding: 10px 18px calc(10px + env(safe-area-inset-bottom));
    border-top: 1px solid var(--postcard-divider);
    background: var(--postcard-paper);
    box-shadow: var(--shadow-hover);
  }
  .guest-page .platform-booking__submit-bar .postcard-viewer__book { min-height: 54px; }
}

/* Marketplace grid: compact photo-led cards, two-up on the canonical phone layout. */
.guest-page .browse-grid[data-view="grid"] { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 30px 18px; }
.guest-page .browse-grid[data-view="grid"] .postcard-card { padding: 0; border: 0; background: transparent; background-image: none; box-shadow: none; transform: none; }
.guest-page .browse-grid[data-view="grid"] .postcard-card:hover,
.guest-page .browse-grid[data-view="grid"] .postcard-card:focus-visible { transform: translateY(-2px); box-shadow: none; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__photo { border-radius: 12px; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__meta { padding: 9px 2px 0; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__caption,
.guest-page .browse-grid[data-view="grid"] .postcard-card__open { display: none; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__facts { overflow: hidden; font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__row { margin-top: 6px; }

@media (max-width: 760px) {
  .guest-page .browse-grid[data-view="grid"] { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 12px; }
  .guest-page .browse-grid[data-view="grid"] .postcard-card__title { display: -webkit-box; overflow: hidden; font-size: .9rem; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
  .guest-page .browse-grid[data-view="grid"] .postcard-card__facts { font-size: .72rem; }
  .guest-page .browse-grid[data-view="grid"] .postcard-price__stamp { min-width: 44px; min-height: 27px; padding-inline: 5px; }
  .guest-page .browse-grid[data-view="grid"] .postcard-price__perk { font-size: var(--fs-16); }
  .guest-page .browse-grid[data-view="grid"] .postcard-card .postcard-card__stamp { top: 5px; right: 5px; width: 38px; }
}

/* ==========================================================================
   House system for public partner and legal surfaces (2026-11-05)
   Authoritative for /vendors, /vendors/signup, /hosts, /hosts/signup,
   /privacy, /terms and the shared public header/footer. Values come only
   from the tokens below; see DESIGN.md "House tokens" and "Color policy".
   ========================================================================== */
:root {
  --fs-13: 13px; --fs-16: 16px; --fs-20: 20px; --fs-25: 25px; --fs-31: 31px; --fs-39: 39px; --fs-49: 49px; --fs-61: 61px;
  --sp-4: 4px; --sp-8: 8px; --sp-12: 12px; --sp-16: 16px; --sp-24: 24px; --sp-32: 32px; --sp-48: 48px; --sp-64: 64px; --sp-96: 96px; --sp-128: 128px;
  --radius: 8px;
  --shadow: 0 1px 3px rgba(0,0,0,0.08);
  --shadow-hover: 0 4px 12px rgba(0,0,0,0.10);
  /* Documented third exception to the two house shadow recipes: true full-screen/native modal
     dialogs (the experience viewer, the platform booking dialog, the booking calendar, the
     guest-details confirmation) use this deeper recipe instead of --shadow-hover, so a dialog
     reads as sitting well above the page rather than merely "lifted" like a hovered card. See
     DESIGN.md "Elevation & Depth". postcard-tokens.css's --postcard-shadow-viewer carries the
     same value for components scoped away from this :root (e.g. the standalone vendor app shell). */
  --shadow-modal: 0 24px 64px rgba(0, 24, 64, 0.24);
  --text: #141414;
  --text-muted: #566074;
  --accent: #001840;
  --accent-hover: #000f2e;
  --ease: 200ms ease-out;
}

/* Shared public chrome ---------------------------------------------------- */
.public-page { color: var(--text); font-size: var(--fs-16); line-height: 1.55; }
.public-page :focus-visible { outline: 2px solid var(--accent) !important; outline-offset: 2px !important; }
/* The navy focus ring (#001840) reads at about 1.1:1 against the navy .public-footer
   (#000f2e), so keyboard users lose their place in the footer. This is the one documented
   place visibility overrides the house navy-ring rule (round 3, Opus #4; see DESIGN.md
   "Buttons"). #fffdf8 (postcard-paper) reads at roughly 15:1 on both navy tones. */
.public-page .public-footer :focus-visible, .public-footer :focus-visible { outline-color: #fffdf8 !important; }
.public-page .public-header { gap: var(--sp-24); min-height: 76px; padding-block: var(--sp-12); }
.public-page .public-header nav { gap: var(--sp-24); }
.public-page .brand { gap: var(--sp-8); }
.public-page .public-header nav a { gap: var(--sp-8); min-height: 44px; color: var(--accent); font-size: var(--fs-16); font-weight: 600; }
.public-page .public-header nav a[aria-current="page"] { color: var(--accent); font-weight: 800; }
.public-page .public-header nav a[aria-current="page"]::after { background: var(--accent); }
.public-page .public-header .public-login,
.public-page .public-header .public-login:hover { gap: var(--sp-8); min-height: 44px; padding: 0; border: 0; border-radius: 0; background: transparent !important; color: var(--accent) !important; box-shadow: none; text-decoration: underline; text-underline-offset: .2em; }
.public-page .public-header .public-login:hover { text-decoration-thickness: 2px; }
.public-page .public-call { gap: var(--sp-8); padding: 0 var(--sp-12); border-radius: var(--radius); color: var(--accent); font-size: var(--fs-16); font-weight: 600; }
.public-page .public-menu { gap: var(--sp-8); padding: 0 var(--sp-12); border-radius: var(--radius); color: var(--accent); font-size: var(--fs-16); }
.public-page .public-footer { align-items: start; gap: var(--sp-48); padding: var(--sp-64) max(24px, calc((100vw - 1200px) / 2)) var(--sp-32); }
.public-page .public-footer .footer-brand p { margin: var(--sp-16) 0 var(--sp-8); font-size: var(--fs-16); line-height: 1.55; }
.public-page .public-footer .footer-brand small,
.public-page .public-footer nav strong { font-size: var(--fs-13); letter-spacing: .08em; }
.public-page .public-footer nav { align-content: start; gap: 0; }
.public-page .public-footer nav strong { display: flex; align-items: center; min-height: 44px; margin: 0; }
.public-page .public-footer nav a { font-size: var(--fs-16); }
.public-page .footer-disclosure { margin: var(--sp-8) 0 0; padding-top: var(--sp-24); font-size: var(--fs-13); line-height: 1.5; }
@media (max-width: 980px) {
  .public-page .public-header nav { justify-content: stretch; justify-items: stretch; align-content: start; gap: 0; padding: var(--sp-16) var(--sp-24) var(--sp-24); }
  .public-page .public-header nav a { justify-content: flex-start; width: 100%; min-height: 48px; font-family: var(--ui) !important; font-size: var(--fs-16); }
  .public-page .public-header .public-login { justify-content: flex-start; margin-top: var(--sp-8); }
}
@media (max-width: 760px) {
  .public-page .public-header { gap: var(--sp-8); min-height: 64px; padding: var(--sp-8) var(--sp-16); }
  .public-page .public-footer { gap: var(--sp-32); padding: var(--sp-48) var(--sp-16) var(--sp-96); }
}

/* Buttons and links: navy is the single action color ---------------------- */
.public-page .primary-action,
.public-page .secondary-action { display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-8); min-height: 48px; padding: var(--sp-12) var(--sp-24); border: 1px solid var(--accent); border-radius: var(--radius); font-size: var(--fs-16); font-weight: 700; line-height: 1.5; text-decoration: none; transition: background-color var(--ease), box-shadow var(--ease), transform var(--ease); }
.public-page .primary-action { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; box-shadow: var(--shadow); }
.public-page .primary-action:hover { background: var(--accent-hover) !important; box-shadow: var(--shadow-hover); }
.public-page .secondary-action { background: var(--postcard-paper) !important; color: var(--accent) !important; }
.public-page .secondary-action:hover { background: var(--postcard-cream) !important; box-shadow: var(--shadow-hover); }
.public-page .primary-action svg, .public-page .secondary-action svg { width: 20px; height: 20px; }
.pp-partner a:not(.primary-action):not(.secondary-action), .legal-layout a { color: var(--accent); }
/* Legal contact/request emails read as standalone utility actions even where they sit inside a
   sentence, so they get a padded 44px target like the signup privacy-notice link, rather than
   relying on their short link text alone (round 1, Sol #7). */
.legal-layout a[href^="mailto:"] { display: inline-flex; align-items: center; min-height: 44px; padding-block: var(--sp-12); }

/* Partner page frame ------------------------------------------------------ */
.pp-partner > .pp-section { padding-block: var(--sp-96); }
.pp-partner > .pp-section + .pp-section:not(.final-cta) { border-top: 1px solid var(--postcard-rule); }
.pp-partner h1, .pp-partner h2, .pp-partner h3 { margin: 0; color: var(--accent); }
.pp-partner h1 { max-width: 22ch; font-size: var(--fs-61); font-weight: 700; line-height: 1.05; letter-spacing: -.02em; }
.pp-partner h2 { max-width: 28ch; font-size: var(--fs-39); font-weight: 700; line-height: 1.1; letter-spacing: -.015em; }
.pp-partner h3 { font-size: var(--fs-20); line-height: 1.3; }
.pp-partner p, .pp-partner li, .pp-partner dd { font-size: var(--fs-16); line-height: 1.55; }
.pp-partner p { max-width: 65ch; margin: 0; color: var(--text); }
.pp-partner .pp-eyebrow { margin: 0 0 var(--sp-16); color: var(--text-muted); font-family: var(--ui); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; line-height: 1.5; text-transform: uppercase; }
.pp-partner .pp-lede { margin-top: var(--sp-24); font-size: var(--fs-20); line-height: 1.5; max-width: 52ch; }
.pp-section__head { display: grid; gap: var(--sp-16); max-width: 65ch; margin-bottom: var(--sp-48); }
.pp-section__head p { color: var(--text); }
.pp-partner .invite-note { display: flex; align-items: flex-start; gap: var(--sp-8); margin: 0 0 var(--sp-16); color: var(--accent); font-size: var(--fs-16); font-weight: 700; line-height: 1.5; }
.pp-partner .invite-note svg { flex: 0 0 20px; width: 20px; height: 20px; color: var(--accent); }

/* Hero */
.pp-hero { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: center; gap: var(--sp-64); }
.pp-pilot-line { display: flex; align-items: flex-start; gap: var(--sp-12); margin-top: var(--sp-24) !important; padding: var(--sp-12) var(--sp-16); border: 1px solid var(--postcard-rule); border-left: 4px solid var(--postcard-blue); border-radius: var(--radius); background: var(--postcard-paper); }
.pp-pilot-line svg { flex: 0 0 20px; width: 20px; height: 20px; margin-top: var(--sp-4); color: var(--postcard-blue); }
.pp-hero .public-actions { display: flex; flex-wrap: wrap; gap: var(--sp-12); margin-top: var(--sp-32); }
.pp-partner .join-trust { display: flex; flex-wrap: wrap; gap: var(--sp-8) var(--sp-24); margin: var(--sp-24) 0 0; padding: var(--sp-16) 0 0; border-top: 1px solid var(--postcard-rule); color: var(--text); font-size: var(--fs-16); font-weight: 600; }
.pp-partner .join-trust li::before { width: 8px; height: 8px; margin: 0 var(--sp-8) 2px 0; border-radius: 50%; }
.pp-hero__stage { position: relative; }
.pp-hero__photo { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; object-position: 20% 40%; border-radius: var(--radius); box-shadow: var(--shadow); }
.pp-partner--vendor .pp-hero__photo { aspect-ratio: 1 / 1; object-position: 22% 50%; }
.pp-hero--host .pp-hero__photo { object-position: center; }
/* Both hero captions (the tagline and "Illustration") share one flex row anchored to the image's
   bottom-right, instead of pinning each to an opposite corner. Two independently absolute-
   positioned corners collided once the tagline wrapped to two lines at narrow widths, reading as
   "L ILLUSTRATION" (round 2, Opus #2 / Sonnet P1). A row with gap + wrap keeps them apart at
   every width without either ever overlapping real copy. */
.pp-hero__stage .image-caption-row { position: absolute; right: var(--sp-16); bottom: var(--sp-16); left: var(--sp-16); display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--sp-8); }
/* public/styles.css has an older, unscoped `.image-caption { position: absolute; right: 16px;
   bottom: 16px; ... }`. Without resetting position here, both captions would land in that same
   absolute corner inside the row (the exact overlap this row exists to prevent) instead of
   laying out side by side/wrapping as ordinary flex items. */
.pp-hero__stage .image-caption { position: static; padding: var(--sp-4) var(--sp-8); border-radius: var(--radius); background: var(--postcard-paper); color: var(--accent); font-size: var(--fs-13); font-weight: 700; line-height: 1.5; }
/* A lone caption (the vendor hero only ever carries "Illustration") sits top-left. Bottom-right
   is where the illustrative perk-console card floats on the vendor hero at every width from
   768px up, not just the narrow widths this was previously special-cased for; pinning both to
   the same corner put the caption completely underneath the console card, hiding it entirely
   (round 3, item 2 verification sweep: zero-overlap check at 768/1024/1440, not just 375). */
.pp-hero__stage > .image-caption { position: absolute; top: var(--sp-16); right: auto; bottom: auto; left: var(--sp-16); }
/* These hero photographs are generated/staged (no verified real-photo provenance; see DESIGN.md
   "Do's and Don'ts"), so a small visible "Illustration" caption sits beside any tagline caption
   so a front-desk handoff scene never reads as a real signed hotel placement. */
.pp-hero__stage .image-caption--illustration { color: var(--text-muted); font-weight: 600; }
/* Round 5, fix item 7 (Sonnet R4 #4): the vendor hero's lone top-left caption is the only
   "Illustration" cue on that photo, so the muted-ink treatment above read as easy to skim past.
   Equal specificity to the rule above, so source order (this comes after) makes the direct-child
   (lone, top-left) caption a solid navy-on-paper chip instead; the host hero's two-caption row
   (reached only through `.image-caption-row`, never a direct child) keeps the muted treatment,
   since this selector cannot match a caption nested inside that row. No position or text change. */
.pp-hero__stage > .image-caption--illustration { color: var(--accent); font-weight: 700; }
.pp-partner .host-kpis { margin: var(--sp-32) 0 0; }
.pp-partner .host-kpis li { padding: var(--sp-16); }
.pp-partner .host-kpis li:first-child { padding-left: 0; }
.pp-partner .host-kpis strong { color: var(--accent); font-family: var(--display); font-size: var(--fs-31); font-weight: 700; line-height: 1.1; }
.pp-partner .host-kpis span { margin-top: var(--sp-4); color: var(--text-muted); font-size: var(--fs-13); line-height: 1.5; }

/* Illustrative perk console (vendor hero) */
.pp-partner .perk-console { position: absolute; right: var(--sp-16); bottom: var(--sp-16); width: min(320px, 56%); padding: var(--sp-24); border-radius: var(--radius); box-shadow: var(--shadow-hover); color: var(--text); transform: none; }
.pp-partner .perk-console-head { display: flex; justify-content: space-between; gap: var(--sp-16); padding-bottom: var(--sp-12); border-bottom: 1px solid var(--postcard-rule); color: var(--text-muted); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; line-height: 1.5; }
.pp-partner .perk-console-head strong { color: #1f5a3e; }
.pp-partner .perk-console-title { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-16); padding: var(--sp-12) 0; border-bottom: 1px solid var(--postcard-rule); }
.pp-partner .perk-console-title small { display: block; color: var(--text-muted); font-size: var(--fs-13); line-height: 1.5; }
/* Illustration content, not a real page heading (round 3, Opus #12): a styled paragraph keeps
   the "E-bike afternoons" mockup label out of the document outline. */
.pp-partner .perk-console-title .perk-console-name { max-width: none; margin: 0; color: var(--accent); font-size: var(--fs-25); line-height: 1.1; }
.pp-partner .perk-toggle { display: flex; align-items: center; justify-content: flex-end; flex: 0 0 48px; width: 48px; height: 28px; padding: var(--sp-4); border-radius: var(--radius); background: var(--accent); }
.pp-partner .perk-toggle i { width: 20px; height: 20px; border-radius: var(--radius); background: #fffdf8; }
.pp-partner .perk-price { display: flex; align-items: center; gap: var(--sp-16); padding: var(--sp-12) 0; border-bottom: 1px solid var(--postcard-rule); }
.pp-partner .perk-price strong { color: var(--accent); font-size: var(--fs-49); line-height: 1; }
.pp-partner .perk-price span { color: var(--text-muted); font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .perk-console dl { margin: 0; }
.pp-partner .perk-console dl div { display: flex; justify-content: space-between; gap: var(--sp-16); padding: var(--sp-8) 0; border-bottom: 1px solid var(--postcard-rule); }
.pp-partner .perk-console dt { color: var(--text-muted); font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .perk-console dd { margin: 0; color: var(--text); font-size: var(--fs-13); font-weight: 700; line-height: 1.5; text-align: right; }
.pp-partner .perk-console > p { margin-top: var(--sp-12); padding: 0; border: 0; color: var(--text-muted); font-size: var(--fs-13); line-height: 1.5; }

/* Proof */
.pp-partner .proof-disclosure { margin-top: 0 !important; font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .vendor-product-pair { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); align-items: start; gap: var(--sp-32); margin-bottom: var(--sp-64); }
.pp-partner .workspace-preview { border-radius: var(--radius); box-shadow: var(--shadow); }
.pp-partner .workspace-preview--vendor { padding: var(--sp-24); }
/* `justify-content: flex-start` plus `flex-wrap: wrap` replace the base rule's `space-between`
   now that a third header child (the `.workspace-preview__badge` "Demo" tag, round 5 fix item 3)
   needs to sit after "New booking · 2 guests" instead of splitting the row into three evenly
   spaced points; the badge's own `margin-left: auto` below pushes it to the row's end. */
.pp-partner .workspace-preview--vendor > header { gap: var(--sp-12); padding-bottom: var(--sp-12); justify-content: flex-start; flex-wrap: wrap; }
.pp-partner .workspace-preview--vendor > header strong { font-size: var(--fs-20); }
.pp-partner .workspace-preview--vendor > header span { font-size: var(--fs-13); }
.pp-partner .workspace-preview--vendor article { grid-template-columns: 120px minmax(0, 1fr); gap: var(--sp-16); margin-top: var(--sp-16); }
.pp-partner .vendor-preview-photo { border-radius: var(--radius); }
.pp-partner .workspace-preview--vendor article > span { gap: var(--sp-4); }
.pp-partner .workspace-preview--vendor article b { padding: 0 var(--sp-8); border-radius: var(--radius); font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .workspace-preview--vendor article strong { font-size: var(--fs-16); }
.pp-partner .workspace-preview--vendor article small { font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .workspace-preview--vendor footer { margin-top: var(--sp-16); }
.pp-partner .workspace-preview--vendor footer span { padding-top: var(--sp-12); font-size: var(--fs-13); }
.pp-partner .guest-card-preview { border-radius: var(--radius); box-shadow: var(--shadow); transform: rotate(1deg); }
.pp-partner .guest-card-preview__photo { min-height: 160px; }
.pp-partner .guest-card-preview__photo > span { top: var(--sp-12); left: var(--sp-12); padding: var(--sp-4) var(--sp-8); border-radius: var(--radius); font-size: var(--fs-25); line-height: 1.1; }
.pp-partner .guest-card-preview__photo small { font: 700 var(--fs-13)/1.5 var(--ui); }
.pp-partner .guest-card-preview > div:last-child { padding: var(--sp-16); }
.pp-partner .guest-card-preview > div > small { color: var(--postcard-blue); font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .guest-card-preview > div > strong { margin: var(--sp-4) 0; font-size: var(--fs-20); line-height: 1.3; }
.pp-partner .guest-card-preview p { margin: 0 0 var(--sp-12); color: var(--text-muted); font-size: var(--fs-13); line-height: 1.5; }
/* Outline, not filled: this preview sits beside the page's own primary CTA, and a second filled
   button reads as a second primary action (round 3, Opus constraint note). */
.pp-partner .guest-card-preview__action { display: flex; align-items: center; justify-content: center; min-height: 44px; border: 1px solid var(--accent); border-radius: var(--radius); background: transparent; color: var(--accent); font-size: var(--fs-13); font-weight: 700; }
.pp-partner .workspace-preview--host { grid-template-columns: 96px minmax(0, 1fr); min-height: 0; }
.pp-partner .workspace-preview__rail { gap: var(--sp-8); padding: var(--sp-16) var(--sp-8); }
.pp-partner .workspace-preview__rail img { margin: 0 auto var(--sp-24); }
.pp-partner .workspace-preview__rail span { padding: var(--sp-8) var(--sp-4); border-radius: var(--radius); font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .workspace-preview__main { padding: var(--sp-24); }
/* Same reasoning as `.workspace-preview--vendor > header` above: a third child (the "Illustrative
   data" badge, round 5 fix item 3) needs to land at the row's end rather than splitting the base
   rule's `space-between` into three evenly spaced points. */
.pp-partner .workspace-preview__main > header { align-items: baseline; gap: var(--sp-16); justify-content: flex-start; flex-wrap: wrap; }
.pp-partner .workspace-preview__main > header strong { font-size: var(--fs-20); }
.pp-partner .workspace-preview__main > header small { font-size: var(--fs-13); }
/* Shared by both the host dashboard header and the vendor "Your offers" header (round 5, Opus
   R4 #2 / fix item 3): the mock's synthetic-data disclosure sits inside the frame itself, not
   just adjacent to it, so a crop or screenshot of either mock still carries the label. Matches
   the ledger's own "Illustrative month" badge component (`.ledger-board header strong`): same
   cream chip, muted ink, 13px. `margin-left: auto` pins it to the header's trailing edge once
   the header's own `justify-content` is `flex-start` (see above). */
.pp-partner .workspace-preview__badge { flex: 0 0 auto; margin-left: auto; padding: 0 var(--sp-8); border-radius: var(--radius); background: var(--postcard-cream); color: var(--text-muted); font-size: var(--fs-13); font-weight: 700; letter-spacing: .04em; line-height: 1.5; white-space: nowrap; }
.pp-partner .preview-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); margin: var(--sp-16) 0; }
.pp-partner .preview-kpis span { padding: var(--sp-12); font-size: var(--fs-13); line-height: 1.5; letter-spacing: .04em; }
.pp-partner .preview-kpis span:nth-child(2n) { border-right: 0; }
.pp-partner .preview-kpis span:nth-child(-n+2) { border-bottom: 1px solid var(--postcard-rule); }
.pp-partner .preview-kpis strong { margin-top: var(--sp-4); font-size: var(--fs-25); line-height: 1.1; }
.pp-partner .preview-workspace-grid { grid-template-columns: minmax(0, 1fr); gap: var(--sp-12); }
.pp-partner .preview-workspace-grid > div { padding: var(--sp-16); border-radius: var(--radius); }
.pp-partner .preview-workspace-grid > div > strong { margin-bottom: var(--sp-8); font-size: var(--fs-16); }
/* label | bar | value stay in one row (round 3, Opus #13): the base rule's three columns were
   losing their third track here, so the count wrapped under the label instead of sitting at
   the end of the bar. */
.pp-partner .preview-workspace-grid span { grid-template-columns: 96px minmax(0, 1fr) 32px; gap: var(--sp-8); margin-top: var(--sp-8); font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .preview-workspace-grid b { height: 4px; border-radius: var(--radius); }
.pp-partner .preview-workspace-grid code { padding: var(--sp-8); border-radius: var(--radius); font-size: var(--fs-13); line-height: 1.5; }
/* Plain text, not a link: there is no download control in this illustrative preview (round 3,
   Opus #13). */
.pp-partner .preview-workspace-grid .preview-kit-actions { margin-top: var(--sp-8); color: var(--text-muted); font-size: var(--fs-13); font-weight: 400; }
.pp-proof__grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); align-items: start; gap: var(--sp-48); }
.pp-partner .partner-videos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: var(--sp-32); padding: 0; }
.pp-proof__grid .partner-videos { grid-template-columns: minmax(0, 1fr); }
.pp-partner .partner-video { gap: var(--sp-12); }
.pp-partner .partner-video h3 { font-family: var(--display); }
/* Round 5, Opus R4 #4 / fix item 4: on `/vendors` the single intro video used to sit alone in
   this 2-column `.partner-videos` grid (the host page's version of this grid is single-column,
   via `.pp-proof__grid .partner-videos` above, because its video shares a wrapping
   `.pp-proof__grid` with the dashboard mock; the vendor video is not inside that wrapper), so the
   whole right half of the section was blank paper under the two-mock pair above it. This recap
   list fills that column with the three things the video shows instead of recentring the video
   full-width, so the grid keeps the same rhythm as every other two-up section on this page. */
.pp-partner .pp-video-recap { display: grid; align-content: start; gap: var(--sp-12); padding: var(--sp-24); border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); box-shadow: var(--shadow); }
.pp-partner .pp-video-recap h3 { font-size: var(--fs-20); }
.pp-partner .pp-video-recap ol { display: grid; gap: var(--sp-8); margin: 0; padding: 0; list-style: none; counter-reset: pp-recap; }
.pp-partner .pp-video-recap ol li { position: relative; padding-left: var(--sp-32); color: var(--text); counter-increment: pp-recap; }
.pp-partner .pp-video-recap ol li::before { content: counter(pp-recap); position: absolute; left: 0; top: 0; display: grid; place-items: center; width: 24px; height: 24px; border-radius: var(--radius); background: var(--accent); color: #fff; font-size: var(--fs-13); font-weight: 700; }

/* Mechanics */
.pp-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-16); margin: 0; padding: 0; list-style: none; counter-reset: pp-step; }
.pp-steps--four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pp-steps li { display: grid; align-content: start; gap: var(--sp-8); padding: var(--sp-24); border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); box-shadow: var(--shadow); counter-increment: pp-step; }
.pp-steps li > b { color: var(--accent); font-size: var(--fs-20); line-height: 1.3; }
.pp-steps li > span { color: var(--text); }
.pp-steps li > svg { width: 24px; height: 24px; margin-bottom: var(--sp-8); color: var(--accent); }
.pp-steps:not(.pp-steps--four):not(.pp-steps--stack) li::before { content: counter(pp-step); display: grid; place-items: center; width: 32px; height: 32px; margin-bottom: var(--sp-8); border-radius: var(--radius); background: var(--accent); color: #fff; font-size: var(--fs-16); font-weight: 700; }
.pp-steps--stack { grid-template-columns: minmax(0, 1fr); gap: var(--sp-12); }
.pp-steps--stack li { grid-template-columns: 24px minmax(0, 1fr); column-gap: var(--sp-16); row-gap: var(--sp-4); }
.pp-steps--stack li > svg { grid-row: 1 / span 2; margin: 0; }
.pp-money { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: start; gap: var(--sp-16) var(--sp-48); margin-top: var(--sp-64); }
.pp-money__copy { display: grid; gap: var(--sp-16); }
.pp-money__note { grid-column: 2; }
.pp-partner .join-math { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; overflow: hidden; border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); box-shadow: var(--shadow); }
.pp-partner .join-math > div { min-height: 0; padding: var(--sp-24); border: 0; border-top: 1px solid var(--postcard-rule); }
.pp-partner .join-math > div:not(.join-math-total) + div { border-left: 1px solid var(--postcard-rule); }
.pp-partner .join-math > .join-math-total { grid-column: 1 / -1; display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-16); border-top: 0; border-left: 0; background: var(--postcard-cream); }
.pp-partner .join-math span { color: var(--text-muted); font-size: var(--fs-13); font-weight: 700; letter-spacing: .04em; line-height: 1.5; text-transform: uppercase; }
.pp-partner .join-math strong { margin-top: var(--sp-8); color: var(--accent); font-size: var(--fs-39); line-height: 1; }
.pp-partner .join-math-total strong { margin: 0; color: var(--accent); font-size: var(--fs-49); }
.pp-partner .join-math small { margin-top: var(--sp-4); color: var(--text-muted); font-size: var(--fs-13); line-height: 1.5; }
.pp-mechanics__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; gap: var(--sp-48); }
.pp-partner .ledger-board { margin: 0; padding: var(--sp-24); border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); box-shadow: var(--shadow); transform: none; }
.pp-partner .ledger-board header, .pp-partner .ledger-board > div, .pp-partner .ledger-board footer { gap: var(--sp-12); padding: var(--sp-12) 0; }
.pp-partner .ledger-board header { padding-top: 0; color: var(--text-muted); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; line-height: 1.5; }
.pp-partner .ledger-board header strong { padding: 0 var(--sp-8); border-radius: var(--radius); background: var(--postcard-cream); color: var(--text-muted); font-size: var(--fs-13); letter-spacing: .04em; line-height: 1.5; }
.pp-partner .ledger-board > div span { color: var(--text); font-size: var(--fs-16); }
.pp-partner .ledger-board em { padding: 0 var(--sp-8); border-radius: var(--radius); font-size: var(--fs-13); font-style: normal; font-weight: 700; line-height: 1.5; }
.pp-partner .ledger-board .status-success { background: #e7edf8; color: #173f73; }
.pp-partner .ledger-board .status-pending { background: #fff1d6; color: #7a4d00; }
.pp-partner .ledger-board strong { color: var(--accent); font-size: var(--fs-16); }
.pp-partner .ledger-board footer span { color: var(--text); font-size: var(--fs-16); font-weight: 700; }
.pp-partner .ledger-board footer strong { font-family: var(--display); font-size: var(--fs-31); }
.pp-partner .host-tracks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-16); margin-top: var(--sp-48); padding: 0; }
.pp-partner .host-tracks article { display: grid; gap: var(--sp-8); min-height: 0; padding: var(--sp-24); border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); box-shadow: var(--shadow); transform: none; }
.pp-partner .host-tracks h3 { font-size: var(--fs-25); }

/* Pilot status and founder */
.pp-partner .pilot-founder { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: start; gap: var(--sp-64); border-top: 1px solid var(--postcard-rule); }
.pp-partner .pilot-status { display: grid; gap: var(--sp-16); }
.pp-partner .pilot-status .pp-eyebrow { margin: 0; }
.pp-partner .pilot-status h2 { margin: 0; }
.pp-partner .pilot-status p { margin: 0; color: var(--text); }
.pp-partner .vendor-stamp-sheet { gap: var(--sp-12); margin-top: var(--sp-8); padding: var(--sp-16); border-radius: var(--radius); }
.pp-partner .vendor-stamp-card { min-height: 128px; padding: var(--sp-24) var(--sp-12); border-radius: var(--radius); }
.pp-partner .vendor-stamp-card b { font-size: var(--fs-20); line-height: 1.1; }
.pp-partner .vendor-stamp-card small { margin-top: var(--sp-8); font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .vendor-stamp-card.is-open { opacity: 1; border-style: dotted; color: var(--text-muted); }
.pp-partner .founding-terms { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: var(--sp-8) 0 0; border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); }
.pp-partner .founding-terms div { display: grid; gap: var(--sp-4); padding: var(--sp-16); border: 0; border-left: 1px solid var(--postcard-rule); }
.pp-partner .founding-terms div:first-child { border-left: 0; }
.pp-partner .founding-terms dt { color: var(--text-muted); font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .founding-terms dd { font-size: var(--fs-20); line-height: 1.3; }
.pp-partner .pilot-founder__card { border-radius: var(--radius); box-shadow: var(--shadow); }
.pp-partner .pilot-founder--hosts { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: center; }
.pp-partner .pilot-founder--hosts .pilot-founder__card { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.pp-partner .pilot-founder--hosts .pilot-founder__card img { height: 100%; aspect-ratio: auto; min-height: 240px; }
.pp-partner .pilot-founder__card figcaption { display: grid; gap: var(--sp-12); padding: var(--sp-24); }
.pp-partner .pilot-founder__card h3 { margin: 0; }
.pp-partner .pilot-founder__card p { margin: 0; color: var(--text); }
.pp-partner .pilot-founder__contact { color: var(--text) !important; }

/* FAQ */
.pp-partner .faq-section { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: start; gap: var(--sp-48); }
.pp-partner .faq-section .pp-section__head { margin: 0; }
.pp-partner .faq-list summary { gap: var(--sp-16); min-height: 64px; padding-block: var(--sp-12); color: var(--accent); font-size: var(--fs-16); font-weight: 700; line-height: 1.5; }
.pp-partner .faq-list summary svg { flex: 0 0 20px; transition: transform var(--ease); }
.pp-partner .faq-list details p { margin: 0 0 var(--sp-24); color: var(--text); }

/* Final CTA band: paper card with an airmail edge, navy action */
.pp-partner > .final-cta.partner-final-cta { position: relative; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-32); margin-block: 0 var(--sp-96); padding: var(--sp-48); overflow: hidden; border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); color: var(--text); box-shadow: var(--shadow); }
.pp-partner > .final-cta.partner-final-cta::before { content: ""; position: absolute; inset: 0 0 auto; height: 8px; background: repeating-linear-gradient(135deg, var(--postcard-red) 0 12px, transparent 12px 16px, var(--postcard-blue) 16px 28px, transparent 28px 32px); }
.pp-partner > .final-cta.partner-final-cta h2 { max-width: none; margin: 0 0 var(--sp-8); color: var(--accent) !important; font-size: var(--fs-31); }
.pp-partner > .final-cta.partner-final-cta p { margin: 0; color: var(--text); }
.pp-partner > .final-cta.partner-final-cta .primary-action { flex: 0 0 auto; }

/* Signup: form-first */
.pp-signup { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: start; gap: var(--sp-64); }
.pp-partner--signup .pp-signup h1 { max-width: 16ch; font-size: var(--fs-49); }
/* One compact essentials line replaces the old lede + three-row dl in the intro column, so the
   first form input lands inside the first mobile viewport (round 1, Sol #6 / Sonnet #2-3). The
   fuller explanation and the back-link used to live in a separate .pp-signup__more band below
   the form, spanning both grid columns; since that band's own max-width (65ch) left the right
   half of its row empty next to a short paragraph, round 3 (Opus #10) moved that paragraph and
   link into this same intro column instead, right after the essentials line, and removed the
   now-empty band. */
/* Round 5, fix item 5 (Opus R4 #8): the unscoped `.pp-essentials-line` selector below lost its
   own `margin-top` to `.pp-partner p { margin: 0; ... }` above (same class-count, but that rule
   adds an element selector, so it wins on specificity) and computed to 0 live, despite reading
   correctly in this file in isolation. The result ran the lede straight into the essentials line
   with no visible gap. Scoping to `.pp-partner .pp-essentials-line` matches `.pp-partner .pp-lede`'s
   own pattern just above and restores the margin. */
.pp-partner .pp-essentials-line { margin-top: var(--sp-12); color: var(--text-muted); font-size: var(--fs-16); line-height: 1.5; max-width: 52ch; }
.pp-essentials { display: grid; gap: 0; margin: var(--sp-24) 0 0; border-top: 1px solid var(--postcard-rule); }
.pp-essentials div { display: grid; grid-template-columns: 128px minmax(0, 1fr); gap: var(--sp-16); padding: var(--sp-12) 0; border-bottom: 1px solid var(--postcard-rule); }
.pp-essentials dt { color: var(--text-muted); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; line-height: 1.5; text-transform: uppercase; padding-top: var(--sp-4); }
.pp-essentials dd { margin: 0; color: var(--text); }
.pp-backlink { margin-top: var(--sp-16) !important; }
.pp-backlink a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; }
.pp-partner .partner-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-16); margin: 0; padding: var(--sp-32); border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); box-shadow: var(--shadow); color: var(--text); }
.pp-partner .partner-form label { display: grid; align-content: start; gap: var(--sp-8); color: var(--text); font-size: var(--fs-16); font-weight: 700; line-height: 1.5; }
.pp-partner .partner-form input, .pp-partner .partner-form select { width: 100%; min-height: 48px; margin: 0; padding: var(--sp-12) var(--sp-16); border: 1px solid #8a8577; border-radius: var(--radius); background: #fff; color: var(--text); font: 400 var(--fs-16)/1.5 var(--ui); box-shadow: none; }
.pp-partner .partner-form input:hover, .pp-partner .partner-form select:hover { border-color: var(--accent); }
.pp-partner .partner-form [aria-invalid="true"] { border-color: #8b2c27 !important; box-shadow: none; }
.pp-partner .partner-form .inline-error { margin: 0; color: #8b2c27 !important; font-size: var(--fs-13); font-weight: 700 !important; line-height: 1.5; }
.pp-partner .partner-form .span-two { grid-column: 1 / -1; }
.pp-partner .partner-form .primary-action { width: 100%; margin-top: var(--sp-8); }
.pp-partner .form-promise { color: var(--text-muted) !important; font-size: var(--fs-13); line-height: 1.5; }
.pp-partner .form-promise a { color: var(--accent); }
/* Standalone utility link, not inline prose (round 1, Sol #7): padded to a 44px tap target
   rather than relying on its small text size alone. */
.pp-partner .form-promise-link { display: inline-flex; align-items: center; min-height: 44px; margin-top: var(--sp-4); padding-block: var(--sp-12); color: var(--accent); font-size: var(--fs-13); font-weight: 700; }
.pp-partner .form-error-summary { display: grid; gap: var(--sp-4); padding: var(--sp-12) var(--sp-16); border: 1px solid #8b2c27; border-radius: var(--radius); background: #fbe6e4; color: #8b2c27; }
.pp-partner .form-error-summary p { color: #8b2c27; }
.pp-partner .application-confirmation { display: grid; gap: var(--sp-16); padding: var(--sp-32); border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); box-shadow: var(--shadow); }
.pp-partner .application-confirmation > svg { width: 32px; height: 32px; color: var(--accent); }
.pp-partner .application-confirmation h2 { font-size: var(--fs-31); }
.pp-partner .application-confirmation ol { display: flex; flex-wrap: wrap; gap: var(--sp-8) var(--sp-24); margin: 0; padding: 0; list-style: none; }
.pp-partner .application-confirmation ol li { display: flex; align-items: center; gap: var(--sp-8); font-weight: 700; }
.pp-partner .application-confirmation ol span { display: grid; place-items: center; width: 32px; height: 32px; border-radius: var(--radius); background: var(--accent); color: #fff; font-size: var(--fs-13); }
.pp-partner .confirmation-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-16); margin: 0; }
.pp-partner .confirmation-actions a:not(.primary-action) { display: inline-flex; align-items: center; gap: var(--sp-8); min-height: 44px; font-weight: 700; }
.pp-partner .time-to-live { gap: var(--sp-12); max-width: 65ch; padding: var(--sp-12) var(--sp-16); border-radius: var(--radius); color: var(--text) !important; }
.pp-partner .time-to-live svg { flex: 0 0 20px; width: 20px; height: 20px; }
.pp-partner .apply-resources { display: flex; flex-wrap: wrap; gap: var(--sp-8) var(--sp-24); margin-top: var(--sp-24); }
.pp-partner .apply-resources a { display: inline-flex; align-items: center; gap: var(--sp-8); min-height: 44px; color: var(--accent); font-weight: 700; }
.pp-partner .apply-resources svg { width: 20px; height: 20px; color: var(--accent); }

/* Mobile action bar: same navy action and label as the hero and CTA band. It only renders on the
   overview routes now (signup routes never render it; the user is already on the form), so the
   reserved clearance below only needs to apply there too. */
@media (max-width: 760px) {
  .public-page .mobile-apply-bar { right: var(--sp-12); bottom: var(--sp-12); left: var(--sp-12); gap: var(--sp-8); min-height: 48px; border: 0; border-radius: var(--radius); background: var(--accent); color: #fff; font-size: var(--fs-16); font-weight: 700; box-shadow: var(--shadow-hover); }
  .public-page .mobile-apply-bar svg { width: 20px; height: 20px; }
  /* Reserve clearance equal to the bar's footprint (48px min-height + 12px offset + safe area,
     rounded up to the next spacing step) so the fixed bar can never overlap the page's own last
     section, CTA band, or footer link. */
  .pp-partner:not(.pp-partner--signup) { padding-bottom: calc(var(--sp-96) + env(safe-area-inset-bottom)); }
}

/* Responsive partner layout */
@media (max-width: 1099px) {
  .pp-partner h1 { font-size: var(--fs-49); }
  .pp-steps--four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pp-partner .faq-section { grid-template-columns: minmax(0, 1fr); gap: var(--sp-24); }
}
@media (max-width: 900px) {
  .pp-hero, .pp-signup, .pp-proof__grid, .pp-mechanics__grid, .pp-money, .pp-partner .pilot-founder { grid-template-columns: minmax(0, 1fr); gap: var(--sp-32); }
  .pp-money__note { grid-column: auto; }
  .pp-partner .pilot-founder--hosts .pilot-founder__card { grid-template-columns: minmax(0, 1fr); }
  .pp-partner .pilot-founder--hosts .pilot-founder__card img { height: auto; aspect-ratio: 4 / 3; min-height: 0; }
  .pp-partner .vendor-product-pair, .pp-partner .partner-videos { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .pp-partner > .pp-section { padding-block: var(--sp-64); }
  .pp-partner h1, .pp-partner--signup .pp-signup h1 { font-size: 36px; line-height: 1.1; }
  .pp-partner--signup .pp-signup h1 { font-size: 32px; }
  .pp-partner h2 { font-size: var(--fs-31); }
  .pp-partner .pp-lede { font-size: var(--fs-16); }
  .pp-section__head { margin-bottom: var(--sp-32); }
  .pp-steps, .pp-steps--four, .pp-partner .host-tracks { grid-template-columns: minmax(0, 1fr); }
  .pp-hero .public-actions { flex-direction: column; align-items: stretch; }
  .pp-partner--vendor .pp-hero__photo { aspect-ratio: 4 / 3; }
  .pp-partner .perk-console { position: relative; right: auto; bottom: auto; width: auto; margin: calc(-1 * var(--sp-48)) var(--sp-16) 0; }
  .pp-partner .host-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pp-partner .host-kpis li, .pp-partner .host-kpis li:first-child { display: block; padding: var(--sp-12) var(--sp-8); border-bottom: 0; border-right: 1px solid var(--postcard-rule); }
  .pp-partner .host-kpis li:first-child { padding-left: 0; }
  .pp-partner .host-kpis li:last-child { border-right: 0; }
  .pp-partner .vendor-stamp-sheet { grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: visible; padding: var(--sp-8); gap: var(--sp-8); }
  .pp-partner .vendor-stamp-card { min-height: 96px; padding: var(--sp-12) var(--sp-8); }
  .pp-partner .vendor-stamp-card b { font-size: var(--fs-16); }
  .pp-partner .founding-terms { grid-template-columns: minmax(0, 1fr); }
  .pp-partner .founding-terms div { display: flex; justify-content: space-between; align-items: baseline; border-left: 0; border-top: 1px solid var(--postcard-rule); }
  .pp-partner .founding-terms div:first-child { border-top: 0; }
  .pp-partner .join-math > div:not(.join-math-total) + div { border-left: 0; }
  .pp-partner .join-math > div:not(.join-math-total) { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--sp-4) var(--sp-16); }
  .pp-partner .join-math > div:not(.join-math-total) span { flex: 1 0 100%; }
  .pp-partner .join-math strong { margin: 0; font-size: var(--fs-31); }
  .pp-partner .join-math-total strong { font-size: var(--fs-39); }
  .pp-partner .workspace-preview--host { grid-template-columns: minmax(0, 1fr); }
  .pp-partner .workspace-preview__rail { display: flex; gap: var(--sp-8); padding: var(--sp-8); }
  .pp-partner .workspace-preview__rail img { margin: 0 var(--sp-8) 0 0; }
  .pp-partner .workspace-preview__main { padding: var(--sp-16); }
  .pp-partner .guest-card-preview { width: auto; justify-self: stretch; margin-top: 0; transform: none; }
  .pp-essentials div { grid-template-columns: minmax(0, 1fr); gap: var(--sp-4); }
  .pp-partner .partner-form { grid-template-columns: minmax(0, 1fr); padding: var(--sp-24); }
  .pp-partner .application-confirmation { padding: var(--sp-24); }
  /* No extra margin-bottom here: the page's own padding-bottom (below, on `.pp-partner`) already
     reserves clearance for the sticky bar below the final CTA. Stacking a second margin on top of
     that padding left a ~160px dead gap before the footer that wasn't a spacing-scale step
     (round 4, Sonnet R3 P2); one coordinated 96px gap replaces it. */
  .pp-partner > .final-cta.partner-final-cta { flex-direction: column; align-items: stretch; margin-bottom: 0; padding: var(--sp-48) var(--sp-24) var(--sp-32); }
  .pp-partner > .final-cta.partner-final-cta h2 { font-size: var(--fs-25); }
  .pp-partner > .final-cta.partner-final-cta .primary-action { width: 100%; }
  .pp-partner .ledger-board { padding: var(--sp-16); }
}

/* Partner videos: one play affordance that sits clear of the poster title. Outlined, not filled
   navy, so it never competes with the page's one primary CTA (round 4, Opus R3 #6 / fix item 3):
   filled navy is reserved for the apply action alone. */
.public-page .partner-video__play { top: auto; right: auto; bottom: var(--sp-16); left: var(--sp-16); display: inline-flex; align-items: center; gap: var(--sp-8); min-width: 0; min-height: 48px; padding: var(--sp-8) var(--sp-16); border: 1px solid var(--accent); border-radius: var(--radius); background: var(--postcard-paper); color: var(--accent); font-size: var(--fs-16); line-height: 1.5; transform: none; box-shadow: var(--shadow); }
.public-page .partner-video__play:hover { background: var(--postcard-cream); box-shadow: var(--shadow-hover); }
.public-page .partner-video__play svg { width: 24px; height: 24px; }
.public-page .partner-video__links a { color: var(--accent); }
@media (max-width: 760px) { .public-page .partner-video__play { bottom: var(--sp-8); left: var(--sp-8); min-height: 44px; padding: var(--sp-4) var(--sp-12); } .public-page .partner-video__play svg { width: 20px; height: 20px; } }

/* Legal pages: one authoritative text at every width */
.legal-layout { display: grid; grid-template-columns: 240px minmax(0, 65ch); justify-content: center; align-items: start; gap: var(--sp-48) var(--sp-64); padding-block: var(--sp-96); background: none; color: var(--text); }
.legal-layout .legal-header { grid-column: 2; grid-row: 1; display: grid; gap: var(--sp-16); max-width: 65ch; margin: 0; }
.legal-layout .legal-header > span { width: fit-content; padding: var(--sp-4) var(--sp-8); border-radius: var(--radius); color: var(--text-muted); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; line-height: 1.5; text-transform: uppercase; }
.legal-layout .legal-header h1 { margin: 0; color: var(--accent); font-size: var(--fs-49); line-height: 1.1; }
.legal-layout .legal-header p { margin: 0; color: var(--text); font-size: var(--fs-20); line-height: 1.5; }
.legal-layout .legal-toc { position: sticky; top: 96px; grid-column: 1; grid-row: 1 / span 3; align-self: start; display: grid; gap: var(--sp-8); }
.legal-layout .legal-toc strong { color: var(--text-muted); font-size: var(--fs-13); letter-spacing: .08em; line-height: 1.5; text-transform: uppercase; }
.legal-layout .legal-toc nav { display: grid; gap: 0; margin: 0; }
.legal-layout .legal-toc a { display: flex; align-items: center; min-height: 44px; padding: 0 var(--sp-12); border-left: 2px solid var(--postcard-rule); color: var(--accent); font-size: var(--fs-16); text-decoration: none; }
.legal-layout .legal-toc a:hover, .legal-layout .legal-toc a.is-active { border-left-color: var(--accent); font-weight: 700; }
.legal-layout .legal-copy { grid-column: 2; display: grid; gap: var(--sp-48); max-width: 65ch; }
.legal-layout .legal-copy section { display: grid; gap: var(--sp-16); padding: 0; scroll-margin-top: 96px; }
.legal-layout .legal-copy h2 { display: flex; align-items: baseline; gap: var(--sp-12); margin: 0; color: var(--accent); font-size: var(--fs-25); line-height: 1.2; }
.legal-layout .legal-copy h2 span { color: var(--text-muted); font-family: var(--ui); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; }
.legal-layout .legal-copy p { margin: 0; color: var(--text); font-size: var(--fs-16); line-height: 1.6; }
.legal-layout .legal-copy a { color: var(--accent); font-weight: 700; }
.legal-layout .legal-note { padding: var(--sp-24) 0 0; border: 0; border-top: 1px solid var(--postcard-rule); border-radius: 0; background: none; }
.legal-layout .legal-contact { grid-column: 2; display: flex; align-items: flex-start; gap: var(--sp-12); max-width: 65ch; margin: 0; padding: var(--sp-16) var(--sp-24); border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); }
.legal-layout .legal-contact svg { flex: 0 0 24px; width: 24px; height: 24px; color: var(--accent); }
.legal-layout .legal-contact p { margin: 0; font-size: var(--fs-16); line-height: 1.55; }
@media (max-width: 900px) {
  .legal-layout { grid-template-columns: minmax(0, 1fr); padding-block: var(--sp-64); }
  .legal-layout .legal-header, .legal-layout .legal-copy { grid-column: auto; grid-row: auto; }
  .legal-layout .legal-toc { position: static; grid-column: auto; grid-row: auto; display: grid; padding: var(--sp-16); border: 1px solid var(--postcard-rule); border-radius: var(--radius); background: var(--postcard-paper); }
  .legal-layout .legal-header h1 { font-size: 36px; }
  .legal-layout .legal-header p { font-size: var(--fs-16); }
  .legal-layout .legal-contact { grid-column: auto; }
}

/* PostcardPerks · postcard component tokens
 * The canonical logo supplies the interface inks: deep navy for text and primary actions,
 * bright postal red for perk value and emphasis, and warm paper neutrals.
 * Scoped to the component roots so the tokens travel with the components (preview page, other mounts,
 * and the standalone vendor app shell, which loads this file without public/postcard.css's :root).
 */
.postcard-scope,
.postcard-card,
.postcard-viewer,
.featured-perk,
.platform-booking {
  --postcard-red: #e31925;          /* canonical logo red */
  --postcard-red-deep: #b80f1a;     /* pressed / hover red */
  --postcard-stamp-red: #cc1420;    /* perk price stamp fill only: white numerals at 5.7:1 (logo red is 4.7:1) */
  --postcard-cream: #f2deca;        /* photo placeholder tint, stamp frame */
  --postcard-cream-edge: #dcc4a5;   /* soft frame edge */
  --postcard-pale: #fffdf8;         /* text on ink */
  --postcard-ink: #001840;          /* canonical logo navy */
  --postcard-ink-soft: #566074;     /* navy-tinted secondary text */
  --postcard-forest: #001840;       /* legacy alias: primary buttons are navy */
  --postcard-forest-deep: #000f2e;  /* primary button hover */
  --postcard-blue: #24527a;         /* focus rings, postmark, provenance */
  --postcard-paper: #fbf8f3;        /* card backs, viewer stock */
  --postcard-matte: #ffffff;        /* photo matte */
  --postcard-divider: #d8d0c2;      /* rules, address lines */
  /* Two shared shadow recipes (house rule): rest 0 1px 3px rgba(0,0,0,.08), hover 0 4px 12px
     rgba(0,0,0,.10); plus one documented third recipe for true full-screen/native modal dialogs
     (the viewer sheet, platform-booking, the booking calendar), which needs more separation than a
     hovered card. Same value as public/postcard.css's --shadow-modal; see DESIGN.md. */
  --postcard-shadow: 0 1px 3px rgba(0, 0, 0, .08);
  --postcard-shadow-lift: 0 4px 12px rgba(0, 0, 0, .10);
  --postcard-shadow-viewer: 0 24px 64px rgba(0, 24, 64, .24);
  --postcard-matte-width: 12px;
  --postcard-radius: 8px;           /* card stock corner: one radius token everywhere */
  --postcard-control-radius: 8px;   /* buttons and fields, same token as the guide's search + dialogs */
  /* House type scale (public/postcard.css defines the same values at :root; repeated here so the
     standalone vendor app shell, which loads this file without that :root block, still renders the
     postcard card/viewer on-scale). */
  --fs-13: 13px; --fs-16: 16px; --fs-20: 20px; --fs-25: 25px; --fs-31: 31px; --fs-39: 39px; --fs-49: 49px; --fs-61: 61px;
  --postcard-font-ui: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --postcard-font-display: "Postcard Serif", Georgia, "Times New Roman", serif;
  --postcard-font-script: "Postcard Script", "Caveat", "Segoe Script", "Bradley Hand", cursive;
  --postcard-ease-out: cubic-bezier(.2, .8, .2, 1);
  --postcard-ease-in-out: cubic-bezier(.65, 0, .35, 1);
  /* House motion rule: 150-250ms ease-out on interactives (round 3, Sol #6). These were 350ms/
     320ms, above the range. */
  --postcard-expand-ms: 250ms;
  --postcard-leaf-ms: 220ms;
  --postcard-photo-filter: sepia(.15) saturate(.9) contrast(.97) brightness(1.02);
}

/* Handwriting face for the operator note & signature (Caveat, OFL — latin subset, ~75KB). */
@font-face {
  font-family: "Postcard Script";
  src: url("/components/assets/fonts/postcard-script.woff2") format("woff2");
  font-weight: 400 700;
  font-display: optional;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Inline icon sprite references (see src/lib/icons.js). */
.icon { display: inline-block; width: 1em; height: 1em; vertical-align: -.125em; flex: none; }

/* PostcardCard — grid state. Requires /components/postcard-tokens.css. */

.postcard-card {
  /* button reset */
  appearance: none;
  -webkit-appearance: none;
  display: block;
  width: 100%;
  margin: 0;
  padding: var(--postcard-matte-width);
  border: 1px solid rgba(220, 196, 165, .55); /* 1px warm edge */
  border-radius: var(--postcard-radius);
  background-color: var(--postcard-matte);
  /* Lightweight fibres keep the paper feel without the costly SVG turbulence
     filter that delayed mobile LCP on every card. */
  background-image:
    radial-gradient(circle, rgba(73, 57, 34, .045) 0 .55px, transparent .7px),
    radial-gradient(circle, rgba(255, 255, 255, .45) 0 .55px, transparent .7px);
  background-position: 0 0, 3px 4px;
  background-size: 7px 7px, 11px 11px;
  color: var(--postcard-ink);
  font: inherit;
  font-family: var(--postcard-font-ui);
  text-align: left;
  cursor: pointer;
  position: relative;
  box-shadow: var(--postcard-shadow);
  transform: rotate(var(--postcard-tilt, 0deg));
  transform-origin: 50% 60%;
  transition: transform 260ms var(--postcard-ease-out), box-shadow 260ms var(--postcard-ease-out);
  will-change: transform;
  -webkit-tap-highlight-color: transparent;
}
.postcard-card:hover,
.postcard-card:focus-visible {
  transform: rotate(0deg) translateY(-4px);
  box-shadow: var(--postcard-shadow-lift);
  z-index: 2;
}
.postcard-card:active { transform: rotate(0deg) translateY(-1px); transition-duration: 90ms; }
/* The one navy focus ring comes from postcard.css's unconditional :focus-visible rule; this
   losing provenance-blue duplicate is removed rather than left to rely on !important to mask it. */
.postcard-card:focus:not(:focus-visible) { outline: none; }

/* While the viewer is open from this card, keep the card as the "hole" in the stack. */
.postcard-card.is-origin { visibility: hidden; }

.postcard-card__matte { display: block; position: relative; }

.postcard-card__photo {
  display: block;
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: var(--postcard-radius);
  background: var(--postcard-cream);
}
.postcard-card__photo::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  box-shadow: inset 0 0 0 1px rgba(0, 24, 64, .16);
  pointer-events: none;
}
.postcard-card__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: var(--postcard-photo-filter);
  user-select: none;
}
.postcard-card__img--empty,
.postcard-card__photo.is-broken {
  background: var(--postcard-cream) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 48' fill='none' stroke='%23c9b28f' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 40 22 16l10 14 8-9 16 19z'/%3E%3Ccircle cx='48' cy='12' r='4'/%3E%3C/svg%3E") center / 64px 48px no-repeat;
}
.postcard-card__photo.is-broken .postcard-card__img { visibility: hidden; }

.postcard-stamp {
  display: inline-block;
  position: relative;
  aspect-ratio: 379 / 451;
  line-height: 0;
  filter: drop-shadow(0 1px 1px rgba(31, 24, 14, .22));
}
.postcard-stamp__img { display: block; width: 100%; height: 100%; object-fit: contain; user-select: none; pointer-events: none; }

/* Meta below the photo, still inside the white stock (like a captioned print). */
.postcard-card__meta {
  display: block;
  padding: 10px 2px 2px;
}
.postcard-card__title {
  display: block;
  font-size: var(--fs-16);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -.005em;
  color: var(--postcard-ink);
  overflow-wrap: anywhere;
}
.postcard-card__facts {
  display: block;
  margin-top: 3px;
  font-size: var(--fs-13);
  line-height: 1.35;
  color: var(--postcard-ink-soft);
}
.postcard-card__caption {
  display: block;
  margin-top: 3px;
  color: var(--postcard-blue);
  font-family: var(--postcard-font-script);
  font-size: var(--fs-20); /* house handwriting floor: never below 20px */
  line-height: 1.1;
}
.postcard-card__dot { margin: 0 .38em; opacity: .7; }
.postcard-card__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px 12px;
  flex-wrap: nowrap;
  margin-top: 8px;
}
.postcard-card__operator {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  font-size: var(--fs-13);
  line-height: 1.3;
  color: var(--postcard-ink-soft);
}
.postcard-card__open {
  color: var(--postcard-blue);
  font-size: var(--fs-13);
  font-weight: 750;
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--postcard-blue) 38%, transparent);
  text-underline-offset: .22em;
}
/* Inline chip at the end of the facts row ("2 h · Canmore · DEMO"): no vertical padding, so it
   keeps the row's 13px line box instead of opening a separate band inside the card. */
.postcard-card__demo {
  display: inline-block;
  margin: 0;
  padding: 0 4px;
  border: 1px solid var(--postcard-divider);
  white-space: nowrap;
  border-radius: var(--postcard-radius);
  font-size: var(--fs-13);
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--postcard-ink-soft);
  background: var(--postcard-paper);
}

/* Price row (shared with viewer via .postcard-price) */
.postcard-price {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.postcard-price__value { font-size: var(--fs-16); font-weight: 800; color: var(--postcard-ink); }
/* The struck regular price stays readable as a number (round 4: "$195" read as "$105" at 13px with
   a 1.5px same-colour strike): 16px numerals at full muted-ink contrast (6.2:1 on paper), with a
   1px strike at half that ink so the line sits behind the digits instead of merging with them. */
.postcard-price__was {
  font-size: var(--fs-16);
  font-weight: 500;
  color: var(--postcard-ink-soft);
  text-decoration-line: line-through;
  text-decoration-thickness: 1px;
  text-decoration-color: color-mix(in srgb, var(--postcard-ink-soft) 50%, transparent);
}
/* --postcard-stamp-red (#cc1420, postcard-tokens.css) is a slightly deeper postal red used only
   behind the white stamp numerals: 5.7:1 against white instead of the logo red's 4.7:1. */
.postcard-price__stamp {
  display: inline-grid;
  place-items: center;
  min-width: 50px;
  min-height: 29px;
  padding: 2px 7px;
  border: 1px dashed rgba(255, 255, 255, .82);
  outline: 2px dotted var(--postcard-stamp-red, #cc1420);
  outline-offset: -1px;
  border-radius: var(--postcard-radius);
  background: var(--postcard-stamp-red, #cc1420);
  color: #fff;
  line-height: 1;
  transform: rotate(-1.5deg);
  box-shadow: var(--postcard-shadow);
}
.postcard-price__perk { font-size: var(--fs-16); font-weight: 850; color: inherit; letter-spacing: -.01em; }
/* The "perk" subtext does not fit the stamp legibly at a 13px minimum; the accessible label
   already says "Perk $49 per guest instead of $70", so this stays visually hidden instead of
   shrunk below a readable size (the red stamp + strikethrough price still signal the deal). */
.postcard-price__label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.postcard-price__unit { font-size: var(--fs-13); font-weight: 500; color: var(--postcard-ink-soft); }

@media (prefers-reduced-motion: reduce) {
  .postcard-card { transition: box-shadow 200ms linear; }
  .postcard-card:hover, .postcard-card:focus-visible, .postcard-card:active { transform: rotate(var(--postcard-tilt, 0deg)); }
}

@media (max-width: 480px) {
  .postcard-card { --postcard-matte-width: 10px; }
  .postcard-card__title { font-size: var(--fs-16); }
  .postcard-card__facts { font-size: var(--fs-13); }
  .postcard-card__operator { font-size: var(--fs-13); }
  .postcard-card__caption { font-size: var(--fs-20); }
  .postcard-card__open { font-size: var(--fs-13); }
  .postcard-card__row { gap: 4px 10px; }
  /* Keep the price unit ("/ guest") visible and allow it to wrap onto its own line rather than
     hiding it: the price is meaningless without knowing whether it is per guest or per group. */
  .postcard-price { flex-wrap: wrap; white-space: normal; }
}

/* r2 worker A: new classes */
/* Card links: the card is a real <a href="/experiences/<slug>"> (progressively enhanced). */
.postcard-card--link { text-decoration: none; }
.postcard-card--link:hover, .postcard-card--link:visited { color: inherit; }

/* Per-card availability once a date or party size is chosen. */
.card-availability { display: block; margin-top: 4px; font-size: 13px; line-height: 1.5; color: #4a4a4a; }
.card-availability[hidden] { display: none; }
.card-availability[data-state="available"] { color: #141414; font-weight: 600; }
.card-availability[data-state="available"]::before { content: "\2022"; margin-right: 4px; color: #001840; }

/* Visible result summary for date / party-size availability, with next actions when nothing is open. */
.availability-summary { margin: 0 0 24px; padding: 12px 16px; border: 1px solid #d8d0c2; border-radius: 8px; background: #fffdf8; color: #141414; }
.availability-summary[hidden] { display: none; }
.availability-summary__text { margin: 0; font-size: 16px; line-height: 1.5; max-width: 65ch; }
.availability-summary__text:focus { outline: none; }
.availability-summary__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.availability-summary__actions[hidden], .availability-summary__action[hidden] { display: none; }
.availability-summary__action {
  min-height: 44px; padding: 8px 16px; border: 1px solid #001840; border-radius: 8px; background: #fffdf8;
  color: #001840; font: inherit; font-size: 16px; line-height: 1.5; font-weight: 600; cursor: pointer;
  transition: background-color 180ms ease-out, box-shadow 180ms ease-out;
}
.availability-summary__action:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, .10); }
.availability-summary__action:focus-visible { outline: 2px solid #001840; outline-offset: 2px; }

/* r3 worker A: card titles are headings (h3) inside the link; keep the span-era look exactly. */
.postcard-card h2.postcard-card__title,
.postcard-card h3.postcard-card__title { margin: 0; font-family: inherit; letter-spacing: -.005em; text-transform: none; }

/* PostcardViewer — expanded state. Requires /components/postcard-tokens.css and PostcardCard/postcard-card.css
 * (for .postcard-stamp and .postcard-price). */

.postcard-viewer {
  position: fixed;
  inset: 0;
  z-index: 1000;
  font-family: var(--postcard-font-ui);
  color: var(--postcard-ink);
  -webkit-font-smoothing: antialiased;
}
.postcard-viewer__live {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}

.postcard-viewer__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(31, 24, 14, .58);
  -webkit-backdrop-filter: blur(7px) saturate(.9);
  backdrop-filter: blur(7px) saturate(.9);
  opacity: 0;
  transition: opacity var(--postcard-expand-ms) var(--postcard-ease-out);
}
.postcard-viewer.is-visible .postcard-viewer__backdrop { opacity: 1; }
.postcard-viewer.is-closing .postcard-viewer__backdrop { transition-timing-function: var(--postcard-ease-in-out); }

.postcard-viewer__stage {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 24px clamp(16px, 5vw, 72px);
  overflow: hidden;
}

/* The stack: FLIP target on open/close, pull-to-advance indicator, leaf host. */
.postcard-viewer__stack {
  position: relative;
  display: grid;
  width: min(1440px, 100%);
  height: calc(100vh - 48px);
  height: calc(100dvh - 48px);
  max-height: calc(100vh - 48px);
  max-height: calc(100dvh - 48px);
  transform: translateY(var(--postcard-pull, 0px));
  transition: transform var(--postcard-expand-ms) var(--postcard-ease-out), clip-path var(--postcard-expand-ms) var(--postcard-ease-out);
  will-change: transform, clip-path;
}
.postcard-viewer__stack.is-pulling { transition: clip-path var(--postcard-expand-ms) var(--postcard-ease-out); }
.postcard-viewer.is-closing .postcard-viewer__stack { transition-timing-function: var(--postcard-ease-in-out); }
.postcard-viewer__stack.nudge-fwd { animation: postcard-nudge-fwd 220ms var(--postcard-ease-out); }
.postcard-viewer__stack.nudge-back { animation: postcard-nudge-back 220ms var(--postcard-ease-out); }
@keyframes postcard-nudge-fwd { 30% { transform: translate(-10px, 0); } 100% { transform: translate(0, 0); } }
@keyframes postcard-nudge-back { 30% { transform: translate(10px, 0); } 100% { transform: translate(0, 0); } }

/* Reduced motion / no origin: fade instead of expand */
.postcard-viewer.is-fading .postcard-viewer__stack { opacity: 0; transition: opacity 200ms linear; }
.postcard-viewer.is-fading.is-visible .postcard-viewer__stack { opacity: 1; }
.postcard-viewer.is-closing .postcard-viewer__stack { opacity: 0; transition: transform var(--postcard-expand-ms) var(--postcard-ease-in-out), clip-path var(--postcard-expand-ms) var(--postcard-ease-in-out), opacity 120ms linear 130ms; }
.postcard-viewer.is-fading.is-closing .postcard-viewer__stack { transition: opacity 180ms linear; }

/* The postcard sheet (scroll container = the "content" for the scroll guard) */
.postcard-viewer__card {
  grid-area: 1 / 1;
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(420px, .88fr);
  grid-template-rows: minmax(0, 1fr);
  position: relative;
  height: 100%;
  max-height: calc(100vh - 48px);
  max-height: calc(100dvh - 48px);
  overflow: hidden;
  overscroll-behavior: contain;
  border-radius: var(--postcard-radius);
  background-color: var(--postcard-paper);
  background-image: url("/components/assets/postcard-paper.svg");
  background-size: 240px 240px;
  box-shadow: var(--postcard-shadow-viewer); /* documented modal-elevation exception; see DESIGN.md */
  outline: none;
  transition: transform var(--postcard-leaf-ms) var(--postcard-ease-out), opacity calc(var(--postcard-leaf-ms) * .72) linear, box-shadow var(--postcard-leaf-ms) var(--postcard-ease-out);
}
.postcard-viewer__content {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--postcard-divider) transparent;
}
.postcard-viewer__content::-webkit-scrollbar { width: 8px; }
.postcard-viewer__content::-webkit-scrollbar-track { background: transparent; }
.postcard-viewer__content::-webkit-scrollbar-thumb { border: 2px solid transparent; border-radius: var(--postcard-radius); background: var(--postcard-divider); background-clip: padding-box; }
.postcard-viewer__content:focus { outline: none; }
.postcard-viewer__card.is-dragging {
  transform: translateX(var(--postcard-drag-x, 0)) rotate(var(--postcard-drag-rotate, 0));
  transition: none;
  user-select: none;
}
/* Leafing through the stack */
.postcard-viewer__card.is-entering { z-index: 2; box-shadow: var(--postcard-shadow-lift); }
.postcard-viewer__card.is-entering.axis-x.dir-fwd  { transform: translateX(calc(100% + 24px)) rotate(2.2deg); opacity: .94; }
.postcard-viewer__card.is-entering.axis-x.dir-back { transform: translateX(calc(-100% - 24px)) rotate(-2.2deg); opacity: .94; }
.postcard-viewer__card.is-entering.axis-y.dir-fwd  { transform: translateY(72px) scale(.985); opacity: 0; }
.postcard-viewer__card.is-entering.axis-y.dir-back { transform: translateY(-72px) scale(.985); opacity: 0; }
.postcard-viewer__card.is-entering.is-in.axis-x.dir-fwd,
.postcard-viewer__card.is-entering.is-in.axis-x.dir-back,
.postcard-viewer__card.is-entering.is-in.axis-y.dir-fwd,
.postcard-viewer__card.is-entering.is-in.axis-y.dir-back { transform: none; opacity: 1; }
.postcard-viewer__card.is-leaving { pointer-events: none; z-index: 1; }
.postcard-viewer__card.is-leaving.is-out.axis-x.dir-fwd  { transform: translateX(-38%) rotate(-1.4deg) scale(.985); opacity: .18; }
.postcard-viewer__card.is-leaving.is-out.axis-x.dir-back { transform: translateX(38%) rotate(1.4deg) scale(.985); opacity: .18; }
.postcard-viewer__card.is-leaving.is-out.axis-y.dir-fwd  { transform: translateY(-64px) scale(.985); opacity: 0; }
.postcard-viewer__card.is-leaving.is-out.axis-y.dir-back { transform: translateY(64px) scale(.985); opacity: 0; }

/* ---------- Front: photo (gallery) + caption ---------- */
.postcard-viewer__front { display: contents; }
.postcard-viewer__photo {
  grid-column: 1;
  grid-row: 1;
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  background: var(--postcard-cream);
  border-right: 1px solid var(--postcard-divider);
  border-radius: var(--postcard-radius) 0 0 var(--postcard-radius);
}
.postcard-viewer__photo::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  box-shadow: inset 0 0 0 1px rgba(0, 24, 64, .18);
  pointer-events: none;
}
.postcard-viewer__gallery {
  display: flex;
  height: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
}
.postcard-viewer__gallery::-webkit-scrollbar { display: none; }
.postcard-viewer__gallery:focus-visible { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }
.postcard-viewer__slide { flex: 0 0 100%; height: 100%; margin: 0; scroll-snap-align: start; scroll-snap-stop: always; }
.postcard-viewer__img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; filter: var(--postcard-photo-filter); user-select: none; background: var(--postcard-forest-deep); }
.postcard-viewer__img--empty { background: repeating-linear-gradient(135deg, var(--postcard-cream) 0 14px, #ede0cf 14px 28px); }
.postcard-viewer__gallery-arrow {
  position: absolute; top: 50%; z-index: 2;
  display: grid; place-items: center; width: 40px; height: 40px; padding: 0;
  border: 0; border-radius: 50%; background: rgba(255, 253, 248, .94); color: var(--postcard-ink);
  box-shadow: var(--postcard-shadow); cursor: pointer; transform: translateY(-50%);
  opacity: 0; transition: opacity 160ms linear, background 160ms linear;
}
.postcard-viewer__gallery-arrow .icon { width: 20px; height: 20px; }
.postcard-viewer__gallery-arrow--prev { left: 14px; }
.postcard-viewer__gallery-arrow--next { right: 14px; }
.postcard-viewer__photo:hover .postcard-viewer__gallery-arrow,
.postcard-viewer__gallery-arrow:focus-visible { opacity: 1; }
.postcard-viewer__gallery-arrow:disabled { opacity: 0 !important; pointer-events: none; }
.postcard-viewer__gallery-arrow:hover { background: #fff; }
.postcard-viewer__gallery-count {
  position: absolute; right: 14px; bottom: 12px; z-index: 2;
  padding: 3px 9px; border-radius: var(--postcard-radius); background: rgba(0, 15, 46, .72); color: #fffdf8;
  font-size: var(--fs-13); font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: .02em;
}
.postcard-viewer__gallery-dots { position: absolute; left: 50%; bottom: 12px; z-index: 2; display: flex; gap: 5px; transform: translateX(-50%); }
.postcard-viewer__gallery-dots i { display: block; width: 6px; height: 6px; border-radius: 50%; background: rgba(255, 253, 248, .55); box-shadow: 0 0 0 1px rgba(0,15,46,.2); transition: background 160ms linear, transform 160ms linear; }
.postcard-viewer__gallery-dots i.is-active { background: #fffdf8; transform: scale(1.25); }

.postcard-viewer__caption {
  padding: 22px 24px 16px;
  border-bottom: 1px dashed var(--postcard-divider);
}
.postcard-viewer__caption-row { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 14px 24px; }
.postcard-viewer__caption-copy { min-width: 0; flex: 1 1 auto; }
.postcard-viewer__title {
  margin: 0;
  font-family: var(--postcard-font-display);
  font-size: var(--fs-31);
  font-weight: 650;
  line-height: 1.05;
  letter-spacing: -.02em;
  color: var(--postcard-ink);
  overflow-wrap: anywhere;
}
.postcard-viewer__subtitle {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px;
  margin: 8px 0 0; font-size: var(--fs-16); color: var(--postcard-ink-soft);
}
.postcard-viewer__demo {
  display: inline-block; padding: 4px 8px; border: 1px solid var(--postcard-divider); border-radius: var(--postcard-radius);
  font-size: var(--fs-13); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--postcard-ink-soft); background: var(--postcard-matte);
}
.postcard-viewer__caption-actions { display: flex; flex: 1 0 100%; align-items: center; justify-content: space-between; gap: 12px; }
.postcard-viewer__share {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 12px;
  border: 1px solid var(--postcard-divider); border-radius: var(--postcard-radius); background: var(--postcard-matte); color: var(--postcard-ink);
  font: inherit; font-size: var(--fs-13); font-weight: 700; cursor: pointer; transition: background 180ms ease-out, border-color 180ms ease-out;
}
.postcard-viewer__share:hover { border-color: var(--postcard-ink-soft); }
.postcard-viewer__share .icon { width: 17px; height: 17px; }
.postcard-viewer__pager { display: inline-flex; align-items: center; gap: 4px; color: var(--postcard-ink-soft); font-size: var(--fs-13); font-variant-numeric: tabular-nums; }
.postcard-viewer__pager-btn {
  display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: var(--postcard-radius);
  background: transparent; color: var(--postcard-ink); cursor: pointer; transition: background 180ms ease-out;
}
.postcard-viewer__pager-btn .icon { width: 20px; height: 20px; }
.postcard-viewer__pager-btn:hover:not(:disabled) { background: rgba(0, 15, 46, .07); }
.postcard-viewer__pager-btn:disabled { opacity: .3; cursor: default; }
.postcard-viewer__count { min-width: 3.4em; text-align: center; }
.postcard-viewer__swipe-copy { display: none; color: var(--postcard-ink); font-size: var(--fs-13); font-weight: 750; white-space: nowrap; }

.postcard-viewer__facts {
  display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 0; padding: 0; list-style: none;
}
.postcard-viewer__facts li {
  display: inline-flex; align-items: center; gap: 7px; min-height: 32px; padding: 0 10px;
  border: 1px solid var(--postcard-divider); border-radius: var(--postcard-radius); background: var(--postcard-matte);
  font-size: var(--fs-13); font-weight: 600; color: var(--postcard-ink);
}
.postcard-viewer__facts .icon { width: 16px; height: 16px; color: var(--postcard-ink-soft); }

/* ---------- Postcard back: booking first, supporting copy on demand ---------- */
.postcard-viewer__back { display: contents; }
.postcard-viewer__booking-zone {
  min-width: 0;
  padding: 10px 24px 22px;
}
.postcard-viewer__secondary {
  display: grid;
  gap: 0;
  padding: 0 24px 26px;
  border-top: 1px dashed var(--postcard-divider);
}
.postcard-viewer__disclosure { border-bottom: 1px dashed var(--postcard-divider); }
.postcard-viewer__disclosure:last-child { border-bottom: 0; }
.postcard-viewer__disclosure > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 56px;
  color: var(--postcard-ink);
  font-size: var(--fs-16);
  font-weight: 800;
  cursor: pointer;
  list-style: none;
}
.postcard-viewer__disclosure > summary::-webkit-details-marker { display: none; }
.postcard-viewer__disclosure > summary .icon {
  width: 19px;
  height: 19px;
  flex: 0 0 auto;
  color: var(--postcard-ink-soft);
  transition: transform 180ms var(--postcard-ease-out);
}
.postcard-viewer__disclosure[open] > summary .icon { transform: rotate(180deg); }
.postcard-viewer__disclosure > summary:hover span { text-decoration: underline; text-underline-offset: .22em; }
.postcard-viewer__disclosure > summary:focus-visible { outline: 2px solid var(--postcard-blue); outline-offset: 2px; border-radius: var(--postcard-radius); }
.postcard-viewer__note {
  display: grid;
  align-content: start;
  gap: 22px;
  padding: 8px 0 24px;
  background-image: repeating-linear-gradient(to bottom, transparent 0 27px, rgba(36, 82, 122, .12) 27px 28px);
  background-position: 0 8px;
}
.postcard-viewer__section-title {
  margin: 0 0 8px; font-size: var(--fs-13); font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--postcard-ink-soft);
}
.postcard-viewer__about { margin: 0; font-size: var(--fs-16); line-height: 1.6; color: var(--postcard-ink); }
.postcard-viewer__handwritten { padding: 4px 0 0; }
.postcard-viewer__note-text {
  margin: 0;
  font-family: var(--postcard-font-script);
  font-size: 1.42rem; /* handwriting exception (DESIGN.md): 22.7px, above the 20px floor, not on the type scale */
  line-height: 1.38;
  color: var(--postcard-ink);
  overflow-wrap: anywhere;
}
.postcard-viewer__signature {
  margin: 10px 0 0;
  font-family: var(--postcard-font-script);
  font-size: 1.32rem; /* handwriting exception (DESIGN.md): 21.1px, above the 20px floor, not on the type scale */
  color: var(--postcard-ink-soft);
}
.postcard-viewer__operator { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 14px; padding-top: 18px; border-top: 1px dashed var(--postcard-divider); }
.postcard-viewer__operator-mark {
  display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--postcard-radius);
  background: #dbe9ed; color: var(--postcard-blue); font-family: var(--postcard-font-display); font-size: var(--fs-20); font-weight: 750;
}
.postcard-viewer__operator .postcard-viewer__section-title { margin-bottom: 4px; letter-spacing: .02em; text-transform: none; font-size: var(--fs-16); font-weight: 750; color: var(--postcard-ink); }
.postcard-viewer__operator p { margin: 0; font-size: var(--fs-16); line-height: 1.55; color: var(--postcard-ink-soft); }
.postcard-viewer__call {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px; margin-top: 8px;
  color: var(--postcard-forest); font-size: var(--fs-16); font-weight: 750; text-decoration: underline; text-underline-offset: 4px;
}
.postcard-viewer__call .icon { width: 16px; height: 16px; }
.postcard-viewer__postal {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-height: 88px;
  margin-bottom: 8px;
}
.postcard-postmark { width: 84px; height: 84px; flex: 0 0 auto; color: var(--postcard-ink); opacity: .78; transform: rotate(-8deg); }
.postcard-viewer__postal .postcard-postmark { position: relative; z-index: 2; margin-right: -20px; }
.postcard-viewer__postal-price { display: grid; justify-items: center; gap: 5px; padding: 14px 12px 11px; border: 1px dashed var(--postcard-divider); background: rgba(255,255,255,.58); transform: rotate(3deg); }
.postcard-viewer__postal-price > small { color: var(--postcard-ink-soft); font-size: var(--fs-13); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }

.postcard-viewer__details {
  padding: 4px 0 24px;
}
.postcard-viewer__lines {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 30px;
  margin: 0;
}
.postcard-viewer__line {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
  gap: 12px;
  align-content: start;
  padding: 10px 0;
  border-bottom: 1px dashed var(--postcard-divider);
}
.postcard-viewer__line dt { margin: 0; font-size: var(--fs-13); font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--postcard-ink-soft); padding-top: 3px; }
.postcard-viewer__line dd { margin: 0; font-size: var(--fs-16); line-height: 1.4; }
.postcard-viewer__line--price { border-bottom: 0; align-items: baseline; }
.postcard-viewer__line--price .postcard-price__perk { font-size: var(--fs-25); }
.postcard-viewer__line--price .postcard-price__value { font-size: var(--fs-20); }
.postcard-viewer__line--price .postcard-price__was { font-size: var(--fs-16); }
.postcard-viewer__unit { margin-left: 6px; font-size: var(--fs-13); color: var(--postcard-ink-soft); }
.postcard-viewer__perk-title { margin: 4px 0 0; font-size: var(--fs-13); font-weight: 700; color: var(--postcard-red); }
.postcard-viewer__validity { margin: 2px 0 0; font-size: var(--fs-13); color: var(--postcard-ink-soft); }

/* Availability panel: lives here and only here */
.postcard-viewer__availability {
  width: 100%;
  margin: 0;
  padding: 14px 16px;
  border: 1px solid var(--postcard-divider);
  border-radius: var(--postcard-control-radius);
  background: var(--postcard-matte);
}
.postcard-viewer__availability-title { margin: 0 0 12px; font-size: var(--fs-13); font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--postcard-ink-soft); }
.postcard-viewer__availability-copy { margin: 12px 0 0; font-size: var(--fs-13); line-height: 1.5; color: var(--postcard-ink-soft); }
.postcard-viewer__date-strip { display: flex; gap: 8px; overflow-x: auto; padding: 2px 1px 8px; scrollbar-width: thin; scroll-snap-type: x proximity; }
.postcard-viewer__date-strip button { flex: 0 0 94px; min-height: 90px; display: grid; place-items: center; gap: 1px; scroll-snap-align: start; border: 1px solid #aaa392; border-radius: var(--postcard-radius); background: var(--postcard-paper); color: var(--postcard-ink); font: inherit; cursor: pointer; }
.postcard-viewer__date-strip button span { font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--postcard-ink-soft); }
.postcard-viewer__date-strip button strong { font-family: var(--postcard-serif); font-size: var(--fs-25); line-height: 1; }
.postcard-viewer__date-strip button small { font-size: var(--fs-13); }
.postcard-viewer__date-strip button.is-selected { border-color: var(--postcard-forest); background: var(--postcard-forest); color: var(--postcard-pale); box-shadow: 0 0 0 2px var(--postcard-paper), 0 0 0 4px var(--postcard-forest); }
.postcard-viewer__date-strip button.is-selected span { color: inherit; }
.postcard-viewer__date-strip button:disabled { cursor: not-allowed; opacity: .48; }
/* The guest's own requested date, when it turns out to be unavailable: kept selected (never
   swapped to a different day automatically) but drawn as a hollow, dashed outline so it never
   reads as a normal available-and-chosen date. See guest-booking.js #showUnavailableRequest. */
.postcard-viewer__date-strip button.is-selected:disabled {
  opacity: 1;
  border: 2px dashed var(--postcard-forest);
  background: var(--postcard-paper);
  color: var(--postcard-ink);
  box-shadow: none;
}
.postcard-viewer__date-strip button.is-selected:disabled span { color: var(--postcard-ink-soft); }
.postcard-viewer__availability-loading { padding: 14px 0; color: var(--postcard-ink-soft); }
.postcard-viewer__guest-stepper { display: grid; grid-template-columns: 1fr 42px 44px 42px; align-items: center; gap: 4px; margin-top: 10px; }
.postcard-viewer__guest-stepper button { min-width: 44px; min-height: 44px; border: 1px solid #aaa392; border-radius: var(--postcard-radius); background: var(--postcard-paper); color: var(--postcard-forest); font-size: var(--fs-20); cursor: pointer; }
.postcard-viewer__guest-stepper output { text-align: center; font-weight: 800; }
.postcard-viewer__date-note { min-height: 1.3em; margin: 8px 0 0; font-size: var(--fs-13); color: var(--postcard-ink-soft); }
.postcard-viewer__fields { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.postcard-viewer__field { display: grid; gap: 5px; font-size: var(--fs-13); font-weight: 700; color: var(--postcard-ink-soft); }
.postcard-viewer__field input, .postcard-viewer__field select {
  min-height: 46px; padding: 0 12px; border: 1px solid #aaa392; border-radius: var(--postcard-control-radius);
  background: var(--postcard-paper); color: var(--postcard-ink); font: inherit; font-size: var(--fs-16); font-weight: 500;
}
.postcard-viewer__total { margin: 12px 0 0; font-size: var(--fs-16); color: var(--postcard-ink-soft); font-variant-numeric: tabular-nums; }
.postcard-viewer__total strong { color: var(--postcard-ink); }
.price-breakdown { display: grid; gap: 0; margin: 14px 0 18px; color: var(--postcard-ink); font-variant-numeric: tabular-nums; }
.price-breakdown-disclosure { margin-top: 12px; border-top: 1px solid var(--postcard-divider); border-bottom: 1px solid var(--postcard-divider); }
.price-breakdown-disclosure > summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto 20px;
  align-items: center;
  gap: 10px;
  min-height: 50px;
  color: var(--postcard-ink);
  cursor: pointer;
  list-style: none;
}
.price-breakdown-disclosure > summary::-webkit-details-marker { display: none; }
.price-breakdown-disclosure > summary span { font-size: var(--fs-13); font-weight: 700; }
.price-breakdown-disclosure > summary strong { font-size: var(--fs-16); font-weight: 850; font-variant-numeric: tabular-nums; }
.price-breakdown-disclosure > summary .icon { width: 18px; height: 18px; color: var(--postcard-ink-soft); transition: transform 180ms var(--postcard-ease-out); }
.price-breakdown-disclosure[open] > summary .icon { transform: rotate(180deg); }
.price-breakdown-disclosure > summary:focus-visible { outline: 2px solid var(--postcard-blue); outline-offset: 2px; border-radius: var(--postcard-radius); }
.price-breakdown-disclosure[open] .price-breakdown { margin-top: 2px; }
/* Viewer: the disclosure summary is the payment split's Total row, so it continues that list
   (same divider, same 20px weight) instead of starting a second block below it. */
.price-breakdown-disclosure--total { margin-top: 0; border-top-color: #d8d0c2; }
.price-breakdown-disclosure--total > summary { color: #141414; }
.price-breakdown-disclosure--total > summary span, .price-breakdown-disclosure--total > summary strong { font-size: var(--fs-20); font-weight: 700; line-height: 1.5; }
.price-breakdown > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 16px; padding: 7px 0; }
.price-breakdown dt, .price-breakdown dd { margin: 0; }
.price-breakdown dt { font-size: var(--fs-13); font-weight: 650; }
.price-breakdown dt small { display: block; margin-top: 2px; color: var(--postcard-ink-soft); font-size: var(--fs-13); font-weight: 500; }
.price-breakdown dd { text-align: right; font-weight: 700; }
.price-breakdown__discount dd { color: var(--postcard-red); }
.price-breakdown__total { margin-top: 5px; padding-top: 12px !important; border-top: 1px solid var(--postcard-divider); }
.price-breakdown__total dt, .price-breakdown__total dd { font-size: var(--fs-16); font-weight: 850; color: var(--postcard-ink); }
.postcard-viewer__book {
  display: block; width: 100%; min-height: 50px; margin-top: 12px; padding: 0 16px; border: 0; border-radius: var(--postcard-control-radius);
  background: var(--postcard-forest); color: var(--postcard-pale); font: inherit; font-size: var(--fs-16); font-weight: 750; cursor: pointer;
  transition: background 160ms linear, transform 160ms var(--postcard-ease-out);
}
.postcard-viewer__book:hover { background: var(--postcard-forest-deep); }
.postcard-viewer__book:active { transform: translateY(1px); }
.postcard-viewer__book:disabled { cursor: progress; opacity: .85; }
.postcard-viewer__book .icon { width: 18px; height: 18px; margin-left: 8px; }
@keyframes postcard-spin { to { transform: rotate(360deg); } }
.postcard-viewer__book .icon.is-spinning { animation: postcard-spin 900ms linear infinite; }

.platform-booking { width: min(560px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); padding: 28px; overflow: auto; border: 1px solid var(--postcard-divider); border-radius: var(--postcard-radius); background: var(--postcard-paper); color: var(--postcard-ink); box-shadow: var(--postcard-shadow-viewer); }
.platform-booking::backdrop { background: rgba(18, 30, 24, .62); backdrop-filter: blur(3px); }
.platform-booking h2 { margin: 0 36px 4px 0; font-family: var(--postcard-serif); font-size: var(--fs-39); line-height: 1; }
.platform-booking [data-booking-summary] { margin: 0 0 22px; color: var(--postcard-ink-soft); }
.platform-booking form { display: grid; gap: 14px; }
.platform-booking__addons{display:grid;gap:8px;margin:0;padding:16px;border:1px solid var(--postcard-divider);border-radius:var(--postcard-radius);background:var(--postcard-matte)}
.platform-booking__addons legend{padding:0 5px;font-family:var(--postcard-sans);font-weight:800;color:var(--postcard-ink)}
.platform-booking__addon{display:grid!important;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:54px;padding:8px 0;border-bottom:1px solid var(--postcard-divider)}
.platform-booking__addon:last-child{border-bottom:0}.platform-booking__addon input{width:20px;min-height:20px;margin:0}.platform-booking__addon span{display:grid;gap:2px}.platform-booking__addon strong{color:var(--postcard-ink)}.platform-booking__addon small{color:var(--postcard-ink-soft);font-size:var(--fs-13);font-weight:500;line-height:1.35}.platform-booking__addon>b{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--postcard-ink)}
.platform-booking label:not(.platform-booking__check) { display: grid; gap: 5px; font-size: var(--fs-13); font-weight: 750; }
.platform-booking label span { font-weight: 500; color: var(--postcard-ink-soft); }
.platform-booking input, .platform-booking textarea { box-sizing: border-box; width: 100%; min-height: 46px; padding: 10px 12px; border: 1px solid #aaa392; border-radius: var(--postcard-radius); background: #fffdf7; color: inherit; font: inherit; }
.platform-booking__check { display: flex; align-items: center; gap: 8px; font-size: var(--fs-13); }
.platform-booking__check input { width: 20px; min-height: 20px; }
.platform-booking__close { position: absolute; top: 14px; right: 14px; width: 40px; height: 40px; border: 0; border-radius: 50%; background: var(--postcard-matte); color: inherit; font-size: var(--fs-25); cursor: pointer; }
.platform-booking__policies { padding-top: 12px; border-top: 1px dashed var(--postcard-divider); font-size: var(--fs-13); color: var(--postcard-ink-soft); }
.platform-booking__error { min-height: 1.3em; margin: 0; color: var(--postcard-red); font-weight: 700; }
.platform-booking__held { display: inline-block; margin: 0; padding: 5px 10px; border-radius: var(--postcard-radius); background: #dce9d9; color: var(--postcard-forest); font-size: var(--fs-13); font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.platform-booking__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.platform-booking__actions a { padding: 11px 14px; border: 1px solid var(--postcard-forest); border-radius: var(--postcard-radius); color: var(--postcard-forest); font-weight: 750; text-decoration: none; }
.platform-booking__postcard { position: relative; overflow: hidden; border-radius: var(--postcard-radius); background-color: var(--postcard-paper); background-image: url("/components/assets/postcard-paper.svg"); box-shadow: var(--postcard-shadow); animation: postcard-mail-arrive 420ms var(--postcard-ease-out) both; }
.platform-booking__photo { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; filter: var(--postcard-photo-filter); box-shadow: inset 0 0 0 1px rgba(0,24,64,.16); }
.platform-booking__postcard-content { position: relative; padding: 24px; }
.platform-booking__hello { margin: 14px 0 0; color: var(--postcard-blue); font-family: var(--postcard-font-script); font-size: 1.65rem; line-height: 1; }
.platform-booking__ref { display: inline-block; margin: 12px 0; padding-bottom: 4px; border-bottom: 1px solid var(--postcard-divider); font-weight: 800; letter-spacing: .05em; }
.platform-booking__when, .platform-booking__payment { color: var(--postcard-ink-soft); line-height: 1.5; }
.platform-booking__vendor { display: grid; gap: 3px; margin-top: 18px; padding-top: 14px; border-top: 1px dashed var(--postcard-divider); }
.platform-booking__vendor span { color: var(--postcard-ink-soft); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.platform-booking__vendor a { color: var(--postcard-ink); font-weight: 700; }
.platform-booking__stamp { position: absolute; top: 18px; right: 20px; z-index: 3; width: 58px; aspect-ratio: 379 / 451; background: url("/components/assets/postcard-stamp.svg?v=20260822-kalam") center / contain no-repeat; filter: drop-shadow(0 2px 3px rgba(31,24,14,.18)); transform: scale(1.7) rotate(8deg); animation: postcard-stamp-thunk 220ms 260ms var(--postcard-ease-out) forwards; opacity: 0; }
.platform-booking__postmark { position: absolute; top: 32px; right: 50px; z-index: 4; width: 88px; aspect-ratio: 1; border: 3px double var(--postcard-blue); border-radius: 50%; transform: rotate(-10deg); animation: postcard-postmark-ink 180ms 430ms linear forwards; opacity: 0; }
@keyframes postcard-mail-arrive { from { transform: translateY(34px) rotate(-.7deg); opacity: .35; filter: blur(3px); } to { transform: translateY(0) rotate(.2deg); opacity: 1; filter: blur(0); } }
@keyframes postcard-stamp-thunk { from { transform: scale(1.7) rotate(8deg); opacity: 0; } to { transform: scale(1) rotate(5deg); opacity: 1; } }
@keyframes postcard-postmark-ink { to { opacity: .72; } }

/* Sticky book bar (inside the scrolling sheet; shown while the real Book button is off-screen) */
.postcard-viewer__bar {
  grid-column: 1 / -1;
  position: sticky;
  bottom: 0;
  z-index: 3;
  display: block;
  padding: 8px 16px calc(8px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--postcard-divider);
  background: rgba(251, 248, 243, .97);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  box-shadow: var(--postcard-shadow-lift);
  transform: translateY(100%);
  opacity: 0;
  pointer-events: none;
  transition: transform 220ms var(--postcard-ease-out), opacity 160ms linear;
}
.postcard-viewer__bar.is-shown { transform: none; opacity: 1; pointer-events: auto; }
.postcard-viewer__book--bar { width: 100%; min-height: 54px; margin: 0; }

/* Chrome: close, chevrons, toast, pull indicator */
.postcard-viewer__close,
.postcard-viewer__nav {
  position: absolute;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  padding: 0;
  border: 1px solid rgba(220, 196, 165, .6);
  border-radius: 50%;
  background: var(--postcard-paper);
  color: var(--postcard-ink);
  box-shadow: var(--postcard-shadow);
  cursor: pointer;
  z-index: 3;
  opacity: 0;
  transition: opacity 220ms linear 120ms, transform 160ms var(--postcard-ease-out), background 160ms linear;
}
.postcard-viewer__close { display: flex; width: auto; min-width: 46px; padding: 0 14px 0 10px; gap: 5px; border-radius: var(--postcard-radius); font: inherit; font-size: var(--fs-13); font-weight: 800; }
.postcard-viewer.is-visible .postcard-viewer__close,
.postcard-viewer.is-visible .postcard-viewer__nav { opacity: 1; }
.postcard-viewer.is-closing .postcard-viewer__close,
.postcard-viewer.is-closing .postcard-viewer__nav { opacity: 0; transition-delay: 0ms; }
.postcard-viewer__close svg, .postcard-viewer__nav svg { width: 22px; height: 22px; }
.postcard-viewer__close { top: 16px; left: 16px; }
.postcard-viewer__nav { top: 50%; transform: translateY(-50%); }
.postcard-viewer__nav--prev { left: 18px; }
.postcard-viewer__nav--next { right: 18px; }
.postcard-viewer__nav:hover, .postcard-viewer__close:hover { background: #fff; }
.postcard-viewer__nav.is-end { opacity: .38; cursor: default; }
.postcard-viewer.is-single .postcard-viewer__nav, .postcard-viewer.is-single .postcard-viewer__pager { display: none; }
.postcard-viewer__close:focus-visible, .postcard-viewer__nav:focus-visible, .postcard-viewer__book:focus-visible, .postcard-viewer__share:focus-visible,
.postcard-viewer__pager-btn:focus-visible, .postcard-viewer__gallery-arrow:focus-visible, .postcard-viewer__call:focus-visible,
.postcard-viewer__field input:focus-visible, .postcard-viewer__field select:focus-visible { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }

.postcard-viewer__toast {
  position: absolute; left: 50%; bottom: 26px; transform: translate(-50%, 8px);
  padding: 8px 14px; border-radius: var(--postcard-radius); background: var(--postcard-ink); color: var(--postcard-pale);
  font-size: var(--fs-13); font-weight: 700; letter-spacing: .02em; opacity: 0; pointer-events: none; z-index: 4;
  transition: opacity 180ms linear, transform 180ms var(--postcard-ease-out);
}
.postcard-viewer__toast.is-shown { opacity: 1; transform: translate(-50%, 0); }

.postcard-viewer__pull {
  position: absolute; left: 50%; bottom: 14px; width: 56px; height: 4px; transform: translateX(-50%);
  border-radius: var(--postcard-radius); background: rgba(251, 248, 243, .35); overflow: hidden; opacity: 0; pointer-events: none; z-index: 4;
  transition: opacity 120ms linear;
}
.postcard-viewer__pull.is-back { bottom: auto; top: 14px; }
.postcard-viewer__pull span { display: block; width: 100%; height: 100%; background: var(--postcard-pale); transform: scaleX(var(--postcard-pull-progress, 0)); transform-origin: left center; transition: transform 60ms linear; }
.postcard-viewer__pull.is-shown { opacity: 1; }

/* Mobile: full-screen sheet, stacked back */
@media (max-width: 719px) {
  .postcard-viewer__stage { padding: 0; }
  .postcard-viewer__stack, .postcard-viewer__card { height: 100vh; height: 100dvh; max-height: 100vh; max-height: 100dvh; width: 100%; }
  /* Shrunk from clamp(184px, 34dvh, 320px): the photo row no longer eats a third of the viewport
     before any booking content appears. At 375x812 and 375x667 this keeps date, guests, total and
     the continue action reachable within one short scroll, while still reading as a photo strip
     (round 1, Astra #3). */
  .postcard-viewer__card { grid-template-columns: minmax(0, 1fr); grid-template-rows: clamp(120px, 20dvh, 180px) minmax(0, 1fr); border-radius: 0; }
  .postcard-viewer__front { display: contents; }
  .postcard-viewer__back { display: block; }
  .postcard-viewer__photo { grid-column: 1; grid-row: 1; width: 100%; height: 100%; min-height: 0; aspect-ratio: auto; max-height: none; border-right: 0; border-bottom: 1px solid var(--postcard-divider); border-radius: 0; }
  .postcard-viewer__content { grid-column: 1; grid-row: 2; }
  .postcard-viewer__gallery-arrow { display: none; }
  .postcard-viewer__caption { padding: 16px 18px 14px; border-bottom: 1px dashed var(--postcard-divider); }
  .postcard-viewer__caption-row { flex-wrap: wrap; }
  .postcard-viewer__caption-actions { order: 3; width: 100%; justify-content: space-between; margin-top: 4px; }
  .postcard-viewer__share { width: 44px; padding: 0; justify-content: center; }
  .postcard-viewer__share > span { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .postcard-viewer__swipe-copy { display: inline; }
  .postcard-viewer__title { font-size: var(--fs-25); }
  .platform-booking h2 { font-size: var(--fs-31); }
  .postcard-viewer__facts { gap: 6px; margin-top: 12px; }
  .postcard-viewer__facts li { min-height: 32px; padding: 0 9px; font-size: var(--fs-13); }
  .postcard-viewer__booking-zone { padding: 10px 18px 22px; }
  .postcard-viewer__secondary { display: grid; padding: 0 18px 28px; border-top: 1px dashed var(--postcard-divider); }
  .postcard-viewer__note { padding-top: 0; }
  .postcard-viewer__note-text { font-size: 1.34rem; }
  .postcard-viewer__details { padding-top: 0; }
  .postcard-viewer__lines { grid-template-columns: minmax(0, 1fr); }
  .postcard-viewer__postal { justify-content: space-between; min-height: 82px; margin-bottom: 6px; }
  .postcard-postmark { width: 76px; height: 76px; }
  .postcard-viewer__postal .postcard-postmark { margin-right: -8px; }
  .postcard-viewer__postal-price { padding: 10px 10px 8px; }
  .postcard-viewer__stamp { width: 68px; }
  .postcard-viewer__line { grid-template-columns: 96px minmax(0, 1fr); }
  .postcard-viewer__availability { width: 100%; }
  .postcard-viewer__nav { display: none; }
  .postcard-viewer__close { top: 12px; left: 12px; min-width: 44px; height: 44px; }
  .postcard-viewer__bar { padding-inline: 12px; }
}
@media (max-width: 379px) {
  .postcard-viewer__fields { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .postcard-viewer__backdrop, .postcard-viewer__stack, .postcard-viewer__card,
  .postcard-viewer__close, .postcard-viewer__nav, .postcard-viewer__toast, .postcard-viewer__bar { transition-duration: 1ms !important; }
  .postcard-viewer__stack.nudge-fwd, .postcard-viewer__stack.nudge-back { animation: none; }
  .postcard-viewer.is-fading .postcard-viewer__stack { transition: opacity 180ms linear !important; }
  .postcard-viewer__backdrop { transition: opacity 180ms linear !important; }
  .postcard-viewer__gallery { scroll-behavior: auto; }
  .platform-booking__postcard, .platform-booking__stamp, .platform-booking__postmark { animation: none; filter: none; opacity: 1; }
  .platform-booking__postcard { transform: rotate(.2deg); }
  .platform-booking__stamp { transform: rotate(5deg); }
  .platform-booking__postmark { transform: rotate(-10deg); }
}

/* r2 worker A: new classes */
/* Pay now online / pay the operator / total, on the postcard and in the guest-details dialog. */
.payment-split { display: grid; gap: 0; margin: 16px 0 0; padding: 0; color: #141414; font-variant-numeric: tabular-nums; }
.payment-split__row { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 8px 0; border-top: 1px solid #d8d0c2; }
.payment-split__row:first-child { border-top: 0; }
/* The refund sentence is a second description of "Pay now online", wrapped onto its own line
   directly under that row's amount. */
.payment-split__row:has(.payment-split__policy) { flex-wrap: wrap; row-gap: 4px; }
.payment-split .payment-split__policy { flex: 1 0 100%; color: #4a4a4a; font-size: 13px; font-weight: 400; line-height: 1.5; white-space: normal; }
.payment-split dt { margin: 0; font-size: 16px; line-height: 1.5; font-weight: 600; }
.payment-split dt small { display: block; font-size: 13px; line-height: 1.5; font-weight: 400; color: #4a4a4a; }
.payment-split dd { margin: 0; font-size: 16px; line-height: 1.5; font-weight: 700; white-space: nowrap; }
.payment-split__total dt, .payment-split__total dd { font-size: 20px; line-height: 1.5; font-weight: 700; }

/* Demo founding-checkout preview: the notice in the guest-details dialog and its end state. */
.booking-preview-note { margin: 0 0 16px; padding: 12px 16px; border: 1px solid #d8d0c2; border-radius: 8px; background: #fffdf8; color: #141414; font-size: 16px; line-height: 1.5; }
.booking-preview-note[hidden] { display: none; }
.booking-preview-result__lead { margin: 8px 0 16px; font-size: 16px; line-height: 1.5; font-weight: 600; color: #141414; }
.booking-preview-result__next { margin: 16px 0 0; font-size: 16px; line-height: 1.5; color: #141414; max-width: 65ch; }
.booking-preview-result__back {
  min-height: 44px; padding: 8px 16px; border: 1px solid #001840; border-radius: 8px; background: #fffdf8;
  color: #001840; font: inherit; font-size: 16px; line-height: 1.5; font-weight: 600; cursor: pointer;
}
.booking-preview-result__back:focus-visible { outline: 2px solid #001840; outline-offset: 2px; }

/* r3 worker A: new classes */
/* Viewer: description, included items and meeting point shown before the booking controls. */
.postcard-viewer__essentials { display: grid; gap: 12px; margin-top: 16px; }
.postcard-viewer__essentials .postcard-viewer__about { max-width: 65ch; }
.postcard-viewer__essentials-lines { grid-template-columns: minmax(0, 1fr); }
.postcard-viewer__essentials-lines .postcard-viewer__line:last-child { border-bottom: 0; }
/* The one effective cancellation policy, beside the booking action (same text as checkout). */
.postcard-viewer__policy { max-width: 65ch; margin: 12px 0 0; color: var(--postcard-ink); font-size: 13px; line-height: 1.5; }
.postcard-viewer__policy strong { font-weight: 700; }
.postcard-viewer__group-note { margin: 8px 0 0; color: var(--postcard-ink-soft); font-size: 13px; line-height: 1.5; }
.postcard-viewer__group-note[hidden] { display: none; }
.postcard-viewer__group-note a { color: #001840; font-weight: 700; text-underline-offset: 4px; }

/* Calendar: a real ARIA grid (week rows of gridcells holding buttons) laid out like the old strip. */
.booking-calendar-dialog .postcard-viewer__date-strip[data-calendar-grid] { grid-template-columns: minmax(0, 1fr); }
.postcard-viewer__calendar-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: inherit; min-width: 0; }
.postcard-viewer__calendar-cell { display: grid; min-width: 0; }
/* Unavailable days stay focusable (aria-disabled) so the reason is read out; they look as before. */
.booking-calendar-dialog .postcard-viewer__date-strip .postcard-viewer__calendar-row .postcard-viewer__calendar-cell button[aria-disabled="true"] {
  border-color: transparent; background: transparent; box-shadow: none; cursor: default;
  color: color-mix(in srgb, var(--postcard-ink-soft) 55%, transparent);
}
.booking-calendar-dialog .postcard-viewer__date-strip .postcard-viewer__calendar-row .postcard-viewer__calendar-cell button[aria-disabled="true"] small { color: inherit; }
@media (hover: hover) {
  .booking-calendar-dialog .postcard-viewer__date-strip .postcard-viewer__calendar-row .postcard-viewer__calendar-cell button[aria-disabled="true"]:hover { border-color: transparent; background: transparent; }
}
.booking-calendar-dialog .postcard-viewer__date-strip .postcard-viewer__calendar-row .postcard-viewer__calendar-cell button.is-selected[aria-disabled="true"],
.booking-calendar-dialog .postcard-viewer__date-strip .postcard-viewer__calendar-row .postcard-viewer__calendar-cell button.is-selected[aria-disabled="true"]:hover {
  border: 2px dashed var(--postcard-ink); background: transparent; color: var(--postcard-ink); box-shadow: none;
}
.booking-calendar-dialog .postcard-viewer__date-strip .postcard-viewer__calendar-row .postcard-viewer__calendar-cell button.is-selected[aria-disabled="true"] small { color: color-mix(in srgb, var(--postcard-ink-soft) 55%, transparent); }

/* Guest details dialog: short title + activity subline, one summary, fields, provider, policy. */
.platform-booking__head { margin: 0 0 16px; }
.platform-booking__activity { margin: 0 48px 0 0; color: var(--postcard-ink-soft); font-size: 16px; line-height: 1.5; overflow-wrap: anywhere; }
.platform-booking .booking-preview-note { margin: 0; }
.platform-booking .platform-booking__summary { display: grid; gap: 4px; margin: 0; padding: 12px 16px; border: 1px solid var(--postcard-divider); border-radius: 8px; background: var(--postcard-matte); color: var(--postcard-ink); }
.platform-booking__summary p { margin: 0; font-size: 16px; line-height: 1.5; }
.platform-booking__summary-when { font-weight: 700; }
.platform-booking__summary .platform-booking__summary-refund { color: var(--postcard-ink-soft); font-size: 13px; }
.platform-booking__summary .price-breakdown-disclosure { margin-top: 4px; border-bottom: 0; }
.platform-booking__summary .price-breakdown { margin: 0 0 12px; }
.platform-booking__terms { display: grid; gap: 8px; padding: 0 0 12px; }
.platform-booking__terms[hidden] { display: none; }
.platform-booking__terms p { margin: 0; color: var(--postcard-ink-soft); font-size: 13px; line-height: 1.5; }
.platform-booking__field { display: grid; gap: 4px; min-width: 0; }
.platform-booking__field[hidden] { display: none; }
.platform-booking__hint { margin: 0; color: var(--postcard-ink-soft); font-size: 13px; line-height: 1.5; }
.platform-booking__field-error { margin: 0; color: #8b2c27; font-size: 13px; font-weight: 700; line-height: 1.5; }
.platform-booking__field-error[hidden] { display: none; }
.platform-booking input[aria-invalid="true"], .platform-booking textarea[aria-invalid="true"] { border-color: #8b2c27; }
.platform-booking__supplier { display: grid; gap: 4px; min-width: 0; }
.platform-booking__supplier[hidden] { display: none; }
.platform-booking__supplier-lead { margin: 0; color: var(--postcard-ink); font-size: 16px; line-height: 1.5; }
.platform-booking__supplier .price-breakdown-disclosure { margin-top: 0; }
.platform-booking__supplier .platform-booking__vendor-card { padding: 0 0 12px; }
.platform-booking .platform-booking__policy[hidden] { display: none; }
.platform-booking .platform-booking__policy h3 { margin: 0; color: var(--postcard-ink); font-family: var(--postcard-font-ui); font-size: 16px; font-weight: 700; line-height: 1.5; }
.platform-booking .platform-booking__policy p { margin: 0; font-size: 16px; line-height: 1.5; }
.platform-booking .platform-booking__policy label.platform-booking__consent[hidden] { display: none; }
.platform-booking .platform-booking__policy .platform-booking__field-error[hidden] { display: none; }
.platform-booking .platform-booking__policy .platform-booking__field-error { font-size: 13px; }
.platform-booking .platform-booking__policy .platform-booking__confirm-note { color: var(--postcard-ink-soft); font-size: 13px; }
.platform-booking .platform-booking__policy .platform-booking__confirm-note[hidden] { display: none; }

/* Guest guide grid shell around PostcardCard. The <article class="experience-card postcard-slot"> wrapper keeps the
 * data-* attributes app.js filters/sorts on; visually the postcard button is the card, so the shell is transparent. */
.browse-grid .experience-card.postcard-slot {
  display: block;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  overflow: visible;
  transform: none;
  transition: none;
  contain: none;
}
.browse-grid .experience-card.postcard-slot:hover,
.browse-grid .experience-card.postcard-slot:nth-child(even):hover { transform: none; box-shadow: none; }
.browse-grid .experience-card.postcard-slot[hidden] { display: none; }
.browse-grid .experience-card.postcard-slot > .postcard-card { height: 100%; }

/* Give the tilted cards breathing room in the existing grid rhythm. */
.guest-page .browse-grid { gap: 34px 22px; padding-top: 6px; }
@media (max-width: 760px) {
  .guest-page .browse-grid { gap: 26px 14px; }
}

/* No-JS fallback for direct navigation to /experiences/:slug */
.postcard-noscript { max-width: 720px; margin: 24px auto; padding: 18px 20px; border: 1px solid var(--postcard-divider, #d8d2c6); border-radius: var(--radius); background: #fbf8f3; }
.postcard-noscript h2 { margin: 0 0 8px; }
.postcard-noscript p { margin: 6px 0; }

.postcard-viewer__date-strip {
  display: block;
  max-height: 356px;
  overflow: auto;
  padding: 0 4px 2px 0;
  scroll-snap-type: y proximity;
  scrollbar-color: var(--postcard-divider) transparent;
}

.postcard-viewer__month {
  padding-bottom: 16px;
  scroll-snap-align: start;
}

.postcard-viewer__month + .postcard-viewer__month {
  border-top: 1px solid var(--postcard-divider);
}

.postcard-viewer__month h4 {
  position: sticky;
  top: 0;
  z-index: 2;
  margin: 0;
  padding: 12px 2px 8px;
  background: var(--postcard-matte);
  color: var(--postcard-ink);
  font: 750 var(--fs-16)/1.2 Inter, sans-serif;
}

.postcard-viewer__calendar-weekdays,
.postcard-viewer__month-weeks {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px;
  min-width: 332px;
}

.postcard-viewer__calendar-weekdays {
  margin-bottom: 5px;
}

.postcard-viewer__calendar-weekdays span {
  min-width: 44px;
  text-align: center;
  color: var(--postcard-ink-soft);
  font-size: var(--fs-13);
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.postcard-viewer__calendar-spacer {
  min-height: 68px;
  border-radius: var(--postcard-radius);
  background: color-mix(in srgb, var(--postcard-paper) 30%, transparent);
}

.postcard-viewer__month-weeks button {
  position: relative;
  isolation: isolate;
  min-width: 0;
  min-height: 68px;
  padding: 6px 1px 5px;
  display: grid;
  grid-template-rows: auto 1fr auto;
  place-items: center;
  gap: 2px;
  border: 1px solid var(--postcard-divider);
  border-radius: var(--postcard-radius);
  background: var(--postcard-paper);
  color: var(--postcard-ink);
  box-shadow: 0 1px 0 rgba(44, 35, 27, .05);
  cursor: pointer;
  font: inherit;
  transition: border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;
}

.postcard-viewer__month-weeks button:hover:not(:disabled) {
  border-color: var(--postcard-ink-soft);
  transform: translateY(-1px);
}

.postcard-viewer__month-weeks button span {
  color: var(--postcard-ink-soft);
  font-size: var(--fs-13);
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.postcard-viewer__month-weeks button strong {
  align-self: center;
  color: inherit;
  font-family: var(--postcard-serif);
  font-size: var(--fs-20);
  line-height: 1;
}

.postcard-viewer__month-weeks button small {
  max-width: 100%;
  overflow: hidden;
  color: inherit;
  font-size: var(--fs-13);
  font-weight: 700;
  line-height: 1.05;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.postcard-viewer__month-weeks button s {
  display: block;
  margin-bottom: 1px;
  color: var(--postcard-ink-soft);
  font-size: var(--fs-13);
  font-weight: 600;
  line-height: 1;
}

.postcard-viewer__month-weeks button:disabled {
  border-color: transparent;
  background: color-mix(in srgb, var(--postcard-divider) 34%, var(--postcard-paper));
  color: var(--postcard-ink-soft);
  box-shadow: none;
  cursor: not-allowed;
  opacity: .72;
}

.postcard-viewer__month-weeks button:disabled strong {
  opacity: .72;
}

.postcard-viewer__month-weeks button:disabled small {
  font-weight: 650;
}

.postcard-viewer__month-weeks button.is-selected {
  border-color: var(--postcard-forest);
  background: var(--postcard-forest);
  color: var(--postcard-pale);
  box-shadow: 0 0 0 2px var(--postcard-matte), 0 0 0 4px var(--postcard-forest), var(--postcard-shadow-lift);
  transform: translateY(-1px);
}

.postcard-viewer__month-weeks button.is-selected::after {
  content: "✓";
  position: absolute;
  top: 3px;
  right: 4px;
  font-size: var(--fs-13);
  font-weight: 900;
}

.postcard-viewer__month-weeks button.is-selected span {
  color: inherit;
}

.postcard-viewer__more-dates {
  width: 100%;
  min-height: 44px;
  border: 1px solid var(--postcard-forest);
  border-radius: var(--postcard-radius);
  background: var(--postcard-paper);
  color: var(--postcard-forest);
  font-weight: 750;
}

.platform-booking [data-booking-confirmation] dl {
  display: grid;
  gap: 8px;
  margin: 18px 0;
}

.platform-booking [data-booking-confirmation] dl > div {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--postcard-divider);
}

.platform-booking [data-booking-confirmation] dt { color: var(--postcard-ink-soft); }
.platform-booking [data-booking-confirmation] dd { margin: 0; text-align: right; font-weight: 700; }

.platform-booking [data-booking-confirmation] {
  margin: -28px;
}

.platform-booking__postcard {
  overflow: hidden;
  border-radius: var(--postcard-radius);
  background: var(--postcard-paper);
}

.platform-booking__postcard::before {
  content: "";
  display: block;
  height: 8px;
  background: repeating-linear-gradient(135deg, var(--postcard-red) 0, var(--postcard-red) 13px, var(--postcard-paper) 13px, var(--postcard-paper) 24px, #376b82 24px, #376b82 37px, var(--postcard-paper) 37px, var(--postcard-paper) 48px);
}

.platform-booking__photo {
  display: block;
  width: 100%;
  height: 220px;
  object-fit: cover;
}

.platform-booking__postcard-content {
  padding: 26px 28px 30px;
}

.platform-booking__postcard .platform-booking__hello {
  margin: 16px 0 0;
  color: var(--postcard-red);
  font: 700 clamp(2.2rem, 9vw, 3.6rem)/.9 "Postcard Script", var(--postcard-serif);
  transform: rotate(-1deg);
  transform-origin: left;
}

.platform-booking__ref {
  margin: 12px 0 5px;
  color: var(--postcard-ink-soft);
  font-size: var(--fs-13);
  font-weight: 850;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.platform-booking__postcard h2 {
  margin: 0 34px 7px 0;
}

.platform-booking__when {
  margin: 0;
  color: var(--postcard-ink-soft);
  line-height: 1.45;
}

.platform-booking__postcard .price-breakdown {
  margin-block: 22px;
}

.platform-booking [data-booking-confirmation] .price-breakdown > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 16px;
  padding: 7px 0;
  border-bottom: 0;
}

.platform-booking__payment {
  margin: 0;
  padding: 15px 16px;
  border-left: 4px solid var(--postcard-red);
  background: var(--postcard-matte);
  line-height: 1.5;
}

.platform-booking__vendor {
  display: grid;
  gap: 4px;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px dashed var(--postcard-divider);
}

.platform-booking__vendor span {
  color: var(--postcard-ink-soft);
  font-size: var(--fs-13);
  font-weight: 850;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.platform-booking__vendor strong {
  font-family: var(--postcard-serif);
  font-size: var(--fs-20);
}

.platform-booking__vendor a {
  width: fit-content;
  color: #376b82;
  font-weight: 750;
}

@media (max-width: 420px) {
  .postcard-viewer__availability { padding-inline: 12px; }
  .postcard-viewer__calendar-weekdays,
  .postcard-viewer__month-weeks { gap: 3px; }
  .postcard-viewer__calendar-spacer,
  .postcard-viewer__month-weeks button { min-height: 64px; }
  .postcard-viewer__month-weeks button strong { font-size: var(--fs-20); }
  .platform-booking [data-booking-confirmation] { margin: -28px; }
  .platform-booking__photo { height: 180px; }
  .platform-booking__postcard-content { padding: 22px 20px 26px; }
  .platform-booking__actions a { flex: 1 1 100%; text-align: center; }
}

/* Dedicated date picker: one calm month in a protected overlay, with no calendar
   scrolling inside the postcard. The interaction follows the familiar travel-
   booking pattern while keeping PostcardPerks' own paper, navy and postal red. */
.postcard-viewer__date-trigger {
  width: 100%;
  min-height: 70px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(10ch, auto);
  gap: 3px 14px;
  padding: 12px 15px;
  border: 1px solid var(--postcard-divider);
  border-radius: var(--postcard-radius);
  background: var(--postcard-matte);
  color: var(--postcard-ink);
  text-align: left;
  cursor: pointer;
}
.postcard-viewer__date-trigger span { grid-column: 1; color: var(--postcard-ink-soft); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.postcard-viewer__date-trigger strong { grid-column: 1; font-size: var(--fs-16); }
.postcard-viewer__date-trigger small { grid-column: 2; grid-row: 1 / 3; align-self: center; max-width: 18ch; color: var(--postcard-ink-soft); font-size: var(--fs-13); line-height: 1.5; text-align: right; }
.postcard-viewer__date-trigger:hover { border-color: var(--postcard-ink); }

.booking-calendar-dialog {
  width: min(650px, calc(100vw - 32px));
  height: min(720px, calc(100dvh - 32px));
  max-width: none;
  max-height: none;
  padding: 0;
  border: 0;
  border-radius: var(--postcard-radius);
  background: var(--postcard-paper);
  color: var(--postcard-ink);
  box-shadow: var(--postcard-shadow-viewer); /* documented modal-elevation exception; see DESIGN.md */
  overflow: hidden;
}
.booking-calendar-dialog::backdrop { background: rgba(0, 15, 46, .68); }
.booking-calendar-dialog__shell { height: 100%; display: grid; grid-template-rows: auto auto auto minmax(0, 1fr) auto; }
.booking-calendar-dialog header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 24px 26px 18px; border-bottom: 1px solid var(--postcard-divider); }
.booking-calendar-dialog header h3 { margin: 0; color: var(--postcard-ink); font: 700 var(--fs-25)/1 var(--postcard-serif); }
.booking-calendar-dialog header p { margin: 5px 0 0; color: var(--postcard-ink-soft); font-size: var(--fs-13); }
.booking-calendar-dialog [data-close-calendar] { width: 44px; height: 44px; border: 0; border-radius: 50%; background: transparent; color: var(--postcard-ink); font-size: var(--fs-25); cursor: pointer; }
.booking-calendar-dialog [data-close-calendar]:hover { background: color-mix(in srgb, var(--postcard-divider) 40%, transparent); }
.booking-calendar-dialog__toolbar { display: grid; grid-template-columns: 44px 1fr 44px; align-items: center; gap: 12px; padding: 16px 26px 10px; }
.booking-calendar-dialog__toolbar strong { text-align: center; font-size: var(--fs-16); }
.booking-calendar-dialog__toolbar button { width: 44px; height: 44px; border: 1px solid var(--postcard-divider); border-radius: 50%; background: var(--postcard-matte); color: var(--postcard-ink); cursor: pointer; }
.booking-calendar-dialog__toolbar button:disabled { opacity: .3; cursor: not-allowed; }
.booking-calendar-dialog .postcard-viewer__calendar-weekdays { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; margin: 0; padding: 0 26px 8px; min-width: 0; }
.booking-calendar-dialog .postcard-viewer__calendar-weekdays span { min-width: 0; padding: 0; color: var(--postcard-ink-soft); font-size: var(--fs-13); }
.booking-calendar-dialog .postcard-viewer__date-strip { align-content: start; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; max-height: none; min-width: 0; overflow: hidden; padding: 0 26px 18px; scroll-snap-type: none; }
.booking-calendar-dialog .postcard-viewer__calendar-spacer { min-height: 64px; background: transparent; }
.booking-calendar-dialog .postcard-viewer__date-strip button {
  position: relative;
  min-width: 0;
  min-height: 64px;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 3px;
  padding: 6px 2px;
  border: 1px solid transparent;
  border-radius: var(--postcard-radius);
  background: transparent;
  color: var(--postcard-ink);
  box-shadow: none;
  cursor: pointer;
}
@media (hover: hover) {
  .booking-calendar-dialog .postcard-viewer__date-strip button:hover:not(:disabled):not(.is-selected) { border-color: var(--postcard-ink); background: var(--postcard-matte); transform: none; }
}
.booking-calendar-dialog .postcard-viewer__date-strip button strong { font: 750 var(--fs-16)/1 var(--postcard-font-ui); }
.booking-calendar-dialog .postcard-viewer__date-strip button small { max-width: 100%; overflow: hidden; color: var(--postcard-ink-soft); font-size: var(--fs-13); font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.booking-calendar-dialog .postcard-viewer__date-strip button s { display: none; }
.booking-calendar-dialog .postcard-viewer__date-strip button:disabled { border-color: transparent; background: transparent; color: color-mix(in srgb, var(--postcard-ink-soft) 55%, transparent); opacity: 1; }
.booking-calendar-dialog .postcard-viewer__date-strip button:disabled small { color: inherit; }
.booking-calendar-dialog .postcard-viewer__date-strip button.is-selected,
.booking-calendar-dialog .postcard-viewer__date-strip button.is-selected:hover { border-color: var(--postcard-ink); background: var(--postcard-ink); color: var(--postcard-pale); box-shadow: var(--postcard-shadow-lift); transform: none; }
.booking-calendar-dialog .postcard-viewer__date-strip button.is-selected small { color: var(--postcard-pale); }
.booking-calendar-dialog .postcard-viewer__date-strip button.is-selected::after { content: none; }
/* The guest's requested-but-unavailable date inside the calendar popup: never swapped away
   automatically, but drawn hollow/dashed so it is never mistaken for a normal bookable choice. */
.booking-calendar-dialog .postcard-viewer__date-strip button.is-selected:disabled,
.booking-calendar-dialog .postcard-viewer__date-strip button.is-selected:disabled:hover {
  border: 2px dashed var(--postcard-ink);
  background: transparent;
  color: var(--postcard-ink);
  box-shadow: none;
  opacity: 1;
}
.booking-calendar-dialog .postcard-viewer__date-strip button.is-selected:disabled small { color: color-mix(in srgb, var(--postcard-ink-soft) 55%, transparent); }
.booking-calendar-dialog footer { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 16px 26px calc(16px + env(safe-area-inset-bottom)); border-top: 1px solid var(--postcard-divider); background: var(--postcard-matte); }
.booking-calendar-dialog footer div { display: grid; gap: 3px; }
.booking-calendar-dialog footer span { color: var(--postcard-ink-soft); font-size: var(--fs-13); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.booking-calendar-dialog footer button { min-height: 46px; padding: 0 20px; border: 0; border-radius: var(--postcard-radius); background: var(--postcard-ink); color: #fff; font-weight: 800; cursor: pointer; }
.booking-calendar-dialog footer button:disabled { opacity: .4; cursor: not-allowed; }

@media (max-width: 620px) {
  .booking-calendar-dialog { width: 100vw; height: 100dvh; border-radius: 0; }
  .booking-calendar-dialog header { padding: 18px 18px 14px; }
  .booking-calendar-dialog__toolbar { padding: 12px 18px 8px; }
  .booking-calendar-dialog .postcard-viewer__calendar-weekdays { gap: 2px; padding: 0 14px 7px; }
  .booking-calendar-dialog .postcard-viewer__date-strip { gap: 2px; padding: 0 14px 12px; }
  .booking-calendar-dialog .postcard-viewer__calendar-spacer,
  .booking-calendar-dialog .postcard-viewer__date-strip button { min-height: 58px; }
  .booking-calendar-dialog footer { padding: 13px 16px calc(13px + env(safe-area-inset-bottom)); }
  .postcard-viewer__date-trigger small { display: none; }
}

/* Browse-first marketplace and vendor-only map. Loaded last in guest-bundle.css. */
.guest-page .browse-all {
  /* Same container formula as the header, footer, and the rest of the guide (--guest-max,
     defined in postcard.css's .guest-page rule) instead of its own wider, differently-capped
     width. The two formulas produced different left edges at desktop widths -- the header and
     footer sat at x=100 on a 1440px viewport while the grid sat at x=32 -- so the page read as
     slightly unaligned (round 2, Opus #8). */
  width: min(100% - 48px, var(--guest-max));
  margin: 0 auto;
  /* Bottom padding is trimmed to 0 here: the 64px gap above the footer comes from the footer's
     own margin-top below, so the two don't stack into the ~120px gap reviewers flagged. */
  padding: 96px 0 0;
}
.guest-page .browse-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 32px;
  margin: 0 0 32px;
}
.guest-page .browse-heading-text { min-width: 0; }
.guide-kicker {
  margin: 0 0 4px;
  color: var(--postcard-blue);
  font-family: var(--postcard-font-ui);
  font-size: var(--fs-13);
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
/* The guide H1 and the viewer title use the display face (DESIGN.md: "Where the guest guide uses
   the display face"), the same Rokkitt slab as the partner pages, so a partner who clicks through
   to the guide sees the same product. Card titles and controls stay in Inter. */
.guest-page .browse-heading h1 {
  margin: 0;
  color: var(--text);
  font-family: var(--display);
  font-size: var(--fs-39);
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.15;
}
.guest-page .postcard-viewer__title { font-family: var(--display); font-weight: 700; letter-spacing: -.01em; }
/* Compact guest orientation: what a perk is and its price basis, not a marketing hero
   (the rack still owns the first viewport). Max 65ch per the body-copy house rule. */
.guide-orient {
  max-width: 65ch;
  margin: 8px 0 32px;
  color: var(--postcard-ink-soft, #566074);
  font-size: var(--fs-16);
  line-height: 1.5;
}
/* Secondary outline style everywhere: paper fill, navy border/text. The navy "Search" action is
   the only filled primary button in view on desktop, and an opaque paper pill reads reliably at
   any contrast against photos or map tiles on mobile (round 1: the previous dark-fill + ::before
   scrim combination washed the button out instead of reading as a solid control). */
.guest-page .map-view-toggle {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 12px 24px;
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  background: var(--postcard-paper);
  color: var(--accent);
  font: inherit;
  font-size: var(--fs-13);
  font-weight: 800;
  cursor: pointer;
  box-shadow: var(--shadow);
  transition: background-color 180ms ease-out, box-shadow 180ms ease-out, transform 180ms ease-out;
}
.guest-page .map-view-toggle:hover { background: var(--postcard-cream); box-shadow: var(--shadow-hover); transform: translateY(-1px); }
.guest-page .map-view-toggle:focus-visible { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }
.guest-page .map-view-toggle .icon { width: 20px; height: 20px; }
.guest-page .map-view-toggle__list { display: none; }
.guest-page .map-view-toggle[aria-pressed="true"] .map-view-toggle__map { display: none; }
.guest-page .map-view-toggle[aria-pressed="true"] .map-view-toggle__list { display: inline-flex; }

.guest-page .marketplace-layout,
.guest-page .marketplace-results { min-width: 0; }
.guest-page .browse-grid[data-view="grid"] {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 32px 16px;
  padding: 0;
}
.guest-page .browse-grid[data-view="grid"] .postcard-card { transition: transform 180ms ease-out, box-shadow 180ms ease-out; }
.guest-page .browse-grid[data-view="grid"] .postcard-card:hover,
.guest-page .browse-grid[data-view="grid"] .postcard-card:focus-visible { transform: translateY(-2px); }
.guest-page .browse-grid[data-view="grid"] .postcard-card__photo { border-radius: var(--radius); }
/* Card rhythm (round 5, Opus #9): one 8px gap between title, operator and facts (the meta column's
   flex gap, so no per-item margins), then 12px (that gap plus 4px of row padding) before the
   bottom-aligned price row. Nothing reserves empty lines any more: a one-line title or operator
   name no longer leaves a blank band, and the price rows still line up across each row of cards
   because the row is pushed to the bottom of the stretched card (below). */
.guest-page .browse-grid[data-view="grid"] .postcard-card__meta { gap: var(--sp-8, 8px); padding: 12px 0 0; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__title { min-height: 0; color: var(--text); font-size: var(--fs-16); line-height: 1.5; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__caption {
  /* Two lines instead of one (round 1, Opus #12): "From [operator]" truncated to one line cut
     off longer operator names (e.g. "From Three Sisters Guidi…"). */
  display: -webkit-box;
  margin: 0;
  overflow: hidden;
  min-height: 0;
  color: #59544b;
  font-family: var(--postcard-font-ui);
  font-size: var(--fs-13);
  line-height: 1.5;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
/* The facts row may wrap (it ends with the inline Demo chip, which must never be ellipsized away). */
.guest-page .browse-grid[data-view="grid"] .postcard-card__facts { margin: 0; overflow: visible; color: #59544b; font-size: var(--fs-13); line-height: 1.5; text-overflow: clip; white-space: normal; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__facts .postcard-card__dot { margin: 0 var(--sp-4, 4px); }
.guest-page .browse-grid[data-view="grid"] .postcard-card__demo { line-height: 1.5; vertical-align: baseline; }
.guest-page .browse-grid[data-view="grid"] .card-availability { margin: 0; }
/* Grid view still hides this in postcard.css; show a small visible cue instead of none at all
   (round 3, item 11 / Sonnet R2), reusing the row's existing flex/space-between so it sits at
   the far end next to the price, the same place it renders outside grid view. */
.guest-page .browse-grid[data-view="grid"] .postcard-card__open { display: inline-flex; flex: 0 0 auto; font-size: var(--fs-13); }
/* Bottom-aligned meta (round 4, Opus #5): the card already stretches to its grid row's height, so
   making the card, its matte and its meta a flex column and pushing the price row down with
   margin-top:auto lines the price rows up across each row of cards whatever the title length. */
.guest-page .browse-grid[data-view="grid"] .postcard-card { display: flex; flex-direction: column; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__matte { display: flex; flex: 1 1 auto; flex-direction: column; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__meta { display: flex; flex: 1 1 auto; flex-direction: column; }
.guest-page .browse-grid[data-view="grid"] .postcard-card__row { margin-top: auto; padding-top: var(--sp-4, 4px); }
@media (max-width: 480px) {
  /* Two-up phone cards: the whole card is the link (its accessible name ends "Open details"), so the
     visible "Open postcard" cue is dropped here and the price reads "$70 $59 / guest" on one line. */
  .guest-page .browse-grid[data-view="grid"] .postcard-card__open { display: none; }
  .guest-page .browse-grid[data-view="grid"] .postcard-price { flex-wrap: nowrap; white-space: nowrap; }
}
@media (max-width: 360px) {
  .guest-page .browse-grid[data-view="grid"] .postcard-price { gap: var(--sp-4, 4px); }
}

/* The guest footer (including its demo disclosure row) has one rule set, in postcard.css. */

/* A fully opaque paper background once the mobile header condenses on scroll, instead of the
   translucent/blurred backdrop that lets card text show through behind it. */
@media (max-width: 760px) {
  .guest-page .market-header.is-condensed { background: #f7f3e9; backdrop-filter: none; }
}

/* The activity <select> itself has outline:0 (relying only on the parent label's :focus-within
   ring), which is easy to miss. Give the control its own explicit focus style too, in navy
   (the action/focus accent) rather than the provenance blue used elsewhere on the guide. */
.guest-page .market-activity-field select:focus-visible,
.guest-page .mobile-activity-field select:focus-visible { outline: 2px solid var(--postcard-forest); outline-offset: 2px; }

.guest-page .browse-all.is-map-view .marketplace-layout {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(360px, 2fr);
  align-items: start;
  gap: 32px;
}
.guest-page .browse-all.is-map-view .browse-grid[data-view="grid"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.guest-page .vendor-map {
  position: sticky;
  top: 96px;
  min-width: 0;
  height: calc(100vh - 128px);
  min-height: 560px;
  overflow: hidden;
  border: 1px solid #d6d6d0;
  border-radius: var(--radius);
  background: #edf0e8;
  box-shadow: var(--shadow);
}
.guest-page .vendor-map__canvas { position: relative; z-index: 1; width: 100%; height: 100%; background: #edf0e8; }
.guest-page .vendor-map__canvas.leaflet-container { font-family: var(--postcard-font-ui); }
.guest-page .vendor-map__canvas .leaflet-tile { filter: saturate(.72) contrast(.96); }
.guest-page .vendor-map__canvas .leaflet-control-zoom {
  display: grid;
  gap: 4px;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.guest-page .vendor-map__canvas .leaflet-control-zoom a {
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: var(--radius);
  background: #fff;
  color: var(--text);
  font-size: var(--fs-20);
  line-height: 44px;
  box-shadow: var(--shadow);
}
.guest-page .vendor-map__canvas .leaflet-control-zoom a:hover { background: #f4f4f0; }
.guest-page .vendor-map__canvas .leaflet-control-zoom a:focus-visible { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }
.guest-page .vendor-map__canvas .leaflet-control-attribution { padding: 4px 8px; background: rgba(255,255,255,.92); color: #59544b; font-size: var(--fs-13); }
.guest-page .vendor-map__canvas .leaflet-control-attribution a { color: var(--postcard-blue); }
.guest-page .vendor-map-marker { border: 0; background: transparent; }
.guest-page .vendor-map-marker__pin {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 2px solid #fff;
  border-radius: var(--radius);
  background: #fff;
  box-shadow: var(--shadow);
  transition: box-shadow 180ms ease-out, transform 180ms ease-out;
}
.guest-page .vendor-map-marker__pin img { display: block; width: 32px; height: auto; }
/* Numbered pin for operators too close to tell apart at the current zoom (app.js renderVendorPins). */
.guest-page .vendor-map-marker__pin { position: relative; }
.guest-page .vendor-map-marker__count {
  position: absolute;
  top: -8px;
  right: -8px;
  display: grid;
  place-items: center;
  min-width: 24px;
  height: 24px;
  padding: 0 4px;
  box-sizing: border-box;
  border: 2px solid #fff;
  border-radius: var(--radius);
  background: #001840;
  color: #fff;
  font-size: var(--fs-13);
  font-weight: 800;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.guest-page .vendor-map-marker:hover .vendor-map-marker__pin,
.guest-page .vendor-map-marker.is-selected .vendor-map-marker__pin { box-shadow: var(--shadow-hover); transform: translateY(-2px); }
.guest-page .vendor-map-marker:focus-visible { outline: 0; }
.guest-page .vendor-map-marker:focus-visible .vendor-map-marker__pin { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }
.guest-page .vendor-map__notice {
  position: absolute;
  z-index: 800;
  top: 16px;
  right: 16px;
  left: 64px;
  display: grid;
  gap: 4px;
  padding: 12px 16px;
  border-radius: var(--radius);
  background: rgba(255,255,255,.96);
  color: var(--text);
  box-shadow: var(--shadow);
}
.guest-page .vendor-map__notice strong { font-size: var(--fs-16); line-height: 1.5; }
.guest-page .vendor-map__notice span { color: #59544b; font-size: var(--fs-13); line-height: 1.5; }
.guest-page .vendor-map__card {
  position: absolute;
  z-index: 900;
  right: 16px;
  bottom: 16px;
  left: 16px;
  padding: 24px;
  border-radius: var(--radius);
  background: #fff;
  color: var(--text);
  box-shadow: var(--shadow-hover);
}
.guest-page .vendor-map__card p { margin: 0 0 4px; color: #59544b; font-size: var(--fs-13); font-weight: 800; text-transform: uppercase; }
.guest-page .vendor-map__card h2 { margin: 0; font-family: var(--postcard-font-ui); font-size: var(--fs-20); line-height: 1.5; }
.guest-page .vendor-map__card address { margin-top: 4px; color: #59544b; font-size: var(--fs-13); font-style: normal; line-height: 1.5; }
.guest-page .vendor-map__card button {
  min-height: 44px;
  margin-top: 16px;
  padding: 12px 16px;
  border: 1px solid var(--text);
  border-radius: var(--radius);
  background: #fff;
  color: var(--text);
  font: inherit;
  font-size: var(--fs-13);
  font-weight: 800;
  cursor: pointer;
  transition: background-color 180ms ease-out, color 180ms ease-out;
}
.guest-page .vendor-map__card button:hover { background: var(--text); color: #fff; }
.guest-page .vendor-map__card button:focus-visible { outline: 2px solid var(--postcard-blue); outline-offset: 2px; }

@media (max-width: 1100px) {
  .guest-page .browse-grid[data-view="grid"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .guest-page .browse-all.is-map-view .marketplace-layout { grid-template-columns: minmax(0, 1fr) minmax(360px, 1fr); gap: 24px; }
}

@media (max-width: 760px) {
  .guest-page .browse-all { width: min(calc(100% - 32px), 1440px); padding: 64px 0 0; }
  .guest-page .browse-heading { display: block; margin-bottom: 24px; }
  .guest-page .browse-heading h1 { font-size: var(--fs-31); }
  /* Clearance for the floating map pill now sits below the guest footer (postcard.css footer block). */
  .guest-page .browse-grid[data-view="grid"] { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 12px; }
  .guest-page .map-view-toggle {
    position: fixed;
    z-index: 30;
    right: auto;
    bottom: calc(24px + env(safe-area-inset-bottom));
    left: 50%;
    transform: translateX(-50%);
    /* House hover recipe (DESIGN.md: floating buttons use only the card and hover shadows); the
       opaque paper face and navy border carry the pill over photos and map tiles. */
    box-shadow: var(--shadow-hover);
    transition: background-color 180ms ease-out, box-shadow 180ms ease-out, transform 200ms ease-out, opacity 200ms ease-out;
  }
  .guest-page .map-view-toggle:hover { transform: translateX(-50%) translateY(-1px); }
  /* The pill steps aside while the guest scrolls down the cards (app.js), so it never sits over a
     price they are reading, and returns as soon as they scroll back up, reach the top, or focus it.
     The end of the page also keeps clearance below the footer for the last row. */
  .guest-page .map-view-toggle.is-scroll-hidden { opacity: 0; pointer-events: none; transform: translateX(-50%) translateY(16px); }
  .guest-page .browse-all.is-map-view .marketplace-layout { display: block; }
  .guest-page .browse-all.is-map-view { padding-top: 64px; }
  .guest-page .browse-all.is-map-view .browse-heading { margin: 0; }
  /* Map view is a full-height tool: the catalogue kicker and orientation paragraph (added after
     the map height was tuned) pushed ~150px of the map below the fold, where the Canmore cluster
     ended up clipped under the bottom edge (round 4, Opus #10). The map toggle stays, it is fixed. */
  .guest-page .browse-all.is-map-view .browse-heading-text,
  .guest-page .browse-all.is-map-view .guide-orient { display: none; }
  .guest-page .browse-all.is-map-view .marketplace-results { display: none; }
  .guest-page .vendor-map { position: relative; top: auto; height: calc(100dvh - 192px); min-height: 480px; }
  .guest-page.has-vendor-map .guest-footer { display: none; }
}

/* Partial-payment checkout: one disclosed split before the guest enters Stripe. */
.guest-page .platform-booking__partial[hidden] { display: none; }
.guest-page .platform-booking__partial {
  display: grid;
  gap: 24px;
  min-width: 0;
  padding: 24px;
  border: 1px solid var(--postcard-divider);
  border-radius: var(--radius);
  background: var(--postcard-matte);
  color: var(--text);
}
.guest-page .platform-booking__partial-copy { display: grid; gap: 8px; min-width: 0; }
.guest-page .platform-booking__partial h3 {
  margin: 0;
  color: var(--text);
  font-family: var(--postcard-font-ui);
  font-size: var(--fs-20);
  line-height: 1.5;
}
.guest-page .platform-booking__partial p { max-width: 65ch; margin: 0; color: var(--postcard-ink-soft); font-size: var(--fs-16); line-height: 1.5; overflow-wrap: anywhere; }
.guest-page .platform-booking__split { display: grid; margin: 0; border-block: 1px solid var(--postcard-divider); font-variant-numeric: tabular-nums; }
.guest-page .platform-booking__split > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 16px; padding: 12px 0; }
.guest-page .platform-booking__split > div + div { border-top: 1px solid var(--postcard-divider); }
.guest-page .platform-booking__split dt,
.guest-page .platform-booking__split dd { min-width: 0; margin: 0; }
.guest-page .platform-booking__split dt { font-size: var(--fs-13); font-weight: 700; line-height: 1.5; overflow-wrap: anywhere; }
.guest-page .platform-booking__split dd { color: var(--text); font-size: var(--fs-16); font-weight: 800; line-height: 1.5; text-align: right; white-space: nowrap; }
.guest-page .platform-booking__vendor-card,
.guest-page .platform-booking__policy { display: grid; gap: 8px; min-width: 0; }
.guest-page .platform-booking__vendor-card > strong { color: var(--text); font-size: var(--fs-16); line-height: 1.5; overflow-wrap: anywhere; }
.guest-page .platform-booking__vendor-card address { color: var(--postcard-ink-soft); font-size: var(--fs-13); font-style: normal; line-height: 1.5; overflow-wrap: anywhere; }
.guest-page .platform-booking__vendor-card [data-vendor-contact] { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.guest-page .platform-booking__disclosure { padding: 12px 16px; border-left: 4px solid var(--postcard-blue); background: #fff; color: var(--text); font-size: var(--fs-13); }
.guest-page .platform-booking__vendor-card a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: #001840;
  font-size: var(--fs-13);
  font-weight: 800;
  text-underline-offset: 4px;
  overflow-wrap: anywhere;
}
.guest-page .platform-booking__vendor-card a:focus-visible { outline: 2px solid #001840; outline-offset: 2px; border-radius: var(--radius); }
.guest-page .platform-booking__policy { padding-top: 24px; border-top: 1px dashed var(--postcard-divider); }
.guest-page .platform-booking__policy [data-payment-policy] { color: var(--text); white-space: pre-line; }
.guest-page .platform-booking label.platform-booking__consent {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: start;
  gap: 8px;
  min-height: 44px;
  padding: 12px;
  border: 1px solid #8b877e;
  border-radius: var(--radius);
  background: #fff;
  color: var(--text);
  cursor: pointer;
  transition: border-color 180ms ease-out, box-shadow 180ms ease-out;
}
.guest-page .platform-booking__consent:focus-within { border-color: #001840; box-shadow: var(--shadow); }
.guest-page .platform-booking__consent input {
  justify-self: center;
  width: 20px;
  min-height: 20px;
  margin: 0;
  accent-color: #001840;
}
.guest-page .platform-booking__consent > span { color: var(--text); font-size: var(--fs-16); font-weight: 700; line-height: 1.5; }
.guest-page .platform-booking__consent > small { grid-column: 2; min-height: 20px; color: var(--postcard-red); font-size: var(--fs-13); font-weight: 700; line-height: 1.5; }
.guest-page .platform-booking__consent input:focus-visible { outline: 2px solid #001840; outline-offset: 2px; }
/* "I don't have a local number": the whole label row is the tap target, at least 44px tall. */
.guest-page .platform-booking label.platform-booking__check {
  box-sizing: border-box;
  min-height: 44px;
  padding: var(--sp-8, 8px) 0;
  gap: var(--sp-12, 12px);
  cursor: pointer;
}
.guest-page .platform-booking__check input { flex: 0 0 auto; margin: 0; }
.guest-page .platform-booking__check input:focus-visible { outline: 2px solid #001840; outline-offset: 2px; }
.guest-page .platform-booking__checkout-note { padding-top: 16px; border-top: 1px dashed var(--postcard-divider); }
.guest-page .platform-booking__close { width: 44px; height: 44px; border-radius: var(--radius); transition: background-color 180ms ease-out; }
.guest-page .platform-booking__close:focus-visible { outline: 2px solid #001840; outline-offset: 2px; }
.guest-page .platform-booking__submit-bar .postcard-viewer__book { min-height: 44px; border-radius: var(--radius); white-space: normal; transition: background-color 180ms ease-out, box-shadow 180ms ease-out, opacity 180ms ease-out; }
.guest-page .platform-booking__submit-bar .postcard-viewer__book:focus-visible { outline: 2px solid #001840; outline-offset: 2px; }
.guest-page .platform-booking__submit-bar .postcard-viewer__book[aria-busy="true"] { cursor: wait; opacity: .72; }

@media (max-width: 480px) {
  .guest-page .platform-booking__partial { gap: 16px; padding: 16px; }
  .guest-page .platform-booking__policy { padding-top: 16px; }
  .guest-page .platform-booking__split > div { gap: 8px; }
}

/* Paid-booking change requests: keep the confirmed booking visible while the vendor reviews. */
.booking-status__request-summary {
  margin-top: 24px;
  scroll-margin-top: 24px;
  border-radius: var(--radius);
  overflow-wrap: anywhere;
  animation: booking-request-arrive 180ms ease-out both;
}
.booking-status__request { border-radius: var(--radius); }
.booking-status__request-summary:focus { outline: 2px solid #001840; outline-offset: 2px; }
.booking-status__request-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.booking-status__request-trigger {
  min-width: 0;
  min-height: 44px;
  padding: 12px 16px;
  border: 1px solid #001840;
  border-radius: var(--radius);
  background: #fffdf7;
  color: #001840;
  font: inherit;
  font-size: var(--fs-13);
  font-weight: 800;
  line-height: 1.5;
  cursor: pointer;
  overflow-wrap: anywhere;
  transition: background-color 180ms ease-out, box-shadow 180ms ease-out, transform 180ms ease-out, opacity 180ms ease-out;
}
.booking-status__request-trigger:hover:not(:disabled) {
  background: #f4eee3;
  box-shadow: var(--shadow-hover);
  transform: translateY(-1px);
}
.booking-status__request-trigger:focus-visible,
.booking-status__cancel-dialog button:focus-visible,
.booking-status__cancel-dialog input:focus-visible,
.booking-status__cancel-dialog textarea:focus-visible {
  outline: 2px solid #001840;
  outline-offset: 2px;
}
.booking-status__request-trigger:disabled { cursor: not-allowed; opacity: .64; }
.booking-status__cancel-dialog {
  max-height: calc(100dvh - 32px);
  overflow: auto;
  border-radius: var(--radius);
  box-shadow: var(--shadow-hover);
}
.booking-status__cancel-dialog form { gap: 16px; padding: 24px; }
.booking-status__request-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  min-width: 0;
}
.booking-status__request-fields label { min-width: 0; }
.booking-status__request-fields input {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  box-sizing: border-box;
  padding: 8px 12px;
  border: 1px solid #8b877e;
  border-radius: var(--radius);
  background: #fff;
  color: var(--text);
  font: inherit;
  font-size: var(--fs-16);
}
.booking-status__cancel-dialog textarea { border-radius: var(--radius); font-size: var(--fs-16); overflow-wrap: anywhere; }
.booking-status__cancel-dialog label > span { font-size: var(--fs-13); line-height: 1.5; }
.booking-status__request-policy {
  display: grid;
  gap: 8px;
  min-width: 0;
  padding-block: 16px;
  border-block: 1px dashed #d9cdbb;
}
.booking-status__request-policy strong { font-size: var(--fs-16); line-height: 1.5; }
.booking-status__request-policy p { color: var(--text); white-space: pre-line; overflow-wrap: anywhere; }
.booking-status__cancel-dialog label.booking-status__request-consent {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: start;
  gap: 8px;
  min-height: 44px;
  padding: 12px;
  border: 1px solid #8b877e;
  border-radius: var(--radius);
  background: #fff;
  color: var(--text);
  cursor: pointer;
  transition: border-color 180ms ease-out, box-shadow 180ms ease-out;
}
.booking-status__request-consent:focus-within { border-color: #001840; box-shadow: var(--shadow); }
.booking-status__request-consent input {
  justify-self: center;
  width: 20px;
  min-height: 20px;
  margin: 0;
  accent-color: #001840;
}
.booking-status__cancel-dialog .booking-status__request-consent > span { color: var(--text); font-size: var(--fs-16); font-weight: 700; line-height: 1.5; }
.booking-status__cancel-dialog [data-request-mode="partial"] .booking-status__cancel-confirm,
.booking-status__reschedule-dialog .booking-status__cancel-confirm { border-color: #001840; background: #001840; color: #fff; }
.booking-status__cancel-dialog [data-request-mode="partial"] .booking-status__cancel-actions button,
.booking-status__reschedule-dialog .booking-status__cancel-actions button { border-radius: var(--radius); }
.booking-status__cancel-dialog [aria-invalid="true"] { border-color: #842d25; }

@keyframes booking-request-arrive {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Booking status actions remain reachable on narrow screens, including terminal paid states. */
.booking-status__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }
.booking-status__actions a { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; padding: 12px 16px; border-radius: var(--radius); }
.booking-status__actions a:focus-visible { outline: 2px solid #001840; outline-offset: 2px; }
@media (max-width: 520px) { .booking-status__actions { align-items: stretch; flex-direction: column; gap: 12px; } .booking-status__actions a { width: 100%; } }

@media (max-width: 520px) {
  .booking-status__request-actions,
  .booking-status__request-fields { grid-template-columns: 1fr; }
  .booking-status__cancel-dialog form { padding: 24px 16px; }
}

@media (prefers-reduced-motion: reduce) {
  .guest-page .map-view-toggle,
  .guest-page .browse-grid[data-view="grid"] .postcard-card,
  .guest-page .vendor-map-marker__pin,
  .guest-page .vendor-map__card button,
  .guest-page .platform-booking__consent,
  .guest-page .platform-booking__close,
  .guest-page .platform-booking__submit-bar .postcard-viewer__book,
  .booking-status__request-trigger,
  .booking-status__request-consent { transition-duration: 1ms; }
  .booking-status__request-summary { animation-duration: 1ms; }
  .guest-page .map-view-toggle:hover { transform: none; }
  .guest-page .vendor-map-marker:hover .vendor-map-marker__pin,
  .guest-page .vendor-map-marker.is-selected .vendor-map-marker__pin { transform: none; }
}
