.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#000;padding:20px}.login-card{background:var(--surface);border-radius:14px;box-shadow:0 24px 64px #00000073;width:100%;max-width:400px;padding:40px}.login-header{text-align:center;margin-bottom:28px}.login-header svg{color:var(--primary);margin-bottom:12px}.login-header h1{font-size:23px;font-weight:650;letter-spacing:-.01em;margin-bottom:6px;color:var(--ink)}.login-header p{color:var(--ink-muted);font-size:14px}.form-group{margin-bottom:18px}.form-group label{display:block;margin-bottom:6px;font-weight:550;color:var(--ink-soft);font-size:13px}.form-group input{width:100%;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:14px;transition:border-color .15s,box-shadow .15s}.form-group input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.form-group input:disabled{background-color:var(--gray-100);color:var(--ink-muted)}.error-message{background-color:var(--danger-soft);color:var(--danger-ink);padding:11px 14px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:18px;border:1px solid #fecaca}.login-button{width:100%;padding:12px;background-color:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-weight:600;font-size:15px;transition:background-color .15s;margin-bottom:18px}.login-button:hover:not(:disabled){background-color:var(--primary-dark)}.login-button:disabled{opacity:.7;cursor:not-allowed}.login-footer{text-align:center;padding-top:18px;border-top:1px solid var(--border);color:var(--ink-muted);font-size:13px}.mfa-setup{margin-bottom:20px}.mfa-steps{margin:0 0 16px 18px;color:var(--ink-soft);font-size:13px;line-height:1.55}.mfa-steps li+li{margin-top:4px}.mfa-qr{display:block;width:180px;height:180px;margin:0 auto 14px;padding:8px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);image-rendering:pixelated}.mfa-key{text-align:center;font-size:12px;color:var(--ink-muted)}.mfa-key code{display:block;margin-top:6px;padding:8px 10px;background:var(--gray-100);border-radius:var(--radius-sm);color:var(--ink);font-size:13px;letter-spacing:.04em;word-break:break-all;-webkit-user-select:all;user-select:all}.form-group input.mfa-code-input{text-align:center;font-size:22px;letter-spacing:.35em;font-variant-numeric:tabular-nums}.form-group input.mfa-code-input::placeholder{font-size:15px;letter-spacing:normal}.mfa-back{background:none;border:none;color:var(--ink-muted);font-size:13px;cursor:pointer;padding:0}.mfa-back:hover:not(:disabled){color:var(--ink);text-decoration:underline}.management-section{display:flex;flex-direction:column;gap:18px}.section-header{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.section-header h2{font-size:20px;font-weight:650;letter-spacing:-.01em;color:var(--ink)}.add-button,.refresh-button{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border:1px solid transparent;border-radius:var(--radius-sm);font-size:14px;font-weight:550;transition:background-color .15s,border-color .15s,color .15s}.add-button{background-color:var(--primary);color:#fff;box-shadow:var(--shadow-sm)}.add-button:hover:not(:disabled){background-color:var(--primary-dark)}.add-button:disabled{background-color:var(--gray-200);color:var(--ink-muted);box-shadow:none;cursor:not-allowed}.refresh-button{background-color:var(--surface);border-color:var(--border-strong);color:var(--ink-soft)}.refresh-button:hover{background-color:var(--gray-100);color:var(--ink)}.action-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin-right:6px;background-color:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--ink-soft);transition:background-color .15s,border-color .15s,color .15s;vertical-align:middle}.action-button:hover{background-color:var(--gray-100);color:var(--ink)}.action-button.danger:hover{background-color:var(--danger-soft);border-color:var(--danger);color:var(--danger-ink)}.action-button.success:hover{background-color:var(--success-soft);border-color:var(--success);color:var(--success-ink)}.copy-button{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;margin-left:8px;background:transparent;border:none;border-radius:6px;color:var(--ink-muted);vertical-align:middle}.copy-button:hover{background-color:var(--gray-100);color:var(--primary)}.switch{display:inline-flex;align-items:center;gap:9px;padding:3px 4px;background:none;border:none;font-size:13px;font-weight:550;color:var(--ink-muted);border-radius:var(--radius-sm)}.switch-track{position:relative;width:34px;height:20px;border-radius:999px;background-color:var(--gray-300);transition:background-color .18s;flex-shrink:0}.switch-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform .18s}.switch.on{color:var(--success-ink)}.switch.on .switch-track{background-color:var(--success)}.switch.on .switch-thumb{transform:translate(14px)}.switch:hover .switch-track{filter:brightness(.95)}.form-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow-sm)}.form-card h3{font-size:15px;font-weight:600;margin-bottom:18px;color:var(--ink)}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-size:13px;font-weight:550;color:var(--ink-soft)}.form-group input,.form-group select,.form-group textarea{width:100%;padding:9px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:14px;background:var(--surface);transition:border-color .15s,box-shadow .15s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.form-group input:disabled,.form-group select:disabled,.form-group textarea:disabled{background-color:var(--gray-100);color:var(--ink-muted)}.form-group textarea{font-family:inherit;resize:vertical}.form-group textarea.prompt-editor{min-height:420px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:1.6}.form-actions{display:flex;gap:10px;margin-top:20px}.form-actions button{padding:9px 16px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink-soft);font-size:14px;font-weight:550;transition:background-color .15s,color .15s}.form-actions button:hover:not(:disabled){background:var(--gray-100);color:var(--ink)}.form-actions button[type=submit]{background:var(--primary);border-color:var(--primary);color:#fff}.form-actions button[type=submit]:hover:not(:disabled){background:var(--primary-dark)}.form-actions button:disabled{opacity:.6;cursor:not-allowed}.hint{font-size:12px;color:var(--ink-muted)}.error-alert,.success-alert{padding:11px 14px;border-radius:var(--radius-sm);font-size:14px;border:1px solid}.error-alert{background-color:var(--danger-soft);color:var(--danger-ink);border-color:#fecaca}.success-alert{background-color:var(--success-soft);color:var(--success-ink);border-color:#a7f3d0}.data-table{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.data-table>p{padding:36px;text-align:center;color:var(--ink-muted);font-size:14px}.data-table table{width:100%;border-collapse:collapse}.data-table th{position:sticky;top:0;background:var(--gray-50);border-bottom:1px solid var(--border);padding:11px 16px;text-align:left;font-size:11px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-muted);white-space:nowrap}.data-table td{padding:13px 16px;border-bottom:1px solid var(--border);font-size:14px;color:var(--ink-soft);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background-color .12s}.data-table tbody tr:hover{background-color:var(--gray-50)}.data-table td:first-child{font-weight:550;color:var(--ink)}.mono,.license-key{font-family:Consolas,Monaco,monospace;font-size:13px;letter-spacing:.02em;white-space:nowrap}.status,.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.status.active{background-color:var(--success-soft);color:var(--success-ink)}.status.pending{background-color:var(--warning-soft);color:var(--warning-ink)}.status.inactive{background-color:var(--danger-soft);color:var(--danger-ink)}.badge.admin{background-color:var(--primary-soft);color:var(--primary-dark)}.badge.user{background-color:var(--gray-100);color:var(--ink-soft)}.action-badge{display:inline-block;padding:3px 9px;border-radius:999px;background-color:var(--gray-100);color:var(--ink-soft);font-size:12px;font-weight:550}.usage-count{font-weight:600;color:var(--ink)}.api-info-section,.api-keys-info{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius);padding:18px 22px}.api-info-section h3,.api-keys-info h3,.api-keys-info h4{font-size:14px;font-weight:650;color:var(--ink);margin-bottom:10px}.api-info-section ul,.api-keys-info ul{padding-left:18px;display:flex;flex-direction:column;gap:7px}.api-info-section li,.api-keys-info li{font-size:13px;color:var(--ink-soft);line-height:1.55}@media(max-width:860px){.data-table{overflow-x:auto}}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm)}.stat-value{font-size:28px;font-weight:650;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums;margin-bottom:4px}.stat-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-muted)}.actions-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px 22px}.actions-section h3{margin-bottom:16px;font-size:15px;font-weight:650;color:var(--ink)}.action-list{display:flex;flex-direction:column;gap:11px}.action-item{display:flex;align-items:center;gap:14px}.action-name{min-width:170px;font-size:13px;font-weight:500;color:var(--ink-soft)}.action-bar{flex:1;height:8px;background-color:var(--gray-100);border-radius:4px;overflow:hidden}.action-fill{height:100%;background:var(--primary);border-radius:0 4px 4px 0;transition:width .3s ease}.action-count{min-width:48px;text-align:right;font-size:13px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.last-activity{font-size:13px;color:var(--ink-muted);text-align:center}@media(max-width:640px){.action-name{min-width:110px}}.dashboard-container{display:flex;flex-direction:column;min-height:100vh;background-color:var(--page)}.dashboard-header{background:var(--surface);border-bottom:1px solid var(--border);padding:16px 28px;display:flex;justify-content:space-between;align-items:center;gap:16px;position:sticky;top:0;z-index:10}.header-left h1{font-size:19px;font-weight:650;letter-spacing:-.01em;color:var(--ink)}.header-left p{font-size:13px;color:var(--ink-muted)}.header-right{display:flex;align-items:center;gap:12px}.user-info{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--ink-soft);padding:7px 12px;background-color:var(--gray-100);border:1px solid var(--border);border-radius:999px}.logout-button{display:flex;align-items:center;gap:8px;padding:8px 14px;background-color:var(--surface);color:var(--ink-soft);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:14px;font-weight:500;transition:background-color .15s,color .15s,border-color .15s}.logout-button:hover{background-color:var(--danger-soft);border-color:var(--danger);color:var(--danger-ink)}.dashboard-content{display:flex;flex:1;overflow:hidden}.dashboard-tabs{display:flex;flex-direction:column;width:216px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:16px 12px;gap:2px;overflow-y:auto}.tab{display:flex;align-items:center;gap:10px;padding:10px 12px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--ink-soft);font-size:14px;font-weight:500;transition:background-color .15s,color .15s;text-align:left}.tab svg{color:var(--ink-muted);flex-shrink:0;transition:color .15s}.tab:hover{background-color:var(--gray-100);color:var(--ink)}.tab.active{background-color:var(--primary-soft);color:var(--primary-dark);font-weight:600}.tab.active svg{color:var(--primary)}.dashboard-main{flex:1;overflow-y:auto;padding:28px}.dashboard-main>*{max-width:1200px;margin:0 auto}@media(max-width:860px){.dashboard-header{flex-direction:column;align-items:flex-start;padding:14px 18px}.dashboard-content{flex-direction:column}.dashboard-tabs{width:100%;flex-direction:row;border-right:none;border-bottom:1px solid var(--border);overflow-x:auto;padding:10px}.tab{white-space:nowrap}.dashboard-main{padding:18px}}*{margin:0;padding:0;box-sizing:border-box}:root{--primary: #4f46e5;--primary-dark: #4338ca;--primary-soft: #eef2ff;--primary-ring: rgba(79, 70, 229, .18);--danger: #dc2626;--danger-soft: #fef2f2;--danger-ink: #b91c1c;--success: #059669;--success-soft: #ecfdf5;--success-ink: #047857;--warning: #d97706;--warning-soft: #fffbeb;--warning-ink: #92400e;--page: #f6f7f9;--surface: #ffffff;--border: #e5e7eb;--border-strong: #d4d8de;--ink: #0f172a;--ink-soft: #475569;--ink-muted: #64748b;--gray-50: #f8fafc;--gray-100: #f1f5f9;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #94a3b8;--gray-500: #64748b;--gray-600: #475569;--gray-700: #334155;--gray-800: #1e293b;--gray-900: #0f172a;--radius: 10px;--radius-sm: 7px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow: 0 1px 3px rgba(15, 23, 42, .07), 0 8px 24px -12px rgba(15, 23, 42, .14)}html{font-size:16px}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--page);color:var(--ink);line-height:1.5}#root,.app{min-height:100vh}input,textarea,select,button{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--ink-muted)}.mono,td{font-variant-numeric:tabular-nums}
