@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.3p2_lha1f2xer.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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.390ncx5urfkfu.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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.21jp631_3pja2.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.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:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_2b71de91-module__VGa4wG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_2b71de91-module__VGa4wG__variable{--font-body:"Geist", "Geist Fallback"}
@font-face{font-family:Caveat;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/da4b870ab52b3094-s.2rv_b6cm3-gtx.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:Caveat;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/86d70b7c76b6ec6e-s.43yn3v1dnm71_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/11cc37d7380d16b4-s.27riv1g955cgo.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Caveat;font-style:normal;font-weight:400 700;font-display:swap;src:url(../media/a85fe84266768609-s.p.0h6ig86gwutp4.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:Caveat Fallback;src:local(Arial);ascent-override:124.77%;descent-override:38.99%;line-gap-override:0.0%;size-adjust:76.94%}.caveat_f2376c4f-module__U2spbq__className{font-family:Caveat,Caveat Fallback;font-style:normal}.caveat_f2376c4f-module__U2spbq__variable{--font-handwriting:"Caveat", "Caveat Fallback"}
*{box-sizing:border-box}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{color:#000;font-family:var(--font-body), sans-serif;-webkit-font-smoothing:antialiased;background:#fff;margin:0;font-size:14px;line-height:1.6}::selection{color:#fff;background:#000}a{color:inherit}a:focus-visible{outline-offset:6px;outline:2px solid #000}h1,h2,h3,p{margin:0}.portfolio{width:min(100% - 64px,880px);margin-inline:auto;padding-block:48px}.introduction{padding-bottom:32px}.greeting{font-size:14px}h1,h2{font-family:var(--font-handwriting), cursive;font-weight:500}h1{width:230px;max-width:100%;margin:-8px 0 8px -5px;line-height:0}.signature{width:100%;display:block;overflow:visible}.signature text{font-family:var(--font-handwriting), cursive;letter-spacing:-4px;fill:#000;stroke:#000;stroke-width:.8px;font-size:120px;font-weight:500}.signature path{fill:none;stroke:#000;stroke-width:1.5px;stroke-linecap:round}@media (prefers-reduced-motion:no-preference){.signature text{stroke-dasharray:650;animation:2.6s both write-name}.signature path{stroke-dasharray:1;animation:.4s 2.2s both underline-name}}@keyframes write-name{0%{stroke-dashoffset:650px;fill:#0000}70%{fill:#0000}to{stroke-dashoffset:0;fill:#000}}@keyframes underline-name{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.role{letter-spacing:-.4px;font-size:17px;font-weight:500}.intro-copy{text-wrap:pretty;max-width:570px;margin-top:8px}.section{border-top:1px solid #000;grid-template-columns:130px minmax(0,1fr);gap:24px;padding-top:24px;display:grid}.section+.section{margin-top:30px}h2{letter-spacing:-1px;font-size:32px;line-height:1.2}h2>span{margin-left:4px;font-size:26px;display:inline-block}.skills{grid-template-columns:1fr 1fr;gap:18px 28px;display:grid}.skill-group h3{margin-bottom:6px;font-size:14px;font-weight:600}.skill-group ul{flex-wrap:wrap;gap:2px 14px;margin:0;padding:0;list-style:none;display:flex}.skill-group li{align-items:center;gap:6px;font-size:14px;line-height:1.8;display:inline-flex}.skill-icon{fill:currentColor;flex:none;width:15px;height:15px;transition:rotate .2s}.skill-icon.is-drawn{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.skill-group li:hover .skill-icon{rotate:-10deg}.badge,.link-button,.carousel-count{border:1.5px solid #000;border-radius:255px 15px 225px/15px 225px 15px 255px}.projects{display:grid}.project{cursor:pointer;border-bottom:1px solid #000;grid-template-columns:280px minmax(0,1fr);gap:24px;padding-block:22px;display:grid}.project:first-child{padding-top:4px}.project:last-child{border-bottom:0}.projects-note{font-family:var(--font-handwriting), cursive;text-wrap:pretty;border-top:1.5px dashed #000;margin-top:6px;padding-top:18px;font-size:22px;line-height:1.3}.project-media{min-width:0}.project-body{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.project-head{justify-content:space-between;align-self:stretch;align-items:flex-start;gap:12px;display:flex}.project-head .badge{margin-top:0}.project-index{font-family:var(--font-handwriting), cursive;font-size:20px;line-height:1}.project h3{letter-spacing:-.5px;margin-top:2px;font-size:20px;font-weight:500}.project h3 button{color:inherit;font:inherit;letter-spacing:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.project:hover h3 button{text-underline-offset:5px;text-decoration:underline;text-decoration-thickness:1.5px}.project-body>p{text-wrap:pretty;margin-top:10px}.project-actions{margin-top:auto;padding-top:14px}.badge{font-family:var(--font-handwriting), cursive;white-space:nowrap;margin-top:8px;padding:0 10px 1px;font-size:17px;line-height:1.4;display:inline-block;rotate:-1.5deg}.link-button{background:#fff;align-items:center;gap:6px;min-height:36px;padding:0 14px;font-weight:500;text-decoration:none;transition:background-color .15s,color .15s;display:inline-flex}.link-button>span[aria-hidden]{font-family:var(--font-handwriting), cursive;font-size:22px;line-height:1}.link-button:hover{color:#fff;background:#000}button{color:inherit}button:focus-visible,.carousel-track:focus-visible{outline-offset:3px;outline:2px solid #000}.carousel{aspect-ratio:16/10;background:#f4f4f4;border:1.5px solid #000;border-radius:4px 10px 6px 12px/12px 5px 10px 4px;position:relative;overflow:hidden}.carousel-track{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;height:100%;display:flex;overflow-x:auto}.carousel-track::-webkit-scrollbar{display:none}.carousel-slide{scroll-snap-align:start;flex:0 0 100%;margin:0;position:relative;overflow:hidden}.carousel-slide img{object-fit:cover;object-position:top;transform-origin:top;transition:transform .6s cubic-bezier(.2,.7,.2,1),filter .4s}.carousel-slide img.is-portrait{object-fit:contain;object-position:center;transform-origin:50%}.carousel-button{z-index:1;width:32px;height:32px;font-family:var(--font-handwriting), cursive;cursor:pointer;background:#fff;border:1.5px solid #000;border-radius:50% 45% 52% 48%;place-items:center;padding:0 0 4px;font-size:24px;line-height:1;transition:opacity .2s,background-color .15s,color .15s;display:grid;position:absolute;top:50%;translate:0 -50%}.carousel-button:hover{color:#fff;background:#000}.carousel-button.is-prev{left:8px}.carousel-button.is-next{right:8px}.carousel-count{font-family:var(--font-handwriting), cursive;background:#fff;margin:0;padding:0 8px;font-size:16px;line-height:1.35;position:absolute;bottom:8px;right:8px}@media (hover:hover){.project .carousel-button{opacity:0}.project:hover .carousel-button,.project .carousel:focus-within .carousel-button{opacity:1}.project .carousel-slide img{filter:grayscale()}.project:hover .carousel-slide img{filter:none;transform:scale(1.06)}}@media (prefers-reduced-motion:no-preference){.carousel-track{scroll-behavior:smooth}}.project-placeholder{aspect-ratio:16/10;font-family:var(--font-handwriting), cursive;text-align:center;background:repeating-linear-gradient(-45deg,#0000 0 9px,#ececec 9px 10px);border:1.5px dashed #000;border-radius:4px 10px 6px 12px/12px 5px 10px 4px;place-items:center;padding:16px;font-size:30px;line-height:1.1;transition:rotate .3s;display:grid}.project:hover .project-placeholder{rotate:-1deg}html:has(.project-dialog[open]){overflow:hidden}.project-dialog{color:#000;background:#fff;border:1.5px solid #000;border-radius:10px;width:min(100% - 32px,860px);max-width:none;max-height:calc(100dvh - 48px);padding:0;overflow:auto;box-shadow:8px 8px #000}.project-dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffb3}.dialog-inner{padding:12px 20px 24px}.dialog-bar{font-family:var(--font-handwriting), cursive;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:20px;display:flex}.dialog-close{width:36px;height:36px;font-family:var(--font-handwriting), cursive;cursor:pointer;background:0 0;border:0;padding:0 0 4px;font-size:36px;line-height:1;transition:rotate .2s}.dialog-close:hover{rotate:90deg}.dialog-body{justify-items:start;gap:12px;margin-top:18px;display:grid}.dialog-heading{flex-wrap:wrap;justify-content:space-between;justify-self:stretch;align-items:center;gap:4px 16px;display:flex}.dialog-heading h2{font-size:40px;line-height:1.1}.dialog-heading .badge{margin-top:4px}.dialog-body>p{text-wrap:pretty;max-width:620px}.dialog-note{font-family:var(--font-handwriting), cursive;font-size:18px}@media (prefers-reduced-motion:no-preference){.project-dialog[open]{animation:.25s cubic-bezier(.2,.7,.2,1) dialog-in}.project-dialog[open]::backdrop{animation:.25s backdrop-in}}@keyframes dialog-in{0%{opacity:0;translate:0 12px;rotate:-.6deg}}@keyframes backdrop-in{0%{opacity:0}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:820px){.project{grid-template-columns:220px minmax(0,1fr);gap:20px}}@media (max-width:600px){.portfolio{width:calc(100% - 48px);padding-block:28px 32px}.introduction{padding-bottom:28px}.section{grid-template-columns:1fr;gap:16px;padding-top:20px}.section+.section{margin-top:24px}.skills{grid-template-columns:1fr;gap:12px}.skill-group{grid-template-columns:100px minmax(0,1fr);gap:12px;display:grid}.project{grid-template-columns:1fr;gap:14px;padding-block:20px}.dialog-inner{padding:8px 14px 20px}.dialog-heading h2{font-size:34px}}
