@font-face {
  font-family: "Cormorant Garamond";
  src: url("fonts/cormorant-garamond.woff2") format("woff2");
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
}
@font-face {
  font-family: "Cormorant Garamond";
  src: url("fonts/cormorant-garamond-italic.woff2") format("woff2");
  font-style: italic;
  font-weight: 300 500;
  font-display: swap;
}
@font-face {
  font-family: "Jost";
  src: url("fonts/jost.woff2") format("woff2");
  font-style: normal;
  font-weight: 300 500;
  font-display: swap;
}

:root{
  --ink:#0b0b0a; --ink-2:#141412; --ivory:#f6f1e7; --stone:#8d8576;
  --gold:#c9a45c; --gold-2:#e2c88f; --gold-dk:#9a7a3c; --line:rgba(201,164,92,.28);
  --serif:"Cormorant Garamond",Georgia,serif; --sans:"Jost",system-ui,sans-serif;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:150px}
body{background:var(--ink);color:var(--ivory);font-family:var(--sans);font-weight:300;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.modal-open{overflow:hidden}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
.wrap{width:min(1240px,100% - 32px);margin-inline:auto}
.eyebrow{font-size:.72rem;letter-spacing:.38em;text-transform:uppercase;color:var(--gold);display:inline-flex;align-items:center;gap:14px}
.eyebrow::before{content:"";width:36px;height:1px;background:var(--gold)}
h1,h2,h3{font-family:var(--serif);font-weight:300;line-height:1.08}
h1 em,h2 em{font-style:italic;color:var(--gold-2)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:16px 34px;font-size:.74rem;letter-spacing:.28em;text-transform:uppercase;border:1px solid var(--gold);color:var(--ivory);transition:.4s var(--ease);cursor:pointer;background:transparent;font-family:var(--sans)}
.btn:hover{background:var(--gold);color:var(--ink)}
.btn.solid{background:var(--gold);color:var(--ink)}
.btn.solid:hover{background:var(--gold-2);border-color:var(--gold-2)}

header{position:fixed;inset:0 0 auto;z-index:50;background:rgba(11,11,10,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:76px}
.brand{display:flex;flex-direction:column;line-height:1}
.brand b{font-family:var(--serif);font-weight:400;font-size:1.45rem;letter-spacing:.32em}
.brand small{font-size:.56rem;letter-spacing:.62em;color:var(--gold);margin-top:6px}
.menu{display:flex;gap:34px;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase}
.menu a{opacity:.85}.menu a:hover,.menu a.on{opacity:1;color:var(--gold-2)}
.nav .btn{padding:12px 24px}
.guest-account{display:flex;align-items:center;gap:10px;font-size:.67rem;letter-spacing:.12em;text-transform:uppercase}
.guest-account>span{max-width:120px;overflow:hidden;color:var(--gold-2);text-overflow:ellipsis;white-space:nowrap}
.guest-account form{margin:0}
.guest-account button,.mobile-guest-signout button{border:0;padding:4px 0;background:none;color:var(--ivory);font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}
.guest-account button:hover,.guest-account button:focus-visible,.mobile-guest-signout button:hover,.mobile-guest-signout button:focus-visible{color:var(--gold-2)}
.guest-account a{color:var(--gold-2);text-decoration:none}
.guest-flash{position:fixed;top:90px;right:24px;z-index:65;max-width:360px;padding:12px 16px;border:1px solid var(--line);background:rgba(20,20,18,.96);color:var(--ivory);font-size:.78rem;box-shadow:0 12px 36px rgba(0,0,0,.28)}
.admin-preview{position:fixed;right:0;bottom:0;left:0;z-index:70;border-top:1px solid var(--gold);background:rgba(20,20,18,.98);color:var(--ivory);font-size:.76rem;box-shadow:0 -12px 36px rgba(0,0,0,.3)}
.admin-preview .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;padding-block:8px}
.admin-preview strong{color:var(--gold-2)}
.admin-preview form{margin:0}
.admin-preview button{border:1px solid var(--gold);padding:8px 18px;background:transparent;color:var(--ivory);font:inherit;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.admin-preview button:hover,.admin-preview button:focus-visible{background:var(--gold);color:var(--ink)}
.mobile-guest-signout{display:none!important}
.burger{display:none;background:none;border:0;color:var(--ivory);width:40px;height:40px;cursor:pointer}
.burger span{display:block;height:1px;background:currentColor;margin:7px 6px}
.mobile-signin{display:none!important}

.head{padding:170px 0 60px;text-align:center}
.head h1{font-size:clamp(2.8rem,7vw,5.6rem);margin:20px 0 18px}
.head p{color:#cfc7b8;max-width:56ch;margin-inline:auto}

/* sticky room switcher */
.tabs{position:sticky;top:76px;z-index:40;background:rgba(11,11,10,.95);backdrop-filter:blur(10px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.tabs .wrap{display:flex;justify-content:center;overflow-x:auto}
.tabs a{padding:20px 30px;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;white-space:nowrap;color:#bdb5a6;border-bottom:2px solid transparent;display:flex;gap:12px;align-items:baseline}
.tabs a span{font-family:var(--serif);font-size:1.05rem;letter-spacing:.02em;text-transform:none;color:var(--gold)}
.tabs a.on{color:var(--ivory);border-color:var(--gold)}

.room{padding:110px 0;border-bottom:1px solid var(--line)}
.room:nth-of-type(even){background:var(--ink-2)}
.room-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(36px,5vw,72px);align-items:start}

/* gallery */
.stage{position:relative;aspect-ratio:4/3;overflow:hidden;background:#000;cursor:zoom-in}
.stage img{transition:opacity .45s var(--ease)}
.stage .count{position:absolute;left:18px;bottom:18px;background:rgba(11,11,10,.75);padding:7px 14px;font-size:.66rem;letter-spacing:.25em}
.arrow{position:absolute;top:50%;translate:0 -50%;width:48px;height:48px;border-radius:50%;border:1px solid rgba(246,241,231,.5);background:rgba(11,11,10,.45);color:var(--ivory);cursor:pointer;font-size:1.1rem;transition:.3s}
.arrow:hover{background:var(--gold);color:var(--ink);border-color:var(--gold)}
.arrow.prev{left:18px}.arrow.next{right:18px}
.thumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-top:10px}
.thumbs button{aspect-ratio:1;border:0;padding:0;cursor:pointer;opacity:.5;transition:.3s;outline:1px solid transparent;outline-offset:2px;background:none}
.thumbs button:hover{opacity:.85}
.thumbs button.on{opacity:1;outline-color:var(--gold)}

/* details */
.details .tag{font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold)}
.details h2{font-size:clamp(2.4rem,4.4vw,3.6rem);margin:14px 0 18px}
.details > p{color:#cfc7b8}
.facts{display:grid;grid-template-columns:repeat(3,1fr);margin:30px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.facts div{padding:18px 0;text-align:center}
.facts div+div{border-left:1px solid var(--line)}
.facts b{display:block;font-family:var(--serif);font-weight:400;font-size:1.25rem;color:var(--gold-2);line-height:1.15}
.facts div:first-child b{font-size:1.7rem}
.facts span{font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:var(--stone)}
.details h3{font-family:var(--sans);font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-weight:400;margin-bottom:16px}
.feat{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;margin-bottom:34px;font-size:.95rem;color:#ddd5c5}
.feat li{display:flex;gap:12px;align-items:baseline}
.feat li::before{content:"✦";color:var(--gold);font-size:.7rem}

.pricebox{border:1px solid var(--gold);padding:26px 28px;display:grid;gap:20px;background:linear-gradient(135deg,rgba(201,164,92,.1),transparent 60%)}
.pricebox .amt{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.pricebox .amt i{font-style:normal;font-size:.8rem;letter-spacing:.2em;color:var(--gold)}
.pricebox .amt b{font-family:var(--serif);font-weight:500;font-size:clamp(2.6rem,4vw,3.2rem);color:var(--gold-2);line-height:1}
.pricebox .amt small{font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:#bdb5a6}
.pricebox .note{font-size:.82rem;color:var(--stone);margin-top:-10px}
.pricebox .btns{display:grid;grid-template-columns:1fr auto;gap:12px}

/* booking modal */
.modal{position:fixed;inset:0;z-index:100;background:rgba(5,5,5,.8);display:none;place-items:center;padding:16px}
.modal.on{display:grid}
.sheet{background:var(--ink-2);border:1px solid var(--line);width:min(760px,100%);padding:clamp(26px,4vw,44px);position:relative;max-height:94vh;overflow:auto}
.sheet .x{position:absolute;top:14px;right:16px;background:none;border:0;color:var(--stone);font-size:1.6rem;cursor:pointer}
.sheet h3{font-size:2.1rem;margin:10px 0 4px}
.sheet .rate{color:var(--gold-2);margin-bottom:26px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.f{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.f label{font-size:.62rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold)}
.f input,.f select,.f textarea{background:transparent;border:0;border-bottom:1px solid var(--line);color:var(--ivory);padding:10px 0;font-family:var(--sans);font-weight:300;font-size:1rem;outline:none;color-scheme:dark}
.sheet .f input[readonly]{cursor:default}
.f select option{background:var(--ink-2)}
.f :focus{border-color:var(--gold-2)}
.booking-calendar{border:1px solid var(--line);margin:0 0 22px;padding:16px;background:rgba(246,241,231,.025)}
.calendar-head{align-items:center;display:grid;grid-template-columns:42px 1fr 42px;gap:8px;margin-bottom:12px}
.calendar-head strong{font-family:var(--serif);font-size:1.2rem;font-weight:400;text-align:center}
.calendar-nav{align-items:center;background:transparent;border:1px solid var(--line);color:var(--ivory);cursor:pointer;display:inline-flex;font-size:1.2rem;height:36px;justify-content:center;width:36px}
.calendar-nav:hover:not(:disabled),.calendar-nav:focus-visible:not(:disabled){background:var(--gold);border-color:var(--gold);color:var(--ink)}
.calendar-nav:disabled{cursor:not-allowed;opacity:.3}
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.calendar-weekdays{margin-bottom:5px}
.calendar-weekdays span{color:var(--stone);font-size:.58rem;letter-spacing:.12em;text-align:center;text-transform:uppercase}
.calendar-day{align-items:center;aspect-ratio:1;background:transparent;border:1px solid transparent;color:var(--ivory);cursor:pointer;display:flex;font:inherit;font-size:.8rem;justify-content:center;min-width:0;position:relative}
.calendar-day:hover:not(:disabled),.calendar-day:focus-visible:not(:disabled){border-color:var(--gold)}
.calendar-day.today{border-color:rgba(226,200,143,.45)}
.calendar-day.selected{background:var(--gold);border-color:var(--gold);color:var(--ink);font-weight:500}
.calendar-day.in-range{background:rgba(201,164,92,.16)}
.calendar-day:disabled{color:var(--stone);cursor:not-allowed;opacity:.32}
.calendar-day.is-booked{background:rgba(255,180,170,.06);text-decoration:line-through}
.calendar-blank{aspect-ratio:1}
.calendar-foot{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-top:12px}
.calendar-foot p{color:var(--stone);font-size:.67rem;line-height:1.5;margin:0;max-width:44ch}
.calendar-legend{color:var(--stone);display:flex;flex-wrap:wrap;font-size:.62rem;gap:6px;letter-spacing:.08em;text-transform:uppercase}
.calendar-key{border:1px solid var(--line);display:inline-block;height:10px;margin-left:6px;width:10px}
.calendar-key:first-child{margin-left:0}
.calendar-key.available{background:transparent}
.calendar-key.booked{background:rgba(255,180,170,.2);border-color:rgba(255,180,170,.35)}
.calendar-status{color:var(--gold-2);font-size:.72rem;line-height:1.5;margin:10px 0 0;min-height:1.1rem}
.calendar-status.is-error{color:#ffb4aa}
.calendar-grid.is-loading{opacity:.45;pointer-events:none}
.total{display:flex;justify-content:space-between;align-items:baseline;padding:18px 0;margin-bottom:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.total span{font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--stone)}
.total b{font-family:var(--serif);font-weight:500;font-size:1.9rem;color:var(--gold-2)}
.sheet .btn{width:100%}
.sheet .small{font-size:.78rem;color:var(--stone);text-align:center;margin-top:14px}

.lb{position:fixed;inset:0;background:rgba(5,5,5,.96);z-index:110;display:none;place-items:center;padding:30px;cursor:zoom-out}
.lb.on{display:grid}.lb img{max-width:100%;max-height:90vh;width:auto;height:auto;object-fit:contain}

footer{padding:50px 0;text-align:center;color:var(--stone);font-size:.78rem;letter-spacing:.14em}
footer a{color:var(--gold-2);text-decoration:underline;text-underline-offset:.18em}
.loading-state{padding:110px 24px;text-align:center;border-bottom:1px solid var(--line)}
.loading-state h2{font-size:2.4rem;margin-bottom:12px}
.loading-state p{color:var(--stone);margin:0 auto 24px;max-width:55ch}
.booking-status{min-height:1.4rem;margin-top:14px;font-size:.78rem;line-height:1.55;color:var(--gold-2)}
.booking-status.is-error{color:#ffb4aa}
.booking-status.is-success{color:#cce6bf}
.btn:disabled{opacity:.6;cursor:wait;transform:none}

@media (max-width:1000px){
  .menu{display:none}
  .menu.open{display:flex;position:fixed;inset:76px 0 auto;flex-direction:column;background:var(--ink);padding:30px 24px;gap:24px;border-bottom:1px solid var(--line)}
  .menu.open .mobile-signin{display:block!important;color:var(--gold-2)}
  .menu.open .mobile-guest-signout{display:block!important;padding-top:8px;border-top:1px solid var(--line)}
  .burger{display:block}
  .guest-account-desktop{display:none}
  .room-grid{grid-template-columns:1fr}
  .tabs .wrap{justify-content:flex-start}
}
@media (max-width:600px){
  .nav .btn{display:none}
  .thumbs{grid-template-columns:repeat(4,1fr)}
  .feat{grid-template-columns:1fr}
  .pricebox .btns,.row{grid-template-columns:1fr}
  .tabs a{padding:16px 18px}
  .room{padding:70px 0}
  .sheet{padding-inline:18px}
  .booking-calendar{padding:12px}
  .calendar-foot{flex-direction:column;gap:8px}
  .guest-flash{top:82px;right:12px;left:12px;max-width:none;text-align:center}
  .admin-preview .wrap{align-items:flex-start;flex-direction:column;gap:6px;padding-block:10px}
  .admin-preview button{width:100%}
}
.lb{grid-template-rows:1fr auto;gap:14px;padding:24px 70px 18px}
.lb>img{max-height:calc(100vh - 150px);cursor:default;align-self:center;justify-self:center}
.lb-nav{position:absolute;top:calc(50% - 50px);width:52px;height:52px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;font-size:34px;line-height:1;display:grid;place-items:center;cursor:pointer;transition:background .2s}
.lb-nav:hover{background:rgba(255,255,255,.2)}
.lb-prev{left:14px}.lb-next{right:14px}
.lb-count{position:absolute;top:18px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.75);font-size:13px;letter-spacing:.08em}
.lb-thumbs{display:flex;gap:8px;overflow-x:auto;max-width:100%;justify-self:center;padding:4px;scrollbar-width:thin}
.lb-thumbs button{flex:0 0 auto;width:78px;height:54px;padding:0;border:2px solid transparent;border-radius:6px;overflow:hidden;opacity:.5;cursor:pointer;background:none;transition:opacity .2s,border-color .2s}
.lb-thumbs button:hover{opacity:.85}
.lb-thumbs button.on{opacity:1;border-color:#fff}
.lb-thumbs img{width:100%;height:100%;object-fit:cover;display:block}
.lb.single .lb-nav,.lb.single .lb-thumbs,.lb.single .lb-count{display:none}
@media (max-width:640px){.lb{padding:20px 12px 14px}.lb-nav{width:40px;height:40px;font-size:26px;background:rgba(0,0,0,.45)}.lb-prev{left:8px}.lb-next{right:8px}.lb-thumbs button{width:60px;height:42px}}
