:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--base:#fff;--base-2:#f4f7fd;--secondary:#e8eefa;--secondary-2:#dae3f6;--accent:#1b3a9e;--accent-fill:var(--accent);--on-accent:#fff;--accent-on-ink:#fff;--emphasis:currentColor;--ink:#0a0f24;--ink-2:#1f2a44;--ink-3:#4a5878;--line:#14286e24;--line-strong:#14286e47;--accent-soft:#1b3a9e33;--shadow-card:0 24px 48px -24px #0000003d;--scrim:#0006;--glow:0;--shade:.25;--mark-filter:invert(1);--contrib-1:#9be9a8;--contrib-2:#40c463;--contrib-3:#30a14e;--contrib-4:#216e39;--glass-blur:blur(16px) saturate(120%);--sp-1:8px;--sp-2:16px;--sp-3:24px;--sp-4:32px;--sp-5:40px;--sp-6:48px;--sp-8:64px;--sp-10:80px;--sp-12:96px;--sp-16:128px;--gutter:24px;--grid-gap:24px;--max-width:1760px;--section-space:96px;--radius-sm:8px;--radius:16px;--radius-lg:24px;--radius-pill:999px;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-display:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif:"Bodoni Moda", "Didot", Georgia, "Times New Roman", serif;--mono:ui-monospace, "Cascadia Code", Consolas, monospace;--step--2:.8125rem;--step--1:.9375rem;--step-0:1.0625rem;--step-1:1.25rem;--step-2:1.5rem;--step-3:clamp(2rem, 3.4vw, 3rem);--step-4:clamp(3.5rem, 7vw, 6rem);--track-display:-.02em;--track-body:0;--ease-out:cubic-bezier(.16, 1, .3, 1)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--accent:#6d001a;--base:#000;--base-2:#0d0d0d;--secondary:#1a1a1a;--secondary-2:#262626;--accent-on-ink:var(--accent);--emphasis:currentColor;--ink:#fff;--ink-2:#d0d0d0;--ink-3:#a6a6a6;--line:#ffffff1f;--line-strong:#ffffff3d;--accent-soft:#6d001a59;--shadow-card:0 24px 48px -24px #000000e6;--scrim:#050507a8;--glow:1;--shade:1;--mark-filter:none;--contrib-1:#0e4429;--contrib-2:#006d32;--contrib-3:#26a641;--contrib-4:#39d353}@media (width>=768px){:root{--gutter:48px;--grid-gap:32px;--section-space:128px}}@media (width>=1200px){:root{--gutter:80px;--grid-gap:40px;--section-space:160px}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{background:var(--base);color:var(--ink);font-family:var(--font);font-size:var(--step-0);letter-spacing:var(--track-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.65;overflow-x:hidden}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--ink);outline-offset:4px}::selection{background:var(--accent-fill);color:var(--on-accent)}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}h1,h2,h3,h4,p{margin:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:var(--track-display);color:var(--ink);font-weight:600}.container{width:100%;max-width:var(--max-width);padding-inline:var(--gutter);margin-inline:auto}.grid{column-gap:var(--grid-gap);row-gap:var(--sp-6);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.section{padding-block:var(--section-space) 0;position:relative}.sheet{z-index:1;position:relative;overflow-x:clip}.section-head{column-gap:var(--grid-gap);row-gap:var(--sp-2);margin-bottom:var(--sp-8);grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;display:grid}.section-head>.section-title{grid-column:1/span 7}.section-head>.section-lede{grid-column:8/span 5}.section-title{font-size:var(--step-3);line-height:1.2}.section-head>.section-title{letter-spacing:-.045em;font-size:clamp(3rem,7.5vw,8rem);font-weight:600;line-height:.95}.serif{font-family:var(--font-serif);font-variation-settings:"opsz" 28;letter-spacing:-.01em;color:var(--emphasis);font-style:italic;font-weight:500}.section-lede{max-width:48ch;color:var(--ink-2);font-size:var(--step-1);line-height:1.55}.muted{color:var(--ink-2)}.card,.plate,.glass{background:var(--secondary);border-radius:var(--radius);position:relative}.well{background:var(--base-2);border:1px solid var(--line);border-radius:var(--radius);box-shadow:inset 0 1px 2px rgb(0 0 0/calc(.6 * var(--shade)))}.btn{--btn-fill:transparent;--btn-ink-hover:inherit;isolation:isolate;justify-content:center;align-items:center;gap:var(--sp-1);min-height:48px;padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-pill);font-size:var(--step--1);letter-spacing:.01em;cursor:pointer;white-space:nowrap;transition:color .4s var(--ease-out), border-color .4s var(--ease-out), translate .4s var(--ease-out), scale .2s var(--ease-out), box-shadow .4s var(--ease-out);border:1px solid #0000;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.btn:before{content:"";z-index:-1;border-radius:inherit;background:var(--btn-fill);transform-origin:50% 100%;transition:scale .5s var(--ease-out);position:absolute;inset:0;scale:1 0}.btn:is(:hover,:focus-visible):not(:disabled){color:var(--btn-ink-hover);translate:0 -2px}.btn:is(:hover,:focus-visible):not(:disabled):before{scale:1}.btn:is(:hover,:focus-visible):not(:disabled) svg{animation:icon-dip .6s var(--ease-out)}.btn:active:not(:disabled){scale:.96}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--primary{--btn-fill:var(--ink);--btn-ink-hover:var(--accent-on-ink);background:var(--accent-fill);border-color:var(--accent);color:var(--on-accent)}.btn--primary:is(:hover,:focus-visible):not(:disabled){border-color:var(--ink);box-shadow:0 16px 32px -16px rgb(109 0 26/calc(.9 * var(--glow)))}.btn--ghost{--btn-fill:var(--ink);--btn-ink-hover:var(--base);border-color:var(--line-strong);color:var(--ink);background:0 0}.btn--ghost:is(:hover,:focus-visible):not(:disabled){border-color:var(--ink)}.btn--sm{min-height:40px;padding:var(--sp-1) var(--sp-2);font-size:var(--step--2)}@keyframes icon-dip{40%{translate:0 4px}}.link-out,.link-in{align-items:center;gap:var(--sp-1);color:var(--ink);font-size:var(--step--1);background:linear-gradient(var(--ink), var(--ink)) 0 100% / 0 1px no-repeat, linear-gradient(var(--line-strong), var(--line-strong)) 0 100% / 100% 1px no-repeat;transition:background-size .45s var(--ease-out);font-weight:600;text-decoration:none;display:inline-flex}.link-out:is(:hover,:focus-visible),.link-in:is(:hover,:focus-visible){background-size:100% 1px,100% 1px}@media (pointer:coarse){.link-out,.link-in,.contact__details a,.footer__nav a,.opening__links a{position:relative}.link-out:before,.link-in:before,.contact__details a:before,.footer__nav a:before,.opening__links a:before{content:"";inset:calc(-1 * var(--sp-1));position:absolute}}.tags{gap:var(--sp-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.tags li{padding:0 var(--sp-2);border-radius:var(--radius-pill);background:var(--secondary-2);color:var(--ink-2);line-height:32px;font-size:var(--step--2)}.skeleton{background:linear-gradient(90deg, var(--secondary) 0%, var(--secondary-2) 50%, var(--secondary) 100%);border-radius:var(--radius);background-size:200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.data{font-variation-settings:"wdth" 88;font-variant-numeric:tabular-nums;font-size:var(--step--2);color:var(--ink-3);font-weight:500}.skip-link{z-index:200;padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-pill);background:var(--ink);color:var(--base);font-size:var(--step--1);transition:translate .3s var(--ease-out);font-weight:600;position:fixed;top:16px;left:16px;translate:0 -200%}.skip-link:focus-visible{translate:0}.roll__letters{vertical-align:bottom;display:inline-flex;overflow:hidden}.roll__letter{transition:translate .45s var(--ease-out);transition-delay:calc(var(--i) * 16ms);display:inline-block;position:relative}.roll__letter:after{content:attr(data-ch);position:absolute;top:100%;left:0}@media (prefers-reduced-motion:no-preference){:is(a,button):is(:hover,:focus-visible) .roll__letter{translate:0 -100%}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.reveal{animation:linear both reveal-up;animation-timeline:view();animation-range:entry entry 72%}.reveal--left{animation-name:reveal-left}.reveal--right{animation-name:reveal-right}.reveal--scale{animation-name:reveal-scale}.reveal-title{animation:linear both reveal-clip;animation-timeline:view();animation-range:entry 8% entry 88%}.stagger>*{animation:linear both reveal-up;animation-timeline:view();animation-range:entry calc(var(--i,0) * 8%) entry calc(64% + var(--i,0) * 8%)}@media (width<=767px){.reveal--left,.reveal--right{animation-name:reveal-up}}}}@keyframes reveal-up{0%{opacity:0;translate:0 48px}to{opacity:1;translate:0}}@keyframes reveal-left{0%{opacity:0;translate:-64px}to{opacity:1;translate:0}}@keyframes reveal-right{0%{opacity:0;translate:64px}to{opacity:1;translate:0}}@keyframes reveal-scale{0%{opacity:0;scale:.92}to{opacity:1;scale:1}}@keyframes reveal-clip{0%{clip-path:inset(0 0 100%);translate:0 32px}to{clip-path:inset(0 0 -16px);translate:0}}@keyframes word-in{0%{opacity:.12}to{opacity:1}}@keyframes grow-x{0%{scale:0 1}to{scale:1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-property:opacity,color,background-color,border-color,box-shadow!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=1023px){.section-head>.section-title,.section-head>.section-lede{grid-column:1/-1}.section-head{margin-bottom:var(--sp-6)}}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}.backdrop{z-index:-1;pointer-events:none;background:var(--base);position:fixed;inset:0;overflow:hidden}.backdrop__glow{--size:72vmax;width:var(--size);aspect-ratio:1;background:radial-gradient(circle, rgb(109 0 26/calc(.6 * var(--glow))) 0%, rgb(109 0 26/calc(.24 * var(--glow))) 38%, transparent 70%);border-radius:50%;position:absolute;top:0;left:0}.backdrop__glow--a{translate:calc(88vw - var(--size) / 2) calc(12vh - var(--size) / 2)}.backdrop__glow--b{translate:calc(8vw - var(--size) / 2) calc(96vh - var(--size) / 2)}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:scroll()){.backdrop__glow--a{animation:linear both glow-drift-a;animation-timeline:scroll(root)}.backdrop__glow--b{animation:linear both glow-drift-b;animation-timeline:scroll(root)}}}@keyframes glow-drift-a{0%{translate:calc(88vw - var(--size) / 2) calc(12vh - var(--size) / 2)}35%{translate:calc(12vw - var(--size) / 2) calc(40vh - var(--size) / 2)}70%{translate:calc(92vw - var(--size) / 2) calc(70vh - var(--size) / 2)}to{translate:calc(30vw - var(--size) / 2) calc(20vh - var(--size) / 2)}}@keyframes glow-drift-b{0%{translate:calc(8vw - var(--size) / 2) calc(96vh - var(--size) / 2)}35%{translate:calc(94vw - var(--size) / 2) calc(88vh - var(--size) / 2)}70%{translate:calc(6vw - var(--size) / 2) calc(30vh - var(--size) / 2)}to{translate:calc(84vw - var(--size) / 2) calc(96vh - var(--size) / 2)}}.backdrop__grain{opacity:.04;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.loader{z-index:200;align-content:center;place-items:center;gap:var(--sp-4);background:var(--base);transition:opacity .5s .5s;display:grid;position:fixed;inset:0}.loader__frame{position:relative}.loader__tile{aspect-ratio:8/5;place-items:center;width:min(512px,88vw);transition:scale .9s cubic-bezier(.7,0,.2,1);display:grid}.loader__sign{--write:2.2s;width:100%;height:100%;color:var(--emphasis);overflow:visible}.loader__sign path{fill:none;stroke:currentColor;stroke-width:6px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 2;stroke-dashoffset:1.01px;animation:sign-write calc(var(--for) * var(--write)) cubic-bezier(.35, 0, .45, 1) calc(var(--at) * var(--write) + .15s) forwards}@keyframes sign-write{to{stroke-dashoffset:0}}.loader__name{font-family:var(--font-serif);font-style:italic;font-size:var(--step-2);color:var(--ink-2);animation:fade-up .8s var(--ease-out) 1.6s both}.loader__count{bottom:var(--sp-5);font-size:var(--step--1);font-variant-numeric:tabular-nums;letter-spacing:.2em;color:var(--ink-3);margin:0;display:flex;position:absolute;left:50%;translate:-50%}.loader__digit{height:1.2em;line-height:1.2em;display:inline-block;overflow:hidden}.loader__reel span{height:1.2em;display:block}.loader__reel{translate:0 calc(var(--d) * -1.2em);transition:translate .2s var(--ease-out);flex-direction:column;display:flex}@keyframes fade-up{0%{opacity:0;translate:0 16px}}.loader.is-exiting{opacity:0;pointer-events:none}.loader.is-exiting .loader__name,.loader.is-exiting .loader__count{opacity:0;transition:opacity .25s}.loader.is-exiting .loader__tile{scale:1.08}@media (prefers-reduced-motion:reduce){.loader__sign path{stroke-dashoffset:0;animation:none}.loader.is-exiting .loader__tile{scale:1}}.nav{z-index:50;padding:var(--sp-2) calc(var(--gutter) - var(--sp-3)) 0;position:sticky;top:0}.nav:before{content:"";background:linear-gradient(180deg, color-mix(in srgb, var(--base) 90%, transparent), transparent);pointer-events:none;height:128px;transition:opacity .4s;position:absolute;inset:0 0 auto}.nav.is-scrolled:before{opacity:0}.nav__bar{max-width:calc(var(--max-width) - 2 * var(--gutter) + 2 * var(--sp-3));justify-content:space-between;align-items:center;gap:var(--sp-3);height:64px;padding:0 var(--sp-1) 0 var(--sp-3);border-radius:var(--radius-pill);border:1px solid #0000;margin-inline:auto;transition:background .4s,border-color .4s,box-shadow .4s;display:flex;position:relative}.nav.is-scrolled .nav__bar{background:color-mix(in srgb, var(--base-2) 78%, transparent);border-color:var(--line);box-shadow:var(--shadow-card);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.nav__brand{font-family:var(--font-display);white-space:nowrap;align-items:baseline;margin-right:auto;font-size:1.375rem;font-weight:600;display:flex}.nav__mark{width:auto;height:.88em;filter:var(--mark-filter);margin-right:.05em;translate:0 .03em}.nav__brand--spaced .nav__mark{margin-right:.4em}.nav__wordmark{transition:color .2s}.nav__brand:hover .nav__wordmark{color:var(--accent)}.nav__menu{align-items:center;gap:var(--sp-3);display:flex}.nav__menu ul{gap:0;margin:0;padding:0;list-style:none;display:flex}.nav__menu ul a{padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-pill);font-size:var(--step--1);color:var(--ink-2);font-weight:500;transition:color .2s;display:block;position:relative}.nav__menu ul a:after{content:"";left:var(--sp-2);right:var(--sp-2);background:var(--accent);height:2px;transition:scale .3s var(--ease-out);border-radius:2px;position:absolute;bottom:0;scale:0 1}.nav__menu ul a:hover{color:var(--ink)}.nav__menu ul a:hover:after{scale:1}.nav__menu ul a[aria-current]{color:var(--ink)}.nav__menu ul a[aria-current]:after{transition-duration:.5s;scale:1}.theme-switch{border-radius:var(--radius-pill);height:40px;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--ink-3);cursor:pointer;transition:box-shadow .3s var(--ease-out);background:0 0;border:0;grid-template-columns:repeat(2,40px);place-items:center;padding:0;display:grid;position:relative}.theme-switch:hover{box-shadow:inset 0 0 0 1px var(--ink)}.theme-switch__knob{background:var(--ink);width:40px;height:40px;transition:translate .5s var(--ease-out), scale .2s var(--ease-out);border-radius:50%;position:absolute;top:0;left:0}.theme-switch[aria-checked=true] .theme-switch__knob{translate:40px}.theme-switch:active .theme-switch__knob{scale:.9}.theme-switch svg{width:16px;height:16px;transition:color .4s var(--ease-out);position:relative}.theme-switch[aria-checked=false] svg:first-of-type,.theme-switch[aria-checked=true] svg:last-of-type{color:var(--base)}.nav__drawer-theme{display:none}.nav__toggle{border:1px solid var(--line);background:var(--secondary);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.25rem;transition:background .2s,border-color .2s,scale .2s;display:none}.nav__toggle:hover{border-color:var(--line-strong)}.nav__toggle:active{scale:.92}.nav__toggle svg{transition:rotate .35s var(--ease-out)}.nav__toggle[aria-expanded=true] svg{rotate:90deg}.nav__socials{padding-right:var(--sp-1);border-right:1px solid var(--line);align-items:center;gap:0;display:flex}.nav__socials a{width:40px;height:40px;color:var(--ink-2);border-radius:50%;place-items:center;font-size:1.0625rem;transition:color .2s,background .2s,scale .2s;display:grid}.nav__socials a:hover{color:var(--ink);background:var(--secondary-2)}.nav__socials a:active{scale:.92}@media (width<=1023px){.nav__toggle{display:inline-flex}.nav__menu{z-index:4;align-items:stretch;gap:var(--sp-2);padding:var(--sp-2);transform-origin:top;opacity:0;visibility:hidden;transition:opacity .24s ease, translate .34s var(--ease-out), scale .34s var(--ease-out), visibility 0s linear .34s;border-radius:var(--radius-lg);background:var(--secondary);border:1px solid var(--line-strong);box-shadow:var(--shadow-card);flex-direction:column;position:absolute;top:calc(100% + 16px);left:0;right:0;translate:0 -8px;scale:.97}.nav__menu.is-open{opacity:1;visibility:visible;transition:opacity .28s ease, translate .42s var(--ease-out), scale .42s var(--ease-out), visibility 0s;translate:0;scale:1}.nav__menu li,.nav__resume{opacity:0;transition:opacity .24s ease, translate .32s var(--ease-out);translate:0 -8px}.nav__menu.is-open li,.nav__menu.is-open .nav__resume{opacity:1;translate:0}.nav__menu.is-open li:first-child{transition-delay:40ms}.nav__menu.is-open li:nth-child(2){transition-delay:70ms}.nav__menu.is-open li:nth-child(3){transition-delay:.1s}.nav__menu.is-open li:nth-child(4){transition-delay:.13s}.nav__menu.is-open li:nth-child(5){transition-delay:.16s}.nav__menu.is-open li:nth-child(6){transition-delay:.19s}.nav__menu.is-open .nav__resume{transition-delay:.22s}.nav__drawer-theme{padding:var(--sp-1) var(--sp-2);font-size:var(--step-0);color:var(--ink);justify-content:space-between;align-items:center;font-weight:500;display:flex}.nav__menu ul{flex-direction:column}.nav__menu ul a{padding:var(--sp-2);font-size:var(--step-0);color:var(--ink);border-radius:var(--radius-sm)}.nav__menu ul a:after{display:none}}.opening{margin-top:-80px;position:relative}.opening__hero,.opening__frame{height:100svh;position:relative;overflow:hidden}.opening__hero{isolation:isolate;background:var(--base)}.opening__light{z-index:-1;width:100%;height:100%;position:absolute;inset:0}.opening__intro{top:128px;left:var(--gutter);max-width:22ch;font-size:var(--step-1);letter-spacing:-.01em;color:var(--ink);margin:0;font-weight:500;line-height:1.35;position:absolute}.opening__skip-top{z-index:1;top:128px;right:var(--gutter);font-size:var(--step--1);color:var(--ink);font-weight:500;position:absolute}.opening__skip-top:hover{color:var(--ink-3)}@media (width>=1024px){.opening__skip{display:none}}.opening__name{left:var(--gutter);right:var(--gutter);z-index:1;color:var(--ink);pointer-events:none;justify-content:space-between;align-items:baseline;margin:0;font-size:clamp(5rem,15vw,18rem);line-height:.8;display:flex;position:absolute;bottom:128px}.opening__first{font-family:var(--font-display);letter-spacing:-.065em;font-weight:500}.opening__last{z-index:3;letter-spacing:-.035em;font-variation-settings:"opsz" 28;padding-right:.08em;font-weight:500;position:relative}.opening__person{z-index:2;width:auto;max-width:none;height:min(70svh,760px);filter:drop-shadow(0 32px 64px rgb(0 0 0/calc(.6 * var(--shade))));pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute;bottom:0;left:50%;translate:-50%}.opening__bar{left:var(--gutter);right:var(--gutter);z-index:1;justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--line-strong);font-size:var(--step--1);font-weight:500;display:flex;position:absolute;bottom:32px}.opening__role{color:var(--ink-2);margin:0}.opening__links{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:flex}.opening__links a{color:var(--ink);transition:color .2s}.opening__links a:hover{color:var(--ink-3)}.opening__frame{background:radial-gradient(ellipse 52% 64% at 68% 52%, rgb(109 0 26/calc(.62 * var(--glow))), rgb(109 0 26/calc(.18 * var(--glow))) 55%, transparent 78%), var(--base)}.shards{position:absolute;inset:0}.opening__mark{z-index:1;background:linear-gradient(var(--ink), var(--ink)) center / 1px 100% no-repeat, linear-gradient(var(--ink), var(--ink)) center / 100% 1px no-repeat;opacity:.7;width:16px;height:16px;position:absolute}.opening__mark--tl{top:24px;left:24px}.opening__mark--tr{top:24px;right:24px}.opening__mark--bl{bottom:24px;left:24px}.opening__mark--br{bottom:24px;right:24px}.opening__line{z-index:1;left:var(--gutter);letter-spacing:-.04em;max-width:14ch;color:var(--ink);text-shadow:0 8px 32px color-mix(in srgb, var(--base) 60%, transparent);pointer-events:none;margin:0;font-size:clamp(2.25rem,5vw,5.5rem);font-weight:500;line-height:1;position:absolute;top:128px}.opening__line .serif{letter-spacing:-.02em}@media (prefers-reduced-motion:no-preference){.opening__first,.opening__last,.opening__person,.opening__intro,.opening__skip-top,.opening__bar{opacity:0}html[data-revealed] .opening__first{animation:name-rise 1.3s var(--ease-out) both}html[data-revealed] .opening__last{animation:name-rise 1.3s var(--ease-out) .12s both}html[data-revealed] .opening__person{animation:person-rise 1.4s var(--ease-out) .24s both}html[data-revealed] .opening__intro,html[data-revealed] .opening__skip-top,html[data-revealed] .opening__bar{animation:fade-rise 1s var(--ease-out) .72s both}@supports (animation-timeline:view()){.opening{view-timeline:--opening block;view-timeline-inset:0px;height:320svh}.opening__pin{height:100svh;position:sticky;top:0;overflow:hidden}.opening__hero,.opening__frame{height:auto;position:absolute;inset:0}.opening__frame{animation:linear both frame-open;animation-timeline:--opening;animation-range:contain contain 48%}html[data-revealed] .opening__first{animation:name-rise 1.3s var(--ease-out) both, part-left linear both;animation-timeline:auto,--opening;animation-range:normal,contain contain 32%}html[data-revealed] .opening__last{animation:name-rise 1.3s var(--ease-out) .12s both, part-right linear both;animation-timeline:auto,--opening;animation-range:normal,contain contain 32%}html[data-revealed] .opening__person{animation:person-rise 1.4s var(--ease-out) .24s both, person-away linear both;animation-timeline:auto,--opening;animation-range:normal,contain contain 14%}html[data-revealed] .opening__intro,html[data-revealed] .opening__skip-top,html[data-revealed] .opening__bar{animation:fade-rise 1s var(--ease-out) .72s both, fade-away linear both;animation-timeline:auto,--opening;animation-range:normal,contain contain 10%}.opening__line .word{animation:linear both word-in;animation-timeline:--opening;animation-range:contain calc(50% + var(--i) * 4%) contain calc(58% + var(--i) * 4%)}}}@keyframes name-rise{0%{opacity:0;clip-path:inset(0 0 100%);translate:0 24%}to{opacity:1;clip-path:inset(-24% -8% -48%);translate:0}}@keyframes person-rise{0%{opacity:0;translate:-50% 16%}to{opacity:1;translate:-50%}}@keyframes fade-rise{0%{opacity:0;translate:0 16px}to{opacity:1;translate:0}}@keyframes frame-open{0%{opacity:0;clip-path:inset(42% 45% round 8px)}26%{opacity:0;clip-path:inset(42% 45% round 8px)}32%{opacity:1}to{opacity:1;clip-path:inset(0%)}}@keyframes part-left{to{opacity:0;translate:-48vw}}@keyframes part-right{to{opacity:0;translate:48vw}}@keyframes person-away{to{opacity:0;translate:-50% 12%;scale:.86}}@keyframes fade-away{to{opacity:0}}@media (width<=1023px){.opening__hero{padding:120px var(--gutter) 0;flex-direction:column;align-items:stretch;display:flex}.opening__name{align-items:flex-start;gap:var(--sp-1);flex-direction:column;font-size:clamp(4.5rem,23vw,11rem);line-height:.85;position:relative;inset:auto}.opening__last{align-self:flex-end}.opening__intro{margin-top:var(--sp-3);font-size:var(--step-0);position:relative;inset:auto}.opening__person{height:min(52svh,560px)}.opening__role,.opening__skip-top{display:none}.opening__bar{z-index:3;text-shadow:0 1px 2px #000000e6,0 2px 16px #000c;border-top:0;justify-content:flex-end;bottom:24px}.opening__links a{color:#fff}.opening__line{top:104px}}@media (orientation:landscape) and (height<=520px){.opening__hero{padding-top:80px}.opening__name{font-size:26svh}.opening__intro{display:none}.opening__person{height:72svh;left:72%}}.about__grid{column-gap:var(--grid-gap);row-gap:var(--sp-8);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.about__grid>:not(.about__portrait){z-index:1;position:relative}.about__statement{letter-spacing:-.035em;color:var(--ink);grid-column:1/span 7;margin:0;font-size:clamp(2rem,3.5vw,3.75rem);font-weight:500;line-height:1.2}.about__statement .serif{letter-spacing:-.015em}.about__portrait{top:var(--sp-8);aspect-ratio:1/1.08;background:var(--secondary);border-radius:min(8vw,160px) 0 0 min(20vw,400px);width:min(46vw,800px);margin:0;position:absolute;right:0;overflow:hidden}.about__portrait img{object-fit:cover;object-position:50% 30%;filter:saturate(.8)contrast(1.05);width:100%;height:100%}.about__portrait:before,.about__portrait:after{content:"";pointer-events:none;position:absolute;inset:0}.about__portrait:before{background:var(--accent);mix-blend-mode:color;opacity:.6}.about__portrait:after{background:linear-gradient(90deg, var(--base) 0%, transparent 55%);opacity:.85}.about__body{gap:var(--sp-3);max-width:60ch;color:var(--ink-2);grid-column:1/span 6;display:grid}.about__body p{margin:0}.about__body p:first-child{font-size:var(--step-1);color:var(--ink)}.about__links{gap:var(--sp-4);margin-top:var(--sp-1);flex-wrap:wrap;display:flex}.about__facts{gap:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--line);grid-column:1/span 6;grid-template-columns:repeat(4,minmax(0,1fr));margin:0;display:grid}.about__facts div{gap:var(--sp-1);flex-direction:column-reverse;display:flex}.about__facts dt{font-size:var(--step--1);color:var(--ink-3)}.about__facts dd{font-size:var(--step-3);letter-spacing:-.04em;color:var(--ink);font-variant-numeric:tabular-nums;margin:0;font-weight:500;line-height:1}.work__title,.record__title,.skills__title{letter-spacing:-.05em;color:var(--ink);margin:0;font-size:clamp(3rem,7vw,7.5rem);font-weight:500;line-height:.95}.work__title{margin-bottom:var(--sp-6)}.work__list,.record__list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.work__list li,.record__list li{border-bottom:1px solid var(--line)}@property --focus{syntax:"<number>";inherits:false;initial-value:1}@property --hover{syntax:"<number>";inherits:false;initial-value:0}.work__row{align-items:center;column-gap:var(--sp-4);row-gap:var(--sp-1);width:100%;padding:var(--sp-3) 0;color:var(--ink);font:inherit;text-align:left;cursor:pointer;opacity:max(var(--focus), var(--hover));transition:--hover .35s var(--ease-out);background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto;display:grid}.work__row:is(:hover,:focus-visible){--hover:1}.work__name{letter-spacing:-.05em;transition:translate .5s var(--ease-out), color .3s var(--ease-out);font-size:clamp(2.5rem,6vw,6.5rem);font-weight:500;line-height:1}.work__row:is(:hover,:focus-visible) .work__name{translate:var(--sp-2) 0;color:var(--emphasis)}.work__name{grid-column:1}.work__thumb{aspect-ratio:16/10;border-radius:var(--radius-sm);background:var(--secondary);grid-column:2;place-self:center end;width:160px;overflow:hidden}.work__thumb img{object-fit:cover;width:100%;height:100%;transition:scale .6s var(--ease-out)}.work__thumb:hover img{scale:1.08}.work__desc{max-width:52ch;color:var(--ink-2);grid-column:1/-1;display:none}@media (hover:none){.work__desc{display:block}.work__row{--hover:.6}}.work__more{align-items:baseline;gap:var(--sp-1);margin:var(--sp-4) 0 0;font-weight:500;font-size:var(--step-1);color:var(--ink-2);flex-wrap:wrap;display:flex}.work-preview{z-index:40;aspect-ratio:16/10;border-radius:var(--radius);background:var(--secondary);width:400px;box-shadow:var(--shadow-card);pointer-events:none;opacity:0;transition:opacity .3s var(--ease-out), scale .45s var(--ease-out);position:fixed;top:0;left:0;overflow:hidden;scale:.92}.work-preview.is-on{opacity:1;scale:1}.work-preview img{object-fit:cover;width:100%;height:100%}.work-preview__card{justify-content:space-between;gap:var(--sp-2);height:100%;padding:var(--sp-3);background:radial-gradient(ellipse at 50% 130%, rgb(109 0 26/var(--glow)) 0%, rgb(109 0 26/calc(.55 * var(--glow))) 40%, transparent 75%), var(--secondary);flex-direction:column;display:flex}.work-preview__desc{font-size:var(--step-1);color:var(--ink);margin:0;font-weight:500;line-height:1.3}.work-preview__meta{font-size:var(--step--1);color:var(--ink-2);margin:0}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.work__row{animation:linear both row-focus;animation-timeline:view();animation-range:cover}.about__portrait img{animation:linear both focus-in;animation-timeline:view();animation-range:entry cover 40%}.about__statement{view-timeline:--statement block}.about__statement .word{animation:linear both word-in;animation-timeline:--statement;animation-range:cover calc(10% + var(--i) * 0.9%) cover calc(20% + var(--i) * 0.9%)}}}@keyframes focus-in{0%{filter:blur(16px);scale:1.14}to{filter:blur();scale:1}}@keyframes row-focus{0%{--focus:.25}40%,60%{--focus:1}to{--focus:.25}}.wall{margin-top:var(--section-space);position:relative}.wall__pin{place-items:center;height:100svh;display:grid;position:relative;overflow:hidden}.wall__scene{position:absolute;inset:0}.wall__pin:after{content:"";background:radial-gradient(ellipse 48% 36% at 50% 50%, color-mix(in srgb, var(--base) 82%, transparent), transparent);pointer-events:none;position:absolute;inset:0}.wall__line{z-index:1;max-width:16ch;padding:0 var(--gutter);letter-spacing:-.04em;text-align:center;color:var(--ink);text-shadow:0 8px 40px color-mix(in srgb, var(--base) 85%, transparent);pointer-events:none;margin:0;font-size:clamp(2.25rem,4.8vw,5rem);font-weight:500;line-height:1.02;position:relative}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.wall{view-timeline:--wall block;view-timeline-inset:0px;height:420svh}.wall__pin{position:sticky;top:0}.wall__line .word{animation:linear both word-in;animation-timeline:--wall;animation-range:contain calc(4% + var(--i) * 4%) contain calc(12% + var(--i) * 4%)}}}.record__title{margin-bottom:var(--sp-5)}.record+.record{padding-top:var(--sp-12)}.record__row{isolation:isolate;align-items:center;column-gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-2);color:var(--ink);font:inherit;font-size:var(--step-1);text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:48px minmax(0,4fr) minmax(0,4fr) minmax(0,3fr) minmax(0,2fr);transition:color .7s cubic-bezier(.45,0,.15,1);display:grid;position:relative}.record__row:before{content:"";z-index:-1;background:var(--ink);transform-origin:100%;transition:scale .95s cubic-bezier(.65,0,.2,1);position:absolute;inset:0;scale:0 1}.record__row:is(:hover,:focus-visible){color:var(--base)}.record__row:is(:hover,:focus-visible):before{transform-origin:0;scale:1}.record__name{font-weight:500}.record__detail,.record__when{opacity:.75}.record__when{font-variant-numeric:tabular-nums}.record__last{font-size:var(--step--1);justify-self:end;font-weight:500}.record__now{padding:0 var(--sp-1);border-radius:var(--radius-pill);background:var(--accent);color:var(--on-accent);font-size:var(--step--2);font-weight:600;line-height:24px;display:inline-block}.logo-tile{border-radius:var(--radius-sm);width:48px;height:48px;box-shadow:inset 0 0 0 1px var(--line);background:#fff;place-items:center;display:grid;overflow:hidden}.logo-tile img{object-fit:contain;max-width:76%;max-height:76%}.logo-tile span{color:#000;font-weight:600}.skills__grid{column-gap:var(--grid-gap);row-gap:var(--sp-6);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.skills__intro{gap:var(--sp-3);grid-column:1/span 6;display:grid;position:sticky;top:128px}.skills__statement{letter-spacing:-.02em;max-width:18ch;color:var(--ink-2);margin:0;font-size:clamp(1.5rem,2.4vw,2.25rem);font-weight:500;line-height:1.3}.skills__groups{border-top:1px solid var(--line);grid-column:7/span 6}.skill-group{border-bottom:1px solid var(--line);interpolate-size:allow-keywords}.skill-group::details-content{block-size:0;transition:block-size .5s var(--ease-out), content-visibility .5s allow-discrete;overflow:clip}.skill-group[open]::details-content{block-size:auto}.skill-group summary{align-items:baseline;gap:var(--sp-2);padding:var(--sp-3) 0;letter-spacing:-.035em;cursor:pointer;font-size:clamp(1.75rem,3vw,3rem);font-weight:500;list-style:none;display:flex}.skill-group summary::-webkit-details-marker{display:none}.skill-group__count{font-size:var(--step--1);letter-spacing:0;color:var(--ink-3);font-weight:500}.skill-group__icon{color:var(--ink-2);transition:rotate .4s var(--ease-out);align-self:center;margin-left:auto;font-size:1.5rem}.skill-group[open] .skill-group__icon{rotate:45deg}.skill-group__list{padding:0 0 var(--sp-3);margin:0;list-style:none;display:grid}.skill{align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0;grid-template-columns:32px minmax(0,auto) minmax(0,1fr);display:grid}.skill__icon{transition:scale .5s var(--ease-out), rotate .5s var(--ease-out);place-items:center;font-size:1.125rem;display:grid}.skill:hover .skill__icon{rotate:-8deg;scale:1.2}.skill__name{font-size:var(--step-1);font-weight:500}.skill__where{font-size:var(--step--1);color:var(--ink-3);justify-self:end}.guide{z-index:45;align-items:stretch;gap:var(--sp-1);opacity:0;pointer-events:none;transition:opacity .4s var(--ease-out);display:none;position:fixed;top:50%;right:16px;translate:0 -50%}@media (width>=1200px) and (hover:hover){.guide{display:flex}}.guide.is-on{opacity:1;pointer-events:auto}.guide__list{margin:0;padding:0;list-style:none;display:grid}.guide__list a{justify-content:flex-end;align-items:center;gap:var(--sp-1);min-height:24px;color:var(--ink-3);transition:color .2s;display:flex}.guide__list a:after{content:"";transform-origin:100%;width:24px;height:1px;transition:scale .3s var(--ease-out);background:currentColor;scale:.5 1}.guide__list a:hover,.guide__list a[aria-current]{color:var(--ink)}.guide__list a[aria-current]:after{scale:1}.guide__label{padding:0 var(--sp-1);border-radius:var(--radius-pill);background:color-mix(in srgb, var(--base) 60%, transparent);font-size:var(--step--2);white-space:nowrap;opacity:0;transition:opacity .3s var(--ease-out), translate .3s var(--ease-out);font-weight:500;line-height:24px;translate:8px}.guide:is(:hover,:focus-within) .guide__label{opacity:1;translate:0}.guide__track{background:var(--line-strong);order:2;width:1px;position:relative}.guide__fill{background:var(--ink);transform-origin:50% 0;position:absolute;inset:0}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:scroll()){.guide__fill{animation:linear both grow-y;animation-timeline:scroll(root)}}}@keyframes grow-y{0%{scale:1 0}to{scale:1}}.project__links{gap:var(--sp-3);flex-wrap:wrap;display:flex}.detail__shot{border-radius:var(--radius);width:100%}.tags--roomy li{padding:0 var(--sp-2);line-height:40px;font-size:var(--step--1)}@media (width<=1023px){.about__statement,.about__portrait,.about__body,.about__facts,.skills__intro,.skills__groups{grid-column:1/-1}.about__portrait{aspect-ratio:3/4;border-radius:999px 999px var(--radius-lg) var(--radius-lg);grid-row:auto;width:min(100%,480px);position:relative}.about__portrait:after{display:none}.about__facts{grid-template-columns:repeat(2,minmax(0,1fr))}.skills__intro{position:static}}@media (width<=767px){.work__row{grid-template-columns:minmax(0,1fr) auto}.work__thumb{grid-area:1/2/span 2;width:96px}.record__row{row-gap:var(--sp-1);padding:var(--sp-2) var(--sp-1);font-size:var(--step-0);grid-template-columns:48px minmax(0,1fr) auto;align-items:start}.record__row .logo-tile{grid-row:1/span 3}.record__name{grid-area:1/2}.record__last{grid-area:1/3}.record__detail{grid-area:2/2/auto/-1}.record__when{font-size:var(--step--1);grid-area:3/2/auto/-1}}.detail{width:100%;max-width:none;height:100%;max-height:none;padding:var(--sp-2);color:var(--ink);background:0 0;border:0;margin:0;position:fixed;inset:0;overflow:hidden}.detail[open]{place-items:center;display:grid}.detail::backdrop{background:0 0}.detail__scrim{background:var(--scrim);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:absolute;inset:0}.detail__panel{width:min(780px,100%);max-height:calc(100dvh - 2 * var(--sp-2));border-radius:var(--radius-lg);background:var(--secondary);border:1px solid var(--line-strong);box-shadow:inset 0 1px 0 var(--line), 0 40px 100px -30px rgb(0 0 0/calc(.9 * var(--shade)));transform-origin:0 0;flex-direction:column;display:flex;position:relative;overflow:hidden}.detail__content>.link-out{justify-self:start}.detail__content{gap:var(--sp-2);padding:var(--sp-5);overscroll-behavior:contain;display:grid;overflow-y:auto}.detail__close{z-index:2;top:var(--sp-2);right:var(--sp-2);border:1px solid var(--line-strong);background:var(--base-2);cursor:pointer;border-radius:50%;place-items:center;width:40px;height:40px;font-size:1.2rem;transition:background .2s,border-color .2s,transform .2s;display:grid;position:absolute}.detail__close:active{transition-duration:80ms;transform:scale(.9)}.detail__close:hover{background:var(--secondary-2);border-color:var(--line-strong)}.detail-head{align-items:center;gap:var(--sp-2);padding-right:var(--sp-5);display:flex}.detail-head .logo-tile{border-radius:18px;flex:none;width:72px;height:72px}.detail-head__text{gap:0;min-width:0;display:grid}.detail__meta{align-items:center;gap:var(--sp-1);font-size:var(--step--1);color:var(--ink-2);flex-wrap:wrap;display:flex}.detail__title{font-size:var(--step-2);font-weight:700;line-height:1.15}.detail__subtitle{color:var(--ink);font-weight:500}.detail__body{gap:var(--sp-2);max-width:68ch;color:var(--ink-2);display:grid}.detail__score{justify-self:start;align-items:baseline;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius);background:var(--base-2);border:1px solid var(--line);display:flex}.detail__score strong{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.detail__score span{color:var(--ink-2)}.detail__section-title{margin-top:var(--sp-2);font-size:var(--step-1);font-weight:600}.detail__empty{color:var(--ink-2)}.mini-projects{gap:var(--sp-2);margin:0;padding:0;list-style:none;display:grid}.mini-project{gap:var(--sp-2);padding:var(--sp-2);border-radius:var(--radius);background:var(--base-2);border:1px solid var(--line);grid-template-columns:168px minmax(0,1fr);display:grid}.mini-project__media{aspect-ratio:16/10;border-radius:var(--radius-sm);background:var(--base-2);overflow:hidden}.mini-project__media img{object-fit:cover;width:100%;height:100%}.mini-project__body{gap:var(--sp-1);align-content:start;display:grid}.mini-project__body h4{font-family:var(--font-display);font-size:1.1rem;font-weight:700}.mini-project__body p{color:var(--ink-2);font-size:.95rem}@media (width<=599px){.detail{padding:var(--sp-1);place-items:end center}.detail[open]{place-items:end center}.detail__panel{max-height:calc(100dvh - var(--sp-5));border-radius:var(--radius)}.detail__content{padding:var(--sp-3)}.detail-head{align-items:flex-start;gap:var(--sp-2);flex-direction:column}.detail-head .logo-tile{border-radius:14px;width:56px;height:56px}.mini-project{grid-template-columns:1fr}}.github__lede{gap:var(--sp-2);grid-column:8/span 5;justify-items:start;display:grid}.github__grid{column-gap:var(--grid-gap);row-gap:var(--sp-3);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.github__stats{gap:var(--sp-3);grid-column:1/span 4;align-content:start;display:grid}.github__numbers{border-top:1px solid var(--line-strong);margin:0}.github__numbers div{justify-content:space-between;align-items:baseline;gap:var(--sp-2);padding-block:var(--sp-2);border-bottom:1px solid var(--line);display:flex}.github__numbers dt{color:var(--ink-2)}.github__numbers dd{font-variant-numeric:tabular-nums;color:var(--ink);margin:0;font-weight:600}.langs{gap:var(--sp-2);display:grid}.langs__title{font-size:var(--step--1);color:var(--ink-2)}.langs__bar{border-radius:var(--radius-pill);height:8px;display:flex;overflow:hidden}.langs__bar span{border-right:2px solid var(--base);min-width:8px}.langs__bar span:last-child{border-right:0}.langs__legend{gap:var(--sp-1) var(--sp-3);font-size:var(--step--1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.langs__legend li,.repo__lang{align-items:center;gap:var(--sp-1);display:inline-flex}.langs__legend span{color:var(--ink-3)}.langs__legend i,.repo__lang i{border-radius:50%;width:8px;height:8px}.repo-feed{align-content:start;gap:var(--sp-2);grid-column:5/span 8;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.repo{align-items:center;gap:var(--sp-2);height:100%;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);background:var(--secondary);transition:background .24s;display:flex}.repo:hover{background:var(--secondary-2)}.repo__icon{color:var(--ink-3);flex:none;font-size:1.25rem}.repo__main{flex:1;min-width:0;display:grid}.repo__main strong{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.repo__meta{gap:0 var(--sp-2);font-size:var(--step--2);color:var(--ink-3);flex-wrap:wrap;display:flex}.github__error{align-items:center;gap:var(--sp-1);color:var(--ink-2);flex-wrap:wrap;display:flex}.contrib{margin:var(--sp-6) 0 0;padding:var(--sp-4);border-radius:var(--radius-lg);background:var(--base-2)}.contrib__head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);margin-bottom:var(--sp-3);color:var(--ink);font-size:var(--step-0);flex-wrap:wrap;display:flex}.contrib__scroll{overscroll-behavior-x:contain;padding-bottom:var(--sp-1);overflow-x:auto}.contrib__plot{gap:var(--sp-1);grid-template-columns:auto minmax(0,1fr);grid-template-areas:".months""days weeks";min-width:720px;display:grid}.contrib__months{grid-area:months;grid-template-columns:repeat(var(--weeks,53), minmax(0, 1fr));column-gap:var(--sp-1);font-size:var(--step--2);color:var(--ink-3);display:grid}.contrib__days{row-gap:var(--sp-1);font-size:var(--step--2);color:var(--ink-3);grid-area:days;grid-template-rows:repeat(7,minmax(0,1fr));align-items:center;margin:0;padding:0;line-height:1;list-style:none;display:grid}.contrib__weeks{grid-area:weeks;grid-template-columns:repeat(var(--weeks,53), minmax(0, 1fr));column-gap:var(--sp-1);display:grid}.contrib__week{row-gap:var(--sp-1);display:grid}.contrib__day{aspect-ratio:1;background:var(--secondary);border-radius:4px}.contrib__day[data-level="1"]{background:var(--contrib-1)}.contrib__day[data-level="2"]{background:var(--contrib-2)}.contrib__day[data-level="3"]{background:var(--contrib-3)}.contrib__day[data-level="4"]{background:var(--contrib-4)}.contrib__day.is-empty{background:0 0}.contrib__legend{justify-content:flex-end;align-items:center;gap:var(--sp-1);margin-top:var(--sp-2);font-size:var(--step--2);color:var(--ink-3);display:flex}.contrib__legend .contrib__day{width:16px}@media (width<=1023px){.github__lede,.github__stats,.repo-feed{grid-column:1/-1}}@media (width<=599px){.repo-feed{grid-template-columns:1fr}.contrib{padding:var(--sp-2)}}.contact{padding-top:var(--section-space)}.contact__heading{margin:0 0 var(--sp-8);letter-spacing:-.06em;color:var(--ink);font-size:clamp(4rem,12vw,13rem);font-weight:500;line-height:.85}.contact__grid{column-gap:var(--grid-gap);row-gap:var(--sp-6);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.contact__notes{gap:var(--sp-3);grid-column:1/span 5;justify-items:start;display:grid}.contact__notes p{max-width:36ch;font-size:var(--step-1);color:var(--ink-2);margin:0;line-height:1.45}.contact__email{margin-top:var(--sp-2);overflow-wrap:anywhere;letter-spacing:-.03em;color:var(--ink);background:linear-gradient(var(--ink), var(--ink)) 0 100% / 0 1px no-repeat;transition:background-size .45s var(--ease-out);font-size:clamp(1.5rem,2.6vw,2.5rem);font-weight:500}.contact__email:hover{background-size:100% 1px}.contact__phone{font-size:var(--step-1);color:var(--ink)}.contact__links{gap:var(--sp-3);margin:var(--sp-1) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.contact__panel{align-items:start}.contact__intro{gap:var(--sp-3);grid-column:1/span 5;align-content:start;display:grid}.contact__title{max-width:12ch;font-size:clamp(2.5rem,5vw,4.5rem);line-height:1.08}.contact__details{gap:var(--sp-2);margin:var(--sp-2) 0 0;padding:0;list-style:none;display:grid}.contact__details li{align-items:center;gap:var(--sp-2);overflow-wrap:anywhere;font-size:var(--step-1);display:flex}.contact__details a{transition:color .2s}.contact__details a:hover{color:var(--accent)}.socials{gap:var(--sp-2);display:flex}.socials a{border:1px solid var(--line-strong);background:var(--secondary);width:48px;height:48px;transition:translate .24s var(--ease-out), border-color .24s, color .24s;border-radius:50%;place-items:center;font-size:1.25rem;display:grid}.socials a:active{scale:.93}.socials a:hover{border-color:var(--accent);color:var(--accent);translate:0 -4px}.contact__form{padding:var(--sp-5);border-radius:var(--radius-lg);grid-column:7/span 6}.contact-form{gap:var(--sp-3);display:grid}.field{gap:var(--sp-1);display:grid}.field label{font-size:var(--step--1);color:var(--ink-2);font-weight:500}.field input,.field textarea,.field select{width:100%;min-height:48px;padding:var(--sp-1) var(--sp-2);background:var(--base-2);border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color .2s,box-shadow .2s}.field textarea{resize:vertical;min-height:128px;padding-block:var(--sp-2)}.field input:focus,.field textarea:focus,.field select:focus{outline:2px solid var(--ink);outline-offset:2px;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.field [aria-invalid=true]{border-color:var(--ink-2);box-shadow:0 0 0 3px var(--accent-soft)}.field__error{font-size:var(--step--2);color:var(--ink)}.contact-form .btn{justify-self:start}.contact-form__status{min-height:1.4em;font-size:var(--step--1)}.is-success{color:var(--ink)}.is-error{color:var(--accent)}.is-error a{text-decoration:underline}.footer{margin-top:var(--sp-12);padding-block:var(--sp-8) var(--sp-4);border-top:1px solid var(--line)}.footer__grid{column-gap:var(--grid-gap);row-gap:var(--sp-6);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.footer__about{grid-column:1/span 5;position:relative}.footer__brand{display:block;position:absolute;inset:0}.footer__brand img{width:auto;max-width:100%;height:100%;filter:var(--mark-filter)}.footer__tag{max-width:28ch;font-size:var(--step-1);color:var(--ink-2);grid-area:2/1/auto/span 5;margin:0;font-weight:500;line-height:1.3}.footer__col{grid-column:span 2}.footer__col:last-child{grid-column:span 3}.footer__col h3{margin:0 0 var(--sp-2);font-size:var(--step--1);color:var(--ink-3);font-weight:600}.footer__col ul{gap:var(--sp-1);margin:0;padding:0;list-style:none;display:grid}.footer__col a{font-size:var(--step-0);color:var(--ink);overflow-wrap:anywhere;font-weight:500}.footer__credit{justify-content:space-between;gap:var(--sp-1) var(--sp-3);margin:var(--sp-8) 0 0;padding-top:var(--sp-3);border-top:1px solid var(--line);font-size:var(--step--1);color:var(--ink-3);flex-wrap:wrap;font-weight:500;display:flex}@media (width<=1023px){.contact__notes,.contact__intro,.contact__form{grid-column:1/-1}.footer__about{grid-column:1/-1;height:96px}.footer__tag{grid-area:auto/1/auto/-1}.footer__col{grid-column:span 6}.footer__col:last-child{grid-column:1/-1}}@media (width<=599px){.contact__form{padding:var(--sp-3)}}.topic-picker{border:0;margin:0;padding:0}.topic-picker legend{margin-bottom:var(--sp-2);font-size:var(--step--1);color:var(--ink-2);padding:0;font-weight:500}.topic-picker__options{gap:var(--sp-1);flex-wrap:wrap;display:flex}.topic-chip{padding:0 var(--sp-2);border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--base-2);line-height:40px;font-size:var(--step--1);cursor:pointer;transition:border-color .2s,background .2s,color .2s,scale .15s;position:relative}.topic-chip input{opacity:0;cursor:pointer;position:absolute;inset:0}.topic-chip:hover{border-color:var(--line-strong)}.topic-chip:active{scale:.97}.topic-chip:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:4px}.topic-chip.is-selected{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}.field__count{font-size:var(--step--2);color:var(--ink-3);font-variant-numeric:tabular-nums;justify-self:end}.contact-form .btn[data-state=sending] svg{animation:send-fly .9s var(--ease-out) infinite}.contact-form__status>span,.field__error{animation:status-in .32s var(--ease-out) both}@keyframes send-fly{0%{opacity:1;translate:0}45%{opacity:0;translate:16px -16px}46%{opacity:0;translate:-16px 16px}to{opacity:1;translate:0}}@keyframes status-in{0%{opacity:0;translate:0 8px}}.site-skeleton{gap:var(--sp-2);padding-block:var(--sp-12);display:grid}.contact-page{padding-block:var(--sp-12) var(--sp-8)}.contact-page__grid{gap:var(--sp-8);grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start;display:grid}.contact-page__intro{gap:var(--sp-2);display:grid;position:sticky;top:120px}.contact-page__title{font-size:var(--step-3);max-width:14ch;font-weight:700;line-height:1.05}.contact-page__lede{max-width:40ch;color:var(--ink-2);font-size:1.05rem}.contact-page__panel{padding:var(--sp-5)}.contact-page__footer{border-top:1px solid var(--line)}@media (width<=959px){.contact-page{padding-block:var(--sp-8) var(--sp-5)}.contact-page__grid{gap:var(--sp-5);grid-template-columns:1fr}.contact-page__intro{position:static}}@media (width<=599px){.contact-page__panel{padding:var(--sp-3)}}
