:root{--paper:#f7f8f3;--green:#245c43;--ink:#23342d;--muted:#647269;--line:#dde4d9;--side:#edf1e8;--serif:Georgia,'Songti SC','Noto Serif CJK SC',serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.8 -apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif}button,input,a{ -webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #a7803d;outline-offset:4px}button{color:inherit}aside{position:fixed;inset:0 auto 0 0;width:232px;padding:40px 28px;background:var(--side);border-right:1px solid var(--line);display:flex;flex-direction:column}.mark{width:44px;height:44px;display:grid;place-items:center;background:var(--green);color:white;font:23px var(--serif);border-radius:50%;margin-bottom:20px}.brand{font:24px var(--serif)}.small,.aside-caption{font-size:12px;color:var(--muted)}nav{margin-top:58px;display:grid;gap:9px}nav a{padding:9px 0;font-size:14px}nav a:hover,nav a.active{color:var(--green);font-weight:650}nav span{font:11px Georgia;display:inline-block;width:28px;color:#88968a}.aside-foot{margin-top:auto;font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:20px}main{margin-left:232px;max-width:1530px;padding:26px 64px 0}.topbar{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:20px;font-size:12px;color:var(--muted);gap:15px}.plain{border:0;background:none;padding:8px 0;font-size:12px}.hero{padding:72px 0 58px;display:grid;grid-template-columns:1fr 220px;gap:46px;align-items:center}.eyebrow{font-size:11px;letter-spacing:.17em;color:var(--green);font-weight:650;text-transform:uppercase}.hero h1{font:clamp(42px,4.8vw,68px)/1.25 var(--serif);font-weight:500;letter-spacing:-.035em;margin:20px 0 22px}.hero h1 em{font-style:normal;color:var(--green)}.intro{max-width:650px;color:var(--muted);font-size:16px;line-height:2}.hero-links{display:flex;gap:24px;align-items:center;margin-top:30px;flex-wrap:wrap}.primary{background:var(--green);color:#fff;border:1px solid var(--green);border-radius:4px;padding:10px 19px;font-size:13px;display:inline-block}.text-link{font-size:13px;border-bottom:1px solid #9bae9e;padding:7px 0}.portrait-box{border:1px solid var(--line);padding:13px;background:#f0f2e9;transform:rotate(2deg);box-shadow:9px 11px 0 #e9ede3}.portrait-box img{width:100%;height:230px;object-fit:cover;object-position:top;display:block}.portrait-box p{font:15px var(--serif);margin:12px 0 2px}.portrait-box span{font-size:10px;color:var(--muted)}.facts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0;margin-bottom:76px}.fact{padding:0 25px;border-right:1px solid var(--line)}.fact:first-child{padding-left:0}.fact:last-child{border:0}.fact strong{font:32px Georgia;color:var(--green)}.fact small{font-size:13px;margin-left:8px}.fact p{margin:3px 0 0;font-size:12px;color:var(--muted)}section{margin-bottom:80px}.section-head{display:flex;gap:25px;justify-content:space-between;align-items:end;margin-bottom:30px}.section-head h2{font:32px/1.35 var(--serif);margin:7px 0 0;font-weight:500}.section-head p{max-width:350px;font-size:13px;color:var(--muted);margin:0}.featured-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.feature{border:1px solid var(--line);background:#fbfcf8;border-radius:5px;overflow:hidden;display:flex;flex-direction:column}.feature-art{height:150px;padding:24px 28px;background:#e8eee4;position:relative;overflow:hidden;display:flex;align-items:center;gap:25px}.feature:nth-child(2) .feature-art{background:#eaece0}.art-number{font:75px/1 Georgia;color:#245c43;letter-spacing:-5px}.art-number small{font:22px Georgia;letter-spacing:0}.art-label{font-size:12px;color:var(--green);line-height:1.9;position:relative;z-index:1}.art-lines{position:absolute;right:-20px;top:-25px;width:170px;height:170px;border:1px solid #becfbc;border-radius:50%}.art-lines:before,.art-lines:after{content:'';position:absolute;inset:22px;border:1px solid #becfbc;border-radius:50%}.art-lines:after{inset:44px}.feature-body{padding:26px;flex:1;display:flex;flex-direction:column}.meta{display:flex;gap:9px;align-items:center;font-size:10px;color:var(--muted);flex-wrap:wrap}.stage{background:#edf2e9;color:var(--green);padding:2px 7px;border-radius:2px;font-size:10px}.feature h3{font:23px/1.5 var(--serif);margin:14px 0 8px}.feature p{font-size:13px;color:var(--muted);margin:0 0 18px}.tags{display:flex;flex-wrap:wrap;gap:6px}.tag{font-size:10px;background:#eef0e9;padding:2px 7px;color:#586a5d;border-radius:2px}.detail-button{background:none;border:0;border-top:1px solid var(--line);width:100%;text-align:left;padding:14px 0 0;margin-top:22px;color:var(--green);font-size:12px;display:flex;justify-content:space-between}.feature-body .tags{margin-top:auto}.feature.compact h3{font-size:21px}.feature.compact .feature-body{padding:23px 26px}.catalog{border-top:1px solid var(--line)}.controls{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:18px}.search{width:270px;max-width:100%;background:#fff;border:1px solid #cdd7c9;padding:10px 13px;border-radius:4px;font-size:13px}.filters{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}.filter{border:1px solid var(--line);background:none;border-radius:30px;padding:6px 13px;font-size:12px}.filter[aria-pressed=true]{color:#fff;background:var(--green);border-color:var(--green)}.project-row{width:100%;display:grid;grid-template-columns:38px minmax(0,1fr) 118px 20px;gap:15px;align-items:center;padding:20px 4px;text-align:left;border:0;border-bottom:1px solid var(--line);background:none}.project-row:hover{background:#edf1e8}.row-no{font:12px Georgia;color:#81917f}.project-row h3{margin:0 0 4px;font-size:15px;font-weight:550}.project-row p{font-size:12px;color:var(--muted);margin:0}.row-meta{text-align:right;font-size:10px;color:var(--muted)}.row-meta .stage{display:inline-block;margin-bottom:5px}.empty{padding:40px;text-align:center;color:var(--muted)}.skill-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 40px}.skill{padding:24px 0;border-top:1px solid var(--line)}.skill h3{font:22px var(--serif);margin:0 0 13px}.skill p{font-size:13px;color:var(--muted);margin:0 0 15px}.skill button{font-size:12px;border:0;background:none;color:var(--green);padding:0;text-decoration:underline;text-underline-offset:5px}.method{background:var(--green);color:#f8f9f3;padding:34px 38px;margin-top:30px;border-radius:4px;display:grid;grid-template-columns:1fr 2fr;gap:35px}.method h3{font:27px/1.6 var(--serif);margin:0}.method p{font-size:13px;color:#d6e2d4;margin:0 0 10px}.method p:last-child{margin:0}.timeline{display:grid;grid-template-columns:145px 1fr;gap:30px;border-top:1px solid var(--line);padding:28px 0}.time{font:13px Georgia;color:var(--muted)}.timeline h3{margin:0;font:23px var(--serif)}.timeline p{font-size:13px;color:var(--muted);margin:12px 0}.timeline ul{padding-left:18px;color:var(--muted);font-size:13px}.honors{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.honors span{font-size:11px;border:1px solid var(--line);padding:7px 11px}.contact{border-top:1px solid var(--line);padding:40px 0 48px;display:flex;justify-content:space-between;align-items:center;gap:25px;margin-bottom:0}.contact h2{font:36px/1.4 var(--serif);margin:10px 0}.contact p{font-size:13px;color:var(--muted)}.contact-actions{display:grid;gap:12px;text-align:right}.contact-actions a{color:var(--green);font:21px Georgia}.copy{border:1px solid var(--line);background:transparent;border-radius:3px;padding:6px 13px;font-size:12px;justify-self:end}footer{border-top:1px solid var(--line);padding:20px 0 30px;font-size:10px;color:var(--muted);display:flex;justify-content:space-between;gap:15px}dialog{border:1px solid var(--line);border-radius:8px;padding:0;width:720px;max-width:calc(100% - 28px);max-height:88vh;color:var(--ink);background:var(--paper);box-shadow:0 25px 100px #17372830}dialog::backdrop{background:#19342880;backdrop-filter:blur(3px)}.dialog-head{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:15px 30px;background:var(--paper);border-bottom:1px solid var(--line);z-index:2}.close{border:0;background:#e8ede2;border-radius:50%;width:33px;height:33px;font-size:21px}.dialog-content{padding:26px 34px 34px}.dialog-content h2{font:30px/1.4 var(--serif);margin:12px 0}.dialog-content h3{font-size:12px;color:var(--green);letter-spacing:.08em;margin:25px 0 8px}.dialog-content p,.dialog-content li{font-size:14px;line-height:1.9}.dialog-content ul{padding-left:20px}.scope{font-size:12px!important;color:var(--muted);background:#eaf0e5;padding:15px 18px;border-left:2px solid #729471}.mobile-brand{display:none}.print-only{display:none}@media(min-width:1500px){main{padding-left:86px;padding-right:86px}}@media(max-width:1100px){aside{width:190px;padding:30px 22px}main{margin-left:190px;padding:25px 35px 0}.hero{grid-template-columns:1fr 160px;gap:30px}.portrait-box img{height:190px}.hero h1{font-size:46px}.section-head p{max-width:270px}}@media(max-width:760px){aside{display:none}main{margin-left:0;padding:18px 22px 0}.topbar{font-size:10px}.mobile-brand{display:inline;color:var(--green)}.desktop-label{display:none}.hero{padding:42px 0 35px;grid-template-columns:1fr 100px;gap:15px;align-items:start}.hero h1{font-size:37px;margin-top:12px}.hero .intro,.hero-links{grid-column:1/-1}.hero-content{display:contents}.hero-title{grid-column:1}.portrait-box{grid-column:2;grid-row:1;padding:6px;margin-top:25px;box-shadow:5px 6px 0 #e9ede3}.portrait-box img{height:118px}.portrait-box p{font-size:12px;margin-top:7px}.portrait-box span{font-size:8px}.intro{font-size:14px;margin:0}.hero-links{margin-top:3px}.facts{padding:18px 0;margin-bottom:48px}.fact{padding:0 12px}.fact strong{font-size:26px}.fact small{font-size:10px;margin-left:4px}.fact p{font-size:10px;line-height:1.6}.section-head{display:block;margin-bottom:22px}.section-head h2{font-size:28px}.section-head p{max-width:none;margin-top:13px;font-size:12px}.featured-grid{grid-template-columns:1fr}.feature-art{height:130px}.feature h3{font-size:22px}.feature-body{padding:22px}.controls{align-items:start;flex-direction:column;gap:9px}.search{width:100%}.project-row{grid-template-columns:23px minmax(0,1fr) 12px;gap:9px;padding:18px 0}.row-meta{display:none}.project-row p{font-size:11px}.project-row h3{font-size:14px}.skill-grid{grid-template-columns:1fr}.method{grid-template-columns:1fr;gap:16px;padding:25px}.method h3{font-size:24px}.timeline{grid-template-columns:1fr;gap:12px}.timeline h3{font-size:21px}section{margin-bottom:50px}.contact{display:block;padding-top:30px}.contact-actions{text-align:left;margin-top:25px}.copy{justify-self:start}.contact h2{font-size:29px}footer{display:block}footer span{display:block}.dialog-head{padding:12px 18px}.dialog-content{padding:20px}.dialog-content h2{font-size:25px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{@page{size:A4;margin:14mm}body{font-size:10pt;background:white}aside,.topbar,.hero-links,.portrait-box,#all-projects,.method,.contact-actions button,footer,dialog,.detail-button{display:none!important}main{padding:0;margin:0;max-width:none}.hero{display:block;padding:0 0 15px}.hero h1{font-size:29pt;margin:7px 0}.hero .intro{font-size:10pt;line-height:1.6}.eyebrow{font-size:8pt}.facts{margin:0 0 22px;padding:10px 0}.fact strong{font-size:21pt}section{margin-bottom:24px}.section-head{margin-bottom:15px}.section-head h2{font-size:20pt}.section-head p{font-size:9pt}.feature-art{display:none}.featured-grid{gap:10px}.feature-body,.feature.compact .feature-body{padding:12px}.feature h3,.feature.compact h3{font-size:14pt;margin:6px 0}.feature p{font-size:9pt;line-height:1.5;margin-bottom:8px}.feature,.skill,.timeline{break-inside:avoid}.skill{padding:12px 0}.skill h3{font-size:14pt}.skill p{font-size:9pt}.skill button{display:none}.timeline{padding:14px 0}.timeline h3{font-size:15pt}.timeline p,.timeline li{font-size:9pt}.contact{padding:10px 0;display:flex}.contact h2{font-size:18pt}.contact-actions a{font-size:12pt}.print-only{display:block!important}.honors{margin-top:10px}.honors span{font-size:8pt}.tags .tag{font-size:7pt}}
@media(max-width:760px){.hero{grid-template-columns:1fr}.hero-title{grid-column:1/-1}.portrait-box{display:none}.hero h1{font-size:36px}.hero .eyebrow{font-size:10px}.hero-links{margin-top:12px}}

/* Portfolio refinement: more readable case studies, quieter portrait treatment. */
.portrait-box{transform:none;border-radius:110px 110px 7px 7px;padding:10px;box-shadow:8px 9px 0 #e7ecdf;background:#eef1e7}.portrait-box img{height:auto;aspect-ratio:1;object-fit:cover;border-radius:100px 100px 4px 4px}.portrait-box p{margin:13px 6px 2px}.portrait-box span{display:block;margin:0 6px 7px}.feature-story{line-height:1.95!important}.feature-art{height:125px}.feature{transition:border-color .2s,box-shadow .2s}.feature:hover{border-color:#aebfa9;box-shadow:0 8px 25px #23342d08}.feature.compact .feature-body{padding:28px}.detail-button{padding-top:18px;margin-top:24px}.project-row{transition:background .15s}.reader-byline{display:flex;justify-content:space-between;gap:14px;margin:18px 0;color:var(--muted);font-size:12px}.reader-byline span{font-size:11px}dialog{width:850px;max-height:90vh}.dialog-content{padding:35px 48px 30px}.dialog-content h2{font-size:35px;line-height:1.45;max-width:650px}.project-prose{border-top:1px solid var(--line);margin-top:26px;padding-top:8px}.project-prose p{font-size:16px;line-height:2.15;margin:24px 0;color:#3e5045;text-align:justify}.project-prose p:first-child{font-size:17px;color:var(--ink)}.reader-footer{border-top:1px solid var(--line);padding-top:20px;display:flex;gap:22px;align-items:start;justify-content:space-between;font-size:11px;color:var(--muted)}.next-project{max-width:75%;background:none;border:0;color:var(--green);font-size:12px;text-align:right;padding:0}.dialog-head{padding:15px 30px}.close{min-width:36px;min-height:36px}@media(max-width:760px){.hero{display:flex;flex-direction:column;gap:20px}.hero-title{order:1}.hero .intro{order:2}.hero-links{order:3}.portrait-box{display:block;order:0;width:82px;margin:0;padding:4px;border-radius:50%;box-shadow:4px 4px 0 #e7ecdf;align-self:flex-start}.portrait-box img{height:auto;border-radius:50%}.portrait-box p,.portrait-box span{display:none}.hero h1{font-size:clamp(30px,8vw,36px);margin-bottom:0}.dialog-content{padding:22px}.dialog-content h2{font-size:27px}.project-prose p,.project-prose p:first-child{font-size:15px;line-height:2}.reader-byline{display:block}.reader-byline span{display:block;margin-top:4px}.reader-footer{gap:12px}.feature.compact .feature-body{padding:24px}.feature-story{font-size:13px!important}}@media print{.portrait-box{display:none!important}.feature-story{font-size:9pt!important;line-height:1.6!important}.feature.compact .feature-body{padding:12px}}@media(prefers-reduced-motion:reduce){.feature,.project-row{transition:none}}

.case-intro{font-size:17px!important;line-height:1.85!important;margin:26px 0 22px!important;color:var(--ink)}.case-notes{border-top:1px solid var(--line);margin-bottom:26px}.case-note{display:grid;grid-template-columns:125px minmax(0,1fr);gap:24px;padding:23px 0;border-bottom:1px solid var(--line)}.case-note h3{font-size:13px;margin:3px 0;color:var(--green);letter-spacing:0;line-height:1.8}.case-note p{font-size:15px;line-height:1.9;margin:0;color:#43544a}.reader-byline{margin:14px 0}.dialog-content{padding-top:26px}.dialog-content h2{margin:10px 0}.reader-footer{border-top:0;padding-top:0}@media(max-width:760px){.case-note{grid-template-columns:1fr;gap:7px;padding:18px 0}.case-note h3{font-size:13px}.case-note p{font-size:14px}.case-intro{font-size:16px!important}.dialog-content{padding:22px}}

.case-notes{margin-top:25px}.case-note h3{font-size:14px}.case-boundary{margin:0 0 24px;font-size:12px;color:var(--muted)}.case-boundary summary{cursor:pointer;width:fit-content}.case-boundary p{font-size:12px;line-height:1.8;margin:10px 0;background:var(--side);padding:12px 15px}.hero h1{font-size:clamp(36px,4vw,57px);line-height:1.35}@media(max-width:760px){.hero h1{font-size:clamp(28px,7.5vw,36px)}}

.kw{font-weight:600}.kw-tech{color:#275da0}.kw-role{color:#7951a0}.kw-result{color:#9a590c}.tag.tech-tone-0{color:#275da0;background:#eaf0fa}.tag.tech-tone-1{color:#7951a0;background:#f1ebf6}.tag.tech-tone-2{color:#a05422;background:#fbf0e7}.tag.tech-tone-3{color:#24705b;background:#e7f3ee}.project-metrics{display:flex;flex-wrap:wrap;gap:15px 25px;padding:20px 0;margin:8px 0 18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.project-metrics>div{flex:1;min-width:110px}.project-metrics strong{display:block;font:27px/1.35 Georgia,'Songti SC',serif;color:#956025}.project-metrics span{display:block;font-size:11px;color:var(--muted);margin-top:5px}.feature .project-metrics{padding:13px 0;margin:0 0 19px;gap:12px}.feature .project-metrics strong{font-size:20px}.feature .project-metrics>div{min-width:85px}.role-overview{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}.role-overview span{font-size:11px;color:#7951a0;background:#f0ebf3;padding:3px 9px;border-radius:3px}.career-roles{color:#7951a0!important;line-height:2}.dialog-content .case-notes{margin-top:18px}.dialog-content .project-metrics{margin-top:22px}.case-note{padding:19px 0}@media(max-width:760px){.role-overview{order:3;margin-top:0}.hero-links{order:4}.project-metrics{gap:15px}.project-metrics>div{min-width:85px}.project-metrics strong{font-size:23px}}@media print{.role-overview{margin:8px 0}.project-metrics strong{font-size:15pt}.feature .project-metrics{padding:8px 0}.kw{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

.case-topline{display:flex;align-items:center;gap:10px}.case-number{font:19px Georgia;color:#93a38f;margin-right:auto}.case-domain{font-size:10px;color:var(--muted)}.feature h3{margin-top:22px;font-size:24px}.feature .case-headline{font-size:13px;color:var(--green);margin:0 0 22px;line-height:1.7}.lead-case{background:linear-gradient(145deg,#f0f4e9,#fcfdf9)}.lead-case .feature-body{padding:30px}.feature-role{font-size:11px;color:#7951a0;margin-top:17px}.feature .detail-button{margin-top:16px}.feature .feature-story{line-height:1.85!important;margin-bottom:20px}.feature .tags{margin-top:0}.collection-overview{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);margin-bottom:26px;border-radius:5px;overflow:hidden}.collection-tile{display:flex;flex-direction:column;text-align:left;background:transparent;border:0;border-right:1px solid var(--line);padding:18px;gap:9px}.collection-tile:last-child{border-right:0}.collection-tile:hover,.collection-tile.selected{background:#e8efdf}.collection-index{font:12px Georgia;color:#8b9a82}.collection-tile strong{font-size:15px;font-weight:550}.collection-tile small{font:13px Georgia;color:var(--green);margin-left:6px}.collection-tile>span:last-child{font-size:11px;color:var(--muted);line-height:1.65}.catalog-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.catalog-toolbar .filters{margin:0}.catalog-selects{display:flex;gap:16px;flex-wrap:wrap}.catalog-selects label{font-size:11px;color:var(--muted)}.catalog-selects select{margin-left:5px;background:transparent;border:0;border-bottom:1px solid var(--line);color:var(--ink);padding:8px 3px;font:12px inherit;max-width:150px}.group-heading{display:flex;justify-content:space-between;align-items:center;padding:15px 5px;background:#edf1e7;border-bottom:1px solid var(--line)}.group-heading h3{font-size:13px;font-weight:600;margin:0}.group-heading span{font-size:10px;color:var(--muted)}.catalog-group+.catalog-group{margin-top:30px}.row-impact{display:block;font-size:11px;color:#82633d;margin-top:8px}.row-impact b{font-weight:550}.detail-deck{font-size:15px!important;color:var(--green);margin:12px 0!important}.responsibility-tags{display:flex;gap:8px;flex-wrap:wrap}.responsibility-tags span{font-size:13px;color:#7951a0;padding:3px 10px;background:#f0ebf5;border-radius:3px}.case-text{min-width:0}.case-note p{line-height:1.95}.case-note{padding:23px 0}.dialog-content{padding-bottom:28px}.controls{margin-bottom:18px}@media(max-width:1100px){.collection-overview{grid-template-columns:1fr 1fr}.collection-tile:nth-child(2){border-right:0}.collection-tile:nth-child(-n+2){border-bottom:1px solid var(--line)}}@media(max-width:760px){.lead-case .feature-body{padding:24px}.feature h3{font-size:23px}.collection-tile{padding:15px}.collection-tile>span:last-child{font-size:10px}.case-note{padding:19px 0}.catalog-selects{width:100%;justify-content:space-between}.catalog-toolbar{gap:15px}.row-impact{font-size:10px;line-height:1.9}.case-domain{font-size:9px}.case-note p{font-size:14px}.project-row{align-items:start}.row-no{padding-top:4px}}@media print{.lead-case .feature-body{padding:12px}.feature h3{font-size:14pt}.case-number{font-size:12pt}.feature .case-headline{font-size:9pt;margin-bottom:8px}}
.ranking-note{font-size:11px;color:var(--muted);margin:0 0 18px}.ranking-note summary{cursor:pointer;width:fit-content}.ranking-note p{max-width:700px;margin:9px 0;line-height:1.8}select:focus-visible{outline:3px solid #a7803d;outline-offset:3px}

/* Finishing pass: navigation, case-study rhythm, reading and filter states. */
.skip-link{position:fixed;top:10px;left:10px;transform:translateY(-180%);z-index:50;background:var(--green);color:white;padding:9px 15px;border-radius:4px}.skip-link:focus{transform:translateY(0)}.mobile-nav{display:none}.active-filters{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:22px;margin:0 0 12px;font-size:11px;color:var(--muted)}.active-filters:has(button[hidden]){min-height:0;margin-bottom:8px}.active-filters button{border:0;background:none;color:var(--green);font-size:12px;text-decoration:underline;text-underline-offset:4px;padding:5px 0}.detail-position{font-size:11px;color:var(--muted);margin:14px 0 20px;font-variant-numeric:tabular-nums}.reader-prev{border:0;background:none;padding:0;color:var(--green);font-size:12px;white-space:nowrap}.reader-footer button{min-height:38px}.reader-footer button:disabled{color:#9aa396;cursor:default}.reader-footer{align-items:center}.case-note{grid-template-columns:96px minmax(0,1fr);gap:22px}.case-note h3{font-size:12px;letter-spacing:.02em}.case-note p{font-size:14px;line-height:2}.dialog-content .project-metrics{margin-top:20px;margin-bottom:8px}.dialog-content{padding:28px 40px}.case-notes{margin-bottom:20px}.lead-case .project-metrics{background:#e9efe0;border:0;border-radius:4px;padding:16px;margin-left:-8px;margin-right:-8px}.lead-case .project-metrics>div{padding-left:4px}.feature-body{padding:27px}.feature h3{line-height:1.5}.lead-case h3{font-size:26px}.feature-role{padding-top:4px}.feature.compact .project-metrics{gap:10px}.project-row{padding:21px 8px;border-radius:3px}.project-row:focus-visible{outline-offset:-3px}.contact{margin-top:18px}.search{min-height:43px}.filter{min-height:35px}.method{margin-top:20px}.static-projects{display:grid;gap:14px}.static-project{padding:22px;border:1px solid var(--line);border-radius:4px}.static-project h3{margin-top:0}.static-project h4{font-size:12px;color:var(--green);margin-bottom:5px}.static-project p{font-size:14px;margin-top:0}dialog{overscroll-behavior:contain}.close:hover{background:#dfe8d8}.detail-button:hover{color:#163d2c}.primary:hover{background:#194b34}.primary,.close{transition:background .15s}
@media(min-width:1101px){.hero{grid-template-columns:minmax(0,1fr) 204px;gap:35px}.hero h1{font-size:clamp(37px,3.8vw,55px)}.featured-grid{gap:22px}.feature.compact .feature-body{padding:25px}.section-head p{max-width:330px}}
@media(max-width:760px){html{scroll-padding-top:76px}.mobile-nav{display:flex;position:sticky;top:0;z-index:10;align-items:center;justify-content:space-between;background:#f7f8f3f5;border-bottom:1px solid var(--line);padding:8px 19px;backdrop-filter:blur(10px);min-height:55px}.mobile-nav>a{font:18px var(--serif);color:var(--green);white-space:nowrap}.mobile-nav nav{display:flex;margin:0;gap:3px}.mobile-nav nav a{padding:8px;font-size:12px}.mobile-nav nav a.active{background:var(--side);border-radius:4px}.topbar{justify-content:flex-end;padding:0 0 12px;border:0}.topbar .mobile-brand{display:none}main{padding-top:8px}.hero{padding-top:15px}.hero-title .eyebrow{letter-spacing:.1em}.hero h1{line-height:1.45}.intro{line-height:1.9}.hero-links{gap:20px}.hero-links .small{width:100%;font-size:11px}.portrait-box{width:72px}.facts{margin-bottom:45px}.section-head h2{font-size:27px}.section-head p{line-height:1.8}.dialog-content{padding:22px}.case-note{grid-template-columns:1fr;gap:7px}.case-note h3{font-size:12px}.case-note p{font-size:14px}.detail-position{margin-bottom:16px}.lead-case h3{font-size:24px}.reader-footer{gap:12px}.reader-footer .next-project{max-width:68%;font-size:11px}.collection-tile{min-height:121px}.contact-actions a{font-size:20px}.active-filters{align-items:start}.active-filters span{overflow-wrap:anywhere}}
@media(max-width:350px){.mobile-nav{padding:8px 13px}.mobile-nav nav a{padding:8px 6px}.mobile-nav>a{font-size:17px}.project-metrics strong{font-size:21px}.hero h1{font-size:28px}}
@media print{.mobile-nav,.active-filters,.skip-link,.role-overview{display:none!important}.lead-case .project-metrics{background:transparent;margin:0;padding:8px 0}.feature.compact .feature-body{padding:12px}.lead-case h3{font-size:14pt}.feature-role{font-size:8pt}.hero{display:block}.hero h1{font-size:26pt}.facts{margin-bottom:18px}.section-head p{font-size:9pt}.contact{margin-top:0}.project-metrics{break-inside:avoid}}
@media(prefers-reduced-motion:reduce){.primary,.close{transition:none}}

/* v9: project sharing, useful print output, and mobile scanability. */
.dialog-actions{display:flex;gap:6px;margin-left:auto;margin-right:12px}
.dialog-actions button{border:1px solid var(--line);border-radius:4px;background:transparent;padding:7px 10px;font-size:11px;min-height:36px}
.dialog-actions button:active,.copy:active,.filter:active{background:#e2ebda}
.project-link-status{font-size:12px;color:var(--green);padding:12px 40px 0;margin:0;overflow-wrap:anywhere}
.project-link-status:empty{display:none}
.project-print-contact,.project-print-note,.mobile-stage{display:none}
.feature .detail-button{min-height:44px}
.feature-role{margin-top:auto;padding-top:18px}
.feature-body .tags{margin-bottom:4px}
.row-impact{font-variant-numeric:tabular-nums}
.search{width:320px}
#detail-title:focus{outline:none}
@media(hover:hover) and (pointer:fine){.dialog-actions button:hover{background:var(--side);border-color:#aebfa9}}
@media(max-width:760px){
 .dialog-head{padding:10px 14px;gap:6px}.dialog-head>.eyebrow{font-size:9px;letter-spacing:.04em}
 .dialog-actions{gap:5px;margin-right:3px}.dialog-actions button{font-size:10px;padding:7px 8px;min-height:40px;white-space:nowrap}
 .close{min-width:40px;min-height:40px}.project-link-status{padding:12px 22px 0}
 .mobile-stage{display:inline-block;font-size:10px;color:var(--green);background:var(--side);padding:1px 6px;border-radius:2px;margin:2px 0 7px}
 .search{width:100%;font-size:16px}.catalog-selects select{font-size:16px;font-family:inherit;max-width:145px}
 .filter{min-height:40px}.project-row p{line-height:1.8}.row-impact{font-size:11px}
}
@media(max-width:350px){.dialog-head>.eyebrow{display:none}.dialog-actions{margin-left:0;margin-right:auto}}
@media print{
 .project-link-status,.dialog-actions{display:none!important}
 body.reading-project>main,body.reading-project>aside,body.reading-project>.mobile-nav{display:none!important}
 body.reading-project{overflow:visible!important}
 body.reading-project dialog[open]{display:block!important;position:static;inset:auto;width:auto;max-width:none;max-height:none;overflow:visible;margin:0;border:0;box-shadow:none;background:white}
 body.reading-project dialog::backdrop{display:none}
 body.reading-project .dialog-head,body.reading-project .reader-footer,body.reading-project .detail-position{display:none!important}
 body.reading-project .dialog-content{padding:0}
 body.reading-project .dialog-content h2{font-size:23pt}
 body.reading-project .case-notes{border-top:1px solid #bbb}
 body.reading-project .case-note{display:block;padding:12px 0;break-inside:avoid}
 body.reading-project .case-note h3{font-size:10pt;margin-bottom:6px}
 body.reading-project .case-note p{font-size:10pt;line-height:1.7}
 body.reading-project .case-boundary{display:none}
 body.reading-project .project-print-contact{display:block;margin-top:18px;border-top:1px solid #bbb;padding-top:12px;font-size:10pt}
}

@media print{body.reading-project .project-print-note{display:block;font-size:9pt;color:#526055;line-height:1.7;margin-top:16px}}

/* Selected outcomes: a concise view of concrete project results. */
.outcomes-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.outcome-card{display:flex;flex-direction:column;min-width:0;padding:23px;background:#f0f3eb;border:1px solid #dce5d7;border-radius:5px}
.outcome-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.outcome-number{font:12px Georgia,serif;color:#809381;letter-spacing:.06em}
.outcome-metric{border-bottom:1px solid #d7e1d3;margin:28px 0 18px;padding-bottom:18px}
.outcome-metric strong{display:block;font:clamp(25px,2.4vw,36px)/1.2 Georgia,'Songti SC',serif;color:#956025}
.outcome-metric span{display:block;color:var(--muted);font-size:11px;margin-top:6px}
.outcome-card h3{font:20px/1.5 var(--serif);margin:0 0 9px}
.outcome-card p{font-size:12px;line-height:1.9;color:var(--muted);margin:0 0 20px}
.outcome-link{display:flex;justify-content:space-between;gap:10px;align-items:center;width:100%;margin-top:auto;padding:12px 0 0;text-align:left;border:0;border-top:1px solid #d7e1d3;background:none;color:var(--green);font-size:12px}
@media(hover:hover) and (pointer:fine){.outcome-link:hover{color:#153c2b;text-decoration:underline;text-underline-offset:4px}}
@media(max-width:1100px){.outcomes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.outcomes-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.outcome-card{padding:16px}.outcome-metric{margin:22px 0 14px;padding-bottom:14px}.outcome-metric strong{font-size:25px}.outcome-card h3{font-size:17px}.outcome-card p{font-size:12px}.outcome-link{min-height:44px;font-size:11px}}
@media(max-width:340px){.outcomes-grid{grid-template-columns:1fr}}
@media print{#outcomes{display:none}}

/* Project image gallery */
#open-gallery{color:#245c43;background:#e6eee1;border-color:#d3e1cf;font-weight:600}
#open-gallery[hidden]{display:none}
#gallery{width:1040px;max-height:90vh;padding:0;background:#f8f9f4;overflow:auto}
#gallery::backdrop{background:#10271edd;backdrop-filter:blur(5px)}
.gallery-head{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:22px 28px 16px}
.gallery-head h2{margin:3px 0 0;font:22px/1.4 var(--serif);font-weight:500}
.gallery-close{flex:none;width:40px;height:40px;border:0;border-radius:50%;background:#e8ede2;font-size:24px;line-height:1}
.gallery-figure{margin:0;padding:0 28px}
.gallery-figure img{display:block;width:100%;height:auto;max-height:62vh;object-fit:contain;border-radius:4px;background:#e9eee5}
.gallery-figure figcaption{display:flex;justify-content:space-between;align-items:start;gap:18px;padding:18px 0 8px}
.gallery-figure figcaption strong{font-size:14px;color:var(--ink)}
.gallery-figure figcaption p{margin:5px 0 0;font-size:12px;color:var(--muted);line-height:1.8}
.gallery-kind{flex:none;font-size:10px;letter-spacing:.04em;color:#476c52;background:#e6efe1;padding:4px 9px;border-radius:3px}
.gallery-controls{display:flex;justify-content:space-between;align-items:center;padding:12px 28px 22px;color:var(--muted);font-size:11px}
.gallery-controls button{background:transparent;border:1px solid var(--line);border-radius:4px;padding:8px 12px;color:var(--green);font-size:12px}
.gallery-controls button:disabled{color:#a8b0a6;cursor:default}
@media(max-width:760px){.dialog-head>.eyebrow{display:none}.dialog-actions{margin-left:0;margin-right:auto}.gallery-head{padding:18px 18px 12px}.gallery-head h2{font-size:18px}.gallery-figure{padding:0 18px}.gallery-figure img{max-height:55vh}.gallery-figure figcaption{display:block}.gallery-kind{display:inline-block;margin-top:10px}.gallery-controls{padding:10px 18px 18px}.gallery-controls button{min-height:40px}}
@media(max-width:350px){.dialog-actions button{padding:7px 5px;font-size:10px}.dialog-head{gap:3px}}
@media print{#gallery{display:none!important}}
.gallery-thumbnails{display:flex;gap:9px;padding:4px 28px 2px;overflow-x:auto}
.gallery-thumbnails[hidden]{display:none}
.gallery-thumbnails button{width:112px;flex:none;padding:4px;background:#fff;border:1px solid var(--line);border-radius:4px;text-align:left;color:var(--muted)}
.gallery-thumbnails button[aria-pressed=true]{border-color:#477459;box-shadow:0 0 0 1px #477459}
.gallery-thumbnails img{display:block;width:100%;height:58px;object-fit:cover;object-position:top;border-radius:2px;background:#edf1e8}
.gallery-thumbnails span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:4px 2px 1px;font-size:10px}
@media(max-width:760px){.gallery-thumbnails{padding-left:18px;padding-right:18px}.gallery-thumbnails button{width:96px}.gallery-thumbnails img{height:50px}}
/* Keep the image, caption and controls visible together on typical laptop screens. */
.gallery-figure img{max-height:43vh}
@media(max-width:760px){.gallery-figure img{max-height:40vh}}
.gallery-head-actions{display:flex;align-items:center;gap:10px}
#gallery-zoom{border:1px solid var(--line);border-radius:4px;background:transparent;color:var(--green);font-size:12px;min-height:38px;padding:7px 12px}
#gallery.is-zoomed .gallery-figure img{max-height:none;object-fit:contain}
@media(max-width:760px){#gallery-zoom{min-height:40px}}
#gallery-zoom{white-space:nowrap;flex:none}

/* v12 — editorial preview and a focused image stage */
.gallery-preview{display:grid;grid-template-columns:1fr 1.25fr;width:100%;min-height:230px;margin:26px 0 36px;padding:0;overflow:hidden;border:1px solid #cddccc;border-radius:12px;background:#edf2e8;color:var(--ink);text-align:left}
.preview-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:12px;padding:28px}
.preview-label{font-size:10px;letter-spacing:.16em;color:var(--green)}
.preview-copy>strong{font:26px/1.4 var(--serif);font-weight:500}
.preview-copy>span:not(.preview-label):not(.preview-link){font-size:12px;color:var(--muted)}
.preview-link{display:flex;align-items:center;gap:24px;margin-top:8px;font-size:12px;color:var(--green)}
.preview-link b{font-size:22px;font-weight:400}
.preview-image{position:relative;display:flex;align-items:center;padding:24px;background:radial-gradient(ellipse at 70% 20%,#4a6d59,#193d2d)}
.preview-image img{display:block;width:100%;max-height:210px;object-fit:contain;box-shadow:0 16px 32px #0b211d55;border-radius:5px;transition:transform 220ms cubic-bezier(.23,1,.32,1)}
.preview-expand{position:absolute;right:14px;bottom:14px;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#f7f8f3;color:#245c43;font-size:20px}
#gallery{width:1180px;border:1px solid #cbd8c9;border-radius:14px;box-shadow:0 32px 100px #071c2466}
.gallery-head{padding:24px 32px 22px;border-bottom:1px solid var(--line)}
.gallery-head .eyebrow{font-size:10px;letter-spacing:.18em}
.gallery-head h2{font-size:25px;margin-top:8px}
.gallery-figure{padding:0}
.gallery-stage{display:flex;justify-content:center;align-items:center;padding:30px 40px;background:radial-gradient(ellipse at 50% 0%,#496a56,#142e24);min-height:280px}
.gallery-stage img{width:auto;max-width:100%;height:auto;max-height:47vh;border:1px solid #ffffff30;border-radius:5px;box-shadow:0 18px 38px #071b1966}
.gallery-figure figcaption{padding:22px 32px 18px;align-items:center}
.gallery-figure figcaption strong{font:22px/1.4 var(--serif)}
.gallery-figure figcaption p{font-size:13px}
.gallery-kind{font:17px/1.4 Georgia,serif;letter-spacing:.06em;color:var(--green);background:none;padding:0}
.gallery-thumbnails{padding:0 32px 12px}
.gallery-thumbnails button{width:140px;padding:6px;border-radius:6px}
.gallery-thumbnails img{height:66px}
.gallery-controls{padding:15px 32px 22px;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
.gallery-controls button{min-height:42px}
.gallery-close,#gallery-zoom,.gallery-controls button,.gallery-preview{transition:transform 160ms ease-out,background-color 160ms ease-out}
.gallery-close:active,#gallery-zoom:active,.gallery-controls button:not(:disabled):active{transform:scale(.97)}
#gallery.is-zoomed .gallery-stage{display:block;overflow:auto}
#gallery.is-zoomed .gallery-stage img{width:100%;max-height:none}
@media(hover:hover) and (pointer:fine){.gallery-preview:hover .preview-image img{transform:translateY(-4px)}.gallery-preview:hover{background:#e6eddf}.gallery-controls button:not(:disabled):hover,#gallery-zoom:hover{background:#e6eddf}}
@media(max-width:760px){.gallery-preview{grid-template-columns:1fr;min-height:0;border-radius:9px}.preview-copy{padding:22px;gap:8px}.preview-copy>strong{font-size:24px}.preview-link{margin-top:0}.preview-image{padding:20px 26px}.preview-image img{max-height:180px}#gallery{max-width:calc(100vw - 20px);max-height:92dvh;border-radius:10px}.gallery-head{padding:18px;gap:10px}.gallery-head h2{font-size:18px}.gallery-head .eyebrow{font-size:8px;letter-spacing:.08em}.gallery-head-actions{gap:6px}.gallery-stage{padding:22px 14px;min-height:200px}.gallery-stage img{max-height:38vh}.gallery-figure figcaption{display:flex;padding:18px;gap:12px}.gallery-figure figcaption strong{font-size:20px}.gallery-figure figcaption p{font-size:12px}.gallery-kind{font-size:14px;white-space:nowrap;margin:0}.gallery-thumbnails{padding:0 18px 14px}.gallery-controls{padding:14px 18px 18px}}
@media(prefers-reduced-motion:reduce){.preview-image img,.gallery-close,#gallery-zoom,.gallery-controls button,.gallery-preview{transition:none}.gallery-preview:hover .preview-image img{transform:none}}
@media print{.gallery-preview{display:none!important}}
.gallery-controls{position:sticky;bottom:0;background:#f8f9f4;z-index:1}
@media(min-width:761px) and (max-height:850px){.gallery-stage{padding:20px 32px;min-height:200px}.gallery-stage img{max-height:37vh}.gallery-head{padding-top:18px;padding-bottom:16px}.gallery-figure figcaption{padding-top:16px;padding-bottom:14px}.gallery-thumbnails img{height:48px}}
