/* Keep walking and talking together, outside the artwork, on a phone. */
.town-freewalk{--town-height:clamp(140px,calc(100svh - 390px - env(safe-area-inset-bottom)),390px);padding-top:0}
.town-freewalk .town-heading{margin-bottom:12px;gap:12px}
.town-freewalk .town-heading h1{font-size:22px;line-height:1.35;margin:0}
.town-freewalk .town-heading p{margin:4px 0 0;line-height:1.6}
.town-freewalk .town-map-scroll{height:calc(var(--town-height) + 2px);overflow:auto;overscroll-behavior:contain}
.town-freewalk .town-map-world{--world-height:max(320px,var(--town-height));height:var(--world-height);width:max(100%,calc(var(--world-height) * 1.5));min-width:0;aspect-ratio:auto}
.town-freewalk .town-controls{align-items:center;margin:10px 0 14px;gap:14px}
.town-freewalk .town-dpad{grid-template-rows:repeat(2,44px);gap:3px}
.town-freewalk .town-dpad [data-town-direction=ArrowDown]{grid-column:2;grid-row:2}
.town-talk-panel small{min-height:18px;font-size:11px;line-height:1.5;margin:0 0 5px}
.town-talk-panel .town-recenter{min-height:36px;font-size:11px;display:flex;margin:0 auto;padding:5px 8px}
.town-freewalk .town-directory{margin-top:4px}
.nav{height:calc(72px + env(safe-area-inset-bottom));padding:7px 16px calc(7px + env(safe-area-inset-bottom))}
.nav button{width:auto;flex:1;min-width:44px;min-height:48px}
.app-shell{padding-bottom:calc(100px + env(safe-area-inset-bottom))}
.town-bookshop{position:absolute;left:56%;top:85%;width:50px;height:46px;transform:translate(-50%,-50%);z-index:5;border:0;background:transparent;display:grid;place-items:center;padding:0}
.bookshop-map-sign{display:grid;place-items:center;width:32px;height:30px;background:#e3ddc3;border:2px solid #796b4f;box-shadow:2px 3px 0 #443b2844;color:#817c6a;image-rendering:pixelated}
.town-bookshop.is-open .bookshop-map-sign{background:#fff0bd;color:#73592c;border-color:#a88540;box-shadow:0 0 16px 5px #ffe5a470,2px 3px 0 #443b2844}
.bookshop-lamp{display:none;position:absolute;width:7px;height:11px;top:23px;background:#ffdf85;border:2px solid #80653e;box-shadow:0 0 12px 4px #ffe0a1ac}
.lamp-left{left:0}.lamp-right{right:0}.is-open .bookshop-lamp{display:block}
.bookshop-bunting{display:none;position:absolute;width:66px;height:9px;top:0;background:repeating-linear-gradient(90deg,#cc9862 0 8px,transparent 8px 13px,#87a57a 13px 21px,transparent 21px 26px);clip-path:polygon(0 0,100% 0,100% 55%,92% 100%,84% 55%,76% 100%,68% 55%,60% 100%,52% 55%,44% 100%,36% 55%,28% 100%,20% 55%,12% 100%,4% 55%,0 100%)}
.is-open .bookshop-bunting{display:block}
.town-memory-flowers{position:absolute;left:31%;top:70%;display:flex;gap:8px;z-index:3;pointer-events:none}
.town-memory-flowers i{width:4px;height:17px;background:#527854;position:relative;box-shadow:3px 7px 0 -1px #7c9a5e}
.town-memory-flowers i:before{content:"";position:absolute;left:-3px;top:0;width:10px;height:6px;background:#efd18b;box-shadow:2px -3px 0 -1px #f0a3a0,-2px 3px 0 -1px #df998e}
.town-craft-flag{position:absolute;left:76%;top:57%;height:27px;border-left:2px solid #725f42;z-index:3;pointer-events:none}
.town-craft-flag:before{content:"";display:block;width:15px;height:12px;background:#a9c78b;clip-path:polygon(0 0,100% 0,75% 50%,100% 100%,0 100%)}
.town-goal-card,.town-memory-card{padding:20px 18px;background:#f1f4e9;border:1px solid #e2e8d8;border-radius:16px;margin:0 0 22px;overflow-wrap:anywhere}
.town-goal-card h2,.town-memory-card h2{font-size:17px;font-weight:600;line-height:1.6;margin:5px 0 8px}
.town-goal-card p,.town-memory-card p{font-size:12px;color:#74836b;line-height:1.8;margin:8px 0 12px}
.town-goal-card details{margin-top:8px}.town-goal-card summary{font-size:12px;min-height:44px;display:flex;align-items:center;cursor:pointer}
.town-goal-card>.quiet-link{font-size:11px;min-height:44px;color:#7a866e}
.goal-small-steps{display:flex;flex-wrap:wrap;gap:8px 12px;margin:12px 0 18px;font-size:11px;color:#88937c}
.goal-small-steps .done{color:#4c7349}
.practice-preview{white-space:pre-wrap;overflow-wrap:anywhere;background:#f2f5ec;border-radius:12px;padding:15px;font-size:13px;line-height:1.8;margin-bottom:16px}
.supply-import-note{padding:12px 15px;border-left:3px solid #9bb583;background:#edf3e7;border-radius:0 10px 10px 0;font-size:12px;line-height:1.8;margin:0 0 12px}
.town-story-art{height:200px;border-radius:16px;background:linear-gradient(#e8ede1 0 77%,#c3ceb1 77% 83%,#a6b98e 83%);position:relative;overflow:hidden;margin:12px 0 20px;image-rendering:pixelated}
.town-story-art.is-open{background:linear-gradient(#e8eddf 0 77%,#d4c5a1 77% 83%,#a9be92 83%)}
.story-house{position:absolute;width:134px;height:122px;bottom:32px;left:50%;transform:translateX(-50%)}
.story-roof{position:absolute;left:0;top:0;width:134px;height:47px;background:repeating-linear-gradient(0deg,#5e7468 0 6px,#6d8374 6px 10px);clip-path:polygon(50% 0,100% 85%,100% 100%,0 100%,0 85%);z-index:3}
.story-wall{position:absolute;left:10px;top:40px;width:114px;height:78px;background:#e2c89b;border:5px solid #9a7c55;box-shadow:inset 0 8px #bd9c6a}
.story-window{position:absolute;left:24px;top:67px;width:31px;height:29px;border:4px solid #836e4c;background:repeating-linear-gradient(90deg,#9d987a 0 7px,#7f8068 7px 10px)}
.is-open .story-window{background:linear-gradient(90deg,transparent 43%,#9a7945 43% 57%,transparent 57%),linear-gradient(0deg,transparent 43%,#9a7945 43% 57%,transparent 57%),#ffdc83;box-shadow:0 0 30px 10px #ffe3a4a0}
.story-door{position:absolute;right:23px;bottom:4px;width:28px;height:46px;background:repeating-linear-gradient(90deg,#68786c 0 6px,#596d61 6px 8px);border:3px solid #8e754f}
.is-open .story-door{background:#6a573e;box-shadow:inset 7px 0 #8b7a58}
.story-sign{position:absolute;left:47px;top:39px;z-index:4;display:grid;place-items:center;width:40px;height:29px;background:#bdb895;border:3px solid #8b7655;color:#82886d}
.is-open .story-sign{background:#fff0b5;color:#907143;box-shadow:0 0 15px #ffe1a47a}
.story-plant{position:absolute;right:-8px;bottom:4px;width:14px;height:18px;background:#ac8057;border-top:8px solid #788b61;opacity:.45}
.is-open .story-plant{opacity:1;border-color:#93ad6d;box-shadow:0 -6px 0 -2px #d8b879}
.story-art-title{position:absolute;bottom:8px;width:100%;text-align:center;font-size:12px;color:#526342}
.town-story-copy article{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid #e7ecdf}
.town-story-copy article>span{color:#8d9f6b;margin-top:4px}.town-story-copy h3{font-size:15px;line-height:1.6;margin:0 0 5px}
.town-story-copy p{font-size:12px;color:#75836b;line-height:1.85;margin:0}
@media(max-width:359px){.town-freewalk .town-controls{gap:9px}.town-freewalk .town-heading h1{font-size:21px}.town-talk-panel .btn{padding:8px 6px;font-size:11px}.town-goal-card,.town-memory-card{padding:17px 14px}}
@media(max-height:650px){.town-freewalk .town-npc{width:44px;height:44px}.town-freewalk .npc-map-label{bottom:40px}.town-freewalk .town-player{width:44px;height:56px}.town-freewalk .town-player .map-pixel-character{width:44px!important}.town-freewalk .town-player .town-you-dot{left:18px}}
