@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--bg-primary: #0a0a0f;--bg-secondary: #12121a;--bg-card: rgba(20, 20, 35, .8);--bg-card-hover: rgba(30, 30, 50, .9);--bg-input: rgba(255, 255, 255, .05);--bg-glass: rgba(255, 255, 255, .03);--border-subtle: rgba(255, 255, 255, .06);--border-active: rgba(139, 92, 246, .4);--text-primary: #f0f0f5;--text-secondary: #8b8b9e;--text-muted: #5a5a6e;--accent-purple: #8b5cf6;--accent-purple-light: #a78bfa;--accent-blue: #3b82f6;--accent-cyan: #06b6d4;--status-active: #22c55e;--status-active-bg: rgba(34, 197, 94, .1);--status-expired: #f59e0b;--status-expired-bg: rgba(245, 158, 11, .1);--status-revoked: #ef4444;--status-revoked-bg: rgba(239, 68, 68, .1);--shadow-glow: 0 0 40px rgba(139, 92, 246, .08);--shadow-card: 0 4px 24px rgba(0, 0, 0, .3);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--transition-fast: .15s ease;--transition-normal: .25s ease}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:radial-gradient(ellipse at 30% 20%,rgba(139,92,246,.08) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(59,130,246,.06) 0%,transparent 50%),var(--bg-primary)}.login-card{background:var(--bg-card);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);padding:48px 40px;width:100%;max-width:420px;box-shadow:var(--shadow-card),var(--shadow-glow)}.login-card .logo{text-align:center;margin-bottom:32px}.login-card .logo h1{font-size:28px;font-weight:800;background:linear-gradient(135deg,var(--accent-purple),var(--accent-cyan));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.5px}.login-card .logo p{color:var(--text-secondary);font-size:14px;margin-top:4px}.login-card .error-msg{background:var(--status-revoked-bg);border:1px solid rgba(239,68,68,.2);color:#fca5a5;padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:16px}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px;letter-spacing:.02em}.form-input{width:100%;padding:12px 16px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;font-family:inherit;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.form-input:focus{border-color:var(--border-active);box-shadow:0 0 0 3px #8b5cf61a}.form-input::placeholder{color:var(--text-muted)}select.form-input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238b8b9e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:600;font-family:inherit;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);letter-spacing:.01em}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--accent-purple),var(--accent-blue));color:#fff;box-shadow:0 2px 12px #8b5cf64d}.btn-primary:hover:not(:disabled){box-shadow:0 4px 20px #8b5cf680;transform:translateY(-1px)}.btn-success{background:#22c55e26;color:var(--status-active);border:1px solid rgba(34,197,94,.2)}.btn-success:hover:not(:disabled){background:#22c55e40}.btn-warning{background:#f59e0b26;color:var(--status-expired);border:1px solid rgba(245,158,11,.2)}.btn-warning:hover:not(:disabled){background:#f59e0b40}.btn-danger{background:#ef444426;color:var(--status-revoked);border:1px solid rgba(239,68,68,.2)}.btn-danger:hover:not(:disabled){background:#ef444440}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border-subtle)}.btn-ghost:hover:not(:disabled){background:var(--bg-input);color:var(--text-primary)}.btn-sm{padding:6px 14px;font-size:12px}.btn-full{width:100%}.dashboard{min-height:100vh;background:radial-gradient(ellipse at 10% 10%,rgba(139,92,246,.04) 0%,transparent 40%),radial-gradient(ellipse at 90% 90%,rgba(59,130,246,.03) 0%,transparent 40%),var(--bg-primary)}.dashboard-header{background:var(--bg-card);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border-subtle);padding:0 32px;height:64px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}.dashboard-header .brand{display:flex;align-items:center;gap:12px}.dashboard-header .brand h1{font-size:20px;font-weight:700;background:linear-gradient(135deg,var(--accent-purple),var(--accent-cyan));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dashboard-header .brand .badge{font-size:10px;font-weight:600;padding:3px 8px;background:#8b5cf626;color:var(--accent-purple-light);border-radius:100px;letter-spacing:.05em;text-transform:uppercase}.dashboard-header .actions{display:flex;align-items:center;gap:12px}.dashboard-content{max-width:1280px;margin:0 auto;padding:32px}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:32px}.stat-card{background:var(--bg-card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:20px 24px;transition:all var(--transition-normal)}.stat-card:hover{border-color:var(--border-active);box-shadow:var(--shadow-glow)}.stat-card .stat-label{font-size:12px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.stat-card .stat-value{font-size:28px;font-weight:700;color:var(--text-primary)}.stat-card .stat-value.active{color:var(--status-active)}.stat-card .stat-value.expired{color:var(--status-expired)}.stat-card .stat-value.revoked{color:var(--status-revoked)}.stat-card .stat-value.flagged{color:#f97316}.row-flagged{background:#f973160a!important;border-left:3px solid #f97316}.row-flagged td{background:#f9731605}.flag-icon{margin-left:6px;font-size:14px;animation:flag-pulse 2s ease-in-out infinite;cursor:help}@keyframes flag-pulse{0%,to{opacity:1}50%{opacity:.5}}.status-badge.flagged{background:#f973161f;color:#f97316}.ip-details{display:flex;flex-direction:column;gap:20px}.ip-stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.ip-stat{background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:16px;display:flex;flex-direction:column;gap:6px}.ip-stat-label{font-size:11px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.ip-stat-value{font-size:24px;font-weight:700;color:var(--text-primary)}.ip-stat-value.good{color:var(--status-active)}.ip-stat-value.warning{color:var(--status-expired)}.ip-stat-value.danger{color:var(--status-revoked)}.ip-list h4{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:10px}.ip-chips{display:flex;flex-wrap:wrap;gap:8px}.ip-chip{display:inline-flex;align-items:center;padding:6px 14px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:100px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:12px;color:var(--text-secondary);letter-spacing:.02em;transition:all var(--transition-fast)}.ip-chip:hover{border-color:var(--border-active);color:var(--text-primary);background:#8b5cf614}.panel{background:var(--bg-card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);margin-bottom:24px;overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border-subtle)}.panel-header h2{font-size:16px;font-weight:600}.panel-body{padding:24px}.grant-form{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:16px;align-items:end}@media(max-width:900px){.grant-form{grid-template-columns:1fr 1fr}}@media(max-width:600px){.grant-form{grid-template-columns:1fr}}.search-bar{position:relative;margin-bottom:24px}.search-bar .search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:14px}.search-bar .form-input{padding-left:42px}.license-table{width:100%;border-collapse:collapse}.license-table th{text-align:left;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;padding:12px 16px;border-bottom:1px solid var(--border-subtle)}.license-table td{padding:14px 16px;font-size:13px;border-bottom:1px solid var(--border-subtle);vertical-align:middle}.license-table tr:last-child td{border-bottom:none}.license-table tr:hover td{background:var(--bg-glass)}.license-table .user-cell{display:flex;flex-direction:column;gap:2px}.license-table .user-cell .user-id{font-weight:600;color:var(--text-primary)}.license-table .user-cell .user-email{font-size:12px;color:var(--text-secondary)}.license-table .key-cell{font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:12px;color:var(--text-secondary);letter-spacing:.02em}.license-table .actions-cell{display:flex;gap:6px;flex-wrap:wrap}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:100px;font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:capitalize}.status-badge.active{background:var(--status-active-bg);color:var(--status-active)}.status-badge.expired{background:var(--status-expired-bg);color:var(--status-expired)}.status-badge.revoked{background:var(--status-revoked-bg);color:var(--status-revoked)}.status-badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.status-badge.active .dot{animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.days-remaining{font-size:13px;font-weight:500}.days-remaining.urgent{color:var(--status-revoked)}.days-remaining.warning{color:var(--status-expired)}.days-remaining.good{color:var(--status-active)}.days-remaining.na{color:var(--text-muted)}.toast-container{position:fixed;bottom:24px;right:24px;z-index:1000;display:flex;flex-direction:column;gap:8px}.toast{background:var(--bg-card);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:14px 20px;min-width:300px;box-shadow:var(--shadow-card);animation:slideInRight .3s ease;display:flex;align-items:center;gap:10px;font-size:13px}.toast.success{border-left:3px solid var(--status-active)}.toast.error{border-left:3px solid var(--status-revoked)}.toast.info{border-left:3px solid var(--accent-blue)}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.modal-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn .15s ease}.modal{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);padding:32px;width:100%;max-width:480px;box-shadow:var(--shadow-card);animation:scaleIn .2s ease}.modal h3{font-size:18px;font-weight:700;margin-bottom:16px}.modal .modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.audit-list{list-style:none}.audit-item{display:flex;gap:16px;padding:14px 0;border-bottom:1px solid var(--border-subtle);font-size:13px}.audit-item:last-child{border-bottom:none}.audit-item .audit-time{color:var(--text-muted);font-size:12px;white-space:nowrap;min-width:140px}.audit-item .audit-action{font-weight:600;text-transform:capitalize}.audit-item .audit-action.grant{color:var(--status-active)}.audit-item .audit-action.extend{color:var(--accent-blue)}.audit-item .audit-action.revoke{color:var(--status-revoked)}.audit-item .audit-details{color:var(--text-secondary)}.empty-state{text-align:center;padding:48px 24px;color:var(--text-muted)}.empty-state .empty-icon{font-size:48px;margin-bottom:16px;opacity:.3}.empty-state p{font-size:14px}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border-subtle);border-top-color:var(--accent-purple);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.copy-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:12px;padding:2px 6px;border-radius:4px;transition:all var(--transition-fast)}.copy-btn:hover{color:var(--accent-purple);background:#8b5cf61a}.table-wrapper{overflow-x:auto}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
