.data-viz{max-width:760px;margin:4rem auto;padding:0;border:0;background:transparent;text-align:left}.data-viz figcaption{font-size:1.1rem;color:var(--ink);margin-bottom:1.5rem}.data-viz svg{width:100%;height:auto;display:block;overflow:visible}.data-viz text{fill:var(--ink);font:18px system-ui,sans-serif}.data-viz path,.data-viz circle,.data-viz ellipse{fill:none;stroke:var(--ink);stroke-width:2}.data-viz .solid{stroke:var(--ink);stroke-width:4}.data-viz .track{stroke:var(--line);stroke-width:8}.data-viz .sweep{stroke-width:8;transform:rotate(-90deg);transform-origin:160px 152px}.data-viz .node{fill:var(--ink);stroke:var(--ink)}.data-viz .abstract{stroke:var(--focus);stroke-width:2.5}.data-viz .projected{stroke:var(--ink);stroke-dasharray:7 6;fill:none}.viz-note{font-size:.92rem;line-height:1.7;color:var(--muted);max-width:72ch}.viz-fields{display:flex;gap:2rem;flex-wrap:wrap}.viz-fields label{flex:1;min-width:180px;color:var(--ink);font-size:.85rem}.viz-fields label span{display:flex;align-items:baseline;gap:.6rem;border-bottom:1px solid var(--muted);padding:.8rem 0;white-space:nowrap}.viz-fields input{width:100%;min-width:0;background:transparent;color:var(--ink);border:0;border-radius:0;padding:.4rem 0;font:inherit;font-size:1.2rem}.viz-fields input:focus-visible{outline:2px solid var(--focus);outline-offset:5px}.viz-status{color:var(--ink);min-height:1.5em}.viz-calculator{margin:4rem auto;max-width:760px}.viz-calculator .data-viz{margin:2rem auto}.viz-animate .reveal,.viz-animate .sweep{stroke-dasharray:1;stroke-dashoffset:1}.viz-animate.viz-entered .reveal,.viz-animate.viz-entered .sweep{stroke-dashoffset:0;transition:stroke-dashoffset 550ms ease-out}.target-chart svg.viz-animate{clip-path:inset(0 100% 0 0)}.target-chart svg.viz-entered{clip-path:inset(0);transition:clip-path 550ms ease-out}@media(max-width:600px){.data-viz{margin:2.5rem auto}.data-viz text{font-size:20px}.viz-fields{gap:1.2rem}.viz-fields label{flex-basis:100%}.hero .data-viz{margin-top:3rem}}@media(prefers-reduced-motion:reduce){.viz-animate .reveal,.viz-animate .sweep{stroke-dashoffset:0;transition:none!important}.target-chart svg.viz-animate{clip-path:none;transition:none!important}}
