.puzzle-captcha{user-select:none;-webkit-user-select:none}.puzzle-stage{position:relative;border-radius:14px;overflow:hidden;max-width:100%;box-shadow:0 6px 20px #00000040}.puzzle-bg{display:block;width:100%;height:100%;border-radius:14px;pointer-events:none;-webkit-user-drag:none}.puzzle-piece{position:absolute;cursor:grab;touch-action:none;-webkit-user-drag:none;transition:filter .15s ease;filter:drop-shadow(0 3px 6px rgba(0,0,0,.35))}.puzzle-piece.is-dragging{cursor:grabbing;filter:drop-shadow(0 6px 12px rgba(0,0,0,.5))}.puzzle-refresh{position:absolute;top:8px;right:8px;width:30px;height:30px;border:none;border-radius:50%;background:#00000073;color:#fff;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}.puzzle-refresh:hover{background:#000000b3;transform:rotate(90deg)}.puzzle-track{position:relative;height:42px;margin-top:12px;border-radius:21px;background:var(--dark-input, #334155);box-shadow:inset 0 1px 3px #0000004d;overflow:hidden}.puzzle-fill{position:absolute;left:0;top:0;height:100%;background:linear-gradient(90deg,var(--primary, #6366f1),var(--secondary, #ec4899));opacity:.55;border-radius:21px 0 0 21px;pointer-events:none}.puzzle-handle{position:absolute;top:3px;width:46px;height:36px;border-radius:18px;background:#fff;color:var(--primary, #6366f1);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;cursor:grab;touch-action:none;box-shadow:0 2px 8px #00000059;transition:transform .1s ease}.puzzle-handle.is-dragging{cursor:grabbing;transform:scale(1.06)}.puzzle-track-hint{position:absolute;top:0;left:58px;right:12px;height:100%;display:flex;align-items:center;justify-content:center;font-size:12px;opacity:.6;pointer-events:none}.puzzle-loading{font-size:12px;opacity:.7;text-align:center;padding:30px 0}.pms-spinner{display:inline-block;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:pms-spin .7s linear infinite;vertical-align:middle}.pms-spinner--small{width:16px;height:16px}.pms-spinner--medium{width:28px;height:28px;border-width:3px}.pms-spinner--large{width:44px;height:44px;border-width:4px}@keyframes pms-spin{to{transform:rotate(360deg)}}.login-container{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;padding:20px}.login-container.dark{background:var(--dark-bg);color:var(--dark-text)}.login-container.light{background:var(--light-bg);color:var(--light-text)}.background-animation{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:0}.shape{position:absolute;opacity:.18;filter:blur(50px);animation:float 20s infinite ease-in-out}.shape-1{width:400px;height:400px;background:var(--primary);border-radius:40% 60% 70% 30%/40% 50% 60%;top:-200px;left:-200px}.shape-2{width:300px;height:300px;background:var(--secondary);border-radius:40% 60% 30% 70%/60% 30% 70% 40%;bottom:-150px;right:-150px;animation-delay:2s}.shape-3{width:350px;height:350px;background:var(--primary);border-radius:30% 70% 70% 30%/30% 30% 70% 70%;top:45%;right:8%;animation-delay:4s}@keyframes float{0%,to{transform:translate(0) rotate(0)}50%{transform:translate(30px,-30px) rotate(180deg)}}.login-card{position:relative;z-index:1;width:100%;max-width:400px;padding:32px 28px;border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark .login-card{background:var(--dark-card)}.light .login-card{background:var(--light-card)}.theme-toggle{position:absolute;top:14px;left:14px;width:36px;height:36px;border:none;border-radius:50%;background:transparent;font-size:18px}.theme-toggle:hover{transform:scale(1.15)}.login-header{text-align:center;margin-bottom:24px}.login-header .logo{font-size:44px}.login-header h1{margin:8px 0 2px;font-size:24px}.login-header p{opacity:.6;font-size:13px}.input-group{margin-bottom:16px}.input-group label{display:block;font-size:13px;margin-bottom:6px;opacity:.85}.input-wrapper{display:flex;align-items:center;border-radius:10px;padding:0 10px;border:1px solid transparent;transition:border-color .2s}.dark .input-wrapper{background:var(--dark-input)}.light .input-wrapper{background:var(--light-input)}.input-wrapper:focus-within{border-color:var(--primary)}.input-wrapper .icon{font-size:16px;opacity:.7}.input-wrapper input{flex:1;background:transparent;border:none;outline:none;padding:12px 8px;color:inherit;font-size:14px;font-family:inherit}.toggle-password{background:transparent;border:none;font-size:16px;opacity:.7}.captcha-section{margin-bottom:16px}.captcha-section>label{display:block;font-size:13px;margin-bottom:8px;opacity:.85}.remember-section{margin-bottom:16px;font-size:13px}.remember-section label{display:flex;align-items:center;gap:8px;cursor:pointer}.error-message{background:#ef44441f;color:var(--error);border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:16px}.login-btn{width:100%;padding:13px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-size:15px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;transition:transform .1s,opacity .2s}.login-btn:hover:not(:disabled){transform:translateY(-1px)}.login-btn:disabled{opacity:.7;cursor:not-allowed}.login-footer{margin-top:18px;display:flex;justify-content:center;gap:10px;font-size:13px;opacity:.85}.login-bottom{position:relative;z-index:1;margin-top:22px;font-size:12px;opacity:.5}@media (max-width: 480px){.login-card{padding:24px 18px}}.dashboard{min-height:100vh;background:var(--dark-bg);color:var(--dark-text)}.dash-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 20px;background:var(--dark-card);box-shadow:0 2px 10px #0000004d}.dash-header h1{font-size:19px;white-space:nowrap}.dash-nav{display:flex;gap:8px}.nav-btn{border:none;border-radius:8px;padding:8px 14px;background:var(--dark-input);color:var(--dark-text);font-weight:600;font-size:14px}.logout-btn{border:none;border-radius:8px;padding:8px 14px;background:var(--error);color:#fff;font-weight:600;font-size:14px}.dash-main{max-width:980px;margin:0 auto;padding:22px 16px 48px}.dash-error{color:var(--error)}.dash-loading{opacity:.6}.welcome-card{background:var(--dark-card);border-radius:var(--radius);padding:22px;margin-bottom:20px}.welcome-card h2{margin-bottom:8px;font-size:20px}.welcome-card p{opacity:.85}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.tile{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:right;padding:20px;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius);background:var(--dark-card);color:var(--dark-text);cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}.tile:hover{transform:translateY(-2px);border-color:var(--primary);background:linear-gradient(135deg,#6366f11f,#ec489914)}.tile-icon{font-size:30px}.tile-title{font-size:16px;font-weight:700}.tile-desc{font-size:12.5px;opacity:.65;line-height:1.6}@media (max-width: 520px){.dash-header h1{font-size:17px}.nav-btn,.logout-btn{padding:8px 12px;font-size:13px}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.tile{padding:16px}.tile-icon{font-size:26px}}@media (max-width: 360px){.nav-label{display:none}}.st-page{min-height:100vh;background:var(--dark-bg);color:var(--dark-text);padding-bottom:40px}.st-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--dark-bg)}.st-top{display:flex;align-items:center;gap:16px;padding:16px 24px;background:var(--dark-card);box-shadow:0 2px 10px #0000004d}.st-top h1{font-size:20px}.st-back{border:none;background:var(--dark-input);color:inherit;border-radius:8px;padding:8px 14px;font-size:14px}.st-grid{max-width:980px;margin:24px auto 0;padding:0 24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:20px}.st-card{background:var(--dark-card);border-radius:var(--radius);padding:22px}.st-card h2{font-size:17px;margin-bottom:16px}.st-card form{display:flex;flex-direction:column}.st-card label{font-size:13px;opacity:.85;margin:8px 0 6px}.st-card input[type=text],.st-card input[type=email],.st-card input[type=password],.st-card select{padding:11px;border-radius:9px;border:1px solid transparent;background:var(--dark-input);color:inherit;font-size:14px;font-family:inherit;outline:none}.st-card input:focus,.st-card select:focus{border-color:var(--primary)}.st-card small{opacity:.6;font-weight:400}.st-switch{display:flex!important;flex-direction:row;align-items:center;gap:8px;margin:6px 0!important;cursor:pointer}.st-disabled{opacity:.45}.st-card button[type=submit]{margin-top:16px;padding:11px;border:none;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:600;font-size:14px}.st-banner{margin-top:12px;border-radius:8px;padding:9px 11px;font-size:13px}.st-banner--success{background:#10b98121;color:var(--success)}.st-banner--error{background:#ef444421;color:var(--error)}.st-help{font-size:12.5px;opacity:.7;line-height:1.7;margin-bottom:10px}.st-status{font-size:13px;padding:8px 11px;border-radius:8px;margin-bottom:6px}.st-status.ok{background:#10b9811f;color:var(--success)}.st-status.warn{background:#f59e0b1f;color:var(--warning)}.sf-form{display:flex;flex-direction:column;background:var(--dark-card);border-radius:var(--radius);padding:22px;max-width:480px;width:100%}.sf-form h3{margin-bottom:16px;font-size:18px}.sf-form label{font-size:13px;opacity:.85;margin:10px 0 6px}.sf-form input,.sf-form select{padding:11px;border-radius:9px;border:1px solid transparent;background:var(--dark-input);color:inherit;font-size:14px;font-family:inherit;outline:none}.sf-form input:focus,.sf-form select:focus{border-color:var(--primary)}.sf-manual-ip{margin-top:8px!important;font-size:12.5px;opacity:.85}.sf-hint{margin-top:8px;font-size:12.5px;opacity:.6}.sf-types{display:flex;gap:8px;flex-wrap:wrap}.sf-type{flex:1;min-width:96px;padding:10px;border-radius:9px;border:1px solid var(--dark-input);background:var(--dark-input);color:var(--dark-text);font-size:13px;transition:all .15s}.sf-type.active{border-color:var(--primary);background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}.sf-row{display:flex;gap:10px}.sf-col{display:flex;flex-direction:column}.sf-grow{flex:1}.sf-port{width:90px}.sf-cred{margin-top:14px;padding:14px;border-radius:10px;background:#6366f114;border:1px solid rgba(99,102,241,.2);display:flex;flex-direction:column}.sf-switch{display:flex!important;flex-direction:row;align-items:center;gap:8px;margin:0 0 4px!important;cursor:pointer}.sf-master{font-size:13px;opacity:.85;padding-top:4px}.sf-master.warn{color:var(--warning);opacity:1}.sf-error{margin-top:14px;background:#ef444421;color:var(--error);border-radius:8px;padding:9px 11px;font-size:13px}.sf-actions{display:flex;gap:10px;margin-top:18px}.sf-save{flex:1;padding:12px;border:none;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:600;font-size:14px}.sf-save:disabled{opacity:.7}.sf-cancel{padding:12px 18px;border:1px solid var(--dark-input);border-radius:9px;background:transparent;color:inherit;font-size:14px}.srv-page{min-height:100vh;background:var(--dark-bg);color:var(--dark-text);padding-bottom:40px}.srv-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--dark-bg)}.srv-top{display:flex;align-items:center;gap:14px;padding:16px 24px;background:var(--dark-card);box-shadow:0 2px 10px #0000004d}.srv-top h1{font-size:20px;flex:1}.srv-back{border:none;background:var(--dark-input);color:inherit;border-radius:8px;padding:8px 14px;font-size:14px}.srv-ip{border:none;border-radius:9px;padding:9px 14px;background:var(--dark-input);color:var(--dark-text);font-size:14px}.srv-add{border:none;border-radius:9px;padding:9px 16px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:600;font-size:14px}.srv-warn{margin:16px 24px 0;padding:12px 14px;border-radius:10px;background:#f59e0b1f;border:1px solid rgba(245,158,11,.3);color:var(--warning);font-size:13px}.srv-link{border:none;background:transparent;color:var(--primary);text-decoration:underline;font:inherit;cursor:pointer}.srv-error{margin:16px 24px 0;color:var(--error)}.srv-list{margin:20px 24px 0}.srv-empty{text-align:center;opacity:.6;padding:50px 0}.srv-table{width:100%;border-collapse:collapse;background:var(--dark-card);border-radius:var(--radius);overflow:hidden}.srv-table th,.srv-table td{text-align:right;padding:12px 14px;font-size:14px;border-bottom:1px solid rgba(255,255,255,.05)}.srv-table th{background:#ffffff08;font-size:13px;opacity:.8}.srv-table tr:last-child td{border-bottom:none}.srv-badge{font-size:12px;padding:3px 9px;border-radius:20px}.srv-badge.master{background:#6366f133;color:#a5b4fc}.srv-badge.manual{background:#ec489933;color:#f9a8d4}.srv-actions{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.srv-a{border:none;border-radius:7px;padding:6px 10px;font-size:12.5px;background:var(--dark-input);color:var(--dark-text)}.srv-a.primary{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}.srv-a.srv-del{background:#ef444426;color:#fca5a5}.srv-act-msg{flex-basis:100%;font-size:12px;margin-top:4px;opacity:.9}.srv-act-msg.ok{color:var(--success)}.srv-act-msg.warn{color:var(--warning)}.srv-act-msg.err{color:var(--error)}.srv-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50;overflow-y:auto}@media (max-width: 640px){.srv-table thead{display:none}.srv-table,.srv-table tbody,.srv-table tr,.srv-table td{display:block;width:100%}.srv-table tr{margin-bottom:12px;border-radius:10px;overflow:hidden}.srv-table td{text-align:right;border-bottom:1px solid rgba(255,255,255,.05)}}.ipr-page{min-height:100vh;background:var(--dark-bg);color:var(--dark-text);padding-bottom:40px}.ipr-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--dark-bg)}.ipr-top{display:flex;align-items:center;gap:14px;padding:16px 24px;background:var(--dark-card);box-shadow:0 2px 10px #0000004d}.ipr-top h1{font-size:20px;flex:1}.ipr-back,.ipr-srv{border:none;background:var(--dark-input);color:inherit;border-radius:8px;padding:8px 14px;font-size:14px}.ipr-grid{max-width:920px;margin:24px auto 0;padding:0 24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:20px}.ipr-card{background:var(--dark-card);border-radius:var(--radius);padding:22px}.ipr-card h2{font-size:17px;margin-bottom:16px}.ipr-card form{display:flex;flex-direction:column}.ipr-card label{font-size:13px;opacity:.85;margin:8px 0 6px}.ipr-card input{padding:11px;border-radius:9px;border:1px solid transparent;background:var(--dark-input);color:inherit;font-size:14px;font-family:inherit;outline:none}.ipr-card input:focus{border-color:var(--primary)}.ipr-row{display:flex;gap:10px}.ipr-col{flex:1;display:flex;flex-direction:column}.ipr-card button[type=submit]{margin-top:16px;padding:12px;border:none;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:600;font-size:14px}.ipr-list{list-style:none}.ipr-list li{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.06)}.ipr-list li:last-child{border-bottom:none}.ipr-info{display:flex;flex-direction:column;gap:3px}.ipr-info span{font-size:13px;opacity:.8}.ipr-count{font-size:12px!important;color:#a5b4fc}.ipr-del{border:none;border-radius:7px;padding:6px 12px;font-size:13px;background:#ef444426;color:#fca5a5}.ipr-empty{text-align:center;opacity:.6;padding:30px 0}.ipr-banner{margin-top:12px;border-radius:8px;padding:9px 11px;font-size:13px}.ipr-banner.success{background:#10b98121;color:var(--success)}.ipr-banner.error{background:#ef444421;color:var(--error)}.gr-page{min-height:100vh;background:var(--dark-bg);color:var(--dark-text);padding-bottom:40px}.gr-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--dark-bg)}.gr-top{display:flex;align-items:center;gap:14px;padding:16px 24px;background:var(--dark-card)}.gr-top h1{font-size:20px}.gr-back{border:none;background:var(--dark-input);color:inherit;border-radius:8px;padding:8px 14px;font-size:14px}.gr-grid{max-width:1000px;margin:24px auto 0;padding:0 24px;display:grid;grid-template-columns:280px 1fr;gap:20px}@media (max-width: 760px){.gr-grid{grid-template-columns:1fr}}.gr-card{background:var(--dark-card);border-radius:var(--radius);padding:20px}.gr-card h2{font-size:17px;margin-bottom:14px}.gr-card h3{font-size:14px;margin:16px 0 8px;opacity:.85}.gr-add{display:flex;gap:8px;margin-bottom:12px}.gr-add input{flex:1;padding:10px;border-radius:8px;border:none;background:var(--dark-input);color:inherit;font-family:inherit}.gr-add button{width:44px;border:none;border-radius:8px;background:var(--primary);color:#fff;font-size:18px}.gr-list{list-style:none}.gr-list li{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:8px;cursor:pointer}.gr-list li:hover{background:var(--dark-input)}.gr-list li.active{background:linear-gradient(135deg,#6366f14d,#ec489933)}.gr-list small{opacity:.6}.gr-empty{opacity:.5;cursor:default}.gr-del{border:none;background:#ef444426;color:#fca5a5;border-radius:6px;padding:4px 10px;font-size:12px}.gr-hint{opacity:.6;padding:40px 0;text-align:center}.gr-muted{opacity:.5;font-size:13px}.gr-members{display:flex;flex-wrap:wrap;gap:8px}.gr-chip{display:inline-flex;align-items:center;gap:6px;background:#6366f133;color:#c7d2fe;border-radius:20px;padding:5px 12px;font-size:13px}.gr-chip button{border:none;background:transparent;color:#fca5a5;font-size:15px;cursor:pointer}.gr-add-chip{border:1px dashed var(--dark-input);background:transparent;color:var(--dark-text);border-radius:20px;padding:5px 12px;font-size:13px}.gr-exec{display:flex;gap:8px}.gr-exec input{flex:1;padding:11px;border-radius:8px;border:none;background:var(--dark-input);color:inherit;font-family:monospace}.gr-exec button{border:none;border-radius:8px;padding:0 18px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:600}.gr-results{margin-top:16px;display:flex;flex-direction:column;gap:10px}.gr-result{border-radius:9px;padding:10px 12px;border-left:3px solid;background:var(--dark-bg)}.gr-result.ok{border-color:var(--success)}.gr-result.fail{border-color:var(--error)}.gr-result pre{margin-top:6px;font-size:12.5px;white-space:pre-wrap;word-break:break-all;max-height:220px;overflow:auto;opacity:.9}.sc-page{min-height:100vh;background:var(--dark-bg);color:var(--dark-text);padding-bottom:40px}.sc-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--dark-bg)}.sc-top{display:flex;align-items:center;gap:14px;padding:16px 24px;background:var(--dark-card)}.sc-top h1{font-size:20px}.sc-back{border:none;background:var(--dark-input);color:inherit;border-radius:8px;padding:8px 14px;font-size:14px}.sc-grid{max-width:1050px;margin:24px auto 0;padding:0 24px;display:grid;grid-template-columns:360px 1fr;gap:20px}@media (max-width: 820px){.sc-grid{grid-template-columns:1fr}}.sc-card{background:var(--dark-card);border-radius:var(--radius);padding:20px}.sc-card h2{font-size:17px;margin-bottom:12px}.sc-card h3{font-size:14px;margin:16px 0 8px;opacity:.85}.sc-list-head{display:flex;align-items:center;justify-content:space-between}.sc-new{border:none;border-radius:8px;padding:7px 13px;background:var(--primary);color:#fff;font-size:13px}.sc-target{display:flex;align-items:center;gap:8px;margin:12px 0;flex-wrap:wrap}.sc-target label{font-size:13px;opacity:.8}.sc-target select{flex:1;min-width:110px;padding:8px;border-radius:8px;border:none;background:var(--dark-input);color:inherit;font-family:inherit}.sc-list{list-style:none}.sc-list li{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.05)}.sc-info{cursor:pointer;display:flex;flex-direction:column;gap:2px}.sc-info small{opacity:.6;font-size:12px}.sc-row-actions{display:flex;gap:6px}.sc-run{border:none;border-radius:7px;padding:6px 12px;font-size:13px;background:#10b9812e;color:#6ee7b7}.sc-del{border:none;border-radius:7px;padding:6px 12px;font-size:13px;background:#ef444426;color:#fca5a5}.sc-empty{opacity:.5;padding:20px 0}.sc-row{display:flex;gap:10px;margin-bottom:10px}.sc-row input{flex:1;padding:10px;border-radius:8px;border:none;background:var(--dark-input);color:inherit;font-family:inherit}.sc-row select{width:110px;padding:10px;border-radius:8px;border:none;background:var(--dark-input);color:inherit;font-family:inherit}.sc-card textarea{width:100%;padding:12px;border-radius:9px;border:none;background:#0b1020;color:#e2e8f0;font-family:monospace;font-size:13px;resize:vertical;outline:none}.sc-actions{display:flex;gap:10px;margin-top:12px}.sc-actions button{border:none;border-radius:8px;padding:10px 18px;font-size:14px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:600}.sc-cancel{background:var(--dark-input)!important;color:var(--dark-text)!important;font-weight:400!important}.sc-msg{margin-top:10px;font-size:13px;opacity:.85}.sc-results{margin-top:18px}.sc-result{border-radius:9px;padding:10px 12px;border-left:3px solid;background:var(--dark-bg);margin-bottom:10px}.sc-result.ok{border-color:var(--success)}.sc-result.fail{border-color:var(--error)}.sc-result pre{margin-top:6px;font-size:12.5px;white-space:pre-wrap;word-break:break-all;max-height:240px;overflow:auto;opacity:.9}/**
 * 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:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;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}.con-page{min-height:100vh;background:#0b1020;color:var(--dark-text);display:flex;flex-direction:column}.con-top{display:flex;align-items:center;gap:14px;padding:12px 20px;background:var(--dark-card)}.con-top h1{font-size:17px;flex:1}.con-back{border:none;background:var(--dark-input);color:inherit;border-radius:8px;padding:7px 13px;font-size:14px}.con-status{font-size:13px;padding:4px 10px;border-radius:20px;background:#f59e0b2e;color:var(--warning)}.con-status.ok{background:#10b9812e;color:var(--success)}.con-term{flex:1;padding:8px;overflow:hidden}.con-term .xterm{height:100%}.fx-page{min-height:100vh;background:var(--dark-bg);color:var(--dark-text);padding-bottom:40px}.fx-top{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:14px 20px;background:var(--dark-card)}.fx-top h1{font-size:18px;flex:1;min-width:140px}.fx-back,.fx-tool,.fx-up{border:none;border-radius:8px;padding:8px 13px;font-size:13.5px}.fx-back{background:var(--dark-input);color:inherit}.fx-tool{background:var(--dark-input);color:var(--dark-text)}.fx-up{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:600}.fx-path{display:flex;align-items:center;gap:10px;padding:12px 24px}.fx-path button{border:none;background:var(--dark-input);color:inherit;border-radius:7px;padding:6px 12px;font-size:13px}.fx-path code{background:var(--dark-card);padding:5px 10px;border-radius:6px;font-size:13px;flex:1;overflow-x:auto}.fx-error{margin:0 24px 10px;color:var(--error)}.fx-loading{display:flex;justify-content:center;padding:50px}.fx-table{width:calc(100% - 48px);margin:0 24px;border-collapse:collapse;background:var(--dark-card);border-radius:var(--radius);overflow:hidden}.fx-table th,.fx-table td{text-align:right;padding:11px 14px;font-size:14px;border-bottom:1px solid rgba(255,255,255,.05)}.fx-table th{background:#ffffff08;font-size:13px;opacity:.8}.fx-dir{cursor:pointer;color:#a5b4fc}.fx-dir:hover{text-decoration:underline}.fx-empty{text-align:center!important;opacity:.5;padding:30px!important}.fx-perms{cursor:pointer;font-family:monospace;color:#a5b4fc}.fx-perms:hover{text-decoration:underline}.fx-ops{display:flex;flex-wrap:wrap;gap:5px}.fx-ops button{border:none;border-radius:7px;padding:5px 10px;font-size:12.5px;background:var(--dark-input);color:var(--dark-text)}.fx-ops .fx-del{background:#ef444426;color:#fca5a5}.fx-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.fx-editor{background:var(--dark-card);border-radius:var(--radius);width:100%;max-width:820px;height:80vh;display:flex;flex-direction:column;overflow:hidden}.fx-editor-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08);font-size:13px}.fx-editor-head span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-editor-head button{border:none;background:var(--dark-input);color:inherit;border-radius:7px;padding:5px 11px}.fx-editor textarea{flex:1;border:none;outline:none;resize:none;padding:14px;background:#0b1020;color:#e2e8f0;font-family:monospace;font-size:13px;line-height:1.6}.fx-editor-actions{display:flex;gap:10px;padding:12px 16px;border-top:1px solid rgba(255,255,255,.08)}.fx-editor-actions button{border:none;border-radius:8px;padding:9px 18px;font-size:14px;background:var(--dark-input);color:var(--dark-text)}.fx-editor-actions .fx-save{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:600}.cp-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--dark-bg);color:var(--dark-text);padding:20px}.cp-card{width:100%;max-width:400px;background:var(--dark-card);border-radius:var(--radius);padding:32px 28px;box-shadow:var(--shadow)}.cp-header{text-align:center;margin-bottom:22px}.cp-logo{font-size:40px}.cp-header h1{margin-top:8px;font-size:22px}.cp-note{margin-top:8px;font-size:13px;color:var(--warning)}.cp-group{margin-bottom:16px}.cp-group label{display:block;font-size:13px;margin-bottom:6px;opacity:.85}.cp-group input{width:100%;padding:12px;border-radius:10px;border:1px solid transparent;background:var(--dark-input);color:inherit;font-size:14px;font-family:inherit;outline:none}.cp-group input:focus{border-color:var(--primary)}.cp-error{background:#ef44441f;color:var(--error);border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:14px}.cp-success{text-align:center;color:var(--success);font-size:16px;padding:20px 0}.cp-btn{width:100%;padding:13px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-size:15px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px}.cp-btn:disabled{opacity:.7}.cp-cancel{width:100%;margin-top:10px;padding:11px;border:1px solid var(--dark-input);border-radius:10px;background:transparent;color:inherit;font-size:14px}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Regular-CtGL0YI-.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Medium-D86t5Axy.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-SemiBold-26ZP1ILp.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/assets/Vazirmatn-Bold-_OhAJEdh.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--primary: #6366f1;--primary-dark: #4f46e5;--secondary: #ec4899;--success: #10b981;--error: #ef4444;--warning: #f59e0b;--dark-bg: #0f172a;--dark-card: #1e293b;--dark-input: #334155;--dark-text: #e2e8f0;--light-bg: #f8fafc;--light-card: #ffffff;--light-input: #f1f5f9;--light-text: #1e293b;--border: #e2e8f0;--radius: 12px;--shadow: 0 20px 60px rgba(0, 0, 0, .3)}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:Vazirmatn,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}
