header{position:fixed;left:0;top:var(--space-sm);bottom:var(--space-sm);width:var(--nav-width);padding:var(--space-md);padding-top:84px;background-color:var(--color-paper);border:1px solid var(--color-border);border-radius:0 18px 18px 0;border-left:none;display:flex;flex-direction:column;justify-content:flex-start;z-index:55}.nav-li{font-size:14px;font-weight:400;text-transform:uppercase;letter-spacing:.5px;line-height:34px;text-align:right;display:block;color:var(--color-muted);transition:.15s ease-in-out}.nav-link{position:relative;display:block}.nav-li:hover .nav-label,.nav-li.is-active .nav-label{opacity:0}.nav-word{position:absolute;top:50%;right:0;width:var(--w);aspect-ratio:var(--ratio);transform:translateY(-50%);opacity:0;pointer-events:none}.nav-li:hover .nav-word,.nav-li.is-active .nav-word{opacity:1}.nav-letter{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain}.nav-toggle,.nav-scrim{display:none}.nav-bar{position:absolute;left:50%;top:50%;width:72%;height:auto;object-fit:contain;transform-origin:50% 50%;transition:transform .46s cubic-bezier(.68,-.4,.27,1.4),opacity .24s ease}.nav-bar--top{transform:translate(-50%,-50%) rotate(0)}.nav-bar--middle{transform:translate(-50%,-50%) rotate(60deg)}.nav-bar--bottom{transform:translate(-50%,-50%) rotate(-60deg)}.nav-toggle.is-x .nav-bar--top{transform:translate(-50%,-50%) rotate(45deg) scaleX(.92)}.nav-toggle.is-x .nav-bar--middle{transform:translate(-50%,-50%) rotate(-45deg) scaleX(.92)}.nav-toggle.is-x .nav-bar--bottom{transform:translate(-50%,-50%) rotate(-160deg) scaleX(.15);opacity:0}@media (max-width: 900px){header{transform:translate(-100%);transition:transform .28s cubic-bezier(.4,0,.2,1);border-radius:0 18px 18px 0;width:260px;max-width:82vw;padding:var(--space-lg);padding-bottom:calc(var(--space-sm) + 52px + var(--space-md));justify-content:center;align-items:center}header.is-open{transform:translate(0)}header nav{width:100%}.nav-li{font-size:20px;line-height:56px;text-align:center}.nav-word{left:50%;right:auto;width:calc(var(--w) * 1.5);transform:translate(-50%,-50%)}.nav-toggle{position:fixed;bottom:calc(var(--space-sm) + 1px + var(--space-sm));left:var(--space-sm);z-index:60;display:block;width:52px;height:52px;padding:0;background:none;border:none;cursor:pointer}.nav-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:54;display:block;background-color:#0b0b0b59;opacity:0;pointer-events:none;transition:opacity .28s ease}.nav-scrim.is-open{opacity:1;pointer-events:auto}}@media (prefers-reduced-motion: reduce){header,.nav-scrim,.nav-bar{transition:none}}.intro-splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center}.intro-splash.is-settled{pointer-events:none}.intro-splash-stage{position:relative;width:42vw;aspect-ratio:16 / 9;transform-origin:50% 0;transition:transform .5s cubic-bezier(.65,0,.35,1);will-change:transform}.intro-splash-stage.is-docked{transform:translateY(calc(-50vh + 50% + 22px)) scale(.36)}.intro-word{position:absolute;top:0;right:0;bottom:0;left:0}.intro-byline{position:absolute;top:100%;left:0;right:0;margin-top:-3.2vw;text-align:center;font-size:clamp(11px,2.4vw,22px);font-weight:500;text-transform:uppercase;letter-spacing:clamp(2px,1.1vw,10px);white-space:nowrap;color:var(--color-muted);opacity:0;transform:translate(36%);transform-origin:50% 0;transition:opacity .3s ease,font-size .5s cubic-bezier(.65,0,.35,1),letter-spacing .5s cubic-bezier(.65,0,.35,1),transform .5s cubic-bezier(.65,0,.35,1),margin-top .5s cubic-bezier(.65,0,.35,1)}.intro-splash.is-settled .intro-byline{opacity:1}.intro-splash.is-docked .intro-byline{font-size:clamp(7px,1.2vw,12px);letter-spacing:clamp(.5px,.2vw,2px);transform:translate(0) scale(2.78);margin-top:-2.2vw}.letter{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;will-change:opacity;animation:letter-in .18s steps(1,end) var(--delay) both}.intro-word.is-exiting .letter{animation:letter-out .13s steps(1,end) var(--out-delay) both}@keyframes letter-in{0%{opacity:0}35%{opacity:1}55%{opacity:0}to{opacity:1}}@keyframes letter-out{0%{opacity:1}45%{opacity:0}65%{opacity:1}to{opacity:0}}.letter-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;backface-visibility:hidden}@media (max-width: 900px){.intro-byline{font-size:clamp(9px,1.6vw,14px);letter-spacing:clamp(1.5px,.7vw,6px);transform:translate(0)}.intro-splash.is-docked .intro-byline{font-size:clamp(6px,.9vw,9px);letter-spacing:clamp(.5px,.15vw,1.5px);transform:translate(0) scale(2.78)}}@media (max-width: 800px){.intro-splash-stage{width:88vw}}@media (prefers-reduced-motion: reduce){.letter{opacity:1;animation:none}.intro-word.is-exiting .letter{animation:none;opacity:0;transition:opacity .2s linear}.intro-splash-stage{transition:none}}.project-tile{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:stretch;width:100%;background-color:var(--color-panel);border:1px solid var(--color-border);transition:transform .2s ease-out,box-shadow .2s ease-out}.project-tile:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-accent-hover);z-index:5}.project-media{overflow:hidden;aspect-ratio:12 / 7;min-height:100%}.project-image{display:block;width:100%;height:100%;object-fit:cover}.project-info{display:flex;flex-direction:column;padding:var(--space-md);background-color:var(--color-paper);color:var(--color-ink);border-left:1px solid var(--color-border)}.project-index{display:block;height:22px;width:auto;object-fit:contain;object-position:left center}.project-name{margin:6px 0 0;font-size:var(--text-heading-sm);font-weight:600;line-height:1.2}.project-date{display:block;margin-top:4px;font-size:var(--text-label);text-transform:uppercase;letter-spacing:1px;color:var(--color-muted)}.project-description{margin-top:var(--space-xs);font-size:var(--text-body);line-height:1.5;color:var(--color-muted)}.project-stack-container{display:flex;flex-wrap:wrap;gap:4px;margin-top:auto;padding-top:var(--space-sm)}.project-stack-tag{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;padding:3px 7px;color:var(--color-muted);border:1px solid var(--color-border);white-space:nowrap;flex:none}@media (max-width: 900px){.project-tile{grid-template-columns:minmax(0,1fr)}.project-info{border-left:none;border-top:1px solid var(--color-border);padding:var(--space-sm)}.project-media{min-height:0}}.projects-section{display:flex;width:100%;flex-direction:column;padding-left:calc(var(--nav-inset) + var(--nav-width) + var(--space-xl));padding-right:var(--space-xl);margin-top:100vh;position:relative;z-index:20;padding-bottom:60px;padding-top:calc(8.5vw + 84px)}.projects-github-link{display:flex;width:fit-content;padding:var(--space-sm) var(--space-md);background-color:var(--color-panel);border:1px solid var(--color-border);text-transform:uppercase;letter-spacing:.5px;font-size:var(--text-label);font-weight:500;margin-top:var(--space-xl);margin-left:calc((var(--nav-inset) + var(--nav-width) + var(--space-xl)) * -1);margin-right:calc(var(--space-xl) * -1);align-self:center;transition:.2s ease-in-out}.projects-github-link:hover{background-color:var(--color-panel-hover);color:var(--color-on-accent);border-color:var(--color-accent)}.projects-wrapper{display:grid;grid-template-columns:minmax(0,var(--content-width));row-gap:var(--space-xl);justify-content:center;margin-left:calc((var(--nav-inset) + var(--nav-width) + var(--space-xl)) * -1);margin-right:calc(var(--space-xl) * -1)}@media (max-width: 900px){.projects-wrapper{row-gap:var(--space-md)}.projects-section{padding-left:var(--space-lg);padding-right:var(--space-lg);padding-top:calc(8.5vw + 142px)}.projects-wrapper,.projects-github-link{margin-left:0;margin-right:0;transform:none}}@media (max-width: 800px){.projects-section{padding-top:calc(17.8vw + 114px)}}.about{position:relative;z-index:20;padding-left:calc(var(--nav-inset) + var(--nav-width) + var(--space-xl));padding-right:calc(var(--nav-inset) + var(--nav-width) + var(--space-xl));max-width:100%;width:100%;height:fit-content;padding-bottom:120px;padding-top:calc(8.5vw + 84px)}.about-content-wrapper{display:flex;flex-direction:column;max-width:var(--content-width);margin:0 auto}.about-info-col{flex:1;min-width:0;text-align:center}.about-hi{font-size:var(--text-heading-md);font-weight:600;line-height:1.25;margin-bottom:calc(var(--space-md) + .2em)}.about-name{position:relative;display:inline-block;max-width:100%}.about-name-text{position:relative;z-index:1}.about-underline{position:absolute;left:0;top:100%;margin-top:-.4em;z-index:0;width:100%;height:auto;aspect-ratio:2092 / 314;display:block;pointer-events:none}.about-bio{font-size:var(--text-body);line-height:1.7;letter-spacing:.2px;color:var(--color-muted)}.about-skills{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-xs);margin-top:var(--space-lg)}.about-skill-tag{font-size:var(--text-label);font-weight:500;text-transform:uppercase;letter-spacing:.5px;background-color:var(--color-panel-light);color:var(--color-ink);border:1px solid var(--color-border-soft);padding:6px 12px;white-space:nowrap;transition:all .15s ease-in-out}.about-skill-tag:hover{background-color:var(--color-panel-hover);border-color:var(--color-panel-hover);color:var(--color-on-accent)}.about-languages{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-xs);margin-top:var(--space-xs)}.about-language{font-size:var(--text-label);font-weight:500;text-transform:uppercase;letter-spacing:.5px;background-color:var(--color-panel-alt);color:var(--color-ink);border:1px solid var(--color-border-soft);padding:6px 12px;white-space:nowrap;transition:all .15s ease-in-out}.about-language:hover{background-color:var(--color-panel-hover);border-color:var(--color-panel-hover);color:var(--color-on-accent)}@media (max-width: 900px){.about{padding-left:var(--space-lg);padding-right:var(--space-lg)}}@media (max-width: 800px){.about{padding-left:var(--space-md);padding-right:var(--space-md);padding-top:calc(17.8vw + 56px)}.about-hi-greeting{display:block}.about-bio{text-align:left}}.contacts{position:relative;z-index:20;--band-height: 860px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;min-height:var(--band-height);padding-left:calc(var(--nav-inset) + var(--nav-width) + var(--space-xl));padding-right:calc(var(--nav-inset) + var(--nav-width) + var(--space-xl));max-width:100%;width:100%;padding-top:calc(var(--space-xl) * 2);padding-bottom:calc(var(--space-xl) * 2);margin-top:calc(8.5vw + 116px);scroll-margin-top:calc(8.5vw - 52px)}.contacts-marquee{position:absolute;top:50%;left:0;right:0;height:var(--band-height);transform:translateY(-50%);display:flex;align-items:stretch;overflow:hidden}.contacts-marquee-track{display:flex;height:100%;width:max-content;animation:contacts-marquee 60s linear infinite}@keyframes contacts-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.contacts-shot{display:block;flex:none;height:100%;width:auto;object-fit:cover;opacity:.16;transition:opacity .3s ease}.contacts-marquee:hover .contacts-shot{opacity:1}@media (prefers-reduced-motion: reduce){.contacts-marquee-track{animation:none}}.contacts-content-wrapper{position:relative;z-index:2;max-width:var(--content-width);width:100%;margin:0 auto;padding:var(--space-lg) var(--space-lg);background-color:var(--color-paper);border:1px solid var(--color-border);text-align:left}.contacts-eyebrow{font-size:var(--text-label);text-transform:uppercase;letter-spacing:2px;color:var(--color-muted);margin-bottom:var(--space-sm)}.contacts h3{font-size:var(--text-heading-md);font-weight:600;line-height:1.2;letter-spacing:-.3px}.contacts-subtext{margin-top:var(--space-md);color:var(--color-muted);font-size:var(--text-body)}.contacts-links{display:flex;flex-direction:column;margin-top:var(--space-lg)}.contacts-link{display:flex;align-items:baseline;justify-content:space-between;padding:var(--space-sm) var(--space-xs);border-top:1px solid var(--color-border);transition:background-color .15s ease-in-out,padding-left .15s ease-in-out}.contacts-links a.contacts-link:hover{background-color:var(--color-panel);padding-left:var(--space-md)}.contacts-links>*:last-child{border-bottom:1px solid var(--color-border)}.contacts-link-label{font-size:var(--text-label);text-transform:uppercase;letter-spacing:1px;color:var(--color-muted)}.contacts-link-value{font-size:var(--text-body);font-weight:500}@media (max-width: 900px){.contacts{padding-left:var(--space-lg);padding-right:var(--space-lg)}}@media (max-width: 800px){.contacts{padding-left:var(--space-md);padding-right:var(--space-md);margin-top:calc(17.8vw + 88px);scroll-margin-top:calc(17.8vw - 60px);--band-height: 620px}.contacts-content-wrapper{max-width:74vw;padding:var(--space-md) var(--space-md)}.contacts-eyebrow{font-size:11px;letter-spacing:1.5px;margin-bottom:var(--space-xs)}.contacts-subtext{margin-top:var(--space-sm);font-size:14px}.contacts-links{margin-top:var(--space-lg)}.contacts-link{flex-direction:column;align-items:flex-start;gap:4px;padding:var(--space-sm) var(--space-xs)}.contacts-link-label{font-size:10px}.contacts-link-value{font-size:clamp(13px,4vw,22px);overflow-wrap:anywhere}.contacts h3{font-size:clamp(20px,4vw,26px)}}@media (max-width: 480px){.contacts{padding-left:var(--space-sm);padding-right:var(--space-sm);--band-height: 480px}.contacts-content-wrapper{max-width:70vw;padding:var(--space-sm) var(--space-sm)}.contacts h3{font-size:clamp(17px,5vw,22px);letter-spacing:-.2px}.contacts-subtext{font-size:12px}.contacts-links{margin-top:var(--space-md)}.contacts-link{padding:var(--space-sm) 0}.contacts-link-value{font-size:clamp(12px,3.6vw,16px)}}.footer{position:relative;z-index:20;width:100%;max-width:100%;display:flex;padding-left:calc(var(--nav-inset) + var(--nav-width) + var(--space-xl));padding-right:var(--space-xl);padding-top:var(--space-xl);padding-bottom:var(--space-xl)}.footer-inner{position:relative;z-index:1;display:flex;flex-direction:column;flex:1;max-width:var(--content-width);margin:0 auto;transform:translate(calc((var(--space-xl) - var(--nav-inset) - var(--nav-width) - var(--space-xl)) / 2))}.footer-bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md)}.footer-name{font-size:var(--text-label);font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--color-ink)}.footer-links{display:flex;flex-wrap:wrap;gap:var(--space-md)}.footer-links a{font-size:var(--text-label);text-transform:uppercase;letter-spacing:.5px;color:var(--color-muted);transition:color .15s ease-in-out}.footer-links a:hover{color:var(--color-accent)}.footer-meta{font-size:var(--text-label);letter-spacing:.2px;color:var(--color-muted)}@media (max-width: 900px){.footer{padding-left:var(--space-lg);padding-right:var(--space-lg)}.footer-inner{transform:none}}@media (max-width: 800px){.footer{padding-left:var(--space-md);padding-right:var(--space-md);padding-bottom:calc(var(--space-xl) + 52px)}.footer-inner{gap:var(--space-md)}.footer-bottom{flex-direction:column;align-items:flex-start;gap:var(--space-sm)}}:root{--color-ink: #0b0b0b;--color-paper: #ffffff;--color-page: #ffffff;--color-panel: #f4f4f2;--color-panel-light: #fafaf8;--color-panel-alt: #e8e8e4;--color-panel-hover: #f4711f;--color-accent: #f4711f;--color-on-accent: #ffffff;--color-border: rgba(11, 11, 11, .14);--color-border-soft: rgba(11, 11, 11, .07);--color-muted: #6e6e6b;--shadow-accent-hover: 5px 5px 0 rgba(244, 113, 31, .85);--space-xs: 8px;--space-sm: 16px;--space-md: 24px;--space-lg: 40px;--space-xl: 64px;--nav-width: 180px;--nav-inset: 0px;--content-width: 860px;--text-label: 12px;--text-body: 15px;--text-heading-sm: 22px;--text-heading-md: 30px;--text-heading-lg: 22px;--radius: 0px}*{box-sizing:border-box;margin:0;padding:0;border-radius:var(--radius)}html{scroll-behavior:smooth}html,body{max-width:100%;overflow-x:hidden}img{max-width:100%;height:auto;vertical-align:middle;background-repeat:no-repeat;background-size:cover;shape-margin:1rem}body{font-family:Inter,sans-serif;background-color:var(--color-page);color:var(--color-ink)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;pointer-events:none;opacity:.16;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat}ul{list-style-type:none}a{text-decoration:none;color:inherit}h1,h2,h3{font-weight:500;letter-spacing:.3px}@media (max-width: 800px){body{font-size:14px}}
