:root{--bg:#f4f2ed;--panel:#fff;--panel-2:#faf8f4;--line:#e3dfd6;--ink:#1f2423;--muted:#6b7470;--accent:#1f6f67;--accent-soft:#e2f0ee;--accent-ink:#0f4c46;--warn:#b7791f;--warn-soft:#fbf1dc;--danger:#c0392b;--danger-soft:#fbe5e1;--shadow:0 10px 30px #1f282614;--radius:10px;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#171a19;--panel:#1f2322;--panel-2:#262b29;--line:#2f3533;--ink:#ecebe6;--muted:#9aa39f;--accent:#5fb3a8;--accent-soft:#1d3330;--accent-ink:#c8e9e4;--warn:#e2a84a;--warn-soft:#3a2f1a;--danger:#e46a5b;--danger-soft:#3b2220;--shadow:0 10px 30px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:13px;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:650}a{color:var(--accent)}.app{grid-template-rows:48px 1fr 30px;grid-template-columns:292px minmax(0,1fr) 320px;height:100vh;display:grid}.app.noRight{grid-template-columns:292px minmax(0,1fr) 0}.header{background:var(--panel);border-bottom:1px solid var(--line);z-index:5;grid-column:1/-1;align-items:center;gap:10px;padding:0 12px;display:flex}.header .brand{letter-spacing:-.02em;align-items:center;gap:8px;font-weight:700;display:flex}.header .brand .logo{background:var(--accent);color:#fff;border-radius:8px;place-items:center;width:26px;height:26px;font-size:14px;display:grid}.header .projectName{background:0 0;border:1px solid #0000;border-radius:6px;min-width:160px;padding:4px 8px;font-weight:600}.header .projectName:hover,.header .projectName:focus{border-color:var(--line);background:var(--panel-2);outline:none}.header .saveState{color:var(--muted);min-width:120px;font-size:12px}.header .saveState.dirty{color:var(--warn)}.header .saveState.error{color:var(--danger)}.header .spacer{flex:1}.seg{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;display:inline-flex;overflow:hidden}.seg button{color:var(--muted);background:0 0;border:0;align-items:center;gap:6px;padding:6px 10px;font-weight:600;display:inline-flex}.seg button.active{background:var(--accent);color:#fff}.seg button+button{border-left:1px solid var(--line)}.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-weight:600;display:inline-flex}.btn:hover{background:var(--panel-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-ink)}.btn.danger{color:var(--danger)}.btn.icon{padding:6px}.btn.sm{padding:4px 8px;font-size:12px}.btn.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}.btn svg{width:16px;height:16px}.iconRow{flex-wrap:wrap;gap:6px;display:flex}.sidebar{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.rightPanel{background:var(--panel);border-left:1px solid var(--line);min-height:0;overflow:auto}.app.noRight .rightPanel{display:none}.section{border-bottom:1px solid var(--line);padding:14px}.section h3{justify-content:space-between;align-items:center;margin-bottom:10px;font-size:13px;display:flex}.kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:10.5px;font-weight:700}.muted{color:var(--muted)}.small{font-size:12px}.hint{background:var(--warn-soft);color:#6b4e13;border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.5}[data-theme=dark] .hint{color:#f1d9a6}.note{background:var(--panel-2);border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.5}.badge{letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:2px 7px;font-size:10.5px;font-weight:700;display:inline-block}.badge.ok{background:var(--accent-soft);color:var(--accent-ink)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.muted{background:var(--panel-2);color:var(--muted);border:1px solid var(--line)}.search{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;outline:none;width:100%;padding:8px 10px}.search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.chips{flex-wrap:wrap;gap:6px;margin:10px 0;display:flex}.chip{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:600}.chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.libraryScroll{flex:1;padding:0 14px 14px;overflow:auto}.catalogGrid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.catalogItem{border:1px solid var(--line);background:var(--panel);text-align:center;cursor:grab;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:10px 8px;transition:transform .12s,border-color .12s;display:flex}.catalogItem:hover{border-color:var(--accent);background:var(--panel-2);transform:translateY(-1px)}.catalogItem:active{cursor:grabbing}.catalogItem .thumb{place-items:center;width:64px;height:44px;display:grid}.catalogItem strong{font-size:12px;font-weight:600}.catalogItem small{color:var(--muted);font-size:10.5px}.catalogItem .price{color:var(--accent-ink);font-size:10.5px;font-weight:600}.stage{min-width:0;min-height:0;display:flex;position:relative}.stage.split{grid-template-columns:1fr 1fr;display:grid}.stage.split>*{border-right:1px solid var(--line);min-width:0}.editor2d{background:radial-gradient(circle at 50% 40%,#faf9f6,#ebe8e1);flex:1;min-width:0;min-height:0;position:relative;overflow:hidden}[data-theme=dark] .editor2d{background:radial-gradient(circle at 50% 40%,#23272a,#171a19)}.editor2d canvas{display:block}.scene3d{background:#eceae4;flex:1;min-width:0;min-height:0;position:relative}.scene3d canvas{outline:none;display:block}.sceneLegend,.walkHint{border:1px solid var(--line);color:var(--muted);pointer-events:none;background:#ffffffe6;border-radius:8px;padding:6px 10px;font-size:11.5px;position:absolute;bottom:12px;left:12px}[data-theme=dark] .sceneLegend,[data-theme=dark] .walkHint{background:#1f2322e6}.walkHint{color:var(--ink);bottom:40px}.stageTools{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);z-index:3;border-radius:12px;align-items:center;gap:4px;padding:6px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.stageTools .sep{background:var(--line);width:1px;height:22px;margin:0 4px}.toolbar{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);z-index:3;border-radius:12px;flex-direction:column;gap:4px;padding:6px;display:flex;position:absolute;top:12px;left:12px}.toolbar .btn{border:0;justify-content:center;width:36px;height:36px}.toolbar .btn.active{background:var(--accent);color:#fff}.overlayTopRight{z-index:3;flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;top:12px;right:12px}.card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;padding:10px 12px;font-size:12px}.footer{background:var(--panel);border-top:1px solid var(--line);color:var(--muted);grid-column:1/-1;align-items:center;gap:18px;padding:0 14px;font-size:11.5px;display:flex}.footer b{color:var(--ink);font-weight:600}.footer .spacer{flex:1}.footer .warn{color:var(--warn)}.field{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.field label{color:var(--muted);font-size:11px;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--panel-2);border-radius:7px;outline:none;width:100%;padding:6px 8px}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.grid2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.grid3{grid-template-columns:1fr 1fr 1fr;gap:8px;display:grid}.row{align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.toggle{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;font-size:12.5px;display:flex}.toggle input{accent-color:var(--accent);width:16px;height:16px}input[type=range]{accent-color:var(--accent);width:100%}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:7px;width:28px;height:28px;position:relative}.swatch.active{border-color:var(--accent);box-shadow:inset 0 0 0 2px #fff}.swatch:hover:after{content:attr(title);background:var(--ink);color:var(--bg);white-space:nowrap;z-index:4;border-radius:4px;margin-top:4px;padding:2px 6px;font-size:10px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.list{flex-direction:column;gap:4px;display:flex}.listRow{border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.listRow:hover,.listRow.active{background:var(--accent-soft);border-color:var(--accent)}.listRow .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.metric{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.metric strong{font-variant-numeric:tabular-nums;font-size:17px;display:block}.metric span{color:var(--muted);font-size:10.5px}.toasts{z-index:50;pointer-events:none;flex-direction:column;gap:6px;display:flex;position:fixed;top:60px;left:50%;transform:translate(-50%)}.toast{background:var(--ink);color:var(--bg);box-shadow:var(--shadow);border-radius:8px;padding:8px 14px;font-size:12.5px;animation:.2s fadeIn}.toast.success{background:var(--accent);color:#fff}.toast.warning{background:var(--warn);color:#fff}.toast.error{background:var(--danger);color:#fff}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.modalBackdrop{z-index:40;background:#14181759;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--panel);width:min(640px,92vw);max-height:86vh;box-shadow:var(--shadow);border-radius:14px;padding:20px 22px;overflow:auto}.modal h2{margin-bottom:6px;font-size:17px}.modal .actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.kbd{background:var(--panel-2);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.menu{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);z-index:20;border-radius:10px;min-width:220px;margin-top:4px;padding:6px;position:absolute;top:100%;right:0}.menu button{text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;width:100%;padding:8px 10px;display:flex}.menu button:hover{background:var(--panel-2)}.menu .sepLine{background:var(--line);height:1px;margin:4px 0}.relative{position:relative}.tabs{border-bottom:1px solid var(--line);gap:2px;padding:0 8px;display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;padding:10px;font-weight:600}.tabs button.active{color:var(--accent-ink);border-bottom-color:var(--accent)}.versionCard{border:1px solid var(--line);background:var(--panel);border-radius:10px;overflow:hidden}.versionCard img{object-fit:cover;background:#ddd;width:100%;height:90px;display:block}.versionCard .body{padding:8px 10px}.table{border-collapse:collapse;width:100%;font-size:12px}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);padding:6px}.table th{color:var(--muted);font-size:11px;font-weight:600}.table td.num{text-align:right;font-variant-numeric:tabular-nums}.empty{color:var(--muted);padding:10px 0;font-size:12.5px;line-height:1.6}.onboardList{grid-template-columns:1fr 1fr;gap:10px 20px;font-size:13px;line-height:1.6;display:grid}.onboardList li{list-style:none}.fileInput{display:none}@media (max-width:1100px){.app{grid-template-columns:240px minmax(0,1fr) 280px}}@media (max-width:860px){.app{grid-template-columns:0 minmax(0,1fr) 0}.sidebar,.rightPanel{display:none}}.sceneControls{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);z-index:3;border-radius:12px;align-items:center;gap:6px;padding:6px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.sceneControls .seg button{padding:5px 9px;font-size:12px}@media (max-width:1280px){.hideNarrow{display:none}}.header .brand{white-space:nowrap}.header .saveState{white-space:nowrap;text-overflow:ellipsis;max-width:170px;overflow:hidden}
