Skip to content

Commit ef7e240

Browse files
committed
Merge branch 'mm-final-2025-reveal' into dev
2 parents b7e5833 + 2ae7173 commit ef7e240

File tree

16 files changed

+2585
-0
lines changed

16 files changed

+2585
-0
lines changed

.circleci/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ workflows:
226226
branches:
227227
only:
228228
- dev
229+
- mm-final-2025-reveal
229230

230231
- deployQa:
231232
context: org-global
Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
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></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></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>
103 KB
Loading
83.4 KB
Loading
21.4 KB
Loading
23.5 KB
Loading
21.4 KB
Loading
22.5 KB
Loading
21.2 KB
Loading
20.5 KB
Loading

0 commit comments

Comments
 (0)