@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap";
:root{--bg:#0a0610;--surface:#150f22;--surface-2:#1c1430;--surface-3:#241a3a;--hover:#291d44;--line:#a855f71a;--line-2:#a855f72e;--accent:#8e00c2;--accent-2:#b026d3;--accent-3:#c44dff;--accent-soft:#8e00c224;--accent-soft-2:#8e00c238;--accent-glow:#8e00c273;--danger:#e23b54;--danger-soft:#e23b5424;--text:#efecf5;--text-2:#a59bba;--text-3:#6f6685;--radius:14px;--radius-sm:10px;--sb:248px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.5}.mono{font-family:JetBrains Mono,ui-monospace,monospace}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}a{text-decoration:none}::selection{background:var(--accent-glow);color:#fff}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--surface-3);border:3px solid var(--bg);border-radius:20px}::-webkit-scrollbar-thumb:hover{background:var(--hover)}.mark{background:linear-gradient(150deg, var(--accent-3), var(--accent));color:#fff;width:38px;height:38px;box-shadow:0 6px 18px -4px var(--accent-glow), 0 0 0 1px #ffffff14 inset;border-radius:11px;flex:none;place-items:center;font-size:18px;font-weight:800;display:grid}.mark.lg{border-radius:13px;width:44px;height:44px;font-size:21px}.wordmark{letter-spacing:-.02em;font-weight:800}.wordmark b{color:var(--accent-3);font-weight:800}.app-shell{grid-template-columns:var(--sb) 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:linear-gradient(#100a1c,#0a0610);flex-direction:column;height:100vh;padding:26px 18px;display:flex;position:sticky;top:0}.sb-logo{align-items:center;gap:12px;margin-bottom:30px;padding:4px 8px 0;display:flex}.sb-logo .wordmark{font-size:21px}.nav-label{letter-spacing:.12em;color:var(--text-3);margin:22px 0 8px;padding:0 12px;font-size:10.5px;font-weight:700}.nav-item{width:100%;color:var(--text-2);border-radius:11px;align-items:center;gap:13px;padding:11px 12px;font-size:14px;font-weight:600;transition:all .14s;display:flex}.nav-item svg{stroke-width:1.9px;flex:none;width:19px;height:19px}.nav-item:hover{background:var(--surface);color:var(--text)}.nav-item.active{background:linear-gradient(90deg, var(--accent-soft-2), var(--accent-soft));color:#fff;box-shadow:inset 0 0 0 1px var(--line-2)}.nav-item.active svg{color:var(--accent-3)}.sb-spacer{flex:1}.sb-foot{border-top:1px solid var(--line);color:var(--text-3);margin-top:8px;padding:14px 12px 2px;font-size:11px}.main{min-width:0;overflow-x:hidden}.topbar{justify-content:space-between;align-items:center;padding:22px 36px 0;display:flex}.crumbs{color:var(--text-2);font-size:14px;font-weight:600}.crumbs b{color:var(--accent-3)}.crumbs span{color:var(--text)}.user-chip{background:var(--surface);border:1px solid var(--line);border-radius:999px;align-items:center;gap:10px;padding:6px 6px 6px 14px;display:flex}.user-chip .em{color:var(--text-2);font-size:13px;font-weight:500}.badge-admin{background:linear-gradient(180deg, var(--accent-2), var(--accent));color:#fff;letter-spacing:.05em;border-radius:999px;padding:5px 12px;font-size:11px;font-weight:700}.page{padding:8px 36px 48px}.page-title{letter-spacing:-.03em;margin:6px 0 26px;font-size:34px;font-weight:800}.btn{cursor:pointer;border:none;border-radius:11px;align-items:center;gap:7px;height:40px;padding:0 16px;font-family:inherit;font-size:13.5px;font-weight:600;transition:all .14s;display:inline-flex}.btn svg{stroke-width:2px;width:16px;height:16px}.btn-primary{border-radius:var(--radius-sm);background:linear-gradient(180deg, var(--accent-2), var(--accent));color:#fff;letter-spacing:.01em;width:100%;height:47px;box-shadow:0 10px 28px -8px var(--accent-glow), 0 1px 0 #ffffff26 inset;cursor:pointer;border:none;font-family:inherit;font-size:14.5px;font-weight:700;transition:all .16s}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-accent{background:var(--accent-soft);color:var(--accent-3);box-shadow:inset 0 0 0 1px var(--line-2)}.btn-accent:hover{background:var(--accent-soft-2);color:#fff}.btn-accent.solid{background:linear-gradient(180deg, var(--accent-2), var(--accent));color:#fff;box-shadow:0 8px 20px -8px var(--accent-glow)}.btn-accent.solid:hover{filter:brightness(1.08)}.btn-blue{color:#9db1ff;background:#6080ff1f;box-shadow:inset 0 0 0 1px #6080ff38}.btn-blue:hover{color:#fff;background:#6080ff33}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 8px 20px -8px #e23b5480}.btn-danger:hover{filter:brightness(1.08)}.btn.ghost{background:var(--surface-2);color:var(--text-2);box-shadow:inset 0 0 0 1px var(--line)}.btn.ghost:hover{background:var(--hover);color:#fff}.icon-btn{background:var(--surface-2);width:40px;height:40px;color:var(--text-2);box-shadow:inset 0 0 0 1px var(--line);cursor:pointer;border:none;border-radius:11px;place-items:center;transition:all .14s;display:grid}.icon-btn:hover{background:var(--hover);color:#fff}.icon-btn svg{stroke-width:1.9px;width:18px;height:18px}.icon-btn.sm{width:36px;height:36px}.icon-btn.del{background:var(--danger);color:#fff;box-shadow:none}.icon-btn.del:hover{filter:brightness(1.1)}.field{margin-bottom:16px}.field label{color:var(--text-2);letter-spacing:.01em;margin-bottom:7px;font-size:12px;font-weight:600;display:block}.input{background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);width:100%;height:46px;color:var(--text);padding:0 14px;font-family:inherit;font-size:14px;transition:all .15s}.input::placeholder{color:var(--text-3)}.input:focus{border-color:var(--accent-2);box-shadow:0 0 0 4px var(--accent-soft);background:var(--surface-3);outline:none}.textarea{background:var(--surface-2);border:1px solid var(--line-2);width:100%;color:var(--text);resize:vertical;border-radius:12px;min-height:96px;padding:14px;font-family:JetBrains Mono,monospace;font-size:14px;line-height:1.55}.textarea:focus{border-color:var(--accent-2);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.lbl{margin-bottom:8px;font-size:13.5px;font-weight:700;display:block}.lbl span{color:var(--text-3);font-weight:500}.select{background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);width:100%;height:46px;color:var(--text);appearance:none;cursor:pointer;padding:0 14px;font-family:inherit;font-size:14px}.select:focus{border-color:var(--accent-2);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.stats{grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px;display:grid}.stat{background:linear-gradient(160deg, var(--surface), #110b1d);border:1px solid var(--line);border-radius:18px;flex-direction:column;padding:22px 24px;display:flex}.stat .top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.stat .ico{background:var(--accent-soft);width:50px;height:50px;color:var(--accent-3);border-radius:14px;flex:none;place-items:center;display:grid}.stat .ico.red{background:var(--danger-soft);color:var(--danger)}.stat .ico svg{stroke-width:1.9px;width:24px;height:24px}.stat .lab{letter-spacing:.1em;color:var(--text-2);text-align:right;font-size:11.5px;font-weight:700}.stat .val{letter-spacing:-.03em;text-align:right;margin-top:2px;font-size:38px;font-weight:800;line-height:1.1}.stat .sub{color:var(--text-2);margin-top:16px;font-size:13px}.stat .sub b{color:var(--accent-3)}.stat .sub .red{color:var(--danger)}.progress{background:var(--surface-3);border-radius:99px;height:7px;margin-top:14px;overflow:hidden}.progress>i{background:linear-gradient(90deg, var(--accent), var(--accent-3));border-radius:99px;height:100%;display:block}.panel{background:linear-gradient(160deg, var(--surface), #110b1d);border:1px solid var(--line);border-radius:18px;padding:24px 26px}.panel-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.panel-head h3{letter-spacing:-.01em;font-size:16px;font-weight:700}.legend{color:var(--text-2);align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.legend .dot{border:1.5px solid var(--accent-3);background:var(--accent-soft);border-radius:5px;width:26px;height:13px}.group{background:linear-gradient(160deg, var(--surface), #100b1c);border:1px solid var(--line);border-radius:18px;margin-bottom:22px;overflow:hidden}.group-head{border-bottom:1px solid var(--line);align-items:center;gap:15px;padding:20px 24px;display:flex}.group-head.no-border{border-bottom:none}.group-icon{background:var(--accent-soft);width:46px;height:46px;color:var(--accent-3);border-radius:12px;flex:none;place-items:center;display:grid}.group-icon svg{stroke-width:1.9px;width:22px;height:22px}.group-meta .nm{letter-spacing:-.01em;font-size:18px;font-weight:800}.group-meta .hash{color:var(--text-3);margin-top:1px;font-size:12px}.group-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}.thead{border-bottom:1px solid var(--line);letter-spacing:.1em;color:var(--text-3);padding:14px 24px;font-size:11px;font-weight:700;display:grid}.proj-grid{grid-template-columns:2.4fr 1fr 1fr 1.4fr 1.5fr}.row{border-bottom:1px solid var(--line);align-items:center;padding:16px 24px;transition:all .12s;display:grid}.row:last-child{border-bottom:none}.row:hover{background:#ffffff03}.row.proj-grid{grid-template-columns:2.4fr 1fr 1fr 1.4fr 1.5fr}.script-name{align-items:center;gap:14px;min-width:0;display:flex;overflow:hidden}.toggle{background:var(--surface-3);width:46px;height:26px;box-shadow:inset 0 0 0 1px var(--line);cursor:pointer;border:none;border-radius:99px;flex:none;transition:all .18s;position:relative}.toggle:after{content:"";background:#cfc6dd;border-radius:50%;width:20px;height:20px;transition:all .18s;position:absolute;top:3px;left:3px}.toggle.on{background:linear-gradient(90deg, var(--accent), var(--accent-2));box-shadow:0 0 14px -2px var(--accent-glow)}.toggle.on:after{background:#fff;left:23px}.lua-chip{letter-spacing:.06em;color:var(--accent-3);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--line-2);white-space:nowrap;border-radius:8px;flex:none;padding:5px 8px;font-size:10px;font-weight:700}.sn-text{min-width:0}.sn-text .t{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;overflow:hidden}.sn-text .p{color:#7fb0ff;white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:12.5px;overflow:hidden}.sn-text .h{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;overflow:hidden}.pill{letter-spacing:.04em;background:var(--accent-soft);color:var(--accent-3);box-shadow:inset 0 0 0 1px var(--line-2);white-space:nowrap;border-radius:99px;align-items:center;gap:6px;padding:5px 11px;font-size:11px;font-weight:700;display:inline-flex}.pill .d{background:var(--accent-3);width:6px;height:6px;box-shadow:0 0 8px var(--accent-3);border-radius:50%;flex:none}.pill.red{background:var(--danger-soft);color:var(--danger);box-shadow:inset 0 0 0 1px #e23b5438}.pill.red .d{background:var(--danger);box-shadow:0 0 8px var(--danger)}.pill.gray{background:var(--surface-3);color:var(--text-3);box-shadow:inset 0 0 0 1px var(--line)}.pill.gray .d{background:var(--text-3);box-shadow:none}.cell-dim{color:var(--text-2);font-size:13.5px}.cell-ver{font-size:13.5px;font-weight:600}.actions{justify-content:flex-end;gap:9px;display:flex}.actions .btn{height:38px;padding:0 14px}.toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:16px;padding:18px 24px;display:flex}.search{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;flex:1;align-items:center;gap:10px;min-width:200px;height:46px;padding:0 16px;display:flex}.search svg{width:18px;height:18px;color:var(--text-3);flex:none}.search input{color:var(--text);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:14px}.search input::placeholder{color:var(--text-3)}.search .go{background:linear-gradient(180deg, var(--accent-2), var(--accent));color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:9px;align-items:center;gap:7px;height:36px;padding:0 16px;font-family:inherit;font-size:13px;font-weight:600;display:flex}.pager{color:var(--text-2);white-space:nowrap;align-items:center;gap:12px;font-size:13px;display:flex}.pager .nav{background:var(--surface-2);width:34px;height:34px;box-shadow:inset 0 0 0 1px var(--line);color:var(--text-2);cursor:pointer;border:none;border-radius:9px;place-items:center;transition:all .14s;display:grid}.pager .nav:hover{background:var(--hover);color:#fff}.pager .count{color:var(--text);font-weight:700}.users-grid,.row.users-grid{grid-template-columns:1.7fr 1.4fr .85fr .7fr .8fr .85fr 1fr}.key .k{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.key .kh{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:10.5px;overflow:hidden}.did{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.num{font-weight:700}.actions-sm{justify-content:flex-end;gap:8px;display:flex}.modal-backdrop{z-index:200;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#06030cbd;justify-content:center;align-items:flex-start;padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-backdrop:before{content:"";flex:0 0 5vh}.modal{background:linear-gradient(180deg, var(--surface), #100b1c);border:1px solid var(--line-2);border-radius:20px;width:100%;max-width:640px;margin-bottom:5vh;animation:.18s pop;overflow:hidden;box-shadow:0 40px 110px -24px #000000d9}@keyframes pop{0%{opacity:0;transform:translateY(10px)scale(.985)}to{opacity:1;transform:none}}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding:22px 26px;display:flex}.modal-title{letter-spacing:-.01em;font-size:18px;font-weight:800}.modal-sub{color:#7fb0ff;margin-top:2px;font-size:13px}.modal-close{width:36px;height:36px;color:var(--text-2);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line);cursor:pointer;border:none;border-radius:10px;flex:none;place-items:center;font-size:24px;line-height:1;display:grid}.modal-close:hover{background:var(--hover);color:#fff}.modal-body{max-height:70vh;padding:24px 26px;overflow-y:auto}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:18px 26px;display:flex}.login-wrap{z-index:100;background:radial-gradient(900px 600px at 75% -10%, #8e00c238, transparent 60%), radial-gradient(700px 500px at 0% 110%, #b026d324, transparent 55%), var(--bg);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.login-card{background:linear-gradient(180deg, var(--surface) 0%, #120c1e 100%);border:1px solid var(--line-2);border-radius:20px;width:100%;max-width:404px;padding:38px 34px 30px;position:relative;overflow:hidden;box-shadow:0 30px 80px -20px #000000b3,inset 0 0 0 1px #ffffff05}.login-card:before{content:"";background:linear-gradient(90deg, transparent, var(--accent-3), transparent);opacity:.55;height:1px;position:absolute;top:0;left:0;right:0}.login-brand{align-items:center;gap:11px;margin-bottom:26px;display:flex}.login-head{margin-bottom:24px}.login-head h1{letter-spacing:-.03em;font-size:22px;font-weight:800}.login-head p{color:var(--text-2);margin-top:5px;font-size:13px}.login-row{justify-content:space-between;align-items:center;margin:6px 0 22px;font-size:12.5px;display:flex}.login-foot{text-align:center;color:var(--text-3);margin-top:20px;font-size:12px}.link{color:var(--accent-3)}.link:hover{text-decoration:underline}.form-toggle-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:14px 0;display:flex}.form-toggle-row:last-child{border-bottom:none}.form-toggle-label{font-size:14px;font-weight:600}.form-toggle-desc{color:var(--text-3);margin-top:2px;font-size:12px}.toast-container{z-index:500;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--surface);border:1px solid var(--line-2);pointer-events:auto;border-radius:14px;align-items:center;gap:12px;min-width:280px;max-width:380px;padding:14px 18px;font-size:13.5px;font-weight:500;animation:.18s toastIn;display:flex;box-shadow:0 20px 50px -12px #0009}.toast.success{border-color:#4ade8040}.toast.error{border-color:#e23b544d}.toast svg{flex:none;width:18px;height:18px}.toast.success svg{color:#4ade80}.toast.error svg{color:var(--danger)}@keyframes toastIn{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:none}}.empty{text-align:center;color:var(--text-3);padding:52px 24px;font-size:14px}.empty svg{width:40px;height:40px;color:var(--surface-3);margin:0 auto 12px;display:block}@media (max-width:1080px){.stats{grid-template-columns:1fr 1fr}.users-grid,.row.users-grid{grid-template-columns:1.5fr 1.3fr .9fr .9fr 1fr}.uh-hide{display:none}}@media (max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.page,.topbar{padding-left:18px;padding-right:18px}.page-title{font-size:26px}.stats{grid-template-columns:1fr}.proj-grid,.row.proj-grid{grid-template-columns:1.6fr auto}.ph-hide,.group-actions .btn span{display:none}}.profile-layout{grid-template-columns:280px 1fr;align-items:start;gap:24px;display:grid}.profile-avatar-card{background:linear-gradient(160deg, var(--surface), #110b1d);border:1px solid var(--line);text-align:center;border-radius:18px;flex-direction:column;align-items:center;padding:32px 24px;display:flex}.profile-avatar{background:linear-gradient(135deg, var(--accent-3), var(--accent));color:#fff;width:90px;height:90px;box-shadow:0 10px 30px -10px var(--accent-glow);border-radius:50%;justify-content:center;align-items:center;margin-bottom:16px;display:flex}.profile-avatar svg{width:42px;height:42px}.profile-avatar-name{letter-spacing:-.02em;margin-bottom:8px;font-size:20px;font-weight:800}.profile-avatar-role{margin-bottom:16px}.profile-avatar-id{color:var(--text-3);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line);border-radius:99px;padding:6px 12px;font-size:13px}.profile-details-card{background:linear-gradient(160deg, var(--surface), #110b1d);border:1px solid var(--line);border-radius:18px;padding:32px 36px}.profile-section-title{letter-spacing:-.01em;color:var(--text);border-bottom:1px solid var(--line);align-items:center;gap:10px;margin-bottom:24px;padding-bottom:16px;font-size:16px;font-weight:700;display:flex}.profile-section-title svg{color:var(--accent-3)}.profile-fields{grid-template-columns:1fr 1fr;gap:24px;margin-bottom:32px;display:grid}.profile-field{flex-direction:column;gap:6px;display:flex}.profile-field-label{color:var(--text-2);align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.profile-field-label svg{color:var(--text-3)}.profile-field-value{color:var(--text);padding-left:22px;font-size:15px;font-weight:500}.apikey-box{background:var(--surface-2);border:1px solid var(--line-2);border-radius:12px;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;padding:14px 18px;display:flex}.apikey-value{color:var(--text);word-break:break-all;font-size:15px;font-weight:500}.apikey-actions{flex:none;align-items:center;gap:8px;display:flex}.apikey-hint{color:var(--text-3);align-items:center;gap:6px;font-size:13px;display:flex}@media (max-width:860px){.profile-layout,.profile-fields{grid-template-columns:1fr}}.hidden{display:none!important}
