chatapp-h5/h5/mifa-pay/index.html
2026-04-24 12:42:12 +08:00

250 lines
5.5 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"
/>
<title>Recharge</title>
<style>
:root {
--bg: #08131f;
--surface: rgba(15, 28, 42, 0.92);
--surface-strong: #102030;
--line: rgba(214, 170, 82, 0.18);
--line-strong: rgba(214, 170, 82, 0.42);
--text: #f6f1e6;
--muted: #bcae8d;
--gold: #d6aa52;
--gold-strong: #c49335;
--danger: #ff9f9f;
--shadow: 0 16px 36px rgba(0, 0, 0, 0.24);
}
* {
box-sizing: border-box;
}
html,
body {
margin: 0;
min-height: 100%;
}
body {
font-family:
"SF Pro Display", "SF Pro Text", "PingFang SC", "Microsoft YaHei",
sans-serif;
color: var(--text);
background:
radial-gradient(circle at top, rgba(214, 170, 82, 0.1), transparent 24%),
linear-gradient(180deg, #091321 0%, var(--bg) 100%);
}
button {
font: inherit;
border: none;
cursor: pointer;
}
.page {
width: min(100%, 480px);
margin: 0 auto;
padding: 24px 16px 32px;
}
h1 {
margin: 0 0 18px;
font-size: 30px;
line-height: 1;
font-weight: 800;
color: var(--gold);
text-align: center;
letter-spacing: 0.03em;
}
.list {
display: grid;
gap: 12px;
}
.amount-item,
.channel-button {
position: relative;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 16px 18px;
border-radius: 22px;
border: 1px solid var(--line);
background:
linear-gradient(180deg, rgba(214, 170, 82, 0.04), transparent 60%),
var(--surface);
box-shadow: var(--shadow);
color: var(--text);
text-align: left;
transition:
transform 0.18s ease,
border-color 0.18s ease,
box-shadow 0.18s ease;
}
.amount-item:active,
.channel-button:active {
transform: scale(0.988);
}
.amount-item.selected {
border-color: var(--line-strong);
box-shadow:
0 0 0 1px rgba(214, 170, 82, 0.12),
0 16px 36px rgba(0, 0, 0, 0.24);
}
.amount-copy {
min-width: 0;
display: grid;
gap: 8px;
}
.amount-value {
font-size: 24px;
line-height: 1;
font-weight: 800;
color: var(--text);
}
.amount-meta {
font-size: 11px;
line-height: 1;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--muted);
}
.price-copy {
text-align: right;
display: grid;
gap: 6px;
flex-shrink: 0;
}
.price-copy strong {
font-size: 22px;
line-height: 1;
color: var(--gold);
}
.price-copy span {
font-size: 11px;
color: rgba(246, 241, 230, 0.58);
}
.check {
position: absolute;
top: 14px;
right: 14px;
width: 20px;
height: 20px;
border-radius: 50%;
border: 1px solid rgba(214, 170, 82, 0.3);
}
.amount-item.selected .check {
border-color: transparent;
background: linear-gradient(135deg, #efcf82, var(--gold-strong));
}
.amount-item.selected .check::after {
content: "";
position: absolute;
top: 5px;
left: 5px;
width: 9px;
height: 5px;
border-left: 2px solid #0c1520;
border-bottom: 2px solid #0c1520;
transform: rotate(-45deg);
}
.channel-block {
margin-top: 18px;
}
.channel-button {
justify-content: flex-start;
padding-right: 18px;
}
.channel-logo {
width: 78px;
height: 44px;
display: grid;
place-items: center;
flex-shrink: 0;
border-radius: 14px;
background: #ffffff;
overflow: hidden;
}
.channel-logo img {
display: block;
width: 68px;
height: auto;
}
.channel-name {
font-size: 16px;
font-weight: 700;
color: var(--text);
}
.channel-button:disabled {
cursor: not-allowed;
opacity: 0.55;
}
.status {
display: none;
margin-top: 14px;
padding: 12px 14px;
border-radius: 16px;
border: 1px solid rgba(255, 159, 159, 0.18);
background: rgba(255, 159, 159, 0.08);
color: var(--danger);
font-size: 12px;
line-height: 1.6;
white-space: pre-wrap;
}
.status.show {
display: block;
}
.empty {
padding: 16px;
border-radius: 20px;
border: 1px dashed var(--line);
color: var(--muted);
text-align: center;
font-size: 13px;
}
</style>
</head>
<body>
<div class="page">
<h1>Recharge</h1>
<div id="productList" class="list"></div>
<div id="channelList" class="list channel-block"></div>
<div id="pageStatus" class="status" aria-live="polite"></div>
</div>
<input id="applicationId" type="hidden" />
<script type="module" src="./app.js"></script>
</body>
</html>