/* ============================================================
   대회 목록 상단 '지금 전국 접수 현황' — 시·도 지도 + 지역 1~3위 + 최근 흐름.
   마크업: templates/tournaments/list.html #pulse, 동작: js/pulse-map.js

   방향: 페이지의 에디토리얼 문법(굵은 섹션 제목 + 2px 먹선, 그 아래 붙는 얇은 선 상자,
   Space Grotesk 숫자, 종이·먹 중립색)을 그대로 따른다. 지도 위젯처럼 떠 보이지 않게
   파란 바다·격자·그림자·그라디언트는 쓰지 않는다. 색은 '데이터'에만 — 빨강 5단계.
   ============================================================ */

/* ── 토큰 — 시트는 <body> 로 나가 .ed-page 밖이므로 팝업에도 같은 값을 준다 ── */
.pulse, .pm-pop, .pm-scrim {
  --pm-sea:#f1f1ef; --pm-l0:#fff; --pm-edge:#d6d5d1; --pm-gap:#fff;
  --pm-l1:#f9d3cd; --pm-l2:#f3a196; --pm-l3:#e35a4d; --pm-l4:#c8231a;
  --pm-muted:#6f6f6f; --pm-chip:#fff; --pm-chip-dim:#f3f3f2; --pm-num:#c8231a;
}
html.dark .pulse, html.dark .pm-pop, html.dark .pm-scrim {
  --pm-sea:#0e0e0e; --pm-l0:#1f1f22; --pm-edge:#2e2e33; --pm-gap:#0e0e0e;
  --pm-l1:#5a222c; --pm-l2:#862a33; --pm-l3:#c23a3f; --pm-l4:#f0564f;
  --pm-muted:#8f8f8f; --pm-chip:#1f1f1f; --pm-chip-dim:#1a1a1a; --pm-num:#ff7a70;
}
.pm-pop {
  --card:#fff; --text:#111; --sub:#555; --border:#e4e4e4; --hover:#f4f4f4; --bg:#fafafa; --cta:#e63946;
  --font-display:"Space Grotesk","Pretendard",sans-serif;
}
html.dark .pm-pop { --card:#151515; --text:#f0f0f0; --sub:#bbb; --border:#262626; --hover:#1c1c1c; --bg:#0a0a0a; --cta:#ef4d59; }

/* ── 섹션 머리 — '마감 임박'과 같은 .ed-sec-head ── */
.ed-page .pulse { margin-top:40px; }
@media (max-width:767px) { .ed-page .pulse { margin-top:28px; } }
.ed-page .pulse .ed-sec-head { flex-wrap:wrap; row-gap:4px; }
.ed-page .pulse .ed-sec-head .count b { color:var(--text); font-weight:700; }
/* 제목 점은 10분 안에 누른 사람이 있을 때만 깜빡인다 — 아니면 멈춘 회색 점 */
.ed-page .pulse:not(.is-live) .ed-sec-head .cta-dot { animation:none; color:var(--pm-muted); opacity:.45; }
@media (max-width:767px) {
  .ed-page .pulse .ed-sec-head .sub { order:3; flex-basis:100%; white-space:normal; }
}

/* ── 본문 상자 — 먹선 아래 붙는 얇은 선 상자(.ed-closing__row 와 같은 결) ── */
.pulse__body { display:grid; border:1px solid var(--border); border-top:0; border-radius:0 0 14px 14px;
  background:var(--card); }
@media (min-width:768px)  { .pulse__body { grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:stretch; } }
@media (min-width:1024px) { .pulse__body { grid-template-columns:minmax(0,560px) minmax(0,1fr); } }
.pulse__mapcol { min-width:0; padding:20px; }
.pulse__side { min-width:0; padding:20px 22px; border-top:1px solid var(--border);
  display:flex; flex-direction:column; gap:24px; }
@media (min-width:768px) { .pulse__side { border-top:0; border-left:1px solid var(--border); } }
@media (max-width:767px) { .pulse__mapcol { padding:12px; } .pulse__side { padding:16px 14px 18px; } }

/* ── 지도 ── */
.pm { position:relative; container-type:inline-size; }
.pm__sea { position:relative; border-radius:8px; overflow:hidden; background:var(--pm-sea);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--pm-edge) 60%, transparent); }
.pm__svg { display:block; width:100%; height:auto; }

