@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_4f9f433b-module__fJfFLG__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_4f9f433b-module__fJfFLG__variable{--font-space-grotesk:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.3zhtymus0wdqb.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.3nkuoiize4urq.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.1da667lu-u79a.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1i05ju5aeyhye.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.1dgcou5jor5q_.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.31-2bzhq1gx_9.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.3xauquyg2sixn.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.2taws-qdxmzlf.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.0htwiiqufp3l9.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.28xcb7557rbh2.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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_2004b1ac-module__o9nzia__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_2004b1ac-module__o9nzia__variable{--font-ibm-plex-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--ink:#11110f;--ink-raised:#171714;--ink-high:#1d1d19;--paper:#eeeade;--paper-shade:#e2ddcd;--paper-ink:#1a1a17;--line:#30302b;--muted:#a09d93;--signal:#d5ff43;--signal-ink:#15170b;--danger:#e56d5f;--github:#39d353;--grid-line:#eeeade12;--font-sans:var(--font-space-grotesk), sans-serif;--font-mono:var(--font-ibm-plex-mono), monospace;--page-max:1600px;--page-gutter:clamp(1.1rem, 4vw, 4.5rem);--section-space:clamp(3.5rem, 6vw, 6rem);--radius:0;--radius-pin:3px;--shadow-rest:0 1px 0 #00000059;--shadow-lift:0 22px 40px -14px #0009, 0 6px 12px -6px #00000073;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--duration-fast:.16s;--duration-base:.28s;--duration-arrive:.55s;--z-media:1;--z-lifted:20;--z-nav:30;--z-skip:100;--background:var(--ink);--foreground:var(--paper);--surface:var(--ink-raised);--surface-raised:var(--ink-high);--muted-foreground:var(--muted);--border:var(--line);--accent:var(--signal);--accent-foreground:var(--signal-ink);--selection:var(--signal);--ease-out-quint:var(--ease-out);--font-geist-sans:var(--font-space-grotesk);--font-geist-mono:var(--font-ibm-plex-mono)}
@layer reset{*,:before,:after,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-sans);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-size:1em}small{font-size:80%}table{text-indent:0;border-color:inherit;border-collapse:collapse}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::placeholder{opacity:1;color:color-mix(in oklab, currentcolor 50%, transparent)}textarea{resize:vertical}summary{display:list-item}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer base{html{scroll-behavior:smooth;background:var(--ink);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--ink);color:var(--paper);font-family:var(--font-sans);overflow-wrap:break-word;line-height:1.5}main{min-width:0}::selection{background:var(--signal);color:var(--signal-ink)}:focus-visible{outline:2px solid var(--signal);outline-offset:5px}button,a{-webkit-tap-highlight-color:transparent}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}::view-transition{pointer-events:none}::view-transition-group(.morph){animation-duration:.42s;animation-timing-function:var(--ease-out)}::view-transition-image-pair(.morph){animation-name:morph-soften}@keyframes morph-soften{30%{filter:blur(2px)}}::view-transition-group(site-header){z-index:100;animation:none}::view-transition-old(site-header){display:none}::view-transition-new(site-header){animation:none}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation:none!important}::view-transition-old(*){animation-duration:.16s!important}::view-transition-new(*){animation-duration:.16s!important}}}
.skip-link{z-index:100;background:var(--accent);color:var(--accent-foreground);padding:.7rem 1rem;position:fixed;top:1rem;left:1rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.page-shell{width:min(100%,1600px);padding-inline:var(--page-gutter);margin-inline:auto}.site-header{z-index:30;position:relative}.nav-row{justify-content:space-between;align-items:center;height:72px;display:flex}.wordmark{border:1px solid var(--foreground);letter-spacing:-.08em;place-items:center;width:38px;height:38px;font-weight:750;display:grid}.nav-row nav{align-items:center;gap:clamp(1.1rem,3vw,2.5rem);font-size:.88rem;display:flex}.nav-row nav a{color:var(--muted);transition:color .15s}.nav-row nav a:hover{color:var(--foreground)}.section-block{padding-block:var(--section-space);scroll-margin-top:6rem}.section-heading{margin-bottom:clamp(2.5rem,6vw,5rem)}.section-heading h2{letter-spacing:-.055em;margin:0;font-size:clamp(2rem,4vw,4rem);font-weight:560;line-height:.95}.meta-label,.project-number,dt,.github-type{font-family:var(--font-geist-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-size:.68rem}.section-heading .meta-label{margin:0 0 1rem}.project-index-layout{grid-template-columns:minmax(0,1.2fr) minmax(270px,.8fr);align-items:center;gap:clamp(2rem,6vw,7rem);display:grid}.project-list{border-top:1px solid var(--border)}.project-row{border-bottom:1px solid var(--border);min-height:104px;transition:color .18s ease, padding .22s var(--ease-out-quint);grid-template-columns:3rem minmax(8rem,1fr) minmax(10rem,.8fr) auto;align-items:center;gap:1rem;display:grid}.project-row:hover,.project-row:focus-visible{color:var(--accent);padding-left:.7rem}.project-name{letter-spacing:-.05em;font-size:clamp(1.65rem,3vw,3.1rem);line-height:1}.project-meta{color:var(--muted);font-size:.79rem}.project-preview{min-width:0}.project-visual{isolation:isolate;aspect-ratio:4/3;background:var(--surface-raised);border:1px solid var(--border);align-items:flex-end;padding:clamp(1.2rem,3vw,2.5rem);display:flex;position:relative;overflow:hidden}.project-visual>span{z-index:2;letter-spacing:-.03em;background:#11110fb8;padding:.3rem .6rem;font-size:clamp(1.1rem,2vw,1.6rem);font-weight:600;position:relative}.project-visual-image{object-fit:cover;object-position:top center;filter:grayscale(.5)contrast(1.05)}.visual-grid{z-index:-1;background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);background-size:38px 38px;position:absolute;inset:0}.project-visual[data-kind=diagram]{background:#292320;padding:0}.cant-fake-diagram{flex-direction:column;justify-content:flex-end;gap:1rem;width:100%;height:100%;padding:clamp(1.2rem,3vw,2.5rem);display:flex;position:relative}.cant-fake-label{font-family:var(--font-geist-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--danger);font-size:.63rem;position:absolute;top:1.4rem;left:clamp(1.2rem,3vw,2.5rem)}.cant-fake-steps{flex-direction:column;gap:.7rem;margin:0;padding:0;list-style:none;display:flex}.cant-fake-steps li{border-top:1px solid var(--border);padding-top:.6rem}.cant-fake-index{font-family:var(--font-geist-mono);color:var(--muted);margin-right:.6rem;font-size:.7rem}.cant-fake-step-label{letter-spacing:-.02em;font-weight:600}.cant-fake-steps p{color:var(--muted);margin:.3rem 0 0 1.9rem;font-size:.82rem}.cant-fake-diagram[data-compact] .cant-fake-steps{gap:.3rem}.cant-fake-diagram[data-compact] .cant-fake-label{display:none}.mobile-project-visual{grid-column:1/-1;display:none}.featured-project{grid-template-columns:minmax(0,1.45fr) minmax(16rem,.55fr);align-items:end;gap:clamp(2rem,6vw,7rem);display:grid}.browser-frame{border:1px solid var(--border);background:#0d0d0b}.browser-bar{border-bottom:1px solid var(--border);align-items:center;gap:7px;height:44px;padding:0 14px;display:flex}.browser-bar>span{background:var(--muted-foreground);border-radius:50%;width:7px;height:7px}.browser-bar p{font:.66rem var(--font-geist-mono);color:var(--muted);margin:auto}.browser-stage{aspect-ratio:16/10;text-align:center;background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);background-size:52px 52px;place-content:center;display:grid;position:relative;overflow:hidden}.browser-stage-image{object-fit:cover;object-position:top center}.browser-stage strong{letter-spacing:-.08em;font-size:clamp(2.5rem,7vw,7rem)}.browser-stage span{color:var(--muted);font:.7rem var(--font-geist-mono);text-transform:uppercase;letter-spacing:.12em}.featured-copy h3{letter-spacing:-.07em;margin:.8rem 0 1rem;font-size:clamp(2.8rem,5vw,5rem)}.featured-copy>p{color:var(--muted);max-width:30rem}.link-row{flex-wrap:wrap;gap:1.5rem;margin-top:2rem;display:flex}.link-row a{border-bottom:1px solid var(--foreground);padding-bottom:.25rem}.thru-panel{grid-template-columns:minmax(0,1.3fr) minmax(18rem,1fr);align-items:center;gap:clamp(2rem,5vw,4rem);display:grid}.thru-image{aspect-ratio:16/10;border:1px solid var(--border);margin:0;position:relative;overflow:hidden}.thru-image img{object-fit:cover;object-position:top center}.thru-copy h3{letter-spacing:-.06em;margin:.6rem 0 1rem;font-size:clamp(2.2rem,4vw,3.6rem)}.thru-copy>p{color:var(--muted);max-width:30rem}.thru-surfaces{border-top:1px solid var(--border);margin:1.8rem 0 0;padding:0;list-style:none}.thru-surfaces li{border-bottom:1px solid var(--border);padding:.85rem 0}.thru-surfaces span{font-family:var(--font-geist-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-size:.72rem}.thru-surfaces p{color:var(--muted);margin:.3rem 0 0;font-size:.9rem}.thru-attribution{color:var(--muted-foreground);margin-top:1.2rem;font-size:.82rem}.technical-panel{background:var(--surface);border:1px solid var(--border);grid-template-columns:minmax(0,1.15fr) minmax(16rem,.85fr);gap:3rem;padding:clamp(1.5rem,5vw,5rem);display:grid;position:relative;overflow:hidden}.technical-image{z-index:1;grid-row:span 2;min-height:580px;margin:0;position:relative;overflow:hidden}.technical-image img{object-fit:cover;filter:grayscale()contrast(1.08)}.technical-image:after{content:"";box-shadow:inset 0 0 0 1px var(--border);pointer-events:none;position:absolute;inset:0}.technical-image figcaption{z-index:2;color:var(--foreground);font:.62rem var(--font-geist-mono);text-transform:uppercase;letter-spacing:.08em;background:#11110fcc;padding:.35rem .5rem;position:absolute;bottom:1rem;left:1rem}.technical-panel:before{content:"";pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);background-size:42px 42px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(270deg,#000,#0000 58%);mask-image:linear-gradient(270deg,#000,#0000 58%)}.technical-copy,.technical-panel dl{z-index:1;position:relative}.technical-copy{align-self:end}.technical-copy>p:first-of-type{color:var(--accent);font:.68rem var(--font-geist-mono);text-transform:uppercase;margin-left:.5rem;display:inline}.status-indicator{background:var(--accent);width:7px;height:7px;box-shadow:0 0 16px color-mix(in srgb, var(--accent) 65%, transparent);border-radius:50%;display:inline-block}.technical-copy h3{letter-spacing:-.065em;max-width:12ch;margin:2.5rem 0 1rem;font-size:clamp(2.4rem,5vw,5rem);line-height:.92}.technical-copy>p:last-child{color:var(--muted)}.technical-panel dl{margin:0}.technical-panel dl div{border-bottom:1px solid var(--border);grid-template-columns:7rem 1fr;padding:1.25rem 0;display:grid}.technical-panel dd{text-transform:uppercase;margin:0;font-size:.86rem}.experience-list article,.achievement-list article{border-bottom:1px solid var(--border);grid-template-columns:minmax(7rem,.35fr) minmax(16rem,.75fr) minmax(16rem,1fr);gap:2rem;padding:2rem 0;display:grid}.experience-list h3,.achievement-list h3{margin:0;font-size:1.25rem}.experience-list p,.achievement-list p{margin:.2rem 0 0}.muted{color:var(--muted)}.experience-date,.achievement-year{font:.75rem var(--font-geist-mono);color:var(--muted)}.achievement-list a{justify-self:end;font-size:.82rem}.github-list{border-top:1px solid var(--border)}.github-list a{border-bottom:1px solid var(--border);grid-template-columns:7rem minmax(10rem,.65fr) minmax(12rem,1fr) auto;align-items:baseline;gap:1.5rem;padding:1.3rem 0;display:grid}.github-list a>span:nth-child(3),.github-list time{color:var(--muted);font-size:.78rem}.github-empty{border-top:1px solid var(--border);min-height:150px;color:var(--muted);flex-direction:column;justify-content:center;align-items:flex-start;gap:1rem;display:flex}.github-empty p{margin:0}.github-empty a{color:var(--foreground);border-bottom:1px solid}.github-skeleton{background:var(--border);gap:1px;display:grid}.github-skeleton span{background:linear-gradient(90deg, var(--surface), var(--surface-raised), var(--surface));background-size:200% 100%;height:64px;animation:1.5s linear infinite skeleton}.web-work-strip{background:var(--border);grid-template-columns:repeat(3,1fr);gap:1px;display:grid}.web-work-strip>a{background:var(--background);padding:0 1.5rem 1.5rem;transition:background .18s}.web-work-strip>a:hover{background:var(--surface)}.web-work-visual{aspect-ratio:5/4;margin-inline:-1.5rem;color:var(--background);place-items:center;margin-bottom:1.5rem;font-size:clamp(4rem,9vw,9rem);font-weight:700;display:grid;position:relative;overflow:hidden}.web-work-image{object-fit:cover;object-position:top center;filter:saturate(.75)contrast(1.05);transition:transform .35s var(--ease-out-quint)}.web-work-strip>a:hover .web-work-image,.web-work-strip>a:focus-visible .web-work-image{transform:scale(1.04)}@media (prefers-reduced-motion:reduce){.web-work-image{transition:none}}.web-work-strip h3,.web-work-strip p{margin:0}.web-work-strip p{color:var(--muted);margin-top:.35rem;font-size:.78rem}.off-clock{grid-template-columns:minmax(0,1.25fr) minmax(15rem,.75fr);align-items:end;gap:clamp(2rem,6vw,7rem);display:grid}.off-clock figure{margin:0}.off-clock img{object-fit:cover;object-position:50% 62%;filter:saturate(.65)contrast(1.08);width:100%;height:min(70vw,720px);display:block}.off-clock figcaption{color:var(--muted);margin-top:.7rem;font-size:.76rem}.interest-notes p{border-bottom:1px solid var(--border);justify-content:space-between;gap:1rem;margin:0;padding:1rem 0;display:flex}.interest-notes span{color:var(--muted);text-align:right;max-width:19rem}.editorial-gallery{min-width:0}.contact-section{padding:clamp(6rem,14vw,13rem) 0 clamp(4rem,8vw,8rem)}.contact-section h2{letter-spacing:-.075em;max-width:12ch;margin:1.5rem 0 3rem;font-size:clamp(3rem,8vw,8rem);line-height:.9}.contact-heading{max-width:950px}.contact-layout{grid-template-columns:minmax(0,1.05fr) minmax(18rem,.95fr);align-items:stretch;gap:1rem;display:grid}.contact-form-panel{background:var(--foreground);min-height:610px;color:var(--background);flex-direction:column;padding:clamp(1.4rem,4vw,3.5rem);display:flex}.contact-form-panel>p{margin:0 0 2.5rem;font-size:1.1rem}.contact-form-panel>a{border-bottom:1px solid;align-self:flex-start;margin-top:auto;font-size:.78rem}.contact-form{gap:1.2rem;display:grid}.field-row{gap:.45rem;display:grid}.field-row label{font:.66rem var(--font-geist-mono);text-transform:uppercase;letter-spacing:.1em}.field-row input,.field-row textarea{width:100%;color:var(--background);font:inherit;resize:vertical;background:0 0;border:0;border-bottom:1px solid #11110f57;border-radius:0;padding:.8rem 0}.field-row input::placeholder,.field-row textarea::placeholder{color:#11110f8f}.field-row input:focus-visible,.field-row textarea:focus-visible{border-color:var(--background);box-shadow:0 2px 0 var(--background);outline:0}.form-action{grid-template-columns:1fr auto;align-items:center;gap:1rem;display:grid}.form-action p{max-width:42ch;margin:0;font-size:.75rem}.form-action p a{text-decoration:underline}.form-honeypot{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.form-action button{border:1px solid var(--background);background:var(--background);min-height:46px;color:var(--foreground);font:inherit;cursor:pointer;padding:.7rem 1rem}.form-action button:disabled{cursor:wait;opacity:.62}.contact-directory{background:var(--border);border:1px solid var(--border);gap:1px;display:grid}.contact-directory>a{background:var(--surface);justify-content:space-between;align-items:center;min-height:108px;padding:1.5rem;transition:background .16s,color .16s;display:flex}.contact-directory>a:hover,.contact-directory>a:focus-visible{background:var(--surface-raised);color:var(--accent)}.contact-directory span{gap:.25rem;display:grid}.contact-directory strong{font-size:1.05rem}.contact-directory small{color:var(--muted)}.contact-directory b{font-weight:400}.contact-email{border-bottom:1px solid;font-size:clamp(1rem,2.4vw,2.2rem);display:inline-block}.site-footer{border-top:1px solid var(--border);grid-template-columns:1fr auto 1fr;align-items:center;gap:2rem;min-height:110px;font-size:.76rem;display:grid}.site-footer div{gap:1.5rem;display:flex}.site-footer>p:last-child{text-align:right}.page-hero{padding:clamp(6rem,12vw,10rem) 0 clamp(4rem,8vw,7rem)}.page-hero h1{letter-spacing:-.075em;margin:1rem 0 2rem;font-size:clamp(3.5rem,9vw,9rem);font-weight:590;line-height:.85}.page-hero>p:last-child{max-width:42rem;color:var(--muted);font-size:clamp(1rem,1.6vw,1.35rem)}.button{border:1px solid var(--foreground);background:var(--foreground);color:var(--background);min-height:44px;font:inherit;cursor:pointer;white-space:nowrap;padding:.7rem 1rem;transition:transform .1s,background .15s}.button:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-foreground)}.button:active{transform:scale(.97)}.lab-page{padding-bottom:8rem}.lab-hero{border-bottom:1px solid var(--border)}.lab-section{padding-top:6rem}.lab-section>h2{letter-spacing:-.05em;font-size:clamp(2rem,4vw,4rem)}.lab-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.component-card{border:1px solid var(--border);min-width:0}.component-card>header{border-bottom:1px solid var(--border);justify-content:space-between;gap:1rem;padding:1rem;display:flex}.component-card>header h3,.component-card>header p{margin:0;font-size:.75rem}.component-card>header p{color:var(--muted)}.component-stage{align-items:center;min-height:240px;padding:clamp(1rem,3vw,2rem);display:grid;overflow:hidden}.component-stage .featured-project,.component-stage .project-index-layout,.component-stage .technical-panel{grid-template-columns:1fr}.component-stage .project-preview{display:none}.lab-display{letter-spacing:-.07em;margin:0;font-size:clamp(2.7rem,6vw,6rem);line-height:.84}.type-stack>*{margin:.6rem 0}.type-stack h3{font-size:2rem}.type-stack code{color:var(--accent)}.lab-motion-text{font:.78rem var(--font-geist-mono);letter-spacing:.1em}.glow-sample{border:1px solid color-mix(in srgb, var(--accent) 40%, var(--border));box-shadow:inset 0 0 30px color-mix(in srgb, var(--accent) 8%, transparent);color:var(--accent);font:.75rem var(--font-geist-mono);padding:2rem}.dither-placeholder,.background-sample,.pixel-sample{min-height:220px;color:var(--muted);font:.68rem var(--font-geist-mono);text-transform:uppercase;letter-spacing:.1em;place-items:center;display:grid}.dither-placeholder{background:repeating-radial-gradient(circle,#777 0 1px,#0000 1px 5px)}.background-sample{background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);background-size:26px 26px}.pixel-sample{background:repeating-linear-gradient(45deg, var(--surface), var(--surface) 10px, var(--surface-raised) 10px, var(--surface-raised) 20px)}.lab-nav-demo{gap:.5rem;display:flex}.lab-nav-demo button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:.7rem 1rem;position:relative}.lab-nav-demo button span{background:var(--surface-raised);z-index:0;position:absolute;inset:0}.lab-nav-demo b{z-index:1;font-weight:450;position:relative}.lab-minimal-nav{gap:2rem;display:flex}@keyframes skeleton{to{background-position:-200% 0}}@media (max-width:900px){.featured-project,.technical-panel,.thru-panel,.off-clock,.project-index-layout{grid-template-columns:1fr}.project-preview{display:none}.project-row{grid-template-columns:2.5rem 1fr auto;padding:1.2rem 0}.project-meta{grid-column:2/3}.mobile-project-visual{margin-top:1rem;display:block}.mobile-project-visual .project-visual{aspect-ratio:16/8}.mobile-project-visual .project-visual>span{font-size:2rem}.featured-project{align-items:start}.technical-panel dl div{grid-template-columns:6rem 1fr}.technical-image{grid-row:auto;min-height:520px}.github-list a{grid-template-columns:6rem 1fr}.github-list a>span:nth-child(3),.github-list time{grid-column:2}.experience-list article,.achievement-list article{grid-template-columns:6rem 1fr}.experience-list article>:last-child,.achievement-list article>:last-child{grid-column:2}.achievement-list a{justify-self:start}.site-footer{grid-template-columns:1fr auto}.site-footer>p:last-child{display:none}.contact-layout{grid-template-columns:1fr}.contact-form-panel{min-height:560px}}@media (max-width:640px){:root{--section-space:3.5rem}.nav-row{height:64px}.nav-row nav{gap:1rem}.nav-row nav a:nth-child(3){display:none}.project-row{min-height:0}.project-name{font-size:1.8rem}.project-meta{font-size:.7rem}.web-work-strip,.lab-grid{grid-template-columns:1fr}.off-clock{gap:2.5rem}.interest-notes p{flex-direction:column}.interest-notes span{text-align:left}.contact-form-panel{min-height:610px}.form-action{grid-template-columns:1fr}.form-action button{width:100%}.contact-directory>a{min-height:92px}.component-card>header{flex-direction:column}.site-footer{grid-template-columns:1fr;padding-block:2rem}.site-footer div{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
:root{--motion-fast:.18s;--motion-arrive:.55s}.site-header{border-bottom:1px solid var(--border)}.nav-row{height:78px}.wordmark{width:44px;height:44px}.nav-row nav a{align-items:center;min-height:44px;display:inline-flex;position:relative}.nav-row nav a:after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform var(--motion-fast) ease;position:absolute;bottom:6px;left:0;right:0;transform:scaleX(0)}.nav-row nav a:hover:after,.nav-row nav a:focus-visible:after{transform:scaleX(1)}.nav-row nav a:last-child{color:var(--foreground)}.nav-row nav a[aria-current=page]{color:var(--accent)}.nav-row nav a[aria-current=page]:after{transform:scaleX(1)}.hero{padding:30px 0 0}.hero-intro{font:.7rem var(--font-geist-mono);text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;align-items:center;gap:1rem;display:flex}.hero-intro p{color:var(--accent);margin:0}.hero-intro>span{color:var(--muted)}.hero-name{letter-spacing:-.075em;text-transform:uppercase;align-items:baseline;gap:.19em;margin:22px 0 32px;font-size:clamp(5rem,12.6vw,12.6rem);font-weight:600;line-height:.9;display:flex}.hero-name>span{display:block}.hero-period{color:var(--accent)}.hero-composition{grid-template-columns:.96fr 1.36fr .7fr;align-items:stretch;gap:clamp(20px,2.5vw,40px);display:grid}.hero-copy{flex-direction:column;justify-content:center;min-width:0;display:flex}.hero-copy p{margin:0}.hero-copy .hero-headline{letter-spacing:-.06em;font-size:clamp(2rem,3.5vw,3.5rem);font-weight:500;line-height:1.04}.hero-headline em{color:var(--accent);font-style:normal}.hero-copy .hero-description{max-width:27ch;color:var(--muted);margin-top:20px;font-size:.98rem;line-height:1.65}.hero-copy .hero-role{color:var(--muted);margin-top:20px;font-size:.73rem;line-height:1.7}.hero-role a{color:var(--foreground)}.hero-role a:hover{text-decoration:underline}.hero-actions{flex-wrap:wrap;align-items:center;gap:14px 20px;margin-top:28px;display:flex}.primary-link{background:var(--accent);min-height:48px;color:var(--accent-foreground);justify-content:space-between;align-items:center;gap:30px;padding:13px 17px;font-size:.82rem;font-weight:600;display:inline-flex}.primary-link span,.text-link span{transition:transform var(--motion-fast) var(--ease-out-quint);display:inline-block}.primary-link:hover span,.primary-link:focus-visible span{transform:translateY(3px)}.primary-link:active{transform:scale(.98)}.text-link{align-items:center;gap:16px;min-height:44px;font-size:.81rem;display:inline-flex}.text-link:hover span,.text-link:focus-visible span{transform:translate(2px,-2px)}.hero-artifact{background:var(--surface);border:1px solid #45453b;flex-direction:column;min-width:0;padding:14px;display:flex}.hero-artifact-heading{color:var(--muted);font:.65rem var(--font-geist-mono);text-transform:uppercase;letter-spacing:.09em;justify-content:space-between;align-items:center;padding-bottom:12px;display:flex}.hero-artifact-heading>span:last-child{color:var(--accent);font-size:1.15rem}.hero-artifact-image{background:#eeeade;flex:1;min-height:200px;position:relative;overflow:hidden}.hero-artifact-image img{object-fit:cover;object-position:center;transition:transform .45s var(--ease-out-quint)}.hero-artifact:hover img,.hero-artifact:focus-visible img{transform:scale(1.035)}.hero-artifact-caption{justify-content:space-between;align-items:center;gap:12px;padding-top:14px;display:flex}.hero-artifact-caption strong{letter-spacing:-.05em;font-size:1.6rem;font-weight:500}.hero-artifact-caption>span{color:var(--muted);text-align:right;font-size:.66rem;line-height:1.55}.hero-artifact-status{display:block}.hero-portrait{flex-direction:column;min-width:0;margin:0;display:flex;position:relative}.hero-portrait-image{flex:1;min-height:255px;position:relative;overflow:hidden}.hero-portrait-image img{object-fit:cover;object-position:59% center;filter:grayscale()}.hero-portrait figcaption{color:var(--muted);margin-top:12px;font-size:.72rem;line-height:1.5}.hero-footnotes{border-top:1px solid var(--border);border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;margin-top:36px;display:grid}.hero-footnotes a{align-items:center;gap:18px;min-height:83px;padding:20px 0;display:flex}.hero-footnotes a+a{border-left:1px solid var(--border);padding-left:30px}.hero-footnotes a>span:nth-last-child(2){color:var(--muted);font-size:.67rem}.hero-footnotes strong{color:var(--foreground);margin-top:2px;font-size:.83rem;font-weight:450;display:block}.hero-footnotes a>span:last-child{color:var(--muted);margin-left:auto;margin-right:28px}.hero-footnotes a:hover strong,.hero-footnotes a:focus-visible strong{color:var(--accent)}.hero-award{color:var(--accent);font:1.65rem var(--font-geist-mono);letter-spacing:-.07em}.status-indicator{box-shadow:none;flex-shrink:0}.section-block{padding-block:var(--section-space)}.section-heading{margin-bottom:clamp(28px,3vw,44px)}.section-heading h2{font-size:clamp(2rem,3.8vw,3.8rem);line-height:1.06}.section-heading .meta-label{margin-bottom:14px}.work-section{padding-top:clamp(44px,5.5vw,84px)}.project-index-layout{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:clamp(32px,5vw,72px)}.project-row{min-height:112px;transition:color var(--motion-fast) ease;grid-template-columns:26px minmax(0,1fr) 20px;gap:16px;padding:24px 0}.project-row:hover,.project-row:focus-visible{padding-left:0}.project-row[data-active=true] .project-name{color:var(--accent)}.project-name{font-size:clamp(1.6rem,2.5vw,2.7rem)}.project-name small{color:var(--muted);font:.78rem/1.6 var(--font-geist-sans);letter-spacing:0;max-width:43ch;margin-top:10px;display:block}.project-meta{display:none}.project-row>span:last-of-type{transition:transform var(--motion-fast) ease}.project-row:hover>span:last-of-type{transform:translate(2px,-2px)}.project-visual{aspect-ratio:1.18;border:0;padding:0}.project-visual-image{object-position:center;filter:none}.project-visual .project-image-disclosure{font:.64rem/1.5 var(--font-geist-mono);letter-spacing:0;width:fit-content;position:absolute;bottom:12px;left:12px;right:12px}.project-preview-caption{justify-content:space-between;gap:16px;margin-top:14px;font-size:.76rem;display:flex}.project-preview-caption>:last-child{color:var(--muted);text-transform:capitalize}.featured-project{grid-template-columns:minmax(0,1.4fr) minmax(0,.7fr);align-items:center;gap:clamp(32px,5vw,80px)}.browser-stage{aspect-ratio:1.5;background-image:none}.browser-stage-image{object-fit:contain}.browser-bar{height:36px}.featured-copy h3{margin:16px 0;font-weight:500;line-height:1.05}.featured-copy>p{line-height:1.7}.featured-copy .feature-detail{color:var(--foreground);margin-top:24px;font-size:1.12rem}.featured-copy .feature-status{font:.68rem/1.7 var(--font-geist-mono);margin-top:24px}.link-row{gap:20px;margin-top:22px}.link-row a{align-items:center;min-height:44px;font-size:.84rem;display:inline-flex}.thru-panel{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,6vw,96px)}.thru-image{aspect-ratio:1.35;background:var(--surface);grid-area:1/2}.thru-image img{object-fit:contain}.thru-copy{grid-area:1/1}.thru-copy h3{font-weight:500}.thru-surfaces{margin-top:24px}.thru-surfaces li{grid-template-columns:110px 1fr;align-items:baseline;gap:16px;padding:12px 0;display:grid}.thru-surfaces p{margin:0;font-size:.82rem}.technical-panel{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px 50px;padding:clamp(20px,3.5vw,54px)}.technical-panel:before{display:none}.technical-image{min-height:460px}.technical-image img{object-position:center;filter:grayscale()}.technical-image figcaption{max-width:calc(100% - 2rem);font-size:.62rem}.technical-copy{align-self:center}.technical-copy h3{margin:28px 0 18px;font-size:clamp(2.2rem,3.8vw,3.8rem);font-weight:500;line-height:1}.technical-copy>p{color:var(--muted)}.technical-panel dl div{padding:14px 0}.technical-panel dd{text-transform:none;font-size:.82rem}.credentials-grid{grid-template-columns:1.15fr .85fr;gap:clamp(40px,6vw,96px);display:grid}.credentials-grid .section-heading h2{font-size:clamp(1.8rem,2.8vw,2.8rem)}.credentials-grid .experience-list article,.credentials-grid .achievement-list article{grid-template-columns:minmax(0,1fr);gap:10px;padding:24px 0}.credentials-grid .experience-list article>:last-child,.credentials-grid .achievement-list article>:last-child{grid-column:1}.credentials-grid .experience-list article:first-child,.credentials-grid .achievement-list article:first-child{border-top:1px solid var(--border)}.credentials-grid .experience-list h3,.credentials-grid .achievement-list h3{font-weight:500}.credentials-grid .experience-list p,.credentials-grid .achievement-list p{font-size:.87rem;line-height:1.65}.credentials-grid .experience-date,.credentials-grid .achievement-year{font-size:.68rem!important}.credentials-grid .achievement-list a{min-height:44px;color:var(--accent);justify-self:start;align-items:center;display:inline-flex}.web-work-strip{background:0 0;gap:24px}.web-work-strip>a{border-bottom:1px solid var(--border);padding:0 0 18px}.web-work-visual{aspect-ratio:1.25;margin-inline:0}.web-work-strip h3{letter-spacing:-.04em;font-size:1.35rem;font-weight:500}.web-work-strip>a:hover{background:0 0}.activity-section{border-block:1px solid var(--border);grid-template-columns:minmax(0,.65fr) minmax(0,1.35fr);gap:48px;margin-block:32px;display:grid}.activity-section .section-heading h2{font-size:clamp(2rem,3vw,3rem)}.github-list a{grid-template-columns:80px minmax(0,1fr) auto;gap:10px 20px}.github-list a>span:nth-child(3){overflow-wrap:anywhere;grid-area:2/2/auto/-1}.github-list strong{overflow-wrap:anywhere;font-size:.9rem}.github-list time{white-space:nowrap;font-size:.68rem}.github-list a:hover strong{color:var(--accent)}.github-empty{min-height:130px}.github-skeleton span{background:var(--surface-raised);animation:1.5s ease-in-out infinite alternate activity-pulse}@keyframes activity-pulse{0%{opacity:.5}to{opacity:1}}.off-clock{grid-template-columns:minmax(0,1.4fr) minmax(0,.6fr);gap:clamp(32px,5vw,72px)}.interest-notes p{flex-direction:column;gap:8px;padding:20px 0}.interest-notes strong{font-weight:500}.interest-notes span{text-align:left;font-size:.9rem}.contact-section{border-top:1px solid var(--border);margin-top:36px;padding:clamp(56px,7vw,110px) 0;scroll-margin-top:24px}.contact-heading{max-width:none}.contact-section h2{max-width:16ch;margin:24px 0 48px;font-size:clamp(3rem,7.2vw,7rem);font-weight:500;line-height:.97}.contact-layout{grid-template-columns:1.1fr .9fr;gap:clamp(32px,6vw,96px)}.contact-form-panel{background:var(--surface);color:var(--foreground);border:1px solid var(--border);min-height:0;padding:clamp(24px,3vw,44px)}.contact-form-panel>p{margin-bottom:26px}.contact-form-panel>a{align-items:center;min-height:44px;margin-top:28px;display:inline-flex}.field-row input,.field-row textarea{color:var(--foreground);border-color:#77756e;padding:12px 0}.field-row input::placeholder,.field-row textarea::placeholder{color:var(--muted)}.field-row input:focus-visible,.field-row textarea:focus-visible{border-color:var(--accent);box-shadow:0 2px 0 var(--accent)}.field-row textarea{min-height:110px}.form-action{grid-template-columns:1fr}.form-action p:empty{display:none}.form-action p{overflow-wrap:anywhere}.form-action button{background:var(--accent);color:var(--accent-foreground);border-color:var(--accent);justify-self:start;min-height:48px;padding-inline:22px;font-size:.82rem}.form-action button:active{transform:scale(.98)}.contact-directory{background:0 0;border:0;align-content:start;gap:0}.contact-directory>a{border-bottom:1px solid var(--border);background:0 0;min-height:99px;padding:18px 0}.contact-directory>a:first-child{border-top:1px solid var(--border)}.contact-directory strong{letter-spacing:-.04em;font-size:1.5rem;font-weight:450}.contact-directory small{font-size:.76rem}.contact-directory b{transition:transform var(--motion-fast) ease;font-size:1.4rem}.contact-directory>a:hover,.contact-directory>a:focus-visible{background:0 0}.contact-directory>a:hover b{transform:translate(3px,-3px)}.site-footer{grid-template-columns:1fr auto auto;gap:48px;min-height:150px}.footer-signature{letter-spacing:-.06em;font-size:clamp(1.5rem,2.8vw,2.8rem)}.footer-signature span{color:var(--accent)}.site-footer a{min-height:44px;color:var(--muted);align-items:center;display:inline-flex}.site-footer a:hover{color:var(--foreground)}.footer-top{gap:24px}@media (min-width:1600px){.hero-name{font-size:12.5rem}.hero-composition{min-height:365px}}@media (max-width:1100px) and (min-width:641px){.hero-composition{grid-template-columns:1fr .85fr}.hero-copy{grid-area:1/1}.hero-artifact{grid-area:2/1}.hero-artifact-image{min-height:160px}.hero-portrait{grid-area:1/2/3}.hero-name{margin-bottom:28px}.hero-copy .hero-headline{font-size:clamp(2.5rem,5vw,3.5rem)}.hero-copy .hero-description{margin-top:14px}.hero-copy .hero-role{margin-top:12px}.hero-actions{margin-top:18px}.hero-artifact-caption{padding-top:8px}}@media (max-width:900px){.project-index-layout{grid-template-columns:1fr}.project-list{border:0;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px;display:grid}.project-row{grid-template-columns:minmax(0,1fr) 24px;align-content:start;gap:16px;margin-bottom:24px;padding:0 0 24px}.project-number{display:none}.project-name{grid-column:1;font-size:1.8rem}.project-name small{font-size:.78rem}.mobile-project-visual{grid-area:1/1/auto/-1;margin:0;display:block}.mobile-project-visual .project-visual{aspect-ratio:1.3}.mobile-project-visual .project-visual>span{font-size:.62rem}.project-row>span:last-of-type{grid-area:2/2}.project-preview{display:none}.featured-project,.thru-panel,.off-clock{grid-template-columns:1fr}.featured-copy{max-width:600px}.featured-copy h3{font-size:3rem}.thru-copy,.thru-image{grid-area:auto}.thru-image{aspect-ratio:1.6}.technical-panel{gap:24px}.technical-image{grid-row:span 2;min-height:420px}.technical-copy h3{font-size:2.4rem}.technical-panel dl div{grid-template-columns:70px 1fr}.credentials-grid{grid-template-columns:1fr 1fr;gap:36px}.web-work-strip{gap:16px}.activity-section{grid-template-columns:1fr;gap:0}.github-list time{grid-column:3}.contact-layout{grid-template-columns:1fr .8fr;gap:30px}.contact-directory strong{font-size:1.3rem}.site-footer{grid-template-columns:1fr auto;gap:24px}.footer-top{grid-area:1/2}.site-footer>div{grid-column:1/-1}}@media (max-width:640px){.nav-row{height:64px}.nav-row nav{gap:22px;font-size:.81rem}.wordmark{border:0;justify-items:start}.hero{padding-top:22px}.hero-intro{letter-spacing:.04em;font-size:.6rem}.hero-intro>span{font-size:.58rem}.hero-name{letter-spacing:-.075em;margin:24px 0 26px;font-size:clamp(4rem,19.8vw,8rem);line-height:.87;display:block}.hero-name>span:first-child{color:var(--foreground)}.hero-composition{grid-template-columns:minmax(0,1fr) minmax(0,.55fr);gap:22px 18px}.hero-copy{grid-area:1/1;justify-content:start}.hero-copy .hero-headline{font-size:clamp(1.8rem,7.5vw,2.8rem);line-height:1.05}.hero-copy .hero-description{margin-top:12px;font-size:.79rem;line-height:1.55}.hero-copy .hero-role{margin-top:12px;font-size:.62rem;line-height:1.7}.hero-role a{display:inline}.hero-actions{gap:6px;margin-top:16px}.primary-link{gap:22px;min-height:44px;padding:10px 12px;font-size:.72rem}.hero-actions .text-link{display:none}.hero-portrait{grid-area:1/2}.hero-portrait-image{min-height:168px;max-height:260px}.hero-portrait-image img{object-position:58% center}.hero-portrait figcaption{margin-top:8px;font-size:.62rem}.hero-artifact{grid-column:1/-1;grid-template-rows:auto 1fr;grid-template-columns:.8fr 1fr;gap:6px 16px;padding:10px;display:grid}.hero-artifact-image{grid-area:1/1/3;min-height:93px}.hero-artifact-image img{object-position:center}.hero-artifact-heading{grid-column:2;padding-bottom:0;font-size:.57rem}.hero-artifact-caption{flex-direction:column;grid-column:2;align-items:start;gap:2px;padding:0}.hero-artifact-caption strong{font-size:1.25rem}.hero-artifact-caption>span{text-align:left;font-size:.58rem}.hero-artifact-caption br{display:none}.hero-artifact-caption br:after{content:" / "}.hero-footnotes{gap:10px;margin-top:22px}.hero-footnotes a{gap:9px;min-height:77px;padding:12px 0}.hero-footnotes a+a{padding-left:12px}.hero-footnotes a>span:nth-last-child(2){font-size:.54rem}.hero-footnotes strong{font-size:.64rem;line-height:1.5}.hero-footnotes a>span:last-child{display:none}.hero-award{font-size:1.2rem}.hero-footnotes .status-indicator{width:5px;height:5px}.section-heading h2{font-size:2rem}.section-heading .meta-label{font-size:.6rem}.project-list{grid-template-columns:1fr;gap:0}.project-row{margin-bottom:24px;padding-bottom:24px}.project-name{font-size:1.75rem}.mobile-project-visual .project-visual{aspect-ratio:1.55}.work-section{padding-bottom:16px}.featured-copy h3{font-size:2.6rem}.featured-copy .feature-detail{font-size:1rem}.browser-stage{aspect-ratio:1.35}.thru-surfaces li{grid-template-columns:95px 1fr;gap:10px}.thru-surfaces span{font-size:.65rem}.technical-panel{grid-template-columns:1fr;gap:24px;padding:20px}.technical-image{grid-row:auto;min-height:330px}.technical-copy h3{max-width:13ch;margin-top:20px;font-size:2.5rem}.technical-panel dl div{grid-template-columns:80px 1fr}.credentials-grid{grid-template-columns:1fr;gap:0}.credentials-grid .section-block+.section-block{padding-top:16px}.credentials-grid .section-heading h2{font-size:2rem}.web-work-strip{grid-template-columns:1fr;gap:28px}.web-work-visual{aspect-ratio:1.55}.github-list a{grid-template-columns:60px minmax(0,1fr);gap:8px 12px}.github-list time{grid-area:3/2}.github-list a>span:nth-child(3){grid-column:2}.github-type{font-size:.6rem}.activity-section{margin-block:24px}.off-clock{gap:24px}.interest-notes{grid-template-columns:1fr;display:grid}.interest-notes p{grid-template-columns:1fr 1.2fr;align-items:baseline;gap:16px;display:grid}.interest-notes strong{font-size:.85rem}.interest-notes span{font-size:.8rem}.contact-layout{grid-template-columns:1fr;gap:32px}.contact-section h2{margin-bottom:32px;font-size:clamp(2.8rem,11vw,4rem)}.contact-form-panel{min-height:0;padding:24px}.contact-form-panel>p{font-size:1rem}.contact-directory>a{min-height:84px}.site-footer{gap:12px;padding-block:28px}.footer-signature{font-size:1.5rem}.site-footer div{gap:24px}.footer-top{gap:12px;font-size:.7rem}}@media (prefers-reduced-motion:no-preference){.hero-name>span{animation:hero-type-in .6s var(--ease-out-quint) both}.hero-name>span:nth-child(2){animation-delay:70ms}.hero-copy{animation:hero-content-in .55s .1s var(--ease-out-quint) both}.hero-artifact{animation:hero-content-in .65s .16s var(--ease-out-quint) both}.hero-portrait{animation:hero-content-in .65s .23s var(--ease-out-quint) both}@keyframes hero-type-in{0%{transform:translateY(20px)}to{transform:translateY(0)}}@keyframes hero-content-in{0%{transform:translateY(16px)}to{transform:translateY(0)}}}@media (prefers-reduced-motion:reduce){.hero-artifact:hover img,.hero-artifact:focus-visible img,.web-work-strip>a:hover .web-work-image,.web-work-strip>a:focus-visible .web-work-image{transform:none}}
