/* The Bastion Vault - 3D maps and address autocomplete (shared by public site, portals and admin) */

/* Tokens repeated here so the admin panel (which does not load bastion.css) renders identically */
:root { --bv-navy:#002147; --bv-navy-600:#1a3f6b; --bv-gold:#c0a261; --bv-gold-dark:#8a6d2f; --bv-gold-50:#faf5ea; --bv-amber:#d3a95e; --bv-parchment:#f5f0e6; --bv-white:#fff; --bv-text:#333; --bv-text-muted:#6b6558; --bv-line:#e6dcc6; --bv-line-strong:#d6c7a6; --bv-success:#2e6b4f; --bv-radius-sm:6px; --bv-radius:10px; --bv-radius-lg:16px; --bv-shadow:0 8px 24px -8px rgba(0,33,71,.18); --bv-shadow-lg:0 24px 48px -16px rgba(0,33,71,.28); --bv-font-body:"Plus Jakarta Sans",system-ui,sans-serif; --bv-font-heading:"Cinzel",Georgia,serif; }
.bv-icon { width:24px; height:24px; display:inline-block; vertical-align:middle; flex:none; stroke:currentColor; fill:none; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; }
.bv-icon .a { fill: var(--bv-icon-accent, var(--bv-gold)); }
.bv-icon .l { fill: var(--bv-icon-soft, var(--bv-parchment)); }
.bv-live { display:inline-flex; align-items:center; gap:.45rem; font:700 .68rem/1 var(--bv-font-body); letter-spacing:.14em; text-transform:uppercase; color:var(--bv-success); }
.bv-live::before { content:""; width:8px; height:8px; border-radius:50%; background:currentColor; animation:bv-live 1.8s infinite; }
@keyframes bv-live { 70% { box-shadow:0 0 0 8px rgba(46,107,79,0); } 100% { box-shadow:0 0 0 0 rgba(46,107,79,0); } }
@keyframes bv-pulse-gold { 50% { box-shadow: 0 0 0 12px rgba(192, 162, 97, 0); } }

.bv-map-shell { position: relative; height: clamp(380px, 60vh, 620px); border-radius: var(--bv-radius-lg); overflow: hidden; background: #001229; border: 1px solid var(--bv-line-strong); box-shadow: var(--bv-shadow); }
.bv-map { width: 100%; height: 100%; }
.bv-map-controls { position: absolute; left: 1rem; top: 1rem; z-index: 5; display: flex; flex-wrap: wrap; gap: .4rem; }
.bv-map-controls button { display: inline-flex; align-items: center; gap: .35rem; border: 1px solid rgba(192, 162, 97, .55); background: rgba(0, 33, 71, .88); color: var(--bv-parchment); padding: .45rem .75rem; border-radius: 999px; font: 600 .72rem/1 var(--bv-font-body); letter-spacing: .06em; text-transform: uppercase; backdrop-filter: blur(6px); }
.bv-map-controls button:hover, .bv-map-controls button.active { background: var(--bv-gold); color: var(--bv-navy); }
.bv-map-legend { position: absolute; right: 1rem; bottom: 1.8rem; z-index: 5; background: rgba(0, 33, 71, .88); color: var(--bv-parchment); border: 1px solid rgba(192, 162, 97, .45); border-radius: var(--bv-radius); padding: .6rem .8rem; font-size: .74rem; display: grid; gap: .3rem; backdrop-filter: blur(6px); }
.bv-map-legend i { display: inline-block; width: 18px; height: 3px; margin-right: .45rem; vertical-align: middle; border-radius: 2px; }
.bv-map-fallback { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; color: var(--bv-parchment); padding: 2rem; }


/* MapLibre markers and popups */
.bv-marker { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: var(--bv-navy); color: var(--bv-gold); box-shadow: 0 0 0 3px var(--bv-gold), 0 10px 20px rgba(0, 0, 0, .45); cursor: pointer; }
.bv-marker .bv-icon { width: 20px; height: 20px; --bv-icon-soft: rgba(245, 240, 230, .1); }
.bv-marker.dest { background: var(--bv-gold); color: var(--bv-navy); box-shadow: 0 0 0 3px var(--bv-navy), 0 10px 20px rgba(0, 0, 0, .45); --bv-icon-accent: var(--bv-navy); }
.bv-marker.current { width: 22px; height: 22px; background: var(--bv-amber); box-shadow: 0 0 0 4px rgba(211, 169, 94, .35), 0 0 0 10px rgba(211, 169, 94, .15); animation: bv-pulse-gold 2s infinite; }
.bv-marker.office { width: 44px; height: 44px; }
.maplibregl-popup-content { font-family: var(--bv-font-body); border-radius: var(--bv-radius); padding: .8rem 1rem; border: 1px solid var(--bv-line); box-shadow: var(--bv-shadow-lg); color: var(--bv-text); }
.maplibregl-popup-content strong { color: var(--bv-navy); font-family: var(--bv-font-heading); letter-spacing: .03em; }
.maplibregl-popup-close-button { font-size: 18px; padding: 0 6px; color: var(--bv-text-muted); }
.maplibregl-ctrl-attrib { font-size: 10px; }

/* ---------- Address autocomplete ---------- */
.bv-address { position: relative; }
.bv-address-list { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 1060; list-style: none; margin: 0; padding: .35rem; background: var(--bv-white); border: 1px solid var(--bv-line-strong); border-radius: var(--bv-radius); box-shadow: var(--bv-shadow-lg); max-height: 320px; overflow-y: auto; }
.bv-address-list li { display: flex; gap: .6rem; align-items: flex-start; padding: .55rem .65rem; border-radius: var(--bv-radius-sm); cursor: pointer; font-size: .88rem; line-height: 1.35; color: var(--bv-text); }
.bv-address-list li .bv-icon { width: 18px; height: 18px; margin-top: 1px; color: var(--bv-gold-dark); }
.bv-address-list li small { display: block; color: var(--bv-text-muted); font-size: .76rem; }
.bv-address-list li[aria-selected="true"], .bv-address-list li:hover { background: var(--bv-gold-50); }
.bv-address-list .note { cursor: default; color: var(--bv-text-muted); font-size: .8rem; justify-content: center; }
.bv-address-list .attr { cursor: default; justify-content: flex-end; font-size: .66rem; color: #a39c8c; padding: .25rem .5rem 0; }
.bv-address-status { position: absolute; right: .7rem; top: 50%; transform: translateY(-50%); display: flex; align-items: center; gap: .3rem; pointer-events: none; }
.bv-address-status .bv-icon { width: 18px; height: 18px; color: var(--bv-success); }
.bv-address input.form-control { padding-right: 2.5rem; }
.bv-address-locate { position: absolute; right: .4rem; top: 50%; transform: translateY(-50%); border: 0; background: transparent; color: var(--bv-gold-dark); width: 34px; height: 34px; border-radius: 50%; }
.bv-address-locate:hover { background: var(--bv-gold-50); }
.bv-address.has-locate .bv-address-status { right: 2.6rem; }
.bv-address.has-locate input.form-control { padding-right: 4.6rem; }

@media (max-width: 767.98px) { .bv-map-legend { display: none; } }
@media print { .bv-map-controls { display: none !important; } }
