+
setOpen(!open)}
+ >
+
+ {officer.img
+ ?
+ :
{officer.initials}
+ }
-
-
- Where to find us!
-
-
- We meet in the Gates-Dell Complex, home of UT CS!
-
+
+
{officer.name}
+
{officer.role}
-
-
- >
- )
-}
+
+
+ {officer.bio &&
"{officer.bio}"
}
+
+
+
-export default About
+ {open ? '✕' : '+'}
+
+
+ );
+}
diff --git a/src/pages/App.tsx b/src/pages/App.tsx
index f84acdd..491607e 100644
--- a/src/pages/App.tsx
+++ b/src/pages/App.tsx
@@ -1,17 +1,21 @@
-import React, { useState, useEffect } from 'react'
-import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
-import About from './About';
+import React, { useEffect } from 'react';
+import { BrowserRouter as Router, Route, Routes, useLocation } from 'react-router-dom';
+import { initializeApp } from 'firebase/app';
+
+import Nav from '../components/Nav';
+import Footer from '../components/Footer';
import Homepage from './Homepage';
+import About from './About';
import Projects from './Projects';
-import ResponsiveAppBar from '../components/ResponsiveAppBar';
-import Contact from './Contact';
-import Footer from '../components/Footer';
import Sponsors from './Sponsors';
-import EclairDrawer from '../components/EclairDrawer';
-// Import the functions you need from the SDKs you need
-import { initializeApp } from "firebase/app";
+import Contact from './Contact';
+import News from './News';
+
+import { useCursor } from '../hooks/useCursor';
+import '../styles/globals.css';
+// ─── Firebase ──────────────────────────────────────────────────────────────
const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
@@ -21,66 +25,52 @@ const firebaseConfig = {
appId: process.env.REACT_APP_FIREBASE_APP_ID,
measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID,
};
-// testing API key security
-
-// Initialize Firebase
-const app = initializeApp(firebaseConfig);
+initializeApp(firebaseConfig);
-const homepage = () => {
- return
-}
-const about = () => {
- return
-}
-const members = () => {
- return
+// ─── Scroll to top on route change ─────────────────────────────────────────
+function ScrollToTop() {
+ const { pathname } = useLocation();
+ useEffect(() => { window.scrollTo(0, 0); }, [pathname]);
+ return null;
}
-const projects = () => {
- return
-}
-const contact = () => {
- return
-}
-
-
-const App: React.FC = () => {
- const [isMobile, setIsMobile] = useState
(false);
- const [isSmol, setIsSmol] = useState(false);
+// ─── App shell ─────────────────────────────────────────────────────────────
+function AppShell() {
+ useCursor();
- useEffect(() => {
- const handleResize = () => {
-
- setIsSmol(window.innerWidth < 1000);
- };
- const userAgent = navigator.userAgent.toLowerCase();
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+
+
- setIsMobile(/iphone|ipad|ipod|android|blackberry|windows phone/.test(userAgent));
- // Attach event listener for window resize
- window.addEventListener('resize', handleResize);
+
+ >
+ );
+}
- }, []);
+export default function App() {
return (
-
-
-
- {isMobile || isSmol ? ( ) : ( )}
-
- {/* */}
- {/* */}
-
-
-
-
-
-
-
-
-
+
+
- )
+ );
}
-
-export default App
\ No newline at end of file
diff --git a/src/pages/Contact.css b/src/pages/Contact.css
new file mode 100644
index 0000000..c239594
--- /dev/null
+++ b/src/pages/Contact.css
@@ -0,0 +1,166 @@
+.contact-section {
+ padding: 120px 48px 100px;
+}
+
+.contact-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 80px;
+ margin-top: 64px;
+}
+
+.contact-info h3 {
+ font-size: 24px;
+ font-weight: 700;
+ line-height: 1.2;
+ margin-bottom: 16px;
+}
+
+.contact-info p {
+ font-family: var(--mono);
+ font-size: 13px;
+ color: var(--muted);
+ line-height: 1.8;
+ margin-bottom: 32px;
+}
+
+.contact-links {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+}
+
+.contact-link {
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ font-family: var(--mono);
+ font-size: 12px;
+ color: var(--muted);
+ transition: color 0.3s, border-color 0.3s;
+ padding: 13px 16px;
+ border: 1px solid var(--border);
+ background: var(--surface2);
+}
+
+.contact-link:hover {
+ color: var(--text);
+ border-color: var(--border-hi);
+}
+
+.contact-link-icon {
+ width: 28px;
+ height: 28px;
+ background: var(--grad);
+ opacity: 0.7;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 12px;
+ color: #fff;
+ flex-shrink: 0;
+}
+
+/* Form */
+.contact-form {
+ display: flex;
+ flex-direction: column;
+ gap: 14px;
+}
+
+.form-group {
+ display: flex;
+ flex-direction: column;
+ gap: 7px;
+}
+
+.form-label {
+ font-family: var(--mono);
+ font-size: 10px;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--muted);
+}
+
+.form-input {
+ background: var(--surface2);
+ border: 1px solid var(--border);
+ color: var(--text);
+ font-family: var(--mono);
+ font-size: 13px;
+ padding: 13px 17px;
+ outline: none;
+ transition: border-color 0.3s;
+ resize: none;
+}
+
+.form-input:focus {
+ border-color: rgba(139, 92, 246, 0.55);
+}
+
+.form-input::placeholder {
+ color: var(--lo);
+}
+
+textarea.form-input {
+ min-height: 120px;
+ resize: vertical;
+}
+
+.form-error {
+ font-family: var(--mono);
+ font-size: 11px;
+ color: #f87171;
+ padding: 8px 12px;
+ border: 1px solid rgba(248, 113, 113, 0.3);
+ background: rgba(248, 113, 113, 0.05);
+}
+
+.form-submit {
+ align-self: flex-start;
+}
+
+.form-submit:disabled {
+ opacity: 0.6;
+ cursor: not-allowed;
+}
+
+/* Success state */
+.form-success {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: 16px;
+ height: 320px;
+ border: 1px solid var(--border);
+ background: var(--surface2);
+ text-align: center;
+}
+
+.form-success-icon {
+ width: 48px; height: 48px;
+ border-radius: 50%;
+ background: var(--grad);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 20px;
+ color: white;
+}
+
+.form-success-text {
+ font-weight: 700;
+ font-size: 18px;
+}
+
+.form-success-sub {
+ font-family: var(--mono);
+ font-size: 12px;
+ color: var(--muted);
+}
+
+@media (max-width: 900px) {
+ .contact-section { padding: 80px 24px; }
+ .contact-grid { grid-template-columns: 1fr; gap: 48px; }
+}
diff --git a/src/pages/Contact.tsx b/src/pages/Contact.tsx
index f497086..33bc510 100644
--- a/src/pages/Contact.tsx
+++ b/src/pages/Contact.tsx
@@ -1,58 +1,151 @@
-import React, { useEffect, useRef, useState } from 'react';
-import '../styles/contact.css';
-import divider from '../static/vectors/contactDivider.svg';
-import cBG from '../static/vectors/contactBackground.svg';
-import Mailer from '../components/contact/Mailer';
-import Loader from '../components/Loader';
-
-
-function Contact() {
- const [cBGLoaded, setCBGLoaded] = useState(false);
- const cBGDivRef = useRef(null);
- const sElementRef = useRef(null);
-
- const[resize, isResized] = useState(false);
-
- useEffect(() => {
- if (cBGDivRef.current && sElementRef.current) {
- const divHeight = cBGDivRef.current.clientHeight;
- sElementRef.current.style.height = `${divHeight}px`;
+import React, { useRef, useState } from 'react';
+import emailjs from '@emailjs/browser';
+import { FaEnvelope, FaInstagram, FaDiscord, FaGithub } from 'react-icons/fa';
+import { useReveal } from '../hooks/useReveal';
+import './Contact.css';
+
+export default function Contact() {
+ useReveal();
+
+ const formRef = useRef(null);
+ const [sent, setSent] = useState(false);
+ const [sending, setSending] = useState(false);
+ const [error, setError] = useState('');
+
+ const handleSubmit = async (e: React.FormEvent) => {
+ e.preventDefault();
+ if (!formRef.current) return;
+
+ const name = formRef.current.querySelector('#name')?.value;
+ const email = formRef.current.querySelector('#email')?.value;
+
+ if (!name || !email) {
+ setError('Please fill out all required fields.');
+ return;
}
- }, [resize]);
-
-
- function handleResize() {
- // setCBGLoaded(false);
- isResized(!resize);
- }
- window.addEventListener('resize', handleResize);
-
- function wrapperFunction() {
- setCBGLoaded(true);
- }
-
- async function handleLoad() {
- setTimeout(wrapperFunction, 0)
- }
-
+
+ setSending(true);
+ setError('');
+
+ try {
+ await emailjs.sendForm(
+ process.env.REACT_APP_EMAILJS_SERVICE_ID!,
+ process.env.REACT_APP_EMAILJS_TEMPLATE_ID!,
+ formRef.current,
+ process.env.REACT_APP_EMAILJS_PUBLIC_KEY!
+ );
+ setSent(true);
+ } catch (err) {
+ setError('Something went wrong. Please email us directly.');
+ } finally {
+ setSending(false);
+ }
+ };
+
return (
- <>
-
- Contact Us
-
-
-
-
-
-
- {
}
+
+
+
+ Reach Out
+ Get In Touch
+
+
+
+
+
Join us. Build with us. Support us.
+
+ Whether you're a student looking to get involved, a company interested
+ in partnering, or just curious about what we're building, we want to
+ hear from you.
+
+
+
-
+
+
+ {sent ? (
+
+
✓
+
Message sent successfully.
+
We'll get back to you soon.
+
+ ) : (
+
+ )}
+
+
-
-
- >
- )
+
+
+ );
}
-
-export default Contact
diff --git a/src/pages/Homepage.css b/src/pages/Homepage.css
new file mode 100644
index 0000000..83ae3a0
--- /dev/null
+++ b/src/pages/Homepage.css
@@ -0,0 +1,250 @@
+.page-wrapper {
+ padding-top: var(--nav-height);
+ position: relative;
+ z-index: 2;
+}
+
+/* ── HERO ──────────────────────────────────────────────────── */
+.hero {
+ position: relative;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 120px 48px 100px;
+ overflow: hidden;
+}
+
+.hero-glow {
+ position: absolute;
+ top: -220px; right: -100px;
+ width: 800px; height: 800px;
+ border-radius: 50%;
+ background: radial-gradient(circle, rgba(124, 58, 237, 0.14) 0%, transparent 68%);
+ pointer-events: none;
+ animation: glowPulse 6s ease-in-out infinite alternate;
+}
+
+.hero-glow2 {
+ position: absolute;
+ bottom: -200px; left: 15%;
+ width: 700px; height: 700px;
+ border-radius: 50%;
+ background: radial-gradient(circle, rgba(236, 72, 153, 0.09) 0%, transparent 68%);
+ pointer-events: none;
+ animation: glowPulse 9s ease-in-out infinite alternate-reverse;
+}
+
+.hero-tag {
+ font-family: var(--mono);
+ font-size: 11px;
+ letter-spacing: 0.2em;
+ text-transform: uppercase;
+ color: var(--magenta);
+ margin-bottom: 28px;
+ display: flex;
+ align-items: center;
+ gap: 14px;
+ animation: fadeUp 0.8s 0.2s both;
+}
+
+.hero-tag::before {
+ content: '';
+ display: inline-block;
+ width: 40px;
+ height: 1px;
+ background: var(--grad);
+}
+
+.hero-h1 {
+ font-family: var(--display);
+ font-weight: 700;
+ font-size: clamp(58px, 9.5vw, 124px);
+ line-height: 0.91;
+ letter-spacing: -0.025em;
+ max-width: 940px;
+ animation: fadeUp 0.9s 0.35s both;
+}
+
+.grad-text {
+ font-family: var(--display);
+ font-weight: 700;
+ background: var(--grad);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+}
+
+.hero-sub {
+ font-family: var(--mono);
+ font-size: 15px;
+ line-height: 1.75;
+ color: var(--muted);
+ max-width: 500px;
+ margin-top: 32px;
+ animation: fadeUp 0.9s 0.5s both;
+}
+
+.hero-actions {
+ display: flex;
+ gap: 16px;
+ margin-top: 48px;
+ flex-wrap: wrap;
+ animation: fadeUp 0.9s 0.65s both;
+}
+
+.hero-stats {
+ display: flex;
+ gap: 48px;
+ margin-top: 80px;
+ padding-top: 48px;
+ border-top: 1px solid var(--border);
+ animation: fadeUp 0.9s 0.85s both;
+ flex-wrap: wrap;
+}
+
+.stat-num {
+ font-family: var(--display);
+ font-size: 40px;
+ font-weight: 700;
+ line-height: 1;
+ background: var(--grad);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+}
+
+.stat-label {
+ font-family: var(--mono);
+ font-size: 10px;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--muted);
+ margin-top: 6px;
+}
+
+/* ── MISSION STRIP ──────────────────────────────────────────── */
+.mission-strip {
+ border-top: 1px solid var(--border);
+ background: var(--surface);
+ padding: 80px 48px;
+}
+
+.mission-grid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 2px;
+}
+
+.mission-item {
+ background: var(--surface2);
+ border: 1px solid var(--border);
+ padding: 32px 28px;
+ transition: border-color 0.3s, transform 0.3s;
+ position: relative;
+ overflow: hidden;
+}
+
+.mission-item::before {
+ content: '';
+ position: absolute;
+ top: 0; left: 0; right: 0;
+ height: 2px;
+ background: var(--grad);
+ transform: scaleX(0);
+ transform-origin: left;
+ transition: transform 0.35s;
+}
+
+.mission-item:hover {
+ border-color: var(--border-hi);
+ transform: translateY(-4px);
+}
+
+.mission-item:hover::before {
+ transform: scaleX(1);
+}
+
+.mission-icon {
+ font-size: 1.75rem;
+ color: #8b5cf6;
+ margin-bottom: 16px;
+}
+
+.mission-title {
+ font-size: 14px;
+ font-weight: 700;
+ letter-spacing: 0.05em;
+ text-transform: uppercase;
+ margin-bottom: 8px;
+}
+
+.mission-text {
+ font-family: var(--mono);
+ font-size: 12px;
+ color: var(--muted);
+ line-height: 1.65;
+}
+
+/* ── WHERE WE MEET ──────────────────────────────────────────── */
+.meet-section {
+ border-top: 1px solid var(--border);
+ padding: 120px 48px;
+}
+
+.meet-inner {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 80px;
+ align-items: center;
+}
+
+.meet-body {
+ font-family: var(--mono);
+ font-size: 14px;
+ line-height: 1.85;
+ color: var(--muted);
+ margin: 24px 0 36px;
+ max-width: 440px;
+}
+
+.meet-body strong {
+ color: var(--text);
+ font-weight: 500;
+}
+
+.meet-actions {
+ display: flex;
+ gap: 16px;
+ flex-wrap: wrap;
+}
+
+.map-embed {
+ height: 400px;
+ border: 1px solid var(--border);
+ overflow: hidden;
+ filter: grayscale(1) invert(0.9) hue-rotate(180deg);
+ opacity: 0.8;
+ transition: opacity 0.3s;
+}
+
+.map-embed:hover {
+ opacity: 1;
+}
+
+/* ─── RESPONSIVE ────────────────────────────────────────────── */
+@media (max-width: 900px) {
+ .hero { padding: 100px 24px 70px; }
+ .hero-stats { gap: 28px; }
+ .mission-strip { padding: 60px 24px; }
+ .mission-grid { grid-template-columns: 1fr 1fr; }
+ .meet-section { padding: 80px 24px; }
+ .meet-inner { grid-template-columns: 1fr; gap: 48px; }
+ .map-embed { height: 280px; }
+}
+
+@media (max-width: 600px) {
+ .mission-grid { grid-template-columns: 1fr; }
+ .hero-actions { flex-direction: column; }
+ .meet-actions { flex-direction: column; }
+}
diff --git a/src/pages/Homepage.tsx b/src/pages/Homepage.tsx
index 6ad4503..b939f2c 100644
--- a/src/pages/Homepage.tsx
+++ b/src/pages/Homepage.tsx
@@ -1,229 +1,124 @@
import React from 'react';
-import Logo from '../static/images/logo/ECLAIR_logo2.webp';
-import '../styles/app.css';
-import ECLAIRButton from '../components/general/ECLAIRButton';
-import Loader from '../components/Loader';
-import { Slide, Fade } from '@mui/material';
-import YoutubeEmbed from '../components/YoutubeEmbed';
-import { useState, useEffect, useRef } from 'react';
import { useNavigate } from 'react-router-dom';
-import wavesHeader from '../static/vectors/waves-header.svg';
-import headerBackground from '../static/vectors/polygon-header.svg';
-import headerImage_1 from '../static/images/homepage/drone.webp';
-import headerImage_2 from '../static/images/homepage/eclair_group.webp';
-//import CalendarEmbed from '../components/CalendarEmbed';
-import SponsorRow from '../components/sponsors/SponsorRow';
-import JoinUs from '../components/general/JoinUs';
-
-function Homepage() {
- const [screenSize, setScreenSize] = useState(getCurrentDimension());
-
- function getCurrentDimension() {
- return {
- width: window.innerWidth,
- height: window.innerHeight
- }
- }
-
- useEffect(() => {
- const updateDimension = () => {
-
- setScreenSize(getCurrentDimension())
- console.log(screenSize.width);
- }
- window.addEventListener('resize', updateDimension);
-
- return (() => {
- window.removeEventListener('resize', updateDimension);
- })
- }, [])
-
- const handleClick = () => {
- navigate('/projects');
- }
+import { FaRobot, FaBrain, FaTools, FaNetworkWired } from 'react-icons/fa';
+import { useReveal } from '../hooks/useReveal';
+import './Homepage.css';
+export default function Homepage() {
+ useReveal();
const navigate = useNavigate();
- const [hBGLoaded, setHBGLoaded] = useState(false);
- const hBGDivRef = useRef
(null);
- const hElementRef = useRef(null);
-
- const [resize, isResized] = useState(false);
-
- useEffect(() => {
- if (hBGDivRef.current && hElementRef.current) {
- const divHeight = hBGDivRef.current.clientHeight;
- hElementRef.current.style.height = `${divHeight}px`;
- }
- }, [resize]);
-
-
- function handleResize() {
- // setHBGLoaded(false);
- isResized(!resize);
- }
- window.addEventListener('resize', handleResize);
-
- function wrapperFunction() {
- setHBGLoaded(true);
- }
-
- async function handleLoad() {
- setTimeout(wrapperFunction, 0)
-
- }
return (
+
+
+
+
+
+ UT Austin · CS Department · Est. 2021
+
+
+ Building the
+ machines
+ of tomorrow.
+
+
+
+ ECLAIR is UT Austin's undergraduate robotics organization, where engineers
+ learn state-of-the-art AI and turn ambitious ideas into physical robots.
+
+
+
+ navigate('/projects')}>
+ View Our Work
+
+ navigate('/contact')}>
+ Get Involved →
+
+
- <>
-
-
-
-
-
-
-
-
-
+
+
-
-
-
- Our mission is to drive innovation in AI and robotics at the undergraduate level.
-
-
-
-
+
-
-
-
-
-
+
+
500+
+
Alumni Network
+
+
-
-
-
-
- Geared Toward Helping Students Pursue Their Passion for Robotics
-
- The Engineering and Computational Learning of Artificial Intelligence in Robotics (ECLAIR) is a club at UT Austin dedicated to helping all robot-loving students to transform their passionate robotics ideas into reality. We provide the robotics parts and teach members state-of-the-art machine learning techiniques such as neural networks and reinforcement learning to give students the ability to pursue their robotics projects. If you have a cool robot you want to build, come join us!
-
-
-
-
-
-
- Situated at the Gates-Dell Complex at UT Austin - A leading Robotics and AI Institution
+ {/*
+
+
+
+
+
Build Real Robots
+
Pitch any project and get it financed and supported by ECLAIR.
-
- Come find us every Monday and Thursday from 6 to 8 PM at the Gates-Dell Complex at UT Austin. Here, there is a wide range of robotics research, from surgical robotics to autonomous driving to artificial assistants. In ECLAIR, students can take advantage of all the resources at UT to explore their interests in robotics.
+
+
+
Learn Modern ML
+
Workshops on RL, deep learning, computer vision, and ROS2.
-
-
-
-
-
-
-
- Our Members enjoy access to State of the Art Facilities!
+
+
+
World-Class Facilities
+
Anna Hiss Gym, UT Makerspace, and GDC labs at your fingertips.
-
- Partnering with the Anna Hiss Gymnasium and UT Austin Makerspace, ECLAIR helps provide resources that students need to create and test their AI algorithms on physical robots. Our members are free to pitch any project they want to build and get it financed by ECLAIR.
+
+
+
Industry Pipeline
+
Direct connections to internships and roles at leading robotics companies.
-
-
-
+ */}
+
+
+
+
Find Us
+
Gates-Dell Complex, UT Austin.
+
+ We meet every Monday and Thursday, 6–8 PM in the GDC.
+ Drop in and start building.
+
+
+
-
-
-
-
-
- {/* This entire div is just a vector that contains the blob, a rectangle, and text at the bottom of the homepage */}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ECLAIR
-
-
-
-
-
-
-
-
-
- {/*
-
*/}
-
- >
+
);
}
-
-export default Homepage;
diff --git a/src/pages/News.css b/src/pages/News.css
new file mode 100644
index 0000000..c2b8c9f
--- /dev/null
+++ b/src/pages/News.css
@@ -0,0 +1,30 @@
+.news-section {
+ padding: 120px 48px 100px;
+}
+
+.news-sub {
+ font-family: var(--mono);
+ font-size: 14px;
+ color: var(--muted);
+ line-height: 1.75;
+ margin-top: 24px;
+ max-width: 620px;
+}
+
+.news-sub a {
+ color: var(--violet);
+ transition: color 0.2s;
+}
+
+.news-sub a:hover {
+ color: var(--pink);
+}
+
+.news-embed {
+ margin-top: 56px;
+ min-height: 400px;
+}
+
+@media (max-width: 900px) {
+ .news-section { padding: 80px 24px; }
+}
diff --git a/src/pages/News.tsx b/src/pages/News.tsx
new file mode 100644
index 0000000..75a0385
--- /dev/null
+++ b/src/pages/News.tsx
@@ -0,0 +1,45 @@
+import React, { useEffect } from 'react';
+import { useReveal } from '../hooks/useReveal';
+import './News.css';
+
+declare global {
+ interface Window {
+ __bhldScript?: boolean;
+ }
+}
+
+function loadBeholdScript() {
+ if (window.__bhldScript) return;
+ window.__bhldScript = true;
+ const script = document.createElement('script');
+ script.type = 'module';
+ script.src = 'https://w.behold.so/widget.js';
+ setTimeout(() => { document.head.append(script); }, 0);
+}
+
+export default function News() {
+ useReveal();
+ useEffect(() => { loadBeholdScript(); }, []);
+
+ return (
+
+
+
+ Stay Connected
+ ECLAIR News
+
+ Follow{' '}
+
+ @eclairrobotics
+ {' '}
+ to keep up to date with events, robots, and opportunities.
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/pages/Projects.css b/src/pages/Projects.css
new file mode 100644
index 0000000..1fbf6b3
--- /dev/null
+++ b/src/pages/Projects.css
@@ -0,0 +1,233 @@
+.projects-section {
+ padding: 120px 48px 100px;
+}
+
+.projects-header {
+ margin-bottom: 0;
+}
+
+.filter-bar {
+ display: flex;
+ gap: 12px;
+ margin: 32px 0 48px;
+}
+
+.filter-btn {
+ font-family: var(--mono);
+ font-size: 12px;
+ font-weight: 700;
+ letter-spacing: 0.12em;
+ text-transform: uppercase;
+ color: var(--text);
+ background: transparent;
+ border: 1px solid var(--border);
+ padding: 14px 24px;
+ transition: border-color 0.2s, background 0.2s, color 0.2s;
+}
+
+.filter-btn:hover {
+ border-color: var(--magenta);
+ color: var(--magenta);
+}
+
+.filter-btn--active {
+ border-color: var(--magenta);
+ color: var(--magenta);
+}
+
+.tag-filter-bar {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ align-items: center;
+ margin-bottom: 48px;
+}
+
+.tag-filter-btn {
+ font-family: var(--mono);
+ font-size: 10px;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ padding: 6px 14px;
+ border: 1px solid var(--border);
+ color: var(--muted);
+ background: transparent;
+ transition: all 0.2s;
+}
+
+.tag-filter-btn:hover {
+ border-color: rgba(139, 92, 246, 0.5);
+ color: var(--violet);
+}
+
+.tag-filter-btn--active {
+ border-color: var(--border-hi);
+ color: white;
+ background: var(--grad);
+}
+
+.tag-filter-clear {
+ font-family: var(--mono);
+ font-size: 10px;
+ letter-spacing: 0.08em;
+ color: var(--pink);
+ padding: 6px 8px;
+}
+
+.tag-filter-clear:hover {
+ color: var(--magenta);
+}
+
+.projects-empty {
+ font-family: var(--mono);
+ font-size: 13px;
+ color: var(--muted);
+ padding: 40px 0;
+}
+
+.projects-grid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 2px;
+}
+
+.project-card {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ padding: 36px 32px 56px;
+ position: relative;
+ overflow: hidden;
+ transition: border-color 0.3s;
+}
+
+.project-card::before {
+ content: '';
+ position: absolute;
+ top: 0; left: 0; right: 0;
+ height: 2px;
+ background: var(--grad);
+ transform: scaleX(0);
+ transform-origin: left;
+ transition: transform 0.4s;
+}
+
+.project-card:hover::before { transform: scaleX(1); }
+.project-card:hover { border-color: var(--border-hi); }
+
+.project-num {
+ font-family: var(--mono);
+ font-size: 10px;
+ color: var(--magenta);
+ letter-spacing: 0.15em;
+ margin-bottom: 10px;
+}
+
+.project-status {
+ display: inline-block;
+ font-family: var(--mono);
+ font-size: 9px;
+ letter-spacing: 0.12em;
+ text-transform: uppercase;
+ padding: 3px 9px;
+ margin-bottom: 14px;
+}
+
+.project-status--active {
+ border: 1px solid rgba(79, 127, 255, 0.35);
+ color: #7da6ff;
+ background: rgba(79, 127, 255, 0.07);
+}
+
+.project-status--completed {
+ border: 1px solid rgba(40, 200, 100, 0.3);
+ color: #5be49b;
+ background: rgba(40, 200, 100, 0.07);
+}
+
+.project-name {
+ font-size: 21px;
+ font-weight: 700;
+ margin-bottom: 12px;
+ line-height: 1.15;
+}
+
+.project-desc {
+ font-family: var(--mono);
+ font-size: 12px;
+ color: var(--muted);
+ line-height: 1.75;
+ margin-bottom: 20px;
+}
+
+.project-tags {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 6px;
+ margin-bottom: 16px;
+}
+
+.tag {
+ font-family: var(--mono);
+ font-size: 10px;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ padding: 4px 11px;
+ border: 1px solid var(--border);
+ color: var(--muted);
+}
+
+.project-leads {
+ font-family: var(--mono);
+ font-size: 10px;
+ color: var(--lo);
+ letter-spacing: 0.06em;
+ margin-bottom: 8px;
+ color: var(--text);
+}
+
+.project-leads::before {
+ content: 'Lead: ';
+ color: var(--muted);
+}
+
+.project-ext-links {
+ display: flex;
+ gap: 12px;
+}
+
+.project-ext-link {
+ font-family: var(--mono);
+ font-size: 10px;
+ letter-spacing: 0.08em;
+ color: var(--violet);
+ transition: color 0.2s;
+}
+
+.project-ext-link:hover { color: var(--pink); }
+
+.project-arrow {
+ position: absolute;
+ bottom: 28px;
+ right: 28px;
+ font-size: 18px;
+ color: var(--border);
+ transition: color 0.3s, transform 0.3s;
+}
+
+.project-card:hover .project-arrow {
+ color: var(--pink);
+ transform: translate(4px, -4px);
+}
+
+.projects-grid .reveal {
+ opacity: 1 !important;
+ transform: none !important;
+}
+@media (max-width: 900px) {
+ .projects-section { padding: 80px 24px; }
+ .projects-grid { grid-template-columns: 1fr 1fr; }
+}
+
+@media (max-width: 600px) {
+ .projects-grid { grid-template-columns: 1fr; }
+}
diff --git a/src/pages/Projects.tsx b/src/pages/Projects.tsx
index 9f3e0ed..dd9a34c 100644
--- a/src/pages/Projects.tsx
+++ b/src/pages/Projects.tsx
@@ -1,248 +1,111 @@
-import React from 'react';
-import {useState, useRef, useEffect} from 'react';
-import '../styles/projects/projects.css';
-import ProjectCard from '../components/projects/ProjectCard';
-import ProjectFilter from '../components/projects/ProjectFilter';
-import ResourcesCard from '../components/projects/ResourcesCard';
-import ProjectPopup from '../components/projects/ProjectPopup';
-import Loader from '../components/Loader';
+import React, { useState } from 'react';
+import { useReveal } from '../hooks/useReveal';
+import { PROJECTS, Project } from '../data/projects';
+import './Projects.css';
-import pcrVid from '../static/videos/pcrTest.gif';
+type Filter = 'all' | 'active' | 'completed';
+const ALL_TAGS = Array.from(new Set(PROJECTS.flatMap((p) => p.tags))).sort();
-import { PROJECT_KEYS, PROJECT_NAMES, PROJECT_IMAGES, PROJECT_TEAM_PAGES, PROJECT_CODEBASES, PROJECT_DESCRIPTIONS, FINISHED_PROJECTS, ONGOING_PROJECTS, PROJECT_VIDEOS, PROJECT_SLIDESHOWS} from '../static/constants/Projects';
-import { TECH_LEAD_NAMES } from '../static/constants/About';
+export default function Projects() {
+ const [filter, setFilter] = useState('all');
+ const [activeTags, setActiveTags] = useState([]);
-import cv from '../static/images/lectures/cv.webp';
-import deepLearning from '../static/images/lectures/deepLearning.webp';
-import cvIntro from '../static/images/lectures/introToCV.webp';
-import mlIntro from '../static/images/lectures/introToML.webp';
-import rlIntro from '../static/images/lectures/introToRL.webp';
-import qL from '../static/images/lectures/qL.webp';
-import markov from '../static/images/lectures/markovModelFree.webp';
-
-
-import projectTransHead from '../static/vectors/projectHeaderTransition.svg';
-import temp from '../static/vectors/projectBackground.svg';
-
-
-
-function Projects() {
- const [showPopup, setShowPopup] = useState(false);
- const [cardInfo, setCardInfo] = useState<{
- id: number;
- img: string;
- name: string;
- lName: string;
- members: string;
- desc?: string;
- git: string;
- gantt: string;
- SliderData ?: Array;
- rect?: DOMRect;
- }>({
- id: 0,
- img: "",
- name: "Dummy Name",
- lName: "Dummy Last Name",
- members: "Dummy Members",
- desc: "Dummy Description",
- git: "https://github.com/dummy",
- gantt: "https://dummy.com/gantt",
- rect: new DOMRect(10, 20, 30, 40)
- });
-
-
- const handleOpenPopup = (info : {
- id: number;
- img: string;
- name: string;
- lName: string;
- members: string;
- desc?: string;
- git: string;
- gantt: string;
- SliderData ?: Array;
- }, ClientRect : DOMRect | undefined) => {
- setCardInfo({...info, rect: ClientRect});
- setShowPopup(true);
- console.log(ClientRect);
- };
-
- const handleClosePopup = () => {
- setShowPopup(false);
+ const toggleTag = (tag: string) => {
+ setActiveTags((prev) =>
+ prev.includes(tag) ? prev.filter((t) => t !== tag) : [...prev, tag]
+ );
};
- const MLData = [
- {
- id: 100,
- name : 'Computer Vision and Deep Q Learning',
- img : cv ,
- link: 'https://docs.google.com/presentation/d/1E0I_jpDuo3InZgVY09Y_CuMULSV6ivXKMwIHtpYaibI/edit?usp=sharing'
- },
- {
- id : 99,
- name : 'Deep Learning',
- img : deepLearning ,
- link: 'https://docs.google.com/presentation/d/14xJvQWdyEbCfhtOw9rDB0D9fre4sfTTEozrbnPKXTdQ/edit?usp=sharing'
- },
- {
- id : 98,
- name : 'Intro to Computer Vision',
- img : cvIntro ,
- link: 'https://docs.google.com/presentation/d/13ZllB7QOsSzvGN76JujV0NKRovjCL5EI1GnVKJK1Bss/edit?usp=sharing'
- },
- {
- id : 97,
- name : 'Intro to Machine Learning',
- img : mlIntro,
- link : 'https://docs.google.com/presentation/d/1faTl-GikKtQH4NQ8ZQqSYvJYA-5l-EdlEbioTP6G0kI/edit?usp=sharing'
- },
- {
- id : 96,
- name : 'Intro to Reinforcement Learning',
- img : rlIntro,
- link : 'https://docs.google.com/presentation/d/1z2ItVMJxIbRFmlTMc_EnbV_Rkl_XM0YXgNn0G_MD-FY/edit?usp=sharing'
- },
- {
- id : 95,
- name : 'Q-Learning',
- img : qL,
- link : 'https://docs.google.com/presentation/d/1VEJUk3_Sf1wC-RRmQxsi5HooLLMD0V_doVKPRyrr9W0/edit?usp=sharing'
- },
- {
- id : 94,
- name : 'Markov Decision Processes & Model-Free Methods',
- img : markov ,
- link: 'https://docs.google.com/presentation/d/1mCNnuxMEcQ9zPQJO4LZ14VRzMCkMAqkjmGqCErXx26s/edit?usp=sharing'
- }
- ];
+ const visible = PROJECTS.filter(
+ (p) =>
+ (filter === 'all' || p.status === filter) &&
+ (activeTags.length === 0 || activeTags.some((t) => p.tags.includes(t)))
+ );
- function handleSlideClick(link : string | URL | undefined): void {
- window.open(link, '_blank');
- }
-
- const [curFilter, setCurFilter] = useState("inprogress");
- const [filteredKeys, setFilteredKeys] = useState(ONGOING_PROJECTS);
-
- const cardLocations = useRef>([]);
-
- useEffect(() => {
- console.log("Filter changed to: ", curFilter);
- if (curFilter === "all") {
- setFilteredKeys(PROJECT_KEYS);
- console.log("All keys: ", PROJECT_KEYS);
- } else if (curFilter === "inprogress") {
- setFilteredKeys(ONGOING_PROJECTS);
- console.log("Ongoing keys: ", ONGOING_PROJECTS);
- } else if (curFilter === "completed") {
- setFilteredKeys(FINISHED_PROJECTS);
- console.log("Finished keys: ", FINISHED_PROJECTS);
- }
-
- console.log("Filtered keys: ", filteredKeys);
- cardLocations.current = cardLocations.current.slice(0, filteredKeys.length);
- handleResize();
-
- }, [curFilter]);
-
- const [pBGLoaded, setPBGLoaded] = useState(false);
- const pBGDivRef = useRef(null);
- const pElementRef = useRef(null);
-
- const[resize, isResized] = useState(false);
+ return (
+
+
+
+
+
What We Build
+
Projects
+
+ {(['all', 'active', 'completed'] as Filter[]).map((f) => (
+ setFilter(f)}
+ >
+ {f === 'all' ? 'All' : f === 'active' ? 'Active' : 'Completed'}
+
+ ))}
+
+
- useEffect(() => {
- if (pBGDivRef.current && pElementRef.current) {
- const divHeight = pBGDivRef.current.clientHeight;
- pElementRef.current.style.height = `${divHeight}px`;
- }
- }, [resize]);
+
+ {ALL_TAGS.map((tag) => (
+ toggleTag(tag)}
+ >
+ {tag}
+
+ ))}
+ {activeTags.length > 0 && (
+ setActiveTags([])}>
+ Clear ×
+
+ )}
+
-
- function handleResize() {
- isResized(!resize);
- }
- window.addEventListener('resize', handleResize);
-
- function wrapperFunction() {
- setPBGLoaded(true);
- }
+ {visible.length === 0 && (
+ No projects match the selected filters.
+ )}
- async function handleLoad() {
- setTimeout(wrapperFunction, 200)
- }
+
+ {visible.map((project, i) => (
+
+ ))}
+
+
+
+ );
+}
+function ProjectCard({ project, delay }: { project: Project; delay: number }) {
return (
-
-
- What We Do
+
+
+
{project.num} · {project.category}
+
+ {project.status === 'active' ? 'Active' : 'Completed'}
+
+
{project.name}
+
{project.description}
+
+ {project.tags.map((tag) => (
+ {tag}
+ ))}
+
+
+ {project.leads.join(' · ')}
+
+
+
↗
-
-
-
-
Projects
-
-
-
- {filteredKeys.map((key, index) => {
- const techLeads = Object.entries(TECH_LEAD_NAMES)
- .filter(([leadKey]) => leadKey.startsWith(key))
- .map(([, name]) => name)
- .join(", ");
-
- return (
-
(cardLocations.current[index] = el)}
- onOpenPopup={() =>
- handleOpenPopup(
- {
- id: index,
- name: PROJECT_NAMES[key],
- img: PROJECT_IMAGES[key],
- lName: techLeads,
- members: "",
- desc: PROJECT_DESCRIPTIONS[key],
- git: PROJECT_CODEBASES[key],
- gantt: PROJECT_TEAM_PAGES[key],
- SliderData: PROJECT_SLIDESHOWS[key],
- },
- cardLocations.current[index]?.getBoundingClientRect()
- )
- }
- />
- );
- })}
-
-
-
-
-
-
-
-
Machine Learning Resources
-
-
- {MLData.map((card, index) => (
- handleSlideClick(card.link)}
- />
- ))}
-
-
-
-
-
-
- )
-}
-
-export default Projects
+ );
+}
\ No newline at end of file
diff --git a/src/pages/Sponsors.css b/src/pages/Sponsors.css
new file mode 100644
index 0000000..aa30f64
--- /dev/null
+++ b/src/pages/Sponsors.css
@@ -0,0 +1,158 @@
+.sponsors-section {
+ padding: 120px 48px 100px;
+}
+
+.sponsors-header {
+ margin-bottom: 64px;
+}
+
+.sponsor-inner {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ padding: 72px 64px;
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 64px;
+ align-items: start;
+}
+
+.sponsor-pitch {
+ font-size: clamp(24px, 3vw, 36px);
+ font-weight: 700;
+ line-height: 1.1;
+ margin-bottom: 20px;
+ color: var(--magenta);
+}
+
+.sponsor-inner > div > p:not(.sponsor-note) {
+ font-family: var(--mono);
+ font-size: 13px;
+ color: var(--text);
+ line-height: 1.8;
+ margin-bottom: 16px;
+}
+
+.current-sponsors {
+ display: flex;
+ gap: 32px;
+ flex-wrap: wrap;
+ align-items: center;
+ margin-top: 36px;
+ padding-top: 36px;
+ border-top: 1px solid var(--border);
+}
+
+.current-sponsors-label {
+ font-family: var(--mono);
+ font-size: 14px;
+ font-weight: 700;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--magenta);
+ width: 100%;
+}
+
+.sponsor-name {
+ font-family: var(--display);
+ font-weight: 700;
+ font-size: 15px;
+ color: var(--text);
+ letter-spacing: 0.05em;
+ transition: color 0.2s;
+}
+
+.sponsor-name:hover { color: var(--magenta); }
+
+/* Tiers */
+.sponsor-tiers {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 2px;
+}
+
+.tier {
+ padding: 28px 20px;
+ border: 1px solid var(--border);
+ background: var(--surface2);
+ transition: border-color 0.3s, transform 0.3s;
+ position: relative;
+ overflow: hidden;
+}
+
+.tier::before {
+ content: '';
+ position: absolute;
+ top: 0; left: 0; right: 0;
+ height: 2px;
+ background: var(--grad);
+ transform: scaleX(0);
+ transform-origin: left;
+ transition: transform 0.35s;
+}
+
+.tier:hover {
+ border-color: var(--border-hi);
+ transform: translateY(-4px);
+}
+
+.tier:hover::before { transform: scaleX(1); }
+
+.tier-name {
+ font-family: var(--mono);
+ font-size: 10px;
+ letter-spacing: 0.18em;
+ text-transform: uppercase;
+ color: var(--text);
+ margin-bottom: 6px;
+}
+
+.tier-label {
+ font-family: var(--display);
+ font-size: 20px;
+ font-weight: 700;
+ background: var(--grad);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ margin-bottom: 16px;
+}
+
+.tier-perks {
+ list-style: none;
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+}
+
+.tier-perks li {
+ font-family: var(--mono);
+ font-size: 11px;
+ color: var(--muted);
+ line-height: 1.5;
+ display: flex;
+ gap: 8px;
+}
+
+.tier-perks li::before {
+ content: '→';
+ color: var(--violet);
+ flex-shrink: 0;
+}
+
+.sponsor-note {
+ font-family: var(--mono);
+ font-size: 12px;
+ color: var(--muted);
+ margin-top: 20px;
+ line-height: 1.65;
+}
+
+@media (max-width: 900px) {
+ .sponsors-section { padding: 80px 24px; }
+ .sponsor-inner { grid-template-columns: 1fr; padding: 40px 28px; gap: 40px; }
+ .sponsor-tiers { grid-template-columns: 1fr 1fr; }
+}
+
+@media (max-width: 500px) {
+ .sponsor-tiers { grid-template-columns: 1fr; }
+}
diff --git a/src/pages/Sponsors.tsx b/src/pages/Sponsors.tsx
index e31fea3..993854e 100644
--- a/src/pages/Sponsors.tsx
+++ b/src/pages/Sponsors.tsx
@@ -1,145 +1,112 @@
+import React from 'react';
+import { useReveal } from '../hooks/useReveal';
+import './Sponsors.css';
-import '../styles/sponsors/sponsors.css';
-import spon from '../static/vectors/sponsorsDivider.svg';
-import bg from '../static/vectors/sponsorsBackground.svg';
+export default function Sponsors() {
+ useReveal();
-import Loader from '../components/Loader';
-
-import phone from '../static/images/sponsor-images/phoneIcon1.webp';
-import email from '../static/images/sponsor-images/emailIcon1.webp';
-import form from '../static/images/sponsor-images/formIcon.webp';
-import React, { useEffect, useRef, useState } from 'react';
-//import SponsorPackageRow from '../components/SponsorPackageRow';
-import SponsorRow from '../components/sponsors/SponsorRow';
-import ContactInformationContainer from '../components/general/ContactInformationContainer';
-
-function Sponsors() {
-
- // const [isVisible, setIsVisible] = useState(false);
- // const elementRef = useRef(null);
-
- // useEffect(() => {
- // const observer = new IntersectionObserver((entries) => {
- // const [entry] = entries;
- // setIsVisible(entry.isIntersecting);
-
- // if (entry.isIntersecting) {
- // observer.unobserve(entry.target);
- // }
- // });
- // if (elementRef.current) {
- // observer.observe(elementRef.current);
- // }
- // return () => {
- // if (elementRef.current) {
- // observer.unobserve(elementRef.current);
- // }
- // };
- // }, []);
-
- const [isElementVisible, setElementVisible] = useState(false);
- const targetElementRef = useRef(null);
-
-
- useEffect(() => {
- const observer = new IntersectionObserver((entries) => {
- const [entry] = entries;
- setElementVisible(entry.isIntersecting);
-
- if (entry.isIntersecting) {
- observer.unobserve(entry.target);
- }
- });
- if (targetElementRef.current) {
- observer.observe(targetElementRef.current);
- }
- return () => {
- if (targetElementRef.current) {
- observer.unobserve(targetElementRef.current);
- }
- };
- }, []);
-
- const [sBGLoaded, setSBGLoaded] = useState(false);
- const bgDivRef = useRef(null);
- const sElementRef = useRef(null);
-
- const[resize, isResized] = useState(false);
-
- useEffect(() => {
- if (bgDivRef.current && sElementRef.current) {
- const divHeight = bgDivRef.current.clientHeight;
- sElementRef.current.style.height = `${divHeight}px`;
- }
- }, [resize]);
-
-
- function handleResize() {
- // setSBGLoaded(false);
- isResized(!resize);
- }
- window.addEventListener('resize', handleResize);
-
- function wrapperFunction() {
- setSBGLoaded(true);
- }
-
- async function handleLoad() {
- setTimeout(wrapperFunction, 0)
-
- }
-
return (
-
-
Current Sponsors
-
-
-
-
-
-
-
-
- {/*
*/}
-
-
- {/*
*/}
-
- We are always trying to provide our members with the most cutting-edge robotics hardware available and would greatly appreciate any potential sponsorships. If you are interested in sponsoring UT ECLAIR, please contact us at the email below and we can send you our sponsor packet!
-
+
+
+
+
+
Partner With Us
+
Sponsors & Supporters
+
+
+
+
+
+ Invest in the next generation of roboticists.
+
+
+ ECLAIR builds a direct pipeline from UT Austin's CS program to the
+ robotics industry. Our sponsors get early access to talented,
+ project-tested engineers before they hit the job market.
+
+
+ Your support funds hardware, demos, and the infrastructure that let
+ students build things that matter.
+
+
+ Become a Sponsor →
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ Custom partnership packages available. Reach out to discuss what works
+ best for your organization.
+
-
-
-
+
+
+
);
}
-export default Sponsors
-
+function TierCard({ name, label, perks }: { name: string; label: string; perks: string[] }) {
+ return (
+
+
{name}
+
{label}
+
+ {perks.map((p) => {p} )}
+
+
+ );
+}
diff --git a/src/static/constants/About.ts b/src/static/constants/About.ts
index 616d589..f421fef 100644
--- a/src/static/constants/About.ts
+++ b/src/static/constants/About.ts
@@ -31,7 +31,7 @@ export const OFFICER_KEYS = [
"PR",
"TECHNOLOGY",
"FINANCIAL",
-// "FRESHMAN_REP",
+ "FRESHMAN_REP",
];
export const OFFICER_POSITIONS: { [key: string]: string } = {
@@ -43,7 +43,7 @@ export const OFFICER_POSITIONS: { [key: string]: string } = {
PR: "Public Relations Director",
TECHNOLOGY: "Technology Director",
FINANCIAL: "Financial Director",
- // FRESHMAN_REP: "Freshman Representative"
+ FRESHMAN_REP: "Freshman Representative"
}
export const OFFICER_NAMES: { [key: string]: string } = {
diff --git a/src/static/images/logo/E.png b/src/static/images/logo/E.png
new file mode 100644
index 0000000..79260b9
Binary files /dev/null and b/src/static/images/logo/E.png differ
diff --git a/src/static/images/officer/annika.webp b/src/static/images/officer/annika.webp
new file mode 100644
index 0000000..90b5a2a
Binary files /dev/null and b/src/static/images/officer/annika.webp differ
diff --git a/src/static/images/officer/cameronProfessional.webp b/src/static/images/officer/cameronProfessional.webp
index ce5211d..33ff2d7 100644
Binary files a/src/static/images/officer/cameronProfessional.webp and b/src/static/images/officer/cameronProfessional.webp differ
diff --git a/src/static/images/officer/ethan.webp b/src/static/images/officer/ethan.webp
new file mode 100644
index 0000000..8f7010f
Binary files /dev/null and b/src/static/images/officer/ethan.webp differ
diff --git a/src/static/images/officer/nithya.webp b/src/static/images/officer/nithya.webp
new file mode 100644
index 0000000..3907138
Binary files /dev/null and b/src/static/images/officer/nithya.webp differ
diff --git a/src/static/images/officer/shreya.webp b/src/static/images/officer/shreya.webp
new file mode 100644
index 0000000..a83493a
Binary files /dev/null and b/src/static/images/officer/shreya.webp differ
diff --git a/src/static/images/officer/vidyaProfessional.webp b/src/static/images/officer/vidyaProfessional.webp
new file mode 100644
index 0000000..319aec5
Binary files /dev/null and b/src/static/images/officer/vidyaProfessional.webp differ
diff --git a/src/styles/about/about.css b/src/styles/about/about.css
deleted file mode 100644
index 80df4d8..0000000
--- a/src/styles/about/about.css
+++ /dev/null
@@ -1,327 +0,0 @@
-.aboutSectionHeader {
- height: fit-content;
- padding-top: 5rem;
- padding-bottom: 0rem;
- /* border: 1px solid pink; */
- /* display: flex; */
- text-align: center;
- font-size: 5em;
- font-weight: bold;
- color: white;
- background-color: #2d3549;
-}
-
-.sectionTitle {
- color: white;
- font-size: 4em;
-
-}
-
-
-
-.aboutContainer {
- display: flex;
- flex-direction: column;
- flex-wrap: wrap;
- justify-content: center;
- align-items: center;
- align-content: center;
- width: 100%;
- height: 100%;
-}
-
-.cardContainer {
- display: flex;
- align-items: column;
- justify-content: center;
- width: 100%;
- max-height: 50em;
-}
-
-.cardContainerFounder {
- display: flex;
- align-items: center;
- justify-content: center;
- width: fit-content;
- width: 40em;
- height: 40em;
- flex-direction: column;
- flex-wrap: wrap;
-
- align-content: space-around;
-}
-
-@keyframes slide-in {
- from {
- transform: translateX(-100%);
- }
-
- to {
- transform: translateX(0);
- }
-}
-
-@media screen and (max-width: 900px) {
- .cardContainerFounder {
- display: flex;
- align-items: column;
- justify-content: center;
- max-width: 100%;
- max-height: 100%;
- }
-
- .locationInstructionsTitle {
- margin-left: 10%;
- font-size: 3rem;
- padding-right: 10%;
- }
-
-}
-
-.aboutUsFoundersSection {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- justify-content: center;
- align-items: center;
- align-content: center;
- width: 100%;
- height: 100%;
- padding-top: 10em;
- padding-bottom:5em;
- background: #2d3549;
-}
-
-.box1_5-textRight {
- height: 30em;
- display: flex;
- align-items: center;
- justify-content: center;
- text-align: left;
- margin: 10%;
- font-family: 'Poppins', sans-serif;
- font-size: 1rem;
- line-height: 1.8;
- color: gray;
-}
-
-.embeddedGoogleMap {
- height: 30em;
- width: 100%;
- border-radius: 1em;
- position: relative;
- box-shadow: 10px 10px 5px #191e28;
-}
-
-.discordSVG {
- display: flex;
- scale: 0.5;
- transform: translateX(30%);
- justify-content: center;
- align-items: center;
-
-}
-
-.discordSVG path {
- animation: rave 1s ease-in-out infinite alternate;
-}
-
-@keyframes rave {
- 0% {
- fill: #c675ff;
-
- }
-
- 100% {
- fill: #0050c7;
-
- }
-}
-
-.joiningInstructionsEncloser {
- display: flex;
- flex-direction: column;
- flex-wrap: nowrap;
- align-content: center;
- justify-content: center;
-}
-
-.joinInstructions {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- text-align: center;
- margin: 10%;
- font-family: 'Poppins', sans-serif;
- font-size: 1rem;
- line-height: 1.8;
- color: gray;
-}
-
-.officerGridHolder {
- width: 100%;
-}
-
-#aboutus-howtoJoin {
- justify-content: center;
- font-size: 3em;
-}
-
-.locationInstructions {
- display: flex;
- align-items: center;
- justify-content: left;
- text-align: left;
- margin-left: 10%;
- font-family: 'Poppins', sans-serif;
- font-size: 2rem;
- line-height: 1.8;
- color: gray;
-}
-
-#embeddedMapHolder {
- height: 30em;
-}
-
-.locationInstructionsTitle {
- display: flex;
- align-items: center;
- justify-content: left;
- text-align: left;
- margin-top: 10%;
- margin-left: 10%;
- font-family: 'Poppins', sans-serif;
- font-size: 4rem;
- color: gray;
-}
-
-#boldText {
- font-weight: bold;
- color: white;
- text-align: left;
-}
-
-@media screen and (max-width: 1000px) {
-
-}
-
-.discordLogo {
- margin-top: 0.5rem;
- max-width: 4rem;
- max-height: 4rem;
- padding-top: 1em;
-}
-
-.foundersSectionOverride {
- padding-bottom: 10em;
-}
-
-/* Everything After this is divider css */
-
-.custom-shape-divider-bottom-1684440846 {
- position: relative;
- bottom: 0;
- left: 0;
- width: 100%;
- overflow: hidden;
- line-height: 0;
-}
-
-.custom-shape-divider-bottom-1684440846 svg {
- position: relative;
- display: block;
- width: calc(123% + 1.3px);
- height: 150px;
-}
-
-.custom-shape-divider-bottom-1684440846 .shape-fill {
- fill: #191e28;
-}
-
-.custom-shape-divider-bottom-1684603760 {
- position: relative;
- bottom: 0;
- left: 0;
- width: 100%;
- overflow: hidden;
- line-height: 0;
- transform: rotate(180deg);
-
-}
-
-
-.custom-shape-divider-bottom-1684603760 svg {
- position: relative;
- display: block;
- width: calc(135% + 1.3px);
- height: 100px;
- /* animation: divider 3s ease-in-out infinite alternate; */
-}
-
-.custom-shape-divider-bottom-1684603760 .shape-fill {
- fill: #2D3549;
-}
-
-#wave3 {
- animation: divider 3s ease-in-out infinite alternate;
-}
-
-#wave2 {
- animation: divider2 3s ease-in-out infinite alternate;
-}
-
-@keyframes divider {
- 0% {
-
- d: path("M0,0V5.63C14,59,314.09,71.32,475.83,42.57c43-7.64,84.23-20.12,127.61-26.46,59-8.63,112.48,12.24,165.56,35.4C827.93,77.22,886,95.24,951.2,90c86.53-7,172.46-45.71,248.8-84.81V0Z")
- }
-
- 50% {
-
- d: path("M 0 0 V 5.63 C 14 59 151 132 449 42 c 43 -7.64 84.23 -20.12 127.61 -26.46 c 59 -8.63 112.48 12.24 165.56 35.4 C 827.93 77.22 886 95.24 951.2 90 c 86.53 -7 172.46 -45.71 248.8 -84.81 V 0 Z")
- }
-
- 100% {
-
- d: path("M 0 0 V 5.63 C 14 59 380 81 449 42 c 43 -7.64 84.23 -20.12 168 -23 c 59 -8.63 112.48 12.24 202 48 C 898 92 886 95.24 991 88 c 86.53 -7 172.46 -45.71 248.8 -84.81 V 0 Z")
- }
-}
-
-
-@keyframes divider2 {
- 0% {
-
- d: path("M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z")
- }
-
- 50% {
-
- d: path("M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z")
- }
-
- 100% {
-
- d: path("M 0 0 V 15.81 C 13 36.92 27.64 56.86 48 71 C 79 85 191 101 233 91 c 31.15 -10.15 61.42 -22.58 90 -33 c 40.92 -19 87 -35 132 -39 c 36.26 -2.85 70.9 9.42 98.6 31.56 c 31.77 25.39 63.4 44.44 104.4 52.44 c 40.44 10.79 81.35 -6.69 119.13 -24.28 s 75.16 -39 116.92 -43.05 c 59.73 -5.85 113.28 22.88 168.9 38.84 c 30.2 8.66 59 6.17 87.09 -7.5 c 22.43 -10.89 48 -26.93 60.65 -49.24 V 0 Z")
- }
-}
-
-.custom-shape-divider-bottom-1684840350 {
- position: relative;
- bottom: 0;
- left: 0;
- width: 100%;
- overflow: hidden;
- line-height: 0;
-}
-
-.custom-shape-divider-bottom-1684840350 svg {
- position: relative;
- display: block;
- width: calc(100% + 1.3px);
- height: 230px;
-}
-
-.custom-shape-divider-bottom-1684840350 .shape-fill {
- fill: #191E28;
-}
\ No newline at end of file
diff --git a/src/styles/about/officerCard.css b/src/styles/about/officerCard.css
deleted file mode 100644
index c4e853e..0000000
--- a/src/styles/about/officerCard.css
+++ /dev/null
@@ -1,159 +0,0 @@
-:root {
- --standard-gap: 0.5em;
- --card-closed-height: 25em;
- --card-extended-height: 50em;
-}
-
-.cardContainer {
- display: flex;
- align-items: center;
- justify-content: center;
- width: fit-content;
- height: 40em;
- flex-direction: column;
- flex-wrap: wrap;
- padding-top: 10em;
- align-content: space-around;
-}
-
-.baseOfficerCard {
- border-radius: 1em;
- background: white;
- background: linear-gradient(to right, #c675ff, #0050c7);
- min-width: 20em;
- max-width: 20em;
- height: var(--card-closed-height);
- position: absolute;
- overflow: hidden;
- font-family: 'Montserrat', sans-serif;
- animation: close 0.5s ease;
-}
-
-.baseOfficerCard.open {
- animation: extend 0.5s ease;
- height: var(--card-extended-height);
-}
-
-@keyframes extend {
- 0% {
- height: var(--card-closed-height);
- }
- 100% {
- height: var(--card-extended-height);
- }
-}
-
-@keyframes close {
- 0% {
- height: var(--card-extended-height);
- }
- 100% {
- height: var(--card-closed-height);
- }
-}
-
-@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@200;400&family=Titillium+Web:wght@200;300&display=swap');
-
-.officerCardOverlay {
- position: relative;
- border-radius: 1em;
- margin: 1em;
- height: 90%;
- position: relative;
- background: white;
- box-shadow: 5px 5px 10px black;
-}
-
-.officerInformation {
- display: flex;
- flex-direction: column;
- justify-content: center;
- padding-top: var(--standard-gap);
- padding-bottom: var(--standard-gap);
- gap: var(--standard-gap);
-}
-
-.cardDrawerInvisible {
- visibility: hidden;
-
- transition: visible 0.5s ease;
-}
-
-.cardDrawerVisible {
- visibility: visible;
- position: relative;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
-
- font-size: 2em;
-
-}
-
-.cardDrawerContent {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- text-align: left;
- font-size: 0.45em;
- overflow: hidden;
- height: fit-content;
- padding-left: 1em;
- padding-right: 1em;
-
- padding-bottom: var(--standard-gap);
-}
-
-.imageContainer {
- overflow: hidden;
- border-radius: 1em;
- height: 18em;
-}
-
-.dividerOfficerCard {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 5px;
- width: 90%;
- background: linear-gradient(to right, #c675ff, #0050c7);
- border-radius: 1em;
- margin-top: var(--standard-gap);
- margin-bottom: var(--standard-gap);
-}
-
-.officerImage {
- border-radius: 1em;
- width: 100%;
- height: 100%;
- object-fit: cover;
-}
-
-.officerImageTopAlign {
- border-radius: 1em;
- width: 100%;
- height: 100%;
- object-fit: cover;
- object-position: top;
-}
-
-.officerImage:hover {
- transform: scale(1.1);
- transition: transform 0.5s ease;
- border-radius: 1em;
-}
-
-.officerName {
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.officerPosition {
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
diff --git a/src/styles/app.css b/src/styles/app.css
deleted file mode 100644
index 084067a..0000000
--- a/src/styles/app.css
+++ /dev/null
@@ -1,391 +0,0 @@
-.box1-left {
- padding: 10%;
-}
-
-
-.left-img {
- max-width: 100%;
- overflow: visible;
- position: relative;
-}
-
-@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@200;400&family=Open+Sans:wght@300&family=Poppins:wght@600&family=Titillium+Web:wght@200;300&display=swap');
-.header-right {
- display: flex;
- flex-direction: column;
- text-align: left;
- flex: 2 1 auto;
- max-width: 75%;
- align-items: left;
- justify-content: center;
-}
-
-.header-text {
- color: white;
- font-size: 3rem;
- font-weight: bold;
- font-family: titillium web, sans-serif;
- text-align: left;
- overflow: visible;
- max-width: 100%;
- object-fit: fill;
-}
-
-.eclairButton-container {
- width: 60%;
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: left;
- justify-self: center;
-
-}
-
-.box2 {
- display: grid;
- position: relative;
- grid-template-columns: 1fr 1fr;
- flex-direction: row;
- gap: 2rem;
-
- min-height: 25em;
- background-color: #1F2532;
- /* padding-top: 10rem; */
-
- color: #2d3549;
-
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-}
-
-.box2-override {
- min-height: 5em;
- height: fit-content;
- background-color: #191e28;
-}
-
-.box2-override2 {
- background-color: #202734;
-}
-.box2-override3 {
- background-color: #272f3f;
-}
-
-
-
-.box1_5-textLeft {
- display: flex;
- align-items: center;
- justify-content: left;
- text-align: left;
- margin: 10%;
- font-family: 'Poppins', 'Titilium Web';
- font-style: normal;
- font-size: 2rem;
- color: white;
-}
-
-.box1_5-textCenter{
- display: flex;
- align-items: center;
- justify-content: left;
- text-align: center;
- font-family: 'Poppins', 'Titilium Web';
- font-style: normal;
- font-size: 2rem;
- color: white;
-}
-
-#infoImageContainer {
- height: 30em;
-}
-
-.infoImage {
- max-width: 100%;
- max-height: 100%;
- border-radius: 1em;
- position: relative;
- box-shadow: 10px 10px 5px #191e28 ;
-}
-
-.box1_5-textRight {
- height: 15em;
- display: flex;
- align-items: flex-start;
- justify-content: center;
- text-align: left;
- margin: 10%;
- font-family: 'Poppins', sans-serif;
- font-size: 1rem;
- line-height: 1.8;
- color: gray;
-}
-
-#boldText {
- text-align: left;
-}
-
-#informationText {
- font-size: 1.5em;
- min-height: 5em;
-}
-
-#visual path{
- animation: blobbin 5s infinite alternate;
- /* fill: */
-
- fill: linear-gradient(to right, #20c997, #ff77ff)
-}
-
-.animatedBlob {
- display: flex;
- align-items: center;
- justify-content: center;
-}
-
-.box2-override4 {
- padding-top: 10em;
- padding-bottom: 10em;
- overflow: hidden;
-}
-
-.vectorText {
- /* fill: linear-gradient(to bottom, red, blue); */
- display: flex;
- align-items: center;
- justify-content: center;
- text-align: center;
- font-family: 'Poppins', 'Titilium Web';
- font-style: normal;
- font-size: 5rem;
-}
-
-@keyframes blobbin {
- 0% {
- d: path("M140.5 -95C189.2 -50.9 240.9 7.9 239 69.9C237.1 131.9 181.7 197 118.2 216.5C54.7 236.1 -16.9 209.9 -56.2 170.4C-95.6 130.9 -102.6 78 -124.2 18.3C-145.8 -41.3 -182 -107.6 -163.7 -144.8C-145.4 -182 -72.7 -190 -13.4 -179.3C45.9 -168.6 91.7 -139.2 140.5 -95");
- }
- /* 50% {
- d: path("M174.6 -169.5C192.9 -116.4 151.3 -45.7 121.2 4.1C91.1 53.9 72.4 82.8 40.7 106.6C9 130.3 -35.9 149 -67.3 135.5C-98.6 122 -116.6 76.3 -122 33.3C-127.5 -9.7 -120.4 -50 -98 -104.2C-75.6 -158.3 -37.8 -226.1 20.2 -242.2C78.2 -258.3 156.4 -222.7 174.6 -169.5");
- } */
- 50% {
- d : path("M179 -138.3C201.5 -114.4 168.5 -41.7 144.2 20.1C119.8 81.9 104.2 132.8 71.8 148.1C39.3 163.4 -9.8 143 -65.7 121.7C-121.6 100.5 -184.1 78.4 -198.8 38.4C-213.4 -1.5 -180.2 -59.4 -139.1 -87.5C-98 -115.6 -49 -114.1 14.6 -125.7C78.2 -137.4 156.4 -162.2 179 -138.3");
- }
- 100% {
- d: path("M129.4 -113.5C165 -58.6 189.2 -4.9 178.8 40.8C168.4 86.5 123.2 124.4 79.5 133.1C35.8 141.9 -6.5 121.6 -64.9 105C-123.2 88.3 -197.6 75.2 -228.6 27.1C-259.5 -21 -247 -104 -201.7 -161.2C-156.4 -218.4 -78.2 -249.7 -15.6 -237.2C46.9 -224.7 93.8 -168.5 129.4 -113.5")
- }
-}
-
-@media screen and (max-width: 1000px) {
-
- .header-text {
- display: flex;
- align-items: center;
- justify-content: center;
- text-align: left;
- }
-
- .header-right {
- display: flex;
- align-items: left;
- justify-content: center;
- }
-
- .box2 {
- grid-template-columns: 1fr;
- /* a single column with a width of 1 fraction of the available space */
- height: auto;
- gap: 0em;
- align-items: center;
- /* padding-bottom: 10em; */
- justify-items: center;
- min-height: fit-content;
- overflow: hidden;
- }
-
- .infoImage {
- padding: 0em;
- width: 45em;
- }
-
- .box1_5-textRight {
- height: fit-content;
-
- margin-top: 0%;
- margin-bottom: 0%;
-
- font-size: 1em;
- }
- .box1_5-textLeft {
- height: fit-content;
- padding: 0%;
- margin-top: 0%;
- margin-bottom: 0%;
- }
-
- .box2-override {
- padding-top: 0em;
- padding-bottom: 0em;
- height: fit-content;
- }
-
- .box2-right {
- display: flex;
- height: 100%;
- margin: 0;
- padding: 0;
- /* padding: 10%; */
-
- }
-
- .animatedBlob {
- height: 20em;
- padding-bottom: 5em;
- width: 100vw;
- }
-
- .box2-encloser {
- grid-template-columns: 1fr;
- /* a single column with a width of 1 fraction of the available space */
- height: auto;
- gap: 0em;
- align-items: center;
- /* padding-top: 10em; */
- /* padding-bottom: 10em; */
- justify-items: center;
- min-height: fit-content;
- overflow: hidden;
- }
-
- #informationText {
- min-height: fit-content;
- justify-content: left;
- text-align: left;
- padding-bottom: 5em;
- }
-
- #visual{
- transform: translate(-100px, 0px);
- }
-
- #infoImageContainer{
- padding-top: 5em;
- padding-bottom: 5em;
- height: 30em;
- display: flex;
- justify-content: center;
- align-items: center;
-
- }
-
- #informationSubtext{
- padding-bottom:3em;
- }
-
- #informationHeading{
- padding-bottom: 0em;
- padding-top: 1em;
- padding-bottom: 1em;
- }
-
- #boldText {
- padding-top: 3em;
- }
-
-}
-
-
-@import url('https://fonts.googleapis.com/css2?family=Titillium+Web:wght@200;300&display=swap');
-@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@200;400&family=Titillium+Web:wght@200;300&display=swap');
-
-.box2-left {
- display: flex;
- flex-wrap: nowrap;
- flex-direction: column;
- max-width: 100%;
- justify-content: left;
- padding-left: 10%;
- padding-right: 10%;
- align-items: flex-start;
- font-family: 'Montserrat', sans-serif;
- overflow: visible;
- font-size: 1.1em;
- color: white;
- border-radius: 1em;
-}
-
-.box2-right {
- flex: 1 1 auto;
- height: 100%;
- width: 90%;
- align-items: center;
- overflow: hidden;
- justify-content: center;
- margin-bottom: 10em;
-
-}
-
-.placeholder-image {
- max-width: 50%;
- max-height: 50%;
- padding: 20rem;
-}
-
-.box3 {
- display: flex;
- flex-direction: row;
- background-color: #ffffff;
- padding-top: 5rem;
- padding-bottom: 5rem;
-}
-
-
-
-/** everything below is divider css */
-
-/* Second and third section divider */
-.custom-shape-divider-top-1681028846 {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- overflow: hidden;
- line-height: 0;
-}
-
-.custom-shape-divider-top-1681028846 svg {
- position: relative;
- display: block;
- width: calc(176% + 1.3px);
- height: 87px;
- transform: rotateY(180deg);
-}
-
-.custom-shape-divider-top-1681028846 .shape-fill {
- fill: #272f3f;
-}
-
-/* First and second section divider */
-
-
-.custom-shape-divider-bottom-1684597940 {
- position: absolute;
- bottom: 0;
- left: 0;
- width: 100%;
- overflow: hidden;
- line-height: 0;
-}
-
-.custom-shape-divider-bottom-1684597940 svg {
- position: relative;
- display: block;
- width: calc(100% + 1.3px);
- height: 183px;
-}
-
-.custom-shape-divider-bottom-1684597940 .shape-fill {
- fill: #191E28;
-}
-
-.sponsorSectionTitle {
-
-}
\ No newline at end of file
diff --git a/src/styles/contact.css b/src/styles/contact.css
deleted file mode 100644
index 5f451f1..0000000
--- a/src/styles/contact.css
+++ /dev/null
@@ -1,30 +0,0 @@
-.contactContent {
- justify-content: center;
- align-items: center;
-}
-
-.reqAsterisk {
- color: red;
-}
-
-.contactFormContainer {
- width: 100%;
- height: fit-content;
- display: flex;
- justify-content: center;
-}
-
-.divHolderHolder {
- display:'flex';
- justify-content: center;
-}
-
-.contactBackground {
- position: absolute;
- /* top: 0; */
- /* left: 0; */
- width: 100%;
- height: 100%;
- z-index: -1;
- object-fit:cover;
-}
\ No newline at end of file
diff --git a/src/styles/eclairbutton.css b/src/styles/eclairbutton.css
deleted file mode 100644
index 6484adb..0000000
--- a/src/styles/eclairbutton.css
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-.fancybutton {
- --magic-rainbow-color-1: #c675ff;
- --magic-rainbow-color-2: #0050c7;
- display:inline-block;
- position: relative;
- display: flex;
- align-items: center;
- justify-content: center;
- background: linear-gradient(to right, var(--magic-rainbow-color-1), var(--magic-rainbow-color-2));
- padding-top: 1rem;
- padding-bottom: 1rem;
- padding-left: 5em;
- padding-right: 5em;
- border: none;
- width: -webkit-fill-available;
- color: white;
- font-size: 1.5em;
- transition-duration: 1s;
- font-family: sans-serif;
- text-align: center;
- z-index:1;
- cursor: pointer;
-}
-
-.fancybutton:after {
- position: absolute;
- display: flex;
- align-items: center;
- justify-content: center;
- content: attr(data-text);
- top: 0;
- left: 0;
- width: inherit;
- height: inherit;
- margin-left: 0em;
- border-radius: inherit;
- background-image: linear-gradient(to left, hsl(275, 100%, 73%), hsl(216, 100%, 39%));
- transition: opacity 1s ease-out;
- z-index: 2;
- opacity: 0;
- padding-top: inherit;
- padding-bottom: inherit;
- padding-left: inherit;
- padding-right: inherit;
- color:white;
-}
-
-.fancybutton:hover:after {
- opacity: 1;
- cursor: pointer;
-}
-
diff --git a/src/styles/eclairdrawer.css b/src/styles/eclairdrawer.css
deleted file mode 100644
index 95002c8..0000000
--- a/src/styles/eclairdrawer.css
+++ /dev/null
@@ -1,31 +0,0 @@
-.drawerContent {
- display: flex;
- flex-direction: column;
-}
-
-.drawerElement {
- display: flex;
- padding-left: 1em;
- padding-right: 1em;
- padding-top: 1em;
- padding-bottom: 1em;
- width: 150%;
- justify-content: space-between;
- align-items: center;
- font-family: 'Roboto', sans-serif;
- font-size: 1.6em;
- -webkit-background-clip: text;
- background-clip: text; /* Standard property */
- transition: 0.3s;
-}
-
-.drawerElement:hover {
- background: #bcfde916;
-}
-.divierDrawer {
- margin-left: 5%;
- width: 90%;
- height: 0.1em;
- background: linear-gradient(to right, #20c996, #ff77ff);
- border-radius: 1em;
-}
\ No newline at end of file
diff --git a/src/styles/footer.css b/src/styles/footer.css
deleted file mode 100644
index 8fb460b..0000000
--- a/src/styles/footer.css
+++ /dev/null
@@ -1,13 +0,0 @@
-.social-icons{
- margin-top: 0.5rem;
- max-width: 2rem;
- max-height: 2rem;
- padding: 1rem;
-}
-
-.social-icon{
- margin-top: 1.5rem;
- max-width: 2rem;
- max-height: 2rem;
- padding: 1rem;
-}
\ No newline at end of file
diff --git a/src/styles/globals.css b/src/styles/globals.css
new file mode 100644
index 0000000..3a7eaae
--- /dev/null
+++ b/src/styles/globals.css
@@ -0,0 +1,256 @@
+/* ─── DESIGN TOKENS ───────────────────────────────────────────────────────── */
+:root {
+ --black: #050508;
+ --surface: #0d0d14;
+ --surface2: #13131e;
+ --surface3: #191926;
+ --border: rgba(255, 255, 255, 0.07);
+ --border-hi: rgba(139, 92, 246, 0.35);
+
+ --purple: #7c3aed;
+ --violet: #8b5cf6;
+ --pink: #ec4899;
+ --magenta: #d946ef;
+
+ --grad: linear-gradient(135deg, #7c3aed, #ec4899);
+ --grad2: linear-gradient(135deg, #8b5cf6, #d946ef);
+
+ --text: #f0f0f8;
+ --muted: rgba(240, 240, 248, 0.45);
+ --lo: rgba(240, 240, 248, 0.18);
+
+ --mono: 'DM Mono', monospace;
+ --display: 'Lato', sans-serif;
+
+ --nav-height: 64px;
+}
+
+/* ─── RESET & BASE ────────────────────────────────────────────────────────── */
+*, *::before, *::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+html {
+ scroll-behavior: smooth;
+}
+
+/* Helps footer stick to bottom */
+#root {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+}
+
+main {
+ flex: 1;
+}
+
+body {
+ background: var(--black);
+ color: var(--text);
+ font-family: var(--display);
+ overflow-x: hidden;
+ cursor: auto; /*revert to none for custom cursor*/
+ -webkit-font-smoothing: antialiased;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
+
+button {
+ /*cursor: none; /*disabled-----------------------------------------------------------------------*/
+ font-family: inherit;
+ border: none;
+ background: none;
+}
+
+/* ─── CUSTOM CURSOR ───────────────────────────────────────────────────────── */
+.cursor {
+ position: fixed;
+ width: 10px;
+ height: 10px;
+ background: var(--magenta);
+ border-radius: 50%;
+ pointer-events: none;
+ z-index: 9999;
+ transform: translate(-50%, -50%);
+ transition: transform 0.15s ease, width 0.2s, height 0.2s;
+ mix-blend-mode: screen;
+}
+
+.cursor-ring {
+ position: fixed;
+ width: 36px;
+ height: 36px;
+ border: 1px solid rgba(217, 70, 239, 0.5);
+ border-radius: 50%;
+ pointer-events: none;
+ z-index: 9998;
+ transform: translate(-50%, -50%);
+ transition: width 0.2s, height 0.2s, opacity 0.2s;
+}
+
+/* Disabling the custom cursor style -------------------------------------------------------------------*/
+.cursor,
+.cursor-ring {
+ display: none;
+}
+
+
+/* ─── GLOBAL ATMOSPHERE ───────────────────────────────────────────────────── */
+.grid-bg {
+ position: fixed;
+ inset: 0;
+ z-index: 0;
+ pointer-events: none;
+ background-image:
+ linear-gradient(rgba(124, 58, 237, 0.035) 1px, transparent 1px),
+ linear-gradient(90deg, rgba(124, 58, 237, 0.035) 1px, transparent 1px);
+ background-size: 60px 60px;
+}
+
+.noise {
+ position: fixed;
+ inset: 0;
+ z-index: 1;
+ pointer-events: none;
+ opacity: 0.022;
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
+ background-size: 200px;
+}
+
+.scanline {
+ position: fixed;
+ left: 0;
+ right: 0;
+ height: 2px;
+ background: linear-gradient(transparent, rgba(139, 92, 246, 0.06), transparent);
+ z-index: 200;
+ pointer-events: none;
+ animation: scanline 6s linear infinite;
+ opacity: 0.4;
+}
+
+/* ─── SHARED SECTION CHROME ───────────────────────────────────────────────── */
+.section-tag {
+ font-family: var(--mono);
+ font-size: 11px;
+ letter-spacing: 0.2em;
+ text-transform: uppercase;
+ color: var(--magenta);
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ margin-bottom: 20px;
+}
+
+.section-tag::before {
+ content: '';
+ display: inline-block;
+ width: 28px;
+ height: 1px;
+ background: var(--grad);
+}
+
+.section-h2 {
+ font-size: clamp(36px, 5vw, 68px);
+ font-weight: 700;
+ line-height: 1.0;
+ letter-spacing: -0.025em;
+ max-width: 720px;
+}
+
+/* ─── SHARED BUTTONS ──────────────────────────────────────────────────────── */
+.btn-primary {
+ display: inline-block;
+ font-family: var(--mono);
+ font-size: 12px;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ padding: 15px 36px;
+ background: var(--grad);
+ color: white;
+ transition: box-shadow 0.3s, transform 0.2s;
+ cursor: none;
+}
+
+.btn-primary:hover {
+ box-shadow: 0 0 40px rgba(124, 58, 237, 0.45);
+ transform: translateY(-2px);
+}
+
+.btn-secondary {
+ display: inline-block;
+ font-family: var(--mono);
+ font-size: 12px;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ padding: 15px 36px;
+ background: transparent;
+ color: var(--muted);
+ border: 1px solid var(--border);
+ transition: border-color 0.3s, color 0.3s, transform 0.2s;
+ cursor: none;
+}
+
+.btn-secondary:hover {
+ border-color: var(--border-hi);
+ color: var(--text);
+ transform: translateY(-2px);
+}
+
+/* ─── REVEAL ANIMATION ────────────────────────────────────────────────────── */
+.reveal {
+ transition: opacity 0.7s ease, transform 0.7s ease;
+}
+
+.js-loaded .reveal {
+ opacity: 0;
+ transform: translateY(36px);
+}
+
+.js-loaded .reveal.visible {
+ opacity: 1;
+ transform: translateY(0);
+}
+
+.reveal-delay-1 { transition-delay: 0.1s; }
+.reveal-delay-2 { transition-delay: 0.2s; }
+.reveal-delay-3 { transition-delay: 0.3s; }
+.reveal-delay-4 { transition-delay: 0.4s; }
+
+/* ─── SCROLLBAR ───────────────────────────────────────────────────────────── */
+::-webkit-scrollbar { width: 3px; }
+::-webkit-scrollbar-track { background: var(--black); }
+::-webkit-scrollbar-thumb { background: var(--purple); }
+
+/* ─── ANIMATIONS ──────────────────────────────────────────────────────────── */
+@keyframes scanline {
+ 0% { top: -2px; }
+ 100% { top: 100vh; }
+}
+
+@keyframes fadeUp {
+ from { opacity: 0; transform: translateY(28px); }
+ to { opacity: 1; transform: translateY(0); }
+}
+
+@keyframes glowPulse {
+ from { opacity: 0.6; transform: scale(1); }
+ to { opacity: 1; transform: scale(1.08); }
+}
+
+@keyframes blink {
+ 0%, 100% { opacity: 1; }
+ 50% { opacity: 0; }
+}
+
+/* ─── RESPONSIVE ──────────────────────────────────────────────────────────── */
+@media (max-width: 900px) {
+ body { cursor: auto; }
+ .cursor, .cursor-ring { display: none; }
+}
diff --git a/src/styles/index.css b/src/styles/index.css
deleted file mode 100644
index ec2585e..0000000
--- a/src/styles/index.css
+++ /dev/null
@@ -1,13 +0,0 @@
-body {
- margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
- sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
- monospace;
-}
diff --git a/src/styles/input.css b/src/styles/input.css
deleted file mode 100644
index bd6213e..0000000
--- a/src/styles/input.css
+++ /dev/null
@@ -1,3 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
\ No newline at end of file
diff --git a/src/styles/loader.css b/src/styles/loader.css
deleted file mode 100644
index e69de29..0000000
diff --git a/src/styles/mailer.css b/src/styles/mailer.css
deleted file mode 100644
index cc4f153..0000000
--- a/src/styles/mailer.css
+++ /dev/null
@@ -1,53 +0,0 @@
-.border {
- background-color: #c675ff7b;
- border-radius: 1em;
- backdrop-filter: blur(10px);
- width: 45%;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
-}
-
-.form-control {
- border-radius: 1em;
- border: 0;
- width: 100%;
- box-shadow: 2px 5px 10px black;
- background-color: #ffffff;;
-}
-
-.boldText {
- color: white;
- font-size: 3em;
- padding: 5em;
- text-align: center;
-}
-
-.formText {
-
- color:white;
- font-family: 'Montserrat', sans-serif;
-}
-
-.formTextHidden {
- visibility: hidden;
-}
-.formContactUs {
- width: 75%;;
-}
-.formContactUsHidden {
- visibility: hidden;
- scale: 0.0;
- height: 0;
-}
-
-@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@200;400&family=Open+Sans:wght@300&family=Poppins:wght@600&family=Titillium+Web:wght@200;300&display=swap');
-
-.contactCapHolder {
- width: 100%;
- display: flex;
- justify-content: center;
- align-content: center;
- padding-bottom: 1rem;
-}
\ No newline at end of file
diff --git a/src/styles/navbar.css b/src/styles/navbar.css
deleted file mode 100644
index b28b04f..0000000
--- a/src/styles/navbar.css
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/src/styles/navbarelement.css b/src/styles/navbarelement.css
deleted file mode 100644
index 7eff926..0000000
--- a/src/styles/navbarelement.css
+++ /dev/null
@@ -1,53 +0,0 @@
-:root {
- --background-highlight: #2d3549ae;
-}
-
-.navContainer{
- width: fit-content;
-
-}
-
-.navContainer:hover {
- background-color: #ffffff14;
- border-radius: 0.3em;
-}
-
-.highlighted {
- transition: 0.3s ease-in-out;
- background-color: #ffffff22;
- border-radius: 0.3em;
-}
-
-.highlighted:hover {
- background-color: #ffffff22;
-}
-
-
-.navElementContainer {
- display: flex;
- width: fit-content;
- margin-left: 1em;
- margin-right: 1em;
- padding-top: 1em;
- padding-bottom: 1em;
- justify-content: space-between;
- align-items: center;
- font-family: 'Roboto', sans-serif;
- font-size: 1.2em;
- background: linear-gradient(to right, #20c997, #ff77ff);
- -webkit-background-clip: text;
- background-clip: text; /* Standard property */
- color: transparent; /* Set text color to transparent */
- overflow: hidden;
-
-}
-.navbarSpan {
- background: linear-gradient(to right, #20c997, #ff77ff);
- height: 0.4em;
- width: var(--span-width);
- border-top-left-radius: 1em;
- border-top-right-radius: 1em;
- position: absolute;
- transition: left 0.5s ease-in-out;
- transition-delay: 0.1s;
-}
\ No newline at end of file
diff --git a/src/styles/projects/popup.css b/src/styles/projects/popup.css
deleted file mode 100644
index fee8b7f..0000000
--- a/src/styles/projects/popup.css
+++ /dev/null
@@ -1,160 +0,0 @@
-.carHolder {
- height: 20rem;
- border: 1px solid black;
-}
-
-.entirePopup {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- /* transition: background-color, background-style;
- transition-duration: 1s ease-in-out, 1s ease-in-out; */
- display: flex;
- justify-content: center;
- align-items: center;
- z-index: 56;
-
-
- pointer-events: none;
- backdrop-filter: blur(0px);
- background-color: rgba(0, 0, 0, 0);
- transition: backdrop-filter 0.3s ease-out, background-color 0.3s ease-out;
- /* scale:0.1; */
- /* opacity: 0; */
- /* backdrop-filter: blur(5px);
- background-color: rgba(0, 0, 0, 0.5); */
-}
-
-.entirePopup.isVis{
- /* opacity: 1; */
- /* transition: all 0.3s ease-in-out; */
-
- pointer-events: auto;
- backdrop-filter: blur(5px);
- background-color: rgba(0, 0, 0, 0.35);
- transition: backdrop-filter 1s ease-out, background-color 1s ease-out;
- /* transition: background-color 3s ease-out; */
- /* scale: 1; */
-}
-
-.popupContent {
- --transX: attr(data-x);
- --transY: attr(data-y);
- background-color: #fff;
- padding-left: 3%;
- padding-right: 3%;
- padding-top: 2%;
- padding-bottom: 2.5%;
- /* border-radius: 5px; */
- /* border-image: linear-gradient(135deg, rgb(198, 117, 255), rgb(0, 80, 199));
- border-image-slice: 1; */
- /* border-width: 50px; */
- border: 5px solid;
- border-image: linear-gradient(135deg, #c675ff, rgb(0, 80, 199));
- border-image-slice: 1;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
- /* position: relative; */
- max-width: 44%;
- /* margin-left: 25%; */
- /* margin-right: 25%; */
- max-height: 70%;
- overflow-y: auto;
- overflow-x: scroll;
- /* overflow: visible; */
- font-size: medium;
- /* display: flex; */
-
- /* scale:0.01; */
- opacity:0;
- /* pointer-events: none; */
-
- /* position: fixed;
- top: 0;
- left: 0; */
-}
-
-.popupContent.isVis {
- /* scale:1; */
- opacity: 1;
- --transX: attr(data-x);
- --transY: attr(data-y);
- /* animation: popup-animation 4s; */
- /* animation-iteration-count: 1; */
- /* transition: scale 0.3s ease-out; */
-}
-
-.closeButton {
- /* position: absolute; */
- top: 12px;
- right: 15px;
- padding-right: 5px;
- padding-top: 5px;
- background-color: transparent;
- border: none;
- font-size: 20px;
- cursor: pointer;
-}
-.popupCloseButtonHolder {
- /* width: 50%; */
- justify-content: right;
- display: flex;
-}
-
-.closeButton:hover {
- color: rgb(203, 79, 79);
- transition: color;
- /* transition-duration: 3s ease-in-out; */
-}
-
-.category {
- margin-right: 5px;
- font-weight: bold;
- font-style: normal;
-}
-
-.displayContent {
- /* font-style: italic; */
-}
-
-.displayContentLink {
- color: blue;
- text-decoration: underline;
-}
-
-.lead {
- font-style: italic;
-}
-
-.members {
- font-style: italic;
-}
-
-.pName {
- padding: 0;
- /* padding-top: 1%; */
- text-align: center;
- width: 100%;
- padding-bottom: 1rem;
- /* padding-top: 1rem; */
-
- /* margin: 0; */
-}
-
-.divHolder {
- display: flex;
- width: 98.5%;
- /* border: 5px solid black; */
- /* align-content: center; */
- justify-content: center;
-}
-
-.popupDivider {
- height: 0;
- width: 85%;
- border: 1px solid;
- border-image: linear-gradient(135deg, rgb(198, 117, 255), rgb(0, 80, 199));
- border-image-slice: 1;
- margin-top: 20px;
-}
\ No newline at end of file
diff --git a/src/styles/projects/projectcard.css b/src/styles/projects/projectcard.css
deleted file mode 100644
index fcf724e..0000000
--- a/src/styles/projects/projectcard.css
+++ /dev/null
@@ -1,176 +0,0 @@
-
-.entireCard {
- overflow: hidden;
- /* box-shadow: 0 2px 20px rgb(107, 107, 107); */
- border-radius: 4px;
- display:flex;
- flex-direction: column;
- justify-content: space-between;
- transition-property: all;
- transition-duration: 0.5s;
- z-index: 1;
- position: relative;
- cursor: pointer;
- /* opacity: 0; */
-}
-
-.loading {
- background-image: linear-gradient(135deg, rgb(198, 117, 255), rgb(0, 80, 199));
-}
-
-.entireCard:hover {
- scale:1.02;
- transition-property: all;
- transition-duration: 0.5s;
-}
-
-.entireCard:after {
- background-image: linear-gradient(135deg, rgb(198, 117, 255), rgb(0, 80, 199));
- position: absolute;
- top: 0;
- left: 0;
- z-index: 4;
- content: '';
- color:white;
- opacity: 0;
- width: 100%;
- height: 100%;
- transition: opacity 0.5s ease-out;
-}
-
-.projectVideo {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 2;
- /* width: 100%; */
- overflow-x: hidden;
- width: 100%;
- height: 100%;
- overflow-y: hidden;
- opacity: 0;
-}
-
-.entireCard:hover .projectVideo {
- opacity: 1;
- /* transition: opacity 0.5s; */
-}
-
-.entireCard:hover:after {
- opacity: 0.8;
-}
-
-.cardImage {
- z-index: 2;
- /* width: 100%; */
- height: 100%;
- overflow-x: hidden;
- object-fit: cover;
-}
-
-.projectName {
- content : attr(data-text);
- z-index: 5;
- position: absolute;
- left: 0;
- bottom: 0;
- font-size: xx-large;
-
- margin-left: 1rem;
- font-style: italic;
- color:white;
- margin-bottom: 3rem;
-
- /* opacity: 0;
- transition: all;
- transition: 0.5s; */
-
- opacity: 0;
- transform: translateX(-100%);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.divider {
- z-index: 5;
- position: absolute;
- left: 0;
- bottom: 0;
-
- margin-left: 1rem;
- /* font-style: italic; */
- /* color:white; */
- width: 60%;
- height:0px;
- margin-bottom: 2.5rem;
-
- opacity: 0;
- transform: translateX(-100%);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.clickText {
- z-index: 5;
- position: absolute;
- left: 0;
- bottom: 0;
-
- margin-left: 1rem;
- font-style: italic;
- color:white;
- margin-bottom: 1rem;
-
- overflow: hidden;
-
- opacity: 0;
- transform: translateX(-100%);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-
-}
-
-.entireCard:hover .projectName {
- /* opacity: 1;
- transition: all;
- transition: 0.5s; */
- opacity: 1;
- transform: translateX(0);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.entireCard:hover .divider {
- /* opacity: 1;
- width: 60%;
- transition-property: opacity, width;
- transition: 0.5s, 0.5s ease-in-out; */
-
- opacity: 1;
- transform: translateX(0);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.entireCard:hover .clickText {
- opacity: 1;
- transform: translateX(0);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.entireCard:active {
- scale: 0.97;
- /* transition-property: all; */
- /* transition-duration: 0.5s; */
-}
-
-/* Popup {
- z-index: 4;
- border-color: rebeccapurple;
- height: max-content;
-} */
-
-div {
- /* height: 100%; */
-}
\ No newline at end of file
diff --git a/src/styles/projects/projects.css b/src/styles/projects/projects.css
deleted file mode 100644
index 41af27e..0000000
--- a/src/styles/projects/projects.css
+++ /dev/null
@@ -1,209 +0,0 @@
-.box {
- box-sizing: border-box;
- margin: 0;
- padding: 0;
-}
-
-.gridContainer {
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.projectsTitle {
- text-align: center;
- width: 100%;
- padding-bottom: 1.5rem;
- padding-top: 1.5rem;
- font-size: 3em;
- margin: 0;
- color: white;
-}
-
-.currentSetFilter {
- color: white;
- text-decoration: underline;
- text-underline-offset: 0.5rem;
- text-decoration-color: rgb(198, 117, 255);
- text-decoration-thickness: 3px;
-}
-
-.filterHead {
- /* border: 1px solid blue; */
- justify-content: center;
- height: fit-content;
- align-self: center;
-}
-
-.filterContainer {
- display: flex;
- /* border: 1px solid green; */
- justify-content: center;
- /* margin-bottom: 1rem; */
- margin: 0;
-}
-
-.projectPageHeading {
- height: fit-content;
- padding-top: 5rem;
- padding-bottom: 0rem;
- /* border: 1px solid pink; */
- /* display: flex; */
- text-align: center;
- font-size: 5em;
- font-weight: bold;
- color: white;
- background-color: #2d3549;
-
-}
-
-.projectBackToHome {
- margin-right: 30px;
-}
-.slash {
- margin-right: 30px;
-}
-
-.filterOptions {
- list-style: none;
- text-decoration: none;
- align-items: center;
- display: flex;
- /* border: 1px solid red; */
- color: gray;
- margin: 0;
- padding-bottom: 1.5rem;
-}
-
-.filterOption:hover {
- color: white;
- text-decoration: underline;
- text-underline-offset: 0.5rem;
- text-decoration-color: rgb(198, 117, 255);
- text-decoration-thickness: 3px;
- /* transition: all 0.5s; */
-}
-
-.filterOption {
- /* border: 1px solid black; */
- align-content: center;
- padding-right: 1.2rem;
- padding-left: 1.2rem;
- padding-top: 0.75rem;
- padding-bottom: 0.75rem;
-}
-
-.projectCards {
- padding-left: 10%;
- padding-right: 10%;
- display: grid;
- width: 100%;
- /* grid-template-columns: repeat(3, 1fr); */
- grid-template-columns: repeat(auto-fit, minmax(13rem, 17rem));
-
- /* grid-template-columns: 1fr 1fr 1fr; */
- grid-auto-rows: 13rem;
- /* gap: 2rem; */
- row-gap: 3.25rem;
- column-gap: 3.25rem;
- justify-content: center;
- /* background-color: #000539; */
-}
-.shapedividers_com-7601{
- /* overflow:hidden; */
- position:relative;
- /* height: 3em; */
- }
-.shapedividers_com-7601::before{
- content:'';
- font-family:'shape divider from ShapeDividers.com';
- position: absolute;
- bottom: -1px;
- left: -1px;
- right: -1px;
- top: -1px;
- z-index: 3;
- height: 4em;
- pointer-events: none;
- background-repeat: no-repeat;
- background-size: 100% 90px;
- background-position: 50% 0%;
- background-image: url('data:image/svg+xml;charset=utf8, ');
-}
-
-@media (min-width:768px){
- .shapedividers_com-7601::before{
- background-size: 100% 90px;
- background-position: 50% 0%;
- }
-}
-
-@media (min-width:1025px){
- .shapedividers_com-7601::before{
- bottom: -0.1vw;
- left: -0.1vw;
- right: -0.1vw;
- top: -0.1vw;
- background-size: 100% 66px;
- background-position: 50% 0%;
- background-image: url('data:image/svg+xml;charset=utf8, ');
- }
-}
-
-@media (min-width:2100px){
- .shapedividers_com-7601::before{
- background-size: 100% calc(2vw + 66px);
- }
-}
-
-.pBGLoading {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- /* transition: background-color, background-style;
- transition-duration: 1s ease-in-out, 1s ease-in-out; */
- display: flex;
- background-color: black;
- z-index: 10;
-}
-
-.loader-container {
- width: 100%;
- height: 100vh;
- display: flex;
- justify-content: center;
- align-items: center;
- position: fixed;
- /* background: rgba(0, 0, 0, 0.834); */
- z-index: 11;
-}
-
-.spinner {
- width: 64px;
- height: 64px;
- border: 8px solid;
- border-color: #c675ff transparent #c675ff transparent;
- border-radius: 50%;
- animation: spin-anim 1.2s linear infinite;
-}
-
-@keyframes spin-anim {
- 0% {
- transform: rotate(0deg);
- }
- 100% {
- transform: rotate(360deg);
- }
-}
-
-.projectBackground {
- position: absolute;
- /* top: 0; */
- /* left: 0; */
- width: 100%;
- height: 100%;
- z-index: -1;
- object-fit:cover;
-}
\ No newline at end of file
diff --git a/src/styles/projects/resourcescard.css b/src/styles/projects/resourcescard.css
deleted file mode 100644
index 5e1ba1d..0000000
--- a/src/styles/projects/resourcescard.css
+++ /dev/null
@@ -1,171 +0,0 @@
-
-.entireCard1 {
- overflow: hidden;
- /* box-shadow: 0 2px 20px rgb(107, 107, 107); */
- border-radius: 4px;
- display:flex;
- flex-direction: column;
- justify-content: space-between;
- transition-property: all;
- transition-duration: 0.5s;
- z-index: 1;
- position: relative;
- cursor: pointer;
- /* opacity: 0; */
-}
-
-.entireCard1:hover {
- scale:1.02;
- transition-property: all;
- transition-duration: 0.5s;
-}
-
-.entireCard1:after {
- background-image: linear-gradient(135deg, #c675ff, #0050c7);
- position: absolute;
- top: 0;
- left: 0;
- z-index: 4;
- content: '';
- color:white;
- opacity: 0;
- width: 100%;
- height: 100%;
- transition: opacity 0.5s ease-out;
-}
-
-.projectVideo {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 2;
- /* width: 100%; */
- overflow-x: hidden;
- height: 100%;
- overflow-y: hidden;
- opacity: 0;
-}
-
-.entireCard1:hover .projectVideo {
- opacity: 1;
- /* transition: opacity 0.5s; */
-}
-
-.entireCard1:hover:after {
- opacity: 1;
-}
-
-.cardImage {
- z-index: 2;
- /* width: 100%; */
- height: 100%;
- overflow-x: hidden;
- object-fit: cover;
-}
-
-.projectName {
- content : attr(data-text);
- z-index: 5;
- position: absolute;
- left: 0;
- bottom: 0;
- font-size: xx-large;
-
- margin-left: 1rem;
- font-style: italic;
- color:white;
- margin-bottom: 3rem;
-
- /* opacity: 0;
- transition: all;
- transition: 0.5s; */
-
- opacity: 0;
- transform: translateX(-100%);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.divider {
- z-index: 5;
- position: absolute;
- left: 0;
- bottom: 0;
-
- margin-left: 1rem;
- /* font-style: italic; */
- /* color:white; */
- width: 60%;
- height:0px;
- margin-bottom: 2.5rem;
-
- opacity: 0;
- transform: translateX(-100%);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.clickText {
- z-index: 5;
- position: absolute;
- left: 0;
- bottom: 0;
-
- margin-left: 1rem;
- font-style: italic;
- color:white;
- margin-bottom: 1rem;
-
- overflow: hidden;
-
- opacity: 0;
- transform: translateX(-100%);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-
-}
-
-.entireCard1:hover .projectName {
- /* opacity: 1;
- transition: all;
- transition: 0.5s; */
- opacity: 1;
- transform: translateX(0);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.entireCard1:hover .divider {
- /* opacity: 1;
- width: 60%;
- transition-property: opacity, width;
- transition: 0.5s, 0.5s ease-in-out; */
-
- opacity: 1;
- transform: translateX(0);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.entireCard1:hover .clickText {
- opacity: 1;
- transform: translateX(0);
- transition: opacity, transform;
- transition: 0.5s, 0.5s ease-in-out;
-}
-
-.entireCard1:active {
- scale: 0.97;
- /* transition-property: all; */
- /* transition-duration: 0.5s; */
-}
-
-/* Popup {
- z-index: 4;
- border-color: rebeccapurple;
- height: max-content;
-} */
-
-div {
- /* height: 100%; */
-}
\ No newline at end of file
diff --git a/src/styles/sponsors/sponsors.css b/src/styles/sponsors/sponsors.css
deleted file mode 100644
index 6e3c44a..0000000
--- a/src/styles/sponsors/sponsors.css
+++ /dev/null
@@ -1,214 +0,0 @@
-
-.tierCard {
- background-image: linear-gradient(135deg, rgb(198, 117, 255, 0.2), rgb(0, 80, 199, 0.2));
- backdrop-filter: blur(10px);
- border-radius: 10px;
-
-
-}
-
-.tierCardHolder {
- background-image: linear-gradient(135deg, rgba(198, 117, 255, 0.45), rgba(0, 80, 199, 0.45));
- display: flex;
- justify-content: center;
- align-items: center;
- border-radius: 20px;
- padding: 0.8rem;
- backdrop-filter: blur(10px);
- -webkit-backdrop-filter: blur(10px);
-}
-
-.tierCardContent {
- margin:1rem;
- margin-bottom: 2rem;
- margin-top: 2rem;
-}
-
-a {
- height: fit-content;
- width: fit-content;
- text-decoration: none;
- color:white;
-}
-
-.sponsorTextHolder {
- /* background-color: blue; */
- background-image: linear-gradient(135deg, rgb(198, 117, 255, 0.2), rgb(0, 80, 199, 0.2));
- display: flex;
- align-items: center;
- justify-items: center;
- justify-content: center;
- width: 50%;
- border-radius: 3px;
- opacity: 0;
-}
-
-.sponsorText {
- padding: 1rem;
- margin: 0.4rem;
- border-radius: 3px;
- color: rgb(225, 223, 223);
- background-image: linear-gradient(135deg, rgb(198, 117, 255, 1), rgb(0, 80, 199, 1));
- font-family:'monserrat';
- font-weight: 600;
-}
-
-.vis{
- opacity: 1;
- scale: 1;
- /* background-color: black; */
- transition: all 1s ease-in-out;
-}
-
-.tierHolder {
- display: grid;
- width: 100%;
- justify-content: center;
- margin: none;
- padding: none;
- grid-template-columns: repeat(auto-fit, minmax(18rem, 21rem));
- grid-gap: 6%;
- /* padding-bottom: 5rem; */
- transform: translateX(-200%);
-}
-
-.vi {
- transform: translateX(00%);
- transition: all 2s cubic-bezier(0.215, 0.61, 0.355, 1);
-}
-
-@import url('https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@1,300&display=swap');
-.tierTitle {
- text-align: center;
- font-size: 2.5em;
- font-weight: 300;
- font-family:'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif
-}
-
-.Diamond {
- color:#7fd6ff;
- /* color:#7fd6ff36; */
-}
-
-.Gold {
- color: #ffd700;
- /* color: #ffd90047; */
-}
-
-.Silver {
- color: #c7c7c7;
- /* color: #c7c7c722; */
-}
-
-@import url('https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@1,300&display=swap');
-.perkList {
- /* color: rgb(241, 241, 241); */
- /* color: white; */
- color: rgb(225, 223, 223);
- font: lighter;
- font-size: 1em;
- font-family: 'Montserrat', sans-serif;
-}
-
-.popupDividerSG {
- height: 0;
- width: 85%;
- border: 1px solid;
- border-color: rgb(150, 138, 70);
- border-image-slice: 1;
- margin-top: 20px;
-}
-
-.popupDividerSS {
- height: 0;
- width: 85%;
- border: 1px solid;
- border-color: #858585;
- border-image-slice: 1;
- margin-top: 20px;
-}
-
-.popupDividerSD {
- height: 0;
- width: 85%;
- border: 1px solid;
- border-color: #4685a2;
- border-image-slice: 1;
- margin-top: 20px;
-}
-
-.perkList li {
- margin-bottom: 1rem;
- font-weight: 500;
-}
-
-.contactGrid {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(15rem, 20rem));
- grid-gap: 1rem;
- color: white;
- justify-content: center;
- width: 100%;
-}
-
-.cgE {
- display: flex;
-}
-
-.cgE:hover {
- transition: all 0.2s ;
-}
-
-.cgPic {
- height: 3rem;
-}
-
-.cgTitle {
- font-size: x-large;
- font-weight: 700;
-}
-
-.cgData {
- font-size: large;
- white-space: nowrap;
-}
-
-.cgText {
- padding-left: 1rem;
-}
-
-.sponsorBackground {
- position: absolute;
- width: 100%;
- height: 100%;
- z-index: -1;
- object-fit:cover;
-}
-.currentSponsorRow {
- display: flex;
- align-items: center;
- justify-content: space-around;
-}
-
-.currentSponsorCard {
- width: 25%;
- aspect-ratio: 1;
- display: block;
- border-radius: 1em;
- overflow: hidden;
- transition: transform 0.3s, box-shadow 0.3s;
- box-shadow: 1em 1em rgba(0, 0, 0, 0.1);
-}
-
-.currentSponsorCard:hover {
- cursor: pointer;
- transform: scale(1.05);
- box-shadow: 1em 1em rgba(0, 0, 0, 0.4);
-}
-
-.currentSponsorImg {
- width: 100%;
- height: 100%;
- object-fit: contain;
- display: block;
-}
\ No newline at end of file
diff --git a/src/styles/youtubeEmbed.css b/src/styles/youtubeEmbed.css
deleted file mode 100644
index afae63f..0000000
--- a/src/styles/youtubeEmbed.css
+++ /dev/null
@@ -1,20 +0,0 @@
-.youtube-embed {
- display: flex;
- align-items: center;
- justify-content: center;
- align-self: center;
- align-content: center;
- width: 100%;
- height: 30em;
- border-radius: 1rem;
- border-width: 0;
-
-}
-
-.youtube-iframe {
- width: 100%;
- height: 100%;
- border-color: transparent;
- border-radius: 1rem;
- outline-color: transparent;
-}
\ No newline at end of file
diff --git a/src/types/behold.d.ts b/src/types/behold.d.ts
new file mode 100644
index 0000000..35e9ed2
--- /dev/null
+++ b/src/types/behold.d.ts
@@ -0,0 +1,8 @@
+declare namespace JSX {
+ interface IntrinsicElements {
+ 'behold-widget': React.DetailedHTMLProps<
+ React.HTMLAttributes & { 'feed-id': string },
+ HTMLElement
+ >;
+ }
+}