/* ---- Exhibition map, share dialog and public share page ---- */
.map-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 1rem; padding: 1rem 1.25rem 1.25rem; }
.map-canvas { height: min(72vh, 680px); min-height: 380px; border-radius: var(--em-radius-sm); border: 1px solid var(--em-border); z-index: 0; }
.map-list { height: min(72vh, 680px); min-height: 380px; overflow-y: auto; border: 1px solid var(--em-border); border-radius: var(--em-radius-sm); }
.map-list-item { display: flex; gap: .75rem; align-items: flex-start; width: 100%; padding: .75rem 1rem; border: 0; border-bottom: 1px solid var(--em-border); background: none; text-align: left; min-height: var(--em-touch); }
.map-list-item:hover, .map-list-item.active { background: var(--em-primary-050); }
.map-list-item .dot { width: 10px; height: 10px; border-radius: 50%; margin-top: .4rem; flex: none; }
.map-list-item .title { font-weight: 600; color: var(--em-text); line-height: 1.3; }
.map-list-item .meta { font-size: .8125rem; color: var(--em-muted); }
.map-adjust-bar { position: absolute; left: 50%; top: 12px; transform: translateX(-50%); z-index: 500; background: var(--em-surface); border-radius: var(--em-radius-sm); box-shadow: var(--em-shadow-lg); padding: .6rem .75rem; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; max-width: calc(100% - 24px); }
.map-pin { position: relative; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); border: 2px solid #fff; box-shadow: 0 2px 6px rgba(31, 42, 68, .35); }
.map-pin > span { transform: rotate(45deg); font-size: .72rem; font-weight: 700; color: #fff; }
.map-pin.pin-info { background: var(--em-info); }
.map-pin.pin-success { background: var(--em-success); }
.map-pin.pin-neutral { background: var(--em-neutral); }
.map-pin.pin-primary { background: var(--em-primary); }
.map-pin.pin-manual { outline: 2px dashed var(--em-warning); outline-offset: 2px; }
.dot.pin-info { background: var(--em-info); } .dot.pin-success { background: var(--em-success); }
.dot.pin-neutral { background: var(--em-neutral); } .dot.pin-primary { background: var(--em-primary); }
.map-popup { min-width: 220px; font-family: inherit; }
.map-popup h6 { margin: 0 0 .25rem; font-weight: 700; }
.map-popup .actions { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .6rem; }
.map-legend { display: flex; flex-wrap: wrap; gap: .9rem; font-size: .8125rem; color: var(--em-muted); padding: 0 1.25rem; }
.map-legend .dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: .35rem; vertical-align: middle; }
.share-options .form-check { border: 1px solid var(--em-border); border-radius: var(--em-radius-sm); padding: .6rem .75rem .6rem 2.25rem; margin-bottom: .5rem; cursor: pointer; }
.share-options .form-check:has(input:checked) { border-color: var(--em-primary); background: var(--em-primary-050); }
.share-qr { display: grid; place-items: center; padding: .75rem; background: #fff; border: 1px solid var(--em-border); border-radius: var(--em-radius-sm); }
.share-qr canvas { width: 220px; height: auto; max-width: 100%; image-rendering: pixelated; }
.share-page { min-height: 100vh; background: var(--em-bg); padding: 1.5rem 1rem; }
.share-card { max-width: 720px; margin: 0 auto; }
.share-card .map-canvas { height: 320px; min-height: 0; }
@media (max-width: 991.98px) {
    .map-layout { grid-template-columns: 1fr; }
    .map-canvas { height: 60vh; }
    .map-list { height: auto; max-height: 50vh; }
}
@media print { .map-adjust-bar { display: none !important; } }
