2026-07-17 11:54:43 +08:00

438 lines
7.3 KiB
CSS

@font-face {
font-family: 'Fami Source Han Sans SC';
src: url('./assets/fonts/source-han-sans-sc-regular-latin.woff2')
format('woff2');
font-style: normal;
font-weight: 400;
font-display: swap;
}
@font-face {
font-family: 'Fami Source Han Sans SC';
src: url('./assets/fonts/source-han-sans-sc-medium-latin.woff2')
format('woff2');
font-style: normal;
font-weight: 500;
font-display: swap;
}
* {
box-sizing: border-box;
-webkit-tap-highlight-color: transparent;
}
:root {
--fami-design-width: 1080;
--fami-stage-scale: 0.3472222222;
--fami-stage-height: 3273px;
--fami-background-bottom-top: 2695px;
}
html,
body {
margin: 0;
width: 100%;
min-height: 100%;
overflow-x: hidden;
background: #080116;
color: #f6e0b2;
font-family: 'Fami Source Han Sans SC', Arial, sans-serif;
}
body {
display: flex;
justify-content: center;
}
img {
display: block;
}
.fami-recharge-app {
width: min(100vw, 430px);
min-height: calc(3273px * var(--fami-stage-scale));
overflow: hidden;
background: #080116;
}
.stage-wrap {
position: relative;
width: 100%;
height: calc(3273px * var(--fami-stage-scale));
overflow: hidden;
}
.stage {
position: absolute;
left: 0;
top: 0;
width: 1080px;
height: var(--fami-stage-height);
overflow: hidden;
transform: scale(var(--fami-stage-scale));
transform-origin: top left;
background: #080116;
}
.activity-background,
.reward-sections {
position: absolute;
inset: 0;
}
.activity-background {
z-index: 0;
pointer-events: none;
}
.background-segment {
position: absolute;
left: 0;
width: 1080px;
overflow: hidden;
}
.background-segment img {
position: absolute;
left: 0;
width: 1080px;
height: 1887px;
max-width: none;
pointer-events: none;
}
/* Figma 用同一背景节点的三段蒙版拼接长页;这里保留原始裁切坐标,而不是把根 Frame 当整页图片。 */
.background-segment-mid {
top: 1311px;
height: 405px;
z-index: 0;
}
.background-segment-mid img {
top: -1168px;
}
.background-segment-top {
top: 0;
height: 1588px;
z-index: 1;
}
.background-segment-top img {
top: 0;
}
.background-segment-bottom {
top: var(--fami-background-bottom-top);
height: 578px;
z-index: 2;
}
.background-segment-bottom img {
top: -1333px;
}
.countdown,
.profile-card,
.reward-sections,
.page-status {
position: absolute;
z-index: 3;
}
.countdown {
left: 90px;
top: 696px;
width: 900px;
height: 393px;
}
.countdown-frame {
position: absolute;
inset: 0;
width: 900px;
height: 393px;
pointer-events: none;
}
.count-label,
.count-value {
position: absolute;
margin: 0;
transform: translateX(-50%);
text-align: center;
white-space: nowrap;
}
.count-label {
top: 280px;
width: 180px;
height: 24px;
color: #050300;
font-family: 'Fami Source Han Sans SC', Arial, sans-serif;
font-size: 24px;
font-weight: 400;
line-height: 24px;
text-transform: capitalize;
}
.count-value {
display: none;
top: 142px;
width: 150px;
height: 92px;
color: #f6e0b2;
font-size: 68px;
font-weight: 500;
line-height: 92px;
text-shadow: 0 3px 8px rgba(0, 0, 0, 0.72);
}
.countdown.has-values .count-value {
display: block;
}
.count-label-days,
.count-value-days {
left: 145px;
}
.count-label-hours,
.count-value-hours {
left: 349px;
}
.count-label-minutes,
.count-value-minutes {
left: 553.5px;
}
.count-label-seconds,
.count-value-seconds {
left: 753.5px;
}
.profile-card {
left: 90px;
top: 1089px;
width: 900px;
height: 679px;
}
.profile-frame {
position: absolute;
inset: 0;
width: 900px;
height: 679px;
pointer-events: none;
}
.profile-avatar {
position: absolute;
left: 309px;
top: 134px;
width: 282px;
height: 270px;
border-radius: 50%;
object-fit: cover;
}
.profile-name,
.profile-id,
.profile-recharge {
position: absolute;
left: 100px;
width: 700px;
margin: 0;
overflow: hidden;
color: #f6e0b2;
text-align: center;
text-overflow: ellipsis;
white-space: nowrap;
}
.profile-name {
top: 425px;
height: 36px;
font-family: 'Fami Source Han Sans SC', Arial, sans-serif;
font-size: 36px;
font-weight: 400;
line-height: 36px;
}
.profile-id {
top: 476px;
height: 36px;
font-family: 'Fami Source Han Sans SC', Arial, sans-serif;
font-size: 24px;
font-weight: 400;
line-height: 36px;
}
.profile-recharge {
top: 520px;
height: 40px;
font-size: 36px;
font-weight: 500;
line-height: 36px;
}
.reward-sections {
width: 1080px;
height: var(--fami-stage-height);
}
.reward-section {
position: absolute;
left: 0;
top: var(--section-top);
width: 1080px;
height: 720px;
}
.reward-panel {
position: absolute;
left: 90px;
top: 0;
width: 900px;
height: 689px;
pointer-events: none;
}
.reward-title {
position: absolute;
left: 529.5px;
top: 95px;
margin: 0;
transform: translateX(-50%);
color: #f6e0b2;
font-size: 40px;
font-weight: 500;
line-height: 40px;
text-align: center;
white-space: nowrap;
}
.reward-section.is-following .reward-title {
left: 559.5px;
top: 99px;
}
.reward-card {
position: absolute;
width: 229px;
height: 258px;
color: #f6e0b2;
text-align: center;
}
.reward-card-frame {
position: absolute;
inset: 0;
width: 229px;
height: 258px;
pointer-events: none;
}
.reward-media {
position: absolute;
left: 18px;
top: 19px;
width: 193px;
height: 193px;
object-fit: contain;
}
.reward-section.is-following .reward-media {
left: 18.5px;
top: 21px;
}
.reward-price {
position: absolute;
left: 0;
top: 202px;
width: 229px;
height: 32px;
overflow: hidden;
color: #f6e0b2;
font-size: 32px;
font-weight: 500;
line-height: 32px;
text-align: center;
text-overflow: ellipsis;
white-space: nowrap;
}
.reward-action {
position: absolute;
left: 341px;
top: 591px;
width: 399px;
height: 129px;
}
.reward-section.is-following .reward-action {
top: 604px;
}
.reward-action-skin {
position: absolute;
inset: 0;
width: 399px;
height: 129px;
pointer-events: none;
}
.reward-action-label {
position: absolute;
left: 0;
top: 45px;
width: 399px;
height: 40px;
overflow: hidden;
color: #f6e0b2;
font-family:
'SF Pro Display',
'SF Pro Text',
-apple-system,
BlinkMacSystemFont,
Arial,
sans-serif;
font-size: 40px;
font-weight: 510;
font-variation-settings:
'wght' 510,
'wdth' 100;
line-height: 40px;
text-align: center;
text-overflow: ellipsis;
white-space: nowrap;
}
.page-status {
left: 190px;
top: 1730px;
width: 700px;
margin: 0;
color: #f6e0b2;
font-size: 28px;
line-height: 40px;
text-align: center;
}
@media (min-width: 431px) {
html,
body {
background: #05000e;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
scroll-behavior: auto !important;
}
}