:root{--bg: #0b0f14;--bg-soft: #11171f;--card: #141b24;--border: rgba(255, 255, 255, .07);--text: #e8edf3;--muted: #8b96a5;--accent: #10b981;--accent-soft: rgba(16, 185, 129, .12);--danger: #f43f5e;--warn: #f59e0b;--radius: 12px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.sub{display:block;font-size:10px}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.screen-center{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.screen-center.pad{min-height:200px}.spinner{width:26px;height:26px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.alert{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;background:#f43f5e14;border:1px solid rgba(244,63,94,.25);color:#fda4af;font-size:12.5px;margin-bottom:12px}.alert.compact{padding:6px 10px;margin:8px 0 0;font-size:12px}.alert-ok{background:var(--accent-soft);border-color:#10b9814d;color:#6ee7b7}.alert-err{background:#f43f5e14;border-color:#f43f5e40;color:#fda4af}.login-bg{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(900px 500px at 15% -10%,rgba(16,185,129,.09),transparent 60%),radial-gradient(800px 500px at 110% 110%,rgba(59,130,246,.07),transparent 60%),var(--bg)}.login-card{width:100%;max-width:360px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:28px;box-shadow:0 24px 60px #00000073}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}.login-brand h1{font-size:17px;font-weight:800;margin:0;letter-spacing:-.01em}.brand-sub{font-size:11px;color:var(--muted);margin:2px 0 0}.brand-icon{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);border:1px solid rgba(16,185,129,.25);color:var(--accent)}.brand-icon.small{width:30px;height:30px;border-radius:9px}.login-foot{text-align:center;font-size:11px;margin-top:20px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border-radius:10px;border:1px solid transparent;background:#ffffff0d;color:var(--text);font-size:12.5px;font-weight:600;cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn:hover{background:#ffffff17}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#052e21}.btn-primary:hover{background:#34d399}.btn-ghost{background:transparent;border-color:var(--border);color:var(--muted)}.btn-ghost:hover{color:var(--text);background:#ffffff0a}.btn-block{width:100%;padding:12px;font-size:13px}.input,.select,.textarea{background:var(--bg-soft);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:9px 12px;font-size:12.5px;outline:none;transition:border-color .15s ease}.input:focus,.select:focus,.textarea:focus{border-color:#10b98180}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.textarea{width:100%;min-height:64px;resize:vertical;font-family:inherit}.grow{flex:1}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;border-bottom:1px solid var(--border);background:#0b0f14d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:10}.topbar-left{display:flex;align-items:center;gap:10px}.topbar-title{font-weight:800;font-size:14px;letter-spacing:-.01em}.topbar-right{display:flex;align-items:center;gap:14px}.user-chip{display:flex;align-items:center;gap:10px}.user-chip-text{display:flex;flex-direction:column;line-height:1.15}.user-chip-name{font-size:12.5px;font-weight:700}.user-chip-mail{font-size:10.5px}.avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid var(--border)}.avatar-fallback{display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:14px}.content{flex:1;max-width:1080px;width:100%;margin:0 auto;padding:22px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:2px}.stat-value{font-size:24px;font-weight:800;letter-spacing:-.02em}.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em}.stat-active .stat-value{color:#34d399}.stat-expired .stat-value{color:var(--warn)}.stat-revoked .stat-value{color:var(--danger)}.stat-soon .stat-value{color:#fb923c}.stat-perp .stat-value{color:#818cf8}.stat-issued .stat-value{color:#38bdf8}.tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--border)}.tab{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;background:transparent;border:none;color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s ease}.tab:hover{color:var(--text)}.tab-on{color:var(--accent);border-bottom-color:var(--accent)}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.searchbox{display:flex;align-items:center;gap:8px;background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;padding:0 12px;flex:1;min-width:220px}.searchbox input{background:transparent;border:none;outline:none;color:var(--text);font-size:12.5px;padding:9px 0;width:100%}.search-clear{background:none;border:none;cursor:pointer;color:var(--muted);font-size:11px;padding:2px}.search-clear:hover{color:var(--text)}.issue{margin-left:auto}.issue-panel,.form-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:16px}.issue-row,.form-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.select-sm,.input-sm{padding:5px 8px;font-size:11.5px;border-radius:8px}.input-sm{width:56px;text-align:center}.range-hint{font-size:11px;text-align:right;margin:8px 0 0}.table-wrap{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:12.5px}.table th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:11px 14px;border-bottom:1px solid var(--border);font-weight:600}.table td{padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:middle}.table tbody tr:hover{background:#ffffff05}.table tbody tr:last-child td{border-bottom:none}.row-actions{text-align:right;white-space:nowrap}.empty{text-align:center;padding:26px!important;font-size:12.5px}.th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.th-sortable:hover{color:var(--text)}.th-active{color:var(--accent)!important}.th-inner{display:inline-flex;align-items:center;gap:4px}.th-idle{opacity:.35}.th-nosort{width:44px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;padding:12px 14px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.pagination-left,.pagination-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pagination-total{font-size:12px}.page-size{display:flex;align-items:center;gap:6px;font-size:11.5px}.pg-group{display:inline-flex;align-items:center;gap:3px}.pg-ellipsis{padding:0 2px;font-size:11px}.pg-btn{min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:11.5px;font-weight:600;cursor:pointer;transition:all .15s ease}.pg-btn:hover:not(:disabled){color:var(--text);border-color:#ffffff29}.pg-btn:disabled{opacity:.35;cursor:not-allowed}.pg-active{background:var(--accent);color:#052e21;border-color:var(--accent)}.pg-active:hover{color:#052e21}.pg-jump{display:flex;align-items:center;gap:6px;margin-left:6px;font-size:11.5px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:7px;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;transition:all .15s ease;margin-left:4px;vertical-align:middle}.icon-btn:hover{color:var(--accent);border-color:#10b98166}.icon-btn.danger:hover{color:var(--danger);border-color:#f43f5e66}.badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted);background:#ffffff0a}.badge-active{color:#34d399;border-color:#10b9814d;background:var(--accent-soft)}.badge-expired{color:var(--warn);border-color:#f59e0b4d;background:#f59e0b14}.badge-revoked{color:#fda4af;border-color:#f43f5e4d;background:#f43f5e14}.badge-admin{color:var(--accent);border-color:#10b98159;background:var(--accent-soft)}.analytics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:14px}.analytics-card{display:flex;flex-direction:column}.analytics-card .card-head{margin-bottom:10px}.recent-card{margin-bottom:14px}.bars{display:flex;flex-direction:column;gap:8px;margin-top:2px}.bar-row{display:flex;align-items:center;gap:10px}.bar-label{flex:0 0 110px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-track{flex:1;height:8px;border-radius:999px;background:#ffffff0d;overflow:hidden}.bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),#34d399);transition:width .4s ease}.bar-count{font-size:11.5px;font-weight:700;min-width:22px;text-align:right}.badge-user{color:#7dd3fc;border-color:#38bdf84d;background:#38bdf814}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:14px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.card-title{font-weight:700;font-size:13.5px}.card-meta{display:flex;align-items:center;gap:6px;font-size:11px;margin-top:6px}.card-desc{font-size:12px;line-height:1.5;margin:8px 0 0}.feature-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}.feature-list li{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted)}.feature-list svg{color:var(--accent);flex-shrink:0}.foot{text-align:center;padding:16px;font-size:11px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:center;gap:6px}@media(max-width:640px){.stats{grid-template-columns:repeat(2,1fr)}.user-chip-mail{display:none}.topbar{padding:10px 14px}.content{padding:14px}.bar-label{flex-basis:84px}.pagination{flex-direction:column;align-items:flex-start}}.sidebar-shell{flex-direction:row}.sidebar{width:238px;flex-shrink:0;display:flex;flex-direction:column;background:var(--card);border-right:1px solid var(--border);position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:16px 16px 14px;border-bottom:1px solid var(--border)}.sidebar-brand-text{display:flex;flex-direction:column;line-height:1.2}.sidebar-title{font-weight:800;font-size:13.5px;letter-spacing:-.01em}.sidebar-sub{font-size:10px}.sidebar-nav{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:3px;overflow-y:auto}.sidebar-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 12px;border:none;border-radius:9px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;position:relative;transition:background .15s ease,color .15s ease}.sidebar-item:hover{background:#ffffff0d;color:var(--fg)}.sidebar-item-on{background:#f59e0b1f;color:#fbbf24}.sidebar-item-on:hover{background:#f59e0b29;color:#fbbf24}.sidebar-active-dot{width:6px;height:6px;border-radius:50%;background:#f59e0b;margin-left:auto}.sidebar-foot{padding:12px 14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:10px}.sidebar-role{display:flex}.sidebar-logout{width:100%;justify-content:center}.sidebar-main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar-crumb{font-size:11px}.topbar-live{display:inline-flex;align-items:center;gap:5px;font-size:11px}.page{display:flex;flex-direction:column;gap:16px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:2px}.page-title{font-size:19px;font-weight:800;letter-spacing:-.02em}.page-sub{font-size:12px;display:inline-flex;align-items:center;gap:5px;margin-top:3px}.quick-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:4px}.quick-link{display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer;color:var(--fg);transition:border-color .15s ease,transform .15s ease}.quick-link:hover{border-color:#f59e0b73;transform:translateY(-1px)}.quick-link span{display:flex;flex-direction:column;gap:2px}.quick-link strong{font-size:13px}.quick-link small{font-size:11px}.key-cell{display:inline-flex;align-items:center;gap:6px}.meta-line{display:flex;flex-wrap:wrap;gap:16px;align-items:center;font-size:11.5px}.meta-line span{display:inline-flex;align-items:center;gap:6px}.section-title{font-size:14px;font-weight:800;margin:6px 0 2px;letter-spacing:-.01em}.badge-count{background:#f59e0b24;border:1px solid rgba(245,158,11,.3);color:#fbbf24}.badge-zero{background:#ffffff0a;border:1px solid var(--border);color:var(--muted)}.app-chip{display:inline-block;margin:1px 3px 1px 0;padding:2px 8px;border-radius:999px;background:#6366f11f;border:1px solid rgba(99,102,241,.25);color:#a5b4fc;font-size:10.5px;font-weight:600}.user-name{display:block;font-weight:600;font-size:12.5px}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--border);font-size:12px}.settings-row:last-child{border-bottom:none}.settings-value{font-weight:600;font-size:12px;text-align:right}.settings-actions{margin-top:12px}.err-text{color:#f87171;font-weight:600}
