:root{color-scheme:light;--bg:#f3f6fa;--panel:#fff;--panel2:#f8fafc;--text:#142033;--muted:#69778b;--line:#dbe3ec;--brand:#2563eb;--good:#16835b;--bad:#c33d4e;--warn:#a96800;--shadow:0 12px 35px rgba(25,44,74,.08)}
:root[data-theme=dark]{color-scheme:dark;--bg:#0c111b;--panel:#141c29;--panel2:#192434;--text:#e9eef7;--muted:#9caabd;--line:#2a384c;--brand:#76a7ff;--good:#52d39e;--bad:#ff7d8d;--warn:#ffc15c;--shadow:0 16px 42px rgba(0,0,0,.3)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}button,input,select{font:inherit}.topbar{height:90px;padding:18px max(24px,calc((100vw - 1240px)/2));display:flex;align-items:center;justify-content:space-between;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.topbar h1{font-size:20px;margin:3px 0;letter-spacing:.04em}.eyebrow,.project-key{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.13em}.top-actions,.card-actions{display:flex;gap:8px}.container{max-width:1240px;margin:auto;padding:28px 20px 70px}.summary{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.summary>div,.project-card,.filters,.history-table{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.summary>div{padding:16px 18px;display:flex;flex-direction:column}.summary b{font-size:25px}.summary span,.metrics span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.tabs{display:flex;gap:8px;margin:28px 0 16px;border-bottom:1px solid var(--line)}.tabs button{border:0;background:transparent;color:var(--muted);padding:11px 14px}.tabs button.active{color:var(--brand);border-bottom:2px solid var(--brand)}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.project-card{padding:20px;min-width:0}.card-head,.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.card-head h2{margin:4px 0 16px;font-size:21px}.badge{display:inline-flex;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;background:var(--panel2);color:var(--muted)}.badge.passed{background:color-mix(in srgb,var(--good) 15%,transparent);color:var(--good)}.badge.failed,.badge.error{background:color-mix(in srgb,var(--bad) 15%,transparent);color:var(--bad)}.badge.running,.badge.queued{background:color-mix(in srgb,var(--brand) 15%,transparent);color:var(--brand)}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px 0;border-block:1px solid var(--line)}.metrics>div{display:flex;flex-direction:column;min-width:0}.metrics b{overflow:hidden;text-overflow:ellipsis}.suite-list{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0}.suite{padding:5px 7px;border-radius:6px;background:var(--panel2);color:var(--muted);font-size:11px}.suite.configured{color:var(--good);border:1px solid color-mix(in srgb,var(--good) 30%,transparent)}button{cursor:pointer;border:1px solid var(--brand);background:var(--brand);color:#fff;border-radius:8px;padding:9px 12px;font-weight:700}button.ghost{background:transparent;color:var(--text);border-color:var(--line)}button:disabled{opacity:.42;cursor:not-allowed}.alert{padding:10px 12px;border-radius:8px;margin:8px 0}.alert.warning{background:color-mix(in srgb,var(--warn) 13%,transparent);color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent)}.alert.danger{background:#fee2e2;color:#991b1b}.filters{display:flex;gap:10px;padding:14px;margin-bottom:14px}.filters input,.filters select,.login-card input{min-width:0;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);color:var(--text)}.history-table{overflow:hidden}.history-table>button{display:grid;grid-template-columns:1.3fr 1fr .7fr .8fr .7fr 1.3fr;width:100%;text-align:left;background:transparent;color:var(--text);border:0;border-bottom:1px solid var(--line);border-radius:0;align-items:center}.history-table>button:hover{background:var(--panel2)}dialog{width:min(850px,calc(100% - 24px));max-height:90vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:0 24px 80px #0006}dialog::backdrop{background:#06101dcc}.dialog-close{float:right;background:transparent;color:var(--muted);border:0;font-size:24px}.test-list>div{display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.test-list small{grid-column:2/-1;color:var(--muted)}.test-icon{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--panel2)}.test-icon.passed{color:var(--good)}.test-icon.failed,.test-icon.error{color:var(--bad)}pre{white-space:pre-wrap;word-break:break-word;background:#080d15;color:#dbe7f7;padding:14px;border-radius:8px;max-height:360px;overflow:auto}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(390px,100%);background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:30px;box-shadow:var(--shadow)}.login-card h1{margin-bottom:0}.login-card p{color:var(--muted);margin-top:4px}.login-card label{display:grid;gap:6px;margin:16px 0}.login-card button{width:100%}.brand-mark{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:var(--brand);color:#fff;font-weight:900}.loading{padding:40px;color:var(--muted)}
@media(max-width:900px){.project-grid{grid-template-columns:1fr}.summary{grid-template-columns:repeat(3,1fr)}.history-table>button{grid-template-columns:1fr 1fr .7fr}.history-table time,.history-table>button>span:nth-of-type(4),.history-table>button>span:nth-of-type(5){display:none}}
@media(max-width:560px){.topbar{height:76px;padding:14px 16px}.topbar h1{font-size:16px}.container{padding:18px 12px 50px}.summary{grid-template-columns:1fr 1fr}.summary>div:first-child{grid-column:1/-1}.filters{display:grid;grid-template-columns:1fr 1fr}.card-actions{display:grid;grid-template-columns:1fr 1fr}.metrics{gap:10px}.suite-list{max-height:105px;overflow:auto}}
.last-run{color:var(--muted);font-size:12px;margin:12px 0 0}
