:root{--header-height: 4.75rem;--first-color: #155eef;--first-color-alt: #004eeb;--first-color-lighter: #eef4ff;--title-color: #101828;--text-color: #344054;--text-color-light: #475467;--body-color: #ffffff;--surface-color: #f7f9fc;--container-color: #ffffff;--input-color: #ffffff;--border-color: #d0d5dd;--border-strong: #98a2b3;--success-color: #067647;--error-color: #b42318;--link-color: var(--first-color);--link-hover-color: var(--first-color-alt);--strong-link-hover-color: var(--title-color);--subtle-link-hover-color: var(--text-color);--focus-ring-color: var(--first-color);--selection-background: var(--first-color);--selection-text: #ffffff;--primary-control-background: var(--first-color);--primary-control-background-hover: var(--first-color-alt);--primary-control-background-active: #0040c1;--primary-control-border: var(--first-color);--primary-control-border-hover: var(--first-color-alt);--primary-control-text: #ffffff;--secondary-control-background: var(--container-color);--secondary-control-background-hover: var(--first-color-lighter);--secondary-control-background-active: var(--first-color-lighter);--secondary-control-border: var(--border-color);--secondary-control-border-hover: var(--first-color);--secondary-control-text: var(--title-color);--secondary-control-text-hover: var(--first-color-alt);--icon-control-background: transparent;--icon-control-background-hover: var(--first-color-lighter);--icon-control-background-active: var(--first-color-lighter);--icon-control-border: transparent;--icon-control-border-hover: transparent;--icon-control-text: var(--text-color);--icon-control-text-hover: var(--first-color);--disabled-control-background: #f2f4f7;--disabled-control-border: #d0d5dd;--disabled-control-text: #667085;--interactive-tint-background: var(--first-color-lighter);--interactive-tint-text: var(--first-color-alt);--pill-background: var(--surface-color);--pill-border: var(--border-color);--pill-text: var(--text-color);--field-background: var(--input-color);--field-border: var(--border-color);--field-border-hover: var(--border-strong);--field-placeholder: var(--text-color-light);--field-disabled-background: #f2f4f7;--field-disabled-border: #d0d5dd;--field-disabled-text: #667085;--detail-card-border: transparent;--modal-close-background: rgb(0 0 0 / .7);--modal-close-background-hover: rgb(0 0 0 / .9);--modal-close-background-active: rgb(0 0 0 / .9);--modal-close-border: transparent;--modal-close-border-hover: transparent;--modal-close-text: #ffffff;--shadow-sm: 0 1px 2px rgb(16 24 40 / .06), 0 1px 3px rgb(16 24 40 / .1);--shadow-lg: 0 18px 50px rgb(16 24 40 / .12);--radius-sm: .625rem;--radius-md: 1rem;--radius-lg: 1.5rem;--container-max-width: 1180px;--page-gutter: 1rem;--grid-gap: 1rem;--content-gap: clamp(1.75rem, 3vw, 2.5rem);--section-block-space: clamp(4rem, 7vw, 6.25rem);--section-heading-gap: clamp(2rem, 4vw, 3.25rem);--subsection-gap: clamp(2.75rem, 5vw, 4rem);--body-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--hue-color: 218;--h1-font-size: 2.25rem;--h2-font-size: 1.75rem;--h3-font-size: 1.25rem;--normal-font-size: 1rem;--small-font-size: .875rem;--smaller-font-size: .75rem;--font-medium: 500;--font-semi-bold: 650;--mb-0-5: .5rem;--mb-1: 1rem;--mb-1-5: 1.5rem;--mb-2: 2rem;color-scheme:light}body.dark-theme{--first-color: #84adff;--first-color-alt: #b2ccff;--first-color-lighter: #182b49;--title-color: #f2f4f7;--text-color: #d0d5dd;--text-color-light: #98a2b3;--body-color: #0c111d;--surface-color: #111827;--container-color: #161f2f;--input-color: #101828;--border-color: #667085;--border-strong: #98a2b3;--success-color: #75e0a7;--error-color: #fda29b;--selection-background: #84adff;--selection-text: #0c111d;--strong-link-hover-color: #b2ccff;--subtle-link-hover-color: #b2ccff;--primary-control-background: #84adff;--primary-control-background-hover: #b2ccff;--primary-control-background-active: #6b9df8;--primary-control-border: #84adff;--primary-control-border-hover: #b2ccff;--primary-control-text: #0c111d;--secondary-control-background: #161f2f;--secondary-control-background-hover: #182b49;--secondary-control-background-active: #203a63;--secondary-control-border: #667085;--secondary-control-border-hover: #84adff;--secondary-control-text: #f2f4f7;--secondary-control-text-hover: #b2ccff;--icon-control-background: #161f2f;--icon-control-background-hover: #182b49;--icon-control-background-active: #203a63;--icon-control-border: #667085;--icon-control-border-hover: #84adff;--icon-control-text: #f2f4f7;--icon-control-text-hover: #b2ccff;--disabled-control-background: #202b3c;--disabled-control-border: #475467;--disabled-control-text: #98a2b3;--interactive-tint-background: #182b49;--interactive-tint-text: #b2ccff;--pill-background: #182235;--pill-border: #667085;--pill-text: #d0d5dd;--field-background: #101828;--field-border: #667085;--field-border-hover: #98a2b3;--field-placeholder: #98a2b3;--field-disabled-background: #202b3c;--field-disabled-border: #475467;--field-disabled-text: #98a2b3;--detail-card-border: #667085;--modal-close-background: #84adff;--modal-close-background-hover: #b2ccff;--modal-close-background-active: #6b9df8;--modal-close-border: #84adff;--modal-close-border-hover: #b2ccff;--modal-close-text: #0c111d;--shadow-sm: 0 1px 3px rgb(0 0 0 / .3);--shadow-lg: 0 22px 60px rgb(0 0 0 / .4);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 1rem);overflow-x:clip}body{margin:0;min-width:320px;overflow-x:clip;background:var(--body-color);color:var(--text-color);font-family:var(--body-font);font-size:clamp(1rem,.98rem + .08vw,1.0625rem);line-height:1.65;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}html.menu-open,body.menu-open{overflow:hidden;overscroll-behavior:none}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:var(--link-color);text-underline-offset:.18em}a:hover{color:var(--link-hover-color)}button{color:inherit}img{display:block;max-width:100%;height:auto}h1,h2,h3,h4,p,ul,dl,dd{margin-top:0}h1,h2,h3,h4{color:var(--title-color);line-height:1.16;letter-spacing:-.025em}ul{padding:0;list-style:none}::selection{background:var(--selection-background);color:var(--selection-text)}:focus-visible{outline:3px solid var(--focus-ring-color);outline-offset:3px;border-radius:.25rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:.75rem;left:.75rem;z-index:1000;transform:translateY(-160%);padding:.7rem 1rem;border-radius:var(--radius-sm);background:var(--title-color);color:var(--body-color);font-weight:700}.skip-link:focus{transform:translateY(0)}.container{width:min(calc(100% - (var(--page-gutter) * 2)),var(--container-max-width));margin-inline:auto}.section{padding-block:var(--section-block-space);scroll-margin-top:calc(var(--header-height) + 1rem)}.section--tinted{background:var(--surface-color)}.section-heading{width:min(100%,720px);margin:0 auto var(--section-heading-gap);text-align:center}.section-heading--left{margin-inline:0;text-align:left}.section__title{margin-bottom:.8rem;font-size:clamp(2rem,1.55rem + 2vw,3rem);font-weight:750}.section__subtitle{max-width:65ch;margin-bottom:0;color:var(--text-color-light);font-size:clamp(1.025rem,.97rem + .22vw,1.12rem)}.section-heading:not(.section-heading--left) .section__subtitle{margin-inline:auto}.eyebrow{margin-bottom:.75rem;color:var(--first-color);font-size:.8125rem;font-weight:800;letter-spacing:.12em;line-height:1.4;text-transform:uppercase}.button{display:inline-flex;min-height:3rem;align-items:center;justify-content:center;gap:.55rem;padding:.75rem 1.15rem;border:1px solid var(--primary-control-border);border-radius:var(--radius-sm);background:var(--primary-control-background);color:var(--primary-control-text);font-weight:700;line-height:1.2;text-align:center;text-decoration:none;cursor:pointer;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease}.button:not(:disabled):hover{border-color:var(--primary-control-border-hover);background:var(--primary-control-background-hover);color:var(--primary-control-text);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.button:not(:disabled):active{background:var(--primary-control-background-active);box-shadow:none;transform:translateY(0)}.button:disabled{border-color:var(--disabled-control-border);background:var(--disabled-control-background);box-shadow:none;color:var(--disabled-control-text);cursor:not-allowed;opacity:1;transform:none}.button--secondary{border-color:var(--secondary-control-border);background:var(--secondary-control-background);color:var(--secondary-control-text)}.button--secondary:not(:disabled):hover{border-color:var(--secondary-control-border-hover);background:var(--secondary-control-background-hover);color:var(--secondary-control-text-hover)}.button--secondary:not(:disabled):active{background:var(--secondary-control-background-active)}.text-link{display:inline-flex;min-height:2.75rem;align-items:center;gap:.4rem;color:var(--link-color);font-weight:750;text-decoration:none}.text-link:hover{color:var(--link-hover-color);text-decoration:underline}.icon-button{display:inline-grid;width:2.75rem;height:2.75rem;place-items:center;border:1px solid var(--icon-control-border);border-radius:50%;background:var(--icon-control-background);color:var(--icon-control-text);cursor:pointer;transition:background-color .16s ease,border-color .16s ease,color .16s ease}.icon-button:not(:disabled):hover{border-color:var(--icon-control-border-hover);background:var(--icon-control-background-hover);color:var(--icon-control-text-hover)}.icon-button:not(:disabled):active{background:var(--icon-control-background-active)}.icon-button:disabled{border-color:var(--disabled-control-border);background:var(--disabled-control-background);color:var(--disabled-control-text);cursor:not-allowed}.header{position:sticky;top:0;z-index:100;min-height:var(--header-height);border-bottom:1px solid transparent;transition:border-color .16s ease,box-shadow .16s ease}.header:before{position:absolute;inset:0;z-index:-1;background:color-mix(in srgb,var(--body-color) 92%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);content:"";pointer-events:none}.header--scrolled{border-bottom-color:var(--border-color);box-shadow:0 4px 18px #1018280d}.nav{display:flex;min-height:var(--header-height);align-items:center;justify-content:space-between;gap:1rem}.nav__logo{display:inline-flex;align-items:center;gap:.65rem;color:var(--title-color);font-weight:800;text-decoration:none}.nav__logo-mark{display:grid;width:2.4rem;height:2.4rem;place-items:center;border-radius:.75rem;background:var(--primary-control-background);color:var(--primary-control-text);font-size:.68rem;letter-spacing:.05em}.nav__list{display:flex;align-items:center;gap:.4rem;margin:0}.nav__link{display:inline-flex;min-height:2.75rem;align-items:center;padding-inline:.85rem;border-radius:.5rem;color:var(--text-color);font-size:.94rem;font-weight:650;text-decoration:none;transition:background-color .16s ease,color .16s ease}.nav__link:hover,.nav__link--active{background:var(--interactive-tint-background);color:var(--interactive-tint-text)}.nav__link:active{background:var(--secondary-control-background-active)}.nav__actions{display:flex;align-items:center;gap:.25rem}.nav__toggle,.nav__close,.nav__backdrop{display:none}.theme-toggle{font-size:1.35rem}.home{display:flex;min-height:min(760px,calc(100svh - var(--header-height)));align-items:center;padding-block:clamp(3.5rem,7vw,5.75rem)}.home__container{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.8fr);align-items:center;gap:clamp(2.5rem,4vw,4rem)}.home__data{max-width:850px}.home__title{max-width:18ch;margin-bottom:1.25rem;font-size:clamp(2.8rem,2rem + 2.3vw,4rem);font-weight:780;letter-spacing:-.055em}.home__description{max-width:52ch;margin-bottom:1.5rem;color:var(--text-color-light);font-size:clamp(1.0625rem,1rem + .3vw,1.18rem);line-height:1.65}.home__technology-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:.65rem 1rem;margin-bottom:1.65rem}.home__technology-line>span{color:var(--text-color-light);font-size:.75rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.home__technology-list{display:flex;flex-wrap:wrap;gap:.45rem;margin:0}.home__technology-list li{padding:.36rem .62rem;border:1px solid var(--pill-border);border-radius:999px;background:var(--pill-background);color:var(--pill-text);font-size:.8rem;font-weight:700;line-height:1.25}.home__actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.25rem}.home__socials{display:flex;flex-wrap:wrap;gap:.35rem 1.25rem;margin-bottom:1.25rem}.home__socials a{display:inline-flex;min-height:2.75rem;align-items:center;gap:.5rem;color:var(--text-color);font-weight:650;text-decoration:none}.home__socials a:hover{color:var(--first-color);text-decoration:underline}.home__socials svg{width:1.15rem;height:1.15rem;fill:currentColor}.home__portrait{margin-block:0;margin-inline:auto;width:min(100%,410px)}.home__portrait-frame{overflow:hidden;aspect-ratio:1;border:1px solid var(--border-strong);border-radius:clamp(1.25rem,3vw,2rem);background:var(--first-color-lighter);box-shadow:var(--shadow-lg)}.home__portrait-frame img{width:100%;height:100%;object-fit:cover}.about__layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:clamp(2.5rem,6vw,5.5rem);align-items:start}.about__copy{max-width:68ch;color:var(--text-color);font-size:clamp(1.025rem,.98rem + .18vw,1.14rem)}.about__copy p{margin-bottom:1.15rem}.about__copy strong{color:var(--title-color);font-weight:750}.about__highlights{display:grid;gap:.8rem}.highlight-card{position:relative;padding:1.4rem 1.5rem 1.35rem 4.25rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--container-color)}.highlight-card__index{position:absolute;top:1.45rem;left:1.35rem;color:var(--first-color);font-size:.78rem;font-weight:800;letter-spacing:.08em}.highlight-card h3{margin-bottom:.35rem;font-size:1.05rem}.highlight-card p{margin-bottom:0;color:var(--text-color-light);font-size:.92rem;line-height:1.55}.experience__list{position:relative;display:grid;gap:1.25rem;margin-bottom:0}.experience-card{display:grid;grid-template-columns:minmax(180px,.28fr) minmax(0,.72fr);gap:clamp(1.5rem,4vw,4.5rem);padding:clamp(1.25rem,2.6vw,1.85rem);border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--container-color);box-shadow:var(--shadow-sm)}.experience-card__meta{color:var(--text-color-light);font-size:.98rem}.experience-card__meta p{margin-bottom:.3rem}.experience-card__dates{color:var(--title-color);font-weight:700}.experience-card__label{margin-top:1rem;color:var(--text-color-light);font-size:.74rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.experience-card__label:first-child{margin-top:0}.experience-card__body h3{margin-bottom:.25rem;font-size:clamp(1.35rem,1.2rem + .6vw,1.75rem)}.experience-card__company{margin-bottom:1rem;color:var(--first-color);font-weight:700}.experience-card__summary{max-width:67ch;margin-bottom:1rem}.experience-card__subheading,.case-study__stack-title,.case-study__decision h4{margin-bottom:.55rem;color:var(--title-color);font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.check-list{display:grid;gap:.45rem;margin-bottom:1.15rem}.check-list li{position:relative;padding-left:1.4rem}.check-list li:before{position:absolute;left:0;color:var(--first-color);content:"\2022";font-weight:900}.tag-list{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:0}.tag-list li{padding:.35rem .65rem;border:1px solid var(--pill-border);border-radius:999px;background:var(--pill-background);color:var(--pill-text);font-size:.82rem;font-weight:700;line-height:1.25}.education__title{margin-bottom:1.4rem;font-size:clamp(1.5rem,1.3rem + .7vw,2rem)}.education__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.education-card{padding:1.5rem;border-left:3px solid var(--first-color);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--surface-color)}.education.section{padding-block:clamp(3rem,5vw,4.25rem)}.education .section-heading{margin-bottom:clamp(1.5rem,3vw,2rem)}.education-card__date{margin-bottom:.5rem;color:var(--first-color);font-size:.8rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.education-card h3,.education-card h4{margin-bottom:.4rem;font-size:1.05rem}.education-card p:last-child{margin-bottom:0;color:var(--text-color-light);font-size:.95rem;line-height:1.55}.skills__grid,.operations__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.capability-card{display:flex;min-height:100%;flex-direction:column;padding:clamp(1.35rem,2.5vw,1.9rem);border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--container-color);transition:border-color .16s ease,transform .16s ease,box-shadow .16s ease}.capability-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.capability-card__heading{display:grid;grid-template-columns:2rem 1fr;gap:.7rem;align-items:start}.capability-card__heading>span{padding-top:.18rem;color:var(--first-color);font-size:.75rem;font-weight:800;letter-spacing:.08em}.capability-card h3{margin-bottom:.85rem;font-size:clamp(1.25rem,1.12rem + .45vw,1.55rem)}.capability-card>p{max-width:58ch;margin-bottom:1rem;color:var(--text-color-light);font-size:1rem;line-height:1.6}.capability-card__technology-label{margin-bottom:.5rem!important;color:var(--text-color-light)!important;font-size:.76rem!important;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.capability-card .tag-list{margin-bottom:1rem}.capability-card .text-link{align-self:flex-start;margin-top:auto}.operation-card{padding:1.25rem;border-radius:var(--radius-md);background:transparent;box-shadow:none}.operation-card:hover{border-color:var(--border-color);background:var(--container-color);box-shadow:none;transform:none}.operation-card h3{font-size:clamp(1.12rem,1rem + .3vw,1.35rem)}.operation-card>p{color:var(--text-color-light);font-size:.95rem;line-height:1.55}.case-studies{display:grid;gap:clamp(1.5rem,4vw,2.5rem)}.case-study{display:grid;grid-template-columns:minmax(280px,.78fr) minmax(0,1.22fr);overflow:hidden;border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--container-color);box-shadow:var(--shadow-sm);scroll-margin-top:calc(var(--header-height) + 1.25rem);transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.case-study:hover,.case-study:focus-within{border-color:var(--border-strong);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.case-study--reverse .case-study__visual{order:2}.case-study--reverse{grid-template-columns:minmax(0,1.22fr) minmax(280px,.78fr)}.case-study__visual{display:grid;min-height:100%;margin:0;padding:clamp(1rem,2.5vw,2rem);place-content:center;gap:.7rem;background:var(--surface-color)}.case-study__visual img{width:100%;aspect-ratio:5 / 4;border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:0 10px 30px #1018281a;object-fit:cover}.case-study__visual-fallback{display:none;min-height:18rem;width:100%;margin:0;padding:2.5rem;place-items:center;align-content:center;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--first-color-lighter);color:var(--text-color-light);text-align:center}.case-study__visual--fallback .case-study__visual-fallback{display:grid}.case-study__visual-fallback span{color:var(--first-color);font-size:clamp(2.4rem,5vw,4.5rem);font-weight:850;letter-spacing:-.08em;line-height:1}.case-study__visual-fallback small{margin-top:.9rem;color:var(--text-color);font-size:.8rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.case-study__visual--fallback img{display:none}.case-study__visual figcaption{margin:0;color:var(--text-color-light);font-size:.72rem;font-weight:700;letter-spacing:.04em;text-align:center}.case-study__content{min-width:0;padding:clamp(1.4rem,3vw,2.6rem)}.case-study__heading-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.65rem 1rem}.case-study__number{margin-bottom:0;color:var(--first-color);font-size:.78rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.case-study__heading h3{margin:.6rem 0 .7rem;font-size:clamp(1.65rem,1.4rem + 1vw,2.35rem)}.case-study__purpose{max-width:58ch;margin-bottom:1.45rem;color:var(--text-color-light);font-size:1rem}.case-study__status{display:inline-flex;align-items:center;min-height:1.9rem;padding-inline:.7rem;border:1px solid var(--pill-border);border-radius:999px;background:var(--pill-background);color:var(--pill-text);font-size:.76rem;font-weight:700}.case-study__details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;align-items:stretch;margin-bottom:1.25rem}.case-study__details>div{min-width:0;padding:.95rem;border:1px solid var(--border-color);border-left:3px solid var(--first-color);border-radius:var(--radius-sm);background:var(--surface-color)}.case-study__details dt{margin-bottom:.35rem;color:var(--first-color);font-size:.74rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.case-study__details dd{margin:0;color:var(--text-color);font-size:.95rem;line-height:1.55;overflow-wrap:anywhere}.case-study__decision{margin-bottom:1.25rem;padding:.95rem 1rem;border-left:3px solid var(--first-color);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--first-color-lighter)}.case-study__decision h4{margin-bottom:.35rem}.case-study__decision p{margin-bottom:0;color:var(--text-color-light);font-size:.95rem;line-height:1.55}.case-study__footer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1rem;padding-top:1.1rem;border-top:1px solid var(--border-color)}.case-study__stack-title{margin-bottom:.55rem}.project-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem .85rem}.project-link--status,.project-card__status{color:var(--text-color-light);font-size:.85rem;font-weight:700}.case-studies__note{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem;margin-top:2.5rem;padding-top:1.25rem;border-top:1px solid var(--border-color)}.case-studies__note .eyebrow,.case-studies__note p:last-child{margin-bottom:0}.case-studies__note p:last-child{color:var(--text-color-light)}.other-projects__heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.other-projects__heading .eyebrow{margin-bottom:.6rem}.other-projects__heading .section__title{margin-bottom:0}.other-projects__heading p{margin-bottom:0;color:var(--text-color-light)}.other-projects__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.project-card{display:flex;overflow:hidden;min-height:100%;flex-direction:column;border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--container-color);transition:border-color .16s ease,transform .16s ease,box-shadow .16s ease}.project-card:hover,.project-card:focus-within{border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.project-card__visual{aspect-ratio:16 / 9;overflow:hidden;background:var(--surface-color)}.project-card__visual img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .22s ease}.project-card:hover .project-card__visual img,.project-card:focus-within .project-card__visual img{transform:scale(1.015)}.project-card__visual--fallback{display:grid;place-items:center;background:var(--first-color-lighter)}.project-card__visual--fallback img{display:none}.project-card__fallback{display:none;place-items:center;align-content:center;color:var(--first-color)}.project-card__visual--fallback .project-card__fallback{display:grid}.project-card__fallback span{font-size:3rem;font-weight:850;letter-spacing:-.08em;line-height:1}.project-card__fallback small{margin-top:.65rem;color:var(--text-color);font-size:.72rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.project-card__body{display:flex;min-height:17.5rem;flex:1;flex-direction:column;padding:clamp(1.2rem,2.5vw,1.6rem)}.project-card__meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.35rem .75rem;margin-bottom:.7rem;color:var(--text-color-light);font-size:.72rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.project-card h3{margin-bottom:.55rem;font-size:1.35rem}.project-card p{margin-bottom:1.1rem;color:var(--text-color-light);font-size:.98rem;line-height:1.55}.project-card .tag-list{margin-bottom:.9rem}.project-card .text-link{align-self:flex-start;margin-top:auto}.contact__layout{display:grid;grid-template-columns:minmax(230px,.35fr) minmax(0,.65fr);gap:clamp(2rem,5vw,4.5rem);align-items:start}.contact__details{display:grid;gap:1.35rem;padding-top:.35rem}.contact__details p{margin-bottom:0}.contact__details .contact__email-intro{margin-top:.25rem;color:var(--text-color-light);font-size:.88rem}.contact__details a{display:inline-flex;min-height:2.75rem;align-items:center;color:var(--title-color);font-weight:650;word-break:break-word}.contact__details a:hover{color:var(--strong-link-hover-color)}.contact__label{color:var(--text-color-light);font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.contact__profile-links{display:flex;gap:1rem}.contact__form{position:relative;display:grid;gap:.4rem;padding:clamp(1.25rem,3vw,2rem);border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--container-color);box-shadow:var(--shadow-sm)}.contact__form-heading{padding-bottom:.75rem}.contact__form-heading .contact__label{margin-bottom:.5rem}.contact__form-heading h3{margin-bottom:.4rem;font-size:clamp(1.35rem,1.2rem + .5vw,1.75rem)}.contact__form-heading p:last-child{margin-bottom:0;color:var(--text-color-light);font-size:.92rem}.contact__field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.contact__field{display:grid;align-content:start}.contact__field label{margin-bottom:.4rem;color:var(--title-color);font-size:.88rem;font-weight:700}.contact__field input,.contact__field textarea{width:100%;min-height:3rem;padding:.7rem .85rem;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-background);color:var(--title-color);line-height:1.5;transition:border-color .14s ease,box-shadow .14s ease}.contact__field input::placeholder,.contact__field textarea::placeholder{color:var(--field-placeholder);opacity:1}.contact__field input:disabled,.contact__field textarea:disabled{border-color:var(--field-disabled-border);background:var(--field-disabled-background);color:var(--field-disabled-text);cursor:not-allowed}.contact__field textarea{min-height:10.5rem;resize:vertical}.contact__field input:hover,.contact__field textarea:hover{border-color:var(--field-border-hover)}.contact__field input:focus,.contact__field textarea:focus{border-color:var(--first-color);outline:0;box-shadow:0 0 0 4px color-mix(in srgb,var(--first-color) 18%,transparent)}.contact__field input[aria-invalid=true],.contact__field textarea[aria-invalid=true]{border-color:var(--error-color)}.contact__honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.field-error{min-height:1.45rem;padding-top:.2rem;color:var(--error-color);font-size:.8rem}.field-hint{margin:.3rem 0 0;color:var(--text-color-light);font-size:.78rem}.contact__submit-row{display:flex;align-items:center;gap:1rem;padding-top:.4rem}.form-status{flex:1;font-size:.86rem;line-height:1.45}.form-status p{margin-bottom:0}.form-status--success{color:var(--success-color)}.form-status--error{color:var(--error-color)}.footer{border-top:1px solid var(--border-color);background:var(--body-color)}.footer__container{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr) minmax(0,1.2fr);gap:2rem;align-items:start;padding-block:2.75rem}.footer__container>nav{justify-self:center}.footer__name{color:var(--title-color);font-weight:800;text-decoration:none}.footer__role,.footer__meta p{margin:.35rem 0 0;color:var(--text-color-light);font-size:.82rem}.footer__links{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin:0}.footer__links a,.footer__socials a{display:inline-flex;min-height:2.75rem;align-items:center;color:var(--text-color);font-size:.88rem;font-weight:650}.footer__links a:hover,.footer__socials a:hover{color:var(--subtle-link-hover-color)}.footer__meta{display:grid;gap:.35rem;justify-items:end;text-align:right}.footer__socials{display:flex;justify-content:flex-end;gap:1.25rem}.scrollup{position:fixed;right:1rem;bottom:1rem;z-index:50;display:grid;width:2.9rem;height:2.9rem;place-items:center;border-radius:50%;border:1px solid var(--primary-control-border);background:var(--primary-control-background);box-shadow:var(--shadow-lg);color:var(--primary-control-text);font-size:1.25rem;text-decoration:none;opacity:0;pointer-events:none;transform:translateY(1rem);transition:opacity .16s ease,transform .16s ease}.scrollup:hover{border-color:var(--primary-control-border-hover);background:var(--primary-control-background-hover);color:var(--primary-control-text)}.scrollup:active{background:var(--primary-control-background-active)}.scrollup--visible{opacity:1;pointer-events:auto;transform:translateY(0)}@media (max-width: 1024px){.home__container{gap:3rem}.home__title{font-size:clamp(2.65rem,5vw,3.6rem);max-width:17ch}.skills__grid,.operations__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 899px){:root{--header-height: 4.25rem}.nav__toggle,.nav__close{display:inline-grid}.nav__toggle{width:auto;padding-inline:.75rem;border-radius:.55rem;font-size:.84rem;font-weight:750}.nav__backdrop{position:fixed;inset:0;z-index:105;display:block;width:100%;height:100vh;height:100dvh;padding:0;border:0;background:#10182873;opacity:0;visibility:hidden;cursor:pointer;pointer-events:none;transition:opacity .22s ease,visibility 0s linear .22s}.nav__backdrop--visible{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}.nav__menu{position:fixed;inset:0 0 auto auto;z-index:110;width:min(88vw,420px);height:100vh;height:100dvh;overflow-y:auto;overscroll-behavior:contain;padding:5.5rem 1.25rem 2rem;border-left:1px solid var(--border-color);background:var(--container-color);box-shadow:var(--shadow-lg);visibility:hidden;transform:translate(105%);transition:transform .22s ease,visibility 0s linear .22s}.nav__menu--open{visibility:visible;transform:translate(0);transition-delay:0s}.nav__list{display:grid;gap:.4rem}.nav__link{min-height:3.25rem;padding-inline:1rem;font-size:1.05rem}.nav__close{position:absolute;top:.75rem;right:1rem}.nav__close>span{position:relative;display:block;width:1.35rem;height:1.35rem;font-size:0}.nav__close>span:before,.nav__close>span:after{position:absolute;top:50%;left:50%;width:1.5rem;height:.14rem;border-radius:999px;background:currentColor;content:""}.nav__close>span:before{transform:translate(-50%,-50%) rotate(45deg)}.nav__close>span:after{transform:translate(-50%,-50%) rotate(-45deg)}.home{min-height:auto}.home__container,.about__layout,.contact__layout{grid-template-columns:1fr}.home__container{gap:3.5rem}.home__portrait{width:min(78vw,390px);margin-top:0}.experience-card{grid-template-columns:1fr;gap:.75rem}.experience-card__body{order:1}.experience-card__meta{order:2;display:flex;flex-wrap:wrap;gap:.35rem .8rem;padding-top:.75rem;border-top:1px solid var(--border-color)}.experience-card__meta .experience-card__label{margin-top:0}.skills__grid,.operations__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.other-projects__grid{grid-template-columns:1fr}.project-card__body{min-height:0}.case-study,.case-study--reverse{grid-template-columns:1fr}.case-study--reverse .case-study__visual{order:0}.case-study__visual{min-height:0;padding:clamp(1rem,5vw,2rem)}.contact__details{grid-template-columns:repeat(2,minmax(0,1fr))}.footer__container{grid-template-columns:1fr 1fr}.footer__container>nav{justify-self:end}.footer__meta{grid-column:1 / -1;justify-items:start;text-align:left}.footer__socials{justify-content:flex-start}}@media (max-width: 640px){:root{--page-gutter: .75rem}.section{padding-block:4.25rem}.home{padding-top:3rem}.home__title{font-size:clamp(2.35rem,12vw,3.45rem);max-width:17ch}.home__actions{display:grid}.home__actions .button{width:100%}.home__portrait{width:min(84vw,340px)}.education__grid,.contact__field-grid,.contact__details,.case-study__details{grid-template-columns:1fr}.case-study__footer,.other-projects__heading,.contact__submit-row{align-items:flex-start;flex-direction:column}.case-study__footer{grid-template-columns:1fr}.project-links{justify-content:flex-start}.contact__submit-row .button{width:100%}.footer__container{grid-template-columns:1fr;gap:1.2rem}.footer__container>nav{justify-self:start}.footer__meta{grid-column:auto}.skills__grid,.operations__grid{grid-template-columns:1fr}}@media (max-width: 370px){.nav__logo>span:last-child,.theme-toggle{display:none}.home__socials{gap:.25rem 1rem}.capability-card,.experience-card,.case-study__content,.project-card__body,.contact__form{padding-inline:1.15rem}}@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}}
