main
css 379 lines 5.78 KB
Raw
1 * {
2 box-sizing: border-box;
3 }
4
5 body {
6 margin: 0;
7 min-height: 100vh;
8 background: #f4f7f8;
9 color: #182033;
10 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
11 }
12
13 button,
14 select {
15 font: inherit;
16 }
17
18 .shell {
19 width: min(1120px, calc(100% - 32px));
20 margin: 0 auto;
21 padding: 42px 0;
22 }
23
24 .app-surface {
25 display: grid;
26 grid-template-columns: minmax(0, 0.88fr) minmax(360px, 1.12fr);
27 gap: 24px;
28 align-items: stretch;
29 }
30
31 .summary,
32 .preview {
33 border: 1px solid #d8e0e7;
34 border-radius: 8px;
35 background: #ffffff;
36 box-shadow: 0 18px 38px rgba(20, 32, 46, 0.10);
37 }
38
39 .summary {
40 display: flex;
41 min-height: 500px;
42 flex-direction: column;
43 justify-content: space-between;
44 padding: 28px;
45 }
46
47 .kicker {
48 display: flex;
49 flex-wrap: wrap;
50 gap: 8px;
51 margin-bottom: 24px;
52 }
53
54 .kicker span {
55 border: 1px solid #c7d2dc;
56 border-radius: 999px;
57 padding: 5px 9px;
58 color: #334155;
59 font-size: 12px;
60 font-weight: 750;
61 }
62
63 h1,
64 p,
65 dl {
66 margin: 0;
67 }
68
69 h1 {
70 max-width: 10ch;
71 color: #121826;
72 font-size: 48px;
73 line-height: 1.02;
74 font-weight: 800;
75 }
76
77 .lede {
78 max-width: 36ch;
79 margin-top: 16px;
80 color: #536171;
81 font-size: 16px;
82 line-height: 1.55;
83 }
84
85 .facts {
86 display: grid;
87 gap: 12px;
88 margin-top: 28px;
89 }
90
91 .facts div {
92 min-width: 0;
93 border-top: 1px solid #e5ebf0;
94 padding-top: 12px;
95 }
96
97 dt {
98 color: #687586;
99 font-size: 12px;
100 font-weight: 750;
101 }
102
103 dd {
104 margin: 4px 0 0;
105 overflow-wrap: anywhere;
106 color: #111827;
107 font-size: 14px;
108 font-weight: 760;
109 }
110
111 .checkout {
112 display: grid;
113 gap: 10px;
114 margin-top: 30px;
115 }
116
117 .wallet-label {
118 color: #475569;
119 font-size: 12px;
120 font-weight: 800;
121 }
122
123 .wallet-select {
124 width: 100%;
125 min-height: 42px;
126 border: 1px solid #cbd5e1;
127 border-radius: 6px;
128 padding: 0 10px;
129 background: #ffffff;
130 color: #111827;
131 }
132
133 .actions {
134 display: flex;
135 flex-wrap: wrap;
136 gap: 12px;
137 align-items: center;
138 }
139
140 .primary-button {
141 min-height: 42px;
142 border-radius: 6px;
143 padding: 0 16px;
144 cursor: pointer;
145 font-size: 14px;
146 font-weight: 780;
147 transition: background 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
148 }
149
150 .primary-button {
151 border: 1px solid transparent;
152 background: #0e7490;
153 color: #ffffff;
154 box-shadow: 0 10px 22px rgba(14, 116, 144, 0.24);
155 }
156
157 .primary-button:hover:not(:disabled) {
158 background: #155e75;
159 transform: translateY(-1px);
160 }
161
162 .primary-button:disabled,
163 .wallet-select:disabled {
164 cursor: not-allowed;
165 opacity: 0.58;
166 }
167
168 .status {
169 overflow-wrap: anywhere;
170 color: #667085;
171 font-size: 13px;
172 font-weight: 700;
173 }
174
175 .preview {
176 position: relative;
177 min-height: 500px;
178 overflow: hidden;
179 background:
180 linear-gradient(140deg, rgba(14, 116, 144, 0.14), transparent 34%),
181 linear-gradient(42deg, rgba(180, 83, 9, 0.17), transparent 42%),
182 #edf2f6;
183 }
184
185 .preview.is-active {
186 height: min(680px, calc(100vh - 84px));
187 min-height: 560px;
188 background: #ffffff;
189 }
190
191 .preview-topbar {
192 display: flex;
193 justify-content: space-between;
194 gap: 12px;
195 align-items: center;
196 height: 42px;
197 padding: 0 16px;
198 border-bottom: 1px solid rgba(24, 32, 51, 0.10);
199 background: rgba(255, 255, 255, 0.72);
200 }
201
202 .window-controls {
203 display: flex;
204 gap: 7px;
205 align-items: center;
206 min-width: 44px;
207 }
208
209 .window-controls span {
210 width: 9px;
211 height: 9px;
212 border-radius: 999px;
213 background: #94a3b8;
214 }
215
216 .window-controls span:nth-child(1) {
217 background: #b45309;
218 }
219
220 .window-controls span:nth-child(2) {
221 background: #0e7490;
222 }
223
224 .window-controls span:nth-child(3) {
225 background: #475569;
226 }
227
228 .viewer-title {
229 min-width: 0;
230 overflow: hidden;
231 color: #334155;
232 font-size: 12px;
233 font-weight: 800;
234 text-overflow: ellipsis;
235 white-space: nowrap;
236 }
237
238 .viewer-reset {
239 min-width: 44px;
240 border: 0;
241 background: transparent;
242 color: #0e7490;
243 cursor: pointer;
244 font-size: 12px;
245 font-weight: 800;
246 }
247
248 .viewer-reset[hidden] {
249 display: block;
250 visibility: hidden;
251 }
252
253 .preview-body {
254 position: absolute;
255 inset: 42px 0 0;
256 display: grid;
257 place-items: center;
258 gap: 18px;
259 align-content: center;
260 padding: 28px;
261 text-align: center;
262 }
263
264 .preview-body::before {
265 position: absolute;
266 inset: 36px;
267 content: "";
268 border: 1px dashed rgba(71, 85, 105, 0.28);
269 border-radius: 8px;
270 background:
271 repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.34) 0 10px, transparent 10px 20px),
272 rgba(255, 255, 255, 0.32);
273 }
274
275 .lock-mark {
276 position: relative;
277 z-index: 1;
278 display: grid;
279 width: 92px;
280 height: 92px;
281 place-items: center;
282 border-radius: 8px;
283 background: #121826;
284 color: #f8fafc;
285 font-size: 30px;
286 font-weight: 850;
287 }
288
289 .preview-body > div:last-child {
290 position: relative;
291 z-index: 1;
292 }
293
294 .preview-label {
295 color: #0e7490;
296 font-size: 13px;
297 font-weight: 800;
298 text-transform: uppercase;
299 }
300
301 .preview-title {
302 margin-top: 8px;
303 color: #182033;
304 font-size: 22px;
305 font-weight: 800;
306 }
307
308 .preview-body[hidden],
309 .payment-frame[hidden] {
310 display: none;
311 }
312
313 .payment-frame {
314 position: absolute;
315 inset: 42px 0 0;
316 display: block;
317 width: 100%;
318 height: calc(100% - 42px);
319 border: 0;
320 background: #f8fafc;
321 }
322
323 @media (max-width: 860px) {
324 .shell {
325 width: min(100% - 20px, 640px);
326 padding: 18px 0;
327 }
328
329 .app-surface {
330 grid-template-columns: 1fr;
331 }
332
333 .summary,
334 .preview {
335 min-height: auto;
336 }
337
338 h1 {
339 max-width: none;
340 font-size: 36px;
341 }
342
343 .preview {
344 height: 360px;
345 }
346
347 .preview.is-active {
348 height: min(660px, calc(100vh - 36px));
349 min-height: 560px;
350 }
351 }
352
353 @media (max-width: 520px) {
354 .summary {
355 padding: 20px;
356 }
357
358 .actions {
359 flex-direction: column;
360 align-items: stretch;
361 }
362
363 .primary-button {
364 width: 100%;
365 }
366
367 .preview {
368 height: 310px;
369 }
370
371 .preview.is-active {
372 height: min(620px, calc(100vh - 28px));
373 min-height: 520px;
374 }
375
376 .preview-body::before {
377 inset: 18px;
378 }
379 }