.location-modal {
    position: fixed;
    inset: 0;
    z-index: 10050;
    display: grid;
    place-items: center;
    padding: clamp(18px, 3vw, 48px);
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    overscroll-behavior: contain;
    transition: opacity 180ms ease, visibility 180ms ease;
}
.location-modal.is-open { visibility: visible; opacity: 1; pointer-events: auto; }
.location-modal__backdrop { position: absolute; inset: 0; background: rgba(24, 49, 25, .28); backdrop-filter: blur(8px); }
.location-modal__panel {
    position: relative;
    width: min(1120px, 100%);
    max-height: calc(100dvh - clamp(36px, 6vw, 96px));
    overflow: hidden;
    display: flex;
    flex-direction: column;
    border-radius: 28px;
    background: #fff;
    box-shadow: 0 28px 80px rgba(24, 49, 25, .18);
}
.location-modal__header { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; padding:26px 28px 20px; border-bottom:1px solid #eceeea; }
.location-modal__eyebrow { display:block; margin-bottom:7px; color:var(--color-brand); font-size:13px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.location-modal__title { margin:0; color:var(--color-text); font-family:var(--font-heading); font-size:clamp(26px, 3vw, 38px); line-height:1.05; font-weight:600; }
.location-modal__close { flex:0 0 48px; width:48px; height:48px; border:0; border-radius:50%; background:var(--color-control); display:grid; place-items:center; cursor:pointer; transition:background 160ms ease, transform 160ms ease; }
.location-modal__close:hover { background:#e9eee5; transform:rotate(4deg); }
.location-modal__close svg { width:22px; height:22px; fill:none; stroke:var(--color-text); stroke-width:1.6; stroke-linecap:round; }
.location-modal__content { min-height:0; overflow:hidden; display:grid; grid-template-columns:minmax(280px, 330px) minmax(0, 1fr); flex:1; }
.location-modal__sidebar { min-height:0; height:100%; overflow-x:hidden; overflow-y:auto; overscroll-behavior-y:contain; scrollbar-gutter:stable; touch-action:pan-y; padding:24px; background:#fbfcfa; }
.location-modal__intro { margin:0 0 18px; color:var(--color-muted); font-size:14px; line-height:1.5; }
.location-modal__all { width:100%; display:flex; align-items:center; gap:13px; padding:14px; border:1px solid #e5e9e2; border-radius:18px; background:#fff; color:var(--color-text); text-align:left; cursor:pointer; transition:border 160ms ease, background 160ms ease, transform 160ms ease, box-shadow 160ms ease; }
.location-modal__all:hover, .location-modal__all.is-active { border-color:rgba(79,122,40,.45); background:#f5f8f2; }
.location-modal__all.is-active { box-shadow:0 8px 24px rgba(79,122,40,.08); }
.location-modal__all:active { transform:scale(.99); }
.location-modal__all-icon { width:38px; height:38px; border-radius:50%; display:grid; place-items:center; background:var(--color-brand); color:#fff; font-weight:800; }
.location-modal__all strong, .location-modal__all small { display:block; }
.location-modal__all strong { font-size:14px; line-height:1.25; }
.location-modal__all small { margin-top:4px; color:var(--color-muted); font-size:12px; }
.location-modal__branches { display:grid; gap:12px; margin-top:12px; }
.location-card { overflow:hidden; border:1px solid #e5e9e2; border-radius:18px; background:#fff; transition:border 160ms ease, box-shadow 160ms ease, background 160ms ease; }
.location-card:hover { border-color:#d7ded2; }
.location-card.is-active { border-color:rgba(79,122,40,.60); background:#fff; box-shadow:0 10px 28px rgba(79,122,40,.10); }
.location-card__focus { width:100%; border:0; background:transparent; display:grid; grid-template-columns:38px minmax(0,1fr) 22px; gap:12px; align-items:center; padding:15px 14px 12px; text-align:left; cursor:pointer; color:inherit; }
.location-card__pin { width:38px; height:38px; border-radius:50% 50% 50% 12px; transform:rotate(-45deg); background:#eef4e9; position:relative; transition:background 160ms ease, transform 160ms ease; }
.location-card__pin::after { content:"LZ"; position:absolute; inset:0; display:grid; place-items:center; transform:rotate(45deg); color:var(--color-brand); font-size:10px; font-weight:900; }
.location-card.is-active .location-card__pin { background:var(--color-brand); transform:rotate(-45deg) scale(1.03); }
.location-card.is-active .location-card__pin::after { color:#fff; }
.location-card__copy { min-width:0; }
.location-card__copy small, .location-card__copy strong, .location-card__hint { display:block; }
.location-card__copy small { color:var(--color-brand); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }
.location-card__copy strong { margin-top:4px; color:var(--color-text); font-size:16px; line-height:1.25; }
.location-card__hint { margin-top:5px; color:var(--color-muted); font-size:11px; line-height:1.25; transition:color 160ms ease; }
.location-card.is-active .location-card__hint { color:var(--color-brand); }
.location-card__arrow { color:var(--color-brand); font-size:19px; transition:transform 160ms ease; }
.location-card.is-active .location-card__arrow { transform:rotate(90deg); }
.location-card__actions { max-height:0; overflow:hidden; opacity:0; transition:max-height 200ms ease, opacity 180ms ease; }
.location-card.is-active .location-card__actions { max-height:90px; opacity:1; }
.location-card__route { display:inline-flex; align-items:center; gap:7px; margin:0 14px 15px 64px; padding:2px 0; color:var(--color-brand); font-size:12px; font-weight:700; line-height:1.35; text-decoration:none; }
.location-card__route:hover { color:var(--color-brand-dark); text-decoration:underline; text-underline-offset:3px; }
.location-card__yandex-icon { flex:0 0 22px; width:22px; height:22px; display:grid; place-items:center; border-radius:7px; background:#ffdd2d; color:#111; font-size:13px; font-weight:900; font-family:Arial,sans-serif; text-decoration:none; }
.location-modal__map-wrap { position:relative; min-width:0; min-height:500px; background:#eef2ec; }
.location-modal__map { position:absolute; inset:0; width:100%; height:100%; border:0; opacity:0; transition:opacity 200ms ease; }
.location-modal__map.is-ready { opacity:1; }
.location-modal__map-loader { position:absolute; inset:0; display:grid; place-items:center; color:var(--color-muted); font-size:14px; }
html.location-modal-open, body.location-modal-open { overflow:hidden !important; overscroll-behavior:none; }
body.location-modal-open { touch-action:none; }

@media (max-width: 1024px) {
    .location-modal { padding:24px; }
    .location-modal__panel { max-height:calc(100dvh - 48px); }
    .location-modal__content { grid-template-columns:280px minmax(0,1fr); }
    .location-modal__sidebar { padding:20px; }
    .location-modal__map-wrap { min-height:470px; }
}
@media (max-width: 900px) {
    .location-modal__panel { width:min(760px, 100%); }
    .location-modal__content { grid-template-columns:1fr; grid-template-rows:auto minmax(300px, 44vh); overflow:auto; overscroll-behavior:contain; }
    .location-modal__sidebar { overflow:visible; }
    .location-modal__branches { grid-template-columns:repeat(2, minmax(0,1fr)); }
    .location-modal__map-wrap { min-height:320px; order:-1; }
    .location-card__focus { grid-template-columns:34px minmax(0,1fr) 18px; gap:10px; }
    .location-card__pin { width:34px; height:34px; }
    .location-card__route { margin-left:58px; }
}
@media (max-width: 640px) {
    .location-modal { padding:0; place-items:stretch; }
    .location-modal__panel { width:100%; max-height:100dvh; height:100dvh; border-radius:0; }
    .location-modal__header { padding:18px 18px 14px; }
    .location-modal__close { width:44px; height:44px; flex-basis:44px; }
    .location-modal__content { grid-template-rows:minmax(260px, 42vh) auto; }
    .location-modal__sidebar { padding:16px 16px 24px; }
    .location-modal__intro { margin-bottom:14px; }
    .location-modal__branches { grid-template-columns:1fr; }
    .location-modal__map-wrap { min-height:260px; }
}
@media (max-width: 430px) {
    .location-modal__eyebrow { font-size:11px; }
    .location-modal__title { font-size:25px; }
    .location-modal__header { gap:14px; }
    .location-modal__content { grid-template-rows:minmax(230px, 38vh) auto; }
    .location-modal__all, .location-card__focus { padding:12px; }
    .location-card__route { margin:0 12px 12px 60px; }
}

.location-modal__sidebar::-webkit-scrollbar { width:8px; }
.location-modal__sidebar::-webkit-scrollbar-track { background:transparent; }
.location-modal__sidebar::-webkit-scrollbar-thumb { background:rgba(79,122,40,.22); border-radius:99px; border:2px solid transparent; background-clip:padding-box; }
.location-modal__sidebar:hover::-webkit-scrollbar-thumb { background:rgba(79,122,40,.38); background-clip:padding-box; }

/* V7: use the actual Laser Zone brand mark instead of the temporary LZ letters. */
.location-card__pin {
    display: grid;
    place-items: center;
    border-radius: 50%;
    transform: none;
    background: #f1f5ed;
    border: 1px solid rgba(79,122,40,.10);
}
.location-card__pin::after { content: none; }
.location-card__pin img {
    display: block;
    width: 26px;
    height: 26px;
}
.location-card.is-active .location-card__pin {
    background: #eaf2e3;
    border-color: rgba(79,122,40,.24);
    transform: scale(1.04);
}
