2026-06-11 16:10:32 +08:00

693 lines
15 KiB
CSS

:root {
--page-width: min(100vw, 430px);
--u: calc(var(--page-width) / 1080);
--blue: #071954;
--gold: #f6e0b2;
--white: #fff;
}
* {
box-sizing: border-box;
}
html,
body {
min-height: 100%;
margin: 0;
background: #030b24;
color: var(--white);
font-family:
'Source Han Sans SC', 'Noto Sans', 'Helvetica Neue', Arial, sans-serif;
}
button {
border: 0;
padding: 0;
color: inherit;
font: inherit;
background: transparent;
-webkit-tap-highlight-color: transparent;
}
.invite-page {
position: relative;
width: var(--page-width);
min-height: 100vh;
margin: 0 auto;
overflow: hidden;
background: var(--blue);
}
.language-switcher {
position: absolute;
z-index: 20;
top: calc(34 * var(--u));
right: calc(34 * var(--u));
width: calc(190 * var(--u));
direction: ltr;
}
.language-button {
display: flex;
align-items: center;
justify-content: center;
width: calc(156 * var(--u));
height: calc(82 * var(--u));
margin-left: auto;
border: calc(2 * var(--u)) solid rgba(255, 232, 184, 0.62);
border-radius: 999px;
color: #ffe8b8;
font-size: calc(34 * var(--u));
font-weight: 800;
line-height: 1;
letter-spacing: 0;
cursor: pointer;
background: rgba(25, 9, 1, 0.58);
box-shadow:
inset 0 0 calc(18 * var(--u)) rgba(255, 210, 93, 0.18),
0 calc(8 * var(--u)) calc(18 * var(--u)) rgba(0, 0, 0, 0.28);
}
.language-menu {
position: absolute;
top: calc(94 * var(--u));
right: 0;
width: calc(190 * var(--u));
overflow: hidden;
border: calc(2 * var(--u)) solid rgba(255, 232, 184, 0.56);
border-radius: calc(18 * var(--u));
background: rgba(25, 9, 1, 0.92);
box-shadow: 0 calc(16 * var(--u)) calc(30 * var(--u)) rgba(0, 0, 0, 0.34);
}
.language-menu button {
display: block;
width: 100%;
height: calc(58 * var(--u));
color: #fff5dc;
font-size: calc(28 * var(--u));
font-weight: 700;
line-height: 1;
cursor: pointer;
}
.language-menu button.is-active {
color: #ffd25d;
background: rgba(255, 210, 93, 0.22);
}
.hero {
position: relative;
height: calc(1110 * var(--u));
background-image: url('./assets/hero-bg.png');
background-repeat: no-repeat;
background-position: top center;
background-size: 100% auto;
}
.countdown-card {
position: absolute;
left: calc(32 * var(--u));
bottom: calc(0 * var(--u));
width: calc(1016 * var(--u));
height: calc(290 * var(--u));
background: url('./assets/countdown-panel.png') center / 100% 100% no-repeat;
}
.time-cell {
position: absolute;
top: 0;
left: calc(var(--countdown-center) * var(--u));
width: calc(180 * var(--u));
height: 100%;
transform: translateX(-50%);
color: var(--gold);
text-align: center;
}
.time-cell:nth-child(1) {
--countdown-center: 172;
}
.time-cell:nth-child(2) {
--countdown-center: 391;
}
.time-cell:nth-child(3) {
--countdown-center: 614;
}
.time-cell:nth-child(4) {
--countdown-center: 841;
}
.time-cell strong {
position: absolute;
top: calc(107 * var(--u));
left: 0;
display: flex;
width: 100%;
height: calc(46 * var(--u));
align-items: center;
justify-content: center;
font-size: calc(56 * var(--u));
line-height: 1;
font-weight: 700;
}
.time-cell span {
position: absolute;
top: calc(216 * var(--u));
left: 50%;
margin: 0;
transform: translateX(-50%);
font-size: calc(32 * var(--u));
line-height: 1.1;
white-space: nowrap;
}
.ornate-panel {
position: relative;
width: calc(1016 * var(--u));
margin: 0 auto;
overflow: hidden;
background-image:
url('./assets/panel-top-a.png'), url('./assets/panel-bottom-a.png'),
url('./assets/panel-middle-a.png');
background-repeat: no-repeat, no-repeat, no-repeat;
background-position:
top center,
bottom center,
center center;
background-size:
100% auto,
100% auto,
100% 100%;
}
.ornate-panel > * {
position: relative;
z-index: 1;
}
h2,
h3,
p {
margin: 0;
}
.ornate-panel h2,
.invite-copy h2,
.rank-panel h2 {
color: var(--gold);
text-align: center;
font-weight: 800;
text-shadow: 0 calc(2 * var(--u)) calc(4 * var(--u)) rgba(0, 0, 0, 0.35);
}
.subtle {
color: rgba(255, 255, 255, 0.9);
text-align: center;
}
.reward-panel {
height: calc(790 * var(--u));
margin-top: calc(20 * var(--u));
padding-top: calc(122 * var(--u));
background-image: url('./assets/reward-panel-bg.png');
background-position: center;
background-size: 100% 100%;
}
.reward-panel h2 {
font-size: calc(60 * var(--u));
line-height: 1;
}
.reward-panel .subtle {
margin-top: calc(22 * var(--u));
font-size: calc(30 * var(--u));
}
.reward-grid {
position: relative;
width: calc(1016 * var(--u));
height: calc(486 * var(--u));
margin: calc(28 * var(--u)) auto 0;
}
.reward-item {
position: absolute;
top: 0;
width: calc(486 * var(--u));
height: calc(486 * var(--u));
color: var(--gold);
text-align: center;
}
.reward-item:first-child {
left: calc(8 * var(--u));
}
.reward-item:last-child {
left: calc(522 * var(--u));
}
.reward-orb {
position: absolute;
z-index: 0;
display: block;
inset: 0;
width: calc(486 * var(--u));
height: calc(486 * var(--u));
}
.reward-gold {
position: absolute;
z-index: 1;
top: 50%;
left: 50%;
width: calc(178 * var(--u));
transform: translate(-50%, -50%);
}
.reward-item strong {
position: absolute;
top: calc(98 * var(--u));
left: calc(290 * var(--u));
font-size: calc(40 * var(--u));
line-height: 1;
white-space: nowrap;
}
.reward-item span {
position: absolute;
top: calc(421 * var(--u));
left: 50%;
display: block;
width: calc(360 * var(--u));
transform: translateX(-50%);
color: var(--gold);
font-size: calc(30 * var(--u));
line-height: 1.2;
}
.plus {
position: absolute;
top: calc(207 * var(--u));
left: calc(472 * var(--u));
display: block;
width: calc(71 * var(--u));
height: calc(71 * var(--u));
}
.invite-copy {
width: calc(1016 * var(--u));
margin: calc(42 * var(--u)) auto 0;
text-align: center;
}
.invite-copy h2 {
font-size: calc(46 * var(--u));
line-height: 1;
}
.invite-copy .subtle {
margin-top: calc(28 * var(--u));
font-size: calc(30 * var(--u));
}
.invite-fields {
display: grid;
grid-template-columns: minmax(0, 1fr) calc(286 * var(--u));
gap: calc(24 * var(--u));
width: calc(760 * var(--u));
margin: calc(58 * var(--u)) auto 0;
}
.link-box {
display: flex;
align-items: center;
justify-content: center;
min-width: 0;
height: calc(85 * var(--u));
padding: 0 calc(28 * var(--u));
overflow: hidden;
color: var(--gold);
font-size: calc(30 * var(--u));
text-overflow: ellipsis;
white-space: nowrap;
background: url('./assets/link-input.svg') center / 100% 100% no-repeat;
}
.invite-code {
font-weight: 700;
letter-spacing: calc(1 * var(--u));
}
.invite-actions {
display: flex;
width: calc(764 * var(--u));
align-items: center;
justify-content: center;
gap: calc(24 * var(--u));
margin: calc(50 * var(--u)) auto 0;
}
.ornate-button {
display: flex;
align-items: center;
justify-content: center;
width: calc(774 * var(--u));
height: calc(133 * var(--u));
margin: 0 auto;
color: var(--gold);
font-size: calc(50 * var(--u));
font-weight: 800;
line-height: 1;
text-shadow: 0 calc(2 * var(--u)) calc(4 * var(--u)) rgba(0, 0, 0, 0.35);
background: url('./assets/button-active-wide.png') center / 100% 100%
no-repeat;
}
.ornate-button:active {
transform: translateY(calc(2 * var(--u)));
}
.invite-actions .ornate-button {
flex: 0 0 calc(520 * var(--u));
width: calc(520 * var(--u));
height: calc(100 * var(--u));
font-size: calc(42 * var(--u));
}
.invite-actions .small-copy-button {
flex: 0 0 calc(220 * var(--u));
width: calc(220 * var(--u));
height: calc(78 * var(--u));
font-size: calc(30 * var(--u));
background-image: url('./assets/claim-active.png');
}
.stats-panel {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
align-content: center;
gap: calc(34 * var(--u)) calc(36 * var(--u));
height: calc(520 * var(--u));
margin-top: calc(62 * var(--u));
padding: calc(108 * var(--u)) calc(92 * var(--u)) calc(92 * var(--u));
}
.stat {
display: flex;
min-width: 0;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
}
.stat strong {
color: var(--gold);
font-size: calc(56 * var(--u));
line-height: 1;
font-weight: 700;
}
.stat span {
width: 100%;
margin-top: calc(12 * var(--u));
color: var(--gold);
font-size: calc(30 * var(--u));
line-height: 1.08;
}
.monthly-panel {
min-height: calc(1530 * var(--u));
margin-top: calc(34 * var(--u));
margin-bottom: calc(32 * var(--u));
padding: calc(126 * var(--u)) calc(78 * var(--u)) calc(70 * var(--u));
}
.monthly-panel.is-quota {
min-height: calc(1375 * var(--u));
}
.monthly-panel h2,
.rank-panel h2 {
font-size: calc(60 * var(--u));
line-height: 1;
}
.task-tabs {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: calc(38 * var(--u));
margin-top: calc(78 * var(--u));
}
.task-tab {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: calc(120 * var(--u));
padding: 0 calc(36 * var(--u));
color: var(--gold);
font-size: calc(30 * var(--u));
font-weight: 400;
line-height: 1.15;
text-align: center;
text-shadow: 0 calc(2 * var(--u)) calc(2 * var(--u)) rgba(0, 0, 0, 0.25);
background: url('./assets/tab-inactive-a.png') center / 100% 100% no-repeat;
}
.task-tab span {
display: block;
}
.task-tab.is-active {
background-image: url('./assets/tab-active-a.png');
}
.monthly-panel.is-quota .task-tab {
background-image: url('./assets/tab-inactive-b.png');
}
.monthly-panel.is-quota .task-tab.is-active {
background-image: url('./assets/tab-active-b.png');
}
.task-pane {
display: none;
}
.task-pane.is-active {
display: block;
}
.timeline {
position: relative;
margin-top: calc(76 * var(--u));
padding-left: calc(114 * var(--u));
}
.timeline::before {
position: absolute;
top: calc(40 * var(--u));
bottom: calc(92 * var(--u));
left: calc(38 * var(--u));
width: calc(4 * var(--u));
content: '';
background: var(--gold);
}
.milestone {
position: relative;
display: grid;
grid-template-columns: minmax(0, 1fr) calc(220 * var(--u));
align-items: center;
min-height: calc(139 * var(--u));
column-gap: calc(20 * var(--u));
margin-bottom: calc(30 * var(--u));
padding: calc(18 * var(--u)) calc(34 * var(--u));
background: url('./assets/milestone-row.svg') center / 100% 100% no-repeat;
}
.milestone::before {
position: absolute;
top: 50%;
left: calc(-92 * var(--u));
width: calc(41 * var(--u));
height: calc(41 * var(--u));
content: '';
transform: translateY(-50%);
background: url('./assets/timeline-node.png') center / contain no-repeat;
}
.milestone.is-current::before {
background-image: url('./assets/timeline-node-active.png');
}
.milestone > div,
.quota-card > div {
min-width: 0;
}
.milestone h3,
.quota-card h3 {
color: var(--white);
font-size: calc(36 * var(--u));
font-weight: 700;
line-height: 1.05;
}
.milestone p,
.quota-card p {
margin-top: calc(14 * var(--u));
color: var(--gold);
font-size: calc(30 * var(--u));
line-height: 1.2;
}
.copy-task-button {
margin-top: calc(54 * var(--u));
}
.footnote {
margin-top: calc(34 * var(--u));
font-size: calc(30 * var(--u));
line-height: 1.25;
}
.quota-list {
display: grid;
gap: calc(50 * var(--u));
margin-top: calc(76 * var(--u));
}
.quota-card {
display: grid;
grid-template-columns: minmax(0, 1fr) calc(220 * var(--u));
align-items: center;
min-height: calc(169 * var(--u));
padding: calc(24 * var(--u)) calc(30 * var(--u)) calc(22 * var(--u))
calc(36 * var(--u));
background: url('./assets/task-row.svg') center / 100% 100% no-repeat;
}
.claim-button {
display: flex;
align-items: center;
justify-content: center;
width: calc(220 * var(--u));
height: calc(60 * var(--u));
color: var(--gold);
font-size: calc(30 * var(--u));
font-weight: 700;
background: url('./assets/claim-inactive.png') center / 100% 100% no-repeat;
}
.claim-button.is-ready {
background-image: url('./assets/claim-active.png');
}
.claim-button:disabled {
cursor: default;
}
.task-empty {
margin: calc(76 * var(--u)) auto calc(50 * var(--u));
color: var(--gold);
font-size: calc(32 * var(--u));
line-height: 1.3;
text-align: center;
}
.rank-panel {
min-height: calc(5124 * var(--u));
margin-top: calc(42 * var(--u));
margin-bottom: calc(28 * var(--u));
padding: calc(126 * var(--u)) calc(68 * var(--u)) calc(72 * var(--u));
background-image:
url('./assets/panel-top-b.png'), url('./assets/panel-bottom-b.png'),
url('./assets/panel-middle-b.png');
}
.rank-list {
display: grid;
gap: calc(10 * var(--u));
margin-top: calc(72 * var(--u));
}
.rank-row {
display: grid;
grid-template-columns:
calc(154 * var(--u)) calc(108 * var(--u)) minmax(0, 1fr)
auto;
align-items: center;
min-height: calc(149 * var(--u));
padding: 0 calc(42 * var(--u)) 0 calc(28 * var(--u));
background: url('./assets/rank-row.svg') center / 100% 100% no-repeat;
}
.rank-no {
grid-column: 1;
grid-row: 1;
color: var(--white);
font-size: calc(36 * var(--u));
line-height: 1;
text-align: center;
}
.rank-medal {
grid-column: 1;
grid-row: 1;
width: calc(74 * var(--u));
height: calc(72 * var(--u));
object-fit: contain;
justify-self: center;
}
.rank-avatar {
grid-column: 2;
grid-row: 1;
width: calc(108 * var(--u));
height: calc(108 * var(--u));
border: calc(2 * var(--u)) solid #ffebbb;
border-radius: 999px;
object-fit: cover;
}
.rank-name {
grid-column: 3;
grid-row: 1;
padding-left: calc(24 * var(--u));
overflow: hidden;
color: var(--white);
font-size: calc(36 * var(--u));
font-weight: 700;
line-height: 1.1;
text-overflow: ellipsis;
white-space: nowrap;
}
.rank-score {
grid-column: 4;
grid-row: 1;
color: var(--white);
font-size: calc(36 * var(--u));
font-weight: 700;
line-height: 1;
white-space: nowrap;
}
.rank-row > span:not(.rank-no):not(.rank-score) {
display: none;
}
[hidden] {
display: none !important;
}