@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--chrome: #14181c;--panel: #1a1f24;--raised: #232930;--well: #101317;--line: #2c333b;--text: #d7dce2;--muted: #8a939d;--faint: #5f6873;--accent: #e3a84b;--accent-ink: #1d1406;--ok: #58bf8e;--bad: #e8675d;--warn: #d9b25c;--bar: #4d5966;--mask-band: rgba(227, 168, 75, .14);--viewport: #000;--side: 352px;--r: 6px;--r-sm: 4px;--f-xs: .75rem;--f-s: .8125rem;--f-m: .9375rem;--f-l: 1.25rem;--f-xl: 2rem;font-family:IBM Plex Sans,Segoe UI,system-ui,sans-serif;font-variant-numeric:tabular-nums;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--chrome);color:var(--text);font-size:var(--f-s);line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p{margin:0}button,select,input{font:inherit;color:inherit}code{font-size:.92em;background:var(--raised);padding:0 4px;border-radius:3px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--muted)}.faint{color:var(--faint)}.ok{color:var(--ok)}.bad{color:var(--bad)}.app{height:100%;display:grid;grid-template-rows:auto 1fr;overflow:hidden}.topbar{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 16px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.mark{width:30px;height:30px;flex:none;fill:none;stroke-linecap:round}.mark circle{fill:#000;stroke:var(--line);stroke-width:1.5}.mark path{stroke:var(--accent);stroke-width:2.3}.brand h1{font-size:var(--f-m);font-weight:600}.file-line{color:var(--muted);font-size:var(--f-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55vw}.file-line strong{color:var(--text);font-weight:500;margin-right:4px}.topbar-right{display:flex;align-items:center;gap:12px}.stage-text{color:var(--muted);font-size:var(--f-xs)}.badge{font-size:var(--f-xs);padding:4px 8px;border-radius:var(--r-sm);background:var(--raised);color:var(--muted);max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge.ok{color:var(--ok)}.badge.warn{color:var(--warn)}.badge.bad{color:var(--bad)}.progress{position:absolute;left:0;right:0;bottom:-1px;height:2px}.progress i{display:block;height:100%;background:var(--accent);transition:width .2s linear}.btn{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 14px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--raised);color:var(--text);font-weight:500;cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover:not(:disabled){border-color:var(--faint)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:#edb862;border-color:#edb862}.block-btn{width:100%;margin-top:12px}button.icon,button.text{height:28px;min-width:28px;padding:0 8px;border:0;border-radius:var(--r-sm);background:transparent;cursor:pointer;color:var(--text);font-size:var(--f-s)}button.icon{font-size:18px;line-height:1}button.text{color:var(--muted)}button.icon:hover,button.text:hover{background:var(--raised);color:var(--text)}button.text[aria-pressed=true]{color:var(--accent)}.segmented{display:inline-flex;padding:2px;background:var(--well);border:1px solid var(--line);border-radius:var(--r)}.segmented button{border:0;background:transparent;padding:4px 12px;border-radius:var(--r-sm);color:var(--muted);cursor:pointer;font-size:var(--f-xs);font-weight:500}.segmented button[aria-checked=true]{background:var(--raised);color:var(--text)}.segmented.wide{display:grid;grid-template-columns:1fr 1fr;gap:2px;width:100%}.segmented.wide button{padding:6px 8px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) var(--side);min-height:0}.viewer{display:grid;grid-template-rows:auto 1fr auto;min-width:0;min-height:0}.toolbar{display:flex;align-items:center;gap:18px;padding:8px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}.toolbar.is-disabled{opacity:.4;pointer-events:none}.group{display:inline-flex;align-items:center;gap:2px}.readout{min-width:52px;text-align:center;color:var(--muted);font-size:var(--f-xs)}.hint{margin-left:auto;color:var(--faint);font-size:var(--f-xs)}.stage{position:relative;min-height:0;background:var(--viewport)}.panes{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--line)}.panes.is-swipe{grid-template-columns:1fr}.pane{position:relative;overflow:hidden;background:var(--viewport);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.pane.is-panning{cursor:grabbing}.pane.is-windowing{cursor:crosshair}.pane canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.ov{position:absolute;z-index:2;pointer-events:none;color:var(--accent);font-size:var(--f-xs);white-space:pre;background:#0000009e;padding:3px 6px;border-radius:3px;line-height:1.3}.ov-tl{top:8px;left:10px;font-weight:600;font-size:var(--f-s)}.ov-tr{top:8px;right:10px;font-weight:600;font-size:var(--f-s)}.ov-bl{bottom:8px;left:10px}.ov-br{bottom:8px;right:10px}.pane-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--muted);font-size:var(--f-s)}.swipe-handle{position:absolute;top:0;bottom:0;width:24px;margin-left:-12px;z-index:3;cursor:ew-resize;display:flex;justify-content:center}.swipe-handle:before{content:"";width:2px;height:100%;background:var(--accent)}.swipe-handle span{position:absolute;top:50%;width:20px;height:34px;margin-top:-17px;border-radius:10px;background:var(--accent);box-shadow:0 0 0 3px #00000080}.empty,.message{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:var(--chrome)}.drop{width:min(580px,100%);padding:36px;border:1.5px dashed var(--line);border-radius:10px;display:grid;justify-items:start;gap:12px}.drop.over{border-color:var(--accent);background:#e3a84b0d}.drop svg{width:44px;height:44px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round}.drop h2,.message h2{font-size:var(--f-l);font-weight:600}.drop p{color:var(--muted);max-width:62ch}.message{justify-items:center;text-align:center;align-content:center;gap:10px}.message h2{color:var(--bad)}.message p{color:var(--muted);max-width:70ch}.message .actions{display:flex;gap:8px;margin-top:6px}.transport{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 12px;border-top:1px solid var(--line)}.transport.is-hidden{visibility:hidden}.transport .buttons{display:inline-flex;gap:2px;align-items:center}button.icon.play{width:34px;height:34px;border-radius:50%;background:var(--raised);display:grid;place-items:center}button.icon.play svg{width:16px;height:16px;fill:currentColor}button.icon.play.on{color:var(--accent)}.timeline{position:relative;height:46px}.timeline canvas{width:100%;height:100%;display:block;cursor:pointer;border-radius:var(--r-sm)}.timeline-tip{position:absolute;bottom:calc(100% + 6px);transform:translate(-50%);padding:3px 8px;background:var(--raised);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--f-xs);white-space:nowrap;pointer-events:none}.meta{display:inline-flex;gap:10px;align-items:center}.frame-no{min-width:64px;text-align:right;font-weight:500}select{height:28px;padding:0 6px;background:var(--well);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--f-xs)}.sidebar{border-left:1px solid var(--line);background:var(--panel);overflow-y:auto;min-height:0;display:flex;flex-direction:column}.block{padding:16px 18px;border-bottom:1px solid var(--line)}.block h3{font-size:var(--f-s);font-weight:600;margin-bottom:10px}.block h4{font-size:var(--f-xs);font-weight:600;color:var(--muted);margin:14px 0 6px}.advanced{margin-top:12px}.advanced summary{cursor:pointer;color:var(--muted);font-size:var(--f-xs)}.advanced[open] summary{margin-bottom:10px}.fields{display:grid;gap:12px}.fields label{display:grid;gap:4px}.fields label>span{color:var(--muted);font-size:var(--f-xs);display:flex;justify-content:space-between}.fields label>span b{color:var(--text);font-weight:500}.fields label.check{grid-template-columns:auto 1fr;align-items:center;gap:8px}.fields label.check span{color:var(--text);font-size:var(--f-s)}.fields small{color:var(--faint);font-size:var(--f-xs)}.fields input[type=range]{accent-color:var(--accent)}.fields input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px;margin:0}.fields input[type=number]{height:28px;width:90px;padding:0 6px;background:var(--well);border:1px solid var(--line);border-radius:var(--r-sm)}.fields select{width:100%}.inline{display:flex;gap:6px}.inline select{flex:1}.perf .headline{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.perf .big{font-size:var(--f-xl);font-weight:600;line-height:1.05;letter-spacing:-.01em}.perf .sub{text-align:right}.perf .sub>div:first-child{font-size:var(--f-l);font-weight:500}.tscale{margin:14px 0 4px}.tscale-track{position:relative;height:8px;background:var(--well);border-radius:4px}.tscale-target{position:absolute;top:-5px;bottom:-5px;width:2px;margin-left:-1px;background:var(--ok)}.tscale-mark{position:absolute;top:-3px;width:12px;height:14px;margin-left:-6px;border-radius:3px}.tscale-mark.e2e{background:var(--accent)}.tscale-mark.engine{background:var(--text);width:4px;margin-left:-2px}.tscale-ticks{position:relative;height:16px;margin-top:6px}.tscale-ticks span{position:absolute;transform:translate(-50%);font-size:10px;color:var(--faint);white-space:nowrap}.target{margin:6px 0 12px;font-size:var(--f-xs)}.target.ok{color:var(--ok)}.target.miss{color:var(--warn)}.stages{margin:0 0 12px;display:grid;gap:2px}.srow{position:relative;display:flex;justify-content:space-between;gap:8px;padding:3px 0 5px}.srow i{position:absolute;left:0;bottom:0;height:2px;background:var(--accent);opacity:.75}.srow.sub dt{padding-left:12px;color:var(--muted)}.srow.sub i{left:12px;background:var(--bar);opacity:1}.srow dt,.srow dd{margin:0}.srow dd{font-weight:500}.metrics{margin:0;display:grid}.metrics .row{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid rgba(44,51,59,.6)}.metrics .row:last-child{border-bottom:0}.metrics dt{color:var(--muted)}.metrics dd{margin:0;text-align:right;font-weight:500;max-width:62%;overflow-wrap:anywhere}.footnote{margin-top:10px;color:var(--faint);font-size:var(--f-xs)}.warnings{margin:10px 0 0;padding-left:16px;color:var(--warn);font-size:var(--f-xs)}.warnings li+li{margin-top:4px}.downloads{display:grid;gap:6px}.downloads .btn{justify-content:flex-start}.foot{margin-top:auto;padding:14px 18px;color:var(--faint);font-size:var(--f-xs)}.user-nav{display:inline-flex;align-items:center;gap:8px;margin-left:4px}.user-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--well);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--f-xs);font-weight:500;color:var(--text)}.user-icon{width:14px;height:14px;fill:var(--accent)}.btn-logout{height:28px;padding:0 10px;font-size:var(--f-xs);background:transparent;border-color:var(--line);color:var(--muted)}.btn-logout:hover{color:var(--bad);border-color:var(--bad)}.rotation-group{background:var(--well);border:1px solid var(--line);border-radius:var(--r);padding:2px}.rot-readout{min-width:38px;text-align:center;font-size:var(--f-xs);font-weight:600;color:var(--muted)}.rot-readout.rot-active{color:var(--accent)}.wl-toggle-btn{font-weight:500}.wl-toggle-btn.is-active{color:var(--accent);background:var(--raised)}.wl-drawer{background:var(--well);border-bottom:1px solid var(--line);padding:12px 18px;display:grid;gap:10px;animation:slideDown .15s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.wl-drawer-header{display:flex;justify-content:space-between;align-items:center}.wl-drawer-header h4{font-size:var(--f-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0}.wl-link-check{display:flex;align-items:center;gap:6px;font-size:var(--f-xs);color:var(--text);cursor:pointer}.wl-controls-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.wl-pane-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px;display:grid;gap:8px}.wl-pane-box.is-linked{opacity:.6;pointer-events:none}.wl-box-title{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:var(--f-xs);color:var(--accent)}.wl-slider-row{display:grid;grid-template-columns:80px 1fr 64px;align-items:center;gap:8px;font-size:var(--f-xs)}.wl-label{color:var(--muted)}.wl-num{height:24px;width:64px;background:var(--well);border:1px solid var(--line);border-radius:3px;padding:0 4px;text-align:right;font-size:var(--f-xs)}.btn-xs{height:22px;padding:0 8px;font-size:11px;border-radius:3px;background:var(--raised);border:1px solid var(--line);color:var(--text);cursor:pointer}.btn-xs:hover{border-color:var(--accent);color:var(--accent)}.btn-sm{height:26px;padding:0 10px;font-size:var(--f-xs)}.dirty-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 16px;background:#e3a84b1f;border-bottom:1px solid var(--accent);color:var(--accent);font-size:var(--f-xs);font-weight:500}.sidebar-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;border-bottom:1px solid var(--line);background:var(--well)}.sidebar-tab{position:relative;padding:10px 8px;border:0;background:transparent;color:var(--muted);font-size:var(--f-xs);font-weight:600;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s}.sidebar-tab:hover{color:var(--text)}.sidebar-tab.is-active{color:var(--accent);border-bottom-color:var(--accent);background:var(--panel)}.tab-dirty-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-left:4px;vertical-align:middle}.pipeline-header{margin-bottom:12px}.pipeline-note{font-size:var(--f-xs);color:var(--muted);margin-top:4px;line-height:1.4}.filter-stage{border:1px solid var(--line);border-radius:var(--r);margin-bottom:8px;background:var(--well);overflow:hidden}.filter-stage.filter-dirty{border-color:#e3a84b80}.filter-stage-header{width:100%;display:flex;align-items:center;gap:8px;padding:9px 12px;background:transparent;border:0;color:var(--text);text-align:left;font-size:var(--f-xs);font-weight:600;cursor:pointer}.filter-stage-header:hover{background:var(--raised)}.filter-stage-icon{color:var(--muted);font-size:11px;width:12px}.filter-stage-name{flex:1}.filter-badge-req{font-size:10px;padding:2px 5px;border-radius:3px;background:var(--raised);color:var(--faint);font-weight:500}.filter-badge-mod{font-size:10px;padding:2px 5px;border-radius:3px;background:#e3a84b33;color:var(--accent);font-weight:600}.filter-stage-body{padding:12px;border-top:1px solid var(--line);background:var(--panel);display:grid;gap:10px}.filter-desc{font-size:var(--f-xs);color:var(--muted);line-height:1.4}.filter-no-params{font-size:var(--f-xs);color:var(--faint);font-style:italic}.filter-params{display:grid;gap:10px}.filter-field{display:grid;gap:4px}.filter-label{font-size:var(--f-xs);color:var(--muted)}.filter-label-row{display:flex;justify-content:space-between}.filter-label-row b{color:var(--text)}.filter-num{height:26px;width:100%;background:var(--well);border:1px solid var(--line);border-radius:var(--r-sm);padding:0 6px;font-size:var(--f-xs)}.filter-help{font-size:11px;color:var(--faint);line-height:1.3}.filter-check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:var(--f-xs)}.perf-chart{position:relative;height:80px;background:var(--well);border:1px solid var(--line);border-radius:var(--r);padding:8px;margin:10px 0}.perf-chart-bars{display:flex;align-items:flex-end;gap:2px;height:60px;overflow-x:auto}.perf-bar{flex:1;min-width:4px;background:var(--bar);border:0;padding:0;cursor:pointer;border-radius:1px 1px 0 0;transition:background .1s}.perf-bar:hover{background:var(--muted)}.perf-bar.perf-bar-active{background:var(--accent)!important;outline:1px solid #fff}.perf-bar.perf-bar-mask{background:#e3a84b59}.perf-chart-axis{display:flex;justify-content:space-between;font-size:10px;color:var(--faint);margin-top:2px}.perf-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0}.perf-stat-card{background:var(--well);border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 8px;text-align:center}.perf-stat-label{font-size:10px;color:var(--muted);text-transform:uppercase}.perf-stat-val{font-size:var(--f-s);font-weight:600;color:var(--text);margin-top:2px}.perf-export-btns{display:flex;gap:8px;margin-top:12px}.perf-table-wrap{max-height:220px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-sm);margin-top:8px}.perf-table{width:100%;border-collapse:collapse;font-size:11px;text-align:right}.perf-table th{position:sticky;top:0;background:var(--well);color:var(--muted);padding:4px 6px;border-bottom:1px solid var(--line);font-weight:600}.perf-table td{padding:4px 6px;border-bottom:1px solid rgba(44,51,59,.4)}.perf-table tr:hover td{background:var(--raised)}.perf-table tr.is-active td{background:#e3a84b26;font-weight:600;color:var(--accent)}.auth-loading{height:100vh;display:grid;place-content:center;justify-items:center;gap:12px;background:var(--chrome);color:var(--muted);font-size:var(--f-s)}.auth-spinner{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-root{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% 20%,#1e242c 0%,var(--chrome) 70%)}.login-card{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:36px 32px;box-shadow:0 20px 40px #00000080;display:grid;gap:24px}.login-logo{display:flex;align-items:center;gap:14px}.login-mark{width:44px;height:44px;flex:none;fill:none;stroke-linecap:round}.login-mark circle{fill:#000;stroke:var(--line);stroke-width:1.5}.login-mark path{stroke:var(--accent);stroke-width:2.3}.login-brand h1{font-size:var(--f-l);font-weight:600;color:var(--text);letter-spacing:-.01em}.login-brand p{font-size:var(--f-xs);color:var(--muted)}.login-form{display:grid;gap:16px}.login-form h2{font-size:var(--f-m);font-weight:600;color:var(--text)}.login-sub{font-size:var(--f-xs);color:var(--muted);margin-top:-8px}.login-error{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#e8675d1f;border:1px solid var(--bad);border-radius:var(--r-sm);color:var(--bad);font-size:var(--f-xs)}.login-error svg{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:2}.login-field{display:grid;gap:6px}.login-field span{font-size:var(--f-xs);color:var(--muted);font-weight:500}.login-field input{height:38px;background:var(--well);border:1px solid var(--line);border-radius:var(--r-sm);padding:0 12px;color:var(--text);font-size:var(--f-s)}.login-field input:focus{border-color:var(--accent)}.login-pw-wrap{position:relative;display:flex}.login-pw-wrap input{width:100%;padding-right:38px}.login-pw-toggle{position:absolute;right:0;top:0;bottom:0;width:38px;border:0;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center}.login-pw-toggle:hover{color:var(--text)}.login-pw-toggle svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.login-btn{height:40px;margin-top:6px;font-size:var(--f-s);font-weight:600}.login-foot{font-size:11px;color:var(--faint);text-align:center}@media (max-width: 1000px){:root{--side: 300px}.hint{display:none}.wl-controls-grid{grid-template-columns:1fr}}@media (max-width: 820px){.app{overflow:auto;height:auto}.workspace{grid-template-columns:1fr}.viewer{height:78vh}.panes{grid-template-columns:1fr;grid-template-rows:1fr 1fr}.panes.is-swipe{grid-template-rows:1fr}.sidebar{border-left:0;border-top:1px solid var(--line);overflow:visible}.transport{grid-template-columns:auto 1fr}.transport .meta{grid-column:1 / -1;justify-content:flex-end}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
