.parking-toggle-btn {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: 7px;
  border: 1px solid rgba(42,73,108,.16);
  border-radius: 14px;
  background: rgba(255,255,255,.94);
  box-shadow: 0 4px 12px rgba(33,65,111,.14);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  cursor: pointer;
  transition: transform .16s ease, border-color .16s ease, background .16s ease, box-shadow .16s ease;
}
.parking-toggle-btn:hover { transform: translateY(-1px); border-color:rgba(47,128,237,.32); background:#fff; box-shadow:0 7px 16px rgba(33,65,111,.18); }
.parking-toggle-btn img { width: 100%; height: 100%; display: block; filter:drop-shadow(0 2px 4px rgba(47,128,237,.2)); }
.parking-toggle-btn.on {
  border-color: #2f80ed;
  background: #eef7ff;
  box-shadow: 0 0 0 3px rgba(47,128,237,.14), 0 6px 16px rgba(47,128,237,.18);
}
.parking-toggle-btn:focus-visible { outline:3px solid rgba(47,128,237,.24); outline-offset:2px; }
.parking-toggle-btn.loading img { animation: parking-pulse .8s ease-in-out infinite alternate; }
@keyframes parking-pulse { to { opacity:.48; transform:scale(.9); } }

/* 관리자 지도에서는 세로 버튼 스택의 기존 52px 규격에 맞춘다. */
.map-control-stack > .parking-toggle-btn {
  width:52px; height:52px; flex-basis:52px; padding:8px; border-radius:20px;
  background:linear-gradient(135deg,#fff,#fff1fb 50%,#eaffff);
  border:2px solid rgba(255,255,255,.9);
  box-shadow:0 8px 22px rgba(23,58,101,.18),0 0 0 3px rgba(255,112,200,.18),0 0 18px rgba(62,231,244,.36);
}
.map-control-stack > .parking-toggle-btn.on {
  border-color:#3ee7f4;
  box-shadow:0 0 0 4px rgba(62,231,244,.22),0 0 18px rgba(255,112,200,.36);
}

.parking-info-card {
  position: relative;
  width: min(310px, calc(100vw - 28px));
  padding: 14px 14px 12px;
  border: 2px solid #c9e9f7;
  border-radius: 15px;
  background: rgba(255,255,255,.98);
  color: #29445f;
  box-shadow: 0 10px 28px rgba(23,58,101,.28);
  font-family: Pretendard, "Noto Sans KR", Arial, sans-serif;
}
.parking-info-card::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -10px;
  width: 16px;
  height: 16px;
  transform: translateX(-50%) rotate(45deg);
  border-right: 2px solid #c9e9f7;
  border-bottom: 2px solid #c9e9f7;
  background: #fff;
}
.parking-info-head { display:flex; align-items:flex-start; gap:8px; margin-bottom:8px; }
.parking-info-symbol {
  flex:0 0 30px; width:30px; height:30px; border-radius:9px;
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#36d7ed,#2f80ed 55%,#7057e8); color:#fff; font:900 20px/1 Arial,sans-serif;
}
.parking-info-title { flex:1; min-width:0; font-size:15px; line-height:1.35; font-weight:900; color:#173a65; }
.parking-info-type { display:block; margin-top:2px; color:#74879c; font-size:11px; font-weight:600; }
.parking-info-close { border:0; background:none; color:#8493a4; font-size:21px; line-height:1; cursor:pointer; padding:0 0 4px 5px; }
.parking-info-address-row { display:flex; align-items:flex-start; gap:8px; margin-bottom:9px; }
.parking-info-address { flex:1; min-width:0; color:#526b83; font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
.parking-address-copy {
  flex:0 0 auto; min-height:28px; padding:0 9px; border:1px solid #c9d9e8; border-radius:8px;
  background:#f7fbff; color:#2f6fae; font-family:inherit; font-size:11px; font-weight:800; cursor:pointer;
  transition:background .14s ease,border-color .14s ease,color .14s ease;
}
.parking-address-copy:hover { border-color:#75aee4; background:#edf7ff; color:#215c96; }
.parking-address-copy:focus-visible { outline:3px solid rgba(47,128,237,.24); outline-offset:2px; }
.parking-info-grid { display:grid; grid-template-columns:58px 1fr; gap:4px 8px; font-size:12px; line-height:1.45; }
.parking-info-grid dt { color:#8191a3; }
.parking-info-grid dd { margin:0; color:#304b67; font-weight:700; overflow-wrap:anywhere; }
.parking-info-hours { white-space:normal; word-break:keep-all; line-height:1.55; }
.parking-info-note { margin:8px 0 0; color:#8a98a8; font-size:10px; line-height:1.4; }
.parking-info-actions { display:flex; gap:7px; margin-top:10px; }
.parking-info-actions .iw-route {
  flex:1; display:flex; align-items:center; justify-content:center; min-height:34px;
  padding:0 12px; border:0; border-radius:9px; color:#fff; background:#2f80ed;
  font-family:inherit; font-size:12px; font-weight:800; cursor:pointer;
}
.parking-info-actions .iw-route:hover { background:#216fd4; }
.parking-info-actions .iw-route:focus-visible { outline:3px solid rgba(47,128,237,.3); outline-offset:2px; }

@media (max-width:768px) {
  .map-top-controls > .parking-toggle-btn { width:40px; height:40px; flex-basis:40px; padding:6px; border-radius:13px; }
  .map-control-stack > .parking-toggle-btn { width:50px; height:50px; flex-basis:50px; }
  .parking-info-card { padding:12px; }
}
