@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/3Dviewer/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2) format("woff2"),url(/3Dviewer/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/3Dviewer/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2) format("woff2"),url(/3Dviewer/assets/dm-sans-latin-400-normal-BwCSEQnW.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/3Dviewer/assets/dm-sans-latin-ext-600-normal-4vooXBpG.woff2) format("woff2"),url(/3Dviewer/assets/dm-sans-latin-ext-600-normal-DRtaDpgU.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/3Dviewer/assets/dm-sans-latin-600-normal-Aqo67rzb.woff2) format("woff2"),url(/3Dviewer/assets/dm-sans-latin-600-normal-BmdmIIQ2.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:dark;--color-bg: #0c0f14;--color-canvas: #10141b;--color-surface: rgba(20, 23, 30, .78);--color-surface-solid: #161a21;--color-surface-2: #1e232c;--color-hover: rgba(255, 255, 255, .06);--color-active: rgba(255, 255, 255, .1);--color-border: rgba(255, 255, 255, .08);--color-border-strong: rgba(255, 255, 255, .16);--color-text: #eceff4;--color-text-muted: #a1a8b5;--color-text-subtle: #7c8492;--color-accent: #5eead4;--color-accent-hover: #99f6e4;--color-on-accent: #04201c;--color-accent-soft: rgba(94, 234, 212, .14);--color-accent-text: #5eead4;--color-focus: #5eead4;--color-track: #646a75;--color-thumb: #ffffff;--color-danger: #f87171;--color-danger-soft: rgba(248, 113, 113, .14);--color-warning: #fbbf24;--color-warning-soft: rgba(251, 191, 36, .14);--color-success: #4ade80;--color-info: #93c5fd;--color-scrim: rgba(5, 7, 10, .55);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .24);--shadow-md: 0 4px 12px rgba(0, 0, 0, .28), 0 1px 2px rgba(0, 0, 0, .2);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .4), 0 2px 6px rgba(0, 0, 0, .24);--blur: blur(16px) saturate(160%);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-full: 999px;--font-sans: "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--text-xs: 11px;--leading-xs: 14px;--text-sm: 12px;--leading-sm: 16px;--text-base: 13px;--leading-base: 18px;--text-md: 14px;--leading-md: 20px;--text-lg: 16px;--leading-lg: 22px;--text-xl: 24px;--leading-xl: 30px;--weight-regular: 400;--weight-semibold: 600;--tracking-tight: -.02em;--control-h: 32px;--control-h-sm: 28px;--control-h-lg: 40px;--icon-size: 18px;--icon-sm: 16px;--icon-xl: 28px;--cluster-pad: 4px;--inset: 12px;--gap: 8px;--island-h: calc(var(--control-h) + 2 * var(--cluster-pad));--panel-w: 320px;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--ease-out: cubic-bezier(.2, .8, .2, 1);--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--z-hud: 4;--z-toolbar: 5;--z-topbar: 6;--z-panel: 7;--z-loading: 8;--z-toast: 9;--z-drop: 10}:root[data-theme=light]{color-scheme:light;--color-bg: #f3f5f8;--color-canvas: #e7ebf1;--color-surface: rgba(255, 255, 255, .82);--color-surface-solid: #ffffff;--color-surface-2: #f2f4f7;--color-hover: rgba(15, 23, 42, .05);--color-active: rgba(15, 23, 42, .09);--color-border: rgba(15, 23, 42, .1);--color-border-strong: rgba(15, 23, 42, .2);--color-text: #0f172a;--color-text-muted: #475569;--color-text-subtle: #64748b;--color-accent: #0f766e;--color-accent-hover: #115e59;--color-on-accent: #ffffff;--color-accent-soft: rgba(15, 118, 110, .1);--color-accent-text: #0f766e;--color-focus: #0f766e;--color-track: #8a919c;--color-thumb: #ffffff;--color-danger: #b91c1c;--color-danger-soft: rgba(185, 28, 28, .08);--color-warning: #b45309;--color-warning-soft: rgba(180, 83, 9, .1);--color-success: #15803d;--color-info: #1d4ed8;--color-scrim: rgba(15, 23, 42, .32);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08), 0 1px 2px rgba(15, 23, 42, .06);--shadow-lg: 0 16px 40px rgba(15, 23, 42, .14), 0 2px 6px rgba(15, 23, 42, .06)}@media(pointer:coarse){:root{--control-h: 44px;--control-h-sm: 36px;--control-h-lg: 48px;--icon-size: 20px;--radius-md: 12px;--radius-lg: 16px}}@media(max-width:640px){:root{--inset: 8px}}@media(prefers-reduced-motion:reduce){:root{--dur-fast: 0ms;--dur-base: 0ms;--dur-slow: 0ms}}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}[hidden]{display:none!important}body{font:var(--weight-regular) var(--text-md)/var(--leading-md) var(--font-sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;color:var(--color-text);background:var(--color-bg);overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.island{display:flex;align-items:center;gap:var(--space-1);padding:var(--cluster-pad);min-height:var(--island-h);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:var(--shadow-md)}.divider{width:1px;align-self:stretch;margin:6px 2px;background:var(--color-border)}.sprite{position:absolute;width:0;height:0;overflow:hidden}.icon{width:var(--icon-size);height:var(--icon-size);flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.icon-sm{width:var(--icon-sm);height:var(--icon-sm)}.icon-xl{width:var(--icon-xl);height:var(--icon-xl);stroke-width:1.5}:root[data-theme=light] .only-dark,:root:not([data-theme=light]) .only-light{display:none}.show-phone{display:none!important}@media(max-width:640px){.hide-phone{display:none!important}.show-phone{display:revert!important}}html.is-desktop #download-btn,html.is-desktop #download-menu-item{display:none!important}.btn,.seg{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--control-h);padding:0 var(--space-3);border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text);font-size:var(--text-md);line-height:1;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast),color var(--dur-fast)}.btn-primary{background:var(--color-accent);color:var(--color-on-accent);font-weight:var(--weight-semibold)}.btn-primary:hover{background:var(--color-accent-hover)}.btn-secondary{background:var(--color-surface-2);border-color:var(--color-border)}.btn-secondary:hover{border-color:var(--color-border-strong)}.btn-ghost:hover{background:var(--color-hover)}.btn-ghost:active{background:var(--color-active)}.btn-icon{width:var(--control-h);padding:0}.btn-sm{height:var(--control-h-sm);padding:0 10px;font-size:var(--text-sm)}.btn-sm.btn-icon{width:var(--control-h-sm)}.btn-lg{height:var(--control-h-lg);padding:0 18px}.btn:disabled{opacity:.45;cursor:not-allowed}.is-disabled{color:var(--color-text-subtle)}button.is-disabled{cursor:not-allowed}button.is-disabled:hover{background:transparent}.is-disabled input,.is-disabled select{opacity:.55;cursor:not-allowed}.btn[aria-expanded=true],.btn[aria-pressed=true]{background:var(--color-accent-soft);color:var(--color-accent-text)}.seg{height:calc(var(--control-h) - 4px);border-radius:calc(var(--radius-md) - 2px)}.segment{display:inline-flex;gap:2px;padding:2px;border-radius:var(--radius-md);background:var(--color-hover)}.seg.is-on,.seg[aria-pressed=true],.seg[aria-checked=true]{background:var(--color-surface-solid);box-shadow:var(--shadow-sm);color:var(--color-text)}.panel .segment{width:100%}.panel .seg{flex:1;min-width:0;padding-inline:4px;font-size:var(--text-sm)}#quality-summary{margin:0}#quality-reopen{width:100%}.seg.is-on .icon{color:var(--color-accent-text)}#viewport{position:absolute;inset:0}#view{width:100%;height:100%;display:block;touch-action:none}#view:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.nav-hint{position:absolute;z-index:var(--z-toast);left:50%;bottom:calc(var(--safe-bottom) + var(--inset) + var(--island-h) + var(--space-3));transform:translate(-50%);max-width:min(720px,calc(100% - 2 * var(--inset)));margin:0;padding:6px 12px;border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-sm);text-align:center;pointer-events:none;opacity:1;transition:opacity var(--dur-slow) var(--ease-out)}.nav-hint.is-leaving{opacity:0}@media(pointer:coarse){.hint-mouse{display:none}}@media(pointer:fine){.hint-touch{display:none}}.topbar{position:absolute;z-index:var(--z-topbar);top:calc(var(--safe-top) + var(--inset));left:calc(var(--safe-left) + var(--inset));right:calc(var(--safe-right) + var(--inset));display:flex;justify-content:space-between;align-items:flex-start;gap:var(--gap);pointer-events:none}.topbar>*{pointer-events:auto}.brand,.top-actions,.toolbar{height:var(--island-h)}.brand{min-width:0;padding-inline:10px var(--cluster-pad);gap:var(--space-2)}.brand-name{font-weight:600;letter-spacing:var(--tracking-tight)}.mark{width:20px;height:20px;flex:none;display:block;object-fit:contain}.mark.lg{width:42px;height:42px}.file-chip{display:flex;align-items:center;gap:var(--space-2);min-width:0}.file-name{max-width:32ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-base)}.file-size{color:var(--color-text-muted);font-size:var(--text-sm)}.badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 6px;border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-accent-text);font-size:var(--text-xs);font-weight:600}.btn-meta{color:var(--color-text-subtle);font-size:var(--text-sm);font-variant-numeric:tabular-nums}#file-quality,#file-detail{flex:none;white-space:nowrap}.badge-warn{border:0;cursor:pointer;color:var(--color-warning);background:color-mix(in srgb,var(--color-warning) 14%,transparent)}.badge-geo{border:0;cursor:pointer}.badge-geo:hover{background:var(--color-active)}.top-actions{flex:none}.toolbar{position:absolute;z-index:var(--z-toolbar);left:50%;bottom:calc(var(--safe-bottom) + var(--inset));transform:translate(-50%)}body:not(.is-fullscreen) .when-fullscreen,body.is-fullscreen .when-windowed{display:none}@media(min-width:641px){body.chrome-ready .toolbar{transition:transform var(--dur-base) var(--ease-out)}body.chrome-ready .toast-stack{transition:transform var(--dur-base) var(--ease-out),width var(--dur-base) var(--ease-out)}body.chrome-ready .nav-hint{transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-base) var(--ease-out),max-width var(--dur-base) var(--ease-out)}body.panel-open{--drawer-pad: calc(var(--panel-w) + var(--safe-right) + var(--inset) + var(--gap))}body.panel-open .toolbar,body.panel-open .nav-hint,body.panel-open .toast-stack{transform:translate(calc(-50% - min(max(0px,50% + var(--drawer-pad) - 50vw),max(0px,50vw - 50% - var(--safe-left) - var(--inset)))))}body.panel-open .nav-hint{max-width:min(720px,calc(100% - 2 * var(--inset)),calc(100% - var(--drawer-pad) - var(--safe-left) - var(--inset)))}body.panel-open .toast-stack{width:min(520px,calc(100% - 2 * var(--inset)),calc(100% - var(--drawer-pad) - var(--safe-left) - var(--inset)))}}@media(max-width:900px){.top-actions .btn-label,.top-actions .btn-meta{display:none}#open-btn .btn-label{display:inline}.brand:has(#file-chip:not([hidden])) .brand-name{display:none}.brand:has(#file-chip:not([hidden])) .file-chip>.divider{display:none}}@media(max-width:640px){.brand-name,#open-btn .btn-label{display:none}#open-btn{width:var(--control-h);padding:0}.file-size{display:none}.file-name{max-width:none;flex:1 1 auto}.badge-label{display:none}}.banner-slot{position:absolute;z-index:var(--z-topbar);left:0;right:0;top:0;display:flex;justify-content:center;pointer-events:none}.banner{position:relative;top:calc(var(--safe-top) + var(--inset) + 48px);max-width:520px;height:auto;gap:var(--space-2);padding-inline:var(--space-3);pointer-events:auto}.banner .icon{color:var(--color-warning)}.banner .btn{flex:none}.banner-text{margin:0;flex:1 1 auto;min-width:0;font-size:var(--text-sm);line-height:var(--leading-sm)}@media(max-width:640px){.banner{width:calc(100% - 2 * var(--inset));max-width:none}}.menu{position:relative}.menu-pop{position:absolute;top:calc(100% + var(--gap));right:0;z-index:var(--z-topbar);width:264px;padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-solid);box-shadow:var(--shadow-lg);animation:pop-in var(--dur-fast) var(--ease-out)}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}}.menu-item{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:8px 10px;border:0;border-radius:var(--radius-md);background:transparent;text-align:left;font-size:var(--text-base)}.menu-item:hover,.menu-item:focus-visible{background:var(--color-hover);outline-offset:-2px}.menu-item small{color:var(--color-text-muted);font-size:var(--text-sm)}.menu-item-row{flex-direction:row;align-items:center;gap:10px;min-height:var(--control-h)}.menu-heading{padding:8px 10px 4px;font-size:var(--text-xs);font-weight:600;color:var(--color-text-muted)}.hud{position:absolute;z-index:var(--z-hud);top:calc(var(--safe-top) + var(--inset) + var(--island-h) + var(--gap));left:calc(var(--safe-left) + var(--inset));flex-direction:column;align-items:stretch;min-height:0;padding:2px;font-size:var(--text-sm)}.hud-summary{display:flex;align-items:center;gap:6px;height:var(--control-h-sm);padding:0 10px;border:0;background:transparent;border-radius:var(--radius-md);color:var(--color-text)}.hud-summary:hover{background:var(--color-hover)}.hud-unit,.hud-dot{color:var(--color-text-muted)}#hud.is-idle .hud-unit{display:none}.hud-detail{display:grid;grid-template-columns:auto auto;gap:4px 16px;margin:0;padding:6px 10px 8px}.hud-detail div{display:contents}.hud-detail dt{color:var(--color-text-muted)}.hud-detail dd{margin:0;text-align:right}.select{position:relative;display:inline-flex}.select select{appearance:none;height:var(--control-h);min-width:132px;padding:0 30px 0 10px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text);font-size:var(--text-base)}.select .icon{position:absolute;right:8px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--color-text-muted)}@media(pointer:coarse){.select select{font-size:16px}}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:20px;margin:0;background:transparent;--fill: 50%}input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:var(--radius-full);background:linear-gradient(to right,var(--color-accent) var(--fill),var(--color-track) var(--fill))}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;margin-top:-6px;border-radius:50%;background:var(--color-thumb);border:2px solid var(--color-accent);box-shadow:var(--shadow-sm)}input[type=range]::-moz-range-track{height:4px;border-radius:var(--radius-full);background:var(--color-track)}input[type=range]::-moz-range-progress{height:4px;border-radius:var(--radius-full);background:var(--color-accent)}input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--color-thumb);border:2px solid var(--color-accent)}@media(pointer:coarse){input[type=range]{height:32px}input[type=range]::-webkit-slider-thumb{width:24px;height:24px;margin-top:-10px}input[type=range]::-moz-range-thumb{width:20px;height:20px}}.switch{appearance:none;position:relative;flex:none;width:32px;height:18px;margin:0;border:0;padding:0;border-radius:var(--radius-full);background:var(--color-track);cursor:pointer;transition:background var(--dur-fast) var(--ease-out)}.switch:before{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--color-thumb);box-shadow:var(--shadow-sm);transition:transform var(--dur-fast) var(--ease-out)}.switch:checked{background:var(--color-accent)}.switch:checked:before{transform:translate(14px)}@media(pointer:coarse){.switch{width:44px;height:26px}.switch:before{width:22px;height:22px}.switch:checked:before{transform:translate(18px)}}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:var(--control-h);font-size:var(--text-base);cursor:pointer}.field{display:grid;gap:6px;padding:6px 0;font-size:var(--text-base)}.field>span{display:flex;justify-content:space-between}.field output{color:var(--color-text-muted);font-variant-numeric:tabular-nums}.field-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:var(--control-h);padding:4px 0;font-size:var(--text-base)}.field-row output{color:var(--color-text-muted)}.panel{position:absolute;z-index:var(--z-panel);top:calc(var(--safe-top) + var(--inset) + var(--island-h) + var(--gap));right:calc(var(--safe-right) + var(--inset));bottom:calc(var(--safe-bottom) + var(--inset));width:var(--panel-w);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);backdrop-filter:var(--blur);box-shadow:var(--shadow-lg);animation:panel-in var(--dur-base) var(--ease-out)}@keyframes panel-in{0%{opacity:0;transform:translate(8px)}}.panel.is-collapsed{display:none}.panel-head{display:flex;align-items:center;gap:var(--space-2);height:48px;padding:0 var(--space-2) 0 var(--space-4);border-bottom:1px solid var(--color-border);flex:none}.panel-title{flex:1;margin:0;font-size:var(--text-md);font-weight:600}.sheet-grip{display:none}@media(max-width:640px){#panel{inset:auto 0 0;width:auto;max-height:min(70dvh,640px);border-radius:var(--radius-xl) var(--radius-xl) 0 0;border-bottom:0;padding-bottom:var(--safe-bottom);animation-name:sheet-in}.sheet-grip{display:block;position:absolute;top:6px;left:50%;width:36px;height:4px;margin-left:-18px;border-radius:var(--radius-full);background:var(--color-border-strong)}.panel-head{position:relative;height:52px;padding-top:8px}}@keyframes sheet-in{0%{transform:translateY(24px);opacity:0}}@media(max-width:960px)and (max-height:520px)and (pointer:coarse){#panel{top:calc(var(--safe-top) + var(--inset));left:auto;right:calc(var(--safe-right) + var(--inset));bottom:calc(var(--safe-bottom) + var(--inset));width:min(var(--panel-w),46vw);max-height:none;border-radius:var(--radius-lg);border-bottom:1px solid var(--color-border);padding-bottom:0;animation-name:panel-in}.sheet-grip{display:none}.panel-head{height:48px;padding-top:0}body.panel-open .toolbar,body.panel-open .nav-hint,body.panel-open .toast-stack{left:calc((100% - min(var(--panel-w),46vw) - var(--inset)) / 2);transform:translate(-50%)}body.panel-open .nav-hint{max-width:min(720px,calc(100% - 2 * var(--inset)))}body.panel-open .toast-stack{width:min(520px,calc(100% - 2 * var(--inset)))}}.panel-body{flex:1;overflow:auto;overscroll-behavior:contain;padding:0 var(--space-4) var(--space-4)}.sec+.sec{border-top:1px solid var(--color-border)}.sec>summary{display:flex;align-items:center;justify-content:space-between;height:40px;list-style:none;cursor:pointer;font-size:var(--text-base);font-weight:600}.sec>summary::-webkit-details-marker{display:none}.sec-chev{color:var(--color-text-muted);transition:transform var(--dur-fast) var(--ease-out)}.sec:not([open]) .sec-chev{transform:rotate(-90deg)}.sec[open]{padding-bottom:var(--space-3)}.kv{display:grid;grid-template-columns:104px 1fr;gap:6px var(--space-2);margin:0;font-size:var(--text-base)}.kv dt{color:var(--color-text-muted)}.kv dd{margin:0;overflow-wrap:anywhere}.hint{color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-sm)}.sec-details{color:var(--color-text-muted);font-size:var(--text-sm)}.sec-details summary{cursor:pointer;width:fit-content}.sec-details p{margin:6px 0 0}.panel a{color:var(--color-accent-text)}.kv-mono{font-family:var(--font-mono);font-size:var(--text-sm)}.sec-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}body.no-graphics #toolbar,body.no-graphics #hud{display:none}body.is-leveling #view{cursor:crosshair}#upright{align-self:center;flex:none;flex-direction:column;align-items:stretch;gap:var(--space-2);width:min(280px,100%);height:auto;min-height:0;max-height:calc(50vh - var(--safe-bottom) - var(--inset) - var(--island-h) - var(--space-3) - 16px);overflow:auto;padding:var(--space-3);pointer-events:auto}#upright-open{width:100%}.upright-head,.upright-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.upright-head h2{margin:0;font-size:var(--text-md);font-weight:600}.upright-turns{display:grid;gap:var(--space-1)}.upright-kicker{margin:0;color:var(--color-text-muted);font-size:var(--text-sm)}.upright-row{display:grid;grid-template-columns:8px 1.4em auto auto;align-items:center;justify-content:start;gap:var(--space-2)}.upright-axis{font-size:var(--text-sm)}.upright-turn{font-size:var(--text-md)}.upright-status{margin:0;min-height:var(--leading-sm);color:var(--color-text-muted);font-size:var(--text-sm)}.upright-actions{justify-content:flex-end}#upright-level{width:100%}.axis-dot{width:8px;height:8px;border-radius:var(--radius-full)}.axis-dot[data-axis=x]{background:#e5484d}.axis-dot[data-axis=y]{background:#46a758}.axis-dot[data-axis=z]{background:#3e8ed0}@media(max-width:640px){#upright{width:100%}}.empty{position:absolute;inset:0;display:grid;place-items:center;z-index:2;pointer-events:none}.problem .empty-card{text-align:left}.problem-icon{color:var(--color-danger);margin-bottom:var(--space-3)}#problem-desc{color:var(--color-text-muted);margin:0;white-space:pre-wrap}.problem .empty-actions{justify-content:flex-start}#problem-details{margin-top:var(--space-4);color:var(--color-text-muted);font-size:var(--text-sm)}#problem-details summary{cursor:pointer}#problem-report{max-height:180px;overflow:auto;margin:var(--space-2) 0;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere}#problem-close{margin-top:var(--space-3)}#toast-action{align-self:center;flex:none}.empty-card{pointer-events:auto;width:min(480px,calc(100% - 2 * var(--inset)));padding:var(--space-8);border-radius:var(--radius-xl);text-align:center;background:var(--color-surface);backdrop-filter:var(--blur);border:1px solid var(--color-border);box-shadow:var(--shadow-lg)}.empty-logo{width:56px;height:56px;margin:0 auto var(--space-3);display:block;object-fit:contain}.empty-brand{margin:0 0 var(--space-2);font-size:var(--text-lg);line-height:var(--leading-lg);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight)}.empty-card h1{margin:0 0 var(--space-2);font-size:var(--text-xl);line-height:var(--leading-xl);letter-spacing:var(--tracking-tight)}#empty-desc{color:var(--color-text-muted);margin:0 auto;max-width:36ch}.empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2);margin-top:var(--space-6)}@media(max-width:640px){.empty-actions .btn{flex:1 1 100%}}.empty-formats{margin:var(--space-5) 0 0;font-size:var(--text-sm);color:var(--color-text-subtle)}.empty-samples{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.empty-samples-label{margin:0 0 var(--space-2);font-size:var(--text-xs);line-height:var(--leading-xs);font-weight:var(--weight-regular);color:var(--color-text-subtle)}.sample-carousel{position:relative}.sample-track{display:flex;gap:var(--space-2);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:2px;scrollbar-width:none;padding:2px;mask-image:linear-gradient(to right,transparent,#000 22px,#000 calc(100% - 22px),transparent)}.sample-track::-webkit-scrollbar{display:none}.sample-carousel.at-start .sample-track{mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 22px),transparent)}.sample-carousel.at-end .sample-track{mask-image:linear-gradient(to right,transparent,#000 22px,#000 100%)}.sample-carousel.at-start.at-end .sample-track{mask-image:none}.sample-card{display:flex;flex:0 0 84px;flex-direction:column;align-items:center;gap:3px;width:84px;padding:0;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);font-size:var(--text-xs);line-height:var(--leading-xs);scroll-snap-align:start}.sample-card:hover .sample-name{color:var(--color-text)}.sample-thumb{position:relative;display:grid;place-items:center;width:84px;height:52px;border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-text-subtle);overflow:hidden}.sample-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.sample-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--weight-semibold)}.sample-card .badge{height:16px;padding:0 5px;background:transparent;color:var(--color-text-subtle);font-weight:var(--weight-regular)}.sample-arrow{position:absolute;top:18px;z-index:1;display:grid;place-items:center;width:26px;height:26px;padding:0;border:0;border-radius:var(--radius-full);background:color-mix(in srgb,var(--color-surface-solid) 88%,transparent);color:var(--color-text-muted);box-shadow:var(--shadow-sm)}.sample-arrow:hover{color:var(--color-text);background:var(--color-surface-solid)}.sample-arrow[hidden]{display:none}.sample-arrow-prev{left:0}.sample-arrow-next{right:0}.sample-arrow-prev .icon{transform:rotate(90deg)}.sample-arrow-next .icon{transform:rotate(-90deg)}@media(max-width:640px){.sample-arrow{display:none}}.chip{height:var(--control-h-sm);padding:0 10px;border-radius:var(--radius-full);border:1px solid var(--color-border);background:transparent;color:var(--color-text);font-size:var(--text-sm)}.chip:hover{background:var(--color-hover)}.drop-overlay{position:fixed;inset:0;z-index:var(--z-drop);display:grid;place-items:center;padding:calc(var(--inset) + var(--safe-top)) var(--inset) var(--inset);pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-out);background:color-mix(in srgb,var(--color-accent) 8%,transparent)}.drop-inner{width:100%;height:100%;display:grid;place-content:center;justify-items:center;gap:var(--space-2);border:2px dashed var(--color-accent);border-radius:var(--radius-xl);color:var(--color-text)}.drop-inner p{margin:0;font-size:var(--text-lg);font-weight:600}.drop-inner span{color:var(--color-text-muted)}body.is-dragging .drop-overlay{opacity:1}.loading{position:absolute;inset:0;z-index:var(--z-loading);display:grid;place-items:center;pointer-events:none}.loading-card{pointer-events:auto;width:min(440px,calc(100% - 2 * var(--inset)));display:grid;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-surface-solid);box-shadow:var(--shadow-lg)}@media(max-width:640px){.loading{place-items:end center;padding-bottom:calc(var(--safe-bottom) + var(--inset) + var(--island-h) + var(--gap))}}.loading-head{display:flex;align-items:center;gap:var(--space-3)}.loading-titles{flex:1;min-width:0}.loading-file{margin:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loading-text{margin:0;color:var(--color-text-muted);font-size:var(--text-base)}.loading-elapsed{color:var(--color-text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.steps{display:flex;gap:var(--space-4);margin:0;padding:0;list-style:none;font-size:var(--text-sm);color:var(--color-text-subtle)}.steps li{display:flex;align-items:center;gap:6px}.step-dot{width:16px;height:16px;display:grid;place-items:center;border-radius:50%;border:1.5px solid currentColor}.step-dot .icon{width:10px;height:10px;stroke-width:3;opacity:0}.steps li.is-active{color:var(--color-text)}.steps li.is-active .step-dot{border-color:var(--color-accent);box-shadow:inset 0 0 0 3px var(--color-accent-soft)}.steps li.is-done{color:var(--color-text-muted)}.steps li.is-done .step-dot{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent)}.steps li.is-done .icon{opacity:1}.loading-detail{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;margin:0;font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.loading-detail:empty{display:none}.load-track{height:4px;border-radius:var(--radius-full);background:var(--color-hover);overflow:hidden}.load-bar{height:100%;width:0%;border-radius:inherit;background:var(--color-accent)}.load-track.is-indet .load-bar{width:35%;animation:load-indet 1.1s ease-in-out infinite}@keyframes load-indet{0%{transform:translate(-120%)}to{transform:translate(320%)}}.spinner{width:18px;height:18px;flex:none;border-radius:50%;border:2px solid var(--color-border);border-top-color:var(--color-accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none;border-top-color:var(--color-accent)}.load-track.is-indet .load-bar{animation:none;transform:none;width:100%;opacity:.45}.panel,.toast,.menu-pop{animation:none}}.toast-stack{position:absolute;z-index:var(--z-toast);left:50%;transform:translate(-50%);bottom:calc(var(--safe-bottom) + var(--inset) + var(--island-h) + var(--space-3));width:min(520px,calc(100% - 2 * var(--inset)));display:flex;flex-direction:column-reverse;gap:var(--gap);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:var(--space-3);padding:10px 6px 10px var(--space-3);border:1px solid var(--color-border);border-left:3px solid var(--toast-c, var(--color-accent));border-radius:var(--radius-md);background:var(--color-surface-solid);color:var(--color-text);box-shadow:var(--shadow-lg);font-size:var(--text-base);animation:toast-in var(--dur-base) var(--ease-out)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.toast-icon{color:var(--toast-c, var(--color-accent));margin-top:1px}.toast-msg{flex:1;margin:2px 0 0;white-space:pre-wrap}.toast[data-kind=error]{--toast-c: var(--color-danger)}.toast[data-kind=warn]{--toast-c: var(--color-warning)}.toast[data-kind=info]{--toast-c: var(--color-accent)}.toast-update{align-items:center;--toast-c: var(--color-accent)}.toast-update .toast-msg span{display:block;color:var(--color-text-muted);font-size:var(--text-sm)}.dialog{width:min(440px,calc(100vw - 2 * var(--inset)));padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface-solid);color:var(--color-text);box-shadow:var(--shadow-lg)}.dialog::backdrop{background:var(--color-scrim);backdrop-filter:blur(2px)}.dialog-wide{width:min(640px,calc(100vw - 2 * var(--inset)))}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.dialog-head h2{margin:0;font-size:var(--text-lg);font-weight:600}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5)}.download-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}.download-row{display:flex;align-items:center;gap:var(--space-2);min-height:var(--control-h);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text);text-decoration:none}.download-row:hover{border-color:var(--color-border-strong)}.download-row.is-current{border-color:var(--color-accent);background:var(--color-accent-soft)}.download-os{font-weight:var(--weight-semibold)}.download-files{margin-left:auto;color:var(--color-text-muted);font-size:var(--text-sm)}.input{appearance:none;width:100%;height:var(--control-h);padding:0 10px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text);font-size:var(--text-base)}@media(pointer:coarse){.input{font-size:16px}}.field-error{color:var(--color-danger);font-size:var(--text-sm);margin:6px 0 0}@media(max-width:640px){.dialog,.dialog-wide{margin:auto 0 0;width:100%;max-width:none;max-height:100dvh;overflow:auto;border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding-bottom:calc(var(--space-5) + var(--safe-bottom))}}#help-dialog .hint{margin:0 0 var(--space-4)}.help-foot{display:flex;justify-content:flex-end;margin-top:var(--space-5)}#bench-report{max-height:40vh;overflow:auto;margin:var(--space-3) 0 0;white-space:pre-wrap;overflow-wrap:anywhere;text-align:left}.help-grid{display:grid;gap:var(--space-5)}@media(min-width:641px){.help-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.help-grid h3{display:flex;align-items:center;gap:8px;margin:0 0 var(--space-3);font-size:var(--text-base)}kbd{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border:1px solid var(--color-border-strong);border-bottom-width:2px;border-radius:var(--radius-sm);font:600 var(--text-xs)/1 var(--font-sans);color:var(--color-text)}.keys{display:grid;grid-template-columns:auto 1fr;gap:8px 12px;margin:0;font-size:var(--text-base)}.keys dt{color:var(--color-text-muted)}.keys dd{margin:0}@media(prefers-reduced-motion:reduce){#panel,.toast,.menu-pop{animation:none}}
