:root{color-scheme:dark;--bg:#06111e;--panel:#0b1b2b;--edge:#243a4a;--quiet:#819aa9;--ink:#e5eef2;--teal:#35dce2;--blue:#0a8cad}*{box-sizing:border-box}body{margin:0;background:#04101c;color:var(--ink);font:12px/1.5 'Segoe UI',Inter,system-ui,sans-serif}button,select,input{font:inherit}button{cursor:pointer;border:1px solid #294354;background:#102535;color:#bed2dd;border-radius:5px;padding:8px 11px;transition:.18s}button:hover{border-color:#38b3c5;color:white;background:#1b3b4c}button:active{transform:translateY(1px)}button.active,button.primary{background:linear-gradient(120deg,#0e859b,#0c445b);border-color:#3bdce7;color:#efffff}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--teal);outline-offset:2px}select{background:#102737;border:1px solid #2a465a;color:#d0e2e8;border-radius:4px;padding:7px 10px;min-width:100px}input[type=range]{accent-color:var(--teal);cursor:pointer}input[type=text],input:not([type]){background:transparent;border:0;color:white;outline:0}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{height:70px;background:#0b1b29;display:flex;align-items:center;border-bottom:1px solid var(--edge);padding:0 22px;justify-content:space-between;gap:17px}.brand{display:flex;align-items:center;gap:13px;flex-shrink:0}.brand .symbol{font-size:40px;color:#45e1e8;text-shadow:0 0 24px #2cb0bf88;line-height:1}.brand strong{display:block;font-size:19px;font-weight:800;letter-spacing:2px;line-height:1.3}.brand em{color:var(--teal);font-style:normal}.overline,.eyebrow{font-size:9px;letter-spacing:2px;color:#74a3b6;font-weight:750}.mode-tabs{display:flex;align-items:center;gap:3px;background:#081723;padding:4px;border:1px solid #1d3a49;border-radius:7px;overflow:auto}.mode-tabs button{background:none;border:1px solid transparent;font-size:10px;letter-spacing:1px;font-weight:750;padding:10px 12px;white-space:nowrap}.mode-tabs button.active{background:#134457;border-color:#1e879f;box-shadow:0 0 12px #229fb22b}.header-end{display:flex;align-items:center;gap:12px;white-space:nowrap}.chip{color:#a6c6d4;font-weight:700;font-size:10px;letter-spacing:1px}.light{display:inline-block;width:7px;height:7px;background:#32e0cb;box-shadow:0 0 8px #3effda;border-radius:50%;margin-right:6px}.round{font-size:24px;padding:2px 11px}.workspace{display:grid;grid-template-columns:270px minmax(300px,1fr) 302px;flex:1;min-height:0}.sidebar{background:linear-gradient(180deg,#0b1d2d,#091726);min-width:0;display:flex;flex-direction:column}.left{border-right:1px solid #203748}.right{border-left:1px solid #203748;overflow-y:auto;max-height:calc(100vh - 101px)}.panel-header{padding:22px 19px 12px;border-bottom:1px solid #1b3745}.panel-header h2{font-size:17px;font-weight:660;margin:4px 0 0}.mini-stat{font-size:9px;color:#4fc9d1;letter-spacing:1px}.search-wrap{display:flex;margin:15px 14px 9px;padding:0 13px;align-items:center;background:#0a1624;border:1px solid #2c4351;border-radius:6px;height:39px;gap:10px}.search-wrap span{font-size:24px;color:#7498a8}.search-wrap input{width:100%;font-size:12px}.filter-row{display:flex;align-items:center;justify-content:space-between;padding:1px 15px 12px;color:#91aebd}.filter-row select{width:150px;font-size:11px}.tree{height:400px;max-height:calc(100vh - 325px);min-height:280px;overflow-y:auto;scrollbar-color:#244b5d #0d2432;scrollbar-width:thin;flex:1}.tree-group-header{position:sticky;top:0;background:#0f2535;padding:9px 12px;color:#75afc3;font-size:10px;letter-spacing:1px;font-weight:bold;border-top:1px solid #1b3e4f;z-index:1}.tree-group-header .count{float:right;color:#567a88}.tree-part{display:flex;border:0;border-left:3px solid transparent;background:none;width:100%;text-align:left;padding:9px 12px;gap:9px;align-items:center;color:#a5bbc8;border-radius:0;font-size:11px;white-space:normal}.tree-part:hover{background:#173749}.tree-part.active{background:#174455;border-left-color:#29e2e9;color:white}.tree-part .part-number{font-family:monospace;color:#5d9aa8;flex-shrink:0}.tree-part .part-name{flex:1}.tree-part .part-state{width:6px;height:6px;background:#34bfb5;border-radius:50%;flex-shrink:0}.tree-part .part-state.loose{background:#f3b265}.left-footer{margin-top:auto;padding:18px;border-top:1px solid #294251}.progress-heading,.mini-row{display:flex;justify-content:space-between;align-items:center}.progress-heading{font-size:10px;color:#86a9b9;letter-spacing:1px}.progress-heading strong{color:#42f1df;font-size:13px}.progress-track{height:5px;background:#142d3d;border-radius:5px;overflow:hidden;margin:11px 0 8px}.progress-track div{height:100%;background:linear-gradient(90deg,#0b8c9e,#41f0e1);width:100%;transition:width .3s}.micro{font-size:10px;color:#8398a6;line-height:1.5}.stage{display:flex;flex-direction:column;padding:18px 22px 14px;min-width:0;background:radial-gradient(ellipse 60% 30% at 52% 25%,#14283a,#081420 80%);gap:12px}.stage-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.stage-top h1{font-size:21px;letter-spacing:1.5px;margin:3px 0;font-weight:720}.stage-top h1 span{color:#7897a7;font-weight:450}.stage-top p{font-size:10px;letter-spacing:1.3px;color:#7797a5;margin:0}.stage-stats{display:flex;align-items:center;gap:12px;font-family:monospace;font-size:10px;color:#81b6c4;white-space:nowrap}.stage-stats span+span{border-left:1px solid #38505e;padding-left:12px}.sep{color:var(--teal);margin:0 4px}.viewport{position:relative;flex:1;min-height:420px;overflow:hidden;border-radius:7px;border:1px solid #2a5060;background:linear-gradient(140deg,#101f32,#112b3d 60%,#0b1626);box-shadow:inset 0 0 80px #07111fae,0 14px 45px #0005}.viewport:before{content:'';position:absolute;inset:0;background-image:linear-gradient(#2b5d6827 1px,transparent 1px),linear-gradient(90deg,#2b5d6827 1px,transparent 1px);background-size:52px 52px;pointer-events:none}.viewport canvas{position:absolute;inset:0;width:100%;height:100%;outline:0;touch-action:none;cursor:grab}.viewport canvas:active{cursor:grabbing}.viewport-vignette{position:absolute;inset:0;box-shadow:inset 0 0 70px 10px #06131e90;pointer-events:none}.viewport-top-left,.viewport-top-right,.viewport-bottom{position:absolute;display:flex;gap:6px;pointer-events:none}.viewport-top-left{left:16px;top:16px;flex-direction:column;align-items:flex-start}.viewport-top-right{right:14px;top:15px;pointer-events:auto}.viewport-top-right button{font-size:10px;background:#13283adb;backdrop-filter:blur(4px);padding:9px}.view-tag{font:10px monospace;color:#a6c3d1;letter-spacing:.5px;background:#0a1b2ab5;border-left:2px solid #567989;padding:6px 9px}.view-tag.cyan{color:#5ce6e9;border-left-color:#36f0e8}.viewport-bottom{bottom:14px;left:15px;right:15px;justify-content:space-between;align-items:end;color:#7b9dad;font:10px monospace}.viewport-bottom b{font-weight:500;color:#abcfda}.viewport-bottom i{font-style:normal;color:#346274;margin:0 8px}.view-scale span{color:#34cbd0}.viewport-help{position:absolute;bottom:48px;left:0;right:0;text-align:center;font:9px monospace;letter-spacing:1px;color:#7193a1;pointer-events:none}.world-label{display:none;position:absolute;max-width:200px;z-index:3;pointer-events:none;padding:8px 10px;background:#09202de9;border:1px solid #49e5de;border-left:3px solid #40e9eb;border-radius:2px;box-shadow:0 2px 14px #0008;transform:translate(18px,-115%)}.world-label b{display:block;font-size:10px}.world-label span{display:block;font-size:9px;color:#6cbbb9;margin-top:3px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px}.camera-presets,.toolbar-actions{display:flex;align-items:center;gap:5px}.camera-presets .overline{margin-right:10px}.toolbar button{font-size:10px;letter-spacing:.8px;padding:8px 11px}.control-panel{background:#0c2030;border:1px solid #254658;padding:16px 18px 14px;border-radius:7px}.control-heading{display:flex;justify-content:space-between;align-items:center}.control-heading strong{color:#42eced;font:22px monospace}.explosion-slider{display:flex;gap:15px;align-items:center;margin:11px 0 15px}.explosion-slider span{color:#8eacb8;font-size:9px;font-weight:700;letter-spacing:1.2px;white-space:nowrap}.explosion-slider input{flex:1;min-width:30px}.control-row{display:flex;gap:16px;align-items:end;flex-wrap:wrap}.control-row label{color:#89a5b3;font-size:9px;letter-spacing:.9px;display:flex;flex-direction:column;gap:5px;flex:1;min-width:120px}.control-row label select{width:100%;font-size:11px}.transport{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:2px 0}.transport-buttons{display:flex;align-items:center;gap:6px}.transport button{font-size:10px}.transport #play{color:#54dedb}.status{color:#70c1c6;font-size:11px;text-align:center;flex:1}.timecode{font:11px monospace;color:#93adba}.part-detail{padding:17px 16px 13px}.part-id{font:11px monospace;color:#27bfc4}.part-detail h3{font-size:17px;line-height:1.3;margin:11px 0;color:#e2f2f5}.part-detail p{font-size:12px;color:#91aaba;line-height:1.65}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.stat-grid div{padding:10px 11px;background:#102a3a;border:1px solid #1c4355;border-radius:5px}.stat-grid span{display:block;font-size:9px;color:#7c9cac;letter-spacing:.8px}.stat-grid strong{display:block;margin-top:4px;color:#dbeaf0;font-size:11px}.part-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:13px}.part-actions button{font-size:10px;min-height:36px;padding:6px 8px}.part-actions #snap-part{grid-column:span 2}.subpanel{border-top:1px solid #243d4e;padding:16px}.section-heading{display:flex;justify-content:space-between;color:#98c1cb;font-weight:700;font-size:10px;letter-spacing:1px;margin-bottom:11px}.section-heading small{font-size:9px;color:#47bec3}.move-pad{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:10px}.move-pad button{padding:7px 0;font-size:10px}.mode-choice{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:10px}.mode-choice button{padding:8px 4px;font-size:10px}.mini-row{color:#879dab;font-size:10px;margin:7px 0}.mini-row strong{color:#d9edf1;font-size:11px}.slider-label{display:block;font-size:9px;color:#87b1be;letter-spacing:1px;font-weight:650;margin:11px 0}.slider-label output{float:right;color:#40e7de;font:11px monospace}.slider-label input{display:block;width:100%;margin:7px 0 0}.engine{width:100%;font-size:10px;letter-spacing:1px;border-color:#2c6470}.engine.on{color:#30ffda;background:#13443e;border-color:#31f3d6}.learning button{width:100%;text-align:left;margin:4px 0;font-size:11px;padding:10px;color:#a5bdc9}.learning button.complete{border-color:#338d88;color:#5ae4d7}.learning small{display:block;color:#7899a6;font-size:10px;margin-top:4px;font-weight:400}.footer{min-height:31px;background:#07121d;border-top:1px solid #1a3445;color:#7190a0;font-size:9px;letter-spacing:1.1px;display:flex;align-items:center;gap:10px;padding:7px 20px}.footer b{color:#3bdbe0}.footer span{margin-left:auto}@media(max-width:1340px){.workspace{grid-template-columns:225px minmax(300px,1fr) 280px}.stage{padding:14px}.stage-stats{gap:6px}.stage-top h1{font-size:18px}.mode-tabs button{padding:9px 8px}.topbar{padding:0 12px}}@media(max-width:1050px){.workspace{grid-template-columns:215px minmax(300px,1fr)}.sidebar.right{grid-column:1/-1;max-height:none;display:grid;grid-template-columns:repeat(2,1fr);border-left:0;border-top:1px solid #2b4b5e}.right>.panel-header{grid-column:1/-1}.stage-stats{display:none}.sidebar.right .part-detail{grid-row:span 2}}@media(max-width:700px){.topbar{height:auto;flex-wrap:wrap;padding:10px;gap:8px}.brand strong{font-size:17px}.brand .symbol{font-size:32px}.mode-tabs{width:100%;order:3;justify-content:space-between}.mode-tabs button{flex:1;font-size:9px;padding:9px 4px}.header-end{margin-left:auto}.workspace{display:flex;flex-direction:column}.left{order:2;max-height:260px;border-right:0;border-top:1px solid #1b4655}.left .panel-header{padding:10px 14px}.left .tree{min-height:90px;max-height:130px}.left .search-wrap{margin:8px 14px}.left .left-footer{display:none}.stage{order:1;padding:10px;gap:9px}.stage-top{padding:6px 0}.stage-top h1{font-size:16px}.stage-top h1 span{display:block;font-size:12px}.viewport{min-height:340px;height:55vh;flex:auto}.toolbar{flex-wrap:wrap}.camera-presets{flex-wrap:wrap}.toolbar button{padding:7px}.control-row{gap:8px}.transport{flex-wrap:wrap}.transport-buttons{flex-wrap:wrap}.status{order:4;width:100%;flex:auto}.right{order:3;display:block!important}.right .part-detail{grid-row:auto}.footer span{display:none}.viewport-help{font-size:8px;bottom:38px}.view-scale{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important}}
