Rule.cshtml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. @model LotteryWebApp.Models.HomeIndex_ViewModel
  2. @{
  3. ViewData["Title"] = "Millions - @Lang.rule_title";
  4. ViewData["ActiveTab"] = "Rule";
  5. Layout = "~/Areas/Millions/Views/Shared/_Layout.cshtml";
  6. }
  7. @using LotteryWebApp.Languages;
  8. <script src="https://cdn.tailwindcss.com"></script>
  9. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  10. <link rel="stylesheet" href="/Millions/css/site.css" />
  11. <link rel="stylesheet" href="/Millions/css/rule.css" />
  12. <!-- Add custom font Bricolage Grotesque to match Figma styling -->
  13. <link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;700;800;900&display=swap" rel="stylesheet">
  14. <div class="main-container animate__animated animate__fadeIn h-screen relative flex flex-col font-bricolage overflow-hidden" style="background-color: #F5F5F5 !important;">
  15. <!-- Fixed Header & Tabs Group -->
  16. <div class="fixed top-0 left-0 md:left-1/2 md:-translate-x-1/2 w-full md:max-w-[414px] z-[100] bg-white shadow-md">
  17. <!-- Header Block (Red) -->
  18. <div class="w-full bg-[#0062FF] h-[52px] flex items-center justify-between px-4 relative">
  19. <!-- Back Button -->
  20. <button onclick="window.history.back()" class="w-10 h-10 flex items-center justify-center -ml-2 rounded-full active:bg-white/20 transition-colors z-10 text-white cursor-pointer">
  21. <i class="fa-solid fa-arrow-left text-[20px]"></i>
  22. </button>
  23. <!-- Title -->
  24. <div class="absolute inset-0 flex items-center justify-center pointer-events-none">
  25. <span class="text-white text-[24px] font-bold tracking-wide drop-shadow-sm">@Lang.rule_title</span>
  26. </div>
  27. </div>
  28. <!-- Tabs Block Container -->
  29. <div class="w-full bg-white flex items-center justify-center px-2 pt-3 pb-1 relative shadow-sm transition-all border-b border-gray-100">
  30. <!-- Tab 1 -->
  31. <div class="flex flex-col items-center gap-1 cursor-pointer flex-1 group" onclick="switchFAQTab('basic')">
  32. <span id="tab-basic-label" class="text-[14px] font-bold text-[#534A4A] transition-colors whitespace-nowrap">Millions</span>
  33. <div id="tab-basic-bar" class="w-full h-[3px] bg-[#0062FF] mt-1 drop-shadow-sm transition-all rounded-t-sm"></div>
  34. </div>
  35. </div>
  36. </div>
  37. <!-- Main Scrollable Area -->
  38. <div class="flex-grow overflow-y-auto mt-[96px] pb-32 custom-scrollbar px-4" id="rule-scroll-container">
  39. <div class="max-w-[380px] mx-auto"> <!-- Wrapper to shrink content width -->
  40. <!-- Active Tab Content -->
  41. <div id="tab-content-basic" class="w-full animate__animated animate__fadeIn">
  42. <div class="rule-header-red">@Lang.rule_general_info</div>
  43. <div class="rule-table-grid pb-2">
  44. <div class="font-[800]">@Lang.rule_item</div>
  45. <div class="font-[800]">@Lang.rule_regulation_draw</div>
  46. <div>@Lang.rule_time</div>
  47. <div>@Lang.rule_20_30_daily</div>
  48. <div>@Lang.rule_ticket_closure</div>
  49. <div>@Lang.rule_20_00_daily</div>
  50. <div>@Lang.rule_total_numbers</div>
  51. <div>@Lang.rule_01_80</div>
  52. <div>@Lang.rule_numbers_drawn</div>
  53. <div>@Lang.rule_20_per_draw</div>
  54. <div>@Lang.rule_purchase_channels</div>
  55. <div>@Lang.rule_ussd_web_app</div>
  56. <div>@Lang.rule_result_channel</div>
  57. <div>@Lang.rule_web_app</div>
  58. <div>@Lang.rule_duplicate_allowed</div>
  59. <div>@Lang.rule_yes</div>
  60. <div>@Lang.rule_identical_allowed</div>
  61. <div>@Lang.rule_yes</div>
  62. </div>
  63. <div class="rule-header-red">@Lang.rule_game_1_title</div>
  64. <!-- Card Mockup inside Rule -->
  65. <div class="play-card bg-[#E11D48] relative mx-3 mt-4 mb-4 h-[90px] rounded-2xl overflow-hidden border border-white/20 shadow-lg cursor-pointer transition-all active:scale-[0.98]" onclick="window.location.href='/Millions/Home/GameHome'">
  66. <!-- 1. Design-accurate Staggered Ellipses -->
  67. <img src="/Millions/img/decorations/ellipse_1183.png" class="absolute -left-[60px] -top-[100px] w-[180px] h-[180px] pointer-events-none z-10 mix-blend-screen opacity-90 scale-y-[-1]" alt="highlight">
  68. <img src="/Millions/img/decorations/ellipse_1181.png" class="absolute -right-[50px] -top-[20px] w-[160px] h-[160px] pointer-events-none z-10 mix-blend-screen opacity-90" alt="highlight">
  69. <div class="w-full h-full flex items-center justify-between pl-3 pr-2 relative z-10">
  70. <div class="flex flex-col items-center justify-center pt-2">
  71. <span class="text-[14px] font-black italic text-white drop-shadow-md leading-[1.1] text-center" style="font-family: 'Montserrat', sans-serif;">@Html.Raw(Lang.rule_basic_pick)</span>
  72. <img src="/Millions/img/ball_10.png" class="w-7 h-7 object-contain drop-shadow-md -mt-2 -mr-8 border-2 border-[#E11D48] rounded-full bg-[#E11D48]">
  73. </div>
  74. <div class="flex flex-col items-center mt-0.5 ml-4">
  75. <span class="text-[10px] font-[800] text-white tracking-widest uppercase drop-shadow">@Lang.rule_jackpot_prize</span>
  76. <div class="flex items-start gap-1 mt-0.5">
  77. <span class="text-[28px] font-[900] text-white leading-none tracking-tight drop-shadow-md">30.000.000</span>
  78. <span class="text-[7px] font-[800] text-white bg-transparent border border-white/60 rounded px-[2px] mt-1 shadow-sm leading-tight">HTG</span>
  79. </div>
  80. <div class="text-[9px] text-white/90 mt-0.5">@Lang.rule_next_round <span class="font-[900] text-white ml-0.5 drop-shadow">05:00</span></div>
  81. </div>
  82. <div class="flex flex-col items-center justify-center h-full py-2 w-[80px] gap-1">
  83. <img src="/Millions/img/play_chest.png" class="h-[46px] w-auto object-contain drop-shadow-lg">
  84. <div class="w-full yellow-button text-center rounded-[10px] py-[4px] text-[10px] font-[900] px-2 z-20 active:scale-95 transition-transform text-[#212121] border-2 border-white shadow-lg" style="background: linear-gradient(180deg, #FFE95B 0%, #ECA600 100%);">@Lang.rule_play_now</div>
  85. </div>
  86. </div>
  87. </div>
  88. <!-- @Lang.rule_how_to_play Section -->
  89. <div class="rule-section-title">
  90. <span class="icon">&#9670;</span> @Lang.rule_how_to_play
  91. </div>
  92. <div class="rule-table-grid desc-grid pb-4">
  93. <div class="font-[800]">@Lang.rule_item</div>
  94. <div class="font-[800]">@Lang.rule_description</div>
  95. <div>@Lang.rule_ticket_price</div>
  96. <div>@Lang.rule_10_htg</div>
  97. <div>@Lang.rule_selection_method</div>
  98. <div>@Html.Raw(Lang.rule_choose_10)</div>
  99. <div>@Lang.rule_winning_rule</div>
  100. <div>@Html.Raw(Lang.rule_10_taken_from)</div>
  101. <div>Drawn numbers as the<br>official</div>
  102. <div></div>
  103. <div>@Lang.rule_objective</div>
  104. <div>@Lang.rule_match_as_many</div>
  105. </div>
  106. <!-- @Lang.rule_jackpot_rule Section -->
  107. <div class="rule-section-title mt-2">
  108. <span class="icon">&#9670;</span> @Lang.rule_jackpot_rule
  109. </div>
  110. <div class="flex justify-center mt-4 mb-4">
  111. <img src="/Millions/img/play_chest.png" class="h-[120px] object-contain drop-shadow-xl" alt="Chest" />
  112. </div>
  113. <div class="text-[11px] font-semibold text-[#212121] px-3 mb-3">@Html.Raw(Lang.rule_match_all_10)</div>
  114. <div class="px-3 flex flex-wrap gap-2 mb-4 justify-start">
  115. <div class="ball-green">1</div>
  116. <div class="ball-green">4</div>
  117. <div class="ball-green">5</div>
  118. <div class="ball-green">12</div>
  119. <div class="ball-green">24</div>
  120. <div class="ball-green">28</div>
  121. <div class="ball-green">30</div>
  122. <div class="ball-green">37</div>
  123. <div class="ball-green">46</div>
  124. <div class="ball-green">49</div>
  125. </div>
  126. <div class="rule-table-grid pb-2">
  127. <div class="font-[800]">@Lang.rule_condition</div>
  128. <div class="font-[800]">@Lang.rule_prize_pool</div>
  129. <div>@Html.Raw(Lang.rule_if_le_10)</div>
  130. <div>@Html.Raw(Lang.rule_each_receives)</div>
  131. <div class="mt-2">@Html.Raw(Lang.rule_if_gt_10)</div>
  132. <div class="mt-2">@Html.Raw(Lang.rule_shared_equally)</div>
  133. </div>
  134. <!-- @Lang.rule_standard_prize -->
  135. <div class="rule-section-title mt-4">
  136. <span class="icon">&#9670;</span> @Lang.rule_standard_prize
  137. </div>
  138. <div class="rule-table-grid pb-2">
  139. <div class="font-[800]">@Lang.rule_numbers_matches</div>
  140. <div class="font-[800]">@Lang.rule_prize_pool_htg</div>
  141. <div>9</div>
  142. <div>@Html.Raw(Lang.rule_prize_12k)</div>
  143. <div>8</div>
  144. <div>@Html.Raw(Lang.rule_prize_600)</div>
  145. <div>7</div>
  146. <div>@Html.Raw(Lang.rule_prize_160)</div>
  147. <div>6</div>
  148. <div>@Html.Raw(Lang.rule_prize_20)</div>
  149. <div>5</div>
  150. <div>@Html.Raw(Lang.rule_prize_5)</div>
  151. </div>
  152. </div>
  153. <!-- Other tabs removed as per request -->
  154. </div> <!-- End max-width wrapper -->
  155. </div> <!-- End Scroll Container -->
  156. </div>
  157. <script>
  158. function switchFAQTab(tabId) {
  159. // Simple mock tab visual switcher for now matching the exact styling requested
  160. ['basic', 'smallbig', 'oddeven'].forEach(t => {
  161. document.getElementById(`tab-${t}-label`).classList.remove('text-[#534A4A]');
  162. document.getElementById(`tab-${t}-label`).classList.add('text-[#909090]');
  163. let bar = document.getElementById(`tab-${t}-bar`);
  164. if(bar) {
  165. bar.classList.remove('bg-[#0062FF]', 'drop-shadow-sm', 'h-[3px]', 'rounded-t-sm');
  166. bar.classList.add('bg-transparent', 'h-0.5');
  167. }
  168. let desc = document.getElementById(`tab-${t}-desc`);
  169. if(desc) {
  170. desc.classList.remove('text-[#534A4A]');
  171. desc.classList.add('text-[#909090]');
  172. }
  173. // Hide content
  174. let content = document.getElementById(`tab-content-${t.replace('_','')}`);
  175. if(content) {
  176. content.classList.add('hidden');
  177. }
  178. });
  179. // activate target
  180. document.getElementById(`tab-${tabId}-label`).classList.remove('text-[#909090]');
  181. document.getElementById(`tab-${tabId}-label`).classList.add('text-[#534A4A]');
  182. let targetBar = document.getElementById(`tab-${tabId}-bar`);
  183. if(targetBar) {
  184. targetBar.classList.remove('bg-transparent', 'h-0.5');
  185. targetBar.classList.add('bg-[#0062FF]', 'drop-shadow-sm', 'h-[3px]', 'rounded-t-sm');
  186. }
  187. let currentDesc = document.getElementById(`tab-${tabId}-desc`);
  188. if(currentDesc) {
  189. currentDesc.classList.remove('text-[#909090]');
  190. currentDesc.classList.add('text-[#534A4A]');
  191. }
  192. // Show content (the id for content is tab-content-basic, tab-content-smallbig, tab-content-oddeven)
  193. let activeContentId = `tab-content-${tabId.replace('_','')}`;
  194. let currentContent = document.getElementById(activeContentId);
  195. if(currentContent) {
  196. currentContent.classList.remove('hidden');
  197. }
  198. // Reset scroll position when switching tabs
  199. let scrollCont = document.getElementById('rule-scroll-container');
  200. if(scrollCont) scrollCont.scrollTop = 0;
  201. }
  202. </script>
  203. <!-- Bottom Navbar shared component -->
  204. <partial name="_BottomNavbar" />