@font-face{font-family:Familjen Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/62201545b028e8d7-s.0l4a4erwkg-j6.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Familjen Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/1f28a1525bf4a5c5-s.0oxsisjwf5w8a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Familjen Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/f5edcc6a132fb1ad-s.p.3ii__yurxaf4q.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Familjen Grotesk Fallback;src:local(Arial);ascent-override:108.37%;descent-override:23.79%;line-gap-override:0.0%;size-adjust:94.59%}.familjen_grotesk_a9845434-module__N6gXPW__className{font-family:Familjen Grotesk,Familjen Grotesk Fallback;font-style:normal}.familjen_grotesk_a9845434-module__N6gXPW__variable{--font-grotesk:"Familjen Grotesk", "Familjen Grotesk Fallback"}
@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/3bf0a7fbfaf92f8a-s.185fu60_s7xhz.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/ad2175b88e6bd6af-s.3hpgqf3c5o5ld.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/f9ea4dd7757ffe41-s.0btl7djgeog5e.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/fbe73f374d4c06e2-s.02kz5ehdag2r0.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/de1fefbe5297a568-s.3aamvj35z_s7m.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/da2b464f6ebc6f07-s.1vwa6irdhs_-x.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/72068b9941c12912-s.p.419o0z6lrmsw5.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/60f58a7a803855c6-s.2mgcr0scld764.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/187df20e17b435d1-s.1de5oe27h2kcs.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/5e8350fc289b169a-s.2m6nwxvnysiq2.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/f99ec718d2aa2628-s.2s656e8rzol1k.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/252b59f46c3165d8-s.445tgcafqxet_.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/2ce13b16b29213e7-s.0hl3_-74zo9b6.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/c8d3663ba40d1542-s.p.3t6wimnoqat92.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata Fallback;src:local(Times New Roman);ascent-override:99.62%;descent-override:26.07%;line-gap-override:0.0%;size-adjust:118.15%}.literata_c5ab806e-module__yozLTG__className{font-family:Literata,Literata Fallback}.literata_c5ab806e-module__yozLTG__variable{--font-literata:"Literata", "Literata Fallback"}
:root{--paper:#f3f4f1;--ink:#1c2128;--muted:#5b626c;--rule:#d8dad4;--red:#c8323c;--green:#17876d;--yellow:#e0a600;--blue:#2d5da8;--accent:var(--ink);--sans:var(--font-grotesk), system-ui, sans-serif;--serif:var(--font-literata), Georgia, serif;--measure:42rem;--gutter:2.25rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#171a1f;--ink:#e7e8e4;--muted:#a0a6ae;--rule:#30353d;--red:#e45e66;--green:#3cb893;--yellow:#f0c13a;--blue:#6f99e2;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-padding-top:2rem}body{background:var(--paper);color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;font-size:1.0625rem;line-height:1.7}.wrap{width:100%;max-width:calc(var(--measure) + var(--gutter) + 2rem);margin-inline:auto;padding-inline:1rem}a{color:inherit;text-decoration-line:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.2em;text-decoration-thickness:2px}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:2px}.site-header{font-family:var(--sans);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;padding-block:1.5rem;display:flex}.brand{align-items:center;gap:.6rem;font-size:1.0625rem;font-weight:600;text-decoration:none;display:inline-flex}.brand:hover{color:inherit}.mark{flex:none;transition:transform .45s cubic-bezier(.3,1.4,.5,1);display:block}.brand:hover .mark{transform:rotate(90deg)}.site-header ul{gap:1.25rem;list-style:none;display:flex}.site-header nav a{color:var(--muted);align-items:center;gap:.45rem;text-decoration:none;display:inline-flex}.site-header nav a:before{content:"";background:var(--accent);width:.55rem;height:.55rem}.site-header nav a:hover{color:var(--ink)}.hero{grid-template-columns:minmax(0,1fr) clamp(11rem,27vw,17rem);align-items:end;gap:2.5rem;padding-block:clamp(3rem,9vw,6rem) clamp(2.5rem,6vw,4rem);display:grid}.hero h1{font-family:var(--sans);letter-spacing:-.035em;max-width:10ch;font-size:clamp(2.75rem,8vw,5rem);font-weight:700;line-height:.95}.hero p{max-width:34ch;color:var(--muted);margin-top:1.5rem;font-size:clamp(1.2rem,2.6vw,1.45rem);line-height:1.45}.art svg{width:100%;height:auto;display:block}@media (max-width:640px){.hero{grid-template-columns:minmax(0,1fr);gap:1.75rem}.hero-art{order:-1;width:9rem}}.section{grid-template-columns:var(--gutter) minmax(0, 1fr);padding-block:0 3rem;display:grid}.cross-strip{shape-rendering:crispedges;grid-area:1/1/auto/-1;margin-bottom:2.25rem;display:block}.cross-strip pattern rect{fill:var(--accent)}.section:before{content:"";background:var(--accent);grid-column:1;width:.8rem;height:.8rem;margin-top:.55rem}.section:has(>.cross-strip):before{grid-row:2}.section>:not(.cross-strip){grid-column:2}.section h2{font-family:var(--sans);letter-spacing:-.01em;margin-bottom:1rem;font-size:1.5rem;font-weight:600;line-height:1.3}.section h2 a{text-decoration:none}.prose>*+*{margin-top:1.1em}.prose{max-width:66ch}.projects{gap:1.75rem;list-style:none;display:grid}.project-head{flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;display:flex}.project-head h3{font-family:var(--sans);font-size:1.2rem;font-weight:600}.status{font-family:var(--sans);color:var(--muted);font-size:.875rem}.project p{max-width:62ch;margin-top:.35rem}.posts{gap:1.5rem;list-style:none;display:grid}.post-date{font-family:var(--sans);color:var(--muted);font-variant-numeric:tabular-nums;font-size:.875rem;display:block}.post-title{font-family:var(--sans);font-size:1.2rem;font-weight:600;line-height:1.35}.posts p{max-width:62ch;margin-top:.25rem}.posts-covers li{grid-template-columns:10rem minmax(0,1fr);align-items:start;gap:1.25rem;display:grid}.post-thumb{display:block}@media (max-width:520px){.posts-covers li{grid-template-columns:minmax(0,1fr);gap:.75rem}}.empty{color:var(--muted);max-width:52ch}.more{font-family:var(--sans);margin-top:1.75rem}.links{font-family:var(--sans);flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1rem;font-size:1.125rem;list-style:none;display:flex}.article{padding-block:clamp(2.5rem,8vw,5rem) 3rem}.article-head{margin-bottom:2.5rem}.page-title{margin-bottom:2rem}.page-title,.article-head h1{font-family:var(--sans);letter-spacing:-.025em;max-width:20ch;margin-top:.5rem;font-size:clamp(2rem,6vw,3.25rem);font-weight:700;line-height:1.05}.article-cover{margin-bottom:2.5rem}.article .prose{font-size:1.125rem;line-height:1.75}.prose h2,.prose h3{font-family:var(--sans);margin-top:2em;font-weight:600;line-height:1.3}.prose h2{font-size:1.45rem}.prose h3{font-size:1.2rem}.prose ul,.prose ol{padding-left:1.25em}.prose li+li{margin-top:.35em}.prose blockquote{border-left:3px solid var(--yellow);color:var(--muted);padding-left:1em;font-style:italic}.prose code{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.88em}.prose :not(pre)>code{background:color-mix(in srgb, var(--ink) 7%, transparent);border-radius:3px;padding:.1em .3em}.prose pre{background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:4px;padding:1rem 1.15rem;line-height:1.55;overflow-x:auto}.prose img{max-width:100%;height:auto}.site-footer{border-top:1px solid var(--rule);font-family:var(--sans);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;padding-block:2.5rem 3rem;font-size:.875rem;display:flex}main.wrap>.site-footer{border:0}@media (max-width:480px){:root{--gutter:1.5rem}}@media (prefers-reduced-motion:reduce){.mark{transition:none}}:root{--c-red:var(--red);--c-blue:var(--blue);--c-yellow:var(--yellow);--c-green:var(--green);--c-ink:var(--muted);--yellow-text:#976b00}@media (prefers-color-scheme:dark){:root{--c-red:#e0525b;--c-blue:#5b86d0;--c-yellow:#b98c12;--c-green:#2fa682;--yellow-text:var(--yellow)}}.c-red{color:var(--red)}.c-blue{color:var(--blue)}.c-yellow{color:var(--yellow-text)}.c-green{color:var(--green)}.prose span.c-red,.prose span.c-blue,.prose span.c-yellow,.prose span.c-green{font-weight:600}.prose .katex{font-size:1.08em}.prose .katex-display{margin:1.6em 0;padding-block:.25em;overflow:auto hidden}.ponder{border-left:3px solid var(--blue);padding:.25rem 0 .25rem 1.1rem}.ponder-label{font-family:var(--sans);color:var(--blue);font-size:.9rem;font-weight:600}.ponder>*+*{margin-top:.5em}.derivation{border:1px solid var(--rule);border-radius:4px;padding:.75rem 1rem}.derivation summary{cursor:pointer;font-family:var(--sans);font-weight:600}.derivation[open] summary{margin-bottom:.5rem}.chart{font-family:var(--sans);margin-block:2.25em}.chart-title{margin-bottom:.4rem;font-size:1rem;font-weight:600}.chart-legend{color:var(--muted);flex-wrap:wrap;gap:.25rem 1.1rem;margin:0 0 .5rem;padding:0;font-size:.875rem;list-style:none;display:flex}.prose .chart-legend li+li{margin-top:0}.chart-legend li{align-items:center;gap:.4rem;display:inline-flex}.chart-frame{width:100%;position:relative}.chart-frame svg{touch-action:pan-y;display:block;overflow:visible}.chart .grid{stroke:var(--rule);stroke-width:1px}.chart .axis{stroke:var(--muted);stroke-width:1px}.chart .tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.chart .axis-label{fill:var(--muted);font-size:13px}.chart .ref{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 4}.chart .ref-label,.chart .marker-label{fill:var(--muted);font-size:12px}.chart .end-label{fill:var(--ink);font-size:12.5px}.chart .crosshair{stroke:var(--muted);stroke-width:1px}.chart [class^=l-]{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart .l-red{stroke:var(--c-red)}.chart .l-blue{stroke:var(--c-blue)}.chart .l-yellow{stroke:var(--c-yellow)}.chart .l-green{stroke:var(--c-green)}.chart .l-ink{stroke:var(--c-ink)}.chart [class^=m-]{stroke:var(--paper);stroke-width:2px}.chart .m-red{fill:var(--c-red)}.chart .m-blue{fill:var(--c-blue)}.chart .m-yellow{fill:var(--c-yellow)}.chart .m-green{fill:var(--c-green)}.chart .m-ink{fill:var(--c-ink)}.chart .band-red{fill:color-mix(in srgb, var(--c-red) 18%, transparent)}.chart .band-blue{fill:color-mix(in srgb, var(--c-blue) 18%, transparent)}.chart .band-yellow{fill:color-mix(in srgb, var(--c-yellow) 22%, transparent)}.chart .band-green{fill:color-mix(in srgb, var(--c-green) 18%, transparent)}.chart .band-ink{fill:color-mix(in srgb, var(--c-ink) 15%, transparent)}.chart-tip{background:var(--paper);border:1px solid var(--rule);min-width:150px;box-shadow:0 2px 10px color-mix(in srgb, var(--ink) 12%, transparent);pointer-events:none;border-radius:4px;padding:.45rem .6rem;font-size:.8rem;line-height:1.45;position:absolute}.chart-tip-x{color:var(--muted)}.chart-tip-row{align-items:center;gap:.4rem;display:flex}.chart-tip-row b{font-variant-numeric:tabular-nums;margin-left:auto}.sw{border-radius:2px;flex:none;width:.6rem;height:.6rem}.sw-red{background:var(--c-red)}.sw-blue{background:var(--c-blue)}.sw-yellow{background:var(--c-yellow)}.sw-green{background:var(--c-green)}.sw-ink{background:var(--c-ink)}.chart-caption{color:var(--muted);font-size:.9rem;font-family:var(--serif);margin-top:.5rem}.chart-data{color:var(--muted);margin-top:.4rem;font-size:.85rem}.chart-data summary{cursor:pointer}.chart-table-wrap{max-height:16rem;margin-top:.4rem;overflow:auto}.chart-data table{border-collapse:collapse;font-variant-numeric:tabular-nums}.chart-data th,.chart-data td{text-align:left;border-bottom:1px solid var(--rule);padding:.15rem 1rem .15rem 0}.diagram{font-family:var(--sans);margin-block:2.25em}.diagram svg{width:100%;height:auto;display:block}.diagram text{fill:var(--ink);font-size:13px}.diagram .muted{fill:var(--muted)}.explorer{font-family:var(--sans);margin-block:2.25em}.explorer-controls{flex-wrap:wrap;gap:.75rem 2rem;margin:.5rem 0 1rem;display:flex}.explorer-controls label{flex:1;gap:.2rem;min-width:10rem;display:grid}.explorer-controls span{color:var(--muted);font-size:.9rem}.explorer-controls b{color:var(--ink)}.explorer-controls input{width:100%;accent-color:var(--blue)}.strip{background:var(--paper);gap:2px;height:3.25rem;display:flex}.strip-cell{color:#fff;white-space:nowrap;border-radius:3px;justify-content:center;align-items:center;min-width:0;font-size:.85rem;font-weight:600;display:flex;overflow:hidden}.strip-skill{background:var(--blue)}.strip-luck{background:var(--red)}.strip-legend{font-family:var(--serif);color:var(--muted);margin-top:.6rem;font-size:.95rem}.explorer-readout{flex-wrap:wrap;gap:.5rem 2.25rem;margin:1.1rem 0 1.25rem;display:flex}.explorer-readout dt{color:var(--muted);font-size:.85rem}.explorer-readout dd{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:600}.luckline{margin-top:.5rem}.luckline-track{background:var(--rule);border-radius:999px;height:.75rem;position:relative}.luckline-skill{background:var(--blue);border-radius:999px 0 0 999px;position:absolute;inset:0 auto 0 0}.luckline-luck{background:repeating-linear-gradient(135deg, var(--red) 0 4px, transparent 4px 8px);border-radius:0 999px 999px 0;position:absolute;top:0;bottom:0;right:0}.luckline-dot{background:var(--ink);border:3px solid var(--paper);border-radius:50%;width:1.1rem;height:1.1rem;margin:-.55rem 0 0 -.55rem;position:absolute;top:50%}.luckline-ends{color:var(--muted);justify-content:space-between;gap:.5rem;margin-top:.45rem;font-size:.8rem;display:flex}.explorer-toggle{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.explorer-toggle button{font:inherit;border:1px solid var(--rule);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:.35rem .75rem;font-size:.85rem}.explorer-toggle button.is-on{border-color:var(--blue);color:var(--ink);box-shadow:inset 0 0 0 1px var(--blue)}@media (prefers-color-scheme:dark){.strip-cell{color:var(--paper)}}.untested{border:1px dashed var(--muted);border-radius:4px;padding:.85rem 1.1rem}.untested-label{font-family:var(--sans);color:var(--muted);font-size:.9rem;font-weight:600}.untested>*+*{margin-top:.5em}.chart .sweep{transform-box:fill-box;transform-origin:0;transition:transform 1.1s cubic-bezier(.45,0,.25,1)}.js .chart:not(.is-drawn) .sweep{transform:scaleX(0)}.chart .late{transition:opacity .45s}.js .chart:not(.is-drawn) .late{opacity:0}@media (prefers-reduced-motion:reduce){.js .chart:not(.is-drawn) .sweep{transform:none}.js .chart:not(.is-drawn) .late{opacity:1}.chart .sweep,.chart .late{transition:none}}.post-layout{position:relative}.prose h2,.prose h3{scroll-margin-top:1.5rem}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.toc-side,.toc-inline{font-family:var(--sans);font-size:.875rem;line-height:1.4}.toc-side ol,.toc-inline ol{margin:0;padding:0;list-style:none}.toc-side a,.toc-inline a{border-left:2px solid var(--rule);color:var(--muted);padding:.3rem 0 .3rem .75rem;text-decoration:none;display:block}.toc-side a:hover,.toc-inline a:hover{color:var(--ink)}.toc-side a[aria-current],.toc-inline a[aria-current]{color:var(--ink);border-left-color:var(--yellow);font-weight:600}.toc-sub a{padding-left:1.5rem;font-size:.8125rem}.toc-title{margin-bottom:.6rem;font-weight:600}.toc-side{display:none}.toc-inline{border:1px solid var(--rule);border-radius:4px;margin-bottom:2.25rem;padding:.75rem 1rem}.toc-inline summary{cursor:pointer;font-weight:600}.toc-inline[open] summary{margin-bottom:.6rem}@media (min-width:1200px){.toc-inline{display:none}.toc-side{width:12rem;display:block;position:absolute;top:0;bottom:0;right:calc(100% + 2.25rem)}.toc-inner{max-height:calc(100vh - 4rem);position:sticky;top:2rem;overflow-y:auto}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.drops-buttons{flex-wrap:wrap;gap:.5rem;margin:.5rem 0 1rem;display:flex}.drops-buttons button{font:inherit;border:1px solid var(--blue);background:var(--blue);color:#fff;cursor:pointer;border-radius:999px;padding:.4rem .9rem;font-size:.875rem}.drops-buttons button.ghost{color:var(--muted);border-color:var(--rule);background:0 0}.drops-buttons button:disabled{opacity:.5;cursor:default}.drops-strip{height:4rem;position:relative}.drops-layer{pointer-events:none;position:absolute;inset:0}.drop{background:var(--paper);width:5px;height:5px;box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 55%, transparent);border-radius:50%;margin:-2.5px 0 0 -2.5px;animation:.38s cubic-bezier(.3,0,.6,1) both drop-fall;position:absolute}@keyframes drop-fall{0%{opacity:0;transform:translateY(-2.6rem)}60%{opacity:1}to{opacity:1;transform:none}}.funnel{margin-top:.25rem;padding-left:2.6rem;position:relative}.funnel svg{border-bottom:1px solid var(--muted);width:100%;height:150px;display:block}.funnel-labels{height:150px;color:var(--muted);font-variant-numeric:tabular-nums;flex-direction:column;justify-content:space-between;font-size:.75rem;display:flex;position:absolute;top:0;left:0}.funnel-band{fill:color-mix(in srgb, var(--c-blue) 14%, transparent)}.funnel-p{stroke:var(--muted);stroke-width:1.5px;stroke-dasharray:5 4}.funnel-line{fill:none;stroke:var(--c-blue);stroke-width:2px;stroke-linejoin:round}.funnel-axis{color:var(--muted);justify-content:space-between;gap:.5rem;margin-top:.3rem;font-size:.75rem;display:flex}.ladder{font-family:var(--sans);margin-block:2.25em}.ladder-row+.ladder-row{margin-top:1.4rem}.ladder-name{color:var(--muted);font-size:.875rem}.ladder-track{height:6.6rem;margin:0 1.25rem;position:relative}.ladder-axis{border-top:1.5px solid var(--muted);position:absolute;top:3.1rem;left:0;right:0}.ladder-arcs{width:100%;height:1.7rem;position:absolute;top:3.25rem;left:0;overflow:visible}.ladder-arc{fill:none;stroke:var(--muted);stroke-width:1.25px;transition:opacity .45s}.ladder-mark{white-space:nowrap;flex-direction:column;justify-content:flex-end;align-items:center;height:3.1rem;font-size:.75rem;line-height:1.25;transition:opacity .35s,transform .35s;display:flex;position:absolute;top:0;transform:translate(-50%)}.ladder-v{font-variant-numeric:tabular-nums;font-size:.875rem;font-weight:600}.ladder-dot{background:var(--blue);border:2px solid var(--paper);border-radius:50%;width:.7rem;height:.7rem;margin-top:.2rem;margin-bottom:-.35rem}.ladder-step{color:var(--muted);white-space:nowrap;font-size:.75rem;transition:opacity .35s;position:absolute;top:5.1rem;transform:translate(-50%)}.ladder-end{color:var(--muted);font-size:.7rem;position:absolute;top:3.35rem}.ladder-end-l{left:0;transform:translate(-50%)}.ladder-end-r{right:0;transform:translate(50%)}.ladder-note{font-family:var(--serif);color:var(--muted);font-size:.95rem}.js .ladder:not(.is-drawn) .ladder-mark{opacity:0;transform:translate(-50%,-.6rem)}.js .ladder:not(.is-drawn) .ladder-arc,.js .ladder:not(.is-drawn) .ladder-step{opacity:0}.luckgrid{font-family:var(--sans);margin-block:2.25em}.luckgrid table{border-collapse:separate;border-spacing:3px;font-variant-numeric:tabular-nums;width:100%}.luckgrid th{color:var(--muted);text-align:center;padding:.2rem;font-size:.8rem;font-weight:500}.luckgrid th[scope=row]{text-align:left;white-space:nowrap;padding-right:.5rem}.luckgrid td{text-align:center;background:color-mix(in oklab, var(--red) var(--l), var(--paper));color:var(--ink);border-radius:3px;padding:.85rem .25rem;font-weight:600}.luckgrid td[data-strong]{color:#fff}@media (prefers-color-scheme:dark){.luckgrid td[data-strong]{color:var(--paper)}}.two-skilled .strip-cell.grow{transition:flex-grow 1.2s cubic-bezier(.45,0,.25,1)}.js .two-skilled:not(.is-drawn) .strip-cell.grow{flex-grow:1!important}@media (prefers-reduced-motion:reduce){.drop{animation:none}.js .ladder:not(.is-drawn) .ladder-mark{opacity:1;transform:translate(-50%)}.js .ladder:not(.is-drawn) .ladder-arc,.js .ladder:not(.is-drawn) .ladder-step{opacity:1}.ladder-mark,.ladder-arc,.ladder-step,.two-skilled .strip-cell.grow{transition:none}}.shelf{grid-template-columns:repeat(3,minmax(0,1fr));gap:2.75rem 1.5rem;margin:2rem 0 1rem;padding:0;list-style:none;display:grid}.prose .shelf li+li{margin-top:0}@media (max-width:600px){.shelf{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.25rem 1.25rem}}.book{flex-direction:column;display:flex}.book-scene{perspective:1100px;width:8.25rem;height:12rem;margin:0 auto 1.4rem;position:relative}.book-scene:after{content:"";background:radial-gradient(closest-side, color-mix(in srgb, var(--ink) 28%, transparent), transparent);z-index:-1;height:18px;position:absolute;bottom:-14px;left:4%;right:-6%}.book-3d{width:100%;height:100%;transform-style:preserve-3d;transition:transform .65s cubic-bezier(.2,.7,.2,1);position:relative;transform:rotateY(26deg)}.book:hover .book-3d,.book:focus-within .book-3d{transform:rotateY(4deg)translateY(-6px)}.book-front,.book-back,.book-spine{backface-visibility:hidden;height:100%;position:absolute;top:0}.book-front{background:var(--cover);color:var(--cover-ink);transform:translateZ(calc(var(--t) / 2));font-family:var(--sans);border-radius:2px 4px 4px 2px;flex-direction:column;padding:.7rem .75rem .8rem .95rem;display:flex;inset:0;overflow:hidden;box-shadow:inset 5px 0 6px -4px #00000059,inset -1px 0 #ffffff14}.book-front .cross-strip{--accent:var(--cover-ink);opacity:.85;margin:0 0 .85rem}.book-cover-title{letter-spacing:-.01em;font-size:1rem;font-weight:700;line-height:1.1}.book-cover-author{opacity:.9;margin-top:auto;font-size:.7rem;line-height:1.25}.book-back{background:var(--cover-dark);transform:translateZ(calc(var(--t) / -2)) rotateY(180deg);border-radius:4px 2px 2px 4px;inset:0}.book-spine{width:var(--t);background:var(--cover-dark);color:var(--cover-ink);transform-origin:0;transform:translateZ(calc(var(--t) / -2)) rotateY(-90deg);justify-content:center;align-items:center;display:flex;left:0;overflow:hidden}.book-spine span{writing-mode:vertical-rl;font-family:var(--sans);white-space:nowrap;text-overflow:ellipsis;max-height:88%;font-size:.6rem;font-weight:600;overflow:hidden}.cover-blue{--cover:var(--blue);--cover-dark:color-mix(in oklab, var(--blue) 78%, black);--cover-ink:#fff}.cover-red{--cover:var(--red);--cover-dark:color-mix(in oklab, var(--red) 78%, black);--cover-ink:#fff}.cover-green{--cover:var(--green);--cover-dark:color-mix(in oklab, var(--green) 78%, black);--cover-ink:#fff}.cover-yellow{--cover:var(--yellow);--cover-dark:color-mix(in oklab, var(--yellow) 80%, black);--cover-ink:#1c2128}.cover-ink{--cover:#262c35;--cover-dark:#181c22;--cover-ink:#f3f4f1}.cover-paper{--cover:#e9eae5;--cover-dark:#cfd1ca;--cover-ink:#1c2128}@media (prefers-color-scheme:dark){.cover-blue,.cover-red,.cover-green{--cover-ink:var(--paper)}.cover-ink{--cover:#3a414c;--cover-dark:#2b3139}}.book-info{font-family:var(--sans)}.book-title{font-size:.95rem;font-weight:600;line-height:1.3;display:block}span.book-title{color:var(--ink)}.book-meta{color:var(--muted);margin-top:.25rem;font-size:.8rem;line-height:1.4}.book-why{font-family:var(--serif);margin-top:.4rem;font-size:.9rem;line-height:1.5}@media (prefers-reduced-motion:reduce){.book-3d{transition:none}}:root{--spring:cubic-bezier(.34, 1.56, .64, 1)}.drops-buttons button,.explorer-toggle button{transition:transform .26s var(--spring), box-shadow .2s ease, background-color .2s ease, border-color .2s ease, color .2s ease}@media (hover:hover){.drops-buttons button:not(:disabled):hover{box-shadow:0 4px 12px color-mix(in srgb, var(--blue) 30%, transparent);transform:translateY(-2px)}.drops-buttons button.ghost:not(:disabled):hover{box-shadow:0 3px 10px color-mix(in srgb, var(--ink) 12%, transparent);color:var(--ink);border-color:var(--muted)}.explorer-toggle button:hover{border-color:var(--muted);color:var(--ink);transform:translateY(-1px)}}.drops-buttons button:not(:disabled):active,.explorer-toggle button:active{box-shadow:none;transition-duration:90ms;transform:translateY(1px)scale(.95)}.explorer-toggle button.is-on{background:color-mix(in srgb, var(--blue) 10%, transparent);animation:pill-pop .36s var(--spring)}@keyframes pill-pop{0%{transform:scale(.93)}to{transform:scale(1)}}.explorer-controls input[type=range]{appearance:none;cursor:pointer;background:0 0;height:1.5rem}.explorer-controls input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--blue) var(--fill,0%), var(--rule) var(--fill,0%));border-radius:3px;height:6px}.explorer-controls input[type=range]::-moz-range-track{background:linear-gradient(to right, var(--blue) var(--fill,0%), var(--rule) var(--fill,0%));border-radius:3px;height:6px}.explorer-controls input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--blue);border:3px solid var(--paper);width:18px;height:18px;box-shadow:0 0 0 1px var(--blue), 0 1px 4px color-mix(in srgb, var(--ink) 25%, transparent);transition:transform .22s var(--spring);border-radius:50%;margin-top:-6px}.explorer-controls input[type=range]::-moz-range-thumb{background:var(--blue);border:3px solid var(--paper);width:12px;height:12px;box-shadow:0 0 0 1px var(--blue), 0 1px 4px color-mix(in srgb, var(--ink) 25%, transparent);transition:transform .22s var(--spring);border-radius:50%}.explorer-controls input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.15)}.explorer-controls input[type=range]:active::-webkit-slider-thumb{transform:scale(1.35)}.explorer-controls input[type=range]:hover::-moz-range-thumb{transform:scale(1.15)}.explorer-controls input[type=range]:active::-moz-range-thumb{transform:scale(1.35)}.explorer-controls input[type=range]:focus-visible{outline-offset:4px}.chart-data summary,.derivation summary,.toc-inline summary{list-style:none}.chart-data summary::-webkit-details-marker{display:none}.derivation summary::-webkit-details-marker{display:none}.toc-inline summary::-webkit-details-marker{display:none}.chart-data summary:before,.derivation summary:before,.toc-inline summary:before{content:"";width:.4em;height:.4em;transition:transform .24s var(--spring);border-bottom:1.5px solid;border-right:1.5px solid;margin:0 .6em .12em .1em;display:inline-block;transform:rotate(-45deg)}.chart-data[open] summary:before,.derivation[open] summary:before,.toc-inline[open] summary:before{transform:rotate(45deg)}@media (prefers-reduced-motion:reduce){.drops-buttons button,.explorer-toggle button,.chart-data summary:before,.derivation summary:before,.toc-inline summary:before{transition:none}.explorer-controls input[type=range]::-webkit-slider-thumb{transition:none}.explorer-toggle button.is-on{animation:none}.drops-buttons button:not(:disabled):hover,.drops-buttons button:not(:disabled):active,.explorer-toggle button:hover,.explorer-toggle button:active{transform:none}}.prose .code{border:1px solid var(--rule);border-radius:6px;margin-block:1.75em;overflow:hidden}.code-bar{border-bottom:1px solid var(--rule);background:color-mix(in srgb, var(--ink) 4%, transparent);font-family:var(--sans);color:var(--muted);justify-content:space-between;align-items:center;padding:.35rem .5rem .35rem .9rem;font-size:.75rem;display:flex}.code-bar button{font:inherit;border:1px solid var(--rule);background:var(--paper);color:var(--muted);cursor:pointer;transition:transform .26s var(--spring), color .2s ease, border-color .2s ease;border-radius:999px;padding:.2rem .65rem}@media (hover:hover){.code-bar button:hover{color:var(--ink);border-color:var(--muted);transform:translateY(-1px)}}.code-bar button:active{transition-duration:90ms;transform:scale(.94)}.code-bar button.is-copied{color:var(--green);border-color:var(--green);animation:pill-pop .36s var(--spring)}.prose .code pre{background:color-mix(in srgb, var(--ink) 2.5%, transparent);border-radius:0;margin:0}.prose .code pre code{font-size:.86em;line-height:1.6}.hljs-keyword,.hljs-literal{color:var(--blue);font-weight:600}.hljs-string{color:var(--green)}.hljs-number{color:var(--red)}.hljs-built_in{color:var(--yellow-text)}.hljs-comment{color:var(--muted);font-style:italic}.hljs-title.function_{color:var(--ink);font-weight:600}.hljs-params{color:var(--ink)}@media (prefers-reduced-motion:reduce){.code-bar button{transition:none}.code-bar button.is-copied{animation:none}}
