:root{--bg:#f4f5f7;--panel:#fff;--border:#d4d7dd;--text:#1d2330;--muted:#6b7280;--accent:#1f6feb;--canvas-bg:#9aa1ab;--tap:36px;color:var(--text);font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (pointer:coarse){:root{--tap:44px}}*{box-sizing:border-box}html,body{height:100%;margin:0}.work{flex:1;min-height:0;display:flex;position:relative}body{background:var(--bg);flex-direction:column;display:flex;overflow:hidden}[hidden]{display:none!important}.toolbar{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:8px;display:flex}.group{align-items:center;gap:4px;display:inline-flex}button,.btn,select,input{min-height:var(--tap);min-width:var(--tap);font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:0 12px}button,.btn{cursor:pointer;justify-content:center;align-items:center;display:inline-flex}button:hover:not(:disabled),.btn:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:#e3edff;font-weight:600}.primary{background:var(--accent);border-color:var(--accent);color:#fff}.app-name{margin-right:8px}.spacer{flex:1}.tabs{background:var(--panel);border-bottom:1px solid var(--border);align-items:flex-end;gap:8px;padding:0 8px;display:flex}#tabList{flex:1;gap:2px;min-width:0;display:flex;overflow-x:auto}.tab{color:var(--muted);background:0 0;border:0;border-bottom:3px solid #0000;border-radius:0;flex:none}.tab[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.tab-edit{flex:none;margin:4px 0}dialog{border:1px solid var(--border);border-radius:10px;width:min(640px,100vw - 32px);max-height:calc(100dvh - 32px);padding:16px}dialog::backdrop{background:#0006}dialog h2{margin:0 0 4px;font-size:18px}.floor-rows{gap:8px;margin:12px 0;padding:0;list-style:none;display:grid}.floor-row{border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;padding:8px;display:flex}.floor-row.excluded{opacity:.5}.thumb{border:1px solid var(--border);background:#fff;flex:none;width:120px;height:85px}.meta{flex:1;gap:4px;min-width:0;display:grid}.meta .muted{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.meta input:invalid:not(:placeholder-shown){border-color:#d33}.warn{color:#b42318;font-size:13px}.include{white-space:nowrap;align-items:center;gap:6px;display:flex}.include input{width:20px;min-width:0;height:20px;min-height:0}.actions{justify-content:flex-end;gap:8px;display:flex}#viewer{background:var(--canvas-bg);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;flex:1;position:relative;overflow:hidden}#viewer:active{cursor:grabbing}#viewer.drawing{cursor:crosshair}.hint{z-index:1;color:#fff;pointer-events:none;background:#1d2330d9;border-radius:16px;width:fit-content;max-width:100%;margin:0 auto;padding:6px 12px;font-size:13px;position:absolute;bottom:8px;left:8px;right:8px}.panel{background:var(--panel);border-left:1px solid var(--border);flex:none;grid-template-columns:minmax(0,1fr);align-content:start;gap:16px;width:280px;padding:12px;display:grid;overflow-y:auto}.panel-hidden .panel{display:none}@media (width<=760px){.panel{z-index:2;width:min(320px,88vw);position:absolute;top:0;bottom:0;right:0;box-shadow:-4px 0 16px #0003}}.panel section{grid-template-columns:minmax(0,1fr);gap:8px;display:grid}.panel h2{margin:0;font-size:15px}.panel label{gap:4px;font-size:13px;display:grid}.panel .opacity{grid-template-columns:auto 1fr auto;align-items:center;gap:8px}.opacity input{border:0;min-width:0;padding:0}.cats{grid-template-columns:minmax(0,1fr);gap:4px;margin:0;padding:0;list-style:none;display:grid}.cat{cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:2px 4px;display:flex!important}.cat:has(:checked){background:#e3edff}.cat input[type=radio]{flex:none;width:18px;min-width:0;height:18px;min-height:0;margin:0}.cat input[type=color]{min-width:0;width:var(--tap);flex:none;padding:2px}.cat .cat-name{flex:1;min-width:0;padding:0 8px}.cat .count{text-align:right;min-width:2.5em;color:var(--muted);font-variant-numeric:tabular-nums}.cat .del{min-width:var(--tap);color:var(--muted);padding:0}.cat.none{min-height:var(--tap);font-size:14px}.panel select,.panel input:not([type]),.panel input[type=search],.panel textarea{width:100%}.panel textarea{font:inherit;border:1px solid var(--border);resize:vertical;border-radius:6px;padding:8px 12px}.results{max-height:40vh;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.results:empty{display:none}.panel .check{align-items:center;gap:8px;display:flex}.panel .check input{flex:none;width:18px;min-width:0;height:18px;min-height:0;margin:0}.legend{cursor:move;font-family:Helvetica,Arial,sans-serif}.legend text{fill:#1a1a1f}.legend-bg{fill:#fff;stroke:#333;stroke-width:.6px}.legend-handle{fill:#fff;stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke;cursor:nwse-resize}.results button{border:0;border-bottom:1px solid var(--border);text-align:left;border-radius:0;justify-content:space-between;gap:8px;width:100%}.results button span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.results .where{color:var(--muted);flex:none;font-size:12px}.results .untraced{color:#b42318}.resume{background:var(--panel);border:1px solid var(--border);border-radius:10px;justify-items:center;gap:6px;max-width:420px;margin:0 auto 16px;padding:12px 16px;display:grid}.float-actions{z-index:1;background:var(--panel);border-radius:10px;gap:8px;width:fit-content;margin:0 auto;padding:6px;display:flex;position:absolute;bottom:48px;left:0;right:0;box-shadow:0 2px 12px #0004}.shape{fill:#3b82f6;fill-opacity:.08;stroke:#3b82f6;stroke-opacity:.6;stroke-width:1px;vector-effect:non-scaling-stroke}#viewer:not(.drawing) .shape{cursor:pointer}#viewer:not(.drawing) .shape:hover{fill-opacity:.25}.shape.cat{fill:var(--c);fill-opacity:var(--room-opacity,.35);stroke:var(--c);stroke-opacity:.9}#viewer:not(.drawing) .shape.cat:hover{fill-opacity:calc(var(--room-opacity,.35) + .15)}.shape.selected{fill-opacity:.3;stroke:#f97316;stroke-opacity:1;stroke-width:2px}.shape.cat.selected{fill-opacity:calc(var(--room-opacity,.35) + .1);stroke:#f97316}.handle{fill:#fff;stroke:#f97316;stroke-width:2.5px;vector-effect:non-scaling-stroke;pointer-events:none}.handle.mid{fill:#f97316;fill-opacity:.5;stroke:none}.handle-hit{fill:#0000;stroke:none;pointer-events:all;cursor:move}.handle-hit.mid{cursor:copy}.draft{fill:none;stroke:#f97316;stroke-width:2px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke;pointer-events:none}.draft-fill{fill:#f97316;fill-opacity:.12;stroke:none;pointer-events:none}.draft-pt{fill:#f97316;pointer-events:none}.close-target{fill:#fff;stroke:#f97316;stroke-width:2px;vector-effect:non-scaling-stroke;pointer-events:none}.close-target.near{fill:#f97316}.missing{fill:#ef4444;fill-opacity:.25;stroke:#dc2626;stroke-width:2.5px;vector-effect:non-scaling-stroke;cursor:crosshair;transform-box:fill-box;transform-origin:50%;animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{fill-opacity:.1;transform:scale(1.35)}}.warn-btn{color:#b42318;border-color:#dc2626;font-weight:600}.stage{transform-origin:0 0;background:#fff;position:absolute;top:0;left:0;box-shadow:0 2px 12px #0005}.stage canvas,.stage svg{position:absolute}.stage .base,.stage svg{width:100%;height:100%;top:0;left:0}.stage svg{overflow:visible}.debug-box{fill:none;stroke:#e0f;stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}#empty{text-align:center;background:var(--bg);place-content:center;justify-items:center;gap:4px;padding:16px;font-size:16px;display:grid;position:absolute;inset:0}.muted{color:var(--muted);font-size:13px}.status{color:var(--muted);background:var(--panel);border-top:1px solid var(--border);gap:16px;padding:4px 8px;font-size:12px;display:flex}#msg{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}#cursor{font-variant-numeric:tabular-nums}
