@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap";:root{--color-paper: oklch(98% .008 250);--color-paper-2: oklch(95% .014 245);--color-panel: oklch(99% .004 260 / .96);--color-ink: oklch(26% .03 255);--color-muted: oklch(47% .025 252);--color-rule: oklch(87% .015 250);--color-rule-strong: oklch(78% .03 248);--color-accent: oklch(46% .16 255);--color-accent-ink: oklch(98% .004 250);--color-focus: oklch(54% .15 250);--font-display: "Fraunces", Georgia, serif;--font-body: "DM Sans", "Segoe UI", sans-serif;--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2rem;--space-xl: 3rem;--space-2xl: 4.5rem;--space-3xl: 6rem;--space-4xl: 8rem;--text-xs: .75rem;--text-sm: .9375rem;--text-base: 1.0625rem;--text-lg: 1.375rem;--text-2xl: clamp(2rem, 4vw, 3.25rem);--text-display: clamp(3.2rem, 7vw, 6.3rem);--lh-tight: .95;--lh-copy: 1.72;--radius-md: 1rem;--radius-lg: 1.5rem;--radius-xl: 2rem;--radius-pill: 999px;--shadow-soft: 0 30px 60px oklch(30% .04 250 / .08);--shadow-card: 0 18px 40px oklch(28% .03 250 / .06);--dur-base: .18s;--ease-out: cubic-bezier(.22, 1, .36, 1)}.project-detail-grid{display:grid;gap:2rem;margin-top:2rem}.project-detail-block .project-category{margin-bottom:.75rem}.project-detail-block ul{margin:0}.project-stack{margin-top:0}.project-built{padding-top:1.4rem;border-top:1px solid #d7d5cc}.project-built .project-summary{margin-bottom:0}@media(max-width:800px){.project-card-detailed{display:grid;grid-template-columns:minmax(0,1fr)}.project-card-detailed .project-media{width:100%;aspect-ratio:auto;background:transparent}.project-card-detailed .project-media img{width:100%;height:auto;max-height:24rem;object-fit:cover;object-position:center}.project-card-detailed .project-content{max-width:none}.project-card-detailed .project-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.5rem}.project-card-detailed .project-features{grid-column:1 / -1}.project-card-detailed .project-features ul{columns:2;column-gap:2rem}.project-card-detailed .project-features li{break-inside:avoid}}@media(max-width:540px){.project-card-detailed .project-detail-grid{grid-template-columns:1fr}.project-card-detailed .project-features ul{columns:1}.project-card-detailed .project-media img{max-height:18rem}}html{scroll-behavior:smooth}body{margin:0;overflow-x:clip;background:#f2f0ea;color:#17221e;font-family:DM Sans,sans-serif;font-size:16px;line-height:1.55}*{box-sizing:border-box}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,a{transition:transform .18s ease,background-color .18s ease,color .18s ease,border-color .18s ease}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #c6ee56;outline-offset:3px}.page-shell{width:min(100%,1440px);margin:0 auto;padding:0 4.5rem 2.5rem;overflow:visible}.skip-link{position:fixed;left:1rem;top:-5rem;z-index:10;padding:.7rem 1rem;background:#17221e;color:#fff}.skip-link:focus{top:1rem}.topbar{min-height:6.5rem;display:flex;align-items:center;justify-content:space-between;gap:2rem;border-bottom:1px solid #d7d5cc}.wordmark{font:700 1.4rem/1 DM Mono,monospace;letter-spacing:-.08em}.wordmark span{color:#74a934}.section-nav{display:flex;gap:1.7rem;margin-left:auto;font-size:.88rem;font-weight:600}.section-nav a:hover,.footer>a:last-child:hover{color:#5e8f25}.nav-cta{padding-bottom:.25rem;border-bottom:1px solid #17221e;font-size:.9rem;font-weight:700}.nav-cta:hover{color:#5e8f25;border-color:#5e8f25}.page{display:grid;gap:8.5rem;padding-top:4rem}.hero{display:grid;grid-template-columns:1.35fr .65fr;gap:clamp(2rem,7vw,9rem);min-height:35rem;align-items:end}.eyebrow{margin:0 0 1.2rem;color:#667168;font:500 .69rem/1.2 DM Mono,monospace;letter-spacing:.08em;text-transform:uppercase}.eyebrow span{display:inline-block;width:.6rem;height:.6rem;margin-right:.5rem;background:#75ac34;border-radius:50%}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.055em;line-height:.96}.hero h1{max-width:10ch;margin-bottom:2rem;font-family:Fraunces,Georgia,serif;font-size:clamp(4.2rem,8vw,8.5rem);font-weight:600}.hero h1 em{color:#5f9029;font-style:italic}.lede{max-width:37rem;margin-bottom:0;color:#516058;font-size:1.1rem;line-height:1.65}.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1.8rem;margin-top:2.5rem}.button{display:inline-flex;justify-content:center;align-items:center;gap:.7rem;min-height:3.35rem;padding:.85rem 1.25rem;border:0;font-weight:700;cursor:pointer}.button:hover{transform:translateY(-2px)}.button:active{transform:translateY(0)}.button-primary{background:#17221e;color:#fff}.button-primary:hover{background:#5f9029}.text-link,.project-link{display:inline-flex;gap:.55rem;align-items:center;font-size:.92rem;font-weight:700}.text-link:hover,.project-link:hover{color:#5e8f25;transform:translate(3px)}.hero-side{padding:1.7rem 0;border-top:2px solid #17221e}.side-kicker{margin-bottom:1.8rem;color:#657067;font:500 .7rem DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase}.hero-side ul{padding:0;margin:0;list-style:none}.hero-side li{display:grid;grid-template-columns:2.1rem 1fr;gap:.7rem;padding:1rem 0;border-top:1px solid #d7d5cc;font-size:1.05rem;font-weight:600}.hero-side li span{color:#789742;font:.75rem DM Mono,monospace}.availability{display:flex;gap:.5rem;align-items:center;margin-top:2rem;color:#516058;font-size:.82rem}.status-dot{width:.55rem;height:.55rem;background:#75ac34;border-radius:100%;box-shadow:0 0 0 .25rem #dbe8c9}.proof-band{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#d7d5cc;border-top:1px solid #d7d5cc;border-bottom:1px solid #d7d5cc}.proof-band article{min-height:10rem;padding:2rem;background:#f2f0ea}.proof-band strong{display:block;margin-bottom:.6rem;font:600 clamp(2.3rem,4vw,4rem)/.9 "Fraunces",Georgia,serif;color:#5f9029;letter-spacing:-.07em}.proof-band span{max-width:15ch;display:block;color:#59655d;font-size:.88rem}.section{display:grid;gap:3.5rem}.split-heading{display:grid;grid-template-columns:1.25fr .55fr;gap:3rem;align-items:end}.section-heading h2,.about-statement h2{max-width:15ch;margin-bottom:0;font:600 clamp(2.8rem,5vw,5rem)/.97 "Fraunces",Georgia,serif}.split-heading>p{max-width:28rem;margin:0 0 .4rem;color:#59655d}.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid #17221e}.service-card{min-height:25rem;display:flex;flex-direction:column;padding:2rem 2.2rem 1.5rem;border-right:1px solid #d7d5cc}.service-card:first-child{padding-left:0}.service-card:last-child{border-right:0}.service-number,.project-category,.experience-period{color:#6d983b;font:500 .73rem DM Mono,monospace;letter-spacing:.08em}.service-card h3{max-width:9ch;margin:2.5rem 0 1rem;font-size:clamp(1.7rem,2.3vw,2.5rem)}.service-card>p:not(.service-number){max-width:26ch;color:#59655d}.service-card ul{margin:auto 0 0;padding:1.5rem 0 0;list-style:none;border-top:1px solid #d7d5cc;color:#59655d;font-size:.86rem}.service-card li+li{margin-top:.35rem}.service-card li:before{content:"— ";color:#75ac34}.work-section{gap:4rem}.project-list{display:grid;gap:7rem}.project-card{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,6vw,7rem);align-items:center}.project-card-reverse .project-media{order:2}.project-media{position:relative;aspect-ratio:1.28 / 1;overflow:hidden;background:#eaf0f5}.project-media img{display:block;width:100%;height:100%;object-fit:contain;object-position:center}.project-index{position:absolute;top:1.3rem;left:1.3rem;padding:.45rem .6rem;background:#f2f0ea;font:500 .7rem DM Mono,monospace}.project-content{max-width:32rem}.project-content h3{margin:.7rem 0 1.5rem;font:600 clamp(2.7rem,4.6vw,4.5rem)/.9 "Fraunces",Georgia,serif}.project-headline{max-width:22ch;margin-bottom:1.3rem;font-size:1.18rem;font-weight:700;line-height:1.25}.project-summary,.project-content li{color:#59655d}.project-content ul{margin:1.5rem 0 2rem;padding-left:1.1rem;font-size:.93rem}.project-content li+li{margin-top:.45rem}.about-section{grid-template-columns:1.15fr .85fr;gap:5rem;padding-top:6rem;border-top:1px solid #17221e}.about-statement h2{max-width:14ch}.about-detail{padding-top:2.4rem}.about-detail>p{max-width:32rem;color:#59655d;font-size:1.1rem}.toolkit{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:2rem}.toolkit span{padding:.45rem .7rem;border:1px solid #c9c9bd;color:#59655d;font:.73rem DM Mono,monospace}.experience-strip{display:grid}.experience-strip>.eyebrow{margin-bottom:2rem}.experience-strip article{display:grid;grid-template-columns:.45fr 1fr 1.2fr;gap:2rem;padding:1.4rem 0;border-top:1px solid #d7d5cc}.experience-strip h3{margin-bottom:.3rem;font-size:1.05rem}.experience-strip article>p:last-child,.experience-company{margin-bottom:0;color:#59655d;font-size:.87rem}.experience-company{font-weight:600}.contact-section{position:relative;display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(3rem,8vw,10rem);padding:clamp(2.5rem,6vw,6rem);background:#17221e;color:#f2f0ea;box-shadow:0 0 0 100vmax #17221e;clip-path:inset(0 -100vmax)}.light{color:#b9c5b7}.light span{background:#c6ee56}.contact-copy h2{max-width:10ch;margin-bottom:1.4rem;font:600 clamp(3rem,5vw,5.5rem)/.92 "Fraunces",Georgia,serif}.contact-copy>p:not(.eyebrow){max-width:25rem;color:#b9c5b7}.contact-copy a{display:inline-block;margin-top:1rem;padding-bottom:.2rem;border-bottom:1px solid #c6ee56;color:#c6ee56;font-weight:700}.contact-form{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;align-content:start}.contact-form label{display:grid;gap:.5rem;color:#d8e1d4;font-size:.78rem;font-weight:600}.contact-form label:nth-child(3),.contact-form label:nth-child(4),.contact-form button,.form-note{grid-column:1 / -1}.contact-form input,.contact-form textarea,.contact-form select{width:100%;padding:.8rem 0;border:0;border-bottom:1px solid #68766d;border-radius:0;outline:none;background:transparent;color:#fff}.contact-form textarea{resize:vertical}.contact-form select{color:#d8e1d4}.contact-form option{color:#17221e}.contact-form input:focus,.contact-form textarea:focus,.contact-form select:focus{border-color:#c6ee56}.button-light{justify-self:start;margin-top:1rem;background:#c6ee56;color:#17221e}.button-light:hover{background:#f2f0ea}.form-note{margin:0;color:#c6ee56;font-size:.85rem}.honeypot{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.captcha{grid-column:1 / -1;min-height:78px}.button-light:disabled{cursor:wait;opacity:.7;transform:none}.form-error{color:#ffb5a4}.footer{display:flex;justify-content:space-between;align-items:center;gap:2rem;padding:2.3rem 0 0;color:#657168;font-size:.83rem}.footer p{margin:0}.footer-actions{display:flex;flex-wrap:wrap;gap:1.25rem}.footer-actions a{font-weight:700;color:#17221e}.footer-actions a:hover{color:#5e8f25}@media(max-width:800px){.page-shell{padding:0 1.25rem 2rem}.topbar{min-height:5.2rem}.section-nav{display:none}.nav-cta{margin-left:auto}.page{gap:5rem;padding-top:3rem}.hero,.split-heading,.about-section,.contact-section{grid-template-columns:1fr}.hero{gap:3rem;min-height:0}.hero h1{font-size:clamp(3.8rem,16vw,6rem)}.proof-band,.services-grid{grid-template-columns:1fr}.proof-band article{min-height:0;padding:1.4rem 0;border-bottom:1px solid #d7d5cc}.proof-band article:last-child{border:0}.service-card,.service-card:first-child{min-height:0;padding:1.7rem 0;border-right:0;border-bottom:1px solid #d7d5cc}.service-card h3,.service-card ul{margin-top:1.5rem}.project-card,.project-card-reverse{grid-template-columns:1fr;gap:1.75rem}.project-card-reverse .project-media{order:0}.project-list{gap:4.5rem}.project-content h3{font-size:clamp(2.8rem,12vw,4rem)}.experience-strip article{grid-template-columns:1fr;gap:.35rem}.contact-form{grid-template-columns:1fr}.contact-form label:nth-child(3),.contact-form label:nth-child(4),.contact-form button,.form-note{grid-column:auto}.footer{align-items:flex-start;flex-direction:column;gap:1rem}}@media(max-width:430px){.nav-cta{font-size:.78rem}.hero h1{font-size:clamp(3.4rem,16vw,4.5rem)}.section-heading h2,.about-statement h2{font-size:clamp(2.55rem,12vw,3.4rem)}.contact-copy h2{font-size:clamp(2.8rem,13vw,4rem)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
