/* ================================================
   RunnerOn - 명예의 전당 (Hall of Fame) Ranking
   ================================================ */

.runneron_ranking-page {
    position: relative;
    min-height: 100vh;
    background: radial-gradient(ellipse at top center, #0f1729 0%, #080c18 40%, #050812 100%);
    padding: 0 0 80px;
    overflow: hidden;
    overflow-x: hidden;
}

/* === 배경 별 반짝이 === */
.runneron_ranking-page::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(1px 1px at 10% 15%, rgba(255,255,255,0.4) 50%, transparent 50%),
        radial-gradient(1px 1px at 25% 35%, rgba(255,255,255,0.3) 50%, transparent 50%),
        radial-gradient(1.5px 1.5px at 40% 8%, rgba(255,215,0,0.5) 50%, transparent 50%),
        radial-gradient(1px 1px at 55% 45%, rgba(255,255,255,0.25) 50%, transparent 50%),
        radial-gradient(1px 1px at 70% 20%, rgba(255,255,255,0.35) 50%, transparent 50%),
        radial-gradient(1.5px 1.5px at 85% 55%, rgba(255,215,0,0.4) 50%, transparent 50%),
        radial-gradient(1px 1px at 15% 70%, rgba(255,255,255,0.2) 50%, transparent 50%),
        radial-gradient(1px 1px at 60% 80%, rgba(255,255,255,0.3) 50%, transparent 50%),
        radial-gradient(1px 1px at 90% 10%, rgba(255,255,255,0.3) 50%, transparent 50%),
        radial-gradient(1.5px 1.5px at 35% 90%, rgba(56,189,248,0.4) 50%, transparent 50%),
        radial-gradient(1px 1px at 75% 65%, rgba(255,255,255,0.2) 50%, transparent 50%),
        radial-gradient(1px 1px at 5% 50%, rgba(255,215,0,0.3) 50%, transparent 50%);
    animation: runneron_ranking-stars-twinkle 6s ease-in-out infinite alternate;
    pointer-events: none;
    z-index: 0;
}

@keyframes runneron_ranking-stars-twinkle {
    0% { opacity: 0.6; }
    100% { opacity: 1; }
}

/* 배경 파티클 애니메이션 */
.runneron_ranking-bg {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
}

.runneron_ranking-particle {
    position: absolute;
    border-radius: 50%;
    opacity: 0.15;
    filter: blur(60px);
    will-change: transform;
    transform: translateZ(0);
    contain: strict;
}

