:root{--ink:#1b2430;--muted:#5b6675;--paper:#f6f7f9;--card:#fff;--line:#d9dee5;--accent:#0f766e;--accent-ink:#fff;
--warn:#b45309;--warn-bg:#fef3c7;--bad:#b42318;--bad-bg:#fee4e2;--ok:#067647;--ok-bg:#dcfae6;--info-bg:#e6eef8;--info:#1d4ed8}
@media (prefers-color-scheme:dark){:root{--ink:#e6e9ee;--muted:#9aa5b4;--paper:#12171d;--card:#1a212a;--line:#2c3541;--accent:#2dd4bf;--accent-ink:#06201d;
--warn:#fbbf24;--warn-bg:#3a2a08;--bad:#fda29b;--bad-bg:#3b1512;--ok:#6ce9a6;--ok-bg:#0c2d1c;--info-bg:#172338;--info:#93c5fd}}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--accent)}
header.top{background:var(--ink);color:var(--paper);display:flex;align-items:center;gap:1.5rem;padding:.6rem 1.25rem;flex-wrap:wrap}
header.top strong{font-size:1.05rem;letter-spacing:.02em}
header.top nav{display:flex;gap:.25rem;flex-wrap:wrap;flex:1}
header.top nav a{color:inherit;text-decoration:none;padding:.3rem .7rem;border-radius:6px;opacity:.85}
header.top nav a:hover,header.top nav a.on{background:rgba(255,255,255,.14);opacity:1}
header.top form{margin:0}
main{max-width:1180px;margin:0 auto;padding:1.5rem 1.25rem 4rem}
h1{font-size:1.5rem;margin:.2rem 0 1rem}h2{font-size:1.1rem;margin:2rem 0 .6rem}
.flash{padding:.6rem .9rem;border-radius:8px;margin-bottom:1rem;background:var(--ok-bg);color:var(--ok)}
.flash.err{background:var(--bad-bg);color:var(--bad)}
table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:8px;overflow:hidden}
th,td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--line);vertical-align:top}
th{font-weight:600;font-size:.85rem;color:var(--muted);background:var(--paper)}
tr:last-child td{border-bottom:0}
td.mono,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}
.scroll{overflow-x:auto}
.badge{display:inline-block;padding:.05rem .55rem;border-radius:999px;font-size:.8rem;font-weight:600;background:var(--info-bg);color:var(--info)}
.badge.approved,.badge.accept{background:var(--ok-bg);color:var(--ok)}
.badge.pending{background:var(--warn-bg);color:var(--warn)}
.badge.blocked,.badge.reject,.badge.rejected{background:var(--bad-bg);color:var(--bad)}
.badge.expired,.badge.discovered{background:var(--paper);color:var(--muted);border:1px solid var(--line)}
.stats{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:.6rem 1rem;min-width:120px;text-decoration:none;color:inherit}
.stat b{display:block;font-size:1.6rem;line-height:1.2}.stat span{color:var(--muted);font-size:.85rem}
.stat.hot{border-color:var(--warn)}
form.card,.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:1rem}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}
label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.15rem}
input,select,textarea{width:100%;padding:.45rem .6rem;border:1px solid var(--line);border-radius:6px;background:var(--paper);color:var(--ink);font:inherit}
textarea{min-height:5rem;font-family:ui-monospace,Menlo,monospace;font-size:.88rem}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button,.btn{padding:.45rem .9rem;border-radius:6px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;cursor:pointer;text-decoration:none;display:inline-block}
button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
button.danger{color:var(--bad);border-color:var(--bad)}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:end}
.actions form{display:flex;gap:.5rem;align-items:end;flex-wrap:wrap;margin:0}
.filters{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.filters input{max-width:260px}.filters select{max-width:180px}
dl.kv{display:grid;grid-template-columns:150px 1fr;gap:.35rem .75rem;margin:0}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0}
.muted{color:var(--muted)}.pager{margin-top:1rem;display:flex;gap:.5rem}
.login{max-width:340px;margin:12vh auto}
.note{font-size:.85rem;color:var(--muted);margin:.3rem 0}
details summary{cursor:pointer;margin:1rem 0 .5rem;font-weight:600}
@media (max-width:640px){dl.kv{grid-template-columns:1fr}}
