@font-face{font-family:"DM Sans";src:url("./assets/fonts/dm-sans-latin.woff2") format("woff2");font-style:normal;font-weight:400 500;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url("./assets/fonts/instrument-serif-latin.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url("./assets/fonts/instrument-serif-italic-latin.woff2") format("woff2");font-style:italic;font-weight:400;font-display:swap}
:root{font-family:"DM Sans",Arial,sans-serif;color:#10171c;background:#080d12;font-synthesis:none;--ink:#10171c;--paper:#f7f5f0;--white:#fff;--mist:#dde2e2;--line:#cdd1cf;--gold:#c7aa78;--serif:"Instrument Serif",Georgia,"Times New Roman",serif}
*{box-sizing:border-box}
html{scroll-behavior:auto;scrollbar-width:thin;scrollbar-color:#9c8c74 transparent}
body{margin:0;min-width:320px;overflow-x:hidden;background:#080d12}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
button,a,input,summary{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
img{display:block;width:100%;height:100%;object-fit:cover}
figure{margin:0}
button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:5px}
[hidden]{display:none!important}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.skip-link{position:fixed;z-index:100;top:-100px;left:16px;background:#fff;color:#111;padding:14px 18px}
.skip-link:focus{top:16px}

.journey{height:calc(100svh + 6400px);position:relative;background:#080d12;color:#fff}
.journey-screen{--arrival-opacity:0;--arrival-y:28px;--journey-ui:1;--shade:0;position:sticky;top:0;height:100svh;overflow:hidden;isolation:isolate;background:#080d12}
.visual-window{position:absolute;inset:0;overflow:hidden;background:#080d12}
.journey-poster,#journeyCanvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
#journeyCanvas{opacity:0}
.has-frame #journeyCanvas{opacity:1}
.film-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#02060b80,transparent 26%,transparent 58%,#02060b8a),rgba(2,6,11,var(--shade));will-change:background-color}
.journey-header{position:absolute;z-index:3;top:max(30px,env(safe-area-inset-top));left:3.7vw;right:3.7vw;display:flex;justify-content:space-between;align-items:center;gap:20px;opacity:var(--journey-ui);will-change:opacity}
.wordmark,.hotel-brand{font-size:.8125rem;font-weight:500;letter-spacing:.13em;line-height:1.55;white-space:nowrap}
.wordmark{color:#fff;text-shadow:0 2px 18px #0009}
.wordmark span,.hotel-brand span{display:block;font-size:.6875rem;letter-spacing:.31em}
.skip-journey{display:flex;align-items:center;gap:18px;min-height:44px;font-size:.875rem;border-bottom:1px solid #ffffff80;text-shadow:0 2px 18px #0009}
.arrival-title{position:absolute;z-index:2;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:8vh 5vw 12vh;opacity:var(--arrival-opacity);transform:translate3d(0,var(--arrival-y),0);pointer-events:none;will-change:opacity,transform;text-shadow:0 3px 28px #000}
.arrival-title p{font-size:.75rem;font-weight:500;letter-spacing:.34em;margin:0 0 26px}
.arrival-title .arrival-heading{font-family:var(--serif);font-weight:400;font-size:clamp(3.1rem,7.2vw,8.5rem);line-height:.86;letter-spacing:-.035em;margin:0;max-width:1300px}
.arrival-title .arrival-heading em{font-weight:400;color:#e1c89d}
.arrival-title span{position:absolute;bottom:max(76px,calc(env(safe-area-inset-bottom) + 58px));font-size:.8125rem;letter-spacing:.06em}
.gesture-hint{position:absolute;z-index:2;bottom:84px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:11px;font-size:.8125rem;letter-spacing:.05em;pointer-events:none;white-space:nowrap;text-shadow:0 2px 14px #000;will-change:opacity}
.gesture-hint svg{width:21px;height:23px;fill:none;stroke:currentColor;stroke-width:1.25;transform:rotate(180deg)}
.touch-hint{display:none}
.journey-control{position:absolute;z-index:3;bottom:max(20px,env(safe-area-inset-bottom));left:3.7vw;right:3.7vw;opacity:var(--journey-ui);will-change:opacity}
#journeyPosition{display:block;width:100%;height:44px;margin:0;appearance:none;-webkit-appearance:none;background:transparent;cursor:ew-resize;touch-action:pan-y}
#journeyPosition::-webkit-slider-runnable-track{height:1px;background:linear-gradient(to right,#f0d5a6 0 var(--progress,0%),#ffffff52 var(--progress,0%) 100%)}
#journeyPosition::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:9px;height:9px;border:0;border-radius:50%;margin-top:-4px;background:#f0d5a6;box-shadow:0 0 0 5px #0002}
#journeyPosition::-moz-range-track{height:1px;background:#ffffff52}
#journeyPosition::-moz-range-progress{height:1px;background:#f0d5a6}
#journeyPosition::-moz-range-thumb{width:9px;height:9px;border:0;border-radius:50%;background:#f0d5a6}
.load-state,.retry-load{position:absolute;z-index:4;left:50%;bottom:145px;transform:translateX(-50%);font-size:.8125rem;color:#fff;white-space:nowrap;text-shadow:0 2px 14px #000}
.load-state{margin:0}
.retry-load{min-height:44px;padding:11px 18px;background:#080d12d9;border:1px solid #ffffff66}
.frame-decoder{position:absolute;width:2px;height:2px;opacity:.001;pointer-events:none;z-index:-1}

.hotel-site{position:relative;z-index:5;background:var(--paper);color:var(--ink)}
.content-width{width:min(1600px,90vw);margin-inline:auto}
.hotel-header{height:92px;display:flex;align-items:center;gap:34px;padding:0 5vw;border-bottom:1px solid #b7bdb83d;background:#f7f5f0f2;backdrop-filter:blur(18px);position:sticky;top:0;z-index:20}
.hotel-brand{font-size:.75rem}
.desktop-nav{display:flex;align-items:center;justify-content:center;gap:34px;margin-left:auto;font-size:.875rem}
.desktop-nav a{padding:14px 0;border-bottom:1px solid transparent}
.desktop-nav a:hover{border-color:currentColor}
.reserve-link{background:var(--ink);color:#fff;padding:15px 21px;font-size:.8125rem;white-space:nowrap;display:flex;align-items:center;gap:28px;margin-left:22px;letter-spacing:.03em}
.mobile-menu{display:none}

.hotel-intro{padding-block:clamp(86px,10vw,180px) clamp(88px,10vw,170px)}
.intro-kicker{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid var(--line);padding-top:17px}
.intro-kicker span,.eyebrow{font-size:.75rem;font-weight:500;letter-spacing:.17em;line-height:1.65}
.intro-kicker span{color:#687176}
.eyebrow{margin:0;text-transform:uppercase}
.hotel-intro h1,.section-heading h2,.split-copy h2,.location-inner h2{font-family:var(--serif);font-weight:400;letter-spacing:-.045em}
.hotel-intro h1{font-size:clamp(4.3rem,9vw,10.5rem);line-height:.82;margin:clamp(65px,8vw,120px) 0 0}
.hotel-intro h1 em{font-weight:400;color:#687177}
.intro-bottom{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-top:clamp(50px,6vw,92px);padding-left:min(16vw,250px)}
.intro-bottom p{font-family:var(--serif);font-size:clamp(1.45rem,2vw,2.35rem);line-height:1.2;margin:0;color:#3b4449}
.text-link{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;min-height:44px;border-bottom:1px solid currentColor;padding-bottom:5px;font-size:.875rem;white-space:nowrap}

.stay-section{padding-bottom:clamp(100px,11vw,185px)}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:40px;border-top:1px solid var(--line);padding-top:22px}
.section-heading h2{font-size:clamp(3rem,5.4vw,6.4rem);line-height:.9;margin:0}
.feature-image{position:relative;height:min(66vw,850px);overflow:hidden;background:#d8d9d5}
.feature-image img,.split-image img,.dining-photo img{transform:scale(var(--media-scale,1.025));will-change:transform}
.feature-image figcaption{position:absolute;left:22px;bottom:20px;background:#0b1217d9;color:#fff;padding:9px 12px;font-size:.6875rem;letter-spacing:.14em}
.room-description{display:grid;grid-template-columns:1fr minmax(300px,.85fr) auto;align-items:start;gap:50px;padding-top:34px}
.room-description h3,.dining-list h3{font-family:var(--serif);font-size:clamp(2rem,2.5vw,3rem);font-weight:400;line-height:1;margin:0}
.room-description p,.split-copy p:not(.eyebrow),.dining-list p{font-size:1rem;line-height:1.7;color:#596268;margin:0}

.spa-section{background:#0d161c;color:#edf0ed;padding-block:clamp(88px,9vw,155px)}
.split-section{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(330px,.85fr);align-items:center;gap:clamp(55px,9vw,150px)}
.split-image{aspect-ratio:1.1;overflow:hidden;background:#182229}
.split-copy h2{font-size:clamp(3.5rem,6vw,7rem);line-height:.88;margin:32px 0 34px}
.split-copy h2 em{font-weight:400;color:#baa47f}
.split-copy p:not(.eyebrow){color:#aeb6b8;max-width:410px;margin-bottom:34px}

.dining-section{padding-block:clamp(105px,11vw,190px)}
.dining-section .section-heading{align-items:start;margin-bottom:55px}
.dining-section h2 em{font-weight:400;color:#687177}
.dining-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);gap:clamp(55px,8vw,125px);align-items:start}
.dining-photo{height:min(58vw,760px);overflow:hidden;background:#d8d9d5}
.dining-list article{position:relative;border-top:1px solid var(--line);padding:29px 75px 30px 0}
.dining-list article span{position:absolute;right:0;top:34px;font-size:.6875rem;letter-spacing:.14em;color:#747d81}
.dining-list h3{font-size:2.5rem}
.dining-list p{margin-top:12px;max-width:360px}
.dining-list .text-link{margin-top:38px}

.location-section{background:#dfe3e1;padding-block:clamp(90px,10vw,175px)}
.location-inner{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(380px,.75fr);gap:clamp(70px,10vw,170px)}
.location-inner h2{font-size:clamp(4.2rem,7vw,8rem);line-height:.83;margin:38px 0 0}
.location-inner h2 em{font-weight:400;color:#687177}
.location-details>p{font-family:var(--serif);font-size:clamp(1.7rem,2.4vw,2.7rem);line-height:1.17;margin:0 0 48px}
.location-details dl{display:flex;gap:64px;margin:0 0 46px}
.location-details dl div{display:grid;gap:7px}
.location-details dt{font-size:.6875rem;letter-spacing:.15em;text-transform:uppercase;color:#667075}
.location-details dd{font-size:1rem;margin:0}
.phone-link{display:block;font-family:var(--serif);font-size:1.7rem;margin-bottom:38px}
.button-dark{display:flex;align-items:center;justify-content:space-between;gap:30px;width:min(100%,430px);background:var(--ink);color:#fff;padding:20px 22px;font-size:.875rem}

.site-footer{min-height:116px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:30px;color:#e9ece9}
.site-footer a,.site-footer button,.site-footer p{font-size:.8125rem}
.site-footer button{border:0;background:none;color:inherit;padding:14px 0}
.creator-credit{margin:0;text-align:right;color:#aab1b2}

dialog{width:min(650px,calc(100% - 32px));border:0;border-radius:0;padding:36px;background:#f7f5f0;color:#12191e;box-shadow:0 25px 100px #0007}
dialog::backdrop{background:#05090dbd;backdrop-filter:blur(6px)}
.dialog-heading{display:flex;align-items:start;justify-content:space-between;gap:24px;margin-bottom:28px}
.dialog-heading h2{font-family:var(--serif);font-size:2.6rem;font-weight:400;line-height:1;margin:0}
.dialog-heading button{border:0;background:none;font-size:1.8rem;line-height:1;padding:0 4px}
dialog>p{font-size:.9375rem;line-height:1.7;color:#525c61}
.source-links{display:grid;grid-template-columns:1fr 1fr;margin:28px 0;border-top:1px solid var(--line)}
.source-links a{font-size:.875rem;padding:14px 0;border-bottom:1px solid var(--line)}
.source-links a:nth-child(odd){margin-right:18px}
.rights{font-size:.75rem;color:#737a7e}

.scroll-reveal{--reveal:1;opacity:calc(.22 + var(--reveal) * .78);transform:translate3d(0,calc((1 - var(--reveal)) * 44px),0);will-change:opacity,transform}
.media-reveal{--media-scale:1.025;will-change:transform}

@media(min-width:2200px){
  html{font-size:18px}
  .content-width{width:min(1760px,86vw)}
  .hotel-header{height:112px;padding-inline:7vw}
  .desktop-nav{gap:48px}
  .journey-header,.journey-control{left:4.5vw;right:4.5vw}
  .hotel-intro h1{font-size:11.5rem}
  .feature-image{height:920px}
}

@media(max-width:900px){
  .content-width{width:90vw}
  .journey{height:calc(100svh + 5200px)}
  .journey-header{top:max(20px,env(safe-area-inset-top));left:5vw;right:5vw}
  .journey-control{left:5vw;right:5vw}
  .desktop-nav{display:none}
  .hotel-header{height:78px;padding-inline:5vw;gap:12px}
  .hotel-brand{margin-right:auto;font-size:.6875rem}
  .reserve-link{margin-left:0;gap:14px;padding:13px 14px}
  .mobile-menu{display:block;position:relative}
  .mobile-menu summary{list-style:none;width:34px;height:44px;display:grid;place-content:center;gap:6px;cursor:pointer}
  .mobile-menu summary::-webkit-details-marker{display:none}
  .mobile-menu summary span{display:block;width:24px;height:1px;background:currentColor}
  .mobile-menu nav{position:absolute;right:-5vw;top:61px;width:100vw;background:#f7f5f0;border-bottom:1px solid var(--line);padding:12px 6vw 18px;display:grid;grid-template-columns:1fr 1fr;gap:2px 20px;box-shadow:0 18px 35px #0001}
  .mobile-menu nav a{padding:13px 0;font-size:1rem}
  .hotel-intro{padding-block:72px 88px}
  .intro-kicker span{display:none}
  .hotel-intro h1{font-size:clamp(4rem,14vw,7rem);line-height:.87;margin-top:62px}
  .intro-bottom{padding-left:0;flex-direction:column;align-items:flex-start;gap:33px;margin-top:52px}
  .intro-bottom p{font-size:1.55rem}
  .section-heading{display:block;padding-top:17px;margin-bottom:28px}
  .section-heading .eyebrow{margin-bottom:22px}
  .section-heading h2{font-size:3.6rem}
  .feature-image{height:auto;aspect-ratio:1.1}
  .feature-image img{object-position:45% center}
  .feature-image figcaption{left:14px;bottom:14px;font-size:.625rem}
  .room-description{display:flex;flex-direction:column;gap:18px;padding-top:25px}
  .room-description h3{font-size:2.3rem}
  .room-description p{font-size:1rem}
  .room-description .text-link{margin-top:8px}
  .split-section{display:flex;flex-direction:column;align-items:stretch;gap:48px}
  .split-image{aspect-ratio:1.03}
  .split-copy h2{font-size:4rem;margin:27px 0}
  .dining-grid{display:flex;flex-direction:column;gap:40px}
  .dining-photo{height:auto;aspect-ratio:1.05}
  .dining-list h3{font-size:2.2rem}
  .location-inner{display:flex;flex-direction:column;gap:70px}
  .location-inner h2{font-size:4.9rem;margin-top:30px}
  .location-details>p{font-size:2rem}
  .site-footer{min-height:150px;grid-template-columns:1fr 1fr;align-content:center;gap:10px 25px}
  .creator-credit{grid-column:1/-1;text-align:left;margin-top:8px}
}

@media(max-width:560px){
  .journey{height:calc(100svh + 4700px)}
  .journey-screen{background:#091017}
  .journey-poster,#journeyCanvas{object-position:center center}
  .wordmark{font-size:.6875rem}
  .wordmark span{font-size:.625rem}
  .skip-journey{font-size:.8125rem;gap:10px}
  .arrival-title{padding-inline:20px}
  .arrival-title p{font-size:.6875rem;margin-bottom:20px}
  .arrival-title .arrival-heading{font-size:clamp(3.15rem,15.5vw,5.2rem);line-height:.9}
  .arrival-title span{font-size:.75rem}
  .gesture-hint{bottom:77px}
  .touch-hint{display:inline}
  .mouse-hint{display:none}
  .load-state,.retry-load{bottom:132px}
  .hotel-brand{font-size:.625rem;letter-spacing:.08em}
  .hotel-brand span{font-size:.5625rem;letter-spacing:.24em}
  .reserve-link{font-size:.75rem}
  .reserve-link span{display:none}
  .hotel-intro h1{font-size:clamp(3.65rem,17vw,5.4rem)}
  .section-heading h2{font-size:3.2rem}
  .split-copy h2{font-size:3.65rem}
  .dining-section h2{font-size:3.4rem}
  .location-inner h2{font-size:4.15rem}
  .location-details dl{gap:44px}
  .source-links{grid-template-columns:1fr}
  .source-links a:nth-child(odd){margin-right:0}
  dialog{padding:28px 23px}
}

@media(max-width:360px){
  .hotel-header{gap:8px}
  .hotel-brand{font-size:.5625rem}
  .reserve-link{padding-inline:10px}
  .mobile-menu summary{width:26px}
  .hotel-intro h1{font-size:3.45rem}
  .arrival-title .arrival-heading{font-size:3rem}
}

@media(max-height:500px) and (orientation:landscape){
  .journey-header{top:14px}
  .gesture-hint{bottom:60px;flex-direction:row}
  .journey-control{bottom:6px}
  .arrival-title .arrival-heading{font-size:3.8rem}
  .arrival-title p{margin-bottom:12px}
  .arrival-title span{bottom:45px}
}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.scroll-reveal{opacity:1!important;transform:none!important}.media-reveal img{transform:none!important}}
#hotel,#rooms,#spa,#dining,#location{scroll-margin-top:92px}
#hotel{scroll-margin-top:0}
