@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(./ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(./ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(./ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(./jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(./jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff")}.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}@property --mode-color{syntax:"<color>";inherits:true;initial-value:#a78bfa}:root{--navy-950:#0b111c;--navy-925:#0d1420;--navy-900:#0f1624;--navy-875:#121a29;--navy-850:#151e30;--navy-800:#18223a;--navy-750:#1d2942;--navy-700:#243150;--navy-600:#2c3a5a;--navy-500:#3a4a6d;--slate-100:#e6ebf3;--slate-300:#a8b3c7;--slate-400:#8592a8;--slate-500:#6b7890;--cyan-300:#7fdcf2;--cyan-400:#38c6e8;--cyan-500:#1aa9cc;--cyan-700:#08708f;--amber-300:#f7d47e;--amber-400:#f2c14e;--amber-600:#8a6200;--violet-300:#c4b2fc;--violet-400:#a78bfa;--violet-600:#6d4fd6;--green-400:#3fbf82;--green-600:#13784a;--orange-400:#f0913a;--orange-600:#a14e0c;--red-400:#f05d5d;--red-500:#d94848;--red-600:#c63a3a;--red-700:#b13030;--white:#fff;--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--font-size-12:12px;--font-size-13:13px;--font-size-14:14px;--font-size-16:16px;--font-size-20:20px;--font-size-28:28px;--radius-4:4px;--radius-6:6px;--radius-8:8px;--radius-12:12px;--radius-full:999px;--duration-120:.12s;--duration-180:.18s;--duration-260:.26s;--color-bg:var(--navy-950);--color-chrome:var(--navy-900);--color-surface:var(--navy-875);--color-surface-sunken:var(--navy-925);--color-surface-raised:var(--navy-800);--color-surface-hover:var(--navy-750);--color-surface-active:var(--navy-700);--color-border:#94aad61f;--color-border-strong:#94aad638;--color-border-hover:#94aad65c;--color-field-border:#5b6984;--color-field-border-hover:#7584a3;--color-divider:#94aad614;--color-overlay:#0408109e;--color-text:var(--slate-100);--color-text-secondary:var(--slate-300);--color-text-muted:var(--slate-400);--color-text-disabled:var(--slate-500);--color-text-on-action:#1a1300;--color-text-on-danger:var(--white);--color-primary:var(--cyan-400);--color-primary-strong:var(--cyan-300);--color-primary-soft:#38c6e81f;--color-action:var(--amber-400);--color-action-hover:var(--amber-300);--color-action-strong:var(--amber-400);--color-sim:var(--violet-400);--color-sim-soft:#a78bfa1f;--color-success:var(--green-400);--color-success-soft:#3fbf821f;--color-warning:var(--orange-400);--color-warning-soft:#f0913a1f;--color-danger:var(--red-400);--color-danger-strong:var(--red-500);--color-danger-soft:#f05d5d1f;--color-hw:var(--color-success);--color-hw-soft:var(--color-success-soft);--color-info:var(--color-primary);--color-info-soft:var(--color-primary-soft);--color-focus:var(--cyan-400);--font-ui:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, Consolas, monospace;--text-caption:var(--font-size-12);--text-small:var(--font-size-13);--text-body:var(--font-size-14);--text-title:var(--font-size-16);--text-page:var(--font-size-20);--text-hero:var(--font-size-28);--weight-regular:400;--weight-medium:500;--weight-semibold:600;--leading-tight:1.25;--leading-body:1.5;--radius-control:var(--radius-6);--radius-card:var(--radius-8);--radius-dialog:var(--radius-12);--shadow-1:0 1px 2px #00000047;--shadow-2:0 6px 16px #00000057;--shadow-3:0 18px 48px #00000080;--ease-out:cubic-bezier(.2, 0, 0, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--motion-fast:var(--duration-120);--motion-base:var(--duration-180);--motion-slow:var(--duration-260);--z-content:0;--z-sticky:10;--z-chrome:20;--z-dropdown:30;--z-overlay:100;--z-dialog:110;--z-toast:120;--z-tooltip:130;--chart-1:#3987e5;--chart-2:#d95926;--chart-3:#199e70;--chart-4:#c98500;--chart-5:#d55181;--chart-6:#008300;--chart-7:#9085e9;--chart-8:#e66767;--chart-surface:#111a2b;--chart-grid:#94aad617;--chart-axis:var(--color-text-muted);--mode-color:var(--color-sim);--topbar-height:52px;--statusbar-height:28px;--sidebar-width:216px;--sidebar-width-collapsed:56px;--tabstrip-height:38px;--editor-panel-width:360px;--control-height:32px;--control-height-sm:26px;--button-bg:var(--color-surface-raised);--button-bg-hover:var(--color-surface-hover);--button-border:var(--color-border-strong);--card-bg:var(--color-surface);--card-border:var(--color-border);--card-padding:var(--space-4);--card-gap:var(--space-4);--page-padding:var(--space-6);--input-bg:var(--color-surface-sunken);--input-border:var(--color-field-border);--nav-item-height:34px;--table-row-hover:#94aad60d;--focus-ring:0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-focus);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-target=hw]{--mode-color:var(--color-hw)}:root[data-target=sim]{--mode-color:var(--color-sim)}:root[data-theme=light]{--color-bg:#eef1f6;--color-chrome:#f7f8fb;--color-surface:#fff;--color-surface-sunken:#f3f5f9;--color-surface-raised:#f6f8fb;--color-surface-hover:#edf1f7;--color-surface-active:#e3e9f2;--color-border:#1423461a;--color-border-strong:#1423462e;--color-border-hover:#14234652;--color-field-border:#7d8799;--color-field-border-hover:#5f697b;--color-divider:#14234612;--color-overlay:#141e3266;--color-text:#141b29;--color-text-secondary:#4a5568;--color-text-muted:#5d6a7e;--color-text-disabled:#9aa5b6;--color-primary:var(--cyan-700);--color-primary-strong:#055a74;--color-primary-soft:#08708f1a;--color-action:#f2c14e;--color-action-hover:#f7d47e;--color-action-strong:var(--amber-600);--color-sim:var(--violet-600);--color-sim-soft:#6d4fd61a;--color-success:var(--green-600);--color-success-soft:#13784a1a;--color-warning:var(--orange-600);--color-warning-soft:#a14e0c1a;--color-danger:var(--red-700);--color-danger-strong:var(--red-700);--color-danger-soft:#c63a3a1a;--color-focus:var(--cyan-700);--shadow-1:0 1px 2px #14234614;--shadow-2:0 6px 16px #1423461a;--shadow-3:0 18px 48px #1423462e;--chart-1:#2a78d6;--chart-2:#eb6834;--chart-3:#1baf7a;--chart-4:#eda100;--chart-5:#e87ba4;--chart-6:#008300;--chart-7:#6250d6;--chart-8:#e34948;--chart-surface:#fff;--chart-grid:#14234614;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-body);line-height:var(--leading-body);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--color-primary);text-underline-offset:2px}img,svg{display:block}svg{flex:none}svg[display=none],svg [display=none]{display:none}h1,h2,h3{line-height:var(--leading-tight);letter-spacing:-.005em;margin:0}h1{font-size:var(--text-page);font-weight:var(--weight-semibold)}h2{font-size:var(--text-title);font-weight:var(--weight-semibold)}h3{font-size:var(--text-small);font-weight:var(--weight-semibold);color:var(--color-text-secondary);margin-top:var(--space-2)}p{margin:0}code,pre,kbd,.mono{font-family:var(--font-mono);font-size:var(--text-small)}kbd{border-radius:var(--radius-4);border:1px solid var(--color-border-strong);background:var(--color-surface-raised);font-size:var(--text-caption);padding:1px 6px}::selection{background:var(--color-primary-soft)}:focus{outline:none}:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-4);outline:none}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border-radius:var(--radius-full);background:#94aad638 padding-box padding-box;border:2px solid #0000}::-webkit-scrollbar-thumb:hover{background:#94aad659 padding-box padding-box;border:2px solid #0000}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--space-3);top:var(--space-3);z-index:var(--z-tooltip);padding:var(--space-2) var(--space-3);background:var(--color-action);color:var(--color-text-on-action);border-radius:var(--radius-control);font-weight:var(--weight-semibold);transition:transform var(--motion-base) var(--ease-out);position:fixed;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.muted{color:var(--color-text-secondary)}.faint{color:var(--color-text-muted);font-size:var(--text-small)}.small{font-size:var(--text-small)}.right{margin-left:auto}.nowrap{white-space:nowrap}.grow{flex:auto;min-width:0}.text-right{text-align:right}.col.gap-4{gap:var(--space-4)}.row.tight{gap:6px}.col.tight{gap:2px}.w-80{width:80px}.w-100{width:100px}.w-120{width:120px}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.col{gap:var(--space-2);flex-direction:column;display:flex}.grid{gap:var(--card-gap);display:grid}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(380px,1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.scroll{overflow:auto}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(4px)}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px)scale(.98)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.col.gap-3{gap:var(--space-3)}.cell-wide{max-width:280px}.app{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);grid-template-rows:var(--topbar-height) minmax(0, 1fr) var(--statusbar-height);height:100%;transition:grid-template-columns var(--motion-slow) var(--ease-out);display:grid}.app.nav-collapsed{grid-template-columns:var(--sidebar-width-collapsed) minmax(0, 1fr)}.topbar{z-index:var(--z-chrome);align-items:center;gap:var(--space-3);padding:0 var(--space-3) 0 var(--space-4);background:var(--color-chrome);border-bottom:1px solid var(--color-border);grid-area:1/1/auto/-1;min-width:0;display:flex;position:relative}.topbar:after{content:"";opacity:0;background:var(--mode-color);height:2px;transition:opacity var(--motion-slow) var(--ease-out), background-color var(--motion-slow) var(--ease-out);position:absolute;bottom:-1px;left:0;right:0}:root[data-run=running] .topbar:after{opacity:1}:root[data-run=paused] .topbar:after{opacity:1;background:var(--color-action)}:root[data-run=error] .topbar:after{opacity:1;background:var(--color-danger)}.brand{align-items:center;gap:var(--space-2);white-space:nowrap;min-width:0;display:flex}.brand .word{font-size:15px;font-weight:var(--weight-semibold);letter-spacing:.005em}.brand .word b{font-weight:var(--weight-medium);color:var(--color-text-secondary)}.topbar .divider{background:var(--color-border);flex:none;width:1px;height:24px}.project-chip{flex-direction:column;min-width:0;max-width:280px;line-height:1.25;display:flex}.project-chip .name{font-weight:var(--weight-medium);font-size:var(--text-body);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-chip .state{font-size:var(--text-caption);color:var(--color-text-muted);white-space:nowrap;align-items:center;gap:6px;display:flex}.topbar .spacer{min-width:var(--space-2);flex:1}.topbar-group{align-items:center;gap:var(--space-2);display:flex}.sidebar{z-index:var(--z-sticky);padding:var(--space-2);background:var(--color-chrome);border-right:1px solid var(--color-border);flex-direction:column;grid-area:2/1;gap:2px;display:flex;position:relative;overflow:hidden auto}.nav-group{padding:var(--space-4) var(--space-2) var(--space-1);font-size:var(--text-caption);font-weight:var(--weight-semibold);color:var(--color-text-muted);white-space:nowrap}.nav-group:first-child{padding-top:var(--space-2)}.nav-item{align-items:center;gap:var(--space-3);height:var(--nav-item-height);padding:0 var(--space-2) 0 10px;border-radius:var(--radius-control);color:var(--color-text-secondary);font-size:var(--text-body);text-align:left;white-space:nowrap;width:100%;transition:background-color var(--motion-fast) var(--ease-out), color var(--motion-fast) var(--ease-out);background:0 0;border:none;display:flex;position:relative}.nav-item:hover{background:var(--color-surface-hover);color:var(--color-text)}.nav-item.active{background:var(--color-primary-soft);color:var(--color-text);font-weight:var(--weight-medium)}.nav-item.active:before{content:"";background:var(--color-primary);border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:-8px}.nav-item .ico{width:20px;color:var(--color-text-muted);transition:color var(--motion-fast);place-items:center;display:grid}.nav-item:hover .ico{color:var(--color-text-secondary)}.nav-item.active .ico{color:var(--color-primary)}.nav-item .label{text-overflow:ellipsis;overflow:hidden}.nav-item .badge{margin-left:auto}.nav-foot{padding-top:var(--space-2);border-top:1px solid var(--color-divider);flex-direction:column;gap:2px;margin-top:auto;display:flex}.nav-foot .device{padding:var(--space-2) 10px;font-size:var(--text-caption);color:var(--color-text-muted);white-space:normal;line-height:1.4}.app.nav-collapsed .nav-item{justify-content:center;gap:0;padding:0}.app.nav-collapsed .nav-item .label,.app.nav-collapsed .nav-foot .device{display:none}.app.nav-collapsed .nav-group{height:1px;margin:var(--space-3) var(--space-2);background:var(--color-divider);padding:0;font-size:0;overflow:hidden}.app.nav-collapsed .nav-group:first-child{margin-top:var(--space-1)}.app.nav-collapsed .nav-item .badge{position:absolute;top:2px;right:2px;transform:scale(.85)}.app.nav-collapsed .nav-item[data-label]:hover:after,.app.nav-collapsed .nav-item[data-label]:focus-visible:after{content:attr(data-label);left:calc(var(--sidebar-width-collapsed) + 6px);border-radius:var(--radius-control);background:var(--color-surface-raised);color:var(--color-text);border:1px solid var(--color-border-strong);box-shadow:var(--shadow-2);font-size:var(--text-small);font-weight:var(--weight-medium);white-space:nowrap;z-index:var(--z-tooltip);pointer-events:none;animation:fade-in var(--motion-fast) var(--ease-out);padding:5px 10px;position:fixed;transform:translateY(0)}main{flex-direction:column;grid-area:2/2;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}main:focus{outline:none}.view{flex:1;min-height:0;position:relative;overflow:auto}.source-banner{align-items:center;gap:var(--space-2);min-height:30px;padding:0 var(--space-4);font-size:var(--text-small);color:var(--color-text-secondary);background:color-mix(in srgb, var(--mode-color) 9%, var(--color-chrome));border-bottom:1px solid color-mix(in srgb, var(--mode-color) 28%, transparent);box-shadow:inset 3px 0 0 var(--mode-color);transition:background-color var(--motion-slow) var(--ease-out), border-color var(--motion-slow) var(--ease-out), box-shadow var(--motion-slow) var(--ease-out);flex:none;display:flex}.source-banner .kind{color:var(--mode-color);font-weight:var(--weight-semibold);transition:color var(--motion-slow) var(--ease-out);align-items:center;gap:6px;display:inline-flex}.source-banner a,.source-banner .link{color:var(--color-primary);font-size:inherit;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.page{gap:var(--space-5);min-height:100%;padding:var(--page-padding) var(--page-padding) var(--space-8);width:100%;max-width:1760px;animation:rise-in var(--motion-slow) var(--ease-out);flex-direction:column;margin:0 auto;display:flex}.page.full{max-width:none;height:100%;padding:0;animation:none}.page-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap;display:flex}.page-header .titles{flex-direction:column;gap:4px;min-width:0;display:flex}.page-header .title-row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.page-header .description{color:var(--color-text-secondary);font-size:var(--text-body);max-width:760px}.page-header .actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.section-title{align-items:center;gap:var(--space-2);font-size:var(--text-title);font-weight:var(--weight-semibold);display:flex}.statusbar{z-index:var(--z-chrome);background:var(--color-chrome);border-top:1px solid var(--color-border);min-width:0;font-size:var(--text-caption);color:var(--color-text-secondary);grid-area:3/1/auto/-1;align-items:stretch;display:flex;position:relative;overflow:hidden}.sb-seg{padding:0 var(--space-3);white-space:nowrap;border-right:1px solid var(--color-divider);color:inherit;font-size:inherit;background:0 0;border-top:none;border-bottom:none;border-left:none;align-items:center;gap:6px;display:flex}button.sb-seg{cursor:pointer}button.sb-seg:hover{background:var(--color-surface-hover);color:var(--color-text)}.sb-seg.mode{color:var(--mode-color);font-weight:var(--weight-semibold);transition:color var(--motion-slow) var(--ease-out)}.sb-seg .lbl{color:var(--color-text-muted)}.sb-seg .val{font-family:var(--font-mono);color:var(--color-text)}.sb-seg.end{border-right:none;border-left:1px solid var(--color-divider);margin-left:auto}.led{width:9px;height:9px;box-shadow:inset 0 0 0 1.5px var(--color-text-muted);transition:background-color var(--motion-fast), box-shadow var(--motion-fast);background:0 0;border-radius:50%}.led.on{background:var(--color-action);box-shadow:inset 0 0 0 1.5px var(--color-action-strong), 0 0 6px color-mix(in srgb, var(--color-action) 70%, transparent)}.led.run{background:var(--color-success);box-shadow:inset 0 0 0 1.5px var(--color-success), 0 0 6px color-mix(in srgb, var(--color-success) 60%, transparent)}.led-group{align-items:center;gap:4px;display:inline-flex}.led-cell{align-items:center;gap:3px;display:inline-flex}.led-cell .n{font-family:var(--font-mono);color:var(--color-text-muted);font-size:11px}@media (max-width:1380px){.runpad .btn .lbl{display:none}.runpad .btn{padding:0 9px}}@media (max-width:1280px){.project-chip{max-width:180px}.conn-label{display:none}:root{--page-padding:var(--space-5)}}@media (max-width:1100px){.brand .word,.topbar .divider.d1,.sb-seg.hide-m{display:none}}@media (max-width:860px){.project-chip{display:none}:root{--page-padding:var(--space-4)}.sb-seg.hide-s{display:none}}.run-chip{align-items:center;gap:var(--space-2);white-space:nowrap;min-width:92px;display:inline-flex}.confirm-text{white-space:pre-wrap;color:var(--color-text-secondary)}.led-cell .val{align-items:center;gap:1px;display:inline-flex}.btn{justify-content:center;align-items:center;gap:var(--space-2);height:var(--control-height);padding:0 var(--space-3);border-radius:var(--radius-control);border:1px solid var(--button-border);background:var(--button-bg);color:var(--color-text);font-size:var(--text-body);font-weight:var(--weight-medium);white-space:nowrap;transition:background-color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out), color var(--motion-fast) var(--ease-out), transform var(--motion-fast) var(--ease-out);line-height:1;display:inline-flex}.btn svg{color:currentColor;opacity:.9}.btn:hover:not(:disabled){background:var(--button-bg-hover);border-color:var(--color-border-hover)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn[aria-busy=true]{cursor:progress}.btn.primary{background:var(--color-action);color:var(--color-text-on-action);font-weight:var(--weight-semibold);border-color:#0000}.btn.primary:hover:not(:disabled){background:var(--color-action-hover);border-color:#0000}.btn.ok{background:var(--color-success);color:#04170d;font-weight:var(--weight-semibold);border-color:#0000}.btn.ok:hover:not(:disabled){background:color-mix(in srgb, var(--color-success) 85%, white)}.btn.danger{border-color:color-mix(in srgb, var(--color-danger) 45%, transparent);color:var(--color-danger);background:0 0}.btn.danger:hover:not(:disabled){background:var(--color-danger-soft);border-color:var(--color-danger)}.btn.ghost{color:var(--color-text-secondary);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text);border-color:#0000}.btn.small{height:var(--control-height-sm);font-size:var(--text-small);gap:6px;padding:0 10px}.btn.icon{width:var(--control-height);padding:0}.btn.small.icon{width:var(--control-height-sm)}.btn-group{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:inline-flex}.btn-group.end{justify-content:flex-end;display:flex}.btn .spinner{width:14px;height:14px}.runpad{border-radius:var(--radius-8);background:var(--color-surface-sunken);border:1px solid var(--color-border);align-items:center;gap:2px;padding:2px;display:inline-flex}.runpad .btn{height:28px;color:var(--color-text-secondary);font-size:var(--text-small);background:0 0;border:none;padding:0 10px}.runpad .btn:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text)}.runpad .btn.go{background:var(--color-success);color:#04170d;font-weight:var(--weight-semibold)}.runpad .btn.go:hover:not(:disabled){background:color-mix(in srgb, var(--color-success) 85%, white)}.runpad .btn.go:disabled{color:var(--color-success);opacity:.45;background:0 0}.runpad .btn.halt:not(:disabled){color:var(--color-danger)}.runpad .btn.halt:hover:not(:disabled){background:var(--color-danger-soft)}.seg{border-radius:var(--radius-8);background:var(--color-surface-sunken);border:1px solid var(--color-border);gap:2px;padding:2px;display:inline-flex}.seg button{border-radius:var(--radius-control);height:28px;color:var(--color-text-muted);font-size:var(--text-small);font-weight:var(--weight-medium);transition:background-color var(--motion-base) var(--ease-out), color var(--motion-base) var(--ease-out);background:0 0;border:none;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.seg button:hover{color:var(--color-text)}.seg button[aria-pressed=true],.seg button.on{background:var(--color-surface-raised);color:var(--color-text);box-shadow:var(--shadow-1), inset 0 0 0 1px var(--color-field-border)}.seg button.on-sim{background:var(--color-sim-soft);color:var(--color-sim)}.seg button.on-hw{background:var(--color-hw-soft);color:var(--color-hw)}.switch{border-radius:var(--radius-full);border:1px solid var(--color-border-strong);background:var(--color-surface-active);cursor:pointer;width:38px;height:22px;transition:background-color var(--motion-base) var(--ease-out), border-color var(--motion-base) var(--ease-out);flex:none;padding:0;position:relative}.switch:hover:not(:disabled){border-color:var(--color-border-hover)}.switch .switch-thumb{background:var(--color-text-secondary);width:16px;height:16px;box-shadow:var(--shadow-1);transition:transform var(--motion-base) var(--ease-out), background-color var(--motion-base) var(--ease-out);border-radius:50%;position:absolute;top:2px;left:2px}.switch.on{background:var(--color-primary);border-color:#0000}.switch.on .switch-thumb{background:var(--color-text-on-action);transform:translate(16px)}.switch:disabled{opacity:.42;cursor:not-allowed}.pill{align-items:center;gap:var(--space-2);border-radius:var(--radius-control);border:1px solid var(--color-border);height:30px;color:var(--color-text-secondary);font-size:var(--text-small);white-space:nowrap;transition:background-color var(--motion-fast), border-color var(--motion-fast);background:0 0;padding:0 10px;display:inline-flex}.pill:hover{background:var(--color-surface-hover);color:var(--color-text)}.badge,.tag{border-radius:var(--radius-full);height:22px;font-size:var(--text-caption);font-weight:var(--weight-medium);white-space:nowrap;background:var(--color-surface-active);color:var(--color-text-secondary);border:1px solid #0000;align-items:center;gap:5px;padding:0 8px;line-height:1;display:inline-flex}.badge svg,.tag svg{width:13px;height:13px}.col>.badge,.col>.tag{align-self:flex-start}.tag.ok,.badge.success{background:var(--color-success-soft);color:var(--color-success)}.tag.warn,.badge.warning{background:var(--color-warning-soft);color:var(--color-warning)}.tag.fail,.badge.danger{background:var(--color-danger-soft);color:var(--color-danger)}.tag.info,.badge.info{background:var(--color-primary-soft);color:var(--color-primary)}.tag.sim,.badge.sim{background:var(--color-sim-soft);color:var(--color-sim)}.tag.hw,.badge.hw{background:var(--color-hw-soft);color:var(--color-hw)}.tag.rec,.badge.rec{background:var(--color-warning-soft);color:var(--color-warning)}.tag.neutral,.badge.neutral{color:var(--color-text-secondary);border-color:var(--color-border-strong);background:0 0}.tag.exp,.badge.exp{color:var(--color-warning);border:1px dashed color-mix(in srgb, var(--color-warning) 55%, transparent);background:0 0}.status{font-size:var(--text-small);font-weight:var(--weight-medium);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.status svg{width:16px;height:16px}.status.ok{color:var(--color-success)}.status.warn{color:var(--color-warning)}.status.fail{color:var(--color-danger)}.status.off,.status.skip,.status.unknown{color:var(--color-text-muted)}.status.checking{color:var(--color-primary)}.status.sim{color:var(--color-sim)}.status.hw{color:var(--color-hw)}.status .text{color:var(--color-text);font-weight:var(--weight-medium)}.dot{background:var(--color-text-disabled);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.dot.ok{background:var(--color-success)}.dot.warn{background:var(--color-warning)}.dot.fail{background:var(--color-danger)}.dot.sim{background:var(--color-sim)}.dot.info{background:var(--color-primary)}.dot.skip,.dot.unknown{background:var(--color-text-disabled)}.spinner{border:2px solid color-mix(in srgb, currentColor 25%, transparent);border-top-color:currentColor;border-radius:50%;flex:none;width:16px;height:16px;animation:.8s linear infinite spin}.card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-card);padding:var(--card-padding);min-width:0;box-shadow:var(--shadow-1)}.card.flush{padding:0}.card.flush>.card-head{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-divider);margin:0}.card.flush>.card-body{padding:var(--space-3) var(--space-4)}.card-head{align-items:center;gap:var(--space-2);min-height:28px;margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.card-head .card-title{font-size:var(--text-title);font-weight:var(--weight-semibold);align-items:center;gap:var(--space-2);display:flex}.card-head .card-title svg{color:var(--color-text-muted)}.card-head .card-sub{font-size:var(--text-small);color:var(--color-text-muted);font-weight:var(--weight-regular)}.card-head .card-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-left:auto;display:flex}.card>h2{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.card>h2 .faint{font-weight:var(--weight-regular)}.card h3{margin-bottom:var(--space-2)}.kpi{flex-direction:column;gap:6px;min-width:0;display:flex}.kpi .kpi-label{font-size:var(--text-small);color:var(--color-text-secondary);align-items:center;gap:6px;display:flex}.kpi .kpi-label svg{color:var(--color-text-muted);width:16px;height:16px}.kpi .kpi-value{align-items:center;gap:var(--space-2);font-size:var(--text-page);font-weight:var(--weight-semibold);min-width:0;line-height:1.2;display:flex}.kpi .kpi-value .ellipsis{min-width:0}.kpi .kpi-meta{font-size:var(--text-small);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.stat{flex-direction:column;gap:2px;display:flex}.stat .v{font-family:var(--font-mono);font-size:var(--text-page);font-weight:var(--weight-medium)}.stat .l{font-size:var(--text-small);color:var(--color-text-secondary)}.meter{border-radius:var(--radius-full);background:var(--color-surface-active);height:8px;position:relative;overflow:hidden}.meter>.fill{border-radius:inherit;background:var(--color-primary);transition:width var(--motion-base) linear;position:absolute;inset:0 auto 0 0}.meter>.range{background:color-mix(in srgb, var(--color-primary) 22%, transparent);position:absolute;top:0;bottom:0}.meter.sim>.fill{background:var(--color-sim)}.bar{border-radius:var(--radius-full);background:var(--color-surface-active);height:6px;overflow:hidden}.bar>div{border-radius:inherit;background:var(--color-primary);height:100%;transition:width var(--motion-base) linear}.tabs{gap:var(--space-1);border-bottom:1px solid var(--color-border);flex:none;display:flex;overflow-x:auto}.tab{align-items:center;gap:var(--space-2);height:38px;padding:0 var(--space-3);color:var(--color-text-secondary);font-size:var(--text-body);font-weight:var(--weight-medium);white-space:nowrap;transition:color var(--motion-fast) var(--ease-out);background:0 0;border:none;display:inline-flex;position:relative}.tab:hover,.tab.active,.tab[aria-selected=true]{color:var(--color-text)}.tab:after{content:"";left:var(--space-2);right:var(--space-2);background:var(--color-primary);height:2px;transition:transform var(--motion-base) var(--ease-out);border-radius:2px 2px 0 0;position:absolute;bottom:-1px;transform:scaleX(0)}.tab.active:after,.tab[aria-selected=true]:after{transform:scaleX(1)}.tab .count{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-muted);background:var(--color-surface-active);border-radius:var(--radius-full);padding:1px 6px}.table-wrap{border-radius:var(--radius-control);overflow:auto}table.tbl{border-collapse:collapse;width:100%;font-size:var(--text-small)}table.tbl th,table.tbl td{text-align:left;border-bottom:1px solid var(--color-divider);vertical-align:middle;padding:8px 10px}table.tbl th{z-index:1;background:var(--color-surface);color:var(--color-text-muted);font-size:var(--text-caption);font-weight:var(--weight-semibold);white-space:nowrap;position:sticky;top:0}table.tbl tr:last-child td{border-bottom:none}table.tbl tr.clickable{cursor:pointer}table.tbl tr.clickable:hover td{background:var(--table-row-hover)}table.tbl tr.selected td{background:var(--color-primary-soft)}table.tbl tr.selected td:first-child{box-shadow:inset 2px 0 0 var(--color-primary)}table.tbl td.num,table.tbl th.num{text-align:right}table.tbl td.num{font-family:var(--font-mono)}table.tbl .mono{font-size:var(--text-small)}input[type=text],input[type=number],input[type=url],input[type=search],select,textarea{height:var(--control-height);border-radius:var(--radius-control);background:var(--input-bg);border:1px solid var(--input-border);min-width:0;color:var(--color-text);font-size:var(--text-body);transition:border-color var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out);padding:0 10px}input[type=number]{font-family:var(--font-mono);font-size:var(--text-small)}textarea{resize:vertical;width:100%;height:auto;line-height:var(--leading-body);padding:8px 10px}select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--color-text-muted) 50%), linear-gradient(135deg, var(--color-text-muted) 50%, transparent 50%);background-position:calc(100% - 15px),calc(100% - 10px);background-repeat:no-repeat;background-size:5px 5px;padding-right:28px}input:hover,select:hover,textarea:hover{border-color:var(--color-field-border-hover)}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--color-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-focus) 22%, transparent);border-radius:var(--radius-control)}input::placeholder,textarea::placeholder{color:var(--color-text-muted)}label.field{font-size:var(--text-small);color:var(--color-text-secondary);font-weight:var(--weight-medium);flex-direction:column;gap:6px;display:flex}label.field .hint{font-weight:var(--weight-regular);color:var(--color-text-muted)}label.check{align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-body);display:inline-flex}input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--color-primary)}input[type=checkbox]{width:16px;height:16px}.field-row{align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;display:flex}.io-grid{gap:var(--space-2);grid-template-columns:repeat(8,minmax(0,1fr));display:grid}.io-cell{border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);-webkit-user-select:none;user-select:none;transition:background-color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out);flex-direction:column;align-items:center;gap:6px;padding:10px 4px 8px;display:flex}.io-cell .faint{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-secondary)}.io-cell .v{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-muted)}.io-cell .v:before{content:"";width:12px;height:12px;box-shadow:inset 0 0 0 1.5px var(--color-text-muted);transition:background-color var(--motion-fast), box-shadow var(--motion-fast);background:0 0;border-radius:50%;margin:0 auto 4px;display:block}.io-cell.on{background:color-mix(in srgb, var(--color-action) 10%, var(--color-surface-sunken));border-color:color-mix(in srgb, var(--color-action) 45%, transparent)}.io-cell.on .v{color:var(--color-action)}.io-cell.on .v:before{background:var(--color-action);box-shadow:inset 0 0 0 1.5px var(--color-action-strong), 0 0 8px color-mix(in srgb, var(--color-action) 60%, transparent)}.io-cell.clickable{cursor:pointer}button.io-cell{font:inherit;color:inherit;width:100%}.io-cell.clickable:hover{border-color:var(--color-border-hover)}.io-cell.clickable:active{transform:translateY(1px)}.io-cell:has(.lamp) .v:before{display:none}.module-label{font-size:var(--text-caption);color:var(--color-text-muted);margin-bottom:6px}.motor{align-items:center;gap:var(--space-3);border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);min-width:0;padding:10px 12px;display:flex}.motor .motor-name{font-weight:var(--weight-semibold);font-family:var(--font-mono);font-size:var(--text-body);min-width:30px}.motor .motor-state{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.motor .motor-line{align-items:center;gap:var(--space-2);font-size:var(--text-small);color:var(--color-text-secondary);display:flex}.wheel{border:2px solid var(--color-border-strong);background:repeating-conic-gradient(var(--color-surface-active) 0 45deg, var(--color-surface-sunken) 0 90deg);width:30px;height:30px;transition:border-color var(--motion-base);border-radius:50%;flex:none}.wheel.on{border-color:var(--color-success)}.level{grid-template-columns:repeat(8,6px);align-items:end;gap:2px;height:12px;display:inline-grid}.level i{background:var(--color-surface-active);border-radius:1px;height:100%;display:block}.level i.on{background:var(--color-success)}.lamp{width:20px;height:20px;box-shadow:inset 0 0 0 1.5px var(--color-text-muted);transition:background-color var(--motion-fast), box-shadow var(--motion-fast);background:0 0;border-radius:50%;flex:none}.chart{background:var(--chart-surface);border:1px solid var(--color-border);border-radius:var(--radius-control);width:100%;height:120px;display:block}.ts-chart{width:100%;position:relative}.ts-chart .uplot{font-family:var(--font-ui)}.ts-chart .u-over{cursor:crosshair}.ts-chart .u-cursor-x{border-right:1px solid color-mix(in srgb, var(--color-text) 40%, transparent)!important}.ts-chart .u-cursor-y{display:none}.ts-legend{margin-top:var(--space-2);flex-wrap:wrap;gap:4px 12px;display:flex}.ts-legend button{border-radius:var(--radius-control);height:24px;color:var(--color-text-secondary);font-size:var(--text-small);background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:0 8px;display:inline-flex}.ts-legend button:hover{background:var(--color-surface-hover);color:var(--color-text)}.ts-legend button[aria-pressed=false]{color:var(--color-text-disabled)}.ts-legend button[aria-pressed=false] .key{opacity:.3}.ts-legend .key{border-radius:1px;flex:none;width:14px;height:2px}.ts-legend .val{font-family:var(--font-mono);color:var(--color-text)}.ts-tooltip{z-index:var(--z-tooltip);pointer-events:none;border-radius:var(--radius-control);background:var(--color-surface-raised);border:1px solid var(--color-border-strong);min-width:140px;box-shadow:var(--shadow-2);font-size:var(--text-small);padding:8px 10px;position:absolute}.ts-tooltip .t{color:var(--color-text-muted);font-size:var(--text-caption);margin-bottom:4px}.ts-tooltip .r{align-items:center;gap:8px;line-height:1.6;display:flex}.ts-tooltip .r .key{border-radius:1px;flex:none;width:12px;height:2px}.ts-tooltip .r b{font-family:var(--font-mono);font-weight:var(--weight-medium);text-align:right;min-width:40px}.ts-tooltip .r span{color:var(--color-text-secondary)}.chart-empty{border:1px dashed var(--color-border-strong);border-radius:var(--radius-control);color:var(--color-text-muted);font-size:var(--text-small);text-align:center;padding:var(--space-4);place-items:center;display:grid}.modal-backdrop{z-index:var(--z-dialog);padding:var(--space-4);background:var(--color-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade-in var(--motion-base) var(--ease-out);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-dialog);width:min(640px,100%);max-height:min(88vh,900px);box-shadow:var(--shadow-3);animation:pop-in var(--motion-slow) var(--ease-out);flex-direction:column;display:flex;overflow:hidden}.modal.wide{width:min(1040px,100%)}.modal header{align-items:center;gap:var(--space-2);min-height:52px;padding:0 var(--space-3) 0 var(--space-5);border-bottom:1px solid var(--color-divider);font-size:var(--text-title);font-weight:var(--weight-semibold);display:flex}.modal .body{padding:var(--space-5);gap:var(--space-4);flex-direction:column;display:flex;overflow:auto}.modal footer{justify-content:flex-end;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-top:1px solid var(--color-divider);background:var(--color-surface-sunken);display:flex}.toasts{right:var(--space-4);bottom:calc(var(--statusbar-height) + var(--space-4));z-index:var(--z-toast);gap:var(--space-2);flex-direction:column;max-width:420px;display:flex;position:fixed}.toast{align-items:flex-start;gap:var(--space-2);border-radius:var(--radius-8);background:var(--color-surface-raised);border:1px solid var(--color-border-strong);box-shadow:var(--shadow-2);font-size:var(--text-body);animation:pop-in var(--motion-slow) var(--ease-out);padding:10px 14px;display:flex}.toast svg{margin-top:2px}.toast.info svg{color:var(--color-primary)}.toast.success svg{color:var(--color-success)}.toast.warning svg{color:var(--color-warning)}.toast.error svg{color:var(--color-danger)}.callout{align-items:flex-start;gap:var(--space-3);border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);font-size:var(--text-body);color:var(--color-text-secondary);padding:10px 14px;display:flex}.callout>svg{color:var(--color-primary);margin-top:2px}.callout strong{color:var(--color-text)}.callout.warn{background:var(--color-warning-soft);border-color:color-mix(in srgb, var(--color-warning) 30%, transparent)}.callout.warn>svg{color:var(--color-warning)}.callout.fail{background:var(--color-danger-soft);border-color:color-mix(in srgb, var(--color-danger) 30%, transparent)}.callout.fail>svg{color:var(--color-danger)}.callout.sim{background:var(--color-sim-soft);border-color:color-mix(in srgb, var(--color-sim) 30%, transparent)}.callout.sim>svg{color:var(--color-sim)}.callout.ok{background:var(--color-success-soft);border-color:color-mix(in srgb, var(--color-success) 30%, transparent)}.callout.ok>svg{color:var(--color-success)}.empty{align-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--text-body);flex-direction:column;display:flex}.empty svg{color:var(--color-text-disabled);width:28px;height:28px}.empty strong{color:var(--color-text-secondary);font-weight:var(--weight-medium)}.err-boundary{margin:var(--space-5);padding:var(--space-4);border-radius:var(--radius-card);border:1px solid color-mix(in srgb, var(--color-danger) 40%, transparent);background:var(--color-danger-soft);gap:var(--space-2);flex-direction:column;display:flex}.kv{font-size:var(--text-body);grid-template-columns:max-content minmax(0,1fr);gap:8px 20px;display:grid}.kv>:nth-child(odd){color:var(--color-text-muted);font-size:var(--text-small);padding-top:1px}.steps{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.steps li{align-items:flex-start;gap:var(--space-2);font-size:var(--text-body);display:flex}.steps li svg{margin-top:2px}.console{white-space:pre-wrap;border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);max-height:220px;font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-secondary);margin:0;padding:10px 12px;line-height:1.65;overflow:auto}.progress{border-radius:var(--radius-full);background:var(--color-surface-active);height:6px;position:relative;overflow:hidden}.progress>div{border-radius:inherit;background:var(--color-primary);height:100%;transition:width var(--motion-slow) var(--ease-out)}.progress.indeterminate>div{width:40%;animation:indeterminate 1.2s var(--ease-out) infinite}.issue{border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);cursor:pointer;transition:border-color var(--motion-fast);flex-direction:column;gap:6px;padding:10px 12px;display:flex}.issue:hover{border-color:var(--color-border-strong)}.issue .issue-head{align-items:flex-start;gap:var(--space-2);font-size:var(--text-body);display:flex}.issue .issue-head svg{margin-top:2px}.issue.error .issue-head svg{color:var(--color-danger)}.issue.warning .issue-head svg{color:var(--color-warning)}.issue.info .issue-head svg{color:var(--color-primary)}[data-tip]{position:relative}[data-tip]:hover:after,[data-tip]:focus-visible:after{content:attr(data-tip);border-radius:var(--radius-control);background:var(--color-surface-raised);color:var(--color-text);border:1px solid var(--color-border-strong);box-shadow:var(--shadow-2);font-size:var(--text-caption);font-weight:var(--weight-medium);white-space:nowrap;z-index:var(--z-tooltip);pointer-events:none;animation:fade-in var(--motion-fast) var(--ease-out);padding:5px 9px;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}[data-tip][data-tip-align=end]:hover:after,[data-tip][data-tip-align=end]:focus-visible:after{left:auto;right:0;transform:none}.callout .callout-body{flex-direction:column;gap:2px;min-width:0;display:flex}.chart-empty-lg{min-height:240px}.file-btn{cursor:pointer}.file-btn:focus-within{box-shadow:var(--focus-ring)}.editor-layout{grid-template-columns:minmax(0, 1fr) var(--editor-panel-width);height:100%;min-height:0;display:grid}.editor-layout.panel-hidden{grid-template-columns:minmax(0,1fr)}@media (max-width:1200px){.editor-layout{--editor-panel-width:300px}}.editor-main{flex-direction:column;min-width:0;min-height:0;display:flex;container:editor/inline-size}.blockly-host{isolation:isolate;flex:1;min-height:0;position:relative}.sheet-tabs{height:var(--tabstrip-height);padding:0 var(--space-2);background:var(--color-chrome);border-bottom:1px solid var(--color-border);scrollbar-width:thin;flex:none;align-items:stretch;display:flex;overflow:auto hidden}.sheet-tab{min-width:0;max-width:240px;color:var(--color-text-muted);border-right:1px solid var(--color-divider);transition:background-color var(--motion-fast), color var(--motion-fast);flex:none;align-items:center;display:flex;position:relative}.sheet-tab:first-child{border-left:1px solid var(--color-divider)}.sheet-tab:hover{color:var(--color-text-secondary);background:var(--color-surface-hover)}.sheet-tab.active{color:var(--color-text);background:var(--color-surface)}.sheet-tab.active:before{content:"";background:var(--color-primary);height:2px;position:absolute;top:0;left:0;right:0}.sheet-tab.active:after{content:"";background:var(--color-surface);height:1px;position:absolute;bottom:-1px;left:0;right:0}.sheet-btn{min-width:0;height:100%;color:inherit;font-size:var(--text-small);font-weight:var(--weight-medium);cursor:pointer;background:0 0;border:none;align-items:center;gap:7px;padding:0 8px 0 12px;display:flex}.sheet-btn svg{opacity:.7;flex:none}.sheet-btn:focus-visible{outline-offset:-3px}.sheet-close{border-radius:var(--radius-4);width:24px;height:24px;color:var(--color-text-muted);opacity:0;cursor:pointer;transition:opacity var(--motion-fast), background-color var(--motion-fast);background:0 0;border:none;flex:none;justify-content:center;align-items:center;margin-right:4px;display:inline-flex}.sheet-tab.active .sheet-close,.sheet-tab:hover .sheet-close,.sheet-close:focus-visible{opacity:1}.sheet-close:hover{background:var(--color-surface-active);color:var(--color-text)}.sheet-rename{width:170px;height:26px;font-size:var(--text-small);margin:0 6px;padding:0 8px}.sheet-add{border-radius:var(--radius-control);width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-self:center;align-items:center;margin-left:4px;display:inline-flex}.sheet-add:hover{color:var(--color-text);background:var(--color-surface-hover)}.editor-toolbar{align-items:center;gap:var(--space-2);min-height:46px;padding:7px var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;flex:none;display:flex}.editor-toolbar .btn.small{height:30px}.editor-toolbar .btn.small.icon{width:30px}.tool-group{align-items:center;gap:2px;display:flex}.editor-toolbar .vsep{background:var(--color-border);width:1px;height:20px;margin:0 2px}.toolbar-end{align-items:center;gap:var(--space-2);margin-left:auto;display:flex}.problem-chip{border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-surface-sunken);height:30px;color:var(--color-text-secondary);font-size:var(--text-small);font-weight:var(--weight-medium);white-space:nowrap;cursor:pointer;transition:border-color var(--motion-fast), background-color var(--motion-fast);align-items:center;gap:10px;padding:0 12px;display:inline-flex}.problem-chip:hover{border-color:var(--color-border-strong);background:var(--color-surface-hover);color:var(--color-text)}.problem-chip.clean>svg{color:var(--color-success)}.problem-chip .pc-part{font-family:var(--font-mono);color:var(--color-text);align-items:center;gap:5px;display:inline-flex}.problem-chip .pc-part.err svg{color:var(--color-danger)}.problem-chip .pc-part.warn svg{color:var(--color-warning)}@container editor (width<=1080px){.editor-toolbar .lbl{display:none}.editor-toolbar .btn.small:has(.lbl){width:30px;padding:0}}@container editor (width<=640px){.problem-chip.clean{gap:0;padding:0 8px;font-size:0}.block-search .s-kbd{display:none}}.block-search{flex:200px;min-width:160px;max-width:340px;position:relative}.block-search input{width:100%;height:30px;padding-left:32px;padding-right:64px}.block-search .s-ico{color:var(--color-text-muted);pointer-events:none;display:flex;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.block-search .s-kbd{pointer-events:none;color:var(--color-text-muted);font-size:11px;line-height:16px;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.block-search .results{z-index:var(--z-dropdown);background:var(--color-surface-raised);border:1px solid var(--color-border-strong);border-radius:var(--radius-8);width:max(100%,400px);max-height:380px;box-shadow:var(--shadow-2);animation:pop-in var(--motion-base) var(--ease-out);padding:4px;position:absolute;top:calc(100% + 6px);left:0;overflow:auto}.block-search .result{border-radius:var(--radius-control);cursor:pointer;font-size:var(--text-body);align-items:center;gap:10px;padding:7px 10px;display:flex}.block-search .result.sel{background:var(--color-surface-hover)}.block-search .result-cat{font-size:var(--text-caption);color:var(--color-text-muted);white-space:nowrap}.block-search .no-result{font-size:var(--text-small);color:var(--color-text-muted);padding:10px}.swatch{border-radius:3px;flex:none;width:10px;height:10px}.side-panel{background:var(--color-surface);border-left:1px solid var(--color-border);min-width:0;min-height:0;animation:fade-in var(--motion-base) var(--ease-out);flex-direction:column;display:flex;overflow:hidden}.side-panel>.tabs{height:var(--tabstrip-height);padding:0 var(--space-2);background:var(--color-chrome)}.side-panel>.tabs .tab{height:100%;font-size:var(--text-small)}.side-panel .panel-body{padding:var(--space-4);gap:var(--space-4);flex-direction:column;flex:1;display:flex;overflow:auto}.panel-note{font-size:var(--text-small);color:var(--color-text-muted);margin:0;line-height:1.5}.dbg-summary{gap:var(--space-3);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-divider);flex-direction:column;display:flex}.dbg-section{gap:var(--space-2);flex-direction:column;display:flex}.dbg-head{align-items:center;gap:var(--space-2);font-size:var(--text-small);font-weight:var(--weight-semibold);color:var(--color-text-secondary);margin:0;display:flex}.dbg-head svg{color:var(--color-text-muted)}.dbg-head .count{border-radius:var(--radius-full);background:var(--color-surface-active);color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-caption);font-weight:var(--weight-regular);margin-left:auto;padding:1px 7px}.thread-row{border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);flex-direction:column;gap:6px;padding:9px 10px;display:flex}.thread-row .t-top{align-items:center;gap:var(--space-2);font-size:var(--text-small);display:flex}.thread-row .t-name{min-width:0;font-weight:var(--weight-medium);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.thread-row .t-block{min-width:0;color:var(--color-primary);font-size:var(--text-small);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;display:flex}.thread-row .t-block:hover:not(:disabled) span{text-underline-offset:2px;text-decoration:underline}.thread-row .t-block:disabled{color:var(--color-text-muted);cursor:default}.thread-row .t-block span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.thread-row .t-stack{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-secondary)}.t-frame{align-items:center;gap:4px;display:flex}.t-frame svg{color:var(--color-text-muted);flex:none}.value-listing{font-family:var(--font-mono);font-size:var(--text-caption);text-align:left;margin:4px 0 0;padding-left:22px}table.tbl.compact td{padding:6px 8px}.io-readout{border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-muted);grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 10px;padding:10px;display:grid}.io-readout b{color:var(--color-text);font-weight:var(--weight-medium)}.io-readout .wide{grid-column:span 2}.trace-list{border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);max-height:220px;margin:0;padding:4px;list-style:none;overflow:auto}.trace-row,.log-line{grid-template-columns:78px 30px minmax(0,1fr);align-items:baseline;gap:6px;display:grid}.trace-row{border-radius:var(--radius-4);text-align:left;width:100%;min-height:24px;font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;padding:4px 6px}.trace-row:hover{background:var(--color-surface-hover);color:var(--color-text)}.tr-time{color:var(--color-text-muted);text-align:right;white-space:nowrap}.tr-thread{color:var(--color-primary)}.tr-block{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.console-tall{min-height:260px;max-height:none}.bp-row{align-items:center;gap:var(--space-2);display:flex}.bp-dot{background:var(--color-danger);border-radius:50%;flex:none;width:9px;height:9px}.bp-name{min-width:0;min-height:24px;color:var(--color-text);font-size:var(--text-small);text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;flex:1;padding:2px 0;overflow:hidden}.bp-name:hover{color:var(--color-primary)}.issue-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.issue-item{gap:var(--space-2);border-radius:var(--radius-control);background:var(--color-surface-sunken);border:1px solid var(--color-border);grid-template-columns:18px minmax(0,1fr);padding:10px 12px;display:grid}.issue-item .issue-ico{padding-top:2px;display:flex}.issue-item.error .issue-ico{color:var(--color-danger)}.issue-item.warning .issue-ico{color:var(--color-warning)}.issue-item.info .issue-ico{color:var(--color-primary)}.issue-main{flex-direction:column;gap:6px;min-width:0;display:flex}.issue-msg{color:var(--color-text);font-size:var(--text-body);text-align:left;background:0 0;border:none;padding:0;line-height:1.45}button.issue-msg{cursor:pointer}button.issue-msg:hover{color:var(--color-primary);text-underline-offset:2px;text-decoration:underline}.issue-expl{font-size:var(--text-small);color:var(--color-text-muted);margin:0;line-height:1.5}.code-block{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-sunken);flex-direction:column;min-height:0;display:flex}.code-head{justify-content:space-between;align-items:center;gap:var(--space-2);border-bottom:1px solid var(--color-divider);height:36px;font-size:var(--text-caption);color:var(--color-text-muted);padding:0 4px 0 12px;display:flex}.code-body{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-secondary);white-space:pre;tab-size:2;margin:0;padding:10px 12px;line-height:1.65;overflow:auto}.kpi-grid{gap:var(--card-gap);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}@media (max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.kpi-grid{grid-template-columns:minmax(0,1fr)}}.dash-grid{gap:var(--card-gap);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}@media (max-width:1400px){.span-3,.span-4,.span-5,.span-7{grid-column:span 6}.span-8{grid-column:span 12}}@media (max-width:1100px){.span-3,.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:span 12}}.dash-stack{gap:var(--card-gap);flex-direction:column;min-width:0;display:flex}.dash-stack>.dash-fill{flex-direction:column;flex:auto;display:flex}.dash-stack>.dash-fill>.col{flex:1}.io-foot{padding-top:var(--space-2);margin-top:auto}.analog-list{flex-direction:column;display:flex}.analog-row{align-items:center;gap:var(--space-3);border-bottom:1px solid var(--color-divider);grid-template-columns:52px minmax(0,1fr) 52px 92px;padding:7px 0;display:grid}.analog-row:last-child{border-bottom:none}.analog-row .name{font-family:var(--font-mono);font-size:var(--text-small);font-weight:var(--weight-medium)}.analog-row .value{font-family:var(--font-mono);font-size:var(--text-body);text-align:right}.analog-row .minmax{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-muted);text-align:right;white-space:nowrap}.scale-labels{font-family:var(--font-mono);color:var(--color-text-muted);justify-content:space-between;margin-top:2px;font-size:11px;display:flex}.chart-toolbar{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.motor-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.lamp-row{gap:var(--space-2);grid-template-columns:repeat(8,minmax(0,1fr));display:grid}.value-list{gap:var(--space-3);flex-direction:column;display:flex}.value-item{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 12px;display:grid}.value-item .value-name{font-size:var(--text-small);color:var(--color-text-secondary)}.value-item .value-num{font-family:var(--font-mono);font-size:var(--text-title);text-align:right}.value-item .spark{grid-column:1/-1}.status-matrix{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-1);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0;display:grid;overflow:hidden}.status-cell{background:var(--color-surface);min-width:0;box-shadow:inset -1px -1px 0 var(--color-divider);flex-direction:column;gap:4px;padding:12px 14px;display:flex}.status-cell .sc-top{align-items:center;gap:var(--space-2);display:flex}.status-cell .sc-name{font-weight:var(--weight-medium);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.status-cell .sc-top .status{flex:none}.status-cell .sc-msg{font-size:var(--text-small);color:var(--color-text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.6em;display:-webkit-box;overflow:hidden}.log-tool{gap:var(--card-gap);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.log-tool.with-detail{grid-template-columns:minmax(0,1fr) minmax(360px,440px)}@media (max-width:1200px){.log-tool.with-detail{grid-template-columns:minmax(0,1fr)}}.log-filters{align-items:flex-end;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.log-table td.time{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap}.log-detail{gap:var(--space-4);flex-direction:column;max-height:calc(100vh - 220px);display:flex;position:sticky;top:0;overflow:auto}.test-group{flex-direction:column;display:flex}.test-group+.test-group{margin-top:var(--space-4)}.test-group-head{align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);font-weight:var(--weight-semibold);display:flex}.test-row{gap:var(--space-2) var(--space-3);border-top:1px solid var(--color-divider);grid-template-columns:22px minmax(0,1fr) auto;align-items:start;padding:9px 0;display:grid}.test-row .test-msg{font-size:var(--text-small);color:var(--color-text-muted);grid-column:2/-1}.test-row .test-advice{font-size:var(--text-small);color:var(--color-warning);grid-column:2/-1}.pkg-steps li{padding:4px 0}.sub-section{gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--color-divider);flex-direction:column;display:flex}.sub-title{font-size:var(--text-small);font-weight:var(--weight-semibold);color:var(--color-text-secondary);margin:0}.signal-row{gap:var(--space-2) var(--space-3);grid-template-columns:44px 170px minmax(0,1fr);align-items:center;padding:4px 0;display:grid}.signal-row .signal-params{grid-column:2/-1}.signal-type{width:100%;height:30px}.signal-row .name,.analog-sim .name{font-family:var(--font-mono);font-weight:var(--weight-medium);font-size:var(--text-small)}.signal-params{align-items:flex-end;gap:var(--space-2) var(--space-3);flex-wrap:wrap;min-width:0;padding:2px 0 6px;display:flex}.signal-params label.field{font-size:var(--text-caption);gap:4px}.signal-params input[type=number]{width:92px;height:30px}.signal-params .wide-input{width:240px;height:30px}.analog-sim-list{flex-direction:column;display:flex}.analog-sim{gap:var(--space-2);border-bottom:1px solid var(--color-divider);flex-direction:column;padding:8px 0;display:flex}.analog-sim-head{gap:var(--space-3);border-bottom:1px solid var(--color-divider);font-size:var(--text-caption);font-weight:var(--weight-semibold);color:var(--color-text-muted);grid-template-columns:44px minmax(0,1fr) 52px 170px;padding-bottom:6px;display:grid}.analog-sim:last-child{border-bottom:none;padding-bottom:0}.analog-sim-top{gap:var(--space-3);grid-template-columns:44px minmax(0,1fr) 52px 170px;align-items:center;display:grid}.analog-sim-top .value{font-family:var(--font-mono);text-align:right}.analog-sim-top input[type=range]{width:100%}.analog-sim .signal-params{padding-left:calc(44px + var(--space-3))}.analog-row.compact{grid-template-columns:52px minmax(0,1fr) 52px}.coupling-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.coupling{gap:var(--space-3);border-bottom:1px solid var(--color-divider);grid-template-columns:18px minmax(0,1fr) auto;align-items:center;padding:8px 0;display:grid}.coupling>svg{color:var(--color-text-muted)}.coupling-text{font-size:var(--text-body);color:var(--color-text-secondary);line-height:2.2}.coupling-text strong{color:var(--color-text);font-weight:var(--weight-semibold)}.coupling-text select,.coupling-text input{vertical-align:middle;height:28px;margin:0 2px}.inline-num{width:76px}.conn-option{gap:var(--space-3);flex-direction:column;display:flex}.conn-head{align-items:flex-start;gap:var(--space-3);display:flex}.conn-icon{border-radius:var(--radius-8);background:var(--color-primary-soft);width:40px;height:40px;color:var(--color-primary);flex:none;place-items:center;display:grid}.conn-titles{align-items:flex-start;gap:6px}.conn-titles .card-title{font-size:var(--text-title);font-weight:var(--weight-semibold);margin:0}.conn-text{font-size:var(--text-small);color:var(--color-text-secondary);line-height:1.55}.conn-option>.status{font-size:var(--text-small)}.conn-actions{align-items:center;gap:var(--space-2);padding-top:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.note-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.note-list li{align-items:flex-start;gap:var(--space-2);font-size:var(--text-small);color:var(--color-text-secondary);display:flex}.note-list li svg{color:var(--color-warning);flex:none;margin-top:2px}.packet-log{max-height:300px}.packet-log .pk{grid-template-columns:64px 64px minmax(0,1fr);gap:8px;display:grid}.packet-log .pk-dir{color:var(--color-text-muted)}.packet-log .pk.tx .pk-dir{color:var(--color-primary)}.packet-log .pk.err .pk-dir,.packet-log .pk.err .pk-bytes{color:var(--color-danger)}.packet-log .pk-bytes{word-break:break-all}.status-cell .sc-icon{color:var(--color-text-muted)}.detail-block{flex-direction:column;gap:6px;display:flex}.detail-block h3{margin:0}.detail-block p{color:var(--color-text)}details.detail-block>summary{cursor:pointer;font-size:var(--text-small);font-weight:var(--weight-semibold);color:var(--color-text-secondary)}details.detail-block>summary:hover{color:var(--color-text)}.cause-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.cause-list li{align-items:flex-start;gap:var(--space-2);display:flex}.link-btn{min-height:24px;color:var(--color-text);text-align:left;text-underline-offset:2px;background:0 0;border:none;padding:3px 0;text-decoration:underline;display:block}.chart-empty-sm{min-height:160px}.perf-kv{margin-top:var(--space-3)}.log-scroll{min-height:240px;max-height:calc(100vh - 360px)}.repair-list{flex-direction:column;display:flex}.repair-item{align-items:center;gap:var(--space-3);border-top:1px solid var(--color-divider);grid-template-columns:minmax(0,1fr) auto auto;padding:10px 0;display:grid}.repair-item:first-child{border-top:none}.repair-text{gap:2px}.step-name{min-width:110px;font-weight:var(--weight-semibold);text-transform:capitalize}.log-detail .card-head{margin-bottom:var(--space-2)}.log-detail{gap:var(--space-4);flex-direction:column;display:flex}.tight-grid{gap:var(--space-3)}.case-card{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-8);background:var(--color-surface-sunken);border:1px solid var(--color-border);flex-direction:column;display:flex}.case-head{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.case-index{border-radius:var(--radius-full);background:var(--color-surface-active);width:24px;height:24px;color:var(--color-text-secondary);font-family:var(--font-mono);font-size:var(--text-caption);font-weight:var(--weight-semibold);flex:none;place-items:center;display:grid}.inline-field{font-size:var(--text-small);color:var(--color-text-secondary);align-items:center;gap:6px;display:inline-flex}.rule-block{gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-divider);flex-direction:column;display:flex}.rule-title{font-size:var(--text-small);font-weight:var(--weight-semibold);color:var(--color-text-secondary);margin:0}.rule-row{align-items:center;gap:6px var(--space-2);flex-wrap:wrap;display:flex}.rule-row input,.rule-row select{height:30px}.rule-text{font-size:var(--text-small);color:var(--color-text-muted)}.expect-list{font-size:var(--text-small);color:var(--color-text-secondary);flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.expect-list li{align-items:flex-start;gap:var(--space-2);display:flex}.expect-list li svg{color:var(--color-text-muted);flex:none;margin-top:2px}.run-steps{padding:var(--space-2);border-radius:var(--radius-8);background:var(--color-surface-sunken);border:1px solid var(--color-border);flex-direction:column;gap:2px;display:flex}.run-step{align-items:center;gap:var(--space-3);border-radius:var(--radius-control);font-size:var(--text-small);grid-template-columns:150px minmax(0,1fr);padding:6px 8px;display:grid}.run-step.current{background:var(--color-primary-soft)}.question-actions{margin-top:var(--space-2)}.report-case{gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--color-divider);flex-direction:column;display:flex}.report-head{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.report-head h3{margin:0}.report-verdicts{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:inline-flex}.link-inline{color:var(--color-primary);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.list-scroll{max-height:380px;overflow:auto}.setting-list{flex-direction:column;display:flex}.setting-row{align-items:center;gap:var(--space-4);border-bottom:1px solid var(--color-divider);grid-template-columns:minmax(0,1fr) auto;padding:12px 0;display:grid}.setting-row:first-child{padding-top:0}.setting-row:last-child{border-bottom:none;padding-bottom:0}.setting-text{flex-direction:column;gap:2px;min-width:0;display:flex}.setting-title{font-size:var(--text-body);font-weight:var(--weight-medium);color:var(--color-text)}.setting-desc{font-size:var(--text-small);color:var(--color-text-muted);line-height:1.45}.setting-control{justify-content:flex-end;align-items:center;min-width:0;display:flex}.setting-control input[type=url]{width:240px}.range-control{align-items:center;gap:var(--space-3);display:flex}.range-control input[type=range]{width:160px}.range-control .mono{text-align:right;min-width:48px}.bridge-note{margin-top:var(--space-3)}.plugin-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.plugin-list li{flex-direction:column;gap:2px;display:flex}.key-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.key-list li{align-items:center;gap:var(--space-3);border-bottom:1px solid var(--color-divider);font-size:var(--text-body);color:var(--color-text-secondary);grid-template-columns:150px minmax(0,1fr);padding:7px 0;display:grid}.key-list li:last-child{border-bottom:none}.key-list .keys{align-items:center;gap:4px;display:inline-flex}.key-list .plus{color:var(--color-text-muted);font-size:var(--text-caption);margin:0 4px}.help-list{gap:var(--space-3);font-size:var(--text-body);color:var(--color-text-secondary);flex-direction:column;margin:0;padding-left:18px;line-height:1.55;display:flex}.help-list strong{color:var(--color-text);font-weight:var(--weight-semibold)}.player-info{align-items:baseline;gap:var(--space-3);flex-wrap:wrap;display:flex}.timeline-wrap{flex-direction:column;gap:2px;display:flex}.timeline{width:100%}.timeline-marks{background:var(--color-surface-sunken);border-radius:3px;height:6px;margin:0 8px;position:relative}.timeline-marks .mark{border-radius:1px;width:2px;height:100%;margin-left:-1px;position:absolute;top:0}.timeline-marks .mark.error{background:var(--color-danger)}.transport{align-items:center;gap:var(--space-2);border-radius:var(--radius-8);background:var(--color-surface-sunken);border:1px solid var(--color-border);flex-wrap:wrap;padding:6px;display:flex}.transport .vsep{background:var(--color-border);width:1px;height:20px;margin:0 2px}.transport select{height:28px}.transport-pos{color:var(--color-text-secondary);font-size:var(--text-small);white-space:nowrap;margin-left:auto;padding:0 6px}.event-line{align-items:baseline;gap:var(--space-3);font-size:var(--text-body);flex-wrap:wrap;display:flex}.event-text{font-family:var(--font-mono);font-size:var(--text-small);color:var(--color-text)}.event-text.error{color:var(--color-danger)}.replay-ws{border-radius:var(--radius-control);border:1px solid var(--color-border);isolation:isolate;height:380px;overflow:hidden}.blocklyMainBackground{stroke:none!important}.blocklyToolboxDiv,.blocklyToolbox{border-right:1px solid var(--color-border);background:var(--color-surface)!important;padding:6px 0!important}.blocklyTreeRow,.blocklyToolboxCategory{border-radius:var(--radius-control);transition:background-color var(--motion-fast);border-left-style:solid!important;border-left-width:3px!important;height:32px!important;margin:1px 6px!important;padding:0 8px 0 10px!important;line-height:32px!important}.blocklyTreeRow:not(.blocklyTreeSelected):hover,.blocklyToolboxCategory:not(.blocklyToolboxSelected):hover{background:var(--color-surface-hover)!important}.blocklyTreeSelected,.blocklyToolboxSelected{background:var(--color-surface-active)!important}.blocklyTreeLabel,.blocklyToolboxCategoryLabel{font-family:var(--font-ui)!important;font-size:var(--text-small)!important;font-weight:var(--weight-medium)!important;color:var(--color-text-secondary)!important}.blocklyTreeSelected .blocklyTreeLabel,.blocklyToolboxSelected .blocklyToolboxCategoryLabel{color:var(--color-text)!important}.blocklyToolboxCategoryIcon,.blocklyTreeIcon{display:none!important}.blocklyFlyoutBackground{fill:var(--color-surface-raised)!important;fill-opacity:.98!important}.blocklyFlyoutLabelText{fill:var(--color-text-muted)!important;font-family:var(--font-ui)!important;font-size:12px!important}.blocklyText,.blocklyFlyoutLabelText,.blocklyHtmlInput{font-family:var(--font-ui)!important}.blocklyHtmlInput{border-radius:var(--radius-4)}.blocklySelected>.blocklyPath{stroke:var(--color-action)!important;stroke-width:2px!important}.blocklyHighlightedConnectionPath{stroke:var(--color-action)!important}.blocklyHighlighted>.blocklyPath{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--color-success) 60%, transparent))!important;stroke:var(--color-success)!important;stroke-width:2.5px!important}.rs-breakpoint>.blocklyPath{stroke-dasharray:5 3;stroke:var(--color-danger)!important;stroke-width:2.5px!important}.rs-error>.blocklyPath{stroke:var(--color-danger)!important;stroke-width:3px!important}.blocklyZoom>image,.blocklyTrash>image{opacity:.45}.blocklyZoom>image:hover,.blocklyTrash>image:hover{opacity:.8}.blocklyScrollbarHandle{fill:#94aad640!important}.blocklyTooltipDiv{max-width:360px;background:var(--color-surface-raised)!important;color:var(--color-text)!important;border:1px solid var(--color-border-strong)!important;border-radius:var(--radius-control)!important;box-shadow:var(--shadow-2)!important;font-family:var(--font-ui)!important;font-size:var(--text-small)!important;padding:6px 10px!important}.blocklyWidgetDiv .blocklyMenu,.blocklyContextMenu{background:var(--color-surface-raised)!important;border:1px solid var(--color-border-strong)!important;border-radius:var(--radius-8)!important;box-shadow:var(--shadow-2)!important;padding:4px!important}.blocklyMenuItem,.blocklyContextMenu .blocklyMenuItem{border-radius:var(--radius-4);color:var(--color-text)!important;font-family:var(--font-ui)!important;font-size:var(--text-small)!important;padding:6px 12px!important}.blocklyMenuItemHighlight{background:var(--color-surface-hover)!important}.blocklyMenuItemDisabled{color:var(--color-text-disabled)!important}.blocklyDropDownDiv{background-color:var(--color-surface-raised)!important;border-color:var(--color-border-strong)!important;border-radius:var(--radius-8)!important;box-shadow:var(--shadow-2)!important}.blocklyDropDownDiv .blocklyMenuItem{color:var(--color-text)!important}.blocklyCommentTextarea,.blocklyCommentText{font-family:var(--font-ui)!important}
