:root{--bg:#f4f5f7;--card:#fff;--text:#1b1f24;--muted:#667085;--border:#e3e6ea;--accent:#c8102e;--ok:#1a7f4b;--warn:#8a5a0b;--err:#c0262d}@media (prefers-color-scheme:dark){:root{--bg:#14171b;--card:#1c2025;--text:#e8eaed;--muted:#98a2b3;--border:#2d333b}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.topbar{background:var(--card);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.brand{font-weight:700}.brand span{color:var(--accent)}main{max-width:1100px;margin:0 auto;padding:24px 20px}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:20px}.login-wrap{place-items:center;min-height:100vh;padding:20px;display:grid}.login-card{width:100%;max-width:380px}label{color:var(--muted);margin:14px 0 4px;font-size:13px;display:block}input{width:100%;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px}input:focus{outline:2px solid var(--accent);outline-offset:1px}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;padding:9px 14px}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;width:100%;margin-top:20px;font-weight:600}button:disabled{opacity:.6;cursor:wait}.error{color:var(--err);margin-top:12px;font-size:14px}.muted{color:var(--muted)}.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:16px;display:grid}.stat b{font-size:28px;display:block}.card.spaced{margin-top:16px}.topbar nav{flex:1;gap:16px;margin-left:24px;display:flex}.topbar a,main a{color:var(--accent);text-decoration:none}.topbar a:hover,main a:hover{text-decoration:underline}button.primary.inline{width:auto;margin-top:16px;padding:9px 18px}input[type=file]{padding:8px}.actions{align-items:flex-start;gap:10px;margin-top:8px;display:flex}.meta{grid-template-columns:max-content 1fr;gap:4px 16px;margin:16px 0;display:grid}.meta dt{color:var(--muted)}.meta dd{margin:0}.notice{border-left:3px solid var(--warn);background:var(--bg);border-radius:6px;margin:12px 0;padding:10px 14px}.notice ul{margin:6px 0 0;padding-left:20px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px}th{color:var(--muted);font-weight:600}.badge{border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px}.badge.ok{color:var(--ok);border-color:var(--ok)}.badge.warn{color:var(--warn);border-color:var(--warn)}.badge.muted{color:var(--muted)}h1,h2,h3{margin:0 0 8px}h2{font-size:18px}h3{margin-top:16px;font-size:15px}:root{--ok-bg:#e6f4ec;--warn-bg:#fbf1dc;--err-bg:#fbe6e7;--miss-bg:#eceef1;--miss:#667085}@media (prefers-color-scheme:dark){:root{--ok:#4cc38a;--warn:#e0a93b;--err:#f06a70;--ok-bg:#16352a;--warn-bg:#3a3017;--err-bg:#3d1e21;--miss-bg:#262b32;--miss:#98a2b3}}.dash-head{margin-bottom:16px}.stat.ok b{color:var(--ok)}.stat.err b{color:var(--err)}.stat.warn b{color:var(--warn)}.filters{flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin:16px 0 12px;padding:14px 16px;display:flex}.filters>div{flex:150px}.filters label{margin-top:0}.filters .filter-actions{flex:none;align-items:center;gap:12px;display:flex}.filters button.primary.inline{margin-top:0}select{width:100%;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 18px;margin:8px 0;padding:0;font-size:13px;list-style:none;display:flex}.dot{border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.count{margin:4px 0 12px;font-size:13px}.grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.pcard{background:var(--card);border:1px solid var(--border);border-top:3px solid var(--err);border-radius:10px;padding:12px 14px;display:block;color:inherit!important;text-decoration:none!important}.pcard.is-ok{border-top-color:var(--ok)}.pcard:hover{box-shadow:0 2px 10px #0000001f}.pcard:focus-visible{outline:2px solid var(--accent)}.pcard-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.pname{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.avatar{border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:13px;font-weight:700;display:grid}.pill{border-radius:6px;padding:2px 10px;font-size:12px;font-weight:600}.pill.ok{color:var(--ok);background:var(--ok-bg)}.pill.err{color:var(--err);background:var(--err-bg)}.rows{margin:0}.row{justify-content:space-between;align-items:center;padding:4px 0;font-size:14px;display:flex}.row dt{color:var(--muted)}.row dd{margin:0}.date{border-radius:6px;padding:2px 8px;font:600 13px ui-monospace,SFMono-Regular,Menlo,monospace;display:inline-block}.st-valid{color:var(--ok);background:var(--ok-bg)}.dot.st-valid{background:var(--ok)}.st-expiring{color:var(--warn);background:var(--warn-bg)}.dot.st-expiring{background:var(--warn)}.st-expired{color:var(--err);background:var(--err-bg)}.dot.st-expired{background:var(--err)}.st-missing{color:var(--miss);background:var(--miss-bg)}.dot.st-missing{background:var(--miss)}.split{justify-content:space-between;align-items:center;gap:12px;display:flex}td .date{padding:1px 6px}.filters .reset{color:var(--muted)}.topbar nav a{color:var(--text);font-weight:500}.topbar nav a:hover{color:var(--accent)}.topbar form{align-items:center;gap:8px;display:flex}@media (max-width:640px){.topbar{flex-wrap:wrap;gap:8px 12px;padding:10px 16px}.topbar nav{flex-basis:100%;order:3;margin-left:0}main{padding:16px}h1{font-size:22px}}.token-form{flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin-top:12px;display:flex}.token-form>div{flex:200px}.token-form label,.token-form button.primary.inline{margin-top:0}.secret{border-left-color:var(--ok);margin-top:16px}.secret-value{word-break:break-all;background:var(--bg);-webkit-user-select:all;user-select:all;border-radius:6px;padding:10px;font:13px ui-monospace,Menlo,monospace}code{background:var(--bg);border-radius:4px;padding:1px 6px;font-size:13px}.badge.err{color:var(--err);border-color:var(--err)}.kiosk{background:var(--bg);height:100vh;color:var(--text);flex-direction:column;padding:1.2vh 1.2vw;display:flex;overflow:hidden}.kiosk.theme-light{--bg:#f4f5f7;--card:#fff;--text:#1b1f24;--muted:#667085;--border:#e3e6ea;--ok:#1a7f4b;--warn:#8a5a0b;--err:#c0262d;--ok-bg:#e6f4ec;--warn-bg:#fbf1dc;--err-bg:#fbe6e7;--miss-bg:#eceef1;--miss:#667085}.kiosk.theme-dark{--bg:#14171b;--card:#1c2025;--text:#e8eaed;--muted:#98a2b3;--border:#2d333b;--ok:#4cc38a;--warn:#e0a93b;--err:#f06a70;--ok-bg:#16352a;--warn-bg:#3a3017;--err-bg:#3d1e21;--miss-bg:#262b32;--miss:#98a2b3}.k-head{flex:none;justify-content:space-between;align-items:center;gap:2vw;display:flex}.k-title h1{margin:0;font-size:clamp(18px,2.6vw,44px)}.k-title p{color:var(--muted);margin:.2em 0 0;font-size:clamp(11px,1.1vw,20px)}.k-stats{gap:1.6vw;display:flex}.k-stats>div{background:var(--card);border:1px solid var(--border);text-align:center;border-radius:.6vw;padding:.5vh 1.2vw}.k-stats b{font-size:clamp(20px,2.6vw,48px);line-height:1.1;display:block}.k-stats b.ok{color:var(--ok)}.k-stats b.err{color:var(--err)}.k-stats span{color:var(--muted);font-size:clamp(10px,1vw,18px)}.k-clock{text-align:right;color:var(--muted);font-family:ui-monospace,Menlo,monospace;font-size:clamp(11px,1.2vw,22px)}.k-clock b{color:var(--text);font-size:clamp(20px,2.4vw,44px);display:block}.kiosk .legend{flex:none;margin:.6vh 0;font-size:clamp(10px,.9vw,16px)}.k-grid{--cols:8;--fs:12px;grid-template-columns:repeat(var(--cols), 1fr);min-height:0;font-size:var(--fs);flex:1;grid-auto-rows:1fr;gap:.6em;display:grid}.k-grid .pcard{border-top-width:.2em;border-radius:.6em;min-width:0;padding:.7em .8em;overflow:hidden}.k-grid .pcard:hover{box-shadow:none}.k-grid .pcard-head{gap:.6em;margin-bottom:.5em}.k-grid .avatar{width:2.3em;height:2.3em;font-size:.8em}.k-grid .pname{font-size:1.05em}.k-grid .pill{padding:.15em .6em;font-size:.75em}.k-grid .row{padding:.18em 0;font-size:.95em}.k-grid .date{border-radius:.35em;padding:.1em .45em;font-size:.9em}.k-empty{text-align:center;color:var(--muted);margin:auto}
