:root{--bg:#e9edf1;--bar:#1f2933;--bar-text:#f5f7fa;--bar-muted:#9aa5b1;--button-hover:#323f4b;--panel:#1f2933d1;--panel-text:#f5f7fa;--accent:#2f80ed;--topbar-height:48px}*{box-sizing:border-box}html,body{background:var(--bg);color:#1f2933;height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;overflow:hidden}.topbar{height:calc(var(--topbar-height) + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0 16px;background:var(--bar);color:var(--bar-text);z-index:10;justify-content:space-between;align-items:center;gap:12px;display:flex;position:fixed;inset:0 0 auto}.title{flex-direction:column;min-width:0;display:flex}.project{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.subtitle{color:var(--bar-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.tools{flex-shrink:0;gap:4px;display:flex}.tools button{height:36px;color:var(--bar-text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:0 10px;display:flex}.tools button:hover,.tools button.active{background:var(--button-hover)}.tools button[hidden],.notice button[hidden]{display:none}.tools svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}#viewport{inset:calc(var(--topbar-height) + env(safe-area-inset-top)) 0 0 0;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:fixed}#viewport canvas{width:100%;height:100%;display:block}.overlay{inset:calc(var(--topbar-height) + env(safe-area-inset-top)) 0 0 0;z-index:5;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:fixed}.overlay.hidden,.stats.hidden{display:none}.spinner{border:3px solid #cbd2d9;border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.card{background:#fff;border-radius:10px;width:min(420px,100vw - 32px);padding:20px;box-shadow:0 4px 20px #00000014}.card h2{margin:0 0 12px;font-size:18px}.card ul{margin:0;padding:0;list-style:none}.card li a{color:var(--accent);border-radius:6px;padding:10px 12px;text-decoration:none;display:block}.card li a:hover{background:#f0f4f8}.hint{color:#7b8794;margin:12px 0 0;font-size:12px}.stats{left:12px;bottom:calc(12px + env(safe-area-inset-bottom));background:var(--panel);color:var(--panel-text);white-space:pre;pointer-events:none;z-index:6;border-radius:6px;padding:8px 10px;font:12px/1.5 ui-monospace,Cascadia Mono,Consolas,monospace;position:fixed}.panel{top:calc(var(--topbar-height) + env(safe-area-inset-top) + 12px);z-index:8;background:#fff;border-radius:10px;flex-direction:column;width:360px;display:flex;position:fixed;bottom:12px;right:12px;overflow:hidden;box-shadow:0 4px 24px #00000026}.panel.hidden{display:none}.panel-header{border-bottom:1px solid #e4e7eb;align-items:flex-start;gap:8px;padding:12px 8px 8px 14px;display:flex}.panel-heading{flex:1;min-width:0}.panel-title{overflow-wrap:anywhere;font-weight:600}.panel-subtitle{color:#7b8794;margin-top:2px;font-size:12px}.panel-close{cursor:pointer;background:0 0;border:0;border-radius:6px;flex-shrink:0;width:32px;height:32px}.panel-close:hover{background:#f0f4f8}.panel-close svg{fill:none;stroke:#52606d;stroke-width:2px;stroke-linecap:round;width:18px;height:18px}.panel-tabs{border-bottom:1px solid #e4e7eb;gap:4px;padding:8px 14px 0;display:flex}.panel-tabs button{font:inherit;color:#52606d;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:6px 12px}.panel-tabs button.active{color:#1f2933;border-bottom-color:var(--accent);font-weight:600}.panel-body{-webkit-overflow-scrolling:touch;flex:1;padding:4px 0 12px;overflow-y:auto}.panel-body details{border-bottom:1px solid #f0f2f4}.panel-body summary{cursor:pointer;-webkit-user-select:none;user-select:none;background:#f5f7fa;padding:8px 14px;font-size:13px;font-weight:600}.panel-body table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:13px}.panel-body td{vertical-align:top;text-overflow:ellipsis;white-space:nowrap;border-top:1px solid #f0f2f4;padding:5px 14px;overflow:hidden}.panel-body td:first-child{color:#52606d;width:48%}.panel-typename{margin:8px 14px;font-weight:600}.panel-empty{color:#7b8794;margin:16px 14px}.panel-left{width:300px;max-height:calc(100% - var(--topbar-height) - env(safe-area-inset-top) - 260px);min-height:240px;bottom:auto;left:12px;right:auto}.panel-body summary{justify-content:space-between;align-items:center;display:flex}.filter-actions{gap:4px;display:flex}.filter-actions button{font:inherit;cursor:pointer;background:#fff;border:1px solid #cbd2d9;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:400}.filter-actions button:hover{background:#f0f4f8}.filter-list{margin:0;padding:4px 0;list-style:none}.filter-list label{cursor:pointer;align-items:center;gap:8px;padding:5px 14px;font-size:13px;display:flex}.filter-list label:hover{background:#f5f7fa}.filter-list input{width:16px;height:16px;accent-color:var(--accent);margin:0}.filter-list span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.filter-count{color:#9aa5b1;font-size:12px}.scene-labels{pointer-events:none;z-index:1;position:absolute;inset:0;overflow:hidden}.dimension-label,.level-label{white-space:nowrap;will-change:transform;position:absolute;top:0;left:0}.dimension-label{background:#fffffff2;border:1px solid #eb5757;border-radius:5px;flex-wrap:wrap;justify-content:center;align-items:center;column-gap:6px;max-width:240px;padding:3px 4px 3px 8px;font-size:12px;display:flex}.dimension-label .total{color:#c0392b;font-weight:700}.dimension-label .parts{text-align:center;color:#616e7c;flex-basis:100%;order:3;font-size:10px}.dimension-label button{color:#7b8794;cursor:pointer;pointer-events:auto;background:0 0;border:0;border-radius:3px;order:2;width:18px;height:18px;padding:0;font-size:14px;line-height:1}.dimension-label button:hover{color:#c0392b;background:#f0f4f8}.level-label{color:#1f2933;background:#fffc;border-left:2px solid #3e4c59;flex-direction:column;padding:1px 6px;font-size:11px;line-height:1.25;display:flex}.level-label .name{font-weight:600}.view-cube{--cube-size:64px;top:calc(var(--topbar-height) + env(safe-area-inset-top) + 24px);width:var(--cube-size);height:var(--cube-size);perspective:420px;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;z-index:4;position:fixed;right:34px}.view-cube-body,.view-cube-face,.view-cube-compass{transform-style:preserve-3d;position:absolute;inset:0}.view-cube-face{transform:var(--face-transform) translateZ(calc(var(--cube-size) / 2));backface-visibility:hidden;background:#f5f7faf5;border:1px solid #9aa5b1;grid-template:22% 56% 22%/22% 56% 22%;display:grid}.view-cube-label{letter-spacing:.02em;color:#52606d;pointer-events:none;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:flex;position:absolute;inset:0}.view-cube-zone{cursor:pointer}.view-cube-zone:hover{background:#2f80ed66}.view-cube-compass{transform:rotateX(90deg) translateZ(calc(var(--cube-size) / -2 - 6px));border:7px solid #9aa5b18c;border-radius:50%;inset:-28px}.view-cube-direction{text-align:center;color:#3e4c59;cursor:pointer;background:#fff;border-radius:50%;width:18px;height:18px;font-size:10px;font-weight:700;line-height:18px;position:absolute}.view-cube-direction:hover{color:#fff;background:#2f80ed}.view-cube-direction.north{color:#c0392b;top:-12px;left:calc(50% - 9px)}.view-cube-direction.south{bottom:-12px;left:calc(50% - 9px)}.view-cube-direction.east{top:calc(50% - 9px);right:-12px}.view-cube-direction.west{top:calc(50% - 9px);left:-12px}body.props-open .view-cube{right:406px}.notice{top:calc(var(--topbar-height) + env(safe-area-inset-top) + 10px);z-index:9;background:#fff8e6;border:1px solid #f2c94c;border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;width:max-content;max-width:min(560px,100vw - 170px);padding:8px 8px 8px 14px;font-size:13px;display:flex;position:fixed;left:12px;box-shadow:0 4px 16px #0000001f}.notice.hidden{display:none}.notice #notice-text{flex:160px;min-width:0}.notice button{font:inherit;cursor:pointer;border:0;border-radius:5px;flex-shrink:0}#notice-action{color:#fff;background:#1f2933;padding:5px 10px}#notice-close{color:#52606d;background:0 0;width:26px;height:26px;font-size:16px}.measure-bar{left:50%;bottom:calc(14px + env(safe-area-inset-bottom));background:var(--bar);width:max-content;max-width:calc(100vw - 24px);color:var(--bar-text);z-index:9;border-radius:8px;align-items:center;gap:8px;padding:6px 8px 6px 14px;font-size:13px;display:flex;position:fixed;transform:translate(-50%)}.measure-bar.hidden{display:none}.measure-bar button{background:var(--button-hover);color:var(--bar-text);font:inherit;cursor:pointer;border:0;border-radius:5px;flex-shrink:0;padding:5px 10px}.measure-bar button:hover{background:#52606d}.context-menu{z-index:20;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #cbd2d9;border-radius:6px;min-width:230px;margin:0;padding:4px 0;font-size:13px;list-style:none;position:fixed;box-shadow:0 6px 24px #0000002e}.context-menu li{cursor:pointer;white-space:nowrap;justify-content:space-between;align-items:center;gap:24px;padding:7px 14px;display:flex;position:relative}.context-menu li:hover,.context-menu li.open{background:#e8f0fe}.context-menu li.disabled{color:#9aa5b1;cursor:default}.context-menu li.disabled:hover{background:0 0}.context-menu li.separator{cursor:default;background:#e4e7eb;height:1px;margin:4px 0;padding:0}.context-menu .menu-hint{color:#7b8794;font-size:12px}.context-menu .submenu{display:none;position:absolute;top:-5px;left:100%}.context-menu li.has-submenu:hover>.submenu,.context-menu li.has-submenu.open>.submenu{display:block}@media (width<=960px){.tools button span{display:none}}@media (width<=600px),(height<=500px){.tools button span{display:none}.tools button{padding:0 7px}.tools{gap:2px}.panel-body td{white-space:normal;overflow-wrap:anywhere}.view-cube-label{font-size:8px}.view-cube-compass{border-width:5px;inset:-20px}.context-menu{max-height:calc(100vh - 16px);overflow-y:auto}.context-menu .submenu{box-shadow:none;background:#f5f7fa;border:0;border-top:1px solid #e4e7eb;border-radius:0;margin:6px -14px -7px;position:static}.context-menu li.has-submenu{flex-wrap:wrap}.context-menu li.has-submenu:hover>.submenu{display:none}.context-menu li.has-submenu.open>.submenu{width:calc(100% + 28px);display:block}}@media (width<=600px){.panel{width:auto;height:50vh;max-height:none;padding-bottom:env(safe-area-inset-bottom);border-radius:12px 12px 0 0;inset:auto 0 0}.view-cube,body.props-open .view-cube{--cube-size:46px;top:calc(var(--topbar-height) + env(safe-area-inset-top) + 66px);right:26px}.measure-bar{top:calc(var(--topbar-height) + env(safe-area-inset-top) + 8px);bottom:auto}}@media (height<=500px) and (orientation:landscape){:root{--topbar-height:40px;--side-panel-width:min(42vw, 340px)}.topbar{padding-left:calc(12px + env(safe-area-inset-left));padding-right:calc(8px + env(safe-area-inset-right))}.tools button{height:32px}.panel,.panel-left{top:calc(var(--topbar-height) + env(safe-area-inset-top));width:var(--side-panel-width);border-radius:0;height:auto;min-height:0;max-height:none;padding-bottom:0;bottom:0}.panel{padding-right:env(safe-area-inset-right);left:auto;right:0}.panel-left{padding-right:0;padding-left:env(safe-area-inset-left);left:0;right:auto}.panel-header{padding:6px 6px 4px 12px}.panel-tabs{padding-top:2px}.view-cube{--cube-size:40px;top:calc(var(--topbar-height) + env(safe-area-inset-top) + 28px);right:calc(26px + env(safe-area-inset-right))}body.props-open .view-cube{--cube-size:40px;top:calc(var(--topbar-height) + env(safe-area-inset-top) + 28px);right:calc(var(--side-panel-width) + 26px)}.view-cube-compass{inset:-16px}.notice{left:calc(8px + env(safe-area-inset-left));top:calc(var(--topbar-height) + env(safe-area-inset-top) + 6px);padding:4px 4px 4px 10px;font-size:12px}.measure-bar{top:auto;bottom:calc(8px + env(safe-area-inset-bottom))}}
