.angle-panel{position:absolute;left:4%;top:115px;width:265px;z-index:3;border:1px solid #ffffff24;border-radius:16px;background:#131315e8;backdrop-filter:blur(18px);max-height:calc(100svh - 345px);overflow:auto}.angle-panel>button{width:100%;padding:15px 18px;text-align:left;background:none;border:0;border-radius:0;font-size:12px;letter-spacing:.06em}#angleList{padding:0 8px 8px}.angle-card{display:flex;width:100%;align-items:center;gap:12px;padding:9px;border-radius:10px;margin-bottom:4px;background:transparent;border:1px solid transparent;text-align:left}.angle-card img{width:64px;height:52px;object-fit:cover;border-radius:6px;background:#000}.angle-card>span:nth-child(2){flex:1}.angle-card strong{display:block;font-weight:400;font-size:12px}.angle-card small{display:block;font-size:9px;color:#a2a3a5;margin-top:4px}.angle-number{font-size:9px;color:#85858b}.angle-card[aria-pressed=true]{border-color:#ffffff65;background:#ffffff0b}.view-annotation{position:absolute;width:220px;z-index:2;pointer-events:none;padding:12px 0 12px 18px;border-left:1px solid #ffffff70;background:linear-gradient(90deg,#000b,transparent)}.view-annotation h2{font-size:15px;font-weight:400;letter-spacing:.06em;margin-bottom:7px}.view-annotation p{font-size:12px;color:#bcbcc2;line-height:1.8}.annotation-line{position:absolute;left:-42px;top:25px;width:42px;height:1px;background:#ffffff60}.annotation-line:before{content:'';position:absolute;left:0;top:-2px;width:5px;height:5px;border-radius:50%;background:white}.product-summary{max-width:590px;color:#b8b8bd;font-size:12px;line-height:1.9;margin:0 0 18px}.explore-bottom{padding-top:40px}.project-strip{margin-bottom:12px}@media(max-width:700px){.angle-panel{left:5%;top:86px;width:230px;max-height:215px}.angle-panel>button{padding:10px 14px}.angle-card{padding:6px;gap:10px}.angle-card img{width:49px;height:38px}.angle-card strong{font-size:11px}.angle-card small{font-size:9px}.angle-number{font-size:8px}.view-annotation{width:190px;padding-left:12px}.view-annotation h2{font-size:13px}.view-annotation p{font-size:11px}.annotation-line{width:25px;left:-25px}.product-summary{font-size:11px;line-height:1.8;margin-bottom:13px;max-width:340px}.explore-bottom{padding-top:30px}}@media(max-height:650px){.angle-panel{top:80px;max-height:190px}.product-summary{margin-bottom:8px}}
/* The panel reserves its own column; the model stays centred in the remaining stage. */
.angles-open .scene{left:340px;width:calc(100% - 340px)}.scene{right:0}.annotation-line{display:none}.annotation-leader{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.annotation-leader line{stroke:#ffffff80;stroke-width:1}.annotation-leader circle{fill:#fff}.angle-editor{border-top:1px solid #ffffff24;margin:8px 14px 14px;padding-top:12px}.angle-editor summary{cursor:pointer;font-size:12px}.angle-editor p{font-size:10px;color:#aaa;line-height:1.7;margin:10px 0}.angle-editor label{display:block;font-size:11px;color:#ccc;margin-top:10px}.angle-editor input,.angle-editor textarea{box-sizing:border-box;width:100%;font:inherit;color:#eee;background:#242426;border:1px solid #ffffff30;border-radius:6px;padding:7px;margin-top:4px}.angle-editor textarea{min-height:64px;resize:vertical}.editor-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.editor-actions button{font-size:10px;padding:7px 9px}.picking{cursor:crosshair}.angle-panel{max-height:calc(100svh - 330px)}@media(max-width:700px){.angles-open .scene{left:140px;width:calc(100% - 140px)}.angle-panel{left:12px;width:128px;max-height:calc(100svh - 330px)}.angle-panel>button{padding:12px 10px;font-size:11px}.angle-card{display:grid;grid-template-columns:1fr;gap:5px;padding:6px}.angle-card img{width:100%;height:50px}.angle-card small{font-size:9px}.angle-number{display:none}.angle-editor{margin:8px}.editor-actions button{width:100%;font-size:9px}.view-annotation{width:170px}.angle-editor input,.angle-editor textarea{font-size:12px}}
.light-panel{border-top:1px solid #ffffff24;margin:8px 14px 14px;padding-top:12px}.light-panel summary{cursor:pointer;font-size:12px}.light-panel label{display:block;font-size:11px;color:#ccc;margin-top:12px}.light-panel select{display:block;width:100%;margin-top:6px;padding:8px;background:#242426;color:#eee;border:1px solid #ffffff30;border-radius:7px;font:inherit}.light-panel input{width:100%;margin:10px 0;accent-color:#f0eee7}.light-panel output{float:right;color:#fff}.light-panel button{font-size:11px;padding:8px 12px}.light-panel p{font-size:10px;line-height:1.7;color:#999;margin-top:10px}@media(max-width:700px){.light-panel{margin:8px}.light-panel select{font-size:10px;padding:6px}.light-panel button{font-size:10px;padding:7px}}


#modelCanvas:focus,#modelCanvas:focus-visible{outline:none}

.viewer-tools{position:absolute;right:4%;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:10px;z-index:5}.viewer-tools .tool-button{display:grid;place-items:center;width:46px;height:46px;padding:0;border-radius:50%;background:#141416d9;backdrop-filter:blur(12px)}.tool-button svg{display:block;width:23px;height:23px}.tool-button[aria-pressed=true]{background:#edece6;color:#181819;border-color:#edece6}.tool-button:focus-visible{outline:2px solid #fff;outline-offset:4px}
#arOverlay{position:fixed;inset:0;z-index:20;background:transparent;pointer-events:none;color:#fff}#arOverlay[hidden]{display:none}.ar-top,.ar-bottom{position:absolute;left:5%;right:5%;display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:auto;background:#141416d9;border:1px solid #ffffff30;border-radius:16px;padding:15px}.ar-top{top:max(20px,env(safe-area-inset-top))}.ar-bottom{bottom:max(24px,env(safe-area-inset-bottom));flex-wrap:wrap;justify-content:center}.ar-top p,.ar-bottom p{font-size:12px;margin:0}.ar-bottom p{width:100%;text-align:center;color:#ccc}.ar-bottom label{display:flex;align-items:center;gap:10px;font-size:12px}.ar-bottom input{width:130px;accent-color:#eee}.ar-active .ui,.ar-active #notice{display:none!important}.ar-active .scene{left:0;width:100%;background:transparent}.ar-active{background:transparent}@media(max-width:700px){.viewer-tools{right:4%;gap:8px}.viewer-tools .tool-button{width:42px;height:42px;padding:0}.ar-top{align-items:flex-start}.ar-top p{max-width:60%;line-height:1.7}.ar-top button,.ar-bottom button{font-size:12px;padding:10px 12px}}
/* On phones the viewing stage comes first, followed by the angle choices. */
@media(max-width:700px){
  .explorer{--mobile-stage:clamp(400px,64svh,600px);display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:var(--mobile-stage) auto;height:auto;min-height:100svh;overflow:visible}
  .explorer .scene,.explorer.angles-open .scene{left:0;right:0;top:0;bottom:auto;width:100%;height:var(--mobile-stage)}
  .angle-panel{position:relative;grid-row:2;left:auto;top:auto;width:auto;max-height:none;overflow:visible;margin:12px 5% 0}
  .angle-panel>button{padding:14px 16px;font-size:12px}
  #angleList{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:0 10px 10px}
  .angle-card{margin:0;padding:6px;gap:7px;align-content:start}
  .angle-card img{width:100%;height:65px}
  .angle-card strong{font-size:11px}.angle-card small{font-size:9px;line-height:1.6}
  .light-panel,.angle-editor{margin:8px 16px 14px}
  .viewer-tools{top:calc(var(--mobile-stage)/2);right:4%}
  .explore-bottom{position:relative;grid-row:3;inset:auto;padding:24px 5% max(24px,env(safe-area-inset-bottom));background:none}
  .intro{top:calc(var(--mobile-stage)/2)}
  .annotation-leader{height:var(--mobile-stage)}
  .product-info{max-height:calc(var(--mobile-stage) - 110px)}
  .explorer.ar-active{display:block;height:100svh;overflow:hidden}
  .explorer.ar-active .scene{height:100%;width:100%}
}
.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.light-popover{position:absolute;right:calc(4% + 60px);top:50%;transform:translateY(-50%);width:260px;z-index:7;padding:20px;border:1px solid #ffffff30;border-radius:16px;background:#141416f0;backdrop-filter:blur(18px)}.popover-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.popover-heading h2{font-size:16px;font-weight:400}.popover-heading button{padding:2px 9px;font-size:20px}.light-popover label{display:block;font-size:12px;margin-top:14px;color:#ccc}.light-popover select{display:block;width:100%;padding:8px;border:1px solid #ffffff30;border-radius:8px;background:#252527;color:#eee;font:inherit;margin-top:6px}.light-popover input{width:100%;accent-color:#eee}.light-popover output{float:right}.light-popover p{font-size:11px;color:#aaa;margin-top:12px}.light-popover #lightAnimation{margin-top:12px;font-size:12px}#angleEditor{position:absolute;right:4%;top:100px;width:280px;background:#151517ed;padding:16px;border:1px solid #ffffff30;border-radius:14px;z-index:8;max-height:70svh;overflow:auto}#arDialog{background:#151517;color:#eee;border:1px solid #ffffff30;border-radius:18px;padding:24px;width:min(400px,90vw);max-height:85svh}#arDialog::backdrop{background:#000a;backdrop-filter:blur(5px)}#arDialog>button{width:100%;margin-top:18px}#arDialog p{font-size:12px;line-height:1.8;color:#b5b5ba;margin-top:10px}#arDialog #arError{color:#edc2ad}#arCamera{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}.ar-active #modelCanvas{z-index:1}.ar-bottom input{width:110px}.ar-camera-mode .ar-bottom #arPlace,.ar-camera-mode .ar-bottom #arReposition{display:none}#arScale,#arRotation{touch-action:manipulation}@media(max-width:700px){.light-popover{right:calc(4% + 50px);top:calc(var(--mobile-stage)/2);width:min(260px,calc(100vw - 85px));padding:16px}.product-strip-actions{flex-wrap:wrap;justify-content:flex-end}.product-strip-actions button{font-size:9px!important;padding:7px 9px!important}.ar-bottom{gap:12px}.ar-bottom input{width:95px}}

#arResetPreview{display:none}.ar-camera-mode #arResetPreview{display:inline-block}
@media(min-width:701px){.angle-panel{top:50%;transform:translateY(-50%);max-height:min(calc(100svh - 220px),520px)}}

.ar-marker-mode #arPlace,.ar-marker-mode #arReposition{display:none}#arDialog a{text-decoration:underline;text-underline-offset:3px}

#arQuickLook{display:block;position:relative;border:1px solid #ffffff35;border-radius:12px;overflow:hidden;margin-top:16px;background:#000}#arQuickLook img{display:block;width:100%;height:140px;object-fit:contain}#arQuickLook:after{content:"iPhone 原生 AR ↗";position:absolute;right:12px;bottom:10px;background:#eee;color:#171719;border-radius:30px;padding:5px 12px;font-size:12px}
/* Reuse the homepage GlassSurface component; the angle list stays above its decorative layer. */
.angle-panel{border:0;border-radius:28px;background:none;backdrop-filter:none;-webkit-backdrop-filter:none;overflow:visible;isolation:isolate;padding:38px 8px 8px}.reel-glass-layer{position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:inherit}.reel-glass-layer>.glass-surface{width:100%;height:100%;border-radius:inherit}.angle-panel #panelContent{position:relative;z-index:1;max-height:calc(100svh - 260px);overflow:auto}.angle-panel>#angleToggle{position:absolute;z-index:2;left:auto;right:12px;top:8px;width:30px;height:30px;padding:0;display:grid;place-items:center;border:0;border-radius:50%;font-size:18px;text-align:center;background:transparent;color:#ddd}.angle-panel>#angleToggle:hover{background:#ffffff12}.angle-panel.collapsed{width:52px;height:52px;min-height:52px;padding:0}.angle-panel.collapsed>#angleToggle{top:11px;right:11px}.explore-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.product-copy{max-width:590px}.product-copy h1{font-size:20px;font-weight:400;letter-spacing:.04em;margin:0 0 8px}.product-copy .product-summary{margin:0;font-size:12px;line-height:1.8}.explore-bottom .product-strip-actions{flex-shrink:0;gap:9px!important}.explore-bottom .product-strip-actions button{padding:10px 16px!important;font-size:11px!important}@media(max-width:700px){.angle-panel{padding:34px 6px 6px}.angle-panel #panelContent{max-height:none;overflow:visible}.angle-panel.collapsed{width:52px;margin-right:auto}.explore-bottom{flex-direction:column;align-items:flex-start;gap:16px;padding-top:24px}.product-copy h1{font-size:18px;margin-bottom:8px}.product-copy .product-summary{font-size:11px}.explore-bottom .product-strip-actions{justify-content:flex-start;gap:8px!important}.explore-bottom .product-strip-actions button{font-size:11px!important;padding:9px 15px!important}}

/* Keep entry loading limited to one actual download progress bar. */
.loading-screen{position:fixed;inset:0;z-index:50;display:grid;place-content:center;background:#000}.loading-screen[hidden],.loading-screen [hidden]{display:none}.loading-screen progress{display:block;width:min(220px,55vw);height:3px;border:0;border-radius:2px;overflow:hidden;appearance:none;-webkit-appearance:none;background:#ffffff20;color:#ddd}.loading-screen progress::-webkit-progress-bar{background:#ffffff20;border-radius:2px}.loading-screen progress::-webkit-progress-value{background:#ddd;border-radius:2px}.loading-screen progress::-moz-progress-bar{background:#ddd;border-radius:2px}.loading-screen progress:indeterminate{background:linear-gradient(90deg,#ffffff20 35%,#ddd 50%,#ffffff20 65%);background-size:250% 100%;animation:load-sweep 1.4s linear infinite}.loading-screen progress:indeterminate::-webkit-progress-bar{background:transparent}#loadFailure{text-align:center;padding:24px;font-size:12px;color:#aaa}#loadFailure button{margin-top:12px}@keyframes load-sweep{from{background-position:100% 0}to{background-position:0 0}}@media(prefers-reduced-motion:reduce){.loading-screen progress:indeterminate{animation:none}}

.explore-header .actions #share.share-icon{width:44px;height:44px;padding:11px;display:grid;place-items:center;border:0;background:transparent;border-radius:50%}.share-icon svg{display:block;width:22px;height:22px}.explore-header .actions #share.share-icon:hover{background:#ffffff0c}

.particle-density{position:absolute;z-index:7;right:calc(4% + 60px);top:50%;transform:translateY(-50%);width:220px;padding:16px 18px;background:#141416ed;border:1px solid #ffffff25;border-radius:18px;backdrop-filter:blur(16px)}.particle-density[hidden]{display:none}.particle-density label{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#ddd}.particle-density output{font-size:11px;color:#aaa}.particle-density input{width:100%;height:36px;margin:8px 0 0;accent-color:#eee;touch-action:manipulation}.particle-density>div{display:flex;justify-content:space-between;font-size:10px;color:#888}@media(max-width:700px){.particle-density{right:calc(4% + 50px);top:calc(var(--mobile-stage)/2);width:min(220px,calc(100vw - 85px));padding:14px 16px}}

/* Fixed angle choices and an unobstructed full-screen viewing stage. */
.angle-panel{padding:12px 8px 8px}.explore-header{top:max(18px,env(safe-area-inset-top))}.explorer.immersive{position:fixed;inset:0;display:block;width:100%;height:100dvh;min-height:0;overflow:hidden;z-index:100;background:#000}.explorer.immersive .scene{inset:0;width:100%;height:100%}.explorer.immersive>:not(.scene):not(#fullscreenExit){display:none!important}body.viewer-immersive{overflow:hidden}body.viewer-immersive>.quick-actions{display:none!important}#fullscreenExit{position:absolute;right:4%;top:max(20px,env(safe-area-inset-top));z-index:101;display:grid;place-items:center;width:46px;height:46px;padding:0;border-radius:50%;background:#141416b3;backdrop-filter:blur(12px)}#fullscreenExit[hidden]{display:none}#fullscreenExit svg{width:23px;height:23px}@media(max-width:700px){.angle-panel{padding:10px 6px 6px}#fullscreenExit{width:42px;height:42px}}

.handle-hints{position:absolute;inset:0;z-index:2;pointer-events:none}.handle-hints[hidden]{display:none}.handle-grip{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;border:0;border-radius:50%;padding:0;background:transparent;pointer-events:auto;cursor:grab;touch-action:none}.handle-grip:after{content:"";display:block;width:10px;height:10px;margin:auto;border:1px solid #ffffffe0;border-radius:50%;background:#ffffff22;box-shadow:0 0 0 4px #0005}.handle-grip:hover:after,.handle-grip:focus-visible:after{width:18px;height:18px;background:#ffffff40}.handle-grip:focus-visible{outline:1px solid #fff;outline-offset:0}.handle-hints.dragging .handle-grip{cursor:grabbing}.explorer.immersive .handle-hints{display:none}

.viewer-tools #soundToggle[aria-pressed=true]{background:#141416d9;color:#eee;border-color:#ffffff30}

/* Angle wheel keeps the first and last rows against the container edges. */
.angle-panel{--wheel-row:104px;--wheel-height:312px;width:clamp(260px,24vw,320px);padding:10px 6px;overflow:hidden;max-height:none}.angle-panel #panelContent{max-height:none;overflow:visible}#angleList{position:relative;display:block;height:var(--wheel-height);padding:0 6px;overflow-x:hidden;overflow-y:auto;scroll-snap-type:none;scrollbar-width:none;overscroll-behavior:contain;touch-action:pan-y;-webkit-mask-image:linear-gradient(#000 0%,#000 76%,transparent 100%);mask-image:linear-gradient(#000 0%,#000 76%,transparent 100%)}#angleList::-webkit-scrollbar{display:none}.angle-card{display:flex;align-items:center;gap:12px;width:100%;height:var(--wheel-row);min-height:var(--wheel-row);padding:10px;margin:0;border-radius:16px;scroll-snap-align:start;scroll-snap-stop:always;transform-origin:50% 50%;will-change:transform;transition:border-color .18s,background .18s;white-space:normal}.angle-card img{flex:0 0 82px;width:82px;height:70px;border-radius:10px;object-fit:contain}.angle-card>span:nth-child(2){min-width:0}.angle-card strong{font-size:12px;line-height:1.55}.angle-card small{font-size:10px;line-height:1.6}.angle-number{display:none}.angle-card[aria-pressed=true]{border-color:#ffffff35;background:#ffffff0b}.angles-open .scene{left:calc(4vw + clamp(260px,24vw,320px) + 24px);width:calc(100% - 4vw - clamp(260px,24vw,320px) - 24px)}@media(max-width:700px){.angle-panel{--wheel-row:88px;--wheel-height:264px;width:auto;padding:8px 6px}.angle-card{display:flex;gap:14px;padding:9px 12px}.angle-card img{flex-basis:86px;width:86px;height:65px}.angle-card strong{font-size:12px}.angle-card small{font-size:10px}.explorer.angles-open .scene{left:0;width:100%}.angle-panel #panelContent{max-height:none;overflow:visible}}@media(prefers-reduced-motion:reduce){.angle-card{transition:none}}

/* One continuous viewing surface; selection is expressed by the wheel, not a dark tile. */
.explorer.angles-open .scene{left:0;width:100%}
.angle-card[aria-pressed=true]{background:transparent;border-color:transparent}
.angle-card img{background:transparent}
.reel-glass-layer .glass-surface--fallback{background:#ffffff05}

.view-annotation{background:none;text-shadow:0 1px 4px #000,0 2px 12px #000}


/* Keep 3D content out of iPhone's system safe area; controls stay inside the page. */
@media(max-width:700px){
  body.vsl-viewer-page{padding-top:env(safe-area-inset-top,0px)}
  .explore-header{top:18px}
  .scene{overflow:hidden}
}
.handle-grip:after,.handle-grip:hover:after,.handle-grip:focus-visible:after{display:none}

#angleList.at-end{-webkit-mask-image:none;mask-image:none}

/* A tiny discovery point; the 44px touch target never paints a circular overlay. */
.handle-grip,.handle-grip:hover,.handle-grip:active,.handle-grip:focus,.handle-grip:focus-visible{background:transparent;border:0;box-shadow:none;outline:none;-webkit-tap-highlight-color:transparent;appearance:none;-webkit-appearance:none}
.handle-grip:after,.handle-grip:hover:after,.handle-grip:active:after,.handle-grip:focus-visible:after{content:"";display:block;width:5px;height:5px;margin:auto;border:1px solid #ffffff66;border-radius:50%;background:#ffffff22;box-shadow:none;opacity:.65}
.handle-grip:focus-visible:after{outline:1px solid #ffffff99;outline-offset:2px}
.handle-hints.dragging .handle-grip:after{opacity:0}

/* No rectangular header tint between the black safe area and the 3D stage. */
html,body.vsl-viewer-page{background:#000}
@media(max-width:700px){.explore-header{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;border:0}}
