:root{font-family:Georgia,serif;color:#fff3d5;background:#152319;color-scheme:dark}
*{box-sizing:border-box}body{margin:0}main{min-height:100dvh;display:grid;place-items:center}
#scene{position:relative;width:min(100vw,177.68dvh);aspect-ratio:1672/941;overflow:hidden;background:#263b25;isolation:isolate}
#forest{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;user-select:none;pointer-events:none}
#trees{position:absolute;inset:0;pointer-events:none;z-index:1}
.tree-actor{position:absolute;transform:translate(-50%,-100%);pointer-events:none}
.standing-tree{width:100%;height:100%;object-fit:fill;transform-origin:50% 100%;will-change:transform,opacity}
.tree-stump{position:absolute;width:14%;height:auto;bottom:0;left:43%}
.resource{position:absolute;right:1.5%;top:2.5%;display:flex;gap:.6em;align-items:center;padding:.65em 1em;border:3px solid #785334;border-radius:12px;background:linear-gradient(#4f3822,#302315);box-shadow:0 3px 8px #0007,inset 0 0 0 1px #ad8756;font-size:clamp(13px,1.7vw,24px);text-shadow:0 2px 2px #000}
button{font:inherit;color:inherit;cursor:pointer}
.tree-target{position:absolute;border:0;background:transparent;transform:translate(-50%,-50%);border-radius:50%;padding:0;z-index:2}
.tree-target::after{content:'';position:absolute;bottom:8%;left:30%;width:40%;aspect-ratio:2;border:2px solid #ffe2a3;border-radius:50%;opacity:0;box-shadow:0 0 8px #b8df7a}
.tree-target:hover::after,.tree-target:focus-visible::after,.tree-target[aria-pressed=true]::after{opacity:1}
.tree-target:focus-visible{outline:2px dashed #f9e4a5;outline-offset:3px}
#worker{position:absolute;width:5.2%;aspect-ratio:128/160;transform:translate(-50%,-95%);pointer-events:none;z-index:3}
#sprite{width:100%;height:100%;object-fit:contain;transform-origin:50% 95%}
#sprite.chopping,#sprite.constructing{position:absolute;left:-25%;bottom:0;width:200%;height:140%;object-fit:fill;transform-origin:37.5% 96.4286%}
#impact{position:absolute;pointer-events:none;z-index:4}
#impact i{position:absolute;width:5px;height:3px;background:#d5ab68;border:1px solid #815c32;animation:splinter .55s ease-out forwards}
@keyframes splinter{from{opacity:1;transform:translate(0,0) rotate(0)}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--turn))}}
#work-meter{position:absolute;width:3%;min-width:24px;height:4px;background:#182719bd;transform:translate(-50%,-50%);border-radius:3px;overflow:hidden;z-index:4;pointer-events:none}
#work-meter span{display:block;background:#efd19b;width:var(--progress,0%);height:100%}
.shadow{position:absolute;bottom:3%;left:29%;width:42%;height:8%;border-radius:50%;background:#1d2b1899;filter:blur(2px)}
#marker{position:absolute;width:2.5%;aspect-ratio:2;border:2px solid #e8cc77;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 10px #e8cc7777;pointer-events:none}
.bottom{position:absolute;bottom:3%;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:85%;z-index:4}
#status{margin:0;padding:9px 16px;border-radius:20px;background:#172417d9;font:clamp(12px,1.2vw,17px) system-ui,sans-serif;text-align:center;box-shadow:0 2px 6px #0003}
#cancel{background:#483624e8;border:1px solid #b99862;border-radius:18px;padding:8px 13px;white-space:nowrap;font:13px system-ui,sans-serif}
#help{position:absolute;bottom:3%;right:1.5%;z-index:5;font:13px/1.6 system-ui,sans-serif}
#help summary{cursor:pointer;padding:5px 10px;border-radius:15px;background:#152719cf}
#help[open]{max-width:320px;background:#213422f5;border:1px solid #b2bb87;border-radius:12px;padding:14px;bottom:12%}
#help[open]{max-height:75%;overflow:auto}
.save-actions{display:flex;flex-wrap:wrap;gap:7px}
.save-actions button,.restart button{font:12px system-ui,sans-serif;border:1px solid #a18c59;border-radius:8px;padding:8px;background:#3c4d2d}
.restart{margin-top:12px}.restart summary{padding:6px 0!important;background:transparent!important}
#save-notice{position:absolute;top:3%;left:1.5%;max-width:340px;margin:0;padding:12px;border:1px solid #d9b67d;border-radius:10px;background:#3b3024f2;color:#fff1cf;font:12px/1.5 system-ui,sans-serif;z-index:7}
button:focus-visible,summary:focus-visible{outline:2px solid #ffe5a1;outline-offset:4px}
[hidden]{display:none!important}
#buildings{position:absolute;inset:0;pointer-events:none;z-index:2}
.building,#building-preview{position:absolute;width:12.56%;aspect-ratio:300/290;transform:translate(-50%,-96.5517%);pointer-events:none}
.mill-stage,#building-preview>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.mill-stage{opacity:0;transition:opacity .55s ease-out}
.rotor-plane{position:absolute;left:69.3%;top:43.45%;width:88%;aspect-ratio:1;transform:translate(-50%,-50%) scaleX(.88)}
.rotor{width:100%;height:100%;transform-origin:50% 50%}
.building[data-level="2"] .rotor-plane{left:68%;top:45.5%}
.build-progress{position:absolute;bottom:-3%;left:28%;width:44%;height:4px;background:#25331c;border-radius:4px;overflow:hidden}
.build-progress span{display:block;height:100%;background:#eccb85}
.work-dust{position:absolute;left:12%;bottom:10%;width:13%;height:5%;background:#d6bf8c77;filter:blur(3px);border-radius:50%;opacity:0}
.building[data-active=true] .work-dust{animation:build-dust 1.2s ease-out infinite}
@keyframes build-dust{0%,60%{opacity:0;transform:translateY(0) scale(.3)}75%{opacity:.55}100%{opacity:0;transform:translateY(-8px) scale(1.4)}}
.completion-ring{position:absolute;left:12%;bottom:-2%;width:76%;height:20%;border:2px solid #e1d8a0;border-radius:50%;opacity:0}
.building[data-status=ready] .completion-ring{animation:building-finished 1s ease-out both}
@keyframes building-finished{from{opacity:.8;transform:scale(.7)}to{opacity:0;transform:scale(1.4)}}
#building-preview{z-index:5;opacity:.62}
#building-preview .footprint{position:absolute;bottom:0;left:14%;width:72%;height:22%;border:2px solid #b3ed9c;border-radius:50%;background:#72d86955}
#building-preview[data-valid=false] .footprint{border-color:#ffb0a0;background:#de654e88}
#building-preview .footprint{bottom:3.4483%;transform:translateY(50%)}
#build-tools{position:absolute;left:1.5%;bottom:3%;z-index:6;display:flex;gap:8px}
#build-tools button{border:1px solid #bb975c;border-radius:10px;padding:9px 14px;background:#3c301de8;font:13px system-ui,sans-serif;box-shadow:0 2px 4px #0005}
#build-tools button small{display:block;font-size:10px;margin-top:3px;color:#efd9ab}
#build-tools button:disabled{opacity:.65;cursor:default}
#scene:focus-visible{outline:none}
.bottom{max-width:70%;bottom:11%}
#build-tools{max-width:46%;flex-wrap:wrap}
#construction-menu{font:13px/1.5 system-ui,sans-serif;max-width:310px}
#construction-menu summary{cursor:pointer;padding:9px 14px;border:1px solid #bb975c;border-radius:10px;background:#293923ee}
#construction-menu[open]{padding:10px;background:#23351ff5;border:1px solid #ac915e;border-radius:12px;max-height:65vh;overflow:auto}
#construction-menu .build-options{display:grid;gap:7px;margin-top:10px}
#construction-menu:not([open]) .build-options{display:none}
#capacity{font-size:.7em;color:#e3cba1}
#supply-props{position:absolute;inset:0;z-index:1;pointer-events:none}
.supply-prop{position:absolute;transform:translate(-50%,-95%);transform-origin:50% 95%;pointer-events:none}
.supply-prop[data-working=true]{animation:forage-rustle .8s ease-in-out infinite alternate}
@keyframes forage-rustle{to{transform:translate(-50%,-95%) rotate(2deg)}}
#sprite.supplying{position:absolute;left:-12.5%;bottom:0;width:125%;height:100%;object-fit:fill;transform-origin:50% 95%}
#sprite.iron-working{position:absolute;left:-25%;bottom:0;width:200%;height:140%;object-fit:fill;transform-origin:37.5% 96.4286%}
#supply-panel{position:absolute;top:14%;right:1.5%;z-index:6;font:12px/1.5 system-ui,sans-serif;max-width:265px}
#supply-panel summary{cursor:pointer;padding:6px 12px;border:1px solid #ac915e;border-radius:12px;background:#25341eea}
#supply-panel[open]{max-height:65%;overflow:auto;padding:12px;background:#23351ff5;border:1px solid #ac915e;border-radius:12px}
#supply-panel button{font:inherit;padding:7px 10px;border:1px solid #ac915e;border-radius:8px;background:#5b482d}
#supply-panel button[aria-pressed=true]{background:#45613a}
#supply-panel button:disabled{opacity:.5;cursor:default}
#supply-panel p{margin:9px 0}#supply-panel dl{display:grid;grid-template-columns:1fr auto;gap:5px}#supply-panel dd{margin:0;color:#f6d797}
.building{pointer-events:auto;cursor:pointer}
.building:focus-visible{outline:2px dashed #f5d38b;border-radius:18px;outline-offset:2px}
.tavern-tables img{position:absolute;top:104%;width:23%;transform:translate(-50%,-95.8333%);pointer-events:none}
#building-info{position:absolute;top:15%;left:1.5%;width:250px;max-height:65%;overflow:auto;z-index:6;padding:14px;background:#23351ff5;border:1px solid #ac915e;border-radius:12px;font:12px/1.5 system-ui,sans-serif}
#building-info h2{font:20px Georgia,serif;margin:8px 0}
#building-info p{margin:10px 0}
#building-info button{font:inherit;padding:7px 10px;border:1px solid #ac915e;border-radius:8px;background:#5b482d}
#building-info button:disabled{opacity:.5;cursor:default}
#event-kind{width:100%;margin:7px 0;padding:8px;border:1px solid #ac915e;border-radius:8px;background:#35462b;color:#fff3d5;font:inherit}
#event-confirm{width:min(92vw,460px);max-height:85dvh;overflow:auto;margin:auto;padding:22px;border:1px solid #c3a56e;border-radius:14px;background:#23351f;color:#fff3d5;font:14px/1.65 system-ui,sans-serif}
#event-confirm::backdrop{background:#08130bcc}
#event-confirm h2{font:24px Georgia,serif;margin:0 0 14px}
.event-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:20px}
.event-actions button{padding:9px 14px;border:1px solid #c3a56e;border-radius:9px;background:#4e5731;font:inherit}
#inspect-close{float:right}
.bottom{bottom:17%}
#buildings{z-index:auto}
#marker,#work-meter,#impact{z-index:1200}
#building-preview{z-index:1500}
.resource,.bottom,#build-tools,#help,#supply-panel,#building-info{z-index:2000}
#save-notice{z-index:2100}
#residents{position:absolute;inset:0;pointer-events:none}
.resident{position:absolute;width:2.4%;aspect-ratio:.4;transform:translate(-50%,-100%);border:0;background:transparent;padding:0;pointer-events:auto;cursor:pointer}
.resident img{position:absolute;display:block;left:-85.4167%;bottom:-5.4167%;width:270.8333%;height:108.3333%;transform-origin:50% 95%;pointer-events:none}
.resident::before{content:'';position:absolute;bottom:0;left:15%;width:70%;height:6%;border-radius:50%;background:#1c271888;filter:blur(2px)}
.resident::after{content:'';position:absolute;bottom:0;left:5%;width:90%;height:10%;border:2px solid #f2dba3;border-radius:50%;opacity:0;pointer-events:none}
.resident:hover::after,.resident:focus-visible::after{opacity:.8}
.resident[data-reacting=true]::after{animation:resident-greeting .8s ease-out both}
.resident[data-phase=settled] img,.resident[data-phase=visiting] img{animation:resident-breathe 2.8s ease-in-out infinite alternate}
@keyframes resident-breathe{to{translate:0 -1px}}
@keyframes resident-greeting{from{opacity:1;scale:.8}to{opacity:0;scale:1.5}}
.resident[data-emotion=joy]::after{border-color:#f7df8b;animation:resident-greeting 1.2s ease-out both}
.resident[data-emotion=concern]::after{border-color:#d7aa59;animation:resident-greeting 1.2s ease-out both}
.resident[data-emotion=frustration]::after{border-color:#d48672;animation:resident-greeting 1.2s ease-out both}
@media(prefers-reduced-motion:reduce){.resident img,.resident::after{animation:none!important}.resident[data-reacting=true]::after{opacity:.8}}
#population-counter{position:absolute;left:1.5%;top:3%;z-index:2000;background:#23351fe8;border:1px solid #ac915e;border-radius:12px;padding:8px 12px;font:14px Georgia,serif}
#population-counter strong{margin-left:8px;color:#f6d797}
#donkey{position:absolute;width:8.5%;aspect-ratio:4/3;transform:translate(-50%,-95.8333%);border:0;padding:0;background:none;cursor:pointer}
#donkey img{width:100%;height:100%;pointer-events:none}
#donkey:hover,#donkey:focus-visible{filter:drop-shadow(0 0 3px #f5d38b);outline:none}
#donkey[aria-disabled=true]{cursor:default}
@media(max-width:700px){.bottom{bottom:9%;max-width:95%;gap:5px}#status{padding:6px 10px;font-size:11px}#cancel{font-size:11px;padding:6px 9px}#help{font-size:11px}.resource{border-width:2px;padding:.4em .65em}}

/* ART HIT REGIONS START: generated by tools/audit-art.cjs */
.building{pointer-events:none}
.building>*{pointer-events:none}
.building::before{content:"";position:absolute;inset:0;pointer-events:auto;cursor:pointer}
.building[data-type="arena"][data-stage="0"]::before{clip-path:polygon(8% 67.24%,11% 65.17%,22% 58.97%,33% 55.86%,34% 55.86%,52% 56.9%,83% 68.28%,91% 76.55%,91% 86.9%,89% 88.97%,81% 93.1%,74% 96.21%,51% 96.21%,43% 95.17%,28% 90%,24% 87.93%,9% 78.62%,8% 77.59%)}
.building[data-type="arena"][data-stage="1"]::before{clip-path:polygon(7% 67.24%,9% 65.17%,40% 39.31%,42% 39.31%,73% 49.66%,87% 65.17%,93% 79.66%,93% 84.83%,87% 88.97%,85% 90%,78% 93.1%,72% 95.17%,64% 96.21%,49% 96.21%,40% 95.17%,29% 91.03%,24% 88.97%,8% 78.62%,7% 77.59%)}
.building[data-type="arena"][data-stage="2"]::before{clip-path:polygon(8% 66.21%,9% 65.17%,33% 41.38%,40% 38.28%,41% 38.28%,73% 48.62%,81% 53.79%,92% 74.48%,92% 85.86%,90% 87.93%,82% 92.07%,76% 94.14%,72% 95.17%,54% 96.21%,52% 96.21%,42% 95.17%,27% 90%,25% 88.97%,8% 77.59%)}
.building[data-type="arena"][data-stage="3"]::before{clip-path:polygon(8% 66.21%,32% 36.21%,34% 36.21%,78% 47.59%,85% 51.72%,86% 52.76%,92% 77.59%,92% 86.9%,90% 88.97%,88% 90%,79% 94.14%,76% 95.17%,70% 96.21%,60% 96.21%,42% 95.17%,30% 91.03%,24% 87.93%,8% 76.55%)}
.building[data-type="barn"][data-stage="0"]::before{clip-path:polygon(9% 75.52%,20% 44.48%,21% 43.45%,48% 40.34%,49% 40.34%,84% 50.69%,90% 77.59%,90% 80.69%,89% 81.72%,86% 83.79%,84% 84.83%,54% 96.21%,52% 96.21%,43% 95.17%,41% 94.14%,13% 78.62%,10% 76.55%)}
.building[data-type="barn"][data-stage="1"]::before{clip-path:polygon(8% 73.45%,12% 41.38%,31% 14.48%,35% 14.48%,44% 17.59%,54% 21.72%,70% 28.97%,72% 30%,89% 47.59%,92% 78.62%,92% 81.72%,86% 84.83%,63% 93.1%,54% 96.21%,52% 96.21%,45% 94.14%,42% 93.1%,15% 79.66%,8% 75.52%)}
.building[data-type="barn"][data-stage="2"]::before{clip-path:polygon(7% 72.41%,10% 43.45%,12% 40.34%,31% 12.41%,36% 12.41%,70% 25.86%,84% 33.1%,90% 40.34%,92% 46.55%,92% 80.69%,79% 88.97%,54% 96.21%,51% 96.21%,44% 94.14%,10% 76.55%,7% 74.48%)}
.building[data-type="barn"][data-stage="3"]::before{clip-path:polygon(7% 76.55%,11% 42.41%,13% 39.31%,33% 11.38%,37% 11.38%,70% 25.86%,72% 26.9%,73% 27.93%,91% 48.62%,93% 77.59%,93% 78.62%,89% 82.76%,56% 96.21%,53% 96.21%,44% 93.1%,7% 77.59%)}
.building[data-type="facade"][data-stage="0"]::before{clip-path:polygon(9% 63.1%,16% 31.03%,43% 15.52%,45% 14.48%,46% 14.48%,68% 24.83%,85% 33.1%,86% 34.14%,91% 66.21%,91% 67.24%,75% 96.21%,35% 96.21%,9% 64.14%)}
.building[data-type="facade"][data-stage="1"]::before{clip-path:polygon(9% 63.1%,15% 31.03%,16% 30%,46% 14.48%,49% 14.48%,66% 21.72%,68% 22.76%,85% 32.07%,89% 37.24%,90% 41.38%,90% 72.41%,75% 96.21%,36% 96.21%,9% 65.17%)}
.building[data-type="facade"][data-stage="2"]::before{clip-path:polygon(9% 70.34%,12% 35.17%,35% 11.38%,77% 11.38%,78% 12.41%,91% 43.45%,91% 44.48%,90% 76.55%,84% 82.76%,71% 88.97%,53% 96.21%,50% 96.21%,28% 84.83%,17% 78.62%,10% 73.45%,9% 72.41%)}
.building[data-type="facade"][data-stage="3"]::before{clip-path:polygon(11% 71.38%,14% 36.21%,37% 10.34%,78% 10.34%,80% 11.38%,93% 43.45%,93% 77.59%,91% 79.66%,59% 96.21%,56% 96.21%,34% 86.9%,23% 80.69%,12% 73.45%)}
.building[data-type="mill"][data-stage="0"]::before{clip-path:polygon(8% 82.76%,13% 70.34%,24% 61.03%,26% 60%,43% 54.83%,66% 54.83%,78% 62.07%,85% 69.31%,90% 77.59%,92% 81.72%,89% 85.86%,85% 88.97%,82% 91.03%,65% 96.21%,44% 96.21%,31% 95.17%,23% 93.1%,15% 88.97%,12% 86.9%,8% 83.79%)}
.building[data-type="mill"][data-stage="1"]::before{clip-path:polygon(6% 78.62%,13% 35.17%,29% 18.62%,49% 9.31%,52% 9.31%,71% 18.62%,80% 28.97%,89% 47.59%,94% 81.72%,91% 86.9%,86% 90%,72% 95.17%,51% 96.21%,45% 96.21%,35% 95.17%,23% 92.07%,16% 88.97%,13% 86.9%,9% 83.79%,8% 82.76%,6% 79.66%)}
.building[data-type="mill"][data-stage="2"]::before{clip-path:polygon(7% 79.66%,9% 61.03%,12% 41.38%,13% 39.31%,19% 30%,47% 8.28%,51% 8.28%,69% 18.62%,79% 27.93%,87% 45.52%,91% 65.17%,93% 81.72%,90% 85.86%,85% 91.03%,73% 94.14%,52% 96.21%,49% 96.21%,31% 94.14%,25% 92.07%,18% 88.97%,14% 86.9%,9% 83.79%,8% 82.76%,7% 80.69%)}
.building[data-type="mill"][data-stage="3"]::before{clip-path:polygon(13% 81.72%,27% 30%,47% 9.31%,49% 8.28%,52% 8.28%,72% 28.97%,87% 81.72%,87% 82.76%,84% 87.93%,79% 91.03%,67% 94.14%,58% 96.21%,45% 96.21%,36% 95.17%,32% 94.14%,29% 93.1%,24% 91.03%,20% 88.97%,17% 86.9%,13% 83.79%)}
.building[data-type="parish"][data-stage="0"]::before{clip-path:polygon(7% 71.38%,12% 64.14%,16% 58.97%,17% 57.93%,19% 56.9%,49% 42.41%,53% 42.41%,84% 57.93%,85% 58.97%,91% 67.24%,93% 74.48%,93% 75.52%,89% 78.62%,85% 80.69%,54% 96.21%,52% 96.21%,41% 92.07%,32% 87.93%,16% 79.66%,11% 76.55%,8% 74.48%,7% 73.45%)}
.building[data-type="parish"][data-stage="1"]::before{clip-path:polygon(8% 71.38%,15% 43.45%,34% 19.66%,35% 18.62%,38% 18.62%,71% 22.76%,85% 33.1%,91% 39.31%,92% 42.41%,92% 73.45%,91% 76.55%,87% 85.86%,84% 87.93%,50% 96.21%,49% 96.21%,39% 92.07%,28% 86.9%,18% 80.69%,9% 74.48%,8% 73.45%)}
.building[data-type="parish"][data-stage="2"]::before{clip-path:polygon(7% 72.41%,13% 44.48%,34% 16.55%,38% 16.55%,70% 17.59%,73% 18.62%,75% 19.66%,91% 37.24%,92% 41.38%,93% 54.83%,92% 72.41%,91% 75.52%,86% 81.72%,80% 86.9%,78% 87.93%,54% 96.21%,51% 96.21%,30% 87.93%,24% 84.83%,13% 78.62%,8% 75.52%,7% 74.48%)}
.building[data-type="parish"][data-stage="3"]::before{clip-path:polygon(8% 72.41%,13% 42.41%,14% 40.34%,33% 15.52%,34% 14.48%,71% 14.48%,74% 15.52%,91% 50.69%,92% 74.48%,92% 75.52%,89% 78.62%,85% 80.69%,54% 96.21%,52% 96.21%,43% 93.1%,31% 87.93%,19% 81.72%,12% 77.59%,9% 75.52%,8% 74.48%)}
.building[data-type="silo"][data-stage="0"]::before{clip-path:polygon(22% 80.69%,31% 68.28%,37% 65.17%,40% 64.14%,46% 63.1%,54% 63.1%,59% 64.14%,64% 66.21%,66% 67.24%,70% 71.38%,77% 79.66%,78% 83.79%,78% 84.83%,75% 87.93%,59% 96.21%,56% 96.21%,46% 95.17%,31% 91.03%,27% 88.97%,25% 86.9%,22% 82.76%)}
.building[data-type="silo"][data-stage="1"]::before{clip-path:polygon(20% 82.76%,24% 40.34%,30% 30%,31% 28.97%,54% 23.79%,56% 23.79%,74% 34.14%,75% 35.17%,76% 42.41%,80% 79.66%,80% 80.69%,77% 87.93%,72% 91.03%,59% 96.21%,49% 96.21%,40% 94.14%,32% 92.07%,27% 90%,22% 85.86%,20% 83.79%)}
.building[data-type="silo"][data-stage="2"]::before{clip-path:polygon(20% 82.76%,24% 40.34%,30% 30%,31% 28.97%,54% 23.79%,56% 23.79%,74% 34.14%,75% 35.17%,76% 42.41%,80% 79.66%,80% 80.69%,77% 87.93%,72% 91.03%,59% 96.21%,49% 96.21%,40% 94.14%,32% 92.07%,27% 90%,22% 85.86%,20% 83.79%)}
.building[data-type="silo"][data-stage="3"]::before{clip-path:polygon(22% 82.76%,30% 30%,34% 25.86%,48% 12.41%,51% 12.41%,65% 25.86%,69% 30%,78% 84.83%,78% 85.86%,76% 87.93%,59% 96.21%,56% 96.21%,45% 95.17%,41% 94.14%,32% 91.03%,27% 88.97%,26% 87.93%)}
.building[data-type="tavern"][data-stage="0"]::before{clip-path:polygon(15% 76.55%,21% 67.24%,48% 53.79%,50% 53.79%,52% 54.83%,79% 69.31%,80% 70.34%,83% 75.52%,85% 79.66%,85% 81.72%,84% 82.76%,80% 85.86%,53% 96.21%,51% 96.21%,45% 94.14%,20% 81.72%,16% 79.66%,15% 78.62%)}
.building[data-type="tavern"][data-stage="1"]::before{clip-path:polygon(16% 74.48%,20% 50.69%,37% 26.9%,38% 25.86%,40% 25.86%,66% 39.31%,80% 53.79%,84% 79.66%,84% 81.72%,83% 82.76%,80% 84.83%,78% 85.86%,52% 96.21%,50% 96.21%,41% 92.07%,31% 86.9%,22% 81.72%,16% 77.59%)}
.building[data-type="tavern"][data-stage="2"]::before{clip-path:polygon(14% 74.48%,17% 50.69%,36% 25.86%,37% 24.83%,38% 24.83%,67% 26.9%,69% 27.93%,82% 55.86%,85% 67.24%,86% 81.72%,86% 84.83%,80% 88.97%,53% 96.21%,51% 96.21%,41% 92.07%,25% 83.79%,18% 79.66%,15% 77.59%,14% 76.55%)}
.building[data-type="tavern"][data-stage="3"]::before{clip-path:polygon(7% 48.62%,32% 19.66%,33% 18.62%,70% 18.62%,73% 19.66%,74% 20.69%,90% 53.79%,93% 77.59%,93% 78.62%,91% 80.69%,85% 83.79%,55% 96.21%,52% 96.21%,40% 92.07%,35% 90%,28% 86.9%,14% 79.66%,9% 76.55%,7% 58.97%)}
/* ART HIT REGIONS END */

.catalog-hint{max-width:265px;font:12px/1.5 system-ui,sans-serif;color:#e5d7b4;margin:12px 0 2px}
#construction-menu:not([open]) .catalog-hint{display:none}
#building-info:focus-visible{outline:2px solid #ffe5a1;outline-offset:2px}
@media(max-width:1000px){#building-info{width:235px;font-size:12px}#construction-menu{max-width:270px}#help[open]{max-width:290px}#status{padding:7px 12px}}

#sound-toggle{font:13px system-ui,sans-serif;padding:8px 12px;border:1px solid #b49b69;border-radius:8px;background:#3c4d2d}#sound-status{font-size:12px;color:#e5d7b4}

#next-step{padding:10px;border-left:3px solid #d9b570;background:#ffffff09;color:#fff0cb}

/* Separate world camera from the interface; presentation only. */
#game-shell{position:relative;width:min(100vw,177.68dvh);aspect-ratio:1672/941}
#camera-viewport{width:100%;height:100%;overflow:hidden}
#scene{width:100%}
#interface-layer{position:absolute;inset:0;pointer-events:none;z-index:2500}
#interface-layer>*{pointer-events:auto}
#mobile-controls{position:absolute;top:76px;left:8px;display:flex;align-items:center;gap:4px;background:#24371de8;border:1px solid #a58c55;border-radius:10px;padding:3px;font:12px system-ui,sans-serif}
#mobile-controls button{min-width:38px;min-height:38px;border:0;background:#4a482b;border-radius:7px;padding:7px}
#zoom-label{min-width:34px;text-align:center}
@media(max-width:900px){
 body,main{overflow:hidden;min-height:100dvh}#game-shell{width:100vw;height:100dvh;aspect-ratio:auto}
 #camera-viewport{position:absolute;inset:0;overflow:auto;touch-action:none;overscroll-behavior:contain;scrollbar-width:none}
 #scene{width:var(--mobile-world-width,960px);max-width:none;margin-block:max(0px,calc((100dvh - var(--mobile-world-height,540px))/2));touch-action:none}
 #interface-layer{inset:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}
 .resource{top:10px;right:8px;font-size:16px;padding:8px 12px;gap:6px}#population-counter{top:12px;left:8px;font-size:13px;padding:7px}
 #supply-panel{top:128px;right:8px;width:auto;max-width:calc(100% - 16px)}#supply-panel[open]{width:min(340px,calc(100% - 16px));max-height:calc(100% - 220px);font-size:14px}
 #building-info{top:76px;left:8px;width:min(350px,calc(100% - 16px));max-height:calc(100% - 180px);font-size:14px}
 #build-tools{left:8px;bottom:12px;max-width:calc(100% - 100px)}#build-tools button,#construction-menu summary{padding:12px;min-height:44px}
 #construction-menu{max-width:min(330px,calc(100vw - 116px))}#construction-menu[open]{max-height:calc(100dvh - 190px)}
 #help{right:8px;bottom:12px;font-size:14px}#help>summary{min-height:44px;padding:11px 9px}
 #help[open]{right:8px;bottom:66px;width:min(350px,calc(100% - 16px));max-width:calc(100% - 16px);max-height:calc(100% - 150px);font-size:14px}
 #interface-layer button{min-height:44px}#mobile-controls button{min-width:44px}#mobile-controls{top:72px}
 .bottom{bottom:70px;max-width:calc(100% - 16px);width:max-content;gap:6px}#status{font-size:13px;max-width:65vw;padding:8px 10px}#cancel{font-size:12px;white-space:normal;max-width:118px}
 .resident::before{width:44px;min-height:54px;height:100%;left:calc(50% - 22px);bottom:0;background:transparent;filter:none;pointer-events:auto}
 #save-notice{top:175px;left:8px;max-width:calc(100% - 16px)}
 #building-info button,#supply-panel button,#help button{font-size:14px;padding:10px}
}
@media(max-width:900px) and (max-height:500px){#mobile-controls{top:auto;bottom:66px;left:8px}.bottom{bottom:12px}#status{max-width:36vw}#building-info{top:10px;max-height:calc(100% - 76px)}#supply-panel{top:70px}#supply-panel[open]{max-height:calc(100% - 140px)}#help[open]{max-height:calc(100% - 80px)}}

#install-app{font:14px system-ui,sans-serif;border:1px solid #cfb775;border-radius:8px;background:#4c5b2d;padding:10px}#install-status,#offline-status{font:12px/1.5 system-ui,sans-serif;color:#e9dbb8}

@media(max-width:900px){#scene{margin-inline:max(0px,calc((100vw - var(--mobile-world-width,960px))/2))}}

@media(max-width:900px){#build-tools{max-width:calc(100% - 136px)}html[data-placing=true] .bottom{bottom:124px}}

#mobile-help{display:none}html[data-mobile=true] #mobile-help{display:block}

@media(max-width:900px){#supply-panel>summary,#help summary{min-height:44px}#supply-panel>summary{font-size:13px;padding:10px}}
