:root{--bg:#1a1a2e;--surface:#16213e;--surface-alt:#0f3460;--accent:#e94560;--text:#eee;--text-muted:#8892a4;--radius:6px;--sidebar-width:220px;color:var(--text);background:var(--bg);margin:0;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{height:100vh;margin:0;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-width);background:var(--surface);border-left:1px solid #ffffff0f;flex-direction:column;flex-shrink:0;gap:1rem;padding:1rem;display:flex;overflow:auto}.title{color:var(--text);letter-spacing:.5px;margin-bottom:16px;font-size:14px;font-weight:700}.section.load-glb{margin-top:auto}.section label,.section-heading{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);user-select:none;font-size:12px}.section label{cursor:pointer;flex-direction:column;gap:6px;display:flex}.section-heading{margin-bottom:8px;display:block}.section label:has(input[type=checkbox]){flex-direction:row;align-items:center;gap:8px}.section select{appearance:none;background:var(--surface-alt);color:var(--text);border-radius:var(--radius);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238892a4'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;border:1px solid #ffffff1a;outline:none;width:100%;padding:7px 28px 7px 10px;font-size:13px;transition:border-color .15s}.section select:hover{border-color:var(--accent)}.section select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px #e9456040}.shading-picker{align-items:stretch;gap:10px;display:flex}.shading-list{counter-reset:shading-step 10;flex-direction:column;flex:1;gap:6px;margin:0;padding:0;list-style:none;display:flex}.shading-list li{counter-increment:shading-step -1}.shading-option{border-radius:var(--radius);width:100%;color:var(--text);text-align:left;cursor:pointer;background:#0f34608c;border:1px solid #ffffff14;align-items:center;gap:8px;padding:8px 10px;font-size:13px;transition:border-color .15s,background .15s,transform .15s;display:flex}.shading-list .shading-option:before{content:counter(shading-step);color:#ffffff7a;text-align:right;font-variant-numeric:tabular-nums;font-size:12px}.shading-list li:has(.is-active) .shading-option:before{color:var(--accent)}.shading-option:hover{background:#0f3460e6;border-color:#e945608c}.shading-list li:has(.is-active)~li .shading-option{background:linear-gradient(135deg,#e9456024,#0f3460d1);border-color:#e9456057;box-shadow:0 0 0 1px #e9456014}.shading-option.is-active{border-color:var(--accent);background:linear-gradient(135deg,#e9456047,#0f3460f2);transform:translate(2px);box-shadow:0 0 0 1px #e9456033}.shading-option:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #e9456040}.shading-slider{width:18px;min-height:218px;accent-color:var(--accent);cursor:pointer;writing-mode:vertical-lr;direction:rtl;margin:0}.shading-slider:focus-visible{outline:none}.section input[type=checkbox]{appearance:none;background:var(--surface-alt);cursor:pointer;border:1px solid #fff3;border-radius:3px;flex-shrink:0;width:16px;height:16px;transition:background .15s,border-color .15s;position:relative}.section input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.section input[type=checkbox]:checked:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.spacer{flex:1}.stats{font-variant-numeric:tabular-nums;border-top:1px solid #ffffff0f;flex-direction:column;gap:8px;padding-top:16px;display:flex}.stat{justify-content:space-between;align-items:center;display:flex}.stat-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-size:11px}.stat-value{color:var(--text);font-size:13px;font-weight:600}.viewport{background:#000;flex:1;min-width:0;height:100vh;position:relative;overflow:hidden}canvas{cursor:grab;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}canvas:active{cursor:grabbing}
