.city-hub-modal .ui-modal__content { margin:0 !important; }
.city-hub-toolbar { display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:8px 0 14px;color:#ead7a0; }
.city-hub-toolbar strong { flex:1;font:22px Georgia,serif; }
.city-hub-control { padding:9px 16px;border:1px solid #a68b4a;background:#1a3029;color:#f1dda8;cursor:pointer; }
.city-hub-control:disabled { opacity:.5;cursor:default; }
.city-hub-viewport { overflow:auto;max-height:76vh; }
.city-hub-stage { position:relative;width:min(100%,96vh);min-width:780px;margin:auto;aspect-ratio:3/2;isolation:isolate;overflow:hidden;background:#23392f; }
.city-hub-background { display:block;width:100%;height:100%;object-fit:cover;image-rendering:pixelated; }
.city-hub-building,.city-hub-npc { position:absolute;border:0;background:transparent;padding:0;cursor:pointer;transform:translate(-50%,-50%);color:#f5e3b6; }
.city-hub-building { height:18%;z-index:1; }
.city-hub-building img { width:100%;height:100%;object-fit:contain;image-rendering:pixelated;pointer-events:none; }
.city-hub-building span { position:absolute;top:22%;left:50%;transform:translateX(-50%);padding:2px 6px;white-space:nowrap;background:#152b24ed;border:1px solid #a68b4a;font:clamp(11px,.85vw,14px) Georgia,serif; }
.city-hub-building:hover img,.city-hub-building:focus-visible img { filter:drop-shadow(0 0 4px #ffd477); }
.city-hub-npc { z-index:2;width:4%;height:8%;min-width:30px;min-height:44px; }
.city-hub-npc img { width:100%;height:100%;object-fit:contain;image-rendering:pixelated;pointer-events:none; }
.city-hub-npc span { position:absolute;left:50%;bottom:100%;transform:translateX(-50%);white-space:nowrap;padding:4px 8px;background:#12271ff5;border:1px solid #c9ad66;visibility:hidden;font-size:13px; }
.city-hub-npc:hover,.city-hub-npc:focus-visible { z-index:4;filter:drop-shadow(0 0 3px #e9c563); }
.city-hub-npc:hover span,.city-hub-npc:focus-visible span,.city-hub-npc-large span { visibility:visible; }
.city-hub-building:focus-visible,.city-hub-npc:focus-visible,.city-hub-control:focus-visible { outline:2px solid #ffe09b;outline-offset:3px; }
.city-hub-npc-large { width:9%;height:24%; }
.city-hub-npc-placed { transform:translate(-50%,-100%);min-width:0;min-height:0; }
.city-hub-npc-placed img { object-position:center bottom; }
.city-hub-room-building { position:absolute;width:52%;height:58%;object-fit:contain;left:24%;top:0;image-rendering:pixelated; }
.city-hub-room .city-hub-background { filter:brightness(.8); }
.city-hub-stove { position:absolute;left:13%;top:22%;width:13%;height:13%;z-index:3;padding:0;border:2px solid transparent;background:transparent;cursor:pointer;color:#f5e3b6; }
.city-hub-stove span { position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding:3px 8px;background:#152b24ed;border:1px solid #a68b4a;font:14px Georgia,serif;white-space:nowrap; }
.city-hub-stove:hover,.city-hub-stove:focus-visible { border-color:#e8c66e;background:#ffd47718;outline:2px solid #e8c66e;outline-offset:2px; }
.city-hub-stove:disabled { cursor:default;opacity:.6; }
