:root{color-scheme:light;--forest:#183d32;--forest-soft:#365c4d;--ivory:#f6f2e7;--muted:#626d62;--gold:#a47d3b;--line:rgba(56,79,59,.18);--panel:rgba(250,248,240,.94);font-family:"PingFang SC","Microsoft YaHei",sans-serif;color:var(--forest)}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#e5e5d8}
body{font-size:14px;line-height:1.5}
button,input,summary{font:inherit}
button{min-width:44px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.45);color:var(--forest);cursor:pointer;line-height:1.25;transition:background .15s ease,border-color .15s ease}
button:hover{background:#e9eddf;border-color:#84957c}button:active{background:#dce4d2}button:disabled{cursor:default;opacity:.5}
button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
h1,h2,h3,p,figure{margin:0}h1{font-size:24px;font-weight:600;letter-spacing:.12em;line-height:1.4}h2{font-size:18px;font-weight:600}h3{font-size:14px;font-weight:600}
p{overflow-wrap:anywhere;text-wrap:pretty}.hidden,[hidden]{display:none!important}
#canvas-container{position:absolute;inset:0;width:100%;height:100%;touch-action:none}#canvas-container canvas{display:block;width:100%;height:100%;touch-action:none}
#source-photo-1,#source-photo-2{display:none}
#ghost-overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;z-index:9;opacity:0;transition:opacity .15s ease}
#hotspots-layer{position:absolute;inset:0;z-index:10;overflow:hidden;pointer-events:none}
.hotspot-marker{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;z-index:1;max-width:min(230px,70vw);min-height:44px;padding:8px 12px;border:1px solid rgba(224,231,207,.7);border-radius:24px;background:rgba(24,61,50,.9);box-shadow:0 3px 12px #152e2428;color:#fffdf4;font-size:12px;line-height:1.25;text-align:left}.hotspot-marker:hover{background:#315b46;border-color:var(--ivory)}
.glass-panel{background:var(--panel);border:1px solid rgba(255,255,255,.74);box-shadow:0 7px 30px rgba(24,47,31,.13);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.viewer-header{position:fixed;top:max(18px,env(safe-area-inset-top));left:22px;right:22px;z-index:20;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;pointer-events:none}.viewer-header>*{pointer-events:auto}
.title-panel{padding:14px 20px 12px;border-radius:13px}.eyebrow{font-size:10px;letter-spacing:.15em;color:var(--forest-soft);font-weight:600}.eyebrow span{margin-left:12px;color:var(--muted);letter-spacing:.03em;font-weight:400}.desktop-hint{font-size:11px;color:var(--muted);margin-top:3px}
.header-actions{display:flex;padding:4px;border-radius:12px;gap:4px}.header-actions button{border-color:transparent;background:transparent;padding-inline:14px}.header-actions button[aria-expanded="true"]{background:var(--forest);color:var(--ivory)}
.floating-panel{position:fixed;z-index:30;width:320px;max-height:calc(100dvh - 240px);padding:18px;border-radius:14px;overflow:auto;overscroll-behavior:contain}#ref-card{left:22px;top:135px}#inspector-panel{right:22px;top:88px;max-height:calc(100dvh - 210px)}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-heading .eyebrow{font-size:9px;margin-bottom:3px;color:var(--gold)}.icon-button{padding:6px;width:44px;height:44px;border-color:transparent;background:transparent;font-size:26px;flex-shrink:0}
.segmented-control,.settings-grid,.movement-controls,.material-controls{display:grid;gap:6px}.segmented-control{grid-template-columns:1fr 1fr;margin-bottom:12px}#btn-ref-1,#btn-ref-2{font-size:12px}#btn-ref-1[aria-pressed="true"],#btn-ref-2[aria-pressed="true"]{background:var(--forest);border-color:var(--forest);color:var(--ivory)}
.reference-figure{background:#d9dfcd;border-radius:9px;overflow:hidden}.reference-figure img{display:block;width:100%;height:260px;object-fit:cover}.reference-figure figcaption{padding:10px 11px;font-size:11px;color:var(--forest-soft);line-height:1.65}
.slider-row{display:grid;grid-template-columns:1fr auto;align-items:center;margin-top:16px;gap:0 8px;font-size:12px}.slider-row output{font-size:11px;font-variant-numeric:tabular-nums;color:var(--forest-soft)}input[type="range"]{grid-column:1/-1;width:100%;height:44px;margin:0;accent-color:var(--forest);cursor:pointer}.panel-note{font-size:11px;color:var(--muted);line-height:1.65;margin-top:8px}
.feature-info{padding-bottom:14px;border-bottom:1px solid var(--line)}.feature-info p{font-size:12px;color:var(--muted);line-height:1.75;margin-top:5px}.settings-grid{grid-template-columns:1fr 1fr;margin-top:8px}.settings-grid button{font-size:12px;padding:8px}
.advanced-controls{border-top:1px solid var(--line);margin-top:16px;padding-top:5px}.advanced-controls summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:12px;gap:8px}.advanced-controls summary:before{content:"+";font-size:18px;color:var(--gold)}.advanced-controls[open] summary:before{content:"−"}.movement-controls{grid-template-columns:repeat(3,1fr);margin-top:5px}.movement-controls button{font-size:12px}
.field-label{font-size:11px;color:var(--muted);margin:15px 0 7px}.material-controls{grid-template-columns:repeat(4,1fr)}.material-controls button{font-size:11px;padding:6px}.btn-mat-mode.active{color:var(--ivory);background:var(--forest)}.render-metric{font-size:11px;display:flex;justify-content:space-between;margin-top:8px;color:var(--muted)}#fps-badge{font-variant-numeric:tabular-nums}
.texture-modal{position:fixed;inset:0;z-index:50;background:rgba(16,34,26,.6);padding:24px;display:grid;place-items:center}.texture-dialog{width:min(900px,100%);max-height:85dvh;padding:20px;border-radius:16px;display:flex;flex-direction:column}.texture-dialog>.panel-heading{flex-shrink:0}#tex-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;overflow:auto;min-height:0;padding:3px;overscroll-behavior:contain}
#tex-grid>div{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--ivory)}#tex-grid>div>div:last-child{padding:11px}#tex-grid img{display:block;width:100%;height:150px;object-fit:cover}#tex-grid>div>div:last-child>div:first-child{font-size:12px;font-weight:600}#tex-grid>div>div:last-child>div:last-child{font-size:11px;color:var(--muted);margin-top:5px;line-height:1.6}
.view-dock{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:21;width:min(670px,calc(100% - 44px));pointer-events:none}.viewer-status-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 10px 9px;color:#fffef4;font-size:11px;text-shadow:0 1px 4px #15281b,0 0 8px #15281b;min-height:17px}#viewer-status{max-width:60%}#current-cam-label{max-width:45%;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.camera-rail{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:5px;border-radius:14px;pointer-events:auto}.btn-preset{border-color:transparent;background:transparent;min-height:64px;padding:8px 5px;display:grid;grid-template-columns:1fr;text-align:center;gap:2px}.btn-preset>span{font-size:9px;letter-spacing:.1em;color:var(--gold)}.btn-preset strong{font-size:14px;font-weight:600}.btn-preset small{font-size:10px;font-weight:400;color:var(--muted)}.btn-preset.active{background:var(--forest);color:var(--ivory);border-color:var(--forest)}.btn-preset.active>span{color:#d0b679}.btn-preset.active small{color:#e0e5d6}
.zoom-controls{position:fixed;right:22px;bottom:132px;z-index:20;padding:4px;border-radius:12px;display:grid;gap:4px}.zoom-controls button{font-size:22px;width:44px;height:44px;padding:4px;border-color:transparent;background:transparent}
.fallback-panel{position:absolute;inset:0;z-index:2;display:grid;place-items:center;background:#183d32}.fallback-panel>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.65)}.fallback-copy{position:relative;max-width:420px;width:calc(100% - 40px);padding:24px;border-radius:15px}.fallback-copy h2{font-size:21px;margin-top:5px}.fallback-copy p:not(.eyebrow){font-size:13px;margin-top:10px;line-height:1.75}.fallback-copy #fallback-location{color:var(--gold);font-weight:600}.fallback-copy button{background:var(--forest);color:var(--ivory);margin-top:18px}.is-fallback #hotspots-layer,.is-fallback #ghost-overlay,.is-fallback .zoom-controls{display:none}.is-fallback .viewer-status-row{color:var(--ivory)}
@media(max-width:700px){
  .viewer-header{top:max(12px,env(safe-area-inset-top));left:12px;right:12px;gap:8px}.title-panel{padding:10px 13px}.eyebrow{font-size:9px;letter-spacing:.03em}.eyebrow span{display:none}h1{font-size:20px;letter-spacing:.07em}.desktop-hint{display:none}.header-actions{padding:3px;gap:0}.header-actions button{font-size:12px;padding:8px;min-width:60px}
  .floating-panel,#ref-card,#inspector-panel{left:12px;right:12px;top:auto;bottom:114px;width:auto;max-height:calc(100dvh - 205px);padding:15px;border-radius:12px}.reference-figure img{height:min(35dvh,300px);object-fit:contain;background:#183d32}
  .view-dock{bottom:max(12px,env(safe-area-inset-bottom));width:calc(100% - 24px)}.viewer-status-row{margin:0 5px 7px;gap:7px;font-size:10px}#current-cam-label{max-width:42%}.camera-rail{padding:4px;gap:2px;border-radius:12px}.btn-preset{min-height:62px;padding:6px 2px}.btn-preset strong{font-size:13px}.btn-preset small{font-size:9px}.btn-preset>span{font-size:8px}
  .hotspot-marker{font-size:10px;max-width:160px;padding:7px 9px}.texture-modal{padding:12px}.texture-dialog{padding:14px;max-height:90dvh}#tex-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#tex-grid img{height:120px}.fallback-copy{padding:18px;margin-top:12px}.fallback-copy h2{font-size:18px}.zoom-controls{right:12px;bottom:120px;padding:3px;gap:0}
}
@media(max-width:350px){.title-panel{padding:10px}h1{font-size:18px}.header-actions button{min-width:56px;padding:6px;font-size:11px}.fallback-copy{width:calc(100% - 24px);padding:16px}.fallback-copy h2{font-size:17px}.fallback-copy p:not(.eyebrow){font-size:12px}}
.is-fallback #inspector-panel .slider-row,.is-fallback #inspector-panel .settings-grid,.is-fallback #inspector-panel .advanced-controls,.is-fallback #ref-card .slider-row{display:none}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}

#location-list{display:grid;grid-template-columns:1fr;gap:5px;margin:12px 0}#location-list button{text-align:left;padding:8px 12px;min-height:44px;}

/* P0-07: preserve scene art; reserve independent touch and legal areas. */
.camera-rail{gap:8px!important}.view-dock{bottom:calc(72px + env(safe-area-inset-bottom))!important}.launch-icp{bottom:calc(4px + env(safe-area-inset-bottom))!important;min-height:44px;display:flex;align-items:center}.skip-3d{position:fixed;top:108px;left:12px;z-index:25;background:var(--ivory)}#atrium-loading{z-index:3}#atrium-loading .fallback-copy{margin-top:20px}.floating-panel,#ref-card,#inspector-panel{bottom:180px}.launch-back{min-height:44px}.header-actions{flex-wrap:wrap;gap:8px}.viewer-header{gap:8px}.header-actions .launch-back{font-size:12px}.zoom-controls{bottom:185px}@media(max-width:700px){.viewer-header .title-panel{padding:8px;flex-shrink:0}.header-actions{justify-content:flex-end}.header-actions button{min-width:44px}.fallback-copy{max-height:calc(100dvh - 330px);overflow:auto}.skip-3d{top:135px}}
