@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-20C0,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_dbbf8c4b-module__5qCx7q__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_dbbf8c4b-module__5qCx7q__variable{--font-geist:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.31988l_ccedte.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 Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.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 Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.1rgnod-3esatf.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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0r6juujl39pe6.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 Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
:root{--canvas:#ede8df;--card:#fffefd;--ink:#171717;--on-canvas:#171717;--logo-color:#3a5f3f;--muted:#77716c;--line:#17171714;--gap:16px;--radius:32px;--unit:280px;--desktop-grid:1168px}:root[data-mode=brand]{--logo-color:#703c12}:root[data-mode=lettering]{--canvas:#0d0d0d;--on-canvas:#f2efec;--logo-color:#f2efec}:root[data-mode=apps]{--canvas:#39857f;--on-canvas:#eef3f1;--logo-color:#eef3f1}:root[data-mode=photo]{--canvas:#fff;--on-canvas:#171717;--logo-color:#171717}:root[data-mode=photo] .bento-card{box-shadow:0 0 0 1px #17171712}*{box-sizing:border-box}html{background:var(--canvas);scroll-behavior:smooth;transition:background-color .6s}body{background:var(--canvas);color:var(--ink);font-family:var(--font-geist), Arial, sans-serif;margin:0;transition:background-color .6s}button,a{color:inherit;font:inherit}button{border:0}.portfolio-shell{width:min(calc(100% - 64px), var(--desktop-grid));margin:0 auto;padding:28px 0 96px;animation:.75s cubic-bezier(.22,1,.36,1) page-enter;container-type:inline-size}@keyframes page-enter{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.site-header{grid-template-columns:1fr auto 1fr;align-items:center;min-height:48px;margin-bottom:40px;display:grid}.wordmark{z-index:1;width:fit-content;text-decoration:none;position:relative}.wordmark-slot{display:block}.wordmark-logo{height:var(--logo-h,92px);width:auto;display:block}.wordmark-logo--mono{height:var(--logo-h,92px);aspect-ratio:1;background-color:var(--logo-color);width:auto;transition:background-color .6s;-webkit-mask-position:0;mask-position:0;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.filter-nav{z-index:2;background:#dad5d1b3;border:0;border-radius:999px;gap:3px;padding:4px;display:flex;position:relative}.filter-nav button{isolation:isolate;color:#3d4549;cursor:pointer;background:0 0;border-radius:999px;padding:9px 17px;font-size:14px;font-weight:600;transition:transform .18s;position:relative}.filter-nav button:hover{transform:translateY(-1px)}.filter-pill{z-index:-1;border-radius:inherit;background:var(--card);position:absolute;inset:2px}.filter-label{z-index:1;position:relative}.header-contact{color:var(--on-canvas);text-underline-offset:4px;justify-self:end;font-size:14px;font-weight:600;transition:color .6s}.header-links{justify-self:end;gap:6px;display:flex}.header-link{border:1px solid color-mix(in srgb, var(--on-canvas) 22%, transparent);min-width:36px;height:36px;color:var(--on-canvas);letter-spacing:.03em;border-radius:999px;place-items:center;padding:0 10px;font-size:12px;font-weight:600;text-decoration:none;transition:background-color .2s,color .2s,border-color .2s;display:grid}.header-link:hover{background:var(--on-canvas);color:var(--canvas);border-color:var(--on-canvas)}.bento-card.contact-block{display:none}.contact-stack{inset:calc(var(--radius) - 16px);gap:calc(var(--radius) - 16px);flex-direction:column;display:flex;position:absolute}.contact-pill{color:var(--ink);letter-spacing:.03em;background:#1717170a;border:1px solid #1717171f;border-radius:16px;flex:1;place-items:center;font-size:16px;font-weight:600;text-decoration:none;transition:background-color .18s,color .18s,transform .16s;display:grid}.contact-pill:hover,.contact-pill:active{background:var(--ink);color:var(--card)}.contact-pill:active{transform:scale(.97)}.bento-grid{grid-auto-flow:dense;grid-auto-rows:var(--unit);gap:var(--gap);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.bento-card{border-radius:var(--radius);background:var(--card);border:0;flex-direction:column;min-width:0;padding:30px;transition:filter .28s,opacity .28s;display:flex;position:relative;overflow:hidden}.card-link{z-index:3;border-radius:inherit;cursor:pointer;background:0 0;border:0;padding:0;position:absolute;inset:0}.bento-card:has(.card-link){cursor:pointer;transition:transform .24s,filter .28s,opacity .28s}.bento-card:has(.card-link:hover){transform:translateY(-3px)}.bento-card.is-muted{filter:saturate(.55);opacity:.28}.bento-card.is-highlighted{opacity:1}.size-square{grid-area:span 1/span 1}.size-wide{grid-area:span 1/span 2}.size-tall{grid-area:span 2/span 1}.size-big{grid-area:span 2/span 2}.card-image{padding:0}.card-image-img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.card-image-tag{z-index:2;color:#fff;font-family:var(--font-geist-mono), monospace;letter-spacing:.01em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000008c;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:500;position:absolute;top:12px;left:12px}.lightbox{z-index:50;-webkit-backdrop-filter:blur(14px);cursor:zoom-out;background:#0f0f0f8c;place-items:center;padding:clamp(20px,5vw,64px);display:grid;position:fixed;inset:0}.lightbox-img{cursor:default;border-radius:clamp(12px,2vw,22px);width:auto;max-width:min(92vw,1100px);height:auto;max-height:88vh;box-shadow:0 30px 80px #00000073}.eyebrow{color:var(--muted);font-family:var(--font-geist-mono), monospace;letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:12px;font-weight:600;line-height:1.4}.bento-card h2{letter-spacing:-.06em;max-width:18ch;margin:0;font-size:clamp(24px,2.25vw,34px);font-weight:570;line-height:.97}.card-copy{color:#494541;max-width:43ch;margin:14px 0 0;font-size:15px;line-height:1.45}.bento-card .card-meta{bottom:calc(var(--radius) - 16px);left:calc(var(--radius) - 16px);right:calc(var(--radius) - 16px);margin:0;padding:0;position:absolute}.card-btn{cursor:pointer;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffbf;border:1px solid #17171724;border-radius:999px;align-items:center;width:32px;height:32px;padding:0;transition:width .5s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden}.size-square .card-btn:hover,.size-square .card-btn:active,.size-tall .card-btn:hover,.size-tall .card-btn:active{width:100%}.size-wide .card-btn:hover,.size-wide .card-btn:active{width:calc(50% - var(--gap) / 2)}.card-btn-dot{place-items:center;transition:opacity .2s .18s;display:grid;position:absolute;inset:0}.card-btn-dot:before{content:"";background:var(--ink);border-radius:50%;width:5px;height:5px}.card-btn:hover .card-btn-dot,.card-btn:active .card-btn-dot{opacity:0;transition:opacity .1s}.card-btn-label{white-space:nowrap;opacity:0;padding-left:13px;padding-right:16px;font-size:12px;font-weight:400;transition:opacity .1s}.card-btn:hover .card-btn-label,.card-btn:active .card-btn-label{opacity:1;transition:opacity .2s .18s}.card-profile{justify-content:flex-start}.card-profile h2{max-width:17ch}.card-portrait{text-align:center;justify-content:center;align-items:center}.portrait-mark{background:#ffffff8c;border:0;border-radius:50%;place-items:center;width:116px;height:116px;display:grid;overflow:hidden}.portrait-logo{object-fit:contain;width:72px;height:72px}.portrait-place{margin:18px 0 0;font-size:13px;font-weight:600}.card-project{justify-content:flex-start}.card-project:before{content:"";background:linear-gradient(145deg,#0000 48%,#ffffffb8 48.2%);position:absolute;inset:0}.card-project>*{z-index:1;position:relative}.card-project h2{font-size:clamp(27px,2.6vw,39px)}.card-status{justify-content:flex-start}.card-status h2{font-size:24px}.card-skills{justify-content:space-between}.card-skills h2{font-size:19px;line-height:1.15}.skill-orbit{border:1px solid #ffffff59;border-radius:50%;width:112px;height:112px;margin:auto;position:relative}.skill-orbit span{width:36px;height:36px;color:var(--ink);font-family:var(--font-geist-mono), monospace;background:#ffffffeb;border-radius:50%;place-items:center;font-size:10px;font-weight:700;display:grid;position:absolute}.skill-orbit span:first-child{top:-16px;left:38px}.skill-orbit span:nth-child(2){top:39px;right:-14px}.skill-orbit span:nth-child(3){bottom:-15px;left:38px}.skill-orbit span:nth-child(4){top:39px;left:-14px}.card-note,.card-contact{justify-content:flex-start}.card-note h2,.card-contact h2{max-width:22ch}.card-quote{justify-content:flex-start}.card-quote h2{max-width:22ch;font-size:clamp(28px,3vw,42px)}.accent-blue{background:#a8d7ff}.accent-coral{background:#f4b2a8}.accent-yellow{background:#f4da8b}.accent-mint{background:#9ed8c0}.accent-ink{color:#fff;background:#202321}.accent-whatsapp{color:#fff;background:#25d366}.accent-instagram{color:#fff;background:radial-gradient(circle at 30% 107%,#fdf497 0% 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%)}.card-icon{color:#fff;width:46%;height:auto;margin:auto}.accent-ink .eyebrow{color:#ffffff9e}@media (max-width:1231px){.portfolio-shell{width:min(100% - 72px,704px)}.site-header{grid-template-columns:1fr auto;row-gap:8px;min-height:0}.filter-nav{grid-area:2/1/auto/-1;justify-self:center}.header-contact{grid-area:1/2}.bento-grid{grid-auto-rows:calc((100cqw - var(--gap)) / 2);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){:root{--gap:16px;--radius:28px}.portfolio-shell{width:calc(100% - 64px);padding-top:16px;padding-bottom:calc(96px + env(safe-area-inset-bottom))}.site-header{flex-direction:column;align-items:center;min-height:0;margin-bottom:28px;display:flex}.wordmark{justify-content:center;width:100%;display:flex}.wordmark-logo,.wordmark-logo--mono{height:88px}.wordmark-logo--mono{-webkit-mask-position:50%;mask-position:50%}.wordmark-logo--overlap{height:132px;margin-bottom:-44px}.header-contact,.header-links,.card-portrait,.card-skills{display:none}.bento-card.contact-block{display:block}.filter-nav{justify-content:space-between;width:calc(100% - 12px);margin-top:8px}.filter-nav button{padding:8px 9px;font-size:12px}.bento-card{padding:18px}.bento-card h2{font-size:23px;line-height:.96}.size-square{padding:16px}.size-square .eyebrow{margin-bottom:8px;font-size:10px}.card-project h2{font-size:clamp(18px,6.2cqw,25px);line-height:.96}.card-project .eyebrow{margin-bottom:7px;font-size:9px}.card-project .card-copy{margin-top:10px;font-size:clamp(11px,3.8cqw,14px);line-height:1.4}.card-project .card-meta{padding-top:10px;font-size:11px}.card-copy{font-size:14px}.size-wide{padding:18px}.size-wide .eyebrow{margin-bottom:7px;font-size:9px}.size-wide h2{max-width:20ch;font-size:20px;line-height:.96}.size-wide .card-copy{display:none}.card-profile .card-copy{margin-top:12px;display:block}.size-wide .card-meta{padding-top:8px}.card-quote h2{font-size:21px}.portrait-mark{width:88px;height:88px;font-size:25px}.card-status h2{font-size:18px;line-height:.98}.card-status .card-meta{padding-top:8px}.card-skills{padding:18px}.card-skills h2{max-width:15ch;font-size:13px;line-height:1.08}.skill-orbit{width:68px;height:68px}.skill-orbit span{width:25px;height:25px;font-size:7px}.skill-orbit span:first-child{top:-9px;left:21px}.skill-orbit span:nth-child(2){top:21px;right:-9px}.skill-orbit span:nth-child(3){bottom:-9px;left:21px}.skill-orbit span:nth-child(4){top:21px;left:-9px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.portfolio-shell{animation:none!important}}
