@font-face{font-family:Geologica;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/d90c8f302233f516-s.09bsomvsl2rg7.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geologica;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/301f347a0250ee1a-s.42eoss_ikjbk4.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geologica;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/0b430f3e8a87211c-s.18oale4drl4p2.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Geologica;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/648db07a07f66f96-s.2p7ubp6kol8ur.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geologica;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/c84ab6ce0b96dfe1-s.3noeqt7nzuqa4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geologica;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8eeea59bc7c72f81-s.p.2tew11i9sctbb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geologica Fallback;src:local(Arial);ascent-override:90.18%;descent-override:25.43%;line-gap-override:0.0%;size-adjust:108.12%}.WXBGEG_className{font-family:Geologica,Geologica Fallback;font-style:normal}.WXBGEG_variable{--font-geologica:"Geologica", "Geologica Fallback"}
@font-face{font-family:Martian Mono;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/f4a4b720e2c65fc7-s.2a5zzury7bvvl.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Martian Mono;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/45ffbcdffab553f3-s.01g2kivmtf43w.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Martian Mono;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/a32bf90a071893d4-s.29dtuopo-jwmz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Martian Mono;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/72473373e412ffca-s.p.3p2zw-bmbrlar.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Martian Mono;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/f4a4b720e2c65fc7-s.2a5zzury7bvvl.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Martian Mono;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/45ffbcdffab553f3-s.01g2kivmtf43w.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Martian Mono;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/a32bf90a071893d4-s.29dtuopo-jwmz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Martian Mono;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/72473373e412ffca-s.p.3p2zw-bmbrlar.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Martian Mono Fallback;src:local(Arial);ascent-override:63.69%;descent-override:12.74%;line-gap-override:0.0%;size-adjust:157.02%}._29lXUa_className{font-family:Martian Mono,Martian Mono Fallback;font-style:normal}._29lXUa_variable{--font-martian:"Martian Mono", "Martian Mono Fallback"}
:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--space-3xs:2px;--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:40px;--space-2xl:64px;--space-3xl:96px;--space-4xl:144px;--text-xs:.8125rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.5625rem;--text-2xl:1.953rem;--text-3xl:2.441rem;--text-display-s:clamp(2.25rem, 4vw + .5rem, 3.75rem);--text-display:clamp(2.75rem, 5vw + 1rem, 5.25rem);--text-section:clamp(2rem, 2.5vw + 1rem, 3.5rem);--text-title:clamp(1.25rem, .75vw + .875rem, 1.625rem);--text-lead:clamp(1.125rem, .35vw + 1rem, 1.375rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--color-error:#f47c70;--color-success:#6fc884;--color-error-wash:#331512;--color-success-wash:#082310;--container:1440px;--gutter:64px;--gap-columns:32px;--section-gap-s:120px;--section-gap:144px;--section-gap-l:176px;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-sticky-nav:300;--z-modal:400;--z-toast:500;--z-tooltip:600;--nav-height:76px;--color-paper:#060806;--color-paper-2:#0c100c;--color-paper-3:#141914;--color-ink:#ecf0eb;--color-ink-2:#c0c6bf;--color-muted:#8e948d;--color-rule:#232823;--color-rule-2:#363d36;--color-accent:#78f56c;--color-accent-hi:#a5ff9c;--color-accent-ink:#081807;--color-accent-wash:#10250e;--color-focus:#78f56c;--glyph-0:#2d362d;--glyph-1:#3e4c3e;--glyph-2:#556654;--glyph-3:#6d816b;--glyph-4:#8b9f88;--glyph-5:#acbda9;--glyph-6:#ccd9c9;--glyph-7:#e9f1e8;--color-glass:#0c100cc7;--color-scrim:#020302bd;--color-slot:#141914;--font-display:var(--font-geologica), "Geologica", ui-sans-serif, system-ui, sans-serif;--font-body:var(--font-geologica), "Geologica", ui-sans-serif, system-ui, sans-serif;--font-glyph:var(--font-martian), "Martian Mono", ui-monospace, monospace;--radius-card:4px;--radius-pill:999px;--rule-hair:1px;--tick:10px;--shadow-card:none;--tracking-display:-.035em;--display-weight:300}@supports (color:lab(0% 0 0)){:root{--color-error:lab(66.0977% 46.4553 28.7923);--color-success:lab(73.824% -38.9805 25.4059);--color-error-wash:lab(11.3659% 15.4851 9.26017);--color-success-wash:lab(11.3109% -15.0752 9.5112);--color-paper:lab(2.0258% -.864595 .655097);--color-paper-2:lab(4.14083% -1.74157 1.31993);--color-paper-3:lab(7.93606% -3.2282 2.44816);--color-ink:lab(94.3037% -2.09221 1.9412);--color-ink-2:lab(79.275% -3.13622 2.91665);--color-muted:lab(60.7422% -3.76225 3.26153);--color-rule:lab(15.4768% -3.35325 2.61496);--color-rule-2:lab(24.7833% -3.91208 3.04732);--color-accent:lab(87.374% -55.9164 53.6387);--color-accent-hi:lab(92.8697% -47.9813 44.754);--color-accent-ink:lab(6.60439% -8.38702 6.74061);--color-accent-wash:lab(12.4335% -13.3234 11.966);--color-focus:lab(87.374% -55.9164 53.6387);--glyph-0:lab(21.3794% -5.58902 4.3792);--glyph-1:lab(30.787% -8.38417 6.59183);--glyph-2:lab(41.2897% -9.65017 7.8814);--glyph-3:lab(51.7915% -10.876 9.22507);--glyph-4:lab(63.3909% -10.7253 9.41752);--glyph-5:lab(74.9275% -9.2566 8.39506);--glyph-6:lab(85.2405% -6.52394 6.10024);--glyph-7:lab(94.3937% -3.91981 3.64697);--color-glass:lab(4.14083% -1.74157 1.31993/.78);--color-scrim:lab(.678106% -.410594 .308576/.74);--color-slot:lab(7.93606% -3.2282 2.44816)}}
*,:before,:after{box-sizing:border-box}html,body{overflow-x:clip}html{scrollbar-color:var(--color-muted) var(--color-paper);scroll-padding-top:var(--space-3xl)}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);-webkit-font-smoothing:antialiased;caret-color:var(--color-accent);margin:0;line-height:1.55}::selection{background:color-mix(in oklab, var(--color-accent) 22%, transparent);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}a{color:inherit;text-underline-offset:.16em;text-decoration-thickness:1px}h1,h2,h3{font-family:var(--font-display);font-weight:var(--display-weight,700);font-synthesis:none;letter-spacing:var(--tracking-display);overflow-wrap:break-word;text-wrap:balance;min-width:0;margin:0;line-height:1.05}h1{max-width:20ch;font-size:var(--text-display)}h2{max-width:30ch;font-size:var(--text-section)}h3{max-width:40ch;font-size:var(--text-title);line-height:1.2}.lead{font-size:var(--text-lead);max-width:52ch;line-height:1.45}p{text-wrap:pretty;margin:0}p:not([class]){max-width:65ch}img,video{max-width:100%;height:auto;display:block}svg{display:block}[hidden]{display:none!important}button,input,select,textarea{font:inherit}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);box-sizing:border-box;margin-inline:auto}.num,.figure,td.num{font-variant-numeric:tabular-nums}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}[data-slot]{background:linear-gradient(160deg, var(--color-paper-2,var(--color-paper)), var(--color-paper-3,var(--color-paper)));position:relative;overflow:hidden}[data-slot]>img{object-fit:cover;z-index:1;width:100%;height:100%;position:absolute;inset:0}[data-slot]:has(>img)>:not(img):not([data-keep]){display:none!important}@media (max-width:60rem){:root{--gutter:24px;--section-gap-s:80px;--section-gap:96px;--section-gap-l:120px}}@media (max-width:40rem){:root{--gutter:16px;--section-gap-s:56px;--section-gap:72px;--section-gap-l:96px;--gap-columns:16px}}@media (prefers-reduced-motion:reduce){:not(.keep-motion),:not(.keep-motion):before,:not(.keep-motion):after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}[data-slot]>img{filter:saturate(.8)contrast(1.06)}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + var(--space-lg))}body{font-variation-settings:"SHRP" 0;font-weight:300}h1,h2,h3{font-variation-settings:"SHRP" 100}h3{letter-spacing:-.01em;font-weight:400}small,figcaption,th,dt,label{font-size:var(--text-sm)}.lead,p{color:var(--color-ink-2)}.about__text>p,.contact__text>p,.skills__text>p{max-width:54ch}.num{font-variant-numeric:tabular-nums;font-weight:400}.num .u,.u{color:var(--color-muted);font-size:.75em;font-weight:300}a{-webkit-text-decoration-color:var(--color-rule-2);text-decoration-color:var(--color-rule-2);transition:color var(--dur-short) var(--ease-out), text-decoration-color var(--dur-short) var(--ease-out)}a:hover{-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.skip{left:var(--space-md);top:var(--space-xs);z-index:var(--z-modal);padding:var(--space-xs) var(--space-md);background:var(--color-accent);color:var(--color-accent-ink);border-radius:var(--radius-pill);position:absolute;transform:translateY(-160%)}.skip:focus-visible{transform:none}.section{padding-block:var(--section-gap)}.section--s{padding-block:var(--section-gap-s)}.section--l{padding-block:var(--section-gap-l)}.band{color:var(--color-ink);background:var(--color-paper-2);border-block:var(--rule-hair) solid var(--color-rule)}.head{gap:var(--space-md);margin-bottom:var(--space-2xl);display:grid}.head--split{gap:var(--gap-columns);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end}.head--split>:last-child{justify-self:end}.ticks{position:relative}.ticks:before{content:"";pointer-events:none;border:var(--rule-hair) solid var(--color-rule-2);-webkit-mask:conic-gradient(at var(--tick) var(--tick), transparent 75%, var(--color-ink) 0) 0 0 / calc(100% - var(--tick)) calc(100% - var(--tick));-webkit-mask:conic-gradient(at var(--tick) var(--tick), transparent 75%, var(--color-ink) 0) 0 0 / calc(100% - var(--tick)) calc(100% - var(--tick));mask:conic-gradient(at var(--tick) var(--tick), transparent 75%, var(--color-ink) 0) 0 0 / calc(100% - var(--tick)) calc(100% - var(--tick));position:absolute;inset:0}.btn{justify-content:center;align-items:center;gap:var(--space-xs);min-height:48px;padding:0 var(--space-lg);border-radius:var(--radius-pill);background:var(--color-accent);color:var(--color-accent-ink);font:400 var(--text-md)/1 var(--font-body);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out), box-shadow var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out);border:0;text-decoration:none;display:inline-flex}.btn:hover{background:var(--color-accent-hi)}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;transform:none}.btn--line{color:var(--color-ink);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule-2);background:0 0}.btn--line:hover{background:var(--color-paper-3);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-muted)}.btn--sm{min-height:44px;padding:0 var(--space-md);font-size:var(--text-sm)}.btn svg{flex-shrink:0;width:16px;height:16px}.icon-btn{border-radius:var(--radius-pill);width:44px;height:44px;color:var(--color-ink-2);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule-2);cursor:pointer;transition:color var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.icon-btn:hover{color:var(--color-ink);background:var(--color-paper-3)}.icon-btn:active{transform:translateY(1px)}.icon-btn:disabled{opacity:.55;cursor:not-allowed}.icon-btn svg{width:16px;height:16px}.icon-btn.is-done{color:var(--color-accent)}.nav{z-index:var(--z-sticky-nav);padding-block:var(--space-sm);pointer-events:none;transition:transform var(--dur-long) var(--ease-out);position:sticky;top:0}.nav.is-tucked{transform:translateY(-110%)}.nav__in{z-index:2;justify-content:space-between;align-items:center;gap:var(--space-md);min-height:calc(var(--nav-height) - 2 * var(--space-sm));display:flex;position:relative}.island{min-height:52px;padding:var(--space-2xs);border-radius:var(--radius-pill);background:var(--color-glass);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule);-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);pointer-events:auto;align-items:center;display:flex}.wordmark{padding:0 var(--space-lg);transition:box-shadow var(--dur-short) var(--ease-out);text-decoration:none}.wordmark:hover{box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule-2)}.wordmark img{width:auto;height:24px}.island--links{position:relative}.nav__blob{left:0;top:var(--space-2xs);bottom:var(--space-2xs);border-radius:var(--radius-pill);background:var(--color-accent);opacity:0;transition:transform var(--dur-long) var(--ease-out), background-color var(--dur-short) var(--ease-out), opacity var(--dur-short) var(--ease-out);pointer-events:none;position:absolute}.nav__blob.is-hover{background:var(--color-paper-3)}.nav__links{align-items:center;margin:0;padding:0;list-style:none;display:flex;position:relative}.nav__links a{min-height:44px;padding:0 var(--space-md);border-radius:var(--radius-pill);color:var(--color-ink-2);font-size:var(--text-sm);white-space:nowrap;transition:color var(--dur-short) var(--ease-out);align-items:center;font-weight:400;text-decoration:none;display:flex;position:relative}.nav__links .k{display:none}.nav__links a[aria-current=true]{color:var(--color-accent)}.nav__links a[data-lit=green]{color:var(--color-accent-ink)}.nav__links a[data-lit=grey]{color:var(--color-ink)}.nav__end{gap:var(--space-2xs)}.cmd{align-items:center;gap:var(--space-xs);min-height:44px;padding:0 var(--space-xs) 0 var(--space-md);border-radius:var(--radius-pill);color:var(--color-muted);font:400 var(--text-xs)/1 var(--font-glyph);cursor:pointer;transition:color var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out);background:0 0;border:0;display:inline-flex}.cmd:hover{color:var(--color-ink);background:var(--color-paper-3)}.cmd:active{transform:translateY(1px)}.cmd .p{color:var(--color-accent)}.cmd kbd{padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-pill);background:var(--color-paper-3);color:var(--color-ink-2);font:inherit}.nav__toggle{min-height:44px;padding:0 var(--space-md);border-radius:var(--radius-pill);background:var(--color-ink);color:var(--color-paper);font:400 var(--text-sm)/1 var(--font-body);cursor:pointer;transition:background-color var(--dur-short) var(--ease-out);border:0;display:none}.nav__toggle:hover{background:var(--color-ink-2)}.nav__toggle:active{transform:translateY(1px)}html.menu-open{overflow:hidden}.term{width:min(680px, calc(100% - 2 * var(--space-md)));border:var(--rule-hair) solid var(--color-rule-2);border-radius:var(--radius-card);background:var(--color-paper-2);max-height:min(560px,80svh);color:var(--color-ink);font:400 var(--text-sm)/1.6 var(--font-glyph);margin:14svh auto auto;padding:0}.term::backdrop{background:var(--color-scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.term[open]{animation:term-in var(--dur-short) var(--ease-out)}@keyframes index-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes term-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.term__in{display:grid}.term__bar{padding:var(--space-xs) var(--space-md);border-bottom:var(--rule-hair) solid var(--color-rule);color:var(--color-muted);font-size:var(--text-xs);justify-content:space-between;align-items:center;display:flex}.term__esc{min-height:32px;padding:0 var(--space-sm);border-radius:var(--radius-card);background:var(--color-paper-3);color:var(--color-ink-2);font:inherit;cursor:pointer;border:0}.term__esc:hover{color:var(--color-ink)}.term__log{gap:var(--space-2xs);min-height:72px;padding:var(--space-md) var(--space-md) 0;display:grid}.term__log p{color:var(--color-ink-2);font-size:var(--text-sm);max-width:none}.term__log p.is-in{color:var(--color-ink)}.term .p{color:var(--color-accent)}.term__line{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md) var(--space-md);display:flex}.term__line input{min-width:0;min-height:44px;color:var(--color-ink);font:inherit;font-size:var(--text-md);background:0 0;border:0;outline:none;flex:1;padding:0}.term__line input::placeholder{color:var(--color-muted);opacity:1}.term__line:focus-within{box-shadow:inset 0 -2px 0 var(--color-accent)}.term__list{max-height:280px;padding:var(--space-xs);border-top:var(--rule-hair) solid var(--color-rule);margin:0;list-style:none;overflow-y:auto}.term__list li{justify-content:space-between;gap:var(--space-md);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-card);cursor:pointer;display:flex}.term__list li[aria-selected=true]{background:var(--color-accent-wash)}.term__list code{color:var(--color-ink);font:inherit}.term__list li[aria-selected=true] code{color:var(--color-accent)}.term__list span{color:var(--color-muted);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hero{min-height:calc(100svh - var(--nav-height));padding-block:var(--space-xl);align-items:center;display:grid;position:relative}.hero__grid{gap:var(--space-2xl);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;display:grid}.hero__text{gap:var(--space-lg);justify-items:start;display:grid}.hero h1{max-width:12ch}.hero__hello{color:var(--color-accent)}.lead-word{transition:color var(--dur-long) var(--ease-out);display:inline-block;position:relative}.lead-word:after{content:"";background:var(--color-accent);transform-origin:0;height:2px;transition:transform .52s var(--ease-out), opacity var(--dur-long) var(--ease-out);opacity:0;border-radius:2px;position:absolute;bottom:.04em;left:0;right:0;transform:scaleX(0)}.is-reached .lead-word{color:var(--color-accent)}.is-reached .lead-word:after{opacity:1;transform:scaleX(1)}.hero .lead{max-width:34ch}.hero__actions{gap:var(--space-sm);margin-top:var(--space-xs);flex-wrap:wrap;display:flex}.readout{margin:var(--space-md) 0 0;padding:var(--space-md) var(--space-lg);grid-template-columns:repeat(3,auto);display:grid}.readout>div{padding:0 var(--space-lg);border-left:var(--rule-hair) solid var(--color-rule)}.readout>div:first-child{border-left:0;padding-left:0}.readout>div:last-child{padding-right:0}.readout dt{color:var(--color-muted)}.readout dd{margin:var(--space-2xs) 0 0;font-size:var(--text-2xl);color:var(--color-ink);line-height:1.1}.portrait{height:min(600px, calc(100svh - var(--nav-height) - var(--space-3xl)));min-height:420px;margin:0;position:relative}.portrait canvas{width:100%;height:100%;font-family:var(--font-glyph);position:absolute;inset:0}.portrait__still{object-fit:contain;object-position:right bottom;filter:grayscale()contrast(1.1)brightness(.8);opacity:.55;width:100%;height:100%;transition:opacity var(--dur-long) var(--ease-out);position:absolute;inset:0}.portrait.is-live .portrait__still{-webkit-mask-image:linear-gradient(to bottom, transparent var(--wipe,-120px), var(--color-ink) calc(var(--wipe,-120px) + 90px));-webkit-mask-image:linear-gradient(to bottom, transparent var(--wipe,-120px), var(--color-ink) calc(var(--wipe,-120px) + 90px));mask-image:linear-gradient(to bottom, transparent var(--wipe,-120px), var(--color-ink) calc(var(--wipe,-120px) + 90px))}.portrait.is-wiped .portrait__still{opacity:0}.portrait figcaption{right:0;bottom:calc(-1 * var(--space-lg));color:var(--color-muted);font-size:var(--text-xs);position:absolute}.callout__lines{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.callout__leader{fill:none;stroke:var(--color-rule-2);stroke-width:1px;opacity:0;transition:opacity var(--dur-long) var(--ease-out);transition-delay:calc(1.2s + var(--i) * .14s)}.callout__leader.is-found{stroke:var(--color-accent)}.callout__dot{background:var(--color-paper);width:8px;height:8px;box-shadow:inset 0 0 0 2px var(--color-ink);opacity:0;transition:opacity var(--dur-long) var(--ease-out);transition-delay:calc(1.1s + var(--i) * .14s);border-radius:50%;position:absolute;top:-4px;left:-4px}.callout__dot.is-found{box-shadow:inset 0 0 0 2px var(--color-accent)}.callouts{pointer-events:none;margin:0;position:absolute;inset:0}.callout__note{gap:var(--space-3xs);width:max-content;max-width:15rem;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-card);background:var(--color-paper-2);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule);border-left:2px solid var(--color-rule-2);opacity:0;transition:opacity var(--dur-long) var(--ease-out);transition-delay:calc(1.25s + var(--i) * .14s);display:grid;position:absolute;top:0;left:0}.callout__note.is-found{border-left-color:var(--color-accent)}.callout__note dt{color:var(--color-muted);font-size:var(--text-xs)}.callout__note dd{color:var(--color-ink);font-size:var(--text-md);margin:0;font-weight:400}.portrait.is-placed .callout__leader,.portrait.is-placed .callout__dot,.portrait.is-placed .callout__note{opacity:1}.about__grid{gap:var(--space-3xl);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;display:grid}.about__text{gap:var(--space-lg);display:grid}.about__text h2{max-width:18ch}.stack{column-gap:var(--gap-columns);margin:var(--space-md) 0 0;border-top:var(--rule-hair) solid var(--color-rule);grid-template-columns:repeat(2,minmax(0,1fr));padding:0;list-style:none;display:grid}.stack li{padding:var(--space-sm) 0;border-bottom:var(--rule-hair) solid var(--color-rule);color:var(--color-ink)}.reach{gap:var(--gap-columns);margin:var(--space-md) 0 0;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));display:grid}.reach>div{gap:var(--space-2xs);display:grid}.reach dt{color:var(--color-muted)}.reach dd{align-items:center;gap:var(--space-xs);min-width:0;margin:0;display:flex}.reach dd a{color:var(--color-ink);white-space:nowrap}.reach .icon-btn{width:36px;height:36px;position:relative}.reach .icon-btn:after{content:"";position:absolute;inset:-4px}.session{padding:var(--space-md);margin:0}.session__bar{padding:var(--space-xs) var(--space-md);border-radius:var(--radius-card) var(--radius-card) 0 0;background:var(--color-paper-3);color:var(--color-muted);font:400 var(--text-xs)/1.4 var(--font-glyph);justify-content:space-between;display:flex}.session__out{align-content:start;gap:var(--space-2xs);min-height:380px;padding:var(--space-lg);border-radius:0 0 var(--radius-card) var(--radius-card);background:var(--color-paper-2);color:var(--color-ink);font:400 var(--text-sm)/1.7 var(--font-glyph);white-space:pre-wrap;margin:0;display:grid}.session__block{gap:var(--space-3xs);margin-bottom:var(--space-sm);display:grid}.session__out .ln{display:block}.session__out .p{color:var(--color-accent)}.session__out b{color:var(--color-ink);font-weight:400}.session__out .m{color:var(--color-ink-2)}.session__open{color:var(--color-muted);font:inherit;text-underline-offset:.25em;cursor:pointer;transition:color var(--dur-short) var(--ease-out);background:0 0;border:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.session__open:hover{color:var(--color-accent)}.caret{width:.6em;height:1.1em;margin-left:var(--space-3xs);vertical-align:text-bottom;background:var(--color-accent);display:inline-block}.caret--rest{animation:1s step-end 5 blink}@keyframes blink{50%{opacity:0}}.desk{padding:var(--space-md);margin:0}.desk img{aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius-card);filter:saturate(.8)contrast(1.06);width:100%}.desk figcaption{margin-top:var(--space-sm);color:var(--color-muted)}.work-kinds{margin-top:var(--section-gap-s);padding-block:var(--space-lg);border-block:var(--rule-hair) solid var(--color-rule);position:relative;overflow:hidden}.work-kinds__track{width:max-content;display:flex}.work-kinds ul{flex-shrink:0;margin:0;padding:0;list-style:none;display:flex}.work-kinds li{align-items:center;gap:var(--space-xl);padding-right:var(--space-xl);color:var(--color-ink);font-size:var(--text-display-s);letter-spacing:var(--tracking-display);white-space:nowrap;font-variation-settings:"SHRP" 100;transition:color var(--dur-short) var(--ease-out);font-weight:200;line-height:1.1;display:flex}.work-kinds li:after{content:"/";color:var(--color-accent);font-weight:300}.work-kinds li:hover{color:var(--color-accent)}.js .work-kinds__track{animation:48s linear infinite marquee}[data-loop]:not(.is-running) .work-kinds__track{animation-play-state:paused}@keyframes marquee{to{transform:translate(-50%)}}.work-kinds__toggle{right:0;bottom:var(--space-xs);min-height:32px;padding:0 var(--space-sm);border-radius:var(--radius-pill);background:var(--color-paper-3);color:var(--color-ink-2);font:400 var(--text-xs)/1 var(--font-body);cursor:pointer;border:0;position:absolute}.work-kinds__toggle:hover{color:var(--color-ink)}html:not(.js) .work-kinds__toggle,html:not(.js) .work-kinds ul[aria-hidden]{display:none}html:not(.js) .work-kinds ul{flex-wrap:wrap}.tabs{gap:var(--space-2xs);padding:var(--space-2xs);margin-bottom:var(--space-xl);border-radius:var(--radius-pill);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule-2);display:inline-flex}.tabs [role=tab]{min-height:44px;padding:0 var(--space-lg);border-radius:var(--radius-pill);color:var(--color-ink-2);font:400 var(--text-sm)/1 var(--font-body);cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out);background:0 0;border:0}.tabs [role=tab]:hover{color:var(--color-ink);background:var(--color-paper-3)}.tabs [role=tab]:active{transform:translateY(1px)}.tabs [role=tab][aria-selected=true]{background:var(--color-ink);color:var(--color-paper)}.log{border-collapse:collapse;width:100%}.log th{padding:0 0 var(--space-sm);color:var(--color-muted);text-align:left;white-space:nowrap;border-bottom:var(--rule-hair) solid var(--color-rule-2);font-weight:300}.log td{padding:var(--space-lg) var(--space-lg) var(--space-lg) 0;border-bottom:var(--rule-hair) solid var(--color-rule);vertical-align:middle}.log td:last-child,.log th:last-child{padding-right:0}.log tbody tr{transition:background-color var(--dur-short) var(--ease-out)}.log tbody tr:hover{background:var(--color-paper-3)}.log .when{white-space:nowrap;width:22%;color:var(--color-ink-2)}.res-pt{width:12px;height:12px;margin-right:var(--space-md);vertical-align:middle;background:var(--color-paper-2);box-shadow:inset 0 0 0 1.5px var(--color-rule-2);transition:background-color var(--dur-short) var(--ease-out), box-shadow var(--dur-short) var(--ease-out);border-radius:50%;display:inline-block}.res-pt.is-passed{background:var(--color-accent);box-shadow:inset 0 0 0 1.5px var(--color-accent)}.log .role{width:30%;color:var(--color-ink);font-size:var(--text-title);letter-spacing:-.01em;font-weight:400}.log .span{width:36%}.log th.span{padding-right:var(--space-lg)}.log td.span{background-image:linear-gradient(to right, var(--color-rule) 1px, transparent 1px);background-size:calc(100% / var(--n)) 100%;background-repeat:repeat-x;background-origin:content-box;background-clip:content-box}.years{height:1.4em;display:block;position:relative}.years span{left:var(--x);color:var(--color-muted);font-weight:300;position:absolute;top:0;transform:translate(-50%)}.log .len{text-align:right;white-space:nowrap;width:12%}.live{width:8px;height:8px;margin-right:var(--space-xs);background:var(--color-accent);vertical-align:middle;border-radius:50%;display:inline-block}.track{border-radius:var(--radius-pill);background:var(--color-paper);height:10px;box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule);position:relative}.track i{top:0;bottom:0;left:var(--from);width:var(--w);border-radius:var(--radius-pill);background:var(--color-ink-2);transform-origin:0;transition:transform var(--dur-long) var(--ease-out);position:absolute}.is-live .track i{background:var(--color-accent)}.js .log[data-fresh] .track i{transform:scaleX(0)}.stack-grid{gap:var(--space-3xl);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;display:grid}.stack-pane{top:calc(var(--nav-height) + var(--space-2xl));gap:var(--space-xl);display:grid;position:sticky}.stack-index{border-top:var(--rule-hair) solid var(--color-rule);margin:0;padding:0;list-style:none;position:relative}.stack-index:before{content:"";background:var(--color-rule-2);width:2px;margin-left:-1px;position:absolute;top:25px;bottom:25px;left:11px}@media (min-width:60.0625rem){.js .stack-index:before{display:none}}.stack-index li{z-index:1;position:relative}.stack-index a{gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:var(--rule-hair) solid var(--color-rule);color:var(--color-muted);transition:color var(--dur-short) var(--ease-out);align-items:center;text-decoration:none;display:flex}.stack-index .pt{background:var(--color-paper);width:22px;height:22px;box-shadow:inset 0 0 0 1.5px var(--color-rule-2);color:var(--color-muted);transition:background-color var(--dur-short) var(--ease-out), box-shadow var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out);border-radius:50%;flex-shrink:0;place-items:center;font-size:11px;display:grid}.stack-index .is-passed .pt{background:var(--color-accent-wash);box-shadow:inset 0 0 0 1.5px var(--color-accent);color:var(--color-accent)}.stack-index a:hover,.stack-index a[aria-current=true]{color:var(--color-ink)}.stack-index a[aria-current=true] .pt{background:var(--color-accent);color:var(--color-accent-ink)}.services{display:grid}.service{gap:var(--space-md);min-height:52svh;padding:var(--space-2xl) 0;border-bottom:var(--rule-hair) solid var(--color-rule);opacity:.4;transition:opacity var(--dur-long) var(--ease-out);align-content:center;display:grid}.service:first-child{padding-top:0}.service.is-active,html:not(.js) .service{opacity:1}.service h3{font-size:var(--text-display-s);letter-spacing:var(--tracking-display);max-width:16ch;font-weight:300;line-height:1.05}.service p{max-width:56ch;font-size:var(--text-lead);line-height:1.5}.tags{gap:var(--space-xs);margin:var(--space-xs) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.tags li{padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-pill);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule-2);color:var(--color-ink-2);font-size:var(--text-sm)}.skills__head>p{justify-self:start;max-width:54ch}.top-skills{margin-bottom:var(--space-3xl);padding:var(--space-lg) var(--space-xl)}.top-skills h3{margin-bottom:var(--space-lg);color:var(--color-muted);font:300 var(--text-sm)/1.4 var(--font-body);letter-spacing:0}.top-skills__list{grid-template-columns:minmax(0,2.2fr) repeat(6,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.top-skills__list li{align-content:start;gap:var(--space-xs);padding:0 var(--space-md);border-left:var(--rule-hair) solid var(--color-rule);cursor:default;transition:border-color var(--dur-short) var(--ease-out);display:grid}.top-skills__list li:first-child{border-left:0;padding-left:0}.top-skills__list li:last-child{padding-right:0}.top-skills__list .n{color:var(--color-rule-2);font-size:var(--text-xs);transition:color var(--dur-short) var(--ease-out)}.top-skills__list b{color:var(--color-ink);font-size:var(--text-xl);letter-spacing:-.02em;font-variation-settings:"SHRP" 100;transition:color var(--dur-short) var(--ease-out);font-weight:300;line-height:1.15}.top-skills__list li:first-child b{color:var(--color-accent);font-size:var(--text-3xl);letter-spacing:var(--tracking-display);white-space:nowrap;line-height:1}.top-skills__list .y{color:var(--color-muted);font-size:var(--text-sm);font-weight:300}.top-skills__list li:hover .n,.top-skills__list li.is-lit .n,.top-skills__list li:hover b,.top-skills__list li.is-lit b{color:var(--color-accent)}.skills__grid{gap:var(--space-3xl);grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:center;display:grid}.skills__text{gap:var(--space-lg);display:grid}.ring{width:min(100%,280px);height:auto;font-family:var(--font-body);display:block;overflow:visible}.ring__seg{cursor:pointer;outline:none}.ring__arc{fill:none;stroke:var(--color-rule-2);stroke-width:22px;transition:stroke var(--dur-short) var(--ease-out), opacity var(--dur-short) var(--ease-out)}.ring__seg.is-on .ring__arc{stroke:var(--color-accent)}.ring__seg:hover .ring__arc{stroke:var(--color-accent-hi)}.ring__seg:not(.is-on):hover .ring__arc{stroke:var(--color-muted)}.ring__seg:focus-visible .ring__arc,.ring__seg:focus-visible .ring__halo{stroke:var(--color-focus)}.ring__halo{fill:none;stroke:#0000;stroke-width:2px}.ring__n{fill:var(--color-muted);pointer-events:none;font-size:12px;font-weight:400}.ring__seg.is-on .ring__n{fill:var(--color-accent-ink)}.ring__name{fill:var(--color-muted);transition:fill var(--dur-short) var(--ease-out);font-size:14px;font-weight:400}.ring__seg.is-on .ring__name{fill:var(--color-ink)}.ring__hub{fill:var(--color-paper-2);stroke:var(--color-rule)}.ring__seg.is-passing .ring__halo{stroke:var(--color-accent)}.ring__seg.is-passing .ring__name{fill:var(--color-accent)}.ring__seg.is-passing .ring__arc{stroke:var(--color-accent-hi)}.ring__halo{transition:stroke var(--dur-short) var(--ease-out)}.ring__total{fill:var(--color-ink);letter-spacing:-.02em;font-size:28px;font-weight:300}.radar{margin:0;position:relative}.radar svg{width:100%;max-width:720px;height:auto;font-family:var(--font-body);margin-inline:auto;display:block;overflow:visible}.radar__quad{fill:var(--color-paper-2);transition:opacity var(--dur-long) var(--ease-out)}.radar__quad.is-off{opacity:.25}.radar__quad.is-hover,.radar__quad.is-passing{fill:var(--color-accent-wash)}.radar__layer.is-passing text,.radar__pt.is-passing .radar__dot{fill:var(--color-accent)}.radar__pt.is-passing .radar__label{fill:var(--color-ink)}.radar__quad,.radar__dot{transition:fill var(--dur-short) var(--ease-out)}.radar__ring{fill:none;stroke:var(--color-rule);stroke-width:1px}.radar__ringlabel{fill:var(--color-muted);font-size:13px}.radar__axis{stroke:var(--color-rule);stroke-width:1px}.radar__layer text{fill:var(--color-ink-2);transition:opacity var(--dur-long) var(--ease-out);font-size:17px;font-weight:400}.radar__layer.is-off text{opacity:.3}.radar__sweep{transform-box:view-box;transform-origin:400px 400px;opacity:0;pointer-events:none}.radar__sweep path{fill:var(--color-accent)}.radar__sweep line{stroke:var(--color-accent);stroke-width:1.5px}.js .radar__sweep{opacity:1;animation:8s linear infinite paused radar-turn}.radar.is-running .radar__sweep{animation-play-state:running}@keyframes radar-turn{to{transform:rotate(360deg)}}.radar__pt{cursor:default;transition:opacity var(--dur-long) var(--ease-out);outline:none}.radar__pt.is-off{opacity:.12;pointer-events:none}.radar.has-pick .radar__pt:not(.is-pick):not(.is-off){opacity:.45}.radar__hit{fill:#0000}.radar__dot{fill:var(--color-ink-2);stroke:var(--color-paper);stroke-width:2px;transition:fill var(--dur-short) var(--ease-out)}.radar__pt.is-focus .radar__dot{fill:var(--color-accent)}.radar__pt.is-pick .radar__dot{fill:var(--color-ink)}.radar__pt.is-focus.is-pick .radar__dot{fill:var(--color-accent-hi)}.radar__pt:focus-visible .radar__dot{stroke:var(--color-focus);stroke-width:3px}.radar__ping{fill:none;stroke:var(--color-ink);stroke-width:1.5px;opacity:0;transform-box:fill-box;transform-origin:50%}.radar__pt.is-focus .radar__ping{stroke:var(--color-accent)}.js .radar__ping{animation:radar-ping 8s var(--ease-out) infinite;animation-delay:var(--delay);animation-play-state:paused}.radar.is-running .radar__ping{animation-play-state:running}@keyframes radar-ping{0%{opacity:.9;transform:scale(1)}12%{opacity:0;transform:scale(3.2)}to{opacity:0;transform:scale(3.2)}}.radar__label{fill:var(--color-ink-2);transition:fill var(--dur-short) var(--ease-out);font-size:15px;font-weight:400}.radar__pt.is-focus .radar__label{fill:var(--color-accent)}.radar__pt.is-pick .radar__label{fill:var(--color-ink)}.radar__read circle{fill:var(--color-paper);stroke:var(--color-rule-2);stroke-width:1px}.radar__readname{fill:var(--color-ink);letter-spacing:-.02em;font-size:26px;font-weight:300}.radar__readval{fill:var(--color-muted);font-size:13px}.radar figcaption{justify-content:flex-end;align-items:center;gap:var(--space-md);margin-top:var(--space-lg);color:var(--color-muted);font-size:var(--text-sm);display:flex}.radar__toggle{min-height:36px;padding:0 var(--space-md);border-radius:var(--radius-pill);background:var(--color-paper-3);color:var(--color-ink-2);font:400 var(--text-xs)/1 var(--font-body);cursor:pointer;transition:color var(--dur-short) var(--ease-out);border:0;flex-shrink:0}.radar__toggle:hover{color:var(--color-ink)}html:not(.js) .radar__toggle{display:none}.voices{gap:var(--space-2xl);display:grid}.voice{gap:var(--space-xl);align-content:start;min-height:320px;margin:0;display:grid}.voice blockquote{padding-left:var(--space-2xl);margin:0;position:relative}.voice blockquote:before{content:"“";color:var(--color-accent);font:300 var(--text-display)/1 var(--font-display);position:absolute;top:-.12em;left:0}.voice__line{max-width:28ch;color:var(--color-ink);font-size:var(--text-display-s);letter-spacing:var(--tracking-display);font-variation-settings:"SHRP" 100;text-wrap:balance;font-weight:300;line-height:1.12}.voice__full{max-width:62ch;margin-top:var(--space-lg);color:var(--color-ink-2);font-size:var(--text-lead);white-space:pre-line;line-height:1.6}.voice__who{align-items:center;gap:var(--space-md);padding-left:var(--space-2xl);display:flex}.voice__who img{object-fit:cover;background:var(--color-paper-3);border-radius:50%;width:48px;height:48px}.voice__who>span{display:grid}.voice__who b{color:var(--color-ink);font-weight:400}.voice__who small{color:var(--color-muted);font-size:var(--text-sm)}.voice__who .more{margin-left:var(--space-lg)}.js .voice blockquote,.js .voice__who{animation:settle var(--dur-long) var(--ease-out) both}.js .voice__who{animation-delay:80ms}.voices__bar{align-items:center;gap:var(--space-sm);padding-top:var(--space-lg);border-top:var(--rule-hair) solid var(--color-rule);display:flex}.voices__bar .grow{flex:1}.faces{gap:var(--space-xs);margin:0;padding:0;list-style:none;display:flex}.face{cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;width:60px;height:60px;padding:0;display:grid;position:relative}.face img{object-fit:cover;background:var(--color-paper-3);filter:grayscale();opacity:.55;width:44px;height:44px;transition:opacity var(--dur-short) var(--ease-out), filter var(--dur-short) var(--ease-out), transform var(--dur-short) var(--ease-out);border-radius:50%}.face:hover img{opacity:1;filter:none}.face[aria-selected=true] img{opacity:1;filter:none;transform:scale(1.04)}.face:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.face__ring{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.face__ticks{fill:none;stroke:var(--color-rule-2);stroke-width:2px;stroke-dasharray:1 4;transition:stroke var(--dur-short) var(--ease-out)}.face:hover .face__ticks{stroke:var(--color-muted)}.face[aria-selected=true] .face__ticks{stroke:var(--color-accent-wash)}.face__sweep{fill:none;stroke:var(--color-accent);stroke-width:2px;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100px;opacity:0}.face[aria-selected=true] .face__sweep{opacity:1;stroke-dashoffset:0}.js .voices .face[aria-selected=true] .face__sweep{stroke-dashoffset:100px;animation:linear forwards paused sweep-ring}.js .voices.is-running .face[aria-selected=true] .face__sweep{animation-play-state:running}@keyframes sweep-ring{to{stroke-dashoffset:0}}.voices__hold{min-height:36px;padding:0 var(--space-md);border-radius:var(--radius-pill);background:var(--color-paper-3);color:var(--color-ink-2);font:400 var(--text-xs)/1 var(--font-body);cursor:pointer;border:0}.voices__hold:hover{color:var(--color-ink)}html:not(.js) .voices__hold{display:none}.more{min-height:44px;color:var(--color-ink-2);font:inherit;font-size:var(--text-md);text-decoration:underline;-webkit-text-decoration-color:var(--color-rule-2);text-decoration-color:var(--color-rule-2);text-underline-offset:.2em;cursor:pointer;transition:color var(--dur-short) var(--ease-out), text-decoration-color var(--dur-short) var(--ease-out);background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.more:hover{color:var(--color-ink);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.contact__grid{gap:var(--space-3xl);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;display:grid}.contact__text{gap:var(--space-lg);display:grid}.contact__text h2{max-width:16ch}.facts{gap:var(--space-xs) var(--space-lg);margin:var(--space-md) 0 0;grid-template-columns:repeat(2,minmax(0,1fr));padding:0;list-style:none;display:grid}.facts li{align-items:center;gap:var(--space-xs);padding:var(--space-sm) 0;border-bottom:var(--rule-hair) solid var(--color-rule);color:var(--color-ink);display:flex}.facts svg{width:14px;height:14px;color:var(--color-accent);flex-shrink:0}.mail{border-radius:var(--radius-card);background:var(--color-paper-2);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule);font-family:var(--font-glyph);display:grid}.mail__bar{padding:var(--space-xs) var(--space-lg);border-radius:var(--radius-card) var(--radius-card) 0 0;background:var(--color-paper-3);color:var(--color-muted);font-size:var(--text-xs);justify-content:space-between;display:flex}.mail__body{gap:var(--space-2xs);padding:var(--space-lg) var(--space-lg) var(--space-md);display:grid}.mail__cmd{margin-bottom:var(--space-sm);color:var(--color-ink);font-size:var(--text-sm)}.mail .p{color:var(--color-accent)}.mail__row{align-items:baseline;column-gap:var(--space-sm);grid-template-columns:6.5rem minmax(0,1fr);display:grid}.mail__row label{color:var(--color-muted);font-size:var(--text-sm)}.mail__row input,.mail__row textarea{width:100%;min-height:44px;padding:var(--space-xs) 0;border:0;border-bottom:var(--rule-hair) solid var(--color-rule-2);color:var(--color-ink);font:400 var(--text-md)/1.5 var(--font-glyph);caret-color:var(--color-accent);transition:border-color var(--dur-short) var(--ease-out);background:0 0;border-radius:0}.mail__row textarea{resize:vertical;min-height:120px}.mail__row input::placeholder,.mail__row textarea::placeholder{color:var(--color-muted);opacity:.7}.mail__row input:hover,.mail__row textarea:hover{border-bottom-color:var(--color-muted)}.mail__row input:focus-visible,.mail__row textarea:focus-visible{border-bottom-color:var(--color-accent);box-shadow:0 1px 0 0 var(--color-accent);outline:none}.mail__row:focus-within label{color:var(--color-accent)}.mail__row [aria-invalid=true]{border-bottom-color:var(--color-error)}.mail__row--msg{align-items:start}.mail__row--msg label{padding-top:var(--space-xs)}.mail__err,.mail__ok{margin:var(--space-2xs) 0 var(--space-xs);font-size:var(--text-sm);grid-column:2;max-width:none}.mail__err{color:var(--color-error)}.mail__out .mail__err,.mail__out .mail__ok{grid-column:auto}.mail__ok{color:var(--color-success)}.mail__dismiss{margin-left:var(--space-sm);color:var(--color-muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.mail__dismiss:hover{color:var(--color-ink)}.mail__foot{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg) var(--space-lg);border-top:var(--rule-hair) solid var(--color-rule);font-family:var(--font-body);display:flex}.mail__foot kbd{font:inherit;opacity:.7}.mail__hint{color:var(--color-muted);font:400 var(--text-xs)/1.4 var(--font-glyph)}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.footer{color:var(--color-ink);padding-block:var(--space-3xl) var(--space-xl);border-top:var(--rule-hair) solid var(--color-rule);background:var(--color-paper-2)}.footer__grid{gap:var(--gap-columns);grid-template-columns:minmax(0,6fr) minmax(0,3fr) minmax(0,3fr);align-items:start;display:grid}.footer__colophon{gap:var(--space-lg);justify-items:start;display:grid}.footer__colophon img{z-index:calc(var(--z-sticky) + 1);width:auto;height:36px;position:relative}.footer__colophon>a{z-index:calc(var(--z-sticky) + 1);position:relative}.footer__colophon p{max-width:48ch;color:var(--color-ink-2);font-size:var(--text-lead);line-height:1.5}.footer__colophon p a{color:var(--color-ink)}.footer h2{margin-bottom:var(--space-sm);max-width:none;color:var(--color-muted);font:300 var(--text-sm)/1.4 var(--font-body);letter-spacing:0}.footer ul{gap:var(--space-2xs);margin:0;padding:0;list-style:none;display:grid}.footer ul a{padding:var(--space-2xs) 0;color:var(--color-ink);text-decoration:none;display:inline-block}.footer ul a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.footer__mark{aspect-ratio:4.3;margin:var(--space-2xl) 0 0;position:relative}.footer__mark canvas{width:100%;height:100%;font-family:var(--font-glyph);position:absolute;inset:0}.footer__mark .portrait__still,.footer__mark figcaption{display:none}.footer__base{justify-content:space-between;align-items:center;gap:var(--space-md);margin-top:var(--space-2xl);padding-top:var(--space-lg);border-top:var(--rule-hair) solid var(--color-rule);color:var(--color-muted);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.footer__base p{color:var(--color-muted)}.prose{max-width:72ch;padding-block:var(--section-gap-s)}.prose h1{margin-bottom:var(--space-xl);font-size:var(--text-display-s);max-width:20ch}.prose h2{margin:var(--space-2xl) 0 var(--space-md);font-size:var(--text-2xl)}.prose h3{margin:var(--space-xl) 0 var(--space-sm)}.prose p,.prose li{color:var(--color-ink-2);line-height:1.7}.prose p{margin:var(--space-md) 0}.prose ul{padding-left:var(--space-lg)}.prose li{margin:var(--space-2xs) 0}.prose li::marker{color:var(--color-muted)}.prose strong{color:var(--color-ink);font-weight:400}.prose a{color:var(--color-ink);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.prose input[type=checkbox]{accent-color:var(--color-accent);margin-right:var(--space-xs)}.prose .flag{padding:0 var(--space-2xs);border-radius:var(--radius-card);background:var(--color-error-wash);color:var(--color-error)}.prose .warn{color:var(--color-error)}.prose .links{gap:var(--space-sm);margin:var(--space-lg) 0;flex-wrap:wrap;display:flex}.lost{gap:var(--space-3xl);min-height:calc(100svh - var(--nav-height));padding-block:var(--space-2xl);grid-template-columns:minmax(0,6fr) minmax(0,6fr);align-items:center;display:grid}.lost__text{gap:var(--space-lg);justify-items:start;display:grid}.lost img{justify-self:end;width:100%;max-width:520px}.trail{z-index:var(--z-raised);pointer-events:none;width:56px;position:absolute;top:0}.trail__code{pointer-events:none;font-family:var(--font-glyph);position:fixed;top:0;left:0}.trail__node{background:var(--color-paper);width:14px;height:14px;box-shadow:inset 0 0 0 1.5px var(--color-rule-2), 0 0 0 4px var(--color-paper);pointer-events:auto;transition:background-color var(--dur-short) var(--ease-out), box-shadow var(--dur-short) var(--ease-out), transform var(--dur-short) var(--ease-out);border-radius:50%;margin:-7px 0 0 -7px;position:absolute}.trail__node:after{content:"";position:absolute;inset:-12px}.trail__node.is-passed{background:var(--color-accent);box-shadow:inset 0 0 0 1.5px var(--color-accent), 0 0 0 4px var(--color-paper)}.trail__node:hover,.trail__node:focus-visible{transform:scale(1.35)}.trail__tip{padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-card);background:var(--color-paper-2);box-shadow:inset 0 0 0 var(--rule-hair) var(--color-rule-2);color:var(--color-ink-2);font:400 var(--text-xs)/1.4 var(--font-glyph);white-space:nowrap;opacity:0;transition:opacity var(--dur-short) var(--ease-out), transform var(--dur-short) var(--ease-out);pointer-events:none;position:absolute;top:50%;left:22px;transform:translate(-4px,-50%)}.trail__tip code{color:var(--color-accent);font:inherit}.trail__node:hover .trail__tip,.trail__node:focus-visible .trail__tip{opacity:1;transform:translateY(-50%)}.trail__head{z-index:var(--z-sticky);justify-items:center;gap:var(--space-3xs);opacity:var(--ho,1);transform:translate(calc(var(--hx,24px) - 50%), calc(var(--hy,50vh) - 11px)) scale(var(--hs,1));transform-origin:50% 11px;pointer-events:none;display:grid;position:fixed;top:0;left:0}.trail__head.is-away .trail__sha{opacity:0}.trail__sha{transition:opacity var(--dur-short) var(--ease-out)}.trail__cur{width:22px;height:22px;box-shadow:0 0 0 3px var(--color-paper);background:url(/assets/images/logos/logo-white.png) 0/auto 100% no-repeat;border-radius:50%;position:relative}.trail__cur:after{content:"";box-shadow:0 0 0 1px var(--color-accent);opacity:0;border-radius:50%;position:absolute;inset:-3px}.js .trail__cur:after{animation:head-ping 2.4s var(--ease-out) infinite}@keyframes head-ping{0%{opacity:.8;transform:scale(1)}60%,to{opacity:0;transform:scale(1.9)}}.trail__sha{padding:1px var(--space-2xs);background:var(--color-paper);font:400 9px/1.2 var(--font-glyph);letter-spacing:.02em;white-space:nowrap;color:var(--color-ink-2);text-align:center;border-radius:3px;min-width:7ch}@media (max-width:60rem){html.has-trail{--gutter:32px}.trail__node{width:10px;height:10px;margin:-5px 0 0 -5px}.trail__tip{display:none}.trail__cur{width:16px;height:16px}.trail__sha{display:none}}.js [data-reveal]{opacity:0;transition:opacity var(--dur-long) var(--ease-out), transform var(--dur-long) var(--ease-out);transition-delay:calc(var(--i,0) * 50ms);transform:translateY(8px)}.js [data-reveal].is-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js [data-reveal]{opacity:1;transition:none;transform:none}.js .log[data-fresh] .track i{transform:none}.radar__toggle,.radar__sweep{display:none}.caret--rest{animation:none}.js .voices .face[aria-selected=true] .face__sweep{stroke-dashoffset:0;animation:none}.js .trail__cur:after{animation:none}.service{opacity:1}.nav.is-tucked{transform:none}.nav__blob{transition:none}.work-kinds__toggle{display:none}}@media (max-width:60rem){:root{--nav-height:68px}.nav__in{gap:var(--space-md)}.nav__toggle{align-items:center;display:inline-flex}.nav__end .btn--sm,.cmd kbd{display:none}.cmd,.wordmark{padding:0 var(--space-md)}.island--links{min-height:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;padding:0;position:static}.nav__blob{display:none}.nav__links{z-index:-1;padding:calc(var(--nav-height) + var(--space-xl)) var(--gutter) var(--space-2xl);background:var(--color-paper);pointer-events:auto;flex-direction:column;justify-content:center;align-items:stretch;display:none;position:fixed;inset:0}.nav__links.is-open{display:flex}.nav__links li{border-bottom:var(--rule-hair) solid var(--color-rule)}.nav__links.is-open li{animation:index-in var(--dur-long) var(--ease-out) both;animation-delay:calc(var(--i) * 50ms)}.nav__links a{gap:var(--space-md);padding:var(--space-sm) 0;color:var(--color-ink);font-size:var(--text-display-s);letter-spacing:var(--tracking-display);font-variation-settings:"SHRP" 100;border-radius:0;align-items:baseline;font-weight:300;line-height:1.1}.nav__links .k{font-size:var(--text-sm);letter-spacing:0;color:var(--color-muted);font-weight:400;display:inline}.nav__links a[aria-current=true],.nav__links a[data-lit]{color:var(--color-accent)}.nav.is-open{padding-block:var(--space-sm)}.hero{min-height:0;padding-block:var(--space-sm) var(--space-2xl)}.hero__grid{gap:var(--space-lg)}.hero__grid,.about__grid,.stack-grid,.skills__grid,.contact__grid,.footer__grid,.lost{gap:var(--space-xl);grid-template-columns:minmax(0,1fr)}.portrait{aspect-ratio:1;order:-1;width:min(100%,440px);height:auto;min-height:0;margin-inline:auto}.portrait figcaption{margin-top:var(--space-xs);position:static}.callouts,.callout__lines,.callout__dot{display:none}.head--split{grid-template-columns:minmax(0,1fr)}.head--split>:last-child{justify-self:start}.stack-pane{position:static}.ring{margin-inline:auto}.radar figcaption,.voices__bar{justify-content:center}.voices__bar .grow{display:none}.faces{justify-content:center;width:100%}.top-skills{margin-bottom:var(--space-2xl);padding:var(--space-lg)}.top-skills__list{gap:var(--space-lg) 0;grid-template-columns:repeat(2,minmax(0,1fr))}.top-skills__list li{padding:0 var(--space-md)}.top-skills__list li:first-child{grid-column:1/-1;padding:0}.top-skills__list li:nth-child(2n){border-left:0;padding-left:0}.stack-index{display:none}.service{opacity:1;min-height:0;padding:var(--space-xl) 0}.log thead,.res-pt{display:none}.log,.log tbody,.log tr,.log td{width:auto;display:block}.log tr{gap:var(--space-xs) var(--space-md);padding:var(--space-md) 0;border-bottom:var(--rule-hair) solid var(--color-rule);grid-template-columns:minmax(0,1fr) auto;display:grid}.log td{border:0;padding:0}.log .role{order:-1;grid-column:1/-1}.log .span{grid-column:1/-1}.log .len{text-align:right}.lost img{justify-self:start;max-width:360px}}@media (max-width:40rem){.readout{padding:var(--space-md);grid-template-columns:repeat(3,minmax(0,1fr))}.readout>div{padding:0 var(--space-sm)}.readout dd{font-size:var(--text-xl)}.stack,.reach,.facts,.mail__row{grid-template-columns:minmax(0,1fr)}.mail__err,.mail__ok{grid-column:1}.mail__hint{display:none}.radar__label,.radar__layer text{font-size:24px}.radar__ringlabel{display:none}.work-kinds li{font-size:var(--text-md)}.voice blockquote,.voice__who{padding-left:0}.voice blockquote:before{height:.5em;display:block;position:static}.voices__bar,.voice__who{flex-wrap:wrap}.voice__who .more{margin-left:0}.footer__base{flex-direction:column;align-items:flex-start}}
