@font-face{font-family:Editorial;src:local("Georgia");font-display:swap}
:root{--paper:#f4f0e9;--ink:#242b25;--muted:#697063;--sage:#68735e;--line:#d4d5c9;--serif:Editorial,Georgia,"Times New Roman",serif;--sans:Arial,Helvetica,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6.25rem}body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.6 var(--sans);-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button,a,input,textarea{touch-action:manipulation}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:0.3125rem}button{cursor:pointer}button:disabled{opacity:.6;cursor:wait}img{max-width:100%;height:auto;display:block}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.08;letter-spacing:-.04em}h1{font-size:clamp(2.875rem,5.4vw,4.875rem);margin-bottom:1.625rem}h2{font-size:clamp(2.25rem,4vw,3.5625rem);margin-bottom:1.5rem}h3{font-size:1.25rem;line-height:1.3;font-weight:500;margin-bottom:0.625rem}em{color:var(--sage);font-weight:400}p{color:var(--muted);margin-bottom:1.25rem}.wrap{max-width:80rem;margin:auto;padding-left:3rem;padding-right:3rem}.section{padding-top:5.9375rem;padding-bottom:5.9375rem}.eyebrow{display:block;font-size:0.6875rem;letter-spacing:.17em;line-height:1.8;font-weight:600;margin-bottom:1.6875rem;color:var(--muted)}.lead{font-size:1.125rem;max-width:36.875rem;line-height:1.8}.button{display:inline-flex;justify-content:center;align-items:center;gap:2.1875rem;padding:0.9375rem 1.4375rem;background:var(--ink);color:var(--paper);border:1px solid var(--ink);font-size:0.8125rem;min-height:3rem;text-decoration:none}.button:hover{background:var(--sage);border-color:var(--sage);text-decoration:none}.button.small{padding:0.625rem 1rem;font-size:0.75rem;gap:0.75rem;min-height:2.75rem}.text-link{font-size:0.8125rem;border-bottom:1px solid var(--ink);padding-bottom:0.375rem;display:inline-block;min-height:1.875rem}.header{max-width:90rem;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.5rem 3rem;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:0.75rem;font-size:0.8125rem;white-space:nowrap}/* #GPT: Larger header identity and navigation improve readability across screen sizes. */.header .brand{font-size:1.125rem}.monogram{font:1.625rem var(--serif);border:1px solid var(--line);width:2.6875rem;height:2.6875rem;display:grid;place-content:center;letter-spacing:-.08em}.header nav{display:flex;gap:1.5625rem;font-size:1rem}.header nav a{padding:0.625rem 0}.header-actions{display:flex;align-items:center;gap:1.3125rem}.menu-toggle{display:none}.hero{display:grid;grid-template-columns:1.38fr 1fr;gap:1.5rem;padding-top:5.75rem;padding-bottom:4.5625rem;align-items:center}.hero h1{font-size:clamp(2.875rem,5.25vw,4.75rem);max-width:50rem}.hero .eyebrow{margin-bottom:1.6875rem}.hero .lead{max-width:35.625rem;font-size:1.0625rem}.cooperation{max-width:33.4375rem;font-size:0.875rem;line-height:1.7;border-left:1px solid var(--line);padding-left:1.125rem;margin-top:1.4375rem}.cooperation span{color:var(--sage)}.hero-buttons{display:flex;gap:1.75rem;align-items:center;margin-top:2rem}.location{font-size:0.6875rem;margin-top:1.6875rem;margin-bottom:0}.strategy-art{position:relative;min-width:0;aspect-ratio:1.25;color:#718168;align-self:center}.strategy-art svg{width:100%;height:100%;display:block}.strategy-art>span{position:absolute;font:italic 1.0625rem var(--serif);background:var(--paper);padding:2px 0.4375rem;color:var(--muted)}.strategy-art .tree-main{left:39%;top:84%;font-size:1.5625rem;color:var(--ink)}.tree-ads{top:10%;left:9%}.tree-tests{top:2%;left:52%}.tree-analytics{top:15%;right:0}.tree-sites{top:49%;left:9%}.strategy-art .art-caption{font:0.625rem var(--sans);top:101%;left:20%;letter-spacing:.1em;background:none}.proof{display:grid;grid-template-columns:1fr 1fr 1fr;padding-top:2rem;padding-bottom:2rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.proof>div{display:flex;align-items:center;gap:1.6875rem;padding:0 1.75rem;border-right:1px solid var(--line)}.proof>div:first-child{padding-left:0}.proof>div:last-child{border:0;padding-right:0}.proof strong{font:2.125rem var(--serif);white-space:nowrap}.proof p{font-size:0.75rem;line-height:1.7;margin:0;max-width:10.625rem}.section-head{display:flex;justify-content:space-between;gap:2.5rem;align-items:flex-end;margin-bottom:2.4375rem}.section-head h2{margin-bottom:0}.section-aside{max-width:19.6875rem;font-size:0.875rem}.section-aside p{margin-bottom:1.375rem}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem 1.75rem}.projects-grid.featured{grid-template-columns:repeat(3,minmax(0,1fr))}/* #GPT: Keep title and role above the preview on every viewport. */.project-card{min-width:0;display:flex;flex-direction:column}.project-cover{margin-top:0;flex-shrink:0;background:#e1e4d8;display:block;position:relative;aspect-ratio:1.47;overflow:hidden;border:1px solid #d6d8cd}.project-cover img{width:100%;height:100%;object-fit:cover;object-position:top}/* #GPT: Preserve the full owner-supplied wide AI screenshot instead of cropping its headline. */.project-cover img[src="/media/project-57.png"]{object-fit:contain;object-position:center;background:#111}.case-image[src="/media/project-57.png"]{aspect-ratio:1828/845;object-fit:contain;background:#111}.cover-arrow{position:absolute;bottom:0.875rem;right:0.875rem;background:var(--paper);width:2.3125rem;height:2.3125rem;display:grid;place-content:center}.project-caption{display:flex;flex:1;gap:0.75rem;align-items:stretch;padding-bottom:1.1875rem}.project-number{font-size:0.6875rem;color:var(--muted);padding-top:0.25rem}.project-caption>div{flex:1;min-width:0;display:flex;flex-direction:column}.project-caption .tag{font-size:0.5625rem;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}/* #GPT: Work years sit alongside the category and wrap cleanly on narrow cards. */.project-meta{margin-top:auto;padding-top:0.75rem;line-height:1.5rem;display:flex;flex-wrap:wrap;align-items:center;gap:0.5rem 0.875rem}.project-year{font-size:0.8125rem;color:var(--ink);white-space:nowrap}.project-caption h3{font-family:var(--serif);font-size:1.5625rem;margin:0 0 0.5rem}.project-caption p{font-size:0.75rem;line-height:1.7;margin:0}.project-caption .text-link{align-self:flex-start;border:0}.cover-type{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;height:100%;padding:1.375rem;background:linear-gradient(125deg,#dce2d1,#e9e6db)}.cover-type>span:first-child{font-size:0.625rem;letter-spacing:.1em;text-transform:uppercase}.cover-type strong{font:clamp(1.4375rem,2.5vw,2.25rem) var(--serif);margin:1.125rem 0;max-width:100%;overflow-wrap:anywhere}.cover-type .cover-line{width:2.8125rem;border-top:1px solid var(--ink)}.category-sites .cover-type{background:linear-gradient(140deg,#ded5ce,#eee4d6)}.category-seo .cover-type{background:linear-gradient(140deg,#ccd6d6,#e3e8dd)}.about-section{background:#eceee5;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.about-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:6.25rem}.about-copy{font-size:1rem;padding-top:2.625rem}.emphasis{color:var(--ink);border-left:1px solid var(--sage);padding-left:1.25rem}.portrait{max-width:13.75rem;margin-top:1.75rem;aspect-ratio:1;object-fit:cover}.skills{margin-top:4.0625rem}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.75rem}.skills-grid>div{border-top:1px solid #c2c9b8;padding-top:1.1875rem}.skills-grid h3{font-size:0.9375rem}.skills-grid p{font-size:0.75rem;line-height:1.8}.career-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:6.875rem}.timeline article{padding:0 0 1.5rem 1.625rem;border-left:1px solid var(--line);position:relative}.timeline article:before{content:"";position:absolute;left:-0.25rem;top:0.4375rem;width:0.4375rem;height:0.4375rem;border:1px solid var(--sage);border-radius:50%;background:var(--paper)}.timeline article>span{font-size:0.6875rem;color:var(--muted)}.timeline h3{font-size:1.375rem;font-family:var(--serif);margin-top:0.375rem}.timeline p{font-size:0.8125rem}.career-notes{display:grid;grid-template-columns:1fr 1fr;gap:1.875rem;margin-top:1.5625rem;border-top:1px solid var(--line);padding-top:1.6875rem}.career-notes .eyebrow{margin-bottom:0.75rem}.process-section{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.875rem}.step-number{display:block;font:2.25rem var(--serif);color:var(--sage);margin-bottom:1.375rem}.process-grid h3{font-size:1.0625rem}.process-grid p{font-size:0.8125rem;line-height:1.8}.contact-section{display:grid;grid-template-columns:1.1fr 1fr;gap:5rem;align-items:center}.contact-section>div>p{font-size:0.875rem;max-width:24.375rem}.contact-details{display:flex;flex-direction:column;align-items:flex-start;gap:0.875rem}.contact-details>p{margin-top:1.25rem;font-size:0.75rem}.social-links{display:flex;flex-wrap:wrap;gap:1.375rem;font-size:0.8125rem}.footer{max-width:90rem;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;margin:auto;padding:1.6875rem 3rem calc(1.6875rem + env(safe-area-inset-bottom));border-top:1px solid var(--line);font-size:0.625rem;color:var(--muted)}.filters{display:flex;flex-wrap:wrap;gap:0.8125rem;margin:2rem 0 2.6875rem}.filters a{border:1px solid var(--line);padding:0.625rem 1.25rem;font-size:0.8125rem}.filters .active{background:var(--ink);color:var(--paper)}.listing h1{max-width:40.625rem}.content-page{max-width:68.75rem}.content-page>.text-link{margin-bottom:2.375rem}.content-page>.eyebrow{margin-top:0.9375rem}.content-page h1{overflow-wrap:anywhere}.case-image{width:100%;max-height:34.375rem;object-fit:cover;object-position:top;margin:2.5rem 0;border:1px solid var(--line)}.case-facts{display:grid;grid-template-columns:2fr 1fr;gap:2.5rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1.875rem 0;margin:1.875rem 0}.case-facts .eyebrow{margin-bottom:0.625rem}.case-facts p{margin:0}.prose{max-width:46.25rem}.prose h2{font-size:2.1875rem;margin-top:2.5rem}.prose figure{margin:2.1875rem 0}.prose figcaption{font-size:0.75rem;margin-top:0.625rem}.case-gallery{display:grid;gap:1.5rem;margin-top:2.5rem}.preview-banner{padding:1rem;background:#e2e6d8}.skip{position:fixed;top:-6.25rem;background:var(--ink);color:white;padding:0.625rem;z-index:100}.skip:focus{top:0}dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);width:min(34.375rem,calc(100% - 1.5rem));max-height:calc(100dvh - 1.875rem);padding:0;margin:auto;overflow:auto}dialog::backdrop{background:#1d251eb8;backdrop-filter:blur(3px)}.dialog-inner{position:relative;padding:2.375rem}.dialog-close{position:absolute;right:0.75rem;top:0.5rem;background:transparent;border:0;font-size:1.875rem;width:2.75rem;height:2.75rem}.dialog-inner h2{font-size:2.3125rem}.dialog-inner>p{font-size:0.875rem}.dialog-inner .eyebrow{margin-bottom:0.9375rem}label{display:block;font-size:0.75rem;margin-bottom:1.125rem}input,textarea,select{width:100%;border:1px solid #b9c0b0;border-radius:0;background:#fbfaf5;color:var(--ink);font-size:1rem;padding:0.75rem;min-height:2.875rem;margin-top:0.4375rem}textarea{resize:vertical}input:focus,textarea:focus,select:focus{outline:2px solid var(--sage);outline-offset:2px}.check{display:flex;gap:0.625rem;align-items:flex-start;line-height:1.6}.check input{width:1.125rem;min-height:1.125rem;height:1.125rem;flex-shrink:0;margin-top:3px;accent-color:var(--sage)}.check a{text-decoration:underline}.form-message{font-size:0.8125rem;margin:1rem 0 0}.form-message.error{color:#97432f}.trap{position:absolute;left:-625rem;width:1px;height:1px;overflow:hidden}
@media(min-width:1600px){.hero{padding-top:7.1875rem;padding-bottom:5.9375rem}.strategy-art{max-width:30rem}.header{max-width:90.625rem}}
@media(max-width:1150px){.header{padding:1.25rem 1.875rem;gap:1.125rem}.header nav{gap:1rem}.wrap{padding-left:2.1875rem;padding-right:2.1875rem}.hero{grid-template-columns:1.5fr 1fr}.hero h1{font-size:3.625rem}.proof>div{gap:0.9375rem;padding:0 1.25rem}.proof strong{font-size:1.75rem}.about-grid,.career-grid{gap:3.4375rem}.contact-section{gap:2.5rem}.footer{padding-left:2.1875rem;padding-right:2.1875rem}}
@media(max-width:850px){.header{flex-wrap:wrap;padding:1rem 1.5625rem;position:relative}.brand{font-size:0.75rem}.header .brand{font-size:1rem}.menu-toggle{display:flex;gap:0.625rem;align-items:center;border:0;background:transparent;min-height:2.75rem;margin-left:auto;font-size:1rem}.header nav{display:none;width:100%;order:4;flex-wrap:wrap;padding-top:0.625rem}.header nav.open{display:flex}.header-actions{gap:0.625rem}.header-actions .button{font-size:0.6875rem;padding:0.625rem 0.75rem}.hero{padding-top:4.0625rem;grid-template-columns:1.5fr .8fr;gap:0.9375rem}.hero h1{font-size:3rem}.hero .lead{font-size:0.9375rem}.strategy-art>span{font-size:0.75rem}.strategy-art .tree-main{font-size:1.125rem}.strategy-art .art-caption{display:none}.proof{gap:1.25rem}.proof>div{display:block;padding:0 0.625rem}.proof strong{display:block;margin-bottom:0.625rem}.proof p{max-width:12.5rem}.section{padding-top:4.375rem;padding-bottom:4.375rem}.projects-grid,.projects-grid.featured{grid-template-columns:repeat(2,1fr)}.skills-grid,.process-grid{grid-template-columns:repeat(2,1fr)}.about-grid,.career-grid{gap:2.1875rem;grid-template-columns:1fr 1fr}.footer{flex-wrap:wrap}.section-head{gap:1.5625rem}.section-aside{max-width:16.25rem;font-size:0.75rem}}
@media(max-width:600px){.wrap{padding-left:1.375rem;padding-right:1.375rem}.header{padding:0.75rem max(1.0625rem,env(safe-area-inset-left))}.monogram{width:2.125rem;height:2.25rem;font-size:1.375rem}.header-actions{width:100%;justify-content:space-between;order:3;border-top:1px solid var(--line);padding-top:0.625rem}.header-actions .button{padding:0.5rem 0.75rem;min-height:2.375rem}.hero{display:block;padding-top:2.8125rem;padding-bottom:2.3125rem}.hero h1{font-size:clamp(2.5625rem,10.5vw,3.6875rem);line-height:1.1;letter-spacing:-.045em}.hero .eyebrow{font-size:0.5625rem;letter-spacing:.12em;margin-bottom:1.25rem}.hero .lead{font-size:0.9375rem;line-height:1.75}.cooperation{font-size:0.8125rem;margin-top:1.3125rem}.hero-buttons{gap:1rem;flex-wrap:wrap;margin-top:1.625rem}.hero-buttons .button{font-size:0.75rem;gap:1.4375rem}.hero-buttons .text-link{font-size:0.75rem}.location{font-size:0.625rem;line-height:1.7;margin-top:1.375rem}.strategy-art{max-width:21.25rem;margin:1.25rem auto 0;aspect-ratio:1.55}.strategy-art svg{height:14.375rem}.strategy-art .tree-main{top:89%;left:41%}.strategy-art>span{font-size:0.875rem}.tree-tests{top:1%}.tree-ads{top:11%}.tree-analytics{top:17%;right:0}.tree-sites{top:45%}.proof{grid-template-columns:1fr;gap:0;padding-top:0.625rem;padding-bottom:0.625rem}.proof>div,.proof>div:first-child,.proof>div:last-child{display:flex;align-items:center;gap:1.375rem;border:0;border-bottom:1px solid var(--line);padding:1.125rem 0}.proof>div:last-child{border:0}.proof strong{font-size:1.8125rem;margin:0;width:9.375rem;flex-shrink:0}.proof p{font-size:0.6875rem}.section{padding-top:3.5rem;padding-bottom:3.5rem}.section-head{display:block;margin-bottom:1.8125rem}.section-head h2{font-size:2.5rem}.eyebrow{font-size:0.625rem;margin-bottom:1.1875rem}.section-aside{max-width:100%;margin-top:1.5625rem}.projects-grid,.projects-grid.featured{grid-template-columns:1fr;gap:2rem}.project-cover{aspect-ratio:1.6}.project-caption h3{font-size:1.625rem}.cover-type strong{font-size:2.1875rem}.about-grid,.career-grid,.contact-section{grid-template-columns:1fr;gap:1.125rem}.about-copy{padding-top:0;font-size:0.875rem}.skills{margin-top:2.125rem}.skills-grid{gap:1.25rem}.skills-grid h3{font-size:0.875rem}.skills-grid p{font-size:0.6875rem}.career-grid .timeline{margin-top:1.25rem}.career-notes{gap:1.25rem}.career-notes p{font-size:0.8125rem}.process-grid{gap:1.25rem}.process-grid p{font-size:0.75rem}.step-number{font-size:2rem;margin-bottom:0.9375rem}.contact-details{margin-top:1.625rem}.contact-section h2{font-size:2.6875rem}.footer{padding:1.5625rem 1.375rem calc(1.5625rem + env(safe-area-inset-bottom));gap:1.25rem}.footer>span:nth-child(2){width:100%;order:4}.content-page h1{font-size:2.6875rem}.case-facts{grid-template-columns:1fr;gap:1.5rem}.case-image{margin:1.75rem 0}.dialog-inner{padding:1.875rem 1.375rem max(1.5625rem,env(safe-area-inset-bottom))}.dialog-inner h2{font-size:1.9375rem;margin-top:1.375rem}.filters{gap:0.5rem}.filters a{padding:0.5625rem 0.8125rem;font-size:0.75rem}.header nav a{min-height:2.75rem;padding:0.625rem 0.3125rem}.form-message{min-height:1.375rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media(max-width:360px){.section-head h2{font-size:2rem}.proof strong{width:8.125rem}.proof>div{gap:1.0625rem}}[hidden]{display:none!important}@media(max-width:600px){.header-actions .button{min-height:2.75rem}.header-actions .footer>a{min-height:2.75rem;display:inline-flex;align-items:center}}
/* #GPT: Messenger buttons replace phone/email and retain comfortable mobile tap targets. */
.messenger-link{display:inline-flex;align-items:center;gap:0.5rem;min-height:2.75rem;padding:0.5rem 0.8125rem;border:1px solid var(--line);font-size:1rem;color:var(--ink)}.messenger-link svg{width:1.3125rem;height:1.3125rem;flex-shrink:0}.messenger-link.pending{opacity:.5;cursor:default}.header-socials{gap:0.5rem}.contact-details .social-links{gap:0.75rem}.contact-ways{margin:0;font-size:1rem}.messenger-row{display:flex;align-items:center;gap:1.5rem}.messenger-row>label:first-child{flex:1}.messenger-row .check{white-space:nowrap}.admin-main label>small{color:var(--muted);font-size:0.75rem;line-height:1.6}.admin-main details summary{cursor:pointer;padding:0.75rem 0}
@media(max-width:1150px){.header{flex-wrap:wrap}.header nav{order:4;width:100%;justify-content:center}.header-actions{margin-left:auto}}
@media(max-width:850px){.header-actions{width:100%;justify-content:space-between;border-top:1px solid var(--line);padding-top:0.625rem}.header nav{justify-content:flex-start}.messenger-row{align-items:flex-start;flex-direction:column;gap:0}.messenger-row>label:first-child{width:100%}}
@media(max-width:600px){.header-socials .messenger-link{padding:0.5rem 0.5625rem;font-size:0.875rem}.header-socials .messenger-link svg{width:1.1875rem;height:1.1875rem}.header-actions{gap:0.375rem}.header-socials{gap:0.375rem}}

/* #GPT: Match the owner's 150% desktop reference at normal browser zoom, with readable mobile copy. */
html{font-size:24px}
:root{--text-copy:max(16px,.75rem);--text-action:max(16px,.8125rem);--text-small:max(14px,.625rem)}
.button,.button.small,.text-link,.hero-buttons .button,.hero-buttons .text-link,.header-actions .button,.filters a{font-size:var(--text-action)}
.proof p,.skills-grid p,.project-caption p,.timeline p,.career-notes p,.process-grid p,.contact-section>div>p,.contact-details>p,.dialog-inner>p,.form-message,.prose figcaption,.section-aside{font-size:var(--text-copy)}
.eyebrow,.hero .eyebrow{font-size:max(12px,.6875rem)}
.location,.timeline article>span,.footer,label,.cover-type>span:first-child{font-size:var(--text-small)}
.project-number{font-size:max(12px,.6875rem)}
.project-caption .tag{font-size:max(12px,.5625rem)}
.project-year{font-size:max(14px,.8125rem)}
.strategy-art .art-caption{font-size:var(--text-small);left:0;width:100%;text-align:center}
.proof>div{gap:1rem}
.header-actions{flex-wrap:wrap}
@media(max-width:1700px){.header{flex-wrap:wrap}.header nav{order:4;width:100%;justify-content:center}.header-actions{margin-left:auto}}
@media(max-width:1400px){.proof>div{display:block}.proof strong{display:block;margin-bottom:.75rem}.proof p{max-width:none}}
@media(max-width:1199px){html{font-size:20px}}
@media(max-width:850px){html{font-size:18px}.header nav{justify-content:flex-start}}
@media(max-width:600px){html{font-size:16px}.proof>div,.proof>div:first-child,.proof>div:last-child{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.proof strong{width:auto;margin:0}.proof p{max-width:none}.header-actions{row-gap:10px}.project-caption h3{font-size:28px}.skills-grid h3{font-size:17px}.hero .lead,.cooperation,.about-copy{font-size:16px}}