:root{--bg: #F7F5F0;--surface: #FFFFFF;--border: #DDD8CC;--ink: #1F2A24;--ink-soft: #5B6B61;--teal: #0F6E56;--teal-dark: #085041;--teal-tint: #E1F5EE;--coral: #D85A30;--coral-tint: #FAECE7;--amber: #BA7517;--amber-tint: #FAEEDA;--font-display: "Source Serif 4", Georgia, serif;--font-body: "Inter", system-ui, sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.55}.app-shell{max-width:1080px;margin:0 auto;padding:40px 24px 80px}.app-header{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:8px}.app-header h1{font-family:var(--font-display);font-weight:600;font-size:28px;margin:0;color:var(--teal-dark)}.app-header .subtitle{color:var(--ink-soft);font-size:14px}.vitals-divider{width:100%;height:28px;margin:16px 0 32px;display:block}.tabs{display:flex;gap:4px;margin-bottom:28px;border-bottom:1px solid var(--border)}.tab-button{font-family:var(--font-body);font-weight:500;font-size:14px;padding:10px 18px;background:none;border:none;cursor:pointer;color:var(--ink-soft);border-bottom:2px solid transparent;margin-bottom:-1px}.tab-button.active{color:var(--teal-dark);border-bottom-color:var(--teal)}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px}.card+.card{margin-top:20px}.card h2{font-family:var(--font-display);font-weight:600;font-size:18px;margin:0 0 16px;color:var(--ink)}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}@media (max-width: 720px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px 20px}.kpi-card .label{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin-bottom:8px}.kpi-card .value{font-family:var(--font-display);font-size:26px;font-weight:600;color:var(--teal-dark)}.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media (max-width: 880px){.chart-grid{grid-template-columns:1fr}}.upload-zone{border:1.5px dashed var(--border);border-radius:12px;padding:48px 24px;text-align:center;background:var(--teal-tint);cursor:pointer;transition:border-color .15s ease}.upload-zone:hover,.upload-zone.dragging{border-color:var(--teal)}.upload-zone p{margin:0;color:var(--teal-dark);font-weight:500}.upload-zone .hint{font-size:13px;color:var(--ink-soft);font-weight:400;margin-top:6px}.btn{font-family:var(--font-body);font-weight:600;font-size:14px;padding:10px 20px;border-radius:8px;border:none;background:var(--teal);color:#fff;cursor:pointer}.btn:disabled{background:var(--border);color:var(--ink-soft);cursor:not-allowed}.btn:hover:not(:disabled){background:var(--teal-dark)}.status-banner{margin-top:20px;padding:14px 18px;border-radius:10px;font-size:14px}.status-banner.success{background:var(--teal-tint);color:var(--teal-dark)}.status-banner.error{background:var(--coral-tint);color:#4a1b0c}.summary-list{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;font-size:14px}.summary-list li span.n{font-weight:600;color:var(--teal-dark)}.empty-state{text-align:center;color:var(--ink-soft);padding:40px 0}.filter-bar{margin-bottom:20px}.filter-bar-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px}.filter-bar-header h2{margin:0}.btn-link{background:none;border:none;color:var(--coral);font-size:13px;font-weight:600;cursor:pointer;padding:0}.btn-link:hover{text-decoration:underline}.filter-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}@media (max-width: 960px){.filter-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 640px){.filter-grid{grid-template-columns:repeat(2,1fr)}}.filter-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-soft)}.filter-field select,.filter-field input[type=date]{font-family:var(--font-body);font-size:13px;color:var(--ink);padding:7px 8px;border-radius:6px;border:1px solid var(--border);background:var(--surface)}.filter-field select:focus,.filter-field input[type=date]:focus{outline:none;border-color:var(--teal)}.chart-hint{margin:-10px 0 10px;font-size:11.5px;color:var(--ink-soft);font-style:italic}.refresh-hint{font-size:12px;color:var(--teal-dark);margin-bottom:10px}:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
