:root { --scale: 0.36; --canvas-width: 1080px; --canvas-height: 4560px; --page-bg: #ffadd3; --deep-red: #a01626; --muted-pink: #da698c; --gold: #ffe4a6; --asset-root: "../../assets/yumi/cp-ranking"; } * { box-sizing: border-box; } html, body { margin: 0; min-height: 100%; background: var(--page-bg); font-family: "Source Han Sans SC", "PingFang SC", "Helvetica Neue", Arial, sans-serif; -webkit-text-size-adjust: 100%; } body { color: var(--deep-red); padding-bottom: env(safe-area-inset-bottom); } button { font: inherit; appearance: none; -webkit-appearance: none; border-radius: 0; } .page { width: calc(var(--canvas-width) * var(--scale)); max-width: 100vw; height: calc(var(--canvas-height) * var(--scale)); margin: 0 auto; overflow: hidden; background: linear-gradient(180deg, rgba(255, 173, 211, 0.97), rgba(255, 173, 211, 0.97)), url("../../assets/yumi/cp-ranking/page-texture.jpg") center top / 100% auto repeat-y; } .canvas { position: relative; width: var(--canvas-width); height: var(--canvas-height); transform: scale(var(--scale)); transform-origin: left top; overflow: hidden; background: linear-gradient(180deg, rgba(255, 173, 211, 0.95), rgba(255, 173, 211, 0.95)), url("../../assets/yumi/cp-ranking/page-texture.jpg") center top / 1080px auto repeat-y; } .asset { position: absolute; display: block; max-width: none; user-select: none; pointer-events: none; } .hero-image { left: 0; top: 0; width: 1080px; height: 1027px; object-fit: fill; } .title-art { left: -232px; top: 356px; width: 1478px; height: 831px; object-fit: fill; } .rules-button { position: absolute; left: 940px; top: 169px; width: 176px; height: 94px; padding: 0 0 8px; border: 0; color: #fff; font-size: 24px; font-weight: 800; line-height: 40px; text-align: center; background: url("../../assets/yumi/cp-ranking/tab-default.png") center / 100% 100% no-repeat; -webkit-tap-highlight-color: transparent; } .rules-button:active, .tab-button:active { transform: scale(0.97); } .countdown { position: absolute; left: 61px; top: 1046px; width: 964px; height: 144px; display: grid; grid-template-columns: repeat(4, 148px); justify-content: space-between; align-items: start; } .countdown-item { position: relative; width: 148px; height: 144px; color: #fff; text-align: center; } .countdown-item img, .mini-countdown-item img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; } .countdown-value { position: absolute; left: 0; top: 43px; width: 148px; color: #fff; font-size: 40px; font-weight: 800; line-height: 40px; text-align: center; } .countdown-label { position: absolute; left: 176px; top: 43px; width: 40px; color: #a83015; font-size: 40px; font-weight: 800; line-height: 40px; } .countdown-item:last-child .countdown-label { display: none; } .tabs { position: absolute; left: 10px; top: 1217px; width: 1059px; height: 182px; display: grid; grid-template-columns: repeat(3, 340px); gap: 19px; } .tab-button { position: relative; display: block; width: 340px; height: 182px; padding: 0; border: 0; color: #fff; background: url("../../assets/yumi/cp-ranking/tab-default.png") center / 100% 100% no-repeat; -webkit-tap-highlight-color: transparent; } .tab-button.is-active { background-image: url("../../assets/yumi/cp-ranking/tab-active.png"); } .tab-label { position: absolute; left: 0; top: 73px; width: 340px; height: 40px; color: #fff; font-size: 36px; font-weight: 800; line-height: 40px; text-align: center; white-space: nowrap; } .tab-panel { display: none; } .tab-panel.is-active { display: block; } .ornate-panel { position: absolute; left: 16px; width: 1048px; overflow: visible; } .panel-bg { position: absolute; inset: 0; pointer-events: none; } .panel-bg::before, .panel-bg::after { content: ""; position: absolute; left: 0; width: 1048px; height: 308px; background-position: center; background-repeat: no-repeat; background-size: 100% 100%; } .panel-bg::before { top: 0; background-image: url("../../assets/yumi/cp-ranking/panel-top.png"); } .panel-bg::after { bottom: 0; background-image: url("../../assets/yumi/cp-ranking/panel-bottom.png"); } .panel-bg { background: url("../../assets/yumi/cp-ranking/panel-middle.png") center 308px / 1048px calc(100% - 616px) no-repeat; } .ornate-panel h2 { position: absolute; left: 98px; right: 98px; margin: 0; color: #a83015; font-size: 30px; font-weight: 650; line-height: 38px; text-align: center; } .panel-subtitle { position: absolute; left: 98px; right: 98px; margin: 0; color: var(--muted-pink); font-size: 22px; font-weight: 500; line-height: 28px; text-align: center; } .plaza-live-panel { top: 1414px; height: 1517px; } .plaza-live-panel h2 { top: 178px; } .plaza-live-panel .panel-subtitle { top: 269px; } .plaza-history-panel { top: 2941px; height: 1491px; } .plaza-history-panel h2 { top: 176px; font-size: 32px; } .plaza-history-panel .panel-subtitle { top: 242px; } .cp-row-list { position: absolute; left: 84px; width: 880px; display: flex; flex-direction: column; gap: 16px; } .plaza-live-panel .cp-row-list { top: 332px; } .plaza-history-panel .cp-row-list { top: 306px; } .rank-list-panel .cp-row-list { top: 306px; } .cp-row { position: relative; width: 880px; height: 237px; background: url("../../assets/yumi/cp-ranking/cp-row-frame.png") center / 100% 100% no-repeat; } .cp-user { position: absolute; top: 33px; width: 166px; height: 171px; text-align: center; } .cp-user-left { left: 59px; } .cp-user-right { right: 59px; } .cp-avatar { width: 135px; height: 135px; margin: 0 auto; border: 3px solid #ffebbb; border-radius: 50%; object-fit: cover; background: #ffd4e6; } .cp-name { display: block; width: 166px; margin-top: 0; color: var(--deep-red); font-size: 25px; font-weight: 650; line-height: 36px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .row-center { position: absolute; left: 278px; top: 0; width: 324px; height: 237px; display: flex; align-items: center; justify-content: center; } .row-wave { position: absolute; top: 93px; width: 179px; height: 50px; object-fit: fill; } .row-wave-left { left: 187px; } .row-wave-right { right: 187px; transform: scaleX(-1); } .gift-icon { position: relative; z-index: 2; width: 160px; height: 160px; object-fit: contain; } .score-heart { position: relative; z-index: 2; width: 264px; height: 238px; background: url("../../assets/yumi/cp-ranking/rank-heart-glow.png") center / contain no-repeat; display: flex; align-items: center; justify-content: center; color: var(--deep-red); font-size: 30px; font-weight: 650; line-height: 36px; } .empty-state { position: absolute; left: 0; right: 0; top: 96px; color: var(--muted-pink); font-size: 24px; line-height: 34px; text-align: center; } .podium { position: absolute; left: 0; top: 1392px; width: 1080px; height: 710px; } .podium-card { position: absolute; background: url("../../assets/yumi/cp-ranking/top-card.png") center / 100% 100% no-repeat; } .podium-card.rank-1 { left: 158px; top: 0; width: 760px; height: 397px; } .podium-card.rank-2 { left: -70px; top: 392px; width: 608px; height: 303px; } .podium-card.rank-3 { left: 539px; top: 392px; width: 608px; height: 303px; } .podium-crown { position: absolute; display: block; object-fit: contain; pointer-events: none; } .rank-1 .podium-crown { left: 303px; top: 22px; width: 154px; height: 108px; } .rank-2 .podium-crown, .rank-3 .podium-crown { left: 245px; top: 29px; width: 118px; height: 83px; } .podium-person { position: absolute; top: 158px; width: 181px; height: 239px; text-align: center; } .rank-1 .podium-person-left { left: 183px; } .rank-1 .podium-person-right { right: 178px; } .rank-2 .podium-person, .rank-3 .podium-person { top: 126px; width: 145px; height: 192px; } .rank-2 .podium-person-left, .rank-3 .podium-person-left { left: 146px; } .rank-2 .podium-person-right, .rank-3 .podium-person-right { left: 321px; } .podium-avatar { width: 181px; height: 181px; border: 3px solid #ffebbb; border-radius: 50%; object-fit: cover; } .rank-2 .podium-avatar, .rank-3 .podium-avatar { width: 145px; height: 145px; border-width: 2px; } .podium-name { display: block; margin-top: 16px; color: var(--deep-red); font-size: 30px; font-weight: 650; line-height: 36px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .rank-2 .podium-name, .rank-3 .podium-name { margin-top: 15px; font-size: 24px; line-height: 29px; } .rank-list-panel { top: 2152px; height: 1519px; } .mini-countdown { position: absolute; left: 99px; top: 173px; width: 849px; height: 115px; display: grid; grid-template-columns: repeat(4, 118px); justify-content: space-between; } .mini-countdown-item { position: relative; width: 118px; height: 115px; } .mini-countdown-item span { position: absolute; left: 0; top: 29px; width: 118px; color: #fff; font-size: 40px; font-weight: 800; line-height: 40px; text-align: center; } .mini-countdown-item b { position: absolute; left: 154px; top: 29px; color: #a83015; font-size: 40px; font-weight: 800; line-height: 40px; } .mini-countdown-item:last-child b { display: none; } .reward-panel { height: 1075px; } .reward-panel-1 { top: 1424px; } .reward-panel-2 { top: 2509px; } .reward-panel-3 { top: 3594px; } .reward-crown { position: absolute; left: 443px; top: 148px; width: 162px; height: 114px; object-fit: contain; } .reward-panel-2 .reward-crown { width: 161px; } .reward-panel-3 .reward-crown { width: 158px; } .reward-grid { position: absolute; left: 104px; top: 272px; width: 824px; display: grid; grid-template-columns: repeat(3, 240px); column-gap: 60px; row-gap: 52px; } .reward-card { width: 240px; min-height: 280px; text-align: center; } .reward-frame { position: relative; width: 240px; height: 240px; background: url("../../assets/yumi/cp-ranking/reward-cell-frame.png") center / 100% 100% no-repeat; } .reward-frame img { position: absolute; left: 20px; top: 25px; width: 200px; height: 200px; object-fit: contain; } .reward-title { margin-top: 14px; color: var(--deep-red); font-size: 24px; font-weight: 650; line-height: 30px; min-height: 30px; } .reward-note { margin-top: 4px; color: var(--muted-pink); font-size: 18px; line-height: 20px; } .copyright { position: absolute; left: 115px; top: 4472px; width: 850px; margin: 0; color: var(--muted-pink); font-size: 24px; line-height: 40px; text-align: center; } .tab-panel-rank.is-active ~ .copyright { top: 3711px; } .tab-panel-rewards.is-active ~ .copyright { top: 4709px; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }