Skip to content

Commit 81d99f8

Browse files
committed
2025 finals website v1
1 parent c687ba9 commit 81d99f8

File tree

2 files changed

+382
-160
lines changed

2 files changed

+382
-160
lines changed

2024-quals.html

Lines changed: 220 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,220 @@
1+
<html>
2+
3+
<head>
4+
<link rel="icon" type="image/x-icon" href="favicon.ico">
5+
<title>LiveCTF</title>
6+
<style>
7+
body {
8+
font-family: sans-serif;
9+
color: #fff;
10+
margin: 0;
11+
padding: 0;
12+
overflow-x: hidden;
13+
}
14+
15+
video {
16+
width: 100vw;
17+
height: 100vh;
18+
object-fit: cover;
19+
position: absolute;
20+
top: 0;
21+
left: 0;
22+
z-index: -1;
23+
}
24+
25+
.broadcast {
26+
color: #6699ff;
27+
}
28+
29+
#content {
30+
display: flex;
31+
padding: 0 15%;
32+
}
33+
34+
#partner {
35+
padding: 20px;
36+
width: 20%;
37+
}
38+
39+
#links {
40+
padding: 20px;
41+
width: 60%;
42+
}
43+
44+
#space {
45+
text-align: center;
46+
margin-top: 50vh;
47+
}
48+
49+
a.broadcast,
50+
a,
51+
a.broadcast:visited {
52+
color: #9932CC;
53+
}
54+
55+
#previous {
56+
/*position: absolute;
57+
left: 50%;
58+
bottom: 0;*/
59+
padding: 10px;
60+
width: 20%;
61+
/*transform: translate(-50%, -50%);*/
62+
border: 1px solid rgb(223, 60, 220);
63+
}
64+
65+
#previous a {
66+
color: white;
67+
}
68+
69+
#previous ul li {
70+
list-style-type: none;
71+
padding-bottom: 5px;
72+
}
73+
74+
#bracket {
75+
position: absolute;
76+
bottom: -100%;
77+
left: 0;
78+
padding: 0;
79+
width: 100%;
80+
height: 100%;
81+
}
82+
83+
#bracket-button {
84+
position: absolute;
85+
bottom: 50px;
86+
right: 50px;
87+
background: #d81bc8;
88+
box-shadow: 0 0 15px 5px #f638e6;
89+
border-radius: 50%;
90+
width: 50px;
91+
height: 50px;
92+
font-size: 20pt;
93+
text-align: center;
94+
padding: 10px;
95+
animation: pulse 3s infinite;
96+
cursor: pointer;
97+
}
98+
99+
.chevron::before {
100+
border-style: solid;
101+
border-width: 0.15em 0.15em 0 0;
102+
content: '';
103+
display: inline-block;
104+
height: 20px;
105+
position: relative;
106+
width: 20px;
107+
top: 0;
108+
transform: rotate(135deg);
109+
}
110+
111+
.chevron {
112+
margin-top: 5px;
113+
height: 20px;
114+
}
115+
116+
@keyframes pulse {
117+
0% {
118+
box-shadow: 0 0 5px 2px #f638e6;
119+
}
120+
121+
50% {
122+
box-shadow: 0 0 15px 5px #f638e6;
123+
}
124+
125+
100% {
126+
box-shadow: 0 0 5px 2px #f638e6;
127+
}
128+
}
129+
</style>
130+
</head>
131+
132+
<body>
133+
134+
<video poster="./logo.png" autoplay playsinline muted loop>
135+
<source src="./title.mp4" type="video/mp4">
136+
</video>
137+
138+
139+
<div id="space">
140+
<div style="font-size: 20pt;">
141+
<!--We'll be back in
142+
<div id="clockdiv">soon</div>-->
143+
Watch the LiveCTF stream!
144+
</div>
145+
146+
<div id="content">
147+
148+
<div id="partner">
149+
<h2>In partnership with:<h2>
150+
<img src="./ni-white.png" width="100%" />
151+
</div>
152+
153+
<div id="links">
154+
<h2>Join us during the DEF CON 33 CTF <a href="https://quals.2025.nautilus.institute/">Quals</a>!</h2>
155+
<h3>For a schedule of challenges and rules, see <a href="https://play.livectf.com">https://play.livectf.com/</a></h3>
156+
<h3>Next live stream always available on <a href="https://youtube.com/@LiveCTF/live">YouTube</a></h3>
157+
<!-- TODO: migrate to old page when not stuck on a tarmac with no laptop...
158+
<h2>Join us during the DEF CON 32 CTF Finals</h2>
159+
<h3><a href="https://www.youtube.com/watch?v=eU34hVPWbbw">Day 3 Stream</a></h3>
160+
<h4><a href="https://www.youtube.com/watch?v=4h-CHBaKhuI">Day 2 Stream</a></h4>
161+
<h5><a href="https://www.youtube.com/watch?v=4Ndw2mALAC8">Day 1 Stream</a></h5> -->
162+
</div>
163+
164+
<div id="previous">
165+
<p>Past events:</p>
166+
<ul>
167+
<li><a href="2023.html">2023 DEF CON Finals</a></li>
168+
<li><a href="2023-quals.html">2023 DEF CON Quals</a></li>
169+
<li><a href="2022.html">2022 DEF CON Finals</a></li>
170+
</ul>
171+
</div>
172+
</div>
173+
<!--
174+
<iframe id="bracket" src="https://livectf.challonge.com/livectf_defcon2024/module?theme=8219" width="100%"
175+
height="500" frameborder="0" scrolling="auto" allowtransparency="true"></iframe>
176+
177+
<div id="bracket-button">
178+
<div class="chevron"></div>
179+
</div>
180+
181+
<script>
182+
const deadline = 'August 13 2023 10:00:00 UTC-0700';
183+
function getTimeRemaining(endtime) {
184+
const total = Date.parse(endtime) - Date.parse(new Date());
185+
const seconds = Math.floor((total / 1000) % 60);
186+
const minutes = Math.floor((total / 1000 / 60) % 60);
187+
const hours = Math.floor((total / (1000 * 60 * 60)) % 24);
188+
const days = Math.floor(total / (1000 * 60 * 60 * 24));
189+
190+
return {
191+
total,
192+
days,
193+
hours,
194+
minutes,
195+
seconds
196+
};
197+
}
198+
function initializeClock(id, endtime) {
199+
const clock = document.getElementById(id);
200+
const timeinterval = setInterval(() => {
201+
const t = getTimeRemaining(endtime);
202+
clock.innerHTML = t.days + 'd ' + t.hours + 'h ' + t.minutes + 'm ' + t.seconds + 's ';
203+
if (t.total <= 0) {
204+
clearInterval(timeinterval);
205+
}
206+
}, 1000);
207+
}
208+
initializeClock('clockdiv', deadline);
209+
210+
document.getElementById("bracket-button").onclick = function () {
211+
document.getElementById('bracket').scrollIntoView({
212+
behavior: 'smooth'
213+
});
214+
};
215+
216+
</script>
217+
-->
218+
</body>
219+
220+
</html>

0 commit comments

Comments
 (0)