1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+
4+ < head >
5+ < meta charset ="UTF-8 ">
6+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
7+ < title > Marathon Match Tournament 2025 - Champions Reveal</ title >
8+ < link rel ="stylesheet " href ="styles.css ">
9+ < link rel ="preconnect " href ="https://fonts.googleapis.com ">
10+ < link rel ="preconnect " href ="https://fonts.gstatic.com " crossorigin >
11+ < link href ="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&display=swap " rel ="stylesheet ">
12+ </ head >
13+
14+ < body >
15+ <!-- Loading/Intro Screen -->
16+ < div id ="intro-screen " class ="intro-screen ">
17+ < div class ="intro-content ">
18+ < div class ="logo-container ">
19+ < div class ="globe-trophy-container ">
20+ < div class ="globe ">
21+ < div class ="globe-sphere ">
22+ < div class ="globe-lines "> </ div >
23+ < div class ="globe-lines "> </ div >
24+ < div class ="globe-lines "> </ div >
25+ < div class ="globe-lines "> </ div >
26+ < div class ="globe-lines "> </ div >
27+ </ div >
28+ < div class ="trophy "> 🏆</ div >
29+ </ div >
30+ </ div >
31+ < h1 class ="intro-title "> Marathon Match Tournament 2025</ h1 >
32+ </ div >
33+ < p class ="intro-subtitle "> The champions are about to be revealed...</ p >
34+ < div class ="loading-bar ">
35+ < div class ="loading-progress "> </ div >
36+ </ div >
37+ </ div >
38+ </ div >
39+
40+ <!-- Main Content - Auto-Advancing Presentation -->
41+ < div id ="main-content " class ="main-content hidden ">
42+ <!-- Hero Section -->
43+ < section class ="presentation-section hero-section " id ="section-hero ">
44+ < div class ="container ">
45+ < div class ="hero-content ">
46+ < h1 class ="hero-title ">
47+ < span class ="text-line "> The Marathon Match</ span >
48+ < span class ="text-line "> Tournament Final</ span >
49+ < span class ="text-line highlight "> Has Concluded!</ span >
50+ </ h1 >
51+ < p class ="hero-subtitle "> After 24 hours of intense competition, the champions have emerged.</ p >
52+ </ div >
53+ </ div >
54+ </ section >
55+
56+ <!-- Problem Section -->
57+ < section class ="presentation-section problem-section " id ="section-problem ">
58+ < div class ="container ">
59+ < div class ="problem-content ">
60+ < div class ="section-header ">
61+ < h2 > The Challenge</ h2 >
62+ < p class ="section-subtitle "> The problem that tested our finalists</ p >
63+ </ div >
64+ < div class ="problem-card ">
65+ < div class ="problem-icon "> 🧩</ div >
66+ < h3 > Grid Puzzle Game</ h3 >
67+ < div class ="problem-details ">
68+ < p class ="problem-summary ">
69+ Finalists faced a challenging < strong > tile-matching puzzle</ strong > on an N×N grid.
70+ Each tile has 4 numbers (one per edge), and the goal is to place tiles so that
71+ adjacent edges match. When two edges match with value < strong > k</ strong > , you score
72+ < strong > k³</ strong > points. With limited discards and a hidden tile queue, competitors
73+ had to balance strategy, timing, and optimization to maximize their score.
74+ </ p >
75+
76+ < div class ="problem-animation-container ">
77+ < canvas id ="puzzle-animation " class ="puzzle-animation "> </ canvas >
78+ < div class ="animation-label "> Example Solution Animation</ div >
79+ </ div >
80+
81+ < div class ="problem-features ">
82+ < div class ="feature-item ">
83+ < span class ="feature-icon "> 🎯</ span >
84+ < div >
85+ < strong > Objective</ strong >
86+ < p > Place tiles to match edges and maximize score</ p >
87+ </ div >
88+ </ div >
89+ < div class ="feature-item ">
90+ < span class ="feature-icon "> ⚡</ span >
91+ < div >
92+ < strong > Scoring</ strong >
93+ < p > Matching edges with value < strong > k</ strong > earns < strong > k³</ strong > points
94+ </ p >
95+ </ div >
96+ </ div >
97+ < div class ="feature-item ">
98+ < span class ="feature-icon "> 🎲</ span >
99+ < div >
100+ < strong > Complexity</ strong >
101+ < p > Grid size 4-16, hand size 1-N, up to 20 edge values</ p >
102+ </ div >
103+ </ div >
104+ </ div >
105+ < div class ="problem-credits ">
106+ < p > < strong > Problem Setter:</ strong > dimkadimon</ p >
107+ < p > < strong > Problem Testers:</ strong > JacoCronje and nika</ p >
108+ </ div >
109+ </ div >
110+ </ div >
111+ </ div >
112+ </ section >
113+
114+ <!-- Finalists Section -->
115+ < section class ="presentation-section finalists-section " id ="section-finalists ">
116+ < div class ="container ">
117+ < div class ="finalists-content ">
118+ < div class ="section-header ">
119+ < h2 > The Finalists</ h2 >
120+ < p class ="section-subtitle "> Elite competitors who made it to the final round</ p >
121+ </ div >
122+ < div id ="finalists-grid " class ="finalists-grid ">
123+ <!-- Finalists will be populated by JavaScript -->
124+ </ div >
125+ </ div >
126+ </ div >
127+ </ section >
128+
129+ <!-- Leaderboard Section -->
130+ < section class ="presentation-section leaderboard-transition-section " id ="section-leaderboard ">
131+ < div class ="container ">
132+ < div class ="section-header ">
133+ < h2 > The Leaderboard</ h2 >
134+ < p class ="section-subtitle "> From provisional scores to final results</ p >
135+ </ div >
136+
137+ < div class ="leaderboard-container ">
138+ < div class ="leaderboard-header ">
139+ < div class ="leaderboard-title-container ">
140+ < h3 id ="leaderboard-title " class ="leaderboard-title "> PROVISIONAL SCORES</ h3 >
141+ < div class ="leaderboard-subtitle " id ="leaderboard-subtitle "> Calculated during the 24-hour
142+ challenge</ div >
143+ </ div >
144+ < div class ="transition-indicator hidden " id ="transition-indicator ">
145+ < div class ="transition-text "> Transitioning to Final Scores...</ div >
146+ < div class ="transition-bar ">
147+ < div class ="transition-progress "> </ div >
148+ </ div >
149+ </ div >
150+ </ div >
151+
152+ < div class ="leaderboard-table-wrapper ">
153+ < table class ="leaderboard-table " id ="leaderboard-table ">
154+ < thead >
155+ < tr >
156+ < th class ="rank-col "> RANK</ th >
157+ < th class ="member-col "> MEMBER</ th >
158+ < th class ="score-col "> SCORE</ th >
159+ < th class ="change-col hidden " id ="change-header "> CHANGE</ th >
160+ </ tr >
161+ </ thead >
162+ < tbody id ="leaderboard-body ">
163+ <!-- Leaderboard rows will be populated by JavaScript -->
164+ </ tbody >
165+ </ table >
166+ </ div >
167+ </ div >
168+ </ div >
169+ </ section >
170+
171+ <!-- Countdown to Reveal -->
172+ < section class ="presentation-section countdown-section " id ="section-countdown ">
173+ < div class ="container ">
174+ < div class ="countdown-content ">
175+ < h2 > And the Champions Are...</ h2 >
176+ < div class ="countdown-timer ">
177+ < span class ="countdown-number " id ="countdown "> 3</ span >
178+ </ div >
179+ </ div >
180+ </ div >
181+ </ section >
182+
183+ <!-- Podium Section -->
184+ < section class ="presentation-section podium-section " id ="section-podium ">
185+ < div class ="container ">
186+ < div class ="podium-container ">
187+ <!-- 2nd Place -->
188+ < div class ="podium-place second-place reveal-podium-delay ">
189+ < div class ="podium-pedestal ">
190+ < div class ="podium-base second-base ">
191+ < div class ="podium-number "> 2</ div >
192+ < div class ="podium-trophy trophy-silver "> 🏆</ div >
193+ </ div >
194+ < div class ="winner-card second-winner ">
195+ < div class ="winner-avatar second-avatar ">
196+ < div class ="avatar-placeholder "> 🥈</ div >
197+ </ div >
198+ < div class ="winner-info ">
199+ < h3 class ="winner-name " id ="second-name "> Loading...</ h3 >
200+ < p class ="winner-country " id ="second-country "> -</ p >
201+ < div class ="winner-score " id ="second-score "> -</ div >
202+ </ div >
203+ < div class ="winner-badge second-badge "> 2nd</ div >
204+ </ div >
205+ </ div >
206+ </ div >
207+
208+ <!-- 1st Place -->
209+ < div class ="podium-place first-place reveal-podium ">
210+ < div class ="podium-pedestal ">
211+ < div class ="podium-base first-base ">
212+ < div class ="podium-number "> 1</ div >
213+ < div class ="crown "> 👑</ div >
214+ < div class ="podium-trophy trophy-gold "> 🏆</ div >
215+ </ div >
216+ < div class ="winner-card first-winner ">
217+ < div class ="winner-avatar first-avatar ">
218+ < div class ="avatar-placeholder "> 🥇</ div >
219+ </ div >
220+ < div class ="winner-info ">
221+ < h3 class ="winner-name " id ="first-name "> Loading...</ h3 >
222+ < p class ="winner-country " id ="first-country "> -</ p >
223+ < div class ="winner-score " id ="first-score "> -</ div >
224+ </ div >
225+ < div class ="winner-badge first-badge "> CHAMPION</ div >
226+ </ div >
227+ </ div >
228+ </ div >
229+
230+ <!-- 3rd Place -->
231+ < div class ="podium-place third-place reveal-podium-delay-2 ">
232+ < div class ="podium-pedestal ">
233+ < div class ="podium-base third-base ">
234+ < div class ="podium-number "> 3</ div >
235+ < div class ="podium-trophy trophy-bronze "> 🏆</ div >
236+ </ div >
237+ < div class ="winner-card third-winner ">
238+ < div class ="winner-avatar third-avatar ">
239+ < div class ="avatar-placeholder "> 🥉</ div >
240+ </ div >
241+ < div class ="winner-info ">
242+ < h3 class ="winner-name " id ="third-name "> Loading...</ h3 >
243+ < p class ="winner-country " id ="third-country "> -</ p >
244+ < div class ="winner-score " id ="third-score "> -</ div >
245+ </ div >
246+ < div class ="winner-badge third-badge "> 3rd</ div >
247+ </ div >
248+ </ div >
249+ </ div >
250+ </ div >
251+
252+ <!-- Celebration Message -->
253+ < div class ="celebration-message ">
254+ < h2 > Congratulations to All Finalists!</ h2 >
255+ < p > Your dedication, skill, and strategic thinking made this tournament unforgettable.</ p >
256+ < div class ="celebration-stats ">
257+ < div class ="stat-item ">
258+ < div class ="stat-number "> 24</ div >
259+ < div class ="stat-label "> Hours</ div >
260+ </ div >
261+ < div class ="stat-item ">
262+ < div class ="stat-number " id ="total-finalists "> -</ div >
263+ < div class ="stat-label "> Finalists</ div >
264+ </ div >
265+ < div class ="stat-item ">
266+ < div class ="stat-number "> 1</ div >
267+ < div class ="stat-label "> Champion</ div >
268+ </ div >
269+ </ div >
270+ </ div >
271+ </ div >
272+ </ section >
273+
274+ </ div >
275+
276+ < script src ="script.js "> </ script >
277+ </ body >
278+
279+ </ html >
0 commit comments