@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/source-serif-4-latin-400-normal.DJ5YJwmz.woff2)format("woff2"),url(/_astro/source-serif-4-latin-400-normal.C1O10bxN.woff)format("woff")}@font-face{font-family:"Source Serif 4";font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/source-serif-4-latin-400-italic.0j97Jm6B.woff2)format("woff2"),url(/_astro/source-serif-4-latin-400-italic.DZulBB6l.woff)format("woff")}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/source-serif-4-latin-600-normal.DouSKlru.woff2)format("woff2"),url(/_astro/source-serif-4-latin-600-normal.DeJomR3S.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff")}:root{--paper:#faf9fc;--ink:#170d22;--muted:#5b5266;--rule:#e4dcec;--tint:#ede6f4;--tint-rule:#d6c8e4;--accent:#581c87;--accent-hover:#3f1263;--accent-soft:#e9ddf5;--gold:#d4a03a;--serif:"Source Serif 4", Georgia, "Times New Roman", serif;--mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--wrap:1040px;--gutter:40px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--paper);color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:19px;line-height:1.6}img,svg{max-width:100%}a{color:var(--accent)}a:hover{color:var(--accent-hover)}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible+label{outline:2px solid var(--accent);outline-offset:2px}.gold a:focus-visible,.gold button:focus-visible{outline-color:var(--ink)}.skip{z-index:10;background:var(--ink);color:#fff;font-family:var(--mono);padding:10px 16px;font-size:14px;position:absolute;top:-60px;left:12px}.skip:focus{color:#fff;top:12px}.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}.wrap{max-width:var(--wrap);padding:0 var(--gutter);margin:0 auto}.col{border-left:1px solid var(--accent);max-width:900px;padding-left:48px}.col.narrow{max-width:808px}.pad{padding-top:80px;padding-bottom:80px}.sec{border-top:1px solid var(--rule)}.sec.hero,.sec.tint,.sec.gold,.sec.tint+.sec,.sec.gold+.sec{border-top:0}.tint{background:var(--tint)}.gold{background:var(--gold)}.lbl{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0;font-size:12px;font-weight:500}.ml{font-family:var(--mono);letter-spacing:.02em;color:var(--muted);font-size:13px}.mut{color:var(--muted)}.h2{letter-spacing:-.02em;margin:0 0 36px;font-size:44px;font-weight:600;line-height:1.08;position:relative}.h2:before{content:"";background:var(--gold);width:32px;height:3px;position:absolute;top:.55em;left:-48px}.gold .h2:before{background:var(--ink)}.lead-in{color:var(--muted);margin:-16px 0 32px;font-size:18px}.btn{background:var(--accent);color:#fff;cursor:pointer;min-height:48px;font-family:var(--mono);letter-spacing:.03em;border:0;border-radius:2px;align-items:center;gap:12px;padding:0 24px;font-size:14px;text-decoration:none;display:inline-flex}.btn:hover{background:var(--accent-hover);color:#fff}.btn.ink{background:var(--ink)}.btn.ink:hover{background:var(--accent)}.btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.btn .arr{transition:transform .15s}.btn:hover .arr{transform:translate(3px)}.tl{font-family:var(--mono);letter-spacing:.03em;color:var(--ink);text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:6px;font-size:14px;text-decoration-thickness:2px}.tl:hover{color:var(--accent)}.site-header{border-bottom:1px solid var(--rule);position:relative}.site-header .bar{justify-content:space-between;align-items:center;gap:24px;height:72px;display:flex}.logo{letter-spacing:-.01em;color:var(--ink);font-size:22px;font-weight:600;text-decoration:none}.logo:hover{color:var(--ink)}.nav{align-items:center;gap:28px;display:flex}.nav a{color:var(--ink);text-decoration:none}.nav a:hover,.nav a.cta{color:var(--accent)}.menu{display:none}.menu summary{cursor:pointer;min-height:44px;color:var(--ink);align-items:center;gap:8px;list-style:none;display:inline-flex}.menu summary::-webkit-details-marker{display:none}.menu nav{z-index:5;background:var(--paper);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);flex-direction:column;padding:8px 20px 16px;display:flex;position:absolute;top:72px;left:0;right:0}.menu nav a{border-bottom:1px solid var(--rule);min-height:48px;color:var(--ink);align-items:center;text-decoration:none;display:flex}.menu nav a.cta{color:var(--accent)}.site-footer .fgrid{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding-top:40px;padding-bottom:48px;display:grid}.site-footer .brand{letter-spacing:-.01em;font-size:20px;font-weight:600}.site-footer .meta{flex-direction:column;gap:4px;display:flex}.site-footer .meta a{color:var(--muted)}.icons{gap:8px;display:flex}.ic{width:44px;height:44px;color:var(--ink);border-radius:8px;justify-content:center;align-items:center;transition:background .15s;display:inline-flex}.ic:hover{background:var(--tint);color:var(--ink)}.ic .li{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round}.hero .col{padding-top:104px;padding-bottom:88px}.hero-label{font-family:var(--mono);color:var(--accent);margin:0 0 24px;font-size:14px}.hero h1{letter-spacing:-.025em;margin:0 0 28px;font-size:68px;font-weight:600;line-height:1.04}.hero-sub{max-width:560px;color:var(--muted);margin:0 0 40px;font-size:21px;line-height:1.5}.lines{width:100%;height:auto;margin-top:64px;display:block;overflow:visible}.w{fill:var(--accent);transform-box:fill-box;transform-origin:50%;animation:1s cubic-bezier(.2,.7,.2,1) both settle}.w.g{animation-name:settle,gold;animation-duration:1s,.6s;animation-timing-function:cubic-bezier(.2,.7,.2,1),ease-out;animation-fill-mode:both}.lines.armed .w{opacity:0;animation:none}.lines.armed.play .w{animation:1s cubic-bezier(.2,.7,.2,1) both settle}.lines.armed.play .w.g{animation-name:settle,gold;animation-duration:1s,.6s;animation-timing-function:cubic-bezier(.2,.7,.2,1),ease-out;animation-fill-mode:both}.up{opacity:0;animation:.7s ease-out forwards up;transform:translateY(10px)}@keyframes up{to{opacity:1;transform:none}}@keyframes settle{0%{transform:translate(var(--x), var(--y)) rotate(var(--r));opacity:0}to{opacity:1;transform:none}}@keyframes gold{to{fill:var(--gold)}}.md{grid-template-columns:300px minmax(0,1fr);align-items:stretch;gap:28px;display:grid;position:relative}.md>input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.tlist{border-top:1px solid var(--rule)}.trow{border-bottom:1px solid var(--rule);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:58px;padding:0 18px;font-size:18px;font-weight:600;line-height:1.25;transition:background .15s;display:flex}.trow:hover{background:var(--tint)}.trow .k{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-size:11px;font-weight:500}.panels{display:flex}.panel{background:var(--tint);flex-direction:column;flex:1;justify-content:center;padding:40px;display:none}.panel .pt{letter-spacing:-.01em;margin:0 0 12px;font-size:30px;font-weight:600;line-height:1.2}.panel .links{flex-wrap:wrap;gap:12px;display:flex}.cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.card{background:var(--accent);color:#fff;border-radius:2px;flex-direction:column;gap:14px;min-height:250px;padding:32px 28px;display:flex}.card svg{fill:none;stroke:var(--gold);stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round}.card h3{letter-spacing:-.01em;margin:8px 0 0;font-size:25px;font-weight:600;line-height:1.2}.card p{color:var(--accent-soft);margin:0;font-size:17px;line-height:1.55}.flowbox{position:relative}.flow{text-align:center;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin:0;padding:0;list-style:none;display:grid}.track{background:var(--rule);height:2px;position:absolute;top:27px;left:calc(12.5% - 9px);right:calc(12.5% - 9px)}.fill{background:var(--accent);transform-origin:0;position:absolute;inset:0}.node{z-index:1;border:2px solid var(--accent);background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;display:inline-flex;position:relative}.step:last-child .node{background:var(--gold);border-color:var(--gold);color:var(--ink)}.node svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round}.st{margin:16px 0 4px;font-size:20px;font-weight:600}.sd{color:var(--muted);margin:0;font-size:16px}.flowbox.armed .fill{transform:scaleX(0)}.flowbox.armed .node{background:var(--paper);border-color:var(--rule);color:var(--muted);transform:scale(.85)}.flowbox.armed .stx{opacity:0;transform:translateY(8px)}.flowbox.play .fill{animation:2.4s linear .3s forwards drawx}.flowbox.play .node{animation:.45s ease-out forwards pop}.flowbox.play .step:last-child .node{animation-name:popg}.flowbox.play .stx{animation:.5s ease-out forwards up}.flowbox.play .step:first-child .node{animation-delay:.3s}.flowbox.play .step:first-child .stx{animation-delay:.45s}.flowbox.play .step:nth-child(2) .node{animation-delay:1.1s}.flowbox.play .step:nth-child(2) .stx{animation-delay:1.25s}.flowbox.play .step:nth-child(3) .node{animation-delay:1.9s}.flowbox.play .step:nth-child(3) .stx{animation-delay:2.05s}.flowbox.play .step:nth-child(4) .node{animation-delay:2.7s}.flowbox.play .step:nth-child(4) .stx{animation-delay:2.85s}@keyframes drawx{to{transform:scaleX(1)}}@keyframes drawy{to{transform:scaleY(1)}}@keyframes pop{to{background:var(--accent);border-color:var(--accent);color:#fff;transform:none}}@keyframes popg{to{background:var(--gold);border-color:var(--gold);color:var(--ink);transform:none}}.faqs{border-bottom:1px solid var(--tint-rule)}.faqs details{border-top:1px solid var(--tint-rule)}.faqs summary{cursor:pointer;justify-content:space-between;align-items:center;gap:20px;min-height:68px;padding:16px 0;font-size:20px;font-weight:600;list-style:none;display:flex}.faqs summary::-webkit-details-marker{display:none}.faqs summary:hover{color:var(--accent)}.faqs summary svg{flex:none}.faqs details[open] .vert{display:none}.faqs details p{max-width:640px;color:var(--muted);margin:0;padding:0 0 24px}.about{grid-template-columns:180px minmax(0,1fr);align-items:center;gap:40px;display:grid}.about img{object-fit:cover;border-radius:50%;width:180px;height:180px;display:block}.about .award{font-family:var(--mono);color:var(--accent);margin:0 0 14px;font-size:14px}.about p{max-width:620px}.lead{margin:-12px 0 36px;font-size:24px;line-height:1.4}.contact-row{flex-wrap:wrap;align-items:center;gap:16px 24px;display:flex}.chip{border:1px solid var(--ink);background:var(--paper);align-items:center;gap:12px;min-height:48px;padding:0 0 0 16px;display:inline-flex}.chip .addr{font-family:var(--mono);color:var(--ink);font-size:15px}.cp{border:0;border-left:1px solid var(--ink);background:var(--tint);min-height:46px;color:var(--accent);cursor:pointer;font-family:var(--mono);letter-spacing:.04em;padding:0 16px;font-size:13px}.cp[hidden]{display:none}.page-head{padding-top:72px;padding-bottom:40px}.page-head h1{letter-spacing:-.02em;margin:0 0 16px;font-size:52px;font-weight:600;line-height:1.08}.page-head .dek{color:var(--muted);max-width:620px;margin:0;font-size:21px;line-height:1.5}.wsec{margin-bottom:80px}.series-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.series-card{background:var(--gold);min-height:250px;color:var(--ink);border-radius:2px;flex-direction:column;gap:12px;padding:32px 28px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}.series-card:hover{color:var(--ink);transform:translateY(-3px);box-shadow:0 12px 28px #170d2224}.series-card .lbl{color:var(--ink)}.series-card .t{letter-spacing:-.01em;margin:0;font-size:27px;font-weight:600;line-height:1.2}.series-card p{margin:0;font-size:17px;line-height:1.55}.go{font-family:var(--mono);letter-spacing:.03em;align-items:center;gap:10px;margin-top:auto;font-size:14px;display:inline-flex}.go svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}.series-card:hover .go svg{transform:translate(3px)}.pcards{flex-direction:column;gap:20px;margin:0;padding:0;list-style:none;display:flex}.pcard{background:var(--tint);color:var(--ink);border-radius:2px;grid-template-columns:minmax(0,1fr) 300px;align-items:center;gap:32px;padding:28px;text-decoration:none;transition:background .15s,transform .15s,box-shadow .15s;display:grid}.pcard:hover{color:var(--ink);background:var(--accent-soft);transform:translateY(-2px);box-shadow:0 12px 28px #170d2214}.pcard:hover .t,.pcard .lbl{color:var(--accent)}.pcard .t{margin:10px 0;font-size:23px;font-weight:600;line-height:1.3;transition:color .15s}.pcard .d{color:var(--muted);margin:0 0 16px;font-size:17px;line-height:1.55}.pc-img{aspect-ratio:1200/630;object-fit:cover;background:var(--paper);border-radius:2px;width:100%;height:auto;display:block}@media (prefers-reduced-motion:reduce){.pcard,.series-card,.go svg{transition:none}.pcard:hover,.series-card:hover{transform:none}}.plist{border-top:1px solid var(--rule);margin:0;padding:0;list-style:none}.plist li{border-bottom:1px solid var(--rule)}.plist a{color:var(--ink);padding:24px 0;text-decoration:none;display:block}.plist a:hover .t{color:var(--accent)}.plist .t{margin:6px 0;font-size:22px;font-weight:600;line-height:1.3}.plist .d{color:var(--muted);margin:0;font-size:17px}.post-head{padding-top:64px;padding-bottom:32px}.crumbs{margin-bottom:32px}.crumbs a{color:var(--muted)}.post-head h1{letter-spacing:-.02em;margin:0 0 20px;font-size:48px;font-weight:600;line-height:1.1}.post-head .dek{margin:0 0 32px;font-size:22px;line-height:1.5}.byline{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:8px 18px;padding:16px 0;display:flex}.byline a{color:var(--ink);text-decoration-color:var(--accent)}.toc{background:var(--tint);margin-bottom:48px;padding:24px 28px}.toc ul{flex-direction:column;gap:6px;margin:0;padding:0;font-size:16px;list-style:none;display:flex}.toc li.sub{padding-left:18px}.toc a{color:var(--ink);text-decoration-color:var(--tint-rule)}.toc a:hover{color:var(--accent)}.prose{max-width:720px}.prose>*{margin-top:0;margin-bottom:24px}.prose h2{letter-spacing:-.01em;margin:56px 0 16px;scroll-margin-top:24px;font-size:30px;font-weight:600;line-height:1.2}.prose h3{margin:40px 0 12px;scroll-margin-top:24px;font-size:23px;font-weight:600;line-height:1.3}.prose h4{margin:32px 0 8px;font-size:19px;font-weight:600}.prose ul,.prose ol{padding-left:24px}.prose li{margin-bottom:8px}.prose li>p{margin:0 0 8px}.prose blockquote{border-left:3px solid var(--gold);color:var(--muted);margin-left:0;padding:4px 0 4px 24px}.prose hr{border:0;border-top:1px solid var(--rule);margin:48px 0}.prose img{border:1px solid var(--rule);background:#fff;border-radius:2px;height:auto;margin:8px 0;display:block}.prose img+em,.prose p>img+br+em{display:block}.prose :not(pre)>code{font-family:var(--mono);background:var(--tint);overflow-wrap:anywhere;border-radius:3px;padding:.1em .35em;font-size:.84em}.prose pre{font-family:var(--mono);border:1px solid var(--rule);border-radius:2px;padding:20px 22px;font-size:14px;line-height:1.6;overflow-x:auto;background:#f6f3f9!important}.prose pre code{font-family:inherit}.prose table{border-collapse:collapse;width:100%;font-size:16px;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--rule);vertical-align:top;padding:10px 12px}.prose th{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom-color:var(--ink);font-size:12px;font-weight:500}.prose td p{margin:0}.prose a{overflow-wrap:anywhere}.next{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);color:var(--ink);margin:56px 0 48px;padding:28px 0;text-decoration:none;display:block}.next:hover .t{color:var(--accent)}.next .t{margin:8px 0 0;font-size:24px;font-weight:600;line-height:1.25}.related{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin:16px 0 56px;display:grid}.related a{color:var(--ink);text-decoration:none}.related a:hover .t{color:var(--accent)}.related .t{margin:8px 0 0;font-size:19px;font-weight:600;line-height:1.35}.feedback{background:var(--tint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-bottom:56px;padding:32px;display:flex}.feedback p{margin:0;font-size:24px;font-weight:600;line-height:1.25}.author{border-top:1px solid var(--rule);grid-template-columns:56px minmax(0,1fr);align-items:center;gap:20px;padding:28px 0 96px;display:grid}.author img{object-fit:cover;border-radius:50%;width:56px;height:56px;display:block}.author p{margin:0}.simple{padding-top:72px;padding-bottom:96px}.simple h1{letter-spacing:-.02em;margin:0 0 24px;font-size:48px;font-weight:600;line-height:1.1}.simple p{max-width:640px}@media (prefers-reduced-motion:reduce){.w{opacity:1;animation:none;transform:none}.w.g{fill:var(--gold)}.up{opacity:1;animation:none;transform:none}}@media (width<=760px){:root{--gutter:20px}.col{border-left:0;padding-left:0}.h2:before{display:none}.pad{padding-top:60px;padding-bottom:60px}.h2{margin-bottom:28px;font-size:34px}.site-header .nav{display:none}.menu{display:block}.hero .col{padding-top:56px;padding-bottom:64px}.hero h1{font-size:38px}.hero-sub{font-size:19px}.md{grid-template-columns:minmax(0,1fr);gap:20px}.panel{padding:28px 24px}.panel .pt{font-size:24px}.cards{grid-template-columns:minmax(0,1fr);gap:16px}.card{min-height:0;padding:28px 24px}.flow{text-align:left;grid-template-columns:minmax(0,1fr);gap:0}.track{width:2px;height:auto;inset:28px auto 28px 27px}.fill{transform-origin:top}.flowbox.armed .fill{transform:scaleY(0)}.flowbox.play .fill{animation-name:drawy}.step{grid-template-columns:56px minmax(0,1fr);align-items:center;column-gap:20px;padding-bottom:28px;display:grid}.step:last-child{padding-bottom:0}.st{margin:0 0 2px}.about{grid-template-columns:minmax(0,1fr);gap:24px}.about img{width:120px;height:120px}.lead{font-size:21px}.site-footer .fgrid{grid-template-columns:minmax(0,1fr)}.page-head h1,.simple h1{font-size:38px}.post-head h1{font-size:34px}.post-head .dek{font-size:19px}.series-cards,.related{grid-template-columns:minmax(0,1fr)}.pcard{grid-template-columns:minmax(0,1fr);gap:18px;padding:20px}.pc-img{order:-1}.series-card{min-height:0;padding:28px 24px}.wsec{margin-bottom:56px}.prose h2{font-size:26px}.feedback{padding:24px}.feedback p{font-size:21px}}
