:root{--accent: #b4a7ff;--accent-strong: #7c5cff;--accent-on: #1a103d;--teal: #5bd6c0;--teal-strong: #00d4a3;--bg: #0e1014;--s0: #14171d;--s1: #181b23;--s2: #1d2029;--s3: #21242e;--s4: #262934;--s5: #2c2f3b;--line: rgba(255, 255, 255, .07);--line-2: rgba(255, 255, 255, .12);--text: #e6e7ea;--text-2: rgba(230, 231, 234, .74);--text-3: rgba(230, 231, 234, .5);--text-4: rgba(230, 231, 234, .32);--green: #4ade80;--green-bg: rgba(74, 222, 128, .12);--amber: #fbbf24;--amber-bg: rgba(251, 191, 36, .13);--red: #f87171;--red-bg: rgba(248, 113, 113, .13);--blue: #60a5fa;--blue-bg: rgba(96, 165, 250, .13);--grey: #9aa0aa;--grey-bg: rgba(154, 160, 170, .1);--row-h: 36px;--pad: 16px;--gap: 14px;--radius: 10px;--radius-sm: 6px;--font: "Inter", "SF Pro Text", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, monospace;--fs-12: 13.5px;--fs-13: 14.5px;--fs-14: 15.5px;--fs-16: 17px;--fs-18: 19px;--fs-22: 23px;--fs-28: 28px}[data-density=compact]{--row-h: 30px;--pad: 12px;--gap: 10px;--fs-12: 12.5px;--fs-13: 13.5px;--fs-14: 14.5px}[data-density=comfortable]{--row-h: 44px;--pad: 20px;--gap: 18px;--fs-12: 14px;--fs-13: 15px;--fs-14: 16px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html,body{touch-action:pan-x pan-y;-ms-touch-action:pan-x pan-y}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-14);font-feature-settings:"cv11","ss01","ss03";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font-family:inherit}.app{display:grid;grid-template-columns:var(--nav-w, 220px) 1fr;grid-template-rows:48px 1fr;grid-template-areas:"nav top" "nav main";height:100vh;width:100vw}.topbar{grid-area:top;display:flex;align-items:center;gap:14px;padding:0 16px;background:var(--s0);border-bottom:1px solid var(--line);z-index:5}.topbar .crumbs{display:flex;align-items:center;gap:6px;color:var(--text-2);font-size:var(--fs-13)}.topbar .crumbs .sep{color:var(--text-4)}.topbar .crumbs .last{color:var(--text);font-weight:500}.topbar .crumbs a,.topbar .crumbs a:visited,.topbar .crumbs a:hover,.topbar .crumbs a:active{color:var(--text);font-weight:500;text-decoration:none;padding:2px 6px;border-radius:4px;transition:background-color .12s ease}.topbar .crumbs a:hover,.topbar .crumbs a:focus-visible{background:var(--s2)}.topbar .crumbs a:active{background:var(--s3, var(--s2))}.env-pill{display:inline-flex;align-items:center;gap:8px;padding:4px 10px 4px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line-2);background:var(--s2);cursor:pointer;-webkit-user-select:none;user-select:none}.env-pill[data-env=production]{background:#f871711a;border-color:#f8717173;color:#ffd4d4}.env-pill[data-env=staging]{background:#fbbf241a;border-color:#fbbf2466;color:#ffe9b8}.env-pill[data-env=dev]{background:#60a5fa1a;border-color:#60a5fa66;color:#d4e6ff}.env-pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}.search{flex:1;max-width:460px;margin-left:auto;position:relative}.search input{width:100%;height:30px;padding:0 10px 0 30px;background:var(--s2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:var(--fs-13);outline:none}.search input:focus{border-color:var(--accent-strong);background:var(--s3)}.search .ic{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text-3)}.search .kbd{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10px;color:var(--text-3);font-family:var(--font-mono);border:1px solid var(--line);padding:1px 5px;border-radius:4px}.iconbtn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;border-radius:8px;color:var(--text-2);cursor:pointer;position:relative}.iconbtn:hover{background:var(--s2);color:var(--text)}.iconbtn.active{background:#7c5cff21;color:var(--accent)}.iconbtn.sm{width:26px;height:26px;border-radius:6px}.iconbtn-badge{position:absolute;top:2px;right:2px;min-width:14px;height:14px;padding:0 3px;border-radius:999px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.iconbtn .badge{position:absolute;top:4px;right:4px;min-width:14px;height:14px;padding:0 3px;border-radius:999px;background:var(--red);color:#1a0a0a;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--s0)}.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--accent-strong),var(--teal-strong));display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:600;cursor:pointer}.nav{grid-area:nav;background:#0a0c10;border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden}.nav .brand{height:48px;display:flex;align-items:center;gap:9px;padding:0 16px;border-bottom:1px solid var(--line);font-weight:600;letter-spacing:-.01em;font-size:var(--fs-14)}.brand-mark{width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,var(--accent-strong),var(--teal-strong));position:relative;flex-shrink:0}.brand-mark:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:3px;background:#0a0c10}.brand-mark:before{content:"";position:absolute;top:7px;right:7px;bottom:7px;left:7px;border-radius:1.5px;background:linear-gradient(135deg,var(--accent),var(--teal))}.nav-list{flex:1;padding:8px;display:flex;flex-direction:column;gap:1px;overflow-y:auto}.nav-section{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-4);padding:12px 10px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;color:var(--text-2);cursor:pointer;font-size:var(--fs-13);font-weight:500;position:relative;-webkit-user-select:none;user-select:none;border:0;background:transparent;width:100%;text-align:left;text-decoration:none}.nav-item:visited{color:var(--text-2)}.nav-item.active:visited{color:#fff}.nav-item:hover{background:var(--s1);color:var(--text)}.nav-item.active{background:#7c5cff21;color:#fff}.nav-item.active:before{content:"";position:absolute;left:-8px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--accent-strong)}.nav-item .ic{color:var(--text-3);flex-shrink:0}.nav-item.active .ic{color:var(--accent)}.nav-item .count{margin-left:auto;font-size:10px;color:var(--text-3);background:var(--s2);padding:1px 6px;border-radius:999px;font-weight:600}.nav-item.active .count{background:#7c5cff40;color:var(--accent)}.nav-footer{padding:10px 14px;border-top:1px solid var(--line);font-size:11px;color:var(--text-4);display:flex;align-items:center;gap:8px}.settings-toc-item{display:block;text-align:left;padding:8px 12px;border-radius:6px;border:0;background:transparent;color:var(--text-2);font-size:var(--fs-13);font-weight:500;cursor:pointer;width:100%;transition:background-color .12s ease}.settings-toc-item:hover{background:var(--s1);color:var(--text)}.settings-toc-item.active{background:#7c5cff21;color:#fff}.settings-toc-item.danger{color:var(--red, #f87171)}.settings-toc-item.danger:hover{background:#ef44441a;color:var(--red, #f87171)}.settings-toc-item.danger.active{background:#ef444426;color:#fecaca}.nav-bottom-row{display:flex;align-items:center;gap:4px}.nav-bottom-row .nav-collapse-item{width:36px;flex:0 0 36px;justify-content:center;padding:7px 0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app.nav-collapsed{grid-template-columns:56px 1fr}.app.nav-collapsed .nav .brand{padding:0 10px;gap:0;justify-content:center}.app.nav-collapsed .nav-list{padding:8px 6px}.app.nav-collapsed .nav-item{justify-content:center;padding:8px 0}.app.nav-collapsed .nav-item.active:before{left:-6px}.main{grid-area:main;overflow-y:auto;background:var(--bg);position:relative}.page{padding:20px 24px 40px;max-width:1600px;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px}.page-title{font-size:var(--fs-22);font-weight:600;letter-spacing:-.02em;margin:0}.page-sub{font-size:var(--fs-13);color:var(--text-3);margin-top:4px}.card{background:var(--s1);border:1px solid var(--line);border-radius:var(--radius);position:relative}.card-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}.card-title{font-size:var(--fs-13);font-weight:600;margin:0;letter-spacing:-.005em}.card-sub{font-size:11px;color:var(--text-3);font-weight:400;margin-left:8px}.card-body{padding:16px}.btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:8px;border:1px solid var(--line-2);background:var(--s2);color:var(--text);font-size:var(--fs-13);font-weight:500;cursor:pointer;white-space:nowrap;font-family:inherit}.btn:hover{background:var(--s3);border-color:#ffffff2e}.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent-strong);border-color:transparent;color:#fff}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--s2);color:var(--text)}.btn.danger{background:#f8717124;color:var(--red);border-color:#f8717159}.btn.auto-submit{background:var(--red);border-color:transparent;color:#fff}.btn.auto-submit:hover{filter:brightness(1.08)}.btn.sm{height:26px;padding:0 8px;font-size:var(--fs-12)}.btn.lg{height:36px;padding:0 16px}.status{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:500;letter-spacing:.005em;white-space:nowrap}.status .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.status.success{background:var(--green-bg);color:var(--green)}.status.failed{background:var(--red-bg);color:var(--red)}.status.soft-failed{background:var(--red-bg);color:var(--red);border:1px dashed var(--red)}.status.halted{background:var(--amber-bg);color:var(--amber)}.status.running{background:var(--blue-bg);color:var(--blue)}.status.cancelled{background:var(--grey-bg);color:var(--grey)}.status.partial{background:#c49aff1f;color:#c49aff}.status.dirty{background:#fbbf2421;color:var(--amber)}.status.never{background:var(--grey-bg);color:var(--text-4)}.status.running .dot{animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}table.data{width:100%;border-collapse:collapse;font-size:var(--fs-13)}table.data th{text-align:left;padding:8px 12px;background:var(--s0);color:var(--text-3);font-weight:500;font-size:var(--fs-12);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1;-webkit-user-select:none;user-select:none;white-space:nowrap}table.data th .sortable{cursor:pointer;display:inline-flex;align-items:center;gap:4px}table.data td{padding:0 12px;height:var(--row-h);border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap;color:var(--text)}table.data tr.row{cursor:pointer;transition:background 80ms}table.data tr.row:hover{background:var(--s1)}table.data tr.row.selected{background:#7c5cff1a}table.data td.mono{font-family:var(--font-mono);font-size:var(--fs-12)}.muted{color:var(--text-3)}table.data td.num{text-align:right;font-variant-numeric:tabular-nums}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);padding:0 4px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.tabs::-webkit-scrollbar{display:none}.tab{background:transparent;border:0;padding:10px 14px;font-size:var(--fs-13);font-weight:500;color:var(--text-3);cursor:pointer;position:relative;font-family:inherit;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;flex:0 0 auto}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent-strong)}.tab .count{margin-left:6px;font-size:10px;background:var(--s2);padding:1px 6px;border-radius:999px;color:var(--text-3);font-weight:600}.filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 0}.chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:8px;border:1px solid var(--line-2);background:var(--s1);font-size:var(--fs-12);color:var(--text-2);cursor:pointer;font-family:inherit}.chip:hover{background:var(--s2)}.chip.active{background:#7c5cff21;border-color:#7c5cff66;color:var(--text)}.chip .x{color:var(--text-3);font-size:11px;margin-left:2px}.chip .ic{color:var(--text-3)}.chip.active .ic{color:var(--accent)}.spark{display:block;width:100%;height:100%}.conf-ring{position:relative;width:30px;height:30px;flex-shrink:0}.conf-ring .num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:600;font-variant-numeric:tabular-nums}.graph-wrap{background:var(--s0);border:1px solid var(--line);border-radius:var(--radius);position:relative;overflow:hidden}.graph-canvas{position:relative;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.04) 1px,transparent 0);background-size:16px 16px}.phase-node{position:absolute;display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--s2);border:1.5px solid var(--line-2);border-radius:999px;cursor:pointer;font-size:var(--fs-13);font-weight:500;-webkit-user-select:none;user-select:none;transition:transform .1s,border-color .1s,box-shadow .1s;white-space:nowrap}.phase-node:hover{transform:translate(-50%,-50%) scale(1.02)}.phase-node.selected{border-color:var(--accent-strong);box-shadow:0 0 0 3px #7c5cff2e,0 8px 30px #0006;z-index:2}.phase-node.green{border-color:#4ade8073;background:linear-gradient(180deg,rgba(74,222,128,.1),var(--s2))}.phase-node.amber{border-color:#fbbf2480;background:linear-gradient(180deg,rgba(251,191,36,.12),var(--s2))}.phase-node.red{border-color:#f871718c;background:linear-gradient(180deg,rgba(248,113,113,.14),var(--s2))}.phase-node.dirty{border-style:dashed;border-color:var(--amber)}.phase-node.never{opacity:.45;border-style:dashed}.phase-node.halted{border-color:var(--amber);box-shadow:0 0 0 3px #fbbf2426}.phase-node .pill-name{display:flex;flex-direction:column;gap:1px;line-height:1.15}.phase-node .pill-meta{font-size:10px;color:var(--text-3);font-weight:400;font-family:var(--font-mono)}.phase-node .pill-ic{width:18px;height:18px;border-radius:50%;background:var(--s4);display:inline-flex;align-items:center;justify-content:center;color:var(--text-2);flex-shrink:0}.phase-node.green .pill-ic{background:#4ade802e;color:var(--green)}.phase-node.amber .pill-ic{background:#fbbf2433;color:var(--amber)}.phase-node.red .pill-ic{background:#f8717133;color:var(--red)}.acc-head{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;background:transparent;border:0;width:100%;font-family:inherit;font-size:var(--fs-13);font-weight:600;color:var(--text);text-align:left}.acc-head .chev{color:var(--text-3);transition:transform .15s}.acc.open .acc-head .chev{transform:rotate(90deg)}.acc-body{padding:4px 16px 14px;font-size:var(--fs-13);color:var(--text-2)}.acc:not(.open) .acc-body{display:none}.kv{display:grid;grid-template-columns:1fr auto;gap:8px;padding:5px 0;font-size:var(--fs-13)}.kv-key{color:var(--text-3)}.kv-val{color:var(--text);font-variant-numeric:tabular-nums}.kv-val.mono{font-family:var(--font-mono);font-size:var(--fs-12)}.input{width:100%;height:30px;padding:0 10px;background:var(--s0);border:1px solid var(--line-2);border-radius:7px;color:var(--text);font-size:var(--fs-13);font-family:inherit;outline:none}.input:focus{border-color:var(--accent-strong)}.input.sm{height:28px;padding:0 8px;font-size:var(--fs-12)}select.input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}textarea.input{min-height:70px;padding:8px 10px}.label{font-size:11px;color:var(--text-3);font-weight:500;letter-spacing:.02em;display:block;margin-bottom:4px}.toasts{position:fixed;bottom:16px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:1000}.toast{background:var(--s3);border:1px solid var(--line-2);border-radius:10px;padding:10px 14px 10px 12px;font-size:var(--fs-13);display:flex;align-items:center;gap:10px;min-width:240px;box-shadow:0 12px 32px #0006;animation:toast-in .2s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.toast.success{border-color:#4ade8066}.toast.error{border-color:#f8717166}.overlay-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:50;display:flex;align-items:center;justify-content:center;animation:fade-in .15s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--s1);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 24px 60px #0009;display:flex;flex-direction:column;overflow:hidden}.main::-webkit-scrollbar,.side-panel-body::-webkit-scrollbar,.nav-list::-webkit-scrollbar{width:10px;height:10px}.main::-webkit-scrollbar-thumb,.side-panel-body::-webkit-scrollbar-thumb,.nav-list::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:6px;border:2px solid transparent;background-clip:content-box}.main::-webkit-scrollbar-thumb:hover{background:#ffffff29;background-clip:content-box;border:2px solid transparent}.hstack{display:flex;align-items:center;gap:8px}.vstack{display:flex;flex-direction:column;gap:8px}.spacer{flex:1}.divider{height:1px;background:var(--line);margin:8px 0}.tag{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:5px;background:var(--s2);border:1px solid var(--line);font-size:10.5px;color:var(--text-2);font-family:var(--font-mono)}.rdh-compact{position:sticky;top:0;z-index:4;background:var(--bg);padding:10px 14px;margin:0 -2px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;flex-wrap:nowrap;overflow-x:auto}.rdh-compact .spacer{flex:1}.rdh-sep{width:1px;align-self:stretch;background:var(--line);margin:4px}.rdh-meta-inline{display:flex;align-items:center;gap:18px;flex-shrink:0}.rdh-mi{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap;flex-shrink:0}.rdh-mi .k{font-size:10.5px;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase;font-weight:500}.rdh-mi .v{font-size:var(--fs-12);color:var(--text);font-weight:500;max-width:180px;overflow:hidden;text-overflow:ellipsis}.rdh-mi .v.mono{font-family:var(--font-mono);font-size:11.5px}.seg-count{margin-left:6px;background:#7c5cff38;color:var(--accent);font-size:10px;font-weight:600;padding:1px 5px;border-radius:8px}.rdh-meta-cell{display:flex;flex-direction:column;gap:2px;padding-right:16px;border-right:1px solid var(--line)}.rdh-meta-cell:last-child{border-right:0}.rdh-meta-cell .k{font-size:10.5px;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase;font-weight:500}.rdh-meta-cell .v{font-size:var(--fs-13);color:var(--text);font-weight:500}.rdh-meta-cell .v.mono{font-family:var(--font-mono);font-size:var(--fs-12)}.stat{background:var(--s1);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:4px;position:relative;overflow:hidden}.stat .stat-label{font-size:11px;color:var(--text-3);font-weight:500;letter-spacing:.02em;display:flex;align-items:center;gap:6px}.stat .stat-value{font-size:var(--fs-28);font-weight:600;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}.stat .stat-delta{font-size:11px;color:var(--text-3);display:flex;align-items:center;gap:4px}.stat.urgent{border-color:#f8717159;background:linear-gradient(180deg,rgba(248,113,113,.06),var(--s1))}.stat.urgent .stat-value{color:var(--red)}.stat.warn{border-color:#fbbf2459}.stat .stat-spark{position:absolute;right:0;bottom:0;width:50%;height:40px;opacity:.85}input[type=range].slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:var(--s3);border-radius:2px;outline:none}input[type=range].slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:var(--accent);border-radius:50%;cursor:pointer;border:2px solid var(--s1)}[data-density=compact] .topbar{height:40px}[data-density=compact] .app{grid-template-rows:40px 1fr}[data-density=compact] .nav .brand{height:40px}[data-density=compact] .page{padding:14px 18px 30px}.log{background:#07080b;border:1px solid var(--line);border-radius:8px;padding:12px 14px;font-family:var(--font-mono);font-size:11.5px;line-height:1.6;color:var(--text-2);max-height:320px;overflow-y:auto;white-space:pre}.log .line{display:flex;gap:12px}.log .ts{color:var(--text-4)}.log .lvl-info{color:var(--blue)}.log .lvl-warn{color:var(--amber)}.log .lvl-err{color:var(--red)}.log .lvl-ok{color:var(--green)}.thumb{background:var(--s2);border:1px solid var(--line);border-radius:6px;aspect-ratio:4 / 3;position:relative;overflow:hidden}.rd-page{padding:0!important;max-width:none!important;display:flex;flex-direction:column;min-height:calc(100vh - 48px)}[data-density=compact] .rd-page{min-height:calc(100vh - 40px)}.rdh2-link{background:transparent;border:0;color:var(--text-3);font:inherit;font-size:11.5px;cursor:pointer}.rd-graph-strip{flex-shrink:0;height:240px;border-bottom:1px solid var(--line);background:var(--s0);overflow:hidden;position:relative}.rd-graph-strip .graph-viewport{width:100%;height:100%;position:relative;overflow:hidden;cursor:default}.rd-graph-strip .graph-viewport:active{cursor:grabbing}.rd-graph-strip .graph-canvas{border:0!important;border-radius:0!important;position:absolute;top:0;left:0;will-change:transform}.graph-controls{position:absolute;bottom:10px;right:12px;display:flex;align-items:center;gap:6px;z-index:4}.graph-zoom{font-size:10.5px;color:var(--text-3);background:#14171dcc;border:1px solid var(--line-2);border-radius:999px;padding:2px 8px;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.graph-reset{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;background:#14171dd9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line-2);border-radius:999px;color:var(--text-2);font-size:10.5px;font-family:inherit;cursor:pointer}.graph-reset:hover{background:var(--s3);color:var(--text);border-color:#fff3}.phase-node.compact{padding:6px 10px;gap:6px}.phase-node.compact .pill-meta{display:none}.rd-work{flex:1;min-height:0;display:flex;overflow:hidden}.rd-main{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--s0);position:relative}.rd-main-canvas{flex:1;min-height:0;position:relative;overflow:hidden}.rd-main-canvas>svg{width:100%;height:100%;display:block}.anno-toolbar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--s0);border-bottom:1px solid var(--line);flex-wrap:wrap;flex-shrink:0;z-index:2}.anno-toolbar-label{font-size:10.5px;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase;font-weight:500;margin-right:4px}.anno-tag{--tag-color: #b4a7ff;display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 4px 0 8px;border-radius:4px;background:var(--tag-color);color:#0a0c10;border:1px solid transparent;font-family:var(--font-mono);font-size:11px;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;transition:filter .1s,transform .1s}.anno-tag:hover{filter:brightness(1.08)}.anno-tag.active{filter:brightness(1.05)}.anno-tag-swatch{display:none}.anno-tag-name{letter-spacing:.01em}.anno-tag-key{display:inline-flex;align-items:center;justify-content:center;min-width:14px;height:16px;padding:0 4px;background:#0a0c106b;color:#ffffffeb;border-radius:3px;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums}.anno-tag-count{background:#0a0c1040;border-radius:999px;padding:0 5px;height:14px;display:inline-flex;align-items:center;font-size:9.5px;font-weight:600}.anno-hint{font-size:11px;color:var(--text-3);font-family:var(--font-mono);margin-left:auto}.anno-hint strong{font-weight:600}.anno-surface{flex:1;position:relative;min-height:0;overflow:hidden;background:#0a0c10}.anno-surface svg{-webkit-user-select:none;user-select:none}.anno-status{position:absolute;bottom:10px;right:12px;display:inline-flex;align-items:center;gap:8px;padding:4px 9px;background:#14171dd9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line-2);border-radius:999px;font-size:10.5px;color:var(--text-2)}.anno-status .mono{font-family:var(--font-mono);color:var(--text)}.anno-dirty-pill{color:var(--amber);font-weight:500}.bbox-rollup{display:flex;flex-direction:column;gap:2px}.bbox-dirty-banner{background:#fbbf2414;border:1px solid rgba(251,191,36,.3);border-radius:6px;padding:7px 10px;font-size:var(--fs-12);color:var(--text);margin-bottom:8px;display:flex;align-items:center;gap:4px}.bbox-reset{margin-left:auto;background:transparent;border:1px solid rgba(251,191,36,.4);color:var(--amber);border-radius:4px;padding:1px 8px;font-size:10.5px;cursor:pointer;font-family:inherit}.bbox-reset:hover{background:#fbbf241f}.bbox-group{border-bottom:1px solid var(--line)}.bbox-group:last-child{border-bottom:0}.bbox-group-head{width:100%;display:flex;align-items:center;gap:8px;padding:6px 4px;background:transparent;border:0;cursor:pointer;text-align:left;font-family:inherit;color:var(--text)}.bbox-group-head:hover{background:var(--s2)}.bbox-group-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.bbox-group-name{font-size:var(--fs-12);font-weight:500;flex:1}.bbox-group-count{font-size:10.5px;color:var(--text-3);background:var(--s2);padding:1px 6px;border-radius:999px}.bbox-list{padding:2px 0 8px 18px;display:flex;flex-direction:column;gap:2px}.bbox-empty{font-size:10.5px;color:var(--text-4);font-style:italic;padding:2px 4px}.bbox-row{display:grid;grid-template-columns:36px 1fr auto auto;align-items:center;gap:8px;padding:3px 6px 3px 4px;border-radius:4px;font-size:10.5px}.bbox-row.manual{background:#7c5cff0f}.bbox-row.edited{background:#fbbf240d}.bbox-row-id{color:var(--text-3)}.bbox-row-coords{color:var(--text-2);font-size:10.5px}.bbox-row-conf{color:var(--text-3);font-size:10.5px}.bbox-row-flag{font-size:11px;line-height:1}.bbox-row-flag.manual{color:var(--accent)}.bbox-row-flag.edited{color:var(--amber)}.bbox-row-x{background:transparent;border:0;color:var(--text-4);cursor:pointer;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:3px;padding:0}.bbox-row-x:hover{background:#f8717126;color:var(--red)}.bbox-totals{display:flex;justify-content:space-between;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);font-size:10.5px;color:var(--text-3)}.bbox-totals .mono{font-family:var(--font-mono);color:var(--text);margin-right:4px}.skeleton{background:var(--s2);border-radius:var(--r-md, 8px);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--s3);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle}.spinner.lg{width:24px;height:24px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.login-surface{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:40px 16px;background:var(--bg)}.login-surface .login-brand{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--text-2)}.login-surface .login-brand .brand-mark{width:32px;height:32px}.login-surface .login-brand h1{font-size:var(--fs-18);margin:0;color:var(--text)}.login-surface .login-brand p{margin:0;font-size:var(--fs-13);color:var(--text-3)}.login-card{width:400px;max-width:100%;padding:24px}.login-card h2{margin:0 0 20px;font-size:var(--fs-16)}.login-card .field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.login-card .submit-row{margin-top:8px}.login-card .help-link{display:block;margin-top:14px;text-align:center;font-size:var(--fs-13);color:var(--text-3);background:none;border:0;cursor:pointer}.login-card .help-link:hover{color:var(--text-2)}.login-card .input.invalid{border-color:var(--red)}.login-version{font-size:var(--fs-12);color:var(--text-4)}.user-popover{position:absolute;top:100%;right:0;margin-top:8px;width:240px;background:var(--s1);border:1px solid var(--line-2);border-radius:10px;box-shadow:0 16px 40px #00000080;padding:12px;z-index:60}.user-popover .pop-name{font-weight:500;color:var(--text);font-size:var(--fs-13)}.user-popover .pop-email{font-size:var(--fs-12);color:var(--text-3);margin-bottom:10px;word-break:break-all}.avatar-wrap{position:relative}.modal-head{padding:16px 20px;border-bottom:1px solid var(--line);font-size:var(--fs-15);font-weight:500}.modal-body{padding:16px 20px;font-size:var(--fs-13);color:var(--text-2)}.modal-foot{padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.overview-grid-2{display:grid;grid-template-columns:2fr 1fr;gap:16px}@media (max-width: 820px){.overview-grid-2{grid-template-columns:1fr}}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}@media (max-width: 1100px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 720px){.project-grid{grid-template-columns:1fr}}.project-card{display:block;text-decoration:none;color:inherit;transition:border-color .12s ease,transform .12s ease}.project-card:hover{border-color:#7c5cff66}.project-card:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.editor-shell{display:grid;grid-template-columns:1fr 320px;grid-template-rows:auto 1fr 44px;height:calc(100vh - 48px);background:var(--bg);overflow:hidden}.editor-shell>.editor-palette{grid-row:1;grid-column:1 / -1}.editor-shell>.canvas-surface{grid-row:2;grid-column:1}.editor-shell>.box-list{grid-row:2 / span 2;grid-column:2}.editor-shell>.editor-footer{grid-row:3;grid-column:1}.editor-shell[data-queue="1"]{grid-template-rows:auto auto 1fr 44px}.editor-shell[data-queue="1"]>.queue-banner{grid-column:1 / -1;grid-row:1}.editor-shell[data-queue="1"]>.editor-palette{grid-row:2;grid-column:1 / -1}.editor-shell[data-queue="1"]>.canvas-surface{grid-row:3;grid-column:1}.editor-shell[data-queue="1"]>.box-list{grid-row:3 / span 2;grid-column:2}.editor-shell[data-queue="1"]>.editor-footer{grid-row:4;grid-column:1}.editor-shell.loading{display:flex;align-items:center;justify-content:center;color:var(--text-3)}.run-detail-shell{display:flex;flex-direction:column;height:calc(100vh - 48px);width:100%;background:var(--bg);overflow:hidden}.rdh2{flex-shrink:0;background:var(--s0);border-bottom:1px solid var(--line)}.rdh2-row{display:flex;align-items:center;gap:14px;padding:8px 16px;min-width:0;overflow:hidden}.rdh2-row+.rdh2-row{border-top:1px solid var(--line);padding-top:6px;padding-bottom:6px;background:var(--s1)}.rdh2-row .spacer{flex:1}.rdh2-id{font-size:var(--fs-16);font-weight:600;font-family:var(--font-mono);letter-spacing:-.01em;white-space:nowrap;margin-right:4px}.rdh2-id-btn{background:none;border:1px solid transparent;color:inherit;padding:2px 6px;margin:-2px -2px -2px 0;border-radius:4px;cursor:text;text-align:left}.rdh2-id-btn:hover{background:var(--s1);border-color:var(--line)}.rdh2-id-btn:focus-visible{outline:2px solid var(--accent-strong, #7c5cff);outline-offset:-2px}.rdh2-id-input{background:var(--s0);color:inherit;border:1px solid var(--accent-strong, #7c5cff);padding:2px 6px;margin:-2px -2px -2px 0;border-radius:4px;outline:none;min-width:16ch}.rdh2-mi{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap;flex-shrink:0;min-width:0}.rdh2-mi .k{font-size:10.5px;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase;font-weight:500}.rdh2-mi .v{font-size:var(--fs-12);color:var(--text);font-weight:500}.rdh2-mi .v.mono{font-family:var(--font-mono);font-size:11.5px}.rdh2-mi-file{flex-shrink:1;min-width:0}.rdh2-mi-file .v{overflow:hidden;text-overflow:ellipsis;max-width:320px}.rdh2-link{background:transparent;border:0;color:var(--text-3);font:inherit;font-size:11.5px;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.rdh2-link:hover{color:var(--accent)}.rdh2-finalize{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;min-width:0}.fin-label{font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;font-weight:500;color:var(--blue);white-space:nowrap}.fin-detail{color:var(--text-3);font-size:11px}.fin-detail.mono{font-family:var(--font-mono)}.fin-bar{position:relative;width:120px;height:4px;border-radius:999px;background:var(--blue-bg);overflow:hidden;flex-shrink:0}.fin-bar-fill{position:absolute;inset:0 auto 0 0;height:100%;min-width:3px;border-radius:999px;background:var(--blue);transition:width .4s ease}.rdh2-compact-meta{display:none}@media (max-width: 720px){.rdh2-compact-meta{display:flex;align-items:baseline;gap:6px;padding:0 10px 6px;font-size:10.5px;line-height:1.2;color:var(--text-3)}.rdh2-compact-meta .cm-k{letter-spacing:.04em;text-transform:uppercase;font-weight:500}.rdh2-compact-meta .cm-v{color:var(--text-2);font-weight:500}.rdh2-compact-meta .cm-v.mono{font-family:var(--font-mono)}.rdh2-compact-meta .cm-sep{opacity:.5}.rdh2-compact-meta .cm-finalize{display:inline-flex;align-items:center;gap:6px;margin-left:auto}.rdh2-compact-meta .cm-finalize .fin-label{font-size:9.5px}.rdh2-compact-meta .cm-finalize .fin-bar{width:64px;height:3px}}.run-detail-shell>.card{flex:0 0 auto}.pg-resize-handle{position:absolute;left:0;right:0;bottom:0;height:6px;cursor:ns-resize;background:transparent;z-index:5;touch-action:none}.pg-touch-toolbar{position:absolute;top:10px;right:10px;z-index:10;display:none;gap:8px;align-items:center;pointer-events:none}.pg-touch-toolbar>*{pointer-events:auto}.pg-touch-seg{display:inline-flex;background:var(--s1);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 2px 8px #00000040}.pg-touch-seg button{height:40px;min-width:48px;padding:0 10px;border:0;background:transparent;color:var(--text-2);font:inherit;font-size:12px;font-weight:600;cursor:pointer}.pg-touch-seg button[aria-pressed=true]{background:var(--accent-strong);color:#fff}.pg-touch-seg button+button{border-left:1px solid var(--line)}.pg-touch-fab{height:48px;width:48px;border-radius:999px;background:var(--accent-strong);color:#fff;border:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000059}.pg-touch-fab:active{filter:brightness(1.1)}@media (pointer: coarse){.pg-touch-toolbar{display:inline-flex}}.pg-resize-handle:hover,.pg-resize-handle:active{background:var(--accent-strong);opacity:.45}@media (pointer: coarse){.pg-resize-handle{height:18px;display:flex;align-items:center;justify-content:center;background:linear-gradient(to top,rgba(255,255,255,.04),transparent)}.pg-resize-handle:before{content:"";width:44px;height:4px;border-radius:999px;background:var(--line-2)}.pg-resize-handle:active:before{background:var(--accent)}}.run-stage-shell{flex:1 1 0;min-height:0;display:grid;grid-template-columns:1fr 380px;grid-template-rows:auto auto 1fr;border-top:1px solid var(--line);overflow:hidden}.run-stage-shell>.rd-main-bar{grid-row:1;grid-column:1}.run-stage-shell>.editor-palette{grid-row:2;grid-column:1}.run-stage-shell>.canvas-surface{grid-row:3;grid-column:1}.run-stage-shell>.side-panel{grid-row:1 / span 3;grid-column:2;display:flex;flex-direction:column;background:var(--s1);border-left:1px solid var(--line);overflow:hidden}.run-detail-shell:not([data-props-open]) .run-stage-shell{grid-template-columns:1fr}.run-detail-shell:not([data-props-open]) .run-stage-shell>.rd-main-bar,.run-detail-shell:not([data-props-open]) .run-stage-shell>.editor-palette,.run-detail-shell:not([data-props-open]) .run-stage-shell>.canvas-surface{grid-column:1 / -1}.run-debug{display:grid;grid-template-columns:212px 1fr;height:100%;min-height:0}.run-debug[data-collapsed]{grid-template-columns:28px 1fr}.run-debug-list{min-width:0;display:flex;flex-direction:column;background:var(--s1);border-right:1px solid var(--line);overflow:hidden}.run-debug[data-collapsed] .run-debug-list{display:none}.run-debug-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line-2);font-size:11px;text-transform:uppercase;color:var(--text-3);letter-spacing:.5px}.run-debug-list-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-debug-list-scroll{flex:1 1 0;overflow:auto;padding:6px 0;display:flex;flex-direction:column;gap:0}.run-debug-accordion{border-bottom:1px solid var(--line-2)}.run-debug-accordion-head{width:100%;display:flex;align-items:center;gap:6px;padding:8px 10px;background:transparent;border:none;cursor:pointer;color:var(--text-2);font-size:11px;text-transform:uppercase;letter-spacing:.5px;text-align:left}.run-debug-accordion-head:hover{background:var(--s2);color:var(--text)}.run-debug-accordion-title{flex:1 1 auto}.run-debug-accordion-count{font-family:var(--font-mono);font-size:10px;color:var(--text-3);background:var(--s2);padding:1px 6px;border-radius:8px}.run-debug-accordion-body{padding:6px 8px 10px}.run-debug-list-empty{padding:8px 4px;font-size:11px;color:var(--text-3);text-align:center;font-style:italic}.run-debug-cards{display:flex;flex-direction:column;gap:8px}.run-debug-rail{display:flex;align-items:flex-start;justify-content:center;padding-top:10px;background:var(--s1);border:none;border-right:1px solid var(--line);cursor:pointer;color:var(--text-3)}.run-debug-rail:hover{color:var(--text);background:var(--s2)}.run-debug-card{display:flex;flex-direction:column;gap:4px;padding:0;background:var(--bg);border:1px solid var(--line);border-radius:6px;cursor:pointer;text-align:left;overflow:hidden;transition:border-color .12s,transform .12s}.run-debug-card:hover{border-color:var(--line-2)}.run-debug-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.run-debug-card-thumb{position:relative;width:100%;aspect-ratio:3 / 4;display:grid;place-items:center;background:var(--s2);overflow:hidden}.run-debug-card-thumb img{width:100%;height:100%;object-fit:contain;background:#0a0a0c}.run-debug-card-thumb-placeholder{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text-3)}.run-debug-card-thumb-ext{font-family:var(--font-mono);font-size:10px;letter-spacing:.5px}.run-debug-default-badge{position:absolute;top:4px;right:4px;background:#000000b3;color:#ffd54a;font-size:11px;padding:1px 5px;border-radius:3px;pointer-events:none}.run-debug-card-caption{padding:6px 8px 8px;font-size:11px;font-family:var(--font-mono);color:var(--text-2);word-break:break-all;line-height:1.35}.run-debug-viewer{min-width:0;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.run-debug-banner{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding:8px 12px;font-size:12px;color:var(--text-2);background:var(--bg-2);border-bottom:1px solid var(--border)}.run-debug-banner .ic{flex:0 0 auto;color:var(--text-3)}.run-debug-banner.error{color:var(--danger, #c0392b);background:color-mix(in srgb,var(--danger, #c0392b) 10%,var(--bg-2))}.run-debug-banner.error .ic{color:var(--danger, #c0392b)}.run-debug-viewer-empty,.run-debug-empty{flex:1 1 0;display:grid;place-items:center;color:var(--text-3);font-size:13px;padding:24px;text-align:center}.run-debug-empty-hint{font-size:12px;margin-top:6px;color:var(--text-3)}.run-debug-viewer-image-wrap{flex:1 1 0;display:flex;flex-direction:column;min-height:0}.run-debug-viewer-image{flex:1 1 0;min-height:0;width:100%;background:#0a0a0c}.panzoom-image{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}.panzoom-image-stage{position:absolute;top:0;left:0;will-change:transform}.panzoom-image-stage>img{pointer-events:none;-webkit-user-drag:none}.run-debug-viewer-text-wrap,.run-debug-viewer-3d-wrap{flex:1 1 0;display:flex;flex-direction:column;min-height:0}.run-debug-viewer-3d-stage{position:relative;flex:1 1 0;min-height:0}.run-debug-viewer-3d-canvas{position:absolute;top:0;right:0;bottom:0;left:0;background:#f2f3f5}.run-debug-viewer-3d-legend{position:absolute;top:12px;right:12px;padding:10px 14px;background:#ffffffeb;border:1px solid var(--line-2);border-radius:6px;font-size:12px;line-height:1.5;box-shadow:0 1px 4px #00000014;pointer-events:none}.run-debug-viewer-3d-legend-title{font-weight:600;margin-bottom:4px;color:var(--text)}.run-debug-viewer-3d-legend-row{display:flex;align-items:center;gap:8px}.run-debug-viewer-3d-legend-swatch{display:inline-block;width:14px;height:14px;border:1px solid rgba(0,0,0,.2);border-radius:2px;flex:0 0 auto}.run-debug-viewer-3d-layers{position:absolute;top:12px;left:12px;padding:10px 14px;background:#ffffffeb;border:1px solid var(--line-2);border-radius:6px;font-size:12px;line-height:1.5;box-shadow:0 1px 4px #00000014}.run-debug-viewer-3d-layer-row{display:flex;align-items:center;gap:7px;cursor:pointer;-webkit-user-select:none;user-select:none}.run-debug-viewer-3d-layer-row input{margin:0;cursor:pointer}.run-debug-viewer-text{flex:1 1 0;min-height:0;margin:0;padding:12px 16px;font-family:var(--font-mono);font-size:12px;line-height:1.5;color:var(--text);background:var(--bg);overflow:auto;white-space:pre;-webkit-user-select:text;user-select:text}.run-debug-viewer-text-empty,.run-debug-viewer-text-error{padding:16px;font-size:12px;color:var(--text-3)}.run-debug-viewer-text-error{color:var(--red)}.run-debug-viewer-caption{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line-2);font-size:12px;background:var(--s1)}.run-debug-overlay{flex:1 1 0;min-height:0;display:grid;grid-template-columns:1fr 320px;grid-template-rows:auto 1fr;background:var(--bg)}.run-debug-overlay>.editor-palette{grid-row:1;grid-column:1 / -1}.run-debug-overlay>.canvas-surface{grid-row:2;grid-column:1;min-height:0;min-width:0}.run-debug-overlay>.box-list{grid-row:2;grid-column:2;min-height:0;border-left:1px solid var(--line-2)}.run-logs{font-family:var(--font-mono);font-size:12px;line-height:1.55;background:var(--bg);height:100%;min-height:0;display:flex;flex-direction:column;-webkit-user-select:text;user-select:text}.run-logs-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 16px;border-bottom:1px solid var(--border);background:var(--bg-2);flex:0 0 auto}.run-logs-meta{color:var(--text-3)}.run-logs-actions{display:flex;gap:8px}.run-logs-body{flex:1 1 0;min-height:0;padding:12px 16px;overflow:auto;-webkit-user-select:text;user-select:text}.run-log-row{display:grid;grid-template-columns:96px 64px 1fr;gap:12px;align-items:baseline;padding:2px 0}.run-log-time{color:var(--text-3);white-space:nowrap}.run-log-level{font-weight:600;letter-spacing:.03em;text-align:left}.run-log-level-info{color:var(--blue)}.run-log-level-ok{color:var(--green)}.run-log-level-warn{color:var(--amber)}.run-log-level-err{color:var(--red)}.run-log-level-debug{color:var(--text-3)}.run-log-msg{color:var(--text);word-break:break-word;white-space:pre-wrap}.run-log-logger{color:var(--text-3);margin-right:6px}@media (max-width: 720px){.run-logs{font-size:13px}.run-log-row{display:block;padding:6px 0;border-bottom:1px solid var(--line)}.run-log-row>.run-log-time,.run-log-row>.run-log-level{display:inline-block;margin-right:8px;font-size:11px}.run-log-msg{display:block;margin-top:2px}}.run-3d-canvas{height:100%;min-height:320px;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,rgba(124,92,255,.07),transparent 60%),var(--bg)}.run-3d-placeholder{text-align:center;color:var(--text-3);display:flex;flex-direction:column;align-items:center;gap:8px}.run-3d-title{font-size:14px;font-weight:500;color:var(--text-2)}.run-3d-sub{font-size:12px;max-width:320px}.def-detail-shell{display:flex;flex-direction:column;height:calc(100vh - 48px);width:100%;background:var(--bg);overflow:hidden}.def-stage-shell{flex:1 1 0;min-height:0;display:grid;grid-template-columns:1fr 380px;border-top:1px solid var(--line);overflow:hidden}.def-stage-shell>.def-graph-slot{grid-column:1;min-width:0;min-height:0;overflow:hidden}.def-stage-shell>.side-panel{grid-column:2;display:flex;flex-direction:column;background:var(--s1);border-left:1px solid var(--line);overflow:hidden}.def-detail-shell:not([data-props-open]) .def-stage-shell{grid-template-columns:1fr}.def-detail-shell:not([data-props-open]) .def-stage-shell>.def-graph-slot{grid-column:1 / -1}.rd-main-bar{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--s1)}.rd-main-bar .spacer{flex:1}.rd-main-meta{font-size:11.5px;color:var(--text-3);letter-spacing:.02em}.seg{display:inline-flex;background:var(--s0);border:1px solid var(--line);border-radius:8px;padding:2px;gap:2px}.seg-btn{background:transparent;border:0;color:var(--text-2);padding:5px 12px;font:inherit;font-size:var(--fs-12);font-weight:500;border-radius:6px;cursor:pointer;letter-spacing:.01em}.seg-btn:hover{color:var(--text)}.seg-btn.active{background:var(--s2);color:var(--text);box-shadow:inset 0 0 0 1px var(--line-2)}.side-panel{position:static;display:flex;flex-direction:column;height:100%;min-height:0}.side-panel-empty{padding:24px 18px;color:var(--text-3);font-size:var(--fs-12);display:flex;flex-direction:column;gap:6px}.side-panel-empty-hint{color:var(--text-3);font-size:11px;opacity:.85}.side-panel-head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.side-panel-title{display:flex;align-items:flex-start;gap:10px;justify-content:space-between}.side-panel-title-text{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.side-panel-title-meta{display:flex;flex-direction:column;gap:2px;min-width:0}.side-panel-name{font-size:var(--fs-14);font-weight:600;color:var(--text);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-panel-sub{font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-panel-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.side-panel-time{font-size:11px;color:var(--text-3)}.side-panel-body{flex:1;overflow-y:auto;padding:8px 0}.conf-ring{position:relative;flex-shrink:0}.conf-ring svg{transform:rotate(-90deg)}.conf-ring .num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:600;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.acc{border-bottom:1px solid var(--line)}.acc:last-child{border-bottom:0}.acc-head{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;justify-content:space-between;padding:11px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;background:transparent;border:0;width:100%;font-family:inherit;font-size:var(--fs-13);font-weight:600;color:var(--text);text-align:left}.acc-head:hover{background:var(--s2)}.acc-head-left{display:inline-flex;align-items:center;gap:8px}.acc-head-left .chev{color:var(--text-3);transition:transform .15s;transform-origin:center;transform-box:fill-box}.acc.open .acc-head-left .chev{transform:rotate(90deg)}.acc-body{padding:4px 16px 14px;font-size:var(--fs-13);color:var(--text-2);display:flex;flex-direction:column;gap:8px}.acc-empty{color:var(--text-3);font-size:11.5px}.acc-list{display:flex;flex-direction:column;gap:6px}.acc-log-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.acc-log-name{font-size:var(--fs-12);color:var(--text-3)}.artifact-row{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;padding:6px 8px;background:var(--s2);border:1px solid var(--line);border-radius:6px;font-size:var(--fs-12)}.artifact-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--s3, rgba(255, 255, 255, .06));border-radius:4px;font-size:12px;color:var(--text-2)}.artifact-name{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.artifact-size{font-size:10.5px;color:var(--text-3)}.artifact-download{width:24px;height:24px}.override-btn{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:var(--fs-12)}.override-icon{opacity:.8}.bbox-list{display:flex;flex-direction:column}.bbox-row{display:grid;grid-template-columns:18px 12px 1fr auto;align-items:center;gap:8px;padding:5px 4px;font-size:var(--fs-12);color:var(--text);border-radius:4px}.bbox-row:hover{background:var(--s2)}.bbox-chev{color:var(--text-3)}.bbox-swatch{width:10px;height:10px;border-radius:2px}.bbox-name{color:var(--text)}.bbox-count{color:var(--text-3)}.bbox-totals{display:flex;justify-content:space-between;padding-top:8px;border-top:1px solid var(--line);margin-top:6px;font-size:11px;color:var(--text-3)}.bbox-totals strong{color:var(--text);margin-right:4px}.setting-row{display:flex;flex-direction:column;gap:4px;padding:2px 0}.setting-head{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--fs-12)}.setting-name{color:var(--text-2);font-weight:500}.setting-default{font-size:10.5px;color:var(--text-3);font-family:var(--font-mono)}.setting-default:not(.is-default){color:var(--accent)}.setting-controls{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.setting-controls .slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:var(--s2);border-radius:2px;outline:none}.setting-controls .slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;background:var(--accent, #7c5cff);border-radius:50%;cursor:pointer}.setting-controls .slider::-moz-range-thumb{width:12px;height:12px;background:var(--accent, #7c5cff);border:0;border-radius:50%;cursor:pointer}.setting-value{font-size:var(--fs-12);color:var(--text);min-width:44px;text-align:right;font-variant-numeric:tabular-nums}.editor-palette{background:var(--s0);border-bottom:1px solid var(--line);display:flex;flex-direction:row;align-items:center;padding:4px 8px;gap:6px;overflow-x:auto;overflow-y:hidden}.palette-entry{position:relative;height:26px;flex:0 0 auto;min-width:0;border:1px solid transparent;border-radius:4px;cursor:pointer;font-family:inherit;color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:12px;padding:0 8px;text-shadow:0 1px 2px rgba(0,0,0,.4);transition:outline 80ms ease}.palette-entry[disabled]{opacity:.45;cursor:not-allowed}.palette-entry.active{outline:1.5px solid var(--accent-strong);outline-offset:1px}.palette-entry.active:before{content:"";position:absolute;left:-2px;top:-2px;right:-2px;bottom:-2px;border-radius:5px;pointer-events:none;box-shadow:0 0 0 1px var(--accent-strong) inset}.palette-entry .palette-name{font-weight:700;font-size:12px;letter-spacing:.01em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:200px}.palette-entry .palette-key{font-size:10.5px;min-width:14px;height:15px;padding:0 3px;background:#0000008c;border:0;color:#fff;border-radius:3px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;text-shadow:none;flex-shrink:0}.palette-marquee{background:var(--s1);color:var(--text-2);text-shadow:none;border-style:dashed}.canvas-surface{position:relative;overflow:hidden;background:linear-gradient(45deg,var(--s1) 25%,transparent 25%) 0 0,linear-gradient(-45deg,var(--s1) 25%,transparent 25%) 0 0,linear-gradient(45deg,transparent 75%,var(--s1) 75%) 8px 8px,linear-gradient(-45deg,transparent 75%,var(--s1) 75%) 8px 8px;background-size:16px 16px;background-color:var(--bg);-webkit-user-select:none;user-select:none}.canvas-stage{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.canvas-overlay{display:block}.canvas-surface-wrap{position:relative;grid-row:2;grid-column:1;overflow:hidden}.editor-shell[data-queue="1"]>.canvas-surface-wrap{grid-row:3}.canvas-surface-wrap>.canvas-surface{position:absolute;top:0;right:0;bottom:0;left:0}.canvas-loading,.mask-loading-overlay{position:absolute;top:12px;right:12px;padding:6px 10px;border-radius:6px;background:var(--s0);border:1px solid var(--line);color:var(--text-2);font-size:var(--fs-12);display:flex;align-items:center}.mask-toolbar{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;gap:4px;padding:6px;background:var(--s0);border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 16px #00000040;z-index:2;color:var(--text-2)}.mask-tool{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--text-2);cursor:pointer;padding:0}.mask-tool:hover:not(:disabled){background:var(--s1)}.mask-tool.active{background:var(--s2);border-color:var(--line-2);color:var(--text-1)}.mask-tool:disabled{opacity:.4;cursor:not-allowed}.mask-tool-divider{height:1px;margin:4px 6px;background:var(--line-1);align-self:stretch}.mask-tool-linkbtn{background:none;border:none;padding:0;color:var(--accent-1);cursor:pointer;font:inherit}.mask-tool-linkbtn:hover:not(:disabled){text-decoration:underline}.mask-tool-linkbtn:disabled{opacity:.4;cursor:not-allowed}.mask-top-toolbar{position:absolute;top:12px;left:64px;display:flex;flex-direction:row;align-items:center;gap:14px;padding:6px 10px;background:var(--s0);border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 16px #00000040;z-index:2;color:var(--text-2);min-height:30px;max-width:calc(100% - 88px);flex-wrap:wrap}.mask-tool-field{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:var(--fs-12)}.mask-tool-field-label{color:var(--text-3);font-size:var(--fs-12);-webkit-user-select:none;user-select:none}.mask-tool-field input[type=range]{width:130px}.mask-tool-field-num{width:48px;background:var(--s1);color:var(--text-1);border:1px solid var(--line);border-radius:4px;padding:2px 4px;font-size:var(--fs-12);text-align:right}.mask-tool-field-select{background:var(--s1);color:var(--text-1);border:1px solid var(--line);border-radius:4px;padding:2px 6px;font-size:var(--fs-12)}.mask-tool-check{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-12);color:var(--text-2);-webkit-user-select:none;user-select:none;cursor:pointer}.mask-tool-hint{color:var(--text-3);font-size:var(--fs-12)}.mask-layer{position:absolute;top:0;left:0;display:block}.mask-layer-bg{z-index:0}.mask-layer-mask{z-index:1}.mask-layer-preview{z-index:2;pointer-events:none}.mask-layer-selection{z-index:3;pointer-events:none}.segmented{border:1px solid var(--line);border-radius:6px;background:var(--s1);overflow:hidden}.segmented-btn{flex:1;padding:6px 8px;background:transparent;color:var(--text-2);border:0;border-right:1px solid var(--line);font-size:var(--fs-12);cursor:pointer;font-family:inherit}.segmented-btn:last-child{border-right:0}.segmented-btn:hover:not(:disabled){background:var(--s2)}.segmented-btn.active{background:var(--accent, #7c5cff);color:var(--on-accent, #fff)}.segmented-btn:disabled{opacity:.5;cursor:not-allowed}.mask-brush-cursor{position:absolute;top:0;left:0;border:1.5px solid rgba(255,255,255,.9);border-radius:50%;box-shadow:0 0 0 1px #0009;pointer-events:none;mix-blend-mode:difference;z-index:3;will-change:transform;display:none}.mask-brush-cursor.erase{border-style:dashed}.box-list{grid-row:1 / span 2;display:flex;flex-direction:column;background:var(--s0);border-left:1px solid var(--line);overflow:hidden}.lock-indicator{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);font-size:var(--fs-12);color:var(--text-2)}.lock-indicator .dot{width:8px;height:8px;border-radius:50%;background:var(--green)}.lock-indicator.warn .dot{background:var(--amber)}.lock-indicator.err .dot{background:var(--red)}.save-pill{display:flex;align-items:center;gap:6px;padding:6px 14px;font-size:var(--fs-12);color:var(--text-3);border-bottom:1px solid var(--line)}.save-pill.dirty{color:var(--amber)}.save-pill.saving{color:var(--text-2)}.save-pill .dot{width:7px;height:7px;border-radius:50%;background:var(--amber)}.box-list-scroll{flex:1;overflow-y:auto;padding:6px 0}.box-group{border-bottom:1px solid var(--line);padding:6px 0}.box-group-head{display:flex;align-items:center;padding:4px 14px;font-size:var(--fs-12);color:var(--text-2);font-weight:500}.box-row{display:flex;align-items:center;gap:6px;padding:4px 14px;cursor:pointer;font-size:11px;color:var(--text-3)}.box-row:hover{background:var(--s1);color:var(--text-2)}.box-row.selected{background:#7c5cff21;color:var(--text)}.box-row.hidden{opacity:.45;cursor:default}.box-row.hidden .box-coords{text-decoration:line-through}.box-row .box-coords{font-family:var(--font-mono);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.numeric-editor{border-top:1px solid var(--line);padding:12px 14px;background:var(--s1)}.numeric-editor .ne-row{margin-bottom:8px}.numeric-editor .ne-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.numeric-editor .ne-field{display:flex;flex-direction:column;gap:3px;font-size:10.5px;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}.numeric-editor .ne-field .input{height:26px;padding:0 6px;font-size:12px}.editor-footer{grid-column:2 / span 1;grid-row:2 / span 1;display:flex;align-items:center;gap:8px;padding:0 14px;background:var(--s0);border-top:1px solid var(--line);font-size:var(--fs-12)}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:200px;padding:32px;background:var(--s0);border:2px dashed var(--line-2);border-radius:12px;cursor:pointer;color:var(--text-2);font-family:inherit;transition:border-color .12s ease,background .12s ease}.dropzone:hover{border-color:var(--accent-strong);background:var(--s1)}.dropzone.over{border-color:var(--accent-strong);background:#7c5cff14}.upload-bar{width:140px;height:6px;background:var(--s2);border-radius:3px;overflow:hidden;flex-shrink:0}.upload-bar-fill{height:100%;background:var(--accent-strong);transition:width .1s linear}.upload-bar-fill[data-state=done]{background:var(--green)}.upload-bar-fill[data-state=error],.upload-bar-fill[data-state=duplicate]{background:var(--red)}.image-table{width:100%;border-collapse:collapse;font-size:var(--fs-13)}.image-table th{text-align:left;font-weight:500;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:8px 12px;border-bottom:1px solid var(--line);background:var(--s0)}.image-table td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.image-table tr:last-child td{border-bottom:0}.image-row:hover{background:var(--s1)}.filename-link{background:none;border:0;color:var(--text);font-family:var(--font-mono);font-size:var(--fs-13);cursor:pointer;text-align:left;padding:0;max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.filename-link:hover{color:var(--accent);text-decoration:underline}.color-swatch-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.color-swatch{width:28px;height:28px;border-radius:6px;border:1px solid var(--line-2);cursor:pointer;padding:0;position:relative}.color-swatch:hover{transform:scale(1.05)}.color-swatch.selected{outline:2px solid var(--accent-strong);outline-offset:2px}.member-table{width:100%;border-collapse:collapse;font-size:var(--fs-13)}.member-table th{text-align:left;font-weight:500;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:10px 14px;border-bottom:1px solid var(--line);background:var(--s0)}.member-table td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.member-table tr:last-child td{border-bottom:0}.canvas-hud{position:absolute;top:8px;right:8px;display:flex;gap:12px;padding:6px 10px;background:#0f1116c7;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--line);border-radius:6px;font-size:var(--fs-12);color:var(--text);pointer-events:auto}.canvas-hud input{margin:0 4px 0 0;vertical-align:-1px}.state-block{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:48px 24px;gap:12px}.state-block .state-icon{color:var(--text-3)}.state-block.error .state-icon{color:var(--red)}.state-block .state-title{font-size:var(--fs-16);font-weight:500;color:var(--text)}.state-block .state-sub{font-size:var(--fs-13);color:var(--text-3);max-width:420px}.popover-anchor{position:relative;display:inline-block}.popover{position:absolute;top:calc(100% + 4px);z-index:30;min-width:220px;max-height:360px;overflow:auto;background:var(--s1);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:0 8px 28px #00000073;padding:8px;font-size:var(--fs-13)}.popover[data-align=left]{left:0}.popover[data-align=right]{right:0}.popover[data-placement=top]{top:auto;bottom:calc(100% + 4px)}.popover .popover-section{padding:6px 4px}.popover .popover-section+.popover-section{border-top:1px solid var(--line)}.popover .popover-head{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:2px 4px 6px}.popover .popover-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none}.popover .popover-row:hover{background:var(--s2)}.popover .popover-row input{margin:0}.popover .popover-actions{display:flex;justify-content:flex-end;gap:6px;padding-top:6px}.chip.has-caret{padding-right:8px}.chip .caret{width:10px;height:10px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);margin-left:4px;display:inline-block;position:relative;top:-2px}.chip .chip-count{background:var(--accent-strong);color:#fff;border-radius:999px;padding:1px 6px;font-size:10px;margin-left:2px}.image-row.selected{background:#7c5cff1a}.image-row.selected:hover{background:#7c5cff24}.image-table td.col-check,.image-table th.col-check{width:36px;padding-right:0}.queue-banner{display:flex;align-items:center;gap:12px;padding:8px 14px;background:#7c5cff1a;border-bottom:1px solid rgba(124,92,255,.25);font-size:var(--fs-13);color:var(--text)}.queue-banner-progress{flex:1;height:4px;background:var(--s2);border-radius:2px;overflow:hidden;min-width:80px}.queue-banner-progress-fill{height:100%;background:var(--accent-strong);transition:width .2s ease}.col-preview{width:132px;padding:4px 8px}.image-thumb{display:block;width:120px;height:72px;object-fit:contain;background:var(--s2);border-radius:4px;border:1px solid var(--line)}.image-thumb-placeholder{background:var(--s2)}.tag-cell{background:none;border:1px dashed transparent;cursor:pointer;display:inline-flex;flex-wrap:wrap;gap:4px;padding:2px 4px;border-radius:4px;text-align:left;min-width:60px;max-width:240px}.tag-cell:hover:not(:disabled){border-color:var(--line-2);background:var(--s1)}.tag-cell:disabled{cursor:default;opacity:.85}.bulk-action-bar{position:sticky;bottom:0;display:flex;align-items:center;gap:12px;padding:10px 16px;margin-top:12px;background:var(--s3);border:1px solid var(--line-2);border-radius:var(--radius);z-index:5;animation:bulk-slide-up .2s ease}.bulk-action-bar .spacer{flex:1}@keyframes bulk-slide-up{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--thumb-size, 200px),1fr));gap:12px}.image-card{position:relative;display:flex;flex-direction:column;background:var(--s1);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:border-color .12s ease,background .12s ease}.image-card:hover{border-color:var(--line-2);background:var(--s2)}.image-card.selected{border-color:var(--accent-strong);background:#7c5cff0d}.image-card .image-card-thumb{width:100%;aspect-ratio:4 / 3;background:var(--s2);object-fit:contain;display:block}.image-card.no-overlay .image-card-body{display:none}.image-card-thumb-wrap{display:block;cursor:pointer;position:relative;color:inherit;text-decoration:none}.image-card-boxes{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.image-card-mask{position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;max-width:100%;max-height:100%;background-color:#7c5cff73;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-mode:luminance;mask-mode:luminance;pointer-events:none}.image-card .image-card-body{cursor:pointer}.image-card .image-card-thumb.placeholder{display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:var(--fs-12)}.image-card-check{position:absolute;top:8px;left:8px;width:22px;height:22px;background:#14141ca6;border-radius:4px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .1s ease}.image-card:hover .image-card-check,.image-card.selected .image-card-check{opacity:1}.image-card-check input{margin:0;cursor:pointer}.image-card-body{padding:8px 10px;display:flex;flex-direction:column;gap:4px;min-width:0}.image-card-row{display:flex;align-items:center;gap:6px;min-width:0}.image-card-name{flex:1;font-size:var(--fs-12);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-mono)}.image-card-tags{display:flex;flex-wrap:wrap;gap:3px;max-height:22px;overflow:hidden}.thumb-size{display:inline-flex;align-items:center;gap:6px;color:var(--text-3)}.thumb-size input[type=range]{width:140px;accent-color:var(--accent)}.guide-panel{background:var(--s0);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:0 12px 32px #00000080;display:flex;flex-direction:column;overflow:hidden;color:var(--text)}.guide-panel-drag-handle{background:var(--s2);border-bottom:1px solid var(--line);color:var(--text-2);cursor:move;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:8px;padding:6px 8px;flex-wrap:wrap}.guide-scroll-container{background:var(--s0);color:var(--text);outline:none;width:100%;height:100%;overflow:auto}.guide-scroll-container:focus{outline:none}.guide-zoom-wrapper{transform-origin:0 0}.guide-content{padding:16px 24px;max-width:800px;color:var(--text);font-size:var(--fs-13);line-height:1.55}.guide-content h1,.guide-content h2,.guide-content h3,.guide-content h4{color:var(--text);margin:1.2em 0 .4em;line-height:1.25}.guide-content h1{font-size:var(--fs-22)}.guide-content h2{font-size:var(--fs-18);border-bottom:1px solid var(--line);padding-bottom:4px}.guide-content h3{font-size:var(--fs-16)}.guide-content p{margin:.6em 0;color:var(--text-2)}.guide-content a{color:var(--accent)}.guide-content a:hover{color:var(--accent-strong)}.guide-content ul,.guide-content ol{padding-left:1.4em;color:var(--text-2)}.guide-content li{margin:.2em 0}.guide-content code{font-family:var(--font-mono);font-size:.9em;background:var(--s2);color:var(--text);padding:1px 5px;border-radius:4px;border:1px solid var(--line)}.guide-content pre{background:var(--s1);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;overflow:auto}.guide-content pre code{background:transparent;border:none;padding:0;color:var(--text)}.guide-content blockquote{border-left:3px solid var(--accent);margin:.8em 0;padding:4px 12px;color:var(--text-2);background:var(--s1)}.guide-content table{border-collapse:collapse;margin:.8em 0}.guide-content th,.guide-content td{border:1px solid var(--line);padding:6px 10px;color:var(--text-2)}.guide-content th{background:var(--s2);color:var(--text)}.guide-content hr{border:none;border-top:1px solid var(--line);margin:1.4em 0}.guide-content img{max-width:100%;height:auto;border-radius:var(--radius-sm)}.guide-missing-image{display:inline-block;padding:4px 8px;border:1px dashed var(--red);color:var(--red);font-size:var(--fs-12);font-family:var(--font-mono);border-radius:4px}.guide-editor-textarea{width:100%;height:100%;font-family:var(--font-mono);font-size:var(--fs-13);line-height:1.55;padding:12px;background:var(--s0);color:var(--text);border:1px solid var(--line);border-radius:var(--radius-sm);resize:none;caret-color:var(--accent)}.guide-editor-textarea:focus{outline:none;border-color:var(--accent)}.guide-editor-pane{background:var(--s0);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.guide-images-drawer{background:var(--s1);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px;overflow:auto;color:var(--text-2)}.guide-image-row{display:flex;gap:8px;padding:6px;border-bottom:1px solid var(--line);align-items:center}.guide-image-row:last-child{border-bottom:none}.guide-image-row .thumb{width:48px;height:48px;object-fit:cover;border-radius:3px;background:var(--s2);border:1px solid var(--line)}.guide-image-row .placeholder{width:48px;height:48px;background:var(--s2);border:1px solid var(--line);border-radius:3px}.guide-card{display:block;padding:12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--s1);text-decoration:none;color:var(--text);transition:background .12s,border-color .12s}.guide-card:hover{background:var(--s2);border-color:var(--line-2);color:var(--text)}.guide-card .meta{margin-top:8px;font-size:var(--fs-12);color:var(--text-3)}:root{--touch-target: 44px}@media (max-width: 720px){.def-detail-shell .rdh2-row,.run-detail-shell .rdh2-row{flex-wrap:wrap;overflow:visible;gap:8px;padding:6px 10px}.def-detail-shell .rdh2-row .rdh2-mi:not([role=alert]),.run-detail-shell .rdh2-row .rdh2-mi:not([role=alert]){display:none}.def-detail-shell .rdh2-row .spacer,.run-detail-shell .rdh2-row .spacer{flex-basis:100%;height:0}.def-detail-shell .rdh2-row+.rdh2-row,.run-detail-shell .rdh2-row+.rdh2-row{display:none}.def-detail-shell .rdh2-id,.run-detail-shell .rdh2-id{min-width:0;overflow:hidden;text-overflow:ellipsis;max-width:60vw}}@media (max-width: 820px){.def-stage-shell{grid-template-columns:1fr!important}.def-stage-shell>.side-panel,.run-stage-shell>.side-panel{display:none!important}.run-stage-shell{grid-template-columns:1fr!important}}.bottom-sheet{position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--s0);border-top:1px solid var(--line);border-top-left-radius:14px;border-top-right-radius:14px;box-shadow:0 -8px 24px #0006;display:flex;flex-direction:column;min-height:0;padding-bottom:env(safe-area-inset-bottom,0)}.bottom-sheet-handle{flex:0 0 auto;height:22px;display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.bottom-sheet-handle:active{cursor:grabbing}.bottom-sheet-grip{width:44px;height:4px;border-radius:999px;background:var(--line-2)}.bottom-sheet-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}@media (pointer: coarse){.def-detail-shell .rdh2 .iconbtn,.run-detail-shell .rdh2 .iconbtn{width:var(--touch-target);height:var(--touch-target);border-radius:10px}.def-detail-shell .rdh2 .btn.sm,.run-detail-shell .rdh2 .btn.sm{height:36px;padding:0 12px;font-size:var(--fs-13)}.def-detail-shell .rdh2 .btn,.run-detail-shell .rdh2 .btn{min-height:36px}.def-detail-shell .rdh2-link,.run-detail-shell .rdh2-link{padding:10px 6px}}.topbar-menu-btn{display:none}.rdh2-actions-wrap,.rdh2-actions{display:contents}.rdh2-kebab,.nav-scrim{display:none}@media (max-width: 820px){.app,.app.nav-collapsed{grid-template-columns:1fr;grid-template-areas:"top" "main"}.nav{position:fixed;top:0;left:0;bottom:0;width:min(82vw,280px);z-index:60;transform:translate(-100%);transition:transform .22s ease;will-change:transform}.app.nav-open .nav{transform:translate(0);box-shadow:0 12px 40px #00000080}.nav-collapse-item{display:none}.topbar-menu-btn{display:inline-flex}.nav-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;border:0;background:#00000080;opacity:0;pointer-events:none;transition:opacity .22s ease}.app.nav-open .nav-scrim{opacity:1;pointer-events:auto}.run-detail-shell .rdh2 .status .status-label{display:none}.run-detail-shell .rdh2 .status{padding:5px;gap:0}.run-detail-shell .rdh2-row{overflow:visible}.run-detail-shell .rdh2-row .spacer{flex:1;height:auto}.run-detail-shell .rdh2-actions-wrap{display:inline-flex;position:relative;flex:0 0 auto}.run-detail-shell .rdh2-kebab{display:inline-flex}.run-detail-shell .rdh2-actions{display:none;position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:220px;max-height:70vh;overflow-y:auto;flex-direction:column;align-items:stretch;gap:4px;padding:6px;background:var(--s0);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px #00000073}.run-detail-shell .rdh2-actions[data-open]{display:flex}.run-detail-shell .rdh2-actions>.btn{width:100%;justify-content:flex-start}}.perf-timeline{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg)}.perf-timeline-bar{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid var(--line);background:var(--s1);flex:0 0 auto}.perf-timeline-title{font-size:12px;font-weight:600;color:var(--text)}.perf-timeline-detail{font-size:11px;color:var(--text-3);font-family:ui-monospace,monospace}.perf-timeline-note{padding:8px 12px;font-size:12px;color:var(--text-3);border-bottom:1px solid var(--line);flex:0 0 auto}.perf-timeline-canvas-wrap{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}.perf-legend{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:10px;color:var(--text-2);max-width:60%;justify-content:flex-end}.perf-legend-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.perf-legend-swatch{width:9px;height:9px;border-radius:2px;display:inline-block}.perf-tooltip{position:absolute;z-index:20;pointer-events:none;background:var(--s4);border:1px solid var(--line-2);border-radius:6px;padding:6px 8px;font-size:11px;color:var(--text);max-width:280px;box-shadow:0 4px 16px #0006}.perf-tooltip-name{font-weight:600;margin-bottom:2px}.perf-tooltip-row{display:flex;justify-content:space-between;gap:12px;color:var(--text-2);font-family:ui-monospace,monospace}.perf-tooltip-meta{color:var(--text-3);font-size:10px;margin-top:2px}.perf-tooltip-attrs{margin-top:4px;padding-top:4px;border-top:1px solid var(--line);color:var(--text-2);font-family:ui-monospace,monospace;font-size:10px}
