:root{--font-sans:var(--font-suisse-intl), "Helvetica Neue", Arial, sans-serif;--font-mono:var(--font-suisse-intl-mono), "SFMono-Regular", Consolas, monospace;--color-brand:#81f358;--color-brand-soft:#98f778;--color-brand-deep:#6dde47;--color-on-brand:#071007;--color-canvas:#090909;--color-canvas-soft:#151515;--color-canvas-raised:#202020;--color-code:#050505;--color-light:#fff;--color-paper:#f1f1ed;--color-ink:#0b0b0b;--color-ink-soft:#1b1b1b;--color-graphite:#3b3b38;--color-ash:#aaa9a3;--color-mute:#73736e;--color-hairline-dark:#30302d;--color-hairline-light:#dcdcd6;--color-error:#ff6961;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-28:7rem;--space-32:8rem;--type-display:clamp(3.25rem, 8.2vw, 7.5rem);--type-page:clamp(3rem, 6vw, 5.5rem);--type-section:clamp(2.4rem, 4.2vw, 4.5rem);--type-heading:clamp(1.75rem, 2.5vw, 2.75rem);--type-card:clamp(1.35rem, 1.7vw, 1.8rem);--type-lede:clamp(1.2rem, 1.6vw, 1.5rem);--type-body:1rem;--type-small:.875rem;--type-mono:.75rem;--leading-display:.9;--leading-heading:1.04;--leading-body:1.58;--tracking-display:-.055em;--tracking-heading:-.035em;--tracking-mono:.055em;--container-max:102.5rem;--container-grid:80rem;--container-reading:50rem;--gutter:clamp(1.25rem, 4vw, 4rem);--content-inset:max(var(--gutter), calc((100vw - var(--container-max)) / 2 + var(--gutter)));--section-space:clamp(6rem, 9vw, 8rem);--grid-gap:clamp(1rem, 2vw, 2rem);--header-height:4.5rem;--tap-target:2.75rem;--radius-xs:3px;--radius-sm:5px;--radius-md:8px;--radius-card:12px;--radius-pill:99999px;--border-dark:1px solid var(--color-hairline-dark);--border-light:1px solid var(--color-hairline-light);--shadow-light:0 8px 32px #00000014;--transition-fast:.18s ease}*,:before,:after{box-sizing:border-box}html{background:var(--color-canvas);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;scroll-behavior:smooth}body{background:var(--color-canvas);min-width:20rem;color:var(--color-light);font-family:var(--font-sans);font-size:var(--type-body);line-height:var(--leading-body);text-rendering:optimizelegibility;margin:0}body,button,input{font-family:var(--font-sans)}body,h1,h2,h3,h4,p,ul,ol,figure{margin:0}ul,ol{padding:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}img{max-width:100%;display:block}::selection{background:var(--color-brand);color:var(--color-on-brand)}:focus-visible{outline:2px solid var(--color-brand);outline-offset:4px}.projects-page :focus-visible,.photography-page :focus-visible,.about-page :focus-visible,.resume-page :focus-visible,.case-study :focus-visible{outline-color:var(--color-ink);box-shadow:0 0 0 4px var(--color-light)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:var(--space-3);left:var(--space-3);z-index:1000;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--color-brand);color:var(--color-on-brand);font-family:var(--font-mono);font-size:var(--type-mono);text-decoration:none;position:fixed;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.site-shell,.site-main{min-height:1px}.eyebrow,.mono-label,.detail-label,.status-label,.reference-meta,.proof-row__label,.experience-row__dates,.capability-card__index{font-family:var(--font-mono);font-size:var(--type-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;font-weight:700;line-height:1.35}h1,h2,h3,h4{letter-spacing:var(--tracking-heading);font-weight:400;line-height:var(--leading-heading)}h1{font-size:var(--type-page)}h2{font-size:var(--type-section)}h3{font-size:var(--type-card)}.lede{max-width:48rem;font-size:var(--type-lede);letter-spacing:-.015em;line-height:1.4}.site-header{z-index:100;min-height:var(--header-height);gap:var(--space-8);padding-inline:var(--content-inset);border-bottom:var(--border-dark);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#090909f0;grid-template-columns:auto minmax(0,1fr);align-items:center;display:grid;position:sticky;top:0}.site-mark{flex:none;align-items:center;width:2.625rem;height:2.625rem;display:inline-flex}.site-mark img{width:100%;height:100%}.site-nav,.site-nav>div{align-items:center;display:flex}.site-nav--desktop{justify-content:space-between;gap:var(--space-8)}.site-nav__primary,.site-nav__utility{gap:clamp(var(--space-4), 2vw, var(--space-8))}.site-nav a,.site-footer a{min-height:var(--tap-target);font-family:var(--font-mono);font-size:var(--type-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;align-items:center;font-weight:700;text-decoration:none;display:inline-flex;position:relative}.site-nav a:after,.site-footer a:after{background:var(--color-brand);content:"";transform-origin:100%;height:1px;transition:transform var(--transition-fast);position:absolute;bottom:.45rem;left:0;right:0;transform:scaleX(0)}.site-nav a:hover:after,.site-nav a[aria-current=page]:after,.site-footer a:hover:after{transform-origin:0;transform:scaleX(1)}.site-nav a[aria-current=page]{color:var(--color-brand)}.menu-toggle,.site-nav--mobile{display:none}.site-footer{gap:var(--space-8);padding:clamp(var(--space-16), 6vw, var(--space-24)) var(--content-inset);border-top:var(--border-dark);background:var(--color-canvas);grid-template-columns:minmax(12rem,1fr) minmax(0,2fr) auto;align-items:end;display:grid}.site-footer__identity p:first-child{font-size:1.25rem;font-weight:500}.site-footer__identity{gap:var(--space-4);align-items:center;display:flex}.site-footer__identity img{flex:none;width:2.625rem;height:2.625rem}.site-footer__identity p:last-child,.site-footer__copyright{color:var(--color-ash);font-family:var(--font-mono);font-size:var(--type-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase}.site-footer__links{gap:var(--space-2) var(--space-6);flex-wrap:wrap;justify-content:center;display:flex}.button-group,.work-card__actions,.project-card__links,.resume-page__actions,.about-links,.app-play-links{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.button-link,.minimal-button,.secondary-button{justify-content:center;align-items:center;gap:var(--space-4);border-radius:var(--radius-pill);min-height:3rem;font-family:var(--font-mono);font-size:var(--type-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);border:1px solid #0000;padding:.65rem 1.2rem;font-weight:700;line-height:1;text-decoration:none;display:inline-flex}.button-link:hover,.minimal-button:hover,.secondary-button:hover{transform:translateY(-2px)}.button-link--primary,.minimal-button{background:var(--color-brand);color:var(--color-on-brand)}.button-link--primary:hover,.minimal-button:hover{background:var(--color-brand-soft)}.button-link--secondary,.secondary-button{background:var(--color-light);color:var(--color-ink)}.button-link--outline{background:0 0;border-color:currentColor}.button-link--outline:hover{border-color:var(--color-light);background:var(--color-light);color:var(--color-ink)}.button-link--text{min-height:var(--tap-target);text-underline-offset:.35em;border-radius:0;padding-inline:.25rem;text-decoration:underline;text-decoration-thickness:1px}.text-link{min-height:var(--tap-target);align-items:center;gap:var(--space-3);color:inherit;font-family:var(--font-mono);font-size:var(--type-mono);letter-spacing:var(--tracking-mono);text-decoration:underline;-webkit-text-decoration-color:var(--color-brand);text-decoration-color:var(--color-brand);text-transform:uppercase;text-underline-offset:.35em;font-weight:700;text-decoration-thickness:1px;display:inline-flex}.text-link span:last-child,.button-link span:last-child{transition:transform var(--transition-fast)}.text-link:hover span:last-child,.button-link:hover span:last-child{transform:translate(.15rem,-.1rem)}.tag-list,.project-card__stack,.app-card__stack,.photo-detail-list,.app-meta-list,.research-tag-list,.skill-group ul,.about-current-role ul{gap:var(--space-2);flex-wrap:wrap;list-style:none;display:flex}.tag-list li,.project-card__stack li,.app-card__stack li,.photo-detail-list li,.app-meta-list li,.research-tag-list li,.skill-group li,.about-current-role li{border-radius:var(--radius-pill);background:var(--color-canvas-raised);min-height:1.8rem;color:var(--color-ash);font-family:var(--font-mono);letter-spacing:.035em;text-transform:uppercase;align-items:center;padding:.3rem .6rem;font-size:.6875rem;font-weight:700;line-height:1.2;display:inline-flex}.section-intro{gap:var(--space-5);max-width:67rem;margin-bottom:clamp(var(--space-12), 5vw, var(--space-20));display:grid}.section-intro h2{max-width:14ch}.section-intro__description{max-width:42rem;color:var(--color-ash);font-size:var(--type-lede);line-height:1.42}.home-hero{min-height:calc(100svh - var(--header-height));gap:var(--grid-gap);padding:clamp(var(--space-20), 9vh, var(--space-32)) var(--content-inset) var(--space-16);background:radial-gradient(circle, #ffffff24 1px, transparent 1px) calc(100% - var(--content-inset)) 15% / 22px 22px no-repeat, var(--color-canvas);grid-template-columns:minmax(0,10fr) minmax(8rem,2fr);align-items:end;display:grid;position:relative;overflow:hidden}.home-hero__inner{gap:var(--space-6);display:grid}.home-hero h1{max-width:12ch;color:var(--color-light);font-size:var(--type-display);letter-spacing:var(--tracking-display);font-weight:400;line-height:var(--leading-display);text-wrap:balance}.home-hero .eyebrow{color:var(--color-brand)}.home-hero__description{max-width:45rem;color:var(--color-ash);font-size:var(--type-lede);line-height:1.4}.home-hero__index{color:var(--color-mute);writing-mode:vertical-rl;place-self:end}.home-section{padding:var(--section-space) var(--content-inset)}.proof-section{border-top:var(--border-dark);background:var(--color-canvas)}.proof-list,.experience-list{border-bottom:var(--border-dark)}.proof-row{gap:var(--grid-gap);padding:var(--space-8) 0;border-top:var(--border-dark);grid-template-columns:minmax(8.5rem,1.5fr) minmax(15rem,3fr) minmax(20rem,5fr);align-items:start;display:grid}.proof-row__label{color:var(--color-brand)}.proof-row h3{font-size:clamp(1.2rem,1.8vw,1.65rem)}.proof-row>p:last-child{max-width:44rem;color:var(--color-ash)}.featured-project{background:var(--color-light);color:var(--color-ink)}.featured-project .section-intro__description{color:var(--color-graphite)}.featured-project__grid{gap:clamp(var(--space-12), 6vw, var(--space-24));grid-template-columns:minmax(0,7fr) minmax(20rem,5fr);align-items:start;display:grid}.featured-project__story{gap:var(--space-6);display:grid}.featured-project__story h3{max-width:16ch;font-size:clamp(2.2rem,4vw,4.2rem)}.featured-project__story>p:not(.mono-label){max-width:50rem;font-size:clamp(1.1rem,1.5vw,1.35rem);line-height:1.55}.featured-project__story .button-link{justify-self:start}.featured-project__details{border-top:var(--border-light);display:grid}.featured-project__details>div{gap:var(--space-4);padding:var(--space-6) 0;border-bottom:var(--border-light);display:grid}.featured-project .tag-list li,.projects-page .tag-list li,.photography-page .tag-list li,.about-page .tag-list li,.case-study .tag-list li{background:var(--color-paper);color:var(--color-graphite)}.selected-work{background:var(--color-canvas)}.work-grid{gap:var(--grid-gap);margin-bottom:var(--space-10);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.work-card{align-content:start;gap:var(--space-8);min-height:32rem;padding:var(--space-8);border:var(--border-dark);border-radius:var(--radius-card);background:var(--color-canvas-soft);display:grid}.work-card__body{gap:var(--space-5);display:grid}.work-card__body p{color:var(--color-ash)}.work-card .tag-list{margin-top:auto}.work-card__actions{align-self:end}.surface-section{background:var(--color-canvas-soft)}.capability-grid{border-top:var(--border-dark);border-left:var(--border-dark);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.capability-card{align-content:start;gap:var(--space-5);min-height:27rem;padding:clamp(var(--space-6), 3.2vw, var(--space-12));border-right:var(--border-dark);border-bottom:var(--border-dark);display:grid}.capability-card__index{color:var(--color-brand)}.capability-card h3{max-width:23ch;font-size:var(--type-heading);margin-bottom:auto}.experience-section{background:var(--color-paper);color:var(--color-ink)}.experience-section .section-intro__description{color:var(--color-graphite)}.experience-list{border-color:var(--color-hairline-light)}.experience-row{gap:var(--grid-gap);padding:var(--space-8) 0;border-top:var(--border-light);grid-template-columns:minmax(8.5rem,1.5fr) minmax(18rem,3fr) minmax(20rem,5fr);display:grid}.experience-row__organization{margin-top:var(--space-2);color:var(--color-mute);font-family:var(--font-mono);font-size:var(--type-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase}.experience-row>p:last-child{color:var(--color-graphite)}.experience-section__closing{gap:var(--space-8);max-width:62rem;margin-top:var(--space-10);justify-content:space-between;align-items:center;display:flex}.experience-section__closing>p{font-size:var(--type-lede)}.experience-section .button-link--outline{flex:none}.experience-section .button-link--outline:hover{border-color:var(--color-ink);background:var(--color-ink);color:var(--color-light)}.about-section{gap:clamp(var(--space-12), 8vw, var(--space-32));grid-template-columns:minmax(0,6fr) minmax(20rem,5fr);display:grid}.about-section .section-intro{margin:0}.about-section .section-intro h2{max-width:15ch}.about-section__body{align-content:start;gap:var(--space-8);display:grid}.about-section__body>div:first-child{gap:var(--space-5);color:var(--color-ash);font-size:var(--type-lede);display:grid}.contact-section{gap:var(--space-6);padding:var(--section-space) var(--content-inset);background:var(--color-brand);color:var(--color-on-brand);display:grid}.contact-section h2{max-width:14ch;letter-spacing:var(--tracking-display);font-size:clamp(3rem,7vw,7rem);line-height:var(--leading-display)}.contact-section>p:not(.eyebrow){max-width:47rem;font-size:var(--type-lede)}.contact-section .button-link--text{color:var(--color-on-brand)}.section-page,.resume-page,.case-study{width:100%;padding:clamp(var(--space-16), 7vw, var(--space-24)) var(--content-inset) var(--section-space)}.section-page{background:var(--color-paper);min-height:70vh;color:var(--color-ink)}.apps-page,.app-play-page{background:var(--color-canvas);color:var(--color-light)}.page-intro{gap:var(--space-5);max-width:68rem;padding-bottom:clamp(var(--space-12), 6vw, var(--space-20));display:grid}.page-intro h1{max-width:13ch}.page-intro .lede{color:var(--color-graphite)}.apps-page .page-intro .lede,.app-play-page .page-intro .lede{color:var(--color-ash)}.project-index,.app-index{gap:var(--space-8);display:grid}.project-card{gap:clamp(var(--space-8), 5vw, var(--space-16));padding:var(--space-8) 0;border-top:var(--border-light);grid-template-columns:minmax(20rem,5fr) minmax(0,7fr);display:grid}.project-card__media-frame,.project-card__research-frame{border:var(--border-light);border-radius:var(--radius-card);background:var(--color-light);min-height:23rem;overflow:hidden}.project-card__media{object-fit:cover;width:100%;height:100%}.project-card__research-frame{align-content:space-between;gap:var(--space-8);padding:var(--space-8);background:radial-gradient(circle, #0b0b0b24 1px, transparent 1px) 0 0 / 20px 20px, var(--color-light);display:grid}.project-card__research-frame ul{gap:var(--space-3);list-style:none;display:grid}.project-card__research-frame li{padding-top:var(--space-3);border-top:var(--border-light);font-family:var(--font-mono);font-size:var(--type-small)}.project-card__body,.project-card__heading{align-content:start;gap:var(--space-5);display:grid}.project-card__body>p{max-width:47rem;color:var(--color-graphite);font-size:1.1rem}.project-card__notes{gap:var(--space-3);color:var(--color-graphite);padding-left:1.1rem;display:grid}.project-card__links{margin-top:auto}.projects-page .text-link,.photography-page .text-link,.about-page .text-link,.resume-page .text-link,.case-study .text-link{color:var(--color-ink)}.app-card{gap:var(--space-8);padding:var(--space-8);border:var(--border-dark);border-radius:var(--radius-card);background:var(--color-canvas-soft);grid-template-columns:minmax(0,1fr) auto;display:grid}.app-card__content,.app-card__content>div,.app-card__actions{align-content:start;gap:var(--space-5);display:grid}.app-card__content>p{max-width:46rem;color:var(--color-ash)}.app-card__actions{min-width:10rem}.placeholder-panel{align-content:center;gap:var(--space-4);min-height:16rem;padding:var(--space-8);border-radius:var(--radius-card);color:var(--color-mute);border:1px dashed;display:grid}.case-study{background:var(--color-light);color:var(--color-ink);padding-top:0}.case-study__header{gap:var(--space-6);padding-top:clamp(var(--space-16), 8vw, var(--space-28));padding-bottom:clamp(var(--space-12), 7vw, var(--space-24));background:var(--color-canvas);color:var(--color-light);box-shadow:0 0 0 100vmax var(--color-canvas);clip-path:inset(0 -100vmax);display:grid}.case-study__header h1{max-width:14ch;font-size:clamp(3.2rem,6.7vw,5.5rem)}.case-study__header .lede{color:var(--color-ash)}.case-study__meta{gap:var(--grid-gap);margin-top:var(--space-8);padding-top:var(--space-6);border-top:var(--border-dark);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.case-study__meta>div{align-content:start;gap:var(--space-2);display:grid}.case-study__meta span{color:var(--color-brand);font-family:var(--font-mono);font-size:var(--type-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;font-weight:700}.case-study__meta strong{color:var(--color-light);font-weight:400;line-height:1.4}.case-study__image{width:100%;max-height:52rem;margin-block:clamp(var(--space-8), 5vw, var(--space-16));border-radius:var(--radius-md);object-fit:cover}.case-study__body{gap:var(--grid-gap);padding:clamp(var(--space-12), 7vw, var(--space-24)) 0;grid-template-columns:minmax(12rem,3fr) minmax(0,8fr) 1fr;display:grid}.case-study__actions{top:calc(var(--header-height) + var(--space-6));align-self:start;gap:var(--space-3);justify-items:start;display:grid;position:sticky}.case-study__actions .button-link--outline{color:var(--color-ink)}.case-study__actions .button-link--outline:hover{border-color:var(--color-ink);background:var(--color-ink);color:var(--color-light)}.case-study__writing{gap:var(--space-6);max-width:var(--container-reading);grid-column:2;display:grid}.case-study__writing p{color:var(--color-ink-soft);font-size:1.125rem;line-height:1.65}.case-study__process,.case-study__portraits,.research-section,.photography-feature,.about-focus,.about-panel{padding:clamp(var(--space-12), 6vw, var(--space-24)) 0;border-top:var(--border-light)}.case-study__process-intro{gap:var(--grid-gap);margin-bottom:var(--space-10);grid-template-columns:minmax(10rem,3fr) minmax(0,9fr);display:grid}.case-study__process-intro>div{gap:var(--space-4);max-width:52rem;display:grid}.case-study__process-intro h2{font-size:var(--type-heading)}.case-study__process-intro p:not(.eyebrow){color:var(--color-graphite);font-size:1.1rem}.case-study__point-list,.research-principles{gap:var(--grid-gap);counter-reset:evidence;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none;display:grid}.case-study__point-list li,.research-principles li{min-height:10rem;padding:var(--space-8);border:var(--border-light);border-radius:var(--radius-card);background:var(--color-paper);color:var(--color-ink-soft);counter-increment:evidence;position:relative}.case-study__point-list li:before,.research-principles li:before{margin-bottom:var(--space-8);color:var(--color-ink);font-family:var(--font-mono);font-size:var(--type-mono);content:"0" counter(evidence);display:block}.case-study__card-grid,.research-card-grid{gap:var(--grid-gap);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.case-study__info-card,.research-card,.mastery-card{align-content:start;gap:var(--space-4);padding:var(--space-6);border:var(--border-light);border-radius:var(--radius-card);background:var(--color-paper);display:grid}.case-study__info-card p,.research-card p,.mastery-card p{color:var(--color-graphite)}.case-study__code-grid{gap:var(--space-6);display:grid}.code-sample{gap:var(--space-8);padding:var(--space-6);border:var(--border-dark);border-radius:var(--radius-md);background:var(--color-code);color:var(--color-light);grid-template-columns:minmax(14rem,4fr) minmax(0,8fr);display:grid;overflow:hidden}.code-sample>div{align-content:start;gap:var(--space-3);display:grid}.code-sample>div>p:last-child{color:var(--color-ash)}.code-sample pre{max-width:100%;margin:0;overflow-x:auto}.code-sample code{color:var(--color-light);font-family:var(--font-mono);font-size:.875rem;line-height:1.65}.reference-meta{color:var(--color-mute)}.case-study__process-grid,.portrait-grid,.photo-story-grid{gap:var(--grid-gap);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.case-study__figure,.portrait-card,.photo-story-card{gap:var(--space-3);margin:0;display:grid}.case-study__figure--grid,.case-study__figure--logo{grid-column:span 6}.case-study__figure--concept{grid-column:3/span 8}.case-study__process-frame,.portrait-frame,.photo-story-frame{border-radius:var(--radius-card);background:var(--color-paper);overflow:hidden}.case-study__process-image,.portrait-image,.photo-story-image{object-fit:cover;width:100%;height:100%}.case-study__figure figcaption,.portrait-card figcaption,.photo-story-card figcaption{color:var(--color-mute);font-family:var(--font-mono);font-size:var(--type-mono);line-height:1.4}.portrait-card{grid-column:span 4}.portrait-frame{aspect-ratio:4/5}.photography-feature__copy{gap:var(--space-4);max-width:54rem;margin-bottom:var(--space-10);display:grid}.photography-feature__copy>p:not(.eyebrow){color:var(--color-graphite);font-size:1.1rem}.photo-story-card--wide{grid-column:span 8}.photo-story-card--portrait{grid-column:span 4}.photo-story-frame{min-height:26rem}.photo-story-image{object-position:center}.photography-page__reserved{margin-top:var(--space-16)}.about-layout{gap:clamp(var(--space-12), 7vw, var(--space-24));grid-template-columns:minmax(0,7fr) minmax(20rem,4fr);align-items:start;display:grid}.about-copy{gap:var(--space-6);display:grid}.about-copy>p{max-width:var(--container-reading);color:var(--color-ink-soft);font-size:1.125rem}.about-focus{margin-top:var(--space-8)}.about-focus__grid,.skill-group-list{gap:var(--space-5);display:grid}.about-focus__item,.about-current-role,.about-list__item,.skill-group{gap:var(--space-3);padding-top:var(--space-5);border-top:var(--border-light);display:grid}.about-focus__item p,.about-current-role>p,.about-list__item p{color:var(--color-graphite)}.about-aside{display:grid}.about-panel h2{margin-bottom:var(--space-6);font-size:1.1rem;font-family:var(--font-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;font-weight:700}.about-current-role span,.about-list__item>span{color:var(--color-mute);font-family:var(--font-mono);font-size:var(--type-mono)}.about-list{gap:var(--space-5);display:grid}.about-list__item{grid-template-columns:1fr auto}.skill-group h3{font-size:1rem}.resume-page{background:var(--color-paper);color:var(--color-ink)}.resume-page__header{gap:var(--space-4) var(--space-8);padding-bottom:var(--space-12);border-bottom:2px solid var(--color-ink);grid-template-columns:1fr auto;align-items:end;display:grid}.resume-page__header .eyebrow{grid-column:1/-1}.resume-page__header h1{font-size:var(--type-page)}.resume-document{max-width:62rem;margin:var(--space-12) auto 0}.resume-document h2{display:none}.resume-document h3{margin-top:var(--space-12);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-ink);font-family:var(--font-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;font-size:1rem;font-weight:700}.resume-document h4{margin-top:var(--space-6);letter-spacing:-.015em;font-size:1.2rem;font-weight:600}.resume-document p,.resume-document ul{margin-top:var(--space-3);color:var(--color-graphite)}.resume-document ul{gap:var(--space-2);padding-left:1.2rem;display:grid}.resume-document a{-webkit-text-decoration-color:var(--color-brand-deep);text-decoration-color:var(--color-brand-deep);text-underline-offset:.2em}.app-play-header{gap:var(--grid-gap);grid-template-columns:minmax(0,8fr) minmax(16rem,4fr);align-items:end;display:grid}.app-play-header__aside{gap:var(--space-5);padding-bottom:var(--space-20);display:grid}.game-shell{gap:var(--grid-gap);grid-template-columns:minmax(0,8fr) minmax(18rem,4fr);align-items:start;display:grid}.game-board-panel,.game-panel{padding:var(--space-6);border:var(--border-dark);border-radius:var(--radius-md);background:var(--color-canvas-soft)}.game-status-row,.game-panel__heading{gap:var(--space-4);justify-content:space-between;align-items:center;display:flex}.game-status{font-family:var(--font-mono);font-size:var(--type-small);letter-spacing:var(--tracking-mono);text-transform:uppercase;font-weight:700}.connect-four-board{gap:var(--space-2);max-width:44rem;margin:var(--space-6) auto 0;padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-canvas-raised);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.connect-four-cell{aspect-ratio:1;border:1px solid var(--color-hairline-dark);background:var(--color-canvas);color:#0000;cursor:pointer;border-radius:50%;place-items:center;min-width:0;display:grid}.connect-four-cell:disabled{cursor:default;opacity:1}.connect-four-cell.is-x{background:var(--color-brand);color:var(--color-on-brand)}.connect-four-cell.is-o{background:var(--color-light);color:var(--color-ink)}.connect-four-cell.is-winning{outline:3px solid var(--color-brand);outline-offset:2px}.game-sidebar{gap:var(--grid-gap);display:grid}.game-panel{gap:var(--space-5);display:grid}.game-panel h2{font-size:1.15rem}.score-form{gap:var(--space-3);display:grid}.score-form label{font-family:var(--font-mono);font-size:var(--type-mono);letter-spacing:var(--tracking-mono);text-transform:uppercase;font-weight:700}.score-form input{min-height:3rem;padding:0 var(--space-4);border:var(--border-dark);border-radius:var(--radius-sm);background:var(--color-canvas-raised);color:var(--color-light)}.move-list{gap:var(--space-2);flex-wrap:wrap;max-height:12rem;list-style:none;display:flex;overflow-y:auto}.move-list button,.text-button{min-height:var(--tap-target);padding:0 var(--space-3);border:var(--border-dark);border-radius:var(--radius-sm);color:var(--color-ash);cursor:pointer;font-family:var(--font-mono);font-size:var(--type-mono);background:0 0}.move-list button.is-active{border-color:var(--color-brand);background:var(--color-brand);color:var(--color-on-brand)}.score-table{border-collapse:collapse;width:100%;font-family:var(--font-mono);font-size:var(--type-mono)}.score-table th,.score-table td{padding:var(--space-2);border-top:var(--border-dark);text-align:left}.research-card-grid--phases{grid-template-columns:repeat(4,minmax(0,1fr))}.research-card ul,.research-theme ul{gap:var(--space-2);flex-wrap:wrap;list-style:none;display:flex}.research-card li,.research-theme li{border-radius:var(--radius-pill);background:var(--color-light);color:var(--color-graphite);font-family:var(--font-mono);padding:.3rem .55rem;font-size:.6875rem}.research-theme-list,.reference-list{display:grid}.research-theme,.reference-item{gap:var(--grid-gap);padding:var(--space-8) 0;border-top:var(--border-light);grid-template-columns:minmax(0,7fr) minmax(16rem,4fr);display:grid}.research-theme>div,.reference-item>div{gap:var(--space-3);display:grid}.reference-item a{-webkit-text-decoration-color:var(--color-brand-deep);text-decoration-color:var(--color-brand-deep);text-underline-offset:.2em}.reference-source-link{font-family:var(--font-mono);font-size:var(--type-mono);justify-self:start}.progress-tree-grid{gap:var(--grid-gap);grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.progress-branch{padding:var(--space-5);border:var(--border-light);border-radius:var(--radius-card);background:var(--color-paper)}.progress-branch h3{margin-bottom:var(--space-4);font-family:var(--font-mono);font-size:var(--type-small);letter-spacing:var(--tracking-mono);text-transform:uppercase;font-weight:700}.progress-branch ol{gap:var(--space-3);color:var(--color-graphite);font-size:var(--type-small);padding-left:1.2rem;display:grid}.mastery-model{gap:var(--grid-gap);margin-top:var(--space-8);grid-template-columns:minmax(0,4fr) minmax(20rem,8fr);display:grid}.mastery-model>div{gap:var(--grid-gap);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.working-notes{margin-top:var(--space-8)}.working-notes ul{list-style:none}.working-notes li{gap:var(--space-4);padding:var(--space-4) 0;border-top:var(--border-light);grid-template-columns:minmax(0,7fr) minmax(12rem,4fr);display:grid}.working-notes code{color:var(--color-mute);font-family:var(--font-mono);overflow-wrap:anywhere}@media (max-width:75rem){.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.work-card:last-child{grid-column:1/-1;min-height:24rem}.case-study__card-grid,.research-card-grid,.research-card-grid--phases{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-tree-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:59.99rem){:root{--section-space:clamp(4rem, 9vw, 5rem)}.site-nav--desktop{display:none}.site-header{grid-template-columns:1fr auto}.menu-toggle{width:var(--tap-target);height:var(--tap-target);border:var(--border-dark);color:var(--color-light);background:0 0;border-radius:50%;place-items:center;display:inline-grid}.menu-toggle__icon{gap:.35rem;display:grid}.menu-toggle__line{width:1.1rem;height:1px;transition:transform var(--transition-fast);background:currentColor;display:block}.site-header[data-menu-open=true] .menu-toggle__line:first-child{transform:translateY(.2rem)rotate(45deg)}.site-header[data-menu-open=true] .menu-toggle__line:last-child{transform:translateY(-.2rem)rotate(-45deg)}.site-nav--mobile{height:calc(100dvh - var(--header-height));padding:clamp(var(--space-8), 7vw, var(--space-16)) var(--gutter);background:var(--color-canvas);opacity:0;pointer-events:none;transition:opacity var(--transition-fast), transform var(--transition-fast);align-content:space-between;display:grid;position:absolute;top:100%;left:0;right:0;transform:translateY(-1rem)}.site-header[data-menu-open=true] .site-nav--mobile{opacity:1;pointer-events:auto;transform:translateY(0)}.site-nav--mobile>div{align-content:start;display:grid}.site-nav__mobile-primary a{border-bottom:var(--border-dark);min-height:clamp(4rem,11vw,6rem);font-family:var(--font-sans);letter-spacing:var(--tracking-heading);font-size:clamp(2rem,7vw,3.5rem);font-weight:400}.site-nav__mobile-utility{gap:var(--space-4);grid-template-columns:repeat(3,1fr)}.site-footer{grid-template-columns:1fr auto}.site-footer__links{grid-area:2/1/auto/-1;justify-content:flex-start}.home-hero{grid-template-columns:1fr}.home-hero__index{display:none}.proof-row,.experience-row{grid-template-columns:minmax(8rem,1.2fr) minmax(0,3fr)}.proof-row>p:last-child,.experience-row>p:last-child{grid-column:2}.featured-project__grid,.about-section,.project-card,.about-layout,.app-play-header,.game-shell,.case-study__body,.code-sample,.mastery-model,.research-theme,.reference-item{grid-template-columns:1fr}.case-study__writing{grid-column:1}.case-study__actions{position:static}.case-study__meta{grid-template-columns:repeat(2,minmax(0,1fr))}.case-study__process-intro{grid-template-columns:minmax(8rem,2fr) minmax(0,7fr)}.app-play-header__aside{padding-bottom:var(--space-10)}}@media (max-width:43.75rem){:root{--gutter:1.25rem}.site-footer{grid-template-columns:1fr;align-items:start}.site-footer__links,.site-footer__copyright{grid-area:auto/1}.site-footer__links{grid-template-columns:repeat(2,1fr);display:grid}.home-hero{min-height:calc(100svh - var(--header-height));padding-bottom:var(--space-10)}.home-hero .button-group,.contact-section .button-group{align-items:stretch}.home-hero .button-link--primary,.home-hero .button-link--outline,.contact-section .button-link--secondary{width:100%}.proof-row,.experience-row{gap:var(--space-3);grid-template-columns:1fr}.proof-row>p:last-child,.experience-row>p:last-child{grid-column:1}.work-grid,.capability-grid,.case-study__point-list,.case-study__card-grid,.research-card-grid,.research-card-grid--phases,.progress-tree-grid,.mastery-model>div{grid-template-columns:1fr}.capability-grid{border-left:0}.capability-card{border-left:var(--border-dark);min-height:22rem}.work-card:last-child{grid-column:auto}.experience-section__closing{flex-direction:column;align-items:flex-start}.case-study__meta,.case-study__process-intro{grid-template-columns:1fr}.case-study__figure--grid,.case-study__figure--logo,.case-study__figure--concept,.portrait-card,.photo-story-card--wide,.photo-story-card--portrait{grid-column:1/-1}.app-card{grid-template-columns:1fr}.app-card__actions{min-width:0}.resume-page__header{grid-template-columns:1fr}.connect-four-board{gap:var(--space-1);padding:var(--space-2)}.working-notes li{grid-template-columns:1fr}}@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}}
@font-face{font-family:suisseIntl;src:url(../media/SuisseIntl_Book-s.p.0iyclt9nzyv2m.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:suisseIntl;src:url(../media/SuisseIntl_Italic-s.p.3j785gi0hc7m-.woff2)format("woff2");font-display:swap;font-weight:400;font-style:italic}@font-face{font-family:suisseIntl;src:url(../media/SuisseIntl_Medium-s.p.25q6z-11s9w6-.woff2)format("woff2");font-display:swap;font-weight:500;font-style:normal}@font-face{font-family:suisseIntl;src:url(../media/SuisseIntl_SemiBold-s.p.3vjnderyftgog.woff2)format("woff2");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:suisseIntl;src:url(../media/SuisseIntl_Bold-s.p.2ucl7ogeylagu.woff2)format("woff2");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:suisseIntl Fallback;src:local(Arial);ascent-override:94.87%;descent-override:29.92%;line-gap-override:0.0%;size-adjust:103.93%}.suisseintl_18b86fd0-module__IRFtMG__className{font-family:suisseIntl,suisseIntl Fallback}.suisseintl_18b86fd0-module__IRFtMG__variable{--font-suisse-intl:"suisseIntl", "suisseIntl Fallback"}
@font-face{font-family:suisseIntlMono;src:url(../media/SuisseIntlMono_Regular-s.p.2o3l2o0hujyyj.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:suisseIntlMono;src:url(../media/SuisseIntlMono_Bold-s.p.2abod9v15-mwo.woff2)format("woff2");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:suisseIntlMono Fallback;src:local(Arial);ascent-override:69.65%;descent-override:21.97%;line-gap-override:0.0%;size-adjust:141.57%}.suisseintlmono_28d71a2b-module__KOC99G__className{font-family:suisseIntlMono,suisseIntlMono Fallback}.suisseintlmono_28d71a2b-module__KOC99G__variable{--font-suisse-intl-mono:"suisseIntlMono", "suisseIntlMono Fallback"}
