:root{--paper:#f4f0e5;--paper-strong:#fbf7ed;--ink:#20211d;--muted:#62645c;--forest:#173d2e;--forest-field:#37433e;--forest-soft:#dce2d2;--orange:#df4f0d;--success:#4d8a47;--line:#aaa99d;--surface:#fffcf4ad;--tooltip:#20211d;--tooltip-text:#fffaf0;--shadow:0 10px 24px #26231914;--header-height:60px;--content-width:1440px;--font-display:"Libre Franklin", ui-sans-serif, system-ui, sans-serif;--font-serif:"Newsreader", Georgia, serif;--font-mono:"DM Mono", ui-monospace, monospace;--font-type:"Special Elite", "Courier New", monospace;--font-hand:"Caveat", cursive}[data-theme=dark]{--paper:#101914;--paper-strong:#16231b;--ink:#f3eddf;--muted:#bbc1b5;--forest:#b8d399;--forest-field:#37433e;--forest-soft:#263a2e;--orange:#ff7434;--success:#9fca80;--line:#4f5b52;--surface:#1a271ec7;--tooltip:#f4efe3;--tooltip-text:#17251d;--shadow:0 14px 30px #00000042}*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:var(--header-height)}body{min-width:320px;color:var(--ink);background:var(--paper);font-family:var(--font-display);margin:0;font-size:15px;line-height:1.55;transition:color .22s,background-color .22s}body.menu-open{overflow:hidden}button,a{color:inherit;font:inherit}a{text-underline-offset:.2em}img{max-width:100%;display:block}svg{stroke-width:1.55px;width:1.15rem;height:1.15rem}:focus-visible{outline:3px solid var(--orange);outline-offset:3px}.skip-link{z-index:999;color:var(--paper-strong);background:var(--ink);padding:.65rem .9rem;position:fixed;top:-5rem;left:1rem}.skip-link:focus{top:1rem}.app-shell{overflow:clip}.site-header{z-index:100;min-height:var(--header-height);color:#f7f2e7;background:#37433e;border-bottom:1px solid #ffffff29;grid-template-columns:auto 1fr auto;align-items:center;gap:1.5rem;padding:0 clamp(1.1rem,3.4vw,3rem);display:grid;position:sticky;top:0}[data-theme=dark] .site-header{background:#37433e}.brand,.footer-brand{text-decoration:none}.brand-lockup{white-space:nowrap;align-items:center;gap:.75rem;display:inline-flex}.brand-mark{aspect-ratio:1;color:#f7f2e7;border:1px solid;place-items:center;width:2.15rem;display:inline-grid}.brand-mark svg{stroke-width:1.45px;width:1.3rem;height:1.3rem}.brand-copy{font-family:var(--font-mono);text-transform:uppercase;gap:.08rem;display:grid}.brand-copy strong{letter-spacing:.11em;font-size:.76rem;font-weight:500}.brand-copy small{font-family:var(--font-type);letter-spacing:.06em;opacity:.78;font-size:.5rem}.primary-nav{justify-content:center;gap:clamp(1rem,2.2vw,2rem);display:flex}.primary-nav a{font-family:var(--font-serif);padding:1.15rem 0;font-size:.9rem;text-decoration:none;position:relative}.primary-nav a:after{content:"";background:var(--orange);transform-origin:0;height:3px;transition:transform .18s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.primary-nav a:hover:after,.primary-nav a.active:after{transform:scaleX(1)}.header-tools{align-items:center;gap:.55rem;display:flex}.language-switch{border:1px solid #ffffff70;display:flex}.language-switch button{min-width:2.2rem;min-height:2.05rem;color:inherit;font-family:var(--font-mono);cursor:pointer;background:0 0;border:0;padding:0 .42rem;font-size:.63rem}.language-switch button+button{border-left:1px solid #ffffff4d}.language-switch button.active{color:#37433e;background:#f7f2e7}.icon-button{color:inherit;cursor:pointer;background:0 0;border:1px solid;place-items:center;display:inline-grid;position:relative}.theme-switch{border:0;grid-template-columns:repeat(2,2.05rem);width:auto;height:2.1rem}.theme-option{opacity:.72;place-items:center;width:2.05rem;height:2.05rem;display:inline-grid}.theme-option.active{opacity:1;border:1px solid}.mobile-menu-button{display:none}.tooltip-anchor{position:relative}.tooltip{z-index:300;width:max-content;max-width:12rem;color:var(--tooltip-text);background:var(--tooltip);font-family:var(--font-mono);opacity:0;pointer-events:none;padding:.4rem .55rem;font-size:.6rem;line-height:1.3;transition:opacity .16s,transform .16s;position:absolute;top:calc(100% + .55rem);left:50%;transform:translate(-50%,-.2rem)}.tooltip-anchor:hover .tooltip,.tooltip-anchor:focus .tooltip,.tooltip-anchor:focus-visible .tooltip{opacity:1;transform:translate(-50%)}.header-tools .tooltip{left:auto;right:0;transform:translateY(-.2rem)}.header-tools .tooltip-anchor:hover .tooltip,.header-tools .tooltip-anchor:focus-visible .tooltip{transform:translate(0)}main,.site-footer{width:min(100%, var(--content-width));margin-inline:auto}.hero,.content-section{border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-left:1px solid var(--line)}.hero{grid-template-columns:minmax(0,59%) minmax(360px,41%);min-height:clamp(520px,52vw,650px);display:grid;position:relative}.hero-intro-line{grid-template-columns:4.4rem auto minmax(4rem,1fr);align-items:center;gap:.85rem;min-height:4.7rem;display:grid}.hero-section-mark,.section-marker,.resume-number{font-family:var(--font-hand);font-weight:500;line-height:.8}.hero-section-mark{font-size:4.2rem;transform:rotate(-3deg)}.hero-kicker,.section-label,.project-type,.project-status{color:var(--orange);font-family:var(--font-type);letter-spacing:.045em;text-transform:uppercase;margin:0;font-size:.68rem}.hero-rule{background:var(--line);height:1px}.hero-title-mask{display:block;overflow:hidden}.hero h1{max-width:9ch;font-family:var(--font-display);letter-spacing:-.072em;margin:.7rem 0 0;font-size:clamp(3.75rem,6.1vw,5.9rem);font-weight:800;line-height:.89}.hero-title-line{display:block}.hero-role{color:var(--forest);font-family:var(--font-type);margin:1.35rem 0 .6rem;font-size:clamp(1.15rem,1.9vw,1.62rem);font-weight:400;line-height:1.25}.hero-summary{max-width:39rem;color:var(--muted);margin:0;font-size:.91rem;line-height:1.55}.hero-actions,.resume-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.45rem;display:flex}.button{border:1px solid var(--ink);min-height:2.75rem;font-family:var(--font-serif);justify-content:center;align-items:center;gap:.55rem;padding:.68rem 1.05rem;font-size:.9rem;text-decoration:none;transition:transform .18s,background-color .18s,color .18s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button.primary{color:#fffaf0;background:var(--orange);border-color:var(--orange)}.button.secondary{background:0 0}.hero-ledger{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));margin-top:1.55rem;display:grid}.hero-ledger>div{grid-template-columns:auto 1fr;align-content:center;column-gap:.65rem;min-width:0;padding:.78rem .9rem;display:grid}.hero-ledger>div+div{border-left:1px solid var(--line)}.hero-ledger svg{color:var(--forest);grid-row:span 2}.hero-ledger strong{font-family:var(--font-type);font-size:.72rem;font-weight:400}.hero-ledger span{color:var(--muted);font-family:var(--font-serif);font-size:.72rem}.hero-annotation{z-index:3;color:var(--muted);font-family:var(--font-hand);grid-template-columns:auto auto;align-items:end;gap:.2rem;font-size:1rem;line-height:1.05;display:grid;position:absolute;top:6.6rem;left:46.7%;transform:rotate(-5deg)}.hero-annotation svg{width:2rem;height:2rem}.portrait-column{color:#f7f3e8;background:var(--forest-field);grid-template-rows:minmax(0,1fr) auto;align-items:end;min-width:0;padding:2.25rem 2rem 0;display:grid;overflow:hidden}.portrait-frame{background:var(--forest-field);clip-path:polygon(1% 0,99% 1%,100% 99%,0 100%);width:min(100%,31rem);height:clamp(420px,43vw,515px);min-height:0;margin:0 auto;overflow:hidden}.portrait-frame img{object-fit:cover;object-position:50% 24%;filter:brightness(1.34)saturate(.78)contrast(.96);mix-blend-mode:multiply;width:100%;height:100%}.profile-caption{text-align:center;width:min(100%,34rem);margin:0 auto;padding:.8rem 0 1.1rem}.profile-caption>p{font-family:var(--font-serif);margin:0 0 .35rem;font-size:.82rem}.profile-interests{font-family:var(--font-mono);text-transform:uppercase;flex-wrap:wrap;justify-content:center;gap:.2rem .75rem;font-size:.55rem;display:flex}.profile-interests span+span:before{content:"·";margin-right:.75rem}.section-heading{grid-template-columns:5.7rem minmax(0,1fr) minmax(15rem,.78fr);align-items:start;gap:1.6rem;margin-bottom:2.2rem;display:grid}.section-marker,.resume-number{font-size:clamp(3.7rem,5.8vw,5.3rem);transform:rotate(-3deg)}.section-heading h2,.resume-section h2{max-width:19ch;font-family:var(--font-serif);margin:.3rem 0 0;font-size:clamp(1.85rem,3vw,2.8rem);font-weight:600;line-height:.98}.section-intro{max-width:34rem;color:var(--muted);margin:1.4rem 0 0;font-size:.82rem;line-height:1.5}.about-grid{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;gap:clamp(2.2rem,5.4vw,5rem);display:grid}.numbered-note{border-bottom:1px solid var(--line);grid-template-columns:2.6rem 1fr;gap:.9rem;padding:.7rem 0;display:grid}.numbered-note span{height:1.75rem;color:var(--forest);background:var(--forest-soft);font-family:var(--font-type);place-items:center;font-size:.68rem;display:grid}.numbered-note p{color:var(--muted);font-family:var(--font-serif);margin:0;font-size:.8rem;line-height:1.45}.facts-panel{border:1px solid var(--line);background:var(--surface);box-shadow:none;padding:1.35rem 1.55rem}.fact{grid-template-columns:1.7rem 6.2rem 1fr;align-items:start;gap:.65rem;padding:.65rem 0;display:grid}.fact svg{color:var(--forest)}.fact span{font-family:var(--font-type);text-transform:uppercase;font-size:.6rem}.fact strong{font-family:var(--font-serif);font-size:.82rem;font-weight:500;line-height:1.3}.skills-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.skill-note{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface);min-height:0;padding:1rem 1rem 1.05rem;position:relative}.skill-index{display:none}.skill-note h3{border-left:3px solid var(--forest);max-width:25ch;font-family:var(--font-serif);margin:0 0 .7rem;padding-left:.72rem;font-size:.91rem;font-weight:600;line-height:1.05}.skill-note ul,.feature-list{margin:0;padding-left:1rem}.skill-note li{color:var(--muted);font-family:var(--font-serif);margin:.15rem 0;font-size:.68rem;line-height:1.25}.projects-section{grid-template-columns:minmax(180px,.78fr) minmax(0,3.22fr);align-items:start;gap:clamp(1.6rem,3vw,2.8rem);display:grid}.projects-section .section-heading{margin:0;display:block}.projects-section .section-marker{margin-bottom:.65rem}.projects-section .section-heading h2{font-size:clamp(1.65rem,2.45vw,2.3rem)}.projects-section .section-intro{margin-top:1.15rem;font-size:.72rem}.projects-grid{grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:1fr;align-items:stretch;gap:.62rem;min-width:0;display:grid}.project-report{border:1px solid var(--line);background:var(--surface);min-width:0;height:100%;box-shadow:var(--shadow);grid-template-rows:auto 1fr;display:grid}.project-image-frame{aspect-ratio:1.05/.78;background:var(--forest-soft);position:relative;overflow:hidden}.project-report:hover .project-image-frame img{transform:scale(1.025)}.project-index{z-index:2;color:#fffaf0;font-family:var(--font-type);background:#37433e;padding:.28rem .38rem;font-size:.63rem;position:absolute;top:0;left:0}.project-copy{grid-template-rows:auto auto minmax(0,1fr) auto auto;align-content:start;min-height:0;padding:.72rem;display:grid}.project-type{min-height:2.2em;font-size:.59rem;line-height:1.3}.project-copy h3{min-height:3.1em;font-family:var(--font-serif);margin:.38rem 0 .55rem;font-size:clamp(.88rem,1.15vw,1.05rem);font-weight:600;line-height:.98}.project-copy>p:not(.project-type,.project-status){color:var(--muted);font-family:var(--font-serif);margin:0;font-size:.66rem;line-height:1.42}.project-status{color:var(--success);margin:.75rem 0 .2rem;font-size:.58rem;line-height:1.35}.project-copy details{border-top:1px solid var(--line);margin-top:.35rem}.project-copy summary{font-family:var(--font-type);cursor:pointer;padding:.55rem 0 .15rem;font-size:.61rem}.feature-list{padding-top:.45rem}.feature-list li{color:var(--muted);margin:.22rem 0;font-size:.64rem}.skill-list{flex-wrap:wrap;gap:.3rem .55rem;margin-top:.6rem;display:flex}.skill-list span{font-family:var(--font-mono);font-size:.55rem}.skill-list span+span:before{content:"·";color:var(--orange);margin-right:.55rem}.resume-section{width:calc(min(100%, var(--content-width)) - 2rem);border:1px solid var(--line);background:var(--paper-strong);box-shadow:var(--shadow);grid-template-columns:4.6rem 1.15fr .95fr auto;align-items:center;gap:1.5rem;margin:1rem auto;padding:1.4rem 3rem;display:grid;position:relative}.resume-section h2{font-size:clamp(1.55rem,2.35vw,2.15rem)}.resume-section>p{color:var(--muted);font-family:var(--font-serif);margin:0;font-size:.74rem}.resume-actions{flex-wrap:nowrap;margin:0}.resume-actions .button{min-height:2.45rem;font-size:.75rem}.resume-grip{color:#8f8b78;width:1.25rem;height:3.2rem;position:absolute;top:50%;transform:translateY(-50%)}.resume-grip-left{left:.45rem}.resume-grip-right{right:.45rem}.contact-section{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:3rem;display:grid}.contact-section .section-heading{grid-template-columns:4.7rem 1fr;gap:1.2rem;margin:0}.contact-section .section-heading h2{font-size:clamp(1.6rem,2.7vw,2.45rem)}.contact-section .section-intro{grid-column:2;margin-top:1.3rem}.contact-list{align-content:center;display:grid}.contact-list>a{border-bottom:1px solid var(--line);font-family:var(--font-type);grid-template-columns:1.9rem 1fr;align-items:center;gap:.8rem;padding:.75rem 0;font-size:clamp(.7rem,1vw,.85rem);text-decoration:none;display:grid}.contact-icon{aspect-ratio:1;width:1.8rem;color:var(--forest);place-items:center;display:inline-grid}.contact-icon .tooltip{inset:auto calc(100% + .45rem) 0 auto;transform:translate(.2rem)}.contact-icon:hover .tooltip,.contact-list a:focus-visible .tooltip{opacity:1;transform:translate(0)}.site-footer{color:#f7f3e8;font-family:var(--font-serif);background:#37433e;grid-template-columns:1.25fr .62fr 1fr 1fr .85fr;gap:0;padding:2rem clamp(1.5rem,4.5vw,4rem) .8rem;display:grid;position:relative}[data-theme=dark] .site-footer{background:#37433e}.footer-intro,.footer-column,.footer-note{min-width:0;padding:0 1.25rem}.footer-column,.footer-note{border-left:1px solid #ffffff3d}.brand-lockup.compact .brand-mark{width:2.35rem}.brand-lockup.compact .brand-copy strong{font-size:.72rem}.brand-lockup.compact .brand-copy small{font-size:.48rem}.footer-intro>p{opacity:.82;max-width:15rem;margin:1rem 0 0;font-size:.68rem;line-height:1.45}.site-footer h2{font-family:var(--font-type);text-transform:uppercase;margin:0 0 .75rem;font-size:.65rem;font-weight:400}.footer-column{flex-direction:column;align-items:flex-start;display:flex}.footer-column>a{opacity:.88;margin:.12rem 0;font-size:.62rem;line-height:1.2;text-decoration:none}.footer-column>a:hover{color:#ffd4bd;opacity:1}.footer-projects>a{max-width:16rem}.footer-connect>a{font-family:var(--font-mono);align-items:center;gap:.45rem;font-size:.56rem;display:inline-flex}.footer-connect svg{width:.8rem;height:.8rem}.footer-socials{gap:.45rem;margin-top:.7rem;display:flex}.footer-socials a{aspect-ratio:1;border:1px solid #ffffff61;place-items:center;width:1.65rem;display:inline-grid}.footer-note p{font-family:var(--font-hand);margin:0;font-size:1.2rem;line-height:1.05;transform:rotate(-3deg)}.footer-note p:after{content:"";background:var(--orange);width:4.5rem;height:3px;margin-top:.4rem;display:block;transform:rotate(-4deg)}.footer-copyright{font-family:var(--font-mono);text-align:center;opacity:.72;border-top:1px solid #ffffff2e;grid-column:1/-1;margin:1.25rem 0 0;padding-top:.65rem;font-size:.52rem}.scroll-top{z-index:80;color:#fffaf0;background:var(--orange);border-color:var(--orange);width:2.65rem;height:2.65rem;box-shadow:var(--shadow);position:fixed;bottom:1.15rem;right:1.15rem}.scroll-top .tooltip{left:auto;right:0;transform:translateY(-.2rem)}.scroll-top:hover .tooltip,.scroll-top:focus-visible .tooltip{transform:translate(0)}@media (width<=1120px){.site-header{gap:1rem}.primary-nav{gap:1.05rem}.hero{grid-template-columns:minmax(0,57%) minmax(330px,43%)}.hero-annotation{display:none}.hero-copy{padding-inline:2.6rem}.project-copy{padding:.62rem}}@media (width<=1040px){:root{--header-height:62px}.brand-copy small{display:none}.mobile-menu-button{width:2.25rem;height:2.25rem;color:inherit;background:0 0;border:1px solid #ffffff73;place-items:center;display:inline-grid}.site-header{grid-template-columns:1fr auto auto}.primary-nav{inset:var(--header-height) 0 auto 0;color:#f7f3e8;background:#37433e;border-top:1px solid #ffffff26;justify-content:stretch;padding:1.6rem 2rem;transition:transform .24s;display:grid;position:fixed;transform:translateY(-125%)}[data-theme=dark] .primary-nav{background:#37433e}.primary-nav.open{transform:translateY(0)}.primary-nav a{padding:.65rem 0;font-size:1rem}.hero{grid-template-columns:minmax(0,58%) minmax(300px,42%);min-height:560px}.section-heading{grid-template-columns:4.8rem 1fr}.section-intro{grid-column:2;margin-top:0}.projects-section{display:block}.projects-section .section-heading{margin-bottom:2rem;display:grid}.projects-section .section-intro{margin-top:0}.projects-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.resume-section{grid-template-columns:4.4rem 1fr 1fr}.resume-actions{grid-column:2/-1}.site-footer{grid-template-columns:1fr 1fr 1fr;row-gap:1.6rem}.footer-note{border-left:0}.footer-copyright{grid-column:1/-1}}@media (width<=900px){.site-header{padding-inline:.8rem}.brand-copy{display:none}.header-tools{gap:.35rem}.language-switch button{min-width:2rem;padding-inline:.3rem}.theme-switch{grid-template-columns:repeat(2,1.85rem)}.theme-option{width:1.85rem}.hero{grid-template-columns:1fr;min-height:0}.hero-copy{padding:2.5rem 1.4rem 2rem}.hero-intro-line{grid-template-columns:3.9rem auto 1fr}.hero-section-mark{font-size:3.7rem}.hero h1{font-size:clamp(3.2rem,14.5vw,5rem)}.hero-ledger{grid-template-columns:1fr}.hero-ledger>div+div{border-top:1px solid var(--line);border-left:0}.portrait-column{min-height:34rem;padding:1.5rem 1.4rem 0}.portrait-frame{min-height:28rem}.content-section{padding:3rem 1.25rem}.section-heading{grid-template-columns:4rem 1fr;gap:1rem}.section-intro{grid-column:1/-1;margin-top:.7rem}.section-marker{font-size:3.9rem}.about-grid{grid-template-columns:1fr;gap:2rem}.facts-panel{padding:1rem}.skills-grid,.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.resume-section{grid-template-columns:1fr;gap:.8rem;width:calc(100% - 1rem);padding:1.5rem 2.1rem}.resume-number{font-size:3.8rem}.resume-actions{flex-wrap:wrap;grid-column:1}.contact-section{grid-template-columns:1fr;gap:1.5rem}.contact-section .section-heading{grid-template-columns:4rem 1fr}.contact-list>a{overflow-wrap:anywhere}.site-footer{grid-template-columns:1fr 1fr}.footer-intro,.footer-column,.footer-note{padding:0 1rem}.footer-intro{padding-left:0}.footer-projects{border-left:0}}@media (width<=520px){.site-header{gap:.5rem}.theme-switch{grid-template-columns:2.05rem;width:2.05rem;overflow:hidden}.theme-option{display:none}.theme-option.active{display:inline-grid}.hero-role{font-size:1.08rem}.hero-actions{flex-direction:column;align-items:stretch}.hero-actions .button{width:100%}.portrait-column{min-height:30rem}.portrait-frame{min-height:24rem}.skills-grid,.projects-grid{grid-template-columns:1fr}.project-copy h3{min-height:0}.resume-actions{flex-direction:column}.resume-actions .button{width:100%}.site-footer{grid-template-columns:1fr;gap:1.2rem}.footer-intro,.footer-column,.footer-note{border-left:0;padding:0}.footer-column,.footer-note{border-top:1px solid #fff3;padding-top:1rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--paper:#f3efe4;--paper-strong:#f8f4e9;--ink:#20211f;--muted:#575a53;--forest:#102b20;--forest-field:#37433e;--resume-card:#eee6d7;--forest-soft:#e1e4d4;--orange:#e04c0b;--success:#508b43;--line:#b7b4a6;--surface:#faf7ed85;--header-height:58px}[data-theme=dark]{--paper:#101813;--paper-strong:#162019;--ink:#f0eadc;--muted:#bcc0b5;--forest:#b7d19d;--forest-field:#37433e;--resume-card:#252d29;--forest-soft:#25362b;--line:#536057;--surface:#162019c2}body{background-color:var(--paper)}body.lightbox-open{overflow:hidden}.site-header,.site-footer,[data-theme=dark] .site-header,[data-theme=dark] .site-footer{background:#37433e}.site-header{padding-inline:clamp(1rem,2.2vw,2rem)}.brand-mark{font-family:var(--font-type)}.primary-nav{gap:clamp(1.25rem,2.35vw,2.35rem)}.primary-nav a{padding-block:1.05rem;font-size:.82rem}.language-switch button.active{color:#37433e}.hero{grid-template-columns:minmax(0,59%) minmax(350px,41%);min-height:clamp(535px,49vw,620px)}.hero-copy{padding:clamp(1.8rem,3.25vw,2.9rem) clamp(1.8rem,4.1vw,3.8rem) 1.35rem}.hero-intro-line{min-height:4rem}.hero-section-mark{font-size:3.9rem}.hero h1{max-width:9.2ch;margin-top:.45rem;font-size:clamp(3.75rem,5.55vw,5.3rem);line-height:.88}.hero-role{margin-top:1rem;font-size:clamp(1rem,1.45vw,1.28rem)}.hero-summary{max-width:35rem;font-family:var(--font-serif)}.hero-actions{margin-top:1.1rem}.button{min-height:2.5rem;padding:.58rem 1rem;font-size:.79rem}.hero-ledger{background:#fffcf440;margin-top:1.35rem}.hero-ledger>div{padding:.68rem .85rem}.hero-ledger svg{display:none}.hero-ledger strong,.hero-ledger span{text-align:center}.hero-annotation{top:8.4rem;left:46.5%}.portrait-column{color:var(--ink);background:0 0;align-items:flex-end;padding:3rem 2.8rem 0;display:flex;position:relative;overflow:visible}[data-theme=dark] .portrait-column{background:0 0}.portrait-frame{background:var(--forest-field);clip-path:none;width:100%;height:calc(100% - .2rem);min-height:0;margin:0 auto;position:relative;overflow:visible}.portrait-frame img{object-fit:contain;object-position:center bottom;filter:none;mix-blend-mode:normal;width:100%;height:100%;position:absolute;inset:0}[data-theme=dark] .portrait-frame img{opacity:1;mix-blend-mode:normal}.portrait-corner{z-index:3;color:var(--line);font-family:var(--font-mono);font-size:1.65rem;font-weight:200;line-height:1;position:absolute}.corner-top-left{top:-.7rem;left:-1.35rem}.corner-top-right{top:-.7rem;right:-1.35rem}.corner-bottom-left{bottom:-.7rem;left:-1.35rem}.corner-bottom-right{bottom:-.7rem;right:-1.35rem}.profile-caption{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.content-section{padding:clamp(2.25rem,4vw,3.7rem) clamp(1.5rem,4.5vw,4rem)}.section-heading{grid-template-columns:5.3rem minmax(0,1fr) minmax(15rem,.8fr);gap:1.35rem;margin-bottom:1.75rem}.section-marker,.resume-number{font-size:clamp(3.35rem,5vw,4.8rem)}.section-heading h2,.resume-section h2{font-size:clamp(1.65rem,2.55vw,2.35rem)}.section-intro{font-family:var(--font-serif);margin-top:1rem}#about .section-heading{margin-bottom:1rem}#about .section-intro{grid-column:2;margin-top:-.2rem}.about-grid{grid-template-columns:minmax(0,1.55fr) minmax(310px,.75fr);gap:1.8rem}.about-notes{border-right:1px solid var(--line);padding-right:clamp(1.5rem,3.5vw,3rem)}.numbered-note{grid-template-columns:2.3rem 1fr;gap:.75rem;padding:.48rem 0}.numbered-note span{height:1.45rem;font-size:.62rem}.numbered-note p{font-size:.7rem;line-height:1.36}.facts-panel{background:0 0;padding:1.25rem 1.2rem 1rem;position:relative}.facts-tape{z-index:2;opacity:.92;pointer-events:none;width:5.2rem;position:absolute;top:-1rem;right:1.3rem;transform:rotate(4deg)}.fact{grid-template-columns:1.4rem 5.2rem 1fr;gap:.5rem;padding:.46rem 0}.fact+.fact{border-top:0}.fact span{font-size:.55rem}.fact strong{font-size:.72rem}.skills-grid{background:0 0}.skill-note{background:0 0;padding:.85rem .95rem .9rem}.skill-note h3{border-left-width:3px;margin-bottom:.5rem;font-size:.8rem}.skill-note li{margin:.1rem 0;font-size:.61rem}.projects-section{grid-template-columns:minmax(170px,.7fr) minmax(0,3.3fr);gap:clamp(1.3rem,2.5vw,2.25rem)}.projects-intro .section-heading{margin:0}.projects-intro .section-heading h2{max-width:10ch;font-size:clamp(1.5rem,2.2vw,2.05rem)}.projects-intro .section-intro{margin-top:.9rem;font-size:.65rem}.explore-projects{border:0;border-bottom:1px solid var(--orange);color:var(--orange);font-family:var(--font-serif);cursor:pointer;background:0 0;align-items:center;gap:.3rem;margin:1rem 0 0;padding:0 0 .12rem;font-size:.72rem;display:inline-flex}.explore-projects svg{width:.8rem;height:.8rem}.projects-grid{grid-auto-rows:auto;align-items:start;gap:.55rem}.project-report{height:auto;box-shadow:none;align-self:start}.project-image-frame{aspect-ratio:1.05/.78;border:0;border-bottom:1px solid var(--line);background:var(--forest-soft);cursor:zoom-in;width:100%;padding:0;position:relative;overflow:hidden}.project-image-frame img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.project-zoom{color:#fff;opacity:0;background:#0c241ad1;place-items:center;width:1.35rem;height:1.35rem;transition:opacity .18s;display:grid;position:absolute;bottom:.35rem;right:.35rem}.project-zoom svg{width:.8rem;height:.8rem}.project-image-frame:hover .project-zoom,.project-image-frame:focus-visible .project-zoom{opacity:1}.project-index{background:#37433e}.project-copy{flex-direction:column;padding:.6rem;display:flex}.project-type{height:3.9em;min-height:0;font-size:.5rem;overflow:hidden}.project-copy h3{height:3em;min-height:0;margin:.34rem 0 .42rem;font-size:clamp(.76rem,1vw,.91rem);overflow:hidden}.project-status{margin:auto 0 .22rem;font-size:.49rem}.project-copy details{margin-top:.22rem}.project-copy summary{padding:.38rem 0 .08rem;font-size:.52rem}.project-description{color:var(--muted);font-family:var(--font-serif);margin:.45rem 0;font-size:.6rem;line-height:1.38}.feature-list li{font-size:.57rem}.skill-list span{font-size:.49rem}.resume-section{background:var(--resume-card);border-color:#aaa293;grid-template-columns:clamp(5.25rem,7vw,6.5rem) minmax(15rem,.85fr) minmax(20rem,1.4fr) auto;gap:.75rem;min-height:7.5rem;margin-block:.75rem;padding:1rem 2.8rem;box-shadow:0 3px 8px #2f2b2321}.resume-section h2{max-width:25ch;font-size:clamp(1.25rem,1.75vw,1.65rem);line-height:1}.resume-section .section-label{margin-bottom:.22rem}.resume-heading h2{border-bottom:2px solid #37433ea6;padding-bottom:.5rem;display:inline-block}.resume-section>p{font-size:.65rem}.resume-actions .button{min-height:2.15rem;padding:.48rem .75rem;font-size:.65rem}.resume-number{place-self:center start;min-width:max-content;padding-right:.35rem}.resume-heading{min-width:0}.resume-dots{color:#9d927c;align-content:center;gap:clamp(.26rem,.55vw,.38rem);display:grid;position:absolute;inset-block-start:50%;transform:translateY(-50%)}.resume-dots-left{left:.85rem}.resume-dots-right{right:.85rem}.resume-dots svg{fill:currentColor;stroke:none;width:clamp(.8rem,1.4vw,1rem);height:clamp(.8rem,1.4vw,1rem)}.contact-section{gap:2rem;padding-top:1.6rem;padding-bottom:1.7rem}.contact-list{align-content:center}.contact-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 2rem;align-items:center;display:grid}.contact-row>a{font-family:var(--font-type);grid-template-columns:1.55rem 1fr;align-items:center;gap:.6rem;padding:.48rem 0;font-size:clamp(.64rem,.9vw,.77rem);text-decoration:none;display:grid}.contact-row .copy-button{width:1.7rem;height:1.7rem;color:var(--muted);border:0}.contact-row .copy-button svg{width:.85rem;height:.85rem}.contact-row .copy-button .tooltip{left:auto;right:0;transform:translateY(-.2rem)}.contact-row .copy-button:hover .tooltip,.contact-row .copy-button:focus-visible .tooltip{transform:translate(0)}.site-footer{grid-template-columns:1.2fr .62fr 1.05fr .95fr .82fr;padding-top:1.55rem}.footer-intro,.footer-column,.footer-note{padding-inline:1rem}.footer-intro{padding-left:0}.footer-intro>p{margin-top:.75rem;font-size:.58rem}.site-footer h2{margin-bottom:.55rem;font-size:.57rem}.footer-column>a{font-size:.54rem}.footer-connect>a{font-size:.5rem}.footer-note p{font-size:1.05rem}.footer-copyright{margin-top:.9rem}.footer-socials a{border:0;width:1.25rem}.scroll-top{color:#908e8e;background:color-mix(in srgb, var(--paper) 12%, transparent);box-shadow:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border:1px solid #908e8e;border-radius:50%}.lightbox{z-index:500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#050c08db;place-items:center;padding:clamp(1rem,4vw,3rem);display:grid;position:fixed;inset:0}.lightbox-panel{background:var(--paper-strong);border:1px solid var(--line);gap:.65rem;width:min(1120px,100%);max-height:calc(100vh - 2rem);padding:1rem;display:grid;position:relative;box-shadow:0 24px 80px #0006}.lightbox-panel img{object-fit:contain;width:100%;max-height:calc(100vh - 7rem)}.lightbox-panel p{font-family:var(--font-serif);text-align:center;margin:0;font-size:.9rem}.lightbox-close{z-index:2;color:#fff;background:#37433e;width:2.4rem;height:2.4rem;position:absolute;top:.5rem;right:.5rem}.lightbox-close .tooltip{left:auto;right:0;transform:translateY(-.2rem)}.lightbox-close:hover .tooltip,.lightbox-close:focus-visible .tooltip{transform:translate(0)}@media (width<=1120px) and (width>=901px){.hero-annotation{display:grid}}@media (width<=1040px){.primary-nav{background:#37433e}.projects-section{display:block}.projects-intro{margin-bottom:1.5rem}.resume-section{grid-template-columns:4.75rem minmax(14rem,1fr) minmax(13rem,1fr) auto}}@media (width<=900px){.hero{grid-template-columns:1fr}.portrait-column{min-height:31rem;padding:2.5rem 2rem 0}.portrait-frame{height:30rem}.section-heading{grid-template-columns:4rem 1fr;gap:1rem}.section-intro{grid-column:1/-1;margin-top:.7rem}#about .section-intro{grid-column:1/-1;margin-top:.5rem}.about-grid{grid-template-columns:1fr;gap:2rem}.about-notes{border-right:0;padding-right:0}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.resume-section{grid-template-columns:1fr;gap:.7rem;min-height:0}.resume-section h2{max-width:24ch}.contact-row>a{overflow-wrap:anywhere}.site-footer{grid-template-columns:1fr 1fr}.footer-intro,.footer-column,.footer-note{padding:0 1rem}.footer-intro{padding-left:0}.footer-projects{border-left:0}}@media (width<=520px){.portrait-column{min-height:27rem;padding:2rem 1.2rem 0}.portrait-frame{height:26rem}.skills-grid,.projects-grid{grid-template-columns:1fr}.project-type,.project-copy h3{height:auto;min-height:0;overflow:visible}.site-footer{grid-template-columns:1fr;gap:1.2rem}.footer-intro,.footer-column,.footer-note{border-left:0;padding:0}.footer-column,.footer-note{border-top:1px solid #fff3;padding-top:1rem}.lightbox{padding:.6rem}.lightbox-panel{padding:.55rem}}
