:root{--paper:#08080a;--surface:#0c0c0e;--ink:#f0ede8;--muted:#aaa69f;--line:rgba(240,237,232,.18);--pad:clamp(24px,5vw,56px)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.65 'DM Sans',sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit}img{display:block;max-width:100%}button{font:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:5px}h1,h2,h3{font-family:'Barlow Condensed',sans-serif;font-weight:900;line-height:1.05;margin:0;text-transform:uppercase}h1{font-size:clamp(48px,6vw,80px);line-height:.94;letter-spacing:-.01em;text-wrap:balance}h2{font-size:clamp(30px,3vw,42px)}h3{font-size:28px}p{margin:16px 0}p,li{overflow-wrap:anywhere}
.public-main{max-width:1360px;margin:auto;padding:clamp(32px,4vw,56px) var(--pad) 80px;min-height:60vh}.public-intro{margin-bottom:clamp(32px,4vw,56px);max-width:700px}.public-intro p{color:var(--muted);font-size:16px;max-width:60ch;margin-top:24px}.public-footer{border-top:1px solid var(--line);padding:28px var(--pad);display:flex;gap:24px;justify-content:space-between;align-items:center;font-size:14px}.public-footer p{color:var(--muted);margin:0}.public-footer a{text-underline-offset:4px}
.space-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.space-preview{display:flex;flex-direction:column;gap:0;border:0;border-bottom:1px solid var(--line);padding:0;align-items:stretch;background:transparent}.space-preview-photo{display:block;overflow:hidden}.space-preview-photo img{width:100%;aspect-ratio:4/3;object-fit:cover}.space-preview-copy{padding:24px 0}.space-preview-copy>p{color:var(--muted);min-height:5.2em}.space-preview-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.space-preview h2{font-size:clamp(28px,2.4vw,38px)}.space-preview h2 a{text-decoration:none}.space-preview h2 a:hover{text-decoration:underline;text-underline-offset:5px}.space-facts{display:flex;gap:8px 16px;flex-wrap:wrap;color:var(--muted);font-size:14px;margin:20px 0}.space-price{font-size:20px;color:var(--ink)!important;white-space:nowrap}.public-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:24px}.public-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 24px;border:1px solid var(--ink);border-radius:0;text-decoration:none;background:var(--ink);color:var(--paper);font-size:12px;text-transform:uppercase;letter-spacing:.12em;line-height:1.5;transition:background-color .15s,border-color .15s,color .15s}.public-button:hover{background:#d7d4cf}.public-button.secondary{background:transparent;color:var(--ink);border-color:var(--line)}.public-button.secondary:hover{background:var(--surface);border-color:var(--ink)}
.breadcrumbs{display:flex;gap:12px;flex-wrap:wrap;font-size:14px;color:var(--muted);margin-bottom:24px}.breadcrumbs a{text-underline-offset:4px}.space-title{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:28px}.space-title p{margin:8px 0 0;color:var(--muted)}.space-lead{display:block;width:100%;border:0;padding:0;background:var(--surface);position:relative;text-align:left;color:var(--ink)}.space-lead img{width:100%;height:auto}.photo-caption{display:block;font:400 14px/1.5 'DM Sans',sans-serif;padding:10px 0;color:var(--muted);background:var(--paper)}.space-information{display:grid;grid-template-columns:1.65fr 1fr;gap:64px;margin:40px 0}.space-about>p{color:var(--muted);max-width:66ch}.space-about h2:not(:first-child){margin-top:32px}.amenities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 28px;padding-left:20px;margin:24px 0;color:var(--muted)}.space-booking{border-top:1px solid var(--line);padding-top:24px;align-self:start}.space-booking p{color:var(--muted)}.space-booking strong{font-size:26px;color:var(--ink)}.space-booking .public-button{width:100%}.photo-section{border-top:1px solid var(--line);padding-top:32px}.photo-section h2{margin-bottom:24px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:start}.photo-grid figure{margin:0}.photo-grid button{display:block;width:100%;background:none;border:0;padding:0;text-align:left;color:var(--ink)}.photo-grid img{width:100%;height:auto}.photo-grid figcaption{color:var(--muted);font-size:14px;margin-top:8px}.other-spaces{border-top:1px solid var(--line);margin-top:48px;padding-top:32px}.other-spaces .public-actions{margin-top:20px}
.space-detail-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:start;margin-bottom:40px}.space-detail-layout .space-information{display:block;margin:0}.space-detail-layout .space-booking{margin-top:32px}.space-detail-layout .space-lead{background:none}
.space-deals{border-top:1px solid var(--line);padding-top:32px;margin-top:40px}.space-deals h2{margin-bottom:24px}.deal-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.deal-card{border:1px solid var(--line);padding:20px;display:grid;grid-template-columns:1fr auto;gap:12px 20px;align-items:center}.deal-card h3{font-size:26px}.deal-card p{color:var(--muted);margin:8px 0 0;font-size:14px}.deal-card>strong{font-size:20px;white-space:nowrap}.deal-card .public-button{grid-column:1/-1;justify-self:start}.deal-note{color:var(--muted);font-size:14px;max-width:70ch}
.public-error{padding:24px;border:1px solid var(--line)}.rate-list{display:grid;gap:0;border-top:1px solid var(--line)}.rate-row{display:grid;grid-template-columns:1.5fr 1fr auto;gap:32px;padding:28px 0;border-bottom:1px solid var(--line);align-items:center}.rate-kicker{display:block;color:var(--muted);font-size:12px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px}.rate-row h2{font-size:clamp(30px,3vw,44px)}.rate-row h2 a{text-decoration:none}.rate-row h2 a:hover{text-decoration:underline;text-underline-offset:5px}.rate-row p{color:var(--muted);margin:8px 0 0}.rate-amount{border-left:1px solid var(--line);padding-left:32px}.rate-amount span{display:block;color:var(--muted);font-size:12px;letter-spacing:.14em;text-transform:uppercase}.rate-amount strong{display:block;font-size:26px;font-weight:400;margin-top:4px}.rate-row>.public-button{white-space:nowrap}.rate-note{max-width:750px;color:var(--muted);margin-top:32px}.pricing-intro{display:flex;justify-content:space-between;align-items:end;gap:32px;max-width:none}.pricing-intro>div{max-width:700px}
@media(max-width:1000px){.space-list{grid-template-columns:repeat(2,minmax(0,1fr))}.rate-row{grid-template-columns:1fr 1fr auto}}
@media(max-width:800px){.public-main{padding-top:32px}.space-list{grid-template-columns:1fr}.space-preview{gap:0}.space-preview-copy>p{min-height:0}.space-information{grid-template-columns:1fr;gap:24px;margin:28px 0}.space-title{align-items:flex-start;flex-direction:column;gap:16px}.space-title .public-button{width:100%}.deal-list{grid-template-columns:1fr}.photo-grid{gap:16px}.pricing-intro{display:block}.pricing-intro .public-button{margin-top:20px}.rate-row{grid-template-columns:1fr;gap:18px;padding:24px 0}.rate-amount{border-left:0;border-top:1px solid var(--line);padding:18px 0 0}.rate-row>.public-button{justify-self:start}.public-footer{align-items:flex-start;flex-direction:column;gap:12px}}
@media(max-width:800px){.space-detail-layout{grid-template-columns:1fr;gap:24px}}
@media(max-width:520px){.photo-grid{grid-template-columns:1fr}.amenities{grid-template-columns:1fr}.public-intro p{font-size:16px}.space-preview-copy .public-actions a{flex:1;padding:10px 12px}.space-facts{gap:8px 16px}.rate-row{gap:12px}}

