@font-face{font-family:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.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:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.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:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_bd70ec46-module__OaqGkW__className{font-family:Fraunces,Fraunces Fallback;font-style:normal}.fraunces_bd70ec46-module__OaqGkW__variable{--font-fraunces:"Fraunces", "Fraunces Fallback"}
@font-face{font-family:Karla;font-style:normal;font-weight:400;font-display:swap;src:url(../media/94ef70390c90d702-s.15ayjsd0yf8rh.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:Karla;font-style:normal;font-weight:400;font-display:swap;src:url(../media/f287e533ed04f2e6-s.p.2ijos0_3tnz-u.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:Karla;font-style:normal;font-weight:500;font-display:swap;src:url(../media/94ef70390c90d702-s.15ayjsd0yf8rh.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:Karla;font-style:normal;font-weight:500;font-display:swap;src:url(../media/f287e533ed04f2e6-s.p.2ijos0_3tnz-u.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:Karla;font-style:normal;font-weight:700;font-display:swap;src:url(../media/94ef70390c90d702-s.15ayjsd0yf8rh.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:Karla;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f287e533ed04f2e6-s.p.2ijos0_3tnz-u.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:Karla Fallback;src:local(Arial);ascent-override:89.55%;descent-override:24.61%;line-gap-override:0.0%;size-adjust:102.4%}.karla_2ff94977-module__CYVqkG__className{font-family:Karla,Karla Fallback;font-style:normal}.karla_2ff94977-module__CYVqkG__variable{--font-karla:"Karla", "Karla Fallback"}
@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4ba802ed8e67eac5-s.0fuxtgzazslqx.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:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d7a0600e467cf0bd-s.451yigaaz_4mg.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:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/dc0d9adbac686440-s.p.3cik_s2si-ft-.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b8f2b92a9960dd69-s.0we3rzhp_h228.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28e60ca39c9ae554-s.44izq0ia6orkf.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8d05cfa5faa8406c-s.p.1s123piy9_v1m.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:Space Mono Fallback;src:local(Arial);ascent-override:81.58%;descent-override:26.3%;line-gap-override:0.0%;size-adjust:137.28%}.space_mono_7618295e-module__0uytZW__className{font-family:Space Mono,Space Mono Fallback;font-style:normal}.space_mono_7618295e-module__0uytZW__variable{--font-space-mono:"Space Mono", "Space Mono Fallback"}
.portfolio-page{--paper:#fbf7f0;--rule:#e7ddcd;--ink:#1f1b16;--ink-soft:#6b6055;--accent:#db4c7e;--accent-wash:#fbe9f0;--card:#fffdf9;--edge:#dfd4c2;--max:1180px;background-color:var(--paper);background-image:repeating-linear-gradient(to bottom, transparent 0px, transparent 33px, var(--rule) 33px, var(--rule) 34px);width:100%;min-height:100dvh;color:var(--ink);font-family:var(--font-karla), system-ui, sans-serif;-webkit-font-smoothing:antialiased;font-size:17px;line-height:1.65}.portfolio-page *{box-sizing:border-box}.portfolio-page a{color:inherit}.portfolio-page .wrap{width:100%;max-width:var(--max);margin:0 auto;padding:0 28px}.portfolio-page .band{width:100%}.portfolio-page h1,.portfolio-page h2,.portfolio-page h3{font-family:var(--font-fraunces), Georgia, serif;letter-spacing:-.015em;color:var(--ink);margin:0;font-weight:600;line-height:1.1}.portfolio-page .eyebrow{font-family:var(--font-space-mono), monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 14px;font-size:12px;font-weight:400}.portfolio-page .hero{padding:104px 0 72px}.portfolio-page .hero h1{letter-spacing:-.015em;max-width:16ch;font-size:clamp(38px,5.6vw,68px);line-height:1.1}.portfolio-page .hero p.lede{color:var(--ink-soft);max-width:58ch;margin:26px 0 0;font-size:clamp(18px,2vw,21px)}.portfolio-page .squiggle{white-space:nowrap;position:relative}.portfolio-page .squiggle svg{width:100%;height:.3em;position:absolute;bottom:-.22em;left:0;right:0;overflow:visible}.portfolio-page .squiggle svg path{stroke:var(--accent);stroke-width:5px;fill:none;stroke-linecap:round;stroke-dasharray:340;stroke-dashoffset:340px;animation:1.1s cubic-bezier(.4,0,.2,1) .45s forwards portfolio-draw}@keyframes portfolio-draw{to{stroke-dashoffset:0}}.portfolio-page .meta{border-top:1px dashed var(--edge);font-family:var(--font-space-mono), monospace;color:var(--ink-soft);flex-wrap:wrap;gap:12px 34px;margin-top:40px;padding-top:22px;font-size:12.5px;display:flex}.portfolio-page .meta b{color:var(--ink);font-weight:700}.portfolio-page .work{padding:16px 0 40px}.portfolio-page .case{background:var(--card);border:1px solid var(--edge);box-shadow:0 1px 0 var(--edge);border-radius:3px;margin-bottom:26px;padding:34px 32px 30px}.portfolio-page .case-top{grid-template-columns:1fr;gap:24px;display:grid}@media (min-width:900px){.portfolio-page .case-top{grid-template-columns:1fr 320px;align-items:start;gap:40px}}.portfolio-page .case-copy{min-width:0}.portfolio-page .case-head{flex-wrap:wrap;align-items:baseline;gap:8px 16px;margin-bottom:6px;display:flex}.portfolio-page .case-head h2{font-size:clamp(23px,2.6vw,29px)}.portfolio-page .tag{font-family:var(--font-space-mono), monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);background:var(--accent-wash);white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:11px}.portfolio-page .case p{max-width:70ch;margin:14px 0 0}.portfolio-page .case p.role{color:var(--ink-soft);margin-top:4px;font-size:15.5px}.portfolio-page .thumb{background:var(--paper);border:1px solid var(--edge);border-radius:3px;order:-1;padding:16px}@media (min-width:900px){.portfolio-page .thumb{order:0}}.portfolio-page .thumb svg,.portfolio-page .thumb img{width:100%;height:auto;display:block}.portfolio-page .thumb figcaption{border-top:1px dashed var(--edge);font-family:var(--font-space-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-top:12px;padding-top:10px;font-size:10.5px;line-height:1.5}.portfolio-page .ln{fill:none;stroke:var(--edge);stroke-width:2px}.portfolio-page .ln-soft{fill:none;stroke:var(--rule);stroke-width:2px}.portfolio-page .fill-card{fill:var(--card)}.portfolio-page .fill-paper{fill:var(--paper)}.portfolio-page .bar{fill:var(--rule)}.portfolio-page .bar-dark{fill:var(--edge)}.portfolio-page .hot{fill:none;stroke:var(--accent);stroke-width:2px}.portfolio-page .fill-card.hot{fill:var(--card)}.portfolio-page .hot-fill{fill:var(--accent-wash);stroke:var(--accent);stroke-width:2px}.portfolio-page .hot-bar{fill:var(--accent)}.portfolio-page .chain{border-top:1px dashed var(--edge);grid-template-columns:1fr;gap:20px;margin-top:26px;padding-top:24px;display:grid}@media (min-width:820px){.portfolio-page .chain{grid-template-columns:1fr 1fr;gap:34px}}.portfolio-page .chain h3{font-family:var(--font-space-mono), monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:12px;font-size:11px;font-weight:700}.portfolio-page .steps{margin:0;padding:0;font-size:15px;list-style:none}.portfolio-page .steps li{padding:5px 0 5px 22px;position:relative}.portfolio-page .steps li:before{content:"";background:var(--edge);border-radius:50%;width:6px;height:6px;position:absolute;top:14px;left:4px}.portfolio-page .steps li+li:after{content:"";background:var(--edge);width:1px;height:18px;position:absolute;top:-4px;left:6.5px}.portfolio-page .before .steps li{color:var(--ink-soft)}.portfolio-page .before .steps li span{position:relative}.portfolio-page .before .steps li span:after{content:"";background:var(--accent);transform-origin:0;height:1.5px;transition:transform .45s cubic-bezier(.4,0,.2,1);position:absolute;top:52%;left:-2px;right:-2px;transform:scaleX(0)}.portfolio-page .case.seen .before .steps li span:after{transform:scaleX(1)}.portfolio-page .case.seen .before .steps li:nth-child(2) span:after{transition-delay:90ms}.portfolio-page .case.seen .before .steps li:nth-child(3) span:after{transition-delay:.18s}.portfolio-page .case.seen .before .steps li:nth-child(4) span:after{transition-delay:.27s}.portfolio-page .case.seen .before .steps li:nth-child(5) span:after{transition-delay:.36s}.portfolio-page .after .steps li:before{background:var(--accent)}.portfolio-page .after .steps li{font-weight:500}.portfolio-page .stack{border-top:1px dashed var(--edge);font-family:var(--font-space-mono), monospace;color:var(--ink-soft);margin-top:24px;padding-top:18px;font-size:12px}.portfolio-page .stack b{color:var(--ink);font-weight:400}.portfolio-page .how{padding:52px 0 80px}.portfolio-page .how h2{margin-bottom:26px;font-size:clamp(26px,3vw,34px)}.portfolio-page .how-grid{grid-template-columns:1fr;gap:22px;display:grid}@media (min-width:760px){.portfolio-page .how-grid{grid-template-columns:repeat(3,1fr);gap:30px}}.portfolio-page .how-item h3{font-family:var(--font-space-mono), monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:8px;font-size:11.5px}.portfolio-page .how-item p{color:var(--ink-soft);margin:0;font-size:15.5px}.portfolio-page footer{border-top:1px solid var(--edge);font-family:var(--font-space-mono), monospace;color:var(--ink-soft);padding:26px 0 40px;font-size:12px}.portfolio-page .footer-inner{flex-wrap:wrap;justify-content:space-between;gap:10px 24px;width:100%;display:flex}.portfolio-page a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}@media (prefers-reduced-motion:reduce){.portfolio-page *,.portfolio-page :after,.portfolio-page :before{transition:none!important;animation:none!important}.portfolio-page .squiggle svg path{stroke-dashoffset:0}.portfolio-page .before .steps li span:after{transform:scaleX(1)}}
