.hub-shell-v153{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;padding:14px}.hub-map-wrap-v153{position:relative;overflow:auto;border:1px solid color-mix(in srgb,var(--accent,#7df9ff) 35%,transparent);background:#070b10;border-radius:12px;min-height:55vh}.hub-map-v153{position:relative;min-width:800px;min-height:520px;background-position:center;background-size:cover;overflow:hidden}.hub-grid-v153{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:40px 40px}.hub-object-v153{position:absolute;display:flex;align-items:center;justify-content:center;box-sizing:border-box;border:1px solid color-mix(in srgb,var(--accent,#7df9ff) 55%,#fff 10%);background:rgba(8,15,23,.84);color:#fff;border-radius:8px;cursor:pointer;overflow:hidden;text-align:center;padding:5px}.hub-object-v153 img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hub-object-v153 span{position:relative;z-index:1;text-shadow:0 1px 4px #000}.hub-object-v153[data-type="door"]{border-style:double;border-width:3px}.hub-player-v153{position:absolute;width:40px;height:40px;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;background:var(--accent,#7df9ff);color:#071018;font-weight:900;z-index:100;transform:translate(-50%,-50%);box-shadow:0 0 18px var(--accent,#7df9ff);transition:left .25s,top .25s}.hub-panel-v153{display:flex;flex-direction:column;gap:12px}.hub-card-v153{padding:14px;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:rgba(7,12,18,.92)}.hub-actions-v153{display:flex;gap:8px;flex-wrap:wrap}.hub-modal-v153{position:fixed;inset:0;z-index:110;display:grid;place-items:center;background:rgba(0,0,0,.72);padding:20px}.hub-modal-card-v153{width:min(720px,96vw);max-height:88vh;overflow:auto;background:#0b1119;border:1px solid var(--accent,#7df9ff);border-radius:14px;padding:18px}.hub-dialog-line-v153{padding:12px;margin:10px 0;border-left:3px solid var(--accent,#7df9ff);background:rgba(255,255,255,.04)}.hub-badge-v153{font-size:10px;padding:3px 6px;border:1px solid currentColor;border-radius:99px}.hub-empty-v153{padding:32px;text-align:center}.hub-hidden-v153{display:none!important}@media(max-width:800px){.hub-shell-v153{grid-template-columns:1fr;padding:8px}.hub-map-wrap-v153{min-height:58vh}.hub-panel-v153{padding-bottom:80px}}
.hub-object-v153.hub-unit-v156{border-radius:50%!important;aspect-ratio:1;border:2px solid var(--accent,#d6a65b)!important;padding:0}
.hub-object-v153.hub-unit-v156 img{border-radius:50%;object-fit:cover}
.hub-door-open-v156{opacity:.45;border-style:dashed!important}
.hub-modal-v153{z-index:2147483646}
.hub-map-v153{background-size:100% 100%;background-repeat:no-repeat}
/* Shared hub hex terrain and per-player visibility. */
.hub-map-v153{min-width:0;min-height:0;isolation:isolate}
.hub-hex-grid-v157,.hub-walls-v157,.hub-fog-v157{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.hub-hex-grid-v157{z-index:0;fill:none;stroke:rgba(230,189,124,.16);stroke-width:1}
.hub-walls-v157{z-index:95;fill:none;stroke:#d6a65b;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.hub-walls-editor-v157 polyline{pointer-events:stroke;cursor:move;stroke:#e4bb75}
.hub-walls-editor-v157 polyline.selected{stroke:#fff1cc;filter:drop-shadow(0 0 4px #d6a65b)}
.hub-wall-preview-v157{stroke:#fff;stroke-dasharray:10 6;pointer-events:none!important}
.hub-fog-v157{z-index:200}
.hub-player-v153{z-index:250;box-sizing:border-box;overflow:hidden;width:40px;height:40px;transition:left .26s ease-in-out,top .26s ease-in-out;background:#392e1f}
.hub-player-v153 img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.hub-player-v153 span{color:#f5dfb8}
.hub-object-v153[hidden]{display:none!important}
.hub-walking-v157{cursor:progress}.hub-walking-v157 [data-object]{pointer-events:none}
.hub-fog-toggle-v157{display:flex;align-items:center;gap:4px;font-size:11px;white-space:nowrap}
.hub-builder-toolbar-v153{overflow-x:auto;overflow-y:hidden;white-space:nowrap}.hub-builder-toolbar-v153>.row{flex-shrink:0}

/* Route preview stays above fog; objects and terrain remain subject to normal visibility. */
.hub-route-v160{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:220;fill:rgba(228,187,117,.18);stroke:#f0c47c;stroke-width:2}.hub-route-v160 polyline{fill:none;stroke-width:3;stroke-dasharray:9 6;stroke-linecap:round;stroke-linejoin:round}.hub-route-v160 circle{fill:#f0c47c;stroke:#392e1f;stroke-width:1}.hub-route-v160 .hub-route-blocked-v160{fill:rgba(210,90,65,.18);stroke:#d25a41}.hub-player-v153{transition:left .14s linear,top .14s linear}

/* Separate NPC/asset merchant assortment window. */
.hub-merchant-editor-v162{position:fixed;inset:0;z-index:2147483647;background:#000b;display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.hub-merchant-card-v162{width:min(1200px,100%);height:min(900px,94vh);display:flex;flex-direction:column;gap:14px;padding:22px;box-sizing:border-box;background:#141c27;border:1px solid #8a7350;border-radius:12px;color:#eedfc3;box-shadow:0 20px 80px #000a;min-width:0}.hub-merchant-card-v162 h2{margin:0;flex:1}.hub-merchant-card-v162 header,.hub-merchant-card-v162 footer{justify-content:space-between}.hub-merchant-card-v162 p{margin:0;line-height:1.5}.hub-merchant-card-v162 [data-merchant-search]{flex:1;min-width:120px;width:auto}.hub-merchant-card-v162 label{white-space:nowrap}.hub-merchant-table-v162{flex:1;min-height:0;overflow:auto}.hub-merchant-table-v162 table{border-collapse:collapse;width:100%;min-width:640px}.hub-merchant-table-v162 th{position:sticky;top:0;background:#253040;text-align:left;z-index:1}.hub-merchant-table-v162 th,.hub-merchant-table-v162 td{padding:10px;border-bottom:1px solid #524735}.hub-merchant-table-v162 tr[hidden]{display:none}.hub-merchant-table-v162 small{display:block;opacity:.65;margin-top:5px}.hub-merchant-table-v162 input[type=number]{min-width:80px;max-width:140px}.hub-merchant-card-v162 [data-merchant-status]{color:#f4ac91}.hub-merchant-card-v162 footer .primary{margin-left:auto}@media(max-width:760px){.hub-merchant-editor-v162{padding:4px}.hub-merchant-card-v162{padding:12px;height:98vh}.hub-merchant-card-v162>.row{flex-wrap:wrap}}

/* Player camera and readable editor palette. */
.hub-camera-v164{position:relative;min-width:0;min-height:0;overflow:hidden}.hub-camera-wrap-v164{position:absolute;inset:0;touch-action:none;user-select:none}.hub-map-stage-v164{position:relative;min-width:0;min-height:0}.hub-map-stage-v164>[data-runtime-map]{transform-origin:0 0;min-width:0;min-height:0}.hub-camera-controls-v164{position:absolute;left:12px;top:12px;z-index:300;display:flex;align-items:center;gap:7px;padding:7px;border:1px solid #8d7448;border-radius:7px;background:#0c1119e8;color:#e8c17c}.hub-camera-controls-v164 button{padding:6px 10px}.hub-camera-controls-v164 span{min-width:42px;text-align:center;font-size:12px}.hub-camera-dragging-v164,.hub-camera-dragging-v164 *{cursor:grabbing!important}
#hub-builder-v153 .scene-palette-grid-v104{grid-template-columns:minmax(0,1fr)}#hub-builder-v153 .scene-palette-card-v104{grid-template-columns:42px minmax(0,1fr);grid-template-rows:auto auto;min-width:0;padding:7px;color:var(--text,#e9dfce)}#hub-builder-v153 .scene-palette-card-v104>img,#hub-builder-v153 .scene-palette-card-v104>span:first-child{grid-column:1;grid-row:1/3}#hub-builder-v153 .scene-palette-card-v104>b{grid-column:2;grid-row:1;display:block;min-width:0;white-space:normal;overflow-wrap:anywhere;font-size:12px;color:inherit}#hub-builder-v153 .scene-palette-card-v104>small{grid-column:2;grid-row:2;white-space:normal;line-height:1.3}
.hub-map-stage-v164 .hub-player-v153{pointer-events:none}

/* Give the absolute camera an explicit, viewport-sized workspace. */
.hub-shell-v153{height:var(--hub-workspace-height,calc(100dvh - 180px));min-height:240px;min-width:0;grid-template-rows:minmax(0,1fr);box-sizing:border-box;overflow:hidden}
.hub-camera-v164{min-height:0;height:100%}.hub-camera-wrap-v164{min-height:0!important}.hub-panel-v153{min-height:0;overflow:auto}
.hub-interaction-v167{position:absolute;z-index:400;max-width:calc(100% - 16px);width:max-content;color:var(--text,#e9dfce)}
.hub-interaction-v167>[data-interact-toggle]{box-shadow:0 4px 18px #0009}
.hub-interaction-v167 [data-interaction-options]{margin-top:6px;padding:12px;width:260px;max-width:100%;max-height:min(300px,45dvh);overflow:auto;box-sizing:border-box;background:#111820f5;border:1px solid #ae8a4b;border-radius:9px;box-shadow:0 6px 24px #0009}
.hub-interaction-v167 [hidden]{display:none!important}.hub-interaction-v167 .hub-actions-v153{display:grid;gap:6px;margin-top:8px}.hub-interaction-v167 button{white-space:normal;overflow-wrap:anywhere}
@media(max-width:800px){.hub-shell-v153{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;gap:8px;padding:8px}.hub-panel-v153{max-height:125px;padding-bottom:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.hub-panel-v153>[data-info]{grid-column:1/-1}.hub-panel-v153 .hub-card-v153{padding:8px}.hub-camera-controls-v164{gap:4px;left:8px;top:8px;padding:4px}.hub-camera-controls-v164 button{padding:5px}.hub-interaction-v167 [data-interaction-options]{max-height:30dvh}}
