@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url('./dm-sans-latin.9fea608a947e.woff2') format('woff2')}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:120px}body{margin:0;background:#fff;color:#202020;font-family:'DM Sans',Arial,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}img{display:block;max-width:100%;background:#f5f5f5}picture{display:contents}source{display:none}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:500;line-height:1.2}a:focus-visible,summary:focus-visible{outline:2px solid #222;outline-offset:6px}a:hover{text-decoration-color:#aaa}main,footer,.site-header{max-width:1640px;margin:auto;padding-left:4%;padding-right:4%}.site-header{height:103px;display:flex;align-items:center;justify-content:space-between;gap:30px;border-bottom:1px solid #ededed;background:#fff}.brand{display:block;flex-shrink:0;width:143px;height:66px;overflow:hidden}.brand img{width:172px;max-width:none;height:86px;transform:translate(-13px,-9px);background:transparent}.site-header nav{display:flex;gap:36px;align-items:center}.site-header nav a{font-size:13px;padding:10px 0;border-bottom:1px solid transparent;color:#666}.site-header nav a[aria-current],.site-header nav a:hover{color:#111;border-bottom-color:#222}.header-contact{display:flex;gap:22px;align-items:center;font-size:13px;white-space:nowrap}.header-contact span{font-size:18px}.home-intro{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:37px 0 33px}.home-intro h1{font-size:18px;letter-spacing:-.3px}.home-intro>a{font-size:12px;color:#666}.collection{margin-bottom:64px;scroll-margin-top:30px}.section-head{display:flex;justify-content:space-between;gap:20px;align-items:center;border-top:1px solid #e7e7e7;padding:25px 0 23px}.section-head>div{display:flex;align-items:baseline;gap:20px}.section-head h2{font-size:25px;letter-spacing:-.7px}.section-head h2 a span{font-size:18px;margin-left:5px}.section-head span{font-size:12px;color:#777}.location-filter{display:flex;gap:26px;border:0;padding:0;margin:0 0 24px;min-width:0}.location-filter label{position:relative;cursor:pointer;font-size:12px;color:#777}.location-filter input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.location-filter label>span{display:block;padding-bottom:6px;border-bottom:1px solid transparent}.location-filter input:checked+span{color:#202020;border-color:#202020}.location-filter input:focus-visible+span{outline:2px solid #222;outline-offset:4px}.collection-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}.collection-card{display:block;min-width:0}.collection-card img{width:100%;height:auto;aspect-ratio:1.23;object-fit:cover;border-radius:5px;transition:filter .2s}.collection-card:hover img{filter:brightness(.95)}.card-meta{display:grid;grid-template-columns:1fr auto;gap:4px 15px;align-items:center;padding:15px 1px 0}.card-meta h3{font-size:17px;letter-spacing:-.3px}.card-meta>span{grid-column:1;font-size:12px;color:#777}.card-meta b{grid-column:2;grid-row:1/3;font-weight:400;font-size:20px}.portfolio:has(input[value=kampala]:checked) .collection-card:not([data-location=kampala]),.portfolio:has(input[value=kyenjojo]:checked) .collection-card:not([data-location=kyenjojo]){display:none}.concept-pictures{display:grid;grid-template-columns:1.8fr 1fr;gap:24px}.concept-pictures img{aspect-ratio:auto;height:420px;object-fit:cover}.concept-pictures picture:nth-child(2) img{object-position:50% 50%}.image-note{font-size:11px;line-height:1.6;color:#777;margin-top:14px}.people-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;max-width:800px}.portrait{aspect-ratio:4/4.5;overflow:hidden;background:#f5f5f5;border-radius:5px}.portrait img{width:100%;height:100%;object-fit:cover;filter:grayscale(1)}.portrait-gwamoiza img{object-position:95% 50%}.portrait-ojambo img{object-position:50% 50%;transform:scale(1.25);transform-origin:50% 0}.person h3{font-size:17px;letter-spacing:-.2px;margin-top:17px}.person p{color:#666;font-size:12px;margin-top:7px}.person p.experience{font-size:11px;margin-top:4px}.person-social{display:flex;gap:15px;margin-top:12px;font-size:11px}.contact{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:35px 0 40px;border-top:1px solid #e7e7e7;margin-top:64px;scroll-margin-top:30px}.contact h2{font-size:24px;letter-spacing:-.7px;max-width:380px}.contact-links{display:flex;flex-wrap:wrap;align-items:center;gap:18px;font-size:12px}.button{display:inline-flex;align-items:center;background:#222;color:#fff;border-radius:99px;padding:13px 20px;font-size:12px}.button:hover{background:#000}footer{display:flex;justify-content:space-between;gap:24px;color:#777;font-size:11px;padding-top:23px;padding-bottom:28px;border-top:1px solid #ededed}footer>div{display:flex;flex-wrap:wrap;gap:23px}.page-intro{display:flex;justify-content:space-between;align-items:baseline;gap:25px;padding:45px 0 32px}.page-intro h1{font-size:38px;letter-spacing:-1.4px}.page-intro>p{font-size:12px;color:#777}.page-intro+.collection{margin-top:0}.back{display:inline-block;font-size:12px;color:#777;margin-top:29px}.back+.page-intro{padding-top:21px;padding-bottom:15px}.project-scope{font-size:14px;color:#666;max-width:600px;margin-bottom:24px}.chapter-nav{display:flex;gap:28px;padding:0 0 27px;font-size:12px}.chapter-nav a{border-bottom:1px solid #ddd;padding-bottom:4px}.photo{min-width:0}.photo a{display:block;border-radius:5px;overflow:hidden;background:#f5f5f5}.photo img{width:100%;height:auto}.photo figcaption{font-size:12px;color:#666;margin:11px 1px 0}.hero-photo img{max-height:760px;aspect-ratio:1.9;object-fit:cover}.hero-photo figcaption{font-size:11px}.chapter{margin-top:56px;scroll-margin-top:28px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px 26px;align-items:start}.photo-grid .photo img{aspect-ratio:1.4;object-fit:cover}.photo-grid .photo:nth-child(5n){grid-column:1/-1}.photo-grid .photo:nth-child(5n) img{aspect-ratio:1.9}.renders{margin-top:35px}.renders .photo img{aspect-ratio:1.61}.image-details{border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;margin-top:45px;padding-bottom:0;scroll-margin-top:28px}.image-details>summary{display:flex;justify-content:space-between;align-items:center;padding:23px 0;font-size:20px;cursor:pointer;list-style:none}.image-details>summary::-webkit-details-marker{display:none}.image-details>summary span{font-size:12px;color:#666}.image-details .photo-grid{padding-bottom:28px}.image-details .image-note{padding-bottom:20px}.model-grid .photo img{object-fit:contain;background:#f7f7f7}.next-link{border-top:1px solid #e7e7e7;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:28px 0 40px;color:#777;font-size:12px}.next-link strong{font-size:20px;color:#222;font-weight:400}.notes{max-width:690px;margin-bottom:70px}.notes h2{font-size:19px;margin:30px 0 11px}.notes p{color:#666;line-height:1.8}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:-100px;left:15px;z-index:100;background:#222;color:#fff;padding:12px}.skip:focus{top:12px}
@media(min-width:1600px){.concept-pictures img{height:520px}}
@media(max-width:950px){.site-header nav{gap:24px}.concept-pictures img{height:340px}.contact{align-items:flex-start;flex-direction:column;gap:23px}.page-intro{align-items:flex-start}.page-intro>p{padding-top:10px}.people-grid{max-width:700px}.photo-grid{gap:27px 20px}}
@media(max-width:640px){html{scroll-padding-top:25px}main,footer,.site-header{padding-left:5%;padding-right:5%}.site-header{height:auto;display:grid;grid-template-columns:1fr auto;gap:5px 20px;padding-top:10px;padding-bottom:0}.brand{width:121px;height:57px}.brand img{width:146px;height:73px;transform:translate(-11px,-8px)}.header-contact{grid-column:2;grid-row:1;font-size:12px;gap:14px}.site-header nav{grid-column:1/-1;grid-row:2;justify-content:space-between;gap:15px;padding:5px 0 0}.site-header nav a{font-size:13px;padding:13px 0}.home-intro{padding:25px 0 26px;gap:12px}.home-intro h1{font-size:14px;letter-spacing:-.1px}.home-intro>a{font-size:10px}.section-head{padding:21px 0 19px}.section-head>div{gap:14px;flex-wrap:wrap}.section-head h2{font-size:24px}.section-head span{font-size:11px}.location-filter{gap:24px;margin-bottom:20px}.location-filter label{font-size:11px}.collection{margin-bottom:42px}.collection-grid{gap:29px;grid-template-columns:1fr}.collection-card img{aspect-ratio:1.23}.card-meta{padding-top:12px}.card-meta h3{font-size:17px}.card-meta>span{font-size:11px}.concept-pictures{display:grid;grid-template-columns:1fr;gap:13px}.concept-pictures img{height:auto;aspect-ratio:1.35}.concept-pictures picture:nth-child(2) img{aspect-ratio:1.7}.people-grid{gap:17px}.portrait{aspect-ratio:4/5}.person h3{font-size:15px;line-height:1.3;margin-top:12px}.person p{font-size:11px;line-height:1.6}.person p.experience,.person-social{font-size:10px}.person-social{margin-top:10px}.contact{margin-top:42px;padding:28px 0 32px;gap:21px}.contact h2{font-size:25px}.contact-links{gap:17px;font-size:11px}.contact-links .button{width:100%;justify-content:center;font-size:12px}.contact-links>a:not(.button){flex:1;white-space:nowrap}.page-intro{display:block;padding:31px 0 27px}.page-intro h1{font-size:34px;letter-spacing:-1px}.page-intro>p{padding-top:0;margin-top:12px;font-size:12px}.back{margin-top:23px;font-size:11px}.back+.page-intro{padding-top:20px}.project-scope{font-size:13px;margin-bottom:20px}.chapter-nav{gap:23px;font-size:11px;padding-bottom:24px}.hero-photo img{aspect-ratio:1.2}.photo-grid{gap:26px;grid-template-columns:1fr}.photo-grid .photo:nth-child(5n){grid-column:auto}.photo-grid .photo img,.photo-grid .photo:nth-child(5n) img{aspect-ratio:auto}.photo figcaption{font-size:11px;margin-top:9px}.chapter{margin-top:35px}.chapter .section-head{padding-top:23px}.chapter .section-head h2{font-size:22px}.image-note{font-size:10px}.renders{margin-top:28px}.image-details{margin-top:33px}.image-details>summary{font-size:20px;padding:20px 0}.model-grid{grid-template-columns:1fr 1fr;gap:22px 14px}.model-grid .photo img,.model-grid .photo:nth-child(5n) img{aspect-ratio:1.3;object-fit:contain}.model-grid .photo figcaption{font-size:10px}.next-link{padding:24px 0 30px}.next-link strong{font-size:17px}footer{display:block;font-size:10px;padding-top:20px;padding-bottom:24px}footer>div{gap:20px;margin-top:13px}.notes h2{font-size:18px}.notes p{font-size:13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

#layout .photo img{aspect-ratio:1.25;object-fit:contain;background:#f6f6f6;padding:12px}

.company-label{font-size:11px;color:#666;letter-spacing:.4px;margin-bottom:12px}.company-intro{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:start;padding:5px 0 31px;max-width:1120px}.company-intro h2{font-size:27px;letter-spacing:-.6px;max-width:370px}.company-intro>p{font-size:14px;line-height:1.85;color:#555;max-width:460px;padding-top:27px}.company-nav{flex-wrap:wrap;gap:14px 28px;padding-bottom:32px}.team-note{font-size:12px;color:#666;margin:0 0 21px}.company-section{margin-bottom:65px;scroll-margin-top:30px}.story-layout,.community-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:7%;align-items:start;padding-top:32px;border-top:1px solid #e7e7e7}.company-photo{overflow:hidden;border-radius:5px}.company-photo img{width:100%;height:auto;aspect-ratio:.9;object-fit:cover}.company-copy h2,.company-future h2{font-size:29px;letter-spacing:-.8px;line-height:1.25;margin-bottom:24px}.company-copy>p:not(.company-label){max-width:490px;color:#555;font-size:13px;line-height:1.85}.company-timeline{margin:0}.company-timeline>div{display:grid;grid-template-columns:128px 1fr;gap:18px;padding:17px 0;border-top:1px solid #e7e7e7}.company-timeline dt{font-size:12px;font-weight:500}.company-timeline dd{margin:0;font-size:13px;line-height:1.8;color:#555;max-width:410px}.company-details{border-top:1px solid #e7e7e7;margin-top:19px}.company-details>summary{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:16px 0;font-size:13px;cursor:pointer;list-style:none}.company-details>summary::-webkit-details-marker{display:none}.company-details>summary span{transition:transform .2s;color:#666;font-size:17px}.company-details[open]>summary span{transform:rotate(45deg)}.company-details>div{padding:0 0 12px;max-width:540px}.company-details p{font-size:13px;line-height:1.85;color:#555;margin-bottom:12px}.podcast-links{display:flex;flex-wrap:wrap;gap:9px 20px;font-size:11px;margin-top:9px}.podcast-links>span{flex-basis:100%;color:#666}.podcast-links a,.text-link{border-bottom:1px solid #bbb;padding-bottom:3px}.work-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;padding-top:7px}.work-steps article>span{font-size:11px;color:#888}.work-steps h3{font-size:19px;margin:13px 0}.work-steps p{font-size:13px;color:#555;line-height:1.85;max-width:340px}.community-days{margin:25px 0 17px;max-width:490px}.community-days>div{display:grid;grid-template-columns:110px 1fr;gap:20px;border-top:1px solid #e7e7e7;padding:12px 0;font-size:13px}.community-days dt{font-weight:500}.community-days dd{margin:0;color:#555}.meeting-time{font-size:12px!important;margin-bottom:16px}.text-link{display:inline-block;font-size:12px}.company-future{display:grid;grid-template-columns:1fr 1fr;gap:8%;padding-top:30px;border-top:1px solid #e7e7e7}.company-future h2{max-width:370px}.company-future>div>p:not(.company-label){font-size:13px;color:#555;line-height:1.85;max-width:520px}
@media(max-width:950px){.story-layout,.community-layout{gap:5%;grid-template-columns:.8fr 1.2fr}.company-timeline>div{grid-template-columns:1fr;gap:7px;padding:13px 0}.company-photo img{aspect-ratio:.7}.company-copy h2,.company-future h2{font-size:26px}.work-steps{gap:24px}}
@media(max-width:760px){.company-intro{grid-template-columns:1fr;gap:17px;padding:0 0 25px}.company-intro h2{font-size:25px}.company-intro>p{padding-top:0;max-width:540px;font-size:13px}.company-label{font-size:10px}.company-nav{gap:12px 22px}.team-note{font-size:11px;line-height:1.8;max-width:310px}.company-section{margin-bottom:43px}.story-layout,.community-layout{grid-template-columns:1fr;gap:25px;padding-top:24px}.company-photo img{aspect-ratio:1.35;object-position:center 42%}.company-copy h2{font-size:27px;margin-bottom:20px}.company-timeline>div{grid-template-columns:1fr;gap:7px;padding:14px 0}.company-timeline dd,.company-copy>p:not(.company-label),.company-details p,.work-steps p,.company-future>div>p:not(.company-label){font-size:13px}.company-details>summary{font-size:13px}.work-steps{grid-template-columns:1fr;gap:24px}.work-steps article{display:grid;grid-template-columns:27px 1fr;gap:9px 12px}.work-steps article>span{padding-top:5px}.work-steps h3{margin:0;font-size:19px}.work-steps p{grid-column:2;max-width:500px}.community-days>div{grid-template-columns:91px 1fr;gap:18px;font-size:12px}.meeting-time{font-size:11px!important}.company-future{grid-template-columns:1fr;gap:0;padding-top:25px}.company-future h2{font-size:26px;margin-bottom:17px}}

/* Shared interaction and readability improvements. */
:root{--image-radius:22px;--muted:#626262;--header-offset:115px}
html{scroll-padding-top:var(--header-offset)}
[hidden]{display:none!important}
body{font-size:15px}
.site-header{position:sticky;top:0;z-index:40;height:88px;isolation:isolate}
.site-header nav{gap:26px}
.site-header nav a{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;padding:10px 2px;color:#555}
.header-contact{min-height:44px;padding:10px 18px;gap:13px;border:1px solid #d7d7d7;border-radius:999px;color:#222}
.header-contact:hover{border-color:#222;background:#f6f6f6}
.collection-card img,.photo a,.photo img,.portrait,.company-photo{border-radius:var(--image-radius)}
.portrait img{border-radius:0}
.collection-card:focus-visible{outline-offset:8px;border-radius:var(--image-radius)}
.home-intro>a,.back,.chapter-nav a,.person-social a,.podcast-links a,.text-link,footer a{display:inline-flex;align-items:center;min-height:44px}
.home-intro>a{font-size:13px;color:#555}
.location-filter{gap:10px;flex-wrap:wrap;margin-bottom:22px}
.location-filter label{font-size:13px;color:#555}
.location-filter label>span{min-height:44px;display:flex;align-items:center;padding:10px 15px;border:1px solid #e0e0e0;border-radius:999px}
.location-filter input:checked+span{background:#222;border-color:#222;color:#fff}
.location-filter label:hover>span{border-color:#555}
.location-filter input:focus-visible+span{outline-offset:3px}
.section-head span,.card-meta>span,.page-intro>p,.image-note,.back,.photo figcaption,footer{color:var(--muted)}
.section-head span,.card-meta>span,.image-note,.photo figcaption,.person p.experience,.person-social,.podcast-links,.company-label,.team-note,footer{font-size:13px}
.person p,.company-intro>p,.company-copy>p:not(.company-label),.company-timeline dd,.company-details p,.work-steps p,.company-future>div>p:not(.company-label){font-size:15px;line-height:1.8}
.person h3{line-height:1.4}
.person-social{flex-wrap:wrap;gap:0 18px;margin-top:5px}
.chapter-nav{flex-wrap:wrap;gap:10px 25px;padding-bottom:22px}
.chapter-nav a{font-size:13px;min-width:44px;color:#555;padding:7px 0}
.company-nav{gap:8px 26px}
.project-scope{font-size:15px;line-height:1.8}
.photo a{position:relative;cursor:zoom-in}
.photo-zoom{position:absolute;bottom:12px;right:12px;display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:#fff;color:#222;font-size:20px;box-shadow:0 2px 8px #0002}
.photo a:hover .photo-zoom{background:#222;color:#fff}
.image-details>summary,.company-details>summary{min-height:52px}
.image-details>summary span{font-size:13px}
.image-details[open]>summary{border-bottom:1px solid #e7e7e7;margin-bottom:20px}
.contact-links{gap:10px 20px}
.contact-links>a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;font-size:13px}
.contact-links .button{min-height:48px}
.button{font-size:13px;min-height:44px}
footer{align-items:center;padding-top:13px;padding-bottom:13px}
footer>div{gap:8px 22px}
.notes p{font-size:15px}
.meeting-time{font-size:13px!important}
.community-days>div{font-size:14px}
.community-network{display:grid;grid-template-columns:1fr 1fr;gap:8%;border-top:1px solid #e7e7e7;padding-top:30px}
.community-network h2{font-size:29px;line-height:1.25;letter-spacing:-.7px;margin-bottom:20px;max-width:360px}
.community-network p:not(.company-label){font-size:15px;line-height:1.8;color:#555;max-width:490px}
.network-partner{border:1px solid #e2e2e2;border-radius:var(--image-radius);padding:27px 30px}
.network-partner h3{font-size:29px;letter-spacing:-.7px}
.network-partner .partner-field{margin:4px 0 18px;font-size:13px!important}
.network-partner .text-link{margin-top:13px}
/* The viewer enhances ordinary image links; the links still work without JS. */
.viewer-open{overflow:hidden;scrollbar-gutter:stable}
.image-viewer{position:fixed;inset:0;padding:0;border:0;border-radius:22px;width:calc(100% - 36px);max-width:1320px;height:calc(100dvh - 36px);max-height:980px;background:#fff;color:#222;overflow:hidden}
.image-viewer[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.image-viewer::backdrop{background:#000c}
.viewer-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:8px 18px;border-bottom:1px solid #e6e6e6}
.viewer-count{font-size:13px;color:#555}
.image-viewer button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-width:44px;min-height:44px;background:#fff;border:1px solid #ddd;border-radius:999px;color:#222;font:inherit;cursor:pointer}
.image-viewer button:hover{background:#f2f2f2;border-color:#999}
.image-viewer button:focus-visible{outline:2px solid #222;outline-offset:3px}
.viewer-close{padding:8px 16px;font-size:13px!important}
.viewer-close span{font-size:23px}
.viewer-stage{display:flex;align-items:center;justify-content:center;min-height:0;padding:14px;background:#f5f5f5;touch-action:pan-y pinch-zoom}
.viewer-stage img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;background:transparent;border-radius:12px}
.viewer-error{font-size:15px;line-height:1.7;max-width:350px;text-align:center;padding:20px}
.viewer-bottom{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;gap:15px;padding:10px 18px;text-align:center}
.viewer-caption{font-size:14px;line-height:1.5}
.viewer-original{display:inline-flex;align-items:center;min-height:32px;font-size:12px;color:#555;text-decoration:underline;text-underline-offset:3px}
.viewer-prev,.viewer-next{font-size:24px!important}
.image-viewer button:disabled{opacity:.35;cursor:default}
.next-link,.work-steps article>span{color:var(--muted)}
/* The shop uses the same navigation, type and contact links as the portfolio. */
.shop-intro{font-size:15px;line-height:1.8;color:#555;max-width:600px;margin:0 0 25px}
.product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.product-card{min-width:0;display:flex;flex-direction:column}
.product-visual{border-radius:var(--image-radius);overflow:hidden;background:#f3f3f3;aspect-ratio:1.15}
.product-visual img{width:100%;height:100%;object-fit:contain}
.file-preview{display:flex;align-items:center;justify-content:center;padding:25px}
.file-sheet{display:flex;flex-direction:column;justify-content:center;gap:17px;padding:28px;background:#fff;border:1px solid #ddd;border-radius:12px;max-width:250px;width:100%;min-height:230px}
.file-sheet span{font-size:12px;color:#666}.file-sheet strong{font-size:29px;font-weight:500;letter-spacing:-1px}
.file-sheet i{display:block;height:1px;background:#ddd}.file-sheet i:last-child{width:60%}
.product-info{display:flex;flex-direction:column;flex:1;padding:21px 0 0}
.product-format{font-size:12px;color:#666;margin-bottom:10px}
.product-info h2{font-size:21px;line-height:1.4;max-width:320px;margin-bottom:12px}
.product-info>p:not(.product-format){font-size:14px;color:#555;line-height:1.8;margin-bottom:20px}
.product-buy{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:17px;border-top:1px solid #e7e7e7;font-size:14px}
.shop-help{margin-top:65px;border-top:1px solid #e7e7e7;padding-top:28px;display:flex;align-items:center;justify-content:space-between;gap:25px}
.shop-help h2{font-size:24px;margin-bottom:10px}.shop-help p{font-size:14px;color:#555;line-height:1.8}
.shop-catalog:has(input[value=templates]:checked) .product-card:not([data-category=templates]),.shop-catalog:has(input[value=sketchup]:checked) .product-card:not([data-category=sketchup]){display:none}
@media(max-width:950px){.site-header nav{gap:18px}.product-grid{gap:20px}.product-info h2{font-size:19px}.file-sheet{padding:20px;min-height:185px}.file-sheet strong{font-size:25px}.network-partner{padding:24px}.community-network{gap:5%}}
@media(max-width:760px){.community-network{grid-template-columns:1fr;gap:25px;padding-top:25px}.community-network h2{font-size:27px}.company-label,.team-note{font-size:12px}.company-timeline dt{font-size:13px}.company-details>summary{font-size:14px}.work-steps article>span{font-size:12px;color:#626262}.product-grid{grid-template-columns:1fr;gap:38px;max-width:520px}.product-visual{aspect-ratio:1.35}.product-info h2{font-size:23px;max-width:none}.product-info>p:not(.product-format){font-size:15px}.file-sheet{max-width:260px;min-height:190px}.file-sheet strong{font-size:32px}.shop-help{align-items:flex-start;flex-direction:column;gap:12px;margin-top:43px}}
@media(max-width:640px){
 :root{--image-radius:18px;--header-offset:136px}
 .site-header{height:auto;padding-top:6px;gap:0 15px}
 .site-header nav{gap:8px;padding-top:0}.site-header nav a{font-size:13px;min-height:48px;padding:10px 0}
 .brand{height:53px;width:118px}.brand img{height:73px;width:146px}
 .header-contact{font-size:12px;padding:8px 13px;gap:10px}
 .home-intro{flex-wrap:wrap;gap:4px 14px;padding:16px 0 18px}.home-intro h1{font-size:15px}.home-intro>a{font-size:12px}
 .section-head>div{gap:7px 15px}.section-head span{font-size:12px}.section-head h2{font-size:24px}
 .location-filter{gap:8px;margin-bottom:18px}.location-filter label{font-size:12px}.location-filter label>span{padding:10px 13px}
 .card-meta>span,.image-note,.photo figcaption,.person p.experience,.person-social{font-size:12px}
 .person p{font-size:13px;line-height:1.7}.person h3{font-size:16px}.person-social{gap:0 12px}
 .chapter-nav{gap:6px 22px}.chapter-nav a{font-size:13px}
 .page-intro>p{font-size:13px;line-height:1.7}.project-scope{font-size:14px}
 .company-copy>p:not(.company-label),.company-intro>p,.company-timeline dd,.company-details p,.work-steps p,.company-future>div>p:not(.company-label){font-size:14px;line-height:1.85}
 .community-days>div{font-size:13px}.meeting-time{font-size:12px!important}
 .contact-links{width:100%;gap:7px 12px}.contact-links>a{font-size:13px}.contact-links>a:not(.button){flex:auto}.contact-links .button{font-size:14px}
 footer{font-size:12px}footer>div{gap:0 19px;margin-top:5px}.back{font-size:13px;margin-top:15px}
 .image-details>summary{font-size:20px}.model-grid .photo figcaption{font-size:12px}
 .image-viewer{width:calc(100% - 16px);height:calc(100dvh - 16px);max-height:none;border-radius:17px}
 .viewer-bar{padding:7px 10px}.viewer-stage{padding:6px}.viewer-bottom{gap:7px;padding:10px;grid-template-columns:44px 1fr 44px}.viewer-caption{font-size:13px}.viewer-original{min-height:44px}.viewer-close{min-height:44px}
}

/* Frame the supplied logo without changing the original image. */
.company-copy h2.avocado-logo{position:relative;width:min(100%,380px);aspect-ratio:3.7;overflow:hidden;margin:0 0 24px}
.avocado-logo img{position:absolute;display:block;width:140%;max-width:none;height:auto;left:-20%;top:50%;transform:translateY(-50%);border-radius:0}
.club-growth{list-style:none;counter-reset:club-step;padding:0;margin:3px 0 20px;display:grid;gap:17px}
.club-growth li{counter-increment:club-step;position:relative;padding-left:33px;font-size:14px;line-height:1.75}
.club-growth li::before{content:counter(club-step,decimal-leading-zero);position:absolute;left:0;top:1px;color:#666;font-size:12px}
.club-growth strong,.club-growth span{display:block}.club-growth strong{font-weight:500;color:#181818}.club-growth span{color:#555}

/* Rubaga project and three completed project cards. */
@media(min-width:1100px){.portfolio:has(input[value=all]:checked) .collection-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.rubaga-gallery .photo:last-child{grid-column:1/-1}.rubaga-gallery .photo img{aspect-ratio:4/3}
.rubaga-reflection{margin-top:48px;padding-top:28px;border-top:1px solid #e7e7e7;display:grid;grid-template-columns:1fr 1.4fr;gap:30px}
.rubaga-reflection h2{font-size:25px;letter-spacing:-.7px}.rubaga-reflection p{max-width:580px;color:#555;font-size:15px;line-height:1.85}
@media(max-width:640px){.rubaga-reflection{grid-template-columns:1fr;gap:15px;margin-top:35px}.rubaga-reflection p{font-size:14px}}

/* Additional project archive: preserve the full source photograph. */
.portfolio:has(input[value=wakiso]:checked) .collection-card:not([data-location=wakiso]),.portfolio:has(input[value=mbale]:checked) .collection-card:not([data-location=mbale]){display:none}
.project-archive .archive-hero{max-width:960px;margin-inline:auto}
.project-archive .archive-hero img{aspect-ratio:auto;max-height:760px;object-fit:contain;background:#f6f6f3}
.project-archive .archive-gallery .photo{grid-column:auto}
.project-archive .archive-gallery .photo img{aspect-ratio:auto;object-fit:contain}
.project-archive .archive-gallery{max-width:1200px;margin-inline:auto}
@media(min-width:1100px){.portfolio .collection-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:640px){.project-archive .archive-hero img{max-height:none}}

.original-photos .photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));padding-top:16px}.original-photos .photo:nth-child(5n){grid-column:auto}.original-photos .photo img{aspect-ratio:1;object-fit:contain}.project-archive>.image-note{text-align:center}.image-note a{text-decoration:underline;text-underline-offset:3px}@media(max-width:640px){.original-photos .photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Complete logos and comfortably sized photographs across devices. */
.brand{display:flex;align-items:center;width:160px;height:76px;overflow:visible}
.brand img{width:100%;height:100%;max-width:100%;object-fit:contain;transform:none}
.site-header nav a{white-space:nowrap}
.community-feature{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:28px 32px;margin-bottom:42px;background:#f4f6f1;border:1px solid #e3e7dd;border-radius:22px}
.community-feature h2{font-size:28px;letter-spacing:-.6px;margin-bottom:10px}
.community-feature p:not(.company-label){font-size:15px;line-height:1.7;color:#555;max-width:570px}
.community-feature .company-label{margin-bottom:8px;color:#4e6146}
.community-feature .button{flex-shrink:0;gap:16px;background:#284535}
.hero-photo,.project-archive .archive-hero{max-width:960px;margin-inline:auto}
.hero-photo img,.project-archive .archive-hero img{width:100%;height:clamp(240px,62svh,640px);max-height:none;aspect-ratio:auto;object-fit:contain;background:#f5f5f2}
.photo-grid,.project-archive .archive-gallery{max-width:1160px;margin-inline:auto}
.photo-grid .photo:nth-child(5n),.rubaga-gallery .photo:last-child{grid-column:auto}
.photo-grid .photo img,.photo-grid .photo:nth-child(5n) img,.project-archive .archive-gallery .photo img,.rubaga-gallery .photo img{width:100%;height:clamp(240px,32vw,420px);max-height:none;aspect-ratio:auto;object-fit:contain;background:#f5f5f2}
.image-viewer{width:calc(100% - 32px);max-width:1120px;height:calc(100dvh - 32px);max-height:860px}
.viewer-stage{min-width:0;position:relative;overflow:hidden}
.viewer-stage img{min-width:0;min-height:0;max-width:100%;max-height:100%;object-fit:contain}
.viewer-stage[aria-busy=true]::after{content:'Loading image…';position:absolute;color:#626262;font-size:14px}
.viewer-stage[aria-busy=true] img{opacity:0}
.viewer-hint{font-size:12px;color:#626262;margin-left:auto}
@media(max-width:760px){.community-feature{align-items:flex-start;flex-direction:column;gap:20px;padding:24px}.community-feature h2{font-size:25px}}
@media(max-width:640px){
 :root{--header-offset:148px}
 .brand{width:132px;height:66px}.brand img{width:100%;height:100%;transform:none}
 .site-header nav{gap:5px}.site-header nav a{font-size:12.5px}
 .community-feature{margin-bottom:32px;border-radius:18px}.community-feature p:not(.company-label){font-size:14px}
 .hero-photo img,.project-archive .archive-hero img{height:auto;max-height:64svh;aspect-ratio:auto;object-fit:contain}
 .photo-grid .photo img,.photo-grid .photo:nth-child(5n) img,.project-archive .archive-gallery .photo img,.rubaga-gallery .photo img{height:auto;max-height:64svh;aspect-ratio:auto;object-fit:contain}
 .image-viewer{width:calc(100% - 12px);height:calc(100dvh - 12px);max-height:none}
 .viewer-stage{padding:8px}.viewer-hint{display:none}
 .model-grid .photo img{height:auto;max-height:300px}
}
@media(max-width:360px){.site-header nav{gap:2px}.site-header nav a{font-size:12px}}
@media(max-height:500px) and (orientation:landscape){.image-viewer{height:calc(100dvh - 12px)}.viewer-bar{padding:3px 12px}.viewer-bottom{padding:4px 12px}.viewer-original{min-height:24px}.viewer-stage{padding:6px}.viewer-caption{font-size:12px}}
@media(min-width:641px) and (max-width:760px){
 :root{--header-offset:148px}
 .site-header{height:auto;display:grid;grid-template-columns:1fr auto;gap:0 20px;padding-top:6px}
 .brand{width:132px;height:66px}
 .header-contact{grid-column:2;grid-row:1}
 .site-header nav{grid-column:1/-1;grid-row:2;justify-content:space-between;gap:18px}
 .site-header nav a{min-height:48px}
}
