:root{--bg: #0e1016;--panel: #161a24;--panel2: #1d2330;--panel3: #232940;--line: #2b3245;--line2: #3a4560;--text: #e7ebf3;--muted: #8a93a6;--teal: #35d0ba;--purple: #9b7aff;--blue: #7aa2ff;--good: #3ad07a;--bad: #ff6b6b;--warn: #ffcc66;--grad: linear-gradient(135deg, var(--teal), var(--purple));--grad2: linear-gradient(90deg, var(--teal), var(--purple));--radius: 12px;--radius-sm: 8px;--shadow: 0 8px 32px rgba(0,0,0,.45);--shadow-sm: 0 2px 12px rgba(0,0,0,.3);--glow-teal: 0 0 18px rgba(53,208,186,.25);--glow-purple: 0 0 18px rgba(155,122,255,.25)}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,sans-serif;min-height:100vh;background-image:radial-gradient(ellipse 80% 60% at 20% 10%,rgba(53,208,186,.06) 0%,transparent 60%),radial-gradient(ellipse 60% 50% at 80% 80%,rgba(155,122,255,.06) 0%,transparent 60%)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.brand{font-weight:800;background:linear-gradient(90deg,var(--teal) 0%,var(--purple) 50%,var(--blue) 100%);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:brand-shift 6s linear infinite}@keyframes brand-shift{0%{background-position:0% center}to{background-position:200% center}}button{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:var(--radius-sm);padding:8px 14px;font-size:14px;transition:filter .15s,transform .1s,box-shadow .15s;font-family:inherit;line-height:1}button:hover:not(:disabled){filter:brightness(1.18)}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--grad2);border:none;color:#0b0d12;font-weight:700;padding:8px 18px}.btn-primary:hover:not(:disabled){filter:none;box-shadow:var(--glow-teal);opacity:.9}.btn-secondary{background:var(--panel2);border:1px solid var(--line2);color:var(--text)}.btn-secondary:hover:not(:disabled){border-color:var(--teal);color:var(--teal)}.btn-danger{background:transparent;border:1px solid var(--bad);color:var(--bad)}.btn-danger:hover:not(:disabled){background:#ff6b6b1f}.btn-icon{background:transparent;border:1px solid var(--line);color:var(--muted);padding:6px 10px;font-size:16px;border-radius:var(--radius-sm)}.btn-icon:hover:not(:disabled){border-color:var(--purple);color:var(--purple)}input,select,textarea{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px;font-size:14px;width:100%;font-family:inherit;transition:border-color .15s,box-shadow .15s;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 2px #35d0ba2e}.card{background:#161a24d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;position:relative;overflow:hidden}.login-bg-orb{position:absolute;border-radius:50%;filter:blur(80px);opacity:.35;pointer-events:none}.login-bg-orb1{width:500px;height:500px;background:radial-gradient(circle,var(--teal),transparent 70%);top:-100px;left:-100px;animation:orb-drift1 12s ease-in-out infinite alternate}.login-bg-orb2{width:400px;height:400px;background:radial-gradient(circle,var(--purple),transparent 70%);bottom:-80px;right:-80px;animation:orb-drift2 10s ease-in-out infinite alternate}@keyframes orb-drift1{0%{transform:translate(0)}to{transform:translate(40px,30px)}}@keyframes orb-drift2{0%{transform:translate(0)}to{transform:translate(-30px,-40px)}}.login-card{width:100%;max-width:390px;background:#161a24eb;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--line2);border-radius:20px;padding:36px 32px;box-shadow:0 20px 60px #0009,inset 0 1px #ffffff0f;position:relative;z-index:1}.login-logo{display:flex;flex-direction:column;align-items:flex-start;margin-bottom:6px}.login-brand{font-size:32px}.login-panel-label{font-size:14px;color:var(--muted);font-weight:500;margin-top:2px}.login-sub{color:var(--muted);margin:0 0 22px;font-size:13px;line-height:1.5}.field{margin-bottom:14px}.login-input{background:#1d2330e6;border:1px solid var(--line2)}.login-submit{width:100%;padding:12px;font-size:15px;border-radius:10px;margin-top:4px}.login-lang{margin-top:18px;text-align:center}.login-lang select{width:auto;background:transparent;border-color:var(--line);font-size:13px;padding:6px 10px}.err{color:var(--bad);font-size:13px;margin:-6px 0 10px}.loading-spinner{display:flex;flex-direction:column;align-items:center;gap:4px}header.bar{display:flex;align-items:center;gap:14px;padding:0 20px;height:56px;border-bottom:1px solid var(--line);background:#161a24e6;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);position:sticky;top:0;z-index:100}.bar-brand{font-size:20px;letter-spacing:-.5px}.bar-sep{color:var(--line2);font-size:13px}.tabs{display:flex;gap:4px;margin-left:8px}.tab-btn{display:flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;background:transparent;border:1px solid transparent;color:var(--muted);font-size:13.5px;font-weight:500;transition:color .15s,background .15s,border-color .15s}.tab-btn:hover{color:var(--text);background:var(--panel2);border-color:var(--line)}.tab-btn.active{background:var(--grad2);color:#0b0d12;border-color:transparent;font-weight:700}.tab-icon{font-size:12px}.spacer{flex:1}.user{display:flex;align-items:center;gap:10px}.user-info{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.user-name{font-size:14px;font-weight:600}.badge{font-size:10px;padding:2px 8px;border-radius:999px;border:1px solid var(--line2);color:var(--muted);white-space:nowrap}.avatar-wrap{position:relative;width:36px;height:36px}.avatar-img{width:36px;height:36px;border-radius:8px;display:block;outline:2px solid transparent;outline-offset:2px;transition:outline-color .2s}.avatar-wrap:hover .avatar-img{outline-color:var(--teal)}.avatar-fallback{width:36px;height:36px;border-radius:8px;background:var(--grad2);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;color:#0b0d12;box-shadow:var(--glow-teal)}.lang-select{width:auto;padding:6px 10px;font-size:13px}.app-main{padding:24px 20px;max-width:1300px;margin:0 auto}.tab-pane{animation:tab-in .2s ease}@keyframes tab-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}.srv-card{background:#161a24d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow-sm);transition:border-color .2s,box-shadow .2s,transform .2s}.srv-card:hover{border-color:var(--line2);box-shadow:var(--shadow);transform:translateY(-2px)}.srv-card.srv-active{border-color:#35d0ba59}.srv-header{display:flex;align-items:center;gap:14px;margin-bottom:14px}.srv-icon{font-size:28px;line-height:1}.srv-name{margin:0;font-size:18px;font-weight:700;text-transform:capitalize}.srv-meta{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--muted);margin-top:2px}.srv-port{color:var(--muted);font-size:12px;margin-left:4px;font-family:monospace}.srv-badge{margin-left:auto;font-size:11px;font-weight:700;padding:4px 12px;border-radius:999px;border:1px solid var(--line2);color:var(--muted)}.srv-badge.badge-on{border-color:var(--good);color:var(--good);background:#3ad07a14}.srv-badge.badge-off{border-color:var(--bad);color:var(--bad);background:#ff6b6b14}.srv-since{font-size:12px;margin-bottom:14px}.srv-actions{display:flex;gap:8px}.srv-actions .btn-primary,.srv-actions .btn-secondary,.srv-actions .btn-danger{flex:1;padding:8px 6px;font-size:13px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.status-dot.on{background:var(--good);box-shadow:0 0 6px var(--good)}.status-dot.off{background:var(--bad)}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.dot.on{background:var(--good)}.dot.off{background:var(--bad)}.console-root{display:flex;flex-direction:column;gap:12px}.console-header{display:flex;align-items:center;gap:12px}.console{background:#070a0f;border:1px solid var(--line);border-radius:var(--radius);height:62vh;overflow:auto;padding:14px 16px;font-family:ui-monospace,Fira Code,Cascadia Code,monospace;font-size:12.5px;white-space:pre-wrap;word-break:break-all;box-shadow:inset 0 2px 16px #0006;line-height:1.55}.console-bar{display:flex;gap:8px}.console-bar input{flex:1}.console-bar .btn-primary{padding:8px 18px;font-size:18px}.segmented-control{display:inline-flex;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:3px;position:relative;gap:0}.seg-pill{position:absolute;top:3px;bottom:3px;border-radius:7px;background:var(--grad2);transition:left .22s cubic-bezier(.4,0,.2,1),width .22s cubic-bezier(.4,0,.2,1);pointer-events:none;z-index:0}.seg-btn{position:relative;z-index:1;background:transparent;border:none;color:var(--muted);font-size:13px;font-weight:500;padding:6px 16px;border-radius:7px;transition:color .15s;cursor:pointer}.seg-btn:hover:not(.seg-active){color:var(--text);filter:none}.seg-btn.seg-active{color:#0b0d12;font-weight:700}.cfg-root{display:flex;flex-direction:column;gap:12px}.cfg-toolbar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#161a24b3;border:1px solid var(--line);border-radius:var(--radius)}.cfg-toolbar-spacer{flex:1}.cfg-toolbar a.btn-secondary{display:inline-flex;align-items:center;gap:6px;text-decoration:none;padding:7px 14px;border-radius:var(--radius-sm);font-size:13px}.cfg-body{display:flex;gap:0;height:calc(100vh - 200px);min-height:400px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--panel)}.cfg-tree-panel{flex-shrink:0;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--line);background:#10141e99}.cfg-tree-panel::-webkit-scrollbar{width:5px}.cfg-tree-panel::-webkit-scrollbar-track{background:transparent}.cfg-tree-panel::-webkit-scrollbar-thumb{background:var(--line2);border-radius:4px}.cfg-divider{width:5px;flex-shrink:0;cursor:col-resize;background:var(--line);transition:background .15s;position:relative}.cfg-divider:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:32px;background:var(--line2);border-radius:2px}.cfg-divider:hover{background:var(--teal)}.cfg-editor-panel{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.editor-toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);background:#161a24e6;flex-shrink:0}.editor-toolbar-sep{width:1px;height:20px;background:var(--line);margin:0 4px}.editor-toolbar-spacer{flex:1}.editor-save{padding:6px 14px;font-size:13px;display:flex;align-items:center;gap:6px}.dirty-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#fff;animation:pulse-dot .9s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.unsaved-badge{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--warn);font-weight:500}.unsaved-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--warn);animation:pulse-dot .9s ease-in-out infinite}.lint-badge{font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}.lint-ok{background:#3ad07a26;color:var(--good);border:1px solid rgba(58,208,122,.3)}.lint-err{background:#ff6b6b26;color:var(--bad);border:1px solid rgba(255,107,107,.3)}.editor-area{flex:1;min-height:0}.editor-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;opacity:.4}.editor-placeholder-icon{font-size:48px;color:var(--teal)}.editor-placeholder-text{font-size:14px;color:var(--muted)}.file-tree{padding:6px 0}.tree-row{display:flex;align-items:center;gap:7px;width:100%;background:transparent;border:none;color:var(--text);font-size:13px;padding:5px 8px;border-radius:0;text-align:left;cursor:pointer;position:relative;transition:background .12s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-row:hover{background:#ffffff0d;filter:none;transform:none}.tree-row.active{background:linear-gradient(90deg,#35d0ba2e,#9b7aff1a);color:var(--teal)}.tree-row.active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--grad2);border-radius:0 2px 2px 0}.tree-file-row{padding-right:12px}.tree-folder-row{color:var(--text);font-weight:500}.tree-chevron{display:inline-block;font-size:12px;color:var(--muted);transition:transform .2s ease;flex-shrink:0;width:12px}.tree-chevron.open{transform:rotate(90deg)}.folder-icon{font-size:13px;flex-shrink:0}.file-icon{font-size:12px;flex-shrink:0;font-style:normal}.tree-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-children{display:none;overflow:hidden}.tree-children.open{display:block}.ctx-menu{background:#161a24f7;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line2);border-radius:10px;padding:6px;min-width:180px;box-shadow:0 12px 40px #0009;animation:ctx-in .12s ease}@keyframes ctx-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.ctx-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;background:transparent;border:none;color:var(--text);font-size:13.5px;border-radius:7px;cursor:pointer;text-decoration:none;transition:background .1s}.ctx-item:hover{background:#ffffff14}.ctx-icon{font-size:14px;color:var(--muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:fade-in .15s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal-card{background:#161a24fa;border:1px solid var(--line2);border-radius:16px;padding:28px;min-width:340px;max-width:500px;width:90%;box-shadow:0 20px 60px #000000b3;animation:modal-in .18s cubic-bezier(.4,0,.2,1)}@keyframes modal-in{0%{opacity:0;transform:scale(.93) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-title{margin:0 0 4px;font-size:16px;font-weight:700}.modal-sub{color:var(--muted);font-size:12px;margin:0 0 16px;font-family:monospace;word-break:break-all}.modal-input{margin-bottom:18px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.toast-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:10px;z-index:99999;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:12px;font-size:14px;font-weight:500;min-width:240px;max-width:380px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line2);box-shadow:0 8px 32px #00000080;pointer-events:all;animation:toast-in .25s cubic-bezier(.4,0,.2,1)}@keyframes toast-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.toast-success{background:#0e1814f2;border-color:#3ad07a66}.toast-error{background:#180e0ef2;border-color:#ff6b6b66}.toast-info{background:#0e121cf2;border-color:#7aa2ff66}.toast-icon{font-size:16px;flex-shrink:0}.toast-success .toast-icon{color:var(--good)}.toast-error .toast-icon{color:var(--bad)}.toast-info .toast-icon{color:var(--blue)}.toast-message{flex:1}.toast-close{background:transparent;border:none;color:var(--muted);font-size:18px;padding:0 4px;line-height:1;cursor:pointer;flex-shrink:0;transition:color .1s}.toast-close:hover{color:var(--text);filter:none;transform:none}.muted{color:var(--muted);font-size:13px}.row-gap{display:flex;gap:8px;align-items:center;margin:10px 0}select.compact{width:auto}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line2);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}
