*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}body{font-family:Arial,Helvetica,sans-serif;color:#243f49;background:#edf3f4;display:flex;flex-direction:column}header{height:104px;display:flex;align-items:center;gap:15px;padding:24px 40px;flex-shrink:0}.mark{display:grid;place-items:center;width:43px;height:43px;background:#243f49;color:#fff;font-size:14px;font-weight:700;border-radius:12px}h1{font-size:21px;letter-spacing:-.7px;margin:0 0 5px}header p{font-size:14px;margin:0;color:#586e77}.tag{margin-left:auto;font-size:12px;letter-spacing:2px;border:1px solid #b8c8cf;border-radius:30px;padding:10px 15px}main{position:relative;flex:1;min-height:0}canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:none}canvas:active{cursor:grabbing}canvas:focus-visible{outline:2px solid #406c80;outline-offset:-4px}.caption{position:absolute;top:35px;left:40px;pointer-events:none}.eyebrow{font-size:12px;letter-spacing:2px;color:#627982}.caption p{font-size:clamp(24px,3vw,42px);line-height:1.15;letter-spacing:-1.5px;margin:14px 0}.controls{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:24px;padding:8px 8px 8px 22px;border:1px solid #d6e0e4;background:#ffffffdb;border-radius:16px;white-space:nowrap;box-shadow:0 6px 25px #243f4908;font-size:14px;color:#586e77}.controls i{font-style:normal;margin:0 8px}button{border:0;background:#243f49;color:white;border-radius:10px;padding:13px 17px;font:inherit;cursor:pointer}button:hover{background:#365b68}button:focus-visible{outline:3px solid #d49a43;outline-offset:3px}footer{display:flex;justify-content:space-between;padding:20px 40px;font-size:12px;color:#586e77}footer span:first-child{letter-spacing:1.7px}@media(max-width:600px){header{padding:20px;height:90px}.tag{font-size:10px;padding:8px;letter-spacing:1px}.caption{left:20px;top:12px}.caption p{font-size:28px}.controls{gap:10px;padding-left:13px;font-size:12px;bottom:15px}button{padding:12px}footer{padding:16px 20px}footer span:last-child{display:none}}
.caption{top:12px}.caption p{font-size:30px;margin:10px 0}.caption small{display:block;color:#586e77;line-height:1.6;margin-top:7px;font-size:11px}#scene-stats{font-size:12px;color:#586e77}footer a{color:inherit;text-decoration:none}footer a:hover{text-decoration:underline}footer a:first-child{letter-spacing:0}@media(max-width:600px){.caption p{font-size:23px}.caption small{font-size:10px}header .tag{display:none}footer{gap:12px;font-size:10px}.controls{gap:8px}}

canvas,canvas:active{cursor:crosshair}.controls{white-space:normal;max-width:calc(100% - 24px);width:max-content}.controls>span{line-height:1.5}body:has(canvas:focus) .caption{opacity:.65}

.minimap{position:absolute;right:20px;top:16px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none;z-index:2}#map-toggle{pointer-events:auto;box-shadow:0 3px 14px #243f4926;min-width:76px}#map-toggle[aria-expanded="true"]{background:#426977}#map-panel{width:min(440px,calc(100vw - 40px),calc(100dvh - 240px));padding:12px;background:#f8fbf5f5;border:1px solid #bac9c5;border-radius:12px;box-shadow:0 4px 18px #243f4920}.minimap-heading{display:flex;justify-content:space-between;font-size:11px;font-weight:700;letter-spacing:1px;margin-bottom:8px}.minimap #minimap{width:100%;height:auto;aspect-ratio:1;cursor:default;border-radius:5px}.minimap-key{font-size:11px;margin-top:7px;color:#354e51}@media(max-width:600px){.minimap{right:12px;top:12px}#map-panel{width:min(440px,calc(100vw - 24px),calc(100dvh - 220px));padding:8px}.caption{max-width:calc(100% - 110px)}.eyebrow{font-size:9px;letter-spacing:.5px}}

header{position:relative}#current-road{position:absolute;left:50%;transform:translateX(-50%);width:clamp(180px,28vw,360px);padding:13px 18px;border:1px solid #b8c8cf;border-radius:10px;background:#ffffffd9;color:#243f49;font-size:16px;font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:850px){header .tag{display:none}}@media(max-width:600px){header{height:124px;align-items:flex-start;padding-top:12px}#current-road{bottom:10px;width:calc(100% - 40px);padding:9px;font-size:14px}}
.village-editor{position:absolute;left:20px;top:155px;z-index:4;width:290px;font-size:13px}.village-editor[hidden]{display:none}#edit-panel{padding:14px;margin-top:8px;background:#f8fbf5f5;border:1px solid #bac9c5;border-radius:12px;max-height:calc(100dvh - 380px);overflow:auto}#edit-panel p{line-height:1.5;margin-top:0}#edit-panel label,#edit-panel small{display:block;margin:10px 0;line-height:1.5}#edit-panel select,#edit-panel input{max-width:100%;width:100%;padding:8px}#edit-panel button{padding:9px;font-size:12px}.edit-actions{display:flex;gap:5px;flex-wrap:wrap}.touch-walk{display:none;position:absolute;bottom:95px;left:16px;gap:6px;z-index:3}.touch-walk button{width:50px;height:50px;touch-action:none;user-select:none}@media(hover:none),(pointer:coarse){.touch-walk{display:flex}#navigation-help{font-size:0}#navigation-help:after{content:'Drag to look · arrows to walk';font-size:12px}.village-editor{display:none!important}}

.village-editor button:disabled{opacity:.45;cursor:default}#edit-toggle{font-weight:bold;background:#234f62;border:2px solid #f6faf9}#edit-toggle[aria-expanded="true"]{background:#9a4934}.village-editor select{font:inherit}.village-editor{width:310px}#edit-panel{max-height:calc(100dvh - 330px)}

/* Stage 2: one compact, scrollable authoring workspace. */
.village-editor{top:14px;left:20px;width:min(340px,calc(100vw - 40px))}body:has(#edit-toggle[aria-expanded="true"]) .caption{display:none}
#edit-panel{max-height:calc(100dvh - 265px);padding:16px;background:#f7faf8;box-shadow:0 12px 36px #17394130}
.editor-heading{display:flex;align-items:center;justify-content:space-between}.editor-heading h2{font-size:21px;margin:3px 0 12px}.editor-heading small{letter-spacing:1.5px;font-size:10px!important;margin:0!important}
.editor-sections{display:flex;gap:6px;margin-bottom:14px}.editor-sections button{flex:1;background:#e0e9e5;color:#284b4e}.editor-sections button[aria-pressed="true"]{background:#234f62;color:white}
#selection-details{white-space:pre-line;overflow-wrap:anywhere;background:#e8efeb;border-left:3px solid #b87338;padding:12px;line-height:1.7;border-radius:4px;font-size:12px}
#edit-panel select{border:1px solid #adbfb8;border-radius:7px;background:white}.planned-tools{margin:16px 0;color:#526d70;border-block:1px solid #d8e2dd;padding:12px 0}.planned-tools summary{cursor:pointer}.editor-save{padding-top:5px}#selection-status{font-size:12px;color:#365e46;margin:12px 0}
#map-panel{pointer-events:auto;max-height:calc(100dvh - 220px);overflow:auto}.map-buttons{display:flex;gap:5px;margin-top:10px}.map-buttons button{padding:8px;font-size:11px}.map-tools p{font-size:11px;line-height:1.5;margin:9px 0 0}.minimap #minimap{cursor:crosshair}
@media(max-width:850px){body:has(#edit-toggle[aria-expanded="true"]) #map-panel{width:min(310px,calc(100vw - 40px));}body:has(#edit-toggle[aria-expanded="true"]) .minimap{z-index:5}}

#map-panel,body:has(#edit-toggle[aria-expanded="true"]) #map-panel{width:min(440px,calc(100vw - 40px),max(220px,calc(100dvh - 365px)))}
body:has(.village-editor:not([hidden])) .caption{top:72px}

#objects-section h3{margin:14px 0 8px;font-size:15px}#objects-section p{font-size:12px;line-height:1.5}#objects-section details{margin:16px 0;padding:10px;background:#e8efeb;border-radius:6px}#objects-section summary{cursor:pointer;font-weight:bold}.transform-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}.transform-grid label{min-width:0}#object-transform{border:1px solid #c4d2ca;border-radius:8px;padding:10px;margin:12px 0}#object-transform legend{font-size:11px}#edit-panel .inline-check{display:flex;gap:8px;align-items:center}#edit-panel .inline-check input{width:auto}.editor-sections{flex-wrap:wrap}.editor-sections button{min-width:85px}#object-details{white-space:pre-line;overflow-wrap:anywhere}#objects-section input,#objects-section select{border:1px solid #aabfb7;border-radius:5px;font:inherit}#asset-description{color:#476b60}#import-preview{overflow-wrap:anywhere}#edit-panel hr{border:0;border-top:1px solid #c4d2ca;margin-top:20px}

.building-tools{border-top:1px solid #c4d2ca;margin-top:16px;padding-top:6px}.building-tools h3{font-size:14px;margin:12px 0 7px}.building-tools p{font-size:12px;line-height:1.5}#building-dimensions{border:1px solid #c4d2ca;border-radius:7px;margin-top:10px;padding:10px}#building-dimensions input{border:1px solid #aabfb7;border-radius:5px;font:inherit}#building-pair-status{color:#365e46}

#detail-points{width:100%;box-sizing:border-box;font:13px monospace;min-height:90px;}
.editor-sections{flex-wrap:wrap;}
.travel-tools{position:absolute;right:20px;bottom:95px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;max-width:320px;padding:10px;background:#f2f7f4ed;border-radius:12px;z-index:4;font-size:12px}.travel-tools button{padding:8px;font-size:12px}.travel-tools select{padding:5px}.travel-tools label{display:flex;align-items:center;gap:4px}#player-message{width:100%;font-size:11px}#walk-points{width:100%;box-sizing:border-box;font:12px monospace}@media(pointer:coarse){.travel-tools{bottom:150px;right:10px;max-width:260px}.controls{display:none}}@media(max-width:600px){.travel-tools{max-width:235px;bottom:155px}.caption{display:none}}
body:has(#map-panel:not([hidden])) .travel-tools{display:none}
.travel-tools button:disabled{opacity:.45;cursor:default}

.interaction-prompt{position:absolute;transform:translate(-50%,-100%);z-index:6;min-height:44px;max-width:220px;padding:10px 16px;background:#163f50;color:#fff;border:2px solid #f0cb77;border-radius:9px;box-shadow:0 3px 15px #0005}.interaction-card{position:absolute;z-index:12;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,calc(100% - 40px));max-height:75%;overflow:auto;box-sizing:border-box;padding:22px;background:#f5f8f5;border:1px solid #aabcb5;border-radius:12px;box-shadow:0 8px 40px #0006}.interaction-card p{white-space:pre-wrap;overflow-wrap:anywhere}.interaction-card a{display:block;margin:18px 0;color:#145777;font-weight:bold}.interaction-card [hidden],.interaction-prompt[hidden],.interaction-card[hidden]{display:none}#action-text{width:100%;box-sizing:border-box}

.bus-tracker{position:absolute;top:18px;right:108px;z-index:8}.bus-tracker>button{min-height:44px}#bus-panel{position:absolute;right:0;top:52px;width:min(310px,calc(100vw - 40px));max-height:65dvh;overflow:auto;box-sizing:border-box;padding:16px;background:#f4f8f4f5;color:#183e49;border-radius:12px;box-shadow:0 6px 20px #0003}#bus-panel[hidden]{display:none}#bus-panel h3{margin:0 0 12px}#bus-panel label{display:block}#bus-search{display:block;width:100%;box-sizing:border-box;min-height:44px;margin:7px 0;padding:9px;font:16px sans-serif;border:1px solid #91acae;border-radius:6px}#bus-list button{display:block;width:100%;min-height:44px;margin:5px 0;text-align:left}#bus-list button[aria-pressed=true]{outline:3px solid #e0ae37}#bus-panel p,#bus-panel small{font-size:12px;line-height:1.5}body:has(#bus-panel:not([hidden])) .travel-tools{display:none}@media(max-width:600px){.bus-tracker{right:90px;top:12px}#bus-panel{right:-65px;max-height:60dvh}}

/* Shared top controls; only the mobile movement pad stays at the bottom. */
.travel-tools,body:has(#bus-panel:not([hidden])) .travel-tools{display:block;top:16px;right:235px;bottom:auto;max-width:none;padding:0;background:none;z-index:8;font-size:14px}
#directions-toggle{min-height:44px;padding:13px 17px;font-size:14px}
#directions-panel{position:absolute;top:52px;right:0;width:min(310px,calc(100vw - 24px));max-height:65dvh;overflow:auto;background:#f4f8f4fa;border:1px solid #bac9c5;border-radius:12px;padding:14px;box-shadow:0 6px 20px #0003;font-size:13px}
#directions-panel[hidden]{display:none}#directions-panel p{line-height:1.5}#directions-panel label{margin:10px 0}#directions-panel button{min-height:44px;margin:3px 0}#directions-panel .controls{position:static;display:flex;flex-wrap:wrap;transform:none;width:auto;max-width:100%;padding:0;background:none;border:0;box-shadow:none;font-size:12px}#player-message{display:block;margin-top:10px}
@media(max-width:600px){.travel-tools,body:has(#bus-panel:not([hidden])) .travel-tools{top:12px;right:208px}#directions-toggle{padding:12px 10px;font-size:12px}#directions-panel{right:-196px}.bus-tracker>button{font-size:12px;padding:12px 10px}.village-editor{top:70px}}
.touch-walk{display:none}
@media(hover:none),(pointer:coarse){.touch-walk{display:grid;grid-template-columns:50px 50px 50px;grid-template-rows:50px 50px;gap:6px;bottom:max(12px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:6}.touch-walk [data-key="KeyW"]{grid-column:2;grid-row:1}.touch-walk [data-key="KeyA"]{grid-column:1;grid-row:2}.touch-walk [data-key="KeyZ"]{grid-column:2;grid-row:2}.touch-walk [data-key="KeyS"]{grid-column:3;grid-row:2}}

.world-load-error{position:fixed;inset:25% 10% auto;z-index:100;padding:24px;background:#fff;border:2px solid #8f432e;border-radius:12px;line-height:1.6}

.village-editor.server-admin{display:block!important}.village-editor.server-admin[hidden]{display:none!important}

.world-save-bar{position:sticky;top:-14px;z-index:3;background:#f8fbf5;padding:10px 0;border-bottom:1px solid #bac9c5;margin-bottom:12px}.world-save-bar #save-world{width:100%;min-height:46px;background:#245c43;font-size:15px;font-weight:bold}.world-save-bar #save-world:disabled{opacity:.65;cursor:wait}.world-save-bar #selection-status{margin:7px 0 0}

.character-route-toolbar{position:absolute;left:16px;top:16px;z-index:30;max-width:330px;padding:14px;background:#f4f8f6ee;border-radius:12px;color:#203b43}.character-route-toolbar[hidden]{display:none}.character-route-toolbar button{padding:10px;margin:3px}.character-route-toolbar p{font-size:13px}

.person-talk{position:absolute;bottom:120px;left:50%;transform:translateX(-50%);z-index:22;padding:12px}.person-talk[hidden]{display:none}#person-interactions textarea,#person-sayings textarea{width:100%;min-height:65px}

/* Keep the click-to-change garden controls immediately visible. */
.village-editor[data-garden="true"] #buildings-section > :not(.garden-editor){display:none}
.garden-editor{border-top:1px solid #cad6ca;padding-top:8px}
.garden-editor h3{margin:4px 0 8px}

/* Keep world editing on the same top row as the navigation controls. */
.village-editor{top:16px}
.bus-tracker{top:16px}
#edit-toggle,#map-toggle{height:44px;box-sizing:border-box}
@media(max-width:600px){
 .village-editor{top:12px;left:12px;width:80px}
 #edit-toggle{width:80px;padding:8px 4px;font-size:12px;white-space:nowrap}
 .village-editor #edit-panel{width:calc(100vw - 24px);box-sizing:border-box}
 .travel-tools,body:has(#bus-panel:not([hidden])) .travel-tools{right:196px}
 #directions-toggle{width:90px;padding:8px 4px}
 .bus-tracker{top:12px;right:94px}
 .bus-tracker>button{width:96px;padding:8px 4px;height:44px}
 #map-toggle{width:76px;padding:8px 4px}
 #directions-panel{right:-184px;box-sizing:border-box}
}
@media(max-width:380px){
 #edit-toggle,#directions-toggle,.bus-tracker>button,#map-toggle{width:calc((100vw - 42px)/4);min-width:0;font-size:11px}
 .travel-tools,body:has(#bus-panel:not([hidden])) .travel-tools{right:calc(50vw + 3px)}
 .bus-tracker{right:calc(25vw + 7.5px)}
 #directions-panel{right:calc(9px - 50vw)}
}

.private-delivery{position:absolute;right:18px;top:74px;z-index:12}.private-delivery button{padding:10px;border-radius:8px;background:#28454e;color:white;border:0;margin:3px}.private-delivery #delivery-panel{background:white;color:#233b44;padding:16px;width:min(310px,calc(100vw - 60px));box-shadow:0 4px 20px #0003}.private-delivery input{display:block;width:95%;padding:8px}.private-delivery small{display:block}
.named-destinations{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:10px}.named-destinations button{font-size:11px;padding:9px 5px;white-space:normal}
#reference-section textarea{width:100%;box-sizing:border-box;font:12px/1.5 monospace;resize:vertical}#reference-copy-both{margin:10px 0;background:#285866;color:white}


.private-delivery #delivery-panel{max-height:calc(100dvh - 210px);overflow:auto}.private-delivery label{display:block;margin:10px 0}.private-delivery select{display:block;width:100%;padding:9px;margin-top:5px;font:inherit}.private-delivery button{min-height:40px}

.bus-tracker #bus-panel{max-height:calc(100dvh - 210px);overflow:auto}
.bus-tracker select{display:block;width:100%;padding:9px;font:inherit}
.bus-tracker button{min-height:40px}
.shops-panel{position:absolute;right:18px;top:130px;z-index:15}.shops-panel button{padding:10px;min-height:44px}.shops-panel #shops-body{background:#f8fbf5;color:#233b44;padding:14px;width:min(340px,calc(100vw - 32px));max-height:70dvh;overflow:auto;border-radius:10px;box-shadow:0 4px 20px #0003}.shops-panel label{display:block;margin:8px 0}.shops-panel input,.shops-panel select{box-sizing:border-box;width:100%;padding:9px;font:inherit}#shops-results button{display:block;width:100%;text-align:left;margin:6px 0}#shops-detail a{display:block;padding:12px}#map-panel.expanded-map,body:has(#edit-toggle[aria-expanded="true"]) #map-panel.expanded-map{position:fixed;inset:65px 12px 12px;width:auto;max-height:none;z-index:25}#map-panel.expanded-map #minimap{display:block;width:min(100%,calc(100dvh - 220px));margin:auto}#minimap{touch-action:none}#map-panel input{padding:10px;max-width:95%}.landed-shop-link{position:absolute;bottom:110px;left:50%;transform:translateX(-50%);z-index:15;background:#fff;padding:14px 22px;border-radius:10px;color:#174655;font-weight:bold}.landed-shop-link[hidden]{display:none}
@media(max-width:700px){
.travel-tools,body:has(#bus-panel:not([hidden])) .travel-tools,body:has(#map-panel:not([hidden])) .travel-tools{display:block;position:absolute;left:6px;right:auto;top:8px;z-index:20}
.minimap{left:calc(25% + 3px);right:auto;top:8px;z-index:20}
.shops-panel{left:50%;right:auto;top:8px;z-index:20}.private-delivery{left:75%;right:auto;top:8px;z-index:20}
#directions-toggle,#map-toggle,#shops-toggle,#delivery-toggle{box-sizing:border-box;width:calc(25vw - 8px);height:44px;min-width:0;margin:0;padding:4px;font-size:11px}
#directions-panel,#map-panel,.shops-panel #shops-body,.private-delivery #delivery-panel{position:fixed;top:60px;left:8px;right:8px;box-sizing:border-box;width:calc(100vw - 16px);max-height:calc(100dvh - 90px);overflow:auto}
.bus-tracker{top:64px;right:12px;z-index:18}.village-editor{top:64px}.minimap #minimap{width:100%}
}
@media(max-width:700px){#directions-panel,#map-panel,.shops-panel #shops-body,.private-delivery #delivery-panel,#map-panel.expanded-map,body:has(#edit-toggle[aria-expanded="true"]) #map-panel.expanded-map{top:184px;max-height:calc(100dvh - 200px)}#map-panel.expanded-map{bottom:12px}.minimap:has(#map-panel:not([hidden])){z-index:24}#map-shop-results button{display:block;width:100%;margin:5px 0}}

@media(max-width:700px){.bus-tracker #bus-panel{position:fixed;left:8px;right:8px;top:240px;width:calc(100vw - 16px);max-height:calc(100dvh - 256px);box-sizing:border-box}}

.region-switcher{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.region-switcher a{padding:10px;border:1px solid #a8b8af;border-radius:7px;background:#f5f8f1;color:#193d36;text-decoration:none;font:600 12px system-ui}
.region-switcher a[aria-current=page]{background:#244f44;color:#fff}

.community-tools{position:absolute;right:12px;top:66px;z-index:24;font:14px system-ui;color:#183b35}
.community-tools button,.community-tools a{display:inline-block;margin:4px 4px 4px 0;padding:9px;border:1px solid #90a89d;border-radius:6px;background:#f5faf7;color:#183b35;cursor:pointer}
#community-panel{width:min(360px,calc(100vw - 48px));max-height:calc(100dvh - 145px);overflow:auto;padding:16px;background:#f5faf7;border:1px solid #90a89d;border-radius:10px;box-shadow:0 8px 30px #0004}
#community-panel[hidden],#community-member[hidden]{display:none}
#community-panel label{display:block;margin:10px 0}
#community-panel input:not([type=checkbox]),#community-panel textarea,#community-panel select{display:block;width:100%;box-sizing:border-box;padding:8px;font:inherit}
#community-panel p{line-height:1.45}#community-panel button:disabled{opacity:.5;cursor:default}

.stream-notice{position:absolute;bottom:12px;left:12px;max-width:80%;padding:10px;background:#f5faf7;color:#183b35;border-radius:8px;z-index:30;font:14px system-ui}.stream-notice[hidden]{display:none}

#startup-status{position:absolute;left:20px;top:90px;padding:15px;background:#f5faf7;color:#183b35;z-index:30}#startup-status[hidden]{display:none}

/* Keep each launcher separate and selected-shop actions outside the scrolling list. */
.community-tools{top:74px;right:160px}
.shops-panel #shops-body:not([hidden]){display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box;max-height:calc(100dvh - 200px)}
#shops-body>h3{flex:none;margin:0 0 8px}
#shops-scroll{min-height:0;overflow-y:auto;scrollbar-gutter:stable;flex:1 1 auto;border-bottom:1px solid #b9c9bf}
#shops-detail{flex:none;background:#f8fbf5;padding-top:8px}
#shops-detail h3{margin:0 0 4px;font-size:15px}
#shops-detail a{padding:6px 0}
#shops-detail button{margin:4px 4px 0 0}
@media(max-width:700px){
.community-tools{top:64px;left:calc(100% - 218px);right:auto;z-index:20}
.community-tools>button{font-size:11px;min-height:44px;margin:0;padding:6px}
.bus-tracker{top:64px;right:8px;left:auto;z-index:20}
.bus-tracker>button{width:90px;font-size:11px}
#community-panel,.bus-tracker #bus-panel{position:fixed;top:184px;left:8px;right:8px;width:calc(100vw - 16px);max-height:calc(100dvh - 200px);box-sizing:border-box}
.shops-panel #shops-body:not([hidden]){max-height:calc(100dvh - 200px)}
}

#bus-panel .panel-close,#community-panel .panel-close{position:sticky;top:0;display:block;margin:0 0 8px auto;min-height:44px;padding:8px 16px;z-index:2;background:#244f44;color:#fff;border:1px solid #244f44;border-radius:6px;cursor:pointer}

/* Anchor shop actions within the viewport, independent of the scene/header height. */
.shops-panel #shops-body:not([hidden]){position:fixed;top:72px;bottom:16px;right:16px;left:auto;width:min(380px,calc(100vw - 32px));height:auto;max-height:none;display:flex;overflow:hidden;z-index:40}
#shops-scroll{flex:1 1 0;min-height:0;overflow:auto;overscroll-behavior:contain}
#shops-detail{flex:0 0 auto;max-height:45%;overflow:auto;border-top:2px solid #91acae;padding:10px 0 0}
#shops-detail button{display:block;width:100%;margin:5px 0;min-height:44px}
#shops-detail:empty{display:none}
@media(max-width:700px){.shops-panel #shops-body:not([hidden]){top:174px;bottom:10px;left:8px;right:8px;width:auto;max-height:none}}
@media(max-height:550px){.shops-panel #shops-body:not([hidden]){top:58px;bottom:8px}#shops-detail h3{font-size:13px}#shops-detail a{padding:2px}}
#street-results{max-height:180px;overflow:auto}#street-results button{display:block;width:100%;text-align:left;margin:4px 0;min-height:44px}
/* Unified visitor menu. Build retains its existing compact layout. */
/* Hide legacy launchers from first paint, before scripts register the shared menu. */
#map-toggle,#directions-toggle,#bus-toggle,#shops-toggle,#delivery-toggle,#community-toggle,#my-area-toggle,.village-menu-original{display:none!important}
#village-menu{position:fixed;right:12px;top:12px;z-index:11000;pointer-events:auto}
#village-menu-toggle{min-width:90px;min-height:44px}
#village-menu-list{position:absolute;right:0;top:52px;width:220px;max-height:calc(100dvh - 80px);overflow:auto;padding:8px;background:#f8fbf5;border:1px solid #afc0bb;border-radius:10px;box-shadow:0 8px 24px #0003}
#village-menu-list button{display:block;width:100%;min-height:44px;text-align:left;margin:3px 0}
#village-panel-header{position:fixed;inset:0 0 auto;height:64px;box-sizing:border-box;z-index:12002;display:flex;align-items:center;justify-content:space-between;padding:8px max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left));background:#244c50;color:white}
#village-panel-header button{min-height:44px;min-width:100px}
#village-panel-header[hidden],#village-menu-list[hidden]{display:none!important}
body.village-panel-open{overflow:hidden}
body.village-panel-open #village-menu{visibility:hidden}
.village-panel-parent{z-index:12000!important;pointer-events:auto!important}
body .village-full-panel:not([hidden]){position:fixed!important;inset:64px 0 0!important;width:100vw!important;height:calc(100dvh - 64px)!important;max-width:none!important;max-height:none!important;box-sizing:border-box!important;margin:0!important;padding:20px max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))!important;overflow:auto!important;border:0!important;border-radius:0!important;background:#f8fbf5!important;color:#233b44!important;z-index:12001!important;pointer-events:auto!important;display:block!important}
body .village-full-panel .panel-close{display:none}
body #map-panel.village-full-panel #minimap{display:block;width:min(100%,calc(100dvh - 260px))!important;min-width:200px;margin:0 auto;height:auto!important}
body #shops-body.village-full-panel #shops-detail{position:static;max-height:none;overflow:visible}
body #shops-body.village-full-panel #shops-search-area{max-height:none;overflow:visible}

#bus-panel .bus-search-actions{display:flex;align-items:end;gap:10px}#bus-panel .bus-search-actions label{flex:1;font-size:12px}#bus-panel .bus-search-actions select{min-height:40px}
/* Desktop map and controls share the available screen; mobile keeps a single column. */
.village-map-view,.village-map-controls{min-width:0}
@media(min-width:900px){
 body #map-panel.village-full-panel:not([hidden]){display:grid!important;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:24px;overflow:hidden!important}
 .village-map-view{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0}
 body #map-panel.village-full-panel .village-map-view #minimap{width:min(100%,calc(100dvh - 170px))!important;min-width:0;max-height:calc(100dvh - 170px);object-fit:contain}
 .village-map-controls{overflow:auto;min-height:0;padding:0 10px 12px 0}
 .village-map-controls button{margin:4px 3px 4px 0}
 .village-map-controls input,.village-map-controls select{max-width:100%;box-sizing:border-box}
 .village-map-controls progress{max-width:100%}
}
