CoolFace
Apppublic

youngprogramers/duckquack-cs50-symphony

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
index.html428 linesDownload Raw Back to root
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>DuckQuack CS50</title>7    <link rel="icon" type="image/x-icon" href="/static/favicon.ico">8    <script src="https://cdn.tailwindcss.com"></script>9    <script src="https://unpkg.com/feather-icons"></script>10    <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>11    <script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.net.min.js"></script>12    <style>13        @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');14        15        body {16            font-family: 'Space Grotesk', sans-serif;17            scroll-behavior: smooth;18            overflow-x: hidden;19            cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><circle cx='20' cy='20' r='18' fill='yellow'/><circle cx='15' cy='15' r='2' fill='black'/><circle cx='25' cy='15' r='2' fill='black'/><path d='M15 25 Q20 30 25 25' stroke='black' stroke-width='2' fill='none'/></svg>"), auto;20        }21 22        .duck-click {23            animation: quack 0.3s ease-out;24        }25 26        @keyframes quack {27            0% { transform: scale(1); }28            50% { transform: scale(0.9); }29            100% { transform: scale(1); }30        }31 32        .card-hover {33            transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);34        }35 36        .card-hover:hover {37            transform: translateY(-10px) scale(1.03);38            box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);39        }40 41        .team-card {42            transition: all 0.5s cubic-bezier(0.19, 1, 0.22, 1);43            transform-origin: bottom;44        }45 46        .team-card:hover {47            transform: translateY(-15px) scale(1.05);48            z-index: 10;49        }50 51        .team-card:hover .team-info {52            opacity: 1;53            transform: translateY(0);54        }55 56        .team-info {57            opacity: 0;58            transform: translateY(20px);59            transition: all 0.3s ease-out;60        }61 62        .winter-bg {63            background: linear-gradient(180deg, #ffffff 0%, #e6f7ff 100%);64            position: relative;65            overflow: hidden;66        }67.winter-bg::before {68            content: "";69            position: absolute;70            top: 0;71            left: 0;72            right: 0;73            height: 100%;74            background-image: url('http://static.photos/winter/1200x630/42');75            background-size: cover;76            background-position: center;77            opacity: 0.2;78            z-index: -1;79            filter: blur(2px);80        }81 82        .winter-icon {83            transition: all 0.5s ease;84            filter: drop-shadow(0 5px 15px rgba(255, 255, 255, 0.5));85        }86        .winter-icon:hover {87            transform: rotate(10deg) scale(1.1);88        }89.vanta-bg {90            position: absolute;91            top: 0;92            left: 0;93            width: 100%;94            height: 100%;95            z-index: -1;96        }97 98        .btn-register {99            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);100            box-shadow: 0 10px 20px -5px rgba(118, 75, 162, 0.4);101            transition: all 0.3s ease;102        }103 104        .btn-register:hover {105            transform: translateY(-3px);106            box-shadow: 0 15px 30px -5px rgba(118, 75, 162, 0.5);107        }108 109        .btn-support {110            background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);111            transition: all 0.3s ease;112        }113 114        .btn-support:hover {115            transform: translateY(-3px);116            box-shadow: 0 15px 30px -5px rgba(0, 242, 254, 0.3);117        }118    </style>119</head>120<body class="bg-gray-50">121    <!-- Hamburger Menu -->122    <div class="fixed top-4 right-4 z-50">123        <button id="menu-toggle" class="p-2 rounded-full bg-white bg-opacity-90 shadow-lg focus:outline-none">124            <svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-gray-800" fill="none" viewBox="0 0 24 24" stroke="currentColor">125                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />126            </svg>127        </button>128        <div id="mobile-menu" class="hidden fixed top-16 right-4 bg-white bg-opacity-90 backdrop-blur-sm z-40 rounded-xl shadow-xl p-6 w-64">129            <button id="menu-close" class="absolute top-2 right-2 p-1 text-gray-800">130<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor">131                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />132                </svg>133            </button>134            <nav class="flex flex-col space-y-4">135                <a href="#" class="text-lg font-medium text-gray-800 hover:text-blue-600 transition duration-200 py-2">Home</a>136                <a href="#news" class="text-lg font-medium text-gray-800 hover:text-blue-600 transition duration-200 py-2">News</a>137                <a href="#team" class="text-lg font-medium text-gray-800 hover:text-blue-600 transition duration-200 py-2">Team</a>138                <a href="#contact" class="text-lg font-medium text-gray-800 hover:text-blue-600 transition duration-200 py-2">Contact</a>139                <a href="#" class="text-lg font-medium text-blue-600 hover:text-blue-800 transition duration-200 py-2">Register</a>140</nav>141        </div>142    </div>143 144    <div id="vanta-bg" class="vanta-bg"></div>145<!-- Winter Header -->146    <section class="relative h-64 md:h-96 overflow-hidden">147        <div class="absolute inset-0 bg-gradient-to-b from-blue-900/20 to-blue-900/40 z-10"></div>148        <img src="http://static.photos/winter/1200x630/42" alt="Winter Scene" class="w-full h-full object-cover object-center">149        <div class="absolute inset-0 flex items-center justify-center z-20">150            <h1 class="text-4xl md:text-6xl font-bold text-white text-center px-4 drop-shadow-lg">151                <span class="bg-clip-text text-transparent bg-gradient-to-r from-blue-100 to-blue-300">CS50</span>152            </h1>153        </div>154    </section>155 156    <!-- Hero Section -->157<section class="min-h-screen flex items-center justify-center relative overflow-hidden">158        <div class="container mx-auto px-6 py-20 text-center z-10">159<h1 class="text-6xl md:text-8xl font-bold text-gray-800 mb-6">160                <span class="bg-clip-text text-transparent bg-gradient-to-r from-purple-500 to-blue-600">CS50</span>161            </h1>162<p class="text-xl md:text-2xl text-gray-600 max-w-3xl mx-auto mb-12">163                Harvard University's introduction to the intellectual enterprises of computer science and the art of programming.164            </p>165            <div class="flex flex-col sm:flex-row justify-center items-center gap-6">166                <button class="btn-register text-white font-bold py-4 px-8 rounded-full text-lg">167                    Register Now168                </button>169                <button class="btn-support text-white font-bold py-4 px-8 rounded-full text-lg">170                    Get Support171                </button>172            </div>173            <div class="mt-20 animate-bounce">174                <i data-feather="chevron-down" class="w-12 h-12 text-gray-400"></i>175            </div>176        </div>177    </section>178    <!-- News Section -->179    <section id="news" class="winter-bg py-20">180<section class="winter-bg py-20">181        <div class="container mx-auto px-6">182            <h2 class="text-4xl font-bold text-center text-gray-800 mb-16">Latest News & Events</h2>183            184            <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10">185                <!-- News Card 1 -->186                <div class="bg-white rounded-xl overflow-hidden shadow-lg card-hover">187                    <div class="h-48 overflow-hidden">188                        <img src="http://static.photos/technology/640x360/1" alt="CS50 Event" class="w-full h-full object-cover transform hover:scale-110 transition duration-500">189                    </div>190                    <div class="p-6">191                        <h3 class="text-2xl font-bold text-gray-800 mb-2">CS50 Puzzle Day</h3>192                        <p class="text-gray-600 mb-4">Join us for the annual CS50 Puzzle Day on March 15th!</p>193                        <a href="#" class="text-blue-500 font-medium hover:underline">Read More</a>194                    </div>195                </div>196                197                <!-- News Card 2 -->198                <div class="bg-white rounded-xl overflow-hidden shadow-lg card-hover">199                    <div class="h-48 overflow-hidden">200                        <img src="http://static.photos/education/640x360/2" alt="CS50 Lecture" class="w-full h-full object-cover transform hover:scale-110 transition duration-500">201                    </div>202                    <div class="p-6">203                        <h3 class="text-2xl font-bold text-gray-800 mb-2">New Lectures Added</h3>204                        <p class="text-gray-600 mb-4">Check out our latest lectures on machine learning and AI.</p>205                        <a href="#" class="text-blue-500 font-medium hover:underline">Watch Now</a>206                    </div>207                </div>208                209                <!-- News Card 3 -->210                <div class="bg-white rounded-xl overflow-hidden shadow-lg card-hover">211                    <div class="h-48 overflow-hidden">212                        <img src="http://static.photos/workspace/640x360/3" alt="CS50 Hackathon" class="w-full h-full object-cover transform hover:scale-110 transition duration-500">213                    </div>214                    <div class="p-6">215                        <h3 class="text-2xl font-bold text-gray-800 mb-2">Global Hackathon</h3>216                        <p class="text-gray-600 mb-4">Participate in our worldwide hackathon this summer.</p>217                        <a href="#" class="text-blue-500 font-medium hover:underline">Join Now</a>218                    </div>219                </div>220            </div>221        </div>222    </section>223    <!-- Team Section -->224    <section id="team" class="py-20 bg-gray-50">225<section class="py-20 bg-gray-50">226        <div class="container mx-auto px-6">227            <h2 class="text-4xl font-bold text-center text-gray-800 mb-16">Meet Our Team</h2>228            229            <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-8">230                <!-- Team Member 1 -->231                <div class="team-card bg-white rounded-xl p-6 shadow-lg text-center relative">232                    <div class="w-32 h-32 mx-auto rounded-full overflow-hidden mb-6 shadow-md">233                        <img src="http://static.photos/people/320x240/1" alt="David Malan" class="w-full h-full object-cover">234                    </div>235                    <h3 class="text-xl font-bold text-gray-800">David Malan</h3>236                    <p class="text-gray-600 mb-4">Professor</p>237                    <div class="team-info absolute bottom-0 left-0 right-0 bg-white p-6 rounded-b-xl">238                        <p class="text-gray-700">"Computer science is no more about computers than astronomy is about telescopes."</p>239                    </div>240                </div>241                242                <!-- Team Member 2 -->243                <div class="team-card bg-white rounded-xl p-6 shadow-lg text-center relative">244                    <div class="w-32 h-32 mx-auto rounded-full overflow-hidden mb-6 shadow-md">245                        <img src="http://static.photos/people/320x240/2" alt="Brian Yu" class="w-full h-full object-cover">246                    </div>247                    <h3 class="text-xl font-bold text-gray-800">Brian Yu</h3>248                    <p class="text-gray-600 mb-4">Senior Preceptor</p>249                    <div class="team-info absolute bottom-0 left-0 right-0 bg-white p-6 rounded-b-xl">250                        <p class="text-gray-700">"The best way to learn is by doing - that's why CS50 is so project-focused!"</p>251                    </div>252                </div>253                254                <!-- Team Member 3 -->255                <div class="team-card bg-white rounded-xl p-6 shadow-lg text-center relative">256                    <div class="w-32 h-32 mx-auto rounded-full overflow-hidden mb-6 shadow-md">257                        <img src="http://static.photos/people/320x240/3" alt="Doug Lloyd" class="w-full h-full object-cover">258                    </div>259                    <h3 class="text-xl font-bold text-gray-800">Doug Lloyd</h3>260                    <p class="text-gray-600 mb-4">Senior Preceptor</p>261                    <div class="team-info absolute bottom-0 left-0 right-0 bg-white p-6 rounded-b-xl">262                        <p class="text-gray-700">"Debugging is like being the detective in a crime movie where you're also the murderer."</p>263                    </div>264                </div>265                266                <!-- Team Member 4 -->267                <div class="team-card bg-white rounded-xl p-6 shadow-lg text-center relative">268                    <div class="w-32 h-32 mx-auto rounded-full overflow-hidden mb-6 shadow-md">269                        <img src="http://static.photos/people/320x240/4" alt="Rob Bowden" class="w-full h-full object-cover">270                    </div>271                    <h3 class="text-xl font-bold text-gray-800">Rob Bowden</h3>272                    <p class="text-gray-600 mb-4">Preceptor</p>273                    <div class="team-info absolute bottom-0 left-0 right-0 bg-white p-6 rounded-b-xl">274                        <p class="text-gray-700">"Programming isn't about typing - it's about thinking and problem solving."</p>275                    </div>276                </div>277            </div>278        </div>279    </section>280    <!-- Footer with Map -->281    <footer id="contact" class="bg-gray-900 text-white pt-16 pb-8">282<footer class="bg-gray-900 text-white pt-16 pb-8">283        <div class="container mx-auto px-6">284            <div class="flex flex-col lg:flex-row gap-12">285                <div class="lg:w-1/2">286                    <h3 class="text-2xl font-bold mb-6">About CS50</h3>287                    <p class="text-gray-400 mb-6">288                        CS50 is Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike.289                    </p>290                    <div class="flex space-x-4">291                        <a href="#" class="text-gray-400 hover:text-white">292                            <i data-feather="facebook"></i>293                        </a>294                        <a href="#" class="text-gray-400 hover:text-white">295                            <i data-feather="twitter"></i>296                        </a>297                        <a href="#" class="text-gray-400 hover:text-white">298                            <i data-feather="instagram"></i>299                        </a>300                        <a href="#" class="text-gray-400 hover:text-white">301                            <i data-feather="youtube"></i>302                        </a>303                    </div>304                </div>305                306                <div class="lg:w-1/2">307                    <h3 class="text-2xl font-bold mb-6">Our Location</h3>308                    <div class="h-64 bg-gray-800 rounded-xl overflow-hidden">309                        <!-- Google Map -->310                        <iframe 311                            src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2947.4892408183736!2d-71.11784868454333!3d42.37700287918563!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89e377427d7f0199%3A0x5937c65cee2427f0!2sHarvard%20University!5e0!3m2!1sen!2sus!4v1620000000000!5m2!1sen!2sus" 312                            width="100%" 313                            height="100%" 314                            style="border:0;" 315                            allowfullscreen="" 316                            loading="lazy">317                        </iframe>318                    </div>319                </div>320            </div>321            322            <div class="border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center">323                <p class="text-gray-400">© 2023 CS50. All rights reserved.</p>324                <div class="flex space-x-6 mt-4 md:mt-0">325                    <a href="#" class="text-gray-400 hover:text-white">Privacy Policy</a>326                    <a href="#" class="text-gray-400 hover:text-white">Terms of Service</a>327                    <a href="#" class="text-gray-400 hover:text-white">Contact Us</a>328                </div>329            </div>330        </div>331    </footer>332 333    <script>334        // Mobile Menu Toggle335        const menuToggle = document.getElementById('menu-toggle');336        const mobileMenu = document.getElementById('mobile-menu');337        const menuClose = document.getElementById('menu-close');338        menuToggle.addEventListener('click', () => {339            mobileMenu.classList.toggle('hidden');340        });341 342        menuClose.addEventListener('click', () => {343            mobileMenu.classList.add('hidden');344        });345 346        // Close menu when clicking on links347        document.querySelectorAll('#mobile-menu a').forEach(link => {348            link.addEventListener('click', () => {349                mobileMenu.classList.add('hidden');350            });351        });352// Initialize Vanta.js background353VANTA.NET({354            el: "#vanta-bg",355            mouseControls: true,356            touchControls: true,357            gyroControls: false,358            minHeight: 200.00,359            minWidth: 200.00,360            scale: 1.00,361            scaleMobile: 1.00,362            color: 0x3f83f8,363            backgroundColor: 0xf8fafc,364            points: 12.00,365            maxDistance: 22.00,366            spacing: 18.00367        });368 369        // Initialize Feather Icons370        document.addEventListener('DOMContentLoaded', function() {371            feather.replace();372            373            // Duck click animation374            document.addEventListener('click', function(e) {375                const duck = document.createElement('div');376                duck.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><circle cx="20" cy="20" r="18" fill="yellow"/><circle cx="15" cy="15" r="2" fill="black"/><circle cx="25" cy="15" r="2" fill="black"/><path d="M15 25 Q20 30 25 25" stroke="black" stroke-width="2" fill="none"/></svg>`;377                duck.style.position = 'fixed';378                duck.style.left = (e.clientX - 20) + 'px';379                duck.style.top = (e.clientY - 20) + 'px';380                duck.style.pointerEvents = 'none';381                duck.style.zIndex = '9999';382                duck.style.transform = 'scale(1)';383                duck.style.transition = 'transform 0.3s ease-out';384                document.body.appendChild(duck);385                386                setTimeout(() => {387                    duck.style.transform = 'scale(1.2)';388                }, 0);389                390                setTimeout(() => {391                    duck.style.transform = 'scale(0)';392                }, 100);393                394                setTimeout(() => {395                    document.body.removeChild(duck);396                }, 300);397            });398            // Smooth scroll for anchor links and close menu399            document.querySelectorAll('a[href^="#"]').forEach(anchor => {400                anchor.addEventListener('click', function (e) {401                    e.preventDefault();402                    document.querySelector(this.getAttribute('href')).scrollIntoView({403                        behavior: 'smooth'404                    });405                    mobileMenu.classList.add('hidden');406                    mobileMenu.classList.remove('flex');407                });408            });409});410        411        // Intersection Observer for animations412        const observer = new IntersectionObserver((entries) => {413            entries.forEach(entry => {414                if (entry.isIntersecting) {415                    entry.target.classList.add('animate-fadeIn');416                }417            });418        }, {419            threshold: 0.1420        });421        422        document.querySelectorAll('.card-hover, .team-card').forEach(el => {423            observer.observe(el);424        });425    </script>426</body>427</html>428