transfer-win-money.css 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. /* Millions — Transfer Win Money (TransferWinMoney.cshtml)
  2. Page shell + header match Rule (rule.css / millions-rule-page) */
  3. :root {
  4. --primary-blue: #0062FF;
  5. --dark-blue: #004ecc;
  6. }
  7. @keyframes transfer-float {
  8. 0%, 100% { transform: translateY(0); }
  9. 50% { transform: translateY(-8px); }
  10. }
  11. .animate-float {
  12. animation: transfer-float 4s ease-in-out infinite;
  13. }
  14. .btn-premium {
  15. border: 2px solid #ffffff !important;
  16. box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15), inset 0 0 0 1px rgba(255, 255, 255, 0.1);
  17. transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  18. }
  19. .btn-premium:active {
  20. transform: scale(0.95);
  21. box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
  22. }
  23. .btn-premium-red {
  24. background: linear-gradient(135deg, #0062FF 0%, #004ecb 100%);
  25. }
  26. /* ===== Page shell (same idea as .millions-rule-page) ===== */
  27. .millions-transfer-page {
  28. background-color: var(--primary-blue);
  29. min-height: 100vh;
  30. display: flex;
  31. flex-direction: column;
  32. position: relative;
  33. max-width: 430px;
  34. margin: 0 auto;
  35. font-family: 'Bricolage Grotesque', sans-serif;
  36. }
  37. /* Header with chevron pattern — mirrors .millions-rule-page .header */
  38. .millions-transfer-page .header {
  39. background-color: var(--primary-blue);
  40. background-image: url("data:image/svg+xml,%3Csvg width='60' height='30' viewBox='0 0 60 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 15 L15 0 L30 15 L45 0 L60 15 L60 30 L45 15 L30 30 L15 15 L0 30 Z' fill='%23004ecc' fill-opacity='0.4'/%3E%3C/svg%3E");
  41. height: 64px;
  42. display: flex;
  43. align-items: center;
  44. padding: 0 16px;
  45. color: #fff;
  46. position: sticky;
  47. top: 0;
  48. z-index: 100;
  49. }
  50. .millions-transfer-page .back-btn {
  51. width: 32px;
  52. height: 32px;
  53. display: flex;
  54. align-items: center;
  55. justify-content: center;
  56. color: #fff;
  57. text-decoration: none;
  58. font-size: 18px;
  59. }
  60. .millions-transfer-page .header-title {
  61. flex: 1;
  62. text-align: center;
  63. font-size: 20px;
  64. font-weight: 800;
  65. margin-right: 32px; /* balance back button — same as Rule */
  66. }
  67. /* White content card — mirrors .millions-rule-page .content-card */
  68. .millions-transfer-page .content-card {
  69. background-color: #ffffff;
  70. flex: 1;
  71. border-radius: 40px 40px 0 0;
  72. padding: 16px 18px 20px;
  73. overflow-y: auto;
  74. overflow-x: hidden;
  75. /* Clearance for home indicator; was 100px — too tall on short phones */
  76. padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px));
  77. box-shadow: 0 -4px 10px rgba(0, 0, 0, 0.1);
  78. position: relative;
  79. }
  80. .millions-transfer-page .content-inner {
  81. max-width: 100%;
  82. }
  83. /* ===== Success modal (transfer complete) ===== */
  84. .transfer-success-overlay {
  85. background: rgba(0, 0, 0, 0.72);
  86. }
  87. .transfer-success-card {
  88. width: 100%;
  89. max-width: 370px;
  90. background: #fff;
  91. border: 2px solid var(--primary-blue);
  92. border-radius: 28px;
  93. overflow: hidden;
  94. box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
  95. font-family: 'Bricolage Grotesque', sans-serif;
  96. }
  97. .transfer-success-body {
  98. padding: 16px 18px 12px;
  99. display: flex;
  100. flex-direction: column;
  101. align-items: center;
  102. }
  103. .transfer-success-hero {
  104. position: relative;
  105. width: 92px;
  106. height: 92px;
  107. display: flex;
  108. align-items: center;
  109. justify-content: center;
  110. margin-bottom: 4px;
  111. }
  112. .transfer-success-deco {
  113. position: absolute;
  114. inset: 0;
  115. pointer-events: none;
  116. }
  117. .transfer-success-deco span {
  118. position: absolute;
  119. display: block;
  120. border-radius: 50%;
  121. background: var(--primary-blue);
  122. opacity: 0.85;
  123. }
  124. .transfer-success-deco .d1 { width: 6px; height: 6px; top: 8px; left: 4px; }
  125. .transfer-success-deco .d2 { width: 4px; height: 4px; top: 22px; right: 2px; opacity: 0.6; }
  126. .transfer-success-deco .d3 { width: 5px; height: 5px; bottom: 18px; left: 0; }
  127. .transfer-success-deco .d4 { width: 4px; height: 4px; bottom: 6px; right: 8px; opacity: 0.55; }
  128. .transfer-success-deco .dash {
  129. position: absolute;
  130. width: 10px;
  131. height: 3px;
  132. background: var(--primary-blue);
  133. border-radius: 2px;
  134. opacity: 0.7;
  135. }
  136. .transfer-success-deco .dash-1 { top: 4px; right: 28px; transform: rotate(-25deg); }
  137. .transfer-success-deco .dash-2 { bottom: 12px; right: 0; transform: rotate(15deg); }
  138. .transfer-success-deco .dash-3 { left: 10px; bottom: 4px; transform: rotate(-12deg); }
  139. .transfer-success-deco .spark {
  140. position: absolute;
  141. color: #0A9800;
  142. font-size: 11px;
  143. line-height: 1;
  144. opacity: 0.95;
  145. }
  146. .transfer-success-deco .spark-1 { top: 0; right: 6px; }
  147. .transfer-success-deco .spark-2 { bottom: 2px; left: 16px; }
  148. .transfer-success-ring {
  149. width: 68px;
  150. height: 68px;
  151. border-radius: 50%;
  152. border: 4px solid var(--primary-blue);
  153. background: #fff;
  154. display: flex;
  155. align-items: center;
  156. justify-content: center;
  157. box-shadow: 0 4px 12px rgba(0, 98, 255, 0.18);
  158. position: relative;
  159. z-index: 1;
  160. }
  161. .transfer-success-ring i {
  162. color: #0A9800;
  163. font-size: 32px;
  164. line-height: 1;
  165. }
  166. .transfer-success-title {
  167. margin: 0 0 4px;
  168. font-size: 26px;
  169. font-weight: 800;
  170. color: var(--primary-blue);
  171. letter-spacing: -0.02em;
  172. }
  173. .transfer-success-sub {
  174. margin: 0 0 12px;
  175. font-size: 15px;
  176. font-weight: 700;
  177. color: #1a1a1a;
  178. text-align: center;
  179. line-height: 1.3;
  180. max-width: 300px;
  181. }
  182. .transfer-success-sub .transfer-success-sub-highlight {
  183. color: var(--primary-blue);
  184. font-weight: 800;
  185. }
  186. .transfer-success-panel {
  187. width: 100%;
  188. background: #e8f2ff;
  189. border-radius: 14px;
  190. padding: 8px 10px 6px;
  191. margin-bottom: 8px;
  192. }
  193. .transfer-success-row {
  194. display: flex;
  195. align-items: center;
  196. gap: 8px;
  197. padding: 6px 2px;
  198. border-bottom: 1px solid rgba(0, 98, 255, 0.12);
  199. font-size: 13px;
  200. }
  201. .transfer-success-row:last-child {
  202. border-bottom: none;
  203. padding-bottom: 2px;
  204. }
  205. .transfer-success-row-icon {
  206. width: 32px;
  207. height: 32px;
  208. border-radius: 9px;
  209. background: rgba(255, 255, 255, 0.95);
  210. color: var(--primary-blue);
  211. display: flex;
  212. align-items: center;
  213. justify-content: center;
  214. flex-shrink: 0;
  215. font-size: 14px;
  216. box-shadow: 0 1px 3px rgba(0, 98, 255, 0.1);
  217. }
  218. .transfer-success-row-label {
  219. flex: 1;
  220. font-weight: 700;
  221. color: #534a4a;
  222. min-width: 0;
  223. }
  224. .transfer-success-row-value {
  225. font-weight: 800;
  226. color: #1a1a1a;
  227. text-align: right;
  228. flex-shrink: 0;
  229. }
  230. .transfer-success-row-value--accent {
  231. color: var(--primary-blue);
  232. }
  233. .transfer-success-time {
  234. display: flex;
  235. align-items: center;
  236. gap: 8px;
  237. width: 100%;
  238. background: #e8f2ff;
  239. border-radius: 14px;
  240. padding: 10px 12px;
  241. margin-bottom: 8px;
  242. font-size: 13px;
  243. }
  244. .transfer-success-time i.transfer-success-row-icon {
  245. margin: 0;
  246. }
  247. .transfer-success-time-label {
  248. font-weight: 700;
  249. color: #534a4a;
  250. flex: 1;
  251. }
  252. .transfer-success-time-value {
  253. font-weight: 700;
  254. color: #1a1a1a;
  255. text-align: right;
  256. }
  257. .transfer-success-illustration {
  258. width: 100%;
  259. display: flex;
  260. justify-content: center;
  261. margin-bottom: 0;
  262. min-height: 48px;
  263. }
  264. .transfer-success-illustration svg {
  265. width: 96px;
  266. height: auto;
  267. }
  268. .transfer-success-actions {
  269. display: flex;
  270. gap: 10px;
  271. width: 100%;
  272. padding: 12px 14px 14px;
  273. box-sizing: border-box;
  274. }
  275. .transfer-success-actions button {
  276. flex: 1;
  277. min-width: 0;
  278. border-radius: 14px;
  279. font-family: inherit;
  280. font-weight: 800;
  281. font-size: 15px;
  282. padding: 12px 10px;
  283. cursor: pointer;
  284. transition: background 0.2s, color 0.2s, transform 0.15s, border-color 0.2s;
  285. }
  286. .transfer-success-actions button:active {
  287. transform: scale(0.98);
  288. }
  289. .transfer-success-btn-continue {
  290. border: 2px solid var(--primary-blue);
  291. background: #fff;
  292. color: var(--primary-blue);
  293. }
  294. .transfer-success-btn-continue:hover {
  295. background: #f0f6ff;
  296. }
  297. .transfer-success-btn-close {
  298. border: 2px solid var(--primary-blue);
  299. background: var(--primary-blue);
  300. color: #fff;
  301. }
  302. .transfer-success-btn-close:hover {
  303. background: var(--dark-blue);
  304. border-color: var(--dark-blue);
  305. }
  306. .transfer-success-actions.is-hidden {
  307. display: none !important;
  308. }
  309. /* ===== Failure modal (transfer / exchange error) ===== */
  310. .transfer-fail-card {
  311. width: 100%;
  312. max-width: 370px;
  313. background: #fff;
  314. border: 2px solid var(--primary-blue);
  315. border-radius: 28px;
  316. overflow: hidden;
  317. box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
  318. font-family: 'Bricolage Grotesque', sans-serif;
  319. }
  320. .transfer-fail-header {
  321. position: relative;
  322. background: var(--primary-blue);
  323. padding: 12px 16px 18px;
  324. overflow: hidden;
  325. }
  326. .transfer-fail-header-deco {
  327. position: absolute;
  328. inset: 0;
  329. opacity: 0.35;
  330. background-image: url("data:image/svg+xml,%3Csvg width='80' height='40' viewBox='0 0 80 40' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 20 L20 0 L40 20 L60 0 L80 20' stroke='%23ffffff' stroke-width='1.2' fill='none'/%3E%3C/svg%3E");
  331. background-position: 100% 0;
  332. background-repeat: no-repeat;
  333. background-size: 120px auto;
  334. pointer-events: none;
  335. }
  336. .transfer-fail-icon-wrap {
  337. position: relative;
  338. display: flex;
  339. justify-content: center;
  340. margin: 0 auto;
  341. width: 72px;
  342. height: 56px;
  343. }
  344. .transfer-fail-icon-circle {
  345. width: 52px;
  346. height: 52px;
  347. border-radius: 50%;
  348. background: #fff;
  349. display: flex;
  350. align-items: center;
  351. justify-content: center;
  352. box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
  353. position: relative;
  354. z-index: 1;
  355. }
  356. .transfer-fail-icon-circle i {
  357. color: var(--primary-blue);
  358. font-size: 24px;
  359. line-height: 1;
  360. }
  361. .transfer-fail-icon-warn {
  362. position: absolute;
  363. right: -2px;
  364. bottom: 2px;
  365. width: 24px;
  366. height: 24px;
  367. border-radius: 50%;
  368. background: #fff;
  369. border: 2px solid var(--primary-blue);
  370. display: flex;
  371. align-items: center;
  372. justify-content: center;
  373. font-size: 11px;
  374. color: var(--primary-blue);
  375. z-index: 2;
  376. box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
  377. }
  378. .transfer-fail-body {
  379. padding: 10px 16px 4px;
  380. text-align: center;
  381. }
  382. .transfer-fail-title {
  383. margin: 0 0 6px;
  384. font-size: 22px;
  385. font-weight: 800;
  386. color: var(--primary-blue);
  387. letter-spacing: -0.02em;
  388. }
  389. .transfer-fail-msg {
  390. margin: 0;
  391. font-size: 14px;
  392. font-weight: 700;
  393. color: #1a1a1a;
  394. line-height: 1.35;
  395. max-width: 300px;
  396. margin-left: auto;
  397. margin-right: auto;
  398. }
  399. .transfer-fail-msg .transfer-fail-msg-accent {
  400. color: var(--primary-blue);
  401. font-weight: 800;
  402. }
  403. .transfer-fail-divider {
  404. display: flex;
  405. align-items: center;
  406. gap: 10px;
  407. width: 100%;
  408. max-width: 280px;
  409. margin: 8px auto 4px;
  410. }
  411. .transfer-fail-divider::before,
  412. .transfer-fail-divider::after {
  413. content: "";
  414. flex: 1;
  415. height: 1px;
  416. background: rgba(0, 98, 255, 0.22);
  417. }
  418. .transfer-fail-divider span {
  419. width: 6px;
  420. height: 6px;
  421. border-radius: 50%;
  422. background: var(--primary-blue);
  423. flex-shrink: 0;
  424. }
  425. .transfer-fail-illustration {
  426. display: flex;
  427. justify-content: center;
  428. margin-bottom: 0;
  429. min-height: 40px;
  430. }
  431. .transfer-fail-illustration svg {
  432. width: 88px;
  433. height: auto;
  434. }
  435. .transfer-fail-card .transfer-success-actions {
  436. padding: 8px 12px 12px;
  437. gap: 8px;
  438. }
  439. .transfer-fail-card .transfer-success-actions button {
  440. padding: 10px 8px;
  441. font-size: 14px;
  442. }