:root{--bg:#f4f5f8;--panel:#fff;--panel-2:#f0f2f6;--border:#dde1e8;--text:#1a1d23;--muted:#626b7a;--accent:#3d63dd;--accent-soft:#3d63dd1f;--added:#1c9a5f;--removed:#d64545;--warn:#b7791f;--future:#8a93a3;--tx:#3d63dd;--valid:#c2410c;--shadow:0 8px 28px #14182124;--grid:#1a1d2312;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e1014;--panel:#15181e;--panel-2:#1b1f27;--border:#2a2f39;--text:#e4e7ed;--muted:#8b93a3;--accent:#7c9cff;--accent-soft:#7c9cff24;--added:#3ecf8e;--removed:#ff6b6b;--warn:#e5b454;--future:#6b7382;--tx:#7c9cff;--valid:#ff9b5c;--shadow:0 10px 30px #00000080;--grid:#e4e7ed0f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0e1014;--panel:#15181e;--panel-2:#1b1f27;--border:#2a2f39;--text:#e4e7ed;--muted:#8b93a3;--accent:#7c9cff;--accent-soft:#7c9cff24;--added:#3ecf8e;--removed:#ff6b6b;--warn:#e5b454;--future:#6b7382;--tx:#7c9cff;--valid:#ff9b5c;--shadow:0 10px 30px #00000080;--grid:#e4e7ed0f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:600}h1{font-size:15px}h2{font-size:14px}h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:14px 0 6px;font-size:12px}code,.mono{font-family:var(--mono);font-size:12.5px}code{background:var(--panel-2);border-radius:4px;padding:1px 4px}.muted{color:var(--muted)}.small{font-size:12px}.grow{flex:1}.selectable{-webkit-user-select:all;user-select:all}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}button,select,input,textarea{font:inherit;color:inherit}.btn,select{background:var(--panel-2);border:1px solid var(--border);cursor:pointer;white-space:nowrap;border-radius:7px;align-items:center;gap:6px;padding:5px 11px;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled),select:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}.btn.small{padding:2px 8px;font-size:12px}.btn.ghost{background:0 0}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn kbd{font:10px var(--mono);opacity:.8}.link{color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:none;padding:0}.link:hover{text-decoration:underline}.icon-btn{background:var(--panel-2);border:1px solid var(--border);cursor:pointer;border-radius:7px;place-items:center;width:30px;height:28px;font-size:12px;display:inline-grid}.icon-btn:hover{border-color:var(--accent)}.icon-btn.play{background:var(--accent);border-color:var(--accent);color:#fff;width:36px}.icon-btn.small{width:24px;height:26px}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app{flex-direction:column;height:100%;min-height:0;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:8px 14px;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand>div{flex-direction:column;min-width:0;display:flex}.brand span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.brand-a{fill:var(--tx)}.brand-b{fill:var(--added)}.brand-c{fill:var(--valid)}.brand-l{stroke:var(--muted);stroke-width:1.6px}.topbar-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.notice{border-bottom:1px solid var(--border);justify-content:space-between;gap:10px;padding:7px 14px;font-size:13px;display:flex}.notice.error{background:color-mix(in srgb, var(--removed) 14%, var(--panel))}.notice.info{background:var(--accent-soft)}.progress{color:var(--muted);background:var(--panel);border-bottom:1px solid var(--border);padding:4px 14px;font-size:12px;position:relative}.progress span{background:var(--accent);height:2px;position:absolute;bottom:0;left:0}.workspace{flex:1;grid-template-columns:270px minmax(0,1fr) 360px;gap:8px;min-height:0;padding:8px;display:grid}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;min-height:0}.panel-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;padding:10px 12px 8px;display:flex}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;display:flex}.tabs button[role=tab]{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;padding:5px 10px}.tabs button[role=tab].on{background:var(--accent-soft);color:var(--text);font-weight:600}.check{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.check.small{color:var(--muted);margin-left:8px;font-size:12px}.segmented{border:1px solid var(--border);border-radius:7px;display:inline-flex;overflow:hidden}.segmented button{background:var(--panel-2);cursor:pointer;color:var(--muted);border:none;padding:4px 10px;font-size:12.5px}.segmented button+button{border-left:1px solid var(--border)}.segmented button.on{background:var(--accent);color:#fff}.txlog{flex-direction:column;display:flex;overflow:hidden}.tx-list{flex:1;margin:0;padding:6px;list-style:none;position:relative;overflow:auto}.tx-item{border-radius:8px;margin-bottom:2px}.tx-item.future{opacity:.55}.tx-item.current{background:var(--accent-soft);opacity:1}.tx-head{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;width:100%;padding:6px 8px;display:flex}.tx-head:hover{background:var(--panel-2)}.tx-num{font:600 12.5px var(--mono);min-width:42px}.badge{font:11px var(--mono);background:var(--panel-2);color:var(--muted);border-radius:10px;padding:1px 6px}.badge.add{color:var(--added);background:color-mix(in srgb, var(--added) 14%, transparent)}.badge.del{color:var(--removed);background:color-mix(in srgb, var(--removed) 14%, transparent)}.tx-changes{margin:0;padding:2px 10px 8px 12px;font-size:12.5px;list-style:none}.tx-changes li{word-break:break-word;padding:3px 0 3px 16px;position:relative}.tx-changes .sign{font:700 13px var(--mono);position:absolute;left:0}.tx-changes .add .sign{color:var(--added)}.tx-changes .del .sign{color:var(--removed)}.tx-changes .del .mono:not(.link){text-decoration:line-through;-webkit-text-decoration-color:var(--removed);text-decoration-color:var(--removed)}.attr{color:var(--muted)}.center{flex-direction:column;display:flex;overflow:hidden}.view-body{flex:1;min-height:0;position:relative}.boot,.empty{text-align:center;height:100%;color:var(--muted);place-content:center;gap:8px;padding:24px;display:grid}.error-screen{height:100vh}.graph-view{position:absolute;inset:0}.graph-svg{cursor:grab;touch-action:none;background-image:radial-gradient(var(--grid) 1px, transparent 1px);background-size:22px 22px;width:100%;height:100%;display:block}.graph-svg:active{cursor:grabbing}.g-edge path{fill:none;stroke-width:1.6px;opacity:.75;transition:opacity .25s}.g-edge.s-added path{stroke-width:2.6px;opacity:1;filter:drop-shadow(0 0 3px color-mix(in srgb, var(--added) 70%, transparent));stroke:var(--added)!important}.g-edge.s-removed path{stroke-dasharray:5 4;stroke-width:2px;opacity:.9;stroke:var(--removed)!important}.g-edge.s-hidden path{opacity:.08}.g-edge.emph path{stroke-width:2.4px;opacity:1}.edge-label{font:10.5px var(--mono);fill:var(--muted);text-anchor:middle;paint-order:stroke;stroke:var(--panel);stroke-width:3px;pointer-events:none}.g-edge.s-added .edge-label{fill:var(--added)}.g-edge.s-removed .edge-label{fill:var(--removed)}.g-node{cursor:pointer;transition:opacity .25s}.g-node .body{fill:color-mix(in srgb, var(--kind) 22%, var(--panel));stroke:var(--kind);stroke-width:2px}.g-node.stub .body{fill:var(--panel);stroke:var(--muted);stroke-dasharray:3 3}.g-node .halo{fill:none;stroke:#0000;stroke-width:3px}.g-node.selected .halo{stroke:var(--accent)}.g-node.s-added .halo{stroke:var(--added);animation:1.4s ease-out 2 pulse}.g-node.s-removed{opacity:.55}.g-node.s-removed .body{stroke:var(--removed);stroke-dasharray:4 3}.g-node.s-hidden{opacity:.14}.g-node.dim{opacity:.3}.g-node:hover .body{stroke-width:3px}.node-label{font:600 11.5px var(--mono);fill:var(--text);text-anchor:middle;paint-order:stroke;stroke:var(--bg);stroke-width:3.5px;pointer-events:none}@keyframes pulse{0%{stroke-width:8px;stroke-opacity:.2}to{stroke-width:3px;stroke-opacity:1}}.graph-overlay{pointer-events:none;align-items:center;gap:8px;display:flex;position:absolute}.graph-overlay>*{pointer-events:auto}.graph-overlay.top-left{top:10px;left:12px;right:180px}.graph-overlay.top-right{top:8px;right:10px}.graph-overlay.bottom-left{bottom:10px;left:12px}.legend{color:var(--muted);flex-wrap:wrap;gap:4px 12px;font-size:12px;display:flex}.legend-item{align-items:center;gap:5px;display:inline-flex}.legend-item i{border-radius:50%;width:10px;height:10px;display:inline-block}.legend-item .stub-swatch{border:1.5px dashed var(--muted)}.legend-item .state-swatch{border-radius:2px;width:16px;height:3px}.state-swatch.added{background:var(--added)}.state-swatch.removed{background:repeating-linear-gradient(90deg, var(--removed) 0 4px, transparent 4px 7px)}.tooltip{z-index:20;background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);pointer-events:none;border-radius:8px;max-width:460px;padding:8px 10px;font-size:12.5px;position:fixed}.tooltip-title{font-weight:600;font-family:var(--mono)}table.kv{border-collapse:collapse;margin-top:6px}table.kv td{vertical-align:top;padding:2px 10px 2px 0}table.kv.wide{width:100%}table.kv.wide td:first-child{width:42%}.row-added td{background:color-mix(in srgb, var(--added) 10%, transparent)}.map-view,.facts-view{flex-direction:column;display:flex;position:absolute;inset:0}.map-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;font-size:12.5px;display:flex}.map-toolbar select{max-width:220px;padding:3px 8px}.map-toolbar input[type=search]{background:var(--panel-2);border:1px solid var(--border);border-radius:7px;padding:4px 8px}.map-canvas{flex:1;min-height:0;position:relative;overflow:hidden}.map-canvas svg{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;display:block}.grid{stroke:var(--grid)}.grid.faint{stroke-dasharray:2 4}.axis{stroke:var(--border)}.tick{font:11px var(--mono);fill:var(--muted)}.tick.current{fill:var(--tx);font-weight:700}.axis-title{fill:var(--muted);font-size:11px}.fact-rect rect{fill-opacity:.1;stroke-opacity:.55;stroke-width:1px}.fact-rect.retracted rect{stroke-dasharray:4 3}.fact-rect.visible rect{fill-opacity:.32;stroke-opacity:1;stroke-width:1.8px}.fact-rect.mine rect{fill-opacity:.4;stroke-width:2.2px}.rect-label{font:10.5px var(--mono);fill:var(--text);pointer-events:none}.now-marker line{stroke:var(--muted);stroke-dasharray:2 3}.now-marker text{fill:var(--muted);font-size:10.5px}.crosshair line{stroke:var(--tx);stroke-width:1.5px}.crosshair line+line{stroke:var(--valid)}.crosshair circle{fill:var(--panel);stroke:var(--text);stroke-width:2px}.crosshair .any-band{fill:var(--tx);opacity:.35}.table-wrap{flex:1;min-height:0;overflow:auto}.grid-table{border-collapse:collapse;width:100%;font-size:12.5px}.grid-table th{background:var(--panel-2);text-align:left;border-bottom:1px solid var(--border);z-index:1;padding:6px 10px;font-weight:600;position:sticky;top:0}.grid-table td{border-bottom:1px solid var(--border);vertical-align:top;word-break:break-word;padding:5px 10px}.grid-table tr.row-added td{background:color-mix(in srgb, var(--added) 9%, transparent)}.grid-table tr.row-removed td{background:color-mix(in srgb, var(--removed) 9%, transparent)}.grid-table tr.row-hidden td{color:var(--muted)}.chip{background:var(--panel-2);color:var(--muted);white-space:nowrap;border-radius:10px;padding:1px 7px;font-size:11px;display:inline-block}.chip.ok{color:var(--added);background:color-mix(in srgb, var(--added) 14%, transparent)}.chip.del{color:var(--removed);background:color-mix(in srgb, var(--removed) 14%, transparent)}.chip.warn{color:var(--warn);background:color-mix(in srgb, var(--warn) 15%, transparent)}.chip.future{color:var(--future)}.side{flex-direction:column;display:flex;overflow:hidden}.side-body{flex:1;padding:12px 14px 18px;overflow:auto}.inspector-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.inspector-head h2{word-break:break-all;font-size:15px}.section-head{justify-content:space-between;align-items:center;display:flex}.attr-history{margin-bottom:10px}.attr-history ol{margin:4px 0 0;padding:0;list-style:none}.version{text-align:left;background:var(--panel-2);cursor:pointer;border:1px solid #0000;border-radius:7px;grid-template-columns:1fr auto;gap:2px 8px;width:100%;margin-bottom:4px;padding:6px 8px;display:grid}.version:hover{border-color:var(--accent)}.version .value{word-break:break-word}.version .muted{grid-area:2/1/auto/-1}.version .chip{grid-area:1/2;align-self:start}.struck{text-decoration:line-through;-webkit-text-decoration-color:var(--removed);text-decoration-color:var(--removed)}.overview p{margin:8px 0}.stats{grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0;display:grid}.stats div{background:var(--panel-2);border-radius:8px;padding:8px 10px}.stats dt{color:var(--muted);font-size:11.5px}.stats dd{font:600 18px var(--mono);margin:0}.hint{background:var(--accent-soft);border-radius:8px;padding:8px 10px}.explain{margin:0;padding-left:18px}.explain li{margin-bottom:8px}.console{flex-direction:column;gap:8px;display:flex}.console-label{font-size:12px;font-weight:600}.console textarea{resize:vertical;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;width:100%;padding:8px 10px;line-height:1.5}.console-actions{flex-direction:column;align-items:stretch;gap:8px;display:flex}.console-actions .check{flex-wrap:wrap;font-size:12.5px}.console-actions .btn{justify-content:center}.console p{margin:0}.examples summary{cursor:pointer;color:var(--muted);font-size:12.5px}.examples ul{margin:6px 0 0;padding:0;list-style:none}.examples li{margin-bottom:6px}.examples .link{word-break:break-word;font-size:11.5px}.results{flex-direction:column;gap:10px;display:flex}.result .table-wrap{border:1px solid var(--border);border-radius:8px;max-height:340px}.ran pre,.error pre{white-space:pre-wrap;word-break:break-word;margin:4px 0}.result-note{border-radius:8px;padding:6px 10px;font-size:12.5px}.result-note.ok{background:color-mix(in srgb, var(--added) 12%, transparent)}.error{background:color-mix(in srgb, var(--removed) 12%, transparent);border-radius:8px;padding:8px 10px;font-size:12.5px}.controls{margin:0 8px 8px;padding:8px 14px}.time-controls{flex-direction:column;gap:6px;display:flex}.axis-row{grid-template-columns:190px 180px minmax(0,1fr) 250px;align-items:center;gap:14px;display:grid}.axis-name{flex-direction:column;padding-left:16px;font-size:13px;font-weight:600;display:flex;position:relative}.axis-dot{border-radius:50%;width:9px;height:9px;position:absolute;top:5px;left:0}.axis-dot.tx{background:var(--tx)}.axis-dot.valid{background:var(--valid)}.axis-name .muted{font-weight:400}.transport{gap:4px;display:flex}.slider-wrap{padding:6px 0 4px;position:relative}.slider-wrap input[type=range]{z-index:1;width:100%;margin:0;position:relative}.axis-row:first-child input[type=range]{accent-color:var(--tx)}.axis-row:last-child input[type=range]{accent-color:var(--valid)}.ticks{pointer-events:none;height:6px;position:absolute;bottom:-2px;left:8px;right:8px}.tick-mark{background:var(--border);border-radius:1px;width:2px;height:6px;margin-left:-1px;position:absolute}.tick-mark.has-assert{background:var(--added)}.tick-mark.has-retract{background:var(--removed)}.tick-mark.has-assert.has-retract{background:linear-gradient(var(--added) 50%, var(--removed) 50%)}.tick-mark.boundary{background:var(--valid);opacity:.6}.tick-mark.now{background:var(--text);height:9px;top:-3px}.range-labels{justify-content:space-between;margin-top:4px;font-size:10.5px;display:flex}.readout{flex-direction:column;min-width:0;font-size:13px;display:flex}.date-edit{align-items:center;gap:4px;display:flex}.date-edit input{background:var(--panel-2);border:1px solid var(--border);font:12.5px var(--mono);border-radius:7px;flex:1;min-width:0;padding:3px 6px}@media (max-width:1200px){.workspace{grid-template-columns:230px minmax(0,1fr) 320px}.axis-row{grid-template-columns:150px 170px minmax(0,1fr) 220px}}@media (max-width:900px){.app{height:auto;min-height:100%}.workspace{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto}.center{order:1;height:62vh}.txlog{order:2;max-height:300px}.side{order:3;max-height:80vh}.controls{z-index:5;box-shadow:var(--shadow);position:sticky;bottom:0}.axis-row{grid-template-columns:1fr auto;gap:6px 10px}.axis-row .slider-wrap,.axis-row .readout{grid-column:1/-1}.axis-name .muted,.graph-overlay.bottom-left{display:none}}.fact-rect:not(.focused):not(.visible) rect{fill-opacity:.03;stroke-opacity:.35}.fact-rect:not(.focused).visible rect{fill-opacity:.2}
