:root{--bg: #070b16;--surface: #0b1120;--surface-2: #101a30;--ink: #e6eefc;--ink-dim: #8ea3c7;--ink-faint: #5b6c8c;--line: rgba(160, 190, 255, .14);--line-strong: rgba(160, 190, 255, .3);--accent: #ffc46b;--accent-ink: #1a1203;--ok: #6ee7b7;--warn: #fde68a;--danger: #ff7a6b;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-0: 12px;--fs-1: 13px;--fs-2: 15px;--fs-3: 20px;--sp-1: 8px;--sp-2: 16px;--sp-3: 24px;--radius: 8px;--rail-h: 44px;--drawerbar-h: 36px;--inspector-w: 380px}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:var(--fs-1)/1.45 var(--sans)}.ui-shell{display:grid;grid-template-rows:var(--rail-h) minmax(240px,1fr) auto;height:100vh;min-height:420px}.ui-rail{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-2);border-bottom:1px solid var(--line);background:var(--surface)}.ui-rail .ui-spacer{flex:1}.ui-main{display:grid;grid-template-columns:minmax(0,1fr) var(--inspector-w);min-height:0}.ui-main.is-inspector-hidden{grid-template-columns:minmax(0,1fr)}.ui-canvas{position:relative;min-width:0;min-height:0;background:var(--bg)}.ui-canvas>.wl-chart{height:100%}.ui-inspector{border-left:1px solid var(--line);background:var(--surface);overflow:auto;padding:var(--sp-3) var(--sp-2);display:grid;align-content:start;gap:var(--sp-2)}.ui-drawerbar{display:flex;align-items:stretch;gap:0;border-top:1px solid var(--line);background:var(--surface);height:var(--drawerbar-h)}.ui-drawer{border-top:1px solid var(--line);background:var(--surface);max-height:42vh;overflow:auto;padding:var(--sp-2) var(--sp-2) var(--sp-3)}.ui-drawer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--sp-3)}@media(max-width:900px){.ui-main{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(320px,1fr) auto}.ui-inspector{border-left:0;border-top:1px solid var(--line);max-height:45vh}}.ui-kicker{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}.ui-title{font-size:var(--fs-3);font-weight:600;letter-spacing:-.01em;line-height:1.2}.ui-h{font-size:var(--fs-2);font-weight:600;line-height:1.3;margin:0}.ui-dim{color:var(--ink-dim)}.ui-faint{color:var(--ink-faint)}.ui-mono{font-family:var(--mono);font-size:var(--fs-0)}.ui-status{color:var(--ink-dim);font-size:var(--fs-0)}.ui-status.is-ok{color:var(--ok)}.ui-status.is-warn{color:var(--warn)}.ui-status.is-danger{color:var(--danger)}.ui-p{margin:0}.ui-list{display:grid;gap:0;margin:0;padding:0;list-style:none}.ui-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-1) var(--sp-2);align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}.ui-row:last-child{border-bottom:0}.ui-row.is-selectable{cursor:pointer}.ui-row.is-selectable:hover{background:var(--surface-2);margin:0 calc(-1 * var(--sp-1));padding-left:var(--sp-1);padding-right:var(--sp-1)}.ui-row.is-selected{background:var(--surface-2)}.ui-row .ui-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.ui-row .ui-sub{color:var(--ink-dim);font-size:var(--fs-0);margin-top:2px}.ui-section{display:grid;gap:var(--sp-1)}.ui-section+.ui-section{padding-top:var(--sp-2);border-top:1px solid var(--line)}.ui-btn{font:inherit;font-size:var(--fs-0);line-height:1;color:var(--ink);background:transparent;border:1px solid var(--line-strong);border-radius:6px;padding:7px 10px;cursor:pointer;min-height:32px}.ui-btn:hover{background:var(--surface-2)}.ui-btn:disabled{opacity:.45;cursor:default}.ui-btn.is-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.ui-btn.is-quiet{border-color:transparent;color:var(--ink-dim)}.ui-btn.is-danger{color:var(--danger);border-color:#ff7a6b66}.ui-btn.is-on{background:var(--surface-2);border-color:var(--line-strong)}.ui-input,.ui-select,.ui-textarea{font:inherit;font-size:var(--fs-0);color:var(--ink);background:var(--bg);border:1px solid var(--line-strong);border-radius:6px;padding:7px 9px;min-height:32px;width:100%;box-sizing:border-box}.ui-textarea{min-height:96px;font-family:var(--mono);line-height:1.4}.ui-field{display:grid;gap:4px}.ui-field>label{font-size:var(--fs-0);color:var(--ink-dim)}.ui-inline{display:flex;gap:var(--sp-1);align-items:center;flex-wrap:wrap}.ui-chip{font:inherit;font-size:var(--fs-0);color:var(--ink-dim);background:transparent;border:1px dashed var(--line-strong);border-radius:999px;padding:4px 10px;cursor:pointer}.ui-chip:hover{color:var(--ink);border-style:solid}.ui-chip.is-on{color:var(--accent-ink);background:var(--accent);border-color:var(--accent);border-style:solid}.ui-menu{position:relative}.ui-menu-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:260px;max-width:420px;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius);padding:var(--sp-1);display:grid;gap:2px;box-shadow:0 12px 32px #00000080}.ui-menu-panel.is-right{left:auto;right:0}.ui-menu-item{display:flex;justify-content:space-between;gap:var(--sp-2);align-items:center;font:inherit;font-size:var(--fs-1);color:var(--ink);background:transparent;border:0;border-radius:6px;padding:8px 10px;text-align:left;cursor:pointer;width:100%}.ui-menu-item:hover{background:var(--surface)}.ui-menu-item.is-on{color:var(--accent)}.ui-menu-sep{height:1px;background:var(--line);margin:4px 0}.ui-menu-label{padding:6px 10px 2px}.ui-gate{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-1);background:transparent;border:0;color:var(--ink);cursor:pointer;padding:6px 8px;border-radius:6px}.ui-gate:hover{background:var(--surface-2)}.ui-gate .ui-dot{width:10px;height:10px;border-radius:50%;background:var(--ink-faint);box-shadow:0 0 0 3px #ffffff0a}.ui-gate.is-canon .ui-dot{background:var(--ink-faint)}.ui-gate.is-open .ui-dot{background:var(--danger);box-shadow:0 0 12px #ff7a6b8c}.ui-gate.is-ready .ui-dot{background:var(--ok);box-shadow:0 0 12px #6ee7b780}.ui-tab{font:inherit;font-size:var(--fs-0);color:var(--ink-dim);background:transparent;border:0;border-right:1px solid var(--line);padding:0 var(--sp-2);cursor:pointer;display:inline-flex;align-items:center;gap:8px}.ui-tab:hover{color:var(--ink)}.ui-tab.is-on{color:var(--ink);background:var(--surface-2)}.ui-tab .ui-count{color:var(--ink-faint)}.ui-toast{margin-left:auto;color:var(--ink-faint);font-size:var(--fs-0);padding:0 var(--sp-2);display:inline-flex;align-items:center;max-width:48vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ui-pick{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:5;background:var(--accent);color:var(--accent-ink);font-size:var(--fs-0);font-weight:600;padding:8px 14px;border-radius:999px;display:inline-flex;gap:10px;align-items:center;box-shadow:0 8px 24px #00000073}.ui-pick button{font:inherit;background:transparent;border:0;color:inherit;cursor:pointer;text-decoration:underline}.ui-empty{color:var(--ink-dim);display:grid;gap:var(--sp-1)}.ui-reason{display:grid;gap:6px}kbd{font:11px var(--mono);color:var(--ink-dim);border:1px solid var(--line-strong);border-radius:4px;padding:1px 5px}@keyframes ui-room-in{0%{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}.ui-room{position:absolute;inset:0;z-index:6;overflow:hidden;background:var(--bg);animation:ui-room-in .26s ease-out;-webkit-user-select:none;user-select:none}@media(prefers-reduced-motion:reduce){.ui-room{animation:none}}.ui-room-backdrop{position:absolute;inset:0}.ui-room.is-excised .ui-room-backdrop{filter:grayscale(.8) brightness(.45)}.ui-room-floor{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.ui-room-horizon{stroke:#ffffff38;stroke-width:.25;stroke-dasharray:1.2 1.2;vector-effect:non-scaling-stroke}.ui-room-walkmesh{fill:#ffffff0f;stroke:#ffffff59;stroke-width:.4;vector-effect:non-scaling-stroke}.ui-room-walkmesh.is-fractured{stroke:var(--danger);stroke-dasharray:2 1.5;fill:#ff7a6b14}.ui-room-walkmesh.is-void{fill:transparent;stroke:var(--ink-faint);stroke-dasharray:1 2}.ui-room-caption{position:absolute;left:var(--sp-2);top:12px;display:grid;gap:2px;max-width:min(60%,520px);text-shadow:0 1px 2px rgba(0,0,0,.8)}.ui-room-caption .ui-title{margin:0}.ui-room-tools{position:absolute;right:var(--sp-2);top:12px;display:flex;gap:6px}.ui-room-tools .ui-btn{background:#070b16c7;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.ui-room-doors{position:absolute;top:50%;transform:translateY(-50%);margin:0;padding:0;list-style:none;display:grid;gap:6px;max-width:32%}.ui-room-doors.is-in{left:0}.ui-room-doors.is-out{right:0;justify-items:end}.ui-room-door{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:var(--fs-0);color:var(--ink);background:#070b16b8;border:1px solid var(--line-strong);padding:6px 10px;cursor:pointer;max-width:100%}.ui-room-doors.is-in .ui-room-door{border-left:0;border-radius:0 6px 6px 0}.ui-room-doors.is-out .ui-room-door{border-right:0;border-radius:6px 0 0 6px}.ui-room-door span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-room-door small{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin-right:4px}.ui-room-door i{width:10px;height:16px;border:1px solid var(--ok);border-radius:2px;flex:none;background:#6ee7b72e}.ui-room-door.is-bridged i{border-style:dashed;border-color:var(--accent);background:#ffc46b2e}.ui-room-door.is-severed{color:var(--ink-dim)}.ui-room-door.is-severed i{border-color:var(--danger);background:repeating-linear-gradient(45deg,rgba(255,122,107,.5) 0 2px,transparent 2px 4px)}.ui-room-door:hover{background:var(--surface-2)}.ui-room-hotspot{position:absolute;transform:translate(-50%,-100%);display:grid;align-content:end;justify-items:start;gap:2px;max-width:240px;font:inherit;font-size:var(--fs-0);color:var(--ink);background:#070b166b;border:1px solid rgba(255,255,255,.45);border-radius:6px;padding:6px;cursor:pointer;min-width:64px;min-height:36px;text-align:left;text-shadow:0 1px 2px rgba(0,0,0,.8);transition:box-shadow .12s,background .12s}.ui-room-hotspot:hover{background:#070b16b3}.ui-room-hotspot.is-entity{border-color:var(--ok)}.ui-room-hotspot.is-prop{border-color:var(--accent);border-radius:999px}.ui-room-hotspot.is-trigger{border-color:#fff9}.ui-room-hotspot.is-adrift{border-style:dashed;opacity:.8}.ui-room-hotspot.is-disputed{border-color:var(--warn)}.ui-room-hotspot.is-missing{border-style:dashed;border-color:var(--danger);background:transparent;opacity:.6}.ui-room-hotspot.is-selected{box-shadow:0 0 0 2px var(--accent),0 0 18px #ffc46b80}.ui-room-hotspot:disabled{cursor:default;opacity:.4}.ui-room-hotspot-label{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-room-hotspot-note{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--danger)}.ui-room-hotspot.is-disputed .ui-room-hotspot-note{color:var(--warn)}.ui-room-owed{position:absolute;right:var(--sp-2);bottom:var(--sp-2);margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:60%}.ui-room-mark{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:var(--fs-0);color:var(--ink-dim);background:#070b16b8;border:1px dashed var(--line-strong);border-radius:999px;padding:5px 10px 5px 6px;cursor:pointer}.ui-room-mark i{width:14px;height:14px;border-radius:50%;border:1px dashed var(--danger);flex:none}.ui-room-mark.is-deliberately_unresolved i{border-color:var(--ink-faint);border-style:dotted}.ui-room-mark.is-frontier_gap i{border-color:var(--warn)}.ui-room-mark:hover{color:var(--ink)}.ui-table{width:100%;border-collapse:collapse;font-size:var(--fs-0, 12px)}.ui-table th,.ui-table td{text-align:right;padding:4px 6px;border-bottom:1px solid var(--line, rgba(255,255,255,.08));white-space:nowrap}.ui-table th:first-child,.ui-table td:first-child{text-align:left;white-space:normal}.ui-table th{font-weight:500;color:var(--dim, #9aa)}.ui-table tr.is-selectable{cursor:pointer}.ui-table tr.is-selectable:hover td{background:var(--hover, rgba(255,255,255,.04))}.ui-room-present{position:absolute;left:16px;bottom:16px;z-index:7;display:flex;flex-wrap:wrap;gap:6px;max-width:46%;margin:0;padding:0;list-style:none}.ui-room-present .ui-chip.is-missing{opacity:.45;text-decoration:line-through}.ui-textarea{width:100%;font:inherit;font-size:var(--fs-0, 12px);background:var(--panel, rgba(0,0,0,.25));color:inherit;border:1px solid var(--line, rgba(255,255,255,.12));border-radius:6px;padding:6px 8px}
