:root{--bg:#f2f2f7;--panel:#fff;--panel-2:#f2f2f7;--line:#e3e3e8;--ink:#1c1c1e;--muted:#6e6e73;--blue:#007aff;--blue-dark:#0060d0;--green:#34c759;--orange:#ff9500;--red:#ff3b30;--purple:#af52de;--teal:#32ade6;--fg:var(--ink);--bg-alt:var(--panel);--accent:var(--blue);--accent-fg:#fff;--ok:var(--green);--warn:var(--orange);--radius:16px;--radius-sm:12px;--maxw:1040px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Helvetica, Arial, sans-serif;--display:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--card-grad:linear-gradient(160deg, #1d3a8a 0%, #0a84ff 55%, #3aa0ff 100%);color-scheme:light}:root[data-theme=dark]{--bg:#0b0b0f;--panel:#17171c;--panel-2:#202027;--line:#2a2a33;--ink:#f5f5f7;--muted:#9a9aa6;--blue:#0a84ff;--blue-dark:#06c;--green:#30d158;--orange:#ff9f0a;--red:#ff453a;--purple:#bf5af2;--teal:#64d2ff;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;font-family:var(--font);background:var(--bg);color:var(--ink);line-height:1.45}body{padding-bottom:env(safe-area-inset-bottom);margin:0;font-size:15px}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.wrap{max-width:var(--maxw);padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right));margin:0 auto}header.site{z-index:20;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(180%)blur(18px);border-bottom:1px solid var(--line);position:sticky;top:0}header.site .wrap{justify-content:space-between;align-items:center;gap:16px;min-height:52px;display:flex}header.site .brand{letter-spacing:-.2px;color:var(--ink);white-space:nowrap;font-size:17px;font-weight:700}header.site .brand:before{content:"";background:var(--blue);vertical-align:1px;border-radius:50%;width:9px;height:9px;margin-right:8px;display:inline-block}header.site nav{white-space:nowrap;scrollbar-width:none;gap:18px;padding:14px 0;font-size:14px;display:flex;overflow-x:auto}header.site nav::-webkit-scrollbar{display:none}header.site nav a{color:var(--muted)}header.site nav a:hover{color:var(--ink);text-decoration:none}@media (width<=720px){header.site .wrap{flex-direction:column;align-items:flex-start;gap:0;padding-top:10px}header.site nav{width:100%;padding:4px 0 10px;-webkit-mask-image:linear-gradient(90deg,#000 90%,#0000);mask-image:linear-gradient(90deg,#000 90%,#0000)}}main{padding:18px 0 96px}footer.site{border-top:1px solid var(--line);color:var(--muted);padding:22px 0 40px;font-size:13px}footer.site .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 24px;display:flex}.theme{background:var(--panel-2);border:1px solid var(--line);border-radius:999px;grid-auto-flow:column;padding:2px;display:inline-grid}.theme button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:5px 12px;font-size:13px;font-weight:600}.theme button[aria-pressed=true]{background:var(--panel);color:var(--ink);box-shadow:0 1px 2px #0000001f}h1{font-family:var(--display);letter-spacing:-.03em;margin:8px 0;font-size:clamp(30px,6vw,40px);font-weight:800;line-height:1.08}h2{font-family:var(--display);letter-spacing:-.02em;margin:34px 0 8px;font-size:22px;font-weight:700}h3{letter-spacing:-.01em;margin:20px 0 6px;font-size:17px;font-weight:600}p.lede{color:var(--muted);max-width:60ch;margin:0 0 18px;font-size:16px}.note,.crumbs{color:var(--muted);font-size:13px}.crumbs a{color:var(--muted)}.calc{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr 1fr;gap:16px;padding:16px;display:grid}.calc form{align-content:start;gap:12px;display:grid}@media (width<=720px){.calc{grid-template-columns:1fr;padding:14px}.calc>.result{order:-1}}.field{gap:5px;display:grid}.field label{color:var(--muted);font-size:13px}.field input,.field select,.field textarea{font:inherit;border-radius:var(--radius-sm);background:var(--panel-2);color:var(--ink);-webkit-appearance:none;appearance:none;border:1px solid #0000;width:100%;min-height:44px;padding:11px 12px;font-size:17px}.field select{background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 18px),calc(100% - 13px);background-repeat:no-repeat;background-size:5px 5px;padding-right:32px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px color-mix(in srgb, var(--blue) 28%, transparent);outline:none}.row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.btn{font:inherit;border-radius:var(--radius-sm);background:var(--blue);color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;min-height:46px;padding:10px 18px;font-size:17px;font-weight:600;transition:transform 80ms,filter .12s}.btn:active{filter:brightness(.92);transform:scale(.98)}.btn.secondary{background:var(--panel-2);color:var(--blue);min-height:38px;padding:6px 12px;font-size:15px}.btn.secondary[aria-pressed=true],.btn.secondary.on{background:var(--blue);color:#fff}.result{align-content:start;gap:10px;display:grid}.result .label{color:var(--muted);letter-spacing:.01em;font-size:13px}.result .big{font-family:var(--display);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:clamp(34px,9vw,44px);font-weight:800;line-height:1.05}.result table{border-collapse:collapse;width:100%;font-size:15px}.result td,.result th{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:9px 0}.result tr:last-child td,.result tr:last-child th{border-bottom:0}.result td:last-child,.result th:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.result .steps{font-family:var(--mono);color:var(--muted);white-space:pre-wrap;background:var(--panel-2);border-radius:var(--radius-sm);margin:0;padding:10px 12px;font-size:12.5px}.actions{flex-wrap:wrap;gap:8px;margin:12px 0 0;display:flex}.actions button{font:inherit;border:1px solid var(--line);background:var(--panel-2);min-height:40px;color:var(--ink);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:600;display:inline-flex}.actions button:active{transform:scale(.97)}.actions button.primary{background:var(--blue);border-color:var(--blue);color:#fff}.actions button svg{width:16px;height:16px}@media (width<=720px){.actions{z-index:30;padding:10px max(12px, env(safe-area-inset-left)) calc(10px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--bg) 84%, transparent);-webkit-backdrop-filter:saturate(180%)blur(18px);border-top:1px solid var(--line);flex-wrap:nowrap;margin:0;position:fixed;bottom:0;left:0;right:0}.actions button{flex:1;justify-content:center;min-height:44px;padding:8px 6px;font-size:14px}}.sheet{z-index:50;background:#00000080;grid-template-columns:minmax(0,1fr);align-items:end;display:grid;position:fixed;inset:0}@media (width>=721px){.sheet{place-items:center}}.sheet .panel{background:var(--panel);width:100%;min-width:0;max-width:520px;padding:12px 16px calc(16px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;justify-self:center;animation:.22s cubic-bezier(.2,.8,.2,1) sheet-up;box-shadow:0 -10px 40px #0006}@media (width>=721px){.sheet .panel{border-radius:22px}}.sheet .grab{background:var(--line);border-radius:3px;width:36px;height:5px;margin:0 auto 12px}.sheet h3{margin:0 0 10px;font-size:17px}.sheet .seg{background:var(--panel-2);border-radius:10px;grid-template-columns:repeat(3,1fr);margin:0 0 12px;padding:3px;display:grid}.sheet .seg button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:7px 4px;font-size:14px;font-weight:600}.sheet .seg button[aria-pressed=true]{background:var(--panel);color:var(--ink);box-shadow:0 1px 3px #0000004d}.sheet .preview{background:var(--panel-2);border-radius:14px;place-items:center;min-width:0;margin:0 0 12px;padding:12px;display:grid;overflow:hidden}.sheet .preview canvas{border-radius:10px;width:auto;max-width:100%;height:auto;max-height:42vh;display:block}.sheet .swatches{gap:10px;margin:0 0 14px;display:flex}.sheet .swatches button{cursor:pointer;border:2px solid #0000;border-radius:50%;width:30px;height:30px}.sheet .swatches button[aria-pressed=true]{border-color:var(--ink)}.sheet .row{gap:10px}.sheet .link{background:var(--panel-2);border-radius:10px;align-items:center;gap:8px;margin:0 0 12px;padding:8px 8px 8px 12px;display:flex}.sheet .link code{font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;color:var(--muted);flex:1;font-size:13px;overflow:hidden}.sheet .link button{font:inherit;background:var(--blue);color:#fff;border:0;border-radius:8px;padding:6px 10px;font-size:13px;font-weight:600}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.toast{left:50%;bottom:calc(76px + env(safe-area-inset-bottom));z-index:60;background:var(--ink);color:var(--bg);border-radius:999px;padding:10px 16px;font-size:14px;font-weight:600;animation:.2s sheet-up;position:fixed;transform:translate(-50%);box-shadow:0 6px 24px #00000059}@media (width>=721px){.toast{bottom:28px}}.prose{max-width:72ch}.prose p{margin:0 0 12px}.prose table{border-collapse:collapse;background:var(--panel);border-radius:var(--radius-sm);width:100%;margin:12px 0;font-size:14px;overflow:hidden}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;padding:9px 10px}.prose th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.prose td:last-child{font-variant-numeric:tabular-nums}.prose pre,.prose code{font-family:var(--mono);font-size:13px}.prose pre{background:var(--panel);border-radius:var(--radius-sm);padding:10px 12px;overflow-x:auto}.faq details{border-top:1px solid var(--line);padding:12px 0}.faq details:last-child{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;justify-content:space-between;gap:12px;font-weight:600;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--muted);font-weight:400}.faq details[open] summary:after{content:"−"}.faq p{color:var(--muted);margin:8px 0 0}.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}@media (width<=720px){.grid{grid-template-columns:1fr;gap:8px}}.card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);padding:14px 16px;display:block;position:relative}.card:after{content:"›";color:var(--muted);font-size:20px;position:absolute;top:12px;right:14px}.card:hover{border-color:var(--blue);text-decoration:none}.card h3{margin:0 0 3px;padding-right:20px;font-size:16px}.card p{color:var(--muted);margin:0;font-size:13.5px}.pill{background:var(--panel-2);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:12px;display:inline-block}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}canvas.plot{aspect-ratio:1;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);touch-action:none;width:100%;max-height:560px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.rows{gap:8px;display:grid}.rows .r{grid-template-columns:2fr 1fr 1fr auto;align-items:center;gap:8px;display:grid}.rows .r.five{grid-template-columns:1.6fr 1fr 1fr 1.2fr auto}.rows .r input,.rows .r select{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:8px;width:100%;min-width:0;padding:8px 10px}.rows .r .x{font:inherit;border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;padding:6px 10px}.rows .h{color:var(--muted);font-size:.8rem}.field textarea{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);resize:vertical;border-radius:8px;width:100%;min-height:120px;padding:10px 12px}.field textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:#0000}.result table.yrs{font-size:.85rem}.result table.yrs td,.result table.yrs th{text-align:right;font-variant-numeric:tabular-nums}.result table.yrs td:first-child,.result table.yrs th:first-child{text-align:left}.calc.graph{grid-template-columns:300px minmax(0,1fr);align-items:start}@media (width<=720px){.calc.graph{grid-template-columns:1fr}.calc.graph .graph-main{order:-1}}.graph-side{align-content:start;gap:12px;min-width:0;display:grid}.graph-rows{gap:8px;display:grid}.graph-row{grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.graph-row .graph-err{color:var(--warn);grid-column:1/-1;font-size:.8rem}.graph-row .graph-err:empty{display:none}.graph-swatch{border-radius:50%;width:14px;height:14px;display:inline-block}.graph-expr{font:inherit;font-family:var(--mono);border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:8px;width:100%;min-width:0;padding:8px 10px}.graph-row.has-error .graph-expr{border-color:var(--warn)}.graph-expr:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:#0000}.graph-del{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 6px;font-size:1.3rem;line-height:1}.graph-del:hover{color:var(--warn)}.graph-on{width:16px;height:16px;accent-color:var(--accent);margin:0}.graph-opts{color:var(--muted);gap:10px;font-size:.9rem;display:grid}.graph-opts label{align-items:center;gap:8px;display:flex}.seg{border:1px solid var(--line);border-radius:8px;width:max-content;margin:0;padding:0;display:inline-flex;overflow:hidden}.seg legend{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.seg label{cursor:pointer;padding:6px 12px;position:relative}.seg input{opacity:0;width:1px;height:1px;position:absolute}.seg label:has(input:checked){background:var(--accent);color:var(--accent-fg)}.seg label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:-2px}.graph-main{gap:8px;min-width:0;display:grid}.graph-tools{flex-wrap:wrap;gap:6px;display:flex}.graph-tools .btn{padding:6px 12px;font-size:.9rem}.graph-status{font-family:var(--mono);color:var(--muted);min-height:1.3em;font-size:.85rem}canvas.plot{cursor:crosshair;display:block}canvas.plot:focus-visible{outline:2px solid var(--accent)}.calc.sci{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start}@media (width<=720px){.calc.sci{grid-template-columns:1fr}}.sci-main{gap:10px;display:grid}.sci-display{border:1px solid var(--line);background:var(--bg);border-radius:8px;gap:2px;padding:10px 12px;display:grid}.sci-expr{font:inherit;font-family:var(--mono);color:var(--fg);background:0 0;border:0;width:100%;min-width:0;padding:4px 0;font-size:1.1rem}.sci-expr:focus{outline:none}.sci-result{text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;letter-spacing:-.01em;min-height:1.3em;font-size:1.9rem;font-weight:700}.sci-result.muted{color:var(--muted);font-weight:500}.sci-result.error{color:var(--warn);font-size:1rem;font-weight:500}.sci-flags{color:var(--muted);letter-spacing:.06em;gap:10px;min-height:1.1em;font-size:.7rem;display:flex}.sci-keys{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.sci-keys button{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);cursor:pointer;border-radius:8px;min-height:44px;padding:10px 0;font-size:1.05rem}.sci-keys button:hover{border-color:var(--accent)}.sci-keys button.op{background:var(--bg-alt)}.sci-keys button.fn{font-size:.95rem}.sci-keys button.eq{background:var(--accent);color:var(--accent-fg);border-color:#0000;grid-row:span 3;font-size:1.4rem}.sci.is-second .sci-keys button.tog2{background:var(--accent);color:var(--accent-fg)}.sci-history h2{margin:0 0 8px;font-size:1rem}.sci-history ol{gap:4px;max-height:440px;margin:0 0 8px;padding:0;list-style:none;display:grid;overflow:auto}.sci-history li button{text-align:left;width:100%;font:inherit;background:var(--bg);border:1px solid var(--line);color:var(--fg);cursor:pointer;border-radius:8px;padding:8px 10px;display:grid}.sci-history li button:hover{border-color:var(--accent)}.sci-hexpr{font-family:var(--mono);color:var(--muted);overflow-wrap:anywhere;font-size:.85rem}.sci-hres{font-variant-numeric:tabular-nums;font-weight:600}.sci-empty{color:var(--muted);font-size:.9rem}.calc-note{color:var(--muted);margin:4px 0 0;font-size:.8rem}.field.hidden{display:none}.where{background:var(--line);border-radius:7px;height:14px;display:flex;overflow:hidden}.where span{height:100%;display:block}.legend{color:var(--muted);flex-wrap:wrap;gap:4px 14px;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.w-net{background:var(--accent)}.w-fed{background:#b54708}.w-ss{background:#6b7280}.w-med{background:#9aa3b2}.w-state{background:#157347}.w-pre{background:#a855f7}.w-post{background:#f59e0b}.states{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px 12px;margin:8px 0 16px;padding:0;list-style:none;display:grid}.calc.wide{grid-template-columns:1fr}.cas-steps{gap:10px;margin:0;padding-left:1.2em;font-size:.92rem;display:grid}.cas-steps .rule{color:var(--muted);font-size:.85rem;display:block}.cas-steps .eq{font-family:var(--mono);white-space:pre-wrap;word-break:break-word}.result .big.expr{font-family:var(--mono);white-space:pre-wrap;word-break:break-word;font-size:1.35rem;font-weight:600}.result .note{color:var(--muted);font-size:.85rem}.mtx{border-collapse:collapse;vertical-align:middle;font-variant-numeric:tabular-nums;margin:4px 8px 4px 0;display:inline-table}.mtx td{font-family:var(--mono);padding:3px 9px;text-align:center!important;border:0!important}.mtx td.aug{border-left:1px solid var(--fg)!important}.mtx tr:first-child td:first-child{border-top-left-radius:6px}.mtx{border-left:2px solid var(--fg);border-right:2px solid var(--fg);border-radius:8px}.mgrid{gap:6px;display:grid}.mgrid input{font:inherit;font-family:var(--mono);border:1px solid var(--line);background:var(--bg);color:var(--fg);text-align:center;border-radius:6px;width:100%;min-width:0;padding:6px 4px}.mgrid input.aug{border-left:3px solid var(--accent)}.mgrid input:focus{outline:2px solid var(--accent);outline-offset:1px}.eqlist{gap:8px;display:grid}.eqlist input{font-family:var(--mono)}.eig{gap:12px;display:grid}.eig .lam{font-weight:600}
