:root{--bg:#f6f7f9;--panel:#fff;--text:#1c2430;--muted:#5d6b7c;--line:#dfe3e8;--brand:#234e8c;--brand-ink:#fff;--ok:#1f7a4d;--warn:#a15c00;--bad:#b3261e;--chip:#eaf0f8;--radius:8px}@media (prefers-color-scheme:dark){:root{--bg:#12161c;--panel:#1a2029;--text:#e6eaf0;--muted:#97a3b3;--line:#2b3441;--brand:#6ea0e6;--brand-ink:#0d1117;--ok:#52c08a;--warn:#e0a24b;--bad:#f08a83;--chip:#232d3b}}*{box-sizing:border-box}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){html{--lightningcss-light: ;--lightningcss-dark:initial}}body{background:var(--bg);color:var(--text);margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1{margin:0 0 4px;font-size:1.5rem}h2{margin:0 0 12px;font-size:1.1rem}h3{margin:16px 0 8px;font-size:.95rem}.muted{color:var(--muted)}.small{font-size:.85rem}nav.top{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px 18px;padding:10px 20px;display:flex}nav.top .brand{color:var(--text);margin-right:8px;font-weight:700}nav.top .spacer{flex:1}nav.top form{display:inline}main{max-width:1180px;margin:0 auto;padding:20px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;padding:16px}.grid{gap:16px;display:grid}.cols-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.stats{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);min-width:110px;color:var(--text);padding:10px 14px}.stat b{font-size:1.4rem;display:block}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 10px}th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.8rem;font-weight:600}.table-wrap{overflow-x:auto}label{color:var(--muted);margin-bottom:4px;font-size:.85rem;display:block}input,select,textarea{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--text);font:inherit;border-radius:6px;padding:8px 10px}textarea{resize:vertical;min-height:80px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:end;gap:12px;display:grid}.form-grid .wide{grid-column:1/-1}button,.button{border:1px solid var(--brand);background:var(--brand);color:var(--brand-ink);font:inherit;cursor:pointer;border-radius:6px;padding:8px 14px;text-decoration:none;display:inline-block}button.secondary,.button.secondary{color:var(--brand);background:0 0}button.danger{color:var(--bad);border-color:var(--bad);background:0 0}button.small{padding:3px 9px;font-size:.85rem}.inline-form{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.inline-form select{width:auto}.badge{background:var(--chip);border-radius:999px;margin-right:4px;padding:1px 8px;font-size:.8rem;display:inline-block}.badge.ok{color:var(--ok)}.badge.warn{color:var(--warn)}.badge.bad{color:var(--bad)}.flash{border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);margin-bottom:16px;padding:10px 14px}.flash.err{border-color:var(--bad);color:var(--bad)}.flash.msg{border-color:var(--ok);color:var(--ok)}.board{grid-auto-columns:minmax(230px,1fr);grid-auto-flow:column;gap:12px;padding-bottom:8px;display:grid;overflow-x:auto}.column{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px}.column h3{justify-content:space-between;margin-top:0;display:flex}.card{border:1px solid var(--line);background:var(--bg);border-radius:6px;margin-bottom:8px;padding:8px}.card .name{font-weight:600}.overdue{color:var(--bad);font-weight:600}.center{max-width:420px;margin:8vh auto}.codes{columns:2;background:var(--bg);border:1px dashed var(--line);border-radius:6px;padding:12px;font-family:ui-monospace,Menlo,Consolas,monospace}details summary{cursor:pointer;color:var(--brand)}.row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.task-done{color:var(--muted);text-decoration:line-through}@media (max-width:640px){main{padding:12px}th,td{padding:6px}}
