.player-ranking-wrap { overflow-x:auto; border-radius:12px; }
.player-ranking-table { width:100%; min-width:800px; border-collapse:collapse; text-align:start; }
.player-ranking-table th { padding:18px 16px; background:var(--table-head); color:var(--accent-soft); font-size:13px; font-weight:850; letter-spacing:.045em; text-align:start; white-space:nowrap; }
.player-ranking-table td { padding:17px 16px; border-top:1px solid var(--line); color:var(--text-soft); vertical-align:middle; }
.player-ranking-table tbody tr:hover { background:var(--row-hover); }
.player-ranking-table th:first-child { width:64px; }
.player-ranking-table th:nth-child(2) { width:29%; }
.player-ranking-table th:nth-child(3) { width:23%; }
.player-ranking-table th:nth-child(4) { width:24%; }
.player-ranking-table .ranking-place { color:var(--muted); font:800 20px/1 var(--font-display); }
.player-ranking-table .ranking-place-top { color:var(--accent-soft); }
.ranking-player { display:flex; align-items:center; gap:12px; min-width:190px; }
.ranking-portrait { display:grid; place-items:center; flex:none; width:48px; height:48px; border:1px solid var(--line-bright); border-radius:50%; overflow:hidden; background:var(--panel-strong); }
.ranking-portrait img { display:block; width:100%; height:100%; object-fit:cover; object-position:center top; }
.ranking-portrait .account-icon { width:30px; height:30px; }
.ranking-player-copy { min-width:0; }
.ranking-player-name { display:flex; align-items:center; gap:7px; color:var(--text-strong); }
.ranking-player-name strong { font-size:16px; font-weight:800; line-height:1.45; overflow-wrap:anywhere; }
.ranking-player-copy small { display:block; margin:4px 0 0 31px; font-size:14px; color:var(--accent-soft); font-weight:650; }
.ranking-name-race { display:inline-flex; flex:none; width:24px; height:24px; border:0; background:none; }
.ranking-name-race img,.ranking-name-race .account-icon { width:24px; height:24px; }
.ranking-guild-link { display:inline-flex; align-items:center; gap:7px; color:var(--text-strong); font-size:14px; font-weight:700; line-height:1.4; max-width:100%; }
.ranking-guild-link:hover { color:var(--accent-soft); }
.ranking-guild-icons { display:inline-flex!important; flex:none; width:32px; height:16px; gap:0; padding:0; margin:0; overflow:hidden; }
.ranking-guild-icons img { display:block; flex:none; width:16px; height:16px; padding:0; margin:0; border-radius:0; }
.ranking-guild-name { min-width:0; overflow-wrap:anywhere; }
.ranking-no-guild { color:var(--muted); font-size:14px; }
.ranking-masteries .character-masteries { justify-content:flex-start; flex-wrap:wrap; min-width:120px; gap:7px; margin:0; }
.ranking-masteries .character-mastery-icon,.ranking-masteries .character-mastery-icon > img,.ranking-masteries .character-mastery-icon > .account-icon { width:32px; height:32px; }
.ranking-masteries .character-mastery-level { right:0; bottom:0; font-size:11px; }
.player-ranking-table .ranking-points { color:var(--accent-soft); font-size:17px; font-weight:850; font-variant-numeric:tabular-nums; white-space:nowrap; }
.player-ranking-table .ranking-empty { text-align:center; padding:34px; font-size:16px; }
.ranking-hall-header > div > span { font-size:12px; letter-spacing:.12em; }
.ranking-hall-header strong { font-size:clamp(29px,3vw,40px); }
.ranking-hall-header small { font-size:14px; line-height:1.5; color:#cdb5a8; }
.ranking-podium-card.place-2 { --podium-delay:.08s; }.ranking-podium-card.place-1 { --podium-delay:.18s; }.ranking-podium-card.place-3 { --podium-delay:.28s; }
.ranking-hall .podium-kicker { min-height:28px; font-size:12px; letter-spacing:.08em; padding:4px 9px; }
.ranking-hall .podium-copy strong { font-size:29px; line-height:1.3; white-space:normal; overflow-wrap:anywhere; }
.ranking-hall .place-1 .podium-copy strong { font-size:36px; }
.ranking-hall .podium-category { font-size:12px; color:#ceb1a2; line-height:1.5; letter-spacing:.05em; }
.ranking-hall .podium-avatar { overflow:hidden; }
.ranking-hall .podium-avatar img { width:100%; height:100%; object-fit:cover; object-position:center top; border-radius:50%; }
.ranking-hall .podium-stats > div { padding:15px 7px; }
.ranking-hall .podium-stats > div > span { color:#d2b6a6; font-size:12px; letter-spacing:.03em; }
.ranking-hall .podium-stats > div > b { color:#ffe9da; font-size:17px; line-height:1.45; white-space:normal; overflow-wrap:anywhere; }
.ranking-hall .podium-stats .ranking-guild-link { justify-content:center; flex-wrap:wrap; font-size:15px; }
.ranking-hall .podium-stats .ranking-guild-name { font-size:15px; color:inherit; white-space:normal; text-transform:none; letter-spacing:0; }
.ranking-hall .podium-stats .ranking-no-guild { font-size:14px; white-space:normal; text-transform:none; }
.guild-summary { font-size:18px; }
@media (max-width:950px) { .ranking-hall .podium-copy strong { font-size:24px; }.ranking-hall .place-1 .podium-copy strong { font-size:29px; }.ranking-hall .podium-stats > div > b { font-size:15px; } }
@media(prefers-reduced-motion:reduce) { .ranking-podium-card { animation:none; } }
/* V67: badge sits mostly outside the portrait; identity remains unobstructed. */
.ranking-portrait-wrap { position:relative; display:block; flex:none; width:48px; height:48px; margin-right:5px; }
.ranking-portrait-race { position:absolute; right:-5px; bottom:-3px; z-index:2; width:21px; height:21px; background:transparent; border:0; }
.ranking-portrait-race img { display:block; width:21px; height:21px; }
.ranking-player-copy small { margin-left:0; }
.public-character-link { color:inherit; }
.public-character-link:hover { color:var(--accent-soft); text-decoration:underline; text-underline-offset:4px; }
.public-character-link:focus-visible { outline:2px solid var(--accent); outline-offset:4px; border-radius:3px; }
.podium-portrait-frame { position:relative; overflow:visible; }
.podium-race { position:absolute; right:-4px; bottom:0; z-index:5; width:28px; height:28px; background:none; border:0; }
.podium-race img { display:block; width:28px; height:28px; }

.guild-ranking-table th:nth-child(2) { width:40%; }
.guild-ranking-table th:nth-child(3) { width:23%; }
.guild-ranking-table th:nth-child(4) { width:10%; }
.guild-ranking-table .guild-ranking-members { font-size:17px; font-weight:750; font-variant-numeric:tabular-nums; }
.guild-ranking-portrait img,.podium-mode-guild .podium-avatar img { object-fit:contain; padding:6px; }
.guild-fortress-line { display:flex; align-items:center; gap:8px; margin-top:9px; color:#f7b0a4; font-size:11px; font-weight:800; letter-spacing:.025em; line-height:1.35; }
.guild-fortress-line > img { display:block; flex:none; width:32px; height:32px; border-radius:50%; object-fit:contain; background:#0b0809; }
.job-ranking-filters { display:flex; justify-content:center; gap:12px; flex-wrap:wrap; margin:20px 0 30px; }
.job-filter { --job-color:#ffa1a1; display:flex; align-items:center; justify-content:center; gap:10px; min-width:145px; padding:13px 22px; border:1px solid var(--line-bright); border-radius:8px; color:var(--text-soft); background:var(--panel-strong); font-size:16px; font-weight:800; }
.job-filter img { width:20px; height:20px; object-fit:contain; }
.job-filter-trader { --job-color:#81d49a; }.job-filter-hunter { --job-color:#fdefda; }
.job-filter:hover,.job-filter.active { border-color:var(--job-color); color:var(--job-color); box-shadow:inset 0 0 18px #ffffff06,0 0 16px #0002; }
.ranking-generic .ranking-empty { padding:26px; text-align:center; color:var(--muted); }

/* V70: compact showcase, clear tabs, numeral-sized trophies. */
.ranking-page .ranking-tabs{margin:0 0 22px;border-color:var(--line-bright);border-radius:8px;overflow:hidden}
.ranking-page .ranking-tabs a{min-height:60px;padding:12px 10px;font-size:14px;letter-spacing:.025em;color:var(--text-soft);gap:9px}
.ranking-page .ranking-tabs .tab-media-icon{width:21px;height:21px}
.ranking-page .ranking-tabs a.active{background:linear-gradient(180deg,rgba(249,128,108,0.161),rgba(249,128,108,0.063));color:#ffc8bf;box-shadow:inset 0 -2px #f88573}
.ranking-page .ranking-tabs a:hover,.ranking-page .ranking-tabs a:focus-visible{color:#ffd4ce;background:rgba(249,142,124,0.102)}
.ranking-page .ranking-hall{padding:20px 18px 24px;margin-bottom:24px}
.ranking-page .ranking-hall-header{margin-bottom:16px}
.ranking-page .ranking-hall-header strong{font-size:clamp(25px,2.5vw,32px)}
.ranking-page .ranking-hall-header small{font-size:12px}
.ranking-page .ranking-podium-card{min-height:270px;padding:16px 14px 28px}
.ranking-page .ranking-podium-card.place-1{min-height:306px;padding-top:12px}
.ranking-page .podium-crown{height:24px}.ranking-page .podium-crown b{font-size:22px}
.ranking-page .podium-medal-stage{width:118px;height:54px;margin-top:0}
.ranking-page .place-1 .podium-medal-stage{height:60px}
.ranking-page .podium-medal{width:43px;height:50px}
.ranking-page .place-1 .podium-medal{width:49px;height:57px}
.ranking-page .medal-wing{width:30px}
.ranking-page .podium-portrait-frame{width:66px;height:66px;margin-top:-4px}
.ranking-page .place-1 .podium-portrait-frame{width:78px;height:78px;margin-top:-4px}
.ranking-page .podium-avatar{width:52px;height:52px;font-size:22px}
.ranking-page .place-1 .podium-avatar{width:62px;height:62px;font-size:26px}
.ranking-page .podium-race,.ranking-page .podium-race img{width:21px;height:21px}
.ranking-page .podium-copy{margin-top:12px}
.ranking-page .ranking-hall .podium-kicker{font-size:11px;min-height:22px;padding:2px 7px}
.ranking-page .ranking-hall .podium-copy strong{font-size:23px;line-height:1.25;margin-top:7px}
.ranking-page .ranking-hall .place-1 .podium-copy strong{font-size:27px}
.ranking-page .podium-category{font-size:11px;line-height:1.3;margin-top:4px}
.ranking-page .podium-stats{margin-top:12px}
.ranking-page .ranking-hall .podium-stats>div{padding:9px 5px}
.ranking-page .ranking-hall .podium-stats>div>span{font-size:11px}
.ranking-page .ranking-hall .podium-stats>div>b{font-size:15px;line-height:1.35}
.ranking-page .podium-pedestal{height:24px;width:96px}
.ranking-page .place-1 .podium-pedestal{height:27px;width:118px}
.ranking-page .podium-rank-ghost{font-size:145px}
.rank-cup{position:relative;display:inline-flex;width:1em;height:1em;vertical-align:middle;line-height:1;color:var(--cup-color);filter:drop-shadow(0 0 2px var(--cup-glow));animation:rankCupGlow 2.6s ease-in-out infinite}
.rank-cup-gold{--cup-color:#ffa393;--cup-glow:rgba(253,127,105,0.533)}.rank-cup-silver{--cup-color:#fdfad8;--cup-glow:rgba(255,250,196,0.467);animation-delay:.3s}.rank-cup-bronze{--cup-color:#f88b87;--cup-glow:rgba(239,84,83,0.467);animation-delay:.6s}
.rank-cup svg{display:block;width:100%;height:100%;fill:currentColor;overflow:visible}
.rank-cup .cup-handle{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round}
.rank-cup .cup-highlight{fill:none;stroke:#ffffff;stroke-width:1.2;stroke-linecap:round;opacity:.65}
@keyframes rankCupGlow{0%,100%{filter:drop-shadow(0 0 1px var(--cup-glow));opacity:.85}50%{filter:drop-shadow(0 0 3px var(--cup-glow));opacity:1}}
.union-ranking-table th:nth-child(2){width:34%}.union-ranking-table th:nth-child(3){width:28%}.union-ranking-table th:nth-child(4){width:12%}
.union-ranking-portrait img,.podium-mode-union .podium-avatar img{object-fit:contain;padding:5px}
@media(max-width:760px){.ranking-page .ranking-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.ranking-page .ranking-tabs a{min-height:54px;font-size:13px}.ranking-page .ranking-hall{padding-inline:12px}.ranking-page .ranking-podium-card,.ranking-page .ranking-podium-card.place-1{min-height:0;padding:16px 12px 30px}}
@media(prefers-reduced-motion:reduce){.rank-cup{animation:none}}

/* Stored ranks share the player identity treatment with four/five balanced columns. */
.stored-ranking-table{table-layout:fixed}.stored-ranking-table th:first-child{width:64px}.stored-ranking-table th:nth-child(2){width:auto}.stored-ranking-table th:nth-child(3){width:28%}.stored-ranking-table th:nth-child(4){width:20%}.stored-ranking-unique th:nth-child(3){width:24%}.stored-ranking-unique th:nth-child(4){width:20%}.stored-ranking-unique th:nth-child(5){width:16%}
@media(min-width:1200px){.ranking-page .ranking-tabs{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}
