:root{--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-xs:11px;--text-sm:12px;--text-md:13px;--text-base:14px;--text-lg:16px;--text-xl:20px;--lh-ui:1.3;--lh-body:1.5;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--r-sm:4px;--r-md:6px;--r-lg:10px;--canvas:#f4f5f7;--surface-1:#fff;--surface-2:#f7f8fa;--surface-3:#eef0f3;--hairline:#e3e6ea;--hairline-strong:#cfd4da;--ink:#15181d;--ink-2:#4b5260;--ink-3:#7a8290;--accent:#2456d6;--accent-tint:#2456d61f;--refused:#c2321f;--refused-tint:#c2321f1a;--nonlive:#a35b00;--nonlive-tint:#fff4dc;--nonlive-hairline:#e8c27a;--incomplete:#a35b00;--blocked:#c2321f;--grid-dot:#d9dde3;--shadow-1:0 1px 2px #14181f0f, 0 0 0 1px var(--hairline)}@media (prefers-color-scheme:dark){:root{--canvas:#0f1114;--surface-1:#17191d;--surface-2:#1c1f24;--surface-3:#23272d;--hairline:#2a2f36;--hairline-strong:#3a414a;--ink:#eceef1;--ink-2:#aeb4bd;--ink-3:#7d848e;--accent:#7ea2ff;--accent-tint:#7ea2ff2e;--refused:#ff7b66;--refused-tint:#ff7b6624;--nonlive:#f0b35c;--nonlive-tint:#2a2114;--nonlive-hairline:#5a4520;--incomplete:#f0b35c;--blocked:#ff7b66;--grid-dot:#2a2f36;--shadow-1:0 0 0 1px var(--hairline)}}html,body,#root{height:100%}body{background:var(--canvas);color:var(--ink);font:var(--text-md) / var(--lh-ui) var(--font-ui);-webkit-font-smoothing:antialiased;margin:0}button{font:inherit;color:inherit}code,.mono{font-family:var(--font-mono);font-size:var(--text-sm)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{grid-template-rows:48px 1fr;grid-template-columns:260px 1fr 300px;min-width:960px;height:100%;display:grid}.topbar{align-items:center;gap:var(--sp-4);padding:0 var(--sp-4);background:var(--surface-1);border-bottom:1px solid var(--hairline);grid-column:1/-1;display:flex}.brand{align-items:baseline;gap:var(--sp-2);letter-spacing:-.01em;font-weight:600;display:flex}.brand small{color:var(--ink-3);font-weight:500}.topbar .spacer{flex:1}.chip{height:24px;padding:0 var(--sp-2);border-radius:var(--r-sm);border:1px solid var(--hairline);background:var(--surface-2);font-size:var(--text-sm);color:var(--ink-2);white-space:nowrap;align-items:center;gap:6px;font-weight:500;display:inline-flex}.chip .dot{background:var(--ink-3);border-radius:50%;width:6px;height:6px}.chip--nonlive{color:var(--nonlive);background:var(--nonlive-tint);border-color:var(--nonlive-hairline)}.chip--nonlive .dot{background:var(--nonlive)}.chip--refused{color:var(--refused);background:var(--refused-tint);border-color:#0000}.chip--refused .dot{background:var(--refused)}.chip--accepted .dot{background:var(--ink-2)}.btn{height:28px;padding:0 var(--sp-3);border-radius:var(--r-md);border:1px solid var(--hairline-strong);background:var(--surface-1);font-size:var(--text-md);cursor:pointer;font-weight:500}.btn:hover{background:var(--surface-2)}.btn--icon{text-align:center;width:28px;padding:0}.rail{background:var(--surface-1);border-right:1px solid var(--hairline);flex-direction:column;display:flex;overflow:auto}.rail section{padding:var(--sp-3) var(--sp-3) var(--sp-2);border-bottom:1px solid var(--hairline)}.rail h2,.inspector h2,.tray h2{margin:0 0 var(--sp-2);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);font-weight:600}.rail ul{margin:0;padding:0;list-style:none}.rowbtn{align-items:center;gap:var(--sp-2);width:100%;min-height:28px;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.rowbtn:hover{background:var(--surface-2)}.rowbtn[aria-current=true]{background:var(--accent-tint)}.rowbtn .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rowbtn{align-items:flex-start}.rowtext{flex-direction:column;flex:1;min-width:0;display:flex}.rowtext .title,.rowtext .sub{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rowtext .sub{color:var(--ink-3);font-size:var(--text-sm)}.rowbtn .meta{color:var(--ink-3);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.state{border-radius:50%;flex:none;width:7px;height:7px}.state--incomplete{background:var(--incomplete)}.state--blocked{background:var(--blocked)}.state--draft{border:1.5px dashed var(--ink-3)}.state--ready{border:1.5px solid var(--hairline-strong)}.empty{color:var(--ink-3);font-size:var(--text-sm);padding:var(--sp-1) var(--sp-2)}.viewport{background-color:var(--canvas);background-image:radial-gradient(var(--grid-dot) 1px, transparent 1px);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.viewport.is-panning{cursor:grabbing}.world{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.edges{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.edges line{stroke:var(--hairline-strong);stroke-width:1.5px}.edges line.is-refused{stroke:var(--refused);stroke-width:2px}.frame{border:1px solid var(--hairline-strong);border-radius:var(--r-lg);background:color-mix(in srgb, var(--surface-1) 72%, transparent);box-sizing:border-box;position:absolute}.frame__title{font-size:var(--text-md);letter-spacing:-.01em;color:var(--ink-2);cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:2px 8px 4px;font-weight:600;position:absolute;top:-1px;left:0;transform:translateY(-100%)}.frame__title:hover,.frame.is-selected .frame__title{color:var(--ink)}.frame.is-selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-tint)}.slot{border:1px dashed var(--hairline-strong);border-radius:var(--r-md);box-sizing:border-box;background:var(--surface-2);position:absolute}.slot__title{font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;position:absolute;top:6px;left:8px}.slot.is-selected{border-style:solid;border-color:var(--accent)}.node{align-items:center;gap:var(--sp-2);padding:0 var(--sp-2);border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-1);box-shadow:var(--shadow-1);box-sizing:border-box;text-align:left;cursor:pointer;display:flex;position:absolute;overflow:hidden}.node:hover{border-color:var(--hairline-strong)}.node.is-selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-tint)}.node.is-refused{border-color:var(--refused);box-shadow:0 0 0 2px var(--refused-tint)}.node--draft{border-style:dashed}.node__kind{font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);flex:none;font-weight:600}.node__title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.hud{right:var(--sp-3);top:var(--sp-3);gap:var(--sp-1);display:flex;position:absolute}.hud .btn{box-shadow:var(--shadow-1);border-color:#0000}.hint{left:var(--sp-3);bottom:var(--sp-3);color:var(--ink-3);font-size:var(--text-xs);pointer-events:none;position:absolute}.tray{left:var(--sp-3);right:320px;bottom:var(--sp-3);max-height:40%;padding:var(--sp-3);border-radius:var(--r-lg);background:var(--surface-1);box-shadow:var(--shadow-1);border-top:2px solid var(--refused);position:absolute;overflow:auto}.tray h2{color:var(--refused)}.tray p{margin:0 0 var(--sp-2);color:var(--ink-2)}.tray ul{gap:var(--sp-1);margin:0;padding:0;list-style:none;display:grid}.refusal{width:100%;padding:var(--sp-2);border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-1);text-align:left;cursor:pointer;grid-template-columns:1fr;gap:2px;display:grid}.refusal:hover{background:var(--surface-2)}.refusal[aria-pressed=true]{border-color:var(--refused);background:var(--refused-tint)}.refusal code{color:var(--refused)}.refusal .subject{color:var(--ink-3);font-size:var(--text-sm);overflow-wrap:anywhere}.refusal code{overflow-wrap:anywhere}.tray{max-height:45%}.tray ul{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.inspector{background:var(--surface-1);border-left:1px solid var(--hairline);padding:var(--sp-3);overflow:auto}.inspector .kind{color:var(--ink-3);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;font-weight:600}.inspector h3{margin:2px 0 var(--sp-3);font-size:var(--text-lg);letter-spacing:-.01em;text-wrap:balance;font-weight:600;line-height:1.25}.kv{gap:var(--sp-1) var(--sp-3);margin:0 0 var(--sp-4);font-size:var(--text-md);grid-template-columns:96px 1fr;display:grid}.kv dt{color:var(--ink-3)}.kv dd{overflow-wrap:anywhere;min-width:0;margin:0}.inspector pre{padding:var(--sp-2);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--hairline);font-size:var(--text-sm);margin:0;overflow:auto}.ports{gap:var(--sp-1);flex-wrap:wrap;display:flex}.port{border:1px solid var(--hairline-strong);font-size:var(--text-xs);color:var(--ink-2);border-radius:999px;padding:1px 6px}.inspector .refusal{margin-top:var(--sp-1)}.rowbtn>.state{margin-top:6px}.toolbar-group{gap:var(--sp-1);display:inline-flex}.btn:disabled{opacity:.45;cursor:default}.btn--danger{color:var(--refused)}.btn--danger:hover{background:var(--refused-tint)}.linkbtn{color:var(--ink-3);cursor:pointer;background:0 0;border:0;padding:0 4px}.toolrail{left:var(--sp-3);border-radius:var(--r-lg);background:var(--surface-1);box-shadow:0 4px 16px #14181f1a, var(--shadow-1);flex-direction:column;gap:2px;padding:4px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.tool{border-radius:var(--r-md);cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;width:56px;padding:8px 4px 6px;display:flex}.tool:hover{background:var(--surface-2)}.tool:disabled{opacity:.4;cursor:default}.tool__icon{font-size:16px;line-height:1}.tool__label{color:var(--ink-2);font-size:10px;font-weight:500}.navbar{right:var(--sp-3);bottom:var(--sp-3);align-items:center;gap:var(--sp-1);border-radius:var(--r-lg);background:var(--surface-1);box-shadow:0 4px 16px #14181f1a, var(--shadow-1);padding:4px;display:flex;position:absolute}.navbar .btn{border-color:#0000}.navbar__frames{position:relative}.popover{border-radius:var(--r-md);background:var(--surface-1);min-width:220px;max-height:320px;box-shadow:0 8px 24px #14181f29, var(--shadow-1);margin:0;padding:4px;list-style:none;position:absolute;bottom:calc(100% + 6px);right:0;overflow:auto}.ctx{align-items:center;gap:var(--sp-1);border-radius:var(--r-md);background:var(--surface-1);box-shadow:0 4px 16px #14181f24, var(--shadow-1);z-index:3;padding:4px;display:flex;position:absolute}.ctx__title{padding:0 var(--sp-2);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);font-weight:600}.ctx .btn{border-color:#0000;align-items:center;height:26px;text-decoration:none;display:inline-flex}.hint{bottom:18px;left:auto;right:300px}.tag,.frame__title{--tag-h:210}.frame__title{background:hsl(var(--tag-h) 70% 92%);color:hsl(var(--tag-h) 55% 28%);border-radius:4px;padding:2px 8px 3px}.frame{border-color:hsl(var(--tag-h) 40% 78%)}.frame.is-selected{border-color:var(--accent)}.tag{background:hsl(var(--tag-h) 70% 92%);color:hsl(var(--tag-h) 55% 28%);font-weight:600;font-size:var(--text-sm);border-radius:4px;padding:1px 8px;display:inline-block}@media (prefers-color-scheme:dark){.frame__title,.tag{background:hsl(var(--tag-h) 40% 22%);color:hsl(var(--tag-h) 70% 80%)}.frame{border-color:hsl(var(--tag-h) 30% 35%)}}.rowbtn--static{cursor:default}.rowbtn--static:hover{background:0 0}.title-input{box-sizing:border-box;width:100%;margin:2px 0 var(--sp-3);border-radius:var(--r-sm);font:inherit;font-size:var(--text-lg);letter-spacing:-.01em;color:var(--ink);background:0 0;border:1px solid #0000;padding:4px 6px;font-weight:600}.title-input:hover{border-color:var(--hairline-strong)}.title-input:focus{border-color:var(--accent);background:var(--surface-1);outline:none}.select{font:inherit;font-size:var(--text-md);border:1px solid var(--hairline-strong);border-radius:var(--r-sm);background:var(--surface-1);color:var(--ink);padding:2px 6px}.refused-text{color:var(--refused)}.tabs{margin-bottom:var(--sp-2);border-bottom:1px solid var(--hairline);flex-wrap:wrap;gap:2px;display:flex}.tab{font-size:var(--text-sm);color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:6px 10px;font-weight:500}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}.tablewrap{border:1px solid var(--hairline);border-radius:var(--r-md);max-height:360px;overflow:auto}table.sheet{border-collapse:collapse;font-size:var(--text-sm);min-width:100%}table.sheet th,table.sheet td{border-bottom:1px solid var(--hairline);border-right:1px solid var(--hairline);white-space:nowrap;text-overflow:ellipsis;text-align:left;max-width:220px;padding:3px 8px;overflow:hidden}table.sheet thead th{background:var(--surface-2);color:var(--ink-2);font-weight:600;position:sticky;top:0}table.sheet tbody th{color:var(--ink-3);background:var(--surface-2);font-weight:400}table.sheet td.num{text-align:right;font-variant-numeric:tabular-nums}table.sheet td.formula{font-family:var(--font-mono);color:var(--ink-2)}.regions{gap:4px;max-height:420px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.regions li{gap:var(--sp-2);font-size:var(--text-sm);grid-template-columns:44px 1fr;line-height:1.4;display:grid}.regions li.is-heading .region-text{color:var(--ink);font-weight:600}.region-kind{color:var(--ink-3);font-family:var(--font-mono);font-size:var(--text-xs);padding-top:2px}.region-text{color:var(--ink-2);white-space:pre-wrap}