/* Align secondary public pages to the approved homepage without altering it. */
.space-preview-copy{display:flex;flex-direction:column;flex:1}
.space-preview-copy .public-actions{margin-top:auto;padding-top:16px}
.space-preview-copy .public-actions a{flex:1;white-space:nowrap}
.space-preview-heading{flex-wrap:wrap}
.space-preview h2{font-size:clamp(30px,2.8vw,40px)}
.space-information,.space-detail-layout{gap:40px}
.deal-card{padding:24px;border-color:var(--line)}
.deal-card .public-button{min-width:160px}

.rate-row{padding:32px 0}
.public-footer{font-size:13px}
@media(max-width:520px){
  .public-main{padding-bottom:56px}
  .space-preview-copy{padding:20px 0 24px}
  .space-preview-copy .public-actions{gap:8px}
  .space-information,.space-detail-layout{gap:24px}
  .deal-card{padding:20px;grid-template-columns:minmax(0,1fr)}
  .deal-card .public-button{width:100%}
  .rate-row>.public-button{width:100%}
  
}

.public-core-prices{display:flex;flex-wrap:wrap;gap:24px;padding:16px 0;border-top:1px solid var(--line,#ddd);border-bottom:1px solid var(--line,#ddd);margin-bottom:14px}.public-core-prices span{display:block}.public-core-prices strong{font-size:1.2rem}.rate-amount .public-core-prices{display:block;font-size:.9rem}.rate-amount .public-core-prices strong{font-size:1rem}.rate-amount .public-core-prices span{margin:8px 0}

/* Source studio photos are portrait shots (1086x1448) framed for a tall ceiling-
   to-floor view. Rendered at `height:auto` in a wide frame they stretched to
   arbitrary heights dominated by ceiling ductwork, throwing off every layout
   they sat in (the space detail hero ran far taller than its text column, and
   the gallery led with a close-up of the ceiling). A fixed frame + a lower
   object-position keeps the room itself in view and makes every card/tile in
   a grid the same height. */
.space-lead{overflow:hidden}
.space-lead img{aspect-ratio:4/3;object-fit:cover;object-position:center 72%;transition:transform .5s ease}
.space-lead:hover img{transform:scale(1.035)}
.photo-grid button{overflow:hidden}
.photo-grid img{aspect-ratio:4/3;object-fit:cover;object-position:center 68%;transition:transform .5s ease}
.photo-grid button:hover img{transform:scale(1.045)}
.space-preview-photo img{object-position:center 65%;transition:transform .5s ease}
.space-preview:hover .space-preview-photo img{transform:scale(1.05)}
.public-footer .legal-links{display:flex;gap:20px;flex-wrap:wrap}

/* Gallery page: every photo/video in justified rows (sized from real proportions in
   public-site.js), shuffled each visit, one toggle tab per room. Tiles are absolutely
   placed and keep their DOM node across filters, so switching rooms glides them into
   place instead of rebuilding. Blur-up: dominant colour → tiny blurred preview → image. */
.gallery-intro{margin-bottom:28px}
.gallery-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.gallery-tab{position:relative;display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:22px 20px 20px;background:transparent;border:0;border-right:1px solid var(--line);color:var(--muted);text-align:left;transition:color .25s ease,background .25s ease}
.gallery-tab:last-child{border-right:0}
.gallery-tab::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.gallery-tab:hover{color:var(--ink);background:rgba(240,237,232,.03)}
.gallery-tab[aria-pressed="true"]{color:var(--ink);background:rgba(240,237,232,.05)}
.gallery-tab[aria-pressed="true"]::after{transform:scaleX(1)}
.gallery-tab-name{font:900 clamp(22px,2.4vw,34px)/1 'Barlow Condensed',sans-serif;text-transform:uppercase;letter-spacing:.01em}
.gallery-tab-count{font-size:13px;letter-spacing:.12em;color:var(--muted);font-variant-numeric:tabular-nums}
.gallery-status{display:flex;align-items:center;gap:14px;flex-wrap:wrap;min-height:44px;margin:14px 0 18px;color:var(--muted);font-size:14px;letter-spacing:.04em}
.gallery-reset{background:transparent;border:1px solid var(--line);color:var(--ink);padding:6px 14px;font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.gallery-reset:hover{border-color:var(--ink)}
.gallery-stage{position:relative;margin-bottom:48px;transition:height .55s cubic-bezier(.2,.7,.2,1);min-height:200px}
.gallery-tile{position:absolute;left:0;top:0;margin:0;overflow:hidden;opacity:0;transform-origin:center;
  transition:transform .6s cubic-bezier(.2,.7,.2,1),width .6s cubic-bezier(.2,.7,.2,1),height .6s cubic-bezier(.2,.7,.2,1),opacity .45s ease}
.gallery-stage.ready .gallery-tile{opacity:1;transition-delay:0s,0s,0s,var(--delay,0ms)}
.gallery-stage.ready .gallery-tile.out{opacity:0;pointer-events:none;transition-delay:0s}
.gallery-tile img,.gallery-tile video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.gallery-ph{filter:blur(18px);transform:scale(1.15)}
.gallery-img{opacity:0;transition:opacity .7s ease,transform 1.1s cubic-bezier(.2,.7,.2,1)}
.gallery-tile.loaded .gallery-img{opacity:1}
.gallery-preview{opacity:0;transition:opacity .5s ease}
.gallery-tile.playing .gallery-preview{opacity:1}
.gallery-tile:hover .gallery-img{transform:scale(1.04)}
.gallery-open{position:absolute;inset:0;z-index:2;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:zoom-in}
.gallery-tile.is-video .gallery-open{cursor:pointer}
.gallery-open:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.gallery-badge{position:absolute;z-index:1;top:10px;left:10px;display:inline-flex;align-items:center;gap:6px;padding:5px 9px;background:rgba(8,8,10,.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:var(--ink);font-size:12px;letter-spacing:.06em;font-variant-numeric:tabular-nums}
.gallery-empty{color:var(--muted);padding:24px 0 48px;margin:0}

@media(max-width:800px){.gallery-tab{padding:16px 12px 14px;flex-direction:column;gap:4px}}
@media(max-width:520px){.gallery-tab-name{font-size:19px}.gallery-tab-count{font-size:11px}.gallery-badge{top:6px;left:6px;padding:3px 7px;font-size:11px}}
@media(prefers-reduced-motion:reduce){.gallery-tile,.gallery-img,.gallery-tab::after,.gallery-stage{transition:none}.gallery-tile:hover .gallery-img{transform:none}}

/* First paint: tiles jump straight to their spots (no flying in from the corner), then fade in. */
.gallery-stage:not(.ready) .gallery-tile{transition:none}

/* ── Viewer (lightbox) shared by the gallery and space pages ── */
html.lb-lock{overflow:hidden}
.lb{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;
  background:rgba(5,5,7,calc(.97 * var(--fade,1)));color:var(--ink);opacity:0;transition:opacity .22s ease}
.lb[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.lb::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.lb.lb-in{opacity:1}
.lb-top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px clamp(14px,2.5vw,28px);z-index:3}
.lb-count{font-size:12px;letter-spacing:.2em;color:var(--muted);font-variant-numeric:tabular-nums}
.lb-btn{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;padding:0;border-radius:50%;border:1px solid rgba(240,237,232,.16);
  background:rgba(20,20,22,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--ink);cursor:pointer;
  transition:background .2s ease,border-color .2s ease,opacity .35s ease,transform .2s ease}
.lb-btn:hover{background:rgba(240,237,232,.14);border-color:rgba(240,237,232,.4)}
.lb-btn:active{transform:scale(.94)}
.lb-btn:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.lb-stage{position:relative;overflow:hidden;touch-action:none}
.lb-track{position:absolute;inset:0}
.lb-slide{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:0 clamp(10px,7vw,110px);container-type:size;
  transition:transform .5s cubic-bezier(.2,.75,.2,1),opacity .4s ease}
.lb-slide.dragging{transition:none}
.lb-slide.enter-right{transform:translateX(9%);opacity:0}
.lb-slide.enter-left{transform:translateX(-9%);opacity:0}
.lb-slide.leave-left{transform:translateX(-9%);opacity:0;pointer-events:none}
.lb-slide.leave-right{transform:translateX(9%);opacity:0;pointer-events:none}
/* Largest box of the item's shape that fits the stage (container units). */
.lb-frame{--r:1.5;position:relative;aspect-ratio:var(--r);width:min(100cqw,100cqh * var(--r));max-height:100cqh;overflow:hidden;background:rgba(240,237,232,.03);
  box-shadow:0 30px 80px rgba(0,0,0,.55)}
.lb-frame>img,.lb-frame>video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.lb-ph{filter:blur(22px);transform:scale(1.1);object-fit:cover!important}
.lb-media{opacity:0;transition:opacity .45s ease}
.lb-frame.ready .lb-media{opacity:1}
.lb-frame video.lb-media{background:#000}
.lb-nav{position:absolute;top:50%;z-index:2;width:54px;height:54px;margin-top:-27px}
.lb-prev{left:clamp(10px,2vw,28px)}
.lb-next{right:clamp(10px,2vw,28px)}
.lb.single .lb-nav{display:none}
.lb-bottom{display:flex;flex-direction:column;align-items:center;gap:14px;padding:14px clamp(14px,2.5vw,28px) max(18px,env(safe-area-inset-bottom));z-index:3;min-width:0}
.lb-strip{display:flex;gap:6px;max-width:100%;overflow-x:auto;padding:4px 2px;scrollbar-width:none}
.lb-strip::-webkit-scrollbar{display:none}
.lb-strip:empty{display:none}
.lb-strip button{position:relative;flex:none;width:64px;height:44px;padding:0;border:0;background:#141416;opacity:.4;cursor:pointer;overflow:hidden;transition:opacity .2s ease,outline-color .2s ease;outline:1.5px solid transparent;outline-offset:2px}
.lb-strip button:hover{opacity:.8}
.lb-strip button.on{opacity:1;outline-color:var(--ink)}
.lb-strip img{width:100%;height:100%;object-fit:cover;display:block}
.lb-play{position:absolute;inset:0;margin:auto;width:0;height:0;border-left:9px solid #fff;border-top:6px solid transparent;border-bottom:6px solid transparent;filter:drop-shadow(0 0 3px rgba(0,0,0,.7))}
.lb.idle .lb-top,.lb.idle .lb-nav,.lb.idle .lb-strip{opacity:0;pointer-events:none}
.lb.idle{cursor:none}
.lb-top,.lb-strip{transition:opacity .35s ease}
@media (hover:none),(max-width:700px){
  .lb-nav{display:none}
  .lb-strip{display:none}
  .lb-slide{padding:0}
  .lb-frame{box-shadow:none}
}
@media (prefers-reduced-motion:reduce){.lb,.lb-slide,.lb-media,.lb-btn{transition:none}}
