diff --git a/src/app.css b/src/app.css index f201664..503437e 100644 --- a/src/app.css +++ b/src/app.css @@ -1,290 +1,332 @@ @import url('https://fonts.googleapis.com/css2?family=Saira:ital,wght@0,100..900;1,100..900&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Symbols:wght@100..900&display=swap'); @import 'tailwindcss'; -/* @import '@skeletonlabs/skeleton-svelte'; */ @theme { - /* - Old green ECSESS palette (kept for quick revert): - --color-ecsess-50: #e8ffd9; - --color-ecsess-100: #cce7ba; - --color-ecsess-150: #bae9a5; - --color-ecsess-200: #a9d0a0; - --color-ecsess-250: #9cc295; - --color-ecsess-300: #8fb98a; - --color-ecsess-350: #7daa7a; - --color-ecsess-400: #6a9a6a; - --color-ecsess-450: #62925a; - --color-ecsess-500: #5a8b5a; - --color-ecsess-550: #4c7a4f; - --color-ecsess-600: #3f6a3f; - --color-ecsess-650: #306032; - --color-ecsess-700: #2f4d29; - --color-ecsess-750: #1c4a1e; - --color-ecsess-800: #0a3d2a; - --color-ecsess-850: #083525; - --color-ecsess-900: #062c20; - --color-ecsess-950: #031c15; - */ - - /* Light bright blues - for backgrounds and cards */ - --color-ecsess-50: #eff6ff; - --color-ecsess-100: #dbeafe; - --color-ecsess-150: #bfdbfe; - --color-ecsess-200: #93c5fd; - - /* Mid-light bright blues - for borders and hover states */ - --color-ecsess-250: #7ab8ff; - --color-ecsess-300: #60a5fa; - --color-ecsess-350: #4f9bff; - --color-ecsess-400: #3b82f6; - - /* Mid bright blues - for accents and interactive elements */ - --color-ecsess-450: #2f74ef; - --color-ecsess-500: #2563eb; - --color-ecsess-550: #2259d1; - --color-ecsess-600: #1d4ed8; - --color-ecsess-650: #1b46c2; - - /* Mid-dark bright blues - for text on light backgrounds */ - --color-ecsess-700: #1e40af; - --color-ecsess-750: #1b3a99; - --color-ecsess-800: #1e3a8a; - - /* Dark bright blues - for text and backgrounds */ - --color-ecsess-850: #1b3277; - --color-ecsess-900: #1e2f66; - --color-ecsess-950: #172554; - - /* Black variants for UI elements */ - --color-ecsess-black: #1f1f1f; - --color-ecsess-black-hover: #161917; + /* ─── Windows 2000 Silver / Navy palette ─── */ + + /* Silver / gray system colors */ + --color-ecsess-50: #ffffff; /* white */ + --color-ecsess-100: #f5f4f0; /* near-white / button face highlight */ + --color-ecsess-150: #ece9d8; /* classic Win2k dialog bg */ + --color-ecsess-200: #d4d0c8; /* classic Win2k silver */ + --color-ecsess-250: #c0bdb5; /* mid-silver */ + --color-ecsess-300: #aca899; /* medium silver-gray */ + --color-ecsess-350: #969289; /* darker silver */ + --color-ecsess-400: #808080; /* gray */ + --color-ecsess-450: #6e6e6e; + --color-ecsess-500: #5c5c5c; + --color-ecsess-550: #4a4a4a; + --color-ecsess-600: #404040; + --color-ecsess-650: #333333; + --color-ecsess-700: #3a3a3a; + --color-ecsess-750: #2e2e2e; + --color-ecsess-800: #242424; + --color-ecsess-850: #1a1a1a; + --color-ecsess-900: #0a0a0a; + --color-ecsess-950: #000000; + + /* Win2k title-bar navy */ + --color-win-titlebar: #0a246a; + --color-win-titlebar-end: #a6caf0; + --color-win-titlebar-text: #ffffff; + + /* Win2k classic accent blue (hyperlinks / selection) */ + --color-win-blue: #0000ff; + --color-win-blue2: #000080; + + /* system border helpers */ + --color-win-light: #ffffff; + --color-win-highlight:#dfdfdf; + --color-win-shadow: #808080; + --color-win-dark: #404040; + + /* Black variants */ + --color-ecsess-black: #000000; + --color-ecsess-black-hover: #0a246a; --animate-wiggle: wiggle 0.5s ease-in-out 1; @keyframes wiggle { - 0%, - 100% { - transform: rotateY(-2.4deg); - } - 50% { - transform: rotateY(2.4deg); - } + 0%, 100% { transform: rotateY(-2.4deg); } + 50% { transform: rotateY(2.4deg); } } --animate-pulse-ring: pulse-ring 1.5s ease-in-out infinite; @keyframes pulse-ring { - 0%, - 100% { - opacity: 0.5; - } - 50% { - opacity: 1; - } + 0%, 100% { opacity: 0.5; } + 50% { opacity: 1; } + } + + --animate-blink: blink 1s step-start infinite; + @keyframes blink { + 0%, 100% { opacity: 1; } + 50% { opacity: 0; } + } + + --animate-marquee: marquee 18s linear infinite; + @keyframes marquee { + 0% { transform: translateX(100%); } + 100% { transform: translateX(-100%); } } } +/* ─── Global reset to Win2k system font feel ─── */ * { - font-family: 'Saira', 'Noto Sans Symbols', sans-serif; - font-optical-sizing: auto; - font-weight: 500; + font-family: 'Tahoma', 'Verdana', 'MS Sans Serif', Arial, sans-serif; + font-size: 13px; + font-weight: normal; font-style: normal; scroll-behavior: smooth; } -h1 { - @apply py-4 text-2xl font-bold md:text-3xl; +body { + background-color: #008080; /* classic teal desktop */ + color: #000000; } -h2 { - @apply py-1.5 text-xl font-bold md:text-2xl; +/* ─── Win2k beveled border utilities ─── */ +.win-raised { + border-top: 2px solid #ffffff; + border-left: 2px solid #ffffff; + border-right: 2px solid #404040; + border-bottom: 2px solid #404040; + box-shadow: inset 1px 1px 0 #dfdfdf, inset -1px -1px 0 #808080; } -.page-title { - @apply my-6 text-3xl font-bold md:text-4xl lg:text-6xl; +.win-sunken { + border-top: 2px solid #404040; + border-left: 2px solid #404040; + border-right: 2px solid #ffffff; + border-bottom: 2px solid #ffffff; + box-shadow: inset 1px 1px 0 #808080, inset -1px -1px 0 #dfdfdf; } -.typography { - @apply text-sm md:text-base lg:text-lg; - - p { - @apply my-2 leading-relaxed; - } - - strong, - b { - @apply font-bold; - } - - i { - @apply italic; - } - - blockquote { - @apply bg-ecsess-100 text-ecsess-700 border-l-ecsess-600 my-4 rounded-md border-l-4 py-[0.01rem] ps-4 italic; - } - - h1 { - @apply my-4 text-4xl leading-10 font-extrabold; - } - - h2 { - @apply mt-4 mb-3 text-2xl leading-8 font-black; - } - - h3 { - @apply mt-4 mb-1 text-xl leading-relaxed font-bold; - } - - h4 { - @apply mt-6 mb-2 leading-6; - } - - img, - picture, - video { - @apply my-8; - } - - picture > img { - @apply mt-0 mb-0; - } - - code, - kbd { - @apply rounded-md font-mono text-sm; - } - - h2 code { - @apply text-[1.3125rem]; /* 21px */ - } - - h3 code { - @apply text-[1.125rem]; /* 18px */ - } - - pre { - @apply my-3 rounded-md px-4 pt-3 pb-3 font-mono text-sm leading-6; - } - - ol, - ul { - @apply my-2 list-outside list-disc ps-6.5; - } - - li { - @apply my-1 leading-relaxed; - } - - ol > li, - ul > li { - @apply ps-1; - } - - > ul > li p { - @apply my-2 leading-relaxed; - } - - ul ul, - ul ol, - ol ul, - ol ol { - @apply my-1; - } +.win-flat { + border: 1px solid #808080; +} - dl { - @apply my-5; - } +.win-groupbox { + border: 2px groove #808080; + padding: 16px; +} - dt { - @apply mt-5; - } +/* ─── Win2k window chrome ─── */ +.win-window { + background: #d4d0c8; + border-top: 2px solid #ffffff; + border-left: 2px solid #ffffff; + border-right: 2px solid #404040; + border-bottom: 2px solid #404040; + box-shadow: inset 1px 1px 0 #dfdfdf, inset -1px -1px 0 #808080, 2px 2px 8px rgba(0,0,0,0.5); +} - dd { - @apply mt-2 ps-6.5; - } +.win-titlebar { + background: linear-gradient(to right, #0a246a, #a6caf0); + color: #ffffff; + font-weight: bold; + font-size: 12px; + padding: 3px 6px; + display: flex; + align-items: center; + gap: 4px; + user-select: none; +} - hr { - @apply my-12; - } +.win-titlebar-btn { + background: #d4d0c8; + border-top: 1px solid #ffffff; + border-left: 1px solid #ffffff; + border-right: 1px solid #404040; + border-bottom: 1px solid #404040; + width: 16px; + height: 14px; + font-size: 9px; + line-height: 1; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + flex-shrink: 0; +} - hr + *, - h2 + *, - h3 + *, - h4 + * { - @apply mt-0; - } +.win-titlebar-btn:active { + border-top: 1px solid #404040; + border-left: 1px solid #404040; + border-right: 1px solid #ffffff; + border-bottom: 1px solid #ffffff; +} - table { - @apply w-full; - } +.win-btn { + background: #d4d0c8; + color: #000000; + border-top: 2px solid #ffffff; + border-left: 2px solid #ffffff; + border-right: 2px solid #404040; + border-bottom: 2px solid #404040; + box-shadow: inset 1px 1px 0 #dfdfdf, inset -1px -1px 0 #808080; + padding: 4px 12px; + cursor: pointer; + font-family: 'Tahoma', 'Verdana', sans-serif; + font-size: 12px; + min-width: 75px; + text-align: center; +} - thead { - @apply border-ecsess-500 border-b-2; - } +.win-btn:active, .win-btn:focus { + border-top: 2px solid #404040; + border-left: 2px solid #404040; + border-right: 2px solid #ffffff; + border-bottom: 2px solid #ffffff; + box-shadow: inset 1px 1px 0 #808080, inset -1px -1px 0 #dfdfdf; +} - thead th { - @apply text-ecsess-500 p-2 text-left text-base font-bold; - } +.win-btn:hover { + background: #ece9d8; +} - tbody td, - tfoot td { - @apply p-2.5; - } +.win-btn:disabled { + color: #808080; + text-shadow: 1px 1px 0 #ffffff; + cursor: default; +} - td > a { - @apply underline transition-colors; - } +.win-menu-bar { + background: #d4d0c8; + border-bottom: 1px solid #808080; + display: flex; + gap: 0; +} - tbody tr:nth-child(odd) { - @apply bg-ecsess-200/24; - } +.win-menu-item { + padding: 3px 8px; + font-size: 12px; + cursor: pointer; +} - td + td { - @apply border-l; - } +.win-menu-item:hover { + background: #0a246a; + color: #ffffff; +} - tfoot { - @apply border-t; - } +.win-statusbar { + background: #d4d0c8; + border-top: 1px solid #808080; + padding: 2px 6px; + font-size: 11px; + display: flex; + align-items: center; + gap: 4px; +} - figure { - @apply my-8; - } +.win-input { + background: #ffffff; + border-top: 2px solid #808080; + border-left: 2px solid #808080; + border-right: 1px solid #ffffff; + border-bottom: 1px solid #ffffff; + padding: 2px 4px; + font-family: 'Tahoma', 'Verdana', sans-serif; + font-size: 12px; +} - figure > * { - @apply my-0; - } +.win-link { + color: #0000ff; + text-decoration: underline; + cursor: pointer; +} - figcaption { - @apply mt-3 text-sm leading-5; - } +.win-link:visited { + color: #800080; } -/* Scrollbar Styles */ -*::-webkit-scrollbar { - @apply h-1 w-1; +.win-link:hover { + color: #000080; } -*::-webkit-scrollbar-track { - @apply bg-ecsess-700 rounded; +/* ─── page-title kept for animation ─── */ +.page-title { + font-size: 18px; + font-weight: bold; + color: #000000; } -*::-webkit-scrollbar-track:hover { - @apply bg-ecsess-900; +/* ─── Headings ─── */ +h1 { + font-size: 18px; + font-weight: bold; + padding: 4px 0; } -*::-webkit-scrollbar-track:active { - @apply bg-ecsess-900; +h2 { + font-size: 15px; + font-weight: bold; + padding: 4px 0; } -*::-webkit-scrollbar-thumb { - @apply bg-ecsess-100 rounded-md; +h3 { + font-size: 13px; + font-weight: bold; } -*::-webkit-scrollbar-thumb:hover { - @apply bg-ecsess-300; +/* ─── Typography block (rich text) ─── */ +.typography { + font-size: 13px; + + p { margin: 6px 0; line-height: 1.5; } + strong, b { font-weight: bold; } + i { font-style: italic; } + blockquote { + background: #ece9d8; + border-left: 3px solid #0a246a; + margin: 8px 0; + padding: 4px 8px; + font-style: italic; + } + h1 { font-size: 18px; font-weight: bold; } + h2 { font-size: 15px; font-weight: bold; } + h3 { font-size: 13px; font-weight: bold; } + code, kbd { + font-family: 'Courier New', monospace; + font-size: 12px; + background: #ece9d8; + padding: 1px 3px; + } + pre { + font-family: 'Courier New', monospace; + font-size: 12px; + background: #ece9d8; + padding: 8px; + margin: 6px 0; + border: 1px solid #808080; + } + ol, ul { margin: 4px 0; padding-left: 20px; list-style: disc; } + li { margin: 2px 0; } + table { width: 100%; border-collapse: collapse; } + thead { border-bottom: 2px solid #0a246a; } + thead th { color: #0a246a; padding: 4px; text-align: left; font-weight: bold; } + tbody td, tfoot td { padding: 4px; } + tbody tr:nth-child(odd) { background: #f5f4f0; } + td + td { border-left: 1px solid #d4d0c8; } } -*::-webkit-scrollbar-thumb:active { - @apply bg-ecsess-300; +/* ─── Scrollbars ─── */ +*::-webkit-scrollbar { width: 16px; height: 16px; } +*::-webkit-scrollbar-track { background: #d4d0c8; } +*::-webkit-scrollbar-thumb { + background: #d4d0c8; + border-top: 2px solid #ffffff; + border-left: 2px solid #ffffff; + border-right: 2px solid #404040; + border-bottom: 2px solid #404040; +} +*::-webkit-scrollbar-button { + background: #d4d0c8; + border-top: 2px solid #ffffff; + border-left: 2px solid #ffffff; + border-right: 2px solid #404040; + border-bottom: 2px solid #404040; + display: block; + height: 16px; + width: 16px; } +*::-webkit-scrollbar-corner { background: #d4d0c8; } diff --git a/src/components/Button.svelte b/src/components/Button.svelte index 9982870..825e3d2 100644 --- a/src/components/Button.svelte +++ b/src/components/Button.svelte @@ -5,9 +5,7 @@ diff --git a/src/components/QuickLinks.svelte b/src/components/QuickLinks.svelte index c4b9427..9ada40b 100644 --- a/src/components/QuickLinks.svelte +++ b/src/components/QuickLinks.svelte @@ -1,35 +1,31 @@ -
-

- Popular resources -

+
+ 📌 Popular Resources -
+
- + - + - + - - - - +
-
+
diff --git a/src/components/homepage/AffiliatedGroups.svelte b/src/components/homepage/AffiliatedGroups.svelte index 06e9d5d..733fa95 100644 --- a/src/components/homepage/AffiliatedGroups.svelte +++ b/src/components/homepage/AffiliatedGroups.svelte @@ -1,15 +1,10 @@ -
- -
-

- Subcommittees & Affiliated Groups +
+ +
+

+ Subcommittees & Affiliated Groups

-

- Explore opportunities to enhance your skills, build innovative projects, and connect with the - engineering community through our subcommittees and affiliated groups. +

+ Explore opportunities to enhance your skills and connect with the engineering community.

- -
+ +
{#each groups as group, i (group.name)} - {@const Icon = group.icon} -
-
- -
-
-
-

- {group.name} -

-
+ +
+ +
+ {group.icon} + {group.name} + +
- -

- {group.description} -

+ +
+

{group.description}

- -
    - {#each group.features as feature (feature)} -
  • - - {feature} + +
      + {#each group.features as feature} +
    • + + {feature}
    • {/each}
    - -
    + +
    {#if group.instagram} - {/if} {#if group.website} @@ -126,16 +106,15 @@ href={group.website} target="_blank" rel="noopener noreferrer external" - aria-label={`Visit ${group.name} website`} - class="text-ecsess-300 hover:text-ecsess-100 border-ecsess-700 bg-ecsess-900/50 hover:bg-ecsess-800/80 inline-flex items-center gap-2 rounded-md border px-4 py-2 text-base" + class="win-btn" + style="font-size: 10px; min-width: auto; padding: 2px 6px; text-decoration: none; color: #000;" > -
    -
+
{/each}
diff --git a/src/components/homepage/Sponsors.svelte b/src/components/homepage/Sponsors.svelte index 82c5542..9dafdab 100644 --- a/src/components/homepage/Sponsors.svelte +++ b/src/components/homepage/Sponsors.svelte @@ -1,7 +1,6 @@ -
- -
-

+
+ +
+

Our Sponsors

-

- We're grateful to our sponsors for their continued support of ECSESS, our events, activities, - and our community. +

+ We're grateful to our sponsors for their continued support of ECSESS, our events, and our community.

- -
- - - -
+ + +
- + {#if sponsors && sponsors.length > 0} -
-
- {#each sponsors as sponsor} - + {#each sponsors as sponsor} + + +
{ (e.currentTarget as HTMLElement).style.background = '#ece9d8'; }} + onmouseleave={(e) => { (e.currentTarget as HTMLElement).style.background = '#ffffff'; }} > -
- {sponsor.name} -
- - {/each} -
+ {sponsor.name} +
+
+ {sponsor.name} +
+ + {/each}
{:else} -
+
+

📁 No sponsors found.

You can be our next sponsor!

{/if} diff --git a/src/components/layout/Footer.svelte b/src/components/layout/Footer.svelte index d67ad79..c1bd943 100644 --- a/src/components/layout/Footer.svelte +++ b/src/components/layout/Footer.svelte @@ -1,152 +1,98 @@ - +
diff --git a/src/components/layout/NavBar.svelte b/src/components/layout/NavBar.svelte index 7714375..59c10a1 100644 --- a/src/components/layout/NavBar.svelte +++ b/src/components/layout/NavBar.svelte @@ -1,74 +1,113 @@ +
- - - diff --git a/src/components/layout/NavButton.svelte b/src/components/layout/NavButton.svelte index 158db2b..7e29a1c 100644 --- a/src/components/layout/NavButton.svelte +++ b/src/components/layout/NavButton.svelte @@ -2,17 +2,13 @@ import { page } from '$app/state'; let { href, children } = $props(); - - // Check if this button's href matches the current page const isActive = $derived(page.url.pathname === href); - + diff --git a/src/components/layout/Section.svelte b/src/components/layout/Section.svelte index 89b37f2..688ec29 100644 --- a/src/components/layout/Section.svelte +++ b/src/components/layout/Section.svelte @@ -1,36 +1,22 @@ -
+ +
{@render children()}
diff --git a/src/components/officehour/OHBlock.svelte b/src/components/officehour/OHBlock.svelte index 5676bec..dcc8211 100644 --- a/src/components/officehour/OHBlock.svelte +++ b/src/components/officehour/OHBlock.svelte @@ -9,14 +9,17 @@
{ (e.currentTarget as HTMLElement).style.background = '#d4d0c8'; }} + onmouseleave={(e) => { (e.currentTarget as HTMLElement).style.background = '#ece9d8'; }} > -

+

{officeHour.member.name.split(' ')[0]}

{#if !isShortBlock} -

+

{shortenPosition(officeHour.member.position)}

{/if} diff --git a/src/components/officehour/OHSchedule.svelte b/src/components/officehour/OHSchedule.svelte index 040711a..fcc193f 100644 --- a/src/components/officehour/OHSchedule.svelte +++ b/src/components/officehour/OHSchedule.svelte @@ -113,17 +113,15 @@ }; -
-
+
+
-
-
+
+
Time
{#each DAYS as day} -
+
{day}
{/each} @@ -131,23 +129,28 @@
{#each DAYS as day, dayIndex} {@const segments = getSegmentsForDay(day)} {#if dayIndex === 0} -
+
{#each timeSlots as timeSlot} {@const isHourMark = timeSlot % 60 === 0}
{#if isHourMark}{formatTime(timeSlot)}{/if}
@@ -157,18 +160,25 @@
{#each timeSlots as timeSlot, idx} {@const isHourMark = timeSlot % 60 === 0}
{/each} @@ -180,12 +190,17 @@ {@const isShortBlock = duration <= 30}
{#each segment.ohs as oh} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 95a46b8..7443d03 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,98 +1,293 @@ - + - -
-
- -
-

- {#each 'We are probably ECSESS!'.split('') as char, i} - - {char} - - {/each} -

-

- Electrical, Computer & Software Engineering Students' Society at McGill (ECSESS) - is the student council which helps McGill ECSE students in their - academic, - technical, - social and - professional progression. -

- -
- + +
+ + + + +
+ +
+ + + Welcome to ECSESS - Microsoft Internet Explorer +
+ + + +
+
+ + + + + + + + {#if !introMinimized} + +
+
+ +
+ +
+ About ECSESS + +

+ We are probably ECSESS! +

+ +

+ Electrical, Computer & Software Engineering Students' Society at McGill (ECSESS) + is the student council which helps McGill ECSE students in their + academic, + technical, + social and + professional progression. +

+ + +
+ {#each ['Academic', 'Technical', 'Social', 'Professional'] as tag} + {tag} + {/each} +
+
+ + + +
+ + +
+
+ + Windows Media Player - Featured Content +
+ + + +
+
+
+ +
+ +
+ + + + + +
+
+
+ 0:00 / ∞ +
+
+
+
+ + +
+
Done
+
Internet
+
+ {/if} +
+ + + + +
+
+ + Lounge Office Hours - Calendar +
+ + +
- -
-
- - - + {#if !ohMinimized} +
+
+

+ Lounge Office Hours +

+ {#if data.ohLastUpdated} + Semester: {data.ohLastUpdated} + {/if} +
+ +
+ Location Info +

+ Come visit us in our student lounge at ENGTR 1060 to grab a coffee (free!), play Mario Kart, or just chat about anything! +

+
+ + +
+
+
ENGTR 1060 · Open {data.allOHs?.length ?? 0} slots
+
+ {/if} +
+ + + + +
+
+ + ECSESS Sponsors - Partnerships +
+ + +
+ + {#if !sponsorsMinimized} +
+ +
+ {/if}
-
- - -
-
-

Lounge Office Hours

-

- Come visit us in our student lounge at ENGTR 1060 to grab a coffee (free), play Mario Kart, or - just chat about anything! - {#if data.ohLastUpdated} -
- - Semester: {data.ohLastUpdated} - - {/if} -

- + + + + +
+
+ + Subcommittees & Affiliated Groups - My Computer +
+ + + +
+
+ + {#if !clubsMinimized} +
+ +
+ {/if}
-
- -
- -
+ + + +
+
+ + ★ ECSESS Website v2.0 — Best viewed in Internet Explorer 6.0 at 800×600 resolution ★     + Free coffee at ENGTR 1060! ★     + Election results are out — visit ssmu.simplyvoting.com ★     + © ECSESS {year} — Designed with <3     + +
+
- -
- -
+