/* 세계 선수 — 놀이터 키트(kit.css) 위에 얹는다.
 *
 * 색·간격·둥근 모서리·그림자는 사이트 토큰(design.css 의 var(--…))과 키트의 탁구 소품 색(--tp-ball·--tp-table…)만 쓴다 —
 * 다크 모드와 브랜드가 한 곳에서 바뀌게. 정보가 먼저 보이게: 카드의 이름·순위·전형이 굵고, 움직임은 들어올 때 한 번뿐이다.
 * 움직임은 transform·opacity 만. prefers-reduced-motion 이면 맨 아래에서 전부 멈춘다.
 * 누를 수 있는 것은 모두 44px 이상, 키보드 초점은 굵은 테두리로 보인다.
 */
.tplBack{margin:0 0 var(--sp-3);font-size:var(--fs-md)}
.tplBack a{display:inline-flex;align-items:center;min-height:44px}
.tplBall{display:inline-block;width:14px;height:14px;border-radius:50%;background:var(--tp-ball);border:2px solid var(--tp-ink);flex:none;vertical-align:-2px}
.tplHero .tplHeroN{margin:var(--sp-3) 0 0!important;font-weight:800;display:inline-flex;align-items:center;gap:8px;
  background:color-mix(in srgb,#fff 18%,transparent);border-radius:999px;padding:4px 14px 4px 8px}

/* 탭 — 「세계 선수」 는 탁구공, 「VR 랭킹」 은 어두운 판에 네온 글자로 갈라 본다 */
.tplTabs{list-style:none;padding:0;margin:0 0 var(--sp-5);display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.tplTab{display:flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:8px 14px;border-radius:18px;font-weight:800;
  font-size:var(--fs-lg);text-decoration:none;color:var(--text);background:var(--surface);border:2px solid var(--border-2);box-shadow:0 4px 0 var(--border-2);
  transition:transform .25s var(--tp-spring),box-shadow .25s var(--tp-spring)}
.tplTab:hover{transform:translateY(-2px)}
.tplTab:focus-visible{outline:3px solid var(--text);outline-offset:3px}
.tplTab[aria-current="page"]{border-color:var(--accent);background:var(--accent-bg);color:var(--accent-fg);box-shadow:0 4px 0 var(--accent)}
.tplTabVr{background:linear-gradient(135deg,#17142b,#2b1747);color:#e9e4ff;border-color:#4b3a7a;box-shadow:0 4px 0 #120f22}
.tplTabVr .vr{display:inline-grid;place-items:center;height:24px;padding:0 8px;border-radius:8px;font-size:12px;letter-spacing:.08em;
  background:#0d0b19;color:#7ef9ff;border:1.5px solid #7ef9ff;box-shadow:0 0 10px rgba(126,249,255,.55)}
.tplTabVr[aria-current="page"]{background:linear-gradient(135deg,#1d1838,#3a1d60);color:#fff;border-color:#7ef9ff;box-shadow:0 4px 0 #7ef9ff}

/* 나와 같은 전형 */
.tplMe{margin:0 0 var(--sp-5);padding:var(--sp-5);border-radius:24px;border:2px solid var(--border-2);
  background:radial-gradient(circle at 12px 12px,var(--tp-dot) 3px,transparent 3.5px) 0 0/28px 28px,var(--surface);box-shadow:var(--shadow)}
.tplMeHead{display:flex;align-items:center;gap:var(--sp-3);margin:0 0 var(--sp-4)}
.tplMeHead .tpPongi{width:64px}
.tplMeHead h2{margin:0 0 2px;font-size:var(--fs-xl)}
.tplMeHead p{margin:0;font-size:var(--fs-md)}
.tplMeForm{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.tplMeForm label,.tplMoreIn label{display:grid;gap:4px;font-weight:700;font-size:var(--fs-sm);color:var(--dim)}
.tplMeForm select,.tplMoreIn select,.tplSearch input{font:inherit;font-size:var(--fs-base);font-weight:600;color:var(--text);background:var(--surface);
  border:2px solid var(--border-2);border-radius:12px;padding:8px 10px;min-height:44px;width:100%;box-sizing:border-box}
.tplMeForm select:focus-visible,.tplMoreIn select:focus-visible,.tplSearch input:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.tplMeBtns{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0}
.tplMeBtns .tpBtn{min-height:44px}
.tplMeBtns [hidden]{display:none}
.tplMeState{grid-column:1/-1}
.tplMeState:empty{display:none}
.tplState{display:flex;align-items:center;gap:var(--sp-3);border-radius:16px;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-md);
  border:2px dashed var(--border-2);background:var(--surface-2)}
.tplState.err{border-color:var(--err);background:var(--err-bg)}
.tplState.ok{border-color:var(--ok);background:var(--ok-bg)}
.tplState .tpPongi{width:44px}
.tplState a{font-weight:800;white-space:nowrap;flex:none}
.tplState > span:not(.tpPongi):not(.tplSkel){flex:1;min-width:0}
.tplSkel{display:grid;gap:8px;width:100%}
.tplSkel i{display:block;height:12px;border-radius:999px;background:linear-gradient(90deg,var(--surface-3),var(--surface-2),var(--surface-3));background-size:200% 100%;animation:tplShimmer 1.2s linear infinite}
.tplSkel i:nth-child(2){width:70%}
@keyframes tplShimmer{to{background-position:-200% 0}}

/* 거르기 줄 */
.tplBar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);margin:0 0 var(--sp-4)}
.tplBar[hidden]{display:none}
.tplSearch{flex:1 1 100%}
.tplSearch input{padding-left:38px;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4-4'/%3E%3C/svg%3E") 12px 50%/18px no-repeat}
.tplSeg{display:inline-flex;flex-wrap:wrap;gap:6px}
.tplSeg button,.tplMore summary{appearance:none;font:inherit;cursor:pointer;min-height:44px;padding:6px 14px;border-radius:999px;border:2px solid var(--border-2);
  background:var(--surface);color:var(--text);font-weight:700;font-size:var(--fs-md);transition:transform .2s var(--tp-spring),border-color .15s}
.tplSeg button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-bg);color:var(--accent-fg)}
.tplSeg button:focus-visible,.tplMore summary:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.tplBar > .tplSeg{margin-right:var(--sp-2)}
.tplMore{display:inline-block}
.tplMore[open]{flex:1 1 100%}
.tplMore summary{list-style:none;display:inline-flex;align-items:center;gap:6px}
.tplMore summary::-webkit-details-marker{display:none}
.tplMore summary::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--tp-ball);border:2px solid var(--tp-ink)}
.tplMore[open] summary{border-color:var(--accent)}
.tplMoreIn{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:var(--sp-3) 0 0;padding:var(--sp-4);border:2px solid var(--border-2);border-radius:18px;background:var(--surface)}
.tplMoreIn .tpBtn{align-self:end;min-height:44px}
.tplCount{flex:1 1 100%;margin:0;font-weight:800;color:var(--dim);font-size:var(--fs-md)}
.tplRow{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}

/* 카드 */
.tplList{list-style:none;padding:0;margin:0 0 var(--sp-6);display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
.tplCard{position:relative;display:grid;grid-template-columns:96px 1fr;gap:var(--sp-3);align-items:start;padding:var(--sp-3);border-radius:20px;
  border:2px solid var(--border-2);background:var(--surface);box-shadow:0 4px 0 var(--border-2);min-width:0;
  animation:tplDeal .45s var(--tp-spring) both;animation-delay:calc(var(--i,0) * 30ms);transition:border-color .15s,transform .25s var(--tp-spring)}
.tplCard[hidden]{display:none}
.tplCard:hover{border-color:var(--accent);transform:translateY(-2px)}
.tplCard:focus-within{border-color:var(--accent);box-shadow:0 4px 0 var(--accent)}
.tplCard.full{border-color:var(--ok);box-shadow:0 4px 0 var(--ok)}
@keyframes tplDeal{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.tplBody{min-width:0}
.tplTop{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:28px}
.tplMeta{color:var(--dim);font-size:var(--fs-sm);font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tplFlag{font-size:20px;line-height:1}
.tplFlag.code{font-size:11px;font-weight:900;border:1.5px solid var(--border-2);border-radius:6px;padding:1px 4px;color:var(--dim)}
.tplCard h3{margin:4px 0 0;font-size:var(--fs-lg);line-height:1.3;overflow-wrap:anywhere}
.tplCard h3 a{color:var(--text);text-decoration:none}
/* 카드 전체가 눌리게 — 이름 링크의 영역을 카드로 넓힌다(저작자 표시 링크는 위로 올려 따로 누른다) */
.tplCard h3 a::after{content:"";position:absolute;inset:0;border-radius:20px}
.tplCard h3 a:focus-visible{outline:none}
.tplCard h3 a:focus-visible::after{outline:3px solid var(--accent);outline-offset:2px}
.tplCard .tplCredit,.tplCard .tplCredit a{position:relative;z-index:1}
.tplSub{margin:2px 0 0;color:var(--dim);font-size:var(--fs-md);overflow-wrap:anywhere}
.tplChips{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0 0}
.tplChip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 9px 2px 4px;font-size:var(--fs-sm);font-weight:700;
  background:var(--surface-2);color:var(--text);border:1.5px solid var(--border-2)}
.tplChip svg{width:20px;height:20px;flex:none;background:var(--tp-ball);border-radius:50%}
.tplChip.rub,.tplChip.para{padding-left:9px}
.tplChip.para{background:color-mix(in srgb,#4d8fe0 16%,var(--surface));border-color:#4d8fe0}
.tplMatch{margin:8px 0 0;font-size:var(--fs-sm);font-weight:800}
.tplMatch[hidden]{display:none}
.tplMatch.full{color:var(--ok)}
.tplMatch.part{color:var(--dim)}

/* 순위 배지 — 탁구공 위의 번호 */
.tplRank{display:inline-grid;place-items:center;min-width:34px;height:28px;padding:0 8px;border-radius:999px;background:var(--tp-ball);color:var(--tp-ink);
  border:2px solid var(--tp-ink);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.tplRank b{font-weight:900}
.tplRank.para{background:#dceafc;border-color:#2c5ea8;color:#173d73}

/* 사진 — 정사각 틀에 잘라 담는다(CC BY-SA 사진을 잘라 쓸 때도 같은 표시를 붙인다). 저작자 표시는 작지만 읽히게 */
.tplPhoto{margin:0;padding:0;min-width:0;border:0;border-radius:0;background:none;overflow:visible;box-shadow:none}
.tplCard > .tplCredit{grid-column:1/-1;margin:0;padding-top:6px;border-top:1px dashed var(--border-2)}
.tplPhoto img,.tplPhoto svg{display:block;width:96px;height:96px;object-fit:cover;object-position:50% 22%;border-radius:18px;
  border:2px solid var(--border-2);background:var(--surface-2)}
.tplCredit{margin:4px 0 0;font-size:11px;line-height:1.35;color:var(--dim);overflow-wrap:anywhere}
.tplCredit a{color:var(--dim);text-decoration:underline;text-underline-offset:2px}
.tplNoPhoto svg{background:radial-gradient(circle at 10px 10px,var(--tp-dot) 2.5px,transparent 3px) 0 0/20px 20px,var(--surface-2)}
.silBody{fill:color-mix(in srgb,var(--dim) 32%,var(--surface-2));stroke:color-mix(in srgb,var(--dim) 55%,transparent);stroke-width:3}
.silEye{fill:var(--surface)}
.silMouth{fill:none;stroke:var(--surface);stroke-width:4;stroke-linecap:round}
.silPaddle{fill:color-mix(in srgb,var(--accent) 45%,var(--surface-2))}
.silHandle{stroke:color-mix(in srgb,var(--dim) 55%,transparent);stroke-width:6;stroke-linecap:round}
.silShadow{fill:color-mix(in srgb,var(--dim) 20%,transparent)}

/* 결과 없음 */
.tplNoMatch,.tplEmpty{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-5);margin:0 0 var(--sp-5);border:2px dashed var(--accent);
  border-radius:20px;background:var(--accent-bg)}
.tplNoMatch[hidden]{display:none}
.tplNoMatch p,.tplEmpty p{margin:0 0 6px}

/* 선수 카드(선수 화면 머리) — 트레이딩 카드처럼: 사진 틀·이름·순위·전형 */
.tplHeroCard{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:var(--sp-5);align-items:start;margin:0 0 var(--sp-6);padding:var(--sp-5);
  border-radius:28px;color:var(--text);border:3px solid var(--accent);box-shadow:0 8px 0 var(--accent-hover),var(--shadow);
  background:radial-gradient(circle at 14px 14px,var(--tp-dot) 3px,transparent 3.5px) 0 0/30px 30px,linear-gradient(160deg,var(--accent-bg),var(--surface) 55%);
  position:relative;overflow:hidden;animation:tplCardIn .6s var(--tp-spring) both}
.tplHeroCard.para{border-color:#2c5ea8;box-shadow:0 8px 0 #1f467f,var(--shadow)}
@keyframes tplCardIn{from{opacity:0;transform:translateY(18px) rotate(-1.5deg) scale(.97)}to{opacity:1;transform:none}}
.tplHeroCard .tplPhoto img,.tplHeroCard .tplPhoto svg{width:100%;height:auto;aspect-ratio:1/1;border-radius:22px;border-width:3px}
.tplHeroCard .tplCredit{font-size:12px}
.tplHeroTxt h1{margin:6px 0 4px;font-size:clamp(28px,6vw,42px);line-height:1.12;letter-spacing:-.02em;overflow-wrap:anywhere}
.tplFacts{margin:0 0 var(--sp-3);font-size:var(--fs-lg);font-weight:600}
.tplBigRank{margin:0 0 var(--sp-2);font-size:var(--fs-lg)}
.tplBigRank b{font-size:var(--fs-2xl);font-weight:900}
.tplBigRank.para b{font-size:var(--fs-xl)}
.tplPoints{margin:var(--sp-3) 0 0;font-size:var(--fs-md)}
.tplPoints a{font-weight:800}
.tplSrc{display:inline-block;font-size:var(--fs-sm);color:var(--dim);font-weight:600;text-decoration:underline;text-underline-offset:2px;padding:6px 0}

/* 선수 화면 절 */
.tplSec{margin:0 0 var(--sp-6)}
.tplSec h2{font-size:var(--fs-xl);margin:0 0 var(--sp-3)}
.tplSecHead{display:flex;align-items:center;gap:var(--sp-3)}
.tplSecHead .tpPongi{width:56px}
.tplSecHead h2{margin:0}
.tplTiles{list-style:none;padding:0;margin:var(--sp-3) 0;display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.tplTile{display:grid;gap:4px;padding:var(--sp-3) var(--sp-4);border-radius:18px;border:2px solid var(--border-2);background:var(--surface);box-shadow:0 4px 0 var(--border-2)}
.tplTile.unknown{border-style:dashed;box-shadow:none;background:var(--surface-2)}
.tplTileK{font-size:var(--fs-sm);font-weight:700;color:var(--dim)}
.tplTileV{display:flex;align-items:center;gap:8px;font-size:var(--fs-lg)}
.tplTileV svg{width:28px;height:28px;flex:none;background:var(--tp-ball);border-radius:50%}
.tplTile .tplSrc{padding:2px 0 0}
.tplComps{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}
.tplComp{border:2px solid var(--border-2);border-radius:18px;padding:var(--sp-3) var(--sp-4);background:var(--surface)}
.tplComp h3{margin:0 0 var(--sp-2);font-size:var(--fs-lg);display:flex;justify-content:space-between;gap:8px;align-items:center}
.tplComp ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px;font-size:var(--fs-sm)}
.tplComp li{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--border-2);border-radius:999px;padding:3px 10px 3px 4px;background:var(--surface-2)}
.tplCounts{display:inline-flex;gap:4px}
.tplMedalN,.tplMedal{display:inline-grid;place-items:center;min-width:26px;height:26px;border-radius:50%;font-size:var(--fs-sm);font-weight:900;color:#2a2326;border:2px solid #2a2326}
.tplMedal{min-width:16px;width:16px;height:16px;flex:none}
.m-gold{background:#f6c945}.m-silver{background:#d5d9de}.m-bronze{background:#d99a63}
.tplTeams,.tplNames,.tplTips{margin:0;padding-left:var(--sp-5);font-size:var(--fs-base)}
.tplTeams li,.tplNames li,.tplTips li{margin:0 0 6px}
.tplLinks a{min-height:44px;box-sizing:border-box}
.tplAbout{font-size:var(--fs-md)}
.tplAbout li{color:var(--dim)}

/* VR 랭킹 — 어두운 판에 네온, 탁구 화면 속 다른 세계처럼 */
.tplVrHero{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-5);align-items:center;margin:0 0 var(--sp-5);padding:var(--sp-6);border-radius:28px;color:#ece8ff;
  background:radial-gradient(circle at 80% -10%,rgba(126,249,255,.25),transparent 45%),radial-gradient(circle at 0 120%,rgba(255,79,216,.25),transparent 50%),
  repeating-linear-gradient(0deg,rgba(126,249,255,.07) 0 1px,transparent 1px 28px),repeating-linear-gradient(90deg,rgba(126,249,255,.07) 0 1px,transparent 1px 28px),#120f22;
  border:2px solid #4b3a7a;box-shadow:0 0 0 1px #000,0 10px 30px -10px rgba(126,249,255,.45)}
.tplVrHero h1{margin:0 0 var(--sp-2);font-size:clamp(26px,5.5vw,40px);line-height:1.15;color:#fff;text-shadow:0 0 18px rgba(126,249,255,.45)}
.tplVrHero p{margin:0;color:#d9d3ff;font-size:var(--fs-lg);line-height:1.55;max-width:36em}
.tplVrKicker{font-weight:900;letter-spacing:.12em;text-transform:uppercase;font-size:var(--fs-sm)!important;color:#7ef9ff!important;margin:0 0 6px!important}
.tplVrTiti{position:relative;display:block;width:120px}
.tplVrHero .tpPongi{width:100%}
.tplGoggles{position:absolute;left:16%;top:36%;width:66%;height:16%;border-radius:10px;background:linear-gradient(90deg,#7ef9ff,#ff4fd8);opacity:.9;
  box-shadow:0 0 14px rgba(126,249,255,.8);pointer-events:none}
.tplVrBtns{margin:var(--sp-4) 0 0!important}
.tplVrBtns .tpBtn{background:#7ef9ff;color:#0d0b19;box-shadow:0 5px 0 #2aa9b3}
.tplVrWhy{border-left:4px solid #7ef9ff;padding:var(--sp-3) var(--sp-4);background:var(--surface-2);border-radius:0 18px 18px 0}
.tplVrWhy h2{margin-top:0}

@media (max-width:640px){
  .tplMe{padding:var(--sp-4) var(--sp-3)}
  .tplMeForm{grid-template-columns:1fr 1fr}
  .tplCard{grid-template-columns:76px 1fr;gap:var(--sp-2) var(--sp-3)}
  .tplCard .tplPhoto img,.tplCard .tplPhoto svg{width:76px;height:76px;border-radius:14px}
  .tplCard .tplCredit{font-size:10.5px}
  .tplHeroCard{grid-template-columns:1fr;padding:var(--sp-4);gap:var(--sp-3)}
  .tplHeroCard .tplPhoto{max-width:180px}
  .tplVrHero{grid-template-columns:1fr;padding:var(--sp-5)}
  .tplVrTiti{width:84px}
  .tplTabs{gap:var(--sp-2)}
  .tplTab{font-size:var(--fs-md);padding:8px}
  .tplMoreIn{grid-template-columns:1fr 1fr;padding:var(--sp-3)}
  .tplTiles{grid-template-columns:1fr 1fr}
}

/* ── 움직임 줄이기 ── 정지 화면 */
@media (prefers-reduced-motion:reduce){
  .tplCard,.tplHeroCard,.tplSkel i{animation:none!important}
  .tplTab,.tplCard,.tplSeg button{transition:none}
  .tplTab:hover,.tplCard:hover{transform:none}
}
