:root{--bg: #0f1218;--panel: #161a22;--card: #1c212b;--line: #2a3140;--text: #e6e9ef;--muted: #8a93a6;--accent: #1a6dff;--ok: #3ccf7a;--warn: #f5b301;--err: #ff5d5d;color-scheme:dark;font:13px/1.4 Inter,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);overflow:hidden}button,select,input{font:inherit;color:inherit}code{background:#0003;padding:1px 5px;border-radius:4px}.topbar{height:52px;display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:8px;font-size:14px;letter-spacing:.2px}.brand .dot{width:10px;height:10px;border-radius:3px;background:var(--accent)}.spacer{flex:1}.seg{display:flex;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:2px}.seg button{border:0;background:none;padding:5px 16px;border-radius:6px;cursor:pointer;font-weight:600;color:var(--muted)}.seg button.on{background:var(--accent);color:#fff}.btn{border:1px solid var(--line);background:var(--card);padding:6px 12px;border-radius:7px;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){border-color:#3d475b;background:#232937}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.primary:hover:not(:disabled){background:#2f7cff}.btn.ghost{background:none}.btn.danger{color:var(--err)}.btn.wide{width:100%;margin-bottom:8px}.sync{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.sync:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--muted)}.sync.ok:before{background:var(--ok)}.sync.busy:before{background:var(--warn)}.sync.warn:before{background:var(--warn)}.sync.err:before{background:var(--err)}.menu{position:relative}.menu-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:20;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:4px;min-width:220px;box-shadow:0 10px 30px #0008}.menu-pop button{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;border-radius:5px;cursor:pointer}.menu-pop button:hover{background:#ffffff10}.layout{display:grid;grid-template-columns:190px 1fr 330px;height:calc(100% - 52px)}.floors{background:var(--panel);border-right:1px solid var(--line);padding:12px 10px;overflow:auto;display:flex;flex-direction:column;gap:4px}.side-title{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);padding:2px 6px 8px}.side-foot{margin-top:auto;font-size:11px;color:var(--muted);padding:8px 6px 0}.floor{display:flex;gap:10px;align-items:center;text-align:left;border:1px solid transparent;background:none;padding:8px;border-radius:8px;cursor:pointer}.floor:hover{background:#ffffff08}.floor.on{background:#1a6dff1f;border-color:#1a6dff66}.fnum{font-size:20px;font-weight:700;width:30px;font-variant-numeric:tabular-nums}.fmeta{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.fname{font-weight:600}.fcount{font-size:11px;color:var(--muted)}.bar{height:4px;border-radius:2px;background:#ffffff14;overflow:hidden}.bar i{display:block;height:100%;background:var(--ok)}.stage{position:relative;overflow:hidden;background:#0b0d12}#canvas{width:100%;height:100%;display:block;touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair}#canvas[data-tool=select]{cursor:default}#canvas[data-tool=select] .unit{cursor:move}#canvas[data-tool=select] .handle,#canvas[data-tool=pan]{cursor:grab}#canvas.panning{cursor:grabbing!important}.toolbar{position:absolute;left:50%;bottom:16px;transform:translate(-50%);display:flex;align-items:center;gap:2px;padding:5px;background:#161a22ee;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 28px #0009;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.tool{width:36px;height:36px;border:0;background:none;border-radius:8px;cursor:pointer;display:grid;place-items:center;color:var(--muted)}.tool:hover{background:#ffffff10;color:var(--text)}.tool.on{background:var(--accent);color:#fff}.tool svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.toolbar .sep{width:1px;height:22px;background:var(--line);margin:0 5px}.zoom{min-width:48px;text-align:center;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.hint{position:absolute;left:12px;top:12px;max-width:calc(100% - 24px);padding:6px 10px;border-radius:7px;background:#161a22dd;border:1px solid var(--line);font-size:12px;color:#c9cfdb;pointer-events:none}.banner{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:12.5px;box-shadow:0 6px 20px #0008}.banner.err{background:#3a1518;border:1px solid var(--err)}.banner.warn{background:#33280a;border:1px solid var(--warn)}.panel{background:var(--panel);border-left:1px solid var(--line);overflow:auto;padding:12px;display:flex;flex-direction:column;gap:10px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px}.card h2{margin:0 0 8px;font-size:16px}.card h3{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:600}.card small{font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0;font-size:12px;margin-left:4px}.card.sel{border-color:#1a6dff88}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin-bottom:8px}.kv span{color:var(--muted)}.kv b{font-weight:500}.field{display:flex;flex-direction:column;gap:4px;color:var(--muted);margin-bottom:8px}.field input[type=range]{accent-color:var(--accent)}select{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:6px 8px;color:var(--text)}.btns{display:flex;gap:6px;flex-wrap:wrap}.btns.right{justify-content:flex-end}.row-inline{display:flex;gap:6px}.row-inline select{flex:1;min-width:0}.list .row{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:1px solid transparent;background:none;border-radius:6px;cursor:pointer;text-align:left}.list .row:hover{background:#ffffff08}.list .row.on{background:#1a6dff22;border-color:#1a6dff66}.list .row.armed{background:#ffb00018;border-color:#ffb00077}.list .row.todo .lbl{color:var(--muted)}.list .lbl{font-weight:600;font-variant-numeric:tabular-nums}.list .un{color:var(--muted);font-size:12px;flex:1}.list .ok{color:var(--ok)}.list .todo-tag{font-size:11px;color:var(--accent)}.list .row.armed .todo-tag{color:var(--warn)}.list .sub{margin:8px 0 4px;font-size:11px;color:var(--err);text-transform:uppercase;letter-spacing:.6px}.chip{font-size:10.5px;font-weight:700;min-width:46px;text-align:center;padding:2px 6px;border-radius:4px;color:var(--c);background:color-mix(in srgb,var(--c) 18%,transparent);border:1px solid color-mix(in srgb,var(--c) 55%,transparent)}.muted{color:var(--muted)}.help dl{display:grid;grid-template-columns:56px 1fr;gap:5px 8px;margin:0;font-size:12px}.help dt{font-weight:600;color:var(--text)}.help dd{margin:0;color:var(--muted)}dialog{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:12px;padding:20px;width:min(620px,92vw);box-shadow:0 20px 60px #000a}dialog::backdrop{background:#0009}dialog h2{margin:0 0 8px;font-size:18px}.issues{max-height:300px;overflow:auto;margin:10px 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;font-size:12.5px}.issues li{padding:6px 9px;border-radius:6px;background:#ffffff08;border-left:3px solid var(--warn)}.issues li.error{border-left-color:var(--err)}.issues b{margin-right:6px}.good{color:var(--ok)}.warn-text{color:var(--warn)}.banner.ok{background:#0f2e1d;border:1px solid var(--ok)}textarea{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px;color:var(--text);font:inherit;resize:vertical}body.locked .tool[data-tool=pen],body.locked .tool[data-act=undo],body.locked .tool[data-act=redo],body.locked .panel .btn,body.locked .panel select,body.locked .list .row.todo .todo-tag{pointer-events:none;opacity:.4}
