body,html{margin:0;padding:0;min-height:100%;background:#0b0f1a;color:#f4f7fb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}iframe{display:block;width:100%;border:0}a{color:inherit}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1000px 600px at 20% 0,rgba(99,102,241,.18),transparent 60%),radial-gradient(900px 600px at 80% 100%,rgba(139,92,246,.12),transparent 60%),#0b0f1a}.auth-box{background:linear-gradient(180deg,rgba(28,36,64,.7),rgba(21,27,46,.95));border:1px solid hsla(0,0%,100%,.1);border-radius:18px;padding:36px;max-width:420px;width:100%;box-shadow:0 20px 50px rgba(0,0,0,.4)}.auth-logo{font-size:48px;text-align:center;margin-bottom:10px}.auth-title{font-size:24px;font-weight:800;letter-spacing:-.5px;text-align:center;background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;background-clip:text;color:transparent;margin:0}.auth-sub{font-size:13px;color:#8a93b0;text-align:center;margin-top:6px;margin-bottom:24px}.auth-info{font-size:13px;color:#a3aad1;background:rgba(99,102,241,.12);border:1px solid rgba(99,102,241,.25);padding:12px;border-radius:10px;margin-bottom:14px}.auth-form{display:flex;flex-direction:column;gap:8px}.auth-form label{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:#8a93b0;font-weight:600;margin-top:8px}.auth-form input{background:#1c2440;border:1px solid hsla(0,0%,100%,.12);color:#f4f7fb;padding:11px 13px;border-radius:10px;font-size:14px;font-family:inherit}.auth-form input:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.2)}.btn-primary{margin-top:16px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:0;color:#fff;padding:12px;border-radius:10px;font-weight:700;font-size:14px;cursor:pointer;box-shadow:0 6px 18px rgba(99,102,241,.35);font-family:inherit}.btn-primary:hover{filter:brightness(1.1)}.auth-error{margin-top:12px;background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.3);color:#fca5a5;padding:10px;border-radius:10px;font-size:13px;text-align:center}.auth-hint{margin-top:14px;font-size:11.5px;color:#8a93b0;text-align:center}.auth-hint a{color:#a78bfa;text-decoration:none}.admin-shell{padding:28px 32px;max-width:1200px;margin:0 auto}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;flex-wrap:wrap;gap:16px}.admin-shell h1{margin:0;font-size:24px;font-weight:800;letter-spacing:-.5px}.admin-shell h2{margin:0 0 14px;font-size:18px;font-weight:700}.admin-shell h3{font-size:14px;font-weight:700;margin:0 0 6px}.admin-shell .sub{font-size:13px;color:#8a93b0;margin-top:4px}.admin-shell .row{display:flex;gap:10px;align-items:center}.btn{padding:9px 14px;border-radius:10px;border:1px solid hsla(0,0%,100%,.14);background:#151b2e;color:#f4f7fb;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;font-family:inherit}.btn.primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-color:transparent;box-shadow:0 6px 18px rgba(99,102,241,.35)}.btn.ghost{background:transparent}.btn:hover{filter:brightness(1.1)}.banner{padding:14px 18px;border-radius:12px;margin-bottom:18px;font-size:13.5px;font-weight:500}.banner.success{background:rgba(16,185,129,.12);border:1px solid rgba(16,185,129,.3);color:#6ee7b7}.banner.err{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.3);color:#fca5a5}.card{background:linear-gradient(180deg,rgba(28,36,64,.55),rgba(21,27,46,.85));border:1px solid hsla(0,0%,100%,.08);border-radius:14px;padding:24px;margin-bottom:18px}.muted{color:#8a93b0;font-size:13px;line-height:1.55}.muted code{background:#1c2440;padding:2px 6px;border-radius:5px;color:#a78bfa;font-size:12px}.form{margin-top:16px}.form label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:#8a93b0;font-weight:700;margin-bottom:5px}.form input:not([type]),.form input[type=password],.form input[type=text]{width:100%;background:#1c2440;border:1px solid hsla(0,0%,100%,.12);color:#f4f7fb;padding:10px 12px;border-radius:10px;font-size:13.5px;font-family:inherit}.form input:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.2)}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;margin-top:8px}.form-row{margin-bottom:14px}.checkbox{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;cursor:pointer}.checkbox input{width:18px;height:18px;accent-color:#8b5cf6}.perm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:18px;gap:18px;margin-top:8px}.perm-group{background:rgba(21,27,46,.6);border:1px solid hsla(0,0%,100%,.08);border-radius:12px;padding:14px}.perm-group-title{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#a78bfa;font-weight:700;margin-bottom:10px}.perm-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13.5px;font-weight:500;transition:background .12s}.perm-row:hover{background:rgba(99,102,241,.08)}.perm-row.sensitive{border-left:3px solid #f59e0b;padding-left:6px}.perm-row input{width:16px;height:16px;accent-color:#8b5cf6}.perm-row .ic{font-size:14px;width:18px;text-align:center}.perm-row .tag{margin-left:auto;font-size:9.5px;color:#fbbf24;background:rgba(245,158,11,.12);padding:2px 6px;border-radius:8px;font-weight:600}.actions{margin-top:18px;display:flex;gap:10px}.topbar{justify-content:space-between;padding:10px 18px;background:rgba(11,15,26,.95);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid hsla(0,0%,100%,.08);font-size:13px;height:48px;position:-webkit-sticky;position:sticky;top:0;z-index:50}.topbar,.topbar .left{display:flex;align-items:center}.topbar .left{gap:12px}.topbar .right{display:flex;align-items:center;gap:10px}.topbar .logo{font-size:18px}.topbar .brand{background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800;letter-spacing:-.3px}.topbar .role-pill{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;background:rgba(99,102,241,.15);color:#a78bfa;border:1px solid rgba(99,102,241,.3)}.topbar .user-name{font-size:12px;color:#8a93b0}.topbar .btn{padding:6px 12px;border-radius:8px;font-size:12px}.denied{font-size:11.5px;color:#fca5a5;background:rgba(239,68,68,.12);padding:3px 10px;border-radius:8px}.boot{display:flex;align-items:center;justify-content:center;height:calc(100vh - 48px);flex-direction:column;gap:14px}.boot .logo{font-size:48px}.boot .text{font-size:14px;color:#8a93b0}