html{color-scheme:light}html.dark{color-scheme:dark}body{-webkit-font-smoothing:antialiased}a:focus-visible,button:focus-visible{outline:2px solid var(--color-accent-text);outline-offset:6px}a,button{-webkit-tap-highlight-color:transparent}::selection{color:var(--color-text-contrast);background:var(--color-accent)}.header-inner{max-width:76rem;min-height:6rem;margin-inline:auto;padding-inline:2rem}#main-header{z-index:10}#main-header .home-link{padding-inline:0;font-size:1rem;font-weight:650}#main-header nav[aria-label=Primary]{gap:1rem;margin-left:auto}#main-header nav a{min-height:44px;color:var(--color-text-muted);align-items:center;font-size:.9375rem;font-weight:600;display:inline-flex}#main-header nav a[aria-current=page]{color:var(--color-text)}#main-header nav a:hover{color:var(--color-accent-text)}#main-header nav[aria-label=Mobile\ primary] a{font-size:1.5rem}[data-menu-toggle],[data-menu-close],[data-theme-toggle]{background:linear-gradient(135deg, var(--color-face-light), var(--color-bg-muted));min-width:44px;min-height:44px;box-shadow:2px 4px 0 var(--color-well), 4px 7px 10px color-mix(in oklab, var(--color-shadow) 55%, transparent), inset 1px 1px 0 color-mix(in oklab, var(--color-highlight) 13%, transparent);border-radius:50%;padding:.75rem;transition:transform .12s,box-shadow .12s}[data-theme-toggle]:hover{color:var(--color-accent-text)}[data-menu-toggle]:active,[data-menu-close]:active,[data-theme-toggle]:active{box-shadow:0 2px 0 var(--color-well), 2px 3px 5px color-mix(in oklab, var(--color-shadow) 55%, transparent), inset 1px 1px 0 color-mix(in oklab, var(--color-highlight) 13%, transparent);transform:translateY(2px)}.home-main{flex:1;max-width:76rem;padding-block:2rem 4rem}.intro-title{letter-spacing:-.05em;font-size:clamp(2.8rem,4.8vw,3.875rem);font-weight:700;line-height:1.1}.intro-copy{max-width:32rem;margin-top:1.875rem;font-size:1.125rem;line-height:1.85}.project-cta{color:var(--color-accent-text);text-decoration-color:var(--color-accent);text-underline-offset:5px}.project-cta:hover{color:var(--color-text)}.portrait{max-width:23rem}.portrait img{height:33rem;filter:drop-shadow(8px 8px 5px color-mix(in oklab, var(--color-shadow) 46%, transparent))}.portrait-backdrop{aspect-ratio:1;background:linear-gradient(135deg, var(--color-face-light), var(--color-bg-muted) 48%, var(--color-face-dark));width:112%;box-shadow:7px 5px 0 var(--color-well), 14px 14px 0 color-mix(in oklab, var(--color-well) 80%, var(--color-face-dark)), 24px 26px 30px color-mix(in oklab, var(--color-shadow) 55%, transparent), -3px -3px 12px color-mix(in oklab, var(--color-highlight) 6%, transparent), inset 2px 2px 2px color-mix(in oklab, var(--color-highlight) 28%, transparent), inset -2px -3px 2px color-mix(in oklab, var(--color-shadow) 75%, transparent);border-radius:50%;position:absolute;bottom:1.5rem;left:-6%;transform:perspective(800px)rotateY(-24deg)rotate(-14deg)}.portrait-backdrop:before{content:"";background:radial-gradient(ellipse at 75% 80%, color-mix(in oklab, var(--color-accent) 14%, var(--color-bg-muted)), var(--color-well) 85%);box-shadow:inset 10px 12px 20px color-mix(in oklab, var(--color-shadow) 65%, transparent), inset -4px -5px 12px color-mix(in oklab, var(--color-highlight) 10%, transparent), 1px 1px 1px color-mix(in oklab, var(--color-highlight) 22%, transparent);border-radius:50%;position:absolute;inset:8%}.projects-main{max-width:72rem;padding:2.75rem 2rem 5rem}.projects-main>h1{letter-spacing:-.04em;margin-bottom:2.5rem;font-size:2.75rem;font-weight:650}.project-list{gap:2.75rem}.project-card{isolation:isolate;border:1px solid color-mix(in oklab, var(--color-border) 75%, transparent);background:linear-gradient(135deg, color-mix(in oklab, var(--color-face-light) 30%, var(--color-bg-muted)), var(--color-bg-muted) 50%, var(--color-face-dark));box-shadow:12px 16px 26px color-mix(in oklab, var(--color-shadow) 40%, transparent), -4px -4px 12px color-mix(in oklab, var(--color-highlight) 3%, transparent), inset 1px 1px 0 color-mix(in oklab, var(--color-highlight) 8%, transparent), inset -1px -1px 0 var(--color-face-dark);border-radius:2rem;scroll-margin-top:2rem;position:relative}.project-visual{background:0 0;border-radius:2rem 0 0 2rem;min-height:25.5rem;overflow:visible}.project-cover{z-index:1;gap:1.75rem;padding:2.25rem 1.5rem;position:relative}.logo-object{background:linear-gradient(135deg, var(--color-well), var(--color-face-light));width:14rem;height:14rem;box-shadow:inset 9px 10px 15px color-mix(in oklab, var(--color-shadow) 95%, transparent), inset -7px -7px 12px color-mix(in oklab, var(--color-highlight) 12%, transparent), 1px 2px 1px color-mix(in oklab, var(--color-highlight) 16%, transparent), -1px -1px 1px color-mix(in oklab, var(--color-shadow) 80%, transparent);border-radius:50%;flex-shrink:0;place-items:center;display:grid;position:relative}.logo-object:before{content:"";background:linear-gradient(135deg, var(--color-face-dark), var(--color-bg-muted) 55%, var(--color-face-light));box-shadow:-1px -1px 1px color-mix(in oklab, var(--color-highlight) 8%, transparent), 3px 4px 7px color-mix(in oklab, var(--color-shadow) 60%, transparent), inset 7px 8px 10px color-mix(in oklab, var(--color-shadow) 60%, transparent), inset -3px -4px 7px color-mix(in oklab, var(--color-highlight) 9%, transparent);border-radius:50%;position:absolute;inset:14px}.logo-object:after{content:"";background:linear-gradient(135deg, var(--color-face-light), var(--color-bg-muted) 65%, var(--color-face-dark));box-shadow:3px 6px 0 var(--color-well), 10px 16px 15px color-mix(in oklab, var(--color-shadow) 90%, transparent), -3px -4px 6px color-mix(in oklab, var(--color-highlight) 10%, transparent), inset 2px 2px 2px color-mix(in oklab, var(--color-highlight) 18%, transparent), inset -2px -3px 2px color-mix(in oklab, var(--color-shadow) 60%, transparent);border-radius:50%;position:absolute;inset:43px}.logo-object img{z-index:1;width:5rem;height:5rem;filter:drop-shadow(2px 3px 2px color-mix(in oklab, var(--color-shadow) 70%, transparent));position:relative}.cover-copy{z-index:2;gap:.7rem;max-width:21rem;position:relative}.cover-copy p:first-child{letter-spacing:-.035em;font-size:1.8rem;font-weight:650}.cover-copy p:last-child{white-space:normal;font-size:.875rem;line-height:1.65}.project-details{gap:1.15rem;padding:2.125rem 2.125rem 2.25rem 1.5rem}.project-details>p,.task-list{line-height:1.7}.project-heading h2{letter-spacing:-.025em;font-size:1.4rem;font-weight:650}.tech-list{gap:.5rem}.tech-list>span{background:color-mix(in oklab, var(--color-well) 45%, transparent);box-shadow:inset 1px 1px 2px color-mix(in oklab, var(--color-shadow) 25%, transparent), 0 1px 0 color-mix(in oklab, var(--color-highlight) 5%, transparent);padding:.3rem .65rem;font-weight:450}.task-list li::marker{color:var(--color-accent-two)}.project-actions{gap:.75rem;padding-top:.75rem;padding-bottom:.35rem}.project-actions a{background:linear-gradient(150deg, var(--color-face-light), var(--color-bg-muted));min-height:44px;box-shadow:0 5px 0 var(--color-well), 4px 8px 9px color-mix(in oklab, var(--color-shadow) 65%, transparent), inset 1px 1px 1px color-mix(in oklab, var(--color-highlight) 17%, transparent), inset -1px -1px 1px color-mix(in oklab, var(--color-shadow) 65%, transparent);border:0;border-radius:999px;padding:.7rem 1.125rem;font-size:.875rem;font-weight:600;transition:transform .12s,box-shadow .12s,color .12s}.project-actions .action-demo{color:var(--color-text-contrast);background:linear-gradient(150deg, var(--color-accent-text), var(--color-accent));box-shadow:0 5px 0 var(--color-accent-base), 4px 8px 10px color-mix(in oklab, var(--color-shadow) 75%, transparent), inset 1px 1px 1px color-mix(in oklab, var(--color-highlight) 50%, transparent), inset -1px -1px 1px color-mix(in oklab, var(--color-accent-base) 60%, transparent)}.project-actions .action-article{color:var(--color-text)}.project-actions a:hover{color:var(--color-accent-text);transform:translateY(-1px)}.project-actions .action-demo:hover{color:var(--color-text-contrast)}.project-actions a:active{box-shadow:0 1px 0 var(--color-well), 1px 2px 4px color-mix(in oklab, var(--color-shadow) 75%, transparent), inset 1px 1px 1px color-mix(in oklab, var(--color-highlight) 17%, transparent);transform:translateY(4px)}.project-actions .action-demo:active{box-shadow:0 1px 0 var(--color-accent-base), 1px 2px 4px color-mix(in oklab, var(--color-shadow) 75%, transparent), inset 1px 1px 1px color-mix(in oklab, var(--color-highlight) 40%, transparent)}button[popovertarget]{min-height:28px}.timing-popover{background:var(--color-bg-muted);box-shadow:0 14px 36px color-mix(in oklab, var(--color-shadow) 80%, transparent), inset 1px 1px 0 color-mix(in oklab, var(--color-highlight) 10%, transparent);border-radius:1.25rem}#main-footer{background:0 0;border:0}.footer-inner{flex-direction:row-reverse;justify-content:space-between;align-items:center;max-width:76rem;padding:1.5rem 2rem}.social-links{gap:.75rem}.social-links>span{display:none}.social-links a{width:40px;height:40px;color:var(--color-text-muted);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.social-links a:hover{color:var(--color-accent-two);background:var(--color-bg-muted);box-shadow:inset 1px 1px 1px color-mix(in oklab, var(--color-highlight) 8%, transparent), 2px 3px 4px color-mix(in oklab, var(--color-shadow) 45%, transparent)}.social-links svg,.social-links a>span{width:20px;height:20px;font-size:16px}.copyright{font-size:.75rem}.about-main{padding-block:3rem 5rem}.about-intro{background:linear-gradient(135deg, var(--color-bg-muted), var(--color-face-dark));box-shadow:7px 10px 18px color-mix(in oklab, var(--color-shadow) 45%, transparent), inset 1px 1px 0 color-mix(in oklab, var(--color-highlight) 10%, transparent);border:0;border-radius:2rem;padding:2.5rem}.about-intro img{border:9px solid var(--color-bg-muted);box-shadow:4px 6px 10px color-mix(in oklab, var(--color-shadow) 80%, transparent), -2px -2px 5px color-mix(in oklab, var(--color-highlight) 12%, transparent), inset 3px 3px 7px var(--color-shadow)}.about-intro h1{letter-spacing:-.035em;font-weight:650}.about-intro p{line-height:1.8}.career>h2{color:var(--color-accent-text);letter-spacing:-.025em;font-weight:600}.career article>div:first-child>span:first-child{background:color-mix(in oklab, var(--color-accent-two) 35%, var(--color-well))}.career article>div:first-child>span:last-child{background:var(--color-accent-two);box-shadow:1px 2px 3px var(--color-shadow), inset 1px 1px 0 color-mix(in oklab, var(--color-highlight) 40%, transparent)}.career article a{color:var(--color-accent-text);background:linear-gradient(135deg, var(--color-face-light), var(--color-bg-muted));box-shadow:0 2px 0 var(--color-well), 2px 3px 5px color-mix(in oklab, var(--color-shadow) 45%, transparent), inset 1px 1px 0 color-mix(in oklab, var(--color-highlight) 10%, transparent);border-radius:999px;padding:.4rem .75rem}.career article a:hover{color:var(--color-text)}.article-main{padding-top:3rem}.article-main>h1{letter-spacing:-.035em;font-weight:650}@media (width>=1024px){.home-main{column-gap:6rem}}@media (width>=768px) and (width<=1023px){.logo-object{width:12rem;height:12rem}.logo-object:after{inset:35px}.logo-object img{width:4.5rem;height:4.5rem}.project-details{padding:1.75rem 1.5rem}.project-actions a{padding-inline:.875rem}.project-actions .action-article{margin-left:0}}@media (width<=767px){.header-inner{min-height:4.5rem;padding-inline:1.25rem}.home-main{gap:2.5rem;padding:1.5rem 1.5rem 3rem}.portrait{max-width:min(16rem,32dvh)}.portrait img{height:min(23rem,46dvh)}.portrait-backdrop{width:104%;bottom:1rem;left:-2%}.intro-title{font-size:clamp(2.2rem,8.5vw,3.5rem)}.intro-copy{margin-top:1.25rem;font-size:1.0625rem;line-height:1.75}.projects-main{padding:2rem 1.25rem 3.5rem}.projects-main>h1{margin-bottom:2rem;font-size:2.25rem}.project-list{gap:2rem}.project-card{border-radius:1.75rem}.project-visual{border-radius:1.75rem 1.75rem 0 0;min-height:17rem}.project-cover{gap:1.5rem;padding:1.75rem 1.25rem .75rem}.logo-object{width:11rem;height:11rem}.logo-object:before{inset:11px}.logo-object:after{inset:33px}.logo-object img{width:4rem;height:4rem}.project-details{gap:1rem;padding:1.5rem 1.25rem 1.875rem}.project-heading h2{font-size:1.25rem}.project-actions{gap:.55rem}.project-actions a{padding-inline:.875rem;font-size:.8125rem}.footer-inner{flex-direction:column;gap:.75rem;padding-inline:1.25rem}.about-main,.article-main{padding:2rem 1.25rem 3.5rem}.about-intro{padding:1.75rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
