PageSourceSearch

https://codecrunchglobal.vercel.app/hackathons/305-hackathon-series

html codecrunchglobal.vercel.app collected 2026-10-03 05:17:33 UTC 64,066 bytes, 1,142 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4  <meta charset="UTF-8" />
5  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6  <title>305 Hackathon Series · Code Crunch Worldwide</title>
7    <!-- cc-jsonld:start (managed) -->
8    
8<script type="application/ld+json">
9{
10  "@context": "https://schema.org",
11  "@type": "BreadcrumbList",
12  "itemListElement": [
13    {
14      "@type": "ListItem",
15      "position": 1,
16      "name": "Home",
17      "item": "https://codecrunchglobal.vercel.app/"
18    },
19    {
20      "@type": "ListItem",
21      "position": 2,
22      "name": "Hackathons",
23      "item": "https://codecrunchglobal.vercel.app/hackathons"
24    },
25    {
26      "@type": "ListItem",
27      "position": 3,
28      "name": "305 Hackathon Series",
29      "item": "https://codecrunchglobal.vercel.app/hackathons/305-hackathon-series"
30    }
31  ]
32}
33    </script>
33
34    <!-- cc-jsonld:end -->
35    <!-- cc-seo:start (managed) -->
36    <link rel="canonical" href="https://codecrunchglobal.vercel.app/hackathons/305-hackathon-series">
37    <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
38    <meta name="author" content="Code Crunch Worldwide">
39    <meta name="theme-color" content="#2463EB">
40    <meta name="keywords" content="Code Crunch, Code Crunch Worldwide, coding community, learn to code, tech community, coding workshops, technical interview prep, hackathons">
41    <meta property="og:type" content="website">
42    <meta property="og:site_name" content="Code Crunch Worldwide">
43    <meta property="og:title" content="305 Hackathon Series · Code Crunch Worldwide">
44    <meta property="og:description" content="Seven hackathon brands, twelve editions across the year, June through May. Hosted by Code Crunch and partner orgs in Miami.">
45    <meta property="og:url" content="https://codecrunchglobal.vercel.app/hackathons/305-hackathon-series">
46    <meta property="og:image" content="https://codecrunchglobal.vercel.app/codecrunchworldwide-brand-assets/codecrunchworldwide-official-logo.png">
47    <meta property="og:image:alt" content="Code Crunch Worldwide">
48    <meta property="og:locale" content="en_US">
49    <meta name="twitter:card" content="summary_large_image">
50    <meta name="twitter:title" content="305 Hackathon Series · Code Crunch Worldwide">
51    <meta name="twitter:description" content="Seven hackathon brands, twelve editions across the year, June through May. Hosted by Code Crunch and partner orgs in Miami.">
52    <meta name="twitter:image" content="https://codecrunchglobal.vercel.app/codecrunchworldwide-brand-assets/codecrunchworldwide-official-logo.png">
53    <!-- cc-seo:end -->
54  <meta
55    name="description"
56    content="Seven hackathon brands, twelve editions across the year, June through May. Hosted by Code Crunch and partner orgs in Miami."
57  />
58  <link rel="preconnect" href="https://fonts.googleapis.com" />
59  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
60  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@500;600;700;800&family=Plus+Jakarta+Sans:wght@700;800&display=swap" rel="stylesheet" />
61  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" />
62
63  <style>
64    :root {
65      --cc-blue: #2463EB;
66      --cc-blue-deep: #1d4ed8;
67      --cc-blue-soft: #eff6ff;
68      --cc-blue-line: #c7dafd;
69      --cc-orange: #F59E0B;
70      --cc-red: #EF4444;
71      --cc-dark: #111827;
72      --cc-ink: #1f2937;
73      --cc-muted: #4b5563;
74      --cc-line: #e5e7eb;
75      --cc-paper: #ffffff;
76      --cc-paper-2: #f8fbff;
77      --cc-amber-soft: #fff8ef;
78      --cc-amber-line: #f5c98b;
79      --shadow-sm: 0 8px 24px rgba(2, 16, 44, 0.08);
80      --shadow-md: 0 18px 36px rgba(2, 16, 44, 0.10);
81      --radius-lg: 20px;
82      --radius-md: 16px;
83      --radius-sm: 12px;
84      --maxw: 1140px;
85      --nav-h: 70px;
86    }
87
88    * { box-sizing: border-box; }
89    html { scroll-behavior: smooth; }
90
91    body {
92      margin: 0;
93      font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
94      color: var(--cc-ink);
95      background: linear-gradient(180deg, var(--cc-paper-2) 0%, #ffffff 60%);
96      padding-top: var(--nav-h);
97    }
98
99    a { color: inherit; text-decoration: none; }
100
101    .container {
102      max-width: var(--maxw);
103      margin: 0 auto;
104      padding: 0 20px;
105    }
106
107    /* Navbar */
108    .navbar {
109      position: fixed;
110      inset: 0 0 auto 0;
111      z-index: 1000;
112      height: var(--nav-h);
113      background: rgba(255, 255, 255, 0.95);
114      backdrop-filter: blur(10px);
115      border-bottom: 1px solid var(--cc-line);
116    }
117    .nav-row {
118      height: 100%;
119      display: flex;
120      align-items: center;
121      justify-content: space-between;
122      gap: 16px;
123      flex-wrap: wrap;
124    }
125    .brand {
126      display: flex;
127      align-items: center;
128      gap: 10px;
129    }
130    .brand-logo {
131      width: 36px;
132      height: 36px;
133      display: inline-flex;
134      align-items: center;
135      justify-content: center;
136      border-radius: 10px;
137      background: linear-gradient(135deg, var(--cc-blue), var(--cc-blue-deep));
138      color: #fff;
139      font-weight: 800;
140      font-size: 14px;
141      letter-spacing: -0.02em;
142    }
143    .brand-title {
144      font-family: "Plus Jakarta Sans", sans-serif;
145      font-weight: 800;
146      font-size: 1.05rem;
147      letter-spacing: -0.02em;
148      color: var(--cc-dark);
149    }
150    .brand-sub {
151      display: block;
152      font-family: "Inter", sans-serif;
153      font-size: 11px;
154      font-weight: 600;
155      color: var(--cc-muted);
156      letter-spacing: 0.04em;
157      text-transform: uppercase;
158    }
159    .nav-actions { display: flex; gap: 8px; flex-wrap: wrap; }
160    .nav-link {
161      padding: 9px 14px;
162      border-radius: 999px;
163      font-size: 14px;
164      font-weight: 700;
165      color: var(--cc-muted);
166    }
167    .nav-link:hover { color: var(--cc-blue); background: var(--cc-blue-soft); }
168    .nav-cta {
169      padding: 10px 18px;
170      border-radius: 999px;
171      background: var(--cc-blue);
172      color: #fff;
173      font-weight: 700;
174      font-size: 14px;
175      box-shadow: 0 8px 18px rgba(36, 99, 235, 0.25);
176    }
177    .nav-cta:hover { background: var(--cc-blue-deep); }
178
179    /* Hero */
180    .hero { padding: 36px 0 16px; }
181    .hero-grid {
182      display: grid;
183      grid-template-columns: 1.4fr 1fr;
184      gap: 28px;
185      align-items: center;
186    }
187    .hero h1 {
188      margin: 14px 0 12px;
189      font-family: "Plus Jakarta Sans", sans-serif;
190      font-size: clamp(2.1rem, 5vw, 3.4rem);
191      line-height: 1.05;
192      letter-spacing: -0.03em;
193      color: var(--cc-dark);
194    }
195    .hero h1 .accent { color: var(--cc-blue); }
196    .hero p { color: var(--cc-muted); line-height: 1.65; font-size: 1.02rem; max-width: 560px; }
197    .eyebrow {
198      display: inline-flex;
199      align-items: center;
200      gap: 8px;
201      padding: 6px 12px;
202      border-radius: 999px;
203      background: var(--cc-blue-soft);
204      color: var(--cc-blue);
205      font-size: 12px;
206      font-weight: 700;
207      letter-spacing: 0.04em;
208      border: 1px solid var(--cc-blue-line);
209    }
210    .hero-stats {
211      display: grid;
212      grid-template-columns: repeat(3, 1fr);
213      gap: 10px;
214      padding: 20px;
215      background: #fff;
216      border: 1px solid var(--cc-blue-line);
217      border-radius: var(--radius-lg);
218      box-shadow: var(--shadow-sm);
219    }
220    .hero-stat-num {
221      font-family: "Plus Jakarta Sans", sans-serif;
222      font-size: 1.9rem;
223      font-weight: 800;
224      color: var(--cc-blue);
225      letter-spacing: -0.03em;
226    }
227    .hero-stat-label {
228      font-size: 12px;
229      color: var(--cc-muted);
230      font-weight: 600;
231      letter-spacing: 0.03em;
232      text-transform: uppercase;
233    }
234
235    @media (max-width: 760px) {
236      .hero-grid { grid-template-columns: 1fr; }
237    }
238
239    /* Section */
240    main section { padding: 30px 0; }
241    .section-title {
242      font-family: "Plus Jakarta Sans", sans-serif;
243      font-size: clamp(1.55rem, 3vw, 2.1rem);
244      font-weight: 800;
245      letter-spacing: -0.03em;
246      color: var(--cc-dark);
247      margin: 0 0 6px;
248    }
249    .section-sub {
250      color: var(--cc-muted);
251      margin: 0 0 22px;
252      font-size: 0.98rem;
253      line-height: 1.6;
254    }
255
256    /* Hackathon cards */
257    .hack-grid {
258      display: grid;
259      grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
260      gap: 18px;
261    }
262    .hack-card {
263      position: relative;
264      background: #fff;
265      border: 1px solid var(--cc-blue-line);
266      border-radius: var(--radius-lg);
267      box-shadow: var(--shadow-sm);
268      padding: 22px;
269      display: flex;
270      flex-direction: column;
271      gap: 14px;
272      transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
273    }
274    .hack-card:hover {
275      transform: translateY(-3px);
276      box-shadow: var(--shadow-md);
277      border-color: var(--cc-blue);
278    }
279    .hack-card-top {
280      display: flex;
281      justify-content: space-between;
282      align-items: start;
283      gap: 12px;
284    }
285    .hack-badge {
286      display: inline-flex;
287      align-items: center;
288      gap: 6px;
289      padding: 5px 10px;
290      border-radius: 8px;
291      background: var(--cc-blue-soft);
292      color: var(--cc-blue-deep);
293      border: 1px solid var(--cc-blue-line);
294      font-size: 11px;
295      font-weight: 800;
296      letter-spacing: 0.04em;
297      text-transform: uppercase;
298    }
299    .hack-name {
300      font-family: "Plus Jakarta Sans", sans-serif;
301      font-size: 1.3rem;
302      font-weight: 800;
303      letter-spacing: -0.02em;
304      margin: 0;
305      line-height: 1.2;
306    }
307    .hack-name a {
308      color: var(--cc-dark);
309      display: inline-flex;
310      align-items: center;
311      gap: 8px;
312      transition: color 0.15s ease;
313    }
314    .hack-name a:hover { color: var(--cc-blue); }
315    .hack-name a .arrow {
316      font-size: 0.9rem;
317      color: var(--cc-blue);
318      transition: transform 0.15s ease;
319    }
320    .hack-name a:hover .arrow { transform: translateX(3px); }
321    .hack-host {
322      font-size: 13px;
323      color: var(--cc-muted);
324      line-height: 1.5;
325      margin: 4px 0 0;
326    }
327    .hack-host i { color: var(--cc-blue); margin-right: 6px; }
328    .edition-list {
329      list-style: none;
330      padding: 0;
331      margin: 0;
332      display: grid;
333      gap: 8px;
334    }
335    .edition-row {
336      display: flex;
337      align-items: center;
338      justify-content: space-between;
339      gap: 10px;
340      padding: 10px 12px;
341      border-radius: var(--radius-sm);
342      background: var(--cc-paper-2);
343      border: 1px solid var(--cc-line);
344      font-size: 13.5px;
345    }
346    .edition-date { font-weight: 700; color: var(--cc-dark); }
347    .edition-format {
348      font-size: 11px;
349      font-weight: 700;
350      padding: 3px 8px;
351      border-radius: 6px;
352      letter-spacing: 0.03em;
353      text-transform: uppercase;
354    }
355    .edition-format.friday { background: var(--cc-blue-soft); color: var(--cc-blue-deep); }
356    .edition-format.summer { background: #fff7ed; color: #b45309; border: 1px solid #fde6c2; }
357    .edition-format.virtual { background: #f5f3ff;
357 color: #6d28d9; border: 1px solid #ddd6fe; }
358    .hack-cta {
359      margin-top: auto;
360      padding: 10px 14px;
361      border-radius: 10px;
362      background: var(--cc-dark);
363      color: #fff;
364      font-weight: 700;
365      font-size: 13.5px;
366      text-align: center;
367      display: inline-flex;
368      align-items: center;
369      justify-content: center;
370      gap: 8px;
371      transition: background 0.15s ease;
372    }
373    .hack-cta:hover { background: var(--cc-blue); }
374
375    /* Past / completed editions — muted treatment over the native hack-card */
376    .hack-card.is-past { opacity: 0.82; background: var(--cc-paper-2); border-color: var(--cc-line); }
377    .hack-card.is-past:hover { opacity: 1; border-color: var(--cc-blue-line); }
378    .hack-card.is-past .hack-cta { background: var(--cc-muted); }
379    .hack-card.is-past .hack-cta:hover { background: var(--cc-blue); }
380    .hack-badge.is-past { background: #f3f4f6; color: var(--cc-muted); border-color: var(--cc-line); }
381    .edition-format.past { background: #f3f4f6; color: var(--cc-muted); border: 1px solid var(--cc-line); }
382
383    /* Format rules */
384    .rules {
385      background: #fff;
386      border: 1px solid var(--cc-line);
387      border-radius: var(--radius-lg);
388      padding: 24px;
389      box-shadow: var(--shadow-sm);
390    }
391    .rules-grid {
392      display: grid;
393      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
394      gap: 16px;
395      margin-top: 16px;
396    }
397    .rule-item {
398      padding: 16px;
399      border-radius: var(--radius-md);
400      background: var(--cc-paper-2);
401      border: 1px solid var(--cc-line);
402    }
403    .rule-item h4 {
404      margin: 0 0 6px;
405      font-family: "Plus Jakarta Sans", sans-serif;
406      font-size: 0.98rem;
407      font-weight: 800;
408      color: var(--cc-dark);
409    }
410    .rule-item p {
411      margin: 0;
412      font-size: 13.5px;
413      color: var(--cc-muted);
414      line-height: 1.6;
415    }
416    .rule-icon {
417      width: 36px;
418      height: 36px;
419      display: inline-flex;
420      align-items: center;
421      justify-content: center;
422      border-radius: 10px;
423      background: var(--cc-blue-soft);
424      color: var(--cc-blue);
425      margin-bottom: 10px;
426    }
427    .rule-icon.orange { background: #fff7ed; color: var(--cc-orange); }
428    .rule-icon.purple { background: #f5f3ff; color: #6d28d9; }
429    .rule-icon.red { background: #fef2f2; color: var(--cc-red); }
430
431    /* Footer (CC unified) */
432    .c305-footer { background:#3b5bdb; color:#fff; padding:3rem 1.25rem; font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; line-height:1.55; box-sizing:border-box; margin-top: 24px; }
433    .c305-footer * { box-sizing:border-box; }
434    .c305-footer a { color:#fff; text-decoration:none; }
435    .c305-footer a:hover { opacity:.85; text-decoration:underline; }
436    .c305-wrap { max-width:1100px; margin:0 auto; }
437    .c305-cols { display:grid; grid-template-columns:1fr; gap:2rem; }
438    @media (min-width: 760px) { .c305-cols { grid-template-columns:1.2fr 1fr 1fr; } }
439    .c305-footer h3 { font-size:1.1rem; font-weight:700; margin:0 0 .75rem; }
440    .c305-footer h4 { font-size:.85rem; font-weight:700; margin:1rem 0 .6rem; text-transform:uppercase; letter-spacing:.06em; opacity:.9; }
441    .c305-footer p { margin:.25rem 0; font-size:.9rem; opacity:.92; }
442    .c305-website a { text-decoration:underline; opacity:.95; }
443    .c305-links { list-style:none; padding:0; margin:0; }
444    .c305-links li { padding:.18rem 0; font-size:.9rem; opacity:.92; }
445    .c305-orgs { margin-top:2rem; padding-top:1.5rem; border-top:1px solid rgba(255,255,255,.18); }
446    .c305-orgs h4 { margin:0 0 .9rem; }
447    .c305-orglist { display:flex; flex-wrap:wrap; gap:.6rem .7rem; }
448    .c305-org { display:inline-flex; align-items:center; gap:.5rem; padding:.42rem .8rem .42rem .5rem; font-size:.82rem; font-weight:600; color:#fff; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.16); border-radius:999px; transition:background .15s, border-color .15s, transform .15s; }
449    .c305-org:hover { background:rgba(255,255,255,.16); border-color:rgba(255,255,255,.4); transform:translateY(-1px); text-decoration:none; opacity:1; }
450    .c305-org-mark { width:24px; height:24px; border-radius:7px; display:grid; place-items:center; font-size:10px; font-weight:800; letter-spacing:-.02em; color:#fff; background:var(--oc,#111827); }
451    .c305-bottom { margin-top:2rem; padding-top:1.25rem; border-top:1px solid rgba(255,255,255,.18); text-align:center; }
452    .c305-bottom .c305-copy { font-size:.85rem; opacity:.85; margin:0; }
453    .c305-bottom .c305-credit { font-size:.78rem; opacity:.7; margin:.6rem 0 0; }
454    .c305-bottom .c305-credit a { color:#4ecdc4; font-weight:600; text-decoration:none; }
455    .c305-bottom .c305-legal { display:none; font-size:.72rem; color:#9AA2AC; opacity:1; margin:.7rem 0 0; line-height:1.6; max-width:78ch; }
456  .c305-bottom .c305-legal:target { display:block; }
457  </style>
458  <!-- mobile-safety-auto: small-phone hardening; desktop untouched -->
459  <style>
460  @media (max-width:640px){
461    html,body{max-width:100%;overflow-x:hidden}
462    img,svg,video,canvas,iframe,table{max-width:100%!important;height:auto}
463    pre,code{white-space:pre-wrap;word-break:break-word}
464    *{overflow-wrap:break-word}
465  }
466  </style>
467
468<style>/* cc-nav-rollout: neutralise old fixed-nav offset; cc-subhead carries its own spacer */ body{padding-top:0 !important;}</style>
469  <style id="cc-navfix">
470  /* Mobile nav: keep the CLOSED bar to one row so it stays ~80px and the fixed
471     sub-header (Eastern-Time clock) directly below it can't overlap a wrapped
472     toggle row. The menu still expands below when the hamburger is tapped. */
473  @media (max-width:1024px){
474    .cc-global-nav .nav-brand, .cc-global-nav .nav-brand-menu{ min-width:0; flex:1 1 auto; overflow:hidden; }
475    .cc-global-nav .nav-brand-menu>summary{ min-width:0; overflow:hidden; }
476    .cc-global-nav .brand-text{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
477    .cc-global-nav .nav-toggle{ flex:0 0 auto; }
478  }
479  @media (max-width:520px){ .cc-global-nav .nav-toggle-label{ display:none; } }
480  </style>
481<link rel="stylesheet" href="../css/cc-org-identity.css">
482</head>
483<body>
484  <!-- cc-global-nav:start — Shared ecosystem primary nav (Explore mega-menu).
485     Drop-in, fully self-contained: all CSS is scoped under .cc-global-nav so it
486     never collides with Tailwind / bespoke page styles, and uses explicit values
487     (no dependency on page design tokens). Mega-menu columns are GLOBAL — identical
488     on every org; only the brand block + accent color change per org via the
489     {{PLACEHOLDERS}} below. Fixed 80px bar; sits directly above the cc-subhead
490     (clock + "On this page"), which is positioned at top:5rem.
491
492     Per-org placeholders (filled by scripts/rollout_global_nav.py):
493       https://codecrunchglobal.vercel.app/      brand link / org home URL
494       https://github.com/user-attachments/assets/c359ccd5-2470-4ba5-a8fe-a32ee12a4e0a      <img src alt=""> for the square brand mark (or leave the text mark)
495       CODE  big brand word (e.g. CODE / "Hack University")
496       CRUNCH  small sub word (e.g. CRUNCH / WORLDWIDE)
497       #2463EB     accent / CTA color (e.g. #2463EB)
498       https://hack-university-fundraiser.vercel.app/     Support Us / donate link
499-->
500<style>
501  .cc-global-nav{
502    position:fixed; top:0; left:0; right:0; z-index:50;
503    background:#fff; border-bottom:1px solid #e5e7eb;
504    min-height:80px; display:flex; align-items:center;
505    -webkit-transform:translate3d(0,0,0); transform:translate3d(0,0,0); isolation:isolate;
506    --cc-gnav-accent: #2463EB;
507  }
508  .cc-global-nav *{ box-sizing:border-box; }
509  .cc-global-nav .nav-container{ width:100%; max-width:1280px; margin:0 auto; padding:0 24px;
510    display:flex; align-items:center; justify-content:space-between; gap:16px; }
511
512  .cc-global-nav .nav-brand{ display:flex; align-items:center; gap:10px; text-decoration:none; }
513  .cc-global-nav .brand-mark{ width:40px; height:40px; border-radius:10px; background:#2463EB;
514    display:flex; align-items:center; justify-content:center; overflow:hidden; flex:0 0 auto;
515    color:#fff; font-weight:900; font-size:14px; letter-spacing:.02em; }
516  .cc-global-nav .brand-mark img{ width:100%; height:100%; object-fit:contain; }
517  .cc-global-nav .brand-text{ display:block; font-size:18px; font-weight:800; color:#111827; line-height:1.05; white-space:nowrap; }
518  .cc-global-nav .brand-sub{ display:block; font-size:10.5px; font-weight:800; color:#2463EB; letter-spacing:.16em; }
519
520  .cc-global-nav .nav-links{ display:flex; align-items:center; gap:14px; }
521  .cc-global-nav .nav-link{ display:inline-flex; align-items:center; gap:6px;
522    color:#374151; font-weight:600; font-size:14px; padding:8px 12px; border-radius:8px;
523    text-decoration:none; cursor:pointer; transition:color .15s ease, background .15s ease; }
524  .cc-global-nav .nav-link:hover{ color:#2463EB; background:#f1f3f4; }
525  .cc-global-nav .nav-cta{ background:#2463EB; color:#fff !important; border-radius:999px;
526    padding:9px 18px; font-weight:800; }
527  .cc-global-nav .nav-cta:hover{ filter:brightness(.93); background:#2463EB; }
528
529  /* cc-nav-dropdowns — Explore + Hackathons + Learn + Get Involved popovers */
530  .cc-global-nav .nav-menu{ position:relative; }
531  .cc-global-nav .nav-menu > .nav-link{ background:none; border:0; font:inherit; }
532  .cc-global-nav .chev{ transition:transform .2s ease; font-size:11px; }
533  .cc-global-nav .nav-menu.is-open > .nav-link{ color:var(--cc-gnav-accent,#2463EB); background:#f1f3f4; }
534  .cc-global-nav .nav-menu.is-open .chev{ transform:rotate(180deg); }
535  /* Keeps hover alive while the pointer crosses the gap to the panel. */
536  .cc-global-nav .nav-menu.is-open::after{ content:""; position:absolute; left:0; right:0; top:100%; height:14px; }
537  .cc-global-nav .menu-pop{
538    position:absolute; top:calc(100% + 12px); left:0; width:min(340px,92vw);
539    background:#fff; border:1px solid #e5e7eb; border-radius:14px;
540    box-shadow:0 24px 48px rgba(15,23,42,.16); padding:16px 18px;
541    max-height:calc(100vh - 120px); overflow-y:auto; overscroll-behavior:contain;
542    opacity:0; visibility:hidden; transform:translateY(-8px);
543    transition:opacity .18s ease, transform .18s ease, visibility .18s; z-index:60;
544  }
545  .cc-global-nav .nav-menu.is-open .menu-pop{ opacity:1; visibility:visible; transform:translateY(0); }
546  .cc-global-nav .menu-pop--wide{ width:min(640px,92vw); }
547  .cc-global-nav .menu-pop h4{ font-size:12px; font-weight:800; letter-spacing:.08em; text-transform:uppercase;
548    color:var(--cc-gnav-accent,#2463EB); margin:0 0 12px; }
549  .cc-global-nav .menu-pop-list{ display:block; }
550  .cc-global-nav .menu-pop--wide .menu-pop-list{ column-count:2; column-gap:26px; }
551  .cc-global-nav .menu-pop a{ display:block; padding:7px 0; color:#111827; font-weight:700; font-size:14.5px;
552    line-height:1.25; text-decoration:none; break-inside:avoid; -webkit-column-break-inside:avoid; }
553  .cc-global-nav .menu-pop a:hover{ color:var(--cc-gnav-accent,#2463EB); }
554  .cc-global-nav .menu-pop a small{ display:block; font-weight:500; font-size:12.5px; color:#6b7280; margin-top:1px; }
555  /* Mobile toggle */
556  .cc-global-nav .nav-toggle{ display:none; align-items:center; justify-content:center; gap:8px;
557    width:auto; min-height:42px; padding:0 14px; border-radius:8px; border:1px solid #e5e7eb; background:#fff; color:var(--cc-gnav-accent); cursor:pointer; font-weight:800; font-size:14px; }
558  .cc-global-nav .nav-toggle-label{ white-space:nowrap; }
559  .cc-global-nav .nav-toggle:hover{ background:#f1f3f4; color:#2463EB; }
560
561  @media (max-width:1024px){
562    .cc-global-nav .nav-toggle{ display:inline-flex; }
563    .cc-global-nav .nav-container{ flex-wrap:wrap; }
564    .cc-global-nav .nav-links{ display:none; width:100%; flex-direction:column; align-items:stretch; gap:6px; padding:8px 0 12px; }
565    .cc-global-nav .nav-links.is-open{ display:flex; max-height:calc(100vh - 80px); overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
566    .cc-global-nav .nav-brand{ min-width:0; }
567    .cc-global-nav .nav-brand > span{ min-width:0; overflow:hidden; }
568    .cc-global-nav .brand-text{ overflow:hidden; text-overflow:ellipsis; }
569    .cc-global-nav .nav-link{ width:100%; }
570    .cc-global-nav .menu-pop{ position:static; width:auto; max-height:none; padding:4px 0 8px;
571      opacity:1; visibility:visible; transform:none; box-shadow:none; border:0; border-radius:0; display:none; }
572    .cc-global-nav .nav-menu.is-open .menu-pop{ display:block; }
573    .cc-global-nav .nav-menu.is-open::after{ display:none; }
574    .cc-global-nav .menu-pop--wide{ width:auto; }
575    .cc-global-nav .menu-pop--wide .menu-pop-list{ column-count:1; }
576    .cc-global-nav .nav-cta{ width:100%; justify-content:center; }
577  }
578</style>
579
580<style id="nav-brand-menu-css">
581.nav-brand-menu{position:relative;display:inline-flex;align-items:center}
582.nav-brand-menu>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px}
583.nav-brand-menu>summary::-webkit-details-marker{display:none}
584.nav-brand-menu>summary:focus-visible{outline:2px solid #93c5fd;outline-offset:3px;border-radius:8px}
585.nav-brand-menu .brand-chev{margin-left:4px;font-size:11px;color:#6b7280;transition:transform .2s ease}
586.nav-brand-menu[open] .brand-chev{transform:rotate(180deg)}
587.nav-brand-menu[open]::after{content:"";position:absolute;top:100%;left:0;right:0;height:10px}
588.nav-brand-pop{position:absolute;top:calc(100% + 8px);left:0;background:#fff;border:1px solid #e4e7ec;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.16);padding:6px;min-width:220px;z-index:2000}
589.nav-brand-pop a{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:7px;color:#0d0d0d!important;text-decoration:none;font-size:.9rem;white-space:nowrap;font-weight:600}
590.nav-brand-pop a:hover{background:#f1f4f9}
591</style>
592<style id="cc-unified-nav-css">.cc-secnav{display:none!important}.cc-subhead-spacer{height:40px!important}body.cc-hdr-collapsed .cc-subhead-spacer{height:0!important}</style>
593<nav class="cc-global-nav" aria-label="Primary">
594  <div class="nav-container">
595    <details class="nav-brand-menu" id="ccBrandMenu">
596      <summary class="nav-brand" aria-label="Home and brand menu"><span class="brand-mark"><img src="https://github.com/user-attachments/assets/c359ccd5-2470-4ba5-a8fe-a32ee12a4e0a" alt="" aria-hidden="true" data-cc="logo" /></span>
597      <span>
598        <span class="brand-text" data-cc="nav-big">CODE</span>
599        <span class="brand-sub" data-cc="nav-sub">CRUNCH</span>
600      </span><i class="fa-solid fa-chevron-down brand-chev" aria-hidden="true"></i></summary>
601      <div class="nav-brand-pop">
602        <a href="https://codecrunchglobal.vercel.app/" data-cc-link="home"><i class="fa-solid fa-house" aria-hidden="true"></i> Home</a>
603        <a href="/codecrunchworldwide-brand-assets/"><i class="fa-solid fa-swatchbook" aria-hidden="true"></i> Brand assets &amp; logos</a>
604      </div>
605    </details>
606    
606<script>
607    (function(){var d=document.getElementById('ccBrandMenu');if(!d)return;
608      if(window.matchMedia('(min-width: 769px)').matches){d.addEventListener('mouseenter',function(){d.open=true;});d.addEventListener('mouseleave',function(){d.open=false;});}
609      document.addEventListener('click',function(e){if(!d.contains(e.target))d.open=false;});
610      document.addEventListener('keydown',function(e){if(e.key==='Escape')d.open=false;});})();
611    </script>
611
612
613
614    <button class="nav-toggle" type="button" aria-label="Toggle navigation" aria-controls="ccGnavLinks" aria-expanded="false">
615      <i class="fa-solid fa-bars" aria-hidden="true"></i><span class="nav-toggle-label">On this page</span>
616    </button>
617
618    <div class="nav-links" id="ccGnavLinks">
619      <div class="nav-menu" id="ccGnavExplore">
620        <button class="nav-link" type="button" aria-expanded="false" aria-controls="ccGnavMega">
621          Explore <i class="fa-solid fa-chevron-down chev" aria-hidden="true"></i>
622        </button>
623        <div class="menu-pop" id="ccGnavMega" role="region" aria-label="Explore the ecosystem">
624          <h4>Organizations</h4>
625          <div class="menu-pop-list">
626            <a href="https://hackuniversity.vercel.app/">Hack University <small>Where learners become founders</small></a>
627            <a href="https://codecrunchglobal.vercel.app/">Code Crunch Worldwide <small>Worldwide tech &amp; innovation org</small></a>
628            <a href="https://codecrunchlabs.vercel.app/">Code Crunch Labs <small>R&amp;D and experiments</small></a>
629            <a href="https://colorstackatfiu.vercel.app/">ColorStack at FIU <small>Black &amp; Latinx engineers</small></a>
630            <a href="https://gdgatfiu.vercel.app/">Google Developer Group at FIU <small>On-campus Google developers</small></a>
631            <a href="https://cahsiatfiu.vercel.app/">CAHSI at FIU <small>Hispanic-Serving CS alliance</small></a>
632            <a href="https://swiftclubatfiu.vercel.app/">Swift Club at FIU <small>Apple-platform dev</small></a>
633            <a href="https://upsilonphiepsilon.vercel.app/">Upsilon Phi Epsilon (UPE) <small>Tech honor society</small></a>
634            <a href="https://raspberrypicodecrunch.vercel.app/">Raspberry Pi Code Crunch <small>Hardware &amp; IoT</small></a>
635            <a href="https://crunch305drop.vercel.app/">Crunch305 Drop <small>Ecosystem news</small></a>
636          </div>
637        </div>
638      </div>
639      <a class="nav-link" href="https://hackuniversity.vercel.app/student-volunteer">Intern With Us</a>
640      <a class="nav-link" href="https://codecrunchglobal.vercel.app/home#events">Events</a>
641      <div class="nav-menu" id="ccGnavHackathons">
642        <button class="nav-link" type="button" aria-expanded="false" aria-controls="ccGnavHackathonsMenu">
643          Hackathons <i class="fa-solid fa-chevron-down chev" aria-hidden="true"></i>
644        </button>
645        <div class="menu-pop menu-pop--wide" id="ccGnavHackathonsMenu" role="region" aria-label="Hackathons">
646          <h4>Hackathons</h4>
647          <div class="menu-pop-list">
648            <a href="https://codecrunchglobal.vercel.app/hackathons/305-hackathon-series.html">Hackathon Series <small>All 305 editions</small></a>
649            <a href="https://codecrunchglobal.vercel.app/hackathons/swiftclubatfiu-hackathons/hackshells-series.html">305 HackShells <small>Cybersecurity &amp; shells</small></a>
650            <a href="https://codecrunchglobal.vercel.app/hackathons/colorstackatfiu-hackathons/codefest-series.html">305 CodeFest <small>Full-stack build sprint</small></a>
651            <a href="https://codecrunchglobal.vercel.app/hackathons/codecrunchworldwide-hackathons/empowher-series.html">305 EmpowHER <small>Bringing all perspectives together</small></a>
652            <a href="https://codecrunchglobal.vercel.app/hackathons/gdgatfiu-hackathons/hackfiesta-miami-series.html">305 HackFiesta Miami <small>Miami's flagship hackathon</small></a>
653            <a href="https://codecrunchglobal.vercel.app/hackathons/cahsiatfiu-hackathons/summercodex-series.html">305 SummerCodeX <small>Summer coding intensive</small></a>
654            <a href="https://codecrunchglobal.vercel.app/hackathons/gdgatfiu-hackathons/veterans-hackathon-series.html">305 Veterans Hackathon <small>Building alongside veterans</small></a>
655            <a href="https://hackuniversity.vercel.app/hackuniversity-photo-albums.html">Photo Albums <small>Hackathon memories</small></a>
656            <a href="https://hackuniversity.vercel.app/hackuniversity-hackwinners.html">Winners &amp; Certificates <small>Past winners &amp; awards</small></a>
657            <a href="https://codecrunchglobal.vercel.app/hacks-toolkit.html">Hacker Toolkit <small>Starter kit &amp; templates</small></a>
658            <a href="https://codecrunchglobal.vercel.app/hack1-resources.html">
658Hack Resources <small>Guides &amp; references</small></a>
659            <a href="https://codecrunchglobal.vercel.app/hack3-judging-criteria.html">Judging Criteria <small>How projects are scored</small></a>
660            <a href="https://codecrunchglobal.vercel.app/hack5-code-of-conduct.html">Code of Conduct <small>Community standards</small></a>
661          </div>
662        </div>
663      </div>
664      <div class="nav-menu" id="ccGnavLearn">
665        <button class="nav-link" type="button" aria-expanded="false" aria-controls="ccGnavLearnMenu">
666          Learn <i class="fa-solid fa-chevron-down chev" aria-hidden="true"></i>
667        </button>
668        <div class="menu-pop menu-pop--wide" id="ccGnavLearnMenu" role="region" aria-label="Learn">
669          <h4>Learn</h4>
670          <div class="menu-pop-list">
671            <a href="https://codecrunchglobal.vercel.app/courses">All Courses <small>Find the course you are already taking</small></a>
672            <a href="https://codecrunchglobal.vercel.app/ide">Online IDE <small>Write and run code in your browser</small></a>
673            <h4 style="column-span:all;-webkit-column-span:all;break-after:avoid;margin:16px 0 10px">Programs</h4>
674            <a href="https://codecrunchglobal.vercel.app/academy/">Crunch Academy <small>Free K-12 Curriculum</small></a>
675            <a href="https://codecrunchglobal.vercel.app/hackthelearn">HackTheLearn <small>Bootcamp tracks &middot; deep fundamentals, bootcamp pace</small></a>
676            <h4 style="column-span:all;-webkit-column-span:all;break-after:avoid;margin:16px 0 10px">Schools</h4>
677            <a href="https://codecrunchglobal.vercel.app/courses?school=Programming%20And%20Development">School of Programming And Development <small>14 courses &middot; Python, web, mobile, and systems</small></a>
678            <a href="https://codecrunchglobal.vercel.app/courses?school=Languages">School of Languages <small>11 courses &middot; Speak365 and Habla365, a language a day</small></a>
679            <a href="https://codecrunchglobal.vercel.app/courses?school=Data%20Science">School of Data Science <small>8 courses &middot; SQL, statistics, pipelines, and visualization</small></a>
680            <a href="https://codecrunchglobal.vercel.app/courses?school=Artificial%20Intelligence">School of Artificial Intelligence <small>7 courses &middot; neural nets, language models, and agents</small></a>
681            <a href="https://codecrunchglobal.vercel.app/courses?school=Cybersecurity">School of Cybersecurity <small>7 courses &middot; red team, blue team, forensics, and AppSec</small></a>
682            <a href="https://codecrunchglobal.vercel.app/courses?school=Autonomous%20Systems">School of Autonomous Systems <small>6 courses &middot; robotics, drones, navigation, and control</small></a>
683            <a href="https://codecrunchglobal.vercel.app/courses?school=Business">School of Business <small>5 courses &middot; founders, finance, capital, and scale</small></a>
684            <a href="https://codecrunchglobal.vercel.app/courses?school=Cloud%20Computing">School of Cloud Computing <small>5 courses &middot; AWS, GCP, DevOps, and service mesh</small></a>
685            <a href="https://codecrunchglobal.vercel.app/courses?school=Career%20Resources">School of Career Resources <small>4 courses &middot; interview prep, Excel, and the job search</small></a>
686            <a href="https://codecrunchglobal.vercel.app/courses?school=Product%20Management">School of Product Management <small>3 courses &middot; Agile, project management, and product</small></a>
687            <a href="https://codecrunchglobal.vercel.app/courses?school=Hardware%20%26%20Electronics">School of Hardware &amp; Electronics <small>3 courses &middot; circuits, silicon, and edge devices</small></a>
688            <a href="https://codecrunchglobal.vercel.app/courses?school=Law%20%26%20Policy%20Tech">School of Law &amp; Policy Tech <small>3 courses &middot; legal tech, privacy, and governance</small></a>
689            <a href="https://codecrunchglobal.vercel.app/courses?school=Executive%20Leadership">School of Executive Leadership <small>2 courses &middot; leading teams and technical strategy</small></a>
690            <a href="https://codecrunchglobal.vercel.app/courses?school=Bioinformatics%20%26%20Life%20Sciences">School of Bioinformatics &amp; Life Sciences <small>2 courses &middot; genomics and machine learning for biology</small></a>
691            <a href="https://codecrunchglobal.vercel.app/courses?school=Health%20%26%20Medical%20Technology">School of Health &amp; Medical Technology <small>2 courses &middot; health data and medical imaging</small></a>
692          </div>
693        </div>
694      </div>
695      <div class="nav-menu" id="ccGnavGetInvolved">
696        <button class="nav-link" type="button" aria-expanded="false" aria-controls="ccGnavGetInvolvedMenu">
697          Get Involved <i class="fa-solid fa-chevron-down chev" aria-hidden="true"></i>
698        </button>
699        <div class="menu-pop menu-pop--wide" id="ccGnavGetInvolvedMenu" role="region" aria-label="Get involved">
700          <h4>Get Involved</h4>
701          <div class="menu-pop-list">
702            <a href="https://hackuniversity.vercel.app/hackuniversity-onestopform-user-login.html">Membership <small>Sign in or join through the OneStop Portal</small></a>
703            <a href="https://hackuniversity.vercel.app/membership-and-event-perks">Member Perks <small>Discounts, credits, swag, and event perks through OneStop Portal</small></a>
704            <a href="https://hackuniversity.vercel.app/member-resources-and-opportunities">Resources &amp; Opportunities <small>Tools, jobs, programs, scholarships, and community opportunities</small></a>
705            <a href="https://hackuniversity.vercel.app/hackuniversity-certifcatemembership.html">Membership Certificate <small>Download your certificate for LinkedIn through OneStop Portal</small></a>
706            <a href="https://hackuniversity.vercel.app/#calendar">Events Calendar <small>
706View all tech community events</small></a>
707            <a href="https://gdgatfiubevycalendar.vercel.app/">Google Developer Group at FIU Calendar <small>RSVP for all events and Google Developer Group events through Bevy</small></a>
708            <a href="https://hackuniversity.vercel.app/hackuniversity-attendance-check-in.html">Event Check-In <small>Log your attendance after events</small></a>
709            <a href="https://hackuniversity.vercel.app/hackuniversity-photo-albums.html">Photo Album <small>View official organization photos</small></a>
710            <a href="https://hackuniversity.vercel.app/hackuniversity-community-platforms.html">Community Platforms <small>Join Discord, WhatsApp, and the private Instagram group</small></a>
711            <a href="https://hackuniversity.vercel.app/student-volunteer">Intern With Us <small>Student Ambassador internships and volunteer roles</small></a>
712            <a href="https://hackuniversity.vercel.app/hackuniversity-volunteer-industry-professionals.html">Industry Volunteers <small>Mentor, judge, or support students as an industry professional</small></a>
713            <a href="https://hackuniversity.vercel.app/hackuniversitydonate.html">Support Us <small>Sponsor, donate, or partner with our community</small></a>
714          </div>
715        </div>
716      </div>
717      <a class="nav-link nav-cta" href="https://hack-university-fundraiser.vercel.app/" data-cc-link="support"><i class="fa-solid fa-heart" aria-hidden="true"></i> Support Us</a>
718    </div>
719  </div>
720</nav>
721<script>
722(function(){
723  var root = document.currentScript ? document.currentScript.previousElementSibling : null;
724  // Fallback: grab by class if previousElementSibling isn't the nav.
725  if(!root || !root.classList || !root.classList.contains('cc-global-nav')){
726    root = document.querySelector('.cc-global-nav');
727  }
728  if(!root) return;
729  var links  = root.querySelector('#ccGnavLinks');
730  var toggle = root.querySelector('.nav-toggle');
731  if(toggle && links){
732    toggle.addEventListener('click', function(){
733      var open = links.classList.toggle('is-open');
734      toggle.setAttribute('aria-expanded', String(open));
735    });
736  }
737  var menus = [].slice.call(root.querySelectorAll('.nav-menu'));
738  // Desktop = the burger is hidden. Reads the real breakpoint, which differs
739  // between nav variants (768px on most pages, 1024px on a few).
740  var desktop = function(){
741    return !toggle || window.getComputedStyle(toggle).display === 'none';
742  };
743  // Keep a panel inside the viewport: right-align it when it would run off the
744  // right edge, then nudge it back in if that pushes it off the left edge.
745  var place = function(menu){
746    var pop = menu.querySelector('.menu-pop');
747    if(!pop || !desktop()) return;
748    var pad = 12;
749    pop.style.left = ''; pop.style.right = '';
750    if(pop.getBoundingClientRect().right > window.innerWidth - pad){
751      pop.style.left = 'auto'; pop.style.right = '0';
752    }
753    var r = pop.getBoundingClientRect();
754    if(r.left < pad){
755      pop.style.right = '';
756      pop.style.left = (pad - menu.getBoundingClientRect().left) + 'px';
757    }
758  };
759  var setOpen = function(menu, open){
760    menu.classList.toggle('is-open', open);
761    var btn = menu.querySelector('.nav-link');
762    if(btn) btn.setAttribute('aria-expanded', String(open));
763    if(open) place(menu);
764  };
765  var closeAll = function(except){
766    menus.forEach(function(m){ if(m !== except) setOpen(m, false); });
767  };
768  menus.forEach(function(menu){
769    var btn = menu.querySelector('.nav-link');
770    if(!btn) return;
771    btn.addEventListener('click', function(e){
772      e.preventDefault();
773      // On desktop the pointer opened it on the way in — a click must not
774      // immediately close what the user is reaching for.
775      if(desktop() && menu.classList.contains('is-open')) return;
776      var open = !menu.classList.contains('is-open');
777      closeAll(menu);
778      setOpen(menu, open);
779    });
780    menu.addEventListener('mouseenter', function(){ if(desktop()){ closeAll(menu); setOpen(menu, true); } });
781    menu.addEventListener('mouseleave', function(){ if(desktop()) setOpen(menu, false); });
782  });
783  document.addEventListener('click', function(e){
784    menus.forEach(function(m){ if(!m.contains(e.target)) setOpen(m, false); });
785  });
786  document.addEventListener('keydown', function(e){ if(e.key === 'Escape') closeAll(null); });
787  window.addEventListener('resize', function(){
788    menus.forEach(function(m){ if(m.classList.contains('is-open')) place(m); });
789  });
790})();
791</script>
791
792
793<!-- Org-aware brand: fills brand block + accent from ?org= / came-from /
794     this page's default. Regression-safe; see js/cc-org.js. -->
795<script>window.CC_DEFAULT_ORG = 'codecrunch';</script>
vendor: 1 bytes, line 795
795
796<script src="/js/cc-org.js"></script>
vendor: 1 bytes, line 796
796
797<script>window.CC_ORG && window.CC_ORG.apply && window.CC_ORG.apply(document);</script>
vendor: 1 bytes, line 797
797
798<script src="/js/cc-pagezoom.js?v=20260828a-clockbar"></script>
798
799<!-- cc-global-nav:end -->
800
801<!-- cc-subhead:start  — Line 2 (Eastern Time clock) + Line 3 ("On this page" nav).
802     Drops in after a page's fixed blue navbar (h-20 / 80px). Both lines live in one
803     fixed container so they slide up together and hide on scroll-down (body.cc-hdr-collapsed).
804     The primary navbar (.cc-global-nav) collapses with them, so on mobile all three nav
805     lines clear off-screen on scroll-down and slide back in on scroll-up (no button). The
806     in-flow spacer reserves their height and animates to 0 on collapse so content rises smoothly.
807
808     App mode: when the page is loaded inside the native Code Crunch app (URL ?app=1, or a
809     prior app=1 in this tab via sessionStorage), <html> gets .cc-app and the web nav lines
810     are hidden entirely — the app supplies its own header + bottom nav, so the web hamburger
811     and these bars would only duplicate/overlap it.
812
813     Also ships the shared mobile content-fit pass: media/tables never exceed the viewport,
814     and wide tables/pre/code blocks become horizontally scrollable instead of bleeding off.
815     Inserted by scripts/rollout_subhead.py; re-synced in place by scripts/refresh_subhead.py. -->
816<script>
817  // Set app mode as early as possible (this block parses right after the navbar)
818  // so the nav lines are hidden before first paint instead of flashing in.
819  (function(){
820    try{
821      var p = new URLSearchParams(location.search);
822      if(p.get('app') === '1') { try{ sessionStorage.setItem('cc_app','1'); }catch(e){} }
823      if(p.get('app') === '1' || (function(){ try{ return sessionStorage.getItem('cc_app') === '1'; }catch(e){ return false; } })()){
824        document.documentElement.classList.add('cc-app');
825      }
826    }catch(e){}
827  })();
828</script>
828
829<style>
830  .cc-subhead{ position:fixed; top:5rem; left:0; right:0; z-index:40; transition:transform .25s ease; }
831  .cc-subhead-spacer{ height:82px; transition:height .25s ease; }
832  body.cc-hdr-collapsed .cc-subhead{ transform:none; }
833  .cc-clockbar{ transition:height .25s ease, opacity .2s ease, padding .25s ease; overflow:hidden; }
834  body.cc-hdr-collapsed .cc-clockbar{ height:0; opacity:0; border-bottom:0; padding-top:0; padding-bottom:0; }
835  body.cc-hdr-collapsed .cc-subhead-spacer{ height:42px; }
836
837  /* Item 3: the primary navbar collapses with the sub-header, and the in-flow
838     pt-20 wrapper that reserves its 80px reclaims that space — so all three nav
839     lines clear away and content uses the full screen. */
840  .cc-global-nav{ transition:transform .25s ease; }
841  .cc-subhead-spacer ~ .pt-20{ transition:padding-top .25s ease; }
842  body.cc-hdr-collapsed .cc-subhead-spacer ~ .pt-20{ padding-top:0 !important; }
843
844  .cc-clockbar{ height:40px; background:#fff; border-bottom:1px solid #e5e7eb; display:flex; align-items:center; justify-content:center; gap:10px; padding:0 14px; }
845  .cc-clock-label{ font-size:12.5px; color:#5f6368; font-weight:700; white-space:nowrap; }
846  .cc-clock-time{ font-size:13px; font-weight:900; color:#202124; white-space:nowrap; }
847  .cc-clock-date{ font-size:12.5px; color:#5f6368; white-space:nowrap; }
848  .cc-clock-mini{ display:none; align-items:center; gap:7px; font-size:13px; font-weight:800; color:#5f6368; white-space:nowrap; }
849
850  .cc-secnav{ position:relative; height:42px; background:#fff; border-bottom:1px solid #e5e7eb; }
851  .cc-secnav-summary{ display:none; width:100%; border:0; background:none; font:inherit; cursor:pointer; }
852  .cc-secnav-links{ list-style:none; margin:0; padding:0 14px; height:42px; display:flex; align-items:center; justify-content:center; gap:4px; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; }
853  .cc-secnav-links::-webkit-scrollbar{ display:none; }
854  .cc-secnav-links a{ display:inline-flex; align-items:center; padding:6px 12px; border-radius:6px; color:#2463EB; font-weight:700; font-size:13.5px; white-space:nowrap; text-decoration:none; transition:background .15s ease,color .15s ease; }
855  .cc-secnav-links a:hover{ background:#eef3ff; color:#1d4ed8; }
856
857  @media (max-width:768px){
858    .cc-clock-full{ display:none; }
859    .cc-clock-mini{ display:inline-flex; }
860    .cc-secnav-summary{ display:flex; align-items:center; justify-content:center; gap:8px; height:42px; color:#2463EB; font-weight:800; font-size:13.5px; }
861    .cc-secnav-caret{ transition:transform .2s ease; font-size:11px; }
862    .cc-secnav.is-open .cc-secnav-caret{ transform:rotate(180deg); }
863    .cc-secnav-links{ display:none; position:absolute; top:100%; left:0; right:0; height:auto; flex-direction:column; gap:2px; padding:6px 10px 10px; background:#fff; border-bottom:1px solid #e5e7eb; box-shadow:0 8px 16px rgba(15,23,42,.10); max-height:60vh; overflow:auto; z-index:41; }
864    .cc-secnav.is-open .cc-secnav-links{ display:flex; }
865    .cc-secnav-links a{ width:100%; justify-content:center; padding:10px 12px; }
866  }
867
868  /* App mode: hide the web nav lines entirely (item 1 — no duplicate hamburger /
869     stacked bars over the native app chrome) and tighten the layout. */
870  html.cc-app .cc-global-nav{ display:none !important; }
871  html.cc-app .cc-subhead{ display:none !important; }
872  html.cc-app .cc-subhead-spacer{ height:0 !important; }
873  html.cc-app .cc-subhead-spacer ~ .pt-20{ padding-top:0 !important; }
874  html.cc-app body{ padding-bottom:96px; }
875
876  /* Item 7: mobile content-fit — nothing exceeds the viewport, and wide tables /
877     pre / code scroll horizontally inside their own box instead of bleeding off
878     or forcing the whole page sideways. Pinch-zoom stays available for fine print. */
879  @media (max-width:768px){
880    /* Nothing forces the page wider than the screen → no sideways scroll. */
881    html, body{ overflow-x:hidden; max-width:100%; }
882    img, video, canvas, svg, iframe{ max-width:100%; }
883    img, video, canvas{ height:auto; }
884    table{ max-width:100%; }
885    pre{ max-width:100%; overflow:auto; -webkit-overflow-scrolling:touch; }
886    .cc-x-scroll{ display:block; width:100%; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
887    .cc-x-scroll > table{ min-width:max-content; }
888  }
889</style>
890<div class="cc-subhead" id="ccSubhead">
891  <div class="cc-clockbar" role="status" aria-label="Organization Clock - Eastern Time">
892    <span class="cc-clock-full">
893      <span class="cc-clock-label">Organization Clock &mdash; <strong>Eastern Time (ET)</strong> &middot; Miami, FL</span>
894      <span class="cc-clock-time" id="ccClock"></span>
895      <span class="cc-clock-date">(<span id="ccDate"></span>)</span>
896    </span>
897    <span class="cc-clock-mini"><i class="fas fa-clock" aria-hidden="true"></i> Eastern Time &middot; <span id="ccClockM"></span></span>
898  </div>
899  <nav class="cc-secnav" id="ccSecnav" aria-label="On this page">
900    <button class="cc-secnav-summary" type="button" id="ccSecnavToggle" aria-expanded="false" aria-controls="ccSecnavLinks">
901      <i class="fas fa-list-ul" aria-hidden="true"></i> On this page
902      <i class="fas fa-chevron-down cc-secnav-caret" aria-hidden="true"></i>
903    </button>
904    <ul class="cc-secnav-links" id="ccSecnavLinks">
905      <li><a href="https://codecrunchglobal.vercel.app/home#team">Our Team</a></li>
906      <li><a href="https://codecrunchglobal.vercel.app/home#mission">Mission</a></li>
907      <li><a href="https://codecrunchglobal.vercel.app/courses">Courses</a></li>
908      <li><a href="https://codecrunchglobal.vercel.app/home#events">Events</a></li>
909      <li><a href="https://hackuniversity.vercel.app/hackuniversity-onestopform-user-login.html">Membership</a></li>
910      <li><a href="https://codecrunchglobal.vercel.app/hackathons/305-hackathon-series.html">Hackathons</a></li>
911      <li><a href="https://hackuniversity.vercel.app/member-resources-and-opportunities">Resources</a></li>
912    </ul>
913  </nav>
914</div>
915<div class="cc-subhead-spacer" aria-hidden="true"></div>
915<script>
916  (function(){
917    // Live Eastern Time clock (full + compact).
918    var f=document.getElementById('ccClock'),d=document.getElementById('ccDate'),m=document.getElementById('ccClockM');
919    if(f||d||m){
920      var tick=function(){
921        var now=new Date();
922        if(f)f.textContent=new Intl.DateTimeFormat('en-US',{timeZone:'America/New_York',hour:'numeric',minute:'2-digit',second:'2-digit',hour12:true}).format(now)+' ET';
923        if(d)d.textContent=new Intl.DateTimeFormat('en-US',{timeZone:'America/New_York',weekday:'short',year:'numeric',month:'short',day:'numeric'}).format(now);
924        if(m)m.textContent=new Intl.DateTimeFormat('en-US',{timeZone:'America/New_York',weekday:'short',hour:'numeric',minute:'2-digit',hour12:true}).format(now);
925      };
926      tick();setInterval(tick,1000);
927    }
928    // "On this page" mobile disclosure.
929    var sn=document.getElementById('ccSecnav'),btn=document.getElementById('ccSecnavToggle');
930    if(sn&&btn){
931      btn.addEventListener('click',function(){var o=sn.classList.toggle('is-open');btn.setAttribute('aria-expanded',o?'true':'false');});
932      sn.querySelectorAll('.cc-secnav-links a').forEach(function(a){a.addEventListener('click',function(){sn.classList.remove('is-open');btn.setAttribute('aria-expanded','false');});});
933    }
934    // Item 3: collapse all three nav lines on scroll-down, reveal them again on
935    // scroll-up (no button). Hysteresis keeps momentum / elastic scroll from
936    // strobing it. Disabled in app mode (the lines are hidden there).
937    var isApp = document.documentElement.classList.contains('cc-app');
938    if(!isApp && !window.__ccHdrCollapse){
939      window.__ccHdrCollapse=true;
940      window.__ccLastY=Math.max(0,window.scrollY||0); window.__ccAcc=0;
941      var ticking=false;
942      var TOP=90,DOWN=64,UP=48; // px: stay open near top; cumulative travel to collapse/reveal
943      var upd=function(){
944        var y=Math.max(0,window.scrollY||0),dy=y-window.__ccLastY;window.__ccLastY=y;ticking=false;
945        if(y<TOP){document.body.classList.remove('cc-hdr-collapsed');window.__ccAcc=0;return;}
946        if((dy>0)!==(window.__ccAcc>0))window.__ccAcc=0; // reset on direction change
947        window.__ccAcc+=dy;
948        if(window.__ccAcc>DOWN){document.body.classList.add('cc-hdr-collapsed');window.__ccAcc=0;}
949        else if(window.__ccAcc<-UP){document.body.classList.remove('cc-hdr-collapsed');window.__ccAcc=0;}
950      };
951      window.addEventListener('scroll',function(){if(!ticking){window.requestAnimationFrame(upd);ticking=true;}},{passive:true});
952    }
953    // Item 7: make wide tables (and oversized pre/code blocks) horizontally
954    // scrollable on small screens instead of overflowing the page.
955    var wrapWide=function(){
956      try{
957        document.querySelectorAll('table').forEach(function(t){
958          var p=t.parentElement;
959          if(p && p.classList && p.classList.contains('cc-x-scroll')) return;
960          if(t.closest && t.closest('.cc-x-scroll')) return;
961          var box=document.createElement('div'); box.className='cc-x-scroll';
962          t.parentNode.insertBefore(box,t); box.appendChild(t);
963        });
964      }catch(e){}
965    };
966    if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',wrapWide);}else{wrapWide();}
967  })();
968</script>
968
969<!-- cc-subhead:end -->
970
971  <header class="hero">
972    <div class="container">
973      <div class="hero-grid">
974        <div>
975          <span class="eyebrow"><i class="fa-solid fa-calendar-week"></i> June — May</span>
976          <h1>The <span class="accent">305 Hackathon Series.</span></h1>
977          <p>Seven hackathons. Twelve editions across the year. Each one hosted by a Miami learner tech org. Pick a hackathon to see all of its editions.</p>
978        </div>
979        <div class="hero-stats">
980          <div>
981            <div class="hero-stat-num">7</div>
982            <div class="hero-stat-label">Hackathons</div>
983          </div>
984          <div>
985            <div class="hero-stat-num">12</div>
986            <div class="hero-stat-label">Editions</div>
987          </div>
988          <div>
989            <div class="hero-stat-num">6</div>
990            <div class="hero-stat-label">Host orgs</div>
991          </div>
992        </div>
993      </div>
994    </div>
995  </header>
996
997  <!-- "Happening now / Up next" — rotates through live + upcoming editions vs
998       today's date, rendered by CCHackSeries.renderNow (js/cc-hack-series.js). -->
999  <div id="hack-now"></div>
1000
1001  <main>
1002    <section id="hackathons">
1003      <div class="container">
1004        <h2 class="section-title">Hackathons</h2>
1005        <p class="section-sub">Click a hackathon name to open its page and see every edition. Ordered by the next upcoming edition — the current month comes first.</p>
1006
1007        <!-- Rendered from js/hackathons-data.js via CCHackSeries.renderIndex (see
1008             the script block before </body>). Series are auto-ordered current-month
1009             first, then upcoming, then those with only past editions. The 'general'
1010             editions render in their own curated section below, so they're excluded
1011             here. -->
1012        <div class="hack-grid" id="hack-grid"></div>
1013      </div>
1014    </section>
1015
1016    <section id="format">
1017      <div class="container">
1018        <h2 class="section-title">Session format</h2>
1019        <p class="section-sub">Every edition runs two sessions. Session A is in person, starting May 2026. Session B is virtual. Promos unlock at the start of the event for both Session A and Session B. In-person Session A participants must demo at the closing ceremony, and a bonus challenge is unveiled live at that ceremony.</p>
1020
1021        <div class="rules">
1022          <div class="rules-grid">
1023            <div class="rule-item">
1024              <div class="rule-icon orange"><i class="fa-solid fa-sun"></i></div>
1025              <h4>Summer (May - Aug)</h4>
1026              <p>One month asynchronous window. Session B virtual only.</p>
1027            </div>
1028            <div class="rule-item">
1029              <div class="rule-icon"><i class="fa-solid fa-building"></i></div>
1030              <h4>Friday 12hr (Sep - Apr)</h4>
1031              <p>Non-holiday Friday with no FIU event overlap. 12 hours. Session A in person, Session B virtual.</p>
1032            </div>
1033            <div class="rule-item">
1034              <div class="rule-icon purple"><i class="fa-solid fa-laptop"></i></div>
1035              <h4>December</h4>
1036              <p>Fully virtual edition for both sessions.</p>
1037            </div>
1038            <div class="rule-item">
1039              <div class="rule-icon red"><i class="fa-solid fa-trophy"></i></div>
1040              <h4>Demos &amp; bonus</h4>
1041              <p>Promos unlock at the start. In-person Session A must demo and gets a bonus challenge live at the ceremony.</p>
1042            </div>
1043          </div>
1044        </div>
1045      </div>
1046    </section>
1047  </main>
1048
1049  <!-- BEGIN crunch305 unified footer -->
1050<style>
1051  .c305-footer { background:#ffffff; color:#5B6470; border-top:1px solid #E6E8EC; padding:56px 20px 40px; font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; line-height:1.6; box-sizing:border-box; width:100%; flex:0 0 auto; align-self:stretch; }
1052  .c305-footer * { box-sizing:border-box; }
1053  .c305-footer a { color:#5B6470; text-decoration:none; transition:color 120ms ease; }
1054  .c305-footer a:hover { color:#3b5bdb; opacity:1; text-decoration:underline; }
1055  .c305-wrap { max-width:1120px; margin:0 auto; }
1056  .c305-cols { display:grid; grid-template-columns:1fr; gap:2rem; }
1057  @media (min-width: 760px) { .c305-cols { grid-template-columns:1.3fr 1fr 1fr; gap:34px; } }
1058  .c305-footer h3 { font-size:1.35rem; font-weight:300; letter-spacing:-.02em; color:#0a0a0a; margin:0 0 .6rem; }
1059  .c305-footer h4 { font-size:.68rem; font-weight:600; color:#8A929C; margin:1.2rem 0 .6rem; text-transform:uppercase; letter-spacing:.12em; opacity:1; }
1060  .c305-footer p { margin:.25rem 0; font-size:.88rem; color:#8A929C; opacity:1; }
1061  .c305-website a { text-decoration:underline; }
1062  .c305-socials { display:flex; flex-wrap:wrap; gap:8px 18px; margin-top:.5rem; }
1063  .c305-soc { display:inline-flex; flex-direction:row; align-items:center; gap:7px; padding:0; font-size:.82rem; text-align:left; transition:color .15s ease; }
1064  .c305-soc i { font-size:.95rem; line-height:1; color:#8A929C; }
1065  .c305-soc span { font-size:.82rem; font-weight:500; }
1066  .c305-soc:hover { color:#3b5bdb; transform:none; text-decoration:none; }
1067  .c305-soc:hover i { color:#3b5bdb; }
1068  .c305-links { list-style:none; padding:0; margin:0; }
1069  .c305-links li { padding:.22rem 0; font-size:.9rem; opacity:1; }
1070  .c305-bottom { margin-top:2.2rem; padding-top:1rem; border-top:1px solid #E6E8EC; text-align:left; }
1071  .c305-bottom .c305-copy { font-size:.78rem; color:#8A929C; opacity:1; margin:0; }
1072  .c305-bottom .c305-credit { font-size:.78rem; color:#8A929C; opacity:1; margin:.4rem 0 0; line-height:1.7; }
1073  .c305-bottom .c305-credit a { color:#5B6470; font-weight:600; text-decoration:underline; }
1074  .c305-bottom .c305-legal { display:none; font-size:.72rem; color:#9AA2AC; opacity:1; margin:.7rem 0 0; line-height:1.6; max-width:78ch; }
1075  .c305-bottom .c305-legal:target { display:block; }
1076</style>
1077<footer id="connect" class="c305-footer">
1078  <div class="c305-wrap">
1079    <div class="c305-cols">
1080      <div>
1081        <h3>Code Crunch Worldwide</h3>
1082        <p>Worldwide tech and innovation org. Coding workshops, technical interview prep, project-based learning.</p>
1083      <p class="c305-website"><a href="https://codecrunchglobal.vercel.app/">codecrunchglobal.vercel.app</a></p>
1084        <h4>Connect With Us</h4>
1085        <div class="c305-socials">
1086        <a href="https://www.linkedin.com/company/codecrunchworldwide" class="c305-soc"><i class="fab fa-linkedin" aria-hidden="true"></i><span>LinkedIn</span></a>
1087        <a href="https://www.instagram.com/codecrunchworldwide/" class="c305-soc"><i class="fab fa-instagram" aria-hidden="true"></i><span>Instagram</span></a>
1088        <a href="https://github.com/CODECRUNCHWORLDWIDE" class="c305-soc"><i class="fab fa-github" aria-hidden="true"></i><span>GitHub</span></a>
1089        <a href="https://www.youtube.com/@CODECRUNCHWORLDWIDE" class="c305-soc"><i class="fab fa-youtube" aria-hidden="true"></i><span>YouTube</span></a>
1090        <a href="https://fiu.campuslabs.com/engage/organization/codecrunch" class="c305-soc"><i class="fas fa-university" aria-hidden="true"></i><span>Panther Connect</span></a>
1091        <a href="https://hackuniversity.vercel.app/hackuniversity-onestopform.html" class="c305-soc"><i class="fab fa-whatsapp" aria-hidden="true"></i><span>WhatsApp</span></a>
1092        <a href="https://hackuniversity.vercel.app/hackuniversity-onestopform.html" class="c305-soc"><i class="fab fa-discord" aria-hidden="true"></i><span>Discord</span></a>
1093        <a href="https://hackuniversity.vercel.app/hackuniversity-onestopform.html" class="c305-soc"><i class="fab fa-instagram" aria-hidden="true"></i><span>IG Group</span></a>
1094        <a href="https://crunch305drop.vercel.app/" class="c305-soc"><i class="fas fa-newspaper" aria-hidden="true"></i><span>News</span></a>
1095        <a href="https://lu.ma/CODECRUNCH" class="c305-soc"><i class="far fa-calendar-alt" aria-hidden="true"></i><span>Events</span></a>
1096        <a href="https://hackuniversity.vercel.app/" class="c305-soc"><i class="fas fa-video" aria-hidden="true"></i><span>Streaming platform</span></a>
1097        <a href="https://witty-suede-4a1.notion.site/ebd/1fe7f868cc8c8042b1ebfebc42034954" class="c305-soc"><i class="fas fa-book" aria-hidden="true"></i><span>Courses</span></a>
1098        <a href="https://hackuniversityattendance.vercel.app/" class="c305-soc"><i class="fas fa-clipboard-check" aria-hidden="true"></i><span>Attendance</span></a>
1099        </div>
1100      </div>
1101      <div>
1102        <h4>Quick Links</h4>
1103        <ul class="c305-links">
1104        <li><a href="https://codecrunchglobal.vercel.app/">Home</a></li>
1105        <li><a href="https://codecrunchglobal.vercel.app/#mission">Mission</a></li>
1106        <li><a href="https://codecrunchglobal.vercel.app/#events">Events</a></li>
1107        <li><a href="https://codecrunchglobal.vercel.app/hackathons.html">
1107Hackathons</a></li>
1108        <li><a href="https://codecrunchglobal.vercel.app/#learn">Learn</a></li>
1109        <li><a href="https://codecrunchglobal.vercel.app/#membership">Membership</a></li>
1110        <li><a href="https://hackuniversity.vercel.app/hackuniversity-onestopform.html">WhatsApp</a></li>
1111        <li><a href="https://hackuniversity.vercel.app/hackuniversity-onestopform.html">Join E-Board</a></li>
1112        <li><a href="https://crunch305drop.vercel.app/">News · Crunch305 Drop</a></li>
1113        <li><a href="https://codecrunchglobal.vercel.app/#resources">Resources</a></li>
1114        <li><a href="https://codecrunchglobal.vercel.app/#connect">Connect</a></li>
1115        <li><a href="https://hackuniversity.vercel.app/hackuniversity-onestopform.html">Join Discord / WhatsApp / IG Group</a></li>
1116        <li><a href="#third-party-disclaimer">Disclaimer</a></li>
1117        </ul>
1118      </div>
1119      <div>
1120        <h4>Contact</h4>
1121        <p>Florida International University<br>Miami, FL<br><a href="mailto:[email protected]">[email protected]</a></p>
1122      </div>
1123    </div>
1124    <div class="c305-bottom">
1125      <p class="c305-copy">&copy; 
1125<script>document.write(new Date().getFullYear())</script>
1125 Code Crunch Worldwide. All rights reserved.</p>
1126      <p class="c305-credit">Built with &#10084;&#65039; for the tech community by <a href="https://www.linkedin.com/in/iba001/" target="_blank" rel="noopener">Brian Bazurto</a> | Powered by innovation and collaboration &middot; part of the Hack University ecosystem &middot; news at <a href="https://crunch305drop.vercel.app/">Crunch305 Drop</a></p>
1127      <p class="c305-legal" id="third-party-disclaimer">All third-party product names, logos, trademarks, frameworks, standards, and registered marks are property of their respective owners. Their use is for identification and educational purposes and does not imply affiliation, sponsorship, certification, or endorsement.</p>
1128    </div>
1129  </div>
1130</footer>
1131<!-- END crunch305 unified footer -->
1132
1133  <!-- Series grid, rendered from the single source of truth. Data first, then the
1134       renderer, then the call. 'general' editions stay in their own section above. -->
1135  
1135<script src="/js/hackathons-data.js"></script>
1135
1136  
1136<script src="/js/cc-hack-series.js"></script>
1136
1137  
1137<script>
1138    CCHackSeries.renderNow('#hack-now');
1139    CCHackSeries.renderIndex('#hack-grid');
1140  </script>
1140
1141</body>
1142</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.