:root{color-scheme:light dark;--color-bg: light-dark(#ffffff, #0f1115);--color-surface: light-dark(#f9fafb, #171a21);--color-surface-raised: light-dark(#ffffff, #1e222b);--color-text: light-dark(#111827, #e8eaed);--color-text-muted: light-dark(#6b7280, #9aa3af);--color-border: light-dark(#e5e7eb, #2d333b);--color-axis: light-dark(#9ca3af, #6b7280);--color-grid: light-dark(#e5e7eb, #262b33);--color-series-1: light-dark(#2563eb, #60a5fa);--color-diff-positive: light-dark(#16a34a, #4ade80);--color-diff-negative: light-dark(#dc2626, #f87171);--color-accent: light-dark(#2563eb, #60a5fa);--color-success: light-dark(#16a34a, #4ade80);--color-danger: light-dark(#dc2626, #f87171);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--radius-sm: .25rem;--radius-md: .5rem;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--weight-regular: 400;--weight-medium: 500;--weight-bold: 700;--leading: 1.5;--touch-target: 2.75rem;--topbar-height: 3rem;--sidebar-width: 20rem;--chart-max-width: 48rem;--layout-breakpoint: 48rem;--shadow-panel: 0 1px 3px rgba(0, 0, 0, .18)}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading);color:var(--color-text);background:var(--color-bg);-webkit-text-size-adjust:100%}body{margin:0;display:flex;flex-direction:column;height:100dvh;overflow:hidden}[data-phx-main]{display:contents}h1,h2{font-weight:var(--weight-bold);line-height:1.25}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.topbar{display:flex;flex:none;align-items:center;justify-content:space-between;height:var(--topbar-height);padding:0 var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.topbar .brand{font-weight:var(--weight-bold);color:var(--color-text);text-decoration:none}.topbar .version{margin-left:var(--space-1);font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--color-text-muted)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;min-height:0;padding:0;color:var(--color-text);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm)}fieldset{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);margin:0}legend{padding:0 var(--space-2);font-weight:var(--weight-medium);color:var(--color-text)}label{display:block;margin-bottom:var(--space-1);font-size:var(--text-sm);color:var(--color-text-muted)}input:not([type=checkbox]):not([type=radio]),select{width:100%;min-height:var(--touch-target);padding:var(--space-2) var(--space-3);font:inherit;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}input[type=checkbox]{width:1.15rem;height:1.15rem}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}button{min-height:var(--touch-target);padding:var(--space-2) var(--space-4);font:inherit;font-weight:var(--weight-medium);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer}button:hover:not(:disabled){background:var(--color-border)}button:disabled{opacity:.5;cursor:not-allowed}#flash-group{position:fixed;bottom:var(--space-3);right:var(--space-3);left:var(--space-3);z-index:50;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}@media (min-width: 48rem){#flash-group{left:auto;width:max-content;max-width:22rem}}#flash-group [role=alert]{position:relative;pointer-events:auto;padding:var(--space-3) var(--space-6) var(--space-3) var(--space-4);background:var(--color-surface-raised);border:1px solid var(--color-border);border-left:4px solid var(--color-danger);border-radius:var(--radius-sm);box-shadow:var(--shadow-panel)}.flash-close{position:absolute;top:var(--space-1);right:var(--space-1);width:1.75rem;height:1.75rem;min-height:0;padding:0;font-size:var(--text-lg);line-height:1;color:var(--color-text-muted);background:transparent;border:none}.flash-close:hover{color:var(--color-text);background:transparent}#flash-info{border-left-color:var(--color-success)}#flash-group [role=alert] p{margin:0}#flash-group [role=alert] p:first-child{font-weight:var(--weight-medium)}.hub{flex:1;min-height:0;overflow-y:auto;padding:var(--space-6) var(--space-4)}.hub-inner{max-width:var(--chart-max-width);margin:0 auto}.hub-intro{text-align:center;margin-bottom:var(--space-6)}.hub-intro h1{margin:0}.hub-intro .tagline{margin:var(--space-2) 0 0;color:var(--color-text-muted)}.tools{display:grid;gap:var(--space-4);margin:0;padding:0;list-style:none}.tool-card{position:relative;display:block;padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:inherit;text-decoration:none}.tool-card:hover,.tool-card:focus-visible{border-color:var(--color-accent)}.tool-card h2{margin:0 0 var(--space-1);font-size:var(--text-lg)}.tool-card p{margin:0;color:var(--color-text-muted)}.tool-card-soon{opacity:.65;cursor:default}.tool-card-soon h2{padding-right:5rem}.tool-card-soon:hover{border-color:var(--color-border)}.tool-card .badge{position:absolute;top:var(--space-3);right:var(--space-3);padding:0 var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px}.setup{display:flex;flex-direction:column;flex:1;min-height:0;background:var(--color-bg)}.chart-panel{flex:none;padding:0;background:var(--color-bg);border-bottom:1px solid var(--color-border)}.chart-empty{display:flex;flex:1;align-items:center;justify-content:center;margin:0;padding:var(--space-6);text-align:center;color:var(--color-text-muted)}.curve{display:block;width:100%;height:auto}.curve text{fill:var(--color-text-muted)}.curve .grid-line{stroke:var(--color-grid);stroke-width:1}.curve .axis-line{stroke:var(--color-axis);stroke-width:1}.legend{display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:center;margin:0;padding:var(--space-2) var(--space-3);list-style:none;font-size:var(--text-sm);color:var(--color-text-muted)}.legend li{display:flex;align-items:center;gap:var(--space-1)}.disclaimer{margin:0 0 var(--space-2);padding:0 var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted);text-align:center}.controls{display:flex;flex-direction:column;flex:1;min-height:0;gap:var(--space-4);padding:var(--space-4);overflow-y:auto}.controls form{display:contents}.controls fieldset{display:flex;flex-direction:column;gap:var(--space-3)}.controls>section{display:flex;flex-direction:column;gap:var(--space-2)}.controls ul{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.controls li{display:flex;align-items:center;gap:var(--space-2)}.compare-hint{display:flex;align-items:center;gap:var(--space-1);margin:0 0 var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted);cursor:pointer}.controls li .load{flex:1;text-align:left}.saved{padding:var(--space-3);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.saved-toggle{font-size:var(--text-base);font-weight:var(--weight-bold);cursor:pointer}.saved summary+*{margin-top:var(--space-3)}.saved ul{max-height:15rem;overflow-y:auto}.saved .empty{margin:0;color:var(--color-text-muted);font-size:var(--text-sm)}.saved .count{padding:0 var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px}.saved .delete{flex:none;width:2.25rem;min-height:2.25rem;padding:0;font-size:var(--text-lg);line-height:1;color:var(--color-text-muted)}.saved .delete:hover:not(:disabled){color:var(--color-danger);border-color:var(--color-danger)}@media (min-width: 48rem){.setup{display:grid;grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:minmax(0,1fr);grid-template-areas:"controls chart"}.chart-panel,.chart-empty{grid-area:chart}.chart-panel{display:flex;flex-direction:column;justify-content:center;border-bottom:none}.controls{grid-area:controls;border-right:1px solid var(--color-border);background:var(--color-surface)}}
