/* 07.10.2026: страница «Где мы тренируемся» (locations.php) – фильтры, список точек, Яндекс.Карта.
   Токены цвета и шрифты – из claude-assets/app.css (--cta, --line, --soft, --fd, --fm, --fb). */

/* ---------- фильтры ---------- */
.loc-bar{display:grid;gap:12px;margin:4px 0 26px;}
.loc-row{display:flex;align-items:center;gap:14px;min-width:0;}
.loc-label{flex:0 0 auto;width:112px;font-family:var(--fm);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);}
.loc-chips{display:flex;gap:8px;min-width:0;overflow-x:auto;scrollbar-width:none;padding:2px;margin:-2px;-webkit-overflow-scrolling:touch;}
.loc-chips::-webkit-scrollbar{display:none;}
.loc-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;cursor:pointer;
  font-family:var(--fm);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--soft);
  background:transparent;border:1px solid var(--line);border-radius:100px;padding:9px 16px;
  transition:border-color .2s,color .2s,background .2s;}
.loc-chip:hover:not(:disabled){border-color:var(--c,var(--cta-hi));color:var(--c,var(--cta-hi));}
.loc-chip[aria-pressed="true"]{background:var(--c,var(--cta));border-color:var(--c,var(--cta));color:#fff;}
.loc-chip:disabled{opacity:.38;cursor:default;}
.loc-chip:focus-visible,.loc-btn:focus-visible,.loc-link:focus-visible{outline:2px solid var(--cta);outline-offset:2px;}
.loc-n{font-size:11px;opacity:.7;}
.loc-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c,var(--cta));flex:0 0 auto;}
.loc-chip[aria-pressed="true"] .loc-dot{background:#fff;}
@media(max-width:640px){
  .loc-row{flex-direction:column;align-items:flex-start;gap:8px;}
  .loc-label{width:auto;}
  .loc-chips{max-width:100%;}
}

/* ---------- каркас: список + карта ---------- */
.loc-layout{display:grid;gap:22px;}
.loc-map-wrap{order:-1;min-width:0;}
.loc-map{height:340px;border-radius:20px;overflow:hidden;border:1px solid var(--line);background:var(--bg2);}
.loc-nomap{margin:0;padding:24px;color:var(--soft);font-size:14.5px;}
@media(min-width:960px){
  .loc-layout{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:36px;align-items:start;}
  .loc-map-wrap{order:0;position:sticky;top:96px;}
  .loc-map{height:min(640px,calc(100vh - 130px));}
}

/* ---------- список ---------- */
.loc-city[hidden],.loc-card[hidden],.loc-empty[hidden]{display:none;}
.loc-city-h{font-family:var(--fd);font-size:clamp(20px,3vw,26px);font-weight:800;margin:0 0 12px;}
.loc-city + .loc-city{margin-top:30px;}
.loc-cards{list-style:none;margin:0;padding:0;display:grid;gap:10px;}
.loc-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px 18px;display:grid;gap:7px;
  transition:border-color .2s,box-shadow .2s;scroll-margin-top:100px;}
.loc-card.is-active{border-color:var(--cta);box-shadow:0 8px 26px rgba(241,80,46,.15);}
.loc-card h3{font-family:var(--fd);font-size:15px;font-weight:700;line-height:1.3;letter-spacing:0;margin:0;text-wrap:pretty;}
.loc-addr{margin:0;font-size:14.5px;line-height:1.45;color:var(--fg);}
.loc-hint{margin:0;font-size:12.5px;line-height:1.4;color:var(--dim);}
.loc-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px;}
.loc-tag{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:1;color:var(--fg);text-decoration:none;
  border:1px solid var(--line);border-radius:100px;padding:6px 10px;}
a.loc-tag:hover{border-color:var(--c,var(--cta));}
.loc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;}
.loc-btn{font-family:var(--fm);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg);text-decoration:none;
  background:transparent;border:1px solid var(--line);border-radius:100px;padding:8px 14px;cursor:pointer;
  transition:border-color .2s,color .2s;}
.loc-btn:hover{border-color:var(--cta-hi);color:var(--cta-hi);}
.loc-empty{margin:18px 0 0;color:var(--soft);font-size:15px;}
.loc-link{background:none;border:0;padding:0;font:inherit;color:var(--cta-deep);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}

/* ---------- балун на карте ---------- */
.ts-bl{font-family:var(--fb);min-width:200px;max-width:260px;padding:2px 2px 4px;}
.ts-bl strong{display:block;font-family:var(--fd);font-size:14px;font-weight:700;line-height:1.3;margin-bottom:6px;color:var(--fg);}
.ts-bl p{margin:0 0 6px;font-size:13.5px;line-height:1.4;color:var(--fg);}
.ts-bl .ts-bl-tags{display:flex;flex-wrap:wrap;gap:4px 10px;margin:0 0 8px;font-size:12px;color:var(--soft);}
.ts-bl .ts-bl-tags span{display:inline-flex;align-items:center;gap:5px;}
.ts-bl .ts-bl-tags i{display:inline-block;width:9px;height:9px;border-radius:50%;}
.ts-bl a{color:var(--cta-deep);font-size:13px;text-decoration:underline;text-underline-offset:3px;}

/* цифра внутри круга-группы на карте */
.ts-cl-num{width:44px;height:44px;line-height:44px;text-align:center;font-family:var(--fb);font-size:15px;font-weight:700;color:var(--fg);}
