/* Logosnet locations map: MapLibre + OpenFreeMap version.
   Visual rules follow Sachin's Mapbox app (red #dc2626 pills, floating card on
   desktop, panel under the map on phones). */
html, body { margin: 0; height: 100%; background: #f1f5f9; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; color: #111827; }
.lnm { position: relative; width: 100%; height: 100%; }
.lnm-map-wrap { position: relative; width: 100%; height: 100vh; overflow: hidden; background: #f1f5f9; }
.lnm-map { position: absolute; inset: 0; }

/* Markers: red dot with ripple + red pill label */
.lnm-marker { display: flex; align-items: center; gap: 0; padding: 0; margin: 0; border: 0; background: none; cursor: pointer; font: inherit; }
.lnm-marker.is-left { flex-direction: row-reverse; }
.lnm-dot { width: 8px; height: 8px; border-radius: 50%; background: #dc2626; border: 2px solid #fff; flex-shrink: 0; position: relative; z-index: 1; animation: lnmRipple 2.5s infinite; }
.lnm-pill { background: #dc2626; color: #fff; padding: 8px 16px; border-radius: 20px; font-size: 14px; font-weight: 500; white-space: nowrap; margin-left: -2px; border: 1px solid #dc2626; box-shadow: 0 2px 8px rgba(0,0,0,.15); transition: background .2s ease, transform .2s ease; }
.lnm-marker.is-left .lnm-pill { margin-left: 0; margin-right: -2px; }
.lnm-marker:hover .lnm-pill, .lnm-marker:focus-visible .lnm-pill { background: #b91c1c; border-color: #b91c1c; transform: translateY(-1px); }
.lnm-marker:focus-visible { outline: none; }
.lnm-marker:focus-visible .lnm-pill { box-shadow: 0 0 0 3px #fff, 0 0 0 5px #dc2626; }
@keyframes lnmRipple {
  0% { box-shadow: 0 0 0 0 rgba(220,38,38,.6), 0 0 0 0 rgba(220,38,38,.3); }
  70% { box-shadow: 0 0 0 10px rgba(220,38,38,0), 0 0 0 20px rgba(220,38,38,0); }
  100% { box-shadow: 0 0 0 0 rgba(220,38,38,0), 0 0 0 0 rgba(220,38,38,0); }
}

/* Back button */
.lnm-back { position: absolute; top: 16px; left: 16px; z-index: 5; width: 50px; height: 50px; border-radius: 50%; border: 2px solid #dc2626; background: #dc2626; color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 4px 12px rgba(220,38,38,.4); transition: all .2s ease; touch-action: manipulation; }
.lnm-back:hover { background: #b91c1c; border-color: #b91c1c; transform: translateY(-2px); }
.lnm-back svg { width: 20px; height: 20px; }
.lnm-back[hidden] { display: none; }

/* Loading / error */
.lnm-status { position: absolute; inset: 0; z-index: 6; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; background: #f1f5f9; text-align: center; padding: 20px; }
.lnm-status[hidden] { display: none; }
.lnm-status p { margin: 0; color: #475569; font-size: 14px; font-weight: 500; }
.lnm-spinner { width: 40px; height: 40px; border: 3px solid #e2e8f0; border-top-color: #dc2626; border-radius: 50%; animation: lnmSpin 1.2s cubic-bezier(.4,0,.2,1) infinite; }
.lnm-status.is-error .lnm-spinner { display: none; }
.lnm-status button { background: #dc2626; color: #fff; border: 0; padding: 12px 24px; border-radius: 8px; font: inherit; font-size: 14px; font-weight: 500; cursor: pointer; }
@keyframes lnmSpin { to { transform: rotate(360deg); } }

/* Card: desktop = floating panel on the right */
.lnm-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.1); opacity: 0; visibility: hidden; transition: all .4s ease; z-index: 8; }
.lnm-overlay.is-open { opacity: 1; visibility: visible; }
.lnm-card { position: fixed; top: 50%; right: 20px; width: 320px; max-height: 85vh; overflow-y: auto; background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; z-index: 9; transform: translateY(-50%) translateX(110%); opacity: 0; transition: transform .4s cubic-bezier(.25,.46,.45,.94), opacity .4s ease; box-sizing: border-box; }
.lnm-card.is-open { transform: translateY(-50%) translateX(0); opacity: 1; }
.lnm-card[hidden] { display: none; }
.lnm-card-inner { padding: 24px; }
.lnm-card-head { display: none; }
.lnm-card-img { width: 100%; height: 140px; border-radius: 4px; overflow: hidden; margin-bottom: 20px; background: #f9fafb; border: 1px solid #e5e7eb; }
.lnm-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lnm-card h2 { font-size: 18px; font-weight: 600; line-height: 1.3; margin: 0 0 16px; color: #111827; }
.lnm-contact { list-style: none; margin: 0 0 24px; display: flex; flex-direction: column; gap: 12px; background: #f9fafb; padding: 16px; border-radius: 4px; border: 1px solid #e5e7eb; }
.lnm-contact li { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; color: #374151; line-height: 1.4; }
.lnm-contact svg { width: 16px; height: 16px; flex-shrink: 0; margin-top: 1px; }
.lnm-contact a { color: inherit; text-decoration: none; }
.lnm-cta { display: flex; justify-content: space-around; gap: 16px; }
.lnm-cta a { display: flex; flex-direction: column; align-items: center; gap: 6px; text-decoration: none; }
.lnm-cta .lnm-round { width: 48px; height: 48px; border-radius: 50%; background: #dc2626; display: flex; align-items: center; justify-content: center; transition: all .2s ease; }
.lnm-cta a:hover .lnm-round { background: #b91c1c; transform: translateY(-1px); }
.lnm-cta svg { width: 18px; height: 18px; }
.lnm-cta span.lnm-label { font-size: 11px; font-weight: 500; color: #6b7280; text-transform: uppercase; letter-spacing: .5px; }
.lnm-close { position: absolute; top: 8px; right: 8px; width: 32px; height: 32px; border-radius: 50%; border: 0; background: rgba(255,255,255,.9); color: #374151; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.lnm-close:hover { color: #dc2626; }
.lnm-close svg { width: 16px; height: 16px; }

/* Phones and small tablets: map on top, office panel underneath */
@media (max-width: 768px) {
  html, body { height: auto; }
  .lnm { height: auto; }
  .lnm-map-wrap { height: var(--lnm-map-h, 300px); border-radius: 0 0 16px 16px; }
  .lnm-pill { font-size: 12px; padding: 5px 10px; }
  .lnm-back { width: 40px; height: 40px; top: 12px; left: 12px; }
  .lnm-back svg { width: 16px; height: 16px; }
  .lnm-overlay { display: none; }
  .lnm-card { position: relative; top: auto; right: auto; width: 100%; max-height: none; overflow: visible; border: 0; border-radius: 16px 16px 0 0; transform: translateY(40px); box-shadow: 0 -4px 20px rgba(0,0,0,.1); }
  .lnm-card.is-open { transform: none; }
  .lnm-card-inner { padding: 0; }
  .lnm-close { display: none; }
  .lnm-card-head { display: flex; align-items: center; padding: 16px; border-bottom: 1px solid #e5e7eb; }
  .lnm-card-head button { width: 40px; height: 40px; border: 0; border-radius: 50%; background: none; color: #374151; cursor: pointer; display: flex; align-items: center; justify-content: center; margin-right: 8px; }
  .lnm-card-head button svg { width: 20px; height: 20px; }
  .lnm-card-head p { margin: 0; font-size: 16px; font-weight: 600; }
  .lnm-card-img { height: 180px; border-radius: 0; border: 0; margin: 0; }
  .lnm-card-body { padding: 20px 16px; }
  .lnm-card h2 { font-size: 18px; }
  .lnm-contact { background: none; border: 0; padding: 0; gap: 14px; }
  .lnm-contact li { font-size: 14px; }
  .lnm-cta { flex-direction: column; gap: 10px; padding: 16px; background: #f9fafb; border-top: 1px solid #e5e7eb; }
  .lnm-cta a { flex-direction: row; justify-content: center; gap: 12px; background: #dc2626; border-radius: 8px; padding: 14px 16px; }
  .lnm-cta a:hover { background: #b91c1c; }
  .lnm-cta .lnm-round { width: auto; height: auto; background: none; }
  .lnm-cta span.lnm-label { color: #fff; font-size: 15px; text-transform: none; letter-spacing: 0; }
  .lnm-cta .lnm-short { display: none; }
}
@media (min-width: 769px) { .lnm-cta .lnm-long { display: none; } }
@media (prefers-reduced-motion: reduce) { .lnm-dot { animation: none; } .lnm-card, .lnm-overlay { transition: none; } }

/* Compact attribution, kept small and grey */
.maplibregl-ctrl-attrib { font-size: 10px; }
