:root{--ink: #242a22;--ink-soft: #4d564b;--paper: #fbfaf7;--angora: #dfd1bb;--sage: #a3b18a;--sage-line: var(--sage);--pine: #35463d;--pine-deep: #35463d;--moss: #35463d;--light: #f2f5ef;--light-soft: var(--light);--display: "Bitter", Georgia, "Times New Roman", serif;--body: "Public Sans", system-ui, sans-serif;--measure: 68rem;--prose: 42rem;--card-radius: 8px}*{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--body);font-size:1.0625rem;line-height:1.65}h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.15;letter-spacing:-.01em}a{color:var(--moss)}:focus-visible{outline:2px solid var(--moss);outline-offset:2px}.wrap{max-width:var(--measure);margin:0 auto;padding-left:1.25rem;padding-right:1.25rem}header{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(6px)}.header-edge{position:absolute;top:100%;left:0;display:block;width:100%;height:14px;fill:color-mix(in srgb,var(--paper) 92%,transparent);filter:drop-shadow(0 4px 4px rgb(53 70 61 / .12));pointer-events:none}.header-bar{position:relative;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-top:.9rem;padding-bottom:.9rem}.brand{font-family:var(--display);font-weight:600;font-size:1.05rem;color:var(--pine);text-decoration:none}header nav{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem}header nav a{color:var(--ink);text-decoration:none;font-weight:600;font-size:.9rem;letter-spacing:.02em}header nav a:hover{color:var(--moss)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}section{padding:4.5rem 0;scroll-margin-top:8rem}.hero{text-align:center;padding:5.5rem 0 5rem}@media(prefers-reduced-motion:no-preference){.hero .wrap{animation:rise .7s ease-out both}@keyframes rise{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:none}}}.hero-photo{max-width:10rem;border-radius:50%;border:4px solid var(--sage);box-shadow:0 0 0 1px var(--sage-line)}.about-photo{max-width:12rem;border-radius:50%}h1{font-size:clamp(2.4rem,6vw,3.4rem);margin:1.25rem 0 .75rem;color:var(--pine)}h2{font-size:clamp(1.6rem,3.5vw,2rem);margin:0 0 1.25rem;color:var(--pine)}.subhead{font-size:1.25rem;color:var(--ink-soft);max-width:38ch;margin:0 auto}.principal{max-width:38ch;margin:0 auto .35rem;color:var(--pine);font-size:1.25rem;font-weight:600}.featured-quote{background:#e8eee4;padding:2rem 0}.featured-quote figure{max-width:52rem;margin:0 auto;text-align:center}.featured-quote blockquote{margin:0;font-family:var(--display);font-size:clamp(1rem,1.6vw,1.15rem);line-height:1.6;color:var(--pine)}.featured-quote blockquote p{margin:0}.featured-quote figcaption{margin-top:.875rem;font-size:.85rem;font-weight:600;color:var(--ink-soft)}#about{background:#e8eee4}#about .wrap{max-width:var(--prose)}.services{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:1.25rem;justify-content:center}.services li{flex:1 1 17rem;max-width:24rem;background:#fff;border:1px solid var(--sage-line);border-top:3px solid var(--moss);border-radius:var(--card-radius);padding:1.5rem 1.5rem 1.25rem}.services h3{font-size:1.15rem;margin:0 0 .5rem;color:var(--moss)}.services p{margin:0;font-size:.975rem;color:var(--ink-soft)}.other-development-services{max-width:var(--prose);margin:2.5rem auto 0}.other-development-services h3{font-size:1.15rem;margin:0 0 .5rem;color:var(--moss)}.other-development-services p{margin:0;font-size:.975rem;color:var(--ink-soft)}.service-read-more{display:inline-block;margin-top:1rem;font-size:.9rem;font-weight:600;text-underline-offset:.2em}.service-page .wrap{max-width:50rem}.service-back{display:inline-flex;align-items:center;min-height:44px;padding:.5rem 1rem;border-radius:999px;background:#edf1e9;color:var(--pine);font-size:.9rem;text-decoration:none}.service-back:hover{background:#e1e8da}.service-eyebrow{color:var(--ink-soft);font-size:.9rem;margin:2rem 0 0}.service-page h1{margin:.75rem 0 2rem;font-size:clamp(2rem,5vw,3rem)}.service-page-copy{overflow-wrap:anywhere}.service-page-subheading{font-size:clamp(1.3rem,2.5vw,1.6rem);line-height:1.3;margin:0 0 1.25rem}.service-page-copy p{white-space:pre-line}.service-page-copy ul{margin:1rem 0;padding-left:1.75rem;list-style-type:disc}.service-page-copy li{padding-left:.25rem}.service-page-copy li+li{margin-top:.4rem}.service-case-study{margin:2.5rem 0 0;padding:clamp(1.25rem,4vw,2rem);border:1px solid var(--sage-line);border-radius:var(--card-radius);background:#e8eee4;color:var(--pine)}.service-case-study .service-case-study-label{margin:0 0 .75rem;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.service-case-study h2{margin:0 0 1.25rem;font-size:clamp(1.2rem,2.5vw,1.45rem);font-style:italic;line-height:1.4}.service-case-study p{font-size:1rem}.service-case-study p:last-child{margin-bottom:0}.service-page-heading--featured{background:#e8eee4;padding:clamp(1.5rem,4vw,2.5rem);margin:1.5rem 0 2rem;border:1px solid var(--sage-line);border-top:3px solid var(--sage);border-radius:var(--card-radius)}.service-page-heading--featured .service-eyebrow{margin:0}.service-page-heading--featured h1{margin:.75rem 0 1rem}.service-page-heading--featured .service-page-subheading{margin:0;font-family:var(--display);font-size:1.2rem;font-weight:400;line-height:1.3}.service-intro{max-width:var(--prose)}.service-intro>p:first-child{font-size:1.125rem}.service-sections{display:grid;gap:2rem;margin-top:2.5rem}.service-section{min-width:0}.service-section h2{font-size:1.4rem;line-height:1.35;margin:0 0 1rem}.service-section p:first-of-type{margin-top:0}.service-section>:last-child{margin-bottom:0}.service-section--practical{padding:1.5rem;border:1px solid var(--sage-line);border-radius:var(--card-radius);background:#fff;font-size:1rem}.service-section--callout{padding:clamp(1.5rem,4vw,2rem);border:1px solid var(--sage-line);border-radius:var(--card-radius);background:#e8eee4}.service-contact{display:inline-block;margin-top:1.5rem;padding:.75rem 1.25rem;border-radius:999px;background:var(--pine);color:var(--paper);font-weight:600;text-decoration:none}.service-contact:hover{background:var(--ink)}.more-services{background:#e8eee4}.more-services .wrap{max-width:50rem}.service-page-links{list-style:none;padding:0;margin:0}.service-page-links a{display:block;padding:.9rem 0;border-bottom:1px solid var(--sage);font-weight:600;text-decoration:none}.service-page-links a:hover{text-decoration:underline}#testimonials{background:var(--sage)}#testimonials .wrap{max-width:50rem}.testimonial-hint{margin:0 0 1.5rem;font-size:.9rem}.testimonials{display:flex;gap:1.5rem;list-style:none;padding:0 0 1rem;margin:0;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-color:var(--pine) transparent;scrollbar-width:thin}.testimonials>li{flex:0 0 100%;min-width:0;scroll-snap-align:start;overflow-wrap:anywhere}.testimonials blockquote{margin:0}.testimonials blockquote p{margin:0 0 1.25rem}.testimonial-controls:not([hidden]){display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:1.25rem}.testimonial-controls button{min-height:44px;border:1px solid var(--pine);border-radius:999px;padding:.6rem 1rem;color:var(--pine);background:transparent;font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}.testimonial-controls button:hover{background:var(--paper)}.testimonial-position{margin:0;font-size:.85rem;white-space:nowrap}blockquote{margin:0 0 2rem;font-family:var(--display);font-style:italic;font-size:1.15rem}blockquote cite{display:block;font-family:var(--body);font-style:normal;font-size:.9rem;color:var(--ink-soft);margin-top:.5rem}.clients{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:2.5rem;align-items:center;justify-content:center}.clients img{max-height:3rem;width:auto;filter:grayscale(1);opacity:.75}.clients span{color:var(--ink-soft)}.treeline{display:block;width:100%;height:clamp(2.5rem,6vw,4.5rem);margin-bottom:-1px}.treeline-back{fill:var(--sage);opacity:1}.treeline-front{fill:var(--pine)}.service-footer-divider{background:#e8eee4}#connect{background:var(--pine);color:var(--light);text-align:center;padding-top:3.5rem}#connect h2{color:#fff}#connect p{color:var(--light-soft);max-width:46ch;margin:0 auto 2rem}#connect :focus-visible{outline-color:var(--light)}.contact-form{max-width:44rem;margin:0 auto;text-align:left}.contact-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem}.contact-fields label{display:grid;gap:.4rem;color:var(--light);font-size:.95rem;font-weight:600}.contact-fields input,.contact-fields textarea{width:100%;padding:.8rem .9rem;border:2px solid transparent;border-radius:6px;color:var(--ink);background:var(--paper);font:inherit}.contact-fields textarea{min-height:9rem;resize:vertical}.contact-fields input:focus,.contact-fields textarea:focus{border-color:var(--light-soft);outline:2px solid var(--light);outline-offset:2px}.contact-note{grid-column:1 / -1}.optional{font-weight:400;opacity:.75}.contact-step{border:0;padding:0;margin:0 0 1.75rem;min-width:0}.contact-step legend{display:flex;align-items:center;gap:.75rem;margin-bottom:.9rem;padding:0;color:#fff;font-family:var(--display);font-size:1.15rem}.step-number{display:inline-grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:50%;border:2px solid var(--light-soft);color:var(--light);font-family:var(--body);font-size:.9rem;font-weight:600;transition:background .2s,color .2s,border-color .2s}.contact-step.is-done .step-number,.contact-send[data-state=ready] .step-number{background:var(--paper);border-color:var(--paper);color:var(--pine)}.contact-send[data-state=loading] .step-number,.contact-send[data-state=running] .step-number,.contact-send[data-state=sending] .step-number{animation:step-pulse 1.2s ease-in-out infinite}.contact-send[data-state=interactive] .step-number{border-color:#fff;color:#fff}.contact-send[data-state=failed] .step-number{border-color:#ffc9b4;color:#ffc9b4}@keyframes step-pulse{50%{border-color:#fff}}.contact-wide{grid-column:1 / -1}.turnstile-host{min-height:65px;margin-bottom:.75rem}.check-status,.check-fallback{margin:0;max-width:none;margin-inline:0;text-align:left;font-size:.95rem;color:var(--light)}.check-status:empty{display:none}.contact-send[data-state=failed] .check-status{color:#ffc9b4}.contact-send[data-state=interactive] .check-status{color:#fff;font-weight:600}.check-progress{height:3px;margin:.5rem 0 0;border-radius:2px;background:#ffffff26;overflow:hidden}.check-progress span{display:block;height:100%;width:0;background:var(--paper)}.check-fallback{margin-top:.75rem}.check-fallback a{color:#fff}@media(prefers-reduced-motion:reduce){.step-number{animation:none!important}.check-progress span{transition:none!important}}.contact-noscript{max-width:44rem;margin:0 auto 1.5rem;padding:.9rem 1.1rem;border:1px solid var(--light-soft);border-radius:6px;text-align:left}.contact-status:empty{display:none}.contact-status{margin:1rem 0 0;font-size:.95rem;max-width:none;margin-inline:0;text-align:left}.contact-status.is-ok{color:var(--light)}.contact-status.is-error{color:#ffc9b4}.contact-form button{margin-top:1.25rem;padding:.75rem 1.6rem;border:0;border-radius:999px;color:var(--pine);background:var(--paper);cursor:pointer;font:inherit;font-weight:600}.contact-form button:hover{background:#fff}.contact-form button:disabled,.contact-form button:disabled:hover{background:#6f7d74;color:#cfd6cc;cursor:not-allowed}.contact-honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.connect-links{list-style:none;padding:0;margin:1.5rem 0 0;display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;align-items:center}.linkedin-link{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.6rem;color:var(--light)}.button-solid,.button-outline{display:inline-block;font-weight:600;font-size:.95rem;text-decoration:none;border-radius:999px;padding:.7em 1.6em}.button-solid{background:var(--paper);color:var(--pine)}.button-solid:hover{background:#fff}.button-outline{color:var(--light);border:1px solid var(--light-soft)}.button-outline:hover{border-color:#fff;color:#fff}noscript{color:var(--light-soft);font-size:.9rem}footer{background:var(--pine-deep);color:var(--light-soft);text-align:center;padding:1.75rem 1rem;font-size:.85rem}.notfound{text-align:center;padding:6rem 1rem}@media(max-width:40rem){header nav{width:100%}.contact-fields{grid-template-columns:1fr}.contact-note,.contact-wide{grid-column:auto}}
