:root{--bg:#f9fafb;--fg:#101828;--mut:#475467;--card:#fff;--line:#d0d5dd;--acc:#175cd3}
@media (prefers-color-scheme:dark){:root{--bg:#0c111d;--fg:#f2f4f7;--mut:#98a2b3;--card:#161b26;--line:#333741;--acc:#84caff}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.45 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}
header{display:flex;justify-content:space-between;align-items:center;max-width:820px;margin:0 auto;padding:16px}
h1{font-size:24px;margin:0}h2{font-size:19px}main{max-width:820px;margin:0 auto;padding:0 16px 32px}
label{display:block;margin:12px 0;font-weight:600}input{display:block;width:100%;font:inherit;padding:10px;margin-top:4px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--fg)}
button{font:inherit;font-weight:600;padding:10px 16px;border-radius:8px;border:1px solid var(--acc);background:var(--acc);color:#fff;cursor:pointer}
#signout{background:transparent;color:var(--acc)}
#login{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 16px 16px;max-width:420px}
#meta{color:var(--mut);margin:4px 0 12px}#msg{color:#b42318;min-height:1.4em}
iframe{width:100%;height:1100px;border:1px solid var(--line);border-radius:10px;background:#fff}
table{border-collapse:collapse;width:100%;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
th,td{padding:10px 8px;text-align:left;border-top:1px solid var(--line)}th{border-top:0;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut)}
tbody tr{cursor:pointer}tbody tr:hover{background:rgba(23,92,211,.08)}
@media (max-width:520px){iframe{height:1500px}}
/* tabs */
#tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line);margin-bottom:16px;-webkit-overflow-scrolling:touch}
#tabs button{background:transparent;color:var(--mut);border:0;border-bottom:3px solid transparent;border-radius:0;padding:10px 12px;white-space:nowrap}
#tabs button[aria-selected="true"]{color:var(--fg);border-bottom-color:var(--acc)}
#tabs button:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
[role=tabpanel][hidden]{display:none}
#banner{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:12px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
#banner button{padding:6px 12px}
.tablewrap{overflow-x:auto}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:0 0 16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;min-width:0}
.card .k{color:var(--mut);font-size:14px}.card .v{font-size:24px;font-weight:700;margin:2px 0}.card .n{color:var(--mut);font-size:15px;overflow-wrap:anywhere}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.chip{display:inline-block;padding:3px 10px;border-radius:12px;font-size:13px;font-weight:700}
.chip.high{color:#b42318;background:#fee4e2}.chip.medium{color:#93370d;background:#fef0c7}.chip.low{color:#175cd3;background:#d1e9ff}.chip.info{color:#344054;background:#eaecf0}
.chip.new{color:#067647;background:#d1fadf}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.filters button{background:transparent;color:var(--fg);border-color:var(--line);padding:6px 12px}
.filters button[aria-pressed="true"]{background:var(--acc);color:#fff;border-color:var(--acc)}
.fixed{table-layout:fixed}.fixed td{overflow-wrap:anywhere;vertical-align:top}
.sub{color:var(--mut);font-size:15px;display:block}
.err{color:#b42318;font-weight:700}
.projrow td{background:var(--bg);font-weight:700;border-top:2px solid var(--line)}
.hint{color:var(--mut);font-size:14px}
.empty{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px}
@media (prefers-color-scheme:dark){.chip.high{color:#fda29b;background:#55160c}.chip.medium{color:#fec84b;background:#4e1d09}.chip.low{color:#84caff;background:#0b2a4a}.chip.info{color:#d0d5dd;background:#1d2939}.chip.new{color:#6ce9a6;background:#053321}.err{color:#fda29b}}
#banner[hidden]{display:none}
.chip{white-space:nowrap}
