:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#201f1b;--muted:#68675f;--accent:#177746;--line:#aaa89e;--surface:#f7f5ef;--font-body:"Instrument Sans", "Segoe UI", sans-serif;--content-width:1120px;--page-gutter:clamp(20px, 6vw, 72px);--column-gap:clamp(24px, 5vw, 64px);font-family:var(--font-body);color:var(--ink);background:var(--surface);font-synthesis:none;text-rendering:optimizelegibility}:root[data-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#f2efe7;--muted:#b8b4a9;--accent:#8bd66c;--line:#625f57;--surface:#211f1c;--technology-icon-background:#f7f5ef}@media (prefers-color-scheme:dark){:root:not([data-mode]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#f2efe7;--muted:#b8b4a9;--accent:#8bd66c;--line:#625f57;--surface:#211f1c;--technology-icon-background:#f7f5ef}}html,body{background:var(--surface);margin:0;overflow-x:clip}body{font-size:16px;line-height:1.55}*,:before,:after{box-sizing:border-box}a{color:inherit}a:active{color:var(--muted)}a:focus-visible,button:focus-visible,.technology-strip:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.page-shell{width:min(var(--content-width), calc(100% - 2 * var(--page-gutter)));margin-inline:auto}.skip-link{z-index:1;color:var(--ink);background:var(--surface);padding:8px 12px;position:absolute;inset-block-start:12px;transform:translateY(-150%)}.skip-link:focus-visible{transform:none}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:74px;display:flex}.site-header nav{align-items:center;gap:clamp(16px,3vw,40px);display:flex}.site-header nav>a,.wordmark{align-items:center;min-height:44px;text-decoration:none;display:inline-flex}.wordmark{flex-shrink:0;min-width:44px}.site-header nav>a:hover{color:var(--accent)}.github-link{gap:4px}.github-link:before,.gmail-contact:before,.linkedin-link:before{content:"";flex:none;width:1em;height:1em}.github-link:before{background:currentColor;-webkit-mask:url(/assets/github-DG1028-I.svg) 50%/contain no-repeat;mask:url(/assets/github-DG1028-I.svg) 50%/contain no-repeat}.gmail-contact:before{background:url(/assets/gmail-CY5XVByg.svg) 50%/contain no-repeat}.linkedin-link:before{background:url(/assets/linkedin-Cso4h748.svg) 50%/contain no-repeat}.header-controls{align-items:center;gap:4px;display:flex}.theme-toggle,.language-toggle,.copy-email{width:44px;height:44px;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.language-toggle{font-size:.875rem;font-weight:650}.theme-toggle:hover,.language-toggle:hover,.copy-email:hover{color:var(--accent)}.theme-toggle:active,.language-toggle:active,.copy-email:active{transform:translateY(1px)}.theme-toggle:disabled,.language-toggle:disabled{opacity:.5;cursor:default}.theme-toggle svg,.copy-email svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;width:23px;height:23px}.intro{align-items:center;gap:var(--column-gap);border-bottom:1px solid var(--line);grid-template-columns:minmax(0,2fr) minmax(0,3fr);padding-block:clamp(40px,5vw,64px);display:grid}.intro h1,.technologies h2,.projects h2,.project h3{letter-spacing:-.055em;overflow-wrap:break-word;text-wrap:balance;min-width:0;margin:0;font-weight:700;line-height:1.04}.intro h1{text-align:center;font-size:clamp(3.1rem,6vw,5.65rem)}.intro h1 span{display:block}.intro-copy p,.project p{margin:0;font-size:clamp(1.05rem,1.5vw,1.25rem)}.github-activity,.technologies{border-bottom:1px solid var(--line);padding-block:clamp(28px,4vw,48px)}.technologies h2{font-size:clamp(1.55rem,2.85vw,2.1rem)}.technologies{align-items:start;gap:var(--column-gap);grid-template-columns:minmax(0,1fr) minmax(0,3fr);display:grid}.technology-strip{cursor:grab;touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none;padding-block-start:4px;overflow:clip}.technology-strip:active{cursor:grabbing}.technology-track{width:max-content;display:flex}.technology-list{--technology-icon-size:44px;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px 16px;margin:0;padding:0;font-size:1rem;list-style:none;display:grid}.technology-list li{grid-template-rows:var(--technology-icon-size) auto;text-align:center;overflow-wrap:anywhere;justify-items:center;row-gap:8px;display:grid}.technology-track .technology-list{flex:none;gap:0;display:flex}.technology-track li{width:112px;padding-inline:8px}.technology-list li:before{content:"";width:var(--technology-icon-size);height:var(--technology-icon-size)}.technology-list [data-icon]:before{background:var(--technology-icon) center / contain no-repeat}.technology-list :is([data-icon=mongodb],[data-icon=supabase],[data-icon=nodejs]):before{background-color:var(--technology-icon-background,transparent);box-shadow:0 0 0 3px var(--technology-icon-background,transparent);border-radius:4px}.technology-list [data-icon=nodejs]{--technology-icon:url(/assets/nodejs-CjNLl2AG.svg)}.technology-list [data-icon=express]{--technology-icon:url(/assets/express-CuBe7Ozf.svg)}.technology-list [data-icon=react]{--technology-icon:url(/assets/react-D9fxxZ9k.svg)}.technology-list [data-icon=typescript]{--technology-icon:url(/assets/typescript-Dcw07j2S.svg)}.technology-list [data-icon=javascript]{--technology-icon:url(/assets/javascript-DqYIuC_l.svg)}.technology-list [data-icon=postgresql]{--technology-icon:url(/assets/postgresql-eBrnmPrk.svg)}.technology-list [data-icon=mysql]{--technology-icon:url(/assets/mysql-3xcEjYuJ.svg)}.technology-list [data-icon=mongodb]{--technology-icon:url(/assets/mongodb-DTqo9rOW.svg)}.technology-list [data-icon=prisma]{--technology-icon:url(/assets/prisma-BPeKy4KT.svg)}.technology-list [data-icon=redis]{--technology-icon:url(/assets/redis-DNBH4CRe.svg)}.technology-list [data-icon=supabase]{--technology-icon:url(/assets/supabase-D6vQs19p.svg)}.technology-list [data-icon=rest-api]{--technology-icon:url(/assets/rest-api-DGSgNEYI.svg)}.technology-list [data-icon=websocket]{--technology-icon:url(/assets/websocket-xqNOpYNS.svg)}.technology-list [data-icon=git]{--technology-icon:url(/assets/git-D05Y_bKA.svg)}.technology-list [data-icon=github]{--technology-icon:url(/assets/github-DG1028-I.svg)}.technology-list :is([data-icon=express],[data-icon=prisma],[data-icon=git],[data-icon=github],[data-icon=websocket]):before{-webkit-mask:var(--technology-icon) center / contain no-repeat;mask:var(--technology-icon) center / contain no-repeat;background:currentColor}.projects{padding-block:clamp(28px,4vw,48px) clamp(48px,6vw,76px)}.projects h2{font-size:clamp(2.5rem,5vw,3.6rem)}.project{gap:var(--column-gap);grid-template-columns:minmax(0,1fr) minmax(0,3fr);margin-top:24px;display:grid}.project h3{align-self:center;font-size:clamp(2rem,3vw,2.8rem)}.project-link{min-height:44px;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.15em;align-items:center;text-decoration-thickness:2px;display:inline-flex}.project-link:hover{color:var(--accent)}.project-details{border-inline-start:1px solid var(--line);padding-inline-start:clamp(20px,3vw,40px)}.project-details p+p{margin-block-start:12px}.site-footer{border-block-start:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding-block:24px 32px;display:grid}.site-footer h2{margin:0;font-size:1.25rem}.footer-name{text-align:end;justify-self:end;margin:0;font-weight:650}.contact-links{flex-wrap:wrap;justify-content:center;gap:0 clamp(16px,3vw,32px);display:flex}.contact-links a,.gmail-contact{align-items:center;gap:8px;min-height:44px;display:inline-flex}.contact-links a{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.2em}.contact-links a:hover{color:var(--accent)}.gmail-address{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.copy-email{flex:0 0 44px;justify-items:start;position:relative}.copy-email svg{width:18px;height:18px}.copy-email .copy-check{width:16px;height:16px;color:var(--accent);position:absolute;inset-block-start:14px;inset-inline-end:4px}.copy-status{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:clip}@media (width<=700px){.site-header{min-height:66px}.site-header nav{gap:16px}.intro{grid-template-columns:1fr;gap:24px;padding-block:52px 40px}.intro h1{text-align:start;font-size:clamp(2.5rem,14vw,5.6rem)}.intro h1 span{display:inline}.intro-copy{max-width:560px}.technology-list{--technology-icon-size:36px;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:8px}.technologies,.project{grid-template-columns:1fr;gap:16px}.project-details{border-inline-start:0;padding-inline-start:0}.site-footer{grid-template-columns:1fr 1fr;gap:8px 16px}.contact-links{grid-area:2/1/auto/-1}}@media (width<=430px){.gmail-contact{flex-basis:100%;justify-content:center}.site-header{flex-wrap:wrap;gap:0 8px}.site-header nav{gap:8px;font-size:.94rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}}.github-activity{align-items:center;gap:var(--column-gap);grid-template-columns:minmax(10rem,.65fr) minmax(0,1.8fr);display:grid}.github-activity>h2{letter-spacing:-.045em;overflow-wrap:break-word;text-wrap:balance;margin:0;font-size:clamp(1.55rem,2.85vw,2.1rem);line-height:1.1}.github-activity__panel{min-width:0}.github-activity__scroll{scrollbar-color:var(--line) transparent;padding-block:.15rem .45rem;overflow-x:auto}.github-activity__scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.github-activity__calendar{--calendar-gap:3px;min-width:600px}.github-activity__months,.github-activity__grid{grid-template-columns:repeat(var(--weeks), minmax(0, 1fr));gap:var(--calendar-gap);display:grid}.github-activity__months{color:var(--muted);margin-bottom:.4rem;font-size:.73rem}.github-activity__week{align-content:start;gap:var(--calendar-gap);grid-template-columns:minmax(0,1fr);display:grid}.github-activity__week>span,.github-activity__legend i{aspect-ratio:1;border-radius:2px}.github-activity__day,.github-activity__legend i{background:color-mix(in srgb, var(--muted) 16%, var(--surface))}.github-activity .level-1{background:color-mix(in srgb, var(--accent) 31%, var(--surface))}.github-activity .level-2{background:color-mix(in srgb, var(--accent) 53%, var(--surface))}.github-activity .level-3{background:color-mix(in srgb, var(--accent) 74%, var(--surface))}.github-activity .level-4{background:var(--accent)}.github-activity__footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.35rem 1rem;font-size:.8rem;display:flex}.github-activity__summary{margin:0}.github-activity__legend{align-items:center;gap:.25rem;display:flex}.github-activity__legend i{width:.65rem}.github-activity__empty{color:var(--muted)}@media (width<=700px){.github-activity{grid-template-columns:1fr}}
