@import "https://api.fontshare.com/v2/css?f[]=satoshi@500,700,900&display=swap";@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";:root{--color-canvas:#fafaf9;--color-surface:#fff;--color-surface-subtle:#f1f5f3;--color-ink:#17211d;--color-body:#42514a;--color-muted:#68756f;--color-border:#d8dfda;--color-accent:#047857;--color-accent-hover:#065f46;--color-on-accent:#fff;--shadow-soft:0 20px 50px #17211d1a;--image-offset-surface:#d0dad3;--radius-card:1.5rem;--radius-control:.75rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-9:2.25rem;--font-heading:"Satoshi", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-sans:var(--font-body);font-family:var(--font-body);color:var(--color-ink);background:var(--color-canvas);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{--color-canvas:#050b16;--color-surface:#111c2d;--color-surface-subtle:#26354a;--color-ink:#f4f7fb;--color-body:#b6c0cf;--color-muted:#96a4b7;--color-border:#253348;--color-accent:#16d184;--color-accent-hover:#44df9e;--color-on-accent:#06120c;--image-offset-surface:#26354a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--color-canvas);min-width:20rem;min-height:100vh;margin:0}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--color-accent);outline-offset:4px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.site-shell{width:min(100% - 3rem,80rem);min-height:100vh;margin-inline:auto}.site-header{z-index:5;background:color-mix(in srgb, var(--color-canvas) 88%, transparent);-webkit-backdrop-filter:blur(.75rem);backdrop-filter:blur(.75rem);grid-template-columns:1fr auto 1fr;align-items:center;min-height:4.25rem;transition:background-color .18s,box-shadow .18s;display:grid;position:sticky;top:0}.hero,.skills-section,.projects,.about,.contact-section,.beyond{scroll-margin-top:clamp(4rem,8vw,5.25rem)}.wordmark{color:var(--color-ink);font-family:var(--font-heading);letter-spacing:0;justify-self:start;font-size:1rem;font-weight:800;text-decoration:none}.primary-navigation{align-items:center;gap:var(--space-5);display:flex}.primary-navigation a{color:var(--color-muted);font-size:.6875rem;font-weight:650;text-decoration:none;transition:color .16s}.primary-navigation a:hover{color:var(--color-ink)}.header-actions{justify-self:end;align-items:center;gap:var(--space-3);display:flex;position:relative}.theme-toggle,.header-contact,.menu-toggle{color:var(--color-on-accent);background:var(--color-ink);border:0;border-radius:.375rem;padding:.5rem .75rem;font-size:.6875rem;font-weight:700}.theme-toggle{cursor:pointer;place-items:center;width:1.875rem;height:1.875rem;padding:0;font-size:.875rem;display:grid}.theme-icon{place-items:center;width:1rem;height:1rem;transition:transform .22s;display:grid}.theme-icon svg{width:100%;height:100%}.theme-toggle:hover .theme-icon{transform:rotate(18deg)scale(1.08)}.menu-toggle{cursor:pointer;place-items:center;width:1.875rem;height:1.875rem;padding:0;font-size:1rem;display:none}.header-contact{text-decoration:none;transition:background-color .16s,transform .16s}.header-contact:hover{background:#29332e;transform:translateY(-1px)}:root[data-theme=dark] .header-contact,:root[data-theme=dark] .theme-toggle,:root[data-theme=dark] .menu-toggle{color:#050b16;background:#f4f7fb}:root[data-theme=dark] .header-contact:hover{background:#dce4ee}.hero{grid-template-columns:minmax(0,1fr) minmax(12rem,15.5rem);align-items:center;gap:clamp(2.5rem,9vw,10rem);min-height:22rem;padding-block:clamp(3.5rem,8vw,6rem) clamp(2.75rem,5vw,4rem);display:grid}.hero-copy{max-width:40rem}h1{color:var(--color-ink);font-family:var(--font-heading);letter-spacing:0;margin:0;font-size:clamp(2.25rem,4vw,4rem);font-weight:780;line-height:.96}h1 span{letter-spacing:0;font-size:.62em;display:inline-block;transform:translateY(-.08em)}.hero-introduction{max-width:36rem;margin:var(--space-4) 0 0;color:var(--color-body);font-size:clamp(.875rem,1.2vw,1rem);line-height:1.65}.hero-facts,.social-links{flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.hero-facts{gap:var(--space-2);margin-top:var(--space-5);flex-direction:column}.hero-facts li{align-items:center;gap:var(--space-2);color:var(--color-muted);font-size:.75rem;font-weight:600;display:inline-flex}.availability-dot{background:var(--color-accent);border-radius:50%;flex:none;width:.375rem;height:.375rem}.social-links{gap:var(--space-5);margin-top:var(--space-5)}.social-links a{color:var(--color-ink);text-underline-offset:.3em;font-size:.75rem;font-weight:750;text-decoration:none}.social-links a:hover{text-decoration:underline}.portrait-frame{aspect-ratio:.86;isolation:isolate;width:100%;position:relative}.portrait-frame:before{z-index:-1;content:"";background:var(--image-offset-surface);position:absolute;inset:.75rem -.75rem -.75rem .75rem}.portrait-frame img{object-fit:cover;object-position:center 39%;width:100%;height:100%;display:block}.about{border-top:1px solid var(--color-border);max-width:58rem;margin-inline:auto;padding-block:clamp(2.25rem,4.5vw,3rem) clamp(4.5rem,9vw,7rem)}.skills-section{border-top:1px solid var(--color-border);padding-block:clamp(2.75rem,6vw,4.5rem)}.skills-intro{grid-template-columns:minmax(10rem,18rem) minmax(0,34rem);align-items:start;gap:clamp(2.5rem,8vw,6.25rem);max-width:58rem;display:grid}.skills-intro p:not(.section-eyebrow){max-width:33rem;margin:var(--space-4) 0 0;color:var(--color-body);font-size:clamp(.9rem,1.25vw,1rem);line-height:1.7}.skills-showcase{margin-top:clamp(2rem,5vw,3.25rem);background:0 0;border:0;max-width:58rem;margin-inline:auto;padding:0}.skill-tabs{gap:var(--space-2);background:0 0;border:0;grid-template-columns:repeat(4,minmax(0,1fr));padding:0;display:grid}.skill-tabs button{min-height:2.5rem;color:var(--color-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:.375rem;font-size:.8125rem;font-weight:700;transition:background-color .16s,color .16s,transform .16s}.skill-tabs button:hover{color:var(--color-ink);background:0 0}.skill-tabs button[aria-selected=true]{color:var(--color-accent);box-shadow:none;background:0 0}.skill-panel{padding:clamp(1.5rem,4vw,2.75rem)}.skill-icon-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));margin:0;padding:0;list-style:none;display:grid}.skill-tile{gap:var(--space-3);min-height:7.5rem;padding:var(--space-4);color:var(--color-ink);text-align:center;background:0 0;border:0;justify-items:center;font-size:.78rem;font-weight:750;line-height:1.2;transition:border-color .16s,transform .16s,background-color .16s;display:grid}.skill-tile:hover{border-color:var(--color-accent);transform:translateY(-2px)}.skill-icon{background:var(--color-surface);border-radius:.5rem;place-items:center;width:3.5rem;height:3.5rem;display:grid}.skill-icon img{width:2.625rem;height:2.625rem;display:block}.projects{border-top:1px solid var(--color-border);max-width:58rem;margin-inline:auto;padding-block:clamp(2.25rem,4vw,3.25rem)}.projects-intro{gap:var(--space-3);grid-template-columns:1fr;align-items:start;display:grid}.projects-intro>div{text-align:center;max-width:38rem;margin-inline:auto}.projects-intro p:not(.section-eyebrow){max-width:33rem;margin:var(--space-3) auto 0;color:var(--color-body);font-size:clamp(.9rem,1.25vw,1rem);line-height:1.7}.featured-project{color:var(--color-ink);background:0 0;border:0;grid-template-columns:minmax(0,1.25fr) minmax(18rem,.75fr);gap:clamp(1.25rem,3vw,2.5rem);margin-top:clamp(1.25rem,3vw,1.75rem);padding:0;display:grid}.project-summary{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.project-type{margin:0 0 var(--space-4);color:var(--color-accent);letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;font-weight:800}.project-summary h3{color:var(--color-ink);font-family:var(--font-heading);letter-spacing:0;margin:0;font-size:clamp(1.5rem,2.5vw,2.1rem);font-weight:820;line-height:1}.project-summary p:not(.project-type){max-width:34rem;margin:var(--space-3) 0 0;color:var(--color-body);font-size:clamp(.85rem,1.1vw,.95rem);line-height:1.72}.project-link{min-height:2.5rem;margin-top:var(--space-4);padding-inline:var(--space-4);color:var(--color-on-accent);background:var(--color-ink);align-items:center;font-size:.75rem;font-weight:800;text-decoration:none;transition:background-color .16s,transform .16s;display:inline-flex}.project-link:hover{background:var(--color-accent);transform:translateY(-1px)}.project-details{gap:var(--space-4);grid-template-columns:1fr 1fr;align-content:start;min-width:0;display:grid}.project-details h4{color:var(--color-ink);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.7rem;font-weight:850}.project-feature-list,.project-stack-list{margin:var(--space-4) 0 0;padding:0;list-style:none}.project-feature-list{gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.project-feature-list li{gap:var(--space-2);color:var(--color-body);align-items:baseline;font-size:.74rem;line-height:1.45;display:flex}.project-feature-list li:before{color:var(--color-accent);content:"•"}.project-stack-list{gap:var(--space-2);flex-wrap:wrap;display:flex}.project-stack-list li{color:var(--color-ink);background:color-mix(in srgb, var(--color-accent) 10%, transparent);align-items:center;gap:.45rem;padding:.5rem .7rem;font-size:.72rem;font-weight:800;line-height:1;display:inline-flex}.project-stack-list li:before{background:var(--color-accent);content:"";border-radius:999px;flex:none;width:.35rem;height:.35rem}.about-layout{grid-template-columns:minmax(12rem,18rem) minmax(0,34rem);align-items:start;gap:clamp(2.5rem,8vw,6.25rem);display:grid}.about-aside{min-width:0}.section-eyebrow{color:var(--color-accent);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.6875rem;font-weight:800}h2{max-width:42rem;color:var(--color-ink);font-family:var(--font-heading);letter-spacing:0;margin:0;font-size:clamp(1.9rem,3.2vw,3.25rem);font-weight:780;line-height:1}.about-image{aspect-ratio:.88;isolation:isolate;margin-top:clamp(2rem,4vw,3rem);position:relative}.about-image:before{z-index:-1;content:"";background:var(--image-offset-surface);position:absolute;inset:.75rem .75rem -.75rem -.75rem}.about-image img{object-fit:cover;object-position:center 39%;width:100%;height:100%;display:block}.about-main{min-width:0}.about-copy{max-width:34rem;margin-top:clamp(1.75rem,3.5vw,2.75rem)}.about-copy>p{color:var(--color-body);margin:0;font-size:clamp(.9rem,1.25vw,1rem);line-height:1.72}.about-copy>p+p{margin-top:var(--space-5)}.about-facts{margin-top:var(--space-8);padding-top:var(--space-5);border-top:1px solid var(--color-border)}.about-facts p{color:var(--color-ink);margin:0;font-size:.8125rem;font-weight:750}.about-facts ul{gap:var(--space-3) var(--space-6);margin:var(--space-4) 0 0;grid-template-columns:repeat(2,minmax(0,1fr));padding:0;list-style:none;display:grid}.about-facts li{gap:var(--space-2);color:var(--color-muted);align-items:baseline;font-size:.75rem;line-height:1.45;display:flex}.about-facts li:before{color:var(--color-accent);content:"•"}.contact-section{border-top:1px solid var(--color-border);max-width:58rem;margin-inline:auto;padding-block:clamp(2.75rem,6vw,4.5rem)}.contact-intro{gap:var(--space-3);grid-template-columns:1fr;align-items:start;display:grid}.contact-intro>div{max-width:38rem;margin-inline:0}.contact-intro p:not(.section-eyebrow){max-width:33rem;margin:var(--space-4) 0 0;color:var(--color-body);font-size:clamp(.9rem,1.25vw,1rem);line-height:1.7}.contact-content{gap:var(--space-4);grid-template-columns:1fr;margin-top:clamp(2rem,4vw,3rem);display:grid}.contact-links{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.contact-links a{width:100%;min-height:5rem;padding:var(--space-4);gap:var(--space-3);color:var(--color-ink);background:color-mix(in srgb, var(--color-surface) 72%, transparent);align-items:center;font-size:.78rem;font-weight:800;text-decoration:none;transition:color .16s,transform .16s;display:inline-flex}.contact-social-icon{width:2.5rem;height:2.5rem;color:var(--color-on-accent);background:var(--color-ink);border-radius:.5rem;flex:none;place-items:center;transition:background-color .16s,transform .16s;display:grid}.contact-social-icon svg{width:1.25rem;height:1.25rem}.github-link .contact-social-icon{color:#fff;background:#181717}.linkedin-link .contact-social-icon{color:#fff;background:#0a66c2}.contact-social-copy{gap:.2rem;min-width:0;display:grid}.contact-social-copy strong{font-family:var(--font-heading);font-size:.95rem;font-weight:780}.contact-social-copy small{color:var(--color-muted);font-size:.68rem;font-weight:600}.contact-social-arrow{color:var(--color-muted);margin-left:auto;font-size:1.1rem;transition:color .16s,transform .16s}.contact-links a:hover .contact-social-icon{transform:scale(1.08)}.github-link:hover .contact-social-icon{background:#24292f;box-shadow:0 .5rem 1rem #18171738}.linkedin-link:hover .contact-social-icon{background:#004182;box-shadow:0 .5rem 1rem #0a66c238}.contact-links a:hover .contact-social-arrow{color:var(--color-accent);transform:translate(.15rem,-.15rem)}.contact-links a:hover{color:var(--color-accent);transform:translateY(-.15rem)}.beyond{border-top:1px solid var(--color-border);max-width:58rem;margin-inline:auto;padding-block:clamp(2.75rem,6vw,4.5rem)}.beyond-intro{grid-template-columns:minmax(10rem,18rem) minmax(0,34rem);align-items:start;gap:clamp(2.5rem,8vw,6.25rem);display:grid}.beyond-intro p:not(.section-eyebrow){max-width:33rem;margin:var(--space-4) 0 0;color:var(--color-body);font-size:clamp(.9rem,1.25vw,1rem);line-height:1.7}.beyond-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);align-items:start;gap:clamp(2rem,6vw,5rem);margin-top:clamp(2.5rem,5vw,4rem);display:grid}.beyond-family{padding-top:var(--space-2)}.beyond-kicker{margin:0 0 var(--space-4);color:var(--color-accent);letter-spacing:.1em;text-transform:uppercase;font-size:.6875rem;font-weight:800}.beyond h3{color:var(--color-ink);font-family:var(--font-heading);margin:0;font-size:clamp(1.35rem,2.4vw,2rem);font-weight:780;line-height:1.05}.beyond-family>p:last-child,.interest-copy p:last-child{margin:var(--space-5) 0 0;color:var(--color-body);font-size:.95rem;line-height:1.7}.beyond-interests{gap:clamp(2rem,4vw,3rem);display:grid}.interest-card{gap:var(--space-5);grid-template-columns:minmax(8rem,12rem) minmax(0,1fr);align-items:start;display:grid}.interest-image{aspect-ratio:1;background:var(--color-surface);overflow:hidden}.interest-image img{object-fit:cover;width:100%;height:100%;display:block}.interest-image-button{cursor:zoom-in;border:0;border-radius:0;width:100%;padding:0;transition:transform .22s,box-shadow .22s;display:block}.interest-image-button:hover{box-shadow:0 .9rem 2rem color-mix(in srgb, var(--color-ink) 18%, transparent);transform:translateY(-3px)}.interest-image-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:.3rem}.interest-copy{padding-top:var(--space-2)}.interest-copy .beyond-kicker{margin-bottom:var(--space-3)}.image-lightbox{z-index:10;background:#050b16c7;place-items:center;padding:clamp(1rem,4vw,3rem);animation:.18s ease-out lightbox-fade-in;display:grid;position:fixed;inset:0}.image-lightbox-dialog{width:min(100%,48rem);max-height:calc(100vh - 2rem);padding:var(--space-3);background:var(--color-surface);animation:.22s ease-out lightbox-scale-in;box-shadow:0 1.5rem 4rem #0000004d}.image-lightbox-header{justify-content:space-between;align-items:center;gap:var(--space-4);padding:0 0 var(--space-3) var(--space-2);display:flex}.image-lightbox-header p{color:var(--color-ink);font-family:var(--font-heading);margin:0;font-size:1rem;font-weight:780}.image-lightbox-close{width:2rem;height:2rem;color:var(--color-on-accent);background:var(--color-ink);cursor:pointer;border:0;border-radius:50%;place-items:center;padding:0;font-size:1.25rem;line-height:1;display:grid}.image-lightbox-close:hover{background:var(--color-accent)}.image-lightbox-close:focus-visible{outline:2px solid var(--color-accent);outline-offset:.2rem}.image-lightbox-dialog>img{object-fit:contain;width:100%;max-height:calc(100vh - 7rem);display:block}@keyframes lightbox-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lightbox-scale-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.back-to-top{z-index:4;border:1px solid color-mix(in srgb, var(--color-ink) 14%, transparent);width:3rem;height:3rem;color:var(--color-on-accent);background:var(--color-ink);cursor:pointer;opacity:0;pointer-events:none;border-radius:50%;place-items:center;padding:0;transition:opacity .22s,transform .22s,background-color .16s;display:grid;position:fixed;bottom:clamp(1rem,3vw,2.5rem);right:clamp(1rem,3vw,2.5rem);transform:translateY(.75rem)scale(.9)}.back-to-top[data-visible=true]{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.back-to-top:hover{background:var(--color-accent);transform:translateY(-.25rem)scale(1.04)}.back-to-top:focus-visible{outline:2px solid var(--color-accent);outline-offset:.25rem}.back-to-top-arrow{font-size:1.3rem;line-height:1;transition:transform .16s;display:block}.back-to-top:hover .back-to-top-arrow{transform:translateY(-.15rem)}@media (width<=48rem){.site-shell{width:min(100% - 2rem,80rem)}.site-header{grid-template-columns:1fr auto;min-height:3.75rem}.primary-navigation{z-index:2;width:min(15rem,100vw - 2rem);padding:var(--space-2);border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-soft);flex-direction:column;align-items:stretch;gap:0;display:none;position:absolute;top:3.75rem;right:0}.primary-navigation[data-open=true]{display:flex}.primary-navigation a{padding:var(--space-3)}.header-contact{padding-inline:var(--space-3)}.theme-toggle{width:1.75rem;height:1.75rem}.menu-toggle{width:1.75rem;height:1.75rem;display:grid}.hero{gap:var(--space-8);padding-block:var(--space-8) 3.25rem;grid-template-columns:1fr}.portrait-frame{order:-1;width:min(100%,19rem);margin-inline:auto}.about{max-width:none;padding-block:2.75rem 4.5rem}.skills-section{padding-block:2.75rem}.skills-intro{gap:var(--space-4);grid-template-columns:1fr}.skills-showcase{margin-top:var(--space-8)}.skill-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-panel{padding:var(--space-5) var(--space-3)}.skill-icon-grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr))}.skill-tile{min-height:6.75rem}.projects{padding-block:2.25rem}.projects-intro{gap:var(--space-4);grid-template-columns:1fr}.featured-project{gap:var(--space-5);padding:var(--space-3) 0;grid-template-columns:1fr}.project-details,.project-feature-list{grid-template-columns:1fr}.project-link{margin-top:var(--space-6)}.about-layout{gap:var(--space-8);grid-template-columns:1fr}.section-eyebrow,h2{margin-top:0}.about-image{width:min(100%,19rem);margin-top:var(--space-5)}.about-copy{margin-top:var(--space-6)}.beyond{padding-block:2.75rem 4.5rem}.beyond-intro{gap:var(--space-4);grid-template-columns:1fr}.beyond-layout{gap:var(--space-8);margin-top:var(--space-8);grid-template-columns:1fr}.interest-card{gap:var(--space-4);grid-template-columns:minmax(7rem,9rem) minmax(0,1fr)}.image-lightbox-dialog{padding:var(--space-2)}.contact-section{padding-block:2.75rem}.contact-intro{gap:var(--space-4);grid-template-columns:1fr}.contact-content{gap:var(--space-4);margin-top:var(--space-8);grid-template-columns:1fr}.contact-links{gap:var(--space-4);grid-template-columns:1fr}}@media (width<=30rem){.site-shell{width:min(100% - 1.5rem,80rem)}h1{font-size:clamp(2.25rem,12vw,3rem)}.hero-introduction{font-size:.875rem}.about-facts ul{gap:var(--space-2);grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
