/* A private preview salon: the room stays in view as the evening takes shape. */
#booking-dialog{width:min(1540px,calc(100vw - 40px));height:calc(100dvh - 40px);max-height:none;max-width:none;border:1px solid var(--line);overflow:hidden;background:var(--bg)}
.booking-experience{display:grid;grid-template-columns:minmax(280px,.75fr) minmax(0,1.5fr);height:100%;min-height:0}
.booking-atmosphere{position:relative;overflow:hidden;isolation:isolate;padding:40px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid var(--line);background:#090e12}
.booking-atmosphere>img.booking-image{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;z-index:-2;opacity:.72;transform:scale(1.04)}
.booking-atmosphere:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#080b1040,#080b1040 20%,#080b10ef 100%)}
.booking-venue-logo{width:150px;height:65px;object-fit:contain;object-position:left center;filter:drop-shadow(0 2px 10px #0008)}
.booking-story{margin-top:80px}
#booking-chapter{color:#e0cba4;letter-spacing:.15em;text-transform:uppercase;font-size:10px;margin-bottom:20px}
#booking-stage-title{font:clamp(36px,3.8vw,65px)/1.05 var(--display);letter-spacing:-.04em;color:#fff5e5;max-width:360px}
#booking-summary{margin:30px 0 22px;border-top:1px solid #ffffff38}
#booking-summary>div{padding:15px 0;border-bottom:1px solid #ffffff26}
#booking-summary dt{font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:#bfc4c5}
#booking-summary dd{margin:5px 0 0;font-size:15px;color:#fff1d9;line-height:1.5}
.booking-image-note{font-size:10px;line-height:1.6;color:#c0c3c7;max-width:280px}
#booking-dialog .booking-shell{overflow:auto;min-height:0;padding:35px 40px 24px;scrollbar-color:var(--line) var(--bg);scrollbar-width:thin}
#booking-dialog .booking-header{align-items:center;padding-bottom:10px}
#booking-dialog .booking-header h2{font-size:clamp(26px,2.7vw,40px);line-height:1.1}
#booking-dialog .booking-header .section-kicker{font-size:10px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px}
#booking-dialog .steps{gap:0;justify-content:space-between;border-bottom:0;padding:0;margin:24px 0 36px;counter-reset:step}
#booking-dialog .steps li{flex:1;border-top:2px solid var(--line);padding-top:12px;gap:10px;font-size:10px;text-transform:uppercase;letter-spacing:.1em}
#booking-dialog .steps li[aria-current=step]{border-color:var(--accent)}
#booking-dialog .steps li[aria-current=step] span{text-decoration:none}
#booking-dialog #step-heading{font-size:clamp(32px,3vw,44px);line-height:1.15;letter-spacing:-.035em;margin-bottom:12px;outline-offset:8px}
#booking-dialog .booking-intro{font-size:13px;line-height:1.7;color:var(--muted);margin:0 0 23px;max-width:560px}
.date-suggestions{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.date-suggestions button{border:1px solid var(--line);background:transparent;color:var(--ink);font:12px/1.5 var(--body);padding:15px 8px;min-height:56px;transition:background .2s,border-color .2s}
.date-suggestions button:hover{border-color:var(--accent);background:var(--panel)}
.date-suggestions button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--bg)}
.date-note{font-size:10px;color:var(--muted);line-height:1.6;margin-bottom:24px}
#booking-dialog .form-grid{gap:18px;margin:0 0 28px}
#booking-dialog label{font-size:11px;letter-spacing:.02em}
#booking-dialog input{border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 75%,transparent);min-height:54px;padding:14px;font-size:14px}
#booking-dialog input:focus{border-color:var(--accent)}
#booking-dialog .field-note{font-size:10px;line-height:1.6}
.table-chapter{display:flex;gap:15px;align-items:center;margin:30px 0 20px;padding-top:27px;border-top:1px solid var(--line)}
.table-chapter>span{font:11px var(--body);height:37px;width:37px;display:grid;place-items:center;border:1px solid var(--accent);border-radius:50%;color:var(--accent);flex-shrink:0}
.table-chapter h4{font:28px/1.2 var(--display);letter-spacing:-.03em;margin:0}
.table-chapter p{font-size:11px;color:var(--muted);margin-top:6px}
#booking-map .map-caption{font-size:10px;margin-bottom:12px}
#booking-map .map-explorer{grid-template-columns:minmax(0,1fr) 185px;gap:18px}
#booking-map .map-viewport{min-height:0;border-color:var(--line)}
#booking-map .map-toolbar{gap:6px}
#booking-map .map-toolbar .icon-button{height:36px;min-width:36px;font-size:18px}
#booking-map .map-toolbar .reset-map{font-size:10px;padding:0 10px}
#booking-map .map-note{font-size:9px;line-height:1.6}
#booking-map .selected-preview{width:100%;height:110px;object-fit:cover;margin-bottom:16px}
#booking-map .selection-label{font-size:8px;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin:0 0 5px}
#booking-map .map-selected{font:28px/1.1 var(--display)!important;margin:0 0 12px;color:var(--ink)!important}
#booking-map .selection-facts{font-size:10px;line-height:1.6;margin:0 0 13px;color:var(--muted)}
#booking-map .map-list{max-height:210px;gap:5px;padding:5px;margin:0 -5px;scrollbar-width:thin}
#booking-map .table-choice{font-size:10px;padding:7px 9px;min-height:36px;flex-grow:1}
#booking-map .map-pin[aria-pressed=true] span{box-shadow:0 0 0 6px #d5b57a55,0 0 30px #d5b57a88;outline-offset:4px}
#booking-map.has-selection .selected-preview{outline:1px solid var(--accent);outline-offset:4px}
#booking-dialog .booking-actions{border-top:1px solid var(--line);padding-top:22px;margin-top:28px;display:flex;justify-content:space-between;gap:12px}
#booking-dialog .booking-actions .button{font-size:12px;padding:15px 20px;min-height:50px}
#booking-dialog .booking-safety{font-size:10px;line-height:1.7;margin:24px 0 0;color:var(--muted);border-top:0;text-align:left;padding:0}
#booking-dialog .sample-panel{border:1px solid var(--line);border-left:2px solid var(--accent);padding:18px 20px;background:var(--panel);font-size:12px;line-height:1.7;margin-bottom:32px}
#booking-dialog[data-chapter='1'] .form-grid{grid-template-columns:1fr;margin-top:32px}
#booking-dialog[data-chapter='1'] .form-grid input{max-width:100%}
#booking-dialog .review-ticket{padding:26px;border:1px solid var(--line);position:relative;background:linear-gradient(145deg,var(--panel),transparent)}
#booking-dialog .review-ticket:before{content:'';position:absolute;inset:5px;border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);pointer-events:none}
.ticket-kicker{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--accent);margin:0 0 25px}
#booking-dialog .review-list{margin:0}
#booking-dialog .review-list>div{grid-template-columns:100px 1fr;border-bottom:1px solid var(--line);padding:13px 0;gap:20px}
#booking-dialog .review-list dt{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}
#booking-dialog .review-list dd{font-size:14px;overflow-wrap:anywhere}
#booking-dialog .review-ticket>.text-link{font-size:11px;margin-top:15px}
#booking-dialog .review-consent{font-size:11px;line-height:1.7;margin:24px 0 0;align-items:flex-start}
#booking-dialog .review-consent input{min-height:20px;padding:0;flex-shrink:0;margin-top:2px}
#booking-dialog .status-message{padding:22px;background:var(--panel);border:1px solid var(--accent);margin:20px 0;font-size:13px}
#booking-dialog .status-message p{font-size:12px;line-height:1.7;margin:10px 0 18px}
#booking-dialog .form-error{font-size:12px;color:#f0bf9f;margin:15px 0 0}
#booking-dialog .complete-state{text-align:left;padding:35px 0}
#booking-dialog .complete-symbol{height:70px;width:70px;display:grid;place-items:center;border:1px solid var(--accent);border-radius:50%;font-size:30px;margin:0 0 35px;color:var(--accent)}
#booking-dialog .complete-state p{font-size:14px;line-height:1.8;color:var(--muted);margin:20px 0}
#booking-dialog .complete-state .button{margin-top:15px;font-size:12px}
html[data-venue=ab] #booking-stage-title{font-style:italic}
html[data-venue=sy] .booking-atmosphere:before{content:'';position:absolute;inset:18px;border:1px solid #d4b68165;border-radius:45% 45% 0 0 / 28% 28% 0 0;pointer-events:none}
html[data-venue=sy] .booking-atmosphere{padding:45px 35px}
html[data-venue=st] #booking-stage-title{font-family:var(--display);font-weight:500;letter-spacing:-.06em}
html[data-venue=st] .booking-atmosphere{border-right-color:#b7d7fb80}
html[data-venue=st] .review-ticket:before{border-width:0 0 0 2px}
/* Photography viewer controls remain adjacent to the image on every screen size. */
#room-viewer .viewer-shell{padding:28px 4vw 25px;background:var(--bg)}
#room-viewer .viewer-header{border-bottom:1px solid var(--line);margin-bottom:20px}
#room-viewer .viewer-header p{font-size:10px;letter-spacing:.15em;text-transform:uppercase}
#room-viewer .viewer-header h2{font-size:40px}
#room-viewer .viewer-stage{height:calc(100svh - 270px);min-height:320px;border:1px solid var(--line)}
#room-viewer .view-description{left:36px;bottom:30px}
#room-viewer .view-description h3{font-size:clamp(34px,4vw,60px)}
#room-viewer .view-description p{font-size:11px;line-height:1.7}
.viewer-arrow{position:absolute;z-index:2;top:40%;border:1px solid #ffffff65;background:#090e1275;backdrop-filter:blur(10px);color:white;width:48px;height:48px;font-size:23px;border-radius:50%}
#previous-view{left:20px}#next-view{right:20px}
#room-viewer .view-choice{border-color:var(--line);padding:5px 18px 5px 5px;min-height:62px}
#room-viewer .view-choice[aria-pressed=true]{border-color:var(--accent)}
@media(max-width:1100px){.booking-experience{grid-template-columns:280px minmax(0,1fr)}.booking-atmosphere{padding:30px 25px}#booking-dialog .booking-shell{padding:28px}#booking-map .map-explorer{grid-template-columns:1fr}#booking-map .selected-preview{display:none}#booking-map .map-list{max-height:125px}#booking-map .map-sidebar{padding-top:5px}#booking-map .selection-facts{margin-bottom:12px}.date-suggestions{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){
 #booking-dialog{width:100%;height:100dvh;margin:0;border:0;overflow:auto}
 .booking-experience{display:flex;flex-direction:column;height:auto;min-height:100%;overflow:visible}
 .booking-atmosphere,html[data-venue=sy] .booking-atmosphere{padding:28px 24px;min-height:245px;border-right:0;border-bottom:1px solid var(--line)}
 .booking-venue-logo{width:100px;height:40px}
 .booking-atmosphere>img.booking-image{object-position:center 45%}
 .booking-story{margin-top:30px}
 #booking-chapter{font-size:9px;margin-bottom:10px}
 #booking-stage-title{font-size:38px;max-width:300px}
 #booking-summary{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:12px;margin:20px 0 0;border-top:1px solid #ffffff38}
 #booking-summary>div{border:0;padding:12px 0 0}
 #booking-summary dt{font-size:8px;letter-spacing:.07em}
 #booking-summary dd{font-size:11px;line-height:1.7}
 .booking-image-note{font-size:8px;margin-top:15px;max-width:none}
 #booking-dialog .booking-shell{overflow:visible;padding:28px 24px 35px}
 #booking-dialog #close-booking{position:fixed;top:18px;right:18px;z-index:5;background:#0d1423d9;border-color:#ffffff80;color:#fff}
 #booking-dialog .booking-header h2{font-size:30px}
 #booking-dialog .steps{margin:24px 0 30px}
 #booking-dialog .steps li{font-size:9px}
 #booking-dialog .form-grid{grid-template-columns:1fr 1fr;gap:12px}
 #booking-dialog .form-grid input{min-width:0;width:100%;font-size:12px;padding:11px}
 #booking-dialog .form-grid label{min-width:0;font-size:10px}
 #booking-dialog .date-suggestions{grid-template-columns:repeat(2,1fr)}
 #booking-dialog .date-suggestions button{font-size:12px;min-height:48px}
 #booking-dialog #step-heading{font-size:34px}
 #booking-dialog .review-ticket{padding:20px}
 #booking-dialog .review-list>div{grid-template-columns:70px 1fr;gap:13px}
 #booking-dialog .review-list dd{font-size:12px}
 #booking-dialog .booking-actions .button{font-size:11px;gap:12px;padding:14px 16px}
 #room-viewer .viewer-shell{padding:20px 5vw}
 #room-viewer .viewer-header h2{font-size:28px}
 #room-viewer .viewer-stage{height:53svh;min-height:330px}
 #room-viewer .view-description{left:20px;right:20px;bottom:22px}
 #room-viewer .view-description h3{font-size:34px}
 #room-viewer .view-description p{font-size:10px}
 .viewer-arrow{width:40px;height:40px;top:32%;font-size:20px}#previous-view{left:12px}#next-view{right:12px}
 #room-viewer .viewer-controls{gap:13px}
 #room-viewer .view-choice{padding:4px 8px 4px 4px;min-height:49px}
}
@media(max-width:360px){#booking-dialog .booking-shell{padding:25px 18px}#booking-summary{grid-template-columns:1.3fr 1fr}#booking-summary>div:last-child{grid-column:1/-1}#booking-dialog .form-grid{grid-template-columns:1fr}}

#booking-map .selection-image-note{font-size:8px;line-height:1.5;color:var(--muted);margin:-8px 0 17px}#booking-body>form,#booking-body>.complete-state{animation:salon-arrive .35s ease-out}#booking-dialog[data-chapter=complete] .booking-atmosphere>img.booking-image{opacity:.5}#room-viewer .viewer-arrow:hover{background:#ffffff25}
@keyframes salon-arrive{from{opacity:.55;translate:0 10px}to{opacity:1;translate:0 0}}
@media(max-width:1100px){#booking-map .selection-image-note{display:none}}
@media(min-width:761px){#booking-dialog .booking-header{position:sticky;top:0;z-index:4;background:var(--bg);box-shadow:0 -25px 0 var(--bg);padding-bottom:18px}}

#booking-dialog .review-ticket>.text-link{background:transparent;color:var(--ink);border:0;border-bottom:1px solid var(--line);font-family:var(--body);padding:8px 0}
@media(max-width:760px){.booking-venue-logo{height:30px}.booking-story{margin-top:20px}#booking-stage-title{font-size:30px}}

/* Each venue keeps its original map and every booking step in one page card. */
html[data-venue] .room-section[hidden],html[data-venue] .room-disclosure[hidden],#booking-dialog.inline-booking[hidden]{display:none!important}
html[data-venue].inline-booking-open .reservation-dock{display:none}
html[data-venue] .room-section{position:relative;scroll-margin-top:90px}
html[data-venue] :is(.sy-plan-heading,.ab-room-heading,.st-plan-prelude){padding-right:70px}
html[data-venue] #room-heading,#booking-dialog.inline-booking #step-heading{scroll-margin-top:110px}
#booking-dialog.inline-booking{display:block;position:static;inset:auto;width:100%;height:auto;max-height:none;margin:35px auto 0;padding:0;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);overflow:visible}
#booking-dialog.inline-booking .booking-experience{display:block;height:auto;min-height:0}
#booking-dialog.inline-booking .booking-atmosphere{display:none}
#booking-dialog.inline-booking .booking-shell{padding:35px 0 0;overflow:visible;max-width:850px;margin:auto}
#booking-dialog.inline-booking .booking-header{position:static;background:none;box-shadow:none}
#booking-dialog.inline-booking #close-booking{position:absolute;top:35px;right:clamp(24px,5.5vw,88px);background:var(--bg);color:var(--ink);z-index:2}
@media(max-width:700px){html[data-venue] :is(.sy-plan-heading,.ab-room-heading,.st-plan-prelude){padding-right:50px}#booking-dialog.inline-booking .booking-shell{padding:28px 0 0}#booking-dialog.inline-booking .form-grid{grid-template-columns:1fr}#booking-dialog.inline-booking #close-booking{top:25px;right:24px}}

#booking-dialog.inline-booking .inline-booking-exit{margin-top:24px}
