/* Header */
.header{height:54px;background:transparent;display:flex;align-items:flex-start;justify-content:space-between;padding:0 16px 0 0;position:sticky;top:0;z-index:100;box-shadow:none;max-width:var(--max-width);width:100%;}
.header-logo{display:block;width:max-content;}
.header-logo img{display:block;width:68px;height:97px;object-fit:contain;}
.header-menu-btn{position:relative;display:flex;justify-content:center;align-items:center;width:40px;height:40px;margin-top:7px;padding:0;}
.header-menu-btn img{display:block;width:40px;height:40px;}
/* Footer Info */
.footer-info{padding:40px 16px 120px;background:#e8ebed;color:#1b1d1f;}
.footerDivider{display:block;width:1px;height:12px;background:rgba(0,0,0,0.2);}
.footerInfo{display:flex;flex-direction:column;gap:8px;margin:0;font-style:normal;font-size:12px;line-height:14px;opacity:0.6;}
.footerInfo p{margin:0;}
.footerCopy{margin:24px 0 0;font-size:12px;line-height:14px;opacity:0.4;}
/* Common Components */
.card{border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:16px;}
.section-title{font-size:18px;font-weight:700;color:var(--text-primary);margin-bottom:12px;display:flex;align-items:center;padding-left:12px;position:relative;}
.section-title::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:18px;background-color:var(--primary);border-radius:2px;}
.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:0 16px;}
.section-header .section-title{margin-bottom:0;padding-left:12px;/* Reset padding since it's handled by pseudo-element positioning context */}
.view-all{font-size:13px;color:var(--text-secondary);display:flex;align-items:center;}
.btn-primary{background-color:var(--primary);color:white;padding:10px 20px;border-radius:var(--radius-sm);font-weight:600;text-align:center;display:inline-block;transition:background-color 0.2s;}
.btn-primary:active{background-color:var(--primary-dark);}
/* Pills */
.pill-container{display:flex;gap:8px;overflow-x:auto;padding:0 16px 16px;scrollbar-width:none;/* Firefox */}
.pill-container::-webkit-scrollbar{display:none;/* Chrome/Safari */}
.pill{padding:6px 16px;border-radius:999px;font-size:13px;font-weight:500;white-space:nowrap;border:1px solid var(--border);background-color:white;color:var(--text-secondary);transition:all 0.2s;}
.pill--active{background-color:var(--primary);color:white;border-color:var(--primary);}
/* Status Tags */
.status-tag{display:inline-block;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;line-height:1;}
.status-tag.ongoing{background-color:rgba(229,57,53,0.1);color:var(--primary);}
.status-tag.upcoming{background-color:rgba(255,152,0,0.1);color:#F57C00;}
.status-tag.completed{background-color:#EEEEEE;color:var(--text-secondary);}
/* Utility */
.text-center{text-align:center;}
.mt-16{margin-top:16px;}
.mb-16{margin-bottom:16px;}
.flex{display:flex;}
.items-center{align-items:center;}
.justify-between{justify-content:space-between;}
.gap-8{gap:8px;}
.w-full{width:100%;}
/* Mobile Menu Overlay */
.mobile-menu-overlay{position:fixed;inset:0;background:rgba(14,21,36,0.9);backdrop-filter:blur(10px);z-index:99;display:none;opacity:0;transition:opacity 0.2s ease;}
.mobile-menu-overlay.active{display:block;opacity:1;}
.mobile-menu{width:calc(100% - 48px);max-width:540px;margin:150px auto 0;display:flex;flex-direction:column;gap:40px;transform:translateY(8px);transition:transform 0.2s ease;}
.mobile-menu.active{transform:translateY(0);}
.mobile-menu-header{display:flex;align-items:center;justify-content:space-between;min-height:24px;}
.mobile-menu-list{display:flex;flex-direction:column;gap:24px;}
.mobile-menu-item{display:flex;align-items:center;width:100%;padding-bottom:24px;border-bottom:1px solid rgba(255,255,255,0.14);font-size:18px;line-height:22px;letter-spacing:-0.02em;color:#ffffff;}
.mobile-menu-item:last-child{padding-bottom:0;border-bottom:0;}
.loading-state{text-align:center;padding:40px;color:var(--text-muted);}
.result-count{padding:8px 16px;font-size:13px;color:var(--text-secondary);}
/* SVG Sprite Icon */
.icon{width:24px;height:24px;display:inline-block;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.icon-xs{width:14px;height:14px;}
.icon-sm{width:16px;height:16px;}
.icon-md{width:20px;height:20px;}
.icon-lg{width:32px;height:32px;}
.icon-xl{width:48px;height:48px;}
.page{position:relative;width:100%;max-width:540px;margin:0 auto;background:var(--ranking-bg);overflow:hidden; display: flex; flex-direction: column; min-height: 100vh; }
.topBar{position:fixed;top:0;left:0;right:0;margin:0 auto;max-width:540px;z-index:10;display:flex;justify-content:space-between;align-items:flex-start;height:54px;padding-right:16px;transition:background-color .2s ease;}
.topBar.is-scrolled{background:var(--ranking-bg);}
.brand{width:max-content;}
.brand img{width:100%;height:100%;object-fit:contain;}
.menuButton{position:relative;display:flex;justify-content:center;align-items:center;width:40px;height:40px;margin-top:7px;z-index:30;}
.menuButton img{transition:opacity 0.2s ease;}
.menuButton:before,.menuButton:after{content:"";position:absolute;width:18px;height:2px;background:#fff;opacity:0;transition:transform 0.2s ease,opacity 0.2s ease;}
.page.is-open .topBar{z-index:100;}
.page.is-open .menuButton img{opacity:0;}
.page.is-open .menuButton:before,.page.is-open .menuButton:after{opacity:1;}
.page.is-open .menuButton:before{transform:rotate(45deg);}
.page.is-open .menuButton:after{transform:rotate(-45deg);}
.menuPanel{display:flex;flex-direction:column;gap:40px;width:100%;margin:150px auto 0; padding:0 24px;}
.menuHeader{display:flex;align-items:center;min-height:24px;}
.menuBrand{width:190px;max-width:100%;height:24px;object-fit:contain;}
.menuList{display:flex;flex-direction:column;gap:24px;}
.menuItem{display:flex;justify-content:center;align-items:center;padding-bottom:24px;border-bottom:1px solid rgba(255,255,255,0.14);}
.menuItem:last-child{padding-bottom:0;border-bottom:0;}
.menuLink{display:flex;align-items:center;width:100%;font-size:18px;line-height:22px;letter-spacing:-0.02em;}
.main{padding:24px 16px 120px;}
.meta{display:flex;justify-content:center;align-items:center;gap:8px;margin-bottom:16px;color:rgba(255,255,255,0.6);font-size:14px;line-height:18px;}
.metaDivider{display:block;width:1px;height:12px;background:rgba(255,255,255,0.3);}
.sections{display:flex;flex-direction:column;gap:16px;}
.card{border-radius:16px;overflow:hidden;}
.cardBody{display:flex;flex-direction:column;gap:24px;padding:16px 16px 0;background:#1A2334;}
.card.is-doubles .cardBody{padding-bottom:24px;}
.cardHeader{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.cardTitle{font-size:18px;font-weight:400;line-height:22px;letter-spacing:-0.02em;}
.filter{display:flex;align-items:center;gap:4px;padding:4px;border-radius:40px;background:rgba(255,255,255,0.1);}
.chip{display:inline-flex;justify-content:center;align-items:center;min-height:28px;padding:7px 16px;border-radius:24px;font-size:12px;font-weight:700;line-height:14px;color:#c9cdd2;}
.chip.is-active{background:#fff;color:#1b1d1f;box-shadow:0 2px 6px rgba(12,29,59,0.1);}
.moreLink{display:flex;justify-content:center;align-items:center;gap:4px;padding:16px;background:#1A2334;border-top:1px solid rgba(255,255,255,0.05);color:rgba(255,255,255,0.6);font-size:14px;font-weight:700;line-height:18px;}
.arrow{position:relative;width:16px;height:16px;}
.arrow:before{content:"";position:absolute;top:4px;left:5px;width:6px;height:6px;border-top:1.5px solid rgba(255,255,255,0.6);border-right:1.5px solid rgba(255,255,255,0.6);transform:rotate(45deg);}
.rankingList{display:flex;flex-direction:column;}
.row{display:flex;align-items:center;gap:12px;min-height:60px;}
.row:last-child{border-bottom:0;}
.card.is-singles .row:first-child{padding:0 0 8px;}
.card.is-singles .row + .row{padding:8px 0;}
.card.is-singles .row:last-child{padding:8px 0 24px;}
.card.is-doubles .row{min-height:72px;}
.card.is-doubles .row:first-child{padding:0 0 12px;}
.card.is-doubles .row + .row{padding:12px 0;}
.card.is-doubles .row:last-child{padding-bottom:0;}
.row.is-empty{min-height:72px;}
.rank{flex:0 0 36px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;}
.rankNum{font-family:var(--font-en);font-style:italic;font-weight:900;font-size:20px;line-height:1;}
.rankNum.is-sub{font-weight:700;}
.ranking-row .rankNum{line-height:24.4px;}
.rankChange{display:inline-flex;align-items:center;gap:2px;min-height:14px;font-size:12px;line-height:14px;letter-spacing:-0.12px;font-weight:900;}
.rankChange.is-down{color:var(--ranking-accent-down);}
.rankChange.is-up{color:var(--ranking-accent-up)}
.rankChange.is-new{color:var(--ranking-accent-up);font-size:8px;letter-spacing:-0.08px;}
.rankChange.is-same{color:var(--ranking-change-same);}
.rankChangeIcon{width:8px;height:12px;display:block;}
.ranking-row .player{display:flex;align-items:center;gap:16px;flex:1;min-width:0;text-align:left;}
.player.is-doubles{gap:8px;}
.avatars{display:flex;align-items:center;}
.avatars.is-doubles .avatar{width:36px;height:36px;}
.avatars.is-doubles .avatar + .avatar{margin-left:-8px;}
.avatar{width:48px;height:48px;border-radius:50%;padding:1px;background:rgba(255,255,255,0.5);box-shadow:2px 4px 12px rgba(0,0,0,0.4);overflow:hidden;}
.avatar.first{background:linear-gradient(135deg,#0040ff 0%,#db0b3f 100%);padding:2px;}
.avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;}
.playerInfo{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;}
.playerLine{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;}
.playerName{display:flex; gap:6px;font-size:16px;font-weight:700;line-height:20px;letter-spacing:-0.32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.playerNameLink{color:inherit;text-decoration:none;}
.playerRowLink{color:inherit;text-decoration:none;}
.nameDivider{color:#72787F;font-weight:400;}
.playerPoint{font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:rgba(255,255,255,0.8);white-space:nowrap;}
.playerMeta{display:flex;gap:2px;justify-content:space-between;font-size:12px;line-height:14px;letter-spacing:-0.12px;color:rgba(255,255,255,0.5);}
.playerMeta span:last-child{color:rgba(255,255,255,0.5);}
.selectionBanner{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:16px;}
.selectionText{display:flex;flex-direction:column;gap:12px;flex:1;}
.selectionHeading{display:flex;flex-direction:column;gap:2px;}
.selectionTitle{font-size:18px;font-weight:700;line-height:22px;letter-spacing:-0.02em;color:rgba(255,255,255,0.8);}
.selectionDesc{font-size:14px;line-height:18px;color:rgba(255,255,255,0.6);}
.selectionButton{display:inline-flex;width:80px;justify-content:center;align-items:center;min-height:34px;border-radius:24px;background:#004896;font-size:14px;font-weight:700;line-height:18px;box-shadow:0 2px 6px rgba(12,29,59,0.1);}
.selectionBadge{flex:0 0 53px;width:53px;height:86px;object-fit:contain;}
.utilityList{display:flex;flex-direction:column;margin-top:40px;}
.utilityCard{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 0 24px;border-bottom:1px solid rgba(255,255,255,0.08);}
.utilityCard:last-child{padding:24px 0 0;border-bottom:0;}
.utilityBody{display:flex;flex-direction:column;gap:2px;flex:1;}
.utilityTitle{font-size:18px;line-height:22px;letter-spacing:-0.02em;}
.utilityDesc{font-size:14px;line-height:18px;color:rgba(255,255,255,0.6);}
.utilityIcon{width:36px;height:36px;border-radius:50%;background-repeat:no-repeat;background-position:center;}
.utilityIcon.is-search{background-image:url(/images/figma/search.svg);background-size:cover;}
.utilityIcon.is-question{background-image:url(/images/figma/main-qna.svg);background-size:cover;}
.is-locked{overflow:hidden;}
/* ===== ranking section (Figma 3613:1108) ===== */
.main.home-main{padding:0;}
.home-rank-section{background:var(--ranking-bg);padding:24px 16px 120px;}
.home-rank-card{background:#1a2334;border-radius:16px;padding:16px;margin-bottom:16px;box-shadow:0 4px 24px rgba(0,0,0,0.24);}
/* 탭바: Figma Frame 1092 스트로크 없음. 활성 탭 인디케이터는 ::after 24×2px #fff. */
.event-tab-bar{display:flex;gap:8px;margin-bottom:16px;position:relative;}
.event-tab{flex:1;display:inline-flex;justify-content:center;align-items:flex-start;height:28px;font-size:14px;line-height:18px;letter-spacing:-0.14px;color:#9ea4aa;font-weight:400;background:none;border:none;cursor:pointer;padding:0;position:relative;}
.event-tab.is-active{color:#fff;font-weight:700;}
.event-tab.is-active::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:24px;height:2px;background:#fff;}
.ranking-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,0.08);margin-bottom:24px;}
.ranking-header-left{display:flex;flex-direction:column;gap:4px;}
.ranking-event-title{margin:0;font-size:18px;font-weight:400;line-height:22px;color:#fff;letter-spacing:-0.36px;}
.ranking-update-row{display:flex;align-items:center;gap:8px;}
.ranking-update-label{font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.12px;color:rgba(255,255,255,0.6);}
.ranking-update-divider{display:block;width:1px;height:10px;background:rgba(255,255,255,0.2);}
.ranking-update-date{font-size:12px;font-weight:400;line-height:14px;letter-spacing:-0.12px;color:rgba(255,255,255,0.6);}
/* 부문탭 컨테이너: Figma Frame 263 134×36 r40 pad4 / 활성 63×28 r24 / 비활성 63×32(pad9/16) */
.ranking-sub-tabs{display:inline-flex;align-items:center;gap:0;padding:4px;border-radius:40px;background:rgba(255,255,255,0.1);height:36px;box-sizing:border-box;}
.sub-tab{display:inline-flex;justify-content:center;align-items:center;height:28px;padding:8px 16px;border-radius:24px;font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.12px;color:#c9cdd2;background:none;border:none;cursor:pointer;box-sizing:border-box;}
.sub-tab.is-active{background:#fff;color:#1b1d1f;box-shadow:0 2px 6px rgba(12,29,59,0.1);}
/* ── 메인(home) 전용 남/여+페어확인 바 (Figma Frame 1162). list.php와 클래스 분리(home- 네임스페이스)로 전역 오염 차단 ── */
.home-pair-bar{display:none;align-items:center;gap:10px;margin-bottom:24px;}
.home-pair-bar.is-visible{display:flex;}
/* 혼복 남/여 토글 (Figma Frame 1163/1164/1165): pill 2개 65×30 pad6/20 r28, 활성 #007bff, 텍스트 14/700 #fff */
.home-gender-row{display:flex;justify-content:flex-start;align-items:center;gap:8px;}
.home-gender-tab{flex:0 0 auto;display:inline-flex;justify-content:center;align-items:center;min-height:28px;padding:6px 20px;border-radius:28px;box-sizing:border-box;font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.12px;color:#fff;background:rgba(255,255,255,0.08);border:none;cursor:pointer;}
.home-gender-tab.is-active{background:#007bff;color:#fff;}
/* 페어 체크 시: 선택 색 제거 → 둘 다 중립 톤, 비상호작용 */
.home-gender-row.is-pair-muted{pointer-events:none;opacity:0.4;}
.home-gender-row.is-pair-muted .home-gender-tab{background:rgba(255,255,255,0.08);}
/* 페어 확인하기 (Figma Frame 67): 체크박스 20×20 r24. 우측정렬은 혼복(XD)일 때만(.is-xd) — 남복/여복은 좌측 */
.home-pair-check{display:none;align-items:center;border-radius:8px;cursor:pointer;user-select:none;}
.home-pair-bar.is-xd .home-pair-check{margin-left:auto;}
.home-pair-check.is-visible{display:flex;}
.home-pair-check-box{flex-shrink:0;width:20px;height:20px;border-radius:24px;background:rgba(255,255,255,0.2);display:flex;align-items:center;justify-content:center;}
.home-pair-check-box svg{display:block;}
.home-pair-check.is-checked .home-pair-check-box{background:#fff;}
.home-pair-check-label{margin-left:8px;font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:#c9cdd2;}
/* ── list.php 복식 컨트롤바 (Figma 3658:1392 복식 / 3684:1160 혼복 Frame 1162) — 메인과 클래스 분리 유지, 스펙은 동일 ── */
/* 혼복 남/여 토글: 개별 pill 65×30 pad6/20 r28, 활성 #007bff, 텍스트 14/700 #fff */
.xd-gender-row{display:flex;align-items:center;gap:8px;}
.xd-gender-tab{flex:0 0 auto;display:inline-flex;justify-content:center;align-items:center;min-height:28px;padding:6px 20px;border-radius:28px;box-sizing:border-box;font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.12px;color:#fff;background:rgba(255,255,255,0.08);border:none;cursor:pointer;}
.xd-gender-tab.is-active{background:#007bff;color:#fff;}
/* 페어 체크 시: 선택 색 제거 → 둘 다 중립, 비상호작용 (메인 .home-gender-row와 동일 동작) */
.xd-gender-row.is-pair-muted{pointer-events:none;opacity:0.4;}
.xd-gender-row.is-pair-muted .xd-gender-tab{background:rgba(255,255,255,0.08);}
/* 페어 확인하기: 체크박스 20×20 r24 */
.pair-check-row{display:none;align-items:center;padding-left:8px;border-radius:8px;cursor:pointer;user-select:none;}
.pair-check-row.is-visible{display:flex;}
.pair-check-box{flex-shrink:0;width:20px;height:20px;border-radius:24px;background:rgba(255,255,255,0.2);display:flex;align-items:center;justify-content:center;}
.pair-check-box svg{display:block;}
.pair-check-row.is-checked .pair-check-box{background:#fff;}
.pair-check-label{margin-left:8px;font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:#c9cdd2;}
/* 컨트롤바: 좌=남/여(XD만) ┃ 우=페어확인. space-between으로 단독(MD/WD)=좌측, XD=양끝 자동 배치 */
.pair-check-bar{display:none;align-items:center;justify-content:space-between;margin-bottom:24px;}
.pair-check-bar.is-visible{display:flex;}
/* 랭킹 리스트: Figma §D-2 행 구분선 없음 — 순수 padding으로만 처리 */
.home-rank-list{display:flex;flex-direction:column;}
/* 1번행: paddingBottom:8(56px total). 중간행: paddingTop:8+paddingBottom:8(64px). 마지막행: paddingTop:8(56px). is-first/is-last 클래스로 JS에서 부여 */
.ranking-row{display:flex;align-items:center;gap:12px;padding-bottom:8px;}
.ranking-row+.ranking-row{padding-top:8px;}
.ranking-row:last-child{padding-bottom:0;}
/* 페어 뷰 행: 1번 50px(padB12), 중간 62px(padT12+padB12), 마지막 50px(padT12) */
/* 페어 행: Figma 3613:6075(Frame 929) — 콘텐츠 48px + 상하 pad8 (1번 56·중간 64·마지막 56), 아바타↔이름 gap8 */
.ranking-row.is-pair{min-height:64px;padding-top:8px;padding-bottom:8px;}
.ranking-row.is-pair:first-child{min-height:56px;padding-top:0;}
.ranking-row.is-pair:last-child{min-height:56px;padding-bottom:0;}
.ranking-row.is-pair .player{gap:8px;}
/* 페어 아바타 영역 */
.pair-avatars{display:flex;align-items:center;flex-shrink:0;}
.pair-avatar{width:36px;height:36px;border-radius:50%;background:var(--ranking-avatar-photo-bg);overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:2px 4px 12px rgba(0,0,0,0.4);border:1px solid rgba(255,255,255,0.5);}
.pair-avatar+.pair-avatar{margin-left:-8px;}
.pair-avatar.is-first{border:1px solid transparent;background:linear-gradient(var(--ranking-avatar-photo-bg),var(--ranking-avatar-photo-bg)) padding-box,linear-gradient(135deg,#0040ff 0%,#db0b3f 100%) border-box;}
.pair-avatar img{display:block;width:100%;height:100%;object-fit:cover;}
/* 페어 선수정보 */
.pair-player-info{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;}
.pair-player-line{display:flex;justify-content:space-between;align-items:center;gap:4px;}
.pair-player-names{display:inline-flex;align-items:center;gap:0;font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pair-name-div{display:inline-block;width:1px;height:12px;background:#72787f;margin:0 4px;flex-shrink:0;}
.pair-player-point{font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:rgba(255,255,255,0.8);white-space:nowrap;flex-shrink:0;}
.pair-player-meta{display:flex;justify-content:space-between;gap:2px;font-size:12px;font-weight:400;line-height:14px;letter-spacing:-0.12px;color:rgba(255,255,255,0.5);}
/* 전체보기: Figma 3638:18579 296×36 r60 bg rgba(255,255,255,0.03) */
.ranking-view-all{display:flex;justify-content:center;align-items:center;height:36px;border-radius:60px;background:rgba(255,255,255,0.03);margin:24px 0 0;font-size:14px;font-weight:400;letter-spacing:-0.14px;color:#9ea4aa;text-decoration:none;}
.selection-card{border-radius:16px;background:linear-gradient(135deg,#112e66 0%,#470607 100%);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;margin-bottom:0;overflow:hidden;}
.selection-card-body{display:flex;flex-direction:column;gap:12px;flex:1;}
.selection-card-heading{display:flex;flex-direction:column;gap:2px;}
.selection-card-title{margin:0;font-size:18px;font-weight:700;line-height:22px;letter-spacing:-0.36px;color:rgba(255,255,255,0.8);}
.selection-card-desc{font-size:14px;font-weight:400;line-height:18px;letter-spacing:-0.14px;color:rgba(255,255,255,0.6);}
/* 바로가기 버튼: Figma 3613:1446 80×34 pad 8 16 r24 bg rgba(255,255,255,0.1) Pretendard 14px 700 #fff */
.selection-card-btn{display:inline-flex;justify-content:center;align-items:center;width:80px;height:34px;padding:0;border-radius:24px;background:rgba(255,255,255,0.1);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:#fff;text-decoration:none;box-sizing:border-box;box-shadow:0 2px 6px rgba(12,29,59,0.1);}
.selection-card-badge{flex:0 0 53px;width:53px;height:86px;object-fit:contain;}
.utility-cards{display:flex;gap:0;margin-top:16px;}
.utility-card-item{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;gap:16px;text-decoration:none;color:#fff;}
.utility-card-item+.utility-card-item{border-left:1px solid rgba(255,255,255,0.1);}
.utility-card-item>div{display:flex;flex-direction:column;gap:8px;}
.utility-card-title{margin:0;font-size:16px;font-weight:700;line-height:20px;letter-spacing:-0.32px;color:#fff;}
.utility-card-desc{font-size:14px;font-weight:400;line-height:18px;letter-spacing:-0.14px;color:rgba(255,255,255,0.6);}
.utility-card-icon{width:36px;height:36px;border-radius:50%;background-repeat:no-repeat;background-position:center;}
.utility-card-icon.is-search{background-image:url(/images/figma/search.svg);background-size:cover;}
.utility-card-icon.is-question{background-image:url(/images/figma/main-qna.svg);background-size:cover;}
/* ===== end ranking section ===== */
.footerMenu{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:24px;font-size:14px;font-weight:700;line-height:18px;opacity:0.6;}
.footerDivider{display:block;width:1px;height:12px;background:rgba(0,0,0,0.2);}
.footerInfo{display:flex;flex-direction:column;gap:8px;font-style:normal;font-size:12px;line-height:14px;opacity:0.6;}
.footerCopy{margin-top:24px;font-size:12px;line-height:14px;opacity:0.4;}
/* ===== MERGED: home.css ===== */ /* Hero Section */
.hero{background:linear-gradient(135deg,var(--navy),var(--navy-light));color:white;padding:24px 0 32px;overflow:hidden;}
.hero-title{font-size:16px;font-weight:700;margin-bottom:4px;padding:0 16px;}
.hero-subtitle{font-size:12px;font-weight:400;opacity:0.8;padding:0 16px;margin-bottom:16px;}
.hero-carousel{display:flex;gap:12px;overflow-x:auto;padding:0 16px;scroll-snap-type:x mandatory;scrollbar-width:none;}
.hero-carousel::-webkit-scrollbar{display:none;}
.hero-card{flex:0 0 85%;background-color:white;border-radius:var(--radius);padding:16px;color:var(--text-primary);scroll-snap-align:start;display:flex;flex-direction:column;justify-content:space-between;min-height:140px;}
.hero-card-title{font-size:16px;font-weight:700;margin-bottom:8px;line-height:1.4;}
.hero-card-date{font-size:13px;color:var(--text-secondary);margin-bottom:12px;}
.hero-card-footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto;}
.hero-card-count{font-size:12px;color:var(--text-muted);}
.hero-btn{font-size:12px;color:var(--primary);font-weight:600;padding:6px 12px;background-color:rgba(229,57,53,0.1);border-radius:4px;}
/* Stats Bar */
.stats-bar{display:flex;justify-content:space-between;padding:0 16px;margin-top:-20px;margin-bottom:24px;position:relative;z-index:10;}
.stat-card{flex:1;background-color:white;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 8px;text-align:center;margin:0 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.stat-icon{width:24px;height:24px;margin-bottom:4px;color:var(--primary);}
.stat-value{font-size:16px;font-weight:700;color:var(--text-primary);}
.stat-label{font-size:11px;color:var(--text-secondary);}
/* Match Section */
.match-section{margin-bottom:24px;}
.match-card{background-color:white;border-radius:var(--radius);padding:16px;margin-bottom:12px;border:1px solid var(--border);}
.match-header{display:flex;justify-content:space-between;margin-bottom:12px;font-size:12px;color:var(--text-secondary);}
.match-players{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.player{flex:1;text-align:center;}
.player-name{font-weight:600;font-size:14px;margin-bottom:4px;}
.player-team{font-size:11px;color:var(--text-muted);}
.match-score{font-size:20px;font-weight:700;color:var(--primary);padding:0 16px;}
.match-status{text-align:center;font-size:12px;color:var(--text-muted);padding-top:8px;border-top:1px solid #f0f0f0;}
/* Ranking Section */
.ranking-section{margin-bottom:24px;}
.spotlight-card{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:white;border-radius:var(--radius);padding:20px;margin:0 16px 16px;display:flex;align-items:center;position:relative;overflow:hidden;}
.spotlight-rank{font-size:48px;font-weight:800;opacity:0.2;position:absolute;right:10px;top:-10px;}
.spotlight-avatar{width:60px;height:60px;background-color:rgba(255,255,255,0.2);border-radius:50%;margin-right:16px;display:flex;align-items:center;justify-content:center;font-size:24px;}
.spotlight-info{flex:1;}
.spotlight-name{font-size:18px;font-weight:700;margin-bottom:4px;}
.spotlight-team{font-size:13px;opacity:0.9;margin-bottom:8px;}
.spotlight-points{font-size:14px;font-weight:600;background-color:rgba(0,0,0,0.1);padding:4px 8px;border-radius:4px;display:inline-block;}
.ranking-list{padding:0 16px;}
.ranking-item{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0;}
.ranking-item:last-child{border-bottom:none;}
.rank-num{width:24px;font-weight:700;color:var(--text-secondary);text-align:center;margin-right:12px;}
.rank-avatar{width:36px;height:36px;background-color:#eee;border-radius:50%;margin-right:12px;display:flex;align-items:center;justify-content:center;font-size:12px;color:#999;}
.rank-info{flex:1;}
.rank-name{font-size:14px;font-weight:600;color:var(--text-primary);}
.rank-team{font-size:11px;color:var(--text-muted);}
.rank-points{font-size:13px;font-weight:600;color:var(--text-primary);}
/* Shortcuts */
.shortcuts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:0 16px;margin-bottom:32px;}
.shortcut-btn{background-color:white;border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--shadow);text-align:center;gap:8px;}
.shortcut-icon{width:32px;height:32px;color:var(--primary);background-color:rgba(229,57,53,0.1);border-radius:50%;padding:6px;}
.shortcut-label{font-size:13px;font-weight:600;color:var(--text-primary);}
/* Footer */
.footer{text-align:center;padding:24px 16px;background-color:#f0f0f0;color:var(--text-muted);font-size:11px;line-height:1.6;}
.footer-links{margin-bottom:12px;}
.footer-links a{margin:0 8px;color:var(--text-secondary);}
/* ===== MERGED: events.css ===== */
.events-hero{background:linear-gradient(135deg,var(--navy)0%,var(--navy-light)100%);padding:40px 20px;text-align:center;color:white;margin-bottom:20px;}
.events-hero-title{font-size:28px;font-weight:700;margin-bottom:8px;}
.events-hero-subtitle{font-size:14px;opacity:0.7;letter-spacing:1px;text-transform:uppercase;}
.quick-tabs-container{padding:0 16px;margin-bottom:24px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.quick-tabs-container::-webkit-scrollbar{display:none;}
.quick-tabs{display:flex;gap:12px;min-width:max-content;}
.quick-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 16px;border-radius:var(--radius-sm);background-color:white;border:1px solid var(--border);min-width:80px;transition:all 0.2s ease;}
.quick-tab.active{border-color:var(--primary);background-color:#FFF5F5;}
.quick-tab .tab-label{font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:4px;}
.quick-tab.active .tab-label{color:var(--primary);}
.quick-tab .tab-count{font-size:12px;color:var(--text-muted);font-weight:500;}
.quick-tab.active .tab-count{color:var(--primary);}
.events-container{padding:0 16px;min-height:300px;}
.loading-spinner{text-align:center;padding:40px;color:var(--text-muted);}
.month-group{margin-bottom:32px;}
.month-header{font-size:20px;font-weight:700;color:var(--text-primary);margin-bottom:16px;text-align:center;position:relative;padding-bottom:12px;}
.month-header::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:40px;height:3px;background-color:var(--primary);border-radius:2px;}
.event-card{background-color:white;border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px;position:relative;transition:transform 0.2s ease,box-shadow 0.2s ease;display:block;text-decoration:none;}
.event-card:active{transform:scale(0.98);}
.event-date-pill{position:absolute;top:20px;right:20px;background-color:var(--navy);color:white;padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600;box-shadow:0 2px 4px rgba(0,0,0,0.1);}
.event-status{margin-bottom:12px;}
.event-title{font-size:18px;font-weight:700;color:var(--text-primary);margin-bottom:12px;line-height:1.4;padding-right:100px;}
.event-meta{display:flex;align-items:center;gap:16px;margin-bottom:16px;flex-wrap:wrap;}
.event-location{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--text-secondary);}
.event-location svg{width:16px;height:16px;fill:currentColor;}
.event-participants{display:inline-flex;align-items:center;gap:4px;background-color:#E8F5E9;color:#2E7D32;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;}
.event-participants svg{width:14px;height:14px;fill:currentColor;}
.event-detail-link{display:flex;align-items:center;justify-content:center;gap:6px;padding-top:16px;border-top:1px solid var(--border);color:var(--text-muted);font-size:13px;font-weight:500;}
.event-detail-link svg{width:16px;height:16px;stroke:currentColor;}
@media(max-width:480px){.event-title{font-size:16px;padding-right:0;margin-top:30px;}
.event-date-pill{top:16px;right:16px;font-size:11px;padding:4px 10px;}
}
/* ===== MERGED: player.css ===== */ /* Player Search & Detail Styles */
/* Search Form Card */
.search-form-card{background:white;border-radius:var(--radius);padding:20px;margin:0 16px 24px;box-shadow:var(--shadow);position:relative;z-index:10;}
.search-input-wrapper{display:flex;align-items:center;background:#F5F5F5;border-radius:var(--radius-sm);padding:8px 12px;margin-bottom:16px;}
.search-input-wrapper svg{width:20px;height:20px;fill:var(--text-muted);margin-right:8px;}
.search-input-wrapper input{flex:1;border:none;background:transparent;font-size:16px;color:var(--text-primary);outline:none;padding:4px 0;}
.btn-clear{padding:4px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);}
.search-btn{width:100%;background-color:var(--primary);color:white;border-radius:var(--radius-sm);padding:14px;font-weight:600;font-size:16px;transition:background-color 0.2s;}
.search-btn:active{background-color:var(--primary-dark);}
/* Gender Filters */
.gender-filters{display:flex;gap:8px;margin-bottom:24px;padding:0 16px;}
.filter-pill{padding:8px 16px;border-radius:999px;font-size:14px;font-weight:500;background:white;border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all 0.2s;}
.filter-pill.active{background:var(--primary);color:white;border-color:var(--primary);}
/* Empty State */
.empty-state{text-align:center;padding:40px 20px;color:var(--text-secondary);}
.empty-icon{width:48px;height:48px;fill:var(--text-muted);margin-bottom:16px;}
.popular-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;}
.tag-pill{padding:6px 12px;background:#F5F5F5;border-radius:999px;font-size:13px;color:var(--text-secondary);cursor:pointer;}
.tag-pill:hover{background:#EEEEEE;}
/* Search Results */
.result-count{padding:0 16px 12px;font-size:14px;color:var(--text-secondary);}
.player-avatar{width:48px;height:48px;border-radius:50%;background:#EEEEEE;display:flex;align-items:center;justify-content:center;margin-right:16px;position:relative;font-weight:600;color:var(--text-secondary);font-size:18px;}
.gender-badge{position:absolute;bottom:0;right:0;width:16px;height:16px;border-radius:50%;border:2px solid white;}
.gender-badge.M{background-color:#2196F3;}
.gender-badge.F{background-color:#E91E63;}
.player-info{flex:1;}
.player-name{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:4px;}
.player-meta{font-size:13px;color:var(--text-secondary);}
.rank-num{font-size:18px;font-weight:700;color:#E53935;}
.rank-points{font-size:12px;color:var(--text-muted);}
.keyword-highlight{color:var(--primary);font-weight:700;}
/* Player Detail Styles */
.player-header{background:white;padding:24px 20px;margin-bottom:16px;box-shadow:0 1px 4px rgba(0,0,0,0.05);}
.detail-name{font-size:24px;font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:8px;}
.detail-meta{display:flex;flex-wrap:wrap;gap:12px;font-size:14px;color:var(--text-secondary);}
.detail-meta span{display:flex;align-items:center;gap:4px;}
/* Section Styles */
.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;}
.section-title{font-size:16px;font-weight:700;color:var(--text-primary);}
.hidden{display:none !important;}
/* Empty State */
.pp-empty-state{text-align:center;padding:40px 16px;color:#6b7280;font-size:14px;border-radius:8px;}
/* Loading State */
.loading-state{text-align:center;padding:40px;color:#9ca3af;font-size:14px;}
/* ===== MERGED: ranking.css ===== */ /* --- 토큰 (ranking 전용) --- */
:root{--ranking-bg:#0e1524;--ranking-white:#ffffff;--ranking-tab-inactive:#9ea4aa;--ranking-accent-up:#fa2c52;--ranking-accent-down:#327aff;--ranking-change-same:#454c53;--ranking-points-sep:#393c41;--ranking-avatar-bg:#94a1b0;--ranking-avatar-photo-bg:#dde2e8;--ranking-pagination-active:#004896;--ranking-search-bg:#000000;--ranking-filter-bg:rgba(255,255,255,0.1);}
/* --- 페이지 베이스 --- */
body{background:var(--ranking-bg);}
.main-content,.ranking-page{background:var(--ranking-bg);}
.ranking-page{color:var(--ranking-white);padding-top:90px;}
/* --- 헤더: RANKINGS + 탭 --- */
/* ===== 공통 상단 영역 — 랭킹/검색/팀 공용. 오프셋·960정렬·좌우16·타이틀↔탭 간격을 한 곳에서 관리(개별 페이지가 패딩/정렬 안 건드리게) ===== */
.page-hero{display:flex;flex-direction:column;gap:40px;padding:8px 16px 0;}
.page-hero_head{display:flex;flex-direction:column;gap:4px;}
.page-hero_title{margin:0;font-family:var(--font-kr);font-size:24px;font-weight:700;line-height:28px;letter-spacing:-.48px;background:linear-gradient(90deg,var(--ranking-white)0%,rgba(255,255,255,0.8)100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;}
/* 랭킹 안내 타이틀 줄 + 규정집 다운로드 버튼 (시안 Figma 4077:2022)
   타이틀이 grow 로 남는 폭을 먹고 버튼을 우측 끝으로 민다(gap 10, 세로 중앙정렬). */
.page-hero_titlerow{display:flex;align-items:center;gap:10px;}
.page-hero_titlerow .page-hero_title{flex:1 1 auto;min-width:0;}
/* 버튼: 배경 없음 + 흰 1px 실선 테두리, radius 60. 시안은 209x40 고정이지만 PC 전용이라
   모바일은 시안이 없어 내용폭(padding 기반)으로 둔다 — PC 에서만 고정폭으로 되돌린다. */
.page-hero_download{flex:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:28px;padding:0 17px;box-sizing:border-box;border:1px solid #ffffff;border-radius:60px;background:transparent;
  font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.14px;color:#ffffff;white-space:nowrap;cursor:pointer;}
.page-hero_download-icon{flex:none;display:block;width:15px;height:15px;}
.page-hero_title--en{font-family:var(--font-en);font-style:italic;font-weight:900;}
.page-hero_desc{margin:0;color:var(--ranking-tab-inactive);font-family:var(--font-kr);font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.14px;}
.ranking-top-card{display:flex;flex-direction:column;align-items:stretch;gap:24px;padding:16px 16px 0;border-radius:16px 16px 0 0;background:linear-gradient(180deg,rgba(255,255,255,.15) 0%,rgba(255,255,255,.05) 100%);box-shadow:0 4px 24px 0 rgba(0,0,0,.24);}
.ranking-top-card-title{margin:0;color:#FFF;font-family:var(--font-kr);font-size:18px;font-style:normal;font-weight:700;line-height:22px;letter-spacing:-.36px;word-break:keep-all;}
.ranking-meta-divider{display:inline-block;width:1px;height:10px;background:var(--ranking-points-sep);}
.ranking-person-row{display:flex;align-items:center;align-self:stretch;gap:8px;padding:8px 0;}
.ranking-person-row + .ranking-person-row{border-top:1px solid rgba(255,255,255,.08);}
.ranking-person-avatar{display:flex;flex:0 0 36px;width:36px;height:36px;align-items:center;justify-content:center;overflow:hidden;border-radius:68px;border:1px solid rgba(255,255,255,.5);background:var(--ranking-avatar-photo-bg);box-shadow:2px 4px 12px 0 rgba(0,0,0,.4);}
.ranking-person-avatar img{display:block;width:100%;height:100%;object-fit:cover;}
.ranking-person-copy{display:flex;flex:1;min-width:0;flex-direction:column;justify-content:center;align-items:stretch;gap:2px;}
.ranking-person-name{margin:0;color:#FFF;font-family:var(--font-kr);font-size:14px;font-style:normal;font-weight:700;line-height:18px;letter-spacing:-.14px;word-break:keep-all;}
.ranking-person-points{margin:0;color:rgba(255,255,255,.8);font-family:var(--font-kr);font-size:12px;font-style:normal;font-weight:400;line-height:14px;letter-spacing:-.12px;}
/* 랭킹 종류 탭 */
/* ===== 공통 밑줄 탭 — 랭킹(국내/선발전)·검색(부문)·팀(부문). 모바일 18 / PC 24 ===== */
.page-tabs{display:flex;gap:16px;border-bottom:1px solid rgba(255,255,255,0.10);}
.page-tabs_item{padding:0 0 8px;border:0;background:transparent;color:var(--ranking-tab-inactive);font-family:var(--font-kr);font-size:18px;font-weight:400;line-height:22px;letter-spacing:-0.36px;text-decoration:none;border-bottom:2px solid transparent;cursor:pointer;transition:color 0.2s,border-color 0.2s;}
.page-tabs_item.is-active{color:var(--ranking-white);font-weight:700;border-bottom-color:var(--ranking-white);}
/* --- 바디 레이아웃 --- */
.ranking-page_body{display:flex;flex-direction:column;gap:16px;padding:16px 16px 120px;}
/* --- 필터바 --- */
.ranking-filter-bar_group{display:flex;flex-direction:row;align-items:flex-start;gap:12px;}
.ranking-select{position:relative;flex:1;min-width:0;height:40px;}
.ranking-select_panel{position:absolute;top:0;left:0;right:0;z-index:20;border-radius:8px;overflow:hidden;background:rgba(255,255,255,0.1);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 4px 16px rgba(7,16,33,0.80);}
.ranking-select_trigger{display:flex;justify-content:space-between;align-items:center;width:100%;height:40px;padding:8px 12px 8px 16px;color:var(--ranking-white);}
.ranking-select_trigger-text{font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;text-align:left;}
.ranking-select_trigger-arrow{width:16px;height:16px;flex-shrink:0;}
.ranking-select_trigger-arrow-up{display:none;}
.ranking-select.is-open .ranking-select_trigger-arrow-down{display:none;}
.ranking-select.is-open .ranking-select_trigger-arrow-up{display:block;}
.ranking-select_menu{display:none;flex-direction:column;gap:16px;padding:0 12px 16px 16px;}
.ranking-select_divider{flex-shrink:0;height:1px;margin-top:4px;background:rgba(255,255,255,0.08);}
.ranking-select.is-open .ranking-select_menu{display:flex;}
.ranking-select_option{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--ranking-white);}
.ranking-select_option-text{font-size:14px;font-weight:400;line-height:18px;}
.ranking-select_option-check{width:16px;height:16px;opacity:0;flex-shrink:0;}
.ranking-select_option.is-active .ranking-select_option-check{opacity:1;}
/* --- 안내바 (rule-card) --- */
.ranking-rule-card{background:var(--ranking-search-bg); border-radius: 8px; box-shadow:0 2px 6px rgba(12,29,59,0.1);backdrop-filter:blur(40px);border-top:1px solid rgba(255,255,255,0.08);border-bottom:1px solid rgba(255,255,255,0.08);padding:12px;margin-top:8px;}
.ranking-rule-card_trigger{display:block;width:100%;}
.ranking-rule-card_summary{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.ranking-rule-card_summary-main{display:flex;align-items:center;gap:8px;min-width:0;}
.ranking-rule-card_icon{width:18px;height:18px;flex-shrink:0;}
.ranking-rule-card_summary-text{font-size:14px;font-weight:400;line-height:18px;letter-spacing:-0.14px;color:var(--ranking-white);text-align:left;}
.ranking-rule-card_arrow{width:16px;height:16px;flex-shrink:0;}
.ranking-rule-card_arrow-up{display:none;}
.ranking-rule-card.is-open .ranking-rule-card_trigger{padding-bottom:16px;}
.ranking-rule-card.is-open .ranking-rule-card_arrow-down{display:none;}
.ranking-rule-card.is-open .ranking-rule-card_arrow-up{display:block;}
.ranking-rule-card_content{display:flex;flex-direction:column;gap:12px;}
.ranking-rule-card_content[hidden]{display:none;}
.ranking-rule-card_notice{margin:0;font-size:13px;line-height:20px;color:#ffd4dc;}
/* 안내바 상세 4줄 */
.ranking-rule-card_detail-list{list-style:none;margin:0;display:flex;flex-direction:column;gap:8px;padding:16px 0 0;border-top:1px solid rgba(255,255,255,0.20);}
.ranking-rule-card_detail-item{display:flex;gap:8px;align-items:flex-start;}
.ranking-rule-card_detail-label{font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.12px;color:var(--ranking-tab-inactive);white-space:nowrap;flex-shrink:0;width:88px;}
.ranking-rule-card_detail-value{font-size:12px;font-weight:400;line-height:14px;letter-spacing:-0.12px;color:var(--ranking-white);}
/* --- 검색바 --- */
.ranking-search-bar{display:block;}
.ranking-search-bar_label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
.ranking-search-bar_inner{display:flex;align-items:center;gap:0;border-radius:8px; border: 1px solid rgba(255, 255, 255, 0.20); box-shadow:0 2px 6px rgba(0,0,0,0.4);padding:0 8px 0 16px;height:48px;}
.ranking-search-bar_input{flex:1;background:transparent;border:none;outline:none;font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:var(--ranking-white);}
.ranking-search-bar_input::placeholder{color:var(--ranking-tab-inactive);font-weight:700;}
.ranking-search-bar_btn{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;}
.ranking-search-bar_icon{width:24px;height:24px;display:block;}
/* --- 결과 패널 --- */
.ranking-result-panel{display:flex;flex-direction:column;gap:24px;}
/* --- 리스트 쉘 --- */
.ranking-list-shell{box-shadow:0 2px 6px rgba(12,29,59,0.1);backdrop-filter:blur(40px);}
.ranking-list-shell_body{display:flex;flex-direction:column;gap:24px;min-height:480px;}
/* --- 랭킹 카드 항목 --- */ /* 기본(2위~): padTop=16 + 콘텐츠48 + padBottom=16 = 80px */
.ranking-card-item{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;}
.ranking-card-item-pair{align-items:center;gap:12px;min-height:48px;}
/* 순위 열 */
.ranking-card-rank{flex:0 0 36px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;}
.ranking-card-item-pair .ranking-card-rank{flex:0 0 36px;}
.ranking-card-rank_value{font-family:var(--font-en);font-style:italic;font-weight:900;font-size:16px;line-height:19.5px;color:var(--ranking-white);}
.ranking-card-rank_value.is-sub{font-weight:700;}
/* 순위 변동 — 아이콘 기반 */
.ranking-card-rank_change{display:flex;align-items:center;gap:2px;min-height:14px;}
.ranking-card-rank_change-icon{width:8px;height:12px;display:block;flex-shrink:0;}
.ranking-card-rank_change-num{font-size:12px;font-weight:900;line-height:14px;letter-spacing:-0.12px;}
.ranking-card-rank_change.is-up .ranking-card-rank_change-num{color:var(--ranking-accent-up);}
.ranking-card-rank_change.is-down .ranking-card-rank_change-num{color:var(--ranking-accent-down);}
.ranking-card-rank_change.is-new{font-size:8px;font-weight:900;line-height:14px;letter-spacing:-0.08px;color:var(--ranking-accent-up);}
.ranking-card-rank_change.is-same{font-size:12px;font-weight:900;line-height:14px;color:var(--ranking-change-same);}
/* 아바타 */
.ranking-card-avatar{flex:0 0 48px;width:48px;height:48px;border-radius:50%;border:1px solid transparent;background:var(--ranking-avatar-bg);overflow:hidden;box-shadow:2px 4px 12px rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;}
.ranking-card-avatar-photo{background:linear-gradient(var(--ranking-avatar-photo-bg),var(--ranking-avatar-photo-bg)) padding-box,var(--ranking-avatar-photo-bg) border-box;}
.ranking-card-avatar-default{background:linear-gradient(var(--ranking-avatar-bg),var(--ranking-avatar-bg)) padding-box,var(--ranking-avatar-photo-bg) border-box;}
.ranking-card-avatar img{width:100%;height:100%;object-fit:cover;display:block;}
.ranking-card-avatar-default img{width:auto;height:100%;object-fit:contain;object-position:bottom center;}
.ranking-card-avatar.is-first{border:1px solid transparent;background:linear-gradient(var(--ranking-avatar-bg),var(--ranking-avatar-bg)) padding-box,linear-gradient(135deg,#0040ff 0%,#db0b3f 100%) border-box;}
/* 선수 정보 열 Figma: [아바타 48x48] [이름·소속(flex:1)] [포인트(우측)] 전체 행 높이 = 48px (아바타 기준, padding은 card-item에서 관리) */
.ranking-card-body{display:flex;align-items:center;gap:16px;flex:1;min-width:0;height:48px;}
/* 이름·소속 묶음 (세로, flex:1) */
.ranking-card-copy{display:flex;flex-direction:column;justify-content:center;gap:4px;min-width:0;flex:1;height:100%;}
.ranking-card-copy_name{font-size:16px;font-weight:700;line-height:20px;letter-spacing:-0.32px;color:var(--ranking-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ranking-card-copy_meta{display:flex;gap:4px;font-size:12px;line-height:14px;letter-spacing:-0.12px;color:rgba(255,255,255,0.5);white-space:nowrap;overflow:hidden;}
.ranking-card-copy_meta span{overflow:hidden;text-overflow:ellipsis;}
/* 포인트 2단 (세로, 우측정렬) 합계: fs14/fw700/lh18 세부: fs12/fw400/lh14 + 1x10 구분선 */
.ranking-card-points{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:4px;flex-shrink:0;height:100%;}
.ranking-card-points_total{font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:rgba(255,255,255,0.8);white-space:nowrap;}
.ranking-card-points_sub{display:flex;align-items:center;gap:2px;letter-spacing:-0.03em;}
.ranking-card-points_indiv,.ranking-card-points_team,.ranking-card-points_label{font-size:12px;font-weight:400;line-height:14px;letter-spacing:-0.12px;color:rgba(255,255,255,0.5);white-space:nowrap;}
.ranking-card-points_sep{display:block;width:1px;height:10px;background:var(--ranking-points-sep);flex-shrink:0;}
/* 복식 카드 */
.ranking-card-pair{display:flex;align-items:center;gap:8px;flex:1;min-width:0;}
.ranking-card-pair_avatars{display:flex;align-items:center;flex-shrink:0;}
.ranking-card-pair_avatar{width:36px;height:36px;border-radius:50%;border:1px solid transparent;background:var(--ranking-avatar-bg);overflow:hidden;box-shadow:2px 4px 12px rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;}
.ranking-card-pair_avatar-photo{background:linear-gradient(var(--ranking-avatar-photo-bg),var(--ranking-avatar-photo-bg)) padding-box,var(--ranking-avatar-photo-bg) border-box;}
.ranking-card-pair_avatar-default{background:linear-gradient(var(--ranking-avatar-bg),var(--ranking-avatar-bg)) padding-box,var(--ranking-avatar-photo-bg) border-box;}
.ranking-card-pair_avatar img{width:100%;height:100%;object-fit:cover;display:block;}
.ranking-card-pair_avatar-default img{width:auto;height:100%;object-fit:contain;object-position:bottom center;}
.ranking-card-pair_avatar + .ranking-card-pair_avatar{margin-left:-8px;}
.ranking-card-pair_avatars > .avatarLink{display:inline-flex;}
.ranking-card-pair_avatars > .avatarLink + .avatarLink{margin-left:-8px;}   /* 아바타 링크 감싼 뒤 겹침 유지 */
.ranking-card-pair_avatar.is-first{border:1px solid transparent;background:linear-gradient(var(--ranking-avatar-bg),var(--ranking-avatar-bg)) padding-box,linear-gradient(135deg,#0040ff 0%,#db0b3f 100%) border-box;}
.ranking-card-pair_players{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;}
.ranking-card-pair_names{display:flex;align-items:baseline;gap:2px;min-width:0;}
.ranking-card-pair_orgs{display:flex;align-items:baseline;gap:2px;min-width:0;}
.ranking-card-pair_player{display:flex;align-items:baseline;gap:6px;min-width:0;}
.ranking-card-pair_name{font-size:15px;font-weight:700;line-height:20px;color:var(--ranking-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ranking-card-pair_org{font-size:10px;line-height:14px;color:rgba(255,255,255,0.58);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ranking-card-pair_orgs .nameDivider{font-size:10px;line-height:14px;}
/* 빈/로딩 상태 */
.ranking-card-empty,.ranking-empty,.ranking-loading{padding:48px 16px;text-align:center;font-size:14px;color:rgba(255,255,255,0.55);}
/* --- 페이지네이션 --- */
.ranking-pagination{margin-top:0;}
ul.pagination{display:flex;justify-content:center;align-items:center;gap:6px;margin:0;padding:0;list-style:none;}
ul.pagination li.divPage{display:none;}
ul.pagination li{min-width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:24px;background:transparent;color:#c9cdd2;font-size:16px;font-weight:400;line-height:20px;letter-spacing:-0.32px;border:none;}
ul.pagination li.active{background:var(--ranking-pagination-active);color:var(--ranking-white);font-weight:700;min-width:32px;height:32px;border-radius:24px;}
ul.pagination li.page-prev,ul.pagination li.page-next,ul.pagination li.page-first,ul.pagination li.page-last{font-size:0;background-repeat:no-repeat;background-position:center;background-size:18px 18px;}
ul.pagination li.page-next{background-image:url(/images/figma/next_arrow.svg);}
ul.pagination li.page-last{background-image:url(/images/figma/next_end_arrow.svg);}
ul.pagination li.page-prev{background-image:url(/images/figma/next_arrow.svg);transform:scaleX(-1);}
ul.pagination li.page-first{background-image:url(/images/figma/next_end_arrow.svg);transform:scaleX(-1);}
/* --- 반응형 --- */
@media(max-width:420px){.ranking-page_body{padding-left:16px;padding-right:16px;}
}
/* ===== MERGED: bracket.css ===== */ /* Event Header */
.event-header{background:linear-gradient(135deg,#fff5f5 0%,#ffffff 100%);padding:20px 16px 0;border-bottom:1px solid var(--border);}
.event-header-top{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px;}
.event-logo-placeholder{width:60px;height:60px;background-color:#eee;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--text-muted);text-align:center;flex-shrink:0;}
.event-header-content{flex:1;}
.event-title{font-size:18px;font-weight:700;color:var(--text-primary);margin-bottom:8px;line-height:1.3;}
.event-meta{display:flex;align-items:center;font-size:13px;color:var(--text-secondary);gap:8px;}
.flag-icon{margin-right:4px;}
.meta-separator{color:var(--border);}
/* Tabs */
.tab-btn{padding:12px 4px;font-size:14px;font-weight:500;color:var(--text-secondary);position:relative;transition:color 0.2s;}
.tab-btn.active{color:var(--primary);font-weight:700;}
.tab-btn.active::after{content:'';position:absolute;bottom:0;left:0;width:100%;height:2px;background-color:var(--primary);}
/* Tab Content */
.tab-content{display:none;padding:20px 16px;}
.tab-content.active{display:block;}
/* Winners Section */
.winners-section{margin-bottom:24px;}
.filter-pills{display:flex;gap:8px;margin-bottom:12px;overflow-x:auto;padding-bottom:4px;}
.sub-filter-pills{display:flex;gap:8px;margin-bottom:16px;overflow-x:auto;padding-bottom:4px;}
.pill--sm{padding:4px 12px;font-size:12px;}
.winners-display{display:flex;flex-direction:column;gap:12px;}
.winner-spotlight{background:linear-gradient(135deg,#ff5252 0%,#d32f2f 100%);border-radius:var(--radius);padding:20px;color:white;display:flex;align-items:center;gap:16px;position:relative;overflow:hidden;}
.winner-spotlight::after{content:'1';position:absolute;right:-10px;bottom:-20px;font-size:120px;font-weight:900;color:rgba(255,255,255,0.1);line-height:1;pointer-events:none;}
.winner-avatar{width:64px;height:64px;background-color:rgba(255,255,255,0.2);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;border:2px solid rgba(255,255,255,0.4);}
.winner-info{flex:1;z-index:1;}
.winner-rank-badge{background-color:rgba(0,0,0,0.2);padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;display:inline-block;margin-bottom:4px;}
.winner-name{font-size:20px;font-weight:700;margin-bottom:2px;}
.winner-team{font-size:13px;opacity:0.9;}
.winner-list{display:flex;flex-direction:column;gap:8px;}
.winner-item{background-color:white;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;display:flex;align-items:center;gap:12px;}
.winner-rank{font-size:14px;font-weight:700;color:var(--text-secondary);width:24px;text-align:center;}
.winner-item-avatar{width:32px;height:32px;background-color:#eee;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;}
.winner-item-info{flex:1;}
.winner-item-name{font-size:14px;font-weight:600;color:var(--text-primary);}
.winner-item-team{font-size:12px;color:var(--text-secondary);}
.winner-points{font-size:12px;font-weight:600;color:var(--primary);border:1px solid var(--primary);padding:2px 6px;border-radius:4px;}
/* Event Info Section */
.event-info-section{display:flex;flex-direction:column;gap:16px;}
.event-info-card{background-color:white;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);}
.info-card-title{font-size:16px;font-weight:700;margin-bottom:16px;color:var(--text-primary);}
.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.info-item{display:flex;flex-direction:column;gap:4px;}
.info-label{font-size:12px;color:var(--text-muted);}
.info-value{font-size:14px;font-weight:500;color:var(--text-primary);}
.badge-count{background-color:#eee;font-size:10px;padding:2px 6px;border-radius:4px;margin-left:4px;color:var(--text-secondary);}
.sport-types-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.sport-card{background-color:white;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;display:flex;align-items:center;justify-content:space-between;}
.sport-badge{background-color:rgba(229,57,53,0.1);color:var(--primary);font-size:12px;font-weight:700;padding:4px 8px;border-radius:4px;}
.sport-count{font-size:13px;color:var(--text-secondary);font-weight:500;}
/* Bracket Section */
.bracket-controls{margin-bottom:16px;}
.bracket-select{width:100%;padding:10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:14px;background-color:white;}
.bracket-scroll-container{overflow-x:auto;padding-bottom:16px;-webkit-overflow-scrolling:touch;}
.bracket-container{display:flex;gap:40px;min-width:max-content;padding:20px 0;}
.bracket-round{display:flex;flex-direction:column;justify-content:space-around;gap:20px;min-width:160px;}
.bracket-match{background-color:white;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px;box-shadow:0 2px 4px rgba(0,0,0,0.05);position:relative;min-height:60px;display:flex;flex-direction:column;justify-content:center;}
.bracket-match::after{content:'';position:absolute;right:-20px;top:50%;width:20px;height:1px;background-color:var(--border);display:none;/* Hidden by default, shown via JS or specific CSS logic if needed */}
/* Simple connector logic for demo */
.bracket-round:not(:last-child).bracket-match{position:relative;}
.bracket-round:not(:last-child).bracket-match::after{content:'';position:absolute;right:-20px;/* Half of gap */
top:50%;width:20px;height:2px;background-color:var(--border);display:block;}
.match-player{display:flex;justify-content:space-between;font-size:12px;padding:4px 0;}
.match-player.winner{font-weight:700;color:var(--primary);}
.match-score{font-weight:600;color:var(--text-secondary);}
.match-player.winner .match-score{color:var(--primary);}
.placeholder-content{text-align:center;padding:40px 0;color:var(--text-muted);font-size:14px;}
/* ===== STYLE PRIORITY OVERRIDES ===== */
body .page .card{padding:0;margin-bottom:0;}

body .page .section-title{margin-bottom:0;padding-left:0;color:inherit;}
body .page .section-title::before{display:none;content:none;}
body .page .section-header{margin-bottom:0;padding:0;}
body .page .header-logo img{width:100%;height:100%;object-fit:contain;}
body .page .hero{position:relative;height:264px;padding:0;overflow:hidden;background:url(/images/figma/hero-bg.png) no-repeat center center / auto,linear-gradient(123deg,rgba(0,104,183,0.50)0%,rgba(152,0,52,0.50)100%),var(--ranking-bg);text-align:center;}
body .page .hero_stage{position:relative;width:360px;height:264px;margin:0 auto;overflow:hidden;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 10%,#000 90%,transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 10%,#000 90%,transparent 100%);}
body .page .hero_bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;user-select:none;}
body .page .hero_slides{position:absolute;inset:0;}
body .page .hero_slide{position:absolute;inset:0;opacity:0;transition:opacity 1.5s ease;}
body .page .hero_slide.is-active{opacity:1;transition:opacity 1.5s ease;}
/* 인물 슬라이드 배경 — 모바일/공통(cover). PC(오버레이·mask·크기·위치)는 pc-main.css .page-home @media에서 재정의 */
body .page .hero_slide-1{background:url(/images/figma/hero-person-1.png) no-repeat center/cover;}
body .page .hero_slide-2{background:url(/images/figma/hero-person-2.png) no-repeat center/cover;}
body .page .hero_slide-3{background:url(/images/figma/hero-person-3.png) no-repeat center/cover;}
body .page .hero_slide-4{background:url(/images/figma/hero-person-4.png) no-repeat center/cover;}
body .page .hero_slide-5{background:url(/images/figma/hero-person-5.png) no-repeat center/cover;}
body .page .hero_slide-6{background:url(/images/figma/hero-person-6.png) no-repeat center/cover;}
body .page .hero_overlay{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,27,52,0.2)0%,var(--ranking-bg) 100%);}
body .page .hero_content{position:absolute;left:0;right:0;bottom:16px;display:flex;flex-direction:column;align-items:center;padding:0 16px;text-align:center;}
body .page .hero_brand{display:block;height:16px;width:auto;}
body .page .hero_title{margin:10px 0;width:100%;text-align:center;color:#fff;}
body .page .hero_title img{display:block;margin:0 auto;}
body .page .hero_desc{margin:0;font-family:var(--font-kr);font-weight:400;font-size:12px;line-height:14px;letter-spacing:-0.12px;color:#fff;opacity:0.5;}
body .page .loading-state{color:rgba(255,255,255,0.55);}
body .page .result-count{color:rgba(255,255,255,0.6);}
/* ===== 선수 검색 페이지 (Figma 4923/4924/4925) ===== */
.search-page{padding-top:90px;color:var(--ranking-white); flex:1}
/* 검색 상단은 .page-hero/.page-hero_title 공통 사용 (구 .search-panel/_title 제거) */
/* 검색 부문탭은 .page-tabs 공통으로 통합 (구 .search-tabs 제거) */
.search-bar{padding:0;}  /* 위 간격·좌우16은 .page-hero가 담당 (검색 전용 add-on) */
.search-result{margin-top:24px;display:flex;flex-direction:column;gap:16px;padding:0 16px 120px;}
.search-result_count{padding-bottom:16px;font-size:14px;line-height:18px;}
.search-result_count span{font-weight:400;}
.search-result_count strong{font-weight:700;}
.search-empty{display:flex;flex-direction:column; align-items: center;gap:4px;padding-top:40px;}
.search-empty_title{font-size:16px;font-weight:700;line-height:20px;color:var(--ranking-white);}
.search-empty_desc{font-size:14px;font-weight:400;line-height:18px;color:#c9cdd2;}
.search-list{display:flex;flex-direction:column;}
.search-card_link{display:flex;align-items:center;gap:16px;padding:16px 0;}
.search-card_info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
.search-card_name{font-size:16px;font-weight:700;line-height:20px;color:var(--ranking-white);}
.search-card_meta{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:400;line-height:14px;color:var(--ranking-white);white-space:nowrap;overflow:hidden;}
.search-card_meta .is-dim{color:rgba(255,255,255,0.58);}
.search-card_div{flex-shrink:0;width:1px;height:10px;background:var(--ranking-points-sep);}
.search-card_points{flex-shrink:0;font-size:14px;font-weight:700;line-height:18px;color:var(--ranking-white);}
/* 종목 줄 안에 들어간 포인트는 그 줄 우측 끝으로 (카드 우측 총점 자리를 대신한다) */
.search-card_meta .search-card_points{margin-left:auto;}
/* ===== 선수 상세 페이지 (Figma 4926) ===== */ /* 히어로 (개요/통계/대회기록 탭 공통) */
.player-hero{position:relative;overflow:hidden;padding:90px 16px 40px;background:url(/images/figma/bg.png) no-repeat center center / cover,var(--ranking-bg);}
.player-hero_stage{display:none;position:absolute;inset:0;width:360px;margin:0 auto;overflow:hidden;}
.player-hero_bg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;user-select:none;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 10%,#000 90%,transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 10%,#000 90%,transparent 100%);}
.player-hero_inner{position:relative;display:flex;flex-direction:column;align-items:center;gap:16px;}
.player-hero_avatar{flex-shrink:0;width:98px;height:98px;border-radius:50%;padding:2px;background:linear-gradient(135deg,#003fff,#da0a3e);}
.player-hero_avatar img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;background:var(--ranking-avatar-photo-bg);}
.player-hero_avatar img.is-default{object-fit:contain;object-position:bottom center;background:var(--ranking-avatar-photo-bg);}
.player-hero_id{display:flex;flex-direction:column;align-items:center;gap:8px;}
.player-hero_name{font-size:24px;font-weight:700;line-height:28px;letter-spacing:-0.48px;color:#ffffff;text-align:center;}
.player-hero_meta{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:400;line-height:20px;letter-spacing:-0.32px;color:#ffffff;}
.player-hero_meta-div{display:block;width:1px;height:12px;background:#9ea4aa;}
/* 탭 바 (개요/통계/대회기록 탭 공통) */
.player-tabs{display:flex;background:var(--ranking-bg);padding:0 16px;}
.player-tabs_item{flex:1;text-align:center;padding-bottom:8px;font-size:18px;font-weight:400;line-height:22px;letter-spacing:-0.36px;color:#9ea4aa;border-bottom:3px solid transparent;}
.player-tabs_item.is-active{font-weight:700;color:#ffffff;border-bottom-color:#ffffff;}
/* 현재 랭킹 (라운드 카드 2x2) */
.player-rank{display:flex;flex-direction:column;gap:16px;background:#ffffff;padding:24px 16px 40px;}
.player-rank_title{font-size:18px;font-weight:700;line-height:22px;letter-spacing:-0.36px;color:#1b1d1f;}
.player-rank_grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
/* 합산 포인트 카드 제거(개선요청 C-1)로 카드가 3개(홀수)가 됐다.
   모바일 2열에서 마지막 카드가 혼자 남으면 위 2칸 너비로 늘려 여백을 없앤다. */
.player-rank_grid .player-rank-card:last-child:nth-child(odd){grid-column:1 / -1;}
.player-rank-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;background:#f2f5f9;border-radius:8px;}
.player-rank-card_label{display:flex;align-items:center;justify-content:space-between;width:100%;font-size:14px;font-weight:600;line-height:18px;letter-spacing:-0.14px;color:#1b1d1f;}
.player-rank-card_label .rankChange{align-items:center;line-height:normal;}
.player-rank-card_label .rankChange.is-up{color:#c00023;}
.player-rank-card_label .rankChange.is-down{color:#1558d4;}
.player-rank-card_rank{font-size:16px;font-weight:700;line-height:20px;color:#114267;}
.player-rank-card_rank strong{font-size:24px;font-weight:900;line-height:1.19;}
.player-rank-card_points{font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.12px;color:#9ea4aa;}
/* 랭킹 추이 (인라인 SVG 라인차트) */
/* ★섹션 순서: 최근 포인트 내역 → 랭킹 추이. 추이가 마지막이라 페이지 하단여백(120)을 여기서 준다 */
.player-trend{display:flex;flex-direction:column;gap:16px;background:#ffffff;padding:40px 16px 120px;}
.player-trend_title{font-size:18px;font-weight:700;line-height:22px;letter-spacing:-0.36px;color:#1b1d1f;}
.player-trend_tabs{display:flex;gap:8px;}
.player-trend_tab{flex:1;padding:9px 16px;border-radius:24px;background:#f7f8f9;font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:#1b1d1f;}
.player-trend_tab.is-active{background:var(--ranking-bg);color:#ffffff;}
.player-trend_chart{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;}
.player-trend_chart::-webkit-scrollbar{display:none;}
.player-trend_empty{display:flex;align-items:center;justify-content:center;height:206px;text-align:center;font-size:14px;line-height:18px;color:#9ea4aa;background:#f7f8f9;border-radius:16px;}
.player-trend_ranges{display:flex;gap:16px;}
.player-trend_range{flex:1;padding:6px 24px;border-radius:24px;background:transparent;font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.12px;color:#454c53;border:none;cursor:pointer;}
.player-trend_range.is-active{background:#f2f6fa;color:#1b1d1f;}
.player-trend_legend{display:flex;align-items:center;gap:8px;}
.player-trend_legend.is-hidden{display:none;}
.player-trend_legend-icon{flex-shrink:0;}
.player-trend_legend-text{font-size:12px;font-weight:400;line-height:14px;letter-spacing:-0.12px;color:#9ea4aa;}
/* 최근 포인트 내역 */
.player-points{display:flex;flex-direction:column;gap:16px;background:#ffffff;padding:40px 16px;}
.player-points_title{font-size:18px;font-weight:700;line-height:22px;letter-spacing:-0.36px;color:#1b1d1f;}
/* 종목 선택 드롭다운 (개선요청 C-2) — 제목 영역 우측 */
.player-points_head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
/* 제목 아래 여백은 head 가 갖는다(드롭다운과 세로 중앙 정렬) */
.player-ev-recent .player-points_head{margin-bottom:16px;}
.player-points_select{position:relative;flex:none;}
.player-points_select-input{appearance:none;-webkit-appearance:none;padding:6px 26px 6px 10px;border:1px solid #e8ebed;border-radius:6px;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%235b6166' stroke-width='1.4' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 10px center;font-size:13px;line-height:16px;color:#1b1d1f;cursor:pointer;}
.player-points_select-input:focus{outline:none;border-color:#9ea4aa;}
/* 종목 선택 탭 — 랭킹 추이 탭(.player-trend_tab)과 같은 모양. 클래스를 따로 두는 이유는
   추이 스크립트가 .player-trend_tab 을 문서 전체에서 집어가기 때문이다(같은 클래스를 쓰면 차트가 깨진다). */
/* 모바일: 제목 아래 풀폭 한 줄(랭킹 추이와 동일). PC 에서 제목 옆으로 되돌린다 */
.player-points_head--tabs{flex-direction:column;align-items:stretch;gap:16px;}
.player-points_tabs{display:flex;gap:8px;}
.player-points_tab{flex:1;padding:9px 16px;border-radius:24px;background:#f7f8f9;font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:#1b1d1f;white-space:nowrap;cursor:pointer;}
.player-points_tab.is-active{background:var(--ranking-bg);color:#ffffff;}
.player-points_empty{padding:40px 0;text-align:center;font-size:14px;color:#9ea4aa;}
/* 종목 전환 시 토글 (이 프로젝트는 .is-hidden 을 요소별로 정의한다) */
.player-points_empty.is-hidden,.player-points_list.is-hidden,.player-points_more.is-hidden{display:none;}
.player-points_list{display:flex;flex-direction:column;}

/* 배지는 본문 흐름에 끼지 않는다 — 왼쪽 여백을 padding 으로 비우고 그 자리에 절대배치한다.
   덕분에 기존 flex 레이아웃(대회명/메타/포인트 스택)을 그대로 둘 수 있다. */
/* 모바일은 원래 세로 스택 그대로. 등급 배지는 메타줄 인라인 칩이라 별도 여백이 필요 없다.
   PC 에서만 배지를 좌측 원형으로 빼면서 item 에 padding-left 를 준다. */
.player-points_item{position:relative;display:flex;flex-direction:column;gap:16px;padding:16px 0;border-bottom:1px solid #e8ebed;}
/* 등급 배지(L1/L2) — 시안 Figma 4022:605 는 PC 54px. 모바일 시안이 없어 36px 축소판으로 둔다. */
/* 등급 배지(L1/L2) — 모바일은 메타줄에서 종목 왼쪽 인라인 칩. PC 는 아래 미디어쿼리에서 좌측 원형(absolute)으로 바꾼다. */
.player-points_badge{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:16px;padding:0 5px;box-sizing:border-box;border-radius:8px;background:#e8ebed;font-size:11px;font-weight:900;line-height:1;letter-spacing:0;color:#1b1d1f;}
/* 단체전 행: 클릭하면 상세가 펼쳐지므로 hover 시 대회명에 밑줄로 눌림 가능함을 알린다.
   ★클릭 이벤트가 늘어나도 이 표시는 그대로 쓴다(판정은 종목 6·7 = .is-team). */
.player-points_item.is-team{cursor:pointer;}
/* 터치 기본값: 밑줄을 '상시' 노출해 눌러서 펼칠 수 있는 줄임을 알린다.
   ★터치에서 :hover 를 쓰면 탭한 뒤에도 스타일이 눌어붙는다(sticky hover) → hover 는 아래 hover 가능 기기 전용 블록에서만 준다. */
.player-points_item.is-team .player-points_name{text-decoration:underline;text-decoration-color:#c9cdd2;text-underline-offset:3px;}
/* 누르는 순간 피드백(터치·마우스 공통) */
.player-points_item.is-team:active{background:#f7f8f9;}
/* 펼친 상태에서는 '더 볼 게 있다'는 안내가 필요 없으므로 밑줄을 거둔다 */
.player-points_item.is-team.is-open .player-points_name{text-decoration:none;}
@media (hover:hover) and (pointer:fine){
  /* 마우스 환경: 평소엔 깔끔하게 두고 hover 에서만 시안대로 굵게+밑줄 */
  .player-points_item.is-team .player-points_name{text-decoration:none;}
  .player-points_item.is-team:hover .player-points_name{font-weight:700;text-decoration:underline;text-decoration-color:currentColor;}
}
.player-points_item:last-child{border-bottom: none;}
.player-points_info{display:flex;flex-direction:column;gap:8px;min-width:0;}
.player-points_name{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:16px;font-weight:400;line-height:20px;letter-spacing:-0.32px;color:#1b1d1f;}
.player-points_meta{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:400;line-height:14px;letter-spacing:-0.12px;color:#9ea4aa;}
.player-points_disc{font-weight:700;}
.player-points_div{display:block;width:1px;height:10px;background:#e8ebed;flex-shrink:0;}
.player-points_result{display:flex;align-items:center;gap:8px;}
/* 단체전 상세 토글 (개선요청 C-4) — 행 클릭 시 참가/출전/승리 노출.
   화살표 교체 방식은 랭킹 룰카드(.ranking-rule-card_arrow)와 동일 */
.player-points_item.is-expandable{cursor:pointer;}
/* ── 단체전 상세 말풍선 (시안 Figma 4067:822 꼭지위 / 4067:832 꼭지아래) ──
   카드 360×auto, 안쪽 24 패딩, radius 16, 흰 배경 + 1px 그라데이션 테두리(#0040FF→#DB0B3F 대각).
   그라데이션 테두리는 border-image 대신 이중 background + background-clip 으로 낸다(radius 유지 목적). */
.player-points_pop{position:absolute;z-index:20;left:0;top:calc(100% + 10px);
  text-decoration:none;font-weight:400;text-align:left;
  width:min(360px, calc(100vw - 32px));box-sizing:border-box;padding:24px;border-radius:16px;
  border:1px solid transparent;
  background-image:linear-gradient(#fff,#fff),linear-gradient(135deg,#0040ff 0%,#db0b3f 100%);
  background-origin:border-box;background-clip:padding-box,border-box;
  box-shadow:0 4px 16px rgba(0,0,0,0.24);cursor:default;}
.player-points_pop.is-hidden{display:none;}
/* 꼭지: 같은 그라데이션 테두리를 쓰기 위해 45° 회전한 정사각형으로 만든다.
   카드 쪽 두 변은 카드 배경에 가려지고 바깥 두 변만 보인다. */
.player-points_pop::before{content:"";position:absolute;left:calc(50% - 7px);width:14px;height:14px; border-radius: 3px 0 0 0;
  background-image:linear-gradient(#fff,#fff),linear-gradient(135deg,#0040ff 0%,#db0b3f 100%);
  background-origin:border-box; background-clip:padding-box,border-box;
  border:1px solid transparent;transform:rotate(45deg);z-index:19}
.player-points_pop::before{top:-8px;clip-path:polygon(0 0,100% 0,0 100%);}   /* 기본: 꼭지 위(카드가 행 아래에 뜸) */
/* 위 공간이 부족하면 JS 가 is-above 를 붙여 카드를 행 위로 올리고 꼭지를 아래로 돌린다 */
.player-points_pop.is-above{top:auto;bottom:calc(100% + 10px);}
.player-points_pop.is-above::before{top:auto;bottom:-8px;clip-path:polygon(100% 0,100% 100%,0 100%);}
.player-points_pop-title{padding-bottom:16px;border-bottom:1px solid #e8ebed;
  font-size:16px;font-weight:700;line-height:20px;letter-spacing:-0.32px;color:#1b1d1f;}
.player-points_pop-row{display:flex;align-items:center;gap:10px;margin-top:16px;}
.player-points_pop-label{flex:1 1 auto;min-width:0;font-size:14px;font-weight:400;line-height:18px;letter-spacing:-0.14px;color:#454c53;}
.player-points_pop-value{flex:none;text-align:right;font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:#454c53;}
.player-points_value{flex-shrink:0;font-size:14px;font-weight:900;line-height:18px;letter-spacing:-0.14px;color:#124368;}
.player-points_more{display:flex;align-items:center;justify-content:center;gap:4px;padding:9px 16px;border-radius:24px;background:#f7f8f9;font-size:14px;font-weight:700;line-height:18px;color:#1b1d1f;}
.player-points_more-arrow{width:8px;height:8px;display:block;}
/* 개요 섹션 디바이더 (컨테이너 배경=디바이더색 + 섹션 margin-bottom) */
.pp-tab-content{background:#f7f8f9;}
.player-rank,.player-points{margin-bottom:8px;}   /* 디바이더는 뒤에 섹션이 남은 쪽이 갖는다(추이가 마지막) */
.player-stats-summary{display:flex;flex-direction:column;gap:24px;background:#fff;padding:24px 16px 24px;}
.player-switch{display:flex;padding:4px;background:#f7f8f9;border-radius:40px;}
.player-switch_btn{flex:1;padding:8px 16px;border-radius:24px;font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;color:#1b1d1f;text-align:center;}
.player-switch_btn.is-active{background:#fff;box-shadow:0 2px 6px rgba(12,29,59,0.1);}
.player-stats_graph{background:#fff;padding:24px 16px 40px 16px;margin-bottom:8px;}
.player-stats_graph.is-hidden{display:none;}
.player-trend.is-hidden,.player-points.is-hidden{display:none;}
.player-points[data-stats-view="history"]{padding:24px 16px 40px 16px;}   /* 히스토리 뷰 첫 섹션 */
.player-stats_placeholder{padding:40px 0;text-align:center;font-size:14px;color:#9ea4aa;}
.player-winrate{display:flex;flex-direction:column;gap:16px;}
.player-winrate_title{font-size:18px;font-weight:700;line-height:22px;letter-spacing:-0.36px;color:#1b1d1f;}
.player-winrate_body{display:flex;align-items:center;gap:40px;padding:16px 16px 0;}
.player-donut{position:relative;width:128px;height:128px;flex-shrink:0;}
.player-donut svg{display:block;}
.player-donut_center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.player-donut_center strong{font-size:28px;font-weight:900;line-height:34px;color:#1b1d1f;}
.player-donut_center span{font-size:14px;font-weight:400;line-height:18px;letter-spacing:-0.14px;color:var(--ranking-change-same);}
.player-winrate_legend{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0;}
.player-winrate_total{display:flex;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid #e8ebed;font-size:16px;font-weight:400;line-height:20px;letter-spacing:-0.32px;color:var(--ranking-change-same);}
.player-winrate_row{display:flex;align-items:center;gap:10px;}
.player-winrate_dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;}
.player-winrate_dot.is-win{background:#094c7e;}
.player-winrate_dot.is-loss{background:#dbe2e9;}
.player-winrate_label{font-size:16px;font-weight:400;line-height:20px;letter-spacing:-0.32px;color:#1b1d1f;}
.player-winrate_val{margin-left:auto;font-size:16px;font-weight:700;line-height:20px;letter-spacing:-0.32px;color:#1b1d1f;}
.player-category{display:flex;flex-direction:column;gap:0;background:#fff;padding:40px 16px 120px;}
.player-category.is-hidden{display:none;}
.player-category_title{font-size:18px;font-weight:700;line-height:22px;letter-spacing:-0.36px;color:#1b1d1f;margin-bottom:16px;}
.player-catrate_row{display:flex;flex-direction:column;gap:10px;padding:16px 0;}
.player-catrate_label{display:flex;align-items:center;gap:8px;font-size:14px;line-height:18px;letter-spacing:-0.14px;}
.player-catrate_name{font-weight:600;color:var(--ranking-change-same);}
.player-catrate_wl{margin-left:auto;font-weight:600;color:var(--ranking-change-same);}
.player-catrate_pct{font-weight:700;color:#124368;}
.player-catrate_track{height:8px;background:#dbe2e9;border-radius:22px;}
.player-catrate_fill{height:8px;background:#124368;border-radius:24px;}
/* ── events 탭 (대회기록) ── */
.player-stats-summary{padding:24px 16px 0;}
.player-ev-rank-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:16px;}
.player-ev-rank-grid.is-hidden,.player-ev-stat-row.is-hidden,.player-ev-recent.is-hidden{display:none;}
.player-ev-rank-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;background:#f4f8fc;border-radius:0;}
.player-ev-rank-card_label{display:flex;align-items:center;justify-content:space-between;width:100%;font-size:14px;font-weight:600;line-height:18px;letter-spacing:-0.14px;color:#1b1d1f;}
.player-ev-rank-card_rank{font-size:16px;font-weight:700;line-height:20px;color:#1b1d1f;}
.player-ev-rank-card_rank strong{font-size:28px;font-weight:900;line-height:34px;}
.player-ev-rank-card_points{font-size:12px;font-weight:700;line-height:14px;letter-spacing:-0.12px;color:var(--ranking-change-same);}
.player-ev-stat-row{display:flex;align-items:stretch;gap:0;padding:24px 16px 40px;background:#fff;margin-bottom:8px;}
.player-ev-stat-cell{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;}
.player-ev-stat-div{width:1px;background:#dbe2e9;margin:4px 0;}
.player-ev-stat-label{font-size:14px;font-weight:600;line-height:18px;color:var(--ranking-change-same);}
.player-ev-stat-num{font-size:24px;font-weight:900;line-height:29px;color:#1b1d1f;}
.player-ev-stat-unit{font-size:16px;font-weight:700;margin-left:2px;color:#1b1d1f;}
.player-ev-recent{background:#fff;padding:24px 16px 120px;}
.player-ev-recent_title{font-size:18px;font-weight:700;line-height:22px;letter-spacing:-0.36px;color:#1b1d1f;}
.player-ev-recent-list{display:flex;flex-direction:column;gap:12px;}
.player-ev-recent-item{display:flex;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid #f7f8f9;}
.player-ev-recent-item:last-child{border-bottom:none;}
.player-ev-badge{flex-shrink:0;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;line-height:14px;}
.player-ev-badge-win{background:linear-gradient(135deg,#364f8a 0%,var(--ranking-bg) 100%);color:#ffffff;}
.player-ev-badge-runner{background:#d8dce7;color:var(--ranking-change-same);}
.player-ev-badge-plain{background:#f6f6f6;color:var(--ranking-change-same);}
.player-ev-recent-info{flex:1;min-width:0;}
.player-ev-recent-name{font-size:16px;font-weight:400;line-height:20px;color:#1b1d1f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.player-ev-recent-sub{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:12px;color:#9ea4aa;}
.player-ev-recent-subdiv{width:1px;height:10px;background:#e8ebed;}
.player-ev-recent-level{font-weight:700;color:#9ea4aa;}
.player-ev-recent-date{font-weight:400;color:#9ea4aa;}
/* 요약 카드 종목 표기 (개선요청 C-5) — 태그 스타일은 history 탭과 공유 */
.player-ev-recent-sports{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;}
.player-ev-recent-sport{display:inline-flex;align-items:center;gap:4px;}
.player-ev-recent-sport-point{font-size:12px;font-weight:700;color:#1b1d1f;}
.player-ev-recent-list.is-hidden{display:none;}
/* 대회 총 획득 포인트 (개선요청 C-5) — info(flex:1) 다음이라 우측 끝단에 붙는다 */
.player-ev-recent-point{flex:none;font-size:14px;font-weight:700;line-height:18px;color:#1b1d1f;white-space:nowrap;}
/* sub-content: details/history 패널 */
.pp-sub-content{background:#fff;padding:0 0 120px;}
.pp-sub-content.is-hidden{display:none;}
/* 등급별 참가 현황 (4930 상세통계 2-3-3) */
.player-ev-grade{padding:24px 16px 40px;background:#fff;margin-bottom:8px;}
.player-ev-grade.is-hidden{display:none;}
.player-ev-grade_title{font-size:18px;font-weight:700;line-height:22px;color:#1b1d1f;margin-bottom:16px;}
.player-ev-grade-list{display:flex;flex-direction:column;}
.player-ev-grade-item{display:flex;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid #f7f8f9;}
.player-ev-grade-item:last-child{border-bottom:none;}
.player-ev-grade-badge{flex-shrink:0;width:48px;height:48px;border-radius:50%;background:var(--ranking-bg);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;line-height:18px;color:#fff;}
.player-ev-grade-text{display:flex;flex-direction:column;gap:4px;}
.player-ev-grade-participated{font-size:16px;font-weight:400;line-height:20px;color:#1b1d1f;}
.player-ev-grade-wins{font-size:16px;font-weight:700;line-height:20px;color:#1b1d1f;}
/* 분기별 획득 포인트 (4930 상세통계 2-5) */
.player-ev-quarter{padding:40px 16px 120px;background:#fff;}
.player-ev-quarter.is-hidden{display:none;}
.player-ev-quarter_title{font-size:18px;font-weight:700;line-height:22px;color:#1b1d1f;margin-bottom:16px;}
.player-ev-quarter-list{display:flex;flex-direction:column;}
.player-ev-quarter-item{display:flex;flex-direction:column;gap:10px;padding:16px 0;border-bottom:1px solid #f7f8f9;}
.player-ev-quarter-item:last-child{border-bottom:none;}
.player-ev-quarter-row{display:flex;align-items:center;justify-content:space-between;}
.player-ev-quarter-label{font-size:14px;font-weight:600;line-height:18px;color:var(--ranking-change-same);}
.player-ev-quarter-val{font-size:14px;font-weight:700;line-height:18px;color:#124368;}
.player-ev-quarter-track{height:8px;background:#dbe2e9;border-radius:22px;overflow:hidden;}
.player-ev-quarter-fill{height:100%;background:#124368;border-radius:24px;}
.player-ev-history-header{display:flex;align-items:center;justify-content:space-between;padding:24px 16px 16px 16px;}
/* 대회 참여 기록: 헤더를 탭 방식(.player-points_head--tabs)으로 바꾸면서 기존 헤더의 여백을 그대로 이어받는다.
   리스트(.player-ev-history-list)가 padding:0 16px 이라 헤더도 좌우 16 이 필요하다. */
.pp-sub-content .player-points_head--tabs{padding:24px 16px 0 16px;margin-bottom:16px;}
.player-ev-history-header_title{font-size:18px;font-weight:700;line-height:22px;color:#1b1d1f;}
.player-ev-history-header_icon{flex-shrink:0;}
.player-ev-history-list{display:flex;flex-direction:column;padding:0 16px;}
.player-ev-history-card{padding:16px 0;border-bottom:1px solid #f7f8f9;}
.player-ev-history-card:last-child{border-bottom:none;}
.player-ev-history-card.is-hidden{display:none;}
.player-ev-history-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px;}
.player-ev-history-tag{display:inline-flex;align-items:center;border-radius:24px;padding:5px 12px;font-size:12px;font-weight:700;line-height:14px;color:var(--ranking-change-same);}
.player-ev-history-tag-sport{background:#e8ebed;}
.player-ev-history-tag-sub{background:#dde2e6;}
.player-ev-history-tag-rank{background:#e8ebed;}
.player-ev-history-tag-participant{background:#f7f8f9;}
.player-ev-history-tag-type{background:#f7f8f9;}
.player-ev-history-name{font-size:16px;font-weight:400;line-height:20px;color:#1b1d1f;margin-bottom:4px;}
.player-ev-history-date{font-size:12px;font-weight:400;line-height:16px;color:#8b95a1;margin-bottom:16px;}
.player-ev-history-points{font-size:14px;font-weight:900;line-height:18px;color:#124368;}
.player-ev-history-more{display:flex;align-items:center;justify-content:center;width:calc(100% - 32px);margin:16px 16px 120px;background:#f7f8f9;border-radius:24px;padding:9px 16px;font-size:14px;font-weight:700;line-height:18px;color:#1b1d1f;border:none;cursor:pointer;}
.player-ev-history-more.is-hidden{display:none;}
/* 대회 참여 기록 페이지네이션 — 랭킹 ul.pagination(Helper_Page) 재사용, 라이트 배경이라 비활성 색/화살표 조정 */
.pp-history-pagination{margin:24px 16px 120px;}
.pp-history-pagination ul.pagination li:not(.active){color:var(--ranking-change-same);}
/* 화살표 SVG가 흰색(다크배경용)이라 라이트 배경에선 어둡게 반전 — arrow 공통 클래스 .pg-arw */
.pp-history-pagination .pg-arw{filter:brightness(0);}
.player-ev-history-card.is-hidden,.player-ev-history-card.is-filtered-out{display:none;}
.pp-empty-state.is-hidden{display:none;}
.player-ev-filter[hidden]{display:none;}
.player-ev-filter{position:fixed;inset:0;z-index:100;}
.player-ev-filter_dim{position:absolute;inset:0;background:rgba(0,0,0,0.8);}
.player-ev-filter_sheet{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:100%;max-width:540px;display:flex;flex-direction:column;padding:16px;background:#fff;border-radius:16px 16px 0 0;}
.player-ev-filter_handle{align-self:center;width:48px;height:4px;border-radius:2px;background:var(--gray-100,#E8EBED);cursor:pointer;}
.player-ev-filter_cols{display:flex;gap:16px;padding:24px 0 40px;}
.player-ev-filter_col{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px;}
.player-ev-filter_divider{flex-shrink:0;width:1px;align-self:stretch;background:#f7f8f9;}
.player-ev-filter_opt{display:flex;align-items:center;gap:8px;height:24px;padding:0;background:none;border:none;cursor:pointer;}
.player-ev-filter_radio{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#e8ebed;}
.player-ev-filter_radio::after{content:"";width:8px;height:8px;border-radius:50%;background:#c9cdd2;}
.player-ev-filter_opt.is-selected .player-ev-filter_radio{background:#007aff;}
.player-ev-filter_opt.is-selected .player-ev-filter_radio::after{background:#fff;}
.player-ev-filter_label{font-size:16px;font-weight:400;line-height:20px;color:#1b1d1f;}
.player-ev-filter_opt.is-selected .player-ev-filter_label{font-weight:700;}
.avatar-default img{object-fit:contain;object-position:bottom center;}
.player-hero_avatar-default img{object-fit:contain;object-position:bottom center;background:var(--ranking-avatar-bg);}
.player-ev-filter_confirm{display:flex;align-items:center;justify-content:center;height:48px;border:none;border-radius:60px;background:#1b1d1f;color:#fff;font-size:16px;font-weight:700;line-height:20px;cursor:pointer;}
.eventFilter{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;}
.eventFilter::-webkit-scrollbar{display:none;}
.eventChip{display:inline-flex;flex-shrink:0;justify-content:center;align-items:center;min-height:28px;padding:7px 12px;border-radius:24px;font-size:12px;font-weight:700;line-height:14px;color:#c9cdd2;}
.eventChip.is-active{background:#fff;color:#1b1d1f;box-shadow:0 2px 6px rgba(12,29,59,0.1);}
.card.is-unified .cardBody{padding-bottom:0;}
.card.is-unified .row:first-child{padding:0 0 8px;}
.card.is-unified .row+.row{padding:8px 0;}
.card.is-unified .row:last-child{padding:8px 0 24px;}
.card.is-unified.is-pairs .row{min-height:72px;}
.card.is-unified.is-pairs .row:first-child{padding:0 0 12px;}
.card.is-unified.is-pairs .row+.row{padding:12px 0;}
.card.is-unified.is-pairs .row:last-child{padding-bottom:0;}

/* ============================================================
   PC 반응형 통합 (기존 pc-common/main/ranking/search/player/team/info.css 흡수, 2026-07-01)
   각 규칙은 페이지 클래스(.page-home/.page-ranking/.page-search/.team-page) 스코핑 → 페이지별로만 적용
   ============================================================ */
/* ============================================================
   PC(데스크탑) 공통 헤더 — 모든 페이지 공용 (header.php가 항상 로드)
   원칙: 모바일 무훼손. @media(min-width:1024px) 한정 오버라이드만.
   헤더 바는 100% 풀폭, 로고~nav 콘텐츠만 960 중앙 유지.
   ============================================================ */
/* PC 가로 네비 — 모바일은 숨김(햄버거 사용) */
.page .pc-nav { display: none; }

/* ── PC 전용 요소 기본 숨김(모바일 무훼손) — 아래 단일 @media(min-width:1024px)에서 노출 ── */
/* 홈: 1줄 행 인라인 소속 / 하단 3카드(선발전) */
.page-home .playerOrg { display: none; }
.page-home .pair-player-org { display: none; }   /* 페어 PC 1줄 인라인 소속 — 모바일 숨김(모바일은 pair-player-meta 사용) */
.page-home .utility-card-pc-only { display: none; }
.page-home .utility-card-icon.is-selection { background-image: url(/images/figma/main-selection.png); background-size: cover; }
/* 선수상세: 인라인 성적 / 히스토리 필터 모달 X·닫기 */
.player-points_rank-pc { display: none; }
.player-ev-filter_close, .player-ev-filter_cancel { display: none; }
/* 팀랭킹: 카드 헤더 포인트/구분선/전체선수보기 / 모달 하단 닫기 */
.team-card-meta-pts-pc, .team-card-meta-divider-pc, .team-card-all-btn-pc { display: none; }
.team-modal-footer-btn { display: none; }

/* ============================================================
   PC(데스크탑) 반응형 — 단일 @media 통합(2026-07-01). 각 규칙은 페이지 클래스로 스코핑.
   ============================================================ */
@media (min-width: 1024px) {

  /* 헤더 바 100% 풀폭, 로고~nav 콘텐츠만 960 중앙(좌우 패딩=(100%-960)/2) */
  body .page .topBar { max-width: none; height: 80px; padding: 0 max(16px, calc((100% - 960px) / 2)); }
  body .page .topBar .menuButton { display: none; }
  /* 네비: 상하 패딩 30 → 네비(20h)+패딩60 = 80h, 헤더(80px) 내 세로 위치 */
  body .page .pc-nav { display: flex; align-items: center; gap: 32px; margin-left: auto; padding: 30px 0; }
  body .page .pc-nav-item {
    position: relative; font-size: 16px; font-weight: 400; letter-spacing: -0.32px;
    line-height: 20px; color: #fff; text-decoration: none;
  }
  /* 항목 사이 1×12 구분선 (#fff@0.2) */
  body .page .pc-nav-item + .pc-nav-item::before {
    content: ""; position: absolute; left: -12px; top: 50%; transform: translateY(-50%);
    width: 1px; height: 12px; background: rgba(255, 255, 255, 0.2);
  }

  /* ===== 메인(홈) — .page-home (Figma 3688:2361, spec docs/figma/pc-main/SPEC_pc-main_3688-2361.md).
     특이성: 모바일 `body .page .X` ↔ PC `body .page-home .X`(동일 특이성) + 뒤 로드로 PC 우선. ===== */

  /* ── 레이아웃 골격: 페이지 최대 1920 중앙, 콘텐츠 960 ── */
  body .page-home { max-width: none; }   /* 1920 제한 해제 → hero 배경 full-bleed(본문은 .home-rank-section 960 중앙 유지) */

  /* ── 히어로: 풀폭 1920 × 420 (스테이지 480 중앙) ── */
  body .page-home .hero { height: 420px; background: url(/images/figma/bg.png) no-repeat center center / cover, var(--ranking-bg); }
  body .page-home .hero_stage { width: 720px; height: 420px; -webkit-mask-image: none; mask-image: none; }
  body .page-home .hero_bg { display: none; }       /* stage 내 배경 이미지 숨김(bg.png 사용) */
  body .page-home .hero_overlay { display: none; }  /* PC는 hero_overlay 끔 */
  /* 인물 slide 자체에 그라데이션 오버레이 + 인물 알파 mask (::after 없이 hero_slide-N에 직접) — mask가 그라데이션+인물을 인물 실루엣으로 잘라 인물 안에서만 보임 */
  body .page-home .hero_slide { -webkit-mask-size: 600px; mask-size: 600px; -webkit-mask-position: center 20px; mask-position: center 20px; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; }
  body .page-home .hero_slide-1 { background: linear-gradient(180deg, rgba(14, 21, 36, 0) 45%, var(--ranking-bg) 100%), linear-gradient(180deg, rgba(0, 27, 52, 0.2) 0%, var(--ranking-bg) 100%), url(/images/figma/hero-person-1.png) center 20px/600px no-repeat; -webkit-mask-image: url(/images/figma/hero-person-1.png); mask-image: url(/images/figma/hero-person-1.png); }
  body .page-home .hero_slide-2 { background: linear-gradient(180deg, rgba(14, 21, 36, 0) 45%, var(--ranking-bg) 100%), linear-gradient(180deg, rgba(0, 27, 52, 0.2) 0%, var(--ranking-bg) 100%), url(/images/figma/hero-person-2.png) center 20px/600px no-repeat; -webkit-mask-image: url(/images/figma/hero-person-2.png); mask-image: url(/images/figma/hero-person-2.png); }
  body .page-home .hero_slide-3 { background: linear-gradient(180deg, rgba(14, 21, 36, 0) 45%, var(--ranking-bg) 100%), linear-gradient(180deg, rgba(0, 27, 52, 0.2) 0%, var(--ranking-bg) 100%), url(/images/figma/hero-person-3.png) center 20px/600px no-repeat; -webkit-mask-image: url(/images/figma/hero-person-3.png); mask-image: url(/images/figma/hero-person-3.png); }
  body .page-home .hero_slide-4 { background: linear-gradient(180deg, rgba(14, 21, 36, 0) 45%, var(--ranking-bg) 100%), linear-gradient(180deg, rgba(0, 27, 52, 0.2) 0%, var(--ranking-bg) 100%), url(/images/figma/hero-person-4.png) center 20px/600px no-repeat; -webkit-mask-image: url(/images/figma/hero-person-4.png); mask-image: url(/images/figma/hero-person-4.png); }
  body .page-home .hero_slide-5 { background: linear-gradient(180deg, rgba(14, 21, 36, 0) 45%, var(--ranking-bg) 100%), linear-gradient(180deg, rgba(0, 27, 52, 0.2) 0%, var(--ranking-bg) 100%), url(/images/figma/hero-person-5.png) center 20px/600px no-repeat; -webkit-mask-image: url(/images/figma/hero-person-5.png); mask-image: url(/images/figma/hero-person-5.png); }
  body .page-home .hero_slide-6 { background: linear-gradient(180deg, rgba(14, 21, 36, 0) 45%, var(--ranking-bg) 100%), linear-gradient(180deg, rgba(0, 27, 52, 0.2) 0%, var(--ranking-bg) 100%), url(/images/figma/hero-person-6.png) center 20px/600px no-repeat; -webkit-mask-image: url(/images/figma/hero-person-6.png); mask-image: url(/images/figma/hero-person-6.png); }
  body .page-home .hero_content { bottom: 40px; }
  body .page-home .hero_brand { height: 20px; }
  body .page-home .hero_title { margin: 12px 0 13px; }
  body .page-home .hero_title img { height: 36px; width: auto; }
  body .page-home .hero_desc { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }

  /* ── 콘텐츠 섹션: 960 중앙 (inner 928), pad T24 LR16 B160 (Frame 331) ── */
  body .page-home .home-rank-section { max-width: 960px; margin: 0 auto; padding: 24px 16px 160px; }

  /* ── 종목 탭바: 폰트 16 (활성 700/#fff · 비활성 400/#9ea4aa) (Frame 1091) ── */
  /* (A) 풀폭 분배(flex:1) → auto폭 + 가운데 모인 그룹, 탭 좌우 pad16 (시안) */
  body .page-home .event-tab-bar { justify-content: center; }
  body .page-home .event-tab { flex: 0 0 auto; padding: 0 16px; height: 30px; font-size: 16px; line-height: 20px; letter-spacing: -0.16px; }
  body .page-home .event-tab.is-active { font-weight: 700; color: #fff; }

  /* ── 카드: pad 36 · radius 24 (Frame 1031, bg #1a2233) ── */
  body .page-home .home-rank-card { padding: 36px; border-radius: 24px; margin-bottom: 24px; }

  /* ── 헤더행: 80h(컨텐츠56+padB24), 이벤트타이틀 24/400 lh28 · 갱신 16 (Frame 987) ── */
  body .page-home .ranking-header { min-height: 56px; padding-bottom: 24px; align-items: center; }
  body .page-home .ranking-header-left { gap: 8px; }
  body .page-home .ranking-event-title { font-size: 24px; line-height: 28px; letter-spacing: -0.48px; }
  body .page-home .ranking-update-label { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  body .page-home .ranking-update-date { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }

  /* 부문 탭(일반부/대학부): 컨테이너 178×46 r40 bg#fff@.1 pad4 · 버튼 85×38 r24 14/700 (Frame 263) */
  body .page-home .ranking-sub-tabs { height: 46px; padding: 4px; border-radius: 40px; box-sizing: border-box; }
  body .page-home .sub-tab { min-width: 85px; height: 38px; font-size: 14px; font-weight: 700; letter-spacing: -0.14px; border-radius: 24px; }

  /* ── 리스트 행: 1줄 레이아웃 (이름·소속 좌측 그룹 / 포인트 우측), 아바타 60 · 순위 28/900 ── */
  /* 행 간격: 행 92h 리듬 (Frame 850, gap16) */
  body .page-home .ranking-row { padding-top: 16px; padding-bottom: 16px; gap: 16px; }
  body .page-home .ranking-row:first-child { padding-top: 0; }
  body .page-home .ranking-row:last-child { padding-bottom: 0; }

  /* 순위: 44폭 · 28/900 (Frame 941) */
  body .page-home .ranking-row .rank { flex: 0 0 44px; }
  body .page-home .ranking-row .rankNum { font-size: 28px; line-height: 1; }
  /* 아바타 60 (Frame 942) */
  body .page-home .ranking-row .player { gap: 16px; }
  body .page-home .ranking-row .avatar { width: 60px; height: 60px; }

  /* 1줄: playerInfo는 단일 playerLine만 노출, 2줄 메타는 숨김 */
  body .page-home .ranking-row .playerInfo { flex-direction: row; align-items: center; }
  body .page-home .ranking-row .playerMeta { display: none; }
  body .page-home .ranking-row .playerLine { flex: 1; justify-content: flex-start; align-items: center; gap: 8px; }
  body .page-home .ranking-row .playerName,
  body .page-home .ranking-row .playerNameLink { font-size: 18px; font-weight: 700; letter-spacing: -0.36px; }
  /* 소속: 이름 우측 인라인 + 좌측 1×14 구분선, 18/400 #fff */
  body .page-home .ranking-row .playerOrg {
    display: inline-flex; align-items: center; flex: 0 1 auto; min-width: 0;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: 18px; font-weight: 400; letter-spacing: -0.36px; color: rgba(255, 255, 255, 0.5); /* 소속=흰색 50% */
  }
  body .page-home .ranking-row .playerOrg::before {
    content: ""; flex: 0 0 auto; width: 1px; height: 14px;
    margin-right: 8px; background: rgba(255, 255, 255, 0.2);
  }
  /* 포인트: 우측 고정, 흰색 80% + " P" 접미사(PC 한정, JS/모바일 무영향) */
  body .page-home .ranking-row .playerPoint { margin-left: auto; flex: 0 0 auto; font-size: 18px; font-weight: 700; letter-spacing: -0.36px; color: rgba(255, 255, 255, 0.8); }
  body .page-home .ranking-row .playerPoint::after { content: " P"; }

  /* ── 복식 페어 행 PC 1줄 (Figma 3720:1754): 아바타 2개 겹침 + 이름·소속·포인트 인라인 ── */
  body .page-home .ranking-row.is-pair .pair-avatar { width: 60px; height: 60px; }
  body .page-home .ranking-row.is-pair .pair-avatar.is-first { border-width: 2px; }  /* 1위만 링 2px → 사진 56×56 */
  body .page-home .ranking-row.is-pair .pair-avatar:not(.is-first) { background: rgba(221, 226, 232, 0.5); }  /* 비1위 아바타 배경 50% */
  body .page-home .ranking-row.is-pair .pair-player-info { flex-direction: row; align-items: center; }
  body .page-home .ranking-row.is-pair .pair-player-meta { display: none; }
  body .page-home .ranking-row.is-pair .pair-player-line { flex: 1; align-items: center; gap: 8px; }
  body .page-home .ranking-row.is-pair .pair-player-names { flex: 0 0 auto; font-size: 18px; font-weight: 700; letter-spacing: -0.36px; color: #fff; }
  /* PC 페어 이름 구분: 세로바 → 콤마 (랭킹페이지와 동일, 모바일은 pair-name-div 세로바 유지) */
  body .page-home .ranking-row.is-pair .pair-name-div { width: auto; height: auto; background: none; margin: 0; }
  body .page-home .ranking-row.is-pair .pair-name-div::after { content: ", "; white-space: pre; }
  /* 소속: 이름 우측 인라인 + 좌측 1×14 구분선, 18/400 흰50% (두 소속 콤마 결합) */
  body .page-home .ranking-row.is-pair .pair-player-org {
    display: inline-flex; align-items: center; flex: 0 1 auto; min-width: 0;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: 18px; font-weight: 400; letter-spacing: -0.36px; color: rgba(255, 255, 255, 0.5);
  }
  body .page-home .ranking-row.is-pair .pair-player-org::before {
    content: ""; flex: 0 0 auto; width: 1px; height: 14px; margin-right: 8px; background: rgba(255, 255, 255, 0.2);
  }
  /* 포인트: 우측 고정, 흰80% + " P" 접미사 */
  body .page-home .ranking-row.is-pair .pair-player-point { margin-left: auto; flex: 0 0 auto; font-size: 18px; font-weight: 700; letter-spacing: -0.36px; color: rgba(255, 255, 255, 0.8); }
  body .page-home .ranking-row.is-pair .pair-player-point::after { content: " P"; }

  /* ── 전체보기: 높이 48 · 폰트 16 (Frame 41) ── */
  body .page-home .ranking-view-all { height: 48px; font-size: 16px; }

  /* ── 하단: 3개 균일 카드 (선발전·선수검색·랭킹시스템). 배너 CTA 숨김 (Frame 1145) ── */
  body .page-home .selection-card { display: none; }
  body .page-home .utility-card-pc-only { display: flex; }
  /* 3카드 행: 928 안에서 좌우 24 인셋(=880 컨테이너, Frame 1048) → 카드 폭 시안 근접 */
  body .page-home .utility-cards { gap: 32px; margin-top: 0; padding: 0 24px; box-sizing: border-box; }
  /* ★박스 아님 — 다크 배경에 3컬럼, 세로 구분선으로만 분리(모바일 divider 방식)·내용 가운데 정렬 */
  body .page-home .utility-card-item {
    flex: 1; padding: 16px 0; gap: 16px;
    align-items: center; justify-content: center; text-align: center;
  }
  /* 컬럼 사이 세로 구분선 1×120 #fff@0.1 (border 대신 120h 가운데 라인) */
  body .page-home .utility-card-item + .utility-card-item {
    border-left: 0; position: relative;
  }
  body .page-home .utility-card-item + .utility-card-item::before {
    content: ""; position: absolute; left: -16px; top: 50%; transform: translateY(-50%);
    width: 1px; height: 120px; background: rgba(255, 255, 255, 0.1);
  }
  /* 텍스트 블록: 제목/설명 세로 gap8, 가운데 (Frame 1047) */
  body .page-home .utility-card-item > div { display: flex; flex-direction: column; align-items: center; gap: 8px; }
  body .page-home .utility-card-title { font-size: 18px; font-weight: 700; letter-spacing: -0.36px; }
  body .page-home .utility-card-desc { font-size: 16px; font-weight: 400; letter-spacing: -0.32px; margin: 0; }

  /* ── 푸터: 풀폭 라이트그레이(#e8ebed), 960 중앙, 다크 텍스트 (Frame 897) ── */
  body .page-home .footer-info { background: #e8ebed; padding: 60px 16px 100px; }
  body .page-home .footer-info > * { max-width: 960px; width: 100%; margin-left: auto; margin-right: auto; }
  /* 링크 메뉴: 좌측 정렬, 16/700, 구분선 #000@0.2 */
  body .page-home .footerMenu { display: flex; align-items: center; justify-content: flex-start; gap: 8px; }
  body .page-home .footerMenu a { font-size: 16px; font-weight: 700; letter-spacing: -0.32px; line-height: 20px; color: #1b1d1f; }
  body .page-home .footerDivider { width: 1px; height: 12px; background: rgba(0, 0, 0, 0.2); }
  /* 주소/연락처: 14/400 #1b1d1f, 줄간 18, gap8 */
  body .page-home .footerInfo { display: flex; flex-direction: column; gap: 8px; margin-top: 24px; }
  body .page-home .footerInfo p { font-size: 14px; font-weight: 400; letter-spacing: -0.14px; line-height: 18px; color: #1b1d1f; margin: 0; }
  body .page-home .footerCopy { margin-top: 24px; font-size: 14px; font-weight: 400; letter-spacing: -0.14px; line-height: 18px; color: #1b1d1f; }

  /* 랭킹 안내 모달 PC: 하단 바텀시트(모바일) → 화면 중앙 플로팅 카드(PC, Figma 4097:1994).
     마크업은 모바일과 공유(.home-notice-card는 모바일에서 display:contents로 무효화됨). */
  body .page-home .home-notice-overlay { align-items: center; }

  body .page-home .home-notice-sheet {
    width: 500px; max-width: none; height: auto; padding-top: 0;
    overflow: visible; border-radius: 0; background: none; gap: 16px;
  }
  body .page-home .home-notice-sheet::before { content: none; }

  body .page-home .home-notice-card {
    display: flex; flex-direction: column; align-items: center;
    position: relative; width: 500px; height: 367px; overflow: hidden;
    box-sizing: border-box; border-radius: 16px; padding-top: 80px;
    background: linear-gradient(126deg,#112E66 0%,#661112 100%);
  }
  body .page-home .home-notice-card::before {
    content: ""; position: absolute; left: 32.36px; bottom: -111.71px; width: 531.22px;
    aspect-ratio: 444.655/690.399; background: url(/images/figma/Union.svg) no-repeat center/contain;
    transform: rotate(2.788deg); pointer-events: none;
  }

  body .page-home .home-notice-close-x {
    display: flex; align-items: center; justify-content: center;
    position: absolute; top: 24px; right: 24px; width: 40px; height: 40px;
    padding: 0; border: 0; background: transparent; cursor: pointer;
  }
  body .page-home .home-notice-close-x svg { width: 18.38px; height: 18.38px; display: block; }

  body .page-home .home-notice-divider { opacity: 0.4; }

  body .page-home .home-notice-title-block { width: 316px; }
  body .page-home .home-notice-title { font-size: 24px; line-height: 28px; letter-spacing: -0.48px; }
  body .page-home .home-notice-desc { font-size: 20px; line-height: 23.9px; letter-spacing: -0.4px; }

  body .page-home .home-notice-btn {
    margin-top: 37px; width: 167px; height: 48px; padding: 9px 24px;
    font-size: 16px; line-height: 20px; letter-spacing: -0.32px;
    box-shadow: 0 2px 6px rgba(12,29,59,0.1);
  }

  body .page-home .home-notice-bar { margin-top: 0; width: 500px; height: 20px; padding: 0 16px; background: none; }
  body .page-home .home-notice-bar-row { gap: 0; }
  body .page-home .home-notice-check { margin-right: 8px; }
  body .page-home .home-notice-label { flex: 1 1 0; margin-right: 10px; }
  body .page-home .home-notice-close { flex: 0 0 auto; }

  /* ===== 랭킹페이지 — ranking/list.php (.page-ranking). 시안 「메인_랭킹 단식」(dsvb9l16) ===== */

  body .page-ranking { max-width: none; }

  /* ── 콘텐츠 960 중앙 (상단 컨트롤 + 본문) ── */
  
  /* ── 공통 상단영역 .page-hero + 랭킹 본문 960중앙 (오프셋·정렬·타이틀·간격은 .page-hero가 소유) ── */
  body .page-hero,
  body .page-ranking .ranking-page_body {
    max-width: 960px; width: 100%; margin-left: auto; margin-right: auto;
    padding-left: 16px; padding-right: 16px; box-sizing: border-box;
  }
  body .page-hero_title { font-size: 36px; line-height: 44px; letter-spacing: -0.72px; }
  body .page-hero_desc { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  body .page-hero_download { width: 209px; height: 40px; padding: 0; font-size: 14px; line-height: 18px; }   /* 시안 4077:2023 — 고정 209x40, 텍스트 14/18 (모바일은 28px) */

  /* ── 공통 밑줄 탭 PC (gap24, 좌우 margin은 .page-hero가 담당) ── */
  body .page-tabs { gap: 24px; align-items: flex-end; }
  body .page-tabs_item { font-size: 24px; line-height: 28px; letter-spacing: -0.48px; }

  /* ── 컨트롤바 1줄: 부문240·종목240·검색(나머지), gap12 / 섹션 세로간격 40 (Frame 1057·331) ── */
  body .page-ranking .ranking-page_body { display: flex; flex-direction: row; flex-wrap: wrap; gap: 24px 12px; align-items: flex-start; padding-top: 24px; }
  body .page-ranking .ranking-filter-bar { width: auto; margin: 0; }
  body .page-ranking .ranking-filter-bar_group { display: flex; gap: 12px; }
  body .page-ranking .ranking-select { flex: 0 0 240px; width: 240px; height: 48px; }
  body .page-ranking .ranking-select_trigger { height: 48px; }
  body .page-ranking .ranking-select_panel { -webkit-backdrop-filter: none; backdrop-filter: none; box-shadow: none; }  /* 닫힘: 흰10% 단색(Figma) */
  body .page-ranking .ranking-select.is-open .ranking-select_panel { -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); box-shadow: 0 4px 16px rgba(7, 16, 33, 0.80); }  /* 열림: 모바일 글래스 복원 */
  body .page-ranking .ranking-search-bar { flex: 1; min-width: 0; margin: 0; }
  body .page-ranking .ranking-search-bar_inner { box-shadow: 0 2px 6px rgba(12, 29, 59, 0.1); }  /* 시안 그림자 색 */
  /* 안내·리스트는 전체폭 (다음 줄로) */
  body .page-ranking .ranking-rule-card,
  body .page-ranking .ranking-result-panel { width: 100%; gap:60px;}
  body .page-ranking .ranking-result-panel { margin-top: 16px; }  /* 안내↔리스트 = row-gap24 + 16 = 40 */

  /* ── 안내바 (Frame 1168, 48h pad12): 아이콘24 · 텍스트16/400 ls-0.32 · 화살표24 ── */
  body .page-ranking .ranking-rule-card { margin-top: 0; background: transparent; border: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.1); border-radius: 0; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
  body .page-ranking .ranking-rule-card_icon { width: 24px; height: 24px; }
  body .page-ranking .ranking-rule-card_summary-text { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  body .page-ranking .ranking-rule-card_arrow { width: 24px; height: 24px; }
  /* 펼침 상세 — Figma 3731:8428(PC 928): 행간 12 · 라벨↔값 24 · 14px/lh18/ls-0.14 (라벨폭 88 유지) */
  body .page-ranking .ranking-rule-card_detail-list { gap: 12px; }
  body .page-ranking .ranking-rule-card_detail-item { gap: 24px; }
  body .page-ranking .ranking-rule-card_detail-label,
  body .page-ranking .ranking-rule-card_detail-value { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }

  /* ── 리스트 행 (Frame 316 첫행76·850 일반92): 하단보더 흰5%, 순위↔콘텐츠 gap24 ── */
  body .page-ranking .ranking-list-shell_body { gap: 0; }
  body .page-ranking .ranking-card-item { gap: 24px; padding: 16px 0; align-items: center; }
  body .page-ranking .ranking-card-item:first-child { padding-top: 0; }
  /* 순위: 44폭, 숫자 24/900(이탤릭은 모바일 상속) */
  body .page-ranking .ranking-card-rank { flex: 0 0 44px; }
  body .page-ranking .ranking-card-rank_value { font-size: 24px; font-weight: 700; line-height: 1.2; }
  /* 아바타 60원형 (1위 그라데이션 링 2px) */
  body .page-ranking .ranking-card-avatar { flex: 0 0 60px; width: 60px; height: 60px; }
  body .page-ranking .ranking-card-avatar.is-first { border-width: 2px; }
  body .page-ranking .ranking-card-body { gap: 16px; height: 60px; }
  /* 이름 18/700 흰 + 소속 16/400 흰50% */
  body .page-ranking .ranking-card-copy { gap: 4px; }
  body .page-ranking .ranking-card-copy_name { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .ranking-card-copy_meta { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  /* 포인트 18/700 흰80% + " P" / 개인·단체 16/400 흰50%, 구분선 12 */
  body .page-ranking .ranking-card-points_total { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .ranking-card-points_total::after { content: " P"; }
  body .page-ranking .ranking-card-points_indiv,
  body .page-ranking .ranking-card-points_team,
  body .page-ranking .ranking-card-points_label { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  body .page-ranking .ranking-card-points_sep { height: 12px; }
  body .page-ranking .ranking-card-points_sub { gap: 8px; }
  /* 변동 표시 (Figma: 숫자 16/900 ls-0.16, 아이콘 14×16) */
  body .page-ranking .ranking-card-rank_change-num { font-size: 16px; letter-spacing: -0.16px; }
  body .page-ranking .ranking-card-rank_change-icon { width: 14px; height: 16px; }
  body .page-ranking .ranking-card-rank_change.is-same { font-size: 16px; }
  /* 아바타 일반 테두리 흰50% (1위는 그라데이션 링 유지) */
  body .page-ranking .ranking-card-avatar-photo:not(.is-first) { background: linear-gradient(var(--ranking-avatar-photo-bg), var(--ranking-avatar-photo-bg)) padding-box, rgba(255, 255, 255, 0.5) border-box; }
  body .page-ranking .ranking-card-avatar-default:not(.is-first) { background: linear-gradient(var(--ranking-avatar-bg), var(--ranking-avatar-bg)) padding-box, rgba(255, 255, 255, 0.5) border-box; }

  /* ── 복식 페어 행 (Frame 316 페어): 아바타 2개 겹침·60 / 이름·소속·포인트 1줄 ── */
  body .page-ranking .ranking-card-pair { gap: 16px; }
  body .page-ranking .ranking-card-pair_avatar { width: 60px; height: 60px; }
  body .page-ranking .ranking-card-pair_avatar.is-first { border-width: 2px; }
  body .page-ranking .ranking-card-pair_players { flex-direction: row; align-items: center; gap: 8px; }
  body .page-ranking .ranking-card-pair_name { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  /* 이름↔소속 구분선 1×14 흰20% */
  body .page-ranking .ranking-card-pair_orgs { align-items: center; }
  body .page-ranking .ranking-card-pair_orgs::before { content: ""; flex: 0 0 auto; width: 1px; height: 14px; margin-right: 8px; background: rgba(255, 255, 255, 0.2); }
  body .page-ranking .ranking-card-pair_org { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; color: rgba(255, 255, 255, 0.5); }
  /* 구분자 | → 콤마 (JS 무수정: nameDivider 숨기고 ::after로 콤마, PC 페어 한정) */
  body .page-ranking .ranking-card-item-pair .ranking-card-pair_names,
  body .page-ranking .ranking-card-item-pair .ranking-card-pair_orgs { gap: 0; }
  body .page-ranking .ranking-card-item-pair .nameDivider { font-size: 0; }
  body .page-ranking .ranking-card-item-pair .ranking-card-pair_names .nameDivider::after { content: ", "; white-space: pre; font-size: 18px; font-weight: 700; color: #fff; }
  body .page-ranking .ranking-card-item-pair .ranking-card-pair_orgs .nameDivider::after { content: ", "; white-space: pre; font-size: 18px; font-weight: 400; color: rgba(255, 255, 255, 0.5); }
  /* 포인트 18/700 흰80% + " P", "point" 라벨 숨김 */
  body .page-ranking .ranking-card-item-pair .ranking-card-points_total { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .ranking-card-item-pair .ranking-card-points_total::after { content: " P"; }
  body .page-ranking .ranking-card-item-pair .ranking-card-points_label { display: none; }

  /* ── 페이지네이션: 화살표 아이콘만 확대(li 크기 유지) + 화살표↔숫자 간격 ── */
  body .page-ranking ul.pagination li.page-first,
  body .page-ranking ul.pagination li.page-prev,
  body .page-ranking ul.pagination li.page-next,
  body .page-ranking ul.pagination li.page-last { background-size: 24px 24px; }
  body .page-ranking ul.pagination { width: 100%; }
  body .page-ranking ul.pagination li.page-prev { margin-right: auto; }   /* 좌측 화살표 그룹을 왼쪽 끝으로 */
  body .page-ranking ul.pagination li.page-next { margin-left: auto; }    /* 우측 화살표 그룹을 오른쪽 끝으로 */

  /* ── 푸터: 풀폭 라이트그레이, 내부 960 중앙 (메인과 동일) ── */
  body .page-ranking .footer-info { background: #e8ebed; padding: 60px 16px 100px; }
  body .page-ranking .footer-info > * { max-width: 960px; width: 100%; margin-left: auto; margin-right: auto; }

  /* ===== 선수 검색 — ranking/search.php (.page-search). 랭킹페이지 레이아웃 차용 ===== */

  body .page-search { max-width: none; }
  body .page-search .search-page { padding-top: 90px; }

  /* ── 검색 결과 960 중앙 (상단은 .page-hero 공통) ── */
  body .page-search .search-result {
    max-width: 960px; width: 100%; margin-left: auto; margin-right: auto;
    padding-left: 16px; padding-right: 16px; box-sizing: border-box;
  }

  /* ── 검색바 그림자색 (검색 전용 add-on) ── */
  body .page-search .ranking-search-bar_inner { box-shadow: 0 2px 6px rgba(12, 29, 59, 0.1); }

  /* ── 결과 카운트 ── */
  body .page-search .search-result_count { font-size: 16px; }

  /* ── 결과 카드 (랭킹 리스트 행: 아바타60·이름18·포인트18) ── */
  body .page-search .search-card_link { gap: 16px; }
  body .page-search .search-card .ranking-card-avatar { flex: 0 0 60px; width: 60px; height: 60px; }
  body .page-search .search-card_name { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-search .search-card_meta { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  body .page-search .search-card_div { height: 12px; }
  body .page-search .search-card_points { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }

  /* ── 페이지네이션 (랭킹과 동일: 화살표 양끝, 아이콘 24) ── */
  body .page-search ul.pagination { width: 100%; }
  body .page-search ul.pagination li.page-first,
  body .page-search ul.pagination li.page-prev,
  body .page-search ul.pagination li.page-next,
  body .page-search ul.pagination li.page-last { background-size: 24px 24px; }
  body .page-search ul.pagination li.page-prev { margin-right: auto; }
  body .page-search ul.pagination li.page-next { margin-left: auto; }

  /* ── 푸터 풀폭 + 960 중앙 ── */
  body .page-search .footer-info { background: #e8ebed; padding: 60px 16px 100px; }
  body .page-search .footer-info > * { max-width: 960px; width: 100%; margin-left: auto; margin-right: auto; }

  /* ===== 선수 상세 — ranking/player.php (.page-ranking, player-/pp- 클래스). figma vmbwcmzl ===== */

  body .page-ranking { max-width: none; }

  /* ── 히어로 풀폭 420, inner 하단 중앙 (아바타148·이름36·소속20) ── */
  /* PC 배경 = 메인 PC 히어로와 동일한 bg.png 풀폭 (모바일 player_bg.png 대체). stage 내 .player-hero_bg img는 숨김 */
  body .page-ranking .player-hero { min-height: 420px; padding: 0; display: flex; align-items: flex-end; background: url(/images/figma/bg.png) no-repeat center center / cover, var(--ranking-bg); }
  body .page-ranking .player-hero_stage { width: 100%; }
  body .page-ranking .player-hero_bg { display: none; }
  body .page-ranking .player-hero_inner { width: 100%; gap: 24px; padding: 0 16px 56px; }
  body .page-ranking .player-hero_avatar { width: 148px; height: 148px; }
  body .page-ranking .player-hero_name { font-size: 36px; line-height: 44px; letter-spacing: -0.72px; }
  body .page-ranking .player-hero_meta { font-size: 20px; line-height: 24px; letter-spacing: -0.4px; }
  body .page-ranking .player-hero_meta-div { height: 16px; }

  /* ── 탭바 풀폭 var(--ranking-bg), 탭 그룹 중앙 (개요/통계/대회기록 24px, 각 180) ── */
  body .page-ranking .player-tabs { justify-content: center; padding: 0; }
  body .page-ranking .player-tabs_item { flex: 0 0 180px; font-size: 24px; line-height: 28px; letter-spacing: -0.48px; padding-bottom: 16px; }

  /* ── 콘텐츠: 각 섹션 풀폭(흰 배경) + 콘텐츠만 928 중앙(좌우 패딩 calc).
       max-width+margin auto 폐기 → 양 사이드가 섹션 흰배경으로 채워짐(부모 #f7f8f9 회색 노출 방지).
       섹션 사이 세로 8px 갭(margin-bottom)만 #f7f8f9 구분선으로 유지 ── */
  body .page-ranking .pp-tab-content > section { box-sizing: border-box; padding-left: max(16px, calc((100% - 928px) / 2)); padding-right: max(16px, calc((100% - 928px) / 2)); }

  /* 섹션 사이 회색 구분선(모바일 margin-bottom 8px) → PC 1px */
  body .page-ranking .player-rank,
  body .page-ranking .player-trend,
  body .page-ranking .player-stats_graph,
  body .page-ranking .player-ev-stat-row,
  body .page-ranking .player-ev-grade { margin-bottom: 1px; }

  /* 소제목 ↔ 내용 갭 PC 24px 통일(gap 방식 섹션; margin-bottom 방식은 각 _title에서 이미 24px) */
  body .page-ranking .player-rank,
  body .page-ranking .player-points,
  body .page-ranking .player-winrate { gap: 24px; }

  /* 각 리스트 최상단 아이템의 상단 패딩 제거 → 소제목 갭(24px)이 유일한 간격이 되도록 */
  body .page-ranking .player-points_item:first-child,
  body .page-ranking .player-ev-recent-item:first-child,
  body .page-ranking .player-ev-grade-item:first-child,
  body .page-ranking .player-ev-quarter-item:first-child,
  body .page-ranking .player-ev-history-card:first-child,
  body .page-ranking .player-catrate_row:first-of-type { padding-top: 0; }
  body .page-ranking .player-points_item:first-child .player-points_badge { top: 0; }   /* 첫 행은 padding-top:0 이라 배지도 같이 올린다 */

  /* 현재 랭킹: pad 60/16/80, 타이틀 20, 카드 가로 4개 */
  body .page-ranking .player-rank { padding: 60px 16px 80px; }
  body .page-ranking .player-rank_title { font-size: 20px; line-height: 24px; }
  /* 합산 포인트 카드 제거(개선요청 C-1)로 카드가 3개 → flex 3열 균등 + 가운데 정렬.
     flex 컨텍스트라 모바일용 grid-column 규칙은 자동으로 무효가 된다. */
  body .page-ranking .player-rank_grid { display: flex; justify-content: center; gap: 8px; }
  body .page-ranking .player-rank_grid .player-rank-card { flex: 1 1 0; }

  /* ── 랭킹추이: 헤더(제목 좌 + 종목 pill 우) 한 줄, 차트는 풀폭 다음 줄 (시안 Frame 1170/1171) ── */
  body .page-ranking .player-trend { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; row-gap: 24px; column-gap: 16px; }
  body .page-ranking .player-trend_title { font-size: 20px; line-height: 24px; letter-spacing: -0.4px; }
  /* 종목탭: Figma Frame1164 100x36 pad[6,24,6,24] border-box(=텍스트폭 52 정확히 맞음) → 모바일 flex:1 풀폭 상속 방지, 내용폭 고정 */
  body .page-ranking .player-trend_tab { flex: 0 0 100px; width: 100px; min-height: 36px; padding: 6px 24px; border-radius: 28px; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; }
  body .page-ranking .player-trend_tab.is-active { background: #1b1d1f; }
  /* 최근 포인트 내역 종목탭 — 추이 탭과 같은 치수. 단 '전체'까지 4개라 제목 옆에서 폭을 고정하지 않고 내용폭으로 둔다 */
  /* PC: 제목 옆 한 줄로 되돌리고 탭은 내용폭(모바일의 풀폭 flex:1 해제) */
  body .page-ranking .player-points_head--tabs { flex-direction: row; align-items: center; gap: 8px; }
  body .page-ranking .player-points_tabs { flex: none; }
  body .page-ranking .player-points_tab { flex: 0 0 auto; min-height: 36px; padding: 6px 20px; border-radius: 28px; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; }
  body .page-ranking .player-points_tab.is-active { background: #1b1d1f; }
  body .page-ranking .player-trend_chart { width: 100%; margin-top: 0; }
  /* 랭킹 추이 빈 상태: 회색 라운드 박스 928×206 r16 중앙정렬 (Figma Frame 1094) */
  body .page-ranking .player-trend_empty { display: flex; align-items: center; justify-content: center; height: 206px; padding: 0; background: #f7f8f9; border-radius: 16px; line-height: 18px; letter-spacing: -0.14px; }
  /* 주차버튼(좌) + X범례(우) 한 줄(Figma Frame1171 928x36: 703폭 버튼그룹 + 215폭 범례, gap10) →
     모바일 width:100% 제거해 내용폭으로 축소, 같은 줄의 legend와 justify-content:space-between으로 좌우 배치 */
  body .page-ranking .player-trend_ranges { width: auto; flex: 0 0 auto; }
  /* 주차버튼: Figma 60x36 fixed + mainAlign/crossAlign=CENTER(고정폭이 pad[6,24,6,24]보다 좁아 padding은 문자 그대로 적용 불가 —
     12주/18주 텍스트(27/28px)가 border-box 60-48=12px 콘텐츠폭을 넘침 → 고정 박스+가운데 정렬로 대체, 시각 결과 동일) */
  body .page-ranking .player-trend_range { flex: 0 0 auto; width: 60px; height: 36px; padding: 0; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }
  /* X범례: Figma Frame783 215x20, 우측 정렬(부모 space-between) */
  body .page-ranking .player-trend_legend { flex: 0 0 auto; }
  body .page-ranking .player-trend_legend-icon { width: 16px; height: 16px; }
  body .page-ranking .player-trend_legend-text { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }

  /* ── pair-check-bar PC Figma 정합 (3731:8435, 928×36) ── */
  body .page-ranking .xd-gender-tab { width: 80px; height: 36px; min-height: 36px; padding: 6px 24px; font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }
  body .page-ranking .pair-check-box { width: 24px; height: 24px; }
  body .page-ranking .pair-check-label { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }

  /* ── 최근 포인트 내역: 대회명 윗줄 / [종목·성적 · 날짜] 좌 + 포인트 우 한 줄 (시안 Frame 1091) ── */
  body .page-ranking .player-points_title { font-size: 20px; line-height: 24px; letter-spacing: -0.4px; }  /* 타 영역 제목(20)과 통일 */
  /* 시안 Figma 4022:605 — [등급배지 54] gap16 [대회명 / 메타+포인트]. 배지 자리는 padding-left(54+16) 로 비운다 */
  body .page-ranking .player-points_item { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 12px 8px; padding: 24px 0 24px 70px; }   /* 배지 54 + gap 16 */
  body .page-ranking .player-points_info { display: contents; }                 /* _name·_meta를 item 직접 자식으로 풀어 재배치 */
  /* 시안 치수 — 원 54, 텍스트 18/900/22 (모바일 36/13/16) */
  /* 시안 4022:605 — 좌측 원형 54. 메타줄 인라인 칩에서 빼내 absolute 로 옮긴다 */
  body .page-ranking .player-points_pop { width: 400px; }   /* 모바일 min(360, 100vw-32) → PC 는 조금 넓게 */
  body .page-ranking .player-points_badge { position: absolute; left: 0; top: 24px; width: 54px; height: 54px; padding: 0; border-radius: 50%; font-size: 18px; line-height: 22px; letter-spacing: 0; }
  body .page-ranking .player-points_name { flex: 0 0 100%; padding-left: 0; font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }   /* PC 는 item 이 gutter 를 가져 대회명 들여쓰기 불필요 */
  body .page-ranking .player-points_result { margin-left: auto; }               /* 포인트 우측 끝 */
  body .page-ranking .player-points_meta { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; gap: 8px; }
  body .page-ranking .player-points_div { height: 12px; }
  body .page-ranking .player-points_rank-pc { display: inline; }                 /* 종목 옆 성적 노출 */
  body .page-ranking .player-points_more { padding-top: 16px; padding-bottom: 16px; }  /* 모바일 9px, PC는 16px 유지 */
  /* 단체전 상세는 PC(row 배치)에서 포인트 옆이 아니라 다음 줄 풀폭으로 — 모바일과 같은 흐름 */
  body .page-ranking .player-points_result .player-ev-history-tag-rank { display: none; }  /* 우측 성적칩은 PC에서 숨김(좌측 인라인으로 대체) */
  body .page-ranking .player-points_value { font-size: 16px; line-height: 18px; letter-spacing: -0.16px; }

  /* ── 통계 스위치~승률 간격: 시안 스위치 top40·bottom60, 승률 top0 (버튼↔승률 60px) ── */
  body .page-ranking .player-stats-summary { padding-top: 40px; padding-bottom: 60px; }
  body .page-ranking .player-stats_graph { padding-top: 0; }

  /* ── 통계 요약/히스토리 스위치: 240 가운데 pill (시안 Frame 263) ── */
  body .page-ranking .player-switch { width: fit-content; margin: 0 auto; }   /* 버튼 수만큼 자동(통계 2버튼 240 / 대회기록 3버튼 356) */
  body .page-ranking .player-switch_btn { flex: 0 0 116px; padding: 10px 16px; font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }

  /* ── 전체 승률: 도넛 180 + 범례 가로(gap80), 폰트 18 (시안 Frame 1090) ── */
  body .page-ranking .player-winrate_body { gap: 80px; padding: 16px; }
  body .page-ranking .player-donut { width: 180px; height: 180px; }
  body .page-ranking .player-donut svg { width: 100%; height: 100%; }                     /* viewBox 128→180 스케일 */
  body .page-ranking .player-donut_center strong { font-size: 36px; line-height: 43px; }
  body .page-ranking .player-donut_center span { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .player-winrate_total { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; padding-bottom: 16px; }
  body .page-ranking .player-winrate_dot { width: 16px; height: 16px; }
  body .page-ranking .player-winrate_label { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .player-winrate_val { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }

  /* ── 카테고리별 승률: 섹션 pad top60/bottom160·gap24, 제목 20, 진행바 16px, 라벨 18 (시안 Frame 899/996) ── */
  body .page-ranking .player-category { padding-top: 60px; padding-bottom: 160px; gap: 0; }
  body .page-ranking .player-category_title { font-size: 20px; line-height: 24px; letter-spacing: -0.4px; margin-bottom: 24px; }
  body .page-ranking .player-catrate_label { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .player-catrate_track { height: 16px; }
  body .page-ranking .player-catrate_fill { height: 16px; }

  /* ── 통계 히스토리뷰: trend/points가 pp-tab-content 직속 형제(data-stats-view=history)라 > section 928 정렬 자동.
       상하 간격만 시안 분기(추이 top0/bottom80 · 포인트 top60/bottom160). 추이↔포인트 사이 8px 회색 구분선(trend margin-bottom) ── */
  body .page-ranking .player-points[data-stats-view="history"] { padding-top: 0; padding-bottom: 80px; }    /* 첫 섹션 */
  body .page-ranking .player-trend[data-stats-view="history"] { padding-top: 60px; padding-bottom: 160px; }   /* 마지막 섹션 */

  /* ── 대회기록 요약: 통계 3셀(라벨16/숫자32·구분선 #e8ebed), top0/bottom80 (시안 Frame 1175/1083) ── */
  body .page-ranking .player-ev-stat-row { padding-top: 0; padding-bottom: 80px; }
  body .page-ranking .player-ev-stat-label { font-size: 16px; line-height: 19px; letter-spacing: -0.16px; }
  body .page-ranking .player-ev-stat-num { font-size: 32px; line-height: 38px; }
  body .page-ranking .player-ev-stat-div { background: #e8ebed; }

  /* ── 최근 대회 결과: 제목20·배지68·텍스트 확대 (시안 Frame 900/1113) ── */
  body .page-ranking .player-ev-recent { padding-top: 60px; padding-bottom: 160px; }
  body .page-ranking .player-ev-recent_title { font-size: 20px; line-height: 24px; letter-spacing: -0.4px; }
  body .page-ranking .player-ev-recent .player-points_head { margin-bottom: 24px; }
  body .page-ranking .player-ev-recent-item { gap: 24px; }
  body .page-ranking .player-ev-badge { width: 68px; height: 68px; font-size: 16px; line-height: 20px; }
  body .page-ranking .player-ev-recent-name { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .player-ev-recent-sub { gap: 8px; margin-top: 12px; font-size: 16px; }
  body .page-ranking .player-ev-recent-subdiv { height: 12px; }

  /* ── 대회기록 상세통계: 등급별 2열(배지68/라벨24·가운데 세로구분선) + 분기별 진행바(라벨18·트랙16) (시안 Frame 1176/899) ── */
  body .page-ranking .player-ev-grade { padding-top: 0; padding-bottom: 80px; }
  body .page-ranking .player-ev-grade_title,
  body .page-ranking .player-ev-quarter_title { font-size: 20px; line-height: 24px; letter-spacing: -0.4px; margin-bottom: 24px; }
  body .page-ranking .player-ev-grade-list { display: grid; grid-template-columns: 1fr 1fr; column-gap: 81px; padding-bottom: 16px; border-bottom: 1px solid #f7f8f9; }
  body .page-ranking .player-ev-grade-item { gap: 24px; padding: 0; border-bottom: none; }
  body .page-ranking .player-ev-grade-item:first-child { position: relative; }
  body .page-ranking .player-ev-grade-item:first-child::after { content: ""; position: absolute; right: -41px; top: 0; bottom: 0; width: 1px; background: #e8ebed; }
  body .page-ranking .player-ev-grade-badge { width: 68px; height: 68px; font-size: 24px; line-height: 28px; letter-spacing: -0.48px; }
  body .page-ranking .player-ev-grade-participated { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }

  body .page-ranking .player-ev-quarter { padding-top: 60px; padding-bottom: 160px; }
  body .page-ranking .player-ev-quarter-label,
  body .page-ranking .player-ev-quarter-val { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .player-ev-quarter-track,
  body .page-ranking .player-ev-quarter-fill { height: 16px; }

  /* ── 대회기록 히스토리: 컨테이너 928중앙, 헤더 제목20, 카드(대회명 위 / 칩+포인트 한 줄) (시안 Frame 1176/1100) ── */
  body .page-ranking .pp-sub-content { padding-left: max(16px, calc((100% - 928px) / 2)); padding-right: max(16px, calc((100% - 928px) / 2)); padding-bottom: 160px; }
  body .page-ranking .player-ev-history-header { padding: 0; margin-bottom: 24px; }
  body .page-ranking .pp-sub-content .player-points_head--tabs { padding: 0; margin-bottom: 24px; }
  body .page-ranking .player-ev-history-header_title { font-size: 20px; line-height: 24px; letter-spacing: -0.4px; }
  body .page-ranking .player-ev-history-list { padding: 0; }
  /* 대회 기록 페이지네이션 PC — ul.pagination(.page-ranking) 공통 규칙 적용, 여백만 조정 */
  body .page-ranking .pp-history-pagination { margin: 60px 0 0; }
  body .page-ranking .player-ev-history-card { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 8px; padding-top: 24px; padding-bottom: 24px; }
  body .page-ranking .player-ev-history-name { order: 1; flex: 0 0 100%; margin: 0; font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .page-ranking .player-ev-history-tags { order: 2; margin: 0; }
  body .page-ranking .player-ev-history-date { order: 2; margin: 0; font-size: 16px; line-height: 20px; letter-spacing: -0.16px; }
  body .page-ranking .player-ev-history-points { order: 3; margin-left: auto; font-size: 16px; line-height: 18px; letter-spacing: -0.16px; }
  body .page-ranking .player-ev-history-tag { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }

  /* ── 히스토리 필터: PC는 하단 바텀시트 → 화면 중앙 모달(480 r24) + 우상단 X + 하단 닫기/확인 (시안 Footer 480×424) ── */
  body .page-ranking .player-ev-filter_sheet { left: 50%; top: 50%; bottom: auto; transform: translate(-50%, -50%); width: 480px; max-width: 480px; border-radius: 24px; padding: 24px; gap: 40px; }
  body .page-ranking .player-ev-filter_handle { display: none; }                /* PC는 핸들 대신 X */
  body .page-ranking .player-ev-filter_close { display: block; position: absolute; top: 24px; right: 24px; width: 40px; height: 40px; padding: 0; background: none; border: none; cursor: pointer; }
  body .page-ranking .player-ev-filter_close::before,
  body .page-ranking .player-ev-filter_close::after { content: ""; position: absolute; top: 19px; left: 8px; width: 24px; height: 2px; background: #1b1d1f; }
  body .page-ranking .player-ev-filter_close::before { transform: rotate(45deg); }
  body .page-ranking .player-ev-filter_close::after { transform: rotate(-45deg); }
  body .page-ranking .player-ev-filter_cols { gap: 36px; padding: 40px 0 0; }    /* 상단 X 공간 + 2컬럼 간격 36 */
  body .page-ranking .player-ev-filter_actions { display: flex; gap: 8px; }
  body .page-ranking .player-ev-filter_cancel { display: flex; align-items: center; justify-content: center; flex: 1; height: 48px; border: none; border-radius: 60px; background: #f7f8f9; color: #1b1d1f; font-size: 16px; font-weight: 700; line-height: 20px; cursor: pointer; }
  body .page-ranking .player-ev-filter_confirm { flex: 1; }

  /* ── 푸터 풀폭 + 960 중앙 ── */
  body .page-ranking .footer-info { background: #e8ebed; padding: 60px 16px 100px; }
  body .page-ranking .footer-info > * { max-width: 960px; width: 100%; margin-left: auto; margin-right: auto; }

  /* ===== 팀랭킹 — ranking/team.php (.team-page, team-* 클래스). figma gtkv2xfq, 다크 var(--ranking-bg) ===== */

  /* ★ .page(모바일 max-width:540 var(--ranking-bg) 풀폭제약) 해제 — 이게 없으면 전체가 540으로 갇힘. 다크배경은 풀폭 유지 */
  body .page-ranking { max-width: none; }

  /* ── 팀 본문 960 중앙 (상단은 .page-hero 공통, 제목/부제/탭 간격 모두 .page-hero가 소유) ── */
  body .team-page-body { max-width: 960px; margin-left: auto; margin-right: auto; box-sizing: border-box; gap: 40px; padding-bottom: 160px; }

  /* ── 성별 스위치(남자팀/여자팀): pill 고정폭 80 (모바일 flex1 풀폭분배 → PC 좌측 고정) ── */
  body .team-gender-nav-inner { width: -moz-fit-content; width: fit-content; }
  body .team-gender-tab { flex: 0 0 80px; }

  /* ── 팀 카드: r24·pad24·gap24 (시안 Frame 1041) ── */
  body .team-card { padding: 24px; border-radius: 24px; gap: 24px; }
  body .team-card-rank-badge { flex: 0 0 58px; width: 58px; height: 52px; }
  body .team-card-rank-badge span { font-size: 36px; line-height: 44px; }
  body .team-card-name { font-size: 24px; line-height: 28px; letter-spacing: -0.48px; }
  /* 헤더: 메타16(개인/단체 .5 + 끝 포인트 .8/700)·모바일 우측 포인트 숨김·전체선수보기 헤더 우측 (시안 Frame 943/819) */
  body .team-card-header { padding-bottom: 24px; align-items: center; }
  body .team-card-meta { gap: 8px; font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  body .team-card-points { display: none; }
  body .team-card-meta-divider-pc { display: inline-block; width: 1px; height: 12px; background: var(--ranking-points-sep); }
  body .team-card-meta-pts-pc { display: inline; color: rgba(255, 255, 255, 0.8); font-weight: 700; }
  body .team-card-all-btn-pc { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; padding: 9px 24px; border-radius: 24px; border: 0; background: rgba(255, 255, 255, 0.05); color: #c9cdd2; font-family:var(--font-kr); font-size: 14px; font-weight: 400; line-height: 18px; letter-spacing: -0.14px; white-space: nowrap; cursor: pointer; }
  body .team-card-all-btn { display: none; }
  body .team-card-toggle { padding-top: 24px; }
  body .team-card-toggle-label { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .team-card-toggle-icon { width: 24px; height: 24px; flex: 0 0 24px; }
  body .team-card-toggle-icon img { width: 24px; height: 24px; }

  /* ── 멤버 2열 가로(단식 TOP3 | 복식 TOP4) + 가운데 세로구분선 (시안 Frame 936) ── */
  body .team-card-members { gap: 0; }
  body .team-card-members-col { padding: 0 24px; }
  body .team-card-members-col:first-child { padding-left: 0; }
  body .team-card-members-col:last-child { padding-right: 0; position: relative; }
  body .team-card-members-col:last-child::before { content: ""; position: absolute; left: 0; top: 0; bottom: 12px; width: 1px; background: rgba(255, 255, 255, 0.08); }
  body .team-card-members-title { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  body .team-card-player { gap: 16px; }
  body .team-card-avatar { flex: 0 0 36px; width: 36px; height: 36px; }
  body .team-card-player-name { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  body .team-card-player-pts { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }

  /* ── 페이지네이션: 화살표 양끝 + 아이콘 24 (list.php와 동일 Helper_Page ul.pagination), 카드와 60 간격 ── */
  body .team-pagination { margin-top: 60px; }
  body .team-page ul.pagination { width: 100%; }
  body .team-page ul.pagination li.page-first,
  body .team-page ul.pagination li.page-prev,
  body .team-page ul.pagination li.page-next,
  body .team-page ul.pagination li.page-last { background-size: 24px 24px; }
  body .team-page ul.pagination li.page-prev { margin-right: auto; }
  body .team-page ul.pagination li.page-next { margin-left: auto; }

  /* ── 전체선수 모달: 다크 풀스크린 → 중앙 라이트 모달 480 (시안 Footer 480×564) ── */
  body .team-modal { background: rgba(0, 0, 0, 0.8); align-items: center; }
  body .team-modal-inner { width: 480px; max-width: 480px; max-height: 80vh; margin: auto; background: #fff; border-radius: 24px; padding: 24px; }
  body .team-modal-top { flex: 0 0 40px; }
  body .team-modal-close { top: 0; right: 0; }
  body .team-modal-close svg path { stroke: #1b1d1f; }
  body .team-modal-title { margin: 0; color: #1b1d1f; }
  body .team-modal-body { margin-top: 24px; padding: 0 0 120px; }
  body .team-modal-row { border-bottom-color: rgba(0, 0, 0, 0.08); }
  body .team-modal-row:first-child { padding-top: 0; }
  body .team-modal-avatar { flex: 0 0 48px; width: 48px; height: 48px; border-color: #e8ebed; }
  body .team-modal-name { color: #1b1d1f; }
  body .team-modal-pts { color: rgba(0, 0, 0, 0.6); }
  body .team-modal-pts-type { color: rgba(0, 0, 0, 0.55); }
  body .team-modal-footer-btn { display: flex; align-items: center; justify-content: center; flex: 0 0 48px; margin-top: 16px; border: 0; border-radius: 60px; background: #f7f8f9; color: #1b1d1f; font-family:var(--font-kr); font-size: 16px; font-weight: 700; line-height: 20px; cursor: pointer; }

  /* ===== 랭킹 안내 — ranking/info.php (.search-page / .info-* 클래스). figma gtkv2xfq ===== */

  /* ★ .page(모바일 max-width:540 var(--ranking-bg)) 해제 — 없으면 전체 540으로 갇힘(팀랭킹과 동일) */
  body .page-ranking { max-width: none; }

  /* ── 안내 본문 960 중앙 (상단은 .page-hero 공통) ── */
  body .page-ranking .info-section { max-width: 960px; margin-left: auto; margin-right: auto; box-sizing: border-box; padding-bottom: 40px; }

  /* ── 아코디언 카드: pad24·번호배지28(폰트16)·제목18·헤더gap16·요약16 (Figma 3805:4780 PC) ── */
  body .info-article { padding: 24px; }
  body .info-title { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; gap: 16px; }
  body .info-title .no { width: 28px; height: 28px; font-size: 16px; line-height: 20px; }
  body .info-title .info-arrow { width: 24px; height: 24px; }
  body .info-title .info-arrow img { width: 24px; height: 24px; }
  body .info-article .explain { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }

  /* ── 펼친 내용(info-detail): 블록 간격·보더 여백 24 (Figma PC pt24/pb24) ── */
  body .info-detail { gap: 24px; padding-top: 24px; }
  body .info-metrics { padding-bottom: 24px; }
  body .info-group { padding-bottom: 24px; gap: 16px; }    /* 그룹 내부 제목↔설명↔칩 8→16 (Figma PC) */
  body .info-groups { gap: 16px; }
  body .info-list { gap: 16px; }
  body .info-chips { gap: 8px; }                 /* 칩 간 4→8 (Figma PC Frame 1127) */
  body .info-detail_cards { gap: 16px; }         /* 카드 간 간격 8→16 (Figma PC). 카드 padding 16은 base 공통 */
  body .info-card_title, body .info-card_list li { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }  /* 카드 텍스트 12→14 (Figma PC) */
  body .info-definitions { gap: 16px; }          /* 용어 행 간 8→16 (Figma PC) */
  body .info-definition { gap: 24px; }           /* 용어↔설명 16→24 (Figma PC) */
  body .info-metric_label { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }
  body .info-metric_value { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .info-metrics-3 { gap: 49px; }                                          /* 3컬럼 PC: 컬럼 사이 24+1+24 */
  body .info-metrics-3 .info-metric + .info-metric::before { left: -25px; }
  /* 제목류: list_title 18 / group_title 18 / def_term 16 / ★card는 14 유지(스케일 안 함) */
  body .info-list-title, body .info-group_title { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .info-definition_term { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  /* 본문 16 (단 card_list는 14 유지) */
  body .info-group_desc, body .info-group_line,
  body .info-list_item,
  body .info-definition_description, body .info-definition_badges { font-size: 16px; line-height: 20px; letter-spacing: -0.32px; }
  /* 칩: 14/lh18·pad8/24 (Figma PC Frame 1065) */
  body .info-chip { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; padding: 8px 24px; }
  body .info-legend-text, body .info-legend-dash { font-size: 14px; line-height: 16px; }

  /* ── 랭킹포인트 배점표: 960 중앙 + 본문 스케일 12→14 (아코디언 PC 스케일과 동일 비율) ── */
  body .page-ranking .info-point-section { max-width: 960px; margin-left: auto; margin-right: auto; box-sizing: border-box; padding-bottom: 160px; }
  body .info-point-division { padding: 24px; gap: 24px; }
  body .info-point-title { font-size: 18px; line-height: 22px; letter-spacing: -0.36px; }
  body .info-point-division_title, body .info-point-group_title { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }
  body .info-point-table th, body .info-point-table td { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; padding: 12px; }
  body .info-point-sublabel { font-size: 12px; }
  body .info-point-note { font-size: 14px; line-height: 18px; letter-spacing: -0.14px; }
  /* 가로 스크롤바 슬림화(네이티브 15px→6px). 숨기지 않는 이유=표가 좌우로 더 있다는 유일한 단서 */
  body .info-point-table-scroll { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.24) transparent; }
  body .info-point-table-scroll::-webkit-scrollbar { height: 6px; }
  body .info-point-table-scroll::-webkit-scrollbar-track { background: transparent; }
  body .info-point-table-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.24); border-radius: 3px; }
}

/* 1920 초과: hero 배경 cover 해제 → 100% 100% (가로만 늘어나고 세로 420 고정 → 하단 그라데이션 정위치) */
@media (min-width: 1920px) {
  body .page-home .hero { background-size: 100% 100%; }
  body .page-ranking .player-hero { background-size: 100% 100%; }
}

/* ============================================================
   팀랭킹 모바일 (기존 team.css 흡수, 2026-07-01)
   ============================================================ */
.team-page{padding-top:0;margin-top:90px;}
/* 팀 상단은 .page-hero/.page-hero_head/_title/_desc 공통 사용 (구 .team-hero/-copy 제거) */
/* 팀 부문탭도 .page-hero 안이라 간격 자동 (별도 margin 오버라이드 불필요) */
.team-page-body{display:flex;flex-direction:column;gap:16px;padding:24px 16px 120px;}
.team-division-panel{display:flex;flex-direction:column;}
.team-division-panel[hidden]{display:none;}
.team-card{display:flex;flex-direction:column;align-items:stretch;gap:16px;padding:16px;border-radius:16px;background:#1a2334;}
.team-card+.team-card{margin-top:16px;}
.team-card-head{display:flex;flex-direction:column;align-items:stretch;gap:0;}
.team-card-header{display:flex;align-items:flex-start;gap:12px;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.08);}
.team-card-rank-badge{display:flex;flex:0 0 28px;width:28px;height:40px;align-items:flex-start;justify-content:center;border-radius:36px;}
.team-card-rank-badge span{font-family:var(--font-en);font-style:italic;font-size:20px;font-weight:900;line-height:24px;color:rgba(255,255,255,.6);}
.team-card-rank-badge.is-first span{color:var(--ranking-accent-up);}
.team-card-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:4px;}
.team-card-name{margin:0;color:#fff;font-family:var(--font-kr);font-size:18px;font-weight:700;line-height:22px;letter-spacing:-.36px;word-break:keep-all;}
.team-card-meta{display:flex;align-items:center;gap:4px;color:rgba(255,255,255,.5);font-family:var(--font-kr);font-size:12px;font-weight:400;line-height:14px;letter-spacing:-.12px;}
.team-card-meta-divider{display:inline-block;width:1px;height:10px;background:var(--ranking-points-sep);}
.team-card-points{white-space:nowrap;margin-left:4px;color:rgba(255,255,255,.8);font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-.14px;}
.team-card-toggle{display:flex;align-items:center;gap:10px;padding:16px 0 0;border:0;background:transparent;cursor:pointer;width:100%;}
.team-card.is-open .team-card-toggle{padding-bottom:8px;}
.team-card-toggle-label{flex:1;text-align:left;color:#fff;font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-.14px;}
.team-card-toggle-icon{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex:0 0 16px;}
.team-card-toggle-icon img{display:block;width:16px;height:16px;}
.team-card-members{display:flex;align-items:flex-start;gap:8px;}
.team-card-members-col{display:flex;flex:1 1 0;min-width:0;flex-direction:column;gap:8px;}
.team-card-members-title{margin:0;color:#fff;font-family:var(--font-kr);font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.14px;}
.team-card-player-list{display:flex;flex-direction:column;}
.team-card-player{display:flex;align-items:center;gap:8px;padding:8px 0;}
.team-card-avatar{display:flex;flex:0 0 28px;width:28px;height:28px;align-items:center;justify-content:center;overflow:hidden;border-radius:50%;border:1px solid rgba(255,255,255,.5);background:var(--ranking-avatar-photo-bg);}
.team-card-avatar img{display:block;width:100%;height:100%;object-fit:cover;}
.team-card-player-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px;}
.team-card-player-name{margin:0;color:#fff;font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-.14px;word-break:keep-all;}
.team-card-player-pts{margin:0;color:rgba(255,255,255,.8);font-family:var(--font-kr);font-size:12px;font-weight:400;line-height:14px;letter-spacing:-.12px;}
.team-card-members-loading{padding:8px 0;color:rgba(255,255,255,.5);font-family:var(--font-kr);font-size:12px;font-weight:400;line-height:14px;}
.team-pagination{display:flex;justify-content:center;margin-top:24px;padding:8px 0;}
.team-pagination:empty{display:none;}
.team-empty{padding:40px 0;text-align:center;color:rgba(255,255,255,.5);font-family:var(--font-kr);font-size:14px;font-weight:400;line-height:18px;}
@media (max-width:359px){.team-card-header{flex-wrap:wrap;}.team-card-members{flex-direction:column;}.team-card-members-col{width:100%;flex:none;}}
.team-card-avatar-default img{object-fit:contain;object-position:bottom center;}
.team-card-all-btn{display:flex;align-items:center;justify-content:center;width:100%;padding:9px 16px;border-radius:24px;border:0;background:rgba(255,255,255,.05);color:#c9cdd2;font-family:var(--font-kr);font-size:14px;font-weight:400;line-height:18px;letter-spacing:-.14px;cursor:pointer;}
/* ── 성별 탭 nav (Figma 3638:18812 — pill/switch 스타일) ────── */
.team-gender-nav-inner{display:flex;align-items:center;padding:4px;border-radius:40px;background:rgba(255,255,255,.1);}
.team-gender-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:24px;border:0;background:transparent;color:#fff;font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-.14px;cursor:pointer;}
.team-gender-tab.is-active{background:#fff;color:#1b1d1f;box-shadow:0 2px 6px rgba(12,29,59,.1);}
/* ── 팀 카드 이름 클릭 커서 ─────────────────────────────────── */
.team-card-name{cursor:pointer;}
.team-card-name:hover{text-decoration:underline;}
/* ── 전체선수 모달 (Figma 3613:16481 — 풀스크린 var(--ranking-bg)) ─────── */
.team-modal-open{overflow:hidden;}
.team-modal{position:fixed;inset:0;z-index:9000;background:var(--ranking-bg);display:flex;justify-content:center;}
.team-modal-inner{width:100%;max-width:540px;display:flex;flex-direction:column;}
.team-modal-top{flex:0 0 54px;position:relative;}
.team-modal-close{position:absolute;top:7px;right:16px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;}
.team-modal-title{flex:0 0 auto;margin:24px 16px 0;color:#fff;font-family:var(--font-kr);font-size:24px;font-weight:700;line-height:28px;letter-spacing:-.48px;word-break:keep-all;}
.team-modal-body{flex:1;overflow-y:auto;margin-top:40px;padding:0 16px 120px;scrollbar-width:none;-ms-overflow-style:none;}
.team-modal-body::-webkit-scrollbar{display:none;}
.team-modal-row{display:flex;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid rgba(255,255,255,.1);}
.team-modal-row:first-child{padding-top:0;}
.team-modal-avatar{flex:0 0 36px;width:36px;height:36px;overflow:hidden;border-radius:50%;border:1px solid #e8ebed;background:var(--ranking-avatar-photo-bg);}
.team-modal-avatar img{display:block;width:100%;height:100%;object-fit:cover;}
.team-modal-name{flex:1;min-width:0;color:#fff;font-family:var(--font-kr);font-size:16px;font-weight:700;line-height:20px;letter-spacing:-.32px;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.team-modal-name:hover{text-decoration:underline;}
.team-modal-pts{flex:0 0 auto;white-space:nowrap;color:rgba(255,255,255,.8);font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-.14px;}
.team-modal-pts-type{margin-right:8px;color:rgba(255,255,255,.5);}
.team-modal-empty{padding:32px 0;text-align:center;color:rgba(255,255,255,.4);font-family:var(--font-kr);font-size:14px;}

/* 홈 랭킹 목록: 선수 1명인 행은 행 아무 데나 눌러도 선수 상세로 이동한다(home-cards.js 위임 클릭).
   복식 행은 선수가 둘이라 data-player-url 이 없고 이름 링크로만 이동하므로 커서도 바뀌지 않는다. */
li[data-player-url]{cursor:pointer;}

/* ============================================================
   메인 랭킹 안내 바텀시트 모달 (Figma 4097:2651 미체크 / 4097:3202 체크됨, index.php 전용)
   ============================================================ */
.home-notice-overlay{position:fixed;inset:0;z-index:9001;background:rgba(0,0,0,0.8);display:none;align-items:flex-end;justify-content:center;opacity:0;transition:opacity 0.2s ease;}
.home-notice-overlay.active{display:flex;opacity:1;}
.home-notice-sheet{width:100%;max-width:540px;height:372px;box-sizing:border-box;overflow:hidden;border-radius:16px 16px 0 0;display:flex;flex-direction:column;align-items:center;padding-top:54px;position:relative;background:linear-gradient(126deg,#112E66 0%,#661112 100%);}
.home-notice-sheet::before{content:"";position:absolute;left:15px;bottom:-90px;width:100%;min-width:444.655px;aspect-ratio:444.655/690.399;background:url(/images/figma/Union.svg) no-repeat center/contain;transform:rotate(2.788deg);pointer-events:none;}
.home-notice-sheet > *{position:relative;z-index:1;}
.home-notice-card{display:contents;}
.home-notice-card > *{position:relative;z-index:1;}
.home-notice-close-x{display:none;}
.home-notice-logo{width:328px;height:45px;display:flex;flex-direction:column;align-items:center;gap:10px;}
.home-notice-brand{display:block;height:12px;width:auto;}
.home-notice-rankings{display:block;height:23px;width:auto;}
.home-notice-divider{margin-top:24px;width:24px;height:2px;background:#fff;}
.home-notice-title-block{margin-top:20px;width:284px;display:flex;flex-direction:column;align-items:center;gap:11px;}
.home-notice-title{margin:0;color:#fff;font-family:var(--font-kr);font-size:20px;font-weight:700;line-height:24px;letter-spacing:-0.4px;text-align:center;}
.home-notice-desc{margin:0;color:#fff;font-family:var(--font-kr);font-size:18px;font-weight:400;line-height:22px;letter-spacing:-0.36px;text-align:center;}
.home-notice-btn{margin-top:24px;display:inline-flex;align-items:center;justify-content:center;width:154px;height:40px;padding:8px 24px;box-sizing:border-box;border-radius:24px;background:#fff;color:#1b1d1f;font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;text-decoration:none;}
.home-notice-bar{margin-top:32px;width:100%;height:52px;box-sizing:border-box;padding:16px;background:#1b1d1f;}
.home-notice-bar-row{display:flex;align-items:center;gap:8px;}
.home-notice-check{flex:0 0 20px;width:20px;height:20px;padding:0;border:0;background:transparent;cursor:pointer;}
.home-notice-check svg{display:block;}
.home-notice-check.is-checked circle{fill:#fff;stroke:none;}
.home-notice-check.is-checked path{stroke:#1b1d1f;}
.home-notice-label{flex:1 1 0;min-width:0;color:#fff;font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;text-align:left;}
.home-notice-close{flex:1 1 0;min-width:0;padding:0;border:0;background:transparent;color:#fff;font-family:var(--font-kr);font-size:14px;font-weight:700;line-height:18px;letter-spacing:-0.14px;text-align:right;cursor:pointer;}
body.home-notice-open{overflow:hidden;}
