:root{font-family:Inter,system-ui,Arial,sans-serif;color:#1f2937;background:#f5f7fb}*{box-sizing:border-box}body{margin:0}a{text-decoration:none;color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:220px 1fr}.sidebar{background:#111827;color:#fff;padding:20px}.sidebar h1{margin-top:0;font-size:20px}.sidebar nav{display:grid;gap:8px}.sidebar nav a{padding:10px;border-radius:6px;background:transparent}.sidebar nav a.active,.sidebar nav a:hover{background:#374151}.main-pane{display:grid;grid-template-rows:auto 1fr}.top-header{background:#fff;padding:16px 24px;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;gap:16px}.top-header h2{margin:0}.top-header p{margin:4px 0 0;color:#6b7280}.auth-panel{display:grid;gap:6px;justify-items:end}.auth-panel form{display:flex;gap:6px}.auth-panel input{width:90px}.content{padding:20px}.page-grid{display:grid;gap:16px}.section-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:16px}.section-card h3{margin-top:0}.state-card{border:1px dashed #c7ced9;border-radius:8px;padding:12px;color:#4b5563}.state-card.error{border-color:#ef4444;color:#991b1b}table{width:100%;border-collapse:collapse}th,td{padding:8px;border-bottom:1px solid #f1f5f9;text-align:left}.form-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}label{display:grid;gap:4px;font-size:14px}input,select,button,textarea{font:inherit;padding:8px;border:1px solid #d1d5db;border-radius:6px}button{background:#111827;color:#fff;border:none;cursor:pointer}button:disabled{opacity:.6;cursor:default}.cards-inline{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.metric-card{padding:12px;border:1px solid #e5e7eb;border-radius:8px}.badge{padding:3px 8px;border-radius:999px;font-size:12px}.badge.upcoming{background:#dbeafe;color:#1e40af}.badge.done{background:#dcfce7;color:#166534}.badge.overdue{background:#fee2e2;color:#b91c1c}@media (max-width: 900px){.app-shell{grid-template-columns:1fr}.sidebar{padding-bottom:10px}.top-header{flex-direction:column;align-items:flex-start}}
