:root{--ink: #1c2126;--ink-soft: #4b5561;--paper: #f5f4f1;--card: #ffffff;--line: #e2e0da;--signal: #f26a1b;--signal-ink: #b34400;--ok: #2e7d43;--warn: #b98900;--bad: #c23934;--radius: 10px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-size:15px;line-height:1.5}h1{font-size:22px;letter-spacing:-.01em}h2{font-size:17px}a{color:inherit}.hazard{height:6px;background:repeating-linear-gradient(135deg,var(--signal) 0 14px,var(--ink) 14px 28px)}.topbar{background:var(--ink);color:#fff;display:flex;align-items:center;gap:16px;padding:12px 20px}.topbar .brand{font-weight:700;letter-spacing:.02em}.topbar .brand span{color:var(--signal)}.topbar nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}.topbar nav a{color:#cfd4da;text-decoration:none;padding:6px 12px;border-radius:6px;font-size:14px}.topbar nav a.router-link-active{color:#fff;background:#ffffff1f}.topbar .who{font-size:13px;color:#9aa3ad}.topbar button{background:none;border:1px solid #4b5561;color:#cfd4da;border-radius:6px;padding:5px 10px;cursor:pointer}.page{max-width:960px;margin:0 auto;padding:20px 16px 60px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:12px}.card.clickable{cursor:pointer;transition:border-color .15s}.card.clickable:hover{border-color:var(--signal)}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.grow{flex:1;min-width:200px}.muted{color:var(--ink-soft);font-size:13px}.chip{display:inline-block;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;white-space:nowrap}.chip.assigned{background:#eceff3;color:var(--ink-soft)}.chip.in_progress{background:#fdeadd;color:var(--signal-ink)}.chip.test_passed{background:#fff3cd;color:var(--warn)}.chip.failed{background:#fdecea;color:var(--bad)}.chip.overdue{background:var(--bad);color:#fff}.chip.signed{background:#e4f2e8;color:var(--ok)}.chip.pending{background:#eceff3;color:var(--ink-soft)}.chip.draft{background:#fff3cd;color:var(--warn)}.chip.completed{background:#e4f2e8;color:var(--ok)}.chip.report_attached{background:#fdeadd;color:var(--signal-ink)}button.primary{background:var(--signal);color:#fff;border:none;border-radius:8px;padding:10px 18px;font-size:15px;font-weight:600;cursor:pointer}button.primary:disabled{opacity:.5;cursor:default}button.ghost{background:none;border:1px solid var(--line);border-radius:8px;padding:9px 16px;font-size:14px;cursor:pointer;color:var(--ink)}input,select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:15px;background:#fff;color:var(--ink)}input:focus,select:focus,button:focus-visible{outline:2px solid var(--signal);outline-offset:1px}label{display:block;font-size:13px;color:var(--ink-soft);margin:12px 0 4px}.error{color:var(--bad);font-size:14px;margin-top:8px}.demo-note{background:repeating-linear-gradient(135deg,#fdeadd 0,#fdeadd 14px,#fff6ef 14px,#fff6ef 28px);border:1px solid var(--signal);border-radius:8px;padding:8px 12px;font-size:13px;color:var(--signal-ink);margin:12px 0}.q{border-top:1px solid var(--line);padding:14px 0}.q .opts label{display:flex;align-items:center;gap:10px;margin:6px 0;font-size:15px;color:var(--ink);padding:8px 10px;border:1px solid var(--line);border-radius:8px;cursor:pointer}.q .opts label:has(input:checked){border-color:var(--signal);background:#fff6ef}.q .opts input{width:auto}table.registry{width:100%;border-collapse:collapse;font-size:14px}table.registry th{text-align:left;color:var(--ink-soft);font-weight:600;padding:8px;border-bottom:2px solid var(--line)}table.registry td{padding:8px;border-bottom:1px solid var(--line)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:16px}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.stat .num{font-size:26px;font-weight:700}.stat.accent .num{color:var(--signal)}@media (max-width: 640px){.topbar{flex-wrap:wrap}.page{padding:14px 10px 40px}}@media (prefers-reduced-motion: reduce){*{transition:none!important}}
