:root{--bg:#f6f5f2;--panel:#fff;--text:#1d2433;--muted:#6b7280;--line:#e5e3dd;--accent:#1f5f8b;--danger:#b42318;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1,h2{margin:0 0 16px}.layout{min-height:100vh;display:flex}nav{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;gap:4px;width:220px;padding:20px 12px;display:flex}nav .brand{color:var(--accent);margin:0 8px 16px;font-weight:700}nav a{color:var(--text);border-radius:6px;padding:8px;text-decoration:none}nav a.active{color:var(--accent);background:#e8f0f6;font-weight:600}nav .spacer{flex:1}main{flex:1;max-width:1100px;padding:28px}.center{place-items:center;min-height:100vh;padding:16px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:24px}.login{text-align:center;min-width:300px}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--danger);background:#fdecea;border-radius:6px;margin-bottom:12px;padding:8px 12px}.row{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.grow{flex:1;min-width:200px}.tabs{gap:6px;margin-bottom:12px;display:flex}.search{width:100%;margin-bottom:12px}input,select{font:inherit;border:1px solid var(--line);background:#fff;border-radius:6px;padding:7px 10px}button{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:6px;padding:7px 14px}button.secondary{color:var(--text);background:#eceae5}table{border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:8px;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);padding:10px 12px}th{color:var(--muted);font-size:13px;font-weight:600}tr.done td:first-child{color:var(--muted);text-decoration:line-through}td.late{color:var(--danger);font-weight:600}@media (width<=760px){.layout{flex-direction:column}nav{border-right:0;border-bottom:1px solid var(--line);flex-flow:wrap;width:auto}nav .spacer{display:none}main{padding:16px}}
