@font-face {
    font-family:Hanken;
    src:url("hanken.woff2") format("woff2");
    font-weight:300 700;
    font-display:swap;
}
@font-face {
    font-family:Playfair;
    src:url("playfair.woff2") format("woff2");
    font-weight:400 700;
    font-display:swap;
}
:root {
    color-scheme:light;
    --surface:#faf9fd;
    --surface-low:#f5f3f7;
    --surface-deep:#efedf1;
    --white:#fff;
    --ink:#1b1b1f;
    --muted:#44474c;
    --accent:#725b38;
    --gold:#fedeb2;
    --navy:#111c2a;
    --line:#e9e7ec;
    --radius:8px;
    --gutter:clamp(20px,4.45vw,64px);
    --space:clamp(40px,6vw,88px);
    --serif:Playfair,Georgia,serif;
    font:400 16px/1.55 Hanken,Arial,sans-serif;
}
*,*::before,*::after {box-sizing:border-box}
[hidden] {display:none!important}
body {margin:0;background:var(--surface);color:var(--ink)}
h1,h2,h3,p,figure {margin:0}
h1,h2,h3 {font-family:var(--serif);font-weight:400;line-height:1.12;overflow-wrap:anywhere}
h1 {font-size:clamp(2.6rem,4.45vw,4.25rem);letter-spacing:-.026em}
h2 {font-size:clamp(1.8rem,3.05vw,3rem);letter-spacing:-.017em}
h3 {font-size:clamp(1.25rem,2.1vw,1.8rem)}
p {margin:0 0 .85rem}
p:last-child {margin-bottom:0}
img {display:block;width:100%;max-width:100%;object-fit:cover}
a {color:var(--accent);text-decoration:none}
a:hover {text-decoration:underline;text-underline-offset:3px}
button,input,select,textarea {font:inherit}
button,summary {cursor:pointer}
:focus-visible {outline:2px solid #8d6c3e;outline-offset:4px}
:target {scroll-margin-top:90px}
.wrap {width:calc(100% - var(--gutter) * 2);max-width:1312px;margin-inline:auto}
.section-space {padding-block:var(--space)}
.inner-page {min-height:42vh}
.inline {display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.stack {display:grid;gap:20px;min-width:0}
.split,.form-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.wide {grid-column:1/-1}
.spaced {margin-top:1rem}
.muted {color:var(--muted)}
.small,small {font-size:.83rem}
.eyebrow {display:block;color:var(--accent);font-size:.73rem;font-weight:700;letter-spacing:.155em;text-transform:uppercase;margin-bottom:9px;line-height:1.45}
.haven-line {display:flex;align-items:center;gap:8px}
.haven-line::before {content:"";width:30px;height:1px;background:currentColor}
.text-link {font-size:.82rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.section-heading {display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:22px}
.panel {padding:clamp(19px,2.3vw,32px);border-radius:var(--radius);background:var(--white);box-shadow:0 4px 18px #1b1b1f0c;min-width:0}
.button {display:inline-flex;justify-content:center;align-items:center;gap:.4rem;border:1px solid transparent;border-radius:4px;min-height:46px;padding:10px 19px;line-height:1.25;text-align:center;font-size:.76rem;letter-spacing:.095em;text-transform:uppercase;font-weight:700;transition:background-color .18s,color .18s}
.button:hover {text-decoration:none}
.primary {background:#08080a;color:#fff}
.primary:hover {background:#302f34;color:#fff}
.quiet {background:var(--surface-deep);color:var(--ink)}
.quiet:hover {background:#e3e2e6}
.haven-gold {background:var(--accent);color:#fff}
.haven-gold:hover {background:var(--gold);color:#281800}
.haven-outline {background:#ffffff19;border-color:#ffffff45;color:#fff}
.haven-outline:hover {background:#ffffff2c;color:#fff}
.pill {display:inline-block;border-radius:4px;padding:.3rem .65rem;background:var(--gold);color:#281800;font-size:.76rem;font-weight:700}
.notice,.empty {padding:14px 18px;background:var(--surface-deep);border-radius:4px;margin:0 0 18px;overflow-wrap:anywhere}
main > .notice {margin-top:15px}
.notice.error {background:#ffdad6;color:#67000a}
.notice.success {background:#e7eee1;color:#263b22}
.field {display:grid;align-content:start;gap:6px;min-width:0}
.field>span {font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.085em;color:var(--muted)}
.field input,.field select,.field textarea {
    width:100%;min-width:0;min-height:44px;padding:9px 11px;color:var(--ink);
    border:1px solid transparent;border-radius:5px;background:var(--surface-deep);font-size:.95rem;
}
.field textarea {min-height:100px;resize:vertical}
fieldset {margin:0;padding:0;border:0;min-width:0}
legend {padding:0 0 8px}
.check {display:flex;align-items:flex-start;gap:9px}
.check input {accent-color:var(--accent)}
dl {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.65rem .7rem;margin:1.25rem 0}
dt {color:var(--muted)}
dd {margin:0;text-align:right;overflow-wrap:anywhere;font-weight:700}
dl .total {border-top:1px solid var(--line);padding-top:.85rem;margin-top:.45rem;color:var(--ink)}
dd.total {font:400 clamp(1.2rem,2.1vw,1.65rem)/1.15 var(--serif)}
.visually-hidden {position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.haven-header {position:sticky;top:0;z-index:12;background:#fffffff2;backdrop-filter:blur(14px);box-shadow:0 1px 8px #0000000b}
.haven-header .top-row {min-height:79px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.haven-header .brand {display:flex;align-items:center;gap:11px;font:600 1.28rem/1.1 var(--serif);color:var(--ink);max-width:33%}
.haven-header .brand:hover {text-decoration:none}
.brand .logo {width:43px;height:43px;object-fit:contain}
.brand-mark {display:grid;place-items:center;flex:0 0 35px;height:35px;border:1px solid #d9c3a2;color:var(--accent);font:400 1.12rem/1 var(--serif)}
.brand small {display:block;color:var(--accent);font:700 .56rem/1.35 Hanken,sans-serif;letter-spacing:.16em;text-transform:uppercase;margin-top:4px}
.haven-desktop-nav {display:flex;align-items:center;justify-content:center;gap:clamp(12px,1.7vw,29px)}
.haven-desktop-nav a,.haven-mobile-menu a {color:var(--muted);text-transform:uppercase;letter-spacing:.11em;font-size:.72rem;font-weight:700;white-space:nowrap}
.haven-desktop-nav a[aria-current] {color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:7px}
.haven-top-cta {white-space:nowrap}
.haven-mobile-menu {display:none}
.haven-hero {position:relative;isolation:isolate;overflow:hidden;min-height:min(790px,calc(100svh - 79px));display:grid;align-content:space-between;gap:50px;padding:clamp(65px,10vw,153px) 0 clamp(30px,5.4vw,75px);background:#121824;color:#fff}
.haven-hero-photo,.haven-hero::after {position:absolute;inset:0;width:100%;height:100%;z-index:-2}
.haven-hero-photo {object-position:center 51%}
.haven-hero::after {content:"";z-index:-1;background:linear-gradient(90deg,#0009,transparent 77%),linear-gradient(0deg,#000d,transparent 65%,#0004)}
.haven-hero h1 {font-size:clamp(3.15rem,6.1vw,6.65rem);max-width:13ch;margin:14px 0 16px;text-wrap:balance}
.haven-hero-content p {max-width:54ch;font-size:clamp(1rem,1.6vw,1.22rem);color:#fff;margin-bottom:24px}
.haven-hero-badge {display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:4px;background:#1b1b1f78;color:var(--gold);font-size:.72rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase}
.haven-hero-credit,.haven-image-credit {position:absolute;z-index:2;right:12px;bottom:12px;background:#17171bd9;color:#fff;font-size:.72rem;line-height:1.2;padding:5px 8px;border-radius:4px}
.haven-hero-credit {bottom:11px;right:var(--gutter)}
.haven-hero-booking {min-width:0}
.haven-search {display:grid;gap:16px}
.haven-hero .haven-search {background:#fffffffa;color:var(--ink);box-shadow:0 15px 34px #0004}
.haven-search-head {display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.haven-search-head .eyebrow {margin:0}
.haven-search-head [data-mode-fallback] {min-width:min(100%,12rem)}
.haven-direct {color:var(--accent);font-size:.73rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.haven-mode-buttons,.haven-filter-links {display:flex;gap:5px;flex-wrap:wrap;align-items:center}
.haven-mode-buttons {background:var(--surface-deep);padding:4px;border-radius:5px}
.haven-mode-buttons button,.haven-filter-links a {color:var(--muted);background:transparent;border:0;border-radius:4px;padding:8px 12px;font-size:.72rem;font-weight:700;letter-spacing:.085em;text-transform:uppercase;line-height:1.35}
.haven-mode-buttons button[aria-pressed="true"],.haven-filter-links a[aria-current] {background:#08080a;color:#fff}
.haven-mode-buttons button:hover,.haven-filter-links a:hover {text-decoration:underline;text-underline-offset:3px}
.haven-search-fields {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;align-items:end}
.haven-date-pair {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-column:span 2;gap:13px}
.haven-search-fields>.button {grid-column:1/-1;justify-self:start}
.haven-hero .haven-search-fields {grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(82px,.6fr) minmax(155px,.75fr)}
.haven-hero .haven-search-fields>.button {grid-column:auto;justify-self:stretch;background:var(--accent)}
.haven-intro,.haven-contact,.haven-portal-help {display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,6vw,90px);align-items:center}
.haven-intro h2,.haven-contact h2,.haven-portal-help h2 {margin-bottom:16px}
.haven-intro-copy {max-width:52ch}
.haven-collage {position:relative;min-height:300px;padding:0 12% 13% 0}
.haven-collage img:first-child {height:clamp(235px,31vw,445px);border-radius:4px}
.haven-collage img:nth-child(2) {position:absolute;bottom:0;right:0;width:54%;height:55%;border:7px solid var(--surface);border-radius:4px}
.haven-collage figcaption {position:absolute;bottom:2px;left:0;font-size:.72rem;color:var(--muted)}
.haven-band,.haven-context,.haven-catalog-hero,.haven-portal-top {background:var(--surface-low)}
.haven-centered {max-width:45rem;margin:0 auto 28px;text-align:center}
.haven-centered h2 {margin-bottom:.6rem}
.haven-context {padding:.75rem 0;color:var(--accent);font-size:.74rem;text-transform:uppercase;letter-spacing:.12em;font-weight:700}
.haven-context .wrap {display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.haven-home-rooms,.haven-feature-grid {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.haven-feature-grid {margin-top:22px}
.haven-home-rooms:has(> :only-child) {grid-template-columns:minmax(0,650px)}
.haven-home-rooms:has(> :nth-child(2):last-child) {grid-template-columns:repeat(2,minmax(0,1fr))}
.haven-room {position:relative;min-width:0;border-radius:var(--radius);background:var(--white);overflow:hidden;box-shadow:0 5px 24px #1b1b1f12}
.haven-room-media,.haven-result-media,.haven-summary-media,.haven-portal-media {position:relative;min-width:0;overflow:hidden;background:var(--surface-deep)}
.haven-room-media .room-img {height:100%;min-height:245px;object-fit:cover;transition:transform .55s ease}
.haven-room:hover .room-img {transform:scale(1.035)}
.haven-photo-label {position:absolute;top:14px;left:14px;max-width:calc(100% - 28px);border-radius:4px;padding:5px 9px;background:var(--navy);color:#e7e9ef;font-size:.72rem;font-weight:700;letter-spacing:.095em;text-transform:uppercase}
.haven-room-body {min-width:0;padding:clamp(22px,3vw,46px)}
.haven-room-body h3 {margin-bottom:9px}
.haven-room-prices {display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin:18px 0}
.haven-room-prices strong,.haven-room-prices small,.haven-extra small {display:block}
.haven-room-prices strong {font:500 1.35rem/1.25 var(--serif)}
.haven-room-prices small {font-size:.74rem}
.haven-room-list {display:grid;gap:36px}
.haven-room-list .haven-room {display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);min-height:465px}
.haven-room-list .haven-room:nth-child(even) {grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.haven-room-list .haven-room:nth-child(even) .haven-room-media {order:1}
.haven-room-list .haven-room-body {align-self:center}
.haven-room-list .haven-room-body h3 {font-size:clamp(1.8rem,3.3vw,2.7rem)}
.haven-room-list .haven-room-media .room-img {position:absolute;inset:0}
.haven-home-rooms .haven-room {min-height:385px;background:var(--navy);color:#fff;display:flex;align-items:end;isolation:isolate}
.haven-home-rooms .haven-room-media {position:absolute;inset:0;z-index:-1}
.haven-home-rooms .haven-room-media::after {content:"";position:absolute;inset:0;background:linear-gradient(0deg,#000e,transparent 87%)}
.haven-home-rooms .haven-photo-label {z-index:1}
.haven-home-rooms .haven-image-credit {top:16px;bottom:auto}
.haven-home-rooms .haven-room-body {padding:23px}
.haven-home-rooms .eyebrow,.haven-home-rooms .muted {color:var(--gold)}
.haven-gallery {margin:12px 0}
.haven-gallery summary {font-size:.85rem;color:var(--accent);font-weight:700}
.thumbs {display:flex;gap:7px;flex-wrap:wrap}
.haven-gallery img {width:86px;height:62px;border-radius:4px}
.haven-promo {padding:0;overflow:hidden}
.haven-promo img {height:176px}
.haven-promo-copy {padding:20px}
.haven-promo h3 {margin:.65rem 0}
.haven-contact {align-items:start}
.haven-contact h2 + p {margin-bottom:20px}
.haven-contact form h2,.haven-lookup-heading h2 {font-size:clamp(1.4rem,2.3vw,2rem)}
.haven-page-heading {max-width:44rem;margin-bottom:28px}
.haven-page-heading h1 {margin-bottom:.55rem}
.haven-catalog-hero .section-space,.haven-portal-top .section-space {padding-block:clamp(34px,4.5vw,64px)}
.haven-catalog-heading {display:flex;align-items:end;justify-content:space-between;gap:20px;flex-wrap:wrap}
.haven-catalog-heading .haven-page-heading {margin-bottom:0}
.haven-catalog-control {display:flex;align-items:center;gap:11px;background:#fff;padding:5px 8px;border-radius:var(--radius);box-shadow:0 4px 14px #1b1b1f0c;flex-wrap:wrap}
.haven-filter-links {background:var(--surface-deep);border-radius:5px;padding:4px}
.haven-categories {background:transparent;gap:8px;padding:0;margin-top:24px}
.haven-categories a {background:var(--surface-deep)}
.haven-currency {font-size:.75rem;text-transform:uppercase;color:var(--muted);padding-inline:4px}
.haven-currency strong {color:var(--ink);margin-left:4px}
.haven-catalog-cta {background:#111115;color:white}
.haven-catalog-cta .eyebrow {color:var(--gold)}
.haven-catalog-cta .haven-contact {align-items:end}
.haven-workspace {display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:clamp(18px,2.3vw,32px);align-items:start}
.haven-summary {position:sticky;top:96px;border-top:3px solid #b79c76}
.haven-summary p {margin-top:12px}
.haven-summary h2,.haven-step-heading h2 {font-size:clamp(1.35rem,2.4vw,2rem)}
.haven-summary-media {margin-top:13px;border-radius:4px}
.haven-summary-media img {height:clamp(100px,14vw,205px)}
.haven-step-heading {display:flex;align-items:center;gap:11px}
.haven-step-heading .eyebrow {margin-bottom:3px}
.haven-step {display:grid;place-items:center;flex:0 0 31px;height:31px;border-radius:50%;color:var(--accent);background:var(--surface-deep);font-size:.78rem;font-weight:700}
.haven-result {display:grid;grid-template-columns:minmax(105px,35%) minmax(0,1fr);gap:18px;align-items:center;padding:12px}
.haven-result h3 {margin-bottom:8px}
.haven-result-media {border-radius:4px;align-self:stretch}
.haven-result-media img {height:100%;min-height:190px}
.haven-result-media .haven-image-credit {right:5px;bottom:5px}
.haven-extras {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.haven-extra {background:var(--surface-low);border:1px solid transparent;border-radius:5px;padding:10px}
.haven-extra:has(input:checked) {border-color:#ac8b59;background:#fbf1e0}
.haven-lookup {display:grid;grid-template-columns:4fr 5fr 3fr;align-items:end;gap:14px}
.haven-lookup-heading,.haven-lookup-help {grid-column:1/-1}
.haven-lookup .button {width:100%}
.haven-lookup-heading h2 {margin-bottom:5px}
.haven-portal-form,.haven-receipt {max-width:690px}
.haven-receipt h1 {margin-bottom:10px}
.haven-portal-help-media {position:relative}
.haven-portal-help img {max-height:330px;border-radius:var(--radius)}
.haven-portal-reservation {padding:0;overflow:hidden}
.haven-portal-media img {height:clamp(225px,28vw,390px)}
.haven-portal-media::after {content:"";position:absolute;inset:0;background:linear-gradient(0deg,#000d,transparent 70%)}
.haven-portal-media div {position:absolute;bottom:21px;left:23px;color:#fff;z-index:1;max-width:75%}
.haven-portal-media strong {font:400 clamp(1.4rem,3vw,2.4rem)/1.2 var(--serif)}
.haven-portal-media .eyebrow {color:var(--gold)}
.haven-portal-details {padding:clamp(15px,2vw,28px)}
.haven-footer {background:var(--surface-low);padding-block:clamp(28px,5vw,68px)}
.haven-footer-grid {display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:19px}
.haven-footer-grid a {display:block;font-size:.88rem;margin:5px 0;color:var(--muted)}
.haven-footer-name {font:600 1.35rem/1.15 var(--serif)}
@media (max-width:1090px) {
    .haven-header .brand {max-width:54%}
    .haven-desktop-nav {display:none}
    .haven-mobile-menu {display:block;order:3;position:relative}
    .haven-mobile-menu summary {list-style:none;padding:8px 0;color:var(--ink);font-size:.85rem;text-transform:uppercase;letter-spacing:.08em}
    .haven-mobile-menu summary::-webkit-details-marker {display:none}
    .haven-mobile-menu nav {position:absolute;right:0;top:100%;z-index:2;min-width:180px;padding:8px;background:var(--white);border-radius:var(--radius);box-shadow:0 8px 30px #0003}
    .haven-mobile-menu nav a {display:block;padding:8px}
    .haven-top-cta {margin-left:auto}
}
@media (max-width:820px) {
    .haven-hero {min-height:0;gap:40px}
    .haven-hero .haven-search-fields {grid-template-columns:repeat(2,minmax(0,1fr))}
    .haven-workspace {grid-template-columns:minmax(0,1fr)}
    .haven-summary {position:static}
    .haven-intro,.haven-contact,.haven-portal-help {gap:25px}
    .haven-room-list .haven-room,.haven-room-list .haven-room:nth-child(even) {min-height:350px;grid-template-columns:1fr 1fr}
    .haven-home-rooms,.haven-feature-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
    .haven-lookup {grid-template-columns:repeat(2,minmax(0,1fr))}
    .haven-lookup>div:has(.button) {grid-column:1/-1}
    .haven-footer-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:590px) {
    .haven-header .top-row {min-height:64px;gap:13px}
    .haven-header .brand {max-width:76%;font-size:1.12rem}
    .haven-top-cta {display:none}
    .haven-hero {padding:55px 0 31px;gap:29px}
    .haven-hero h1 {font-size:clamp(2.8rem,12vw,4.1rem)}
    .haven-hero-photo {object-position:57% center}
    .haven-hero .haven-search-fields>.button {grid-column:1/-1}
    .haven-hero-credit {font-size:.64rem;bottom:7px}
    .haven-direct {display:none}
    .haven-intro,.haven-contact,.haven-portal-help,.split,.form-grid,.haven-home-rooms,.haven-home-rooms:has(> :nth-child(2):last-child),.haven-feature-grid,.haven-lookup {grid-template-columns:minmax(0,1fr)}
    .haven-collage {min-height:235px}
    .haven-room-list .haven-room,.haven-room-list .haven-room:nth-child(even) {grid-template-columns:minmax(0,1fr);min-height:0}
    .haven-room-list .haven-room:nth-child(even) .haven-room-media {order:0}
    .haven-room-list .haven-room-media {min-height:260px}
    .haven-home-rooms .haven-room {min-height:340px}
    .haven-result {grid-template-columns:minmax(0,1fr)}
    .haven-result-media img {height:180px;min-height:0}
    .haven-search-fields {grid-template-columns:repeat(2,minmax(0,1fr))}
    .haven-date-pair[data-kind="motel"] {grid-template-columns:1fr}
    .haven-image-credit {font-size:.64rem}
    .haven-summary-media img {height:170px}
}
@media (prefers-reduced-motion:reduce) {
    *,*::before,*::after {transition:none!important}
}
