/* Measurements from the five supplied UI sheets. Browser safe areas replace phone status artwork. */
body:not(.admin-mode){background:#fff;color:#101114;font-family:"PingFang SC","Microsoft YaHei",Arial,sans-serif}
body:not(.admin-mode) .brand{display:none}
body:not(.admin-mode) #app{position:relative;width:100%;max-width:600px;min-height:100dvh;margin:auto;padding:0 20px 115px}
body:not(.admin-mode) .search-wrap{width:77%;max-width:430px;margin:0 auto;z-index:10}
body:not(.admin-mode) .search{height:49px;border-radius:30px;padding:0 9px 0 14px;border:1px solid #e0e0e0;box-shadow:0 2px 8px #0000000b;background:#fff;gap:0}
body:not(.admin-mode) .search input{font-size:18px;line-height:1.2;padding:0;letter-spacing:0;color:#111;min-width:0}
body:not(.admin-mode) .search input::placeholder{color:#aaa}
body:not(.admin-mode) .search button[type=submit]{font-size:18px;font-weight:400;border:0;padding:0 5px 0 9px;min-height:44px}
body:not(.admin-mode) .clear{font-size:14px;color:#fff;background:#ccc;border-radius:50%;width:15px;height:15px;min-height:15px;flex:0 0 15px;line-height:14px;padding:0;margin:0 7px}
.search:has(input:placeholder-shown) .clear{visibility:hidden}
body:not(.admin-mode) .suggest{top:57px;font-size:14px;box-shadow:0 5px 18px #0001}
body:not(.admin-mode) .page-head{display:none}
body:not(.admin-mode) .venue-card{padding:0;background:none;border-radius:0;transform:none}
body:not(.admin-mode) .venue-card small{display:none}
body:not(.admin-mode) .venue-card strong{font-size:18px;font-weight:400;line-height:1.45;margin:4px 0 0;white-space:normal}
body:not(.admin-mode) .venue-icon{display:block;width:100%;height:115px;object-fit:contain}
body:not(.admin-mode) .venue-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 12px}
.home-page .home{padding-top:30dvh;transition:padding-top .35s ease}
.home-page .home.focused{padding-top:10dvh}
body:not(.admin-mode) .home .search-wrap{width:77%}
body:not(.admin-mode) .carousel{width:calc(100% + 40px);max-width:none;margin:49px -20px 0;padding:0 0 10px;gap:20px;mask-image:none;scrollbar-width:none}
body:not(.admin-mode) .carousel .venue-card{flex:0 0 170px}
body:not(.admin-mode) .carousel .venue-icon{height:112px}
body:not(.admin-mode) .carousel .venue-card strong{font-size:18px;white-space:nowrap}
.search-page{padding-top:28.5dvh!important}
.search-page #results{margin-top:42px}
.search-page #results>.section-note{display:none}
.search-page .venue-grid:has(.venue-card:only-child){display:block;width:90%;margin:auto}
body:not(.admin-mode) .search-page .venue-grid:has(.venue-card:only-child) .venue-icon{height:200px}
.search-page .venue-card:only-child strong{display:none}
.list-page,.photos-page,.venue-page{padding-top:10dvh!important}
.list-page #results{margin-top:30px}
.photos-page #photo-feed{margin:25px 0 0}
body:not(.admin-mode) .photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
body:not(.admin-mode) .photo-card{border-radius:8px;border:1px solid #e7e7e3;box-shadow:0 1px 2px #00000006}
body:not(.admin-mode) .photo-card img{height:auto;aspect-ratio:1.32;object-fit:cover;border-radius:7px 7px 0 0}
body:not(.admin-mode) .photo-card .caption{padding:8px 7px 6px}
body:not(.admin-mode) .photo-card strong{font-size:12px;line-height:1.35;font-weight:600;margin-bottom:6px}
body:not(.admin-mode) .photo-card small{font-size:11px;line-height:1.3;color:#8a8d86;margin-bottom:5px}
.photos-page>.section-note{display:none}
body:not(.admin-mode) #nav{width:min(86.5vw,440px);height:70px;padding:3px;background:#0d0e19;border-radius:45px;bottom:max(28px,env(safe-area-inset-bottom));box-shadow:none;justify-content:space-between}
body:not(.admin-mode) #nav a{width:64px;height:64px;flex:0 0 64px;border-radius:50%;color:#c8c9cd;gap:0}
body:not(.admin-mode) #nav a.active{background:#fff;color:#111314;box-shadow:0 0 0 1px #deded7 inset}
body:not(.admin-mode) #nav svg{width:25px;height:25px;stroke-width:1.65}
body:not(.admin-mode) #nav a span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.venue-page>#back,.venue-page>.page-head{display:none}
.venue-page #scene-content{position:static}
.venue-page .scene-layout{display:block}
.venue-page .viewer{position:absolute;top:25dvh;left:0;width:100%;height:55dvh!important;border:0;border-radius:0;background:#fff;overflow:hidden}
.venue-page .viewer canvas{background:#fff}
.venue-page .scene-help{display:none}
.venue-page .scene-label{top:10px;left:15px;right:15px;justify-content:center}
.venue-page .scene-label>b:last-child{display:none}
.venue-page .viewer:not([data-mode]),.venue-page .viewer[data-mode=overview]{--overview:1}
.venue-page .viewer[data-mode=overview] .scene-label,.venue-page .viewer:not([data-mode]) .scene-label{display:none}
.venue-page .viewer-controls{bottom:10px;left:50%;transform:translateX(-50%)}
.venue-page .viewer-controls button{border:0;background:#fff;font-size:12px;min-height:32px;padding:0 10px;box-shadow:none;color:#888}
.venue-page .viewer[data-mode=overview] .viewer-controls{opacity:0;pointer-events:none}
.venue-page .viewer:hover .viewer-controls,.venue-page .viewer:focus-within .viewer-controls{opacity:1;pointer-events:auto}
.seat-drawer{position:fixed;z-index:15;bottom:108px;left:50%;transform:translateX(-50%);width:min(calc(100% - 40px),550px);margin:0}
.seat-drawer>summary{list-style:none;text-align:center;font-size:12px;line-height:24px;padding:5px;color:#888;cursor:pointer;width:max-content;margin:auto;background:#fffffff2;border-radius:20px;min-height:34px}
.seat-drawer>summary::-webkit-details-marker{display:none}
.seat-drawer[open]>summary{color:#111}
.seat-drawer>.panel{max-height:43dvh;overflow:auto;padding:18px;border:1px solid #eee;border-radius:20px;background:#fffffff7;box-shadow:0 -4px 25px #00000008}
.seat-drawer .panel h2{font-size:16px;margin:10px 0}
.seat-drawer .panel>.section-note{font-size:12px}
.seat-drawer .panel>label{margin:0 0 10px;font-size:12px}
.seat-drawer #area-photos h2{font-size:15px}
.venue-page #scene-content>.empty{padding-top:16dvh}
.venue-page #scene-content>.empty .venue-icon{height:160px}
.me-page{padding-top:10dvh!important}
.me-page .narrow{margin-top:0}
body:not(.admin-mode){scrollbar-width:thin;scrollbar-color:#10121d #fff}
html:has(body:not(.admin-mode))::-webkit-scrollbar{width:3px}
html:has(body:not(.admin-mode))::-webkit-scrollbar-thumb{background:#10121d;border-radius:3px}
html:has(body:not(.admin-mode))::-webkit-scrollbar-track{background:#fff}
@media(min-width:768px){body:not(.admin-mode) #app{max-width:720px}.home-page .home{padding-top:30dvh}.search-page{padding-top:28dvh!important}body:not(.admin-mode) .search-wrap{max-width:430px}.list-page #results{max-width:600px;margin:35px auto 0}body:not(.admin-mode) .venue-icon{height:180px}body:not(.admin-mode) .carousel .venue-card{flex-basis:230px}body:not(.admin-mode) .carousel .venue-icon{height:165px}.photos-page #photo-feed{max-width:640px;margin:30px auto 0}.venue-page .viewer{height:60dvh!important;top:21dvh}body:not(.admin-mode) #nav{height:76px}body:not(.admin-mode) #nav a{height:70px;width:70px;flex-basis:70px}}
@media(max-height:650px){.home-page .home{padding-top:25dvh}.search-page{padding-top:23dvh!important}.home-page .carousel{margin-top:25px!important}.seat-drawer{bottom:95px}body:not(.admin-mode) #nav{bottom:16px}}
.search-page .search-wrap{width:85%!important}.search-page #results{margin-top:28px}.search-page .venue-grid:has(.venue-card:only-child){width:84%}body:not(.admin-mode) .carousel{margin-top:38px}.list-page #results{margin-top:17px}.list-page .venue-grid{row-gap:10px}

body:not(.admin-mode) .icon-missing,.icon-missing{display:flex;align-items:center;justify-content:center;color:#aaa;font-size:14px;background:#fafafa;border-radius:12px}
/* User correction: no inner focus ring; large result artwork, with only whitespace cropped by its display frame. */
body:not(.admin-mode) .search input:focus,body:not(.admin-mode) .search input:focus-visible{outline:none;box-shadow:none}
body:not(.admin-mode) .search:has(input:focus-visible){border-color:#c5c5c5}
.search-page .venue-grid:has(.venue-card:only-child){width:min(100%,370px)}
body:not(.admin-mode) .search-page .venue-grid:has(.venue-card:only-child) .venue-icon{height:auto;aspect-ratio:370 / 280;object-fit:cover}
/* Community empty state spans both columns and centers in the space above navigation. */
body:not(.admin-mode) .photos-page #photo-feed:has(>.empty:only-child){display:flex;align-items:center;justify-content:center;min-height:max(180px,calc(90dvh - 190px));margin-top:25px}
body:not(.admin-mode) .photos-page #photo-feed>.empty:only-child{width:100%;padding:0 12px;text-align:center}
/* Desktop carousel: soften entry and exit without covering clickable cards. */
@media(min-width:768px){
  body:not(.admin-mode) .home-page .carousel{
    -webkit-mask-image:linear-gradient(to right,transparent 0%,#000 12%,#000 88%,transparent 100%);
    mask-image:linear-gradient(to right,transparent 0%,#000 12%,#000 88%,transparent 100%);
  }
}

/* Keep venue actions beside the heading, within their original form. */
.venue-editor-header{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:16px}.venue-editor-header h2{margin:0;flex-shrink:0}.venue-editor-header .actions{margin:0;display:flex;gap:8px;flex-wrap:wrap}
/* Animate fractional-pixel transforms on the compositor instead of rounding scrollLeft every frame. */
body:not(.admin-mode) .carousel{display:block;overflow:hidden;touch-action:pan-y pinch-zoom}
.carousel-track{display:flex;width:max-content;will-change:transform}
.carousel-group{display:flex;flex:none;gap:20px;padding-right:20px}
.carousel-track .venue-card{user-select:none;-webkit-user-select:none}
/* One viewport-centered status for concurrent requests and model loading. */
#loading-status{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;pointer-events:none;color:#7d8589;font-size:14px;text-align:center}
#loading-status[hidden],.loader,.scene-status[hidden]{display:none!important}
/* Keep the concert selector visible without opening the seat controls. */
.venue-page .event-picker{position:relative;z-index:6;width:min(90%,430px);margin:18px auto;font-size:12px;color:#7d8589}
.venue-page .event-picker select{font-size:13px;color:#20272c;background:#fff;border-radius:14px}
/* Venue toolbar occupies the original search slot, with the same 49px height and 18px text. */
body:not(.admin-mode) .venue-toolbar{position:relative}
body:not(.admin-mode) .venue-toolbar select{width:100%;height:47px;min-height:0;border:0;border-radius:30px;background:transparent;padding:0 22px 0 0;font-size:18px;line-height:1.2;color:#111;text-overflow:ellipsis;outline:none;box-shadow:none}
body:not(.admin-mode) .venue-return{position:absolute;right:calc(100% + 3px);top:2px;width:38px;height:44px;min-height:44px;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#111}
.venue-return svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* The model uses the whole viewport; navigation and concert controls float above it. */
body:not(.admin-mode) .venue-page .viewer{position:fixed;inset:0;top:0;width:100%;height:100dvh!important;z-index:0;border-radius:0}
body:not(.admin-mode) .venue-page .venue-toolbar{z-index:10}
body:not(.admin-mode) .venue-page .viewer-controls{position:fixed;bottom:150px;z-index:5}
body:not(.admin-mode) .venue-page .seat-drawer{z-index:15}
