.model-viewer{--mv-bg:#dfdfe1;--mv-ink:#232833;--mv-chip:rgba(255,255,255,.8);--mv-line:rgba(20,24,32,.1);--mv-focus:#2563eb;position:relative;margin:0}
.model-viewer-stage{position:relative;width:100%;aspect-ratio:4/3;max-height:min(80vh,760px);background:var(--mv-bg);border:1px solid rgba(20,24,32,.06);border-radius:16px;overflow:hidden;isolation:isolate;color:var(--mv-ink)}
.model-viewer-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .35s ease}
.model-viewer-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .35s ease;cursor:grab;-webkit-tap-highlight-color:transparent}
.model-viewer-canvas:active{cursor:grabbing}
.model-viewer-canvas[hidden]{display:none}
.model-viewer.is-ready .model-viewer-canvas{opacity:1}
.model-viewer.is-ready .model-viewer-poster{opacity:0}
.model-viewer-tools{position:absolute;top:12px;right:12px;z-index:2;display:flex;gap:6px}
.model-viewer-tools[hidden],.model-viewer-button[hidden],.model-viewer-legend [hidden],.model-viewer-hint[hidden]{display:none}
.model-viewer-button{display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--mv-line);border-radius:10px;background:var(--mv-chip);color:var(--mv-ink);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background-color .15s ease,color .15s ease}
.model-viewer-button:hover{background:#fff}
.model-viewer-button[aria-pressed=true]{background:var(--mv-ink);border-color:var(--mv-ink);color:#fff}
.model-viewer-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.model-viewer-button .model-viewer-icon-exit,.model-viewer.is-fullscreen .model-viewer-icon-enter{display:none}
.model-viewer.is-fullscreen .model-viewer-icon-exit{display:block}
/* Two classes, so these win over a page's own focus ring (.gm-library :focus-visible): the canvas fills a clipped stage, so its ring sits inside. */
.model-viewer .model-viewer-button:focus-visible{outline:3px solid var(--mv-focus);outline-offset:2px}
.model-viewer .model-viewer-canvas:focus-visible{outline:3px solid var(--mv-focus);outline-offset:-3px}
.model-viewer-legend{position:absolute;left:12px;right:12px;bottom:12px;z-index:2;display:flex;flex-wrap:wrap;gap:6px;margin:0;pointer-events:none}
.model-viewer-legend span,.model-viewer-status:not(:empty){padding:6px 10px;border-radius:999px;background:var(--mv-chip);color:var(--mv-ink);font-size:12px;font-weight:600;line-height:1.25}
.model-viewer-legend span{white-space:nowrap}
.model-viewer-hint,.model-viewer-status{position:absolute;top:12px;left:12px;z-index:2;max-width:calc(100% - 180px);margin:0;pointer-events:none}
.model-viewer-hint{padding:6px 10px;border-radius:12px;background:var(--mv-chip);color:#4b515d;font-size:12px;font-weight:500;line-height:1.25;transition:opacity .4s ease}
.model-viewer.is-interacted .model-viewer-hint{opacity:0}
.model-viewer-status.is-error{max-width:calc(100% - 24px);border-radius:12px;color:#5b2a12;background:rgba(255,246,236,.92)}
.model-viewer.is-ready .model-viewer-status{display:none}
[data-pc-theme=dark] .model-viewer-stage{border-color:rgba(255,255,255,.1)}
.model-viewer:fullscreen{width:100%;height:100%;background:var(--mv-bg)}
.model-viewer:fullscreen .model-viewer-stage{height:100%;max-height:none;aspect-ratio:auto;border:0;border-radius:0}
.model-viewer:-webkit-full-screen{width:100%;height:100%;background:var(--mv-bg)}
.model-viewer:-webkit-full-screen .model-viewer-stage{height:100%;max-height:none;aspect-ratio:auto;border:0;border-radius:0}
@media (pointer:coarse){.model-viewer-button{width:44px;height:44px}}
@media (max-width:575.98px){.model-viewer-stage{aspect-ratio:1/1;border-radius:12px}.model-viewer-tools{top:8px;right:8px}.model-viewer-legend{left:8px;right:8px;bottom:8px;gap:4px}.model-viewer-legend span{padding:5px 8px;font-size:11px}.model-viewer-hint,.model-viewer-status{top:8px;left:8px;max-width:calc(100% - 170px);font-size:11px}}
@media (prefers-reduced-motion:reduce){.model-viewer-poster,.model-viewer-canvas,.model-viewer-hint,.model-viewer-button{transition:none}}