.pm__rg { cursor:pointer; outline:none; }
.pm__rg path { fill:var(--pm-l0); stroke:var(--pm-edge); stroke-width:.8; vector-effect:non-scaling-stroke;
  stroke-linejoin:round; transition:fill .25s ease, stroke .2s; }
.pm__rg.lv1 path { fill:var(--pm-l1); stroke:var(--pm-gap); }
.pm__rg.lv2 path { fill:var(--pm-l2); stroke:var(--pm-gap); }
.pm__rg.lv3 path { fill:var(--pm-l3); stroke:var(--pm-gap); }
.pm__rg.lv4 path { fill:var(--pm-l4); stroke:var(--pm-gap); }
.pm__rg:hover path { filter:brightness(.97); }
html.dark .pm__rg:hover path { filter:brightness(1.12); }
.pm__rg.is-hover path { stroke:var(--text,#111); stroke-width:1.2; }
/* 고른 지역만 색을 남기는 스포트라이트 — 반투명으로 흐리면 지시선이 칩 글자를 관통했다.
   색이 있는 지역은 색 자체가 표시라 흰 해안선 그대로 둔다(작은 서울·대전에 굵은 먹선을 두르면
   칩 밑으로 톱니처럼 삐져나왔다). 색이 없는(0명) 지역만 먹선으로 짚는다. 지금 목록 범위도 같은 규칙(금색). */
.pm.has-sel .pm__rg:not(.is-sel) path { fill:var(--pm-l0); stroke:var(--pm-edge); }
.pm__rg.is-sel.lv0 path { stroke:var(--text,#111); stroke-width:1.5; }
.pm__rg.is-scope.lv0 path { stroke:var(--accent-ink,#8a6d27); stroke-width:1.5; }
html.dark .pm__rg.is-scope.lv0 path { stroke:#e6c781; }
html.dark .pm__rg.is-hover path, html.dark .pm__rg.is-sel.lv0 path { stroke:#fff; }

.pm__inset rect { fill:none; stroke:var(--pm-edge); stroke-width:1; vector-effect:non-scaling-stroke; }
.pm__inset text { font-size:8px; font-weight:600; fill:var(--pm-muted); }

.pm__lead { stroke:rgba(17,17,17,.35); stroke-width:1; vector-effect:non-scaling-stroke; }
.pm__dot { fill:#111; stroke:#fff; stroke-width:1; vector-effect:non-scaling-stroke; }
html.dark .pm__lead { stroke:rgba(255,255,255,.35); }
html.dark .pm__dot { fill:#fff; stroke:#0e0e0e; }
.pm__leads > g { transition:opacity .15s; }
.pm.has-sel .pm__leads > g:not(.is-sel) { opacity:0; }

/* 이름표 칩 — 누른 사람이 있는 지역만. 이름 + 사람 수(Space Grotesk). */
.pm__chip { position:absolute; transform:translate(-50%,-50%); z-index:2;
  display:inline-flex; align-items:center; gap:5px; padding:4px 8px; border-radius:6px; border:0;
  background:var(--pm-chip); color:var(--text,#111); font:inherit; font-size:12px; font-weight:700; line-height:1;
  letter-spacing:-.01em; white-space:nowrap; cursor:pointer;
  box-shadow:0 0 0 1px rgba(0,0,0,.09), 0 1px 2px rgba(0,0,0,.12);
  transition:transform .15s, box-shadow .15s, background .2s, color .2s;
  -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
.pm__chip::after { content:""; position:absolute; inset:-7px -4px; }   /* 손가락 닿는 범위만 넓힌다 */
.pm__chip b { font-family:var(--font-display,"Space Grotesk",sans-serif); font-weight:700; color:var(--pm-num);
  font-variant-numeric:tabular-nums; }
.pm__chip:hover, .pm__chip.is-hover { transform:translate(-50%, calc(-50% - 1px));
  box-shadow:0 0 0 1px rgba(0,0,0,.18), 0 4px 10px -4px rgba(0,0,0,.25); }
.pm__chip:focus-visible { outline:2px solid var(--text,#111); outline-offset:2px; }
.pm__chip.is-top { background:#111; color:#fff; }
.pm__chip.is-top b { color:#ff6b61; }
.pm__chip.is-sel, .pm__chip.is-sel.is-top { background:#c8231a; color:#fff; }
.pm__chip.is-sel b { color:#fff; }
/* 고른 칩과 같은 빨강 지역(서울처럼 칩보다 작은 곳)이 칩 밑으로 흘러내린 것처럼 붙어 보이지 않게 흰 테를 두른다 */
.pm__chip.is-sel { box-shadow:0 0 0 1.5px #fff, 0 2px 6px -2px rgba(0,0,0,.35); }
.pm__chip.is-scope { box-shadow:0 0 0 2px var(--accent,#d4a853), 0 1px 2px rgba(0,0,0,.12); }
.pm.has-sel .pm__chip:not(.is-sel) { background:var(--pm-chip-dim); color:var(--pm-muted);
  box-shadow:0 0 0 1px var(--border,#e4e4e4); }
.pm.has-sel .pm__chip:not(.is-sel) b { color:inherit; }
html.dark .pm__chip { box-shadow:0 0 0 1px rgba(255,255,255,.1), 0 1px 2px rgba(0,0,0,.5); }
html.dark .pm__chip:focus-visible { outline-color:#fff; }
html.dark .pm__chip.is-top { background:#000; color:#fff; box-shadow:0 0 0 1px rgba(255,255,255,.28); }
html.dark .pm__chip.is-sel { background:#e5332a; box-shadow:0 0 0 1.5px #0e0e0e, 0 1px 2px rgba(0,0,0,.5); }
html.dark .pm__chip.is-scope { box-shadow:0 0 0 2px #e6c781; }
.pm__chip--abroad svg { width:12px; height:12px; margin-right:1px; opacity:.65; }
.pm__chip.is-bump { animation:pmBump .6s cubic-bezier(.2,.8,.2,1); }
@keyframes pmBump { 35% { transform:translate(-50%, calc(-50% - 3px)); } }

/* 10분 안에 눌린 곳 — 네 번만 퍼지는 가는 파문 */
.pm__ping { position:absolute; z-index:1; width:10px; height:10px; margin:-5px 0 0 -5px; border-radius:50%; pointer-events:none; }
.pm__ping::before, .pm__ping::after { content:""; position:absolute; inset:0; border-radius:50%;
  border:1.5px solid #e5332a; animation:pmPing 2.2s cubic-bezier(.2,.6,.3,1) 4; opacity:0; }
.pm__ping::after { animation-delay:1.1s; }
@keyframes pmPing { 0% { transform:scale(.6); opacity:.9; } 100% { transform:scale(3.2); opacity:0; } }
.pm.has-sel .pm__ping { visibility:hidden; }
/* 칩이 제자리에 앉은 지역은 기준점이 칩에 가려 파문이 얼룩처럼 보였다 — 칩 둘레로 퍼지게 */
.pm__chip.is-fresh::before { content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  animation:pmChipPing 2.2s cubic-bezier(.2,.6,.3,1) 4; }
@keyframes pmChipPing { 0% { box-shadow:0 0 0 0 rgba(229,51,42,.55); } 100% { box-shadow:0 0 0 10px rgba(229,51,42,0); } }
.pm.has-sel .pm__chip.is-fresh::before { animation:none; }

/* 범례 — 끝값을 실제 최댓값으로 적는다('많음'은 뜻이 없다) */
.pm__legend { position:absolute; right:10px; bottom:10px; z-index:2; display:flex; align-items:center; gap:6px;
  padding:5px 8px; border-radius:6px; background:var(--card,#fff); box-shadow:0 0 0 1px var(--border,#e4e4e4);
  font-family:var(--font-display,"Space Grotesk",sans-serif); font-size:10.5px; font-weight:600; color:var(--pm-muted);
  font-variant-numeric:tabular-nums; }
.pm__legend b { color:var(--text,#111); font-weight:700; }
.pm__ramp { display:flex; gap:2px; }
.pm__ramp i { width:12px; height:8px; border-radius:1px; display:block; }
.pm__ramp i:nth-child(1) { background:var(--pm-l0); box-shadow:inset 0 0 0 1px var(--pm-edge); }
.pm__ramp i:nth-child(2) { background:var(--pm-l1); }
.pm__ramp i:nth-child(3) { background:var(--pm-l2); }
.pm__ramp i:nth-child(4) { background:var(--pm-l3); }
.pm__ramp i:nth-child(5) { background:var(--pm-l4); }

.pm__cap { display:flex; align-items:center; gap:6px; margin:10px 2px 0; font-size:12px; font-weight:500; color:var(--pm-muted); }
.pm__cap svg { flex:none; width:15px; height:15px; opacity:.7; }

/* 지도 폭이 좁으면(휴대폰·태블릿 두 칸) 칩도 줄인다 — 화면이 아니라 지도 크기 기준 */
@container (max-width:440px) {
  .pm__chip { font-size:11px; padding:3px 7px; gap:4px; border-radius:5px; }
  .pm__legend { right:8px; bottom:8px; padding:4px 7px; }
}

/* ── 옆 칸: 지역 순위 + 최근 흐름 ── */
.pulse__fh { display:flex; align-items:baseline; gap:8px; margin:0 0 4px; padding-bottom:9px;
  border-bottom:1px solid var(--border); font-size:12.5px; font-weight:800; color:var(--text); letter-spacing:-.01em; }
.pulse__fh > span { font-weight:500; color:var(--pm-muted); }

.pr { display:none; }
@media (min-width:768px) { .pr { display:block; } }
.pr__list { list-style:none; margin:0; padding:0; }
.pr__row { position:relative; width:100%; display:grid; grid-template-columns:18px 40px 1fr 60px; align-items:center; gap:10px;
  padding:9px 8px; border:0; background:transparent; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background .15s; }
.pr__row::before, .pulse__ev::before { content:""; position:absolute; left:0; top:0; bottom:0; width:2px;
  background:var(--accent,#d4a853); transform:scaleY(0); transform-origin:top; transition:transform .25s cubic-bezier(.16,1,.3,1); }
.pr__row:hover, .pr__row.is-hover { background:var(--hover); }
.pr__row:hover::before, .pr__row.is-hover::before, .pulse__ev:hover::before { transform:scaleY(1); }
.pr__row:focus-visible { outline:2px solid var(--text); outline-offset:-2px; }
.pr__rk { font-family:var(--font-display); font-size:13px; font-weight:700; color:var(--pm-muted); text-align:center;
  font-variant-numeric:tabular-nums; }
.pr__list li:first-child .pr__rk { color:var(--text); }
.pr__nm { font-size:14px; font-weight:800; letter-spacing:-.02em; color:var(--text); }
.pr__bar { height:6px; border-radius:1px; background:var(--hover); overflow:hidden; }
.pr__bar i { display:block; height:100%; background:var(--pm-l4); transition:width .6s cubic-bezier(.2,.8,.2,1); }
.pr__row.lv3 .pr__bar i { background:var(--pm-l3); }
.pr__row.lv2 .pr__bar i { background:var(--pm-l2); }
.pr__row.lv1 .pr__bar i { background:var(--pm-l1); }
.pr__n { text-align:right; font-size:12px; color:var(--pm-muted); white-space:nowrap; }
.pr__n b { font-family:var(--font-display); font-size:16px; font-weight:700; color:var(--text);
  font-variant-numeric:tabular-nums; margin-right:1px; }

.pulse__list { list-style:none; margin:0; padding:0; }
.pulse__list li + li { border-top:1px solid var(--border); }
.pulse__ev { position:relative; display:grid; grid-template-columns:52px auto minmax(0,1fr) auto; align-items:center; gap:10px;
  padding:10px 8px; text-decoration:none; color:inherit; transition:background .15s; }
.pulse__ev:hover { background:var(--hover); }
.pulse__ev:focus-visible { outline:2px solid var(--text); outline-offset:-2px; }
.pulse__ago { font-family:var(--font-display); font-size:11.5px; color:var(--pm-muted); white-space:nowrap; font-variant-numeric:tabular-nums; }
.pulse__ev.is-fresh .pulse__ago { color:var(--cta); font-weight:700; }
.pulse__reg { font-size:11px; font-weight:700; padding:2px 7px; border-radius:2px; background:var(--bg);
  box-shadow:inset 0 0 0 1px var(--border); color:var(--sub); white-space:nowrap; }
.pulse__t { min-width:0; font-size:13.5px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pulse__x { font-family:var(--font-display); font-size:11.5px; font-weight:700; color:var(--pm-muted); white-space:nowrap; }
.pulse__ev.is-new { animation:evIn .5s ease; }
@keyframes evIn { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:none; } }
@media (max-width:767px) { .pulse__list li:nth-child(n+5) { display:none; } }
/* 태블릿 두 칸: 지도 칸이 짧아 옆 칸(순위+흐름)만 길게 남으면 상자 안 왼쪽 아래가 비어 보인다 */
@media (min-width:768px) and (max-width:1023px) { .pulse__list li:nth-child(n+5) { display:none; } }

/* 집계 기준(ⓘ) — 누르면 펼쳐지는 작은 설명. JS 없이도 <details> 로 열린다. */
.ed-page .pulse .pulse__subwrap { display:inline-flex; align-items:center; gap:7px; }
.pulse__info { position:relative; display:inline-block; }
.pulse__info summary { position:relative; list-style:none; display:grid; place-items:center; width:17px; height:17px; border-radius:50%;
  box-shadow:inset 0 0 0 1.4px currentColor; color:var(--pm-muted); cursor:pointer; user-select:none;
  font:700 10.5px/1 Georgia,"Times New Roman",serif; font-style:italic; letter-spacing:0; transition:background .15s,color .15s; }
.pulse__info summary::-webkit-details-marker { display:none; }
.pulse__info summary::after { content:""; position:absolute; inset:-12px; }   /* 손가락 닿는 범위 */
.pulse__info summary:hover { color:var(--text); }
.pulse__info summary:focus-visible { outline:2px solid var(--text); outline-offset:2px; }
.pulse__info[open] summary { background:var(--text); color:var(--card); box-shadow:none; }
.pulse__infobox { position:absolute; left:-10px; top:calc(100% + 10px); z-index:30; width:320px; word-break:keep-all;
  padding:13px 15px 12px; border-radius:10px; background:var(--card); box-shadow:0 0 0 1px var(--border), 0 16px 36px -18px rgba(0,0,0,.4);
  white-space:normal; font-family:var(--font-sans); letter-spacing:0; font-size:12.5px; line-height:1.6; color:var(--sub);
  animation:infoIn .16s ease; }
.pulse__infobox strong { display:block; margin-bottom:6px; font-size:13px; font-weight:800; color:var(--text); }
.pulse__infobox ul { margin:0; padding:0; list-style:none; }
.pulse__infobox li { position:relative; padding-left:11px; }
.pulse__infobox li::before { content:""; position:absolute; left:0; top:.72em; width:4px; height:4px; border-radius:50%; background:var(--pm-muted); }
.pulse__infobox li + li { margin-top:5px; }
/* 좁은 화면: 버튼 옆에 매달면 오른쪽으로 잘린다 — 섹션 제목 폭에 맞춰 그 아래로 편다 */
@media (max-width:767px) {
  .ed-page .pulse .ed-sec-head { position:relative; }
  .pulse__info { position:static; }
  .pulse__infobox { left:0; right:0; width:auto; top:calc(100% + 8px); }
}
.pulse__infobox b { font-weight:700; color:var(--text); }
@keyframes infoIn { from { opacity:0; transform:translateY(-3px); } }

/* ── 지역 상세(1~3위) ──
   넓은 화면(≥768, 사이트가 두 칸이 되는 폭): 옆 칸에 붙는 패널(is-docked) — 지도를 가리지 않고, sticky 로 늘 보인다.
   좁은 화면: 화면 아래 시트(is-sheet). */
.pm-pop { font-family:var(--font-sans,"Pretendard","Noto Sans KR","Apple SD Gothic Neo",system-ui,sans-serif); text-align:left;
  background:var(--card); color:var(--text); }
.pm-pop.is-docked { position:sticky; top:16px; border-radius:10px; box-shadow:inset 0 0 0 1px var(--border);
  animation:dockIn .22s cubic-bezier(.2,.9,.25,1); }
@media (min-width:768px) { .pm-pop.is-docked { top:91px; } }
@keyframes dockIn { from { opacity:0; transform:translateY(6px); } }
.pulse__side.has-pop > .pr, .pulse__side.has-pop > .pulse__feed { display:none; }

.pm-pop__head { display:flex; align-items:flex-start; gap:10px; padding:14px 16px 12px; border-bottom:1px solid var(--border); }
.pm-pop__ttl { flex:1; min-width:0; }
.pm-pop__name { margin:0; font-size:18px; font-weight:900; letter-spacing:-.02em; line-height:1.25; }
.pm-pop__sub { margin:3px 0 0; font-size:12.5px; line-height:1.4; color:var(--pm-muted); }
.pm-pop__sub b { font-family:var(--font-display); font-weight:700; color:var(--text); font-variant-numeric:tabular-nums; }
.pm-pop__x { flex:none; width:32px; height:32px; margin:-5px -7px 0 0; border:0; border-radius:8px; background:transparent;
  color:var(--pm-muted); cursor:pointer; display:grid; place-items:center; }
.pm-pop__x:hover { background:var(--hover); color:var(--text); }
.pm-pop__x:focus-visible { outline:2px solid currentColor; outline-offset:1px; }
.pm-pop__x svg { width:16px; height:16px; }

.pm-pop__list { list-style:none; margin:0; padding:6px; }
.pm-pop__item a { display:grid; grid-template-columns:22px minmax(0,1fr) auto; align-items:center; gap:12px;
  padding:11px 10px; border-radius:8px; text-decoration:none; color:inherit; transition:background .15s; }
.pm-pop__item a:hover { background:var(--hover); }
.pm-pop__item a:focus-visible { outline:2px solid currentColor; outline-offset:-2px; }
.pm-pop__rk { font:700 18px/1 var(--font-display); color:var(--text); text-align:center; font-variant-numeric:tabular-nums; }
.pm-pop__rk.is-1 { color:var(--cta); }
.pm-pop__body { min-width:0; }
.pm-pop__t { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  font-size:14px; font-weight:700; line-height:1.38; letter-spacing:-.015em; word-break:keep-all; overflow-wrap:anywhere; }
.pm-pop__m { display:flex; flex-wrap:wrap; align-items:center; gap:4px 7px; margin-top:5px; font-size:12px; color:var(--pm-muted); }
.pm-pop__tie { font-size:10.5px; font-weight:800; color:var(--text); }
/* 관심(그 대회 페이지를 연 사람, 누적) — 오른쪽 큰 숫자(접수 버튼)보다 조용하게 */
.pm-pop__v { font-size:11.5px; color:var(--pm-muted); }
.pm-pop__v::before { content:"·"; margin-right:7px; opacity:.6; }
/* 접수 마감 D-day — 목록 카드와 같은 기준·같은 색(마감 3일 이하 빨강, 14일 이하 주황) */
.pm-pop__dd { font-family:var(--font-display); font-size:10.5px; font-weight:700; letter-spacing:.03em; line-height:1;
  padding:3px 6px; border-radius:3px; white-space:nowrap; font-variant-numeric:tabular-nums;
  background:var(--bg); color:var(--sub); box-shadow:inset 0 0 0 1px var(--border); }
.pm-pop__dd.is-urgent { background:var(--cta); color:#fff; box-shadow:none; }
.pm-pop__dd.is-warn { background:#e8590c; color:#fff; box-shadow:none; }
.pm-pop__dd.is-closed { color:var(--pm-muted); text-decoration:line-through; }
.pm-pop__n { display:flex; align-items:baseline; gap:1px; line-height:1; white-space:nowrap; }
.pm-pop__n b { font:700 20px/1 var(--font-display); letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.pm-pop__n small { font-size:11px; font-weight:700; color:var(--pm-muted); }
.pm-pop__empty { margin:0; padding:18px 16px 16px; font-size:13.5px; line-height:1.6; color:var(--sub); }
.pm-pop__empty b { color:var(--text); font-family:var(--font-display); }

.pm-pop__foot { display:flex; flex-direction:column; align-items:stretch; gap:9px; padding:12px 14px 14px; border-top:1px solid var(--border); }
.pm-pop__more-n { margin:0; font-size:12px; color:var(--pm-muted); }
/* 이 패널의 주된 행동 — 아래 목록으로 내려간다(↓). 몇 개가 있는지 목록과 같은 수를 적는다. */
.pm-pop .pm-pop__cta { display:flex; align-items:center; justify-content:center; gap:7px; min-height:46px; padding:0 16px;
  border-radius:8px; background:var(--text); color:var(--card); font-size:14px; font-weight:800; letter-spacing:-.01em;
  text-decoration:none; transition:opacity .15s, transform .06s; }
.pm-pop .pm-pop__cta:hover { opacity:.88; }
.pm-pop .pm-pop__cta:active { transform:scale(.99); }
.pm-pop .pm-pop__cta:focus-visible { outline:2px solid var(--accent,#d4a853); outline-offset:2px; }
.pm-pop__cta svg { width:15px; height:15px; flex:none; }

/* 시트 */
.pm-pop.is-sheet { position:fixed; left:0; right:0; bottom:0; z-index:61; max-height:80vh; max-height:80dvh;
  overflow-y:auto; overscroll-behavior:contain; border-radius:20px 20px 0 0;
  box-shadow:0 -18px 40px -18px rgba(0,0,0,.35); animation:sheetIn .3s cubic-bezier(.2,.9,.25,1); }
/* 손잡이는 머리 안에 — 머리에선 브라우저 기본 스크롤을 끄고(touch-action:none) 끌어내리기를 직접 받는다 */
.pm-pop.is-sheet .pm-pop__head { position:relative; padding-top:24px; cursor:grab; touch-action:none; }
.pm-pop.is-sheet .pm-pop__head::before { content:""; position:absolute; top:9px; left:50%; width:40px; height:4px; margin-left:-20px;
  border-radius:99px; background:color-mix(in srgb, var(--text) 18%, transparent); }
.pm-pop.is-sheet .pm-pop__x { width:44px; height:44px; margin:-10px -12px 0 0; }
.pm-pop.is-sheet .pm-pop__item a { padding:12px 10px; }
.pm-pop.is-sheet .pm-pop__foot { padding:12px 16px calc(14px + env(safe-area-inset-bottom)); }
.pm-pop.is-sheet .pm-pop__cta { min-height:50px; font-size:15px; }
.pm-pop.is-sheet.is-out { animation:sheetOut .18s cubic-bezier(.4,0,1,1) forwards; }
html.pm-lock, html.pm-lock body { overflow:hidden; }   /* 시트가 열린 동안 뒤 페이지가 같이 밀리지 않게 */
.pm-scrim { position:fixed; inset:0; z-index:60; background:rgba(0,0,0,.28); animation:scrimIn .2s ease; touch-action:none; }
.pm-scrim.is-out { animation:scrimOut .18s ease forwards; }
@keyframes sheetIn { from { transform:translateY(100%); } }
@keyframes sheetOut { to { transform:translateY(100%); } }
@keyframes scrimIn { from { opacity:0; } }
@keyframes scrimOut { to { opacity:0; } }

.pm-sr { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }

@media (prefers-reduced-motion:reduce) {
  .pm__ping::before { animation:none; transform:scale(1.8); opacity:.7; }
  .pm__ping::after { display:none; }
  .pm__chip, .pm__rg path, .pr__bar i, .pr__row::before, .pulse__ev::before { transition:none; }
  .pm-pop, .pm-pop.is-docked, .pm-pop.is-sheet, .pm-pop.is-sheet.is-out, .pm-scrim, .pm-scrim.is-out,
  .pm__chip.is-bump, .pulse__ev.is-new { animation:none; }
  .pm__chip.is-fresh::before { animation:none; box-shadow:0 0 0 2px rgba(229,51,42,.45); }
  .pulse__infobox { animation:none; }
}

/* 지역별 대회 지도(접수 클릭이 없는 종목) — 칩·순위가 링크라 밑줄·색을 버튼과 맞춘다 */
a.pm__chip { text-decoration:none; }
a.pr__row { text-decoration:none; color:inherit; }
@media (max-width:767px){ .pulse--events .pulse__side { display:none; } }   /* 좁은 화면은 지역 순위를 안 보여 주니 빈 칸이 남지 않게 */
.pulse--events .pm__rg { cursor:default; }   /* 지역 칠은 눌러도 아무 일 없다 — 칩·순위만 링크 */
.pulse--events .pm__rg:hover { filter:none; }
