/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--radius-sm:.25rem;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.p-0{padding:0}.p-1{padding:var(--spacing)}.lowercase{text-transform:lowercase}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}:root{--bg:#f6f8fa;--surface:#ffffff;--surface2:#f1f5f9;--surface3:#e9eef4;--border:#e4e9f0;--border2:#d5dde6;--ink:#0f172a;--ink2:#46566b;--ink3:#8897a9;--accent:#0d9488;--accent-hi:#0f766e;--accent-bg:#e4f5f2;--accent-ring:rgba(13,148,136,.25);--btn-accent-ink:#ffffff;--good:#0ca30c;--warn:#b97e00;--crit:#d03b3b;--busy:#2a78d6;--good-bg:#e8f6e8;--warn-bg:#fdf3d9;--crit-bg:#fbe9e9;--busy-bg:#e7f0fb;--off-bg:#eef1f5;--console-bg:#0d1117;--console-ink:#c7d5e0;--console-dim:#5d7185;--console-accent:#4dd8c5;--chart-series:#0d9488;--chart-grid:#e7ebef;--chart-axis:#c3ccd6;--shadow:0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.06);--radius:10px;--radius-sm:7px;--mono:ui-monospace,"JetBrains Mono","SF Mono",Menlo,Consolas,monospace;--sans:system-ui,-apple-system,"Segoe UI",Inter,sans-serif}[data-theme=dark]{--bg:#0b0f14;--surface:#11161d;--surface2:#171e27;--surface3:#1d2632;--border:#222c39;--border2:#2d3948;--ink:#e6edf3;--ink2:#9db0c3;--ink3:#5d7185;--accent:#2dd4bf;--accent-hi:#5ce8d5;--accent-bg:#0e2a27;--accent-ring:rgba(45,212,191,.28);--btn-accent-ink:#04211d;--good:#0ca30c;--warn:#fab219;--crit:#e05252;--busy:#3987e5;--good-bg:#0e2510;--warn-bg:#2b2208;--crit-bg:#2d1313;--busy-bg:#0f2036;--off-bg:#1a222c;--console-bg:#070a0e;--console-ink:#b6c8d8;--console-dim:#4d6175;--console-accent:#2dd4bf;--chart-series:#0d9488;--chart-grid:#1d2733;--chart-axis:#33404f;--shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.35)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--sans);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;transition:background .25s,color .25s}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select{font:inherit;color:inherit}a{color:var(--accent-hi)}::selection{background:var(--accent-ring)}.app{display:flex;height:100vh}.sidebar{width:216px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:14px 10px}.logo{display:flex;align-items:center;gap:9px;padding:6px 10px 16px;font-weight:700;font-size:15px}.logo b{color:var(--accent-hi)}[data-theme=dark] .logo b{color:var(--accent)}.logo-mark{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,var(--accent),#0b6e66);display:grid;place-items:center;color:#fff;font-size:13px;font-family:var(--mono)}[data-theme=dark] .logo-mark{box-shadow:0 0 14px var(--accent-ring)}.nav{display:flex;flex-direction:column;gap:2px}.nav-label{font-size:10.5px;font-weight:600;letter-spacing:.09em;color:var(--ink3);text-transform:uppercase;padding:14px 10px 5px}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius-sm);color:var(--ink2);font-weight:500;width:100%;text-align:left}.nav-item:hover{background:var(--surface2);color:var(--ink)}.nav-item.active{background:var(--accent-bg);color:var(--accent-hi)}[data-theme=dark] .nav-item.active{color:var(--accent)}.sidebar-footer{margin-top:auto;border-top:1px solid var(--border);padding:10px 6px 0;display:flex;align-items:center;gap:9px}.avatar{width:28px;height:28px;border-radius:50%;background:var(--surface3);display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--ink2)}.user-meta{font-size:12px;line-height:1.25;flex:1;min-width:0}.user-meta .org{color:var(--ink3);font-size:11px}.main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.topbar{height:54px;flex-shrink:0;display:flex;align-items:center;gap:12px;padding:0 22px;background:var(--surface);border-bottom:1px solid var(--border)}.page-title{font-size:15.5px;font-weight:650}.topbar-spacer{margin-left:auto}.content{flex:1;overflow-y:auto;padding:22px}.view{max-width:1160px;margin:0 auto}.btn{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border-radius:var(--radius-sm);font-weight:600;font-size:13px;border:1px solid transparent;transition:filter .12s}.btn-primary{background:var(--accent);color:var(--btn-accent-ink)}[data-theme=dark] .btn-primary{background:#14b8a6}.btn-primary:hover{filter:brightness(1.07)}.btn-ghost{border-color:var(--border2);color:var(--ink2)}.btn-ghost:hover{background:var(--surface2)}.btn-block{width:100%;justify-content:center;padding:9px}.icon-btn{width:32px;height:32px;border-radius:var(--radius-sm);display:grid;place-items:center;color:var(--ink2);border:1px solid var(--border)}.icon-btn:hover{background:var(--surface2)}.field{margin-bottom:14px}.field label{display:block;font-size:12px;font-weight:600;color:var(--ink2);margin-bottom:5px}.field input{width:100%;padding:8px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--surface);font-size:13.5px;outline:none;transition:border .12s,box-shadow .12s}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.field input::placeholder{color:var(--ink3)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-head{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--border)}.card-title{font-weight:650;font-size:13.5px}.card-sub{color:var(--ink3);font-size:12px}.card-body{padding:16px}.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}.tile-label{font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink3)}.tile-value{font-size:26px;font-weight:700;margin-top:4px}.tile-value small{font-size:14px;font-weight:600;color:var(--ink3)}.tile-delta{font-size:12px;margin-top:2px;color:var(--ink3)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.grid-main-side{display:grid;grid-template-columns:2fr 1fr;gap:14px;align-items:start}.split{display:grid;grid-template-columns:320px 1fr;gap:14px;align-items:start}.led{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.led.online{background:var(--good)}.led.busy{background:var(--busy)}.led.offline,.led.disabled{background:var(--ink3)}.led.degraded,.led.maintenance{background:var(--warn)}[data-theme=dark] .led.online{box-shadow:0 0 7px var(--good)}[data-theme=dark] .led.busy{box-shadow:0 0 7px var(--busy)}[data-theme=dark] .led.degraded{box-shadow:0 0 7px var(--warn)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:650;padding:2px 9px;border-radius:20px}.badge.passed{background:var(--good-bg);color:var(--good)}.badge.failed{background:var(--crit-bg);color:var(--crit)}.badge.error,.badge.canceled{background:var(--warn-bg);color:var(--warn)}.badge.running{background:var(--busy-bg);color:var(--busy)}.badge.queued{background:var(--off-bg);color:var(--ink3)}.badge.ok{background:var(--good-bg);color:var(--good)}.badge.urgent{background:var(--crit-bg);color:var(--crit)}.badge.notice{background:var(--warn-bg);color:var(--warn)}.badge.stale{background:var(--off-bg);color:var(--ink3)}.badge.o-busy{background:transparent;border:1.5px solid var(--busy);color:var(--busy)}.badge.o-warn{background:transparent;border:1.5px solid var(--warn);color:var(--warn)}.badge.o-off{background:transparent;border:1.5px solid var(--border2);color:var(--ink3)}.content-fill{overflow:hidden}.view-fill{max-width:none;height:100%;display:flex;flex-direction:column}.canvas-page{flex:1;min-height:0;display:flex;flex-direction:column}.canvas-page .filters{flex-shrink:0}.canvas-layout{display:grid;grid-template-columns:230px 1fr;gap:14px;align-items:stretch;flex:1;min-height:0}.palette{height:100%;min-height:0;overflow-y:auto;box-sizing:border-box}.canvas-wrap{display:flex;flex-direction:column;min-height:0}.domain-chips{flex-shrink:0}.hwcanvas{flex:1;min-height:0}.palette-title{font-size:15px;font-weight:750;padding:11px 12px 2px}.palette .section-label{font-size:13px;font-weight:750;letter-spacing:0;text-transform:none;color:var(--ink);padding:12px 12px 7px}.palette-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:calc(100% - 24px);margin:0 12px 7px;text-align:left;padding:8px 11px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:grab;touch-action:none}.palette-item:hover{background:var(--accent-bg);border-color:var(--accent)}.palette-item.soon{cursor:default;opacity:.5}.palette-item.soon:hover{background:var(--surface2);border-color:var(--border)}.soon-tag{font-size:10px;font-weight:500;color:var(--ink3)}.drag-ghost{position:fixed;z-index:200;pointer-events:none;padding:5px 12px;border-radius:999px;font-size:12px;font-weight:650;background:var(--accent-bg);color:var(--accent-hi);border:1.5px solid var(--accent);box-shadow:var(--shadow)}[data-theme=dark] .drag-ghost{color:var(--accent)}.domain-chips{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:6px;align-items:center;height:42px;box-sizing:border-box;padding:0 12px;border-bottom:1px solid var(--border);background:var(--surface);scrollbar-width:none}.domain-chips::-webkit-scrollbar{display:none}.domain-chip{white-space:nowrap;flex-shrink:0}.domain-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;border:1.5px solid var(--border2);color:var(--ink2);background:var(--surface)}.domain-chip:hover,.domain-chip.on{background:var(--surface2)}.domain-chip.clear{border-style:dashed;color:var(--ink3)}.route-style{display:inline-flex;gap:4px;flex-shrink:0;padding-left:10px;border-left:1px solid var(--border)}.maintenance-bar{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;font-size:13px;color:var(--ink);background:var(--surface);border-bottom:2px solid var(--warn)}.login-maint{padding:8px 12px;margin-bottom:10px;font-size:12.5px;border:1.5px solid var(--warn);border-radius:var(--radius-sm);color:var(--ink);background:var(--surface)}.canvas-toast{position:absolute;top:54px;left:50%;transform:translate(-50%);z-index:30;pointer-events:none;max-width:70%;padding:7px 16px;border-radius:999px;font-size:12.5px;font-weight:600;background:var(--surface);color:var(--ink);border:1.5px solid var(--warn);box-shadow:var(--shadow-lg, 0 6px 20px rgba(15,23,42,.18))}.domain-chip.style-on{border-color:var(--accent);color:var(--accent-hi);background:var(--accent-bg)}[data-theme=dark] .domain-chip.style-on{color:var(--accent)}.portdot{width:9px;height:9px;border-radius:50%;display:inline-block;flex-shrink:0}.canvas-wrap{overflow:auto}.canvas-wrap.placing{cursor:copy}.canvas-title{cursor:text;border-radius:5px;padding:2px 6px;margin-left:-6px}.canvas-title:hover{background:var(--surface2)}.canvas-title .rename-hint{margin-left:6px;font-size:12px;color:var(--ink3);opacity:0;transition:opacity .12s}.canvas-title:hover .rename-hint{opacity:1}.canvas-rename{font-size:15px;font-weight:700;padding:2px 8px;width:260px;border:1.5px solid var(--accent);border-radius:5px;background:var(--surface);color:var(--ink);outline:none}.pick-item .meta.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.context-menu{position:fixed;z-index:70;min-width:184px;padding:5px;background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius-sm);box-shadow:0 10px 32px #080c1240}.ctx-item{display:block;width:100%;text-align:left;padding:7px 11px;border-radius:5px;font-size:13px;font-weight:550;color:var(--ink)}.ctx-item:hover{background:var(--surface2)}.ctx-item:disabled{opacity:.5;cursor:default}.ctx-item.danger{color:var(--crit)}.ctx-sep{height:1px;background:var(--border);margin:5px 4px}.btn.btn-primary.danger{background:var(--crit);border-color:var(--crit)}.config-preview{position:relative;margin:4px 14px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}.config-preview-edit{position:absolute;top:10px;right:10px;z-index:2}.canvas-overlay{position:fixed;z-index:40;top:10px;left:10px;width:calc(100vw - 20px);height:calc(100vh - 20px);box-sizing:border-box;padding:12px;display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius);box-shadow:0 18px 60px #080c1259;overflow:hidden;transition:top .22s ease,left .22s ease,width .22s ease,height .22s ease,border-radius .22s ease,opacity .22s ease}.canvas-overlay:not(.open){top:25vh;left:25vw;width:50vw;height:46vh;opacity:0;pointer-events:none;border-radius:var(--radius-sm)}.hwcanvas{display:block;touch-action:none;-webkit-user-select:none;user-select:none}.comp-body{fill:var(--surface);stroke:var(--border2);stroke-width:1.5;filter:drop-shadow(0 2px 5px rgba(15,23,42,.1))}.comp-body.anchored{stroke:var(--accent);stroke-width:2}.comp-body.sel,.dut-zone.sel{stroke:var(--busy);stroke-width:2.5;filter:drop-shadow(0 0 6px rgba(57,135,229,.45))}.comp-body.mcu{stroke:var(--accent);stroke-dasharray:none;fill:var(--surface2)}.dut-zone{fill:var(--accent-bg);fill-opacity:.35;stroke:var(--accent);stroke-width:2;stroke-dasharray:8 5}.dut-zone-head{fill:var(--accent-bg);fill-opacity:.8}.zoom-controls{position:absolute;top:52px;right:10px;z-index:10;display:flex;flex-direction:column;gap:5px}.zoom-controls .icon-btn{background:var(--surface)}.wire-mode{padding:3px 10px;font-size:12px}.wire-mode.on{background:var(--accent-bg);color:var(--accent-hi);border-color:var(--accent)}[data-theme=dark] .wire-mode.on{color:var(--accent)}[data-theme=dark] .comp-body{filter:drop-shadow(0 3px 8px rgba(0,0,0,.45))}.comp-head{fill:var(--surface3)}.comp-title{font-size:12px;font-weight:650;fill:var(--ink)}.comp-kind{font-size:9px;fill:var(--ink3)}.comp-config{font-size:9.5px;fill:var(--ink3);font-family:var(--mono)}.comp-port-label{font-size:9.5px;fill:var(--ink2)}.mywork{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:0 14px;padding-bottom:10px}.mywork>div{min-width:0}.mywork>div+div{border-left:1px solid var(--border)}.mywork-row{display:flex;align-items:center;gap:8px;padding:5px 14px}.mywork-btn{padding:2px 9px;font-size:11.5px}.mywork-empty{padding:6px 14px;color:var(--ink3);font-size:12px}.linkish{color:var(--accent-hi);font-weight:600;font-size:12.5px}[data-theme=dark] .linkish{color:var(--accent)}.linkish:hover{text-decoration:underline}.token-reveal{margin:12px 14px 0;padding:12px;border:1.5px solid var(--warn);border-radius:var(--radius-sm);background:var(--warn-bg);font-size:12.5px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.token-reveal code{background:var(--console-bg);color:var(--console-accent);padding:6px 10px;border-radius:6px;word-break:break-all}.impersonation-bar{position:sticky;top:0;z-index:60;display:flex;align-items:center;justify-content:center;gap:16px;padding:8px 16px;background:var(--warn-bg);color:var(--warn);font-size:13px;font-weight:600;border-bottom:1.5px solid var(--warn)}.impersonation-bar b{font-weight:750}.impersonation-bar .btn{border:1.5px solid var(--warn);color:var(--warn);padding:3px 12px;font-size:12px}.impersonation-bar .btn:hover{background:var(--warn);color:#fff}.impersonation-bar+.app{height:calc(100vh - 38px)}.support-code{font-size:22px;letter-spacing:3px;padding:6px 12px}.support-code-input{width:150px;padding:8px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--surface);font-size:14px;letter-spacing:2px;outline:none;transition:border .12s,box-shadow .12s}.support-code-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.support-code-input::placeholder{color:var(--ink3);letter-spacing:2px}.rowmenu-wrap{position:relative;display:inline-block}.rowmenu-btn{width:26px;height:26px;border-radius:6px;display:grid;place-items:center;color:var(--ink3);font-weight:700;letter-spacing:1px}.rowmenu-btn:hover{background:var(--surface3);color:var(--ink)}.rowmenu{position:absolute;right:0;top:28px;z-index:40;min-width:195px;background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:4px}.rowmenu-item{display:block;width:100%;text-align:left;padding:7px 10px;border-radius:5px;font-size:12.5px;font-weight:500;color:var(--ink2)}.rowmenu-item:hover{background:var(--surface2);color:var(--ink)}.rowmenu-item:disabled{color:var(--ink3);cursor:default}.rowmenu-item:disabled:hover{background:none}.rowmenu-sep{height:1px;background:var(--border);margin:4px 2px}.rowmenu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30}.seen-fresh{color:var(--good)}.seen-aging{color:var(--warn)}.seen-lost{color:var(--crit)}.led.attention{background:var(--crit)}[data-theme=dark] .led.attention{box-shadow:0 0 7px var(--crit)}table{width:100%;border-collapse:collapse;font-size:13px}th{font-size:11px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);text-align:left;padding:9px 14px;border-bottom:1px solid var(--border)}td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover{background:var(--surface2)}tbody tr.clickable{cursor:pointer}.mono{font-family:var(--mono);font-size:12px}.dim{color:var(--ink3)}.med{color:var(--ink2)}.cell-main{font-weight:600}.chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--ink2);background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:3px 9px;font-family:var(--mono)}.filters{display:flex;gap:8px;margin-bottom:14px;align-items:center}.pick-item{padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer}.pick-item:last-child{border-bottom:none}.pick-item:hover{background:var(--surface2)}.pick-item.selected{background:var(--accent-bg);border-left:3px solid var(--accent);padding-left:11px}.pick-item .name{font-weight:650;font-size:13px}.pick-item .meta{font-size:11.5px;color:var(--ink3);margin-top:2px}.section-label{font-size:11px;font-weight:650;letter-spacing:.07em;text-transform:uppercase;color:var(--ink3);padding:12px 14px 6px}.hw-role{display:grid;grid-template-columns:130px 1fr auto;gap:10px;align-items:center;padding:11px 14px;border-bottom:1px solid var(--border)}.hw-role:last-child{border-bottom:none}.hw-name{font-weight:600;font-size:12.5px}.hw-detail{font-size:12px;color:var(--ink2)}.hw-detail .mono{font-size:11px;color:var(--ink3)}.test-row{display:grid;grid-template-columns:28px 1fr auto;gap:12px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border)}.test-row:last-child{border-bottom:none}.test-num{width:22px;height:22px;border-radius:6px;background:var(--surface2);border:1px solid var(--border);display:grid;place-items:center;font-family:var(--mono);font-size:10.5px;color:var(--ink2)}.params{font-family:var(--mono);font-size:11px;color:var(--ink3)}.console{background:var(--console-bg);border-radius:var(--radius);border:1px solid var(--border);font-family:var(--mono);font-size:11.5px;line-height:1.65;color:var(--console-ink);padding:12px 14px}.console .t{color:var(--console-dim)}.console .hl{color:var(--console-accent)}.login-wrap{height:100vh;display:grid;place-items:center;position:relative;overflow:hidden}.login-wrap:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:34px 34px;opacity:.5;-webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 40%,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse 90% 70% at 50% 40%,#000 30%,transparent 75%)}.login-card{position:relative;width:372px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:34px 34px 28px}.login-logo{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:26px}.login-logo .logo-mark{width:42px;height:42px;font-size:19px;border-radius:11px}.login-title{font-size:19px;font-weight:700}.login-title b{color:var(--accent-hi)}[data-theme=dark] .login-title b{color:var(--accent)}.login-sub{color:var(--ink3);font-size:13px;margin-top:2px;text-align:center}.login-err{background:var(--crit-bg);color:var(--crit);font-size:12.5px;font-weight:600;border-radius:var(--radius-sm);padding:8px 12px;margin-bottom:14px}.login-links{display:flex;flex-direction:column;gap:6px;align-items:center;margin-top:16px;font-size:12.5px}.login-links a{text-decoration:none}.login-links a:hover{text-decoration:underline}.login-note{color:var(--ink2);font-size:13.5px;line-height:1.55;text-align:center;margin-bottom:18px}.login-card a.btn{text-decoration:none}.landing{height:100%;overflow-y:auto;overflow-x:hidden}.lp-top{position:sticky;top:0;z-index:20;display:flex;align-items:center;padding:11px 28px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px)}.lp-brand{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:15px}.lp-brand b{color:var(--accent-hi)}[data-theme=dark] .lp-brand b{color:var(--accent)}.lp-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.lp-actions .btn,.lp-cta .btn{text-decoration:none}.lp-hero{position:relative;padding:80px 28px 64px;text-align:center;overflow:hidden}.lp-hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:34px 34px;opacity:.5;-webkit-mask-image:radial-gradient(ellipse 85% 65% at 50% 32%,#000 25%,transparent 72%);mask-image:radial-gradient(ellipse 85% 65% at 50% 32%,#000 25%,transparent 72%)}.lp-hero>*{position:relative}.lp-badge{display:inline-flex;align-items:center;margin-bottom:20px;padding:5px 14px;border-radius:999px;border:1px solid var(--accent);background:var(--accent-bg);color:var(--accent-hi);font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}[data-theme=dark] .lp-badge{color:var(--accent)}.lp-hero h1{font-size:clamp(30px,4.6vw,46px);line-height:1.13;font-weight:780;letter-spacing:-.022em;max-width:880px;margin:0 auto}.lp-hero h1 b{color:var(--accent-hi)}[data-theme=dark] .lp-hero h1 b{color:var(--accent)}.lp-tag{max-width:660px;margin:18px auto 0;font-size:16px;line-height:1.55;color:var(--ink2)}.lp-cta{display:flex;gap:12px;justify-content:center;margin-top:30px;flex-wrap:wrap}.lp-btn-lg{padding:11px 22px;font-size:15px;border-radius:9px}.lp-fine{margin-top:14px;font-size:12.5px;color:var(--ink3)}.lp-console{max-width:640px;margin:44px auto 0;text-align:left;box-shadow:var(--shadow)}.lp-section{max-width:1060px;margin:0 auto;padding:66px 28px 70px}.lp-section>h2,.lp-final h2,.lp-close h2{font-size:28px;font-weight:760;letter-spacing:-.015em}.lp-section>h2{text-align:center}.lp-sub{text-align:center;color:var(--ink2);margin:10px auto 36px;max-width:620px;font-size:14.5px}.lp-alt{max-width:none;background:var(--surface2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.lp-alt>*{max-width:1004px;margin-left:auto;margin-right:auto}.lp-alt>h2,.lp-alt>.lp-sub{max-width:620px}.lp-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.lp-step{padding:22px}.lp-step-n{width:30px;height:30px;border-radius:50%;background:var(--accent-bg);color:var(--accent-hi);font-weight:750;display:grid;place-items:center;margin-bottom:12px;flex-shrink:0}[data-theme=dark] .lp-step-n{color:var(--accent)}.lp-step h3,.lp-step0 h3{font-size:15.5px;font-weight:700;margin-bottom:6px}.lp-step p,.lp-step0 p{color:var(--ink2);font-size:13.5px;line-height:1.55}.lp-step p b{font-weight:700;color:var(--ink)}.lp-step0{display:flex;align-items:center;gap:16px;padding:18px 22px;margin-bottom:16px}.lp-step0 .lp-step-n{margin-bottom:0}.lp-step0 p{max-width:720px}.lp-kicker{text-align:center;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--accent-hi);margin-bottom:10px}[data-theme=dark] .lp-kicker{color:var(--accent)}.lp-mini-canvas{width:100%;margin-top:16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface2)}.lpa-panel,.lpa-canvas{fill:var(--surface);stroke:var(--border)}.lpa-title{font-size:11px;font-weight:750;fill:var(--ink)}.lpa-item rect{fill:var(--surface2);stroke:var(--border)}.lpa-item text{font-size:11px;font-weight:650;fill:var(--ink2)}.lpa-scrollhint{fill:var(--border2)}.lpa-port{fill:var(--surface);stroke-width:2}.lpa-port.comms{stroke:var(--busy)}.lpa-port.debug{stroke:#8b5cf6}.lpa-init{fill:var(--surface);stroke:var(--ink3);stroke-width:2}.lpa-ghost rect{fill:var(--accent-bg);stroke:var(--accent);stroke-width:1.5}.lpa-ghost text{font-size:11px;font-weight:650;fill:var(--accent-hi)}[data-theme=dark] .lpa-ghost text{fill:var(--accent)}.lpa-pop-bg{fill:var(--surface);stroke:var(--border2);filter:drop-shadow(0 3px 8px rgba(15,23,42,.18))}.lpa-pop-label{font-size:10px;font-weight:650;fill:var(--ink3)}.lpa-pop-value{font-size:11px;font-family:var(--mono);fill:var(--ink)}.lpa-cursor{fill:var(--ink);stroke:var(--surface);stroke-width:1;opacity:0;animation:lpaCursor 22.5s linear infinite}.lpa-pulse{fill:none;stroke:var(--busy);stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center}.lpa-pulse0{animation:lpaPulse0 22.5s linear infinite}.lpa-pulse1{animation:lpaPulse1 22.5s linear infinite}.lpa-pulse2{animation:lpaPulse2 22.5s linear infinite}.lpa-pulse3{animation:lpaPulse3 22.5s linear infinite}.lpa-pulse-w1{animation:lpaPulseW1 22.5s linear infinite}.lpa-pulse-w2{animation:lpaPulseW2 22.5s linear infinite}.lpa-pulse-w3{animation:lpaPulseW3 22.5s linear infinite}.lpa-pulse-w4{animation:lpaPulseW4 22.5s linear infinite}.lpa-ghost1{opacity:0;animation:lpaGhost1 22.5s ease-in-out infinite}.lpa-ghost2{opacity:0;animation:lpaGhost2 22.5s ease-in-out infinite}.lpa-ghost3{opacity:0;animation:lpaGhost3 22.5s ease-in-out infinite}.lpa-micro{opacity:0;animation:lpaMicro 22.5s linear infinite}.lpa-debugger{opacity:0;animation:lpaDebugger 22.5s linear infinite}.lpa-ftdi{opacity:0;animation:lpaFtdi 22.5s linear infinite}.lpa-wire{fill:none;stroke-width:2;stroke-linejoin:round}.lpa-wire-cd{stroke:var(--busy);stroke-dasharray:84;stroke-dashoffset:84;animation:lpaWireCd 22.5s linear infinite}.lpa-wire-dm{stroke:#8b5cf6;stroke-dasharray:100;stroke-dashoffset:100;animation:lpaWireDm 22.5s linear infinite}.lpa-wire-cf{stroke:var(--busy);stroke-dasharray:60;stroke-dashoffset:60;animation:lpaWireCf 22.5s linear infinite}.lpa-wire-fm{stroke:var(--busy);stroke-dasharray:34;stroke-dashoffset:34;animation:lpaWireFm 22.5s linear infinite}.lpa-usb1{opacity:0;animation:lpaUsb1 22.5s linear infinite}.lpa-usb2{opacity:0;animation:lpaUsb2 22.5s linear infinite}.lpa-comp-sub{opacity:0;animation:lpaCompSub 22.5s linear infinite}.lpa-init1{animation:lpaInit1 22.5s linear infinite}.lpa-port-swd{opacity:0;animation:lpaPortSwd 22.5s linear infinite}.lpa-init2{opacity:0;animation:lpaInit2 22.5s linear infinite}.lpa-port-uart{opacity:0;animation:lpaPortUart 22.5s linear infinite}.lpa-init3{opacity:0;animation:lpaInit3 22.5s linear infinite}.lpa-pop0{opacity:0;animation:lpaPop0 22.5s linear infinite}.lpa-pop1{opacity:0;animation:lpaPop1 22.5s linear infinite}.lpa-pop2{opacity:0;animation:lpaPop2 22.5s linear infinite}.lpa-pop3{opacity:0;animation:lpaPop3 22.5s linear infinite}.lpa-clip-rpi{animation:lpaClipRpi 22.5s steps(12,end) infinite}.lpa-clip-name{animation:lpaClipName 22.5s steps(8,end) infinite}.lpa-clip-type{animation:lpaClipType 22.5s steps(7,end) infinite}.lpa-clip-mode{animation:lpaClipMode 22.5s steps(3,end) infinite}.lpa-clip-bus{animation:lpaClipBus 22.5s steps(5,end) infinite}.lpa-cli-check{opacity:0;animation:lpaCliCheck 22.5s linear infinite}.lpa-label-a{animation:lpaLabelA 22.5s linear infinite}.lpa-label-b{opacity:0;animation:lpaLabelB 22.5s linear infinite}.lpa-dbg-sub{opacity:0;animation:lpaDbgSub 22.5s linear infinite}.lpa-cli{opacity:0;animation:lpaCli 22.5s linear infinite}@keyframes lpaGhost1{0%,11.11%{opacity:0;transform:translate(0)}12.89%{opacity:1}14.44%{opacity:1;transform:translate(312px,56px)}14.89%,to{opacity:0;transform:translate(312px,56px)}}@keyframes lpaGhost2{0%,16.00%{opacity:0;transform:translate(0)}17.78%{opacity:1}19.33%{opacity:1;transform:translate(162px,70px)}19.78%,to{opacity:0;transform:translate(162px,70px)}}@keyframes lpaGhost3{0%,57.78%{opacity:0;transform:translate(0)}59.56%{opacity:1}61.11%{opacity:1;transform:translate(312px,-88px)}61.56%,to{opacity:0;transform:translate(312px,-88px)}}@keyframes lpaMicro{0%,14.44%{opacity:0}14.89%,95.56%{opacity:1}98.67%,to{opacity:0}}@keyframes lpaDebugger{0%,19.33%{opacity:0}19.78%,95.56%{opacity:1}98.67%,to{opacity:0}}@keyframes lpaFtdi{0%,61.11%{opacity:0}61.56%,95.56%{opacity:1}98.67%,to{opacity:0}}@keyframes lpaWireCd{0%,22.22%{stroke-dashoffset:84;opacity:1}24.44%,95.56%{stroke-dashoffset:0;opacity:1}98.67%,to{stroke-dashoffset:0;opacity:0}}@keyframes lpaWireDm{0%,28.00%{stroke-dashoffset:100;opacity:1}31.11%,95.56%{stroke-dashoffset:0;opacity:1}98.67%,to{stroke-dashoffset:0;opacity:0}}@keyframes lpaWireCf{0%,64.00%{stroke-dashoffset:60;opacity:1}65.78%,95.56%{stroke-dashoffset:0;opacity:1}98.67%,to{stroke-dashoffset:0;opacity:0}}@keyframes lpaWireFm{0%,68.89%{stroke-dashoffset:34;opacity:1}70.67%,95.56%{stroke-dashoffset:0;opacity:1}98.67%,to{stroke-dashoffset:0;opacity:0}}@keyframes lpaUsb1{0%,24.89%{opacity:0}26.22%,95.56%{opacity:1}98.67%,to{opacity:0}}@keyframes lpaUsb2{0%,66.22%{opacity:0}67.56%,95.56%{opacity:1}98.67%,to{opacity:0}}@keyframes lpaCompSub{0%,10.22%{opacity:0}11.11%,95.56%{opacity:1}98.67%,to{opacity:0}}@keyframes lpaInit1{0%,30.89%{opacity:1}31.33%,to{opacity:0}}@keyframes lpaPortSwd{0%,30.89%{opacity:0}31.33%,to{opacity:1}}@keyframes lpaInit2{0%,31.56%{opacity:0}32.44%,70.44%{opacity:1}70.89%,to{opacity:0}}@keyframes lpaPortUart{0%,70.44%{opacity:0}70.89%,to{opacity:1}}@keyframes lpaInit3{0%,71.33%{opacity:0}72.22%,to{opacity:1}}@keyframes lpaCursor{0%,0.89%{opacity:0;transform:translate(250px,90px)}2.00%{opacity:1}2.67%{transform:translate(214px,48px) scale(1)}2.89%{transform:translate(214px,48px) scale(.8)}3.33%{transform:translate(214px,48px) scale(1)}3.78%{transform:translate(214px,48px) scale(.8)}4.22%{transform:translate(214px,48px) scale(1)}4.67%{opacity:1}5.11%{opacity:0}20.22%{opacity:0;transform:translate(190px,66px)}21.11%{opacity:1;transform:translate(190px,66px) scale(1)}21.78%{transform:translate(190px,66px) scale(.8)}22.22%{transform:translate(190px,66px) scale(1)}24.44%{transform:translate(190px,150px) scale(1)}24.67%{transform:translate(190px,150px) scale(.8)}25.11%{transform:translate(190px,150px) scale(1)}25.33%{opacity:1}26.00%{opacity:0}26.44%{opacity:0;transform:translate(280px,172px)}27.11%{opacity:1;transform:translate(280px,172px) scale(1)}27.56%{transform:translate(280px,172px) scale(.8)}28.00%{transform:translate(280px,172px) scale(1)}28.80%{transform:translate(305px,172px) scale(1)}30.36%{transform:translate(305px,122px) scale(1)}31.11%{transform:translate(330px,122px) scale(1)}31.33%{transform:translate(330px,122px) scale(.8)}31.78%{transform:translate(330px,122px) scale(1)}32.00%{opacity:1}32.44%{opacity:0}32.67%{opacity:0;transform:translate(330px,140px)}33.33%{opacity:1}34.22%{transform:translate(352px,112px) scale(1)}34.44%{transform:translate(352px,112px) scale(.8)}34.89%{transform:translate(352px,112px) scale(1)}35.56%{opacity:1}36.22%{opacity:0}47.11%{opacity:0;transform:translate(300px,168px)}47.78%{opacity:1}48.89%{transform:translate(208px,164px) scale(1)}49.11%{transform:translate(208px,164px) scale(.8)}49.56%{transform:translate(208px,164px) scale(1)}50.44%{opacity:1}51.11%{opacity:0}62.22%{opacity:0;transform:translate(270px,46px)}62.89%{opacity:1;transform:translate(270px,46px) scale(1)}63.56%{transform:translate(270px,46px) scale(.8)}64.00%{transform:translate(270px,46px) scale(1)}65.78%{transform:translate(330px,46px) scale(1)}66.00%{transform:translate(330px,46px) scale(.8)}66.44%{transform:translate(330px,46px) scale(1)}66.67%{opacity:0}67.11%{opacity:0;transform:translate(382px,66px)}67.78%{opacity:1;transform:translate(382px,66px) scale(1)}68.44%{transform:translate(382px,66px) scale(.8)}68.89%{transform:translate(382px,66px) scale(1)}70.67%{transform:translate(382px,100px) scale(1)}70.89%{transform:translate(382px,100px) scale(.8)}71.33%{transform:translate(382px,100px) scale(1)}71.56%{opacity:0}72.00%{opacity:0;transform:translate(330px,140px)}72.67%{opacity:1}73.56%{transform:translate(352px,112px) scale(1)}73.78%{transform:translate(352px,112px) scale(.8)}74.22%{transform:translate(352px,112px) scale(1)}75.11%{opacity:1}75.78%,to{opacity:0;transform:translate(352px,112px)}}@keyframes lpaPulse0{0%,2.67%{opacity:0;transform:scale(.3)}4.00%{opacity:.6;transform:scale(.5)}6.67%,to{opacity:0;transform:scale(1.5)}}@keyframes lpaPulse1{0%,34.22%{opacity:0;transform:scale(.3)}35.56%{opacity:.7;transform:scale(.4)}38.67%,to{opacity:0;transform:scale(1.6)}}@keyframes lpaPulse2{0%,48.67%{opacity:0;transform:scale(.3)}50.00%{opacity:.7;transform:scale(.4)}52.89%,to{opacity:0;transform:scale(1.6)}}@keyframes lpaPulse3{0%,73.33%{opacity:0;transform:scale(.3)}74.67%{opacity:.7;transform:scale(.4)}77.33%,to{opacity:0;transform:scale(1.6)}}@keyframes lpaPulseW1{0%,21.56%{opacity:0;transform:scale(.3)}22.44%{opacity:.7;transform:scale(.6)}24.89%,to{opacity:0;transform:scale(1.7)}}@keyframes lpaPulseW2{0%,27.33%{opacity:0;transform:scale(.3)}28.22%{opacity:.7;transform:scale(.6)}30.67%,to{opacity:0;transform:scale(1.7)}}@keyframes lpaPulseW3{0%,63.33%{opacity:0;transform:scale(.3)}64.22%{opacity:.7;transform:scale(.6)}66.67%,to{opacity:0;transform:scale(1.7)}}@keyframes lpaPulseW4{0%,68.22%{opacity:0;transform:scale(.3)}69.11%{opacity:.7;transform:scale(.6)}71.56%,to{opacity:0;transform:scale(1.7)}}@keyframes lpaPop0{0%,4.44%{opacity:0}5.33%,9.33%{opacity:1}10.67%,to{opacity:0}}@keyframes lpaPop1{0%,35.11%{opacity:0}36.00%,45.33%{opacity:1}46.67%,to{opacity:0}}@keyframes lpaPop2{0%,50.67%{opacity:0}51.56%,55.11%{opacity:1}56.44%,to{opacity:0}}@keyframes lpaPop3{0%,75.11%{opacity:0}76.00%,83.11%{opacity:1}84.44%,to{opacity:0}}@keyframes lpaClipRpi{0%,5.56%{width:0}8.22%,to{width:82px}}@keyframes lpaClipName{0%,36.22%{width:0}38.89%,to{width:60px}}@keyframes lpaClipType{0%,40.00%{width:0}42.67%,to{width:54px}}@keyframes lpaClipMode{0%,52.00%{width:0}53.78%,to{width:26px}}@keyframes lpaClipBus{0%,76.22%{width:0}78.89%,to{width:38px}}@keyframes lpaCliCheck{0%,80.44%{opacity:0}81.33%,to{opacity:1}}@keyframes lpaLabelA{0%,46.67%{opacity:1}47.33%,to{opacity:0}}@keyframes lpaLabelB{0%,46.67%{opacity:0}47.33%,to{opacity:1}}@keyframes lpaDbgSub{0%,56.67%{opacity:0}57.33%,to{opacity:1}}@keyframes lpaCli{0%,84.89%{opacity:0}86.22%,95.56%{opacity:1}98.67%,to{opacity:0}}.lpa-blank{fill:var(--surface2);opacity:1;pointer-events:none;animation:lpaBlank 22.5s linear infinite}@keyframes lpaBlank{0%{opacity:1}3.11%{opacity:0}95.56%{opacity:0}98.67%,to{opacity:1}}@media(prefers-reduced-motion:reduce){.lpa-ghost1,.lpa-ghost2,.lpa-ghost3,.lpa-cursor,.lpa-pulse,.lpa-pop0,.lpa-pop1,.lpa-pop2,.lpa-pop3,.lpa-blank,.lpa-label-a,.lpa-init1,.lpa-init2{animation:none;opacity:0}.lpa-micro,.lpa-debugger,.lpa-ftdi,.lpa-label-b,.lpa-dbg-sub,.lpa-cli,.lpa-usb1,.lpa-usb2,.lpa-comp-sub,.lpa-port-swd,.lpa-port-uart,.lpa-init3{animation:none;opacity:1}.lpa-wire{animation:none;stroke-dashoffset:0}.lpa-clip-rpi{animation:none;width:82px}.lpa-clip-name{animation:none;width:60px}.lpa-clip-type{animation:none;width:54px}.lpa-clip-mode{animation:none;width:26px}.lpa-clip-bus{animation:none;width:38px}}.lpb{background:var(--surface)}.lpb-src{fill:var(--surface2);stroke:var(--border2)}.lpb-src-t{font-size:10px;font-family:var(--mono);fill:var(--ink2)}.lpb-lbl{font-size:10.5px;font-family:var(--mono);fill:var(--ink2)}.lpb-lbl.dim{fill:var(--ink3)}.lpb-tick{font-size:11px;font-weight:700;fill:var(--good)}.lpb-key{font-size:11px;font-weight:650;fill:var(--ink)}.lpb-val{font-size:10.5px;font-family:var(--mono);fill:var(--ink3)}.lpb-chip{fill:var(--accent-bg);stroke:var(--accent);stroke-width:1.2}.lpb-chip-t{font-size:10.5px;font-family:var(--mono);fill:var(--accent-hi)}[data-theme=dark] .lpb-chip-t{fill:var(--accent)}.lpb-fade{animation:lpbFade 10s linear infinite}.lpb-el0{opacity:0;animation:lpbEl0 10s linear infinite}.lpb-el1{opacity:0;animation:lpbEl1 10s ease-out infinite}.lpb-el2{opacity:0;animation:lpbEl2 10s ease-out infinite}.lpb-el3{opacity:0;animation:lpbEl3 10s ease-out infinite}.lpb-el4{opacity:0;animation:lpbEl4 10s ease-out infinite}@keyframes lpbFade{0%,88%{opacity:1}96%,to{opacity:0}}@keyframes lpbEl0{0%,2%{opacity:0}5%,to{opacity:1}}@keyframes lpbEl1{0%,10%{opacity:0;transform:translateY(3px)}14%,to{opacity:1;transform:translateY(0)}}@keyframes lpbEl2{0%,19%{opacity:0;transform:translateY(3px)}23%,to{opacity:1;transform:translateY(0)}}@keyframes lpbEl3{0%,28%{opacity:0;transform:translateY(3px)}32%,to{opacity:1;transform:translateY(0)}}@keyframes lpbEl4{0%,37%{opacity:0;transform:translateY(3px)}41%,to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.lpb-fade,.lpb-el0,.lpb-el1,.lpb-el2,.lpb-el3,.lpb-el4{animation:none;opacity:1;transform:none}}.lpc{background:var(--surface)}.lpc-win{fill:var(--console-bg)}.lpc-dot{fill:var(--console-dim);opacity:.55}.lpc-win-title{font-size:9px;font-family:var(--mono);fill:var(--console-dim)}.lpc-code{font-size:10.5px;font-family:var(--mono);fill:var(--console-ink);white-space:pre}.lpc-code .hl{fill:var(--console-accent)}.lpc-fade{animation:lpcFade 16s linear infinite}.lpc-clip-l1{animation:lpcL1 16s steps(29,end) infinite}.lpc-clip-l2{animation:lpcL2 16s steps(36,end) infinite}.lpc-clip-l3{animation:lpcL3 16s steps(24,end) infinite}.lpc-clip-l4{animation:lpcL4 16s steps(42,end) infinite}@keyframes lpcFade{0%,90.00%{opacity:1}96.00%,to{opacity:0}}@keyframes lpcL1{0%,2.50%{width:0}11.00%,to{width:204px}}@keyframes lpcL2{0%,12.50%{width:0}21.50%,to{width:252px}}@keyframes lpcL3{0%,23.00%{width:0}29.50%,to{width:170px}}@keyframes lpcL4{0%,31.00%{width:0}40.00%,to{width:294px}}@media(prefers-reduced-motion:reduce){.lpc-fade{animation:none;opacity:1}.lpc-clip-l1{animation:none;width:204px}.lpc-clip-l2{animation:none;width:252px}.lpc-clip-l3{animation:none;width:170px}.lpc-clip-l4{animation:none;width:294px}}.lpd-head{font-size:10.5px;font-family:var(--mono);fill:var(--ink2)}.lpd-head.dim{fill:var(--ink3)}.lpd-rule{stroke:var(--border);stroke-width:1}.lpd-station{font-size:10.5px;font-family:var(--mono);fill:var(--ink2)}.lpd-track{fill:var(--surface3)}.lpd-bar{fill:var(--busy)}.lpd-st{font-size:10px;font-family:var(--mono);opacity:0}.lpd-st.queued{fill:var(--ink3)}.lpd-st.running{fill:var(--busy)}.lpd-st.done{fill:var(--good);font-weight:650}.lpd-led{fill:var(--ink3)}.lpd-sum{font-size:10px;font-family:var(--mono);fill:var(--ink3);opacity:0;animation:lpdSum 16s linear infinite}.lpd-sum .ok{fill:var(--good);font-weight:650}.lpd-cap{opacity:0;animation:lpdCap 16s linear infinite}.lpd-bar1{animation:lpdBar1 16s steps(14,end) infinite}.lpd-bar2{animation:lpdBar2 16s steps(14,end) infinite}.lpd-bar3{animation:lpdBar3 16s steps(14,end) infinite}.lpd-led1{animation:lpdLed1 16s linear infinite}.lpd-led2{animation:lpdLed2 16s linear infinite}.lpd-led3{animation:lpdLed3 16s linear infinite}.lpd-q1{animation:lpdQ1 16s linear infinite}.lpd-r1a{animation:lpdR1a 16s linear infinite}.lpd-r1b{animation:lpdR1b 16s linear infinite}.lpd-r1c{animation:lpdR1c 16s linear infinite}.lpd-d1{animation:lpdD1 16s linear infinite}.lpd-q2{animation:lpdQ2 16s linear infinite}.lpd-r2a{animation:lpdR2a 16s linear infinite}.lpd-r2b{animation:lpdR2b 16s linear infinite}.lpd-r2c{animation:lpdR2c 16s linear infinite}.lpd-d2{animation:lpdD2 16s linear infinite}.lpd-q3{animation:lpdQ3 16s linear infinite}.lpd-r3a{animation:lpdR3a 16s linear infinite}.lpd-r3b{animation:lpdR3b 16s linear infinite}.lpd-r3c{animation:lpdR3c 16s linear infinite}.lpd-d3{animation:lpdD3 16s linear infinite}@keyframes lpdCap{0%,41.00%{opacity:0}43.50%,to{opacity:1}}@keyframes lpdBar1{0%,49.25%{width:0;fill:var(--busy)}67.65%{width:200px;fill:var(--busy)}67.66%,to{width:200px;fill:var(--good)}}@keyframes lpdBar2{0%,52.41%{width:0;fill:var(--busy)}73.96%{width:200px;fill:var(--busy)}73.97%,to{width:200px;fill:var(--good)}}@keyframes lpdBar3{0%,55.56%{width:0;fill:var(--busy)}82.37%{width:200px;fill:var(--busy)}82.38%,to{width:200px;fill:var(--good)}}@keyframes lpdLed1{0%,48.21%{fill:var(--ink3)}48.22%,67.65%{fill:var(--busy)}67.66%,to{fill:var(--good)}}@keyframes lpdLed2{0%,51.36%{fill:var(--ink3)}51.37%,73.96%{fill:var(--busy)}73.97%,to{fill:var(--good)}}@keyframes lpdLed3{0%,54.51%{fill:var(--ink3)}54.52%,82.37%{fill:var(--busy)}82.38%,to{fill:var(--good)}}@keyframes lpdQ1{0%,48.21%{opacity:1}48.22%,to{opacity:0}}@keyframes lpdR1a{0%,48.21%{opacity:0}48.22%,53.99%{opacity:1}54.00%,to{opacity:0}}@keyframes lpdR1b{0%,53.99%{opacity:0}54.00%,60.29%{opacity:1}60.30%,to{opacity:0}}@keyframes lpdR1c{0%,60.29%{opacity:0}60.30%,67.65%{opacity:1}67.66%,to{opacity:0}}@keyframes lpdD1{0%,67.65%{opacity:0}67.66%,to{opacity:1}}@keyframes lpdQ2{0%,51.36%{opacity:1}51.37%,to{opacity:0}}@keyframes lpdR2a{0%,51.36%{opacity:0}51.37%,57.67%{opacity:1}57.68%,to{opacity:0}}@keyframes lpdR2b{0%,57.67%{opacity:0}57.68%,65.55%{opacity:1}65.56%,to{opacity:0}}@keyframes lpdR2c{0%,65.55%{opacity:0}65.56%,73.96%{opacity:1}73.97%,to{opacity:0}}@keyframes lpdD2{0%,73.96%{opacity:0}73.97%,to{opacity:1}}@keyframes lpdQ3{0%,54.51%{opacity:1}54.52%,to{opacity:0}}@keyframes lpdR3a{0%,54.51%{opacity:0}54.52%,62.92%{opacity:1}62.93%,to{opacity:0}}@keyframes lpdR3b{0%,62.92%{opacity:0}62.93%,72.38%{opacity:1}72.39%,to{opacity:0}}@keyframes lpdR3c{0%,72.38%{opacity:0}72.39%,82.37%{opacity:1}82.38%,to{opacity:0}}@keyframes lpdD3{0%,82.37%{opacity:0}82.38%,to{opacity:1}}@keyframes lpdSum{0%,85.00%{opacity:0}86.60%,to{opacity:1}}@media(prefers-reduced-motion:reduce){.lpd-bar1,.lpd-bar2,.lpd-bar3,.lpd-led1,.lpd-led2,.lpd-led3,.lpd-q1,.lpd-d1,.lpd-q2,.lpd-d2,.lpd-q3,.lpd-d3,.lpd-sum,.lpd-cap,.lpd-r1a,.lpd-r1b,.lpd-r1c,.lpd-r2a,.lpd-r2b,.lpd-r2c,.lpd-r3a,.lpd-r3b,.lpd-r3c{animation:none}.lpd-bar{width:200px;fill:var(--good)}.lpd-led{fill:var(--good)}.lpd-st.done,.lpd-sum,.lpd-cap{opacity:1}}.lp-scale{margin-top:30px;padding:26px 28px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface2);display:grid;grid-template-columns:1fr 1.5fr;gap:26px 34px;align-items:start}.lp-scale-copy h3{font-size:17px;font-weight:740;letter-spacing:-.012em;line-height:1.3}.lp-scale-copy p{color:var(--ink2);font-size:13.5px;line-height:1.55;margin-top:9px}.lp-scale-tools{display:grid;grid-template-columns:repeat(2,1fr);gap:16px 22px}.lp-scale-tool{display:flex;flex-direction:column;gap:3px;padding-left:13px;border-left:2px solid var(--accent)}.lp-scale-tool b{font-size:13px;font-weight:700}.lp-scale-tool span{color:var(--ink3);font-size:12.5px;line-height:1.5}.lp-ask{display:flex;gap:14px 34px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:36px;font-size:14.5px;font-weight:600;color:var(--ink2)}.lp-ask-pair{display:inline-flex;align-items:center;gap:11px}.lp-ask .btn{text-decoration:none}.lp-feat{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.lp-feat-card .card-body{color:var(--ink2);font-size:13.5px;line-height:1.6}.lp-feat-card .chip{margin-left:2px}.lp-tiles{max-width:940px;margin:0 auto 16px}.lp-stations{max-width:940px;margin:0 auto 16px;overflow-x:auto}.lp-stations .led{margin-right:8px;vertical-align:middle}.lp-two{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:940px;margin:0 auto}.lp-close{display:grid;grid-template-columns:1.3fr 1fr;gap:34px;align-items:center}.lp-checks{list-style:none;margin-top:18px;display:flex;flex-direction:column;gap:11px}.lp-checks li{padding-left:28px;position:relative;font-size:14.5px;color:var(--ink2)}.lp-checks li:before{content:"✓";position:absolute;left:0;top:-1px;width:19px;height:19px;border-radius:50%;background:var(--good-bg);color:var(--good);font-size:11px;font-weight:800;display:grid;place-items:center}.lp-stat{padding:30px 28px;text-align:center}.lp-stat-big{font-size:46px;font-weight:800;letter-spacing:-.02em;color:var(--accent-hi);margin-top:6px}[data-theme=dark] .lp-stat-big{color:var(--accent)}.lp-stat p{color:var(--ink3);font-size:12.5px;margin-top:10px}.lp-final{text-align:center;padding:78px 28px 64px}.lp-final .lp-cta{margin-top:24px}.lp-foot{border-top:1px solid var(--border);padding:22px 28px;display:flex;gap:8px 18px;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--ink3);font-size:12.5px}.lp-foot .lp-brand{font-size:13.5px}.lp-foot .logo-mark{width:20px;height:20px;font-size:10px;border-radius:5px}.lp-foot a{color:var(--ink2)}@media(max-width:780px){.lp-steps,.lp-feat,.lp-two,.lp-close,.lp-scale,.lp-scale-tools{grid-template-columns:1fr}.lp-tiles{grid-template-columns:repeat(2,1fr)}.lp-step0{align-items:flex-start}.lp-top{padding:11px 16px}.lp-hero{padding:56px 18px 48px}.lp-section{padding:48px 18px 52px}}.demo-bar{position:sticky;top:0;z-index:60;display:flex;align-items:center;justify-content:center;gap:14px;padding:7px 16px;background:var(--accent-bg);color:var(--accent-hi);font-size:13px;font-weight:600;border-bottom:1.5px solid var(--accent)}[data-theme=dark] .demo-bar{color:var(--accent)}.demo-bar b{font-weight:750}.demo-bar .btn{border:1.5px solid var(--accent);color:var(--accent-hi);padding:3px 12px;font-size:12px}[data-theme=dark] .demo-bar .btn{color:var(--accent)}.demo-bar .btn:hover{background:var(--accent);color:var(--btn-accent-ink)}.demo-bar+.app{height:calc(100vh - 36px)}.req,.opt{font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border-radius:4px;padding:1px 5px;margin-left:5px;vertical-align:1px}.req{background:var(--accent-bg);color:var(--accent-hi)}[data-theme=dark] .req{color:var(--accent)}.opt{background:var(--off-bg);color:var(--ink3)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#080c128c;z-index:50;display:grid;place-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{width:440px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:22px}.modal h3{font-size:15px;font-weight:700;margin-bottom:4px}.modal .sub{color:var(--ink3);font-size:12.5px;margin-bottom:16px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.chart-wrap{padding:6px 10px 2px}.axis-lbl{font-size:10px;fill:var(--ink3)}.direct-lbl{font-size:11px;font-weight:600;fill:var(--ink)}.empty{padding:30px;text-align:center;color:var(--ink3);font-size:13px}
