:root {
  color-scheme: light;
  --forest: #173f34;
  --forest-deep: #082d27;
  --olive: #4d5e38;
  --cream: #f8f6f1;
  --paper: #fffefa;
  --ink: #13241f;
  --muted: #626a67;
  --line: rgba(19, 36, 31, 0.15);
  --serif: Georgia, "Times New Roman", serif;
  --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: #ebeae6; }
body { margin: 0; color: var(--ink); font-family: var(--sans); background: var(--paper); }
a { color: inherit; }
button, input, summary { font: inherit; }
img { display: block; max-width: 100%; }
textarea { font: inherit; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

.north-header {
  position: absolute;
  z-index: 5;
  inset: 0 0 auto;
  height: 84px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 22px;
}
.north-brand { display: inline-flex; align-items: center; text-decoration: none; }
.north-brand img { width: 150px; height: auto; mix-blend-mode: multiply; }
.quiet-sign-in { color:var(--ink); font-size:14px; text-decoration:none; }

.landing-page { min-width: 320px; min-height: 100vh; background: var(--cream); }
.landing-main { position: relative; min-height: 100svh; display:grid; grid-template-rows:minmax(430px,56svh) minmax(300px,44svh); overflow: hidden; }
.landing-hero {
  position: relative;
  z-index: 2;
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  padding: 104px 28px 38px;
  text-align: center;
}
.landing-hero h1 {
  width: min(760px, 100%);
  margin: 0;
  font: 500 clamp(35px, 9.8vw, 48px)/1.02 var(--serif);
  letter-spacing: -0.045em;
  text-wrap: balance;
}
.landing-subtitle { margin: 16px 0 24px; color: #68706e; font-size: 18px; }
.address-form {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 5px;
  align-items: center;
  width: min(820px, 100%);
  padding: 0;
  border: 0;
  background: transparent;
}
.desktop-address-form { display: none; }
.location-pin { padding-left: 0; color: #747b79; font-size: 25px; transform: rotate(20deg); }
.address-form input {
  min-width: 0;
  height: 58px;
  padding: 0 8px;
  border: 0;
  border-bottom: 1px solid rgba(19,36,31,.32);
  outline: 0;
  color: var(--ink);
  background: transparent;
  font-size: 16px;
}
.address-form input::placeholder { color: #7e8583; }
.address-form input:focus-visible { border-bottom-color:var(--forest); box-shadow:0 2px 0 var(--forest); }
.address-form button, .primary-link {
  border: 0;
  border-radius: 999px;
  color: white;
  background: var(--forest);
  font-weight: 650;
  text-decoration: none;
  cursor: pointer;
}
.address-form button {
  grid-column: 1 / -1;
  justify-self:center;
  width: auto;
  min-height: 50px;
  margin-top:13px;
  padding: 0 25px;
  font-size: 16px;
  transition: transform 0.18s ease, background 0.18s ease;
}
.address-form button:hover { background: var(--forest-deep); transform: translateY(-1px); }
.trial-note { margin: 8px 0 0; color: #68706e; font-size: 14px; }
.trial-note strong { color: var(--forest); }
.form-feedback { width: min(680px, 100%); min-height: 44px; display: grid; place-items: start center; padding-top: 10px; }
.form-feedback.is-empty { min-height:0; padding-top:0; }
.form-error { margin: 0; color: #812d28; font-size: 15px; font-weight: 650; line-height: 1.35; }
.landing-photo { position: absolute; z-index: 0; margin: 0; overflow: hidden; pointer-events: none; }
.landing-photo img { width: 100%; height: 100%; object-fit: cover; }
.landing-photo-interior { display:none; }
.landing-photo-coast { position:relative; grid-row:2; inset:auto; width:100%; height:100%; }
.landing-photo-coast img { object-position: center 58%; }
.mobile-address-trigger {
  width: min(390px, 100%);
  min-height: 58px;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:11px;
  padding:0 17px;
  border:1px solid rgba(23,63,52,.18);
  border-radius:999px;
  color:var(--ink);
  background:rgba(255,254,250,.88);
  box-shadow:0 15px 38px rgba(29,38,35,.09);
  text-align:left;
  cursor:pointer;
}
.mobile-address-trigger > span:nth-child(2) { overflow:hidden; color:#5f6865; white-space:nowrap; text-overflow:ellipsis; }
.mobile-address-trigger > span:last-child { color:var(--forest); font-size:20px; }
.address-sheet {
  width:100%;
  max-width:560px;
  max-height:min(82dvh,720px);
  margin:auto 0 0;
  padding:12px 22px calc(22px + env(safe-area-inset-bottom));
  border:0;
  border-radius:26px 26px 0 0;
  color:var(--ink);
  background:#fffefa;
  box-shadow:0 -22px 65px rgba(11,34,28,.22);
  overflow:auto;
}
.address-sheet[open] { animation:sheet-in .22s ease-out; }
.address-sheet::backdrop { background:rgba(10,28,23,.42); backdrop-filter:blur(3px); }
.sheet-handle { width:42px; height:5px; margin:0 auto 12px; border-radius:99px; background:#d1d2cd; }
.sheet-close { position:absolute; top:22px; right:20px; width:38px; height:38px; border:0; border-radius:50%; color:#56605c; background:#f0efe9; font-size:25px; line-height:1; cursor:pointer; }
.sheet-heading { padding:8px 42px 20px 0; }
.sheet-heading p { margin:0 0 8px; color:var(--olive); font-size:12px; font-weight:750; letter-spacing:.16em; }
.sheet-heading h2 { margin:0; font:500 clamp(30px,8vw,40px)/1.02 var(--serif); letter-spacing:-.035em; }
.sheet-heading span { display:block; margin-top:10px; color:var(--muted); font-size:14px; }
.sheet-address-form > label { display:block; margin-bottom:8px; font-size:13px; font-weight:700; }
.sheet-input-wrap { min-height:58px; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:8px; padding:0 14px; border:1px solid rgba(23,63,52,.25); border-radius:15px; background:white; }
.sheet-input-wrap > span { color:var(--forest); font-size:23px; transform:rotate(20deg); }
.sheet-input-wrap input { min-width:0; width:100%; height:54px; border:0; outline:0; color:var(--ink); background:transparent; font-size:16px; }
.sheet-input-wrap:focus-within { border-color:var(--forest); box-shadow:0 0 0 3px rgba(23,63,52,.12); }
.suggestion-status { min-height:31px; padding:9px 2px 5px; color:var(--muted); font-size:12px; line-height:1.35; }
.address-suggestions { display:grid; gap:4px; }
.address-suggestion { display:grid; gap:3px; width:100%; padding:12px 13px; border:0; border-radius:12px; color:var(--ink); background:#f3f1eb; text-align:left; cursor:pointer; }
.address-suggestion:hover,.address-suggestion:focus-visible { outline:2px solid var(--forest); background:#ecebe4; }
.address-suggestion strong { font-size:14px; }
.address-suggestion span { color:var(--muted); font-size:12px; }
.sheet-error { margin:7px 2px 0; text-align:left; }
.sheet-create { width:100%; min-height:54px; margin-top:13px; border:0; border-radius:999px; color:white; background:var(--forest); font-weight:700; cursor:pointer; }
.sheet-create:disabled { opacity:.7; cursor:wait; }
.sheet-note { margin:13px 0 0; color:var(--muted); font-size:12px; text-align:center; }
.sheet-note strong { color:var(--forest); }
@keyframes sheet-in { from { transform:translateY(20px); opacity:.7; } }

.preview-page { min-height: 100svh; background: #e8e9e5; }
.preview-bar {
  min-height: 112px;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 10px 14px;
  padding: 11px 14px;
  background: #faf8f3;
  border-bottom: 1px solid var(--line);
}
.north-brand-small img { width: 116px; }
.preview-identity { display: flex; flex-direction: column; text-align: left; line-height: 1.35; }
.preview-identity strong { font-size: 14px; }
.preview-identity span { color: var(--muted); font-size: 13px; }
.open-site-link {
  grid-column: 1 / -1;
  justify-self: stretch;
  padding: 10px 15px;
  border-radius: 999px;
  color: white;
  background: var(--forest);
  font-size: 14px;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
}
.preview-save { grid-column: 1 / -1; display: grid; justify-items: stretch; gap: 4px; }
.preview-save form { margin: 0; }
.preview-save .open-site-link { width: 100%; border: 0; cursor: pointer; font: inherit; }
.preview-save p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.35; text-align: center; }
.preview-save .preview-save-note { margin-top: 2px; font-weight: 700; }
.preview-frame-wrap { min-height: 0; }
.preview-frame { display: none; width: 100%; height: 100%; border: 0; background: white; }
.preview-inline-guest { display: block; }

.guest-page { min-width: 320px; max-width: 820px; min-height: 100vh; margin: 0 auto; background: #fff; overflow-x: clip; }
.guest-header {
  position: relative;
  z-index: 5;
  min-height: 88px;
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) 82px;
  align-items: center;
  padding: 12px 14px;
  background: rgba(255, 255, 255, 0.98);
}
.guest-menu { position: relative; }
.guest-menu summary {
  width: 44px;
  height: 44px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  padding: 9px;
  border-radius: 50%;
  cursor: pointer;
  list-style: none;
}
.guest-menu summary::-webkit-details-marker { display: none; }
.guest-menu summary span { display: block; width: 25px; height: 2px; background: #171b19; }
.guest-menu nav {
  position: absolute;
  top: 51px;
  left: 0;
  width: 210px;
  display: grid;
  gap: 3px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: white;
  box-shadow: 0 18px 45px rgba(20, 28, 25, 0.17);
}
.guest-menu nav a { padding: 11px 12px; border-radius: 10px; font-size: 14px; text-decoration: none; }
.guest-menu nav a:hover { background: #f2f0ea; }
.guest-wordmark {
  min-width: 0;
  display: flex;
  flex-direction: column;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.14em;
}
.guest-wordmark span { overflow: hidden; font: 600 clamp(16px, 4.5vw, 23px)/1.1 var(--serif); text-overflow: ellipsis; white-space: nowrap; }
.guest-wordmark small { margin-top: 4px; font-size: 12px; letter-spacing: 0.21em; }
.guest-motto { margin: 0; font: 13px/1.05 "Segoe Script", "Bradley Hand", cursive; text-align: center; transform: rotate(-4deg); }
.guest-motto em { font-weight: 600; }
.guest-hero { position: relative; height: clamp(440px, 70svh, 620px); overflow: hidden; background: #d9d2c8; }
.guest-hero-photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 58% center; }
.guest-hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(20, 14, 10, 0.42), rgba(20, 14, 10, 0.03) 66%); }
.guest-hero-copy { position: absolute; z-index: 2; top: 48px; left: 24px; color: #fff; text-shadow: 0 2px 18px rgba(0, 0, 0, 0.22); }
.guest-hero h1 { margin: 0; font: 500 clamp(52px, 14vw, 82px)/0.92 var(--serif); letter-spacing: -0.045em; }
.guest-hero h1 em, .guest-closing em { font-weight: 400; }
.hero-rule { display: block; width: 50px; height: 1px; margin: 22px 0 17px; background: rgba(255, 255, 255, 0.9); }
.guest-hero-copy p { margin: 0; font-size: 14px; font-weight: 650; letter-spacing: 0.13em; line-height: 1.55; text-transform: uppercase; }
.arrival-card {
  position: relative;
  z-index: 3;
  width: calc(100% - 30px);
  min-height: 152px;
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(110px, 0.65fr);
  align-items: center;
  margin: -40px auto 0;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 17px;
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 13px 34px rgba(27, 35, 32, 0.12);
}
.section-kicker { margin: 0 0 7px; color: var(--olive); font-size: 12px; font-weight: 750; letter-spacing: 0.14em; text-transform: uppercase; }
.arrival-place { min-width: 0; padding-right: 16px; }
.arrival-place h2 { margin: 0; font: 500 clamp(27px, 7vw, 39px)/1 var(--serif); letter-spacing: -0.025em; overflow-wrap: break-word; }
.arrival-place h2 a { text-decoration: none; }
.arrival-place > p:last-child { margin: 9px 0 0; color: var(--muted); font-size: 13px; line-height: 1.4; }
.arrival-action { min-height: 84px; display: flex; flex-direction: column; justify-content: center; gap: 10px; padding-left: 17px; border-left: 1px solid var(--line); }
.arrival-action p { margin: 0; color: var(--muted); font-size: 12px; }
.arrival-action a { font-size: 14px; font-weight: 700; text-underline-offset: 4px; }
.nearby-section { padding: 72px 20px 76px; }
.nearby-section h2 { margin: 0; font: 500 clamp(38px, 10vw, 55px)/1 var(--serif); letter-spacing: -0.035em; }
.section-intro { max-width: 590px; margin: 13px 0 28px; color: #303633; font-size: 16px; line-height: 1.45; }
.nearby-grid {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, min(58vw, 210px));
  gap: 13px;
  overflow-x: auto;
  padding: 2px 2px 12px;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin;
}
.nearby-card { position: relative; display: block; scroll-snap-align: start; text-decoration: none; }
.nearby-card > img { width: 100%; height: auto; aspect-ratio: 1.42; border-radius: 13px; object-fit: cover; transition: transform 0.18s ease; }
.nearby-card:hover > img { transform: translateY(-2px); }
.nearby-card-copy { display: flex; flex-direction: column; gap: 5px; padding: 11px 30px 0 1px; }
.nearby-card-copy strong { font: 600 17px/1.2 var(--serif); }
.nearby-card-copy span { color: var(--muted); font-size: 14px; line-height: 1.4; }
.nearby-arrow { position: absolute; right: 5px; bottom: 30px; font-size: 20px; }
.stay-topic-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.stay-topic { min-width: 0; display:block; padding: 23px 21px 21px; border: 1px solid #c8d0c9; border-radius: 15px; color:inherit; background: rgba(255,255,255,.72); text-decoration:none; }
.stay-topic-link { cursor:pointer; touch-action:manipulation; transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease; }
.stay-topic-link:hover { border-color:#8da096; box-shadow:0 10px 28px rgba(27,55,45,.1); transform:translateY(-2px); }
.stay-topic-link:focus-visible { outline:3px solid #d89f57; outline-offset:3px; }
.stay-topic-static { background:rgba(255,255,255,.48); }
.stay-topic-heading { display: grid; grid-template-columns: 28px minmax(0,1fr); align-items: start; gap: 9px; }
.stay-topic-heading > span { padding-top: 5px; color: #75827b; font-size: 12px; font-weight: 750; letter-spacing: .1em; }
.stay-topic h3 { min-width: 0; margin: 0; font: 500 clamp(27px,8vw,36px)/1.03 var(--serif); letter-spacing: -.025em; overflow-wrap: anywhere; }
.stay-topic > p { margin: 12px 0 17px; color: var(--muted); font-size: 14px; line-height: 1.45; }
.stay-topic ul,.stay-topic dl { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.stay-topic li,.stay-topic dl > div { min-width: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 15px; padding: 9px 0; border-top: 1px solid #d9ded9; }
.stay-topic li > span,.stay-topic dt { min-width: 0; font-size: 14px; font-weight: 700; overflow-wrap: anywhere; }
.stay-topic li small { flex: none; color: var(--muted); font-size: 12px; }
.stay-topic dd { max-width: 58%; margin: 0; color: var(--muted); font-size: 13px; line-height: 1.4; text-align: right; white-space: pre-wrap; overflow-wrap: anywhere; }
.stay-topic-note { display: block; color: #65736c; font-size: 13px; line-height: 1.45; }
.stay-topic-action { display:inline-flex; gap:8px; margin-top:17px; color:var(--forest); font-size:13px; font-weight:750; text-decoration:underline; text-underline-offset:4px; }
.stay-topic-image,.stay-topic-shade { display:none; pointer-events:none; }
.topic-detail-list { display:grid; gap:0; margin:24px 0 0; }
.topic-detail-list > div { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.5fr); gap:20px; padding:15px 0; border-top:1px solid #d9ded9; }
.topic-detail-list dt { font-weight:750; }
.topic-detail-list dd { margin:0; color:var(--muted); white-space:pre-wrap; overflow-wrap:anywhere; }
.pet-resource-group { margin-top:32px; }
.pet-resource-group > h2,.topic-secondary > h2 { margin:0; font:500 clamp(25px,6vw,34px)/1.08 var(--serif); }
.pet-resource-group .place-list { margin-top:10px; }
.pet-resource-group .place-list h3 { margin:0 0 5px; font:400 clamp(22px,5vw,30px)/1.12 var(--serif); overflow-wrap:anywhere; }
.topic-secondary { margin-top:42px; }
.guest-closing { position: relative; min-height: 350px; display: grid; align-items: end; overflow: hidden; color: #fff; }
.guest-closing > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 58%; }
.guest-closing-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(7, 32, 26, 0.74), rgba(7, 32, 26, 0.12)); }
.guest-closing > div:last-child { position: relative; z-index: 2; padding: 48px 25px; text-shadow: 0 2px 15px rgba(0, 0, 0, 0.28); }
.guest-closing p { margin: 0 0 13px; font-size: 13px; font-weight: 750; letter-spacing: 0.14em; text-transform: uppercase; }
.guest-closing h2 { max-width: 640px; margin: 0 0 18px; font: 500 clamp(39px, 10vw, 62px)/0.98 var(--serif); letter-spacing: -0.03em; }
.guest-closing span { font-size: 16px; }
.guest-footer { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; padding: 23px 20px; color: #666d69; background: #fbfaf6; font-size: 12px; letter-spacing: 0.04em; }
.guest-footer a { font-size: 14px; font-weight: 650; }

.explore-hero { position: relative; min-height: clamp(270px, 55vw, 400px); display: flex; align-items: end; overflow: hidden; color: #fff; background: var(--forest); }
.explore-hero > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.explore-hero-shade { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(8, 34, 28, 0.76), rgba(8, 34, 28, 0.05) 75%); }
.explore-hero-copy { position: relative; z-index: 1; padding: 34px 24px; }
.explore-hero .section-kicker { color: #e5e9d8; }
.explore-hero h1 { margin: 0; font: 500 clamp(42px, 11vw, 72px)/1 var(--serif); letter-spacing: -0.035em; }
.explore-body { max-width: 680px; min-height: 370px; padding: 36px 24px 68px; }
.explore-body p { max-width: 580px; color: #303633; font-size: 16px; line-height: 1.6; }
.topic-editorial-photo { margin:26px 0 30px; }
.topic-editorial-photo img { display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; border-radius:8px; }
.topic-editorial-photo figcaption { margin-top:9px; color:var(--muted); font-size:12px; letter-spacing:.025em; }
.explore-back { display: inline-block; margin-bottom: 19px; color: var(--forest); font-size: 14px; font-weight: 700; text-underline-offset: 4px; }
.explore-map-link { display: inline-flex; margin-top: 13px; padding: 14px 22px; border-radius: 999px; color: white; background: var(--forest); font-size: 15px; font-weight: 700; text-decoration: none; }
.explore-map-link:hover { background: var(--forest-deep); }
.explore-body .explore-note { margin: 12px 0 0; color: var(--muted); font-size: 13px; }

.unavailable-page { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: var(--cream); }
.unavailable-card { width: min(580px, 100%); padding: clamp(32px, 7vw, 72px); border: 1px solid var(--line); border-radius: 24px; background: white; box-shadow: 0 22px 70px rgba(18, 39, 32, 0.1); text-align: center; }
.unavailable-card .north-brand { justify-content: center; margin-bottom: 54px; }
.unavailable-card .north-brand img { width: 190px; }
.unavailable-card h1 { margin: 0; font: 500 clamp(38px, 6vw, 58px)/1 var(--serif); }
.unavailable-card p { margin: 20px 0 34px; color: var(--muted); font-size: 16px; line-height: 1.6; }
.primary-link { display: inline-flex; padding: 15px 23px; }

.address-form button:focus-visible,
.primary-link:focus-visible,
.open-site-link:focus-visible,
.north-brand:focus-visible,
.guest-menu summary:focus-visible,
.guest-menu nav a:focus-visible,
.guest-wordmark:focus-visible,
.nearby-card:focus-visible,
.arrival-action a:focus-visible,
.arrival-place h2 a:focus-visible,
.guest-footer a:focus-visible,
.explore-back:focus-visible,
.explore-map-link:focus-visible {
  outline: 3px solid #d89f57;
  outline-offset: 3px;
}

@media (min-width: 600px) {
  .nearby-grid { grid-auto-flow: initial; grid-auto-columns: initial; grid-template-columns: repeat(3, 1fr); overflow: visible; }
  .stay-topic-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .guest-footer { flex-direction: row; justify-content: space-between; align-items: center; }
}

@media (max-width: 599px) {
  .guest-hero { height: clamp(390px, 58svh, 520px); }
  .arrival-card { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .arrival-place { padding-right: 0; }
  .arrival-action { min-height: 0; flex-direction: row; align-items: center; justify-content: space-between; padding: 12px 0 0; border-left: 0; border-top: 1px solid var(--line); }
  .nearby-section { padding-inline: 24px; }
  .stay-topic-grid { gap: 16px; }
  .stay-topic { position:relative; width:100%; min-width:0; min-height:0; aspect-ratio:4/3; display:flex; flex-direction:column; justify-content:flex-end; overflow:hidden; padding:28px 72px 27px 28px; border:0; border-radius:25px; color:#fff; background:var(--forest); }
  .stay-topic-image { position:absolute; inset:0; width:100%; height:100%; display:block; object-fit:cover; filter:saturate(.94) brightness(1.08); }
  .stay-topic-shade { position:absolute; inset:0; display:block; background:linear-gradient(0deg,rgba(10,25,20,.58) 0%,rgba(10,25,20,.15) 65%,rgba(10,25,20,.02) 100%); }
  .stay-topic-link { transition:transform .18s ease; }
  .stay-topic-link:hover { border-color: transparent; box-shadow: none; transform: translateY(-2px); color:#fff; }
  .stay-topic-static { min-height:180px; aspect-ratio:auto; color:rgba(255,255,255,.9); background:var(--forest); }
  .stay-topic-heading { position:relative; z-index:1; display:block; width:100%; min-width:0; }
  .stay-topic h3 { width:100%; min-width:0; margin:0; color:#fff; font-size:clamp(31px,9vw,40px); line-height:1; overflow-wrap:normal; word-break:normal; hyphens:none; white-space:normal; text-shadow:0 2px 18px rgba(0,0,0,.25); }
  .stay-topic > p { position:relative; z-index:1; width:100%; min-width:0; max-width:31rem; margin:10px 0 0; color:rgba(255,255,255,.92); font-size:15px; line-height:1.42; overflow-wrap:break-word; word-break:normal; }
  .stay-topic-preview { display:none; }
  .stay-topic-action { position:absolute; z-index:2; right:22px; bottom:22px; width:45px; height:45px; display:grid; place-items:center; margin:0; border:1px solid rgba(255,255,255,.8); border-radius:50%; color:#fff; font:400 20px/1 var(--sans); text-decoration:none; transition:transform .18s ease,background-color .18s ease; }
  .stay-topic-link:hover .stay-topic-action { transform: translateX(3px); }
}

@media (min-width: 720px) {
  .preview-page { height: 100vh; overflow: hidden; }
  .preview-bar { min-height: 76px; grid-template-columns: 1fr auto 1fr; gap: 24px; padding: 10px clamp(18px, 3vw, 44px); }
  .north-brand-small img { width: 138px; }
  .preview-identity { text-align: center; }
  .preview-identity strong { font-size: 15px; }
  .preview-save { grid-column: auto; justify-self: end; justify-items: end; max-width: 360px; }
  .preview-save .open-site-link { padding: 12px 18px; }
  .preview-save p { text-align: right; }
  .preview-frame-wrap { height: calc(100vh - 76px); padding: 18px; }
  .preview-frame { display: block; }
  .preview-inline-guest { display: none; }
  .preview-frame { border-radius: 16px; box-shadow: 0 10px 34px rgba(16, 34, 29, 0.13); }
  .guest-page { box-shadow: 0 0 55px rgba(0, 0, 0, 0.11); }
  .guest-header { min-height: 112px; grid-template-columns: 90px minmax(0, 1fr) 120px; padding: 14px 28px; }
  .guest-hero-copy { top: 55px; left: 58px; }
  .arrival-card { width: calc(100% - 44px); min-height: 168px; margin-top: -45px; padding: 26px 35px; }
  .nearby-section { padding: 86px 39px 90px; }
  .guest-closing > div:last-child { padding: 55px 42px; }
}

@media (min-width: 900px) {
  .north-header { height: 112px; padding: 0 calc(clamp(220px, 17vw, 300px) + 54px) 0 clamp(58px, 6vw, 96px); }
  .north-brand img { width: 225px; }
  .quiet-sign-in { font-size: 17px; }
  .landing-main { grid-template-columns: minmax(0, 1fr) clamp(220px, 17vw, 300px); grid-template-rows:1fr; }
  .landing-hero { grid-column: 1; grid-row:1; min-height: 100vh; padding: 150px clamp(70px, 10vw, 220px) 100px; }
  .landing-hero h1 { font-size: clamp(56px, 5.2vw, 78px); }
  .landing-subtitle { margin: 28px 0 46px; font-size: clamp(23px, 2vw, 30px); }
  .address-form { grid-template-columns: auto minmax(210px, 1fr) auto; gap: 0; min-height: 78px; padding: 7px 7px 7px 23px; border:1px solid rgba(28,47,41,.08); border-radius: 999px; background:rgba(255,255,255,.97); box-shadow:0 18px 50px rgba(29,38,35,.13); }
  .desktop-address-form { display:grid; }
  .mobile-address-trigger,.address-sheet { display:none; }
  .location-pin { padding-left: 0; font-size: 31px; }
  .address-form input { height: 61px; padding: 0 19px; border:0; font-size: 18px; }
  .address-form input:focus-visible { border-radius:999px; box-shadow:0 0 0 3px rgba(18,61,50,.22); }
  .address-form button { grid-column: auto; width: auto; min-height: 63px; margin-top:0; padding: 0 35px; font-size: 18px; white-space: nowrap; }
  .trial-note { margin-top: 28px; font-size: 17px; }
  .landing-photo-interior { display:block; left: -24px; bottom: -96px; width: 390px; height: 570px; }
  .landing-photo-coast { position: relative; grid-column: 2; grid-row: 1; width: 100%; height: 100vh; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; }
}

/* UI-02: editorial host library, distinct from the public guest site. */
.sites-page,.account-page { min-height:100svh; background:#f8f8f4; color:#21362e; }
.sites-header { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:25px clamp(22px,6vw,110px); background:white; }
.sites-header img { width:170px; height:auto; }
.sites-header nav { display:flex; gap:22px; align-items:center; }
.sites-header form { margin:0; }
.sites-header button { background:transparent; border:0; font:inherit; cursor:pointer; color:#21362e; }
.sites-add,.sites-primary { display:inline-block; background:#1e493e; color:white; padding:14px 21px; text-decoration:none; border-radius:5px; }
.sites-main { max-width:1400px; margin:auto; padding:65px clamp(22px,6vw,110px) 110px; }
.legal-copy { max-width:72ch; line-height:1.65; }
.legal-copy h2 { margin-top:2em; font-size:1.18rem; line-height:1.35; }
.sites-main h1,.account-panel h1 { font-family:Georgia,serif; font-weight:400; font-size:clamp(48px,6vw,82px); margin:0; line-height:1.15; }
.sites-intro { font-size:20px; color:#64736b; margin:18px 0 55px; }
.sites-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr)); gap:32px; }
.site-card { background:white; border:1px solid #e9ebe5; border-radius:8px; overflow:hidden; }
.site-card > a img { display:block; width:100%; aspect-ratio:1.55; object-fit:cover; height:auto; }
.site-card-copy { padding:25px; display:flex; flex-direction:column; gap:22px; }
.site-card h2 { font:normal 28px Georgia,serif; margin:0 0 6px; }
.site-card p { margin:6px 0; color:#68736e; }
.site-state span,.site-state { color:#447c5c!important; }
.site-actions { display:flex; gap:10px; flex-wrap:wrap; }
.sites-secondary { display:inline-block; padding:13px 20px; border:1px solid #bac6be; border-radius:5px; color:#1e493e; text-decoration:none; }
.sites-footer { text-align:center; padding:65px 15px; background:#e8ede4; color:#53675d; font-family:Georgia,serif; }
.context-photo { display:block; width:min(100%,820px); max-height:480px; object-fit:cover; }
.account-panel { width:min(100% - 44px,530px); margin:8vh auto; }
.account-panel h1 { font-size:clamp(44px,5vw,62px); }
.account-panel label { display:block; margin:20px 0; }
.account-panel input { display:block; width:100%; margin-top:8px; padding:15px; font:inherit; border:1px solid #b8c6ba; }
.account-panel button { padding:16px 25px; background:#1e493e; color:white; border:0; cursor:pointer; font:inherit; }
@media(max-width:600px) { .sites-header { flex-wrap:wrap; } .sites-main { padding-top:44px; } .sites-intro { margin-bottom:30px; } .sites-header nav { width:100%; justify-content:space-between; } }

/* Milestone 3: deliberately small owner controls, not a page builder. */
.customize-page .sites-main { max-width:1100px; }
.customize-nav { display:flex; flex-wrap:wrap; gap:12px; margin-bottom:46px; }
.customize-nav a { padding:12px 17px; border:1px solid #becac2; border-radius:40px; text-decoration:none; }
.customize-section { padding:32px 0 48px; border-top:1px solid #d9e1d8; scroll-margin-top:20px; }
.customize-section h2 { margin:0 0 12px; font:400 clamp(32px,6vw,48px)/1.1 var(--serif); }
.customize-section p { color:#52675b; line-height:1.5; }
.theme-options { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); gap:20px; }
.theme-options form { background:white; padding:14px; border:1px solid #dce4da; border-radius:12px; }
.theme-options h3 { font:400 24px var(--serif); margin:14px 0; }
.theme-options button,.house-form button,.brand-form button,.logo-manager button { background:var(--forest); color:white; border:0; border-radius:7px; padding:13px 20px; cursor:pointer; }
.theme-options button[aria-current] { background:#e1e9dd; color:var(--forest); }
.theme-thumb { height:180px; display:flex; align-items:center; padding:20px; font:30px/1 var(--serif); background:#eeeae0; }
.theme-thumb-elegant { color:white; background:linear-gradient(110deg,#2f352f89,#0002),url('/static/images/fallback-home.webp') center/cover; }
.theme-thumb-postcard { border:12px solid #f5ede0; outline:5px solid #d3ba94; background:linear-gradient(150deg,#f3e8cc77,#eeeeee44),url('/static/images/fallback-home.webp') center/cover; transform:scale(.93) rotate(-2deg); color:#18372e; }
.theme-thumb-resort { color:white; background:linear-gradient(90deg,#152a26bb,#152a2600),url('/static/images/fallback-home.webp') center/cover; }
.photo-manager { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr)); gap:16px; margin-top:25px; }
.photo-manager article { padding:12px; background:white; border:1px solid #dce4da; border-radius:8px; }
.photo-manager img { width:100%; aspect-ratio:4/3; object-fit:cover; }
.photo-status { margin:10px 0; font-weight:700; }
.photo-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.photo-manager button { min-height:44px; margin:0; padding:10px 8px; border:1px solid #aab9ad; border-radius:6px; background:#fff; color:var(--forest); font:600 14px/1.2 var(--sans); white-space:normal; -webkit-appearance:none; appearance:none; cursor:pointer; }
.photo-manager button:disabled { border-color:#d8dfd9; background:#eef2ed; color:#627068; cursor:default; opacity:1; }
.photo-manager .photo-remove { border-color:#c9aaa3; color:#7b3028; }
.house-form { display:grid; gap:10px; max-width:650px; }
.brand-form { display:grid; gap:10px; max-width:650px; }
.brand-form input { padding:14px; border:1px solid #b8c6ba; font:inherit; }
.field-note { margin-top:0; color:#66716b; font-size:14px; }
.logo-manager { max-width:650px; margin-top:28px; }
.logo-manager > label { display:block; margin-bottom:10px; font-weight:700; }
.logo-preview { display:flex; flex-wrap:wrap; align-items:center; gap:20px; margin-top:18px; padding:18px; background:white; border:1px solid #dce4da; border-radius:8px; }
.logo-preview img { max-width:260px; max-height:120px; object-fit:contain; }
.site-logo { display:block; max-width:190px; max-height:70px; object-fit:contain; }
.guest-wordmark .site-logo { margin-bottom:4px; }
.postcard-header .site-logo { max-width:150px; max-height:58px; }
.resort-brand .site-logo { max-width:180px; max-height:64px; }
.owner-preview-nav { position:sticky; top:0; z-index:20; display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px 14px; padding:9px 14px; border-bottom:1px solid #cbd5cd; background:#f8faf7f2; color:#183f35; font:600 13px/1.2 var(--sans); }
.owner-preview-nav span { text-transform:uppercase; letter-spacing:.08em; }
.owner-preview-nav a { padding:7px 10px; border:1px solid #9cafa2; border-radius:999px; color:inherit; text-decoration:none; }
.house-form label { font-weight:650; margin-top:13px; }
.house-form textarea { width:100%; padding:12px; border:1px solid #acb9ad; border-radius:6px; resize:vertical; }
.house-form button { justify-self:start; margin-top:15px; }
.house-guide { padding:40px 25px; }
.house-guide h2,.postcard-sheet h2,.resort-house h2 { font:400 clamp(34px,8vw,55px)/1.1 var(--serif); }
.house-guide dl,.postcard-sheet dl,.resort-house dl { display:grid; gap:20px; }
.house-guide dl div,.postcard-sheet dl div,.resort-house dl div { padding:15px 0; border-top:1px solid #c5d0c6; }
.house-guide dt,.postcard-sheet dt,.resort-house dt { font-weight:700; margin-bottom:8px; }
.house-guide dd,.postcard-sheet dd,.resort-house dd { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.5; }
.property-gallery { padding:42px 25px; }
.property-gallery h2 { font:400 clamp(34px,8vw,55px)/1.1 var(--serif); }
.property-gallery > div { display:grid; grid-auto-flow:column; grid-auto-columns:min(82vw,500px); gap:12px; overflow-x:auto; scroll-snap-type:x mandatory; }
.property-gallery img { width:100%; aspect-ratio:4/3; object-fit:cover; scroll-snap-align:start; }
.weather-section { margin:20px 16px 42px; display:grid; gap:10px; color:var(--forest); background:transparent; }
.weather-current,.weather-forecast-wrap { padding:18px 18px 17px; border:1px solid rgba(23,63,52,.1); border-radius:14px; background:#fff; }
.weather-current .section-kicker { color:#607269; }
.weather-current-row { min-width:0; display:flex; align-items:center; justify-content:space-between; gap:18px; }
.weather-place { min-width:0; }
.weather-place > p { margin:5px 0 0; color:#53665d; font-size:14px; }
.weather-temperature { flex:none; margin:0; font:500 clamp(43px,12vw,60px)/.95 var(--serif); letter-spacing:-.045em; }
.weather-section h2 { max-width:22ch; margin:0; font:500 clamp(25px,6vw,34px)/1.04 var(--serif); letter-spacing:-.025em; overflow-wrap:anywhere; }
.weather-detail { margin:5px 0 0; color:#758079; font-size:11px; }
.weather-forecast-wrap > .section-kicker { margin-bottom:13px; color:#607269; }
.weather-forecast { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; padding:0; }
.weather-forecast article { min-width:0; display:grid; gap:4px; padding:2px 12px; border-left:1px solid #dce1dc; }
.weather-forecast article:first-child { border-left:0; }
.weather-forecast span { color:#607269; font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.weather-forecast strong { font:400 23px var(--serif); }
.weather-forecast small { color:#53665d; line-height:1.3; overflow-wrap:anywhere; }
.nearby-pending { max-width:520px; display:grid; gap:5px; margin-top:24px; padding:16px 0; border-top:1px solid #c8d0c9; border-bottom:1px solid #c8d0c9; }
.nearby-pending strong { font:500 20px/1.2 var(--serif); }
.nearby-pending span { color:var(--muted); font-size:14px; line-height:1.4; }
.place-list { display:grid; gap:12px; margin-top:24px; }
.place-list article { display:flex; justify-content:space-between; align-items:center; gap:18px; padding:18px 0; border-top:1px solid #c8d0c9; }
.place-list article > div { min-width:0; }
.place-list h2 { margin:0 0 5px; font:400 clamp(22px,5vw,30px)/1.12 var(--serif); overflow-wrap:anywhere; }
.place-list p { margin:0; }
.place-list a { flex:none; padding:10px 15px; border:1px solid currentColor; text-decoration:none; }
.event-list .event-with-image { display:grid; grid-template-columns:180px minmax(0,1fr) auto; }
.event-list .event-image { width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; align-self:center; border-radius:4px; }

/* UI-04: a single paper postcard per view, sequential chapters, never a grid. */
.postcard-page { max-width:820px; background:#d8c7a7; }
.postcard-header { min-height:82px; display:flex; align-items:center; justify-content:space-between; padding:20px; background:#fffdf9; }
.postcard-header a { font:25px var(--serif); text-decoration:none; }
.postcard-header span { font-size:12px; text-transform:uppercase; letter-spacing:.12em; }
.postcard-flow { background:linear-gradient(135deg,#b6a77f,#e6d4b6 50%,#a9926c); }
.postcard-stage { padding:28px 18px 50px; background:linear-gradient(135deg,#b6a77f,#e6d4b6 50%,#a9926c); }
.postcard-chapters { display:flex; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scroll-behavior:smooth; scrollbar-width:none; }
.postcard-chapters::-webkit-scrollbar { display:none; }
.postcard-view { flex:0 0 100%; min-width:0; min-height:calc(100svh - 82px); padding:28px 18px 50px; scroll-snap-align:start; scroll-snap-stop:always; }
.postcard-sheet { position:relative; min-height:calc(100svh - 160px); display:flex; flex-direction:column; justify-content:center; padding:32px 20px 28px; background:#f6edda; border:8px solid #fcf8ec; box-shadow:0 15px 33px #403a325c; transform:rotate(-1deg); }
.postcard-stamp { position:absolute; right:17px; top:18px; padding:16px 8px; border:2px dashed #b69a78; color:#21443b; font-size:12px; text-align:center; }
.postcard-kicker,.postcard-address,.postcard-foot { text-transform:uppercase; letter-spacing:.15em; font-size:12px; }
.postcard-kicker { margin-top:25px; }
.postcard-sheet h1 { max-width:80%; font:italic 400 clamp(38px,10vw,74px)/1 var(--serif); overflow-wrap:anywhere; margin:16px 0; }
.postcard-sheet h2 { max-width:82%; margin:15px 0 25px; }
.postcard-photo { margin:30px -10px 20px; overflow:hidden; }
.postcard-photo img { width:100%; height:clamp(300px,60svh,560px); object-fit:cover; }
.postcard-foot { text-align:center; }
.postcard-next { display:block; width:max-content; max-width:100%; margin:22px auto 0; padding:14px 24px; background:var(--forest); color:white; border-radius:40px; text-align:center; text-decoration:none; }
.postcard-action,.postcard-links a { display:block; padding:14px 0; border-bottom:1px solid #bbb19c; text-decoration:none; }
.postcard-links { margin-top:10px; }
.postcard-note { text-align:center; margin:30px auto 0; font:italic 22px var(--serif); }
.postcard-pagination { position:sticky; bottom:0; z-index:3; display:flex; justify-content:center; gap:9px; padding:12px; background:#fffdf9ed; border-top:1px solid #c7b798; }
.postcard-pagination a { width:35px; height:35px; display:grid; place-items:center; border:1px solid #9d8a69; border-radius:50%; color:inherit; text-decoration:none; }
.postcard-explore-sheet h1 { max-width:72%; }
.postcard-note a { color:inherit; }
.postcard-photo-chapter { display:flex; align-items:center; }
.postcard-temperature { margin:8px 0; font:italic 400 clamp(64px,18vw,110px)/1 var(--serif); }
.postcard-place-list { display:grid; margin-top:15px; border-top:1px solid #bbb19c; }
.postcard-place-list a { display:grid; gap:4px; padding:13px 0; border-bottom:1px solid #bbb19c; color:inherit; text-decoration:none; }
.postcard-place-list span { font-size:13px; line-height:1.35; }

/* UI-05: photographic travel hero with editorial text and destination stories. */
.resort-page { max-width:none; background:#f9f5eb; }
.resort-header { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:15px; padding:20px clamp(20px,5vw,75px); background:#f6f1e8; }
.resort-brand { font:clamp(22px,4vw,32px) var(--serif); text-decoration:none; }
.resort-brand small { display:block; font:12px var(--sans); text-transform:uppercase; letter-spacing:.16em; }
.resort-header nav { display:flex; flex-wrap:wrap; gap:16px; }
.resort-header nav a { font-size:13px; text-decoration:none; }
.resort-hero { position:relative; min-height:640px; display:flex; align-items:center; padding:40px clamp(22px,7vw,105px); overflow:hidden; }
.resort-hero-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.resort-hero::before { content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,#f5ebdbeb 0%,#f3e9da9c 45%,#0000 80%); }
.resort-welcome { position:relative; z-index:2; max-width:570px; }
.resort-welcome h1 { font:400 clamp(55px,8vw,115px)/.96 var(--serif); letter-spacing:-.055em; margin:20px 0; }
.resort-welcome > p:not(.section-kicker) { line-height:1.6; max-width:350px; }
.resort-welcome a,.resort-arrival a { display:inline-block; padding:15px 27px; background:#163e34; color:white; text-decoration:none; }
.resort-explore,.resort-arrival,.resort-house,.resort-gallery,.resort-weather { padding:55px clamp(22px,7vw,105px); }
.resort-weather { display:flex; align-items:center; justify-content:space-between; gap:22px; padding-top:22px; padding-bottom:22px; color:white; background:#173f34; }
.resort-weather h2 { margin:0; font:400 clamp(40px,7vw,62px)/1 var(--serif); }
.resort-weather p { max-width:38ch; margin:5px 0; overflow-wrap:anywhere; }
.resort-explore h2,.resort-arrival h2 { font:400 clamp(38px,7vw,70px) var(--serif); }
.resort-stories { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.resort-stories a { position:relative; height:300px; overflow:hidden; background:#36554a; color:white; }
.resort-stories img { width:100%; height:100%; object-fit:cover; }
.resort-stories span { position:absolute; inset:auto 0 0; padding:30px 20px 20px; background:linear-gradient(transparent,#10231edd); font:26px var(--serif); }
.resort-house { background:#f0ede5; }
.resort-gallery { color:white; background:#19382f; }
.resort-gallery h2 { font:400 clamp(40px,7vw,72px)/1 var(--serif); }
.resort-gallery > div { display:grid; grid-template-columns:2fr 1fr; gap:15px; }
.resort-gallery img { width:100%; height:100%; min-height:260px; object-fit:cover; }
.resort-detail-hero { position:relative; min-height:430px; color:white; background:#173f34; overflow:hidden; }
.resort-detail-hero img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.resort-detail-hero::after { content:""; position:absolute; inset:0; background:linear-gradient(0deg,#102720d9,#0001 75%); }
.resort-detail-hero div { position:absolute; z-index:1; inset:auto 25px 35px; }
.resort-detail-hero h1 { margin:5px 0; font:400 clamp(48px,9vw,90px)/1 var(--serif); }
@media(max-width:700px) {
  .weather-section { margin:22px 15px 34px; padding:21px 0 17px; }
  .weather-current { padding:0 16px; }
  .weather-current-row { gap:13px; }
  .weather-forecast { grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; }
  .weather-forecast article { padding:6px 8px; }
  .weather-forecast span,.weather-forecast small { font-size:12px; }
  .place-list article,.resort-weather { align-items:flex-start; flex-direction:column; }
  .event-list .event-with-image { display:flex; }
  .resort-header { display:block; }
  .resort-header nav { margin-top:18px; overflow-x:auto; flex-wrap:nowrap; white-space:nowrap; padding-bottom:8px; }
  .resort-hero { min-height:0; display:block; padding:0; }
  .resort-hero-image { position:relative; height:min(64svh,560px); object-fit:cover; }
  .resort-hero::before { display:none; }
  .resort-welcome { padding:30px 25px 35px; background:#f2e9db; }
  .resort-welcome h1 { font-size:clamp(50px,12vw,78px); }
  .resort-weather { gap:7px; padding-top:18px; padding-bottom:18px; }
  .resort-stories { display:flex; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scroll-padding-inline:2px; gap:14px; padding:2px 0 12px; }
  .resort-stories a { flex:0 0 clamp(205px,62vw,245px); height:auto; scroll-snap-align:start; }
  .resort-stories img { height:auto; aspect-ratio:1.42; object-fit:contain; background:#ddd6c8; }
  .resort-stories span { position:static; display:block; min-height:52px; padding:14px 15px; background:#173f34; font-size:20px; }
  .resort-gallery > div { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; }
  .resort-gallery img { flex:0 0 86vw; height:360px; scroll-snap-align:start; }
}
