@font-face{font-family:Village;src:url('fonts/pixelify-sans.woff2') format('woff2');font-display:swap;font-weight:400}
:root{--sky:#daeef0;--ink:#304534;--wood:#765339;--cream:#fff8e7;--green:#537953;--accent:#417762;--lilac:#52683e;--text-muted:#647061;--text:#304534;--surface:#fffaf0;--surface-low:#f1efdf;--border:#dbdac7;color-scheme:light;font-family:Village,'Courier New',monospace;color:var(--ink)}
*{box-sizing:border-box}body{margin:0;overflow:hidden;background:var(--sky)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid #a25329;outline-offset:5px}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}a{color:#36684e;text-underline-offset:3px}
#world{position:fixed;inset:0;overflow:hidden;isolation:isolate;touch-action:none}#landscape{width:100%;height:100%;display:block;cursor:grab}#landscape.dragging{cursor:grabbing}#world-signs{position:absolute;inset:0;pointer-events:none}.village-sign,.world-person{position:absolute;left:0;top:0;pointer-events:auto;transform:translate(-50%,-50%);white-space:nowrap}.village-sign{background:#fff4d6;border:2px solid #765339;box-shadow:0 3px 0 #b99766,0 5px 0 #765339;padding:6px 10px;font-size:17px;line-height:1.1;text-align:left;transition:background .15s,box-shadow .15s}.village-sign::after{content:'';position:absolute;left:calc(50% - 2px);top:calc(100% + 5px);height:12px;border-left:4px solid #765339;pointer-events:none}.village-sign:hover,.village-sign:focus-visible{background:#fffdf0;box-shadow:0 3px 0 #b99766,0 5px 0 #765339,0 0 0 5px #fff8e766}.sign-number{color:#81734e;font-size:13px;margin-right:5px}.sign-arrow{margin-left:8px;color:#668349;font-size:16px}#village-intro{position:absolute;transform:translateX(-50%);text-align:center;white-space:nowrap}#village-intro .welcome-sign{position:relative;left:auto;top:auto;transform:none}.welcome-sign{text-align:center;padding:12px 19px;line-height:1.35;z-index:1}.welcome-sign strong{font-size:32px;font-weight:400;display:block;letter-spacing:-1px}.welcome-sign span{font-size:13px;display:block}.welcome-sign .sign-eyebrow{font-size:12px;color:#766346}.welcome-sign::after{left:12px;right:12px;height:20px;border-right:4px solid #765339}.small-sign{font-size:16px}.small-sign span{margin-left:6px}.world-person{width:38px;height:42px;border:0;background:transparent}.world-person span{display:none;position:absolute;bottom:100%;left:50%;transform:translateX(-50%);background:var(--cream);border:2px solid var(--wood);padding:5px 8px;font-size:14px;box-shadow:2px 2px 0 #76533933;pointer-events:none}.world-person:hover span,.world-person:focus-visible span{display:block}.world-person:focus-visible{background:#fff6ba55}
.ambience-controls{position:absolute;top:24px;right:28px;display:flex;gap:8px}.quiet-button{border:1px solid #98b5aa99;background:#f8fff269;padding:9px 12px;font-size:15px;min-height:40px}.quiet-button span{margin-right:5px}.quiet-button:hover{background:#f7fce9}.view-controls{position:absolute;bottom:max(26px,env(safe-area-inset-bottom));right:28px;display:flex;background:#fff8e9;border:2px solid #6b785a;box-shadow:0 3px 0 #9ba783}.view-controls button{border:0;background:transparent;padding:9px 13px;font-size:16px;min-height:42px}.view-controls button:first-child,.view-controls button:last-child{font-size:22px;min-width:43px}.view-controls button+button{border-left:1px solid #c1c6a8}.view-controls button:hover{background:#e8edce}.explore-hint{margin-top:36px;text-align:center;pointer-events:none;color:#5c7b70;font-size:15px;line-height:1.6}.explore-hint>span{display:block}.explore-hint>span:last-child{font-size:13px;color:#739186}.explore-hint .mobile-hint{display:none}
.speech{position:absolute;width:290px;max-width:calc(100vw - 24px);padding:22px;background:#fffbed;border:2px solid #6e714c;box-shadow:0 4px 0 #c7c89d,0 6px 0 #6e714c;z-index:5;touch-action:pan-y;font:16px/1.55 Georgia,serif}.speech::after{content:'';position:absolute;left:50%;top:100%;width:12px;height:12px;background:#fffbed;border-right:2px solid #6e714c;border-bottom:2px solid #6e714c;transform:translate(-50%,7px) rotate(45deg)}.speech-who{font:19px/1.2 Village,monospace;margin:0 22px 10px 0;color:#547144}.speech p{margin:0 0 10px}.speech p:last-child{margin:0}.speech cite{font:13px/1.4 system-ui,sans-serif;display:block;margin-top:12px;color:#677760}.speech-close{position:absolute;top:5px;right:5px;width:32px;height:32px;background:transparent;border:0;font-size:25px}.speech .conversation-links{display:flex;gap:15px;flex-wrap:wrap;margin-top:15px;font:16px Village,monospace}.toast{position:absolute;bottom:90px;left:50%;transform:translateX(-50%);background:#fff8e7;border:2px solid #6e714c;padding:10px 18px;font-size:17px;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap}.toast.visible{opacity:1}.skip-link{position:fixed;top:12px;left:12px;z-index:50;transform:translateY(-150%);background:#fff8e7;padding:12px}.skip-link:focus{transform:none}
.case-panel{position:fixed;right:12px;top:12px;bottom:12px;width:min(620px,48vw);z-index:10;background:var(--surface);border:3px solid #5e6546;outline:4px solid #f8f1d4;box-shadow:0 0 0 6px #9b9c76,-12px 14px 0 #36534416;display:flex;flex-direction:column;animation:panel-in .2s ease-out;touch-action:pan-y}.case-panel::before,.case-panel::after{content:'✦';position:absolute;bottom:7px;font-size:20px;color:#8c9669;pointer-events:none}.case-panel::before{left:8px}.case-panel::after{right:8px}.panel-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:62px;padding:12px 22px;background:#eeefd9;border-bottom:2px solid #b8bc98;font-size:20px;flex-shrink:0}.panel-toolbar>span::before{content:'⌂';margin-right:12px;color:#6d8254}.panel-toolbar button{font-size:30px;width:38px;height:38px;line-height:1;border:1px solid #aeb58d;background:#f8f7e9}.panel-body{overflow:auto;overscroll-behavior:contain;padding:32px 32px 48px;font:16px/1.7 Georgia,'Times New Roman',serif;scrollbar-width:thin;scrollbar-color:#a5b38f #f7f4e6;flex:1;min-height:0}.panel-body h1,.panel-body h2,.panel-body h3,.panel-body h4{font-family:Village,'Courier New',monospace;font-weight:400;line-height:1.2;letter-spacing:-.4px}.panel-body h1{font-size:36px;margin:16px 0 20px!important}.panel-body h2{font-size:28px;margin:0 0 18px}.panel-body h3{font-size:23px;margin:26px 0 12px}.panel-body h4{font-size:22px;margin:0 0 15px}.panel-body p{margin:0 0 20px}.panel-body .cs-meta{font:13px/1.65 system-ui,sans-serif;color:#6c755f;margin-bottom:24px}.panel-body .label{font:14px Village,monospace;background:#e8edd7;color:#4d6f4e;padding:4px 7px}.panel-body .cs-intro{font-size:17px}.panel-body .cs-header{margin-bottom:36px}.panel-body .cs-section{margin:38px 0;border-top:1px solid #dadcc8;padding-top:32px}.panel-body .outcomes{display:grid;grid-template-columns:1fr 1fr;gap:22px;background:#edf0dd;padding:22px;margin:25px 0}.panel-body .num{font:32px Village,monospace;color:#467658}.panel-body .desc{font:13px/1.5 system-ui,sans-serif;color:#6a745d}.panel-body ul{padding-left:20px}.panel-body li{margin-bottom:13px}.panel-body img{display:block;width:100%;height:auto;max-width:100%}.panel-body .img-placeholder{min-height:0!important;border:1px solid #d4d9c5;background:#e8ecd9;overflow:hidden}.panel-body .img-caption{font:13px/1.6 system-ui,sans-serif;color:#6b7864;margin:9px 0 24px!important}.panel-body .image-row{display:grid;grid-template-columns:1fr;gap:12px}.panel-body .staff-signal{background:#edf0dd;padding:24px;margin:30px 0}.panel-body .page>.container{padding:0}.panel-body a{overflow-wrap:anywhere}.directory-intro{font-size:17px}.directory-list{list-style:none;padding:0!important;margin:28px 0}.directory-list li{margin:0;border-top:1px solid #d8ddc5}.directory-list button{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;border:0;background:transparent;padding:20px 0;font:25px Village,monospace}.directory-list button:hover{color:#a25b2e}.directory-list small{display:block;font:14px/1.5 Georgia,serif;color:#717c62;margin-top:5px}.contact-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.contact-links a,.retry-button{font:17px Village,monospace;display:inline-block;padding:10px 14px;background:#edf0db;border:1px solid #9ba87b;color:#344e36}.no-script{position:fixed;inset:0;background:#fff8e7;padding:10vw;z-index:100}.panel-error{padding:25px 0}.no-canvas #world-signs{display:flex;flex-wrap:wrap;gap:32px;padding:140px 30px;align-content:center;justify-content:center}.no-canvas .village-sign{position:relative;transform:none!important;left:auto!important;top:auto!important}.no-canvas #village-intro{position:relative;transform:none}.no-canvas .world-person{display:none}.no-canvas .view-controls{display:none}@keyframes panel-in{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:none}}
/* Case-study text uses system sans-serif; village signs and panel chrome keep their pixel type. */
.panel-body .page{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.panel-body .page h1,.panel-body .page h2,.panel-body .page h3,.panel-body .page h4{font-family:inherit;font-weight:600}
.panel-body .page .label{font-family:inherit}
.panel-body .page .num{font-family:inherit;font-weight:600;font-variant-numeric:tabular-nums}
.panel-body .page .outcomes{grid-template-columns:repeat(2,minmax(0,1fr))}
.panel-body .page .outcome-wide{grid-column:1/-1}
/* Desktop studies float over the village; prose and artifacts have separate widths. */
.panel-backdrop{display:none}
@media(min-width:760px){
 body.panel-open .panel-backdrop{display:block;position:fixed;inset:0;z-index:9;background:#182b29a6}
 .case-panel{inset:10%;width:80%;height:80%;animation:modal-in .2s ease-out;box-shadow:0 0 0 6px #9b9c76,0 24px 80px #172d3459}
 .panel-toolbar{padding-inline:28px}
 .panel-body{padding:48px clamp(28px,4vw,72px) 64px}
 .panel-body>*{max-width:680px;margin-inline:auto}
 .panel-body>.page{max-width:1200px}
 .panel-body .page>.container,.panel-body .cs-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,680px) minmax(0,1fr)}
 .panel-body .page>.container>*,.panel-body .cs-section>*{grid-column:2;min-width:0}
 .panel-body .page>.container>.cs-section,.panel-body .page .img-placeholder,.panel-body .page .image-row{grid-column:1/-1}
 .panel-body .page .image-row{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
 .panel-body .page .image-row>.img-placeholder{grid-column:auto}
 .panel-body .page .img-caption{grid-column:1/-1}
 @keyframes modal-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
}
@media(max-width:759px){.ambience-controls{top:17px;right:17px;flex-direction:column;gap:5px}.quiet-button{font-size:14px;padding:7px 10px;min-height:36px}.welcome-sign{padding:8px 10px}.welcome-sign strong{font-size:25px}.welcome-sign span{font-size:11px}.welcome-sign .sign-eyebrow{font-size:10px}.project-sign{font-size:14px;padding:5px 7px}.project-sign .sign-number{display:none}.sign-arrow{font-size:12px;margin-left:3px}.small-sign{font-size:14px;padding:5px 7px}.village-sign::after{height:8px}.view-controls{right:50%;transform:translateX(50%);bottom:max(24px,env(safe-area-inset-bottom))}.view-controls button{white-space:nowrap}.explore-hint{margin-top:24px;font-size:14px}.explore-hint .desktop-hint{display:none}.explore-hint .mobile-hint{display:block}.explore-hint>span:last-child{font-size:12px}.case-panel{inset:0;width:100%;height:100%;height:100dvh;max-height:none;outline:0;box-shadow:none;animation:sheet-in .2s ease-out}.panel-toolbar{min-height:61px;padding:calc(12px + env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) 12px max(18px,env(safe-area-inset-left))}.panel-toolbar>span::before{margin-right:8px}.panel-body{padding:26px max(23px,env(safe-area-inset-right)) calc(36px + env(safe-area-inset-bottom)) max(23px,env(safe-area-inset-left));font-size:16px}.panel-body h1{font-size:32px}.panel-body h2{font-size:26px}.panel-body .cs-intro{font-size:16px}.speech{font-size:15px;width:265px;padding:18px}.speech-who{font-size:18px}.toast{bottom:125px;font-size:15px;max-width:90vw;white-space:normal;text-align:center}body.panel-open .view-controls,body.panel-open .explore-hint{visibility:hidden}body.panel-open .ambience-controls{display:none}@keyframes sheet-in{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
