:root{--bg: #f5f6f8;--card: #fff;--text: #1b1f24;--muted: #667085;--border: #dfe3e8;--pass: #15803d;--fail: #b91c1c;--review: #b45309;--pending: #667085;--accent: #2457d6;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #111418;--card: #1a1f26;--text: #e8eaed;--muted: #9aa4b2;--border: #2c333d;--accent: #6b93ff;--pass: #4ade80;--fail: #f87171;--review: #fbbf24}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:var(--accent)}main{max-width:900px;margin:0 auto;padding:16px}h2{margin:8px 0 12px}h3{margin:4px 0 8px}.topbar{display:flex;gap:20px;align-items:center;padding:12px 16px;background:var(--card);border-bottom:1px solid var(--border);flex-wrap:wrap}.topbar nav{display:flex;gap:16px;flex:1}.topbar nav a{text-decoration:none;color:var(--muted)}.topbar nav a.active{color:var(--text);font-weight:600}.banner{background:var(--review);color:#fff;text-align:center;padding:4px;font-size:13px}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:12px}.card.step{border-left:5px solid var(--pending)}.card.step.pass{border-left-color:var(--pass)}.card.step.fail{border-left-color:var(--fail)}.card.step.review{border-left-color:var(--review)}.login{max-width:380px;margin:14vh auto;display:flex;flex-direction:column;gap:14px;text-align:center}.row{display:flex;justify-content:space-between;align-items:center;gap:12px}.row.wrap{flex-wrap:wrap}.grow{flex:1}.stack{display:flex;flex-direction:column;gap:10px}.list,.plain{list-style:none;padding:0;margin:0}.plain li{padding:6px 0;border-top:1px solid var(--border)}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--fail)}.center{display:grid;place-items:center;height:60vh}.pre{white-space:pre-wrap;margin:8px 0}label{display:flex;flex-direction:column;gap:4px;font-size:14px}label.inline{flex-direction:row;align-items:center;gap:6px}input,textarea,select{font:inherit;padding:8px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:inherit;width:100%}input[type=checkbox]{width:auto}button,.btn{font:inherit;padding:7px 14px;border-radius:6px;border:1px solid var(--border);background:var(--card);color:inherit;cursor:pointer;text-decoration:none;display:inline-block}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.link{border:0;background:none;color:var(--accent);padding:4px 8px}.actions{display:flex;gap:8px;align-items:center}.btn-pass.on{background:var(--pass);color:#fff;border-color:var(--pass)}.btn-fail.on{background:var(--fail);color:#fff;border-color:var(--fail)}.btn-review.on{background:var(--review);color:#fff;border-color:var(--review)}.upload{flex-direction:row;cursor:pointer;color:var(--accent);font-weight:600}.badge{padding:2px 10px;border-radius:99px;font-size:12px;font-weight:600;text-transform:uppercase;border:1px solid currentColor;white-space:nowrap}.badge.pass{color:var(--pass)}.badge.fail{color:var(--fail)}.badge.review{color:var(--review)}.badge.pending,.badge.open,.badge.in_progress{color:var(--pending)}.badge.closed{color:var(--muted)}.summary{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.progress-line{display:flex;align-items:center;gap:8px;margin-top:6px;min-width:160px}.progress{flex:1;height:8px;background:var(--border);border-radius:4px;overflow:hidden}.progress>div{height:100%;background:var(--accent)}.tabs{display:flex;gap:8px;margin-bottom:12px}.tabs button.on{background:var(--accent);color:#fff;border-color:var(--accent)}.step-edit{border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:8px}table{border-collapse:collapse}th{text-align:left;padding:4px 24px 4px 0;color:var(--muted);font-weight:600}td{padding:4px 0}.evidence{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-wrap:wrap;gap:12px}.evidence li{display:flex;flex-direction:column;align-items:flex-start;max-width:140px}.evidence a{display:flex;flex-direction:column;gap:4px;text-decoration:none;word-break:break-all}.evidence img{width:140px;height:90px;object-fit:cover;border-radius:6px;border:1px solid var(--border)}.evidence .file{font-size:40px}code{background:var(--bg);padding:1px 6px;border-radius:4px;font-size:12px}.row input,.row select{width:auto;min-width:0}.row input.grow,.row .grow input{width:100%}.row>label.grow{flex:1;min-width:0}.metrics{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.metric{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px 20px;min-width:150px}.metric.alert{border-color:var(--fail)}.metric.alert .metric-value{color:var(--fail)}.metric-value{font-size:32px;font-weight:700;line-height:1.1}.metric-label{color:var(--muted);font-size:13px}.task-link{text-decoration:none;color:inherit}.task-link:hover{text-decoration:underline}.task-meta{display:flex;align-items:center;gap:12px;white-space:nowrap}.overdue{color:var(--fail);font-weight:600}.notice{background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid var(--accent);border-radius:6px;padding:8px 10px;margin:0}.picker{position:relative;min-width:220px}.picker.chosen{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--border);border-radius:6px;padding:6px 8px;background:var(--bg)}.picker-list{position:absolute;z-index:5;left:0;right:0;top:100%;margin:2px 0 0;padding:4px 0;list-style:none;background:var(--card);border:1px solid var(--border);border-radius:6px;max-height:240px;overflow:auto;box-shadow:0 6px 18px #00000040}.picker-list li{padding:6px 10px;cursor:pointer}.picker-list li.on{background:color-mix(in srgb,var(--accent) 18%,transparent)}.topbar{row-gap:8px}.topbar strong,.topbar nav a{white-space:nowrap}.topbar nav{flex:1 1 auto;flex-wrap:wrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px;margin-bottom:12px}.charts .card{margin-bottom:0;min-width:0}.chart-title{margin:0 0 8px;font-size:15px}.chart-box{position:relative}.chart-box svg{display:block;max-width:100%;outline-offset:2px}.legend{display:flex;gap:14px;font-size:12px;color:var(--muted);margin-bottom:4px}.key{display:inline-block;width:14px;height:3px;border-radius:2px;vertical-align:middle;margin-right:4px}.tooltip{position:absolute;z-index:4;pointer-events:none;background:var(--card);border:1px solid var(--border);border-radius:6px;padding:6px 10px;box-shadow:0 6px 18px #00000040;font-size:13px;min-width:120px}.table-view{margin-top:8px;font-size:13px}.table-view summary{cursor:pointer;color:var(--muted)}.table-scroll{overflow:auto;max-height:320px}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;color:var(--muted);font-weight:600;padding:6px 12px 6px 0;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--card)}table.data td{padding:6px 12px 6px 0;border-bottom:1px solid var(--border)}table.data .num{text-align:right;font-variant-numeric:tabular-nums;padding-right:0}.badge.next{color:var(--accent)}.next-owner{border-left:5px solid var(--accent)}.env-banner{position:sticky;top:0;z-index:20;text-align:center;font-size:12px;padding:4px 8px;color:#fff;letter-spacing:.03em}.env-banner strong{letter-spacing:.08em;margin-right:6px}.env-banner.dev{background:#6d28d9}.env-banner.qa{background:#c2410c}
