@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/f639721981034f88-s.woff2) format("woff2");unicode-range:u+0460-052f,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(/_next/static/media/9766a7e9e2e0ad5a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/b66cf8e69499582a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/aa016aab0e6d1295-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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(/_next/static/media/22a5144ee8d83bca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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.00%;size-adjust:104.76%}.__className_246ccd{font-family:Geist,Geist Fallback;font-style:normal}.__variable_246ccd{--font-geist:"Geist","Geist Fallback"}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/013b72fa676f92e0-s.woff2) format("woff2");unicode-range:u+0460-052f,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(/_next/static/media/b9408752a0c24fb9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/65f03d54ccadf4a8-s.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(/_next/static/media/e038a29029a234f2-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/2b5b02fc7e511755-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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(/_next/static/media/7d4881bb7e1bf84d-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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.00%;size-adjust:134.59%}.__className_c29908{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.__variable_c29908{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}:root{--canvas:#ede8df;--card:#fffefd;--ink:#171717;--on-canvas:#171717;--logo-color:#3a5f3f;--muted:#77716c;--line:rgba(23,23,23,0.08);--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:#ffffff;--on-canvas:#171717;--logo-color:#171717}:root[data-mode=photo] .bento-card{box-shadow:0 0 0 1px rgba(23,23,23,.07)}*{box-sizing:border-box}html{scroll-behavior:smooth}body,html{background:var(--canvas);transition:background-color .6s ease}body{margin:0;color:var(--ink);font-family:var(--font-geist),Arial,sans-serif}a,button{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:page-enter .75s cubic-bezier(.22,1,.36,1);container-type:inline-size}@keyframes page-enter{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.site-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:48px;margin-bottom:40px}.wordmark{position:relative;z-index:1;width:fit-content;text-decoration:none;appearance:none;-webkit-appearance:none;margin:0;padding:0;border:none;background:none;color:inherit;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}.wordmark:focus-visible{outline:2px solid currentColor;outline-offset:4px;border-radius:4px}.wordmark-slot{display:block}.wordmark-logo{display:block}.wordmark-logo,.wordmark-logo--mono{height:var(--logo-h,92px);width:auto}.wordmark-logo--mono{aspect-ratio:1;background-color:var(--logo-color);-webkit-mask-position:left center;mask-position:left center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .6s ease}.filter-nav{z-index:2;display:flex;gap:3px;padding:4px;border:0;background:rgba(218,213,209,.7)}.filter-nav,.filter-nav button{position:relative;border-radius:999px}.filter-nav button{isolation:isolate;padding:9px 17px;background:transparent;color:#3d4549;cursor:pointer;font-size:14px;font-weight:600;transition:transform .18s ease}.filter-nav button:hover{transform:translateY(-1px)}.filter-pill{position:absolute;z-index:-1;inset:2px;border-radius:inherit;background:var(--card)}.filter-label{position:relative;z-index:1}.header-contact{justify-self:end;color:var(--on-canvas);font-size:14px;font-weight:600;text-underline-offset:4px;transition:color .6s ease}.header-links{justify-self:end;display:flex;gap:6px}.header-link{display:grid;place-items:center;min-width:36px;height:36px;padding:0 10px;border-radius:999px;border:1px solid color-mix(in srgb,var(--on-canvas) 22%,transparent);color:var(--on-canvas);font-size:12px;font-weight:600;letter-spacing:.03em;text-decoration:none;transition:background-color .2s ease,color .2s ease,border-color .2s ease}.header-link:hover{background:var(--on-canvas);color:var(--canvas);border-color:var(--on-canvas)}.bento-card.contact-block{display:none}.contact-stack{position:absolute;inset:calc(var(--radius) - 16px);display:flex;flex-direction:column;gap:calc(var(--radius) - 16px)}.contact-pill{flex:1 1;display:grid;place-items:center;border-radius:16px;border:1px solid rgba(23,23,23,.12);background:rgba(23,23,23,.04);color:var(--ink);font-size:16px;font-weight:600;letter-spacing:.03em;text-decoration:none;transition:background-color .18s ease,color .18s ease,transform .16s ease}.contact-pill:active,.contact-pill:hover{background:var(--ink);color:var(--card)}.contact-pill:active{transform:scale(.97)}.bento-grid{display:grid;grid-auto-flow:dense;grid-auto-rows:var(--unit);grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap)}.bento-card{position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;padding:30px;border:0;border-radius:var(--radius);background:var(--card);transition:filter .28s ease,opacity .28s ease}.card-link{position:absolute;inset:0;z-index:3;padding:0;border:0;background:transparent;border-radius:inherit;cursor:pointer}.bento-card:has(.card-link){cursor:pointer;transition:transform .24s ease,filter .28s ease,opacity .28s ease}.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-column:span 1;grid-row:span 1}.size-wide{grid-column:span 2;grid-row:span 1}.size-tall{grid-column:span 1;grid-row:span 2}.size-big{grid-column:span 2;grid-row:span 2}.card-image{padding:0}.card-image-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.card-image-tag{position:absolute;top:12px;left:12px;z-index:2;padding:4px 9px;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font-family:var(--font-geist-mono),monospace;font-size:11px;font-weight:500;letter-spacing:.01em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.lightbox{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:clamp(20px,5vw,64px);background:rgba(15,15,15,.55);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);cursor:zoom-out}.lightbox-img{max-width:min(92vw,1100px);max-height:88vh;width:auto;height:auto;border-radius:clamp(12px,2vw,22px);box-shadow:0 30px 80px rgba(0,0,0,.45);cursor:default}.eyebrow{margin:0 0 10px;color:var(--muted);font-family:var(--font-geist-mono),monospace;font-size:12px;font-weight:600;letter-spacing:.08em;line-height:1.4;text-transform:uppercase}.bento-card :is(h1,h2){max-width:18ch;margin:0;font-size:clamp(24px,2.25vw,34px);font-weight:570;letter-spacing:-.06em;line-height:.97}.card-copy{max-width:43ch;margin:14px 0 0;color:#494541;font-size:15px;line-height:1.45}.bento-card .card-meta{position:absolute;bottom:calc(var(--radius) - 16px);left:calc(var(--radius) - 16px);right:calc(var(--radius) - 16px);margin:0;padding:0}.card-btn{position:relative;display:flex;align-items:center;height:32px;width:32px;padding:0;border:1px solid rgba(23,23,23,.14);border-radius:999px;background:rgba(255,255,255,.75);cursor:pointer;overflow:hidden;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:width .5s cubic-bezier(.34,1.56,.64,1)}.size-square .card-btn:active,.size-square .card-btn:hover,.size-tall .card-btn:active,.size-tall .card-btn:hover{width:100%}.size-wide .card-btn:active,.size-wide .card-btn:hover{width:calc(50% - var(--gap) / 2)}.card-btn-dot{position:absolute;inset:0;display:grid;place-items:center;transition:opacity .2s ease .18s}.card-btn-dot:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--ink)}.card-btn-label,.card-btn:active .card-btn-dot,.card-btn:hover .card-btn-dot{opacity:0;transition:opacity .1s ease}.card-btn-label{font-size:12px;font-weight:400;white-space:nowrap;padding-left:13px;padding-right:16px}.card-btn:active .card-btn-label,.card-btn:hover .card-btn-label{opacity:1;transition:opacity .2s ease .18s}.card-profile{justify-content:flex-start}.card-profile :is(h1,h2){max-width:17ch}.card-portrait{align-items:center;justify-content:center;text-align:center}.portrait-mark{display:grid;width:116px;height:116px;place-items:center;border:0;border-radius:50%;background:rgba(255,255,255,.55);overflow:hidden}.portrait-logo{width:72px;height:72px;object-fit:contain}.portrait-place{margin:18px 0 0;font-size:13px;font-weight:600}.card-project{justify-content:flex-start}.card-project:before{position:absolute;inset:0;background:linear-gradient(145deg,transparent 48%,rgba(255,255,255,.72) 48.2%);content:""}.card-project>*{position:relative;z-index:1}.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{position:relative;width:112px;height:112px;margin:auto;border:1px solid rgba(255,255,255,.35);border-radius:50%}.skill-orbit span{position:absolute;display:grid;width:36px;height:36px;place-items:center;border-radius:50%;background:rgba(255,255,255,.92);color:var(--ink);font-family:var(--font-geist-mono),monospace;font-size:10px;font-weight:700}.skill-orbit span:first-child{left:38px;top:-16px}.skill-orbit span:nth-child(2){right:-14px;top:39px}.skill-orbit span:nth-child(3){bottom:-15px;left:38px}.skill-orbit span:nth-child(4){left:-14px;top:39px}.card-contact,.card-note{justify-content:flex-start}.card-contact h2,.card-note 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{background:#202321;color:white}.accent-whatsapp{background:#25d366;color:white}.accent-instagram{background:radial-gradient(circle at 30% 107%,#fdf497 0,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%);color:white}.card-icon{width:46%;height:auto;margin:auto;color:white}.accent-ink .eyebrow{color:rgba(255,255,255,.62)}@media (max-width:1231px){.portfolio-shell{width:min(calc(100% - 72px),704px)}.site-header{grid-template-columns:1fr auto;min-height:0;row-gap:8px}.filter-nav{grid-column:1/-1;grid-row:2;justify-self:center}.header-contact{grid-column:2;grid-row:1}.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{display:flex;min-height:0;flex-direction:column;align-items:center;margin-bottom:28px}.wordmark{display:flex;width:100%;justify-content:center}.wordmark-logo,.wordmark-logo--mono{height:88px}.wordmark-logo--mono{-webkit-mask-position:center;mask-position:center}.wordmark-logo--overlap{height:132px;margin-bottom:-44px}.card-portrait,.card-skills,.header-contact,.header-links{display:none}.bento-card.contact-block{display:block}.filter-nav{width:calc(100% - 12px);justify-content:space-between;margin-top:8px}.filter-nav button{padding:8px 9px;font-size:12px}.bento-card{padding:18px}.bento-card :is(h1,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 :is(h1,h2){max-width:20ch;font-size:20px;line-height:.96}.size-wide .card-copy{display:none}.card-profile .card-copy{display:block;margin-top:12px}.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{left:21px;top:-9px}.skill-orbit span:nth-child(2){right:-9px;top:21px}.skill-orbit span:nth-child(3){bottom:-9px;left:21px}.skill-orbit span:nth-child(4){left:-9px;top:21px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.portfolio-shell{animation:none!important}}.quick-contact{display:flex;flex-wrap:wrap;gap:10px;margin:-16px 0 24px}.quick-contact a{display:inline-flex;gap:16px;align-items:center;min-height:44px;padding:10px 18px;border-radius:999px;text-decoration:none;background:var(--on-canvas);color:var(--canvas);font-size:14px;font-weight:600}.quick-contact a+a{background:transparent;color:var(--on-canvas);border:1px solid}.bento-card:has(.card-meta){padding-bottom:76px}.card-btn,.size-square .card-btn:hover,.size-tall .card-btn:active,.size-tall .card-btn:hover,.size-wide .card-btn:active,.size-wide .card-btn:hover{width:fit-content;max-width:100%;min-height:44px;height:auto;padding:10px 16px;gap:12px;justify-content:space-between;text-decoration:none;font-size:13px;white-space:normal;transition:background-color .18s ease}.card-btn:hover{background:white}.card-caption{font-size:13px;color:#494541}.card-project>.card-meta{position:absolute;z-index:4}.card-project>.card-link{position:absolute;z-index:3}a:focus-visible,button:focus-visible{outline:3px solid #226341;outline-offset:3px}.card-link:focus-visible{outline-offset:-5px}.lightbox{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;border:0}.lightbox::backdrop{background:rgba(15,15,15,.55)}.lightbox-close{position:absolute;top:20px;right:20px;z-index:1;min-height:44px;padding:12px 18px;border-radius:999px;background:white;color:#171717;cursor:pointer}@media (max-width:560px){.portfolio-shell{width:calc(100% - 32px)}.quick-contact{margin-top:0}.filter-nav{width:100%}.filter-nav button{padding:10px 8px;min-height:44px}.bento-card:not(.card-image):not(.card-portrait):not(.card-skills):not(.contact-block){grid-column:span 2;grid-row:auto;min-height:100%}.bento-grid{grid-auto-rows:minmax(calc((100cqw - var(--gap)) / 2),auto)}.bento-card :is(h1,h2){line-height:1.08}.card-profile h1{font-size:clamp(25px,8cqw,32px)}.card-profile .card-copy{font-size:14px;margin-top:10px}.card-project h2{max-width:22ch;font-size:23px}.card-project .card-copy{max-width:38ch;font-size:14px}.card-contact .card-copy{display:block;overflow-wrap:anywhere}.card-contact{min-height:210px!important}.bento-card.contact-block{grid-column:span 2;grid-row:span 1}.contact-stack{position:static;display:grid;grid-template-columns:1fr 1fr;height:100%;gap:8px}.contact-pill{min-height:44px;font-size:14px}}