@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/poppins-latin-300-normal.Dku2WoCh.woff2)format("woff2"),url(/_astro/poppins-latin-300-normal.DCNuMXUj.woff)format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/poppins-latin-400-normal.cpxAROuN.woff2)format("woff2"),url(/_astro/poppins-latin-400-normal.BOb3E3N0.woff)format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/poppins-latin-500-normal.C8OXljZJ.woff2)format("woff2"),url(/_astro/poppins-latin-500-normal.DGXqpDMm.woff)format("woff")}@font-face{font-family:Esteban;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/esteban-latin-400-normal.CwXUdOdD.woff2)format("woff2"),url(/_astro/esteban-latin-400-normal.CoqKLug5.woff)format("woff")}:root{--bg:#fff;--bg-band:#f1f1f4;--text:#111;--muted:#4a4a4a;--line:#d6d6d6;--focus:#1a56db;--font-heading:"Poppins", system-ui, sans-serif;--font-body:"Esteban", Georgia, serif;--measure:42rem;--wide:60rem;--gutter:clamp(1rem, 4vw, 2.5rem)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html body{background:var(--bg);color:var(--text);font-family:var(--font-body);margin:0;font-size:1.125rem;line-height:1.75}img{max-width:100%;height:auto;display:block}a{color:inherit;text-underline-offset:.2em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:2px}.skip-link{z-index:100;background:var(--text);color:#fff;padding:.5rem 1rem;text-decoration:none;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}h1,h2,h3,h4{font-family:var(--font-heading);letter-spacing:.01em;text-wrap:balance;margin:2.5rem 0 .75rem;font-weight:400;line-height:1.3}h1{margin-top:0;font-size:clamp(2rem,1.5rem + 2vw,2.75rem);font-weight:300}h2{font-size:clamp(1.5rem,1.25rem + 1vw,2rem)}h3{font-size:1.3rem}h4{font-size:1.1rem}h2+h3{margin-top:1.25rem}.site-header{padding:1.25rem var(--gutter);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 2rem;display:flex}.site-name{font-family:var(--font-heading);letter-spacing:.02em;font-size:1.75rem;font-weight:300;text-decoration:none}.site-header ul{flex-wrap:wrap;gap:.25rem 1.5rem;margin:0;padding:0;list-style:none;display:flex}.site-header nav a{padding:.25rem 0;font-size:1.05rem;text-decoration:none}.site-header nav a:hover,.site-header nav a[aria-current=page]{text-decoration:underline 1px}main{display:block}main:focus{outline:none}.site-footer{padding:2rem var(--gutter) 3rem;border-top:1px solid var(--line);text-align:center;color:var(--muted);margin-top:5rem;font-size:1rem}.footer-links{justify-content:center;gap:1.5rem;margin:0 0 .5rem;padding:0;list-style:none;display:flex}.site-footer p{margin:0}.intro{background:var(--bg-band);text-align:center;padding:3.5rem var(--gutter) 4rem}.intro img{object-fit:cover;border-radius:50%;width:7.5rem;height:7.5rem;margin:0 auto 1rem}.intro .name{font-family:var(--font-heading);margin:0;font-size:1.15rem}.intro h1{margin:.75rem 0;font-size:clamp(1.6rem,1.2rem + 1.5vw,2.1rem);font-weight:400}.intro p.tagline{max-width:32rem;margin:0 auto}.work{max-width:72rem;padding:3rem var(--gutter) 0;margin:0 auto}.work>h2{text-align:center;margin:0 0 2.5rem;font-size:1.5rem}.cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:3rem 2.5rem;margin:0;padding:0;list-style:none;display:grid}.card a{border-radius:6px;text-decoration:none;display:block}.card img{width:100%;transition:transform .25s}.card a:hover img{transform:translateY(-4px)}.card h3{margin:.75rem 0 .25rem;font-size:clamp(1.5rem,1.2rem + 1vw,2rem);font-weight:300}@media (prefers-reduced-motion:reduce){.card img{transition:none}.card a:hover img{transform:none}}.page{max-width:var(--measure);padding:2rem var(--gutter) 0;margin:0 auto}.page>h1{text-align:center;margin-top:1.5rem}.page-intro{text-align:center;color:var(--muted);margin-top:0}.case-hero{max-width:75rem;padding:0 var(--gutter);margin:0 auto}.case-hero img{width:100%}.case-facts{max-width:var(--measure);padding:0 var(--gutter);color:var(--muted);text-align:center;margin:2rem auto 0;font-size:1rem}.prose>:first-child{margin-top:0}.prose p,.prose ul,.prose ol{margin:0 0 1.1rem}.prose li{margin-bottom:.35rem}.prose li::marker{color:var(--muted)}.prose blockquote{border-left:3px solid var(--text);font-size:1.3rem;font-family:var(--font-heading);margin:1.5rem 0;padding:.25rem 0 .25rem 1.25rem;font-weight:300}.prose img{width:min(var(--wide), calc(100vw - 2 * var(--gutter)));border-radius:4px;max-width:none;margin:2rem 0;position:relative;left:50%;transform:translate(-50%)}.prose p:has(>img:only-child){margin:0}.prose hr{border:0;border-top:1px solid var(--line);margin:3rem 0}.prose h2{padding-top:1.5rem}strong,b{font-family:var(--font-heading);font-size:.94em;font-weight:500}.back-link{margin-top:3rem;display:inline-block}.hobbies{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;margin:2rem 0 0;padding:0;list-style:none;display:grid}.hobbies h3{margin:.75rem 0 0;font-size:1.05rem}@media (width<=34rem){.hobbies{grid-template-columns:1fr;gap:2rem}}.blog-year{font-family:var(--font-heading);align-items:center;gap:1rem;margin:3rem 0 1.5rem;font-size:1.1rem;font-weight:500;display:flex}.blog-year:before,.blog-year:after{content:"";border-top:2px solid var(--line);flex:1}.posts{gap:2.5rem;margin:0;padding:0;list-style:none;display:grid}.post{grid-template-columns:minmax(0,12rem) 1fr;align-items:center;gap:1.5rem;display:grid}.post img{aspect-ratio:4/3;object-fit:contain;width:100%}.post h3{margin:0 0 .5rem;font-size:1.25rem}.post p{margin:0}@media (width<=34rem){.post{grid-template-columns:1fr}.post img{max-width:16rem}}.button{font:inherit;font-family:var(--font-heading);background:var(--text);color:#fff;border:2px solid var(--text);cursor:pointer;border-radius:999px;padding:.65rem 1.5rem;font-size:1rem;text-decoration:none;display:inline-block}.button:hover{color:var(--text);background:#fff}.contact-actions{flex-wrap:wrap;justify-content:center;gap:1rem;margin-top:2rem;display:flex}.button-secondary{color:var(--text);background:0 0}.button-secondary:hover{background:var(--text);color:#fff}youtube-video,figma-embed{margin:2rem 0;display:block}youtube-video iframe,.video-poster{aspect-ratio:16/9;border:0;border-radius:4px;width:100%;display:block}.video-poster{cursor:pointer;background:#000 50%/cover no-repeat;padding:0;position:relative}.video-play{background:#000000bf;border-radius:.8rem;width:4.5rem;height:3.2rem;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.video-play:after{content:"";border:.7rem solid #0000;border-left:1.15rem solid #fff;border-right-width:0;position:absolute;inset:50% auto auto 54%;transform:translate(-50%,-50%)}.video-poster:hover .video-play,.video-poster:focus-visible .video-play{background:#c00}figma-embed iframe{border:1px solid var(--line);width:100%;max-width:28rem;height:50rem;max-height:85vh;margin:0 auto;display:block}#my-chatbot button:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.cs-hero{max-width:72rem;padding:2rem var(--gutter) 0;text-align:center;margin:0 auto}.cs-hero h1{max-width:50rem;margin:1rem auto .75rem}.cs-subtitle{color:var(--muted);max-width:40rem;margin:0 auto .5rem;font-size:clamp(1.15rem,1rem + .5vw,1.35rem)}.cs-meta{font-family:var(--font-heading);color:var(--muted);margin:0 0 2rem;font-size:.9rem}.cs-hero-media img,.cs-hero-media .placeholder{border-radius:6px;width:100%}.cs-body{padding-top:1rem}.cs-intro{margin-top:1.5rem;font-size:1.2rem}table.overview{border-collapse:collapse;width:100%;margin:.5rem 0 0}table.overview th,table.overview td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:.7rem 0}table.overview th{font-family:var(--font-heading);width:8rem;padding-right:1rem;font-size:.95rem;font-weight:500}.stat-row{border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));gap:1.5rem;margin:2rem 0;padding:1.5rem 0;list-style:none;display:grid}.prose .stat-row li{margin:0}.stat-value{font-family:var(--font-heading);font-size:clamp(2.25rem,1.8rem + 2vw,3.25rem);font-weight:300;line-height:1.1;display:block}.stat-label{color:var(--muted);margin-top:.35rem;font-size:1rem;line-height:1.4;display:block}.pullquote{border-left:3px solid var(--text);margin:2.5rem 0;padding:0 0 0 1.5rem}.prose .pullquote blockquote{font-family:var(--font-heading);border:0;margin:0;padding:0;font-size:clamp(1.35rem,1.1rem + 1vw,1.75rem);font-weight:300;line-height:1.4}.pullquote blockquote:before{content:"“"}.pullquote blockquote:after{content:"”"}.pullquote blockquote p{margin:0;display:inline}.pullquote figcaption{color:var(--muted);margin-top:.6rem;font-size:1rem}.pullquote figcaption:before{content:"— "}.fig{width:min(var(--wide), calc(100vw - 2 * var(--gutter)));margin:2.5rem 0;position:relative;left:50%;transform:translate(-50%)}.fig-media{grid-template-columns:repeat(var(--cols,1), minmax(0, 1fr));align-items:start;gap:1rem;display:grid}@media (width<=40rem){.fig-media{grid-template-columns:1fr}}.prose .fig img{border-radius:4px;width:100%;max-width:100%;margin:0;position:static;transform:none}.fig-item{margin:0}.prose .fig-label{font-family:var(--font-heading);margin:0 0 .4rem;font-size:.9rem;font-weight:500}.fig figcaption{max-width:var(--measure);color:var(--muted);text-align:center;margin:.9rem auto 0;font-size:1rem;line-height:1.5}.fig youtube-video{margin:0}.placeholder{text-align:center;color:#333;width:100%;font-family:var(--font-heading);background:#ececef;border:2px dashed #8a8a92;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;font-size:1rem;line-height:1.4;display:flex}.prose .placeholder p,.placeholder p{max-width:32rem;margin:0}.placeholder strong{letter-spacing:.04em;font-weight:600}.placeholder-ratio{color:#555;font-size:.8rem;margin-top:.4rem!important}.text-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr));gap:1rem;margin:1.5rem 0 2rem;padding:0;list-style:none;display:grid}.prose .text-cards>li{margin:0}.text-card{border:1px solid var(--line);background:#fff;border-radius:8px;padding:1.25rem}.text-card-wide{grid-column:1/-1}.prose .text-card-eyebrow{font-family:var(--font-heading);color:var(--muted);margin:0 0 .35rem;font-size:.85rem}.prose .text-card-title{font-family:var(--font-heading);margin:0;font-size:1.05rem;font-weight:500;line-height:1.4}.text-card-body{margin-top:.5rem;font-size:1rem}.prose .text-card-body p:last-child,.prose .text-card-body ul:last-child{margin-bottom:0}.prose table:not(.overview){border-collapse:collapse;width:100%;margin:1.5rem 0 2rem;font-size:1rem}.prose table:not(.overview) th{font-family:var(--font-heading);text-align:left;border-bottom:2px solid var(--text);padding:.75rem;font-weight:500}.prose table:not(.overview) td{border-bottom:1px solid var(--line);vertical-align:top;padding:.75rem}@media (width<=40rem){.prose table:not(.overview),.prose table:not(.overview) tbody,.prose table:not(.overview) tr,.prose table:not(.overview) td{width:100%;display:block}.prose table:not(.overview) thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.prose table:not(.overview) tr{border:1px solid var(--line);background:#fff;border-radius:8px;margin-bottom:1rem;padding:.5rem 1rem}.prose table:not(.overview) td{border:0;padding:.4rem 0}.prose table:not(.overview) td[data-label]:before{content:attr(data-label);font-family:var(--font-heading);color:var(--muted);font-size:.85rem;font-weight:500;display:block}}.card-media{aspect-ratio:16/10;place-items:center;display:grid}.card-media img{object-fit:contain;width:100%;height:100%}.card-media .placeholder{aspect-ratio:auto;height:100%}.card-company{font-family:var(--font-heading);color:var(--muted);margin:1rem 0 0;font-size:.9rem}.card h3{align-items:center;gap:.5rem;margin:.15rem 0 .25rem;display:inline-flex}.card .lock{flex:none}.card-subtitle{margin:0}.card-stat{font-family:var(--font-heading);margin:.4rem 0 0;font-size:.95rem;font-weight:500}.intro .name{letter-spacing:.02em;color:var(--muted);font-size:1rem}.intro p.tagline{max-width:34rem}.open-to-work{border:1px solid var(--line);font-family:var(--font-heading);background:#fff;border-radius:999px;margin:0 0 .75rem;padding:.3rem .9rem;font-size:.85rem;display:inline-block}.open-to-work:before{content:"";vertical-align:middle;background:#1f7a3a;border-radius:50%;width:.5rem;height:.5rem;margin-right:.5rem;display:inline-block}.highlights{max-width:46rem;font-family:var(--font-heading);flex-wrap:wrap;justify-content:center;gap:.5rem .75rem;margin:1.5rem auto 0;padding:0;font-size:.9rem;list-style:none;display:flex}.highlights li{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.35rem .9rem}.intro-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:1.75rem;display:flex}.card-note{color:var(--muted);margin:.25rem 0 0;font-size:.9rem}.fig-media>.fig-item+.fig-item{margin-top:0}.text-card{border:0;border-top:2px solid var(--text);background:0 0;border-radius:0;padding:.9rem 0 0}.text-cards{gap:1.5rem 2rem;margin:1.25rem 0 1.75rem}table.overview th,table.overview td{border-bottom:0;padding:.35rem 0}table.overview th{color:var(--muted);font-weight:400}table.overview{margin-bottom:.5rem}.fig{margin:2.25rem 0}.fig-media{row-gap:1.5rem}.fig-media>.fig-item:only-child .fig-label{text-align:center}.prose .fig-label{color:var(--muted);letter-spacing:.02em}.fig-item[style*=max-width] .fig-label,.prose .fig-label{text-align:center}.marker{color:#111827;width:1.45rem;height:1.45rem;font-family:var(--font-heading);vertical-align:.1em;background:#f5c518;border-radius:50%;flex:none;place-items:center;margin-right:.4rem;font-size:.8rem;font-weight:600;display:inline-grid;box-shadow:0 0 0 2px #fff,0 0 0 3px #d9d9d9}.prose table:not(.overview) td:first-child{width:28%;font-family:var(--font-heading);font-size:.95rem}.prose table:not(.overview) td:first-child .marker{margin-bottom:.3rem}@media (width<=40rem){.prose table:not(.overview) td:first-child{width:100%;font-size:1.05rem}.prose table:not(.overview) td:first-child:has(.marker):before{display:none}}.full-width{width:min(var(--wide), calc(100vw - 2 * var(--gutter)));position:relative;left:50%;transform:translate(-50%)}.page-about{max-width:calc(var(--wide) + 2 * var(--gutter))}.page-about>img,.page-about .full-width{width:100%;left:0;transform:none}.intro{text-align:left;max-width:72rem;padding:3.5rem var(--gutter) 1rem;background:0 0;margin:0 auto}.intro-byline{align-items:center;gap:.9rem;display:flex}.intro-byline img{object-fit:cover;border-radius:50%;width:3.5rem;height:3.5rem;margin:0}.intro .name{color:var(--text);letter-spacing:0;margin:0;font-size:1rem;font-weight:500;line-height:1.35}.intro .name span{color:var(--muted);font-weight:400;display:block}.intro h1{max-width:40rem;margin:2rem 0 1rem;font-size:clamp(1.6rem,1.25rem + 1.4vw,2.25rem);font-weight:400;line-height:1.3}.intro p.tagline{max-width:36rem;color:var(--muted);margin:0}.intro-links{font-family:var(--font-heading);flex-wrap:wrap;gap:.5rem 1.75rem;margin:1.5rem 0 0;padding:0;list-style:none;display:flex}.intro-links a{text-underline-offset:.3em;text-decoration:underline 1px}.intro-links a:after{content:" →"}.intro-links a:hover{text-decoration-thickness:2px}.intro .highlights{justify-content:flex-start;margin-left:0}.work{padding-top:2.5rem}.work>h2{text-align:left;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-top:1px solid var(--line);margin:0 0 1.5rem;padding-top:1.5rem;font-size:1rem;font-weight:500}.card{text-align:left}.case{--wide:50rem}.case .page{max-width:calc(var(--wide) + 2 * var(--gutter))}.case .cs-hero-media{max-width:var(--wide);margin-inline:auto}.case .fig figcaption{max-width:none}.case .cs-hero>.stat-row{max-width:var(--wide);margin-inline:auto;left:auto;transform:none}.cards{grid-template-columns:1fr;gap:3.5rem}.card a{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:center;gap:1rem 3rem;display:grid}.card-body>:first-child{margin-top:0}.card h3,.card-company+h3{margin-top:.15rem}.card-body h3:first-child{margin-top:0}@media (width<=48rem){.card a{grid-template-columns:1fr}.cards{gap:3rem}}.case .cs-hero{max-width:calc(var(--wide) + 2 * var(--gutter));text-align:left}.case .cs-hero h1,.case .cs-subtitle{margin-left:0;margin-right:0}.cs-next{border-top:1px solid var(--line);margin-top:4rem;padding-top:2rem}.cs-next-link{text-decoration:none;display:block}.cs-next-label{font-family:var(--font-heading);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.85rem;display:block}.cs-next-title{font-family:var(--font-heading);margin-top:.35rem;font-size:clamp(1.4rem,1.2rem + .8vw,1.75rem);font-weight:400;display:block}.cs-next-sub{color:var(--muted);margin-top:.25rem;display:block}.cs-next-link:hover .cs-next-title{text-underline-offset:.2em;text-decoration:underline 1px}.cs-next .back-link{margin-top:2rem}@media (width<=30rem){.site-name{font-size:1.5rem}.site-header ul{gap:.25rem 1.1rem}.site-header nav a{font-size:1rem}}.cs-next-title .lock{vertical-align:-.1em;margin:0 .15rem 0 .1rem}.case{--read:38rem;--text-soft:#2b2b2b}.case .cs-body>p,.case .cs-body>ul:not([class]),.case .cs-body>ol:not([class]),.case .cs-body>h2,.case .cs-body>h3,.case .cs-intro{max-width:var(--read)}.case .cs-body p,.case .cs-body li{color:var(--text-soft)}.case .cs-body>p,.case .cs-body>ul:not([class]),.case .cs-body>ol:not([class]){margin-bottom:1.35rem}.case .cs-body>h2{margin-top:4.5rem;padding-top:0}.case .cs-body>h3{margin-top:3rem}.case .cs-body>h2+p,.case .cs-body>h3+p{margin-top:.25rem}.case .cs-body .fig{margin-top:2.5rem;margin-bottom:2.5rem}.case .text-cards{gap:1.5rem 2.5rem;margin:1.75rem 0 2.25rem}.case .text-card{border-top:1px solid var(--line);padding-top:1rem}.case .text-card-eyebrow{color:var(--muted);margin-bottom:.6rem;font-size:1.5rem;font-weight:300;line-height:1}.case .text-card-title{color:var(--text);font-size:1.1rem;font-weight:400}.fig-framed img{border:1px solid var(--line);border-radius:6px}.page-about{--read:38rem}.page-about>h1{text-align:left}.page-about p,.page-about li{color:#2b2b2b}.page-about>p{margin-bottom:1.35rem}.page-about .hobbies h3{color:var(--text)}.page-note{text-align:center;color:var(--muted);max-width:34rem;margin:.5rem auto 0;font-size:.95rem}.post p.post-tag{border:1px solid var(--line);font-family:var(--font-heading);color:var(--muted);border-radius:999px;margin:0 0 .5rem;padding:.15rem .65rem;font-size:.8rem;line-height:1.4;display:inline-block}.video-poster{overflow:hidden}.prose .video-poster img{object-fit:cover;border-radius:0;width:100%;max-width:none;height:100%;margin:0;position:absolute;inset:0;transform:none}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}#work{scroll-margin-top:1rem}.about-intro{grid-template-columns:17rem minmax(0,1fr);align-items:start;gap:2.5rem;margin-top:1.5rem;display:grid}.prose .about-intro img.about-portrait{aspect-ratio:1;object-fit:cover;border-radius:6px;width:100%;max-width:100%;height:auto;margin:0;position:static;left:0;transform:none}.about-text>:first-child{margin-top:0}.about-text>p{margin-bottom:1.35rem}@media (width<=48rem){.about-intro{grid-template-columns:1fr;gap:1.5rem}.prose .about-intro img.about-portrait{width:min(20rem,100%)}}.page-about .hobbies-intro{margin:0 0 .5rem}.page-about .hobbies{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=48rem){.page-about .hobbies{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=34rem){.page-about .hobbies{grid-template-columns:1fr}}
