:root{--taa-red-500: #D31E24;--taa-red-600: #BD1B21;--taa-red-700: #97161A;--dark: #121212;--med-grey: #7b7b7b;--light-bg: #f5f5f5;--card-bg: #ffffff;--border: #e5e5e5;--text: rgba(0,0,0,.55);--text-dark: #121212;--green: #16a34a;--amber: #d97706;--blue: #2563eb;--purple: #7c3aed;--cyan: #06b6d4;--sidebar-bg: #141414;--sidebar-w: 216px;--topbar-h: 56px}*,*:before,*:after{box-sizing:border-box;margin:0}body{font-family:Inter,sans-serif;background:var(--light-bg);color:var(--text);font-weight:300;line-height:1.5;-webkit-font-smoothing:antialiased}.app{display:flex;min-height:100vh}.app-main{flex:1;min-width:0;display:flex;flex-direction:column}.page{flex:1;min-width:0}.sidebar{width:var(--sidebar-w);flex-shrink:0;position:sticky;top:0;height:100vh;z-index:20;background:var(--sidebar-bg);color:#fff;display:flex;flex-direction:column}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 18px;height:var(--topbar-h);flex-shrink:0;text-decoration:none;color:#fff;font-weight:700;font-size:15px;border-bottom:1px solid rgba(255,255,255,.07)}.brand-icon{width:28px;height:28px;border-radius:8px;flex-shrink:0;background:var(--taa-red-600);color:#fff;display:flex;align-items:center;justify-content:center}.brand-icon svg{width:17px;height:17px}.brand-dot{color:var(--taa-red-500)}.sidebar-nav{flex:1;padding:14px 10px;overflow-y:auto}.sidebar-section{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:#ffffff59;padding:14px 10px 6px}.sidebar-section:first-child{padding-top:0}.sidebar-link{display:flex;align-items:center;gap:10px;padding:8px 10px;margin-bottom:2px;border-radius:7px;border-left:3px solid transparent;font-size:13px;font-weight:500;text-decoration:none;color:#fff9;cursor:pointer;transition:all .15s}.sidebar-link svg{width:15px;height:15px;flex-shrink:0;color:#ffffff73;transition:color .15s}.sidebar-link:hover{color:#fff;background:#ffffff0f}.sidebar-link:hover svg{color:#fffc}.sidebar-link.active{color:#fff;background:#d31e241f;border-left-color:var(--taa-red-500);font-weight:600}.sidebar-link.active svg{color:var(--taa-red-500)}.sidebar-bottom{padding:10px;border-top:1px solid rgba(255,255,255,.07);flex-shrink:0}.sidebar-footer{display:flex;align-items:center;gap:8px;padding:10px 10px 4px;font-size:10px;color:#ffffff59}.sidebar-footer .api-tag{font-weight:700;letter-spacing:1px;color:var(--taa-red-500)}.sidebar-footer code{background:#ffffff0f;color:#ffffff80;padding:1px 6px;border-radius:4px;font-size:10px}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;height:var(--topbar-h);padding:0 24px;flex-shrink:0;background:var(--card-bg);border-bottom:1px solid var(--border)}.topbar-menu-btn{display:none;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;border:1px solid var(--border);background:var(--card-bg);color:var(--text-dark);cursor:pointer}.crumbs{display:flex;align-items:center;gap:8px;font-size:13px;flex-shrink:0}.crumb-root{font-weight:700;color:var(--text-dark);text-decoration:none}.crumb-sep{color:var(--border);font-weight:400}.crumb-current{font-weight:500;color:var(--text)}.topbar-search{display:flex;align-items:center;gap:8px;flex:0 1 340px;padding:7px 12px;border-radius:8px;background:var(--light-bg);border:1px solid var(--border);color:var(--med-grey);transition:border-color .15s}.topbar-search:focus-within{border-color:var(--taa-red-600)}.topbar-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;font-family:inherit;font-size:12.5px;color:var(--text-dark)}.topbar-right{display:flex;align-items:center;gap:10px;margin-left:auto}.container{max-width:1140px;margin:0 auto;padding:28px 24px}.page-header{margin-bottom:20px}.page-header h1{font-size:20px;font-weight:800;color:var(--text-dark)}.page-header .sub{font-size:12.5px;color:var(--med-grey);margin-top:2px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;border:1px solid var(--border);background:var(--card-bg);color:var(--text-dark);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;text-decoration:none;transition:all .15s}.btn:hover{border-color:var(--med-grey)}.btn.primary{background:var(--taa-red-600);border-color:var(--taa-red-600);color:#fff}.btn.primary:hover{background:var(--taa-red-700);border-color:var(--taa-red-700)}.btn:disabled{opacity:.4;cursor:not-allowed}.card{background:var(--card-bg);border-radius:10px;border:1px solid var(--border);overflow:hidden}.card-header{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.card-header h3{font-size:13px;font-weight:700;color:var(--dark);display:flex;align-items:center;gap:6px}.card-body{padding:0}.card-body.padded{padding:18px}.stat-card{background:var(--card-bg);border-radius:10px;padding:18px 20px;border:1px solid var(--border)}.stat-card .label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--med-grey);margin-bottom:4px}.stat-card .val{font-size:26px;font-weight:800;color:var(--dark);line-height:1}.stat-card .val.green{color:var(--green)}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;padding:8px 18px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--med-grey);background:var(--light-bg);border-bottom:1px solid var(--border)}td{padding:10px 18px;border-bottom:1px solid var(--border);color:var(--text-dark)}tr:last-child td{border-bottom:none}tr:hover td{background:#00000004}.status-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:12px}.status-badge.online,.status-badge.active{background:#dcfce7;color:var(--green)}.status-badge.offline{background:#f3f4f6;color:#9ca3af}.status-badge.revoked{background:#fee2e2;color:#dc2626}.status-dot-sm{width:6px;height:6px;border-radius:50%}.status-dot-sm.online{background:var(--green)}.status-dot-sm.offline{background:#9ca3af}.count{font-size:11px;font-weight:600;color:var(--med-grey);background:var(--light-bg);padding:2px 8px;border-radius:12px}.empty-state{text-align:center;padding:40px 18px;color:var(--med-grey)}.empty-state p{font-size:13px;margin-top:6px}.modal-backdrop{display:none;position:fixed;inset:0;background:#00000080;z-index:100;align-items:center;justify-content:center;backdrop-filter:blur(4px)}.modal-backdrop.open{display:flex}.modal{background:#fff;border:1px solid var(--border);border-radius:14px;padding:24px 28px;width:460px;max-width:92vw;box-shadow:0 20px 60px #00000026}.modal h3{font-size:16px;font-weight:700;color:var(--dark);margin-bottom:16px;display:flex;align-items:center;gap:8px}.modal label{display:block;font-size:10px;font-weight:600;color:var(--med-grey);margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.modal input[type=text]{width:100%;padding:9px 12px;background:var(--light-bg);border:1px solid var(--border);border-radius:8px;color:var(--dark);font-size:13px;font-family:inherit;outline:none}.modal input[type=text]:focus{border-color:var(--taa-red-600)}.form-group{margin-bottom:14px}.btn-row{display:flex;gap:8px;margin-top:18px}.btn-row button{flex:1}.modal-btn{padding:9px 18px;border-radius:8px;border:1px solid var(--border);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}.modal-btn.primary{background:var(--taa-red-600);border-color:var(--taa-red-600);color:#fff}.modal-btn.primary:hover{background:var(--taa-red-700)}.modal-btn.secondary{background:#fff;color:var(--text-dark)}.modal-btn:disabled{opacity:.4;cursor:not-allowed}.key-display{background:var(--dark);color:#22c55e;padding:12px 14px;border-radius:8px;font-family:SF Mono,Fira Code,monospace;font-size:12px;word-break:break-all;position:relative;margin-bottom:10px}.key-display .copy-btn{position:absolute;top:7px;right:7px;padding:3px 8px;border-radius:4px;border:1px solid #333;background:#242424;color:#94a3b8;font-size:10px;font-weight:600;cursor:pointer;font-family:inherit}.key-display .copy-btn:hover{border-color:#22c55e;color:#22c55e}.key-warning{font-size:11px;color:#dc2626;font-weight:500;padding:6px 10px;background:#fef2f2;border-radius:6px;margin-bottom:12px}@media(max-width:900px){.sidebar{position:fixed;left:0;top:0;transform:translate(-100%);transition:transform .2s ease;box-shadow:0 0 40px #0000004d}body.sidebar-open .sidebar{transform:translate(0)}.topbar-menu-btn{display:flex}.topbar-search{display:none}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.loading{animation:pulse 1.5s ease-in-out infinite}code{background:#1a1a1a;padding:2px 6px;border-radius:4px;font-size:11px;color:var(--cyan)}
