@font-face{font-family:Operator Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/OperatorMono.ttf)format("truetype")}@font-face{font-family:Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/GroteskBold.ttf)format("truetype")}:root{color-scheme:light;--background:#fffdf7;--text:#282828;--muted:#655f55;--line:#28282847;--accent:#ffea00;--site-width:80rem;--page-gutter:clamp(1.25rem, 4vw, 4.5rem)}*,:before,:after{box-sizing:border-box}html{background:var(--background);scroll-behavior:smooth}body{background:var(--background);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Operator Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1rem;line-height:1.5}#main-content{width:100%;max-width:var(--site-width);margin:0 auto}a{color:inherit}.skip-link{z-index:10;background:var(--text);color:var(--background);padding:.65rem .8rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.page-shell{z-index:1;width:min(100%, calc(var(--site-width) + var(--page-gutter) + var(--page-gutter)));min-height:100svh;padding-inline:var(--page-gutter);background:var(--background);grid-template-rows:auto 1fr;margin:0 auto;display:grid;position:relative}.site-header{border-bottom:1px solid var(--line);letter-spacing:.055em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1.5rem;padding-block:clamp(1.25rem,2.5vw,2rem);font-size:.78rem;line-height:1.25;display:flex}.identity{align-items:center;gap:.75rem;text-decoration:none;display:inline-flex}.identity__mark{flex:none;width:2rem;height:2rem}.site-header__note{color:var(--muted);text-align:right;margin:0}main{display:grid}.hero{grid-template-columns:minmax(0,1.6fr) minmax(19rem,.65fr);align-items:start;gap:clamp(3rem,5vw,6rem);min-height:100%;padding-block:clamp(3rem,6vw,4.75rem) clamp(2.5rem,6vh,5rem);display:grid}.eyebrow{letter-spacing:.08em;text-transform:uppercase;margin:0 0 clamp(1.5rem,3vw,2.75rem);font-size:clamp(.82rem,1.1vw,1rem)}.eyebrow span{background-image:linear-gradient(var(--accent), var(--accent));background-position:0 92%;background-repeat:no-repeat;background-size:100% .42em}h1{letter-spacing:-.055em;max-width:15ch;margin:0;font-size:clamp(3rem,5.4vw,6rem);font-weight:400;line-height:1}h1>span{text-wrap:balance;display:block}h1>span+span{margin-top:.16em}h1 strong{letter-spacing:-.025em;background-image:linear-gradient(var(--accent), var(--accent));background-position:0 94%;background-repeat:no-repeat;background-size:100% .13em;font-family:Grotesk,Arial,sans-serif;font-size:.9em;font-weight:700}.hero__summary{justify-self:end;max-width:32rem;margin-top:clamp(7.5rem,15vh,10rem)}.hero__summary p{color:var(--muted);margin:0;font-size:clamp(.92rem,1.1vw,1.05rem);line-height:1.65}.hero__summary .hero__lead{color:var(--text);margin-bottom:1.5rem;font-size:clamp(1.05rem,1.4vw,1.28rem);line-height:1.55}.hero__summary .hero__stack{font-size:clamp(.88rem,1vw,.98rem);line-height:1.7}.profile-links{flex-wrap:wrap;gap:1rem 2rem;margin-top:clamp(2rem,4vw,3rem);display:flex}.profile-links a{background-image:linear-gradient(var(--accent), var(--accent));letter-spacing:.055em;text-transform:uppercase;background-position:0 100%;background-repeat:no-repeat;background-size:0 .18em;font-size:.82rem;text-decoration:none;transition:background-size .18s ease-out}.profile-links a:hover,.profile-links a:focus-visible{background-size:100% .18em}.credibility,.outside{border-top:1px solid var(--line);padding-block:clamp(3rem,5vw,4.75rem)}.outside{border-top:0;padding-block:clamp(1.5rem,2.5vw,2.25rem) clamp(2.75rem,4.5vw,4rem)}.work{padding-block:clamp(1.5rem,2.5vw,2.25rem) clamp(3rem,5vw,4.75rem)}.section-introduction .eyebrow{margin-bottom:1rem}.section-introduction h2{letter-spacing:-.035em;text-wrap:balance;margin:0;font-size:clamp(1.65rem,2.3vw,2.35rem);font-weight:400;line-height:1.15}.section-introduction h2 strong{letter-spacing:-.02em;background-image:linear-gradient(var(--accent), var(--accent));background-position:0 94%;background-repeat:no-repeat;background-size:100% .13em;font-family:Grotesk,Arial,sans-serif;font-size:.92em;font-weight:700}.section-introduction__lead{max-width:60rem;color:var(--muted);margin:1rem 0 0;font-size:clamp(.94rem,1.1vw,1.04rem);line-height:1.6}.certifications{margin-top:clamp(2rem,3vw,2.75rem)}.certifications h3,.outside__label{color:var(--muted);letter-spacing:.075em;text-transform:uppercase;margin:0 0 .85rem;font-size:.76rem;font-weight:400}.outside__label{margin-top:clamp(1.5rem,2.2vw,2rem)}.certifications ul{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.certifications li{grid-template-columns:4.5rem minmax(0,1fr);align-items:center;gap:1rem;padding-block:1rem;font-size:clamp(.88rem,1vw,.98rem);line-height:1.5;display:grid}.certifications li+li{border-left:1px solid var(--line);padding-left:clamp(1rem,3vw,3rem)}.certifications__number{color:inherit}.certifications__content{min-width:0}.certifications__meta{color:var(--muted);letter-spacing:.075em;text-transform:uppercase;flex-wrap:wrap;gap:.25rem .75rem;margin:0;font-size:.68rem;line-height:1.5;display:flex}.certifications__name{margin:.25rem 0 0}.certifications__badge{width:4.5rem;height:auto;display:block}.certifications__preview{color:inherit;font:inherit;cursor:zoom-in;background:0 0;border:0;justify-self:start;justify-items:center;padding:0;display:grid}.certifications__preview>span{letter-spacing:.075em;white-space:nowrap;text-transform:uppercase;margin-top:.25rem;font-size:.6rem}.certifications__preview:hover>span,.certifications__preview:focus-visible>span{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:.18em}.work__list{border-top:1px solid var(--line);margin:clamp(1.75rem,3vw,2.5rem) 0 0;padding:0;list-style:none}.work__item{border-bottom:1px solid var(--line);grid-template-columns:3rem minmax(13rem,.6fr) minmax(0,1.4fr);align-items:start;gap:clamp(1rem,2.5vw,2.5rem);padding-block:clamp(1rem,1.5vw,1.3rem);display:grid}.work__number{color:var(--muted);letter-spacing:.06em;font-size:.72rem;line-height:1.6}.work__item h3{letter-spacing:.025em;text-transform:uppercase;margin:0;font-family:Grotesk,Arial,sans-serif;font-size:clamp(.9rem,1vw,1rem);font-weight:700;line-height:1.5}.work__item p{max-width:70ch;margin:0;font-size:clamp(.88rem,1vw,.98rem);line-height:1.6}.closing-stage{z-index:0;background:var(--background);position:sticky;bottom:0;overflow:clip}.closing-shell{width:min(100%, calc(var(--site-width) + var(--page-gutter) + var(--page-gutter)));padding-inline:var(--page-gutter);margin:0 auto}.closing-stage.is-reveal-ready .closing-shell{will-change:transform;transition:transform .7s cubic-bezier(.22,1,.36,1);transform:translateY(2.25rem)}.closing-stage.is-visible .closing-shell{transform:translateY(0)}.final-cta{max-width:var(--site-width);grid-template-columns:minmax(0,1.15fr) minmax(20rem,.65fr);align-items:end;gap:clamp(2.5rem,5vw,5.5rem);margin-inline:auto;padding-block:clamp(2.75rem,4vw,4rem) clamp(2.25rem,3.5vw,3rem);display:grid}.final-cta__heading .eyebrow{margin-bottom:1rem}.final-cta h2{letter-spacing:-.045em;text-wrap:balance;max-width:18ch;margin:0;font-size:clamp(2.25rem,4.2vw,4.25rem);font-weight:400;line-height:1.05}.final-cta h2 strong{letter-spacing:-.02em;background-image:linear-gradient(var(--accent), var(--accent));background-position:0 94%;background-repeat:no-repeat;background-size:100% .13em;font-family:Grotesk,Arial,sans-serif;font-size:.92em;font-weight:700}.final-cta__details{justify-self:end;width:100%;max-width:34rem}.final-cta__copy{color:var(--muted);margin:0;font-size:clamp(.94rem,1.1vw,1.04rem);line-height:1.65}.final-cta__actions{flex-wrap:wrap;gap:1rem 2rem;margin-top:clamp(1.75rem,3vw,2.5rem);display:flex}.final-cta__actions a{background-image:linear-gradient(var(--accent), var(--accent));letter-spacing:.055em;text-transform:uppercase;background-position:0 100%;background-repeat:no-repeat;background-size:0 .18em;font-size:.78rem;text-decoration:none;transition:background-size .18s ease-out}.final-cta__actions a:hover,.final-cta__actions a:focus-visible{background-size:100% .18em}.site-footer{max-width:var(--site-width);margin-inline:auto;padding-bottom:clamp(1.25rem,2vw,1.75rem)}.site-footer__meta{border-top:1px solid var(--line);color:var(--muted);letter-spacing:.075em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1rem;margin-top:0;padding-top:.85rem;font-size:.68rem;display:flex}.site-footer__meta p{margin:0}.project{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:minmax(10rem,.58fr) minmax(15rem,.9fr) minmax(23.75rem,28.75rem);align-items:start;gap:clamp(1.25rem,2vw,2rem);width:100%;padding-block:1rem;display:grid}.project__identity,.project__summary,.project__visual{min-width:0}.project h3{letter-spacing:-.025em;margin:.35rem 0 0;font-family:Grotesk,Arial,sans-serif;font-size:1.75rem;font-weight:700;line-height:1.25}.project__type,.project__meta{color:var(--muted);letter-spacing:.075em;text-transform:uppercase;margin:0;font-size:.72rem;line-height:1.5}.project__meta{max-width:24ch;margin-top:.65rem}.project__summary{max-width:44ch;margin:0;font-size:clamp(.88rem,1vw,.98rem);line-height:1.6}.project__visual{justify-self:start;width:100%;max-width:28.75rem;margin:0}.project__preview{width:100%;color:inherit;font:inherit;text-align:left;cursor:zoom-in;background:0 0;border:0;padding:0;display:block}.project__preview img{border:1px solid var(--line);width:100%;height:auto;display:block}.project__preview>span{letter-spacing:.075em;text-transform:uppercase;margin-top:.65rem;font-size:.7rem;display:inline-block}.project__preview:hover>span,.project__preview:focus-visible>span{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:.18em}.project-dialog{border:1px solid var(--line);background:var(--background);width:min(90rem,100% - 2rem);max-width:none;max-height:calc(100% - 2rem);color:var(--text);padding:0}.project-dialog::backdrop{background:#000000b8}.certification-dialog{width:min(42rem,100% - 2rem)}.project-dialog__content{display:grid}.project-dialog__header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.project-dialog__header p{letter-spacing:.075em;text-transform:uppercase;margin:0;font-size:.72rem}.project-dialog__close{color:inherit;font:inherit;letter-spacing:.075em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;padding:0;font-size:.72rem}.project-dialog img{object-fit:contain;width:100%;height:auto;max-height:calc(100svh - 5rem);display:block}a:focus-visible,button:focus-visible{outline-offset:.3rem;outline:2px solid}@media (width<=56rem){.hero{grid-template-columns:1fr;align-content:start;gap:clamp(3rem,10vw,5rem);padding-block:clamp(2.75rem,7vw,4rem) 2.25rem}h1{max-width:14ch;font-size:clamp(3rem,9.5vw,5.5rem)}.hero__summary{justify-self:start;max-width:39rem;margin-top:0}.project{grid-template-columns:1fr;gap:1.25rem}.project__meta{max-width:none}.project__summary{max-width:60ch}.project__visual{justify-self:start;width:min(100%,28.75rem);max-width:none}.work__item{grid-template-columns:2.25rem minmax(0,1fr);gap:.4rem 1rem}.work__item p{grid-column:2;max-width:60ch}.final-cta{grid-template-columns:1fr;align-items:start;gap:clamp(2rem,6vw,3rem)}.final-cta__details{justify-self:start;max-width:42rem}}@media (width<=34rem){.page-shell,.closing-shell{padding-inline:1.15rem}.site-header__note{max-width:15ch}.site-header__note span{display:none}.hero{padding-top:2.5rem}h1{font-size:clamp(2.65rem,12vw,4rem);line-height:.98}.certifications ul{grid-template-columns:1fr}.certifications li+li{border-top:1px solid var(--line);border-left:0;padding-left:0}.project__visual{width:100%}.final-cta h2{font-size:clamp(2.15rem,11vw,3.5rem)}.site-footer__meta{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.profile-links a{transition:none}.closing-stage{position:relative}.closing-stage.is-reveal-ready .closing-shell{will-change:auto;transition:none;transform:none}.final-cta__actions a{transition:none}}
