/**
 * Copyright (c) 2014 The xterm.js authors. All rights reserved.
 * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
 * https://github.com/chjj/term.js
 * @license MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * Originally forked from (with the author's permission):
 *   Fabrice Bellard's javascript vt100 for jslinux:
 *   http://bellard.org/jslinux/
 *   Copyright (c) 2011 Fabrice Bellard
 *   The original design remains. The terminal itself
 *   has been extended to include xterm CSI codes, among
 *   other features.
 */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-400.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-500.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/jetbrains-mono-700.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/ibm-plex-mono-700.woff2) format("woff2")}@font-face{font-family:Spline Sans Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/spline-sans-mono-400.woff2) format("woff2")}@font-face{font-family:Spline Sans Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/spline-sans-mono-500.woff2) format("woff2")}@font-face{font-family:Spline Sans Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/spline-sans-mono-700.woff2) format("woff2")}:root{--bg: #14161d;--panel: #1a1d27;--elevated: #232734;--text: #d7dce7;--muted: #828ba1;--border: #2b3140;--accent: #8fb7e8;--accent-dim: rgba(143, 183, 232, .13);--accent-glow: rgba(143, 183, 232, .3);--on-accent: #11131a;--ok: #87c7aa;--warn: #e2c381;--err: #e68a8a;--scrim: rgba(16, 18, 25, .86);--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--term-size: 14px}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%;height:100dvh;height:var(--app-h, 100dvh)}body{background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button{font:inherit;color:inherit}.app-shell{display:flex;flex-direction:column;height:100%}.app-topbar{display:flex;align-items:center;gap:.5rem;padding:.5rem .85rem;padding-top:max(.5rem,env(safe-area-inset-top));padding-left:max(.85rem,env(safe-area-inset-left));padding-right:max(.85rem,env(safe-area-inset-right));background:var(--panel);border-bottom:1px solid var(--border);flex-shrink:0}.brand{display:flex;align-items:center;gap:.55rem;font-weight:700;font-size:.95rem;letter-spacing:.2em;text-transform:lowercase;color:var(--accent);user-select:none}.brand-led{width:.5rem;height:.5rem;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:background .3s,box-shadow .3s}.brand-led.led-online{background:var(--accent)}.brand-led.led-offline{background:var(--err);box-shadow:0 0 8px transparent}.brand-led.led-connecting{background:var(--warn);animation:led-pulse 1.4s ease-in-out infinite}.brand-led.led-idle{background:var(--muted);box-shadow:none}@keyframes led-pulse{0%,to{opacity:1}50%{opacity:.35}}.topbar-spacer{flex:1}.icon-btn{width:30px;height:30px;display:grid;place-items:center;background:transparent;border:1px solid transparent;border-radius:7px;color:var(--muted);cursor:pointer;transition:color .15s,background .15s,border-color .15s}.icon-btn:hover{color:var(--accent);background:var(--elevated)}.icon-btn.active{color:var(--accent);border-color:var(--border);background:var(--elevated)}@media (pointer: coarse){.icon-btn[data-label],.vnc-btn[data-label]{width:auto;height:auto;min-width:38px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px 7px}.icon-btn[data-label]:after,.vnc-btn[data-label]:after{content:attr(data-label);font-size:.5rem;line-height:1;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}.icon-btn[data-label].active:after{color:var(--accent)}}.account{display:flex;align-items:center;gap:.6rem;font-size:.72rem;letter-spacing:.04em;color:var(--muted)}.account-email{opacity:.85}.app-body{flex:1;min-height:0;display:flex}.sidebar{width:208px;flex-shrink:0;display:flex;flex-direction:column;min-height:0;background:var(--panel);border-right:1px solid var(--border)}.rail-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:.6rem .85rem .4rem;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);opacity:.7}.sync-badge{font-size:.55rem;letter-spacing:.04em;text-transform:none;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.sync-badge.live{color:var(--ok)}.rail-list{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column}.rail-item{display:flex;align-items:center;gap:.55rem;width:100%;padding:.46rem .85rem;appearance:none;background:transparent;border:none;border-left:2px solid transparent;color:var(--muted);font-size:.8rem;letter-spacing:.02em;text-align:left;cursor:pointer;user-select:none;transition:color .15s,background .15s}.rail-item:hover{color:var(--text);background:var(--elevated)}.rail-item.active{color:var(--accent);background:var(--bg);border-left-color:var(--accent)}.rail-dot{width:.46rem;height:.46rem;border-radius:50%;flex-shrink:0;background:var(--ok);box-shadow:0 0 6px var(--accent-glow)}.rail-dot.idle{background:transparent;border:1px solid var(--muted);box-shadow:none}.rail-browser svg{opacity:.85;flex-shrink:0}.rail-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rail-kill,.rail-edit{width:1.05rem;height:1.05rem;display:grid;place-items:center;border-radius:4px;font-size:.95rem;line-height:1;opacity:0;flex-shrink:0;transition:opacity .12s,color .12s,background .12s}.rail-edit{font-size:.78rem}.rail-item:hover .rail-kill,.rail-item.active .rail-kill,.rail-item:hover .rail-edit,.rail-item.active .rail-edit{opacity:.5}.rail-kill:hover{opacity:1;color:var(--err);background:var(--elevated)}.rail-edit:hover{opacity:1;color:var(--accent);background:var(--elevated)}.rail-actions{display:flex;flex-direction:column;gap:1px;border-top:1px solid var(--border);flex-shrink:0}.rail-action{padding:.5rem .85rem;background:transparent;border:none;color:var(--muted);font-size:.74rem;letter-spacing:.04em;text-align:left;cursor:pointer;transition:color .15s,background .15s}.rail-action:hover{color:var(--accent);background:var(--elevated)}.rail-item.misplaced{color:var(--warn)}.rail-item.misplaced .rail-dot.live{background:var(--warn);box-shadow:0 0 6px var(--warn)}.rail-warn{margin-left:auto;font-size:.8rem;line-height:1;color:var(--warn);flex-shrink:0}.rail-item .rail-warn+.rail-kill{margin-left:.35rem}.rail-recombobulate{color:var(--warn);font-weight:600}.rail-recombobulate:hover{color:var(--warn);background:var(--accent-dim)}.content{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;position:relative}.hamburger,.nav-scrim{display:none}@media (max-width: 640px){.hamburger{display:grid}.account-email{display:none}.app-body{position:relative}.sidebar{position:absolute;top:0;left:0;bottom:0;z-index:30;width:min(82%,264px);transform:translate(-100%);transition:transform .22s ease;will-change:transform}.sidebar.open{transform:translate(0);box-shadow:4px 0 28px #00000073}.nav-scrim{display:block;position:absolute;inset:0;z-index:20;background:var(--scrim);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);animation:scrim-in .18s ease-out}}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.sidebar{transition:none}.nav-scrim{animation:none}}.term-layer{position:absolute;inset:0;display:flex}.term-layer.visible{z-index:2;visibility:visible}.term-layer.hidden{z-index:1;visibility:hidden;pointer-events:none}.term-pane{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.term-wrap{flex:1;min-width:0;min-height:0;position:relative;padding:.5rem .75rem;background:var(--bg)}.term-wrap .xterm{height:100%}.xterm-viewport{scrollbar-width:none;-ms-overflow-style:none}.xterm-viewport::-webkit-scrollbar{width:0;height:0;display:none}.term-input-overlay{position:absolute;inset:0;z-index:3;margin:0;padding:.5rem .75rem;border:0;outline:0;resize:none;overflow:hidden;background:transparent;color:transparent;caret-color:transparent;-webkit-text-fill-color:transparent;font:inherit;white-space:pre;touch-action:none;-webkit-user-select:none;user-select:none}.keybar{flex-shrink:0;display:flex;gap:6px;padding:6px 8px;background:var(--panel);border-top:1px solid var(--border);overflow-x:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}.keybar::-webkit-scrollbar{display:none}.keybar-key{flex:0 0 auto;min-width:46px;height:40px;padding:0 12px;display:grid;place-items:center;background:var(--elevated);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:1rem;line-height:1;cursor:pointer;user-select:none;touch-action:manipulation;transition:border-color .12s,background .12s,color .12s}.keybar-key:active{background:var(--accent-dim);border-color:var(--accent)}.keybar-key.armed{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:700}.keybar-key.combo{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,var(--border));font-weight:600}.keybar-key.combo:active{background:color-mix(in srgb,var(--warn) 18%,transparent);border-color:var(--warn)}.keybar-key.combo-armed{background:var(--warn);color:var(--bg);border-color:var(--warn);font-weight:700;animation:keybar-pulse .8s ease-in-out infinite}@keyframes keybar-pulse{0%,to{opacity:1}50%{opacity:.6}}.browser-wrap{position:absolute;inset:0;padding:0;display:grid;place-items:center;overflow:hidden}.vnc-screen{position:absolute;top:0;left:0;width:100%;aspect-ratio:16 / 9;display:flex}.vnc-screen>div{margin:auto;background:#000}.vnc-overlay{position:absolute;inset:0;display:grid;place-items:center;background:var(--scrim);pointer-events:none}.vnc-controls{position:absolute;top:10px;right:12px;z-index:10;display:flex;gap:6px}.vnc-btn{width:32px;height:32px;display:grid;place-items:center;font-size:1.05rem;line-height:1;color:var(--accent);background:var(--scrim);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}.vnc-btn:hover{border-color:var(--accent);box-shadow:0 0 8px var(--accent-dim)}.vnc-btn:active{transform:scale(.92)}.browser-wrap:fullscreen{background:var(--bg)}.statusline{display:flex;align-items:center;gap:.8rem;padding:.32rem .95rem;padding-bottom:max(.32rem,env(safe-area-inset-bottom));padding-left:max(.95rem,env(safe-area-inset-left));padding-right:max(.95rem,env(safe-area-inset-right));background:var(--panel);border-top:1px solid var(--border);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);flex-shrink:0}@media (max-width: 640px){.statusline{gap:.55rem}.statusline .status-host{display:none}}.statusline .ok{color:var(--ok)}.statusline .warn{color:var(--warn)}.statusline .err{color:var(--err)}.status-sep{width:1px;height:.8rem;background:var(--border)}.status-active{color:var(--text);text-transform:none;letter-spacing:.02em}.status-host{display:inline-flex;align-items:center;gap:.8rem}.transport-badge{position:relative;display:inline-flex}.transport-toggle{display:inline-flex;align-items:center;gap:.3rem;background:none;border:0;padding:0;margin:0;cursor:pointer;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit}.transport-toggle .caret{color:var(--muted);font-size:.85em}.transport-toggle:hover .caret{color:var(--accent)}.transport-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:20;min-width:168px;padding:4px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000059;display:flex;flex-direction:column}.transport-opt{text-align:left;white-space:pre;background:none;border:0;border-radius:5px;padding:.4rem .55rem;cursor:pointer;font:inherit;letter-spacing:.02em;text-transform:none;color:var(--text)}.transport-opt:hover{background:var(--elevated);color:var(--accent)}.transport-opt.sel{color:var(--accent)}.clock{color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:.06em}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1.1rem;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--text);border-radius:7px;transition:all .15s}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:700}.btn-primary:hover{color:var(--on-accent);box-shadow:0 0 20px var(--accent-glow)}.btn-ghost{color:var(--muted);border-color:transparent;padding:.4rem .6rem}.btn-ghost:hover{background:var(--elevated)}.btn-danger{background:var(--err);border-color:var(--err);color:var(--on-accent);font-weight:700}.btn-danger:hover{color:var(--on-accent);box-shadow:0 0 18px color-mix(in srgb,var(--err) 45%,transparent)}.btn:disabled{opacity:.45;cursor:default;pointer-events:none;box-shadow:none}.gate{position:relative;display:grid;place-items:center;height:100%;background:var(--bg);overflow:hidden}.gate-glow{position:absolute;top:-26%;left:50%;width:760px;height:760px;transform:translate(-50%);border-radius:50%;background:radial-gradient(circle,var(--accent-glow),transparent 62%);opacity:.55;filter:blur(30px);pointer-events:none}.gate-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:46px 46px;opacity:.2;-webkit-mask-image:radial-gradient(circle at 50% 44%,#000,transparent 66%);mask-image:radial-gradient(circle at 50% 44%,#000,transparent 66%)}.gate-card-min,.login-card{position:relative;z-index:1}.gate-card-min{display:flex;flex-direction:column;align-items:center;gap:.9rem}.login-card{display:flex;flex-direction:column;align-items:center;gap:1.15rem;padding:2.8rem 3rem 2.5rem;background:color-mix(in srgb,var(--panel) 88%,transparent);border:1px solid var(--border);border-radius:16px;box-shadow:0 22px 60px #00000057;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:center;min-width:322px}.gate-brand{display:flex;align-items:center;gap:.68rem;font-weight:700;font-size:2.1rem;letter-spacing:.22em;text-transform:lowercase;color:var(--accent)}.gate-brand .brand-led{width:.6rem;height:.6rem}.gate-tagline{font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}.gate-divider{width:100%;display:flex;justify-content:center}.gate-divider span{width:46px;height:1px;background:var(--border)}.btn-google{display:inline-flex;align-items:center;gap:.7rem;padding:.72rem 1.35rem;font-family:var(--font-mono);font-size:.82rem;letter-spacing:.01em;color:var(--text);background:var(--elevated);border:1px solid var(--border);border-radius:10px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .1s}.btn-google:hover{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.btn-google:active{transform:translateY(1px)}.gate-note{font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);opacity:.8}.gate-denied{display:flex;align-items:center;gap:.65rem;font-size:.78rem;line-height:1.5;color:var(--warn)}.gate-denied-icon{font-size:1.25rem;line-height:1}.gate-boot{font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}.gate-foot{position:absolute;bottom:1.4rem;left:0;right:0;text-align:center;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);opacity:.6}.error{font-size:.72rem;color:var(--err)}.empty-state{display:grid;place-items:center;overflow-y:auto;-webkit-overflow-scrolling:touch}.empty-card{width:min(440px,100%);display:flex;flex-direction:column;gap:18px;padding:22px 24px;background:color-mix(in srgb,var(--panel) 70%,transparent);border:1px solid var(--border);border-radius:14px}.empty-brand{display:flex;align-items:center;gap:.6rem;font-weight:700;font-size:1.5rem;letter-spacing:.16em;text-transform:lowercase;color:var(--accent)}.empty-sub{font-size:.76rem;line-height:1.5;color:var(--muted)}.empty-sub b{color:var(--text);font-weight:600}.empty-sec{display:flex;flex-direction:column;gap:8px}.empty-label{font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);opacity:.8}.empty-chips,.empty-actions{display:flex;flex-wrap:wrap;gap:7px}.empty-chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:6px 11px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.78rem;cursor:pointer;transition:border-color .12s,color .12s,background .12s}.empty-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--elevated)}.empty-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-act{padding:7px 13px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.76rem;cursor:pointer;transition:border-color .12s,color .12s,background .12s}.empty-act:hover{border-color:var(--accent);color:var(--accent);background:var(--elevated)}.empty-host{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--border);padding-top:14px}.empty-host-stats{display:flex;flex-wrap:wrap;gap:12px;font-size:.74rem;color:var(--text);font-variant-numeric:tabular-nums}.empty-stat{color:var(--text)}.empty-stat.warn{color:var(--warn)}.empty-stat.err{color:var(--err);font-weight:600}.tagline{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);max-width:30ch}.settings-anchor{position:relative;display:flex}.settings-backdrop{position:fixed;inset:0;z-index:40}.settings-pop{position:absolute;top:calc(100% + 9px);right:0;z-index:50;width:270px;padding:14px;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 38px #00000047;display:flex;flex-direction:column;gap:16px;animation:pop-in .13s ease-out}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.settings-sec{display:flex;flex-direction:column;gap:9px}.settings-label{font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.theme-chip{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--border);border-radius:9px;cursor:pointer;text-align:left;overflow:hidden;transition:transform .12s}.theme-chip:hover{transform:translateY(-1px)}.chip-bar{height:11px;border-radius:3px;display:flex;align-items:center;padding:0 4px}.chip-dot{width:5px;height:5px;border-radius:50%}.chip-rows{display:flex;flex-direction:column;gap:3px}.chip-rows span{height:3px;border-radius:2px;width:100%;display:block}.chip-meta{display:flex;align-items:baseline;justify-content:space-between;gap:4px}.chip-name{font-size:.7rem;font-weight:600;letter-spacing:.02em}.chip-mode{font-size:.54rem;text-transform:uppercase;letter-spacing:.12em}.font-list{display:flex;flex-direction:column;gap:7px}.font-opt{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--border);border-radius:9px;background:var(--bg);color:var(--text);cursor:pointer;text-align:left;transition:border-color .12s,background .12s}.font-opt:hover{border-color:var(--muted)}.font-opt.active{border-color:var(--accent);background:var(--accent-dim)}.font-name{font-size:.76rem;font-weight:600}.font-sample{font-size:.72rem;color:var(--muted)}.size-row{display:flex;align-items:center;gap:12px}.size-btn{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--border);border-radius:7px;background:var(--bg);color:var(--text);font-size:1.05rem;line-height:1;cursor:pointer;transition:border-color .12s,color .12s}.size-btn:hover{border-color:var(--accent);color:var(--accent)}.size-val{font-size:.78rem;min-width:48px;text-align:center;letter-spacing:.04em;font-variant-numeric:tabular-nums}.toggle-row{display:flex;align-items:center;gap:10px;padding:2px;border:none;background:none;cursor:pointer;font-family:inherit;color:var(--muted);text-align:left}.toggle-track{flex:none;width:34px;height:19px;border-radius:10px;background:var(--elevated);border:1px solid var(--border);position:relative;transition:background .15s,border-color .15s}.toggle-knob{position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:var(--muted);transition:transform .15s,background .15s}.toggle-row.on .toggle-track{background:var(--accent-dim);border-color:var(--accent)}.toggle-row.on .toggle-knob{transform:translate(15px);background:var(--accent)}.toggle-text{font-size:.72rem}.toggle-row.on .toggle-text{color:var(--text)}@media (prefers-reduced-motion: reduce){.brand-led.led-connecting,.settings-pop,.file-panel{animation:none}.theme-chip:hover{transform:none}}.files-anchor{position:relative;display:flex}.file-panel{position:absolute;top:calc(100% + 9px);right:0;z-index:50;width:min(440px,calc(100vw - 20px));max-height:min(74vh,560px);padding:12px;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 38px #00000047;display:flex;flex-direction:column;gap:10px;animation:pop-in .13s ease-out}.file-panel.dropping{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow),0 14px 38px #00000047}.fp-head{display:flex;align-items:center;gap:8px}.fp-title{font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);flex:1}.fp-x{width:24px;height:24px;display:grid;place-items:center;border:1px solid var(--border);border-radius:7px;background:var(--bg);color:var(--muted);cursor:pointer;font-size:.95rem;line-height:1;transition:border-color .12s,color .12s}.fp-x:hover{border-color:var(--accent);color:var(--accent)}.fp-path{display:flex;align-items:center;gap:8px;min-width:0}.fp-up{width:26px;height:26px;flex:none;display:grid;place-items:center;border:1px solid var(--border);border-radius:7px;background:var(--bg);color:var(--text);cursor:pointer;transition:border-color .12s,color .12s}.fp-up:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.fp-up:disabled{opacity:.4;cursor:default}.fp-crumbs{flex:1;min-width:0;display:flex;align-items:center;overflow-x:auto;white-space:nowrap;scrollbar-width:none}.fp-crumbs::-webkit-scrollbar{display:none}.fp-crumb-item{display:inline-flex;align-items:center;flex:none}.fp-crumb{flex:none;padding:2px 4px;border:none;border-radius:5px;background:none;color:var(--muted);font-family:inherit;font-size:.72rem;white-space:nowrap;cursor:pointer;transition:color .12s,background .12s}.fp-crumb:hover{color:var(--accent);background:var(--elevated)}.fp-crumb.cur{color:var(--text);font-weight:600;cursor:default}.fp-crumb.cur:hover{background:none}.fp-crumb-sep{flex:none;color:var(--muted);opacity:.45;padding:0 1px;font-size:.72rem}.fp-list{flex:1;min-height:80px;overflow-y:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:9px;background:var(--bg);padding:4px}.fp-msg{padding:14px 10px;font-size:.74rem;color:var(--muted);text-align:center}.fp-msg.fp-err{color:var(--err)}.fp-row{display:flex;align-items:center;gap:6px;border-radius:7px;padding:1px 4px}.fp-row:hover{background:var(--elevated)}.fp-name{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:5px 4px;border:none;background:none;color:var(--text);cursor:pointer;text-align:left;font-family:inherit;font-size:.78rem}.fp-ic{flex:none;font-size:.85rem;line-height:1}.fp-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fp-name:hover .fp-label{color:var(--accent)}.fp-size{flex:none;font-size:.66rem;color:var(--muted);font-variant-numeric:tabular-nums}.fp-dl{flex:none;width:24px;height:24px;display:grid;place-items:center;border:1px solid transparent;border-radius:6px;background:none;color:var(--muted);cursor:pointer;font-size:.85rem;transition:border-color .12s,color .12s}.fp-dl:hover{border-color:var(--accent);color:var(--accent)}.fp-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fp-act{flex:none;width:24px;height:24px;display:grid;place-items:center;border:1px solid transparent;border-radius:6px;background:none;color:var(--muted);cursor:pointer;font-size:.82rem;line-height:1;transition:border-color .12s,color .12s}.fp-act:hover{border-color:var(--accent);color:var(--accent)}.fp-act-del:hover{border-color:var(--err);color:var(--err)}.fp-confirm{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--err) 35%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--err) 8%,var(--bg));font-size:.74rem}.fp-confirm-msg{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fp-confirm-actions{display:flex;gap:6px;flex-shrink:0}.fp-btn-sm{padding:4px 8px;font-size:.68rem}.fp-btn-danger{border-color:var(--err);color:var(--err)}.fp-btn-danger:hover{background:color-mix(in srgb,var(--err) 15%,transparent)}.fp-row-edit{display:flex;align-items:center;gap:6px}.fp-input-inline{flex:1;min-width:0;padding:4px 7px;font-size:.76rem}.fp-getpath{display:flex;align-items:center;gap:8px}.fp-btn{padding:6px 11px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);cursor:pointer;font-family:inherit;font-size:.72rem;white-space:nowrap;transition:border-color .12s,color .12s}.fp-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.fp-btn:disabled{opacity:.4;cursor:default}.fp-hint{font-size:.66rem;color:var(--muted);flex:1;text-align:right}.fp-input{flex:1;min-width:0;padding:6px 9px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.72rem}.fp-input:focus{outline:none;border-color:var(--accent)}.fp-input::placeholder{color:var(--muted)}@media (max-width: 640px){.file-panel{position:fixed;inset:.5rem;width:auto;max-height:none;z-index:100;border-radius:10px}.fp-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0}.fp-row{gap:4px;padding:3px 4px}.fp-name{gap:6px;padding:6px 4px;font-size:.78rem}.fp-act{width:auto;min-width:28px;height:28px;border:1px solid var(--border);font-size:.9rem}.fp-actions{justify-content:center;gap:6px}.fp-getpath{flex-wrap:nowrap}.fp-input-inline{width:100%}.fp-confirm{flex-wrap:wrap;gap:6px;padding:10px}.fp-confirm-actions{width:100%;justify-content:flex-end}}.fp-transfers{display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--border);padding-top:9px}.fp-xfer{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:7px;position:relative;font-size:.72rem}.fp-xfer-dir{color:var(--accent)}.fp-xfer-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.fp-xfer-pct{color:var(--muted);font-variant-numeric:tabular-nums}.fp-xfer.error .fp-xfer-pct{color:var(--err)}.fp-xfer.done .fp-xfer-pct{color:var(--ok)}.fp-xfer-x{width:18px;height:18px;display:grid;place-items:center;border:none;border-radius:5px;background:none;color:var(--muted);cursor:pointer;line-height:1}.fp-xfer-x:hover{color:var(--err)}.fp-bar{grid-column:1 / -1;height:2px;border-radius:2px;background:var(--border);overflow:hidden}.fp-bar-fill{height:100%;background:var(--accent);transition:width .15s linear}.status-xfer{color:var(--ok)}.term-drop{position:absolute;inset:8px;z-index:5;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:12px;background:var(--accent-dim);color:var(--accent);font-size:.8rem;letter-spacing:.06em;pointer-events:none}.term-pane{position:relative}.term-search{position:absolute;top:8px;right:12px;z-index:6;display:flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--border);border-radius:8px;background:var(--panel);box-shadow:0 4px 16px var(--scrim)}.term-search-input{width:150px;border:none;outline:none;background:transparent;color:var(--text);font:inherit;font-size:.78rem;padding:2px 6px}.term-search-btn{border:none;background:transparent;color:var(--muted);cursor:pointer;width:22px;height:22px;border-radius:6px;font-size:.85rem;line-height:1}.term-search-btn:hover{color:var(--accent);background:var(--elevated)}.term-history{position:absolute;top:8px;left:12px;z-index:6;display:flex;align-items:center;gap:4px;padding:3px 9px;border:1px solid var(--border);border-radius:999px;background:var(--panel);color:var(--muted);cursor:pointer;font:inherit;font-size:.72rem;letter-spacing:.02em;line-height:1.4;box-shadow:0 4px 16px var(--scrim);opacity:.85}.term-history:hover:not(:disabled){color:var(--accent);border-color:var(--accent);opacity:1}.term-history:disabled{cursor:default;opacity:.6}.rail-attn{margin-left:auto;flex-shrink:0;color:var(--accent);font-size:.6rem;line-height:1;animation:attn-pulse 1.6s ease-in-out infinite}.rail-item .rail-attn+.rail-warn,.rail-item .rail-attn+.rail-kill{margin-left:.35rem}@keyframes attn-pulse{0%,to{opacity:1}50%{opacity:.25}}.toast-stack{position:fixed;right:14px;bottom:42px;z-index:60;display:flex;flex-direction:column;gap:8px;max-width:min(360px,90vw)}.toast{display:flex;align-items:flex-start;gap:8px;padding:9px 11px;border:1px solid var(--border);border-left-width:3px;border-radius:8px;background:var(--elevated);color:var(--text);font-size:.78rem;line-height:1.35;box-shadow:0 6px 22px var(--scrim);animation:toast-in .18s ease-out}.toast-msg{flex:1;min-width:0;word-break:break-word}.toast-x{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;padding:0 2px;flex-shrink:0}.toast-x:hover{color:var(--text)}.toast-info{border-left-color:var(--accent)}.toast-ok{border-left-color:var(--ok)}.toast-warn{border-left-color:var(--warn)}.toast-err{border-left-color:var(--err)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (max-width: 640px){.toast-stack{left:14px;right:14px;max-width:none;bottom:46px}}.host-chip{position:relative;display:inline-flex}.host-toggle{border:none;background:transparent;cursor:pointer;font:inherit;font-size:.72rem;padding:0 4px;color:var(--muted);letter-spacing:.02em}.host-toggle:hover{color:var(--text)}.host-toggle.ok{color:var(--ok)}.host-toggle.warn{color:var(--warn)}.host-toggle.err{color:var(--err);font-weight:600}.host-pop{position:absolute;bottom:calc(100% + 6px);right:0;z-index:20;min-width:230px;padding:8px 10px;border:1px solid var(--border);border-radius:9px;background:var(--panel);box-shadow:0 8px 26px var(--scrim)}.host-pop-title{font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding-bottom:6px;margin-bottom:4px;border-bottom:1px solid var(--border)}.host-row{display:flex;justify-content:space-between;gap:14px;padding:2px 0;font-size:.74rem}.host-k{color:var(--muted)}.host-v{color:var(--text);font-variant-numeric:tabular-nums}.host-v.ok{color:var(--ok)}.host-v.warn{color:var(--warn)}.host-v.err{color:var(--err);font-weight:600}.host-age{font-size:.62rem;color:var(--muted);text-align:right;padding-top:6px}.settings-build{margin-top:10px;padding-top:8px;border-top:1px solid var(--border);font-size:.6rem;color:var(--muted);text-align:center;letter-spacing:.04em;font-variant-numeric:tabular-nums}.modal-backdrop{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:scrim-in .15s ease-out}.modal{width:min(420px,100%);background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 24px 64px #00000073;padding:16px 18px 18px;animation:pop-in .14s ease-out}.modal-head{display:flex;align-items:center;gap:8px;margin-bottom:14px}.modal-title{flex:1;font-size:.82rem;font-weight:600;letter-spacing:.02em;color:var(--text)}.modal-x{width:26px;height:26px;flex:none;display:grid;place-items:center;border:1px solid var(--border);border-radius:7px;background:var(--bg);color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;transition:border-color .12s,color .12s}.modal-x:hover{border-color:var(--accent);color:var(--accent)}.modal-form{display:flex;flex-direction:column;gap:7px}.modal-label{font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:4px}.modal-input{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:9px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.82rem}.modal-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}.modal-input::placeholder{color:var(--muted);opacity:.7}.modal-hint{font-size:.68rem;color:var(--muted);line-height:1.4}.modal-hint.err{color:var(--err)}.modal-body{font-size:.82rem;line-height:1.5;color:var(--text)}.modal-body b{color:var(--accent);font-weight:700}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.modal-actions .btn{text-transform:none;letter-spacing:.02em;padding:.5rem 1rem}.cmdk-backdrop{position:fixed;inset:0;z-index:80;display:flex;justify-content:center;align-items:flex-start;padding:clamp(40px,12vh,140px) 16px 16px;background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:scrim-in .15s ease-out}.cmdk{width:min(560px,100%);background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 24px 64px #00000080;overflow:hidden;animation:pop-in .14s ease-out}.cmdk-input{width:100%;padding:14px 16px;border:none;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font-family:inherit;font-size:.92rem}.cmdk-input:focus{outline:none}.cmdk-input::placeholder{color:var(--muted)}.cmdk-list{max-height:min(50vh,380px);overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px}.cmdk-empty{padding:18px;text-align:center;font-size:.78rem;color:var(--muted)}.cmdk-item{width:100%;display:flex;align-items:center;gap:10px;padding:9px 11px;border:none;border-radius:8px;background:transparent;color:var(--text);cursor:pointer;font-family:inherit;font-size:.82rem;text-align:left}.cmdk-item.sel{background:var(--accent-dim);color:var(--accent)}.cmdk-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cmdk-tag{flex:none;font-size:.56rem;letter-spacing:.1em;text-transform:uppercase;padding:2px 6px;border-radius:5px;border:1px solid var(--border);color:var(--muted)}.cmdk-tag.live{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 40%,var(--border))}.cmdk-foot{display:flex;gap:10px;padding:7px 14px;border-top:1px solid var(--border);background:var(--bg);font-size:.6rem;letter-spacing:.06em;color:var(--muted)}.cmdk-foot kbd{font-family:inherit;font-size:.58rem;padding:1px 5px;border:1px solid var(--border);border-radius:4px;background:var(--elevated);color:var(--text)}@media (prefers-reduced-motion: reduce){.modal,.cmdk,.modal-backdrop,.cmdk-backdrop{animation:none}}
