/* Shared olive/brass modal shell. Content keeps its native actions and item art. */
dialog.game-dialog{--dialog-padding:14px;box-sizing:border-box!important;position:fixed!important;inset:0!important;display:none;width:min(620px,calc(100vw - 24px))!important;max-width:calc(100vw - 24px)!important;max-height:88dvh!important;height:auto!important;margin:auto!important;padding:var(--dialog-padding)!important;border:1px solid #9d7b42!important;border-radius:10px!important;background:#16190f!important;color:#e5d2a3!important;box-shadow:0 18px 60px #000a!important;overflow:auto!important;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#8f7544 transparent;font:14px/1.45 Arial,sans-serif}
dialog.game-dialog[open]{display:flex!important;flex-direction:column}
/* Deferred legacy cancel handlers must never reveal a swiped-out sheet again. */
dialog.game-dialog.dialog-swipe-dismissed{visibility:hidden!important;pointer-events:none!important}
/* The discrete display exit keeps flex alive after [open] is removed. Its
   direction must stay column throughout that exit, or heading/body squash. */
dialog.game-dialog{overflow:hidden!important;flex-direction:column}
dialog.game-dialog>.game-dialog-heading,dialog.game-dialog>footer{flex:none!important;position:relative!important;top:auto!important;bottom:auto!important}
dialog.game-dialog>.game-dialog-content{flex:1;min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#8f7544 transparent}
/* One stable dimmer prevents native per-dialog backdrops blinking during removal. */
html body dialog.game-dialog::backdrop{background:transparent!important;backdrop-filter:none!important;animation:none!important;transition:none!important}
.game-modal-shade{position:fixed;inset:0;z-index:78;pointer-events:none;background:#050803b0;backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .16s ease-out,visibility 0s linear .16s}
.game-modal-shade.is-visible{opacity:1;visibility:visible;transition:opacity .16s ease-out,visibility 0s}
dialog.game-dialog.game-dialog-underlay{filter:brightness(.7)}
.graphics-low .game-modal-shade{backdrop-filter:none}
html.game-modal-scroll-lock,html.game-modal-scroll-lock body{overflow:hidden!important;overscroll-behavior:none!important}
@media(prefers-reduced-motion:reduce){.game-modal-shade,.game-modal-shade.is-visible{transition:none}}
dialog.game-dialog:before,dialog.game-dialog:after{display:none!important}
dialog.game-dialog .dialog-legacy-control{display:none!important}
dialog.game-dialog#village-shop #shop-window>.section-heading{display:none!important}
dialog.game-dialog>.game-dialog-heading{position:sticky!important;top:calc(-1 * var(--dialog-padding))!important;z-index:5;display:flex!important;flex-wrap:wrap!important;align-items:center;gap:8px;min-height:48px!important;width:auto!important;margin:calc(-1 * var(--dialog-padding)) calc(-1 * var(--dialog-padding)) 12px!important;padding:8px var(--dialog-padding)!important;border:0!important;border-bottom:1px solid #78613966!important;background:#16190ff5!important;box-shadow:none!important;border-radius:0!important}
dialog.game-dialog>.game-dialog-heading h2,dialog.game-dialog>.game-dialog-heading h3{font:normal 22px/1.2 Georgia,serif!important;color:#e5d2a3!important;margin:0!important;letter-spacing:0!important}
dialog.game-dialog>.game-dialog-heading p{font:12px/1.35 Arial!important;margin:4px 0 0!important;color:#b5a586!important}
dialog.game-dialog>.game-dialog-heading>.eyebrow{display:none!important}
dialog.game-dialog>.game-dialog-heading>img,dialog.game-dialog>.game-dialog-heading>.results-emblem{width:32px!important;height:34px!important;object-fit:contain;margin:0!important;flex:none}
dialog.game-dialog>.game-dialog-heading .game-dialog-close{display:grid!important;place-items:center;flex:none;width:34px!important;min-width:34px!important;height:34px!important;min-height:34px!important;margin:0 0 0 auto!important;padding:0!important;border:0!important;border-radius:3px;background:transparent!important;box-shadow:none!important;color:#c7b58f!important;font:26px/1 Arial!important;cursor:pointer}
dialog.game-dialog>.game-dialog-heading .game-dialog-grip{display:none!important;touch-action:none;user-select:none;cursor:grab}
dialog.game-dialog button:not(.slot):not(.game-dialog-grip):not(.game-dialog-close):not(.dialog-legacy-control){font-family:Arial,sans-serif;border-radius:3px}
dialog.game-dialog input:not([type=checkbox]):not([type=range]),dialog.game-dialog select{font-family:Arial,sans-serif;font-size:14px;min-height:38px;border-radius:3px}
dialog.game-dialog>footer{position:sticky;bottom:calc(-1 * var(--dialog-padding));display:flex;gap:8px;margin:12px calc(-1 * var(--dialog-padding)) calc(-1 * var(--dialog-padding));padding:12px var(--dialog-padding);background:#16190ff5;border-top:1px solid #78613966}
dialog.game-dialog>footer>button{flex:1;min-height:40px;padding:8px 12px;font-size:14px}
dialog.game-dialog>.game-dialog-content>p{margin:10px 0}dialog.game-dialog>.game-dialog-content>h2{font:22px Georgia;margin:0 0 12px}
@media(min-width:651px){dialog.game-dialog:is(#activity-settings,#activity-results,#village-shop,.trade-window){width:min(820px,calc(100vw - 24px))!important}dialog.game-dialog:is(#inventory-delete,.social-confirm,#pwa-install-help){width:min(450px,calc(100vw - 24px))!important}}
dialog.game-dialog #panel-farm,dialog.game-dialog .results-body,dialog.game-dialog .gathering-sheet-body,dialog.game-dialog .device-settings-body,dialog.game-dialog .buff-sheet-content,dialog.game-dialog .market-preview,dialog.game-dialog .market-owned-preview{padding:0!important;border:0!important;background:transparent!important;overflow:visible!important;max-height:none!important}
dialog.game-dialog #panel-farm{gap:16px}
dialog.game-dialog .item-actions,dialog.game-dialog .bonus-actions,dialog.game-dialog .gathering-actions{gap:8px;margin-top:12px;padding-top:12px}
dialog.game-dialog .item-actions button,dialog.game-dialog .bonus-actions button,dialog.game-dialog .gathering-actions button{min-height:40px;padding:8px 12px;font-size:14px}
dialog.game-dialog .game-dialog-close:focus-visible{outline:2px solid #d3ac64!important;outline-offset:-3px}
dialog.game-dialog .game-dialog-grip:focus-visible{outline:none!important}
.dialog-keyboard dialog.game-dialog .game-dialog-grip:focus-visible span{outline:1px solid #d3ac64;outline-offset:3px}
@media(max-width:650px){
 dialog.game-dialog{inset:auto 0 0!important;width:100vw!important;max-width:100vw!important;max-height:90dvh!important;margin:0!important;border-radius:16px 16px 0 0!important;padding-bottom:calc(var(--dialog-padding) + env(safe-area-inset-bottom))!important}
 dialog.game-dialog>.game-dialog-heading{gap:0 8px;padding-top:0!important}
 dialog.game-dialog>.game-dialog-heading h2,dialog.game-dialog>.game-dialog-heading h3{font-size:21px!important}
 dialog.game-dialog>.game-dialog-heading .game-dialog-grip{display:flex!important;align-items:center;justify-content:center;order:-10;flex:0 0 calc(100% + 28px)!important;width:calc(100% + 28px)!important;min-width:0!important;height:28px!important;min-height:28px!important;margin:0 -14px 4px!important;padding:0!important;border:0!important;border-radius:0;background:none!important;box-shadow:none!important}
 .game-dialog-grip span{width:38px;height:4px;border-radius:3px;background:#a09674;pointer-events:none}
 dialog.game-dialog.dialog-dragging .game-dialog-grip{cursor:grabbing}
}
@media(prefers-reduced-motion:no-preference){dialog.game-dialog[open]{animation:game-dialog-enter .18s ease-out!important}@keyframes game-dialog-enter{from{opacity:.4;transform:translateY(12px)}to{opacity:1;transform:none}}}
/* Original five-column shops size with their contents, not the wide hunt shell. */
dialog.game-dialog#village-shop{--vendor-cell:var(--item-cell,40px);width:min(280px,calc(100vw - 16px))!important;margin-inline:auto!important}
dialog.game-dialog#village-shop #shop-window{box-sizing:border-box;width:max-content;max-width:100%;padding:0;margin:0 auto;background:transparent;border:0;box-shadow:none}
dialog.game-dialog#village-shop .vendor-grid-scroll{max-height:none;overflow:visible}
