@import url('https://fonts.googleapis.com/css2?family=Paytone+One&family=Geist+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{font-size:14px;--accent:#094a1d;--paper:#faf8f3;--line:color-mix(in srgb,var(--accent) 24%,transparent);--blue:#176de0;--orange:#ff8c3d;--green:#165c46;font-family:'DM Sans',Arial,sans-serif;color:var(--accent);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0}a{color:inherit;text-decoration:none}a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:6px}a:hover{text-decoration:underline;text-underline-offset:5px}::selection{color:var(--paper);background:var(--accent)}.site-header,main,footer{max-width:1800px;margin:auto;padding-inline:4.1vw}.wordmark{font-family:'Paytone One','Arial Narrow',Impact,sans-serif;font-size:clamp(40px,14.6vw,262px);font-weight:400;line-height:.86;letter-spacing:-.025em;white-space:nowrap;margin:24px 0 42px;display:block;transform:scaleX(1.045);transform-origin:left}.site-header{overflow:hidden;padding-top:6px}.header-line{display:flex;justify-content:space-between;gap:24px;font-size:14px;align-items:center;padding-bottom:22px;border-bottom:1px solid var(--line)}nav{display:flex;gap:30px;font-weight:700}.hero{position:relative;min-height:530px;display:grid;grid-template-columns:1fr 1.18fr;align-items:center;padding-block:66px 100px}.hero-note{display:flex;align-items:center;gap:18px;font-size:14px;line-height:1.6}.spark{font-size:92px;line-height:1}.eyebrow{font:14px/1.6 'Geist Mono',monospace;letter-spacing:.08em}.hero-copy .eyebrow{margin-bottom:26px}h2,h3,p{margin-top:0}.hero h2{font-size:clamp(35px,4vw,70px);line-height:1.04;font-weight:400;letter-spacing:-.055em;margin-bottom:24px}em{font-family:inherit;font-style:normal;font-weight:inherit}.intro-note{font-size:14px;line-height:1.65}.text-link{display:inline-flex;gap:50px;font-size:14px;border-bottom:1px solid var(--accent);padding-bottom:8px;margin-top:10px}.text-link span{font-size:19px;line-height:1}.hero-bottom{flex-wrap:wrap;row-gap:12px;line-height:1.5;position:absolute;bottom:27px;inset-inline:0;display:flex;justify-content:space-between;font:14px 'Geist Mono',monospace;letter-spacing:.06em}.projects{border-top:1px solid var(--accent);padding-block:28px 65px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.section-heading h2{font-size:30px;letter-spacing:-.045em;font-weight:500;margin-bottom:0}.small-count{font:14px 'Geist Mono',monospace;vertical-align:top;margin-left:10px}.section-note{font-size:14px;opacity:.8;margin-block:13px 30px}.project-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:28px}.project:hover{text-decoration:none}.art{height:360px;position:relative;overflow:hidden;border-radius:2px;color:#1b241f}.art-label{position:absolute;left:23px;top:22px;font:14px 'Geist Mono',monospace;letter-spacing:.07em}.art-index{position:absolute;bottom:23px;left:23px;font:14px 'Geist Mono',monospace}.art-arrow{position:absolute;bottom:16px;right:20px;font-size:28px;transition:transform .2s}.project:hover .art-arrow{transform:translate(3px,-3px)}.art-home{background:#e9eddd}.home-scene{position:absolute;width:360px;height:270px;left:50%;top:50%;transform:translate(-50%,-48%)}.sun{position:absolute;width:100px;height:100px;border-radius:50%;background:var(--orange);top:5px;right:26px}.house-roof{position:absolute;width:0;height:0;border-left:112px solid transparent;border-right:112px solid transparent;border-bottom:100px solid var(--green);left:44px;top:27px}.house-body{position:absolute;left:64px;top:126px;width:184px;height:120px;background:#f7f3e7;border:2px solid #1b241f}.window{position:absolute;width:55px;height:48px;top:22px;left:19px;background:var(--blue);border:2px solid #1b241f}.window:after{content:'';position:absolute;left:24px;height:100%;border-left:2px solid #1b241f}.window:before{content:'';position:absolute;top:21px;width:100%;border-top:2px solid #1b241f}.door{position:absolute;width:48px;height:83px;bottom:0;right:22px;background:var(--orange);border:2px solid #1b241f;border-bottom:0}.door:after{content:'';position:absolute;right:6px;top:43px;width:4px;height:4px;background:#1b241f;border-radius:50%}.ground{position:absolute;bottom:24px;width:100%;border-top:2px solid #1b241f}.plant{position:absolute;right:10px;bottom:6px;color:var(--green);font-size:100px}.signal{position:absolute;border:2px solid #1b241f;border-left-color:transparent;border-bottom-color:transparent;border-radius:50%;transform:rotate(-45deg)}.signal-one{width:26px;height:26px;left:142px;top:4px}.signal-two{width:44px;height:44px;left:133px;top:-5px}.art-play{background:#f3c5cf}.play-scene{position:absolute;width:290px;height:250px;left:50%;top:50%;transform:translate(-50%,-45%)}.play-circle{width:132px;height:132px;background:var(--blue);border:2px solid #282020;border-radius:50%;position:absolute;left:22px;top:18px}.play-square{width:100px;height:100px;background:var(--orange);border:2px solid #282020;position:absolute;right:20px;top:35px;transform:rotate(13deg)}.play-star{position:absolute;bottom:0;right:5px;font-size:175px;line-height:1;color:var(--accent)}.play-step{position:absolute;bottom:20px;left:20px;width:115px;height:66px;background:var(--green);clip-path:polygon(0 50%,33% 50%,33% 0,66% 0,66% 50%,100% 50%,100% 100%,0 100%)}.project-caption{flex-wrap:wrap;display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-top:15px}.project-caption h3{font-size:17px;font-weight:500;letter-spacing:-.03em}.project-caption span{font-size:14px}.project-strip{border-block:1px solid var(--line);margin-top:24px;padding:26px 0;display:flex;align-items:center;gap:30px}.project-strip h3{font-size:22px;letter-spacing:-.03em;font-weight:400;margin:0}.strip-detail{font-size:14px;margin-left:auto}.strip-arrow{font-size:28px}.project-details{margin-top:24px}details{border-bottom:1px solid var(--line);font-size:14px}summary{cursor:pointer;list-style:none;padding:15px 0;display:flex;justify-content:space-between}summary::-webkit-details-marker{display:none}summary span{font-size:18px}details[open] summary span{transform:rotate(45deg)}details p{max-width:650px;line-height:1.8;opacity:.8;padding-bottom:12px}details:target{background:color-mix(in srgb,var(--accent) 5%,transparent)}.about{border-top:1px solid var(--accent);padding-block:55px 70px;display:grid;grid-template-columns:1fr 1.18fr}.about h2{font-weight:400;font-size:clamp(35px,4vw,58px);line-height:1.08;letter-spacing:-.045em;margin-bottom:28px}.about p:not(.eyebrow){max-width:420px;font-size:14px;line-height:1.8}.muted{opacity:.65}.info-row{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);padding-block:35px 65px;gap:10vw}.info-row h2{font-size:26px;font-weight:400;letter-spacing:-.04em}.info-row p:not(.eyebrow){font-size:14px;line-height:1.7;max-width:340px}.status{display:inline-block;font:14px 'Geist Mono',monospace;padding:7px 11px;border:1px solid var(--line);border-radius:30px;margin-top:5px}footer{border-top:1px solid var(--accent);padding-block:25px;display:flex;justify-content:space-between;align-items:center;font-size:14px;gap:20px}.footer-name{font-weight:700;font-size:18px;letter-spacing:-.05em}.skip-link{position:fixed;top:-100px;left:20px;z-index:10;background:var(--paper);padding:12px}.skip-link:focus{top:10px}.loading{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:36px;font-weight:700}.loading span{font-size:14px;font-weight:400;margin-top:18px}#blazor-error-ui{display:none;background:var(--paper);padding:16px;position:fixed;bottom:0;width:100%;border-top:1px solid var(--accent);z-index:20}
@media(min-width:1800px){.wordmark{font-size:262px}}
@media(max-width:760px){.site-header,main,footer{padding-inline:6vw}.wordmark{font-size:14vw;margin-top:22px;margin-bottom:30px;transform:scaleX(1.045)}.header-line{align-items:flex-start;flex-direction:column;gap:17px;font-size:14px}nav{width:100%;justify-content:space-between;gap:12px;font-size:14px}.hero{grid-template-columns:1fr;min-height:590px;gap:30px;padding-top:28px;padding-bottom:90px}.hero-note{gap:10px;font-size:14px}.spark{font-size:52px}.hero h2{font-size:clamp(32px,7.8vw,55px)}.hero-copy .eyebrow{font-size:14px;margin-bottom:20px}.hero-bottom{font-size:14px;gap:15px}.section-heading{align-items:flex-start}.section-heading h2{font-size:25px}.section-heading>.eyebrow{display:none}.section-note{line-height:1.7}.project-grid{grid-template-columns:1fr;gap:24px}.art{height:330px}.project-caption{flex-wrap:wrap;gap:3px}.project-caption h3{margin-bottom:6px}.project-strip{flex-wrap:wrap;gap:12px}.project-strip>.eyebrow{width:100%}.project-strip h3{font-size:20px}.strip-detail{font-size:14px}.about{grid-template-columns:1fr;gap:20px;padding-block:35px}.about h2{font-size:37px}.info-row{grid-template-columns:1fr;gap:40px;padding-bottom:45px}footer{flex-wrap:wrap}footer>span{order:3;width:100%;opacity:.7}.home-scene{transform:translate(-50%,-48%) scale(.88)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}
h1:focus{outline:none}



.tagline{font-weight:700}

/* Contact page */
.site-header a.wordmark:hover{text-decoration:none}nav [aria-current="page"]{text-decoration:underline;text-underline-offset:5px}
.contact-intro{display:grid;grid-template-columns:1fr 1.8fr;gap:50px;padding-block:85px 110px;min-height:650px}.contact-aside .eyebrow{margin-bottom:35px}.contact-spark{font-size:150px;line-height:1}.contact-intro h1{font-size:clamp(40px,5.1vw,80px);line-height:1.06;letter-spacing:-.055em;font-weight:400;margin:0 0 30px}.contact-description{font-size:16px;line-height:1.8;margin-bottom:42px;max-width:620px}.contact-links{border-top:1px solid var(--accent)}.contact-link{display:grid;grid-template-columns:135px 1fr 30px;align-items:center;gap:15px;padding-block:24px;border-bottom:1px solid var(--line)}.contact-link:hover{text-decoration:none}.contact-link:hover .contact-address{text-decoration:underline;text-underline-offset:5px}.contact-address{font-size:clamp(18px,2.1vw,30px);letter-spacing:-.035em;overflow-wrap:anywhere}.contact-arrow{font-size:28px;transition:transform .2s}.contact-link:hover .contact-arrow{transform:translate(3px,-3px)}.contact-link-note{display:block;font-size:14px;letter-spacing:0;margin-top:8px}
@media(max-width:760px){.contact-intro{grid-template-columns:1fr;gap:28px;padding-block:34px 60px;min-height:auto}.contact-aside{display:flex;align-items:center;justify-content:space-between}.contact-aside .eyebrow{margin:0}.contact-spark{font-size:60px}.contact-intro h1{font-size:clamp(34px,9vw,52px);margin-bottom:24px}.contact-description{font-size:14px;margin-bottom:30px}.desktop-break{display:none}.contact-link{grid-template-columns:1fr 28px;gap:10px;padding-block:22px}.contact-link>.eyebrow{grid-column:1/-1}.contact-address{font-size:22px}.contact-arrow{grid-column:2}}
/* CV */
.cv-intro,.cv-section{display:grid;grid-template-columns:1fr 1.8fr;gap:50px}.cv-intro{padding-block:70px 80px}.cv-location{font-size:14px;line-height:1.7;margin-top:22px}.cv-intro h1{font-size:clamp(42px,5.1vw,80px);font-weight:400;line-height:1.06;letter-spacing:-.055em;margin:0 0 30px}.cv-profile{font-size:16px;line-height:1.85;max-width:720px}.cv-actions{display:flex;flex-wrap:wrap;gap:30px;align-items:center;margin-top:30px}.download-button{background:var(--accent);color:var(--paper);display:inline-flex;align-items:center;gap:36px;padding:16px 22px;font-size:14px;font-weight:700;border:1px solid var(--accent)}.download-button span{font:14px 'Geist Mono',monospace}.download-button:hover{text-decoration:none;background:var(--paper);color:var(--accent)}.cv-section{border-top:1px solid var(--line);padding-block:40px 50px}.cv-section>h2{font-size:28px;letter-spacing:-.04em;font-weight:400}.cv-section h3{font-size:23px;font-weight:500;letter-spacing:-.035em;line-height:1.3;margin-bottom:15px}.cv-section p,.cv-section li,.cv-skills{font-size:14px;line-height:1.85}.cv-entry+.cv-entry{margin-top:35px;border-top:1px solid var(--line);padding-top:30px}.cv-subtitle{font-weight:600}.cv-section ul{padding-left:20px;margin-bottom:0}.cv-section li{padding-left:5px;margin-bottom:12px}.cv-earlier{border-top:1px solid var(--line);margin-top:35px;padding-top:25px}.cv-earlier span{font-size:14px}.cv-skills{margin:0}.cv-skills>div+div{margin-top:24px}.cv-skills dt{font-weight:700}.cv-skills dd{margin:6px 0 0}.cv-stack{font-weight:500}.cv-closing{display:flex;align-items:center;justify-content:space-between;gap:25px;border-top:1px solid var(--accent);padding-block:30px 60px}.cv-closing p{font-size:23px;letter-spacing:-.035em;margin:0}
@media(max-width:760px){.cv-intro,.cv-section{grid-template-columns:1fr;gap:24px}.cv-intro{padding-block:32px 45px}.cv-location{margin:0}.cv-intro h1{font-size:44px}.cv-profile{font-size:14px}.cv-section{padding-block:30px 35px}.cv-section>h2{margin-bottom:0}.cv-actions{gap:20px}.cv-closing{flex-direction:column;align-items:flex-start}.cv-closing p{font-size:22px}}
footer .archive-link{font-size:14px;font-weight:400}footer{flex-wrap:wrap}





/* Keep the navigation above the oversized, transformed wordmark's text area. */
.header-line{position:relative;z-index:1}
nav a{display:inline-flex;align-items:center;min-height:32px;padding-block:6px;line-height:1.4}
/* Shared reversed-colour footer. */
footer.site-footer{display:block;max-width:none;margin:0;padding:0;background:var(--accent);color:var(--paper);border:0}
.footer-inner{max-width:1800px;margin:auto;padding:34px 4.1vw;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;font-size:14px}
.footer-links{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:18px 28px}
.footer-top{justify-self:end;margin-left:0;white-space:nowrap}
.site-footer a:focus-visible{outline-color:var(--paper)}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(max-width:760px){.footer-inner{padding:28px 6vw;display:grid;grid-template-columns:1fr auto;gap:24px 14px}.footer-links{grid-column:1/-1;grid-row:2;gap:18px 24px}.footer-top{grid-column:2;grid-row:1;text-align:right;margin-left:0}}

.footer-linkedin{display:inline-flex;align-items:center;gap:7px}.footer-icon{display:block;flex-shrink:0}.footer-inner>.footer-name{justify-self:start}

.info-row>div:only-child{grid-column:1/-1}
/* About */
.about-intro{display:grid;grid-template-columns:1fr 1.8fr;gap:50px;padding-block:80px 95px;min-height:630px}.about-aside .eyebrow{margin-bottom:34px}.about-spark{font-size:150px;line-height:1}.about-intro h1{font-size:clamp(42px,5.1vw,80px);font-weight:400;line-height:1.08;letter-spacing:-.055em;margin:0 0 35px}.about-copy{max-width:660px;font-size:18px;line-height:1.8}.about-copy p{margin-bottom:23px}.about-archive{margin-top:55px;padding-top:28px;border-top:1px solid var(--line)}.about-archive .eyebrow{margin-bottom:10px}.about-archive .text-link{margin-top:0}
@media(max-width:760px){.about-intro{grid-template-columns:1fr;gap:28px;padding-block:34px 60px;min-height:auto}.about-aside{display:flex;justify-content:space-between;align-items:center}.about-aside .eyebrow{margin:0}.about-spark{font-size:60px}.about-intro h1{font-size:42px;margin-bottom:25px}.about-copy{font-size:16px}.about-archive{margin-top:38px}}
/* Use a background tint for link feedback, without a second underline. */
a:hover{text-decoration:none}
.text-link{transition:background-color .18s ease,box-shadow .18s ease}
.text-link:hover{background:color-mix(in srgb,var(--accent) 9%,transparent);box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 9%,transparent)}
nav a:hover{background:color-mix(in srgb,var(--accent) 9%,transparent);box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 9%,transparent)}
.contact-link:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)}
.contact-link:hover .contact-address{text-decoration:none}
.site-footer a:hover{color:var(--paper);background:color-mix(in srgb,var(--paper) 15%,transparent);box-shadow:0 0 0 6px color-mix(in srgb,var(--paper) 15%,transparent)}
.site-header a.wordmark:hover{background:none;box-shadow:none}
/* Round hover highlights remain circular regardless of label length. */
.text-link,nav a,.site-footer a{position:relative;isolation:isolate}
.text-link::before,nav a::before,.site-footer a::before{content:"";position:absolute;z-index:-1;left:50%;top:50%;width:max(48px,calc(100% + 24px));height:auto;aspect-ratio:1;border-radius:50%;background:var(--accent);opacity:0;transform:translate(-50%,-50%) scale(.75);transition:opacity .18s ease,transform .18s ease;pointer-events:none}
.text-link:hover,nav a:hover,.site-footer a:hover{background:transparent;box-shadow:none}
.text-link:hover::before,nav a:hover::before,.site-footer a:hover::before{opacity:.1;transform:translate(-50%,-50%) scale(1)}
.site-footer a::before{background:var(--paper)}
.site-footer a:hover::before{opacity:.18}

/* Allow the larger circular navigation highlights to remain fully visible. */
.site-header{overflow:visible}
.header-line{padding-bottom:40px}
/* Keep circular social highlights inside the footer, including the email link. */
.footer-inner{padding-block:112px}
@media(max-width:760px){.footer-inner{padding-top:70px;padding-bottom:112px}}

.contact-link:hover{background:transparent;box-shadow:none}.contact-link:hover .contact-address{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.contact-link::before{content:none;display:none}
/* Keep the quieter section labels after removing the introductory slogans. */
.hero-copy{grid-column:2}
.contact-intro .contact-aside h1.eyebrow,.about>h2.eyebrow{font:14px/1.6 'Geist Mono',monospace;letter-spacing:.08em;margin:0 0 35px}
@media(max-width:760px){.hero-copy{grid-column:1}.contact-intro .contact-aside h1.eyebrow,.about>h2.eyebrow{margin:0}}
