:root{--bg0:#15171b;--bg1:#1c1f24;--bg2:#252930;--bg3:#2f343c;--line:#363b44;--fg:#d6d9de;--fg2:#9aa1ab;--acc:#e0a040;--acc2:#4aa8ff;--danger:#e05a4a;--ok:#4fc38a;font-size:12px}*{box-sizing:border-box}html,body{background:var(--bg0);height:100%;color:var(--fg);margin:0;font-family:Segoe UI,PingFang SC,Microsoft YaHei,system-ui,sans-serif;overflow:hidden}.app{flex-direction:column;height:100vh;display:flex}.main{flex:1;min-height:0;display:flex}.viewport{background:#000;flex:1;min-width:0;position:relative}.viewport-canvas{touch-action:none;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}.marquee{border:1px dashed var(--acc);pointer-events:none;z-index:5;background:#e0a04014;display:none;position:absolute}.menubar{background:var(--bg1);border-bottom:1px solid var(--line);-webkit-user-select:none;user-select:none;align-items:center;height:28px;padding:0 6px;display:flex}.menu{cursor:default;align-items:center;height:100%;padding:0 10px;display:flex;position:relative}.menu:hover,.menu.open{background:var(--bg3)}.menu .dropdown{background:var(--bg2);border:1px solid var(--line);z-index:100;min-width:260px;padding:4px 0;display:none;position:absolute;top:28px;left:0;box-shadow:0 8px 24px #00000080}.menu.open .dropdown{display:block}.dropdown .item{white-space:nowrap;padding:6px 16px}.dropdown .item:hover{background:var(--acc2);color:#fff}.dropdown .sep{background:var(--line);height:1px;margin:4px 0}.menubar .title{color:var(--fg2);padding-right:8px}.spacer{flex:1}.toolbar{background:var(--bg1);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;padding:4px 6px;display:flex}.tgroup{border-right:1px solid var(--line);align-items:center;gap:2px;padding-right:6px;display:flex}.tbtn,.btn{background:var(--bg3);color:var(--fg);border:1px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:3px;padding:4px 8px;font-size:12px}.tbtn:hover,.btn:hover{background:#3a414b}.tbtn.active{background:var(--acc);color:#1a1408;border-color:var(--acc)}.tbtn:disabled{opacity:.4;cursor:default}.btn.primary{background:var(--acc2);color:#fff;border-color:var(--acc2)}.btn.danger{border-color:var(--danger);color:#ffc8c0;background:#4a2420}.tsel,select,input[type=text],input[type=search],input[type=number],textarea{background:var(--bg0);color:var(--fg);border:1px solid var(--line);border-radius:3px;padding:3px 5px;font-family:inherit;font-size:12px}.tlabel{color:var(--fg2);padding:0 4px}.speed{width:90px}.panel{background:var(--bg1);flex-direction:column;width:300px;min-height:0;display:flex}.panel.left{border-right:1px solid var(--line)}.panel.right{border-left:1px solid var(--line);width:320px}.tabs{border-bottom:1px solid var(--line);background:var(--bg0);display:flex}.tab{text-align:center;cursor:pointer;color:var(--fg2);border-bottom:2px solid #0000;flex:1;padding:7px 0}.tab.active{color:var(--fg);border-bottom-color:var(--acc);background:var(--bg1)}.panel-body{flex-direction:column;flex:1;gap:6px;padding:8px;display:flex;overflow-y:auto}.panel-body::-webkit-scrollbar{width:8px}.panel-body::-webkit-scrollbar-thumb{background:var(--bg3);border-radius:4px}.wide{width:100%}.hint{color:var(--fg2);font-size:11.5px;line-height:1.5}.section{background:var(--bg2);border:1px solid var(--line);border-radius:4px;flex-direction:column;gap:6px;padding:8px;display:flex}.section-title{color:var(--acc);letter-spacing:.5px;font-size:12px;font-weight:600}.row{align-items:center;gap:6px;display:flex}.row>label{width:78px;color:var(--fg2);flex-shrink:0}.row input[type=range]{min-width:0;accent-color:var(--acc);flex:1}.row input[type=text],.row select,.row textarea{flex:1;min-width:0}.row .num{width:64px}.row.vec3 .num{flex:1;width:0}.axis-x{border-left:3px solid #d94a4a!important}.axis-y{border-left:3px solid #5ac85a!important}.axis-z{border-left:3px solid #4a8ad9!important}.row.check{cursor:pointer}.row.check input{accent-color:var(--acc)}.row input[type=color]{border:1px solid var(--line);background:0 0;width:48px;height:22px;padding:0}.btnrow{flex-wrap:wrap;gap:4px;display:flex}.kv{justify-content:space-between;gap:8px;display:flex}.kv span{color:var(--fg2)}.kv.small{font-size:11px}.kv b.warn,b.bad{color:var(--danger)}b.mid{color:var(--acc)}b.ok{color:var(--ok)}.chips{flex-wrap:wrap;gap:4px;display:flex}.chip{border:1px solid var(--line);cursor:pointer;color:var(--fg2);border-radius:10px;padding:2px 8px}.chip.active{background:var(--bg3);color:var(--fg)}.cat-head{color:var(--fg);cursor:pointer;border-bottom:1px solid var(--line);justify-content:space-between;margin-top:4px;padding:5px 4px;font-weight:600;display:flex}.cat-head .count{color:var(--fg2);font-weight:400}.asset-grid{grid-template-columns:repeat(3,1fr);gap:5px;padding:5px 0;display:grid}.asset-card{background:var(--bg2);border:1px solid var(--line);cursor:pointer;border-radius:4px;position:relative;overflow:hidden}.asset-card:hover{border-color:var(--fg2)}.asset-card.active{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc)}.asset-card .thumb{aspect-ratio:1;object-fit:cover;background:#22262c;width:100%;display:block}.asset-card .thumb.icon{justify-content:center;align-items:center;font-size:30px;display:flex}.asset-card .name{white-space:nowrap;text-overflow:ellipsis;padding:3px 4px;font-size:10.5px;overflow:hidden}.asset-card .fac{text-shadow:0 1px 2px #000;font-size:13px;position:absolute;top:2px;right:4px}.tree{flex-direction:column;display:flex}.tree-row{cursor:pointer;white-space:nowrap;border-radius:3px;align-items:center;gap:4px;padding:3px 4px;display:flex}.tree-row:hover{background:var(--bg2)}.tree-row.sel{color:var(--acc);background:#3a3020}.tree-row.hidden .lbl{opacity:.45;text-decoration:line-through}.tree-row.drop{outline:1px dashed var(--acc2)}.tree-row .twist{width:12px;color:var(--fg2)}.tree-row .lbl{text-overflow:ellipsis;flex:1;overflow:hidden}.tree-row .eye{text-align:center;opacity:.7;width:18px;font-size:11px}.tree-root-drop{border:1px dashed var(--line);color:var(--fg2);text-align:center;border-radius:3px;margin-top:4px;padding:6px}.prefab-list{flex-direction:column;gap:4px;display:flex}.prefab{background:var(--bg2);border:1px solid var(--line);cursor:pointer;border-radius:4px;padding:6px 8px;position:relative}.prefab.active{border-color:var(--acc)}.prefab .pf-info{color:var(--fg2);font-size:11px}.prefab .x{color:var(--fg2);position:absolute;top:6px;right:6px}.brush-grid,.sky-grid{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.sky-grid{grid-template-columns:repeat(2,1fr)}.layer-list{grid-template-columns:repeat(2,1fr);gap:4px;display:grid}.layer{border:1px solid var(--line);cursor:pointer;background:var(--bg1);border-radius:3px;align-items:center;gap:6px;padding:3px;display:flex}.layer img{border-radius:2px;width:32px;height:32px}.layer.active{border-color:var(--acc);background:#3a3020}.perf-bar{background:var(--bg0);border-radius:4px;height:8px;overflow:hidden}.perf-bar div{background:var(--ok);height:100%}.perf-bar.mid div{background:var(--acc)}.perf-bar.bad div{background:var(--danger)}.statusbar{background:var(--bg1);border-top:1px solid var(--line);height:24px;color:var(--fg2);align-items:center;gap:16px;padding:0 10px;font-size:11.5px;display:flex}.statusbar .msg{color:var(--fg)}.modal-bg{z-index:200;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg2);border:1px solid var(--line);border-radius:6px;flex-direction:column;min-width:380px;max-width:720px;max-height:80vh;display:flex;box-shadow:0 20px 60px #0009}.modal-title{border-bottom:1px solid var(--line);color:var(--acc);padding:10px 14px;font-weight:600}.modal-body{flex-direction:column;gap:8px;padding:14px;display:flex;overflow-y:auto}.modal-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:6px;padding:10px 14px;display:flex}.help h4{color:var(--acc);margin:8px 0 4px}.help ul{margin:0;padding-left:18px;line-height:1.7}#toast{background:var(--bg3);border:1px solid var(--line);opacity:0;pointer-events:none;z-index:300;border-radius:4px;padding:8px 16px;transition:all .25s;position:fixed;bottom:36px;left:50%;transform:translate(-50%)translateY(20px)}#toast.show{opacity:1;transform:translate(-50%)translateY(0)}.loading{background:var(--bg0);z-index:500;flex-direction:column;justify-content:center;align-items:center;gap:14px;transition:opacity .4s;display:flex;position:fixed;inset:0}.loading.done{opacity:0;pointer-events:none}.spinner{border:3px solid var(--bg3);border-top-color:var(--acc);border-radius:50%;width:36px;height:36px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}body.capture .menubar,body.capture .toolbar,body.capture .panel,body.capture .statusbar{display:none}.preview-cta{color:#1a1206;cursor:pointer;letter-spacing:1px;background:linear-gradient(#f0b450,#d08a22);border:1px solid #f6c870;border-radius:4px;height:24px;margin:0 6px;padding:3px 18px;font-size:13px;font-weight:700;box-shadow:0 0 0 1px #0006,0 2px 10px #f0aa3c59}.preview-cta:hover{filter:brightness(1.08)}.preview-cta.active{color:#fff;background:linear-gradient(#5ab0ff,#2a7ad0);border-color:#8ac8ff;box-shadow:0 2px 10px #50a0ff66}.top-full{height:24px;padding:2px 10px}.panel{transition:width .22s,min-width .22s,opacity .18s;overflow:hidden}.app.left-collapsed .panel.left,.app.right-collapsed .panel.right{opacity:0;pointer-events:none;border:none;min-width:0;width:0!important}.panel-toggle{z-index:20;width:18px;height:64px;color:var(--fg);border:1px solid var(--line);cursor:pointer;background:#1c1f24d9;padding:0;font-size:16px;line-height:60px;position:absolute;top:50%;transform:translateY(-50%)}.panel-toggle:hover{background:var(--acc);color:#1a1206}.panel-toggle.left{border-left:none;border-radius:0 6px 6px 0;left:0}.panel-toggle.right{border-right:none;border-radius:6px 0 0 6px;right:0}.preview-overlay{pointer-events:none;z-index:30;display:none;position:absolute;inset:0}body.previewing .preview-overlay{display:block}body.previewing .toolbar,body.previewing .panel,body.previewing .statusbar,body.previewing .panel-toggle,body.previewing .menubar .menu,body.previewing .menubar .title,body.previewing .top-full{display:none!important}body.previewing .menubar{justify-content:center}body.previewing .viewport-canvas{cursor:grab}.pv-top,.pv-bottom{pointer-events:none;align-items:center;gap:10px;padding:12px 14px;display:flex;position:absolute;left:0;right:0}.pv-top{background:linear-gradient(#00000073,#0000);top:0}.pv-bottom{padding-bottom:max(14px, env(safe-area-inset-bottom));background:linear-gradient(#0000,#00000080);flex-direction:column;bottom:0}.pv-top>*,.pv-bottom>*{pointer-events:auto}.pv-title{color:#fff;text-shadow:0 1px 4px #000;font-size:16px;font-weight:600}.pv-group{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.pv-btn,.pv-select{color:#fff;-webkit-backdrop-filter:blur(6px);cursor:pointer;background:#14161a99;border:1px solid #ffffff40;border-radius:22px;min-width:44px;min-height:44px;padding:8px 14px;font-size:14px}.pv-btn:active{transform:scale(.96)}.pv-btn.active{color:#1a1206;background:#e0a040d9;border-color:#f6c870}.pv-btn.exit{background:#c84632bf;border-color:#ffb4a099}.pv-select{max-width:46vw}.pv-hint{color:#fffc;text-shadow:0 1px 3px #000;text-align:center;font-size:12px}@media (pointer:coarse){.tbtn,.btn{min-height:34px;padding:6px 10px;font-size:13px}.menu{padding:0 14px}.dropdown .item{padding:11px 18px;font-size:14px}.panel-toggle{width:26px;height:84px;font-size:20px}.tree-row{padding:7px 6px}input[type=range]{height:28px}.preview-cta{height:30px;font-size:14px}.menubar{height:36px}}@media (width<=1100px){.main{position:relative}.panel{z-index:25;position:absolute;top:0;bottom:0;box-shadow:0 0 30px #0009;width:min(320px,80vw)!important}.panel.left{left:0}.panel.right{right:0}.app:not(.left-collapsed) .panel-toggle.left{left:min(320px,80vw)}.app:not(.right-collapsed) .panel-toggle.right{right:min(320px,80vw)}.toolbar{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.tgroup{flex-shrink:0}.menubar .title{display:none}}html,body{overscroll-behavior:none;-webkit-user-select:none;user-select:none}input,textarea{-webkit-user-select:text;user-select:text}@media (width<=1100px){.app.left-collapsed .panel.left,.app.right-collapsed .panel.right{box-shadow:none;width:0!important}}
