.fr-map-wrap{--fr-land:#00915a;--fr-marker:#fff6c4;--fr-accent:#c8102e;--fr-card-bg:#f6f8f4;--fr-text:#1d1d1d;margin:0 0 1.5em}
.fr-map-wrap .fr-intro{margin:0 0 1.2em}
.fr-map{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:32px;align-items:start}
.fr-map svg{width:100%;height:auto;display:block;overflow:visible}
.fr-land{fill:var(--fr-land);stroke:rgba(0,0,0,.18);stroke-width:1.5;stroke-linejoin:round}
.fr-city{cursor:pointer;outline:none}
.fr-pulse{fill:var(--fr-marker);opacity:0;transform-origin:center;transform-box:fill-box}
.fr-dot{fill:var(--fr-marker);stroke:rgba(0,0,0,.35);stroke-width:1.5;transition:transform .2s;transform-origin:center;transform-box:fill-box}
.fr-dot-inner{fill:var(--fr-accent)}
.fr-label{font-family:inherit;font-size:34px;font-weight:700;fill:var(--fr-marker);paint-order:stroke;stroke:var(--fr-land);stroke-width:8px;stroke-linejoin:round;pointer-events:none}
.fr-city:hover .fr-dot,.fr-city:focus-visible .fr-dot,.fr-city.is-active .fr-dot{transform:scale(1.25)}
.fr-city.is-active .fr-pulse{animation:fr-pulse 1.6s ease-out infinite}
.fr-city:focus-visible .fr-dot{stroke:#fff;stroke-width:3}
@keyframes fr-pulse{0%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(2.4)}}
.fr-cards{position:sticky;top:20px}
.fr-card{background:var(--fr-card-bg);border-left:5px solid var(--fr-land);border-radius:8px;padding:20px 24px;animation:fr-in .25s ease}
.fr-card h3{margin:0 0 .5em;font-size:1.4em;color:var(--fr-land)}
.fr-card ul{list-style:none;margin:0;padding:0}
.fr-card li+li{margin-top:.5em}
.fr-card a{color:var(--fr-text);font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:.4em}
.fr-card a::after{content:"↗";color:var(--fr-land);font-size:.9em}
.fr-card a:hover{text-decoration:underline}
.fr-hint{color:#555;font-size:.95em;padding:20px 24px;background:var(--fr-card-bg);border-radius:8px}
@keyframes fr-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.fr-all{margin-top:24px}
.fr-all summary{cursor:pointer;font-weight:600;color:var(--fr-land)}
.fr-all ul{columns:2;gap:32px;padding-left:1.2em;margin-top:.6em}
.fr-all li{break-inside:avoid;margin-bottom:.4em}
@media (max-width:760px){
  .fr-map{grid-template-columns:1fr;gap:16px}
  .fr-cards{position:static}
  .fr-label{font-size:42px}
  .fr-dot{r:26px}.fr-dot-inner{r:10px}.fr-pulse{r:30px}
  .fr-all ul{columns:1}
}