.runneron_ranking-particle--1 {
    width: 400px; height: 400px;
    background: radial-gradient(circle, #4e8fff, transparent);
    top: -100px; left: -100px;
    animation: runneron_ranking-float 20s ease-in-out infinite;
}

.runneron_ranking-particle--2 {
    width: 300px; height: 300px;
    background: radial-gradient(circle, #FFD700, transparent);
    top: 10%; right: -80px;
    animation: runneron_ranking-float 16s ease-in-out infinite reverse;
}

.runneron_ranking-particle--3 {
    width: 250px; height: 250px;
    background: radial-gradient(circle, #ff7f50, transparent);
    bottom: 20%; left: 10%;
    animation: runneron_ranking-float 22s ease-in-out infinite 3s;
}

.runneron_ranking-particle--4 {
    width: 200px; height: 200px;
    background: radial-gradient(circle, #a78bfa, transparent);
    top: 50%; right: 20%;
    animation: runneron_ranking-float 18s ease-in-out infinite 5s;
}

.runneron_ranking-particle--5 {
    width: 150px; height: 150px;
    background: radial-gradient(circle, #34d399, transparent);
    bottom: 10%; right: 5%;
    animation: runneron_ranking-float 24s ease-in-out infinite 2s;
}

@keyframes runneron_ranking-float {
    0%, 100% { transform: translate(0, 0) scale(1); }
    25% { transform: translate(30px, -40px) scale(1.1); }
    50% { transform: translate(-20px, 30px) scale(0.9); }
    75% { transform: translate(40px, 20px) scale(1.05); }
}

/* 히어로 타이틀 */
.runneron_ranking-hero {
    text-align: center;
    padding: 60px 0 40px;
    position: relative;
    z-index: 1;
}

.runneron_ranking-trophy-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 96px; height: 96px;
    border-radius: 50%;
    background: radial-gradient(circle at 30% 30%, rgba(255,215,0,0.25), rgba(255,165,0,0.08));
    border: 1px solid rgba(255,215,0,0.25);
    margin-bottom: 20px;
    animation: runneron_ranking-trophy-pulse 3s ease-in-out infinite;
    position: relative;
    box-shadow: 0 0 30px rgba(255,215,0,0.15), 0 0 80px rgba(255,215,0,0.06);
    transform: translateZ(0);
    will-change: transform, opacity;
}

/* 트로피 주변 회전 링 */
.runneron_ranking-trophy-icon::before {
    content: '';
    position: absolute;
    inset: -4px;
    border-radius: 50%;
    border: 2px solid transparent;
    border-top-color: rgba(255,215,0,0.4);
    border-right-color: rgba(255,165,0,0.2);
    animation: runneron_ranking-ring-spin 4s linear infinite;
}

.runneron_ranking-trophy-icon svg {
    width: 52px;
    height: 52px;
}

@keyframes runneron_ranking-trophy-pulse {
    0%, 100% { transform: scale(1); opacity: 0.85; }
    50% { transform: scale(1.08); opacity: 1; }
}

.runneron_ranking-title {
    font-size: clamp(28px, 5vw, 40px);
    font-weight: 900;
    letter-spacing: -0.03em;
    margin: 0 0 12px;
    background: linear-gradient(135deg, #FFD700 0%, #FFA500 30%, #ffffff 60%, #FFD700 100%);
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: runneron_ranking-shimmer 4s linear infinite;
}

@keyframes runneron_ranking-shimmer {
    0% { background-position: 0% center; }
    100% { background-position: 200% center; }
}

.runneron_ranking-subtitle {
    font-size: 15px;
    color: rgba(255,255,255,0.5);
    margin: 0;
    font-weight: 400;
}

/* 탭 */
.runneron_ranking-tabs {
    display: flex;
    justify-content: center;
    gap: 4px;
    margin-bottom: 48px;
    background: rgba(255,255,255,0.06);
    border-radius: 999px;
    padding: 4px;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    position: relative;
    z-index: 1;
    border: 1px solid rgba(255,255,255,0.08);
}

.runneron_ranking-tab {
    flex: 1;
    text-align: center;
    padding: 10px 20px;
    font-size: 14px;
    font-weight: 600;
    color: rgba(255,255,255,0.45);
    border-radius: 999px;
    transition: all 0.25s ease;
    text-decoration: none;
    white-space: nowrap;
}

.runneron_ranking-tab:hover {
    color: rgba(255,255,255,0.7);
}

.runneron_ranking-tab--active {
    background: linear-gradient(135deg, #4e8fff, #38bdf8);
    color: #ffffff;
    box-shadow: 0 4px 20px rgba(78,143,255,0.4);
}

/* 포디엄 (상위 3명) */
.runneron_ranking-podium {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 0;
    margin-bottom: 48px;
    padding: 0 20px;
    position: relative;
    z-index: 1;
}

.runneron_ranking-podium-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
    flex: 0 0 180px;
    padding: 20px 12px 0;
    border-radius: 24px 24px 0 0;
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.04);
    border-bottom: none;
    transition: transform 0.3s ease;
    cursor: default;
    contain: layout style;
    transform: translateZ(0);
}

.runneron_ranking-podium-item:hover {
    transform: translateY(-8px) translateZ(0);
}

.runneron_ranking-podium--gold {
    background: linear-gradient(180deg, rgba(255,215,0,0.06) 0%, rgba(255,215,0,0.02) 50%, transparent 100%);
    border-color: rgba(255,215,0,0.1);
}

.runneron_ranking-podium--gold:hover {
    transform: translateY(-8px) translateZ(0);
}

.runneron_ranking-podium--silver {
    background: linear-gradient(180deg, rgba(192,192,192,0.04) 0%, transparent 100%);
    border-color: rgba(192,192,192,0.06);
}

.runneron_ranking-podium--bronze {
    background: linear-gradient(180deg, rgba(205,127,50,0.04) 0%, transparent 100%);
    border-color: rgba(205,127,50,0.06);
}

/* === 1등 스포트라이트 광선 효과 === */
.runneron_ranking-podium-spotlight {
    position: absolute;
    top: -60px;
    left: 50%;
    transform: translateX(-50%);
    width: 300px;
    height: 300px;
    pointer-events: none;
    z-index: 0;
}

.runneron_ranking-podium-rays {
    position: absolute;
    inset: 0;
    background:
        conic-gradient(from 0deg at 50% 50%,
            transparent 0deg, rgba(255,215,0,0.06) 10deg, transparent 20deg,
            transparent 40deg, rgba(255,215,0,0.04) 50deg, transparent 60deg,
            transparent 80deg, rgba(255,215,0,0.06) 90deg, transparent 100deg,
            transparent 120deg, rgba(255,215,0,0.04) 130deg, transparent 140deg,
            transparent 160deg, rgba(255,215,0,0.06) 170deg, transparent 180deg,
            transparent 200deg, rgba(255,215,0,0.04) 210deg, transparent 220deg,
            transparent 240deg, rgba(255,215,0,0.06) 250deg, transparent 260deg,
            transparent 280deg, rgba(255,215,0,0.04) 290deg, transparent 300deg,
            transparent 320deg, rgba(255,215,0,0.06) 330deg, transparent 340deg,
            transparent 360deg
        );
    border-radius: 50%;
    animation: runneron_ranking-rays-spin 20s linear infinite;
    will-change: transform;
}

@keyframes runneron_ranking-rays-spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.runneron_ranking-podium-glow-ring {
    position: absolute;
    inset: 30%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255,215,0,0.15) 0%, rgba(255,165,0,0.05) 50%, transparent 70%);
    animation: runneron_ranking-glow-pulse 3s ease-in-out infinite;
}

@keyframes runneron_ranking-glow-pulse {
    0%, 100% { transform: scale(1); opacity: 0.6; }
    50% { transform: scale(1.3); opacity: 1; }
}

/* === 격차 표시 === */
.runneron_ranking-podium-gap {
    display: flex;
    align-items: center;
    gap: 3px;
    font-size: 11px;
    font-weight: 600;
    color: rgba(255,143,80,0.7);
    margin-top: 4px;
    padding: 3px 10px;
    background: rgba(255,143,80,0.08);
    border-radius: 999px;
    border: 1px solid rgba(255,143,80,0.12);
    white-space: nowrap;
}

.runneron_ranking-podium-crown {
    font-size: 28px;
    margin-bottom: -8px;
    animation: runneron_ranking-crown-bounce 2s ease-in-out infinite;
    filter: drop-shadow(0 4px 8px rgba(255,215,0,0.4));
    position: relative;
    z-index: 1;
}

@keyframes runneron_ranking-crown-bounce {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    25% { transform: translateY(-6px) rotate(-3deg); }
    75% { transform: translateY(-4px) rotate(3deg); }
}

.runneron_ranking-podium-medal {
    font-size: 24px;
    margin-bottom: 8px;
    position: relative;
    z-index: 1;
}

.runneron_ranking-podium-avatar-wrap {
    position: relative;
    width: 72px; height: 72px;
    margin-bottom: 12px;
    z-index: 1;
}

.runneron_ranking-podium-avatar-wrap--gold {
    width: 100px; height: 100px;
}

.runneron_ranking-podium-avatar-wrap::before {
    content: '';
    position: absolute;
    inset: -3px;
    border-radius: 50%;
    background: conic-gradient(from 0deg, rgba(192,192,192,0.6), rgba(192,192,192,0.2), rgba(192,192,192,0.6));
    animation: runneron_ranking-ring-spin 6s linear infinite;
    will-change: transform;
}

.runneron_ranking-podium--gold .runneron_ranking-podium-avatar-wrap::before {
    background: conic-gradient(from 0deg, #FFD700, #FFA500, #FFD700, #ffffff, #FFD700);
    animation: runneron_ranking-ring-spin 4s linear infinite;
}

.runneron_ranking-podium--bronze .runneron_ranking-podium-avatar-wrap::before {
    background: conic-gradient(from 0deg, #CD7F32, #8B4513, #CD7F32, #DEB887, #CD7F32);
}

@keyframes runneron_ranking-ring-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.runneron_ranking-podium-avatar {
    width: 100%; height: 100%;
    border-radius: 50%;
    object-fit: cover;
    position: relative;
    z-index: 1;
    background: #1e293b;
    border: 3px solid #0f172a;
}

.runneron_ranking-podium-rank {
    position: absolute;
    bottom: -4px; right: -4px;
    width: 24px; height: 24px;
    border-radius: 50%;
    background: #1e293b;
    border: 2px solid #334155;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 800;
    color: #fff;
    z-index: 2;
}

.runneron_ranking-podium--gold .runneron_ranking-podium-rank {
    background: linear-gradient(135deg, #FFD700, #FFA500);
    border-color: #FFD700;
    color: #1a1a1a;
}

.runneron_ranking-podium--silver .runneron_ranking-podium-rank {
    background: linear-gradient(135deg, #C0C0C0, #A0A0A0);
    border-color: #C0C0C0;
    color: #1a1a1a;
}

.runneron_ranking-podium--bronze .runneron_ranking-podium-rank {
    background: linear-gradient(135deg, #CD7F32, #8B4513);
    border-color: #CD7F32;
}

.runneron_ranking-podium-name {
    font-size: 15px;
    font-weight: 700;
    color: rgba(255,255,255,0.9);
    margin-bottom: 2px;
    position: relative;
    z-index: 1;
    word-break: keep-all;
    text-align: center;
}

.runneron_ranking-podium-name--gold {
    font-size: 19px;
    background: linear-gradient(135deg, #FFD700, #FFA500);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    filter: drop-shadow(0 2px 4px rgba(255,215,0,0.3));
}

.runneron_ranking-podium-realname {
    font-size: 12px;
    color: rgba(255,255,255,0.35);
    margin-bottom: 6px;
    position: relative;
    z-index: 1;
}

.runneron_ranking-podium-distance {
    font-size: 18px;
    font-weight: 800;
    color: rgba(255,255,255,0.85);
    font-feature-settings: "tnum";
    position: relative;
    z-index: 1;
    white-space: nowrap;
}

.runneron_ranking-podium-distance--gold {
    font-size: 26px;
    background: linear-gradient(135deg, #FFD700 0%, #FFA500 40%, #ffffff 70%, #FFD700 100%);
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: none;
    animation: runneron_ranking-shimmer 4s linear infinite;
    position: relative;
}

.runneron_ranking-podium-bar {
    width: 100%;
    margin-top: 16px;
    border-radius: 12px 12px 0 0;
    position: relative;
    overflow: hidden;
    transform-origin: bottom center;
    transform: scaleY(0) translateZ(0);
    opacity: 0;
    transition: transform 1s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.4s ease;
    will-change: transform, opacity;
}

.runneron_ranking-podium-bar.runneron_ranking-bar-animate {
    transform: scaleY(1) translateZ(0);
    opacity: 1;
}

.runneron_ranking-podium-bar--gold {
    height: 130px;
    background: linear-gradient(180deg, rgba(255,215,0,0.30) 0%, rgba(255,165,0,0.12) 40%, rgba(255,165,0,0.05) 100%);
    border: 1px solid rgba(255,215,0,0.25);
    border-bottom: none;
    box-shadow: 0 -10px 50px rgba(255,215,0,0.15), inset 0 1px 0 rgba(255,215,0,0.3);
    border-radius: 16px 16px 0 0;
}

/* 골드 바 내부 빛나는 필 효과 */
.runneron_ranking-podium-bar-fill {
    position: absolute;
    inset: 0;
    background:
        linear-gradient(180deg, rgba(255,215,0,0.15) 0%, transparent 50%),
        radial-gradient(ellipse at 30% 20%, rgba(255,215,0,0.1), transparent 60%),
        radial-gradient(ellipse at 70% 60%, rgba(255,165,0,0.08), transparent 60%);
    animation: runneron_ranking-bar-fill-pulse 2.5s ease-in-out infinite;
}

@keyframes runneron_ranking-bar-fill-pulse {
    0%, 100% { opacity: 0.5; }
    50% { opacity: 1; }
}

/* 골드 바 숫자 */
.runneron_ranking-podium-bar--gold::before {
    content: '1';
    position: absolute;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 36px;
    font-weight: 900;
    color: rgba(255,215,0,0.12);
    z-index: 1;
    font-feature-settings: "tnum";
}

.runneron_ranking-podium-bar--silver {
    height: 90px;
    background: linear-gradient(180deg, rgba(192,192,192,0.22) 0%, rgba(192,192,192,0.06) 100%);
    border: 1px solid rgba(192,192,192,0.18);
    border-bottom: none;
    box-shadow: inset 0 1px 0 rgba(192,192,192,0.2);
    border-radius: 12px 12px 0 0;
}

.runneron_ranking-podium-bar--silver::before {
    content: '2';
    position: absolute;
    bottom: 10px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 28px;
    font-weight: 900;
    color: rgba(192,192,192,0.1);
    z-index: 1;
}

.runneron_ranking-podium-bar--bronze {
    height: 65px;
    background: linear-gradient(180deg, rgba(205,127,50,0.22) 0%, rgba(205,127,50,0.06) 100%);
    border: 1px solid rgba(205,127,50,0.18);
    border-bottom: none;
    box-shadow: inset 0 1px 0 rgba(205,127,50,0.2);
    border-radius: 12px 12px 0 0;
}

.runneron_ranking-podium-bar--bronze::before {
    content: '3';
    position: absolute;
    bottom: 8px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 24px;
    font-weight: 900;
    color: rgba(205,127,50,0.1);
    z-index: 1;
}

/* 바 상단 빛 슬라이드 */
.runneron_ranking-podium-bar::after {
    content: '';
    position: absolute;
    top: 0; left: -100%; right: 0; bottom: 0;
    width: 200%;
    background: linear-gradient(90deg, transparent 30%, rgba(255,255,255,0.1) 50%, transparent 70%);
    animation: runneron_ranking-bar-gleam 5s ease-in-out infinite;
    will-change: transform;
    transform: translateZ(0);
}

@keyframes runneron_ranking-bar-gleam {
    0%, 100% { transform: translateX(-50%) translateZ(0); }
    50% { transform: translateX(50%) translateZ(0); }
}

/* 랭킹 리스트 */
.runneron_ranking-list {
    max-width: 800px;
    margin: 0 auto;
    position: relative;
    z-index: 1;
    padding: 0 12px;
}

.runneron_ranking-list-header {
    display: grid;
    grid-template-columns: 60px 1fr 80px 100px 100px;
    padding: 12px 20px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255,255,255,0.3);
    border-bottom: 1px solid rgba(255,255,255,0.06);
}

.runneron_ranking-row {
    display: grid;
    grid-template-columns: 60px 1fr 80px 100px 100px;
    align-items: center;
    padding: 14px 20px;
    border-radius: 16px;
    margin-bottom: 6px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.04);
    transition: transform 0.2s ease, background 0.2s ease;
    position: relative;
    overflow: hidden;
    contain: layout style;
    transform: translateZ(0);
}

.runneron_ranking-row::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.02), transparent);
    opacity: 0;
    transition: opacity 0.3s ease;
}

.runneron_ranking-row:hover {
    background: rgba(255,255,255,0.06);
    transform: translateX(4px) translateZ(0);
}

.runneron_ranking-row:hover::before {
    opacity: 1;
}

/* 메달 랭크 행 */
.runneron_ranking-row--gold {
    background: linear-gradient(90deg, rgba(255,215,0,0.08) 0%, rgba(255,215,0,0.02) 100%);
    border-color: rgba(255,215,0,0.15);
    position: relative;
}

/* 1등 행 빛나는 좌측 보더 */
.runneron_ranking-row--gold::after {
    content: '';
    position: absolute;
    top: 4px;
    bottom: 4px;
    left: 0;
    width: 3px;
    border-radius: 0 3px 3px 0;
    background: linear-gradient(180deg, #FFD700, #FFA500);
    box-shadow: 0 0 12px rgba(255,215,0,0.5);
    animation: runneron_ranking-gold-border-pulse 2s ease-in-out infinite;
}

@keyframes runneron_ranking-gold-border-pulse {
    0%, 100% { opacity: 0.7; }
    50% { opacity: 1; }
}

.runneron_ranking-row--gold:hover {
    background: linear-gradient(90deg, rgba(255,215,0,0.14) 0%, rgba(255,215,0,0.04) 100%);
}

.runneron_ranking-row--silver {
    background: linear-gradient(90deg, rgba(192,192,192,0.06) 0%, rgba(192,192,192,0.01) 100%);
    border-color: rgba(192,192,192,0.1);
}

.runneron_ranking-row--silver:hover {
    background: rgba(192,192,192,0.06);
}

.runneron_ranking-row--bronze {
    background: linear-gradient(90deg, rgba(205,127,50,0.06) 0%, rgba(205,127,50,0.01) 100%);
    border-color: rgba(205,127,50,0.1);
}

.runneron_ranking-row--bronze:hover {
    background: rgba(205,127,50,0.06);
}

/* 행 내부 요소 */
.runneron_ranking-row-rank {
    display: flex;
    align-items: center;
    justify-content: center;
}

.runneron_ranking-rank-badge {
    display: flex;
    align-items: center;
    justify-content: center;
    animation: runneron_ranking-badge-glow 2s ease-in-out infinite;
}

.runneron_ranking-rank-badge--gold {
    filter: drop-shadow(0 2px 8px rgba(255,215,0,0.4));
}

.runneron_ranking-rank-badge--silver {
    filter: drop-shadow(0 2px 8px rgba(192,192,192,0.3));
}

.runneron_ranking-rank-badge--bronze {
    filter: drop-shadow(0 2px 8px rgba(205,127,50,0.3));
}

@keyframes runneron_ranking-badge-glow {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.1); }
}

.runneron_ranking-rank-number {
    font-size: 16px;
    font-weight: 800;
    color: rgba(255,255,255,0.4);
    font-feature-settings: "tnum";
}

.runneron_ranking-row-user {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.runneron_ranking-row-avatar {
    width: 40px; height: 40px;
    border-radius: 50%;
    object-fit: cover;
    background: #1e293b;
    border: 2px solid rgba(255,255,255,0.08);
    flex-shrink: 0;
}

.runneron_ranking-row--gold .runneron_ranking-row-avatar {
    border-color: rgba(255,215,0,0.3);
}

.runneron_ranking-row-names {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.runneron_ranking-row-nickname {
    font-size: 14px;
    font-weight: 700;
    color: rgba(255,255,255,0.9);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.runneron_ranking-row--gold .runneron_ranking-row-nickname {
    background: linear-gradient(90deg, #FFD700, #FFA500);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.runneron_ranking-row-realname {
    font-size: 12px;
    color: rgba(255,255,255,0.3);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.runneron_ranking-row-runs,
.runneron_ranking-row-pace {
    font-size: 13px;
    color: rgba(255,255,255,0.4);
    font-feature-settings: "tnum";
    text-align: center;
}

.runneron_ranking-row-distance {
    text-align: right;
    font-feature-settings: "tnum";
    white-space: nowrap;
}

.runneron_ranking-distance-value {
    font-size: 18px;
    font-weight: 800;
    color: rgba(255,255,255,0.9);
}

.runneron_ranking-row--gold .runneron_ranking-distance-value {
    color: #FFD700;
}

.runneron_ranking-distance-unit {
    font-size: 12px;
    font-weight: 600;
    color: rgba(255,255,255,0.35);
    margin-left: 3px;
}

/* CTA */
.runneron_ranking-cta {
    max-width: 640px;
    margin: 60px auto 0;
    padding: 48px 36px;
    text-align: center;
    border-radius: 28px;
    background: linear-gradient(135deg, rgba(78,143,255,0.06) 0%, rgba(56,189,248,0.04) 50%, rgba(255,215,0,0.04) 100%);
    border: 1px solid rgba(255,255,255,0.08);
    position: relative;
    z-index: 1;
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.runneron_ranking-cta:hover {
    transform: translateY(-4px) translateZ(0);
}

.runneron_ranking-cta-glow {
    position: absolute;
    top: -60px; left: 50%;
    transform: translateX(-50%);
    width: 300px; height: 300px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(78,143,255,0.12), rgba(255,215,0,0.06) 40%, transparent 70%);
    pointer-events: none;
    animation: runneron_ranking-cta-glow-pulse 4s ease-in-out infinite;
}

@keyframes runneron_ranking-cta-glow-pulse {
    0%, 100% { transform: translateX(-50%) scale(1) translateZ(0); opacity: 0.6; }
    50% { transform: translateX(-50%) scale(1.2) translateZ(0); opacity: 1; }
}

.runneron_ranking-cta-emoji {
    font-size: 40px;
    margin-bottom: 12px;
    animation: runneron_ranking-cta-emoji-bounce 2s ease-in-out infinite;
}

@keyframes runneron_ranking-cta-emoji-bounce {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.15) rotate(5deg); }
}

.runneron_ranking-cta-title {
    font-size: 22px;
    font-weight: 800;
    color: #ffffff;
    margin: 0 0 10px;
    position: relative;
}

.runneron_ranking-cta-text {
    font-size: 15px;
    color: rgba(255,255,255,0.5);
    margin: 0 0 28px;
    line-height: 1.6;
}

.runneron_ranking-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 32px;
    font-size: 15px;
    font-weight: 700;
    color: #ffffff;
    background: linear-gradient(135deg, #4e8fff, #38bdf8);
    border-radius: 999px;
    text-decoration: none;
    box-shadow: 0 8px 30px rgba(78,143,255,0.35);
    transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
    position: relative;
    overflow: hidden;
}

.runneron_ranking-cta-btn::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
    transform: translateX(-100%);
    transition: transform 0.5s ease;
}

.runneron_ranking-cta-btn:hover {
    transform: translateY(-3px) scale(1.02) translateZ(0);
}

.runneron_ranking-cta-btn:hover::before {
    transform: translateX(100%);
}

/* 애니메이션 */
.runneron_ranking-fadein {
    opacity: 0;
    transform: translateY(40px) scale(0.95) translateZ(0);
    animation: runneron_ranking-fadein-anim 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    will-change: transform, opacity;
}

@keyframes runneron_ranking-fadein-anim {
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.runneron_ranking-slidein {
    opacity: 0;
    transform: translateX(-24px) translateZ(0);
    animation: runneron_ranking-slidein-anim 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    will-change: transform, opacity;
}

@keyframes runneron_ranking-slidein-anim {
    to {
        opacity: 1;
        transform: translateX(0) translateZ(0);
    }
}

/* ========================================
   반응형 - 태블릿 (768px)
   ======================================== */
@media (max-width: 768px) {
    .runneron_ranking-hero {
        padding: 40px 16px 30px;
    }

    .runneron_ranking-podium {
        gap: 6px;
        padding: 0 12px;
    }

    .runneron_ranking-podium-item {
        flex: 1 1 0;
        min-width: 0;
        max-width: 140px;
        padding: 14px 8px 0;
    }

    .runneron_ranking-podium-avatar-wrap {
        width: 56px; height: 56px;
    }

    .runneron_ranking-podium-avatar-wrap--gold {
        width: 72px; height: 72px;
    }

    .runneron_ranking-podium-name { font-size: 13px; }
    .runneron_ranking-podium-distance { font-size: 15px; }
    .runneron_ranking-podium-distance--gold { font-size: 18px; }

    .runneron_ranking-podium-bar--gold { height: 90px; }
    .runneron_ranking-podium-bar--silver { height: 60px; }
    .runneron_ranking-podium-bar--bronze { height: 40px; }

    .runneron_ranking-podium-spotlight { width: 180px; height: 180px; top: -30px; }
    .runneron_ranking-podium-gap { font-size: 10px; padding: 2px 8px; }

    .runneron_ranking-podium-bar--gold::before { font-size: 28px; }
    .runneron_ranking-podium-bar--silver::before { font-size: 22px; }
    .runneron_ranking-podium-bar--bronze::before { font-size: 18px; }

    .runneron_ranking-list-header {
        grid-template-columns: 44px 1fr 90px;
        font-size: 10px;
        padding: 12px 14px;
    }

    .runneron_ranking-list-header .runneron_ranking-list-col-runs,
    .runneron_ranking-list-header .runneron_ranking-list-col-pace {
        display: none;
    }

    .runneron_ranking-row {
        grid-template-columns: 44px 1fr 90px;
        padding: 12px 14px;
    }

    .runneron_ranking-row-runs,
    .runneron_ranking-row-pace {
        display: none;
    }

    .runneron_ranking-row-avatar {
        width: 34px; height: 34px;
    }

    .runneron_ranking-row-nickname { font-size: 13px; }
    .runneron_ranking-distance-value { font-size: 15px; }

    .runneron_ranking-row:hover {
        transform: none;
    }

    .runneron_ranking-cta {
        margin: 40px 12px 0;
        padding: 28px 20px;
    }

    .runneron_ranking-cta-title { font-size: 18px; }
    .runneron_ranking-cta-text { font-size: 14px; }

    /* 모바일 성능 최적화: 무한 애니메이션 + 무거운 효과 제거 */
    .runneron_ranking-podium-item {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }

    .runneron_ranking-particle { display: none; }
    .runneron_ranking-stars { display: none; }
    .runneron_ranking-podium-crown { filter: none; animation: none; }
    .runneron_ranking-podium-spotlight { animation: none; }
    .runneron_ranking-podium-avatar-ring { animation: none; }
    .runneron_ranking-podium-avatar-wrap--gold::after { animation: none; }
    .runneron_ranking-podium-avatar-wrap--gold { animation: none; }
    .runneron_ranking-podium-distance--gold { animation: none; }
    .runneron_ranking-podium-bar::after { animation: none; }
    .runneron_ranking-podium-bar--gold { animation: none; }
    .runneron_ranking-row--gold { animation: none; }
    .runneron_ranking-cta::before { animation: none; }

    .runneron_ranking-rank-badge--gold,
    .runneron_ranking-rank-badge--silver,
    .runneron_ranking-rank-badge--bronze {
        filter: none;
        animation: none;
    }

    /* 스포트라이트 모바일 */
    .runneron_ranking-spotlight-avatar-wrap {
        width: 110px;
        height: 110px;
    }

    .runneron_ranking-spotlight-crown {
        font-size: 36px;
    }

    .runneron_ranking-spotlight-particles {
        inset: -40px;
    }

    .runneron_ranking-spotlight-bg {
        background: rgba(5,8,18,0.97);
    }
}

/* ========================================
   반응형 - 모바일 (480px)
   ======================================== */
@media (max-width: 480px) {
    .runneron_ranking-hero {
        padding: 32px 12px 24px;
    }

    .runneron_ranking-trophy-icon {
        width: 72px;
        height: 72px;
        margin-bottom: 16px;
    }

    .runneron_ranking-trophy-icon svg {
        width: 40px;
        height: 40px;
    }

    .runneron_ranking-subtitle {
        font-size: 13px;
        padding: 0 12px;
    }

    .runneron_ranking-podium {
        gap: 4px;
        padding: 0 8px;
    }

    .runneron_ranking-podium-item {
        flex: 1 1 0;
        min-width: 0;
        max-width: 120px;
        padding: 10px 6px 0;
    }

    .runneron_ranking-podium-avatar-wrap {
        width: 44px; height: 44px;
    }

    .runneron_ranking-podium-avatar-wrap--gold {
        width: 56px; height: 56px;
    }

    .runneron_ranking-podium-name { font-size: 11px; }
    .runneron_ranking-podium-name--gold { font-size: 13px; }
    .runneron_ranking-podium-realname { font-size: 10px; }
    .runneron_ranking-podium-distance { font-size: 13px; }
    .runneron_ranking-podium-distance--gold { font-size: 16px; }
    .runneron_ranking-podium-crown { font-size: 20px; }
    .runneron_ranking-podium-medal { font-size: 16px; margin-bottom: 4px; }

    .runneron_ranking-podium-spotlight { width: 120px; height: 120px; top: -20px; }
    .runneron_ranking-podium-gap { display: none; }

    .runneron_ranking-podium-bar--gold { height: 70px; }
    .runneron_ranking-podium-bar--silver { height: 45px; }
    .runneron_ranking-podium-bar--bronze { height: 30px; }

    .runneron_ranking-podium-bar--gold::before { font-size: 22px; }
    .runneron_ranking-podium-bar--silver::before { font-size: 18px; }
    .runneron_ranking-podium-bar--bronze::before { font-size: 16px; }

    .runneron_ranking-podium-rank {
        width: 20px; height: 20px;
        font-size: 9px;
    }

    .runneron_ranking-tabs {
        max-width: 100%;
        margin-left: 12px;
        margin-right: 12px;
        margin-bottom: 32px;
    }

    .runneron_ranking-tab {
        padding: 8px 10px;
        font-size: 13px;
    }

    .runneron_ranking-list {
        padding: 0 8px;
    }

    .runneron_ranking-list-header {
        grid-template-columns: 36px 1fr 72px;
        padding: 10px 10px;
        font-size: 9px;
    }

    .runneron_ranking-row {
        grid-template-columns: 36px 1fr 72px;
        padding: 10px 10px;
        border-radius: 12px;
        margin-bottom: 4px;
    }

    .runneron_ranking-row-avatar {
        width: 30px; height: 30px;
    }

    .runneron_ranking-row-user {
        gap: 8px;
    }

    .runneron_ranking-row-nickname { font-size: 12px; }
    .runneron_ranking-row-realname { font-size: 10px; }
    .runneron_ranking-distance-value { font-size: 14px; }
    .runneron_ranking-distance-unit { font-size: 10px; }
    .runneron_ranking-rank-number { font-size: 14px; }

    .runneron_ranking-rank-badge svg {
        width: 16px; height: 16px;
    }

    .runneron_ranking-cta {
        margin: 32px 8px 0;
        padding: 24px 16px;
        border-radius: 20px;
    }

    .runneron_ranking-cta-emoji { font-size: 32px; }
    .runneron_ranking-cta-title { font-size: 16px; }
    .runneron_ranking-cta-text { font-size: 13px; margin-bottom: 20px; }
    .runneron_ranking-cta-btn { padding: 12px 24px; font-size: 14px; }

    /* 스포트라이트 모바일 */
    .runneron_ranking-spotlight-avatar-wrap {
        width: 90px;
        height: 90px;
    }

    .runneron_ranking-spotlight-crown {
        font-size: 30px;
    }

    .runneron_ranking-spotlight-label {
        font-size: 12px;
    }

    .runneron_ranking-spotlight-realname {
        font-size: 13px;
    }

    .runneron_ranking-spotlight-particles {
        inset: -20px;
    }

    /* 모바일 성능: 파티클 축소 */
    .runneron_ranking-particle--1 { width: 200px; height: 200px; }
    .runneron_ranking-particle--2 { width: 150px; height: 150px; }
    .runneron_ranking-particle--3,
    .runneron_ranking-particle--4,
    .runneron_ranking-particle--5 { display: none; }
}

/* ========================================
   극소형 모바일 (360px 이하)
   ======================================== */
@media (max-width: 360px) {
    .runneron_ranking-podium {
        padding: 0 4px;
    }

    .runneron_ranking-podium-item {
        max-width: 105px;
        padding: 8px 4px 0;
    }

    .runneron_ranking-podium-avatar-wrap {
        width: 38px; height: 38px;
    }

    .runneron_ranking-podium-avatar-wrap--gold {
        width: 48px; height: 48px;
    }

    .runneron_ranking-podium-name { font-size: 10px; }
    .runneron_ranking-podium-name--gold { font-size: 12px; }
    .runneron_ranking-podium-distance { font-size: 12px; }
    .runneron_ranking-podium-distance--gold { font-size: 14px; }
    .runneron_ranking-podium-crown { font-size: 16px; }
    .runneron_ranking-podium-medal { font-size: 14px; }

    .runneron_ranking-list-header {
        grid-template-columns: 32px 1fr 64px;
    }

    .runneron_ranking-row {
        grid-template-columns: 32px 1fr 64px;
        padding: 8px 8px;
    }

    .runneron_ranking-row-avatar {
        width: 26px; height: 26px;
    }

    .runneron_ranking-distance-value { font-size: 13px; }
}

/* ========================================
   모바일 성능 최적화 - 무거운 애니메이션 감소
   ======================================== */
@media (max-width: 768px) {
    /* 지속적으로 도는 ring spin → 느리게 */
    .runneron_ranking-podium-avatar-wrap::before {
        animation-duration: 12s;
    }

    .runneron_ranking-podium--gold .runneron_ranking-podium-avatar-wrap::before {
        animation-duration: 8s;
        box-shadow: none;
    }

    /* 광선 회전 애니 → 멈춤 (모바일에서 불필요) */
    .runneron_ranking-podium-rays {
        animation: none;
    }

    .runneron_ranking-podium-glow-ring {
        animation: none;
        opacity: 0.8;
    }

    /* 바 빛 슬라이드 → 멈춤 */
    .runneron_ranking-podium-bar::after {
        animation: none;
        opacity: 0;
    }

    /* bar fill pulse → 멈춤 */
    .runneron_ranking-podium-bar-fill {
        animation: none;
        opacity: 0.7;
    }

    /* 별 반짝임 → 멈춤 */
    .runneron_ranking-page::before {
        animation: none;
        opacity: 0.8;
    }

    /* 파티클 float → 느리게 */
    .runneron_ranking-particle--1 { animation-duration: 40s; }
    .runneron_ranking-particle--2 { animation-duration: 32s; }
    .runneron_ranking-particle--3 { animation-duration: 44s; }

    /* badge glow → 멈춤 */
    .runneron_ranking-rank-badge {
        animation: none;
    }

    /* gold border pulse → 정적 */
    .runneron_ranking-row--gold::after {
        animation: none;
        opacity: 0.85;
    }

    /* CTA glow → 정적 */
    .runneron_ranking-cta-glow {
        animation: none;
        opacity: 0.8;
    }

    .runneron_ranking-cta-emoji {
        animation: none;
    }

    /* 트로피 pulse → 정적 */
    .runneron_ranking-trophy-icon {
        animation: none;
        box-shadow: 0 0 30px rgba(255,215,0,0.15), 0 0 80px rgba(255,215,0,0.06);
    }

    .runneron_ranking-trophy-icon::before {
        animation-duration: 8s;
    }

    /* crown bounce → 멈춤 */
    .runneron_ranking-podium-crown {
        animation: none;
    }

    /* shimmer 유지하되 느리게 */
    .runneron_ranking-title {
        animation-duration: 8s;
    }

    .runneron_ranking-podium-distance--gold {
        animation-duration: 8s;
    }

    /* spotlight sparkle → 줄임 */
    .runneron_ranking-spotlight-sparkle {
        animation-duration: 5s;
    }

    .runneron_ranking-spotlight-sparkle--3,
    .runneron_ranking-spotlight-sparkle--4,
    .runneron_ranking-spotlight-sparkle--7,
    .runneron_ranking-spotlight-sparkle--8 {
        display: none;
    }

    /* slidein/fadein → 더 짧은 애니메이션 */
    .runneron_ranking-fadein {
        animation-duration: 0.4s;
    }

    .runneron_ranking-slidein {
        animation-duration: 0.3s;
    }
}

/* prefers-reduced-motion: 모든 애니메이션 비활성화 */
@media (prefers-reduced-motion: reduce) {
    .runneron_ranking-page::before,
    .runneron_ranking-particle,
    .runneron_ranking-trophy-icon,
    .runneron_ranking-trophy-icon::before,
    .runneron_ranking-title,
    .runneron_ranking-podium-crown,
    .runneron_ranking-podium-avatar-wrap::before,
    .runneron_ranking-podium-rays,
    .runneron_ranking-podium-glow-ring,
    .runneron_ranking-podium-distance--gold,
    .runneron_ranking-podium-bar::after,
    .runneron_ranking-podium-bar-fill,
    .runneron_ranking-row--gold::after,
    .runneron_ranking-rank-badge,
    .runneron_ranking-cta-glow,
    .runneron_ranking-cta-emoji,
    .runneron_ranking-spotlight-sparkle,
    .runneron_ranking-spotlight-crown,
    .runneron_ranking-spotlight-avatar-wrap::before {
        animation: none !important;
    }

    .runneron_ranking-fadein,
    .runneron_ranking-slidein {
        opacity: 1;
        transform: none;
        animation: none !important;
    }
}

/* 랭킹 페이지에서 헤더/푸터 테마 보정 */
.runneron_ranking-page ~ .runneron_footer,
.runneron_ranking-page + .runneron_footer {
    border-top-color: rgba(255,255,255,0.06);
    background: #0a0e1a;
    color: rgba(255,255,255,0.4);
}

/* ================================================
   Champion Spotlight Overlay
   ================================================ */
.runneron_ranking-spotlight {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    -webkit-overflow-scrolling: touch;
    touch-action: none;
}

.runneron_ranking-spotlight-bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 400px 400px at center, rgba(255,215,0,0.10) 0%, transparent 70%),
        rgba(5,8,18,0.96);
}

.runneron_ranking-spotlight-content {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 4px;
    padding: 20px;
    max-width: 100vw;
    overflow: hidden;
}

/* Crown */
.runneron_ranking-spotlight-crown {
    font-size: 48px;
    margin-bottom: -4px;
    animation: runneron_ranking-spotlight-crown-bounce 1.5s ease-in-out infinite;
    filter: drop-shadow(0 6px 16px rgba(255,215,0,0.5));
}

@keyframes runneron_ranking-spotlight-crown-bounce {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    30% { transform: translateY(-10px) rotate(-4deg); }
    70% { transform: translateY(-6px) rotate(4deg); }
}

/* Avatar with rotating gold ring */
.runneron_ranking-spotlight-avatar-wrap {
    position: relative;
    width: 140px;
    height: 140px;
    margin: 8px 0 16px;
}

.runneron_ranking-spotlight-avatar-wrap::before {
    content: '';
    position: absolute;
    inset: -5px;
    border-radius: 50%;
    background: conic-gradient(from 0deg, #FFD700, #FFA500, #FFD700, #ffffff, #FFD700);
    animation: runneron_ranking-spotlight-ring-spin 4s linear infinite;
    will-change: transform;
    transform: translateZ(0);
}

@keyframes runneron_ranking-spotlight-ring-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.runneron_ranking-spotlight-avatar {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    position: relative;
    z-index: 1;
    background: #1e293b;
    border: 4px solid #0f172a;
}

/* Label */
.runneron_ranking-spotlight-label {
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255,215,0,0.8);
    margin-bottom: 4px;
}

/* Champion name */
.runneron_ranking-spotlight-name {
    font-size: clamp(32px, 7vw, 52px);
    font-weight: 900;
    letter-spacing: -0.02em;
    background: linear-gradient(135deg, #FFD700 0%, #FFA500 40%, #ffffff 70%, #FFD700 100%);
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: runneron_ranking-shimmer 3s linear infinite;
    line-height: 1.2;
    max-width: 90vw;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Distance */
.runneron_ranking-spotlight-distance {
    margin-top: 8px;
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.runneron_ranking-spotlight-distance-num {
    font-size: clamp(48px, 10vw, 72px);
    font-weight: 900;
    color: #ffffff;
    font-feature-settings: "tnum";
    line-height: 1;
    text-shadow: 0 4px 30px rgba(255,215,0,0.3);
}

.runneron_ranking-spotlight-distance-unit {
    font-size: clamp(18px, 3vw, 24px);
    font-weight: 700;
    color: rgba(255,255,255,0.45);
}

/* Real name */
.runneron_ranking-spotlight-realname {
    font-size: 15px;
    color: rgba(255,255,255,0.4);
    margin-top: 4px;
}

/* Sparkle particles */
.runneron_ranking-spotlight-particles {
    position: absolute;
    inset: -80px;
    pointer-events: none;
}

.runneron_ranking-spotlight-sparkle {
    position: absolute;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #FFD700;
    animation: runneron_ranking-spotlight-sparkle-float 2.5s ease-in-out infinite;
    will-change: transform, opacity;
    transform: translateZ(0);
}

.runneron_ranking-spotlight-sparkle--1 { top: 10%; left: 15%; animation-delay: 0s; }
.runneron_ranking-spotlight-sparkle--2 { top: 5%; right: 20%; animation-delay: 0.3s; width: 4px; height: 4px; }
.runneron_ranking-spotlight-sparkle--3 { top: 40%; left: 5%; animation-delay: 0.6s; }
.runneron_ranking-spotlight-sparkle--4 { top: 35%; right: 8%; animation-delay: 0.9s; width: 5px; height: 5px; }
.runneron_ranking-spotlight-sparkle--5 { bottom: 20%; left: 12%; animation-delay: 1.2s; width: 4px; height: 4px; }
.runneron_ranking-spotlight-sparkle--6 { bottom: 15%; right: 15%; animation-delay: 1.5s; }
.runneron_ranking-spotlight-sparkle--7 { bottom: 40%; left: 25%; animation-delay: 0.4s; width: 3px; height: 3px; background: #ffffff; }
.runneron_ranking-spotlight-sparkle--8 { top: 20%; right: 30%; animation-delay: 0.8s; width: 3px; height: 3px; background: #FFA500; }

@keyframes runneron_ranking-spotlight-sparkle-float {
    0%, 100% { transform: translate(0, 0) scale(1); opacity: 0.6; }
    25% { transform: translate(8px, -12px) scale(1.4); opacity: 1; }
    50% { transform: translate(-6px, -20px) scale(0.8); opacity: 0.4; }
    75% { transform: translate(10px, -8px) scale(1.2); opacity: 0.9; }
}

/* Entrance animation */
.runneron_ranking-spotlight--enter .runneron_ranking-spotlight-bg {
    animation: runneron_ranking-spotlight-bg-in 0.5s ease-out forwards;
}

.runneron_ranking-spotlight--enter .runneron_ranking-spotlight-content {
    animation: runneron_ranking-spotlight-content-in 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: 0.15s;
    opacity: 0;
}

@keyframes runneron_ranking-spotlight-bg-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes runneron_ranking-spotlight-content-in {
    from {
        opacity: 0;
        transform: scale(0.7) translateY(30px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

/* Exit animation */
.runneron_ranking-spotlight--exit .runneron_ranking-spotlight-bg {
    animation: runneron_ranking-spotlight-bg-out 0.6s ease-in forwards;
}

.runneron_ranking-spotlight--exit .runneron_ranking-spotlight-content {
    animation: runneron_ranking-spotlight-content-out 0.5s ease-in forwards;
}

@keyframes runneron_ranking-spotlight-bg-out {
    from { opacity: 1; }
    to { opacity: 0; }
}

@keyframes runneron_ranking-spotlight-content-out {
    from {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
    to {
        opacity: 0;
        transform: scale(0.85) translateY(-20px);
    }
}
