:root { --ink:#12233f; --muted:#64748b; --canvas:#f4f7fb; --line:#dbe4ee; --blue:#1d4f91; --good:#198754; --warn:#b7791f; --bad:#bd3d3a; }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--canvas); font-family:Inter,Segoe UI,Arial,sans-serif; }
.app-header { min-height:68px; display:flex; align-items:center; justify-content:space-between; padding:0 5vw; color:#fff; background:linear-gradient(105deg,#163e72,#2563a8); }
.brand-links { display:flex; gap:17px; align-items:center; }.brand { color:#fff; text-decoration:none; font-size:1.08rem; font-weight:750; letter-spacing:.01em; }.brand span { font-weight:400; opacity:.86; }.alerts-link { color:#fff; font-size:.78rem; text-decoration:none; border-left:1px solid #ffffff56; padding-left:17px; }.read-only { font-size:.78rem; opacity:.82; }
.session-control { display:flex; gap:9px; align-items:center; font-size:.78rem; opacity:.9; }.session-control button { border:1px solid #ffffff7d; border-radius:5px; color:#fff; background:transparent; padding:4px 8px; cursor:pointer; }
.page-shell { width:min(1240px,92vw); margin:32px auto 52px; }.app-footer { border-top:1px solid var(--line); padding:18px 5vw; color:var(--muted); font-size:.8rem; }
.dashboard-title { margin:0; font-size:1.75rem; }.subheading { color:var(--muted); margin:.4rem 0 0; }.topbar { display:flex; gap:20px; justify-content:space-between; align-items:flex-start; margin-bottom:24px; }.updated { color:var(--muted); text-align:right; font-size:.82rem; }.refresh { margin-top:7px; border:1px solid #b7c9de; border-radius:6px; background:#fff; color:var(--blue); padding:7px 11px; cursor:pointer; font-weight:650; }
.alert-error { padding:16px; color:#842029; background:#f8d7da; border:1px solid #f5c2c7; border-radius:8px; }
.agenda-banner { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 17px; border:1px solid #f0c36d; background:#fff9e9; border-radius:10px; color:#60430b; }.agenda-banner strong { display:block; }.agenda-banner span { display:block; margin-top:3px; font-size:.8rem; }.agenda-banner a { color:#694600; font-weight:750; white-space:nowrap; }
.agenda-cards { grid-template-columns:repeat(3,minmax(145px,1fr)); }.filter-links { display:flex; gap:8px; margin-top:13px; }.filter-links a { border:1px solid #c9d7e5; border-radius:20px; padding:5px 9px; color:#3b5270; text-decoration:none; font-size:.75rem; }.filter-links a.selected { border-color:var(--blue); background:#e8f0fa; color:var(--blue); font-weight:750; }
.cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(145px,1fr)); gap:14px; margin:22px 0; }.card { background:#fff; border:1px solid var(--line); border-radius:10px; padding:17px; box-shadow:0 2px 8px #203c5d0a; }.card .label { color:var(--muted); text-transform:uppercase; font-size:.7rem; letter-spacing:.05em; font-weight:700; }.card .value { margin-top:7px; font-size:1.7rem; font-weight:750; }.card .hint { color:var(--muted); font-size:.76rem; margin-top:4px; }.value.good, .good { color:var(--good); }.value.warn, .warn { color:var(--warn); }.value.bad, .bad { color:var(--bad); }
.panel { overflow:hidden; background:#fff; border:1px solid var(--line); border-radius:10px; margin-top:20px; }.panel-heading { padding:17px 18px 10px; }.panel-heading h2 { margin:0; font-size:1rem; }.panel-heading p { margin:4px 0 0; color:var(--muted); font-size:.8rem; }.table-wrap { overflow:auto; }.progress-table { width:100%; border-collapse:collapse; font-size:.88rem; }.progress-table th { padding:10px 14px; background:#f8fafc; color:#52657d; text-align:left; text-transform:uppercase; letter-spacing:.04em; font-size:.68rem; }.progress-table td { padding:13px 14px; border-top:1px solid #eef2f7; white-space:nowrap; }.progress-table tr.priority { background:#fff9f8; }.metric { font-weight:700; }.progress { min-width:125px; height:8px; overflow:hidden; border-radius:9px; background:#e9eff6; }.progress span { display:block; height:100%; background:var(--blue); border-radius:inherit; }.tag { display:inline-block; padding:4px 8px; border-radius:20px; font-size:.72rem; font-weight:750; }.tag.good { background:#d9f2e5; color:#12613b; }.tag.warn { background:#f9edcc; color:#805d10; }.tag.bad { background:#f9dedd; color:#923231; }.tag.neutral { background:#e8edf3; color:#52657d; }.small { color:var(--muted); font-size:.78rem; }
.legend { display:flex; flex-wrap:wrap; gap:14px; padding:12px 18px 16px; color:var(--muted); font-size:.76rem; }.dot { width:8px; height:8px; display:inline-block; border-radius:50%; margin-right:4px; }.dot.good { background:var(--good); }.dot.warn { background:var(--warn); }.dot.bad { background:var(--bad); }
.login-card { width:min(410px,100%); margin:9vh auto; padding:30px; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:0 12px 30px #203c5d18; }.login-card h1 { margin:4px 0; font-size:1.4rem; }.eyebrow { margin:0; color:var(--blue); font-size:.72rem; letter-spacing:.1em; font-weight:800; }.login-card form { display:grid; gap:8px; margin-top:24px; }.login-card label { margin-top:7px; font-size:.82rem; font-weight:700; }.login-card input { width:100%; padding:10px; border:1px solid #bcc9d7; border-radius:6px; font:inherit; }.login-button { margin-top:12px; padding:10px; border:0; border-radius:6px; color:#fff; background:var(--blue); font-weight:700; cursor:pointer; }.validation { color:#b42318; font-size:.8rem; }
@media (max-width:900px) { .cards { grid-template-columns:repeat(2,1fr); }.cards .card:last-child { grid-column:span 2; }.topbar { flex-direction:column; }.updated { text-align:left; }.app-header { padding:0 4vw; }.read-only { display:none; } }
@media (max-width:480px) { .cards { grid-template-columns:1fr; }.cards .card:last-child { grid-column:auto; }.page-shell { width:94vw; margin-top:20px; }.brand span { display:none; } }
