/* v8.63.6: fixed 3D relief and detailed volume fire; approved frame layout. */
.tier-diamond{--tier-ink:#2853a5;--tier-line:#91b9ee;--tier-tint:#f5faff;--tier-glow:#61b8ef33;--frame-unit:.42px}
.tier-master{--tier-ink:#7730ad;--tier-line:#c494e7;--tier-tint:#fcf7ff;--tier-glow:#b66ff03b;--frame-unit:.46px;--flame-bg:#251033;--flame-opacity:.75}
.tier-grandmaster{--tier-ink:#ad2546;--tier-line:#e89ca7;--tier-tint:#fff7f8;--tier-glow:#f56e8952;--frame-unit:.48px;--flame-bg:#2c0b16;--flame-opacity:.94;--ember:#ffb79e}
.tier-challenger{--tier-ink:#236ca5;--tier-line:#91c7ea;--tier-tint:#f4faff;--tier-glow:#50b7f266;--frame-unit:.4px;--flame-bg:#0c1832;--flame-opacity:1;--ember:#d8f7ff}
.tier-frame{--frame-side:calc(190 * var(--frame-unit));--frame-crest:calc(320 * var(--frame-unit));--frame-top:calc(150 * var(--frame-unit));--frame-bottom:calc(100 * var(--frame-unit));--rail-top:calc(70 * var(--frame-unit));--rail-bottom:calc(56 * var(--frame-unit));--rail-side:calc(40 * var(--frame-unit))}
.tier-frame.tier-challenger{--frame-crest:calc(720 * var(--frame-unit));--frame-top:calc(280 * var(--frame-unit));--frame-bottom:calc(140 * var(--frame-unit));--rail-top:calc(175 * var(--frame-unit));--rail-bottom:calc(72 * var(--frame-unit))}
.rating-challenger{color:#17659a;background:#e9f6ff;border-color:#9accec}
.rating-effects-host{position:relative;isolation:isolate}
.rating-outer-art{position:absolute;inset:0;z-index:0;display:block;overflow:visible;border-radius:inherit;pointer-events:none}
.rating-outer-art *{pointer-events:none}
.rating-art-moving{display:none}
.rating-flame-active .rating-art-moving{display:none}
.rating-flame-active .rating-art-still{display:none}
.rating-outer-surface{position:absolute;inset:calc(var(--rail-top) + 13px) calc(var(--rail-side) + 13px) calc(var(--rail-bottom) + 13px);border-radius:12px;background:var(--tier-tint);box-shadow:inset 0 0 22px #fff9}
.rating-outer-frame{position:absolute;inset:0;display:grid;grid-template-columns:var(--frame-side) minmax(0,1fr) var(--frame-crest) minmax(0,1fr) var(--frame-side);grid-template-rows:var(--frame-top) minmax(0,1fr) var(--frame-bottom);filter:drop-shadow(0 2px 4px var(--tier-glow))}
.tier-master .rating-outer-frame{filter:drop-shadow(0 0 4px #c976ff66) drop-shadow(0 3px 7px #7d35b744)}
.tier-grandmaster .rating-outer-frame{filter:drop-shadow(0 0 4px #ff58756e) drop-shadow(0 3px 8px #b4193f4d)}
.tier-challenger .rating-outer-frame{filter:drop-shadow(0 0 6px #bceeffc7) drop-shadow(0 0 13px #3daeff82) drop-shadow(0 5px 11px #286ebd66)}
.rating-frame-piece{display:block!important;width:100%!important;height:100%!important;min-width:0;min-height:0;max-width:none!important;max-height:none!important;overflow:hidden}
.frame-top-left{grid-area:1/1}.frame-top-rail-left{grid-area:1/2}.frame-top-crest{grid-area:1/3}.frame-top-rail-right{grid-area:1/4}.frame-top-right{grid-area:1/5}
.frame-side-left{grid-area:2/1}.frame-side-right{grid-area:2/5}
.frame-bottom-left{grid-area:3/1}.frame-bottom-rail-left{grid-area:3/2}.frame-bottom-crest{grid-area:3/3}.frame-bottom-rail-right{grid-area:3/4}.frame-bottom-right{grid-area:3/5}

/* Header and every tier use the same columns and horizontal padding. */
.rankings-page .ranking-table-wrap{--ranking-columns:50px minmax(0,1fr) minmax(170px,230px) 138px 146px;--ranking-inset:44px;padding:0 10px 12px;overflow:visible;background:transparent;border:0}
.ranking-table-wrap .ranking-table{display:block;width:100%;min-width:0;table-layout:auto;border-collapse:separate;border-spacing:0}
.ranking-table-wrap .ranking-table colgroup{display:none}
.ranking-table-wrap .ranking-table thead,.ranking-table-wrap .ranking-table tbody{display:block;width:100%}
.ranking-table-wrap .ranking-table thead tr{display:grid;grid-template-columns:var(--ranking-columns);align-items:center;padding:0 var(--ranking-inset)}
.ranking-table-wrap .ranking-table tbody{display:grid;gap:12px}
.rankings-page .ranking-table-wrap .ranking-table tbody tr{position:relative;display:grid;grid-template-columns:var(--ranking-columns);align-items:center;min-height:124px;padding:22px var(--ranking-inset);border:0;border-radius:16px;background:var(--panel);box-shadow:inset 0 0 0 1px var(--line);overflow:visible}
.rankings-page .ranking-table-wrap .ranking-table tbody tr.tier-frame{padding-block:calc(var(--frame-top) + 6px) calc(var(--frame-bottom) + 6px);background:transparent;box-shadow:none}
.rankings-page .ranking-table-wrap .ranking-table tbody td,.rankings-page .ranking-table-wrap .ranking-table tbody td:first-child,.rankings-page .ranking-table-wrap .ranking-table tbody td:last-child{position:relative;z-index:1;display:block;width:auto;min-width:0;padding:6px 10px;border:0;border-radius:0;background:transparent}
/* z-index:auto is essential: static grid items otherwise still stack above text. */
.rankings-page .ranking-table-wrap .ranking-table tbody td.ranking-player-cell{position:static;z-index:auto}
.ranking-table-wrap .ranking-member-link{position:relative;z-index:1;display:flex;align-items:center;width:100%;min-width:0;gap:14px;border-radius:8px}
.ranking-table-wrap .ranking-member-link:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
.ranking-table-wrap .ranking-member-link>span{min-width:0}
.ranking-table-wrap .ranking-member-link .avatar{width:64px;height:64px;flex:0 0 64px}
.ranking-table-wrap .person-name{font-size:16px;white-space:normal;overflow-wrap:anywhere}
.ranking-table-wrap .person-sub{font-size:11px;white-space:normal;line-height:1.6}
.ranking-table-wrap .ranking-rating-line{margin:7px 0}
.ranking-table-wrap .ranking-rating-line .rating-badge{font-size:12px;padding:3px 8px}
.ranking-table-wrap .ranking-table th{width:auto;padding:14px 10px;border:0;font-size:12px;line-height:1.5;white-space:normal;vertical-align:middle}
.ranking-table-wrap .ranking-table th:nth-child(n+3){text-align:center}
.rankings-page .ranking-table-wrap .ranking-table tbody tr:focus-within td{background:transparent}
.ranking-table-wrap .ranking-table td.ranking-rank-cell{text-align:left;white-space:nowrap;word-break:normal}
.ranking-table-wrap .ranking-rating-cell{text-align:center}
.ranking-table-wrap .ranking-table td.t-score{font-size:21px;white-space:nowrap;text-align:center}
.ranking-table-wrap .ranking-table td.t-score>strong{font-weight:700;color:var(--tier-ink,var(--accent))}
.ranking-mobile-label{display:none}
.rating-score-card{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:170px;max-width:100%;min-height:86px;padding:12px 18px;border:1px solid var(--tier-line,var(--line));border-radius:12px;background:#fffffff2;color:#272137;box-shadow:0 4px 14px #2616320b;vertical-align:middle}
.rating-score-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;max-width:100%}
.rating-score-caption{font-size:11px;line-height:1.2;letter-spacing:.03em;color:#776d85}
.rating-score-line{display:flex;align-items:flex-end;justify-content:center;gap:5px;max-width:100%}
.rating-score-number{font-size:36px;line-height:1;font-weight:800;letter-spacing:-1px;color:#272137}
.rating-score-unit{padding-bottom:3px;color:#82778c;font-size:11px}
.rating-placement-note{font-size:11px;line-height:1.4;color:var(--muted)}

.rating-summary.tier-frame{padding:0;border:0;background:transparent;box-shadow:none;overflow:visible}
.rating-summary.tier-frame>.rating-summary-content{position:relative;z-index:1;padding:calc(var(--frame-top) + 8px) 44px calc(var(--frame-bottom) + 8px)}
.rating-summary-content>p{font-size:13px;line-height:1.7;margin:12px 0;color:var(--text)}
.rating-summary-content>.rating-next{margin:7px 0 0;color:var(--muted);font-size:12px}
.profile-rating-score{min-width:220px;flex-shrink:0}
.profile-rating-score .rating-score-number{font-size:40px}
.rating-summary-head{gap:18px}
.ranking-toolbar{flex-wrap:wrap}
.home-rank-row.tier-frame{margin:10px 0;border:0;border-radius:12px;background:transparent;box-shadow:none;overflow:visible;padding:calc(var(--frame-top) + 8px) var(--content-side,32px) calc(var(--frame-bottom) + 8px)}
.home-rank-row.tier-frame:hover,.home-rank-row.tier-frame:focus-visible{background:transparent;box-shadow:none}
.home-rank-row.tier-frame>span:not(.rating-outer-art){position:relative;z-index:1;min-width:0}
.home-ranking{container-type:inline-size}
.home-ranking .home-rank-labels{padding-inline:42px}
@container(max-width:540px){
 .home-ranking .home-rank-row.tier-frame{grid-template-columns:24px minmax(0,1fr) minmax(0,1fr);gap:12px 8px}
 .home-ranking .home-rank-row.tier-frame>.rank-number{grid-column:1;grid-row:1}
 .home-ranking .home-rank-row.tier-frame>.rank-person{grid-column:2/4;grid-row:1}
 .home-ranking .home-rank-row.tier-frame>.home-rank-difficulty{grid-column:2;grid-row:2;text-align:center}
 .home-ranking .home-rank-row.tier-frame>.score{grid-column:3;grid-row:2;text-align:center}
 .home-ranking .home-rank-row.tier-frame>.home-rank-difficulty::before{content:'평균 난이도';display:block;font-size:10px;color:var(--muted);font-weight:400}
 .home-ranking .home-rank-row.tier-frame>.score::before{content:'평균 판정';display:block;font-size:10px;color:var(--muted);font-weight:400}
 .home-ranking .home-rank-labels{display:none}
}
@media(min-width:901px) and (max-width:1150px){
 .rankings-page .ranking-table-wrap{--ranking-columns:36px minmax(0,1fr) 168px 100px 106px;--ranking-inset:34px}
 .ranking-table-wrap .ranking-member-link{gap:10px}
 .ranking-table-wrap .ranking-member-link .avatar{width:52px;height:52px;flex-basis:52px}
 .ranking-table-wrap .rating-score-card{min-width:140px;padding-inline:9px}
 .ranking-table-wrap .rating-score-number{font-size:30px}
 .ranking-table-wrap .ranking-table td.t-score{font-size:19px}
 .ranking-table-wrap .ranking-table th,.rankings-page .ranking-table-wrap .ranking-table tbody td{padding-inline:6px}
}
@media(max-width:900px){
 .tier-diamond{--frame-unit:.34px}.tier-master{--frame-unit:.36px}.tier-grandmaster{--frame-unit:.38px}.tier-challenger{--frame-unit:.3px}
 .rankings-page .ranking-table-wrap{padding:0;background:transparent}
 .ranking-table-wrap .ranking-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}
 .ranking-table-wrap .ranking-table tbody{gap:18px}
 .rankings-page .ranking-table-wrap .ranking-table tbody tr{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto auto;gap:18px 12px;min-height:0;padding:24px 32px}
 .rankings-page .ranking-table-wrap .ranking-table tbody tr.tier-frame{padding-block:calc(var(--frame-top) + 10px) calc(var(--frame-bottom) + 10px)}
 .rankings-page .ranking-table-wrap .ranking-table tbody td,.rankings-page .ranking-table-wrap .ranking-table tbody td:first-child,.rankings-page .ranking-table-wrap .ranking-table tbody td:last-child{padding:0}
 .rankings-page .ranking-table-wrap .ranking-table tbody td.ranking-rank-cell{position:absolute;right:32px;top:24px;text-align:right}
 .rankings-page .ranking-table-wrap .ranking-table tbody tr.tier-frame td.ranking-rank-cell{top:calc(var(--frame-top) + 12px)}
 .ranking-table-wrap .ranking-player-cell{grid-column:1/-1;grid-row:1;margin:0 36px 0 0}
 .ranking-table-wrap .ranking-rating-cell{grid-column:1/-1;grid-row:2;align-self:center;justify-self:stretch}
 .ranking-table-wrap .ranking-difficulty-cell{grid-column:1;grid-row:3;align-self:center;text-align:center!important}
 .ranking-table-wrap .ranking-accuracy-cell{grid-column:2;grid-row:3;align-self:center;text-align:center!important}
 .ranking-table-wrap .ranking-mobile-label{display:block;font-size:11px;font-weight:500;line-height:1.5;color:var(--muted);margin-bottom:3px}
 .ranking-table-wrap .rating-score-card{width:100%;min-width:0;min-height:86px;height:auto;padding:14px 8px}
 .ranking-table-wrap .rating-score-number{font-size:36px}
 .ranking-table-wrap .ranking-member-link .avatar{width:54px;height:54px;flex-basis:54px}
 .ranking-table-wrap .ranking-member-link{gap:10px}
 .ranking-table-wrap .person-name{font-size:15px}
 .ranking-table-wrap .ranking-table td.t-score{font-size:21px}
 .ranking-table-wrap .ranking-empty-row>td{grid-column:1/-1}
 .rating-summary-head{flex-wrap:wrap;justify-content:center}
 .rating-summary-head>div{width:100%}
 .profile-rating-score{width:100%;min-width:0}
 .rating-summary.tier-frame>.rating-summary-content{padding-inline:32px}
}
@media(max-width:540px){
 .tier-challenger{--frame-unit:.235px}
 .tier-diamond{--frame-unit:.32px}.tier-master{--frame-unit:.33px}.tier-grandmaster{--frame-unit:.34px}
 .rankings-page .ranking-table-wrap .ranking-table tbody tr{padding-inline:24px}
 .rankings-page .ranking-table-wrap .ranking-table tbody td.ranking-rank-cell{right:24px}
 .rating-summary.tier-frame>.rating-summary-content{padding-inline:24px}
 .rating-outer-surface{left:calc(var(--rail-side) + 9px);right:calc(var(--rail-side) + 9px)}
}
@media(max-width:360px){
 .tier-challenger{--frame-unit:.21px}
 .ranking-table-wrap .ranking-member-link .avatar{width:42px;height:42px;flex-basis:42px}
 .ranking-table-wrap .ranking-member-link{gap:8px}
 .ranking-table-wrap .person-name{font-size:14px}
}
/* These dimensions match the exact SVG crop coordinates. Equal source scale
   on corners AND crests avoids detached/stretching profile rails. */
.tier-frame:is(.tier-master,.tier-grandmaster,.tier-challenger){--frame-unit:.22px;--frame-side:calc(230 * var(--frame-unit));--frame-crest:calc(652 * var(--frame-unit));--frame-top:calc(330 * var(--frame-unit));--frame-bottom:calc(264 * var(--frame-unit));--content-side:max(26px,calc(190 * var(--frame-unit)))}
.tier-frame.tier-challenger{--frame-crest:calc(972 * var(--frame-unit));--frame-top:calc(365 * var(--frame-unit));--frame-bottom:calc(299 * var(--frame-unit))}
.tier-frame:is(.tier-master,.tier-grandmaster,.tier-challenger) .rating-outer-surface{inset:calc(298 * var(--frame-unit)) calc(125 * var(--frame-unit)) calc(205 * var(--frame-unit));border-radius:8px}
.rating-summary.tier-frame:is(.tier-master,.tier-grandmaster,.tier-challenger)>.rating-summary-content{padding:calc(var(--frame-top) + 16px) var(--content-side) calc(var(--frame-bottom) + 12px);min-width:0}
.rating-summary.tier-frame .rating-summary-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px}
.rating-summary.tier-frame .rating-summary-head>div{width:auto;min-width:0}
.rating-summary.tier-frame .rating-summary-head h3{margin-top:0;overflow-wrap:anywhere}
.rating-summary.tier-frame .profile-rating-score{min-width:0;width:220px;max-width:100%}
.rating-summary.tier-frame .rating-guide,.rating-summary.tier-frame .rating-records{max-width:100%;min-width:0}
.rating-summary.tier-frame .rating-guide-body{overflow-x:auto}
.rating-summary.tier-frame progress{max-width:100%}
@media(max-width:900px){.tier-frame:is(.tier-master,.tier-grandmaster,.tier-challenger){--frame-unit:.19px}}
@media(max-width:540px){
 .tier-frame:is(.tier-master,.tier-grandmaster,.tier-challenger){--frame-unit:.14px}
 .rating-summary.tier-frame .rating-summary-head{grid-template-columns:minmax(0,1fr)}
 .rating-summary.tier-frame .profile-rating-score{width:100%}
}
@media(prefers-reduced-motion:reduce){.rating-art-moving{display:none!important}.rating-art-still{display:inline!important}}
@container(max-width:540px){.home-ranking .home-rank-row.tier-frame:is(.tier-master,.tier-grandmaster,.tier-challenger){--frame-unit:.14px}}
@media(forced-colors:active){
 .rating-outer-art{display:none}
 .rankings-page .ranking-table-wrap .ranking-table tbody tr.tier-frame,.rating-summary.tier-frame{border:1px solid CanvasText;border-radius:14px;background:Canvas;color:CanvasText}
 .rating-summary.tier-frame>.rating-summary-content{padding:20px}
 .rating-score-card{border:1px solid CanvasText;background:Canvas;color:CanvasText;box-shadow:none}
 .rating-score-number,.rating-score-caption,.rating-score-unit{color:CanvasText}
}

/* High-resolution flowing flame canvas sits below the fixed metal SVGs. */
.rating-live-fire{position:absolute;inset:0;width:100%;height:100%;display:none;z-index:0;pointer-events:none}
.rating-flame-active .rating-live-fire{display:block}
.rating-frame-piece{position:relative;z-index:1}
@media(prefers-reduced-motion:reduce){.rating-live-fire{display:none!important}}

/* No animated drop shadow inside the card; the cached relief is fixed. */
.rating-flame-active .rating-outer-frame{filter:none}

/* Five selected songs: centered on wide rows, a separate row on small cards. */
.rating-song-strip{display:flex;flex-direction:column;align-items:center;gap:9px;min-width:0;max-width:100%;color:var(--text)}
.rating-song-caption{font-size:10px;line-height:1.4;letter-spacing:.04em;color:var(--muted);font-weight:500}
.rating-song-caption>.mono{margin-left:5px;color:var(--tier-ink,var(--accent));font-weight:700}
.rating-song-list{display:flex;align-items:center;justify-content:center;gap:8px;max-width:100%;min-width:0}
button.rating-song{display:block;flex:0 1 56px;width:56px;min-width:0;padding:0;background:transparent;border:0;border-radius:9px;line-height:1.3;color:var(--tier-ink,var(--accent));text-align:center}
.rating-song-thumb{position:relative;display:grid;place-items:center;width:100%;aspect-ratio:1;overflow:hidden;border:1px solid var(--tier-line,var(--line));border-radius:9px;background:linear-gradient(145deg,#fff,var(--tier-tint,var(--panel2)));box-shadow:0 3px 8px #1b28510c}
.rating-song-fallback{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;padding:8px 4px 3px;font-size:9px;line-height:1.4;font-weight:650;overflow-wrap:anywhere;word-break:normal}
.rating-song-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rating-song-order{position:absolute;top:2px;left:3px;display:grid;place-items:center;min-width:13px;height:13px;border-radius:4px;background:#17223aa6;color:#fff;font-size:8px;font-weight:700}
.rating-song:hover .rating-song-thumb,.rating-song:focus-visible .rating-song-thumb{border-color:var(--tier-ink,var(--accent));box-shadow:0 4px 12px var(--tier-glow,#8044cb25)}
.rating-song-tooltip{position:fixed;z-index:1000;display:flex;flex-direction:column;gap:6px;width:max-content;max-width:min(260px,calc(100vw - 24px));padding:14px 17px;border:1px solid #dae0ec;border-radius:12px;background:#fff;color:#5d6579;box-shadow:0 10px 32px #19223b24;font-size:11px;line-height:1.5;overflow-wrap:anywhere}
.rating-song-tooltip-title{font-size:14px;color:#252638;max-width:220px}
.rating-song-tooltip-score{color:#285e9b;font-size:23px;font-weight:750;line-height:1.2}
.rating-song-tooltip-score small{font-size:10px;margin-left:4px;font-weight:400}
.rating-song-tooltip[hidden],.rating-song-thumb img[hidden]{display:none!important}
.rating-summary-content>.rating-song-strip{margin:22px auto 18px;max-width:340px}
.rankings-page .ranking-table-wrap{--ranking-columns:42px minmax(175px,1fr) minmax(240px,340px) minmax(160px,210px) 112px 120px;--ranking-inset:44px}
.ranking-table-wrap .ranking-songs-cell{min-width:0;text-align:center}
.ranking-table-wrap .ranking-empty-row>td{grid-column:1/-1}
.ranking-table-wrap .ranking-songs-cell .rating-song-list{gap:7px}
.ranking-table-wrap .ranking-table th:nth-child(n+3){text-align:center}
.home-ranking .home-rank-row,.home-ranking .home-rank-labels{grid-template-columns:28px minmax(150px,1fr) minmax(220px,300px) 78px 85px;gap:12px;width:100%;text-align:left}
.home-ranking .home-rank-row{color:var(--text)}
.home-ranking .home-rank-labels>span:nth-child(3){text-align:center}
.home-ranking .home-rank-row>button,.home-ranking .home-rank-row>span:not(.rating-outer-art){position:relative;z-index:1;min-width:0}
.home-rank-member{background:transparent;padding:0;color:inherit;border:0;text-align:left;min-width:0;width:100%;border-radius:8px;font:inherit}
.home-rank-songs{display:block;min-width:0}
.home-rank-row.is-unranked:first-child{background:transparent;border-color:var(--line);border-radius:0}
@media(min-width:901px) and (max-width:1250px){
 .rankings-page .ranking-table-wrap{--ranking-columns:36px minmax(170px,1fr) 168px 90px 100px;--ranking-inset:34px}
 .ranking-table-wrap .ranking-table thead th:nth-child(3){display:none}
 .ranking-table-wrap .ranking-songs-cell{grid-column:2/-1;grid-row:2;margin:14px 0 2px;justify-self:center}
 .ranking-table-wrap .ranking-player-cell{grid-column:2;grid-row:1}
 .ranking-table-wrap .ranking-rating-cell{grid-column:3;grid-row:1}
 .ranking-table-wrap .ranking-difficulty-cell{grid-column:4;grid-row:1}
 .ranking-table-wrap .ranking-accuracy-cell{grid-column:5;grid-row:1}
 .ranking-table-wrap .rating-score-card{min-width:140px;padding-inline:9px}
 .ranking-table-wrap .rating-score-number{font-size:30px}
}
@media(max-width:900px){
 .ranking-table-wrap .ranking-songs-cell{grid-column:1/-1;grid-row:2;justify-self:center;width:100%}
 .ranking-table-wrap .ranking-rating-cell{grid-row:3}
 .ranking-table-wrap .ranking-difficulty-cell,.ranking-table-wrap .ranking-accuracy-cell{grid-row:4}
 .ranking-table-wrap .rating-song-list{width:min(100%,312px)}
}
@container(max-width:800px){
 .home-ranking .home-rank-labels{display:none}
 .home-ranking .home-rank-row{grid-template-columns:24px minmax(0,1fr) 76px 82px;gap:12px 8px}
 .home-ranking .home-rank-row>.rank-number{grid-column:1;grid-row:1}
 .home-ranking .home-rank-row>.rank-person{grid-column:2;grid-row:1}
 .home-ranking .home-rank-row>.home-rank-songs{grid-column:2/-1;grid-row:2;justify-self:center;width:100%;padding-top:5px}
 .home-ranking .home-rank-row>.home-rank-difficulty{grid-column:3;grid-row:1}
 .home-ranking .home-rank-row>.score{grid-column:4;grid-row:1}
 .home-ranking .home-rank-row .rating-song-list{width:min(100%,312px)}
}
@container(max-width:540px){
 .home-ranking .home-rank-row,.home-ranking .home-rank-row.tier-frame{grid-template-columns:22px minmax(0,1fr) minmax(0,1fr);gap:14px 8px}
 .home-ranking .home-rank-row>.rank-person,.home-ranking .home-rank-row.tier-frame>.rank-person{grid-column:2/-1;grid-row:1}
 .home-ranking .home-rank-row>.home-rank-songs{grid-column:1/-1;grid-row:2}
 .home-ranking .home-rank-row>.home-rank-difficulty,.home-ranking .home-rank-row.tier-frame>.home-rank-difficulty{grid-column:2;grid-row:3;text-align:center}
 .home-ranking .home-rank-row>.score,.home-ranking .home-rank-row.tier-frame>.score{grid-column:3;grid-row:3;text-align:center}
 .home-ranking .home-rank-row>.home-rank-difficulty::before{content:'평균 난이도';display:block;font-size:10px;color:var(--muted);font-weight:400}
 .home-ranking .home-rank-row>.score::before{content:'평균 판정';display:block;font-size:10px;color:var(--muted);font-weight:400}
 .home-ranking .rating-song-list{gap:6px}
}
@media(forced-colors:active){.rating-song-thumb,.rating-song-tooltip{background:Canvas;color:CanvasText;border:1px solid CanvasText;box-shadow:none}}

/* Click/tap opens the stored photo in its own dialog, above an open profile. */
body.rating-photo-open{overflow:hidden}
dialog.rating-song-dialog{width:min(1200px,calc(100vw - 40px));max-width:calc(100vw - 24px);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);margin:auto;padding:0;border:1px solid #dbe1eb;border-radius:16px;background:#fff;color:#252638;box-shadow:0 24px 90px #10142655;overflow:auto;overscroll-behavior:contain}
dialog.rating-song-dialog[open]{display:flex;flex-direction:column;gap:0}
dialog.rating-song-dialog::backdrop{background:#101727b8}
.rating-song-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 24px;flex-shrink:0}
.rating-song-dialog-head p{margin:0 0 4px;font-size:11px;color:#788096}
.rating-song-dialog-head h2{margin:0;font-size:21px;line-height:1.4;overflow-wrap:anywhere;word-break:normal}
button.rating-song-dialog-close{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border:1px solid #dce2ec;border-radius:10px;background:#f5f7fb;color:#596477;font-size:27px;line-height:1;padding:0;cursor:pointer}
.rating-song-dialog-photo{display:grid;place-items:center;min-height:180px;margin:0 24px;border:1px solid #e3e7ef;border-radius:10px;background:#f2f4f8;overflow:auto;flex:1 1 auto}
.rating-song-full-photo{display:block;width:100%;height:auto;max-width:100%;max-height:calc(100vh - 210px);max-height:calc(100dvh - 210px);object-fit:contain}
.rating-song-photo-message{margin:0;padding:55px 24px;font-size:14px;text-align:center;color:#788096}
.rating-song-dialog [hidden]{display:none!important}
.rating-song-dialog-stats{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 28px;padding:18px 24px;flex-shrink:0;font-size:13px;color:#596477}
.rating-song-dialog-score{display:flex;align-items:center;gap:12px}
.rating-song-dialog-score>small{font-size:11px}
.rating-song-dialog-score>strong{font-size:27px;font-weight:750;color:#285e9b;line-height:1.2}
.rating-song-dialog-score strong small{font-size:12px;font-weight:400;margin-left:4px}
dialog.rating-song-dialog.is-photo-empty{width:min(720px,calc(100vw - 40px))}
@media(max-width:600px){
 dialog.rating-song-dialog,dialog.rating-song-dialog.is-photo-empty{width:calc(100vw - 20px);max-width:calc(100vw - 20px);border-radius:12px}
 .rating-song-dialog-head{padding:14px 16px;gap:12px}
 .rating-song-dialog-head h2{font-size:18px}
 .rating-song-dialog-photo{margin:0 12px;min-height:160px}
 .rating-song-dialog-stats{padding:16px;gap:12px 20px;font-size:12px}
 .rating-song-dialog-score{width:100%}
 .rating-song-full-photo{max-height:calc(100vh - 250px);max-height:calc(100dvh - 250px)}
}
@media(forced-colors:active){dialog.rating-song-dialog,.rating-song-dialog-photo,button.rating-song-dialog-close{background:Canvas;color:CanvasText;border-color:CanvasText;box-shadow:none}}

/* Quiet metal borders for the four middle tiers. */
.tier-silver{--tier-ink:#4e6179;--tier-line:#8d9bae;--tier-tint:#f6f8fb;--tier-glow:#70829916}
.tier-gold{--tier-ink:#866013;--tier-line:#c39a40;--tier-tint:#fffaf0;--tier-glow:#a5842016}
.tier-platinum{--tier-ink:#176582;--tier-line:#5cacc1;--tier-tint:#f1fafc;--tier-glow:#338fa216}
.tier-emerald{--tier-ink:#20734f;--tier-line:#63a98a;--tier-tint:#f3fbf6;--tier-glow:#31835b16}
.tier-frame:is(.tier-silver,.tier-gold,.tier-platinum,.tier-emerald){--frame-unit:0px;--frame-top:16px;--frame-bottom:16px;--rail-top:0px;--rail-bottom:0px;--rail-side:0px}
.rating-simple-frame{position:absolute;inset:0;border:2px solid var(--tier-line);border-radius:14px;background:linear-gradient(135deg,#fff,var(--tier-tint));box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 4px var(--tier-line),0 3px 10px var(--tier-glow);pointer-events:none}
.rating-simple-frame::before,.rating-simple-frame::after{content:'';position:absolute;width:8px;height:8px;background:var(--tier-line);transform:rotate(45deg);top:calc(50% - 4px);border:2px solid #fff}
.rating-simple-frame::before{left:-5px}.rating-simple-frame::after{right:-5px}

/* Two columns, five rows per full page. Every card carries its own labels. */
.ranking-grid-wrap{padding:0 6px}
.ranking-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 26px;align-items:stretch;scroll-margin-top:100px}
.ranking-card{min-width:0;border-radius:16px;padding:28px;background:#fff;border:1px solid #dce0e9}
.ranking-card.tier-frame{padding:calc(var(--frame-top) + 8px) 40px calc(var(--frame-bottom) + 12px);border:0;background:transparent}
.ranking-card-content{position:relative;z-index:1;min-width:0;display:flex;flex-direction:column;gap:15px;height:100%}
.ranking-card-header{display:flex;align-items:center;gap:15px}
.ranking-card-rank{display:flex;flex-direction:column;gap:5px;align-items:center;flex:0 0 38px;color:#53627b;font-size:13px}
.ranking-card .rank-number{font-size:22px;line-height:1.1}
.ranking-card .ranking-member-link{display:flex;gap:14px;align-items:center;min-width:0;flex:1;border:0;padding:0;background:transparent;text-align:left;color:#20283b;font:inherit;border-radius:8px}
.ranking-card .ranking-member-link .avatar{width:60px;height:60px;flex:0 0 60px}
.ranking-member-copy{display:block;min-width:0}
.ranking-card .person-name{font-size:20px;line-height:1.4;white-space:normal;overflow-wrap:anywhere;gap:7px}
.ranking-card .person-name .role-tag,.ranking-card .person-name .membership-tag{font-size:12px}
.ranking-card .ranking-rating-line{display:block;margin-top:6px}
.ranking-card .rating-badge{font-size:14px;padding:3px 9px}
.ranking-card-progress{font-size:13px;line-height:1.6;color:#56647b;margin:0}
.ranking-card-metrics{display:grid;grid-template-columns:minmax(130px,1fr) minmax(0,1.25fr);gap:15px;align-items:stretch}
.ranking-card .rating-score-card{min-width:0;width:100%;min-height:88px;padding:12px 8px}
.ranking-card .rating-score-number{font-size:32px;letter-spacing:-.04em}
.ranking-card .rating-score-caption{font-size:13px;color:#586379}
.ranking-card .rating-score-unit,.ranking-card .rating-placement-note{font-size:12px}
.ranking-card-metrics dl{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0;align-items:center;text-align:center}
.ranking-card-metrics dt{font-size:13px;line-height:1.5;color:#56647b;margin:0 0 7px}
.ranking-card-metrics dd{font-size:23px;line-height:1.2;font-weight:750;color:var(--tier-ink,#6840c5);margin:0;white-space:nowrap}
.ranking-card-metrics dd small{font-size:12px;margin-left:2px}
.ranking-card .ranking-songs-cell{margin-top:auto;padding-top:2px}
.ranking-card .rating-song-strip{width:100%}
.ranking-card .rating-song-caption{font-size:13px;line-height:1.5;color:#56647b}
.ranking-card .rating-song-list{width:min(100%,360px);gap:8px}
.ranking-card .rating-song-thumb{width:100%;height:auto;aspect-ratio:1;border-radius:10px}
.ranking-card .rating-song-fallback{font-size:12px;padding:6px;line-height:1.3}
.ranking-card .rating-song-order{font-size:11px}
.ranking-card button:focus-visible,.ranking-pagination button:focus-visible{outline:3px solid #7951d4;outline-offset:4px}
.ranking-pagination{display:flex;justify-content:center;align-items:center;gap:24px;margin:26px 0 14px;font-size:17px}
.ranking-pagination[hidden]{display:none}
.ranking-pagination>span{text-align:center;min-width:100px}
.ranking-pagination small{display:block;margin-top:4px;font-size:13px;color:#56647b}
.ranking-pagination .btn{font-size:15px;min-width:76px;min-height:44px}
.ranking-pagination .btn:disabled{opacity:.45;cursor:default}
.ranking-page-note{font-size:14px;color:#56647b;line-height:1.7;text-align:center}
.ranking-empty-row{grid-column:1/-1;text-align:center;padding:40px 24px;font-size:16px;border:1px solid #dce0e9;border-radius:14px;background:white}
.rankings-page .rating-guide{font-size:15px}.rankings-page .rating-guide summary{font-size:16px}
.rankings-page .rating-guide-body p,.rankings-page .rating-tier-table th,.rankings-page .rating-tier-table td{font-size:14px;line-height:1.8}
.rankings-page .ranking-toolbar #ranking-count,.rankings-page .ranking-scope-btn,.rankings-page .season-rule{font-size:14px}
.rankings-page .ranking-toolbar{gap:16px;flex-wrap:wrap}
@media(min-width:761px) and (max-width:1120px){
 .ranking-card-grid{gap:20px 18px}.ranking-card{padding:24px 18px}
 .ranking-card.tier-frame{padding-inline:26px;--frame-unit:.3px}
 .ranking-card-header{gap:10px}.ranking-card .ranking-member-link{gap:10px}
 .ranking-card .ranking-member-link .avatar{width:48px;height:48px;flex-basis:48px}
 .ranking-card .person-name{font-size:18px}.ranking-card-metrics{grid-template-columns:1fr;gap:14px}
 .ranking-card .rating-score-number{font-size:32px}.ranking-card-metrics dl{padding:0 8px}
}
@media(max-width:760px){
 .ranking-card-grid{grid-template-columns:minmax(0,1fr);gap:22px}
 .ranking-card{padding:24px}.ranking-card.tier-frame{padding-inline:28px}
 .ranking-card .person-name{font-size:19px}.ranking-page-note{font-size:13px}
}
@media(max-width:420px){
 .ranking-card.tier-frame{padding-inline:24px}.ranking-card-header{gap:9px}
 .ranking-card .ranking-member-link .avatar{width:46px;height:46px;flex-basis:46px}
 .ranking-card .ranking-member-link{gap:10px}.ranking-card-metrics{grid-template-columns:1fr}
 .ranking-card-metrics dl{padding-block:4px}.ranking-card .rating-song-list{gap:6px}
}
@media(forced-colors:active){.rating-simple-frame,.ranking-card{background:Canvas;border:2px solid CanvasText;box-shadow:none}.rating-simple-frame::before,.rating-simple-frame::after{display:none}}
.profile-photo-review-panel{margin:22px 0}.profile-photo-review-panel h3{font-size:19px}
.profile-photo-review-panel .review-dashboard-heading p{font-size:14px;line-height:1.7}
.profile-photo-compare{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:center;padding-block:16px}
.profile-photo-compare figure{margin:0;text-align:center}.profile-photo-compare img{display:block;width:150px;height:150px;max-width:100%;object-fit:contain;border-radius:12px;background:#f5f6fa;margin:0 auto 8px;border:1px solid #dce0e9}
.profile-photo-compare figcaption{font-size:13px;color:#53627b}.profile-photo-compare a{color:inherit}
.profile-photo-filter{display:flex;align-items:center;gap:12px;margin:16px 0;font-size:14px}.profile-photo-filter select{width:auto;min-width:130px}
