dance.css
3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/* dance.html deltas on top of live.css — same comic-panel visual language,
loaded after live.css so these rules win. Only what dance.html actually
needs differently: a boxed 9:16 player (T13) and the wardrobe grid (T16).
Everything else (topbar, clip-row, qrow/up-btn, nickname modal, mobile
sub-tabs) is reused as-is from live.css. */
/* dance.html's video is a fixed 480x832 (9:16) product, not the arbitrary
aspect ratio live.html's text-prompt clips can end up at — box it to that
ratio and center it instead of letting it stretch edge-to-edge on a wide
desktop viewport. */
.player-wrap {
aspect-ratio: 9 / 16;
max-width: 100%;
max-height: 100%;
margin: auto;
width: auto;
height: 100%;
}
@media (max-width: 768px) {
.player-wrap { height: auto; width: 100%; }
}
.wardrobe-tabs { display: flex; gap: 8px; padding: 0 2px 4px; }
.wardrobe-tabs button {
flex: 1;
font: bold 12px Tahoma, sans-serif;
background: #fff;
border: 3px solid #000;
color: var(--ink);
border-radius: 12px;
padding: 7px 4px;
box-shadow: var(--shadow-sm);
cursor: pointer;
}
.wardrobe-tabs button.active { background: var(--accent); }
.wardrobe-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.wardrobe-card {
color: var(--ink);
background: #fff;
border: 3px solid #000;
border-radius: 14px;
padding: 6px;
box-shadow: var(--shadow);
cursor: pointer;
text-align: center;
}
.wardrobe-card:active { transform: translate(2px, 2px); box-shadow: 2px 2px 0 #000; }
.wardrobe-card img { width: 100%; height: 90px; object-fit: cover; border-radius: 8px; margin-bottom: 4px; display: block; }
.wardrobe-card .name { font-size: 12px; font-weight: bold; line-height: 1.3; }
.wardrobe-card.disabled { opacity: .5; cursor: default; }
.coming-soon { color: var(--muted); text-align: center; margin-top: 40px; font-size: 13px; font-weight: bold; padding: 0 12px; }
/* T28: 传衣服 (mode 2) upload panel — same comic-panel language as
.wardrobe-card, laid out as a simple vertical form instead of a grid. */
.upload-panel { padding: 8px 4px; }
.upload-panel .hint { font-size: 12px; color: var(--muted); margin-bottom: 10px; line-height: 1.5; }
.upload-panel input[type="file"] { width: 100%; font-size: 12px; margin-bottom: 10px; }
.upload-panel .price-line { font: bold 13px Tahoma, sans-serif; margin-bottom: 10px; }
.upload-panel button {
width: 100%;
font: bold 13px Tahoma, sans-serif;
background: var(--accent);
border: 3px solid #000;
color: var(--ink);
border-radius: 12px;
padding: 8px 4px;
box-shadow: var(--shadow-sm);
cursor: pointer;
}
.upload-panel button:disabled { opacity: .5; cursor: default; }
.upload-panel .upload-error { color: #c0392b; font: bold 12px Tahoma, sans-serif; margin-top: 8px; }
.upload-panel .upload-status { font: bold 12px Tahoma, sans-serif; margin-top: 8px; }
/* T29: balance pill + topup tier picker (reuses .nickname-modal/.nickname-box) */
.credit-pill { font: bold 12px Tahoma, sans-serif; }
.topup-tier {
display: flex;
justify-content: space-between;
align-items: center;
border: 3px solid #000;
border-radius: 12px;
padding: 8px 10px;
margin-bottom: 8px;
box-shadow: var(--shadow-sm);
}
.topup-tier .credits { font: bold 14px Tahoma, sans-serif; }
.topup-tier button { font: bold 12px Tahoma, sans-serif; background: var(--accent); border: 3px solid #000; border-radius: 10px; padding: 5px 10px; cursor: pointer; }
.topup-banner { text-align: center; font: bold 13px Tahoma, sans-serif; padding: 8px; margin: 0 0 10px; border-radius: 10px; }
.topup-banner.success { background: #d4f7d4; }
.topup-banner.cancelled { background: #f7e4d4; }
.age-box .age-disclaimer { font-size: 12px; line-height: 1.6; color: #444; font-weight: normal; }