/**
 * 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;right:0;left:0;top:0;bottom: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,.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.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}:root{--blue:#2563eb;--blue-2:#4d8bff;--blue-700:#1d4ed8;--accent:var(--blue);--accent-2:var(--blue-2);--accent-700:var(--blue-700);--primary:var(--blue);--ink:#0f172a;--ink2:#475569;--ink3:#94a3b8;--t1:var(--ink);--t2:var(--ink2);--t3:var(--ink3);--bg:#f0f4f9;--bg-2:#f1f5f9;--bg2:var(--bg-2);--card:#ffffff;--card-2:#f8fafc;--fill:#f1f5f9;--line:#e8edf5;--line-2:#eef2f7;--line-strong:#dbe3ee;--success:#059669;--warning:#d97706;--danger:#dc2626;--info:#0891b2;--violet:#7c3aed;--success-bg:rgba(5,150,105,.11);--warning-bg:rgba(217,119,6,.12);--danger-bg:rgba(220,38,38,.1);--info-bg:rgba(8,145,178,.11);--accent-bg:rgba(37,99,235,.1);--violet-bg:rgba(124,58,237,.11);--win-sh:0 0 0 1px rgba(15,23,42,.04),0 18px 44px -26px rgba(30,50,120,.35);--glass-sh:0 16px 40px -12px rgba(20,30,60,.34),0 4px 12px -6px rgba(20,30,60,.18),inset 0 1px 0 rgba(255,255,255,.9);--shadow-card:var(--win-sh);--shadow-soft:var(--win-sh);--shadow-pop:0 18px 44px -18px rgba(20,30,60,.35);--grad-blue:linear-gradient(135deg,#4d8bff,#2563eb);--grad-green:linear-gradient(135deg,#34d399,#059669);--radius:24px;--sans:"Montserrat",Arial,sans-serif;--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--top:76px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{margin:0;min-height:100%}body{color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;background:radial-gradient(55% 40% at 0% 0%,rgba(37,99,235,.11),transparent 62%),radial-gradient(45% 38% at 100% 0%,rgba(14,165,233,.1),transparent 60%),radial-gradient(40% 30% at 70% 100%,rgba(5,150,105,.06),transparent 60%),var(--bg);background-attachment:fixed}.mono,code,pre,.cell-target,.tag,.cont-chip{font-family:var(--mono)}input,button,select,textarea{font-family:inherit;color:inherit}button{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}a{color:var(--blue);text-decoration:none}::selection{background:var(--blue);color:#fff}::placeholder{color:var(--ink3)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#0f172a1f;border-radius:8px}::-webkit-scrollbar-track{background:transparent}@keyframes fadeup{0%{transform:translateY(6px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes cc-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes livepulse{0%,to{opacity:1}50%{opacity:.35}}.cc-logo{display:inline-flex;align-items:center;gap:8px}.cc-logo-tag{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px 0 7px;border-radius:999px;font:800 13px/1 var(--sans);letter-spacing:.03em;color:#fff;background:var(--grad-blue);box-shadow:0 6px 14px -6px #2563ebb3}.cc-logo-tag svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.6}.cc-nav-fallback{display:inline-flex;align-items:center;gap:8px}.app{display:flex;gap:14px;align-items:flex-start;margin:0 8px;padding:12px 0 28px}.sidebar{flex:0 0 268px;width:268px;min-width:0;background:#fff;border-radius:28px;box-shadow:var(--win-sh);position:-webkit-sticky;position:sticky;top:calc(var(--top) + 4px);height:calc(100vh - var(--top) - 16px);display:flex;flex-direction:column;overflow:hidden;padding:16px 12px 12px}.brand{display:flex;align-items:center;gap:12px;padding:4px 6px 16px;color:var(--ink)}.brand-logo{width:44px;height:44px;flex:none;border-radius:15px;background:var(--grad-blue);display:flex;align-items:center;justify-content:center;box-shadow:0 10px 20px -10px #2563ebcc;color:#fff;font-weight:700}.brand-logo .mono{font-size:16px;letter-spacing:-1px}.brand-name{font-weight:800;font-size:19px;letter-spacing:-.025em;line-height:1.1}.brand-sub{font-size:12px;color:#64748b;margin-top:2px}.nav-label{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);padding:14px 10px 6px}.nav-label:first-of-type{padding-top:2px}.nav{display:flex;flex-direction:column;gap:2px}.nav a{position:relative;display:flex;align-items:center;gap:12px;height:42px;padding:0 12px;border-radius:14px;color:var(--ink2);font-size:14px;font-weight:600;transition:background .14s,color .14s}.nav a svg{width:19px;height:19px;flex:none;stroke:currentColor;fill:none;stroke-width:2}.nav a:hover{background:#f5f8fc;color:var(--ink)}.nav a.active{background:var(--accent-bg);color:var(--blue)}.nav a.active:before{content:"";position:absolute;left:-12px;top:10px;bottom:10px;width:4px;border-radius:0 4px 4px 0;background:var(--blue)}.side-scroll{flex:1;min-height:0;overflow-y:auto;margin:0 -4px;padding:0 4px}.side-foot{flex:none;margin-top:auto;display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--line)}.main{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px;animation:fadeup .3s ease}.surface{display:contents}.disk-card{display:flex;align-items:center;gap:12px;background:var(--fill);border-radius:16px;padding:10px 12px}.disk-ring{position:relative;width:46px;height:46px;flex:none}.disk-ring svg{transform:rotate(-90deg)}.disk-ring .pct{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;font-weight:600;color:var(--blue)}.disk-meta{flex:1;min-width:0}.disk-meta .dt{font-size:12.5px;font-weight:700;margin-bottom:2px}.disk-meta .ds{font-size:11px;color:#64748b}.user-chip{display:flex;align-items:center;gap:10px;padding:6px 6px 2px}.user-ava{width:38px;height:38px;flex:none;border-radius:12px;background:var(--grad-blue);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#fff;box-shadow:0 8px 16px -8px #2563ebb3}.user-name{font-size:13px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-sub{font-size:11px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-gear{flex:none;width:34px;height:34px;background:var(--fill);border:none;border-radius:50%;color:#64748b;display:flex;align-items:center;justify-content:center;transition:color .15s,background .15s}.user-gear svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}.user-gear:hover{color:var(--blue);background:var(--accent-bg)}.topbar{position:-webkit-sticky;position:sticky;top:calc(var(--top) + 4px);z-index:30;display:flex;align-items:center;gap:12px;min-height:66px;padding:10px 12px;border-radius:26px;background:#ffffffc2;-webkit-backdrop-filter:blur(28px) saturate(185%);backdrop-filter:blur(28px) saturate(185%);border:1px solid rgba(255,255,255,.7);box-shadow:var(--glass-sh)}.topbar-ico{width:46px;height:46px;flex:none;border-radius:15px;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:var(--grad-blue);box-shadow:0 10px 20px -10px #2563ebcc}.topbar-ico svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}.topbar-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.page-title{margin:0;font-size:18px;font-weight:800;letter-spacing:-.02em;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crumb{display:flex;align-items:center;gap:6px;font-size:12px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crumb svg{width:12px;height:12px;stroke:#c6ccd8;fill:none;stroke-width:2}.crumb .here{color:var(--ink2);font-weight:600}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex:none}h1{font-size:20px;font-weight:800;letter-spacing:-.02em}h2{font-weight:800;letter-spacing:-.015em}.content{display:block}.content>h1{font-size:20px;font-weight:800;margin:0 0 18px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:40px;padding:0 16px;border-radius:999px;border:none;background:var(--fill);color:var(--ink2);text-decoration:none;cursor:pointer;font-size:13.5px;font-weight:600;white-space:nowrap;transition:filter .12s,background .12s,color .12s,transform .12s}.btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;flex:none}.btn:hover{background:#e9eef5;color:var(--ink)}.btn:disabled{opacity:.45;cursor:default;transform:none;filter:none}.btn-primary{background:var(--grad-blue);color:#fff;box-shadow:0 12px 24px -10px #2563ebcc}.btn-primary:hover{background:var(--grad-blue);color:#fff;filter:brightness(1.06);transform:translateY(-1px)}.btn-success{background:var(--grad-green);color:#fff;box-shadow:0 12px 24px -10px #059669b3}.btn-success:hover{background:var(--grad-green);filter:brightness(1.05);color:#fff;transform:translateY(-1px)}.btn-danger{color:var(--danger);background:var(--danger-bg)}.btn-danger:hover{background:#dc262629;color:var(--danger)}.btn-ghost{background:transparent;color:var(--blue)}.btn-ghost:hover{background:var(--accent-bg);color:var(--blue)}.btn-sm{height:34px;padding:0 13px;font-size:12.5px}.btn-block{width:100%;height:52px;font-size:15px}.card{background:#fff;border:0;border-radius:var(--radius);padding:22px 24px;box-shadow:var(--win-sh)}.card .card{box-shadow:none;background:var(--card-2);border-radius:18px;padding:16px 18px}.card>h1{margin-top:0}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;color:var(--ink2);font-weight:700;margin-bottom:7px}.field input:not([type=checkbox]):not([type=radio]),.field textarea,.input-row input,input[type=text],input[type=password],input[type=email],input[type=search],input[type=number],textarea,select{width:100%;height:44px;padding:0 14px;border:1.5px solid transparent;background:var(--fill);color:var(--ink);border-radius:14px;font-size:14px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.field input:focus,input:focus,textarea:focus,select:focus{border-color:var(--blue);background:#fff;box-shadow:0 0 0 4px #2563eb1f}input[readonly]{color:var(--ink2)}textarea{height:auto;min-height:90px;padding:12px 14px;resize:vertical}input[type=checkbox]{accent-color:var(--blue);width:17px;height:17px;margin:0}.field .hint,.hint{font-size:12px;color:#64748b;margin-top:6px;line-height:1.5}.row{display:flex;gap:14px;flex-wrap:wrap}.row>.field{flex:1;min-width:200px}.actions{display:flex;gap:10px;margin-top:10px}.input-row{display:flex;gap:8px;align-items:stretch}.input-row input{flex:1;min-width:0}.input-row .btn{height:44px}.form-narrow{max-width:680px}.form-lead{font-size:13.5px;color:var(--ink2);margin:-4px 0 20px}.spacer{flex:1}.msg{padding:12px 15px;border-radius:14px;margin-bottom:14px;font-size:13.5px;background:var(--success-bg);color:var(--success);line-height:1.5}.msg-error{background:var(--danger-bg);color:var(--danger)}.modal-err{margin:-2px 0 0}code{background:var(--fill);padding:2px 6px;border-radius:6px;font-size:12.5px;color:var(--blue)}pre{background:var(--fill);border-radius:14px;padding:14px 16px;overflow:auto;font-size:12.5px;color:var(--ink2)}.badge{font-size:11.5px;font-weight:700;height:24px;padding:0 10px;border-radius:999px;color:var(--ink2);background:var(--fill);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}.badge-on{color:var(--success);background:var(--success-bg)}.badge-warn{color:var(--warning);background:var(--warning-bg)}.badge-danger{color:var(--danger);background:var(--danger-bg)}.logbox{max-height:70vh;overflow:auto;white-space:pre;font-family:var(--mono);font-size:12.5px;line-height:1.55;background:#0f172a;border-radius:16px;padding:14px 16px;color:#cbd5e1}.auth{min-height:calc(100vh - var(--top));display:flex;align-items:center;justify-content:center;padding:20px 16px 40px}.auth-card{position:relative;isolation:isolate;overflow:hidden;width:100%;max-width:520px;padding:40px 32px 30px;border-radius:32px;text-align:center;background:#fff;box-shadow:var(--win-sh),0 40px 90px -40px #1e3ca073;animation:cc-rise .45s ease both}.auth-card>*:not(.auth-aurora){position:relative;z-index:1}.auth-aurora{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;overflow:hidden;border-radius:inherit}.auth-aurora:before,.auth-aurora:after{content:"";position:absolute;border-radius:50%;filter:blur(40px);opacity:.9}.auth-aurora:before{width:60%;height:120%;left:-10%;top:-40%;background:radial-gradient(closest-side,rgba(96,165,250,.5),transparent)}.auth-aurora:after{width:55%;height:110%;right:-12%;bottom:-55%;background:radial-gradient(closest-side,rgba(52,211,153,.35),transparent)}.auth-ico{width:84px;height:84px;border-radius:28px;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:var(--grad-blue);box-shadow:0 18px 36px -14px #2563ebbf;margin-bottom:18px}.auth-ico .mono{font-size:30px;font-weight:700;letter-spacing:-2px}.auth-card h1{margin:0 0 6px;font-size:28px;font-weight:800;letter-spacing:-.03em}.auth-lead{margin:0 0 20px;color:var(--ink2);font-size:15px}.auth-tiles{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-bottom:24px}.auth-tile{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 13px 0 10px;border-radius:999px;font-size:13px;font-weight:700;color:var(--blue-700);background:var(--accent-bg)}.auth-tile svg{width:16px;height:16px;stroke:var(--blue);fill:none;stroke-width:2}.auth-tile.green{color:#065f46;background:var(--success-bg)}.auth-tile.green svg{stroke:var(--success)}.auth-tile.amber{color:#92400e;background:var(--warning-bg)}.auth-tile.amber svg{stroke:var(--warning)}.auth-cta{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:54px;padding:0 28px;border:0;border-radius:999px;text-decoration:none;cursor:pointer;font-size:16px;font-weight:700;color:#fff;background:var(--grad-blue);box-shadow:0 16px 30px -12px #2563ebcc;transition:transform .12s,filter .15s}.auth-cta:hover{transform:translateY(-1px);filter:brightness(1.06)}.auth-cta svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}.auth-alt{margin-top:20px;font-size:12.5px;color:var(--ink3)}.auth-alt a,.auth-alt button{font:inherit;font-weight:600;color:var(--blue);background:none;border:0;padding:0;cursor:pointer}.auth-form{text-align:left;margin-top:22px;padding-top:22px;border-top:1px solid var(--line)}.auth-form h2{margin:0 0 4px;font-size:17px}.auth-form .form-lead{margin:0 0 16px}.auth-foot{text-align:center;color:var(--ink3);font-size:12px;margin-top:22px}.field-eye{position:relative}.field-eye input{padding-right:46px}.field-eye .eye{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;color:var(--ink3);display:flex;cursor:pointer}.field-eye .eye svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2}.auth-spin{width:40px;height:40px;border-radius:50%;border:4px solid rgba(37,99,235,.15);border-top-color:var(--blue);animation:spin .8s linear infinite;display:inline-block;margin-bottom:16px}.cc-loading{min-height:calc(100vh - var(--top));display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--ink2);gap:12px}.cc-loading .auth-spin{margin:0}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}.stat-card{background:#fff;border:0;border-radius:22px;padding:18px 20px;box-shadow:var(--win-sh)}.stat-card .stat-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.stat-ico{width:40px;height:40px;flex:none;border-radius:13px;display:flex;align-items:center;justify-content:center;background:var(--accent-bg);color:var(--blue)}.stat-ico svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2}.stat-ico.green{background:var(--success-bg);color:var(--success)}.stat-ico.amber{background:var(--warning-bg);color:var(--warning)}.stat-ico.cyan{background:var(--info-bg);color:var(--info)}.stat-ico.red{background:var(--danger-bg);color:var(--danger)}.stat-tag{font-size:11px;font-weight:700;color:var(--ink2);background:var(--fill);height:22px;padding:0 9px;border-radius:999px;display:inline-flex;align-items:center}.stat-tag.green{color:var(--success);background:var(--success-bg)}.stat-lbl{font-size:12.5px;color:#64748b;margin-bottom:5px}.stat-val{font-size:26px;font-weight:800;letter-spacing:-.025em;color:var(--ink);line-height:1.05}.stat-val small{font-size:13px;font-weight:500;color:var(--ink3)}.stat-card.accent{background:linear-gradient(135deg,#4d8bff,#2563eb 60%,#1d4ed8);color:#fff;box-shadow:0 20px 40px -22px #2563ebe6}.stat-card.accent .stat-ico{background:#ffffff2e;color:#fff}.stat-card.accent .stat-tag{color:#fff;background:#fff3}.stat-card.accent .stat-lbl{color:#fffc}.stat-card.accent .stat-val{color:#fff;font-size:24px}.stat-card.accent .stat-val small{color:#ffffffb3;font-size:12px}.stat-card.edge{display:flex;flex-direction:column;gap:9px}.stat-card.edge .stat-head{display:flex;align-items:center;justify-content:space-between;width:100%;font-size:12.5px;color:#64748b;font-weight:600}.stat-card.edge .stat-val{font-size:24px}.qs-list{display:flex;flex-direction:column;gap:10px}.qs-card{display:flex;align-items:center;gap:13px;padding:14px;background:var(--card-2);border-radius:18px;cursor:pointer;text-decoration:none;color:inherit;transition:transform .14s ease,box-shadow .2s ease,background .15s}.qs-card:hover{transform:translateY(-2px);background:#fff;box-shadow:var(--win-sh)}.qs-ico{width:42px;height:42px;flex:none;border-radius:14px;display:flex;align-items:center;justify-content:center;background:var(--accent-bg);color:var(--blue)}.qs-ico svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2}.qs-ico.cyan{background:var(--info-bg);color:var(--info)}.qs-ico.green{background:var(--success-bg);color:var(--success)}.qs-body{flex:1;min-width:0}.qs-t{font-size:14px;font-weight:700}.qs-s{font-size:12px;color:#64748b;margin-top:2px}.qs-go{display:flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:var(--blue);white-space:nowrap}.qs-go svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.4}.qs-go.cyan{color:var(--info)}.qs-go.green{color:var(--success)}.dash-cols{display:grid;grid-template-columns:1.35fr 1fr;gap:14px}.dash-panel{background:#fff;border:0;border-radius:var(--radius);padding:20px;box-shadow:var(--win-sh)}.dash-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.dash-panel-head .t{font-size:15.5px;font-weight:800;letter-spacing:-.01em}.dash-panel-head .m{font-size:12px;color:#64748b;font-weight:600}.run-row{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}.run-row:last-child{border-bottom:none}.run-ico{width:32px;height:32px;flex:none;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--success-bg);color:var(--success)}.run-ico.red{background:var(--danger-bg);color:var(--danger)}.run-ico.gray{background:var(--fill);color:var(--ink3)}.run-ico svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.4}.run-body{flex:1;min-width:0}.run-t{font-family:var(--mono);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.run-s{font-size:11px;color:#64748b;margin-top:1px}.run-time{font-family:var(--mono);font-size:11px;color:var(--ink3)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:56px 20px;background:#fff9;border:1.5px dashed var(--line-strong);border-radius:var(--radius)}.empty-state .es-ico{width:72px;height:72px;border-radius:24px;background:var(--accent-bg);color:var(--blue);display:flex;align-items:center;justify-content:center;margin-bottom:18px}.empty-state .es-ico svg{width:34px;height:34px;stroke:currentColor;fill:none;stroke-width:1.8}.empty-state .es-t{font-size:18px;font-weight:800;letter-spacing:-.01em;margin-bottom:6px}.empty-state .es-s{font-size:13.5px;color:var(--ink2);max-width:420px;line-height:1.6;margin-bottom:20px}.panel{background:#fff;border:0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--win-sh)}.panel-head{display:flex;align-items:center;gap:12px;padding:16px 22px;border-bottom:1px solid var(--line)}.panel-head h2{margin:0;font-size:15.5px;font-weight:800}.panel-head .meta{color:#64748b;font-size:12.5px;font-weight:600}.panel-head .spacer{flex:1}.panel .msg{margin:14px 22px 0}.panel table{border:none;border-radius:0;background:transparent}.panel td,.panel th{padding:14px 22px}.panel tr:hover td{background:var(--card-2)}.panel>div>.logbox{margin:0}.empty-row{color:var(--ink3)}table{width:100%;border-collapse:collapse;background:#fff;border-radius:18px;overflow:hidden}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:middle}th{color:var(--ink3);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;background:transparent;white-space:nowrap}tr:last-child td{border-bottom:none}.cell-title{font-weight:700;color:var(--ink);font-size:13.5px}.cell-sub{font-size:11.5px;color:var(--ink3);margin-top:2px}.cell-target{font-size:13px;color:var(--ink2)}.row-actions{display:flex;gap:8px;justify-content:flex-end}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex:none;border-radius:50%;border:none;background:var(--fill);color:var(--ink2);cursor:pointer;padding:0;transition:color .12s,background .12s,transform .12s}.icon-btn:hover{background:#e9eef5;color:var(--blue);transform:translateY(-1px)}.icon-btn:disabled{opacity:.4;cursor:default;transform:none}.icon-btn svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}.icon-btn+.icon-btn{margin-left:6px}.icon-btn.danger:hover{color:var(--danger);background:var(--danger-bg)}.icon-btn.go{color:var(--success);background:var(--success-bg)}.icon-btn.go:hover{color:var(--success)}.icon-btn.stop{color:var(--danger);background:var(--danger-bg)}.icon-btn.stop:hover{color:var(--danger)}.sec-updated{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#64748b;margin:0 0 14px;padding:0 6px;line-height:1.5}.sec-updated b{color:var(--ink)}.sec-updated code{font-size:12px}.live-dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px var(--success-bg);display:inline-block;animation:livepulse 2s ease-in-out infinite}.proj-grid{display:flex;flex-direction:column;gap:14px}.proj-card{background:#fff;border:0;border-radius:var(--radius);padding:20px 22px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--win-sh)}.proj-top{display:flex;align-items:center;gap:14px}.proj-ava{width:48px;height:48px;flex:none;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:800;background:var(--grad-blue);color:#fff;box-shadow:0 10px 20px -10px #2563ebcc}.proj-idn{min-width:0;flex:1}.proj-idn .nm{font-size:16px;font-weight:800;letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.proj-idn .sub{font-size:12.5px;color:#64748b;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.proj-tags{display:flex;flex-wrap:wrap;gap:8px}.tag{font-size:12px;color:var(--ink2);background:var(--fill);border-radius:999px;padding:4px 10px}.proj-sep{height:1px;background:var(--line)}.proj-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.foot-col .k{font-size:11px;color:var(--ink3);margin-bottom:3px}.foot-col .v{font-size:13.5px;font-weight:700;color:var(--ink);white-space:nowrap}.proj-foot .spacer{flex:1}.cont-chip{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink2);background:var(--fill);border-radius:12px;padding:0 12px;height:44px;white-space:nowrap}.cs{position:relative;width:100%}.cs-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;height:44px;padding:0 14px;border:1.5px solid transparent;background:var(--fill);color:var(--ink);border-radius:14px;font-size:14px;font-family:inherit;cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s,background .15s}.cs-trigger:hover{background:#e9eef5}.cs.open .cs-trigger,.cs-trigger:focus-visible{border-color:var(--blue);background:#fff;box-shadow:0 0 0 4px #2563eb1f;outline:none}.cs-trigger .cs-val{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cs-trigger .cs-val.ph{color:var(--ink3)}.cs-trigger .cs-cae{flex:none;width:16px;height:16px;stroke:var(--ink3);fill:none;stroke-width:2;transition:transform .15s}.cs.open .cs-trigger .cs-cae{transform:rotate(180deg)}.cs-menu{position:fixed;z-index:6000;background:#fff;border-radius:18px;box-shadow:var(--shadow-pop),0 0 0 1px #0f172a0d;padding:6px;max-height:260px;overflow:auto;animation:fadeup .14s ease}.cs-opt{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:12px;font-size:13.5px;font-weight:500;color:var(--ink);cursor:pointer;white-space:nowrap}.cs-opt:hover{background:var(--fill)}.cs-opt.sel{color:var(--blue);font-weight:700;background:var(--accent-bg)}.cs-opt .cs-ck{width:15px;height:15px;flex:none;margin-left:auto;stroke:currentColor;fill:none;stroke-width:2.6;opacity:0}.cs-opt.sel .cs-ck{opacity:1}.modal-chat .modal-ico svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2}.modal-chat .modal-ico .mono{font-family:var(--mono);font-size:15px;font-weight:700;letter-spacing:-1px}.modal-chat .modal-close-btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2}.modal-chat .modal-body .field:last-of-type{margin-bottom:18px}.modal-chat .modal-actions{justify-content:flex-end;flex-wrap:wrap;margin-top:6px}.modal-chat .modal-actions .btn{height:40px}.modal-chat .modal-text{margin:0 0 18px;font-size:14px;color:var(--ink2);line-height:1.55;white-space:pre-line}.modal-chat .modal-body .form-group label{font-weight:700}.cc-dlg{z-index:2100}.files-grid{display:grid;grid-template-columns:272px 1fr;gap:14px;height:580px}.explorer{background:#fff;border:0;border-radius:var(--radius);padding:12px;overflow:auto;box-shadow:var(--win-sh)}.explorer.drag-over{outline:2px dashed var(--blue);outline-offset:-6px}.explorer-lbl{font-size:10.5px;font-weight:700;letter-spacing:.08em;color:var(--ink3);padding:6px 10px 10px}.frow{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:12px;font-size:13px;color:var(--ink2);cursor:pointer}.frow:hover{background:var(--card-2)}.frow:hover .fdel{opacity:1}.frow svg{width:16px;height:16px;flex:none;stroke:var(--ink3);fill:none;stroke-width:2}.frow.active{background:var(--accent-bg);color:var(--blue);font-weight:700}.frow.active svg{stroke:var(--blue)}.frow .mono{font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fdel{flex:none;width:26px;height:26px;border:none;background:transparent;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--ink3);opacity:0;transition:opacity .12s,color .12s,background .12s;padding:0}.fdel:hover{color:var(--blue);background:#fff}.fdel[title=Удалить]:hover{color:var(--danger);background:var(--danger-bg)}.fdel svg{width:13px;height:13px;stroke:currentColor}.editor{background:#fff;border:0;border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden;min-width:0;box-shadow:var(--win-sh)}.editor-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}.editor-file{display:flex;align-items:center;gap:9px;min-width:0}.editor-file .fdot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--success)}.editor-file .fname{font-family:var(--mono);font-size:12.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-file .fstate{flex:none;font-size:11px;color:var(--ink3)}.editor-actions{display:flex;gap:8px;flex:none}.editor-body{flex:1;min-height:0;display:flex}.editor-body textarea{flex:1;height:auto;min-height:0;border:0;border-radius:0;background:#fff;color:var(--ink);font-family:var(--mono);font-size:13px;line-height:1.7;padding:16px 18px;resize:none;outline:none}.editor-body textarea:focus{box-shadow:none;border:0;background:#fff}.editor-body textarea:disabled{background:var(--card-2)}.editor .msg{margin:0 16px 16px}.console-grid{display:grid;grid-template-columns:272px 1fr;gap:14px;align-items:start}.console-rail{display:flex;flex-direction:column;gap:12px}.console-list{background:#fff;border:0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--win-sh);padding:6px}.console-list-lbl{font-size:10.5px;font-weight:700;letter-spacing:.08em;color:var(--ink3);padding:12px 12px 8px}.crow{display:flex;align-items:center;gap:11px;padding:10px;border-radius:16px;cursor:pointer;transition:background .12s}.crow:hover{background:var(--card-2)}.crow.active{background:var(--accent-bg)}.crow-ico{width:38px;height:38px;flex:none;border-radius:13px;background:var(--fill);display:flex;align-items:center;justify-content:center}.crow.active .crow-ico{background:var(--grad-blue);box-shadow:0 8px 16px -8px #2563ebb3}.crow-ico .mono{font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:-1px;color:var(--ink3)}.crow.active .crow-ico .mono{color:#fff}.crow-id{min-width:0;flex:1}.crow-id .nm{font-size:13.5px;font-weight:700;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crow.active .crow-id .nm{color:var(--blue-700)}.crow-id .sub{font-size:11.5px;color:#64748b}.crow-dot{width:8px;height:8px;flex:none;border-radius:50%;background:#cbd5e1}.crow-dot.on{background:var(--success);box-shadow:0 0 0 3px var(--success-bg)}.crow-del{flex:none;width:28px;height:28px;border:none;background:transparent;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--ink3);padding:0;opacity:0;transition:opacity .12s}.crow:hover .crow-del{opacity:1}.crow-del:hover{color:var(--danger);background:var(--danger-bg)}.crow-del svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2}.term{border-radius:var(--radius);overflow:hidden;box-shadow:0 0 0 1px #0f172a0d,0 24px 56px -28px #0f172a99;background:#0f172a}.term-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#111c33;border-bottom:1px solid rgba(255,255,255,.06)}.term-dots{display:flex;gap:7px}.term-dots span{width:12px;height:12px;border-radius:50%}.term-dots .r{background:#f87171}.term-dots .y{background:#fbbf24}.term-dots .g{background:#34d399}.term-title{display:flex;align-items:center;gap:8px;margin-left:6px;min-width:0}.term-title .live{width:7px;height:7px;flex:none;border-radius:50%;background:#34d399;box-shadow:0 0 8px 1px #34d399b3}.term-title .live.off{background:#f87171;box-shadow:none}.term-title .lbl{font-family:var(--mono);font-size:12px;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.term-acts{margin-left:auto;display:flex;align-items:center;gap:4px}.term-btn{width:32px;height:32px;border:none;background:transparent;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#94a3b8;padding:0}.term-btn:hover{background:#ffffff14;color:#fff}.term-btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}.term-body{padding:14px 16px;background:#0f172a}.term-status{display:flex;align-items:center;gap:16px;padding:9px 16px;background:#111c33;border-top:1px solid rgba(255,255,255,.06)}.term-status span{font-family:var(--mono);font-size:11px;color:#64748b}.term-status .on{color:#94a3b8;display:flex;align-items:center;gap:6px}.term-status .on:before{content:"";width:6px;height:6px;border-radius:50%;background:#34d399}.term-status .on.off:before{background:#f87171}.term-status .right{margin-left:auto}.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}.info-card{background:#fff;border:0;border-radius:22px;padding:18px;box-shadow:var(--win-sh)}.info-card .ic-head{display:flex;align-items:center;gap:11px;margin-bottom:8px}.info-card .ic-ico{width:36px;height:36px;flex:none;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--accent-bg);color:var(--blue)}.info-card .ic-ico.cyan{background:var(--info-bg);color:var(--info)}.info-card .ic-ico svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}.info-card .ic-t{font-size:14px;font-weight:800}.info-card .ic-s{font-size:12.5px;color:var(--ink2);line-height:1.6}.db-alert{display:flex;align-items:flex-start;gap:12px;background:var(--danger-bg);border-radius:18px;padding:14px 16px;margin-bottom:14px}.db-alert .a-ico{width:34px;height:34px;flex:none;border-radius:11px;background:#dc26261f;display:flex;align-items:center;justify-content:center;color:var(--danger)}.db-alert .a-ico svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}.db-alert .a-t{font-size:13.5px;font-weight:800;color:var(--danger);margin-bottom:3px}.db-alert .a-m{font-family:var(--mono);font-size:11.5px;color:var(--danger);line-height:1.6;opacity:.85}.db-alert .a-x{margin-left:auto;flex:none;background:none;border:none;cursor:pointer;color:var(--danger);padding:2px}.db-alert .a-x svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}.acct-rows{display:flex;flex-direction:column;gap:2px;margin-top:4px}.acct-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.acct-row:last-child{border-bottom:none}.acct-row .k{flex:0 0 160px;font-size:12.5px;color:#64748b;font-weight:600}.acct-row .v{flex:1;min-width:0;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-row .v.mono{font-size:13px;font-weight:500}@media (max-width:1100px){.stat-grid{grid-template-columns:repeat(2,1fr)}.info-grid{grid-template-columns:1fr}}@media (max-width:960px){.app{flex-direction:column;padding-top:10px}.sidebar{position:static;width:100%;flex:none;height:auto;max-height:none;overflow:visible;padding:14px 12px 12px;border-radius:24px}.side-scroll{overflow:visible;margin:0;padding:0}.nav{flex-direction:row;flex-wrap:wrap;gap:6px}.nav a{height:38px;padding:0 12px;border-radius:999px;font-size:13px}.nav a.active:before{display:none}.nav-label{padding:10px 6px 6px}.brand{padding-bottom:10px}.side-foot{flex-direction:row;flex-wrap:wrap;align-items:center}.side-foot .disk-card,.side-foot .user-chip{flex:1 1 220px}.dash-cols{grid-template-columns:1fr}.files-grid{grid-template-columns:1fr;height:auto}.files-grid .explorer{max-height:280px}.files-grid .editor{min-height:420px}.console-grid{grid-template-columns:1fr}.topbar{border-radius:22px;padding:9px 10px}.topbar-ico{display:none}}@media (max-width:560px){.stat-grid{grid-template-columns:1fr}.topbar{position:static}.topbar-actions{flex-wrap:wrap;justify-content:flex-end}.acct-row{flex-direction:column;align-items:flex-start;gap:3px}.acct-row .k{flex:none}.auth-card{padding:30px 20px 24px;border-radius:26px}.panel td,.panel th{padding:12px 14px}}@media (prefers-reduced-motion:reduce){.main,.auth-card,.cs-menu,.live-dot{animation:none}}.modal-chat .modal-actions .modal-submit-btn,.modal-chat .modal-actions .modal-danger-btn,.modal-chat .modal-actions .modal-cancel-btn{width:auto;flex:1 1 120px}@media (max-width:600px){.cc-logo-tag span{display:none}.cc-logo-tag{padding:0 8px}.page-title{white-space:normal}}
