/* Public venue scene only. Keep local editing and admin previews independent. */
body:not(.admin-mode) .venue-page{padding-top:0!important}
/* A single light glass layer behind the 3D scene's top controls. */
body:not(.admin-mode) .venue-page:has(.viewer:not(.venue-3d-hidden))::before{content:"";position:fixed;top:0;left:0;right:0;height:calc(env(safe-area-inset-top,0px) + 144px);z-index:8;pointer-events:none;background:rgba(235,238,240,.48);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.32);opacity:1;transition:opacity .4s ease}
body:not(.admin-mode) .venue-page:has(.camera-stage.is-open)::before{opacity:0}
body:not(.admin-mode) .venue-page .venue-toolbar{position:fixed;top:calc(env(safe-area-inset-top,0px) + 43px);left:50%;transform:translateX(-50%);width:calc(100% - 96px);max-width:430px;margin:0;z-index:20}
body:not(.admin-mode) .venue-page .venue-search-intro{position:fixed;top:calc(env(safe-area-inset-top,0px) + 11px);left:50%;transform:translateX(-50%);width:calc(100% - 40px);max-width:430px;margin:0;z-index:20;pointer-events:none}
body:not(.admin-mode) .venue-page .venue-toolbar .search{height:42px;min-height:42px;padding:0 14px;background:rgba(245,246,247,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
body:not(.admin-mode) .venue-page .venue-toolbar select{height:40px;font-size:17px;padding-right:8px;min-width:0}
body:not(.admin-mode) .venue-page .venue-return{top:0;height:42px;min-height:42px;background:transparent}
.venue-page .venue-caption{text-align:center;font-size:clamp(14px,4.1vw,18px);font-weight:650;line-height:1.35;color:#182a31;text-shadow:0 1px 3px white;pointer-events:none}
.venue-page .venue-caption[hidden]{display:none}
.venue-page .venue-scene-tools{position:fixed;top:calc(env(safe-area-inset-top,0px) + 96px);left:14px;right:14px;display:flex;align-items:center;justify-content:space-between;z-index:20;pointer-events:none}
.venue-page .venue-scene-tools>*{pointer-events:auto;background:rgba(235,239,241,.65);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(170,184,192,.32);border-radius:12px;color:#263d46;min-height:36px;margin:0;font-size:13px}
.venue-page .venue-scene-tools>.venue-caption{position:absolute;left:50%;transform:translateX(-50%);display:block;width:max-content;max-width:calc(100vw - 220px);min-width:0;min-height:0;margin:0;padding:0;background:transparent;border:0;border-radius:0;backdrop-filter:none;-webkit-backdrop-filter:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.venue-page .venue-scene-tools>.venue-caption[hidden]{display:none}
.venue-page .venue-hide-labels{display:flex;align-items:center;gap:6px;padding:6px 9px;cursor:pointer}
.venue-page .venue-hide-labels input{width:16px;height:16px;min-height:0;margin:0;accent-color:#263d46}
.venue-page #overview{padding:6px 14px}
.venue-page .scene-navigation .scene-hide-zone-labels,.venue-page .scene-navigation-hint{display:none!important}
.venue-page .scene-navigation{max-width:none}
.venue-page .venue-view-switch{position:fixed;right:14px;bottom:calc(max(28px,env(safe-area-inset-bottom,0px)) + 84px);display:flex;gap:3px;background:rgba(13,14,25,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding:4px;border-radius:25px;z-index:11;box-shadow:0 3px 15px #14232b17}
.venue-page .venue-view-switch button{border:0;background:transparent;color:#d8dde1;border-radius:22px;min-width:40px;min-height:36px;padding:6px 10px;font-size:13px;font-weight:650}
.venue-page .venue-view-switch button[aria-pressed=true]{background:#fff;color:#14232b;box-shadow:0 1px 6px #0002}
.venue-page .venue-plan{position:fixed;inset:0;z-index:1;background:#fafbfc;touch-action:none}
.venue-page .venue-plan[hidden]{display:none}
.venue-page .venue-plan canvas{width:100%;height:100%;display:block;touch-action:none}
.venue-page .viewer.venue-3d-hidden{visibility:hidden}
body:not(.admin-mode) .venue-page .seat-drawer>summary{background:rgba(224,229,232,.58);border:1px solid rgba(178,190,196,.34);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 3px 14px #12232d0a;color:#344b55}
body:not(.admin-mode) .venue-page .seat-drawer[open]>.panel{background:rgba(236,239,241,.78);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(178,190,196,.35)}
.venue-page .seat-drawer{pointer-events:none}
.venue-page .seat-drawer>summary,.venue-page .seat-drawer>.panel{pointer-events:auto}
.venue-page:has(.seat-drawer[open]) .venue-view-switch{visibility:hidden}
@media(max-width:767px),(pointer:coarse){.venue-page .scene-navigation-buttons{display:none!important}.venue-page .scene-navigation{display:none!important}}
@media(min-width:768px){.venue-page .venue-view-switch{bottom:calc(max(28px,env(safe-area-inset-bottom,0px)) + 90px)}}
.venue-page .seat-picker{--seat-keyboard-inset:0px;--seat-visible-height:100dvh}
.venue-page .seat-picker-toggle{position:fixed;z-index:16;left:50%;transform:translateX(-50%);bottom:calc(max(28px,env(safe-area-inset-bottom,0px)) + 80px);border:1px solid #b2bec654;background:rgba(224,229,232,.58);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#344b55;min-height:36px;border-radius:22px;font-size:13px;padding:5px 12px}
.venue-page .seat-picker-backdrop{position:fixed;inset:0;z-index:40;width:100%;height:100%;border:0;border-radius:0;background:rgba(18,29,37,.12);margin:0;padding:0;opacity:0;transition:opacity .4s ease;touch-action:none}
.venue-page .seat-picker-sheet{position:fixed;z-index:45;left:50%;bottom:var(--seat-keyboard-inset);width:min(100%,550px);max-height:calc(var(--seat-visible-height) - 24px);overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box;padding:9px 18px calc(18px + env(safe-area-inset-bottom,0px));border:1px solid #b2bec654;border-bottom:0;border-radius:24px 24px 0 0;background:rgba(230,236,239,.88);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);box-shadow:0 -6px 32px #18293118;transform:translate(-50%,100%);opacity:0;transition:transform .4s cubic-bezier(.22,.7,.24,1),opacity .4s ease}
.venue-page .seat-picker.is-open .seat-picker-sheet{transform:translate(-50%,var(--seat-drag-offset,0px));opacity:1}
.venue-page .seat-picker.is-open .seat-picker-backdrop{opacity:1}
.venue-page .seat-picker.is-dragging .seat-picker-sheet,.venue-page .seat-picker.is-dragging .seat-picker-backdrop{transition:none}
.venue-page .seat-picker-sheet[hidden],.venue-page .seat-picker-backdrop[hidden],.venue-page .seat-picker [hidden]{display:none!important}
.seat-picker-drag-region{height:44px;margin:-9px -18px 2px;padding:13px 18px 0;box-sizing:border-box;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.seat-picker-drag-region:active{cursor:grabbing}
.seat-picker-handle{width:32px;height:4px;border-radius:3px;background:#a5b1b9;margin:0 auto}
.seat-picker-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
.seat-picker-grid label{display:flex;flex-direction:column;gap:0;font-size:13px;color:#324953;margin:0;min-width:0}
.seat-picker-grid input{box-sizing:border-box;width:100%;min-width:0;height:42px;margin-top:5px;padding:8px 10px;font-size:16px;line-height:24px;border-radius:10px;border:1px solid #b8c5cc80;background:rgba(255,255,255,.66);color:#1d333e}
.seat-picker-grid input:focus{outline:2px solid #537781;outline-offset:1px}
.seat-zone-field{position:relative}
.seat-zone-results{grid-column:1/-1;margin-top:-6px;background:rgba(250,252,253,.85);border:1px solid #bac7cf70;border-radius:10px;overflow:hidden}
.seat-zone-results button{display:flex;align-items:center;justify-content:space-between;gap:5px;width:100%;min-height:38px;padding:6px 9px;border:0;border-bottom:1px solid #c8d1d64a;border-radius:0;text-align:left;background:transparent;font-size:13px;color:#263f4b}
.seat-zone-results button small{font-size:11px;color:#5b6e78;white-space:normal}
.seat-zone-results button[aria-selected=true]{background:#d7e4e8}
.seat-zone-results>div{padding:10px;font-size:13px;color:#556c78}
.seat-picker-actions,.seat-location-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:15px}
.seat-picker-actions button,.seat-location-choices button{min-width:0;min-height:44px;box-sizing:border-box;padding:8px 6px;margin:0;border-radius:12px;font-size:14px;line-height:22px}
.seat-picker-ambiguity{background:#ffffff70;border-radius:12px;padding:10px;margin-top:12px}
.seat-picker-ambiguity p{font-size:13px;margin:0;color:#314b57}
.seat-picker-ambiguity .seat-location-choices{margin-top:8px}
.seat-picker #seat-picker-error{font-size:13px;margin:10px 0 0}
@media(prefers-reduced-motion:reduce){.venue-page .seat-picker-sheet,.venue-page .seat-picker-backdrop{transition-duration:0s}}

/* Virtual phone camera: the live WebGL canvas stays sharp through the phone viewport. */
.venue-page .camera-mode-toggle{position:fixed;left:18px;bottom:calc(max(28px,env(safe-area-inset-bottom,0px)) + 84px);z-index:22;width:54px;height:54px;min-height:54px;padding:0;border-radius:50%;display:grid;place-items:center;background:#0c0d17;color:#fff;border:3px solid #fff;box-shadow:0 4px 18px #10162538;transition:transform .2s ease,background .2s ease}
.venue-page .camera-mode-toggle[aria-pressed=true]{background:#fff;color:#0c0d17;border-color:#0c0d17;transform:scale(.96)}
.venue-page .camera-mode-toggle svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.venue-page .camera-mode-toggle[hidden]{display:none}
.venue-page .camera-stage{position:fixed;inset:0;z-index:14;pointer-events:none;overflow:hidden}
.venue-page .camera-stage[hidden]{display:none}
.venue-page .camera-glass{position:fixed;inset:0;z-index:14;width:auto;height:auto;min-height:0;margin:0;padding:0;border:0;border-radius:0;pointer-events:none;background:rgba(233,238,240,.18);backdrop-filter:blur(11px) saturate(.84);-webkit-backdrop-filter:blur(11px) saturate(.84);opacity:0;transition:opacity .4s ease;cursor:pointer}
.venue-page .camera-stage.is-open .camera-glass{opacity:1;pointer-events:auto}
.venue-page .camera-phone-wrap{position:fixed;left:50%;top:50%;z-index:18;transform:translate(-50%,-50%);pointer-events:none}
.venue-page .camera-phone{position:relative;width:min(58vw,310px);aspect-ratio:.515;border:5px solid #25262b;border-radius:clamp(28px,8vw,46px);background:#050505;box-shadow:0 10px 35px #07101945,inset 0 0 0 2px #aeb2b5;overflow:hidden;pointer-events:auto;opacity:0;transform:translate(calc(50vw + 62%),calc(50vh + 62%)) rotate(16deg) scale(.76);transform-origin:85% 90%;transition:transform .4s cubic-bezier(.2,.72,.24,1),opacity .22s ease}
.venue-page .camera-stage.is-open .camera-phone{opacity:1;transform:translate(0,0) rotate(0) scale(1)}
.venue-page .camera-phone-viewport{position:absolute;inset:0 0 23.5%;border-radius:clamp(22px,7vw,38px) clamp(22px,7vw,38px) 2px 2px;overflow:hidden;touch-action:none;pointer-events:auto;background:#fff;isolation:isolate}
.venue-page .camera-live-canvas{position:absolute;inset:0;z-index:0;width:100%!important;height:100%!important;display:block}
.venue-page .camera-black-flash{position:absolute;inset:0;z-index:10;pointer-events:none;background:#000;opacity:0}
.venue-page .camera-black-flash.is-flashing{animation:camera-black-flash .12s linear}
.venue-page .camera-zoom-buttons{position:absolute;z-index:6;left:50%;bottom:10px;transform:translateX(-50%);display:flex;align-items:center;gap:12px}
.venue-page .camera-zoom-buttons button{width:37px;height:37px;min-height:37px;padding:0;border-radius:50%;background:#0b0c14e8;color:#fff;font-size:13px;border:2px solid transparent;box-shadow:0 1px 6px #0003}
.venue-page .camera-zoom-buttons button[aria-pressed=true]{background:#fff;color:#0b0c14;border-color:#0b0c14}
.venue-page .camera-phone-controls{position:absolute;z-index:7;left:0;right:0;bottom:0;height:24%;display:flex;align-items:center;justify-content:space-around;background:#050505;padding:0 10px}
.venue-page .camera-thumbnail{width:38px;height:38px;border-radius:5px;background:linear-gradient(150deg,#65716c,#141d22 55%,#9b8f7d);background-size:cover;background-position:center;border:1px solid #78827c;pointer-events:none}
.venue-page .camera-shutter{width:60px;height:60px;min-height:60px;padding:0;border-radius:50%;background:#fff;border:4px solid #050505;box-shadow:0 0 0 3px #fff;transform:scale(1)}
.venue-page .camera-shutter:disabled{opacity:1;cursor:default}
.venue-page .camera-shutter.is-pressed{animation:camera-shutter-press .22s cubic-bezier(.2,.75,.25,1)}
.venue-page .camera-flip{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#1b1b1b;color:#fff;font-size:25px}
.venue-page .camera-flying-shot{position:absolute;z-index:9;display:none;object-fit:cover;border-radius:18px;pointer-events:none;transform-origin:top left;box-shadow:0 4px 14px #0004}
.venue-page .camera-flying-shot.is-throwing{display:block;animation:camera-shot-throw .5s cubic-bezier(.18,.68,.26,1) both}
.venue-page:has(.camera-stage.is-open) .venue-view-switch,.venue-page:has(.camera-stage.is-open) .seat-picker-toggle{visibility:hidden}
@keyframes camera-black-flash{0%,100%{opacity:0}8%,58%{opacity:1}}
@keyframes camera-shutter-press{0%,100%{transform:scale(1)}42%{transform:scale(.88)}}
@keyframes camera-shot-throw{0%{opacity:.96;transform:translate(var(--shot-start-x),var(--shot-start-y)) scale(var(--shot-start-scale)) rotate(0)}52%{opacity:.9;transform:translate(var(--shot-mid-x),var(--shot-mid-y)) scale(.34) rotate(-9deg)}100%{opacity:.88;transform:translate(var(--shot-dx),var(--shot-dy)) scale(var(--shot-scale)) rotate(-14deg)}}
@media(min-width:768px){.venue-page .camera-mode-toggle{bottom:calc(max(28px,env(safe-area-inset-bottom,0px)) + 90px)}.venue-page .camera-phone{width:min(38vw,310px)}.venue-page:has(.camera-mode-toggle) .scene-navigation{left:82px}}
@media(prefers-reduced-motion:reduce){.venue-page .camera-phone,.venue-page .camera-glass,body:not(.admin-mode) .venue-page::before{transition-duration:.4s!important}.venue-page .camera-shutter.is-pressed{animation-duration:.22s!important}.venue-page .camera-black-flash.is-flashing{animation-duration:.12s!important}.venue-page .camera-flying-shot.is-throwing{animation-duration:.5s!important}}
