.hedera[data-astro-cid-plqebr32]{width:100%;height:auto;display:block;overflow:visible}.hedera-stem[data-astro-cid-plqebr32]{stroke:currentColor;stroke-width:1.2px;stroke-linecap:round}.hedera-leaf[data-astro-cid-plqebr32]{fill:currentColor}.hedera-vein[data-astro-cid-plqebr32]{stroke:var(--paper);stroke-width:.8px;stroke-linecap:round}.work-folio{max-width:82rem;margin-inline:auto;padding:3.5rem 4rem 2rem}.folio-opening{grid-template-columns:4fr 8fr;align-items:center;gap:5rem;padding-bottom:3.5rem;display:grid}.folio-title h1{margin:0;font-size:clamp(80px,8vw,120px)}.folio-title-rule{width:260px;height:48px;color:var(--accent);display:block;overflow:hidden}.folio-title-rule .library-glyph{width:260px;margin-top:-24px;display:block}.folio-lede{text-wrap:pretty;margin:0;font-size:24px;line-height:1.45}.folio-index{font:400 16px/1.35 var(--font-ui);flex-wrap:wrap;column-gap:1.4rem;margin-top:1rem;display:flex}.folio-index a{text-underline-offset:.25em;align-items:center;min-width:44px;min-height:44px;display:flex}.folio-section{margin-bottom:5rem;scroll-margin-top:2rem}.folio-section-heading{border-top:3px double var(--ink);grid-template-columns:7fr 5fr;align-items:center;gap:3rem;margin-bottom:3rem;padding-top:2rem;display:grid}.folio-section-heading h2{letter-spacing:-.025em;margin:0;font:400 clamp(42px,4.2vw,62px)/1.08 Study Arny,serif}.folio-section-heading p{text-wrap:pretty;margin:0;font-size:22px;line-height:1.4}.folio-projects{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:2.5rem 3rem;display:grid}.folio-entry{grid-column:span 6;min-width:0;padding:2rem 1.8rem;position:relative}.folio-entry-link{min-height:100px;text-decoration:none;display:block}.folio-entry-link:after{content:"";clear:both;display:block}.folio-mark{float:right;width:100px;margin:0 0 1rem 1rem;display:block}.folio-mark img{width:100%;height:auto}.folio-entry-copy{min-width:0}.folio-entry h3{font:500 35px/1.08 var(--font-body);overflow-wrap:anywhere;margin:0 0 .6rem}.folio-link-arrow{vertical-align:baseline;width:.5em;height:.5em;color:var(--accent);margin-left:.12em;display:inline-block}.folio-entry p{text-wrap:pretty;margin:0;font-size:22px;line-height:1.4}.folio-entry .folio-entry-excerpt{margin-top:1rem;font-size:21px;line-height:1.5}.folio-entry .project-colophon{font:400 15px/1.5 var(--font-ui);color:var(--ink-2);flex-wrap:wrap;gap:.3rem 1rem;margin-top:1.2rem;display:flex}.project-colophon-since{flex-basis:100%}.folio-entry-link,.folio-entry-excerpt,.project-colophon,.project-profile{z-index:1;position:relative}.project-profile{font:400 15px/1.4 var(--font-ui);margin-top:.8rem;container-type:inline-size}.project-profile summary{cursor:pointer;text-underline-offset:.22em;align-content:center;width:fit-content;min-height:44px;text-decoration:underline;display:list-item}.project-profile-scales{grid-template-columns:1fr;gap:.8rem 1.1rem;margin:.6rem 0;display:grid}@container (width>=26rem){.project-profile-scales{grid-template-columns:repeat(2,minmax(0,1fr))}}.project-profile-scales>div{min-width:0}.project-profile-scales dt{margin-bottom:.25rem;font-size:14px}.project-profile-scales dd{flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;display:flex}.profile-gauge{flex-shrink:0;gap:3px;height:13px;display:flex}.profile-tick{border:1px solid var(--ink-2);width:4px;display:block}.profile-tick--ink{background:var(--ink-2)}.profile-score{font:400 13px/1.4 var(--font-ui);overflow-wrap:anywhere}.profile-unassessed{color:var(--ink-2)}.profile-key-link{text-underline-offset:.22em;align-items:center;min-height:44px;display:inline-flex}.profile-key{border-block:1px solid var(--rule-2);max-width:48rem;color:var(--ink-2);font:400 16px/1.5 var(--font-ui);margin:4rem auto 2rem;padding-block:1.5rem;scroll-margin-top:2rem}.profile-key h2{font:inherit;color:var(--ink);margin:0 0 .8rem}.profile-key p{margin:0}.profile-key dl{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:.8rem 2rem;margin:1rem 0 0;display:grid}.profile-key dt{color:var(--ink)}.profile-key dd{margin:0}.folio-entry .profile-attribution{font:400 13px/1.4 var(--font-ui);color:var(--ink-2);margin-top:.8rem}.folio-entry--framed{border:1px solid var(--ink-2);padding:2.5rem 2.6rem}.folio-entry--framed:before{content:"";border:1px solid var(--rule-2);pointer-events:none;position:absolute;inset:5px}.folio-entry-ornament{pointer-events:none;color:var(--accent);position:absolute;inset:0}.folio-entry-ornament .hedera{background:var(--paper);width:92px;position:absolute}.folio-entry-ornament .folio-hedera--start{top:-12px;left:-12px}.folio-entry-ornament .folio-hedera--end{bottom:-12px;right:-12px;transform:rotate(180deg)}.folio-entry--open{padding:1.7rem 1rem}.folio-entry--ruled{border-block:3px double var(--ink-2);padding-block:1.8rem}.folio-entry--corner{border-left:1px solid var(--ink-2);margin-top:.5rem;padding-left:2.2rem}.folio-entry-corner{width:76px;color:var(--accent);pointer-events:none;background:var(--paper);position:absolute;top:-10px;left:-15px}.folio-section--python .folio-section-heading{border:0;gap:3rem;padding-top:0}.folio-section--python .folio-heading-title{aspect-ratio:1121/532;max-width:470px;position:relative;container-type:inline-size}.folio-heading-frame{width:107.047cqw;max-width:none;position:absolute;top:-20.87cqw;left:-3.48cqw}.folio-section--python h2{width:53cqw;font-size:9.5cqw;line-height:1.03;position:absolute;top:12.7cqw;left:43cqw}.folio-section--python .folio-entry:first-child{grid-area:1/1/3/8}.folio-section--python .folio-entry:first-child h3{font-size:48px}.folio-section--python .folio-entry:first-child .folio-mark{width:132px}.folio-section--python .folio-entry:nth-of-type(2),.folio-section--python .folio-entry:nth-of-type(3){grid-column:8/13}.folio-section--python .folio-entry:nth-of-type(4){grid-column:1/7}.folio-section--python .folio-entry:nth-of-type(5){grid-column:7/13}.folio-section--apps .folio-entry:first-child{grid-column:1/8}.folio-section--apps .folio-entry:nth-of-type(2){grid-column:8/13}.folio-section--apps .folio-entry:nth-of-type(3){grid-column:1/5}.folio-section--apps .folio-entry:nth-of-type(4){grid-column:5/9}.folio-section--apps .folio-entry:nth-of-type(5){grid-column:9/13}.folio-section--apps .folio-entry:nth-of-type(n+6){grid-column:span 6}.folio-section--agents .folio-projects{border-bottom:3px double var(--ink);padding-bottom:2rem}.folio-section--agents .folio-entry:first-child{grid-column:1/6}.folio-section--agents .folio-entry:nth-of-type(2){grid-column:6/13}.folio-section--agents .folio-entry:nth-of-type(n+3),.folio-section--sublime .folio-entry{grid-column:span 4}.folio-section--sublime .folio-mark,.folio-section--apps .folio-entry:nth-of-type(n+3):nth-of-type(-n+5) .folio-mark,.folio-section--agents .folio-entry:nth-of-type(n+3) .folio-mark{width:76px}.folio-section--sublime h3,.folio-section--apps .folio-entry:nth-of-type(n+3):nth-of-type(-n+5) h3,.folio-section--agents .folio-entry:nth-of-type(n+3) h3{font-size:31px}.folio-section--sublime .folio-entry:nth-last-of-type(-n+2){grid-column:span 6}.folio-section-end{width:180px;height:26px;color:var(--ink);margin:2rem auto 0;overflow:hidden}.folio-section-end .library-glyph{width:180px;margin-top:-20px;display:block}.folio-closing{text-align:center;max-width:42rem;margin:3rem auto}.folio-section--syntaxes .folio-entry{border-bottom:1px solid var(--rule-2);grid-column:1/-1;padding:2rem 0}.folio-section--syntaxes .folio-entry-link{max-width:760px}.folio-section--syntaxes .folio-mark{float:left;width:88px;margin:0 1.5rem 0 0}.folio-section--syntaxes .project-colophon{margin:1rem 0 1.5rem}.folio-comparison{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem;display:grid}.folio-comparison img{border:1px solid var(--ink-2);width:100%}.folio-comparison figcaption{margin-top:.6rem}.folio-plate-break{width:260px;height:44px;color:var(--accent);grid-column:1/-1;margin:1.5rem auto;overflow:hidden}.folio-plate-break .library-glyph{width:260px;margin-top:-24px;display:block}.folio-section--syntaxes .folio-section-end{height:110px}.folio-section--syntaxes .folio-section-end .library-glyph{margin-top:-45px}@media (hover:hover) and (prefers-reduced-motion:no-preference){.folio-mark img{transform-origin:50% 80%;transition:transform .65s cubic-bezier(.2,.8,.2,1),filter .65s}.folio-entry-link:is(:hover,:focus-visible) .folio-mark img{filter:drop-shadow(4px 10px 3px #152e2c20);transform:translateY(-8px)rotate(-4deg)}}@media (width<=1100px){.work-folio{padding-inline:2.5rem}.folio-projects{column-gap:2rem}.folio-entry{padding-inline:1.3rem}.folio-entry--framed{padding-inline:2rem}.folio-mark{width:88px}.folio-entry h3{font-size:30px}.folio-section--apps .folio-entry:nth-of-type(n+3),.folio-section--agents .folio-entry:nth-of-type(n+3),.folio-section--sublime .folio-entry{grid-column:span 6}.folio-section--sublime .folio-entry:last-of-type{grid-column:3/11}}@media (width<=760px){.work-folio{padding:2.5rem 24px 1rem}.folio-opening,.folio-section-heading,.folio-section--python .folio-section-heading{grid-template-columns:1fr;gap:1.4rem}.folio-opening{padding-bottom:2.5rem}.folio-title h1{font-size:78px}.folio-title-rule{height:48px}.folio-lede{font-size:22px}.folio-section{margin-bottom:3rem}.folio-section-heading{margin-bottom:2rem}.folio-section-heading h2{font-size:42px}.folio-section--python .folio-heading-title{width:100%;max-width:420px}.folio-section--python h2{font-size:9.5cqw}.folio-projects{display:block}.folio-entry{margin:0 0 2rem;padding:1.6rem 1rem}.folio-entry--framed{padding:2rem 1.6rem}.folio-entry--corner{padding-left:1.8rem}.folio-entry h3,.folio-section--python .folio-entry:first-child h3{font-size:32px}.folio-mark,.folio-section--python .folio-entry:first-child .folio-mark{width:88px}.folio-entry p,.folio-entry .folio-entry-excerpt{font-size:21px}.folio-entry-ornament .hedera{width:66px}.folio-comparison{grid-template-columns:1fr}.folio-section--syntaxes .folio-entry{padding:1.5rem 0}.folio-section--syntaxes .folio-mark{width:76px}}@media (forced-colors:active){.folio-entry-ornament,.folio-entry-corner,.folio-section-end,.folio-title-rule,.folio-plate-break,.folio-heading-frame{display:none}.folio-section--python .folio-heading-title{aspect-ratio:auto;container-type:normal}.folio-section--python h2{width:auto;font-size:44px;position:static}.folio-entry--framed,.folio-entry--ruled,.folio-entry--corner{border-color:canvastext}}
