@font-face{font-family:Fraunces;font-style:italic;font-weight:100 900;font-display:swap;src:url(../media/477d3623a11ff399-s.2xm1k7t3a0pcd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-weight:100 900;font-display:swap;src:url(../media/bc6263328530fcfc-s.330vchwb4izzb.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:100 900;font-display:swap;src:url(../media/ddb686d70dc9968d-s.p.16u3vygyjnhr0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b8ccc630e9b93600-s.2qo5md4hn_gum.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1ab3e5abcf77747f-s.1d9rlgtqyj_-l.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/edb99fec956915f8-s.p.32sris142tqlb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.hg1Jsq_className{font-family:Fraunces,Fraunces Fallback}.hg1Jsq_variable{--font-display:"Fraunces", "Fraunces Fallback"}
@font-face{font-family:Instrument Sans;font-style:italic;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/0685275b5d137301-s.1jyixz98-23bc.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:italic;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/afc1d24c623f4c0f-s.p.20g9nkyuy-bea.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/62f37606a5bd6f6f-s.0klc_mi0-5f4_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/4cf231d25563e07b-s.p.2874ccu1_u7jf.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Fallback;src:local(Arial);ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.0%;size-adjust:102.74%}.tbbs-W_className{font-family:Instrument Sans,Instrument Sans Fallback}.tbbs-W_variable{--font-sans:"Instrument Sans", "Instrument Sans Fallback"}
:root{--paper:#f8faf6;--paper-2:#eff4ec;--paper-3:#e6ede2;--ink:#14201a;--ink-2:#55645d;--ink-3:#87948c;--green-700:#0b6b3a;--green-600:#0a5c32;--green-500:#1ba35c;--green-100:#ddf2e4;--line:#dce3d8;--line-2:#c3cebd;--error:#b3261e;--error-bg:#fbeae8;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--t-press:.13s;--t-ui:.19s;--t-enter:.24s;--lift:0 1px 2px #14201a0d, 0 18px 40px -28px #14201a47;--lift-hi:0 2px 4px #14201a0f, 0 32px 60px -32px #0b6b3a52}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans), ui-sans-serif, system-ui, sans-serif;font-kerning:normal;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1.0625rem;line-height:1.55}img{max-width:100%;display:block}a{color:inherit}h1,h2,h3,h4{text-wrap:balance;margin:0;font-weight:400}p{margin:0}ul{margin:0;padding:0}.wrap{width:100%;max-width:1240px;margin:0 auto;padding-inline:clamp(20px,4.5vw,56px)}:where(a,button,input,textarea,[tabindex]):focus-visible{outline:2px solid var(--green-500);outline-offset:3px;border-radius:1px}.skip{z-index:100;background:var(--ink);color:var(--paper);border-radius:2px;padding:12px 18px;font-size:.875rem;position:absolute;top:0;left:-9999px}.skip:focus{top:16px;left:16px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.site-nav{z-index:50;background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;gap:var(--s-5);height:74px;display:flex}.logo{letter-spacing:.16em;text-transform:uppercase;align-items:baseline;gap:7px;font-size:.8125rem;font-weight:600;text-decoration:none;display:inline-flex}.logo i{background:var(--green-500);width:6px;height:6px;font-style:normal;display:inline-block;transform:translateY(-1px)}.nav-links{align-items:center;gap:var(--s-5);display:flex}.nav-links a{color:var(--ink-2);transition:color var(--t-ui) var(--ease-out);padding-block:6px;font-size:.875rem;text-decoration:none;position:relative}.nav-links a:after{content:"";background:var(--green-500);transform-origin:0;height:1px;transition:transform var(--t-ui) var(--ease-out);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}@media (hover:hover) and (pointer:fine){.nav-links a:hover{color:var(--ink)}.nav-links a:hover:after{transform:scaleX(1)}}.nav-burger{border:1px solid var(--line-2);cursor:pointer;width:44px;height:44px;transition:border-color var(--t-ui) var(--ease-out), transform var(--t-press) var(--ease-out);background:0 0;border-radius:2px;justify-content:center;align-items:center;padding:0;display:none}.nav-burger:active{transform:scale(.98)}.nav-burger span{background:var(--ink);width:18px;height:1px;display:block;position:relative}.nav-burger span:before,.nav-burger span:after{content:"";background:var(--ink);width:18px;height:1px;position:absolute;left:0}.nav-burger span:before{top:-5px}.nav-burger span:after{top:5px}.menu{z-index:60;background:var(--paper);flex-direction:column;padding:18px clamp(20px,5vw,32px) 32px;display:flex;position:fixed;inset:0}.menu-head{justify-content:space-between;align-items:center;height:56px;display:flex}.menu-close{border:1px solid var(--line-2);cursor:pointer;width:44px;height:44px;color:var(--ink);background:0 0;border-radius:2px;place-items:center;padding:0;font-size:1rem;display:grid}.menu-list{margin:var(--s-5) 0 0;border-top:1px solid var(--line);padding:0;list-style:none}.menu-list a{font-family:var(--font-display), Georgia, serif;border-bottom:1px solid var(--line);align-items:baseline;gap:12px;min-height:56px;padding:15px 0;font-size:1.75rem;text-decoration:none;display:flex}.menu-list i{font-family:var(--font-sans), sans-serif;letter-spacing:.12em;color:var(--green-700);font-size:.625rem;font-style:normal}.menu-foot{padding-top:var(--s-5);margin-top:auto}.menu-enter{animation:menu-in var(--t-enter) var(--ease-out) both}@keyframes menu-in{0%{opacity:0;transform:translateY(8px)}}.btn{cursor:pointer;min-height:46px;transition:transform var(--t-press) var(--ease-out), background-color var(--t-ui) var(--ease-out), color var(--t-ui) var(--ease-out), border-color var(--t-ui) var(--ease-out);border:1px solid #0000;border-radius:2px;justify-content:center;align-items:center;gap:9px;padding:13px 22px;font-family:inherit;font-size:.9375rem;font-weight:500;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--green-700);color:#fff}.btn-primary .arrow{transition:transform var(--t-ui) var(--ease-out)}@media (hover:hover) and (pointer:fine){.btn-primary:hover{background:var(--green-600)}.btn-primary:hover .arrow{transform:translate(3px)}}.btn-ghost{border-color:var(--line-2);color:var(--ink);background:0 0}@media (hover:hover) and (pointer:fine){.btn-ghost:hover{border-color:var(--ink);background:var(--paper-2)}}.btn-sm{min-height:40px;padding:9px 16px;font-size:.875rem}.btn-text{color:var(--green-700);cursor:pointer;min-height:46px;transition:border-color var(--t-ui) var(--ease-out);background:0 0;border:0;border-bottom:1px solid #0000;align-items:center;gap:8px;padding:12px 4px;font-family:inherit;font-size:.9375rem;font-weight:500;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.btn-text:hover{border-bottom-color:var(--green-500)}}.hero{padding-block:clamp(56px,9vw,108px) clamp(64px,9vw,116px);position:relative;overflow:hidden}.hero-grid{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);align-items:center;gap:clamp(28px,5vw,72px);display:grid}.eyebrow{letter-spacing:.18em;text-transform:uppercase;color:var(--green-700);margin-bottom:var(--s-5);align-items:center;gap:10px;font-size:.75rem;font-weight:500;display:inline-flex}.eyebrow:before{content:"";background:var(--green-500);width:22px;height:1px}.hero h1{font-family:var(--font-display), Georgia, serif;letter-spacing:-.022em;margin-bottom:var(--s-5);font-size:clamp(2.55rem,6.1vw,5.1rem);font-weight:400;line-height:1}.hero h1 em{color:var(--green-700);font-style:italic;font-weight:300}.hero .lead{color:var(--ink-2);max-width:44ch;margin-bottom:var(--s-6);font-size:clamp(1.0625rem,1.5vw,1.1875rem)}.hero-actions{align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.hero-visual{place-items:center;min-height:420px;display:grid;position:relative}.stage{aspect-ratio:1;perspective:1000px;width:min(420px,100%);position:relative}.stage:before{content:"";background-image:linear-gradient(to right, var(--line) 1px, transparent 1px), linear-gradient(to bottom, var(--line) 1px, transparent 1px);opacity:.85;background-size:44px 44px;position:absolute;inset:-8%;-webkit-mask-image:radial-gradient(circle,#000 12%,#0000 68%);mask-image:radial-gradient(circle,#000 12%,#0000 68%)}.sphere{transition:transform .7s var(--ease-out-expo);background:radial-gradient(circle at 31% 26%,#fff 0%,#e8fbf0 7%,#7fdfa8 24%,#1ba35c 46%,#0b6b3a 66%,#08301c 88%,#061a10 100%);border-radius:50%;position:absolute;inset:21%;box-shadow:inset -14px -18px 44px #04180e8c,inset 8px 10px 30px #fff3,0 34px 60px -26px #0b6b3a73}.ring{transition:transform .7s var(--ease-out-expo);border:1px solid #0b6b3a4d;border-radius:50%;position:absolute;inset:4%;transform:rotateX(76deg)rotateY(8deg)}.ring-r2{border-color:#14201a24;inset:12%;transform:rotateX(64deg)rotate(34deg)}.ring-r3{border-style:dashed;border-color:#1ba35c38;inset:-4%;transform:rotateX(82deg)rotateY(-16deg)}.orbit-dot{background:var(--green-700);border-radius:50%;width:7px;height:7px;position:absolute;top:8%;left:50%;transform:translate(-50%)}@media (hover:hover) and (pointer:fine){.stage:hover .ring{transform:rotateX(70deg)rotateY(-22deg)}.stage:hover .ring-r2{transform:rotateX(56deg)rotate(12deg)}.stage:hover .sphere{transform:translateZ(24px)scale(1.015)}}.fig-label{letter-spacing:.16em;text-transform:uppercase;color:var(--green-700);align-items:center;gap:8px;font-size:.6875rem;display:flex;position:absolute;bottom:-6px;left:0}.fig-label:before{content:"";background:var(--green-500);width:18px;height:1px}.sec-head{gap:var(--s-5) clamp(24px, 5vw, 64px);grid-template-columns:220px 1fr;margin-bottom:clamp(36px,5vw,64px);display:grid}.sec-num{letter-spacing:.18em;text-transform:uppercase;color:var(--green-700);padding-top:8px;font-size:.75rem;font-weight:500}.sec-head h2{font-family:var(--font-display), Georgia, serif;letter-spacing:-.018em;font-size:clamp(1.85rem,3.5vw,2.9rem);line-height:1.1}.sec-head h2 em{color:var(--green-700);font-style:italic;font-weight:300}.sec-body{gap:var(--s-5) clamp(24px, 5vw, 64px);grid-template-columns:220px 1fr;display:grid}.sec-aside{color:var(--ink-2);max-width:26ch;font-size:.875rem}.tag-line{margin-top:var(--s-3);color:var(--green-700);display:block}.about-text{font-family:var(--font-display), Georgia, serif;letter-spacing:-.012em;max-width:34ch;margin-bottom:var(--s-5);font-size:clamp(1.3rem,2.1vw,1.75rem);line-height:1.4}.about-cols{gap:var(--s-5) var(--s-7);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));max-width:68ch;display:grid}.about-cols p{color:var(--ink-2);font-size:1rem}.todo{color:var(--green-700);border-bottom:1px dashed var(--green-500);font-style:italic}.todo-note{font-family:var(--font-sans), sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--green-700);background:var(--green-100);vertical-align:2px;white-space:nowrap;border-radius:2px;margin-left:8px;padding:2px 6px;font-size:.625rem;font-style:normal}.skills-list{border-top:1px solid var(--line)}.skill-row{gap:var(--s-4) var(--s-5);padding-block:var(--s-5);border-bottom:1px solid var(--line);transition:background-color var(--t-ui) var(--ease-out);grid-template-columns:180px 1fr auto;align-items:baseline;display:grid}@media (hover:hover) and (pointer:fine){.skill-row:hover{background:var(--paper-2)}}.skill-cat{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);font-size:.75rem;font-weight:500}.skill-items{flex-wrap:wrap;list-style:none;display:flex}.skill-items li{letter-spacing:-.01em;align-items:center;font-size:clamp(1.05rem,1.6vw,1.3rem);display:flex}.skill-items li+li:before{content:"";background:var(--line-2);width:1px;height:14px;margin-inline:14px}.skill-items.is-muted li{color:var(--ink-2);font-size:1rem}.skill-note{color:var(--ink-2);text-align:right;font-size:.8125rem}.project-feature{grid-template-columns:1.15fr .85fr;align-items:center;gap:clamp(20px,3.4vw,44px);padding-bottom:clamp(32px,5vw,56px);display:grid}.shot{border:1px dashed var(--line-2);background:repeating-linear-gradient(-45deg, transparent 0 9px, #14201a06 9px 10px), var(--paper-2);text-align:center;aspect-ratio:16/10;padding:var(--s-4);transition:transform .32s var(--ease-out-expo), box-shadow .32s var(--ease-out-expo);border-radius:2px;place-items:center;display:grid;position:relative;overflow:hidden}.shot img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.shot-label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);font-size:.6875rem;line-height:1.9}.shot-label b{color:var(--green-700);font-weight:500;display:block}@media (hover:hover) and (pointer:fine){.project-feature:hover .shot{box-shadow:var(--lift-hi);transform:perspective(900px)rotateY(-1.6deg)translateY(-3px)}}.project-meta{gap:var(--s-3);flex-direction:column;display:flex}.project-kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);font-size:.6875rem;font-weight:500}.project-meta h3{font-family:var(--font-display), Georgia, serif;font-size:clamp(1.4rem,2.2vw,1.85rem);line-height:1.2}.project-meta p{color:var(--ink-2);max-width:42ch;font-size:.96rem}.tech{flex-wrap:wrap;gap:6px;display:flex}.tech span{letter-spacing:.04em;color:var(--ink-2);border:1px solid var(--line);background:var(--paper);border-radius:2px;padding:4px 9px;font-size:.75rem}.project-links{gap:var(--s-4);padding-top:var(--s-1);flex-wrap:wrap;display:flex}.project-grid{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:clamp(24px,3vw,40px);padding-top:clamp(28px,4vw,44px);display:grid}.project-card{gap:var(--s-3);flex-direction:column;display:flex}.project-card .shot{aspect-ratio:4/3}.project-card h3{font-family:var(--font-display), Georgia, serif;font-size:1.25rem}.project-card p{color:var(--ink-2);font-size:.94rem}.placeholder-note{background:var(--green-100);color:#0a4d2b;margin-top:var(--s-6);border-radius:2px;align-items:flex-start;gap:10px;padding:14px 16px;font-size:.875rem;display:flex}.placeholder-note b{font-weight:600}.services{border-top:1px solid var(--line)}.service{gap:var(--s-4);padding-block:var(--s-5);border-bottom:1px solid var(--line);transition:padding-left var(--t-ui) var(--ease-out);grid-template-columns:54px 1fr auto;align-items:baseline;display:grid}.service-num{letter-spacing:.12em;color:var(--green-700);font-size:.75rem;font-weight:500}.service h3{font-family:var(--font-display), Georgia, serif;font-size:clamp(1.15rem,1.9vw,1.5rem);line-height:1.25}.service p{color:var(--ink-2);max-width:52ch;margin-top:4px;font-size:.94rem}.service .arrow{color:var(--green-700);transition:transform var(--t-ui) var(--ease-out);font-size:1.1rem}@media (hover:hover) and (pointer:fine){.service:hover{padding-left:var(--s-3)}.service:hover .arrow{transform:translate(4px)}}.contact-grid{grid-template-columns:1fr 1fr;align-items:start;gap:clamp(32px,5vw,80px);display:grid}.contact-intro h2{font-family:var(--font-display), Georgia, serif;letter-spacing:-.02em;margin-bottom:var(--s-4);font-size:clamp(1.9rem,3.6vw,3rem);line-height:1.06}.contact-intro h2 em{color:var(--green-700);font-style:italic;font-weight:300}.contact-intro>p{color:var(--ink-2);max-width:38ch;margin-bottom:var(--s-6)}.contact-links{gap:var(--s-2);border-top:1px solid var(--line);padding-top:var(--s-4);flex-direction:column;display:flex}.contact-links a{border-bottom:1px solid var(--line);min-height:44px;transition:color var(--t-ui) var(--ease-out);justify-content:space-between;align-items:center;gap:12px;padding-block:12px;font-size:.9375rem;text-decoration:none;display:flex}.contact-links a>span:last-child{color:var(--ink-2);font-size:.8125rem}@media (hover:hover) and (pointer:fine){.contact-links a:hover{color:var(--green-700)}}.field{margin-bottom:var(--s-4);flex-direction:column;gap:7px;display:flex}.field label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);font-size:.75rem;font-weight:500}.field input,.field textarea{color:var(--ink);background:var(--paper);border:1px solid var(--line-2);width:100%;min-height:48px;transition:border-color var(--t-ui) var(--ease-out), background-color var(--t-ui) var(--ease-out);border-radius:2px;padding:12px 14px;font-family:inherit;font-size:1rem}.field textarea{resize:vertical;min-height:132px}@media (hover:hover) and (pointer:fine){.field input:hover,.field textarea:hover{border-color:var(--ink-3)}}.field input:focus,.field textarea:focus{border-color:var(--green-500);outline:none;box-shadow:0 0 0 3px #1ba35c29}.field.has-error input,.field.has-error textarea{border-color:var(--error);background:var(--error-bg)}.field.has-error input:focus,.field.has-error textarea:focus{box-shadow:0 0 0 3px #b3261e29}.field-hint{color:var(--ink-2);font-size:.8125rem}.field-error{color:var(--error);align-items:center;gap:6px;font-size:.8125rem;font-weight:500;display:flex}.field-error:before{content:"!";background:var(--error);color:#fff;border-radius:50%;flex:none;place-items:center;width:15px;height:15px;font-size:.625rem;font-weight:700;display:grid}.form-foot{align-items:center;gap:var(--s-4);margin-top:var(--s-5);flex-wrap:wrap;display:flex}.form-note{color:var(--ink-2);max-width:40ch;font-size:.8125rem}.form-status{margin-top:var(--s-4);background:var(--green-100);color:#0a4d2b;border-radius:2px;padding:13px 15px;font-size:.875rem}.form-status:empty{display:none}.footer{border-top:1px solid var(--line);padding-block:var(--s-7) var(--s-8)}.footer-top{justify-content:space-between;gap:var(--s-5);margin-bottom:var(--s-6);flex-wrap:wrap;display:flex}.footer-links{gap:var(--s-5);flex-wrap:wrap;display:flex}.footer-links a{color:var(--ink-2);padding-block:6px;font-size:.875rem;text-decoration:none}@media (hover:hover) and (pointer:fine){.footer-links a:hover{color:var(--ink)}}.footer-bottom{justify-content:space-between;gap:var(--s-4);color:var(--ink-2);border-top:1px solid var(--line);padding-top:var(--s-4);flex-wrap:wrap;font-size:.8125rem;display:flex}.reveal{opacity:0;transform:translateY(10px)}.reveal.is-in{opacity:1;transition:opacity .48s var(--ease-out), transform .48s var(--ease-out);transition-delay:calc(var(--i,0) * 55ms);transform:none}@media (max-width:980px){.hero-grid{grid-template-columns:1fr}.hero-visual{min-height:auto;margin-top:var(--s-6);order:2}.stage{width:min(340px,80%)}.sec-head,.sec-body{gap:var(--s-4);grid-template-columns:1fr}.sec-num{padding-top:0}.project-feature,.contact-grid{grid-template-columns:1fr}}@media (max-width:860px){.nav-links,.nav-inner>.btn{display:none}.nav-burger{display:inline-flex}}@media (max-width:720px){.skill-row{grid-template-columns:1fr;gap:8px}.skill-note{text-align:left}.project-grid{grid-template-columns:1fr}.service{grid-template-columns:40px 1fr}.service .arrow{display:none}.about-text{max-width:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,.reveal.is-in{opacity:1;transition:none;transform:none}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.hero3d{align-items:center;min-height:clamp(560px,90vh,880px);padding-block:clamp(40px,7vh,90px);display:grid;position:relative;overflow:hidden}.hero3d-scene{z-index:0;position:absolute;inset:0 0 0 40%}.hero3d-scene canvas{touch-action:pan-y;display:block}.hero3d-glow{z-index:0;background:radial-gradient(46% 44% at 74% 44%,#1ba35c24,#1ba35c00 72%);position:absolute;inset:0}.hero3d-glow:after{content:"";filter:blur(6px);pointer-events:none;background:radial-gradient(closest-side,#0b6b3a29,#0b6b3a00);width:46%;height:26%;position:absolute;bottom:14%;right:6%}.hero3d-veil{z-index:1;pointer-events:none;background:linear-gradient(96deg, var(--paper) 21%, #f8faf6eb 32%, #f8faf659 44%, #f8faf600 54%);position:absolute;inset:0}.hero3d-copy{z-index:2;max-width:min(780px,100%);position:relative}.hero3d-copy h1{font-family:var(--font-display), Georgia, serif;letter-spacing:-.022em;margin-bottom:var(--s-5);font-size:clamp(2.5rem,5.6vw,4.6rem);font-weight:400;line-height:1.02}.hero3d-copy h1 em{color:var(--green-700);font-style:italic;font-weight:300}.hero3d-copy .lead{color:var(--ink-2);max-width:42ch;margin-bottom:var(--s-6);font-size:clamp(1.0625rem,1.5vw,1.1875rem)}.hero3d-copy .fig-label{margin-top:var(--s-7);position:static}.stage-fallback{margin-inline:auto}.progress-track{z-index:80;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.progress-bar{background:var(--green-500);transform-origin:0;width:100%;height:100%;transform:scaleX(0)}.tilt{transition:transform .42s var(--ease-out-expo);transform-style:preserve-3d}.project-card-inner{gap:var(--s-3);flex-direction:column;display:flex}.reveal{opacity:0;transform-origin:50% 0;transform:perspective(1200px)translateY(18px)rotateX(2.5deg)}.reveal.is-in{opacity:1;transform:none}@media (max-width:980px){.hero3d{min-height:auto;padding-block:clamp(36px,6vh,72px) clamp(48px,9vh,96px)}.hero3d-veil{background:linear-gradient(180deg, var(--paper) 34%, #f8faf6db 56%, #f8faf61f 80%)}.hero3d-copy{max-width:100%}.hero3d-copy .lead{max-width:46ch}.hero3d-scene{inset:30% 0 0}}@media (prefers-reduced-motion:reduce){.reveal,.reveal.is-in{opacity:1;transition:none;transform:none}.tilt,.tilt:hover{transform:none!important}}.world{z-index:0;pointer-events:none;position:fixed;inset:0}.world canvas{display:block}main,.footer{z-index:1;position:relative}.hero-full{align-items:center;min-height:100svh;padding-block:clamp(104px,17vh,190px) clamp(76px,12vh,150px);display:grid;position:relative}.hero-full:before{content:"";pointer-events:none;background:radial-gradient(62% 68% at 24% 48%,#f8faf6f7 0%,#f8faf6db 34%,#f8faf66b 58%,#f8faf600 76%);position:absolute;inset:0}.hero-full .wrap{z-index:2;position:relative}.hero-title{font-family:var(--font-display), Georgia, serif;letter-spacing:-.032em;margin-bottom:var(--s-5);max-width:16ch;font-size:clamp(2.65rem,7.4vw,6rem);font-weight:400;line-height:.97}.word-holder{display:inline}.word{vertical-align:bottom;padding-block:.09em;display:inline-block;overflow:hidden}.word-inner{display:inline-block}.word-inner.is-em{color:var(--green-700);font-style:italic;font-weight:300}.hero-full .lead{color:var(--ink-2);max-width:44ch;margin-bottom:var(--s-6);font-size:clamp(1.0625rem,1.4vw,1.1875rem)}.hero-full .hero-actions{gap:var(--s-3);flex-wrap:wrap;align-items:center;display:flex}.scroll-cue{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);align-items:center;gap:12px;margin-top:clamp(32px,6vh,72px);font-size:.75rem;display:inline-flex}.scroll-cue i{background:linear-gradient(to bottom, var(--green-500), #1ba35c00);transform-origin:top;width:1px;height:36px;animation:cue 2.6s var(--ease-in-out) infinite;display:block}@keyframes cue{0%,to{opacity:.45;transform:scaleY(.35)}50%{opacity:1;transform:scaleY(1)}}.sec{border-top:0;padding-block:clamp(56px,9vh,118px)}.sheet{background:#f8faf6ed;background:color-mix(in srgb, var(--paper) 93%, transparent);width:min(880px,100%);padding:clamp(22px,3.6vw,46px);position:relative;box-shadow:0 70px 140px -100px #14201acc}.sheet--right{margin-left:auto}.sheet .sec-head{gap:var(--s-3);margin-bottom:var(--s-4);grid-template-columns:1fr}.sheet .sec-head h2{font-size:clamp(1.55rem,2.8vw,2.35rem)}.sheet .sec-aside{max-width:64ch;margin-bottom:var(--s-5)}.sheet .about-text{max-width:40ch}.sheet .project-feature{padding-bottom:var(--s-6)}.sheet .contact-grid{gap:var(--s-6);grid-template-columns:1fr}.contact-todo{border-bottom:1px solid var(--line);padding:12px 0;font-size:.9375rem}.site-nav{background:#f8faf6f0;background:color-mix(in srgb, var(--paper) 94%, transparent);-webkit-backdrop-filter:blur(8px)saturate(1.05);backdrop-filter:blur(8px)saturate(1.05)}.footer{background:#f8faf6e6;background:color-mix(in srgb, var(--paper) 90%, transparent)}@media (max-width:980px){.hero-full{min-height:92svh}.hero-title{font-size:clamp(2.4rem,9.5vw,3.6rem)}.sheet{width:100%}}@media (prefers-reduced-motion:reduce){.scroll-cue i{animation:none}}body,html{overflow-x:clip}
