chatapp-h5/h5/yumi/cp-ranking/cp-ranking.css
2026-05-22 16:04:43 +08:00

716 lines
11 KiB
CSS

: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;
}