:root{--bg:#f4f6f8;--panel:#fff;--text:#1f2937;--muted:#64748b;--line:#dbe3ec;--primary:#2563eb;--primary-dark:#1d4ed8;--sidebar:#111827;--success:#0f766e;--danger:#b91c1c;--shadow:0 10px 26px rgba(15,23,42,.08)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{padding:24px 18px;background:var(--sidebar);color:#e5e7eb}.brand{display:flex;align-items:center;gap:12px;margin-bottom:30px;color:inherit;text-decoration:none}.brand-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:10px;background:var(--primary);color:#fff;font-weight:900}.brand strong,.brand small{display:block}.brand small{margin-top:3px;color:#aab2c0}.main-nav{display:grid;gap:7px}.main-nav a{padding:12px;border-radius:8px;color:inherit;text-decoration:none}.main-nav a:hover{background:#ffffff18}.main-nav a.is-active{background:var(--primary)}.content{padding:32px;min-width:0}.page-header{margin-bottom:24px}.eyebrow{margin:0 0 6px;color:var(--muted);font-size:13px;font-weight:700;text-transform:uppercase}h1{margin:0;font-size:32px}h2{margin-top:0;font-size:20px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.metric-card,.panel,.form-panel,.table-panel,.empty-state,.day-card,.task-card,.toolbar{background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.metric-card{padding:18px}.metric-card span,.hint,small{color:var(--muted)}.metric-card strong{display:block;margin-top:10px;font-size:30px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;padding:18px 20px}.toolbar p{margin:0;color:var(--muted)}.button-row{display:flex;align-items:center;flex-wrap:wrap;gap:9px}.button-row form{margin:0}.button-row.end{justify-content:flex-end}.button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}.button.primary{border-color:var(--primary);background:var(--primary);color:#fff}.button.primary:hover{background:var(--primary-dark)}.button.success{border-color:#99f6e4;background:#ecfdf5;color:#115e59}.button.danger{color:var(--danger)}.button.small{min-height:34px;padding:0 10px;font-size:14px}.flash-list{display:grid;gap:8px;margin-bottom:16px}.flash{padding:12px 14px;border:1px solid #bfdbfe;border-radius:8px;background:#eff6ff}.flash.success{border-color:#99f6e4;background:#ecfdf5;color:#115e59}.flash.error{border-color:#fecaca;background:#fef2f2;color:#991b1b}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.task-card{display:flex;justify-content:space-between;gap:14px;padding:18px}.task-card.done{opacity:.68}.task-card h2{margin:12px 0 6px}.task-card p{margin:0;color:var(--muted)}.person-dot{display:inline-block;width:12px;height:12px;margin-right:7px;border-radius:50%}.empty-state{padding:38px;text-align:center}.split{display:grid;grid-template-columns:minmax(260px,.65fr) minmax(0,1.35fr);gap:16px}.form-panel{display:grid;align-content:start;gap:16px;padding:22px}.form-panel.narrow{max-width:650px}.quick-form{grid-template-columns:2fr .6fr 1fr 1fr auto;align-items:end}.quick-form h2{grid-column:1/-1}.panel{padding:22px}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.badge,.status{display:inline-flex;padding:6px 10px;border-radius:999px;background:#e5e7eb;font-size:13px;font-weight:800}.status.active{background:#dcfce7;color:#166534}.list{display:grid}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border:0}.list-row small{display:block;margin-top:4px}.link-row{color:inherit;text-decoration:none}.section-gap{margin-top:16px}.table-panel{overflow-x:auto}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:14px 16px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.data-table th{color:var(--muted);font-size:13px;text-transform:uppercase}.data-table td span{display:block;margin-top:4px}.data-table tr:last-child td{border:0}label{display:grid;gap:7px;color:var(--muted);font-size:14px;font-weight:700}input,select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);font:inherit}.check{display:flex;align-items:center}.check input{width:auto}.inline{display:flex;align-items:center;gap:8px}.inline select{width:auto}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(210px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}.day-card{min-width:210px;overflow:hidden}.day-card>header{display:flex;justify-content:space-between;padding:14px;background:#f8fafc;border-bottom:1px solid var(--line)}.person-block{padding:12px;border-bottom:1px solid var(--line)}.person-block:last-child{border:0}.person-block h3{margin:0 0 8px;font-size:15px}.person-block form{margin:6px 0}.assignment{display:grid;grid-template-columns:20px 1fr;gap:7px;width:100%;padding:9px;border:1px solid var(--line);border-radius:8px;background:#fff;text-align:left;cursor:pointer}.assignment:hover{border-color:var(--primary)}.assignment.done{background:#ecfdf5;text-decoration:line-through;opacity:.72}.assignment strong,.assignment small{display:block}.assignment small{margin-top:3px}.day-card>.hint{padding:12px}.flash,.button,.assignment{transition:.15s ease}@media(max-width:1000px){.app-shell{grid-template-columns:1fr}.main-nav{grid-template-columns:repeat(5,1fr)}.metric-grid{grid-template-columns:repeat(2,1fr)}.quick-form{grid-template-columns:1fr 1fr}.quick-form h2{grid-column:1/-1}.split{grid-template-columns:1fr}}@media(max-width:620px){.content{padding:18px}.main-nav{grid-template-columns:1fr 1fr}.metric-grid{grid-template-columns:1fr 1fr}.toolbar{align-items:stretch;flex-direction:column}.quick-form{grid-template-columns:1fr}.split{grid-template-columns:1fr}.list-row{align-items:flex-start;flex-direction:column}.button-row.end{justify-content:flex-start}.task-card{flex-direction:column}}
