@font-face{font-family:Manrope Variable;font-style:normal;font-weight:200 800;font-display:swap;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2)format("woff2")}:root{--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-background:#080d16;--color-surface:#111c2b;--color-surface-raised:#182638;--color-surface-soft:#c3d1df;--section-slate:#19293cf5;--color-muted-on-light:#354c62;--color-accent-on-light:#244d77;--border-on-light:#8b9fb2;--color-ink:#182839;--color-text:#f0f3f8;--color-muted:#aab8ca;--color-border:var(--border-default);--color-border-strong:var(--border-elevated);--color-accent:#a9c9ef;--color-focus:#c0dcff;--color-selection:#304c70;--nav-surface:#0c1420e8;--nav-surface-mobile:#0c1420f7;--nav-blur:8px;--footer-surface:#0b121e;--radius-small:10px;--radius-button:12px;--radius-card:16px;--radius-panel:22px;--shadow-surface:0 16px 48px #00000026;--shadow-hover:0 24px 64px #0000003d;--content-width:70rem;--page-gutter:clamp(1rem, 4vw, 3rem);--reading-width:62ch;--section-space:clamp(2.75rem, 5vw, 4rem);--card-padding:clamp(1.25rem, 2.5vw, 1.75rem);--nav-height:72px;--header-height:88px;--font-body:"Manrope Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--text-display:clamp(2.5rem, 5.1vw, 4.5rem);--text-heading:clamp(1.5rem, 2.4vw, 2rem);--text-body:1.0625rem;--motion-reveal-distance:12px;--motion-reveal-duration:.5s;--motion-surface-duration:.32s;--motion-nav-duration:.44s;--motion-ease:cubic-bezier(.22, .68, 0, 1);--hover-lift:-3px;--border-default:#3b4e66;--border-elevated:#7188a4;--border-active:#a9c9ef;--stroke-divider:1px;--stroke-card:1.5px;--stroke-active:2px;--stroke-inset-active:.5px;--surface-opacity:.94;--surface-bottom-opacity:.86;--surface-panel:linear-gradient(165deg, rgb(23 37 56/var(--surface-opacity)), rgb(15 25 40/var(--surface-bottom-opacity)));--surface-control:#142133cc;--surface-highlight:#c5dcf714;--surface-haze:#4875a838;--glow-rgb:102 153 215;--glow-opacity:.08;--glow-radius:26px;--shadow-glow:0 0 var(--glow-radius) rgb(var(--glow-rgb) / var(--glow-opacity));--motion-image-duration:.55s;--motion-stagger:65ms;--motion-nav-ease:cubic-bezier(.2, .8, .2, 1);--nav-indicator-thickness:3.5px;--nav-indicator-glow:0 2px 12px #82b4eb38;--image-hover-scale:1.02;--hero-min-height:26rem;--hero-padding:clamp(2.5rem, 5vw, 4rem);--hero-copy-width:68%;--portrait-max-width:17.5rem;--portrait-top:2rem;--portrait-right:0%;--portrait-aspect-ratio:588 / 748;--portrait-offset-x:0px;--portrait-offset-y:0px;--portrait-scale:1;--portrait-crop-x:50%;--portrait-crop-y:40%;--portrait-opacity:1;--portrait-edge-fade:0%;--portrait-mask:linear-gradient(#000, #000);--orbit-opacity:.09;--star-color:#c4d4e7;--star-opacity:.8;--space-haze:#26467126;--star-travel-far:20px;--star-travel-middle:55px;--star-travel-near:100px;scroll-padding-top:calc(var(--header-height) + 1rem);font-family:var(--font-body);color:var(--color-text);background:var(--color-background);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}body{font-size:var(--text-body);margin:0;line-height:1.7}#root{isolation:isolate;flex-direction:column;min-height:100svh;display:flex}main{flex:1;min-width:0}a{color:inherit;text-underline-offset:.25em}button{font:inherit}img,svg{max-width:100%;display:block}img{height:auto}h1,h2,h3,h4,p,a,dd,li{overflow-wrap:anywhere}h1,h2,h3,h4{text-wrap:balance;font-weight:700;line-height:1.16}h1{letter-spacing:-.045em;margin:0;font-size:clamp(2.25rem,4.5vw,3.75rem)}h2{font-size:var(--text-heading);letter-spacing:-.045em;margin:0 0 1.5rem}h3,h4{letter-spacing:-.025em;margin:0 0 .75rem;font-size:1.2rem}p{margin:.75rem 0}.container{width:min(var(--content-width), calc(100% - var(--page-gutter) * 2));margin-inline:auto}.reading-width{max-width:var(--reading-width)}.section{padding-block:var(--section-space);position:relative}section[id]{scroll-margin-top:1.5rem}.page{padding-block:var(--section-space)}.page-intro{margin-block:1rem 3rem}.muted{color:var(--color-muted)}.small{font-size:.875rem}.text-link{min-height:2.75rem;color:var(--color-accent);align-items:center;text-decoration-thickness:1px;display:inline-flex}.section-link{margin-top:1.5rem}.resume-unavailable{flex-direction:column;align-items:center;gap:.2rem;display:inline-flex}.inline-list{flex-wrap:wrap;gap:.5rem 2rem;padding-left:1.25rem;display:flex}.plain-list,.entry-list{margin:0;padding:0;list-style:none}.entry{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(10rem,1fr) minmax(0,3fr);gap:1rem 2rem;padding-block:1.75rem;display:grid}.entry:first-child{padding-top:0}.entry:last-child{border-bottom:0;padding-bottom:0}.entry p{margin:.25rem 0}.entry__date,.project-meta dt,.section-index,.technical-label{font-family:var(--font-mono);letter-spacing:.08em;font-size:.7rem;line-height:1.6}.section-index,.technical-label{text-transform:uppercase;color:var(--color-accent)}.section-index{margin:0 0 1.25rem}.surface{background:var(--surface-panel);border:var(--stroke-card) solid var(--border-default);border-radius:var(--radius-panel);padding:var(--card-padding);box-shadow:var(--shadow-surface)}.site-footer{border-top:1px solid var(--color-border);background:var(--footer-surface);padding-block:2rem;font-size:.875rem}:focus-visible{outline:2px solid var(--color-focus);outline-offset:5px}.skip-link{z-index:30;background:var(--color-background);padding:.5rem 1rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}@media (width<=36rem){.entry{grid-template-columns:minmax(0,1fr);gap:.5rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}::selection{background:var(--color-selection);color:var(--color-text)}@media print{:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-background:white;--color-text:black;--color-muted:#333;--color-accent:#222;--color-surface:white;--color-surface-raised:white;--color-border:#bbb;--footer-surface:transparent;--shadow-surface:none}}.eyebrow{color:var(--color-accent);margin:0 0 1rem;font-size:.9rem;font-weight:700}.page-heading{max-width:54rem;margin-bottom:clamp(2.5rem,5vw,4.5rem)}.page-heading h1{font-size:clamp(2.6rem,6.4vw,5rem);font-weight:800}.page-heading__intro{max-width:44ch;margin-top:1.5rem;font-size:clamp(1.15rem,2vw,1.5rem);line-height:1.6}.page-actions{flex-wrap:wrap;align-items:start;gap:.75rem;margin-top:2rem;display:flex}.page-end{margin-top:var(--section-space);border-top:var(--stroke-divider) solid var(--border-default);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:2rem;display:flex}.content-pending{color:var(--color-muted);max-width:55ch;font-size:.95rem}.section-heading-row{justify-content:space-between;align-items:end;gap:2rem;margin-bottom:2.5rem;display:flex}.section-heading-row h2{margin-bottom:0}.section-heading-row>p{max-width:24ch;font-size:.95rem}.tag-list{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.tag-list li{border:var(--stroke-divider) solid var(--border-default);border-radius:var(--radius-small);color:var(--color-muted);padding:.25rem .65rem;font-size:.8rem}.stretched-link{text-decoration:none}.stretched-link:after{content:"";border-radius:var(--radius-card);z-index:3;position:absolute;inset:0}.stretched-link:focus-visible{outline:none}.stretched-link:focus-visible:after{outline:var(--stroke-active) solid var(--color-focus);outline-offset:5px}.text-link{gap:.6rem;font-weight:650}@media (width<=40rem){.section-heading-row{margin-bottom:2rem;display:block}.section-heading-row>.button-link{margin-top:1.5rem}.section-heading-row>p{max-width:none}}.section-band--slate{background:var(--section-slate);border-block:var(--stroke-divider) solid var(--border-default)}.section-band--light{background:var(--color-surface-soft);color:var(--color-ink);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-text:var(--color-ink);--color-muted:var(--color-muted-on-light);--color-accent:var(--color-accent-on-light);--color-focus:#174a7c;--color-border:var(--border-on-light);--border-default:var(--border-on-light)}.entry__date{font-family:var(--font-body);letter-spacing:0;font-size:.875rem}.section-band--light a:hover{text-decoration-thickness:2px}.directory-heading{margin-bottom:2.5rem}@media print{.section-band{color:#000;--color-muted:#333;--color-accent:#222;background:#fff}}.button-link{border:var(--stroke-card) solid var(--border-elevated);border-radius:var(--radius-button);background:var(--surface-control);min-height:3rem;color:var(--color-text);box-shadow:inset 0 1px 0 var(--surface-highlight);transition:transform var(--motion-surface-duration) var(--motion-ease), box-shadow var(--motion-surface-duration) var(--motion-ease), border-color var(--motion-surface-duration), background var(--motion-surface-duration);justify-content:center;align-items:center;gap:.7rem;padding:.7rem 1.15rem;font-size:.9rem;font-weight:750;text-decoration:none;display:inline-flex;position:relative}.button-link--primary{background:var(--color-text);color:var(--color-ink);border-color:var(--color-text)}.button-link:disabled{color:var(--color-muted);cursor:default;box-shadow:none}.button-link:focus-visible,.interactive-surface:focus-within{border-color:var(--border-active);box-shadow:var(--shadow-hover), var(--shadow-glow), inset 0 0 0 var(--stroke-inset-active) var(--border-active), inset 0 1px 0 var(--surface-highlight)}.interactive-surface{transition:transform var(--motion-surface-duration) var(--motion-ease), border-color var(--motion-surface-duration) var(--motion-ease), box-shadow var(--motion-surface-duration) var(--motion-ease)}.interaction-arrow{transition:transform var(--motion-surface-duration) var(--motion-ease);display:inline-block}.button-link:focus-visible .interaction-arrow,.interactive-surface:focus-within .interaction-arrow{transform:translate(3px,-2px)}@media (hover:hover) and (pointer:fine){.button-link:not(:disabled):hover,.interactive-surface:hover{transform:translateY(var(--hover-lift));border-color:var(--border-active);box-shadow:var(--shadow-hover), var(--shadow-glow), inset 0 0 0 var(--stroke-inset-active) var(--border-active), inset 0 1px 0 var(--surface-highlight)}.button-link--primary:hover{background:var(--color-accent)}a:hover .interaction-arrow,.interactive-surface:hover .interaction-arrow{transform:translate(3px,-2px)}}.button-link:not(:disabled):active,.interactive-surface:active{transform:translateY(1px);box-shadow:inset 0 2px 8px #00000026}@media (prefers-reduced-motion:reduce){.button-link,.interactive-surface,.interaction-arrow{transform:none!important}}.space-background{z-index:-1;pointer-events:none;background:var(--color-background);position:fixed;inset:0;overflow:hidden}.space-background:before{content:"";background:radial-gradient(ellipse at 80% 20%, var(--space-haze), transparent 65%);position:absolute;inset:0}.star-field{width:100%;height:100%;opacity:var(--star-opacity);pointer-events:none;display:block;position:absolute;inset:0}@media (width<=700px){.space-background:before{opacity:.5}}@media print{.space-background{display:none}}@media (prefers-reduced-motion:no-preference){[data-reveal]{transition:opacity var(--motion-reveal-duration) var(--motion-ease) var(--reveal-delay,0s), transform var(--motion-reveal-duration) var(--motion-ease) var(--reveal-delay,0s)}[data-reveal-pending]{opacity:0;transform:translateY(var(--motion-reveal-distance))}[data-reveal=scale][data-reveal-pending]{transform:scale(.985)}[data-reveal=image]{opacity:1;transform:none}[data-reveal] [data-reveal-image]{clip-path:inset(0 0 0 0 round var(--radius-small));transition:clip-path var(--motion-image-duration) var(--motion-ease)}[data-reveal-pending] [data-reveal-image]{clip-path:inset(0 0 100% 0 round var(--radius-small))}[data-reveal] [data-reveal-child]{transition:opacity var(--motion-reveal-duration) var(--motion-ease), transform var(--motion-reveal-duration) var(--motion-ease);transition-delay:calc(var(--child-index,0) * var(--motion-stagger))}[data-reveal-pending] [data-reveal-child]{opacity:0;transform:translateY(8px)}[data-reveal]:focus-within,[data-reveal]:target,[data-reveal]:focus-within [data-reveal-child],[data-reveal]:target [data-reveal-child]{opacity:1;transition:none;transform:none}[data-reveal]:focus-within [data-reveal-image],[data-reveal]:target [data-reveal-image]{clip-path:none;transition:none}}@media (prefers-reduced-motion:reduce),print{[data-reveal],[data-reveal] [data-reveal-child],[data-reveal] [data-reveal-image]{opacity:1!important;clip-path:none!important;transition:none!important;transform:none!important}}.resume-link__icon{object-fit:contain;flex-shrink:0;width:1.375rem;height:1.375rem}.site-header{z-index:20;isolation:isolate;position:sticky;top:0}.site-header:before{content:"";z-index:-1;background:var(--nav-surface);border-bottom:var(--stroke-card) solid var(--color-border);-webkit-backdrop-filter:blur(var(--nav-blur));backdrop-filter:blur(var(--nav-blur));opacity:0;transition:opacity var(--motion-surface-duration) var(--motion-ease);border-radius:0;position:absolute;inset:0}.site-header[data-scrolled]:before{opacity:1}.site-header__inner{min-height:var(--nav-height);grid-template-columns:1fr auto 1fr;grid-template-areas:"brand navigation resume";align-items:center;gap:1.5rem;padding-block:.5rem;display:grid}.site-header__brand{letter-spacing:-.08em;grid-area:brand;justify-self:start;align-items:center;min-height:2.75rem;font-size:1.4rem;font-weight:800;text-decoration:none;display:inline-flex}.site-header__brand span{color:var(--color-accent)}.site-header nav{grid-area:navigation;position:relative}.site-header__resume{grid-area:resume;justify-self:end}.site-nav{align-items:center;gap:clamp(1rem,2.3vw,2rem);margin:0;padding:0;font-size:.9rem;font-weight:750;list-style:none;display:flex}.site-nav a{min-height:2.75rem;color:var(--color-muted);transition:color var(--motion-surface-duration);align-items:center;text-decoration:none;display:inline-flex}.site-nav a:hover,.site-nav a:focus-visible,.site-nav [aria-current]{color:var(--color-text)}.site-nav__indicator{width:var(--indicator-width,0px);height:var(--nav-indicator-thickness);box-shadow:var(--nav-indicator-glow);background:var(--color-accent);pointer-events:none;transform:translate(var(--indicator-x,0px), var(--indicator-y,0px));opacity:0;transition:transform var(--motion-nav-duration) var(--motion-nav-ease), width var(--motion-nav-duration) var(--motion-nav-ease), opacity var(--motion-surface-duration);border-radius:2px;position:absolute;top:0;left:0}nav[data-indicator-visible] .site-nav__indicator{opacity:1}.site-header .button-link{min-height:2.75rem;padding:.3rem 1rem;font-size:.75rem}.site-header .resume-unavailable>.small{font-size:.58rem;line-height:1.4}@media (width<=48rem){.site-header__inner{grid-template-columns:auto 1fr;grid-template-areas:"brand resume""navigation navigation";gap:0 1rem;padding-block:.35rem}.site-header nav{width:100%}.site-nav{justify-content:space-between;gap:.25rem;font-size:clamp(.75rem,2.6vw,.85rem)}.site-header:before{background:var(--nav-surface-mobile);-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}}@media print{.site-header{position:static}.site-nav__indicator{display:none}}.asset-image-crop{width:100%;aspect-ratio:var(--asset-ratio);position:relative;overflow:hidden}.asset-image-crop.asset-image-crop>img{width:var(--asset-width);aspect-ratio:auto;max-width:none;height:auto;left:var(--asset-left);top:var(--asset-top);border-radius:0;position:absolute}.hero{isolation:isolate;min-height:var(--hero-min-height);padding-block:var(--hero-padding);align-items:center;display:flex;position:relative}.hero__content{z-index:2;width:var(--hero-copy-width);position:relative}.hero h1{font-size:var(--text-display);letter-spacing:-.05em;font-weight:750;line-height:1.08}.hero__role{margin:1.25rem 0 .5rem;font-size:clamp(1.1rem,2vw,1.4rem);font-weight:550;line-height:1.5}.hero__university{margin:.5rem 0 0;font-size:1rem}.hero__actions{flex-wrap:wrap;align-items:start;gap:.75rem;margin-top:1.75rem;display:flex}.hero__actions .resume-unavailable>.small{font-size:.7rem}.hero__visual{z-index:1;top:var(--portrait-top);right:var(--portrait-right);width:29%;position:absolute}.hero-portrait{width:100%;max-width:var(--portrait-max-width);aspect-ratio:var(--portrait-aspect-ratio);margin-left:auto}.hero-portrait__mask{width:100%;height:100%;opacity:var(--portrait-opacity);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--portrait-edge-fade), #000 calc(100% - var(--portrait-edge-fade)), transparent), var(--portrait-mask);mask-image:linear-gradient(to right, transparent, #000 var(--portrait-edge-fade), #000 calc(100% - var(--portrait-edge-fade)), transparent), var(--portrait-mask);overflow:hidden;-webkit-mask-composite:source-in;mask-composite:intersect}.hero-portrait__image,.hero-portrait__placeholder{width:100%;height:100%;transform:translate(var(--portrait-offset-x), var(--portrait-offset-y)) scale(var(--portrait-scale))}.hero-portrait__image{object-fit:cover;object-position:var(--portrait-crop-x) var(--portrait-crop-y)}.hero-portrait__placeholder{background:radial-gradient(at 50% 45%,#23374c,#142233 55%,#0000 78%);place-items:center;display:grid}.hero-portrait__label{color:var(--color-muted);text-align:center;padding:1rem;font-size:.8rem}.hero-portrait__label>span{display:block}.hero-portrait__label>:last-child{margin-top:.3rem;font-size:.75rem}.hero-orbits{width:var(--orbit-viewport-width,100%);z-index:0;pointer-events:none;opacity:var(--orbit-opacity);position:absolute;inset:0 auto 0 50%;overflow:clip;transform:translate(-50%);-webkit-mask-image:linear-gradient(90deg,#0000 30%,#000);mask-image:linear-gradient(90deg,#0000 30%,#000)}.hero-orbits svg{width:130vw;max-width:none;height:115%;stroke:var(--color-accent);position:absolute;top:-10%;left:calc(50% - 65vw)}.hero-orbits ellipse{vector-effect:non-scaling-stroke;stroke-width:1px}.hero-orbits__near{transform:translateY(var(--orbit-shift,0px))}.hero-orbits__far{transform:translateY(calc(var(--orbit-shift,0px) * .55))}@media (width<=56rem){.hero{--hero-copy-width:72%}.hero__visual{width:25%;top:4rem}}@media (width<=40rem){.hero{--hero-min-height:auto;--hero-copy-width:100%;padding-block:2.5rem}.hero h1{max-width:12ch;font-size:clamp(2.5rem,10.5vw,3.75rem)}.hero__content{width:100%}.hero__visual{display:none}.hero:has(.hero-portrait__image){flex-direction:column;align-items:stretch}.hero:has(.hero-portrait__image) .hero__visual{align-self:end;width:55%;margin-top:1.5rem;display:block;position:relative;inset:auto}.hero__actions{gap:.65rem}.hero__actions .button-link{padding-inline:.8rem;font-size:.85rem}}@media (prefers-reduced-motion:reduce){.hero-orbits__near,.hero-orbits__far{transform:none}}@media print{.hero-orbits{display:none}.hero{min-height:auto}}.content-image{min-width:0;margin:0;position:relative}.content-image img,.content-image__placeholder{width:100%;aspect-ratio:var(--content-image-ratio,4 / 3);object-fit:cover;object-position:var(--content-image-position,50% 50%);border-radius:var(--radius-card)}.content-image__placeholder{background:var(--color-surface-raised);color:var(--color-muted);text-align:center;border:var(--stroke-divider) dashed var(--border-elevated);place-items:center;padding:2rem;font-size:.9rem;display:grid}.content-image figcaption{color:var(--color-muted);margin-top:.5rem;font-size:.85rem}.content-image--wide{--content-image-ratio:3 / 1}.content-image--wide img,.content-image--wide .content-image__placeholder{border-radius:0}.content-image__overlay{padding:var(--page-gutter);color:var(--color-text);background:linear-gradient(#0000,#080d16d9);align-content:end;display:grid;position:absolute;inset:0}@media (width<=40rem){.content-image--wide{--content-image-ratio:4 / 3}}.content-image--portrait{width:100%;max-width:var(--portrait-max-width);justify-self:center}.about-preview{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:center;gap:clamp(2rem,6vw,5rem);display:grid}.about-preview .content-image{--content-image-ratio:16 / 9}.about-preview__copy p{max-width:44ch;margin-bottom:1rem}.highlights-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;display:grid}.highlight{border-left:var(--stroke-active) solid var(--border-on-light);padding-inline:1.5rem}.highlight:first-child{border-left:0;padding-left:0}.highlight h3{font-size:1.15rem;line-height:1.45}.highlight a{text-underline-offset:.3em;text-decoration-thickness:1px}.highlight p{color:var(--color-muted);font-size:.9rem}.highlight .highlight__amount{color:var(--color-text);font-size:1.1rem;font-weight:750}@media (width<=48rem){.about-preview{gap:2rem}.highlights-grid{gap:1rem}.highlight{padding-inline:1rem 0}}@media (width<=40rem){.about-preview{grid-template-columns:minmax(0,1fr);gap:1.75rem}.about-preview .content-image{--content-image-ratio:2 / 1}.highlights-grid{grid-template-columns:minmax(0,1fr);gap:1.5rem}.highlight,.highlight:first-child{border-left:0;border-bottom:var(--stroke-divider) solid var(--border-on-light);padding:0 0 1.5rem}.highlight:last-child{border-bottom:0;padding-bottom:0}.highlight h3{margin-bottom:.5rem}.highlight p{margin-block:.25rem}}.project-figure{margin:0}.project-figure img{width:100%;height:auto}.project-placeholder{aspect-ratio:3/2;background:var(--color-surface-raised);color:var(--color-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:1.5rem;font-size:.85rem;display:flex}.project-placeholder:before{content:"";border:1px solid var(--color-border-strong);border-radius:3px;width:2rem;height:1.5rem}.project-figure figcaption{color:var(--color-muted);margin-top:.75rem;font-size:.75rem}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;margin:0;padding:0;list-style:none;display:grid}.project-card{border:var(--stroke-card) solid var(--border-default);border-radius:var(--radius-card);background:var(--surface-panel);flex-direction:column;height:100%;display:flex;position:relative}.project-card__body{padding:var(--card-padding);flex-direction:column;flex:1;display:flex}.project-card h2{letter-spacing:-.025em;margin-bottom:1rem;font-size:clamp(1.2rem,1.7vw,1.5rem);line-height:1.3}.project-card p{margin-block:.35rem;font-size:.9rem}.project-card__role{font-weight:600}.project-card .project-card__date{font-size:.8rem}.project-card .project-card__summary{margin-block:1rem 1.5rem}.project-card__action{border-top:var(--stroke-divider) solid var(--border-default);color:var(--color-accent);justify-content:space-between;gap:1rem;margin-top:auto;padding-top:1rem;font-size:.9rem;font-weight:650;display:flex}.project-card__media{border-radius:var(--radius-card) var(--radius-card) 0 0;overflow:hidden}.project-card .project-figure img,.project-card .project-placeholder{aspect-ratio:4/3;object-fit:var(--project-image-fit,cover);object-position:var(--project-image-position,50% 50%);background:var(--project-image-background,transparent);width:100%;transition:transform var(--motion-image-duration) var(--motion-ease)}.project-card figcaption{padding:.5rem 1rem}.project-card:focus-within .project-figure img{transform:scale(var(--project-image-hover-scale,var(--image-hover-scale)))}@media (hover:hover) and (pointer:fine){.project-card:hover .project-figure img{transform:scale(var(--project-image-hover-scale,var(--image-hover-scale)))}}@media (width<=64rem){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=40rem){.project-grid{grid-template-columns:minmax(0,1fr)}.project-card .project-placeholder,.project-card .project-figure img{aspect-ratio:16/9}}@media (prefers-reduced-motion:reduce){.project-card:hover .project-figure img,.project-card:focus-within .project-figure img{transform:none}}.project-card .tag-list{margin-bottom:1.25rem}.project-detail h1{max-width:22ch}.back-link{margin-bottom:1.5rem}.project-meta{flex-wrap:wrap;gap:1.5rem 3rem;margin-block:2rem 3rem;display:flex}.project-meta dt{color:var(--color-muted);font-size:.875rem}.project-meta dd{margin:.25rem 0 0}.project-detail>.project-figure{max-width:min(52rem, var(--project-image-width,52rem))}.project-detail .section:last-child{padding-bottom:0}.project-detail>.project-figure img{border-radius:var(--radius-card)}.project-detail .section{max-width:52rem;padding-block:1.75rem}.project-detail .section h2{margin-bottom:1rem;font-size:clamp(1.4rem,2.5vw,1.8rem)}.project-sources{border-top:var(--stroke-divider) solid var(--border-default);color:var(--color-muted);margin-top:1rem;font-size:.875rem}.project-sources ul{padding-left:1.25rem}.project-sources li+li{margin-top:.75rem}.about-story{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,4rem);display:grid}.about-story h1{margin-bottom:1.5rem}.about-story p{max-width:var(--reading-width)}.about-story .content-image{--content-image-ratio:16 / 10}.cv-columns{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(2rem,5vw,4rem);display:grid}.cv-columns .entry{grid-template-columns:minmax(0,1fr);gap:.25rem;padding-block:1.25rem}.cv-columns .entry:first-child{padding-top:0}.cv-columns .entry:last-child{padding-bottom:0}.cv-columns h3{margin-bottom:.35rem;font-size:1.1rem}.cv-columns .entry p:not(.entry__date){font-size:.95rem}.experience-records .entry__date{margin-top:0}.experience-record__organization,.education-section .entry p{color:var(--color-muted)}.experience-record__detail{margin-top:1rem}.experience-record__detail h4{font-size:1rem}.experience-record__detail ul{padding-left:1.25rem}.cv-sections>.section+.section{border-top:var(--stroke-divider) solid var(--border-default)}.skills-list{margin:0}.skills-list>div{grid-template-columns:minmax(10rem,1fr) minmax(0,3fr);gap:1rem 2rem;padding-block:.8rem;display:grid}.skills-list dt{font-weight:700}.skills-list dd{color:var(--color-muted);margin:0}.recognition-column{align-content:start;gap:2.5rem;display:grid}.independent-work-list{margin-top:2rem}@media (width<=48rem){.cv-columns{grid-template-columns:minmax(0,1fr);gap:3rem}.about-story{gap:2rem}}@media (width<=40rem){.about-story{grid-template-columns:minmax(0,1fr)}.about-story .content-image{--content-image-ratio:2 / 1}.skills-list>div{grid-template-columns:minmax(0,1fr);gap:.25rem}}.about-interests>.section{padding-top:0}.about-biography,.interest-story__prose{color:var(--color-text)}.interest-stories{gap:clamp(2.5rem,5vw,4rem);display:grid}.interest-story{min-width:0}.interest-story+.interest-story{border-top:var(--stroke-divider) solid var(--border-default);padding-top:clamp(2rem,4vw,3rem)}.interest-story h3{margin:0 0 1.25rem;font-size:clamp(1.4rem,2.5vw,1.8rem)}.interest-story__prose{max-width:var(--reading-width);line-height:1.8}.interest-story__prose p{margin:0 0 1.4rem}.interest-story__prose p:last-child{margin-bottom:0}.interest-story .content-image img{aspect-ratio:auto;object-fit:contain;width:100%;height:auto}.interest-story--aside{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start;column-gap:clamp(2rem,5vw,4rem);display:grid}.interest-story--aside h3{grid-area:1/1}.interest-story--aside .content-image{grid-area:1/2/span 2;max-width:26rem}.interest-story--aside .interest-story__prose{grid-area:2/1}.interest-story--wide .content-image{max-width:64rem;margin-block:.5rem 2rem}@media (width<=48rem){.interest-story--aside{display:block}.interest-story--aside .content-image{width:min(100%,20rem);margin:0 auto 1.5rem}}.certification-list .entry{grid-template-columns:minmax(0,1fr) auto;gap:.5rem 1.5rem;padding-block:1rem}.certification-list h3{margin-bottom:.25rem;font-size:1.1rem;line-height:1.45}.certification-list p{max-width:var(--reading-width);font-size:.95rem}.certification-list .entry__date{white-space:nowrap}@media (width<=36rem){.certification-list .entry{grid-template-columns:minmax(0,1fr);gap:.25rem}}.contact-page{max-width:min(52rem, calc(100% - var(--page-gutter) * 2))}.contact-details{border-top:var(--stroke-divider) solid var(--border-elevated);margin-top:2.5rem;padding-top:2rem}.contact-details h2{margin-bottom:1rem;font-size:1.4rem}.contact-email{margin-top:1rem;font-size:clamp(1rem,3vw,1.25rem)}.contact-links{flex-wrap:wrap;gap:1.5rem;margin-top:1.5rem;display:flex}
