:root{--color-bg:#f4f5f7;--color-surface:#fff;--color-border:#d4d8de;--color-border-strong:#b8bec8;--color-text:#1a1f26;--color-text-muted:#5c6570;--color-accent:#0d7377;--color-accent-hover:#0a5c5f;--color-accent-subtle:#e6f3f3;--color-header-bg:#1e2430;--color-header-text:#e8eaed;--color-nav-active:#4ecdc4;--color-disclaimer-bg:#eef0f3;--color-disclaimer-text:#6b7280;--font-sans:"IBM Plex Sans", system-ui, -apple-system, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "Cascadia Code", monospace;--space-xs:.25rem;--space-sm:.5rem;--space-md:.85rem;--space-lg:1.1rem;--space-xl:1.6rem;--radius-sm:4px;--font-size-base:15px;--line-height:1.45}*,:before,:after{box-sizing:border-box}html{font-size:var(--font-size-base)}body{font-family:var(--font-sans);line-height:var(--line-height);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;margin:0}#root{min-height:100vh}h1{margin:0 0 var(--space-lg);letter-spacing:-.01em;font-size:1.45rem;font-weight:600}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{align-items:center;gap:var(--space-xl);padding:0 var(--space-lg);background:var(--color-header-bg);border-bottom:1px solid var(--color-border-strong);height:48px;display:flex}.app-brand{font-family:var(--font-mono);color:var(--color-header-text);letter-spacing:.02em;white-space:nowrap;font-size:.95rem;font-weight:500}.app-nav{align-items:stretch;gap:2px;display:flex;overflow-x:auto}.nav-link{padding:0 var(--space-md);color:#9aa3ad;white-space:nowrap;border-bottom:2px solid #0000;align-items:center;font-size:.92rem;font-weight:500;text-decoration:none;transition:color .12s,border-color .12s;display:flex}.nav-link:hover{color:var(--color-header-text)}.nav-link--active{color:var(--color-nav-active);border-bottom-color:var(--color-nav-active)}.app-main{padding:var(--space-xl) var(--space-lg);flex:1;width:100%;max-width:1400px;margin:0 auto}.disclaimer{padding:var(--space-sm) var(--space-lg);color:var(--color-disclaimer-text);background:var(--color-disclaimer-bg);border-top:1px solid var(--color-border);text-align:center;font-size:.82rem}.metric{padding:var(--space-sm) var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);flex-direction:column;gap:3px;min-width:6.5rem;display:flex}.metric-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:.78rem}.metric-value{font-family:var(--font-mono);color:var(--color-text);align-items:baseline;gap:4px;font-size:1.2rem;font-weight:600;display:flex}.metric--lg .metric-value{font-size:1.65rem}.metric-unit{color:var(--color-text-muted);font-size:.78rem;font-weight:400}.badge{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.02em;background:var(--color-accent-subtle);color:var(--color-accent-hover);border-radius:999px;padding:2px 6px;font-size:.72rem;font-weight:600;display:inline-block}.badge--provisional{color:#92400e;background:#fef3c7}.badge--unreliable,.badge--confounded{color:#991b1b;background:#fee2e2}.badge--clean{color:#166534;background:#dcfce7}.metric-grid{gap:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(7.25rem,1fr));display:grid}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-lg);margin-bottom:var(--space-lg)}.panel h2{margin:0 0 var(--space-md);font-size:1.12rem;font-weight:600}.panel-row{gap:var(--space-xl);flex-wrap:wrap;display:flex}.field{flex-direction:column;gap:5px;font-size:.92rem;display:flex}.field label,label.field-label{color:var(--color-text-muted);font-size:.85rem;font-weight:500}input,select,textarea,button{font-family:var(--font-sans);font-size:.92rem}input,select,textarea{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:7px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--color-accent);outline-offset:-1px}.btn{border:1px solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-accent);color:#fff;cursor:pointer;white-space:nowrap;padding:7px 14px;font-weight:500}.btn:hover:not(:disabled){background:var(--color-accent-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--secondary{background:var(--color-surface);color:var(--color-accent)}.btn--secondary:hover:not(:disabled){background:var(--color-accent-subtle)}.btn--sm{padding:5px 10px;font-size:.85rem}.message{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--color-accent-subtle);color:var(--color-accent-hover);font-family:var(--font-mono);white-space:pre-wrap;font-size:.88rem}.message--error{color:#991b1b;background:#fee2e2}.data-table{border-collapse:collapse;width:100%;font-size:.9rem}.data-table th,.data-table td{border-bottom:1px solid var(--color-border);text-align:left;white-space:nowrap;padding:8px 10px}.data-table th{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;background:var(--color-surface);font-size:.78rem;font-weight:600;position:sticky;top:0}.data-table tbody tr:hover{background:var(--color-accent-subtle)}.data-table .num{font-family:var(--font-mono);text-align:right}.data-table .num-strong{font-family:var(--font-mono);text-align:right;font-weight:700}.table-wrap{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow-x:auto}.filters{gap:var(--space-md);margin-bottom:var(--space-lg);flex-wrap:wrap;align-items:flex-end;display:flex}a.link{color:var(--color-accent);text-decoration:none}a.link:hover{text-decoration:underline}.empty-state{padding:var(--space-xl);text-align:center;color:var(--color-text-muted);font-size:.95rem}.grade-pill{text-align:center;border-radius:var(--radius-sm);min-width:1.75rem;color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);padding:2px 7px;font-size:.8rem;font-weight:600;display:inline-block}.grade-pill--a{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.grade-pill--b{color:#0a5c5f;background:#eefaf9;border-color:#b7e6e6}.grade-pill--c{color:#92400e;background:#fffbeb;border-color:#fde68a}.grade-pill--d,.grade-pill--f{color:#991b1b;background:#fef2f2;border-color:#fecaca}.validation-tag{border-radius:var(--radius-sm);padding:2px 7px;font-size:.8rem;font-weight:500;display:inline-block}.validation-tag--ordinary{color:var(--color-text-muted);background:var(--color-bg)}.validation-tag--valid_single_variable{color:#166534;background:#f0fdf4}.validation-tag--confounded{color:#991b1b;background:#fef2f2}.status-tag{border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text-muted);padding:2px 7px;font-size:.8rem;font-weight:500;display:inline-block}.baseline-tag{border-radius:var(--radius-sm);color:#0f766e;background:#ccfbf1;padding:2px 7px;font-size:.8rem;font-weight:600;display:inline-block}.page-header-row{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);flex-wrap:wrap;display:flex}.page-header-row h1,.page-header-row h2{margin:0}.create-meal-form{margin-bottom:var(--space-md)}.meal-compare-section{gap:var(--space-md);margin-bottom:var(--space-lg);flex-direction:column;display:flex}.meal-compare-section>h2{margin-bottom:0}.meal-compare-pickers{flex-wrap:wrap;align-items:center;gap:.65rem .85rem;display:flex}.meal-compare-picker{align-items:center;gap:.45rem;display:inline-flex}.meal-compare-picker__label{color:var(--color-text-muted);min-width:1rem;font-size:.92rem;font-weight:600}.meal-compare-vs{color:var(--color-text-muted);letter-spacing:.02em;padding:0 .2rem;font-size:.88rem;font-weight:600}.cgm-curve{width:100%}.cgm-curve .recharts-legend-wrapper{padding-top:.5rem}.cgm-curve .recharts-legend-item-text,.cgm-curve .recharts-cartesian-axis-tick-value,.cgm-curve .recharts-label{font-size:12px}.summary-strip{gap:var(--space-lg);flex-wrap:wrap;display:flex}.tabs{margin-bottom:var(--space-md);border-bottom:1px solid var(--color-border);gap:2px;display:flex}.tab{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 12px;font-size:.9rem;font-weight:500}.tab--active{color:var(--color-accent-hover);border-bottom-color:var(--color-accent)}.heatmap-table{border-collapse:collapse;font-size:.88rem}.heatmap-table th,.heatmap-table td{text-align:center;border:1px solid var(--color-border);padding:6px 10px}.heatmap-table th{color:var(--color-text-muted);font-weight:600}
