:root{--bg-0:#000;--bg-1:#0b0b0b;--bg-2:#141414;--bg-3:#1c1c1c;--bg-4:#262626;--bg-overlay:#000000a6;--border-1:#1f1f1f;--border-2:#2a2a2a;--border-3:#3a3a3a;--text-1:#ececec;--text-2:#b6b6b6;--text-3:#888;--text-4:#5a5a5a;--text-on-accent:#fff;--accent:#4a8fe7;--accent-hover:#5c9bec;--accent-press:#3e7fd0;--accent-soft:#4a8fe71f;--accent-soft-2:#4a8fe72e;--green:#59a86b;--amber:#c8923a;--red:#d26464;--red-soft:#d264641a;--chip-loop-fg:#c0a0e0;--chip-cond-fg:#d0a85e;--chip-bind-fg:#6fb084;--font-sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--t-11:11px;--t-12:12px;--t-13:13px;--t-14:14px;--t-15:15px;--sz-control:26px;--sz-control-md:28px;--sz-row:28px;--r-1:3px;--r-2:5px;--r-3:7px;--ease:cubic-bezier(.25,.8,.3,1)}*,:before,:after{box-sizing:border-box}html,body,#root{background:var(--bg-1);height:100%;color:var(--text-1);font-family:var(--font-sans);font-size:var(--t-13);font-weight:var(--ui-weight,400);letter-spacing:var(--ui-tracking,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-feature-settings:"ss01", "cv11";font-variant-ligatures:none;font-variant-numeric:tabular-nums;margin:0;line-height:1.45}button{font-family:inherit}::selection{background:var(--accent-soft-2)}*{scrollbar-width:thin;scrollbar-color:#3a3a3a transparent}::-webkit-scrollbar{background:0 0;width:12px;height:12px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:#2e2e2e;background-clip:padding-box;border:3px solid #0000;border-radius:999px;min-width:32px;min-height:32px}::-webkit-scrollbar-thumb:hover{background-color:#444;background-clip:padding-box}::-webkit-scrollbar-thumb:active{background-color:#5a5a5a;background-clip:padding-box}::-webkit-scrollbar-corner{background:0 0}.scroll-inset::-webkit-scrollbar-thumb{background-color:#1e1e1e}.scroll-inset::-webkit-scrollbar-thumb:hover{background-color:#353535}.monaco-editor .suggest-widget,.monaco-editor .monaco-hover,.monaco-editor .parameter-hints-widget,.monaco-editor .monaco-menu{font-variant-numeric:normal;font-feature-settings:normal;letter-spacing:normal;line-height:normal}.monaco-editor .suggest-widget ::-webkit-scrollbar{width:10px;min-height:0}.monaco-editor .suggest-widget ::-webkit-scrollbar-thumb{border-radius:5px;min-width:0;min-height:20px}.monaco-editor .monaco-scrollable-element>.scrollbar>.slider{border-radius:5px}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);font-size:11px;font-weight:600}.eyebrow-2{letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);font-size:11px;font-weight:600}.eyebrow-strong{color:var(--text-1)}.mono-cap{font-family:var(--font-mono);color:var(--text-3);font-variant-numeric:tabular-nums;letter-spacing:0;font-size:11px}.mono-cap.is-num{color:var(--text-2)}.mono-cap.is-ok{color:var(--green)}.mono-cap.is-err{color:var(--red)}.hairline{background:var(--border-1)}.text-muted{color:var(--text-3)}.text-soft{color:var(--text-2)}.row-flex{align-items:center;gap:8px;display:flex}.grow{flex:1;min-width:0}.nowrap{white-space:nowrap}.truncate{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.divider-v{background:var(--border-2);flex-shrink:0;width:1px;height:14px}.panel-section{border-bottom:1px solid var(--border-1);padding:12px 14px}.panel-section .h{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.panel-section .h .lbl{letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);font-size:11px;font-weight:600}.app{grid-template-rows:38px 1fr;width:100vw;height:100vh;display:grid;overflow:hidden}.topbar{background:var(--bg-1);border-bottom:1px solid var(--border-1);align-items:stretch;min-width:0;height:38px;padding:0;display:flex}.topbar .crumbs{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.topbar .crumbs>*{white-space:nowrap}.topbar .seg{border-right:1px solid var(--border-1);align-items:center;gap:8px;height:100%;padding:0 10px;display:flex}.topbar .seg.right{border-right:none;border-left:1px solid var(--border-1);margin-left:auto}.topbar .seg.flex-grow{border-right:none;flex:1}.topbar .brand{font-size:var(--t-13);letter-spacing:-.005em;color:var(--text-1);white-space:nowrap;padding-right:4px;font-weight:600}.topbar .crumbs{color:var(--text-2);align-items:center;gap:6px;display:flex}.topbar .crumbs .sep{color:var(--text-4)}.topbar .crumbs .doc{color:var(--text-1)}.topbar select.sel{color:var(--text-1);font:inherit;font-size:var(--t-13);cursor:pointer;border-radius:var(--r-1);appearance:none;background:0 0;background-image:linear-gradient(45deg, transparent 50%, var(--text-3) 50%), linear-gradient(135deg, var(--text-3) 50%, transparent 50%);background-position:calc(100% - 14px) 12px,calc(100% - 10px) 12px;background-repeat:no-repeat;background-size:4px 4px,4px 4px;border:none;padding:4px 22px 4px 6px}.topbar select.sel:hover{background-color:var(--bg-2)}.topbar .meta{font-family:var(--font-mono);font-size:var(--t-11);color:var(--text-3);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.topbar .meta .ok{color:var(--green)}.topbar .meta .err{color:var(--red)}.topbar .stat-divider{background:var(--border-2);width:1px;height:14px}.btn{height:var(--sz-control);border-radius:var(--r-1);font-size:var(--t-13);cursor:pointer;color:var(--text-1);transition:background .1s var(--ease), border-color .1s var(--ease);white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:0 10px;font-weight:500;display:inline-flex}.btn:hover{background:var(--bg-2)}.btn:active{background:var(--bg-3)}.btn .ic{width:14px;height:14px}.btn-secondary{background:var(--bg-2);border-color:var(--border-2)}.btn-primary{background:var(--accent);color:var(--text-on-accent);border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:active{background:var(--accent-press)}.btn-success{background:var(--green);color:#fff;border-color:var(--green)}.btn-success:hover{filter:brightness(1.08)}.btn-ghost{color:var(--text-2)}.btn-ghost:hover{color:var(--text-1)}.btn-icon{width:var(--sz-control);height:var(--sz-control);border-radius:var(--r-1);color:var(--text-2);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn-icon.is-active{background:var(--bg-3);color:var(--text-1)}.btn-icon.danger:hover{background:var(--red-soft);color:var(--red)}.btn-sm{height:22px;font-size:var(--t-12);border-radius:var(--r-1);padding:0 7px}.cmenu{z-index:200;background:var(--bg-2);border:1px solid var(--border-2);border-radius:var(--r-2);min-width:200px;font-size:var(--t-13);-webkit-user-select:none;user-select:none;animation:cmenu-in 80ms var(--ease);padding:4px;position:fixed;box-shadow:0 12px 28px #0009,0 0 0 1px #0006}@keyframes cmenu-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.cmenu .item{border-radius:var(--r-1);height:26px;color:var(--text-1);cursor:pointer;white-space:nowrap;align-items:center;gap:9px;padding:0 8px;display:flex}.cmenu .item:hover .ic,.cmenu .item:hover .kbd{color:#ffffffe6}.cmenu .item .ic{width:14px;height:14px;color:var(--text-2);flex-shrink:0}.row .twirl.empty{display:none}.row .twirl+.icon{margin-left:0}.row{padding-left:8px}.row>.twirl{margin-right:2px}.seg-ctrl{background:var(--bg-2);border-radius:var(--r-1);gap:2px;padding:2px;display:inline-flex}.seg-ctrl button{cursor:pointer;height:22px;color:var(--text-2);font:inherit;font-size:var(--t-12);background:0 0;border:none;border-radius:2px;align-items:center;gap:5px;padding:0 10px;font-weight:500;display:inline-flex}.seg-ctrl button:hover{color:var(--text-1)}.seg-ctrl button.is-active{background:var(--bg-4);color:var(--text-1)}.main{background:var(--bg-0);grid-template-columns:248px 1fr 280px;min-width:0;min-height:0;display:grid}.rail{background:var(--bg-1);flex-direction:column;min-height:0;display:flex}.rail.left{border-right:1px solid var(--border-1)}.rail.right{border-left:1px solid var(--border-1)}.center{z-index:0;grid-template-rows:1fr auto;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.rail-tabs{border-bottom:1px solid var(--border-1);align-items:stretch;gap:0;height:32px;padding:0 4px;display:flex}.rail-tab{font-size:var(--t-12);color:var(--text-2);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;height:100%;padding:0 10px;font-weight:500;display:inline-flex;position:relative}.rail-tab:hover,.rail-tab.is-active{color:var(--text-1)}.rail-tab.is-active:after{content:"";background:var(--accent);height:1.5px;position:absolute;bottom:0;left:8px;right:8px}.rail-tab .count{font-family:var(--font-mono);color:var(--text-4);font-size:10px}.section-h{letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);justify-content:space-between;align-items:center;padding:12px 12px 6px;font-size:11px;font-weight:600;display:flex}.tree{flex:1;min-height:0;padding:2px 0 12px;overflow-y:auto}.row{height:var(--sz-row);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--t-13);align-items:center;gap:6px;padding:0 8px 0 4px;display:flex;position:relative}.row:hover{background:var(--bg-2)}.row.is-selected{background:var(--accent-soft)}.row.is-selected:before{content:"";background:var(--accent);width:2px;position:absolute;top:4px;bottom:4px;left:0}.row .twirl{width:14px;height:14px;color:var(--text-3);justify-content:center;align-items:center;display:inline-flex}.row .twirl.empty{visibility:hidden}.row .icon{width:16px;height:16px;color:var(--text-2);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.row.is-selected .icon{color:var(--accent)}.row .label{color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.row.muted .label{color:var(--text-2)}.row .badges{gap:3px;display:inline-flex}.row .more{width:18px;height:18px;color:var(--text-3);border-radius:3px;justify-content:center;align-items:center;display:none}.row:hover .more{display:inline-flex}.row .more:hover{background:var(--bg-3);color:var(--text-1)}.indent-1{padding-left:22px}.indent-2{padding-left:40px}.b{height:16px;font-size:10.5px;font-weight:600;font-family:var(--font-mono);background:var(--bg-3);color:var(--text-2);border-radius:2px;align-items:center;padding:0 5px;display:inline-flex}.b-loop{color:var(--chip-loop-fg)}.b-cond{color:var(--chip-cond-fg)}.b-bind{color:var(--chip-bind-fg)}.pal{grid-template-columns:1fr 1fr;gap:4px;padding:4px 8px 12px;display:grid}.pal-item{border-radius:var(--r-1);background:var(--bg-2);border:1px solid var(--border-1);cursor:grab;height:30px;font-size:var(--t-12);color:var(--text-1);align-items:center;gap:8px;padding:0 8px;display:flex}.pal-item:hover{background:var(--bg-3);border-color:var(--border-2)}.pal-item .icon{width:15px;height:15px;color:var(--text-2)}.canvas-stage{background:radial-gradient(circle at 1px 1px, #1a1a1a .8px, transparent 0) 0 0 / 16px 16px, var(--bg-0);flex:1;justify-content:center;min-height:0;padding:28px 24px 60px;display:flex;overflow:auto}.paper{color:#1a1a1a;width:595px;min-height:842px;font-family:var(--font-sans);background:#fff;padding:28px 38px;position:relative;box-shadow:0 24px 48px #00000073,0 0 0 1px #0000004d}.paper h2{text-align:right;letter-spacing:-.01em;margin:0 0 8px;font-size:18px;font-weight:600}.paper p{color:#1a1a1a;margin:0;font-size:9pt;line-height:1.45}.paper .topline{border-bottom:1px solid #ddd;justify-content:space-between;align-items:flex-end;margin-bottom:14px;padding-bottom:8px;display:flex}.paper .small{color:#555;font-size:8.5pt}.code-tile{color:#5c7aae;background:#f4f8ff;border:1px dashed #c9d6e8;border-radius:3px;align-items:center;gap:8px;margin:14px 0;padding:9px 11px;font-size:9pt;display:flex;position:relative}.code-tile .marker{color:#7b61ff;font-family:var(--font-mono);font-size:10pt}.code-tile.is-selected{border-color:var(--accent);border-style:solid;box-shadow:0 0 0 2px #4a8fe733}.code-tile-label{background:var(--accent);color:#fff;white-space:nowrap;border-radius:2px;align-items:center;gap:6px;height:20px;padding:2px 8px;font-size:11px;font-weight:500;line-height:1;display:inline-flex;position:absolute;top:-22px;left:0}.code-tile-label .actions{border-left:1px solid #ffffff40;gap:0;margin-left:4px;padding-left:6px;display:inline-flex}.code-tile-label .actions button{color:#fff;opacity:.85;cursor:pointer;background:0 0;border:none;border-radius:2px;justify-content:center;align-items:center;width:16px;height:16px;padding:0;display:inline-flex}.code-tile-label .actions button:hover{opacity:1;background:#ffffff2e}.inspector{flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.insp-header{border-bottom:1px solid var(--border-1);align-items:center;gap:8px;padding:10px 12px;display:flex}.insp-header .icon{color:var(--text-2);width:16px;height:16px}.insp-header{min-width:0}.insp-header .title{font-size:var(--t-13);color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:600;overflow:hidden}.insp-header .id{font-family:var(--font-mono);color:var(--text-4);font-size:10.5px}.insp-header .grow{flex:1}.insp-section{border-bottom:1px solid var(--border-1);padding:12px 14px}.insp-section .h{letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);justify-content:space-between;align-items:center;margin-bottom:8px;font-size:11px;font-weight:600;display:flex}.insp-section .h .open{color:var(--text-2);font-size:var(--t-12);text-transform:none;letter-spacing:0;border:1px solid var(--border-2);cursor:pointer;border-radius:var(--r-1);background:0 0;align-items:center;gap:4px;height:22px;padding:0 6px;font-weight:500;display:inline-flex}.insp-section .h .open:hover{background:var(--bg-2);color:var(--text-1)}.insp-section .h .open .ic{width:12px;height:12px}.code-preview{border:1px solid var(--border-1);border-radius:var(--r-1);font-family:var(--font-mono);font-size:var(--t-12);color:var(--text-2);white-space:pre;background:#050505;padding:9px 11px;line-height:1.6;overflow-x:auto}.code-preview .kw{color:#c586c0}.code-preview .fn{color:#dcdcaa}.code-preview .var{color:#9cdcfe}.code-preview .str{color:#ce9178}.code-preview .punct{color:gray}.code-preview .tag{color:#569cd6}.fld{flex-direction:column;gap:4px;display:flex}.fld .lbl{color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:600}.fld .grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.fld input,.fld select{height:var(--sz-control);background:var(--bg-2);border:1px solid var(--border-1);color:var(--text-1);border-radius:var(--r-1);font:inherit;font-size:var(--t-13);width:100%;transition:border-color .1s var(--ease), background .1s var(--ease);padding:0 8px}.fld input:hover,.fld select:hover{border-color:var(--border-2)}.fld input:focus,.fld select:focus{border-color:var(--accent);background:var(--bg-2);outline:none}.switch{background:var(--bg-3);cursor:pointer;width:26px;height:14px;transition:background .12s var(--ease);border-radius:999px;flex-shrink:0;position:relative}.switch:after{content:"";background:var(--text-2);width:10px;height:10px;transition:transform .12s var(--ease), background .12s var(--ease);border-radius:50%;position:absolute;top:2px;left:2px}.switch.on{background:var(--accent)}.switch.on:after{background:#fff;transform:translate(12px)}.dock{border-top:1px solid var(--border-1);background:var(--bg-1);z-index:2;flex-direction:column;min-height:0;display:flex;position:relative}.dock-bar{align-items:stretch;height:32px;padding:0 6px 0 8px;display:flex}.dock-bar .grow{flex:1}.dock-bar .right{align-items:center;gap:4px;display:inline-flex}.dock-tab{letter-spacing:.005em;-webkit-font-smoothing:subpixel-antialiased;font-weight:500;font-size:var(--t-12);color:var(--text-2);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;height:100%;padding:0 10px;font-weight:500;display:inline-flex;position:relative}.dock-tab:hover,.dock-tab.is-active{color:var(--text-1)}.dock-tab.is-active:after{content:"";background:var(--accent);height:1.5px;position:absolute;bottom:0;left:6px;right:6px}.dock-tab .ic{width:12px;height:12px;color:var(--text-3)}.dock-tab.is-active .ic{color:var(--text-1)}.dock-tab .count{font-family:var(--font-mono);color:var(--text-4);letter-spacing:0;font-variant-numeric:tabular-nums;font-size:11px;font-weight:500}.dock-tab.is-active .count{color:var(--text-2)}.dock-body{border-top:1px solid var(--border-1);max-height:280px;padding:12px 14px;overflow:auto}.dock-body .step{min-width:0}.dock-body .step .body{min-width:0;overflow:hidden}.dock-body .step .meta{flex-wrap:wrap}.dock-body.collapsed{display:none}.step{background:var(--bg-2);border:1px solid var(--border-1);border-radius:var(--r-2);transition:border-color .12s var(--ease);align-items:center;gap:10px;margin-bottom:6px;padding:9px 11px;display:flex}.step:hover{border-color:var(--border-2)}.step .dot{background:var(--text-4);border-radius:50%;flex-shrink:0;width:7px;height:7px}.step.ok .dot{background:var(--green)}.step.err .dot{background:var(--red)}.step .body{flex:1;min-width:0}.step .name{font-size:var(--t-13);color:var(--text-1);align-items:center;gap:8px;font-weight:500;display:flex}.step .name .typetag{font-family:var(--font-mono);color:var(--text-3);background:var(--bg-3);border-radius:2px;padding:1px 5px;font-size:10.5px;font-weight:400}.step .meta{font-size:var(--t-12);color:var(--text-3);align-items:center;gap:8px;margin-top:2px;display:flex}.step .deps{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.step .deps .deps-label{color:var(--text-3);margin-right:2px}.step .deps .chip{background:var(--bg-3);color:var(--text-2);font-size:10.5px;font-family:var(--font-mono);cursor:pointer;transition:background .1s var(--ease);border:1px solid #0000;border-radius:2px;align-items:center;gap:3px;padding:1px 6px;display:inline-flex}.step .deps .dep-chip:hover{background:var(--accent-soft-2);color:var(--text-1);border-color:var(--accent)}.step .deps .dep-chip svg{color:var(--text-4)}.step .deps .dep-chip:hover svg{color:var(--text-1)}.step .deps .dep-empty{color:var(--text-4);cursor:default;font-style:italic}.step .deps .dep-add{border:1px dashed var(--border-3);color:var(--text-3);background:0 0;height:16px;padding:0 5px}.step .deps .dep-add:hover{color:var(--accent);border-color:var(--accent);border-style:solid}.step-deps-bar{background:var(--bg-1);border-bottom:1px solid var(--border-1);white-space:nowrap;flex-wrap:nowrap;align-items:center;gap:6px;height:32px;min-height:32px;padding:0 14px;display:flex;overflow-x:auto}.step-deps-bar::-webkit-scrollbar{height:0}.step-deps-bar>*{flex:none}.step-deps-bar .grow{flex:auto;min-width:8px}.step-deps-title{font-family:var(--font-mono);color:var(--text-1);letter-spacing:0;font-size:12.5px;font-weight:600}.step-deps-meta{font-family:var(--font-mono);color:var(--text-3);letter-spacing:0;font-size:11px}.step-deps-sep{background:var(--border-2);width:1px;height:14px;margin:0 4px}.step-deps-bar .chip{background:var(--bg-2);border:1px solid var(--border-2);border-radius:var(--r-1);height:20px;font-family:var(--font-mono);color:var(--text-1);letter-spacing:0;cursor:pointer;transition:border-color .1s var(--ease), background .1s var(--ease);align-items:center;gap:4px;padding:0 7px;font-size:11.5px;display:inline-flex}.step-deps-bar .chip:hover{border-color:var(--accent)}.step-deps-bar .dep-dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.step-deps-bar .is-down .dep-dot,.step-deps-bar .is-down{color:var(--text-2)}.step-deps-bar .is-down{background:0 0}.step-deps-bar .dep-x{width:14px;height:14px;color:var(--text-3);cursor:pointer;background:0 0;border:none;border-radius:2px;justify-content:center;align-items:center;margin-left:2px;display:inline-flex}.step-deps-bar .dep-x:hover{background:var(--red-soft);color:var(--red)}.step-deps-bar .dep-empty{border:1px dashed var(--border-2);color:var(--text-3);cursor:default;background:0 0;font-style:italic}.step-deps-bar .dep-add{border:1px dashed var(--border-3);color:var(--text-2);background:0 0}.step-deps-bar .dep-add:hover{border-style:solid;border-color:var(--accent);color:var(--accent)}.step .err-msg{font-family:var(--font-mono);font-size:var(--t-12);color:#dc9090;background:var(--red-soft);border-radius:var(--r-1);margin-top:6px;padding:5px 8px}.step .stat{font-family:var(--font-mono);color:var(--text-3);white-space:nowrap;font-size:10.5px}.step.ok .stat{color:var(--green)}.step.err .stat{color:var(--red)}.step .actions{gap:0;display:inline-flex}.dock-section-bar{border-bottom:1px solid var(--border-1);align-items:center;gap:10px;height:36px;padding:0 14px;display:flex}.dock-section-bar .title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);align-items:center;gap:8px;font-size:11px;font-weight:600;display:inline-flex}.dock-section-bar .count{font-family:var(--font-mono);color:var(--text-3);font-size:11px;font-weight:500}.dock-section-bar .grow{flex:1}.dock-section-bar .last-run{font-family:var(--font-mono);color:var(--text-3);border-right:1px solid var(--border-1);align-items:center;gap:6px;height:22px;margin-right:4px;padding-right:4px;font-size:11px;display:inline-flex}.dock-section-bar .last-run .num{color:var(--text-1);font-weight:500}.dock-section-bar .last-run .ok{color:var(--green)}.dock-section-bar .last-run .err{color:var(--red)}.dock-section-bar .actions{gap:6px;display:inline-flex}.log-row{font-family:var(--font-mono);font-size:var(--t-12);color:var(--text-2);border-bottom:1px solid var(--border-1);grid-template-columns:80px 50px 1fr;gap:12px;padding:4px 0;display:grid}.log-row .ts{color:var(--text-4)}.log-row .lvl{letter-spacing:.04em;text-transform:uppercase;font-size:10px;font-weight:600}.log-row.info .lvl{color:var(--accent)}.log-row.warn .lvl{color:var(--amber)}.log-row.err .lvl{color:var(--red)}.log-row.ok .lvl{color:var(--green)}.log-row .msg{color:var(--text-1);white-space:pre-wrap;word-break:break-word}.log-row .src{color:var(--text-4);font-size:11px}.kv-row{border-bottom:1px solid var(--border-1);grid-template-columns:1fr auto auto;align-items:center;gap:10px;padding:7px 0;display:grid}.kv-row .name{font-size:var(--t-13);color:var(--text-1);font-family:var(--font-mono)}.kv-row .types{gap:4px;display:inline-flex}.tag{letter-spacing:.04em;text-transform:uppercase;height:17px;font-size:10.5px;font-weight:600;font-family:var(--font-mono);background:var(--bg-3);color:var(--text-2);border-radius:2px;align-items:center;padding:0 5px;display:inline-flex}.tag.req{color:#dc9090}.tag.date{color:#6fb084}.tag.num{color:#c0a0e0}.tag.str{color:#87b5dc}.editor-overlay{background:var(--bg-overlay);z-index:100;animation:fade-in .14s var(--ease);flex-direction:column;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.editor-shell{background:var(--bg-1);flex:1;grid-template-rows:38px 1fr;grid-template-columns:224px 1fr;min-height:0;margin:0;display:grid;overflow:hidden}.editor-bar{border-bottom:1px solid var(--border-1);background:var(--bg-1);grid-column:1/-1;align-items:center;gap:10px;padding:0 10px;display:flex}.editor-bar .crumbs{color:var(--text-2);font-size:var(--t-13);align-items:center;gap:6px;display:flex}.editor-bar .crumbs .doc{color:var(--text-1);font-weight:500}.editor-bar .crumbs .sep{color:var(--text-4)}.editor-bar .crumb-id{font-family:var(--font-mono);color:var(--text-4);margin-left:4px;font-size:10.5px}.editor-bar .grow{flex:1}.editor-bar .stat{font-family:var(--font-mono);color:var(--text-3);align-items:center;gap:6px;font-size:10.5px;display:inline-flex}.editor-bar .stat .ok{color:var(--green)}.editor-bar .stat .err{color:var(--red)}.editor-nav{background:var(--bg-1);border-right:1px solid var(--border-1);flex-direction:column;padding:4px 6px;display:flex;overflow-y:auto}.editor-nav .group{text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);padding:14px 8px 6px;font-size:11px;font-weight:600}.nav-item{border-radius:var(--r-1);height:28px;color:var(--text-2);cursor:pointer;font:inherit;font-size:var(--t-13);text-align:left;background:0 0;border:none;align-items:center;gap:9px;width:100%;padding:0 8px;display:flex;position:relative}.nav-item .ic{width:15px;height:15px;color:var(--text-2);flex-shrink:0}.nav-item:hover{background:var(--bg-2);color:var(--text-1)}.nav-item:hover .ic{color:var(--text-2)}.nav-item.is-active{background:var(--bg-3);color:var(--text-1)}.nav-item.is-active .ic{color:var(--accent)}.nav-item.is-active:before{content:"";background:var(--accent);border-radius:2px;width:2px;position:absolute;top:6px;bottom:6px;left:-6px}.nav-item .count{font-family:var(--font-mono);color:var(--text-4);margin-left:auto;font-size:10.5px}.nav-item.is-active .count{color:var(--text-2)}.nav-sub{height:24px;color:var(--text-3);font-size:var(--t-12);cursor:pointer;text-align:left;border-radius:var(--r-1);background:0 0;border:none;align-items:center;gap:7px;width:100%;padding:0 8px 0 30px;display:flex}.nav-sub:hover{color:var(--text-1);background:var(--bg-2)}.nav-sub.is-active{color:var(--text-1)}.nav-sub .dot{background:var(--text-4);border-radius:50%;flex-shrink:0;width:6px;height:6px}.nav-sub.ok .dot{background:var(--green)}.nav-sub.err .dot{background:var(--red)}.editor-work{background:var(--bg-1);grid-template-rows:1fr auto;min-height:0;display:grid}.editor-pane{grid-template-columns:1fr 1fr;min-height:0;display:grid}.code-area,.preview-area{flex-direction:column;min-height:0;display:flex}.code-area{border-right:1px solid var(--border-1)}.code-area .ribbon,.preview-area .ribbon{border-bottom:1px solid var(--border-1);letter-spacing:.08em;text-transform:uppercase;height:30px;color:var(--text-2);align-items:center;gap:8px;padding:0 12px;font-size:11px;font-weight:600;display:flex}.code-area .ribbon .grow,.preview-area .ribbon .grow{flex:1}.code-canvas{min-height:0;font-family:var(--font-mono);background:#050505;flex:1;grid-template-columns:42px 1fr;font-size:12.5px;line-height:1.65;display:grid;overflow:auto}.code-gutter{-webkit-user-select:none;user-select:none;text-align:right;color:var(--text-4);background:#030303;border-right:1px solid #131313;padding:10px 8px 10px 0;font-size:11.5px}.code-content{white-space:pre;color:var(--text-1);padding:10px 14px}.code-content .kw{color:#c586c0}.code-content .fn{color:#dcdcaa}.code-content .var{color:#9cdcfe}.code-content .str{color:#ce9178}.code-content .com{color:#6a9955;font-style:italic}.code-content .num{color:#b5cea8}.code-content .punct{color:#b0b0b0}.code-content .tag{color:#569cd6}.preview-area .stack{flex:1;grid-template-rows:1fr 1fr;min-height:0;display:grid}.preview-area .stack>div{min-height:0;overflow:auto}.preview-area .stack>div+div{border-top:1px solid var(--border-1)}.preview-pane{color:#1a1a1a;background:#fff;padding:14px 16px}.preview-pane.dark-bg{background:var(--bg-2);color:var(--text-1)}.console-pane{font-family:var(--font-mono);font-size:var(--t-12);background:#050505;padding:0}.console-pane .console-row{border-bottom:1px solid #131313;grid-template-columns:80px 50px 1fr;gap:12px;padding:5px 12px;display:grid}.console-pane .console-row .ts{color:var(--text-4);font-size:11px}.console-pane .console-row .lvl{letter-spacing:.04em;text-transform:uppercase;align-self:center;font-size:10px;font-weight:600}.console-pane .console-row.info .lvl{color:var(--accent)}.console-pane .console-row.warn .lvl{color:var(--amber)}.console-pane .console-row.err .lvl{color:var(--red)}.console-pane .console-row.ok .lvl{color:var(--green)}.console-pane .console-row .msg{color:var(--text-1);white-space:pre-wrap;word-break:break-word}.editor-foot{border-top:1px solid var(--border-1);background:var(--bg-1);align-items:center;gap:8px;height:38px;padding:0 12px;display:flex}.editor-foot .grow{flex:1}.editor-foot .stat-pill{font-family:var(--font-mono);font-size:var(--t-12);color:var(--text-3);background:var(--bg-2);border-radius:var(--r-1);align-items:center;gap:6px;padding:3px 9px;display:inline-flex}.editor-foot .stat-pill.ok{color:var(--green)}.editor-foot .stat-pill.err{color:var(--red)}.empty{text-align:center;color:var(--text-3);font-size:var(--t-13);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:50px 20px;display:flex}.empty .h{font-size:var(--t-13);color:var(--text-2);font-weight:500}.dlg-back{z-index:60;animation:fade-in .1s var(--ease);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dlg{background:var(--bg-1);border:1px solid var(--border-2);border-radius:var(--r-3);width:440px;overflow:hidden}.dlg-h{border-bottom:1px solid var(--border-1);font-size:var(--t-13);align-items:center;padding:12px 14px;font-weight:600;display:flex}.dlg-b{flex-direction:column;gap:10px;padding:14px;display:flex}.dlg-f{border-top:1px solid var(--border-1);justify-content:flex-end;gap:6px;padding:10px 14px;display:flex}.cmenu{z-index:100;background:var(--bg-1);border:1px solid var(--border-2);border-radius:var(--r-2);min-width:220px;max-width:320px;animation:cmenu-in .1s var(--ease);-webkit-user-select:none;user-select:none;font-size:var(--t-12);padding:4px;position:fixed;box-shadow:inset 0 1px #ffffff0a,0 12px 32px -8px #0009,0 4px 12px #0006}.cmenu .group-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-4);padding:6px 10px 4px;font-size:10.5px;font-weight:600}.cmenu .sep{background:var(--border-1);height:1px;margin:4px 2px}.cmenu .item{border-radius:var(--r-1);height:26px;color:var(--text-1);cursor:pointer;transition:background 60ms var(--ease);align-items:center;gap:9px;padding:0 8px;display:flex}.cmenu .item:hover{background:var(--accent);color:#fff}.cmenu .item:hover .kbd{color:#ffffffb3}.cmenu .item .ic{width:14px;height:14px;color:var(--text-3);justify-content:center;align-items:center;display:inline-flex}.cmenu .item:hover .ic{color:#fff}.cmenu .item .label{flex:1}.cmenu .item .kbd{font-family:var(--font-mono);color:var(--text-4);letter-spacing:.02em;font-size:10.5px}.cmenu .item.danger,.cmenu .item.danger .ic{color:var(--red)}.cmenu .item.danger:hover{background:var(--red);color:#fff}.cmenu .item.danger:hover .ic{color:#fff}.tree .row{position:relative}.tree .row .row-more{border-radius:var(--r-1);width:20px;height:20px;color:var(--text-3);opacity:0;cursor:pointer;transition:opacity 80ms var(--ease), background 80ms var(--ease), color 80ms var(--ease);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.tree .row:hover .row-more,.tree .row.is-selected .row-more{opacity:1}.tree .row .row-more:hover{background:var(--bg-3);color:var(--text-1)}.tree .row .badges{margin-right:22px}.jt-root{font-family:var(--font-mono);font-size:var(--t-12);color:var(--text-1);flex-direction:column;height:100%;min-height:0;line-height:1.6;display:flex}.jt-toolbar{border-bottom:1px solid var(--border-1);background:var(--bg-1);height:32px;min-height:32px;font-family:var(--font-sans);align-items:center;gap:6px;padding:6px 12px;font-size:11px;display:flex}.jt-toolbar .grow{flex:1}.jt-summary{font-family:var(--font-mono);color:var(--text-3);letter-spacing:0}.jt-search{background:var(--bg-2);border:1px solid var(--border-2);border-radius:var(--r-1);height:22px;color:var(--text-3);width:200px;transition:border-color 80ms var(--ease);align-items:center;gap:5px;padding:0 6px;display:inline-flex}.jt-search:focus-within{border-color:var(--accent);color:var(--text-1)}.jt-search input{color:var(--text-1);font-size:11px;font-family:var(--font-sans);background:0 0;border:none;outline:none;flex:1;min-width:0}.jt-search .jt-clear{width:14px;height:14px;color:var(--text-4);cursor:pointer;background:0 0;border:none;border-radius:2px;justify-content:center;align-items:center;display:inline-flex}.jt-search .jt-clear:hover{background:var(--bg-3);color:var(--text-1)}.jt-tool-btn{background:var(--bg-2);border:1px solid var(--border-2);border-radius:var(--r-1);height:22px;color:var(--text-2);font-family:var(--font-sans);cursor:pointer;align-items:center;gap:4px;padding:0 8px;font-size:11px;display:inline-flex}.jt-tool-btn:hover{background:var(--bg-3);color:var(--text-1);border-color:var(--border-3)}.jt-tool-btn.is-ok{color:var(--green);border-color:var(--green-soft);background:var(--green-soft)}.jt-body{background:var(--bg-0);flex:1;min-height:0;padding:8px 12px;overflow:auto}.jt-line{white-space:nowrap;align-items:center;gap:4px;min-height:19px;display:flex}.jt-line.jt-head{cursor:pointer}.jt-line.jt-head:hover{background:#ffffff06}.jt-twirl{width:12px;height:12px;color:var(--text-4);transition:transform 80ms var(--ease), color 80ms var(--ease);justify-content:center;align-items:center;font-size:9px;line-height:1;display:inline-flex;transform:rotate(0)}.jt-twirl.is-open{color:var(--text-2);transform:rotate(90deg)}.jt-twirl-spacer{visibility:hidden}.jt-line.jt-head:hover .jt-twirl{color:var(--text-1)}.jt-key{color:var(--text-2)}.jt-key .jt-idx,.jt-colon{color:var(--text-4)}.jt-bracket{color:var(--text-2)}.jt-comma{color:var(--text-4)}.jt-count{color:var(--text-4);border:1px solid var(--border-1);letter-spacing:.02em;border-radius:8px;margin-left:8px;padding:0 5px;font-size:10px}.jt-collapsed{color:var(--text-3);opacity:.85;margin:0 4px}.jt-preview-item{font-size:11.5px}.jt-prev-k{color:var(--text-3)}.jt-prev-v{color:var(--text-2)}.jt-more{color:var(--text-4);margin-left:4px}.jt-string{color:#b5e2a8}.jt-number{color:#f5c890}.jt-boolean{color:#c9a6f5}.jt-null,.jt-undefined{color:var(--text-4);font-style:italic}.jt-object,.jt-array{color:var(--text-2)}.jt-children{position:relative}.jt-children:before{content:"";background:var(--border-1);width:1px;position:absolute;top:0;bottom:0}.jt-inline{vertical-align:top;min-width:240px;display:inline-block}.jt-inline .jt-body{background:0 0;padding:0}.jt-inline .jt-line{min-height:17px}html,body{background:var(--bg-1)}body{font-family:var(--font-sans);color:var(--text-2);font-size:13px}.app-shell{flex-direction:column;height:100vh;display:flex}.topbar{background:var(--bg-1);border-bottom:1px solid var(--border-1);flex:0 0 40px;align-items:center;gap:12px;height:40px;padding:0 14px;display:flex}.topbar .seg{align-items:center;gap:8px;display:flex}.topbar .seg.right{gap:8px}.topbar .brand{color:var(--text-1);letter-spacing:-.01em;font-size:13px;font-weight:600}.crumbs{color:var(--text-3);align-items:center;gap:8px;min-width:0;font-size:12px;display:flex}.crumbs .sep{color:var(--text-4)}.crumbs .doc{color:var(--text-1)}.topbar .meta{color:var(--text-3);font-size:11px;font-family:var(--font-mono);align-items:center;gap:6px;display:flex}.topbar .ok{color:var(--green)}.stat-divider{background:var(--border-2);width:1px;height:12px;display:inline-block}.shell-body{flex:1;min-height:0;display:flex}.sidebar{background:var(--bg-1);border-right:1px solid var(--border-1);flex-direction:column;flex:0 0 232px;width:232px;padding:10px 8px;display:flex}.ws-picker{cursor:pointer;margin-bottom:14px;position:relative}.ws-card{background:var(--bg-2);border:1px solid var(--border-2);border-radius:4px;align-items:center;gap:8px;padding:6px 8px;display:flex}.ws-card:hover{border-color:var(--border-3)}.ws-avatar{color:#cfdcef;letter-spacing:.02em;background:linear-gradient(135deg,#2c4a78,#1a2f4f);border-radius:4px;flex:0 0 26px;justify-content:center;align-items:center;width:26px;height:26px;font-size:10px;font-weight:700;display:flex}.ws-avatar.sm{flex:0 0 22px;width:22px;height:22px;font-size:9px}.ws-name{color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:500;line-height:1.2;overflow:hidden}.ws-sub{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:10px;overflow:hidden}.ws-menu{background:var(--bg-2);border:1px solid var(--border-2);z-index:100;border-radius:4px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;box-shadow:0 6px 24px #00000080}.ws-menu-item{cursor:pointer;border-radius:3px;align-items:center;gap:8px;padding:6px;display:flex}.ws-menu-item:hover{background:var(--bg-3)}.ws-menu-item.is-on{background:var(--accent-soft)}.ws-menu-item.add{color:var(--text-3);padding:6px 8px;font-size:11px}.ws-menu-sep{background:var(--border-1);height:1px;margin:4px 0}.nav-section{color:var(--text-4);text-transform:uppercase;letter-spacing:.08em;padding:10px 8px 4px;font-size:10px}.nav-group{flex-direction:column;gap:1px;display:flex}.navitem{color:var(--text-2);cursor:pointer;border-radius:3px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.navitem:hover{background:var(--bg-2);color:var(--text-1)}.navitem.is-active{background:var(--accent-soft);color:var(--text-1)}.navitem.is-active svg{color:var(--accent)}.navitem .lbl{flex:1}.navitem .ct{font-family:var(--font-mono);color:var(--text-4);background:var(--bg-2);border-radius:2px;padding:1px 5px;font-size:10px}.navitem.is-active .ct{color:var(--accent);background:#4a8fe726}.grow{flex:1}.sidebar-foot{border-top:1px solid var(--border-1);color:var(--text-3);padding:8px;font-size:10px}.workarea{background:var(--bg-0);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.work-bar{background:var(--bg-1);border-bottom:1px solid var(--border-1);flex:0 0 38px;align-items:center;gap:8px;height:38px;padding:0 16px;display:flex}.work-bar .title{color:var(--text-1);text-transform:capitalize;letter-spacing:-.01em;font-size:13px;font-weight:600}.scroll-page{flex-direction:column;flex:1;gap:12px;padding:14px 16px;display:flex;overflow:auto}.filter-row{background:var(--bg-1);border-bottom:1px solid var(--border-1);flex-wrap:wrap;align-items:center;gap:6px;padding:10px 16px;display:flex}.search-input{background:var(--bg-2);border:1px solid var(--border-2);width:240px;height:26px;color:var(--text-3);border-radius:3px;align-items:center;gap:6px;padding:0 8px;display:flex}.search-input input{color:var(--text-1);min-width:0;font-size:12px;font-family:var(--font-sans);background:0 0;border:0;outline:none;flex:1}.search-input input::placeholder{color:var(--text-4)}.chip-filter{background:var(--bg-2);border:1px solid var(--border-2);height:24px;color:var(--text-2);cursor:pointer;border-radius:3px;align-items:center;gap:6px;padding:0 10px;font-size:11px;display:inline-flex}.chip-filter:hover{color:var(--text-1);border-color:var(--border-3)}.chip-filter.is-on{background:var(--accent-soft);color:var(--text-1);border-color:#4a8fe766}.chip-filter .ct{font-family:var(--font-mono);color:var(--text-4);font-size:10px}.chip-filter.is-on .ct{color:var(--accent)}.tag-chip{border:1px solid var(--border-2);height:22px;color:var(--text-3);font-size:10.5px;font-family:var(--font-mono);cursor:pointer;background:0 0;border-radius:11px;padding:0 8px}.tag-chip:hover{color:var(--text-1);border-color:var(--border-3)}.tag-chip.is-on{background:var(--accent-soft);color:var(--text-1);border-color:#4a8fe766}.tag-chip-static{background:var(--bg-3);height:16px;color:var(--text-3);font-size:10px;font-family:var(--font-mono);border-radius:8px;align-items:center;gap:4px;margin-left:4px;padding:0 6px;display:inline-flex}.btn{cursor:pointer;height:26px;font-size:12px;font-weight:500;font-family:var(--font-sans);white-space:nowrap;border:1px solid #0000;border-radius:3px;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.btn .ic{margin-right:0}.btn-primary{background:var(--accent);color:var(--text-on-accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-2);color:var(--text-1);border-color:var(--border-2)}.btn-secondary:hover{background:var(--bg-3);border-color:var(--border-3)}.btn-danger{color:#e58383;background:0 0;border-color:#e5838366}.btn-danger:hover{background:#e5838314}.btn-xs{height:22px;padding:0 8px;font-size:11px}.btn-link{color:var(--text-3);cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;font-size:11px;display:inline-flex}.btn-link:hover{color:var(--text-1)}.btn-icon{cursor:pointer;width:24px;height:24px;color:var(--text-3);background:0 0;border:0;border-radius:3px;justify-content:center;align-items:center;display:inline-flex}.btn-icon:hover{background:var(--bg-2);color:var(--text-1)}.btn-icon-row{cursor:pointer;width:22px;height:22px;color:var(--text-4);background:0 0;border:0;border-radius:3px;justify-content:center;align-items:center;display:inline-flex}.btn-icon-row:hover{background:var(--bg-3);color:var(--text-1)}.tbl{border-collapse:separate;border-spacing:0;background:var(--bg-0);width:100%;font-size:12px}.tbl thead th{text-align:left;color:var(--text-4);text-transform:uppercase;letter-spacing:.06em;background:var(--bg-1);border-bottom:1px solid var(--border-1);z-index:2;padding:10px 12px;font-size:10.5px;font-weight:500;position:sticky;top:0}.tbl tbody td{border-bottom:1px solid var(--border-1);color:var(--text-2);vertical-align:middle;padding:9px 12px}.tbl tbody tr{cursor:pointer}.tbl tbody tr:hover td{background:var(--bg-2)}.tbl-inner{background:0 0}.tbl-inner thead th{border-bottom:1px solid var(--border-2);background:0 0;padding:6px 10px;position:static}.tbl-inner tbody td{padding:8px 10px}.cell-strong{color:var(--text-1);font-weight:500}.cell-sub{color:var(--text-4);align-items:center;gap:6px;margin-top:2px;font-size:10.5px;display:flex}.cell-mono{font-family:var(--font-mono);color:var(--text-1);font-size:11px}.pill{background:var(--bg-2);color:var(--text-2);text-transform:lowercase;letter-spacing:.01em;font-size:10.5px;font-weight:500;font-family:var(--font-mono);border-radius:9px;align-items:center;gap:5px;padding:2px 7px;display:inline-flex}.pill .dot{background:var(--text-4);border-radius:50%;width:6px;height:6px}.pill-success{color:#7fcb91;background:#59a86b1a}.pill-success .dot{background:#6fbb7f}.pill-error{color:#e58383;background:#d264641a}.pill-error .dot{background:#d26464}.pill-timeout{color:#e0ae5c;background:#c8923a1a}.pill-timeout .dot{background:#c8923a}.pill-pending{color:var(--text-2);background:var(--bg-2)}.pill-running{color:#6fa3d8;background:#4a8fe71a}.pill-running .dot{background:var(--accent)}.pill-muted{color:var(--text-4)}.kind-pill{height:18px;font-size:10px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;background:var(--bg-3);color:var(--text-2);border:1px solid #0000;border-radius:3px;align-items:center;padding:0 7px;display:inline-flex}.kind-pill.api{color:#b698d8;background:#a37cc01a}.kind-pill.studio{color:#79b1e8;background:#4a8fe71a}.kind-pill.published{color:#7fcb91;background:#59a86b1a}.kind-pill.draft{color:var(--text-2)}.kind-pill.archived{color:var(--text-4);border-color:var(--border-2)}.badge-mini{background:var(--bg-3);color:var(--text-3);font-size:10px;font-family:var(--font-mono);border-radius:9px;align-items:center;gap:4px;margin-left:6px;padding:1px 6px;display:inline-flex}.badge-mini.accent{color:#7fcb91;background:#59a86b1a}.badge-warn{color:#e0ae5c;font-size:10.5px;font-family:var(--font-mono);background:#c8923a1a;border-radius:9px;align-items:center;gap:4px;padding:1px 7px;display:inline-flex}.tbar{background:var(--bg-2);border-radius:2px;width:100%;min-width:100px;height:6px;display:flex;overflow:hidden}.tbar span{height:100%}.timing-bar-lg{padding:6px 0}.dpbar{width:100%;height:var(--dpbar-h,18px);background:var(--bg-2);font-family:var(--font-mono);border:1px solid var(--border-1);border-radius:3px;font-size:10px;font-weight:500;display:flex;overflow:hidden}.dpbar .seg-data,.dpbar .seg-pdf{color:var(--text-1);justify-content:flex-start;align-items:center;min-width:0;padding:0 6px;display:inline-flex;overflow:hidden}.dpbar .seg-data{background:linear-gradient(#3a7fa3,#2c6486);border-right:1px solid #0006}.dpbar .seg-pdf{background:linear-gradient(#c7884a,#a16e3a);justify-content:flex-end}.dpbar .lbl{white-space:nowrap;color:#ffffffeb}.dp-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;display:grid}.dp-card{background:var(--bg-1);border:1px solid var(--border-1);border-radius:5px;flex-direction:column;gap:6px;padding:14px 16px;display:flex}.dp-card.data{border-left:3px solid #3a7fa3}.dp-card.pdf{border-left:3px solid #c7884a}.dp-card .lbl-row{color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:8px;font-size:10.5px;font-weight:500;display:flex}.dp-card .dot{border-radius:2px;width:8px;height:8px}.dp-card.data .dot{background:#3a7fa3}.dp-card.pdf .dot{background:#c7884a}.dp-card .v{font-family:var(--font-mono);color:var(--text-1);letter-spacing:-.01em;font-size:28px;font-weight:500}.dp-card .pct{font-family:var(--font-mono);color:var(--text-3);font-size:12px}.dp-card .sub{color:var(--text-3);font-size:11px}.dp-card .breakdown{border-top:1px dashed var(--border-1);font-family:var(--font-mono);color:var(--text-3);flex-direction:column;gap:6px;margin-top:6px;padding-top:8px;font-size:10.5px;display:flex}.dp-card .breakdown .row-b{align-items:baseline;gap:8px;line-height:1.3;display:flex}.dp-card .breakdown .row-b>:first-child{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.dp-card .breakdown .row-b .v{color:var(--text-2);letter-spacing:0;flex-shrink:0;font-size:10.5px;font-weight:400}.dp-leaderboard{grid-template-columns:1fr 1fr;gap:10px;display:grid}.dp-leaderboard .lb-card{background:var(--bg-1);border:1px solid var(--border-1);border-radius:5px;padding:12px 14px}.dp-leaderboard .lb-card .h{color:var(--text-2);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:6px;margin-bottom:8px;font-size:11px;display:flex}.dp-leaderboard .lb-card .h .dot{border-radius:2px;width:8px;height:8px}.dp-leaderboard .lb-card .h .dot.data{background:#3a7fa3}.dp-leaderboard .lb-card .h .dot.pdf{background:#c7884a}.dp-leaderboard .lb-row{border-bottom:1px solid var(--border-1);grid-template-columns:1fr auto;gap:4px 10px;padding:7px 0;display:grid}.dp-leaderboard .lb-row:last-child{border-bottom:none}.dp-leaderboard .lb-row .nm{color:var(--text-1);font-size:12px}.dp-leaderboard .lb-row .ms{font-family:var(--font-mono);color:var(--text-2);font-size:11px}.dp-leaderboard .lb-row .id{font-family:var(--font-mono);color:var(--text-4);grid-column:1;font-size:10px}.dp-leaderboard .lb-row .meta{font-family:var(--font-mono);color:var(--text-3);grid-column:2;font-size:10px}.dp-trend{grid-template-columns:repeat(30,1fr);align-items:end;gap:2px;height:100px;padding:6px 0;display:grid}.dp-trend .col{flex-direction:column;justify-content:flex-end;gap:1px;height:100%;display:flex}.dp-trend .col .d{background:#3a7fa3;border-radius:1px 1px 0 0;min-height:1px}.dp-trend .col .p{background:#c7884a;min-height:1px}.timing-bar-lg .tbar{border-radius:3px;height:12px}.timing-legend{color:var(--text-3);flex-wrap:wrap;gap:12px;margin-top:10px;font-size:11px;display:flex}.timing-legend div{align-items:center;gap:6px;display:flex}.timing-legend .sw{border-radius:2px;width:8px;height:8px}.timing-legend .cell-mono{color:var(--text-1)}.spark{align-items:flex-end;gap:2px;width:100%;height:28px;display:flex}.spark span{background:var(--accent);opacity:.55;border-radius:1px;flex:1;min-height:1px}.spark span.err{opacity:.9;background:#d26464}.perf-graph{background:var(--bg-1);border:1px solid var(--border-1);border-radius:3px;align-items:flex-end;gap:3px;height:180px;padding:8px 4px;display:flex}.perf-graph .b{background:var(--accent);opacity:.45;border-radius:1px;flex:1;min-height:2px}.perf-graph .b:hover{opacity:.85}.perf-graph .b.err{opacity:.85;background:#d26464}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.kpi{background:var(--bg-1);border:1px solid var(--border-1);border-radius:3px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.kpi .lbl{color:var(--text-4);text-transform:uppercase;letter-spacing:.06em;font-size:10.5px}.kpi .v{color:var(--text-1);letter-spacing:-.02em;font-feature-settings:"tnum";font-size:22px;font-weight:600}.kpi .delta{color:var(--text-3);align-items:center;gap:6px;font-size:11px;display:flex}.kpi .delta.up{color:#e0ae5c}.kpi .delta.down{color:#7fcb91}.section-block{background:var(--bg-1);border:1px solid var(--border-1);border-radius:3px;padding:12px 14px}.section-block.danger{border-color:#d2646440}.sec-h{align-items:center;gap:8px;margin-bottom:10px;font-size:12px;display:flex}.sec-h .ttl{color:var(--text-1);font-weight:500}.sec-h .meta{color:var(--text-3);font-size:11px}.more-link{color:var(--accent);cursor:pointer;font-size:11px}.more-link:hover{color:var(--accent-hover)}.inline-code{background:var(--bg-2);font-family:var(--font-mono);color:var(--text-1);border-radius:2px;padding:1px 5px;font-size:10.5px}.two-col{grid-template-columns:1fr 360px;align-items:start;gap:12px;display:grid}.report-head{background:var(--bg-1);border-bottom:1px solid var(--border-1);flex:none;padding:14px 16px 0}.report-title-row{align-items:flex-start;gap:12px;padding-bottom:12px;display:flex}.report-title{color:var(--text-1);letter-spacing:-.01em;align-items:center;gap:10px;font-size:18px;font-weight:600;display:flex}.report-desc{color:var(--text-3);max-width:760px;margin-top:4px;font-size:12px}.report-meta{color:var(--text-3);align-items:center;gap:10px;margin-top:10px;font-size:11px;display:flex}.report-actions{flex-shrink:0;gap:6px;display:flex}.report-tabs{gap:0;margin-top:4px;display:flex}.rtab{color:var(--text-3);cursor:pointer;text-transform:capitalize;background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:8px 14px;font-size:12px;display:inline-flex}.rtab:hover{color:var(--text-1)}.rtab.is-on{color:var(--text-1);border-bottom-color:var(--accent)}.rtab .ct{font-family:var(--font-mono);color:var(--text-4);background:var(--bg-2);border-radius:2px;padding:1px 5px;font-size:10px}.mini-exec-list{flex-direction:column;gap:2px;display:flex}.mini-exec{cursor:pointer;background:var(--bg-2);border-radius:3px;align-items:center;gap:10px;padding:8px;display:flex}.mini-exec:hover{background:var(--bg-3)}.mini-exec>*{flex:none}.empty-sm{text-align:center;color:var(--text-4);padding:20px;font-size:11px}.err-card{background:var(--bg-2);cursor:pointer;border-left:2px solid #d26464;border-radius:3px;flex-direction:column;gap:6px;padding:10px;display:flex}.err-card:hover{background:var(--bg-3)}.err-msg{font-family:var(--font-mono);color:var(--text-2);word-break:break-word;font-size:10.5px;line-height:1.5}.err-msg-lg{font-family:var(--font-mono);color:var(--text-1);background:#d264640f;border-left:2px solid #d26464;border-radius:3px;padding:10px 12px;font-size:12px;line-height:1.5}.version-banner{background:var(--bg-1);border:1px solid var(--border-1);border-left:2px solid var(--accent);border-radius:3px;align-items:center;gap:12px;padding:12px 14px;display:flex}.vtimeline{flex-direction:column;display:flex}.vrow{grid-template-columns:24px 1fr;gap:10px;display:grid}.vrail{flex-direction:column;align-items:center;padding-top:10px;display:flex}.vdot{background:var(--bg-1);border:1.5px solid var(--border-3);z-index:1;border-radius:50%;flex:0 0 9px;width:9px;height:9px}.vdot.dot-current{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 3px #5fa9d926}.vdot.dot-published{background:var(--green);border-color:var(--green)}.vline{background:var(--border-2);flex:1;width:1px;min-height:12px;margin-top:2px}.vcard{background:var(--bg-1);border:1px solid var(--border-1);border-radius:3px;min-width:0;margin-bottom:6px;padding:8px 10px 10px}.vrow.is-current .vcard{background:var(--bg-2);border-color:var(--border-2)}.vrow.is-published .vcard{border-left:2px solid var(--green)}.vtop{align-items:center;gap:8px;min-width:0;font-size:12px;display:flex}.vtag{font-family:var(--font-mono);color:var(--text-1);letter-spacing:.02em;flex:none;font-size:12px;font-weight:600}.vchip{text-transform:uppercase;letter-spacing:.05em;border-radius:2px;flex:none;padding:1px 5px;font-size:9.5px}.vchip.chip-current{color:var(--accent);background:#5fa9d91f}.vchip.chip-published{color:var(--green);background:#60b28a1f}.vsum{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.vmeta-r{color:var(--text-3);flex:none;align-items:center;gap:6px;font-size:11px;display:inline-flex}.vdot-sep{color:var(--text-4)}.vacts{opacity:0;gap:2px;margin-left:6px;transition:opacity .12s;display:inline-flex}.vrow:hover .vacts,.vrow.is-current .vacts,.vrow.is-published .vacts{opacity:1}.btn-icon-ghost{width:24px;height:24px;color:var(--text-3);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;display:inline-flex}.btn-icon-ghost:hover{background:var(--bg-3);color:var(--text-1);border-color:var(--border-2)}.btn-icon-ghost.accent:hover{color:var(--green);border-color:var(--green)}.vnote{color:var(--text-3);cursor:pointer;border-radius:3px;align-items:center;gap:6px;margin-top:6px;padding:4px 8px;font-size:11.5px;display:flex}.vnote:hover{background:var(--bg-3);color:var(--text-2)}.vnote:hover .hover-edit{color:var(--accent)}.vnote.empty{color:var(--text-4);font-size:10.5px}.vnote .hover-edit{color:var(--text-4);margin-left:auto;font-size:10.5px}.vnotes-edit{margin-top:8px}.vnotes-edit textarea{background:var(--bg-3);border:1px solid var(--border-3);width:100%;color:var(--text-1);font-family:var(--font-sans);resize:vertical;border-radius:3px;padding:6px 8px;font-size:12px}.vnotes-edit textarea:focus{border-color:var(--accent);outline:none}.form-grid{flex-direction:column;gap:8px;display:flex}.fld-row{grid-template-columns:180px 1fr;align-items:center;gap:12px;display:grid}.fld-lbl{color:var(--text-3);font-size:11.5px}.fld-input{background:var(--bg-2);border:1px solid var(--border-2);height:28px;color:var(--text-1);font-size:12px;font-family:var(--font-sans);border-radius:3px;outline:none;padding:0 8px}textarea.fld-input{resize:vertical;height:auto;padding:6px 8px;line-height:1.5}.fld-input:focus{border-color:var(--accent)}.danger-row{border-bottom:1px solid var(--border-1);justify-content:space-between;align-items:center;padding:10px 0;display:flex}.danger-row:last-child{border-bottom:0}.code-block{font-family:var(--font-mono);background:var(--bg-2);border:1px solid var(--border-1);color:var(--text-1);white-space:pre;border-radius:3px;padding:10px 12px;font-size:11px;line-height:1.6;overflow-x:auto}.code-block.error{background:#d264640a;border-color:#d2646426}.drawer-scrim{z-index:200;background:#0000008c;justify-content:flex-end;animation:.12s ease-out scrim-fade;display:flex;position:fixed;inset:0}@keyframes scrim-fade{0%{background:0 0}to{background:#0000008c}}.drawer{background:var(--bg-1);border-left:1px solid var(--border-2);flex-direction:column;width:620px;height:100%;animation:.18s ease-out drawer-in;display:flex;box-shadow:-10px 0 30px #0006}@keyframes drawer-in{0%{opacity:.4;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.drawer-head{border-bottom:1px solid var(--border-1);align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.drawer-body{flex-direction:column;flex:1;gap:10px;padding:12px 14px;display:flex;overflow:auto}.empty-lg{text-align:center;color:var(--text-3)}.empty-lg .ic-wrap{background:var(--bg-2);width:56px;height:56px;color:var(--text-3);border-radius:50%;justify-content:center;align-items:center;margin-bottom:14px;display:inline-flex}.empty-lg .h{color:var(--text-1);margin-bottom:4px;font-size:14px;font-weight:500}code{font-family:var(--font-mono);font-size:.92em}.route-block{display:contents}.inline-name-edit{background:var(--bg-2);border:1px solid var(--border-2);color:var(--text-1);font-size:12px;font-family:var(--font-sans);border-radius:3px;outline:none;width:220px;padding:2px 6px}.inline-name-edit:focus{border-color:var(--accent)}.studio-settings-pop{background:var(--bg-1);border:1px solid var(--border-2);z-index:500;border-radius:4px;flex-direction:column;gap:10px;width:320px;padding:12px 14px;display:flex;position:absolute;top:44px;right:14px;box-shadow:0 8px 30px #0009}.ssp-h{color:var(--text-1);font-size:12px;font-weight:500}.ssp-row{color:var(--text-3);flex-direction:column;gap:4px;font-size:11px;display:flex}.ssp-row input,.ssp-row textarea{background:var(--bg-2);border:1px solid var(--border-2);color:var(--text-1);font-size:12px;font-family:var(--font-sans);border-radius:3px;outline:none;padding:6px 8px}.ssp-row input:focus,.ssp-row textarea:focus{border-color:var(--accent)}.ssp-foot{justify-content:flex-end;display:flex}.studio-version-pill{background:var(--bg-2);border:1px solid var(--border-2);height:22px;color:var(--text-2);font-size:11px;font-family:var(--font-mono);cursor:pointer;border-radius:3px;align-items:center;gap:6px;padding:0 8px;display:inline-flex}.studio-version-pill:hover{border-color:var(--border-3);color:var(--text-1)}.studio-version-pill .dot{border-radius:50%;width:6px;height:6px}.studio-version-pill .dot.saved{background:var(--green)}.studio-version-pill .dot.dirty{background:var(--amber)}.studio-version-pill .dot.saving{background:var(--accent);animation:1s infinite pulse}@keyframes pulse{50%{opacity:.4}}.studio-version-modal-scrim{z-index:9999;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.studio-version-modal{background:var(--bg-1);border:1px solid var(--border-2);border-radius:4px;flex-direction:column;width:640px;max-height:80vh;display:flex;box-shadow:0 10px 40px #0009}
