
:root{--paper:#f8f7f2;--ink:#243d34;--muted:#627067;--green:#315e4c;--line:#dce1d7;--soft:#e9eee4;--accent:#bd6c46}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.7 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:inherit;text-underline-offset:5px}button,input,select,textarea{font:inherit}a,button,input,select,textarea{outline-offset:5px}a:focus-visible,button:focus-visible{outline:3px solid var(--accent)}.wrap{width:min(1100px,calc(100% - 64px));margin:auto}.skip{position:absolute;top:-100px}.skip:focus{top:8px;background:white;padding:10px;z-index:10}header{border-bottom:1px solid var(--line)}nav{min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{text-decoration:none;font:26px Georgia,serif;letter-spacing:-1px}.brand span{color:var(--accent)}.links{display:flex;gap:28px;align-items:center;font-size:14px}.links a{text-decoration:none}.links a:hover{text-decoration:underline}.nav-contact{border:1px solid var(--green);padding:9px 17px;border-radius:5px}.hero{display:grid;grid-template-columns:1.25fr 1fr;gap:80px;align-items:center;padding:90px 0 85px}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:11px;font-weight:650;color:var(--green)}h1,h2,h3{font-family:Georgia,"Times New Roman",serif;font-weight:400;line-height:1.12;letter-spacing:-1.8px}h1{font-size:clamp(44px,5.5vw,68px);margin:22px 0}h1 em{color:var(--green)}.intro{max-width:490px;color:var(--muted);font-size:18px}.buttons{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.button{display:inline-flex;justify-content:center;align-items:center;padding:12px 21px;border:1px solid var(--green);border-radius:5px;text-decoration:none;font-size:14px;font-weight:550;cursor:pointer;background:var(--green);color:white}.button.secondary{color:var(--green);background:transparent}.button:hover{filter:brightness(.92)}.portrait{position:relative;padding:18px 18px 0 0}.portrait:before{content:"";position:absolute;inset:0 0 30px 30px;background:var(--soft);border-radius:170px 170px 8px 8px}.portrait img{position:relative;display:block;width:100%;height:420px;object-fit:cover;object-position:center 30%;border-radius:170px 170px 8px 8px}.portrait figcaption{position:relative;margin:17px 0 0;text-align:center;font-size:12px;color:var(--muted)}.strip{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:21px 0;font-size:12px;color:var(--muted)}.strip strong{font-weight:550;color:var(--ink)}section{padding:80px 0}h2{font-size:42px;margin:12px 0 22px}h3{font-size:27px;letter-spacing:-.6px;margin:20px 0 12px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:35px;margin-bottom:30px}.section-head p{color:var(--muted);max-width:350px;font-size:15px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.card{border-top:1px solid var(--ink);padding-top:22px;display:flex;flex-direction:column}.card p{font-size:15px;color:var(--muted);margin-top:0}.card>a{font-size:13px;font-weight:600;margin-top:auto;align-self:start}.card .category{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--green)}.tile{height:145px;background:var(--soft);display:flex;align-items:center;justify-content:center;border-radius:5px;margin-bottom:22px;color:var(--green);overflow:hidden}.tile svg{width:100%;height:100%}.tile.code{background:#e9e5dc;font:italic 45px Georgia;color:#796149}.tile.research{background:#efe4dc}.about{background:var(--soft)}.about-inner{display:grid;grid-template-columns:.8fr 1.2fr;gap:85px}.about p{color:var(--muted);font-size:16px}.text-links{display:flex;gap:25px;flex-wrap:wrap;margin-top:25px;font-size:14px}.services{margin-top:35px}.service{display:grid;grid-template-columns:50px 230px 1fr;gap:20px;border-top:1px solid var(--line);padding:24px 0;align-items:start}.service span{font-size:12px;color:var(--accent)}.service h3{font-size:23px;margin:0}.service p{margin:0;font-size:15px;color:var(--muted)}.contact{background:var(--ink);color:var(--paper)}.contact-inner{display:grid;grid-template-columns:1fr 1fr;gap:90px}.contact .eyebrow,.contact p{color:#c0d0c1}.contact h2{font-size:44px}.contact a{color:var(--paper)}form{display:grid;grid-template-columns:1fr 1fr;gap:18px}label{display:block;font-size:12px}.field-full{grid-column:1/-1}input,select,textarea{width:100%;padding:11px 12px;margin-top:5px;border:1px solid #73877b;border-radius:4px;background:#304a3e;color:white;font-size:14px}textarea{min-height:110px;resize:vertical}option{background:var(--ink)}.contact .button{background:var(--paper);color:var(--ink);border-color:var(--paper);justify-self:start}.form-note{font-size:11px;margin:0!important}.contact-address{font-size:15px}footer{padding:25px 0}.footer-inner{display:flex;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted)}.footer-links{display:flex;gap:20px}
@media(max-width:800px){.wrap{width:calc(100% - 40px)}.hero{gap:30px;padding:60px 0}.portrait{margin:0}.portrait img{height:330px}.links{gap:16px}.grid{gap:20px}.about-inner,.contact-inner{gap:40px}.service{grid-template-columns:25px 180px 1fr}}@media(max-width:600px){nav{flex-wrap:wrap;padding:18px 0;gap:12px}.links{width:100%;justify-content:space-between;font-size:12px;gap:8px}.nav-contact{padding:6px 10px}.hero{grid-template-columns:1fr;padding:45px 0}.hero h1{font-size:49px}.portrait{max-width:330px;margin:5px auto 0}.portrait img{height:340px}.strip{font-size:11px;gap:12px}.grid,.about-inner,.contact-inner{grid-template-columns:1fr}.grid{gap:38px}.section-head{display:block}.section-head p{max-width:none}.section-head h2{margin-bottom:12px}section{padding:55px 0}h2{font-size:36px}.about-inner{gap:0}.service{grid-template-columns:25px 1fr;gap:12px}.service p{grid-column:2}.contact-inner{gap:30px}.footer-inner{flex-wrap:wrap}.tile{height:160px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.page{padding:55px 0 85px;min-height:65vh}.page-title{max-width:850px;font-size:clamp(34px,5vw,58px)}.prose{max-width:800px}.prose img{max-width:100%;height:auto}.prose a{overflow-wrap:anywhere}.meta{font-size:14px;color:var(--muted)}.article-image{width:100%;max-height:420px;object-fit:contain;background:var(--soft);border-radius:8px;margin:25px 0}.listing{display:grid;gap:24px}.entry{border-top:1px solid var(--line);padding:22px 0}.entry h2{font-size:27px;letter-spacing:-.5px}.entry h2 a{text-decoration:none}.entry p{font-size:15px;color:var(--muted)}.entry[hidden]{display:none}.filter-input{background:white;color:var(--ink);border:1px solid var(--line);max-width:550px;margin:0 0 30px}.empty{color:var(--muted)}
/* Portfolio and case studies */
.portfolio-intro{max-width:720px;font-size:19px;color:var(--muted)}.portfolio-controls{margin:32px 0 0}.portfolio-filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:26px}.chip{background:transparent;border:1px solid var(--line);border-radius:24px;color:var(--ink);padding:9px 17px;font-size:13px;cursor:pointer}.chip.active,.chip:hover{background:var(--green);border-color:var(--green);color:white}.portfolio-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.portfolio-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fffdfa}.portfolio-card[hidden]{display:none}.portfolio-image{height:230px;display:block;background:var(--soft)}.portfolio-image img{width:100%;height:100%;object-fit:cover}.portfolio-fallback{height:100%;display:grid;place-items:center;padding:35px;font:italic 32px Georgia;color:var(--green)}.portfolio-card-body{padding:28px;display:flex;flex-direction:column;flex:1}.portfolio-card h2{font-size:30px;letter-spacing:-.7px;margin:15px 0}.portfolio-card h2 a{text-decoration:none}.portfolio-card p{color:var(--muted);font-size:15px}.tool-tags{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 20px}.tool-tags span{background:var(--soft);padding:3px 10px;border-radius:3px;font-size:11px;color:var(--green)}.case-link{margin-top:auto;font-size:14px;font-weight:600;padding-top:12px}.portfolio-cta{margin-top:65px;padding:36px;background:var(--soft);border-radius:8px}.portfolio-cta h2{font-size:32px;letter-spacing:-.7px}.portfolio-cta p{color:var(--muted)}.case-heading{border:0;padding:35px 0 15px}.case-heading .page-title{max-width:950px}.back-link{font-size:14px}.case-facts{display:grid;grid-template-columns:1fr 1.5fr;gap:30px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;margin-bottom:30px}.case-facts p{margin:7px 0;font-size:15px}.case-hero{display:block;width:100%;max-height:430px;object-fit:contain;background:var(--soft);border-radius:6px;margin-bottom:35px}.case-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:50px;align-items:start}.case-toc{position:sticky;top:25px;font-size:12px;padding-top:30px}.case-toc nav{display:block;min-height:0}.case-toc ul{list-style:none;padding:0}.case-toc li{margin:12px 0}.case-toc a{color:var(--muted)}.case-content h2{font-size:32px;letter-spacing:-.7px;margin-top:35px}.case-content p{font-size:16px}.case-content pre{overflow-x:auto;padding:22px;background:#203c32;color:#f8f7f2;border-radius:6px;font-size:13px;line-height:1.6}.case-content code{overflow-wrap:anywhere}.case-resources{padding:12px 0 25px}.related-projects{display:grid;gap:15px;margin:25px 0;font-size:15px}.case-content section{padding-top:0}.case-content .highlight{max-width:100%;overflow:auto}
@media(max-width:700px){.portfolio-grid{grid-template-columns:1fr}.portfolio-image{height:210px}.case-layout{grid-template-columns:1fr;gap:0}.case-toc{position:static;border-bottom:1px solid var(--line);padding:0 0 20px}.case-facts{grid-template-columns:1fr;gap:10px}.portfolio-cta{padding:24px}.case-heading .page-title{font-size:40px}}
/* Visitor-controlled light and dark themes. */
:root{color-scheme:light}.theme-toggle{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:5px;padding:9px 12px;white-space:nowrap;font-size:12px;cursor:pointer}.theme-toggle:hover{background:var(--soft)}.theme-toggle[hidden]{display:none}
html[data-theme="dark"]{color-scheme:dark;--paper:#14231e;--ink:#e9f0e8;--muted:#b5c5b9;--green:#a6cfb8;--line:#3b5145;--soft:#223b2f;--accent:#e7a17b}
html[data-theme="dark"] .button{background:#a6cfb8;border-color:#a6cfb8;color:#14231e}html[data-theme="dark"] .button.secondary{background:transparent;color:#bfe2ce}html[data-theme="dark"] .portfolio-card{background:#1a2e24}html[data-theme="dark"] .filter-input{background:#1a2e24;color:var(--ink)}html[data-theme="dark"] .chip.active,html[data-theme="dark"] .chip:hover{background:#a6cfb8;color:#14231e}html[data-theme="dark"] .tile.code{background:#39372b;color:#e4cfab}html[data-theme="dark"] .tile.research{background:#3d3029}html[data-theme="dark"] .contact{background:#0d1914;color:#edf3ed}html[data-theme="dark"] .contact a{color:#edf3ed}html[data-theme="dark"] .contact input,html[data-theme="dark"] .contact select,html[data-theme="dark"] .contact textarea{background:#1d3428;color:#edf3ed;border-color:#6b8575}html[data-theme="dark"] .contact option{background:#1d3428}html[data-theme="dark"] .contact .button{background:#e9f0e8;color:#14231e}html[data-theme="dark"] .skip:focus{background:#223b2f;color:#edf3ed}html[data-theme="dark"] .tile svg{filter:brightness(1.7)}html[data-theme="dark"] .highlight pre{background:#102018!important;color:#edf3ed}
@media(max-width:600px){.links{flex-wrap:wrap;justify-content:flex-start;gap:12px 16px}.theme-toggle{margin-left:auto;padding:6px 10px}}
