:root{--bg:#f5f7fa;--surface:#ffffff;--surface-2:#f0f3f8;--border:#dce3ec;--ink:#16243a;--muted:#5d6b82;--accent:#2f6fdd;--accent-ink:#ffffff;--danger:#c23a3a;--danger-bg:#fcebeb;--ok:#1f9d55;--ok-bg:#e7f6ee;--warn:#b7791f;--warn-bg:#fbf3e2;--radius:10px;--shadow:0 1px 2px rgba(16,36,66,0.06),0 6px 20px rgba(16,36,66,0.06);--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#0e1726;--surface:#152034;--surface-2:#1b2840;--border:#273650;--ink:#e7edf6;--muted:#93a2bc;--accent:#5a8ff0;--accent-ink:#0b1220;--danger:#f08a8a;--danger-bg:#3a1f22;--ok:#67d19a;--ok-bg:#16311f;--warn:#e6c069;--warn-bg:#352a16;--shadow:0 1px 2px rgba(0,0,0,0.3),0 6px 20px rgba(0,0,0,0.3)}}*{box-sizing:border-box;margin:0;padding:0}body,html{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-header{display:flex;align-items:center;gap:24px;padding:0 24px;height:56px;background:var(--surface);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:10}.app-header .brand{font-weight:700;letter-spacing:-.01em;color:var(--ink);display:inline-flex}.app-header .brand:hover{text-decoration:none}.brand-lockup{display:inline-flex;align-items:center;gap:9px;color:var(--ink)}.brand-mark{display:block;flex:none}.brand-word{font-weight:700;font-size:16px;letter-spacing:-.01em}.brand-tag{font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:2px 7px;border:1px solid var(--border);border-radius:999px;line-height:1.4}.app-header nav{display:flex;gap:4px}.app-header nav a{color:var(--muted);padding:6px 12px;border-radius:8px;font-weight:500}.app-header nav a:hover{background:var(--surface-2);text-decoration:none;color:var(--ink)}.app-header .spacer{flex:1 1}main{max-width:1120px;margin:0 auto;padding:28px 24px 64px}.page-head{display:flex;align-items:center;gap:16px;margin-bottom:20px}.page-head h1{font-size:22px;font-weight:700;letter-spacing:-.01em}.page-head .spacer{flex:1 1}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel+.panel{margin-top:24px}.panel-head{padding:14px 18px;border-bottom:1px solid var(--border);font-weight:600}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}td,th{text-align:left;padding:11px 18px;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}.mono,td.mono{font-family:var(--mono);font-size:13px}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.6}.badge.active{background:var(--ok-bg);color:var(--ok)}.badge.revoked{background:var(--danger-bg);color:var(--danger)}.badge.expired,.badge.stale{background:var(--warn-bg);color:var(--warn)}.badge.released,.chip{background:var(--surface-2);color:var(--muted)}.chip{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:999px;font-size:13px;font-weight:600;border:1px solid var(--border)}.chip .dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.chip.ok{color:var(--ok)}.chip.ok .dot{background:var(--ok)}.chip.down{color:var(--danger)}.chip.down .dot{background:var(--danger)}.form{display:grid;grid-gap:18px;gap:18px;padding:20px;max-width:520px}.field{display:grid;grid-gap:6px;gap:6px}.field label{font-weight:600;font-size:13px}.field input,.field select{padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}.field input:focus,.field select:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}.field .hint{color:var(--muted);font-size:12px}.field .err{color:var(--danger);font-size:12px}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}.btn:hover{background:var(--surface-2);text-decoration:none}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.primary:hover{filter:brightness(1.05)}.btn.danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn:disabled{opacity:.6;cursor:not-allowed}.notice{padding:14px 18px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface)}.notice.error{border-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.empty{padding:40px 18px;text-align:center;color:var(--muted)}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--border) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:6px;height:14px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.dl{display:grid;grid-template-columns:160px 1fr;grid-gap:10px 20px;gap:10px 20px;padding:20px;font-size:14px}.dl dt{color:var(--muted);font-weight:600}.toolbar{display:flex;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap}.toolbar input,.toolbar select{padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}.auth-shell{min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(900px 520px at 50% -10%,#1b2840,transparent 70%),#0e1726}.auth-card{--surface:#152034;--surface-2:#1b2840;--border:#273650;--ink:#e7edf6;--muted:#93a2bc;--accent:#5a8ff0;--accent-ink:#0b1220;width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 2px rgba(0,0,0,.3),0 10px 34px rgba(0,0,0,.35);padding:30px 28px 24px;color:var(--ink)}.auth-brand{display:flex;align-items:center}.auth-logo{height:26px;width:auto;display:block}.auth-sub{margin-top:10px;color:var(--muted);font-size:14px}.auth-form{display:grid;grid-gap:16px;gap:16px;margin-top:22px}.auth-form .btn{justify-content:center;width:100%;padding:10px 16px}.app-header .btn.logout{padding:6px 12px;font-size:13px;font-weight:600}