@import "https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible+Next:opsz,wght@12..72,400;12..72,500;12..72,600&family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,600;12..96,700&display=swap";:root{--color-bg:oklch(10.5% .006 260);--color-surface:oklch(17% .012 260);--color-surface-high:oklch(22.5% .014 260);--color-ink:oklch(96.5% .006 260);--color-muted:oklch(73% .014 260);--color-primary:oklch(54% .2 340);--color-primary-light:oklch(68% .16 346);--color-cyan:oklch(75% .13 205);--color-line:oklch(34% .012 260);--font-display:"Bricolage Grotesque", sans-serif;--font-body:"Atkinson Hyperlegible Next", sans-serif;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:clamp(4rem, 9vw, 8rem);--page-pad:clamp(1.25rem, 4vw, 4.5rem);--max-width:96rem;--radius-sm:6px;--radius-md:12px;--ease-out:cubic-bezier(.16, 1, .3, 1);--z-sticky:20}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--color-bg);min-width:320px;color:var(--color-ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.6}body:before{content:"";pointer-events:none;z-index:-1;background:radial-gradient(circle at 42% 10%,oklch(26% .055 340/.25),#0000 33%);position:fixed;inset:0}a{color:inherit;text-decoration:none}button{font:inherit}:focus-visible{outline:2px solid var(--color-cyan);outline-offset:5px}::selection{background:var(--color-primary);color:var(--color-ink)}.skip-link{top:0;left:var(--page-pad);z-index:40;background:var(--color-ink);color:var(--color-bg);padding:.75rem 1rem;position:fixed;transform:translateY(-120%)}.skip-link:focus{transform:translateY(0)}.site-header,main>section,.site-footer{width:min(100%, var(--max-width));padding-inline:var(--page-pad);margin-inline:auto}.site-header{z-index:var(--z-sticky);min-height:5rem;transition:background-color .24s var(--ease-out), border-color .24s var(--ease-out);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.site-header.is-scrolled{border-bottom-color:var(--color-line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:oklch(10.5% .006 260/.93)}.brand{border:1px solid var(--color-line);border-radius:var(--radius-sm);min-height:2.75rem;color:var(--color-ink);font:600 1.08rem/1 var(--font-display);letter-spacing:-.01em;transition:border-color .18s ease, background-color .18s ease, color .18s ease, transform .18s var(--ease-out);background:0 0;align-items:center;padding:.65rem 1rem;display:inline-flex}.brand:hover{border-color:var(--color-primary-light);background:var(--color-surface-high);color:var(--color-primary-light);transform:translateY(-1px)}.header-actions{align-items:center;gap:clamp(1.5rem,3vw,3rem);display:flex}.navigation{align-items:center;gap:clamp(1.25rem,3vw,3rem);display:flex}.navigation a,.github-link,.text-link,.site-footer a{color:var(--color-muted);transition:color .18s}.navigation a:hover,.github-link:hover,.text-link:hover,.site-footer a:hover{color:var(--color-ink)}.menu-toggle{color:var(--color-ink);background:0 0;border:0;min-height:44px;display:none}.language-switcher{position:relative}.language-switcher summary{min-height:44px;color:var(--color-muted);cursor:pointer;align-items:center;gap:.45rem;padding:0 .2rem;list-style:none;display:inline-flex}.language-switcher summary::-webkit-details-marker{display:none}.language-switcher summary span{font-size:1.35rem;line-height:1}.language-switcher summary svg{transition:transform .18s var(--ease-out)}.language-switcher[open] summary svg{transform:rotate(180deg)}.language-options{border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface);min-width:10rem;padding:.4rem;position:absolute;top:calc(100% + .5rem);right:0}.language-options button{border-radius:var(--radius-sm);width:100%;min-height:2.75rem;color:var(--color-muted);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:.7rem;padding:.5rem .7rem;transition:color .18s,background-color .18s;display:flex}.language-options button span{font-size:1.2rem;line-height:1}.language-options button:hover,.language-options button.active{background:var(--color-surface-high);color:var(--color-ink)}.hero{grid-template-columns:minmax(0,1fr) minmax(16rem,.3fr);gap:clamp(2.5rem,7vw,7rem);min-height:calc(100svh - 5rem);padding-top:clamp(4rem,9vh,7rem);padding-bottom:clamp(8rem,15vh,12rem);display:grid;position:relative;overflow:hidden}.hero-copy{z-index:2;max-width:65rem;position:relative}.availability{color:var(--color-muted);align-items:center;gap:.65rem;margin:0 0 1.5rem;display:flex}.availability span{background:var(--color-cyan);border-radius:50%;width:.55rem;height:.55rem;box-shadow:0 0 0 5px oklch(75% .13 205/.1)}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0}h1{letter-spacing:-.04em;max-width:15ch;font-size:clamp(3.35rem,7.5vw,6rem);line-height:.96}.hero-intro{max-width:41rem;color:var(--color-muted);text-wrap:pretty;margin:2rem 0 0;font-size:clamp(1.08rem,1.5vw,1.28rem)}.hero-actions{align-items:center;gap:1.5rem;margin-top:2.25rem;display:flex}.button{border-radius:var(--radius-sm);min-height:3.5rem;transition:transform .18s var(--ease-out), background-color .18s ease;justify-content:space-between;align-items:center;gap:2rem;padding:.8rem 1.25rem;font-weight:600;display:inline-flex}.button-primary{background:var(--color-primary);color:#fff}.button-primary:hover{background:var(--color-primary-light);transform:translateY(-2px)}.text-link{align-items:center;gap:.6rem;min-height:44px;display:inline-flex}.hero-technologies{grid-template-columns:repeat(3,minmax(7.5rem,1fr));gap:.85rem 1.75rem;width:min(100%,32rem);margin:2.25rem 0 0;padding:0;list-style:none;display:grid}.hero-technologies li{min-height:2rem;color:var(--color-muted);align-items:center;gap:.55rem;padding:0;font-size:1rem;transition:color .18s;display:inline-flex}.hero-technologies li:hover{color:var(--color-ink)}.hero-technologies svg{width:1.15rem;height:1.15rem;fill:var(--color-primary-light);flex:none}.hero-rail{border-left:1px solid var(--color-line);align-self:start;padding:1.5rem 0 1.5rem 2rem}.rail-status{color:var(--color-ink);align-items:center;gap:.65rem;margin:0 0 1.5rem;display:flex}.rail-status span{background:var(--color-primary-light);border-radius:50%;flex:none;width:.55rem;height:.55rem}.rail-title{max-width:19rem;font:600 1.35rem/1.25 var(--font-display);text-wrap:balance;margin:0}.hero-rail dl{margin:2rem 0 .75rem}.hero-rail dl div{border-bottom:1px solid var(--color-line);justify-content:space-between;gap:1rem;padding:.75rem 0;display:flex}.hero-rail dt{color:var(--color-muted)}.hero-rail dd{text-align:right;overflow-wrap:anywhere;min-width:0;margin:0}.hero-rail dd a{transition:color .18s}.hero-rail dd a:hover{color:var(--color-primary-light)}.hero-rail dl .contact-detail{justify-content:space-between;align-items:center;gap:1rem;display:flex}.hero-rail .contact-detail dd{text-align:right;color:var(--color-ink)}.hero-rail .contact-detail a{place-items:center;width:2.75rem;min-height:2.75rem;display:inline-grid}.gmail-icon{width:1.2rem;height:1.2rem;fill:var(--color-primary-light)}.github-link{z-index:2;align-items:center;gap:.6rem;min-height:44px;display:inline-flex;position:relative}.github-link span{margin-left:.15rem}.brand-icon{fill:currentColor;flex:none;width:1.2rem;height:1.2rem}.trajectory{pointer-events:none;width:min(55rem,68vw);position:absolute;bottom:.5rem;right:8%;overflow:visible}.trajectory path{fill:none;stroke:var(--color-line);stroke-width:1.2px;stroke-dasharray:5 6}.trajectory circle{fill:var(--color-bg);stroke:var(--color-primary-light);stroke-width:2px}.trajectory text{fill:var(--color-muted);font:15px var(--font-body)}.project-section{padding-top:var(--space-3xl);padding-bottom:var(--space-3xl);border-top:1px solid var(--color-line);grid-template-columns:minmax(0,1.55fr) minmax(19rem,.7fr);align-items:stretch;gap:clamp(2rem,5vw,5rem);display:grid}.project-visual{background:var(--color-surface);border-radius:var(--radius-md);min-height:33rem;padding:clamp(1.25rem,3vw,3rem);overflow:hidden}.project-window{border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-bg);height:100%}.window-bar{color:var(--color-muted);border-bottom:1px solid var(--color-line);justify-content:space-between;gap:1rem;padding:1rem 1.25rem;display:flex}.window-bar span:first-child{color:var(--color-ink);font-weight:600}.window-content{align-content:center;min-height:28rem;padding:clamp(2rem,5vw,5rem);display:grid;position:relative;overflow:hidden}.window-content:after{content:"";aspect-ratio:1;border:1px solid oklch(54% .2 340/.45);border-radius:50%;width:24rem;position:absolute;bottom:-10rem;right:-8rem}.finova-symbol{color:var(--color-primary-light);font:700 clamp(4rem, 9vw, 8rem)/1 var(--font-display)}.window-content p{max-width:34rem;color:var(--color-muted);font-size:clamp(1.15rem,2vw,1.6rem);line-height:1.35}.code-lines{gap:.65rem;width:min(22rem,70%);margin-top:1.5rem;display:grid}.code-lines i{background:var(--color-line);height:2px}.code-lines i:nth-child(2){background:var(--color-primary);width:78%}.code-lines i:nth-child(3){width:55%}.code-lines i:nth-child(4){background:var(--color-cyan);width:88%}.project-copy{align-self:center}.accent-label{color:var(--color-primary-light);font:600 clamp(1.35rem, 2.2vw, 2rem)/1.1 var(--font-display);letter-spacing:-.025em;text-wrap:balance;margin:0}.hero-accent{margin-top:1rem}.section-label{margin-bottom:1rem}.project-copy h2,.section-heading h2,.about-section h2,.contact-section h2{letter-spacing:-.035em;font-size:clamp(2.45rem,5vw,4.6rem);line-height:1}.project-copy>p:not(.section-label,.project-note){max-width:34rem;color:var(--color-muted);margin:1.5rem 0;font-size:1.2rem}.tech-list{flex-wrap:wrap;gap:1.75rem;margin:0;padding:1.5rem 0 0;list-style:none;display:flex}.tech-list li{min-height:2.75rem;color:var(--color-muted);transition:color .18s ease, transform .18s var(--ease-out);align-items:center;gap:.65rem;font-weight:600;display:inline-flex}.tech-list li:hover{color:var(--color-ink);transform:translateY(-2px)}.tech-list svg{width:1.75rem;height:1.75rem;fill:var(--color-primary-light);flex:none}.project-note{color:var(--color-muted);margin-top:1rem;font-size:.95rem}.repositories-section{padding-top:var(--space-3xl);padding-bottom:var(--space-3xl)}.repositories-heading{grid-template-columns:minmax(0,1fr) minmax(18rem,.45fr);align-items:end;gap:3rem;margin-bottom:clamp(2.5rem,6vw,5rem);display:grid}.repositories-heading h2{letter-spacing:-.035em;font-size:clamp(2.45rem,5vw,4.6rem);line-height:1}.repositories-heading p,.repository-state{max-width:34rem;color:var(--color-muted);margin:0;font-size:1.15rem}.repositories-list{gap:clamp(4rem,9vw,8rem);display:grid}.github-project{grid-template-columns:minmax(0,1.55fr) minmax(19rem,.7fr);align-items:stretch;gap:clamp(2rem,5vw,5rem);display:grid}.github-project.is-reversed{grid-template-columns:minmax(19rem,.7fr) minmax(0,1.55fr)}.github-project.is-reversed .project-visual{order:2}.repository-copy h3{letter-spacing:-.025em;overflow-wrap:anywhere;font-size:clamp(1.6rem,3vw,2.65rem);line-height:1.05}.repository-copy>p:not(.section-label){max-width:34rem;color:var(--color-muted);margin:1.5rem 0 0;font-size:1.2rem}.github-project .window-content p,.repository-copy>p:not(.section-label){-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.repository-link{color:#fff;width:fit-content;margin-top:1.75rem}.repository-languages{grid-template-columns:repeat(3,minmax(3.5rem,1fr));gap:1rem;width:min(100%,22rem);display:grid}.repository-languages li{grid-template-columns:auto 1fr;align-items:center;gap:.6rem;min-height:3.25rem;padding-bottom:.75rem;display:grid;position:relative}.repository-languages li:before,.repository-languages li:after{content:"";border-radius:999px;height:2px;position:absolute;bottom:0;left:0}.repository-languages li:before{background:var(--color-line);width:100%}.repository-languages li:after{width:var(--language-share);background:var(--color-primary-light)}.repository-languages .lucide{fill:none;stroke:var(--color-primary-light)}.language-percentage{color:var(--color-ink);font:600 1rem/1 var(--font-display)}.repository-pagination{border-top:1px solid var(--color-line);grid-template-columns:3rem auto 3rem;justify-content:center;align-items:center;gap:1rem;margin-top:clamp(3rem,7vw,6rem);padding-top:2rem;display:grid}.repository-pagination button{border-radius:var(--radius-sm);width:2.75rem;min-height:2.75rem;color:var(--color-muted);cursor:pointer;transition:color .18s ease, background-color .18s ease, transform .18s var(--ease-out);background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.repository-pagination button:hover:not(:disabled){background:var(--color-surface-high);color:var(--color-ink);transform:translateY(-2px)}.repository-pagination .pagination-direction{background:var(--color-surface);width:3rem;min-height:3rem;color:var(--color-ink);font-size:1.2rem}.repository-pagination button:disabled{cursor:not-allowed;opacity:.3}.pagination-pages{align-items:center;gap:.4rem;display:flex}.pagination-pages button.active{background:var(--color-primary);color:#fff}.services-section{padding-top:var(--space-3xl);padding-bottom:var(--space-3xl)}.section-heading{grid-template-columns:1fr minmax(18rem,.45fr);align-items:end;gap:3rem;margin-bottom:clamp(3rem,7vw,6rem);display:grid}.section-heading p{max-width:34rem;color:var(--color-muted);margin:0;font-size:1.15rem}.services-list{border-top:1px solid var(--color-line);margin:0;padding:0;list-style:none}.services-list details{border-bottom:1px solid var(--color-line)}.services-list summary{cursor:pointer;grid-template-columns:clamp(5rem,9vw,8rem) 1fr auto;align-items:center;gap:2rem;min-height:7.5rem;padding:1.25rem 0;list-style:none;display:grid}.services-list summary::-webkit-details-marker{display:none}.services-list summary:hover h3{color:var(--color-primary-light)}.service-number{color:var(--color-primary-light);font:600 clamp(2.2rem, 5vw, 4.5rem)/1 var(--font-display);letter-spacing:-.04em}.services-list h3{font-size:clamp(1.6rem,3vw,2.65rem);transition:color .18s}.service-chevron{color:var(--color-muted);transition:transform .26s var(--ease-out), color .18s ease}.services-list details[open] .service-chevron{color:var(--color-primary-light);transform:rotate(180deg)}.service-details{grid-template-columns:minmax(0,.75fr) minmax(20rem,1fr);gap:clamp(2rem,6vw,6rem);padding:0 clamp(3rem,9vw,8rem) 3rem clamp(7rem,12vw,12rem);display:grid}.service-details p{max-width:43rem;color:var(--color-muted);margin:0;font-size:1.15rem}.service-details ul{border-top:1px solid var(--color-line);margin:0;padding:0;list-style:none;display:grid}.service-details li{border-bottom:1px solid var(--color-line);gap:.15rem;padding:.85rem 0 .85rem 1.75rem;display:grid;position:relative}.service-details li:before{content:"→";color:var(--color-primary-light);position:absolute;top:.83rem;left:0}.service-details strong{font:600 1.08rem/1.25 var(--font-display)}.service-details li span{color:var(--color-muted);text-wrap:pretty;font-size:.95rem;line-height:1.4}.about-section{padding-top:var(--space-3xl);padding-bottom:var(--space-3xl);border-top:1px solid var(--color-line);grid-template-columns:minmax(8rem,.3fr) 1fr;gap:clamp(2rem,8vw,8rem);display:grid}.about-section>div{max-width:65rem}.about-section>div>p{max-width:49rem;color:var(--color-muted);margin:2rem 0;font-size:clamp(1.1rem,2vw,1.35rem)}.skills{grid-template-columns:repeat(3,minmax(8rem,1fr));gap:1.5rem 2rem;max-width:40rem;margin:0;padding:.75rem 0 0;list-style:none;display:grid}.skills li{min-height:3rem;color:var(--color-muted);transition:color .18s ease, transform .18s var(--ease-out);align-items:center;gap:.8rem;font-weight:600;display:flex}.skills li:hover{color:var(--color-ink);transform:translateY(-2px)}.skills svg{width:1.75rem;height:1.75rem;fill:var(--color-primary-light);flex:none}.csharp-icon{clip-path:polygon(25% 7%,75% 7%,100% 50%,75% 93%,25% 93%,0 50%);background:var(--color-primary-light);width:1.75rem;height:1.75rem;color:var(--color-bg);font:700 .68rem/1 var(--font-display);letter-spacing:-.02em;flex:none;place-items:center;display:inline-grid}.contact-section{text-align:center;border-top:1px solid var(--color-line);padding-top:clamp(6rem,13vw,12rem);padding-bottom:clamp(6rem,13vw,12rem)}.contact-kicker{margin:0 auto 1.5rem}.contact-section h2{margin-inline:auto}.contact-note{max-width:55rem;color:var(--color-muted);margin:1.5rem auto 2rem}.contact-form{text-align:left;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;max-width:52rem;margin:3rem auto 0;display:grid}.form-field{gap:.55rem;display:grid}.form-field label{color:var(--color-ink);font-weight:600}.form-field input,.form-field textarea{border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-ink);font:inherit;transition:border-color .18s,background-color .18s}.form-field input{min-height:3.5rem;padding:.75rem 1rem}.form-field textarea{resize:vertical;min-height:10rem;padding:1rem}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--color-muted);opacity:1}.form-field input:hover,.form-field textarea:hover{border-color:var(--color-muted)}.form-field input:focus,.form-field textarea:focus{border-color:var(--color-primary-light);background:var(--color-surface-high);outline:none}.form-message{grid-column:1/-1}.form-honeypot{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.form-submit{cursor:pointer;border:0;grid-column:1/-1;justify-self:center}.form-submit:disabled{cursor:wait;opacity:.65}.form-status{text-align:center;grid-column:1/-1;margin:0}.form-status.success{color:var(--color-cyan)}.form-status.error{color:var(--color-primary-light)}.site-footer{border-top:1px solid var(--color-line);color:var(--color-muted);justify-content:space-between;gap:1rem;padding-top:1.5rem;padding-bottom:1.5rem;display:flex}@keyframes hero-in{0%{opacity:0;filter:blur(6px);transform:translateY(18px)}to{opacity:1;filter:none;transform:none}}.hero-copy>*,.hero-rail{animation:hero-in .7s var(--ease-out) both}.hero-copy>:nth-child(2){animation-delay:80ms}.hero-copy>:nth-child(3){animation-delay:.13s}.hero-copy>:nth-child(4){animation-delay:.18s}.hero-copy>:nth-child(5){animation-delay:.23s}.hero-copy>:nth-child(6){animation-delay:.28s}.hero-rail{animation-delay:.24s}@media (width<=820px){.menu-toggle{align-items:center;margin-left:auto;display:inline-flex}.header-actions{margin-left:.75rem}.navigation{padding:1rem var(--page-pad) 2rem;background:var(--color-bg);border-bottom:1px solid var(--color-line);flex-direction:column;align-items:stretch;display:none;position:fixed;inset:5rem 0 auto}.navigation.is-open{display:flex}.navigation a{align-items:center;min-height:3rem;font-size:1.15rem;display:flex}.hero{grid-template-columns:1fr;min-height:auto;padding-top:3.5rem}.hero-rail{border-left:0;border-top:1px solid var(--color-line);max-width:30rem;padding:1.5rem 0 0}.trajectory{opacity:.6;width:110%;right:-20%}.project-section{grid-template-columns:1fr}.project-copy{order:-1}.section-heading,.repositories-heading{grid-template-columns:1fr;align-items:start}.service-details{grid-template-columns:1fr;padding-left:clamp(5rem,14vw,8rem)}.about-section{grid-template-columns:1fr;gap:1rem}}@media (width<=520px){h1{font-size:clamp(3rem,15vw,4.4rem)}.hero-actions{flex-direction:column;align-items:stretch}.button,.text-link{width:100%}.project-visual{min-height:26rem}.window-bar{font-size:.82rem}.window-bar span:last-child{display:none}.window-content{min-height:22rem;padding:1.5rem}.services-list summary{grid-template-columns:4.2rem 1fr auto;gap:.75rem;min-height:6.5rem}.service-number{font-size:2.3rem}.service-details{padding:0 0 2rem 5rem}.hero-technologies{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.hero-technologies li{padding:.25rem 0}.skills{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.contact-form{grid-template-columns:1fr}.form-message{grid-column:auto}.github-project,.github-project.is-reversed{grid-template-columns:1fr}.github-project .project-visual,.github-project.is-reversed .project-visual{order:2}.site-footer{flex-direction:column}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
