Affiliated with the Western Sydney University School of Law
Western Sydney University · Law Society
Shaping the next generation of advocates , scholars and leaders.
The Western Sydney Law Students' Association is the official voice of the law student body — a community built on advocacy, excellence and integrity. For thirty years we have prepared our members for the profession beyond the lecture theatre.
The law is the witness and external deposit of our moral life. It is the foundation upon which a just society is built.
Justice Oliver Wendell Holmes Jr. U.S. Supreme Court · 1897
0 Years of Service
0 Active Members
0 Annual Competitions
0 Industry Partners
— I.
Careers & Industry
From clerkship night to commercial breakfasts with Sydney's top firms, we bridge the gap between law school and the profession. Our partners are our pipeline — and yours.
Browse Opportunities →
— II.
Competitions
Mooting, negotiations, client interviewing, and our flagship Law UNO — five competitions that develop the advocacy skills that distinguish a graduate from a great lawyer.
View Competitions →
— III.
Community
Law school is hard. WSLSA is the network that makes it human — through social events, peer support, social justice initiatives, and a shared belief in something greater.
Join the Society →
A Word from the President
Standing on thirty years of advocacy.
To the students who walk through our doors each February — welcome. The Western Sydney Law Students' Association is the body that has, for three decades, ensured that the voice of the law student is heard within the faculty and beyond.
We are the proud product of a university that has never apologised for who it serves, and we extend that same conviction to every member. Your time at law school will not be defined by your postcode — it will be defined by what you choose to do with it.
I invite you to participate fully. To compete, to lead, to challenge, and to belong.
[President's Name] President · 2026
Featured · Law UNO 2026
Introducing Law UNO — the most accessible competition we've ever run.
15 April 2026 · 4 min read
For too long, mooting has been the gatekeeper to competitive law. This year, we are tearing down the gate. Law UNO is a fast-paced, plain-English competition that strips advocacy down to its purest form — a single legal proposition, a single opponent, and the skill of persuasion. Open to every member, no experience required.
Read More →
Publications
The Bench & Beyond — Issue 04
March 2026
Reflections from the High Court Internship cohort, AI in legal practice, and the 2026 mooting season preview.
Read Issue →
Opportunity
Ashurst Summer Clerkships now open.
Closes 12 July 2026
Eight-week paid clerkships across corporate, disputes and finance. Penultimate-year LLB and JD students.
View All →
Achievement
Aisha Rahman wins Sir Harry Gibbs.
October 2025
WSU takes first place at the Sir Harry Gibbs Constitutional Law Moot — and best speaker in the grand final.
See Highlights →
Event
Annual Law Ball — bookings open.
22 August 2026 · Doltone House
The night of the year. Black tie, river views, and the company of every law student who matters in Western Sydney.
Reserve Tickets →
Membership 2026
Become part of something deliberate .
WSLSA membership unlocks every event, every competition, every opportunity. Annual membership is one decision — the rest of your law degree is not.
/* ============================================
WSLSA — Western Sydney Law Students' Association
Design System & Shared Styles
============================================ */
:root {
/* Brand Colors — WSU Identity */
--wsu-red: #99182F;
--wsu-red-deep: #6B0F1F;
--wsu-red-bright: #C41E3A;
--wsu-red-glow: rgba(153, 24, 47, 0.15);
/* Editorial Neutrals */
--ivory: #FAF7F2;
--ivory-warm: #F5F0E8;
--paper: #FFFFFF;
--ink: #1A1A1F;
--ink-soft: #2D2D33;
--charcoal: #4A4A52;
--slate: #6B6B73;
--mist: #B8B8BF;
--whisper: #E8E5DF;
--line: #D4D0C8;
/* Accents */
--gold: #B8923A;
--gold-soft: #D4B062;
/* Typography */
--font-display: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
--font-serif: 'Lora', 'Georgia', serif;
--font-sans: 'Inter', -apple-system, sans-serif;
--font-mono: 'JetBrains Mono', 'Courier New', monospace;
/* Spacing scale */
--space-xs: 0.5rem;
--space-sm: 1rem;
--space-md: 2rem;
--space-lg: 4rem;
--space-xl: 6rem;
--space-2xl: 9rem;
/* Layout */
--max-width: 1320px;
--content-width: 1100px;
--reading-width: 720px;
/* Effects */
--shadow-sm: 0 1px 2px rgba(26, 26, 31, 0.04), 0 2px 4px rgba(26, 26, 31, 0.04);
--shadow-md: 0 4px 12px rgba(26, 26, 31, 0.06), 0 8px 24px rgba(26, 26, 31, 0.04);
--shadow-lg: 0 12px 32px rgba(26, 26, 31, 0.08), 0 24px 48px rgba(26, 26, 31, 0.06);
--shadow-red: 0 8px 24px rgba(153, 24, 47, 0.18);
/* Motion */
--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
}
/* ============================================
Reset & Base
============================================ */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
body {
font-family: var(--font-serif);
font-size: 17px;
line-height: 1.65;
color: var(--ink);
background: var(--ivory);
overflow-x: hidden;
background-image:
radial-gradient(ellipse 1200px 600px at 80% -10%, rgba(153, 24, 47, 0.04), transparent 60%),
radial-gradient(ellipse 800px 400px at 0% 100%, rgba(184, 146, 58, 0.05), transparent 60%);
background-attachment: fixed;
}
/* Subtle paper grain overlay */
body::before {
content: '';
position: fixed;
inset: 0;
pointer-events: none;
z-index: 1;
opacity: 0.35;
mix-blend-mode: multiply;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.4 0 0 0 0 0.35 0 0 0 0 0.3 0 0 0 0.06 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
img { max-width: 100%; display: block; }
a {
color: inherit;
text-decoration: none;
transition: color 0.25s var(--ease-out);
}
::selection {
background: var(--wsu-red);
color: var(--ivory);
}
/* ============================================
Typography
============================================ */
h1, h2, h3, h4, h5, h6 {
font-family: var(--font-display);
font-weight: 500;
line-height: 1.1;
letter-spacing: -0.01em;
color: var(--ink);
}
h1 {
font-size: clamp(3rem, 7vw, 6.5rem);
font-weight: 400;
letter-spacing: -0.025em;
line-height: 0.98;
}
h2 {
font-size: clamp(2.25rem, 4.5vw, 4rem);
font-weight: 400;
letter-spacing: -0.02em;
}
h3 {
font-size: clamp(1.5rem, 2.5vw, 2.25rem);
}
.eyebrow {
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--wsu-red);
display: inline-flex;
align-items: center;
gap: 0.75rem;
}
.eyebrow::before {
content: '';
width: 28px;
height: 1px;
background: var(--wsu-red);
}
.eyebrow.center::after {
content: '';
width: 28px;
height: 1px;
background: var(--wsu-red);
}
.italic { font-style: italic; }
.serif-display { font-family: var(--font-display); }
/* ============================================
Layout Utilities
============================================ */
.container {
width: 100%;
max-width: var(--max-width);
margin-inline: auto;
padding-inline: clamp(1.25rem, 4vw, 3rem);
position: relative;
z-index: 2;
}
.container-narrow {
max-width: var(--content-width);
margin-inline: auto;
padding-inline: clamp(1.25rem, 4vw, 3rem);
}
section {
position: relative;
padding-block: clamp(4rem, 10vw, 9rem);
}
/* ============================================
Top Bar (university affiliation)
============================================ */
.top-bar {
background: var(--ink);
color: var(--ivory);
font-family: var(--font-sans);
font-size: 0.72rem;
letter-spacing: 0.15em;
text-transform: uppercase;
padding: 0.6rem 0;
position: relative;
z-index: 50;
}
.top-bar .container {
display: flex;
justify-content: space-between;
align-items: center;
gap: 2rem;
}
.top-bar a {
opacity: 0.75;
transition: opacity 0.2s;
}
.top-bar a:hover { opacity: 1; color: var(--wsu-red-bright); }
.top-bar .top-meta {
display: flex;
gap: 1.5rem;
}
@media (max-width: 720px) {
.top-bar .top-meta { display: none; }
}
/* ============================================
Navigation
============================================ */
.nav {
position: sticky;
top: 0;
z-index: 40;
background: rgba(250, 247, 242, 0.92);
backdrop-filter: blur(20px) saturate(140%);
-webkit-backdrop-filter: blur(20px) saturate(140%);
border-bottom: 1px solid var(--whisper);
transition: all 0.3s var(--ease-out);
}
.nav.scrolled {
background: rgba(250, 247, 242, 0.98);
box-shadow: var(--shadow-sm);
}
.nav-inner {
display: flex;
align-items: center;
justify-content: space-between;
padding-block: 1.1rem;
gap: 2rem;
}
.brand {
display: flex;
align-items: center;
gap: 0.9rem;
font-family: var(--font-display);
font-size: 1.05rem;
letter-spacing: 0.02em;
color: var(--ink);
}
.brand-mark {
width: 44px;
height: 44px;
display: grid;
place-items: center;
background: var(--wsu-red);
color: var(--ivory);
font-family: var(--font-display);
font-weight: 600;
font-size: 1.15rem;
letter-spacing: 0;
position: relative;
flex-shrink: 0;
}
.brand-mark::after {
content: '';
position: absolute;
inset: 3px;
border: 1px solid rgba(250, 247, 242, 0.35);
pointer-events: none;
}
.brand-text { display: flex; flex-direction: column; line-height: 1.1; }
.brand-text strong { font-weight: 500; }
.brand-text small {
font-family: var(--font-sans);
font-size: 0.65rem;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--slate);
margin-top: 2px;
}
.nav-links {
display: flex;
align-items: center;
gap: 2rem;
font-family: var(--font-sans);
font-size: 0.88rem;
font-weight: 500;
letter-spacing: 0.02em;
}
.nav-links li { list-style: none; position: relative; }
.nav-links > li > a {
display: inline-block;
padding: 0.5rem 0;
position: relative;
color: var(--ink-soft);
}
.nav-links > li > a::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0;
height: 1px;
background: var(--wsu-red);
transition: width 0.3s var(--ease-out);
}
.nav-links > li > a:hover::after,
.nav-links > li.active > a::after { width: 100%; }
.nav-links > li.active > a { color: var(--wsu-red); }
.nav-links > li > a:hover { color: var(--wsu-red); }
/* Dropdown menus */
.has-dropdown > a::before {
content: '';
display: inline-block;
width: 6px;
height: 6px;
border-right: 1px solid currentColor;
border-bottom: 1px solid currentColor;
transform: rotate(45deg);
margin-right: 0.5rem;
margin-bottom: 2px;
opacity: 0.5;
transition: transform 0.2s;
}
.has-dropdown:hover > a::before { transform: rotate(225deg); opacity: 1; }
.dropdown {
position: absolute;
top: calc(100% + 0.5rem);
left: -1rem;
min-width: 280px;
background: var(--paper);
border: 1px solid var(--whisper);
box-shadow: var(--shadow-lg);
padding: 0.5rem;
opacity: 0;
visibility: hidden;
transform: translateY(-8px);
transition: all 0.25s var(--ease-out);
}
.has-dropdown:hover .dropdown,
.has-dropdown:focus-within .dropdown {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
.dropdown li { list-style: none; }
.dropdown a {
display: block;
padding: 0.7rem 1rem;
font-size: 0.85rem;
color: var(--ink-soft);
border-left: 2px solid transparent;
transition: all 0.2s var(--ease-out);
}
.dropdown a:hover {
background: var(--ivory);
border-left-color: var(--wsu-red);
color: var(--wsu-red);
padding-left: 1.4rem;
}
.nav-cta {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.65rem 1.4rem;
background: var(--wsu-red);
color: var(--ivory) !important;
font-family: var(--font-sans);
font-size: 0.82rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
transition: all 0.25s var(--ease-out);
position: relative;
overflow: hidden;
}
.nav-cta::after { display: none !important; }
.nav-cta:hover { background: var(--wsu-red-deep); transform: translateY(-1px); box-shadow: var(--shadow-red); }
/* Mobile menu */
.menu-toggle {
display: none;
background: transparent;
border: 1px solid var(--ink);
width: 44px;
height: 44px;
cursor: pointer;
position: relative;
}
.menu-toggle span {
position: absolute;
left: 11px;
right: 11px;
height: 1.5px;
background: var(--ink);
transition: all 0.3s;
}
.menu-toggle span:nth-child(1) { top: 16px; }
.menu-toggle span:nth-child(2) { top: 21px; }
.menu-toggle span:nth-child(3) { top: 26px; }
.menu-toggle.open span:nth-child(1) { top: 21px; transform: rotate(45deg); }
.menu-toggle.open span:nth-child(2) { opacity: 0; }
.menu-toggle.open span:nth-child(3) { top: 21px; transform: rotate(-45deg); }
@media (max-width: 1024px) {
.menu-toggle { display: block; }
.nav-links {
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: min(360px, 88vw);
background: var(--paper);
flex-direction: column;
align-items: flex-start;
padding: 6rem 2rem 2rem;
gap: 0;
transform: translateX(100%);
transition: transform 0.4s var(--ease-out);
box-shadow: -20px 0 60px rgba(0,0,0,0.1);
overflow-y: auto;
}
.nav-links.open { transform: translateX(0); }
.nav-links > li { width: 100%; border-bottom: 1px solid var(--whisper); }
.nav-links > li > a { display: block; padding: 1rem 0; font-size: 1rem; }
.has-dropdown > a::before { display: none; }
.dropdown {
position: static;
box-shadow: none;
border: none;
background: transparent;
opacity: 1;
visibility: visible;
transform: none;
padding: 0 0 1rem;
min-width: 0;
}
.dropdown a { font-size: 0.85rem; padding: 0.5rem 0 0.5rem 1rem; opacity: 0.75; }
.nav-cta { width: 100%; justify-content: center; margin-top: 1rem; }
}
/* ============================================
Buttons
============================================ */
.btn {
display: inline-flex;
align-items: center;
gap: 0.7rem;
padding: 0.95rem 1.8rem;
font-family: var(--font-sans);
font-size: 0.85rem;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
cursor: pointer;
border: 1px solid var(--ink);
background: transparent;
color: var(--ink);
transition: all 0.3s var(--ease-out);
position: relative;
overflow: hidden;
}
.btn::before {
content: '';
position: absolute;
inset: 0;
background: var(--ink);
transform: translateY(101%);
transition: transform 0.4s var(--ease-out);
z-index: -1;
}
.btn:hover { color: var(--ivory); }
.btn:hover::before { transform: translateY(0); }
.btn-primary { background: var(--wsu-red); border-color: var(--wsu-red); color: var(--ivory); }
.btn-primary::before { background: var(--wsu-red-deep); }
.btn-primary:hover { color: var(--ivory); border-color: var(--wsu-red-deep); }
.btn-arrow {
display: inline-block;
transition: transform 0.3s var(--ease-out);
font-family: serif;
}
.btn:hover .btn-arrow { transform: translateX(4px); }
.btn-ghost {
border: none;
padding: 0.5rem 0;
background: transparent;
color: var(--wsu-red);
border-bottom: 1px solid var(--wsu-red);
font-family: var(--font-sans);
font-size: 0.85rem;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
text-align: left;
}
.btn-ghost::before { display: none; }
.btn-ghost:hover { color: var(--wsu-red-deep); border-color: var(--wsu-red-deep); transform: translateX(2px); }
/* ============================================
Page Header (interior pages)
============================================ */
.page-header {
position: relative;
padding: clamp(5rem, 10vw, 8rem) 0 clamp(3rem, 6vw, 5rem);
background: linear-gradient(180deg, var(--ivory-warm) 0%, var(--ivory) 100%);
border-bottom: 1px solid var(--whisper);
overflow: hidden;
}
.page-header::before {
content: '';
position: absolute;
top: -100px;
right: -100px;
width: 500px;
height: 500px;
border-radius: 50%;
background: radial-gradient(circle, var(--wsu-red-glow), transparent 70%);
pointer-events: none;
}
.page-header .container { position: relative; z-index: 2; }
.breadcrumb {
font-family: var(--font-sans);
font-size: 0.78rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--slate);
margin-bottom: 1.5rem;
}
.breadcrumb a:hover { color: var(--wsu-red); }
.breadcrumb .sep { margin-inline: 0.7rem; opacity: 0.4; }
.page-title {
font-size: clamp(2.5rem, 6vw, 5rem);
margin-bottom: 1.25rem;
max-width: 900px;
}
.page-intro {
max-width: 640px;
font-size: 1.15rem;
color: var(--charcoal);
font-style: italic;
}
/* ============================================
Footer
============================================ */
.footer {
background: var(--ink);
color: var(--ivory);
padding: clamp(4rem, 8vw, 6rem) 0 2rem;
position: relative;
overflow: hidden;
}
.footer::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0;
height: 4px;
background: linear-gradient(90deg, transparent, var(--wsu-red) 30%, var(--wsu-red) 70%, transparent);
}
.footer-grid {
display: grid;
grid-template-columns: 1.4fr 1fr 1fr 1fr;
gap: 3rem;
margin-bottom: 4rem;
}
@media (max-width: 900px) {
.footer-grid { grid-template-columns: 1fr 1fr; gap: 2.5rem; }
}
@media (max-width: 520px) {
.footer-grid { grid-template-columns: 1fr; }
}
.footer h4 {
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--wsu-red-bright);
margin-bottom: 1.5rem;
}
.footer-brand p {
font-family: var(--font-display);
font-size: 1.4rem;
line-height: 1.3;
color: var(--ivory);
margin-bottom: 1.5rem;
font-style: italic;
}
.footer-brand .est {
font-family: var(--font-sans);
font-size: 0.72rem;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(--mist);
opacity: 0.7;
}
.footer ul { list-style: none; }
.footer li { margin-bottom: 0.7rem; }
.footer li a {
font-family: var(--font-sans);
font-size: 0.9rem;
color: rgba(250, 247, 242, 0.7);
transition: all 0.2s;
display: inline-block;
}
.footer li a:hover { color: var(--wsu-red-bright); transform: translateX(3px); }
.footer-address {
font-family: var(--font-sans);
font-size: 0.85rem;
line-height: 1.7;
color: rgba(250, 247, 242, 0.6);
}
.footer-address strong { color: var(--ivory); display: block; margin-bottom: 0.4rem; font-weight: 500; }
.footer-bottom {
padding-top: 2rem;
border-top: 1px solid rgba(250, 247, 242, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
font-family: var(--font-sans);
font-size: 0.78rem;
color: rgba(250, 247, 242, 0.5);
letter-spacing: 0.05em;
}
.socials { display: flex; gap: 0.8rem; }
.socials a {
width: 38px;
height: 38px;
display: grid;
place-items: center;
border: 1px solid rgba(250, 247, 242, 0.2);
border-radius: 50%;
transition: all 0.25s var(--ease-out);
color: rgba(250, 247, 242, 0.7);
}
.socials a:hover { background: var(--wsu-red); border-color: var(--wsu-red); color: var(--ivory); transform: translateY(-2px); }
.socials svg { width: 16px; height: 16px; }
/* ============================================
Reveal animations
============================================ */
.reveal {
opacity: 0;
transform: translateY(30px);
transition: opacity 0.9s var(--ease-out), transform 0.9s var(--ease-out);
}
.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; }
.reveal-delay-5 { transition-delay: 0.5s; }
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
.reveal { opacity: 1; transform: none; }
}
/* ============================================
HOME PAGE — Hero
============================================ */
.hero {
position: relative;
min-height: clamp(600px, 92vh, 900px);
display: flex;
align-items: center;
padding-block: clamp(4rem, 10vw, 8rem);
overflow: hidden;
border-bottom: 1px solid var(--whisper);
}
.hero::before {
content: '';
position: absolute;
top: 50%;
right: -200px;
transform: translateY(-50%);
width: 700px;
height: 700px;
border-radius: 50%;
background: radial-gradient(circle, var(--wsu-red-glow), transparent 65%);
pointer-events: none;
}
.hero-grid {
position: relative;
z-index: 2;
display: grid;
grid-template-columns: 1.3fr 1fr;
gap: 4rem;
align-items: center;
}
@media (max-width: 1024px) { .hero-grid { grid-template-columns: 1fr; gap: 3rem; } }
.hero-eyebrow { margin-bottom: 1.5rem; }
.hero h1 { margin-bottom: 1.75rem; }
.hero h1 .highlight {
font-style: italic;
color: var(--wsu-red);
position: relative;
display: inline-block;
}
.hero h1 .highlight::after {
content: '';
position: absolute;
left: 0;
bottom: 0.05em;
width: 100%;
height: 0.12em;
background: var(--wsu-red);
opacity: 0.18;
z-index: -1;
}
.hero-lead {
font-size: clamp(1.05rem, 1.6vw, 1.25rem);
line-height: 1.7;
color: var(--charcoal);
max-width: 540px;
margin-bottom: 2.5rem;
}
.hero-actions { display: flex; flex-wrap: wrap; gap: 1rem; }
.hero-aside {
position: relative;
padding: 2.5rem 2rem;
background: var(--paper);
border: 1px solid var(--whisper);
box-shadow: var(--shadow-md);
}
.hero-aside::before {
content: '';
position: absolute;
top: -1px;
left: -1px;
width: 60px;
height: 60px;
border-top: 3px solid var(--wsu-red);
border-left: 3px solid var(--wsu-red);
}
.hero-aside::after {
content: '';
position: absolute;
bottom: -1px;
right: -1px;
width: 60px;
height: 60px;
border-bottom: 3px solid var(--wsu-red);
border-right: 3px solid var(--wsu-red);
}
.hero-quote {
font-family: var(--font-display);
font-style: italic;
font-size: 1.4rem;
line-height: 1.4;
color: var(--ink);
margin-bottom: 1.5rem;
position: relative;
}
.hero-quote::before {
content: '“';
position: absolute;
top: -2.5rem;
left: -1rem;
font-family: var(--font-display);
font-size: 6rem;
color: var(--wsu-red);
opacity: 0.2;
line-height: 1;
}
.hero-cite {
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--slate);
padding-top: 1.5rem;
border-top: 1px solid var(--whisper);
}
.hero-cite strong { color: var(--wsu-red); display: block; margin-bottom: 0.2rem; }
/* Hero stats marquee */
.hero-stats {
position: relative;
z-index: 2;
margin-top: 4rem;
padding-top: 3rem;
border-top: 1px solid var(--whisper);
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2rem;
}
@media (max-width: 720px) { .hero-stats { grid-template-columns: repeat(2, 1fr); gap: 2rem; } }
.stat-item .stat-num {
font-family: var(--font-display);
font-size: clamp(2.5rem, 4vw, 3.5rem);
font-weight: 400;
color: var(--wsu-red);
line-height: 1;
margin-bottom: 0.5rem;
display: block;
}
.stat-item .stat-label {
font-family: var(--font-sans);
font-size: 0.75rem;
font-weight: 500;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--slate);
}
/* ============================================
HOME — Pillars Section
============================================ */
.pillars {
background: var(--paper);
border-bottom: 1px solid var(--whisper);
}
.section-header {
text-align: center;
margin-bottom: clamp(3rem, 6vw, 5rem);
max-width: 760px;
margin-inline: auto;
}
.section-header .eyebrow { justify-content: center; margin-bottom: 1.25rem; }
.section-header h2 { margin-bottom: 1.25rem; }
.section-header p {
font-size: 1.1rem;
color: var(--charcoal);
font-style: italic;
}
.pillars-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 0;
border-top: 1px solid var(--whisper);
border-left: 1px solid var(--whisper);
}
@media (max-width: 900px) { .pillars-grid { grid-template-columns: 1fr; } }
.pillar {
padding: 3rem 2.5rem;
border-right: 1px solid var(--whisper);
border-bottom: 1px solid var(--whisper);
background: var(--paper);
position: relative;
transition: all 0.4s var(--ease-out);
overflow: hidden;
}
.pillar::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 3px;
background: var(--wsu-red);
transform: scaleX(0);
transform-origin: left;
transition: transform 0.4s var(--ease-out);
}
.pillar:hover { background: var(--ivory); }
.pillar:hover::before { transform: scaleX(1); }
.pillar-num {
font-family: var(--font-mono);
font-size: 0.78rem;
letter-spacing: 0.15em;
color: var(--wsu-red);
margin-bottom: 1.5rem;
display: block;
}
.pillar h3 {
font-size: 1.6rem;
margin-bottom: 1rem;
font-style: italic;
}
.pillar p {
color: var(--charcoal);
margin-bottom: 1.75rem;
line-height: 1.65;
}
.pillar-link {
font-family: var(--font-sans);
font-size: 0.8rem;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--wsu-red);
display: inline-flex;
align-items: center;
gap: 0.6rem;
transition: gap 0.3s var(--ease-out);
}
.pillar-link:hover { gap: 1rem; color: var(--wsu-red-deep); }
/* ============================================
HOME — President's Welcome (split)
============================================ */
.split {
background: var(--ivory);
position: relative;
}
.split-grid {
display: grid;
grid-template-columns: 1fr 1.2fr;
gap: 5rem;
align-items: center;
}
@media (max-width: 900px) { .split-grid { grid-template-columns: 1fr; gap: 3rem; } }
.split-image {
position: relative;
aspect-ratio: 4/5;
background: var(--ink);
overflow: hidden;
}
.split-image::before {
content: '';
position: absolute;
top: -20px;
left: -20px;
width: 100%;
height: 100%;
border: 2px solid var(--wsu-red);
z-index: -1;
}
.split-image .placeholder {
position: absolute;
inset: 0;
display: grid;
place-items: center;
color: var(--mist);
font-family: var(--font-sans);
font-size: 0.78rem;
letter-spacing: 0.2em;
text-transform: uppercase;
background:
linear-gradient(135deg, var(--ink) 0%, var(--ink-soft) 50%, var(--charcoal) 100%);
}
.split-image .placeholder span {
padding: 1rem 2rem;
border: 1px solid rgba(250, 247, 242, 0.2);
}
.split-content .eyebrow { margin-bottom: 1.5rem; }
.split-content h2 { margin-bottom: 2rem; }
.split-content p {
color: var(--charcoal);
font-size: 1.05rem;
line-height: 1.75;
margin-bottom: 1.25rem;
}
.split-content p:first-letter {
font-family: var(--font-display);
font-size: 4rem;
float: left;
line-height: 0.85;
margin-right: 0.5rem;
margin-top: 0.3rem;
color: var(--wsu-red);
font-weight: 500;
}
.split-content p ~ p:first-letter { all: unset; }
.signature {
margin-top: 2rem;
padding-top: 2rem;
border-top: 1px solid var(--whisper);
font-family: var(--font-display);
font-style: italic;
font-size: 1.3rem;
}
.signature small {
display: block;
font-family: var(--font-sans);
font-size: 0.78rem;
font-style: normal;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--slate);
margin-top: 0.4rem;
font-weight: 500;
}
/* ============================================
HOME — Featured/News Section
============================================ */
.featured {
background: var(--paper);
border-block: 1px solid var(--whisper);
}
.featured-grid {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
gap: 0;
border-top: 1px solid var(--whisper);
border-left: 1px solid var(--whisper);
}
@media (max-width: 900px) { .featured-grid { grid-template-columns: 1fr; } }
.featured-card {
padding: 2.5rem 2rem;
border-right: 1px solid var(--whisper);
border-bottom: 1px solid var(--whisper);
position: relative;
transition: background 0.3s var(--ease-out);
display: flex;
flex-direction: column;
}
.featured-card.lead { grid-row: span 2; }
@media (max-width: 900px) {
.featured-card.lead { grid-row: auto; }
}
.featured-card:hover { background: var(--ivory); }
.tag {
font-family: var(--font-sans);
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--wsu-red);
margin-bottom: 1rem;
display: inline-block;
}
.featured-card h3 {
font-size: 1.4rem;
margin-bottom: 0.8rem;
font-style: italic;
font-weight: 500;
}
.featured-card.lead h3 { font-size: 2.2rem; line-height: 1.2; }
.featured-card .meta {
font-family: var(--font-sans);
font-size: 0.78rem;
color: var(--slate);
letter-spacing: 0.05em;
margin-bottom: 1rem;
}
.featured-card p {
color: var(--charcoal);
font-size: 0.95rem;
margin-bottom: 1.5rem;
flex: 1;
}
/* ============================================
HOME — Sponsors strip
============================================ */
.sponsors-strip {
background: var(--ink);
color: var(--ivory);
padding: clamp(4rem, 8vw, 6rem) 0;
position: relative;
overflow: hidden;
}
.sponsors-strip::before {
content: '';
position: absolute;
inset: 0;
background:
radial-gradient(ellipse 800px 300px at 30% 0%, rgba(153, 24, 47, 0.25), transparent 60%),
radial-gradient(ellipse 600px 300px at 80% 100%, rgba(184, 146, 58, 0.1), transparent 60%);
}
.sponsors-strip .container { position: relative; z-index: 2; }
.sponsors-strip .section-header h2 { color: var(--ivory); }
.sponsors-strip .section-header p { color: rgba(250, 247, 242, 0.7); }
.sponsors-strip .section-header .eyebrow { color: var(--wsu-red-bright); }
.sponsors-strip .section-header .eyebrow::before,
.sponsors-strip .section-header .eyebrow::after { background: var(--wsu-red-bright); }
.sponsor-logos {
display: grid;
grid-template-columns: repeat(6, 1fr);
gap: 0;
border-top: 1px solid rgba(250, 247, 242, 0.1);
border-left: 1px solid rgba(250, 247, 242, 0.1);
margin-bottom: 3rem;
}
@media (max-width: 900px) { .sponsor-logos { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 480px) { .sponsor-logos { grid-template-columns: repeat(2, 1fr); } }
.sponsor-logo {
aspect-ratio: 5/3;
border-right: 1px solid rgba(250, 247, 242, 0.1);
border-bottom: 1px solid rgba(250, 247, 242, 0.1);
display: grid;
place-items: center;
font-family: var(--font-display);
font-style: italic;
font-size: 1.05rem;
color: rgba(250, 247, 242, 0.55);
transition: all 0.3s var(--ease-out);
text-align: center;
padding: 1rem;
}
.sponsor-logo:hover {
background: rgba(153, 24, 47, 0.15);
color: var(--ivory);
letter-spacing: 0.02em;
}
/* ============================================
HOME — CTA Banner
============================================ */
.cta-banner {
background: var(--ivory-warm);
border-bottom: 1px solid var(--whisper);
position: relative;
overflow: hidden;
}
.cta-banner::before {
content: 'WSLSA';
position: absolute;
font-family: var(--font-display);
font-size: 32rem;
color: var(--wsu-red);
opacity: 0.04;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
letter-spacing: -0.05em;
pointer-events: none;
white-space: nowrap;
}
.cta-banner .container { position: relative; z-index: 2; }
.cta-content { max-width: 760px; margin-inline: auto; text-align: center; }
.cta-content h2 {
font-size: clamp(2rem, 5vw, 3.5rem);
margin-bottom: 1.5rem;
}
.cta-content h2 em { color: var(--wsu-red); }
.cta-content p {
font-size: 1.15rem;
color: var(--charcoal);
font-style: italic;
margin-bottom: 2.5rem;
}
.cta-actions {
display: flex;
justify-content: center;
gap: 1rem;
flex-wrap: wrap;
}
/* ============================================
COMPETITIONS PAGE
============================================ */
.comp-overview {
background: var(--paper);
padding-bottom: 0;
}
.comp-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 0;
border-top: 1px solid var(--whisper);
border-left: 1px solid var(--whisper);
margin-top: 4rem;
}
@media (max-width: 720px) { .comp-grid { grid-template-columns: 1fr; } }
.comp-card {
padding: 2.5rem;
border-right: 1px solid var(--whisper);
border-bottom: 1px solid var(--whisper);
position: relative;
transition: all 0.3s var(--ease-out);
background: var(--paper);
display: flex;
flex-direction: column;
}
.comp-card:hover { background: var(--ivory); }
.comp-card .comp-tag {
font-family: var(--font-mono);
font-size: 0.72rem;
letter-spacing: 0.1em;
color: var(--wsu-red);
margin-bottom: 1rem;
}
.comp-card h3 {
font-size: 1.7rem;
font-style: italic;
margin-bottom: 1rem;
}
.comp-card p { color: var(--charcoal); margin-bottom: 1.5rem; flex: 1; }
.comp-meta {
display: flex;
gap: 1.5rem;
flex-wrap: wrap;
padding-top: 1.5rem;
border-top: 1px solid var(--whisper);
font-family: var(--font-sans);
font-size: 0.78rem;
color: var(--slate);
margin-bottom: 1.5rem;
}
.comp-meta strong {
display: block;
color: var(--ink);
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
font-size: 0.7rem;
margin-bottom: 0.3rem;
}
/* Competition detail sections */
.comp-detail {
padding: clamp(3rem, 6vw, 5rem) 0;
border-bottom: 1px solid var(--whisper);
}
.comp-detail:nth-child(even) { background: var(--ivory); }
.comp-detail-grid {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 4rem;
align-items: start;
}
@media (max-width: 900px) { .comp-detail-grid { grid-template-columns: 1fr; gap: 2rem; } }
.comp-detail-aside {
position: sticky;
top: 100px;
}
.comp-detail-aside .num {
font-family: var(--font-display);
font-size: 5rem;
color: var(--wsu-red);
line-height: 0.9;
margin-bottom: 1rem;
font-weight: 400;
}
.comp-detail-aside h3 {
font-size: 2rem;
margin-bottom: 1rem;
}
.comp-detail-aside .comp-tag { margin-bottom: 0.5rem; }
.comp-info {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1.5rem;
margin-top: 2rem;
padding-top: 2rem;
border-top: 1px solid var(--whisper);
}
.info-item .info-label {
font-family: var(--font-sans);
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--slate);
margin-bottom: 0.4rem;
display: block;
}
.info-item .info-value {
font-family: var(--font-display);
font-size: 1.05rem;
color: var(--ink);
}
.comp-detail-body p {
color: var(--charcoal);
font-size: 1.05rem;
line-height: 1.8;
margin-bottom: 1.25rem;
}
.comp-detail-body h4 {
font-size: 1.3rem;
font-style: italic;
margin: 2rem 0 1rem;
color: var(--wsu-red);
}
.comp-detail-body ul { padding-left: 0; list-style: none; margin-bottom: 1.5rem; }
.comp-detail-body ul li {
position: relative;
padding-left: 2rem;
margin-bottom: 0.7rem;
color: var(--charcoal);
}
.comp-detail-body ul li::before {
content: '§';
position: absolute;
left: 0;
top: 0;
color: var(--wsu-red);
font-family: var(--font-display);
font-size: 1.3rem;
font-weight: 600;
line-height: 1.4;
}
.comp-detail-body .tagline {
font-family: var(--font-display);
font-style: italic;
font-size: 1.4rem;
padding: 1.5rem 0 1.5rem 2rem;
border-left: 3px solid var(--wsu-red);
color: var(--ink);
margin: 2rem 0;
}
/* Timeline */
.timeline-section { background: var(--ink); color: var(--ivory); }
.timeline-section .section-header h2 { color: var(--ivory); }
.timeline-section .section-header p { color: rgba(250, 247, 242, 0.7); }
.timeline-section .section-header .eyebrow { color: var(--wsu-red-bright); }
.timeline-section .section-header .eyebrow::before,
.timeline-section .section-header .eyebrow::after { background: var(--wsu-red-bright); }
.timeline {
position: relative;
max-width: 760px;
margin: 4rem auto 0;
padding-left: 2rem;
}
.timeline::before {
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 1px;
background: linear-gradient(180deg, transparent, rgba(250, 247, 242, 0.3) 10%, rgba(250, 247, 242, 0.3) 90%, transparent);
}
.timeline-item {
position: relative;
padding: 1.5rem 0 2rem 2.5rem;
}
.timeline-item::before {
content: '';
position: absolute;
left: -7px;
top: 2rem;
width: 14px;
height: 14px;
background: var(--wsu-red);
border: 2px solid var(--ink);
outline: 1px solid var(--wsu-red);
border-radius: 50%;
}
.timeline-month {
font-family: var(--font-mono);
font-size: 0.78rem;
letter-spacing: 0.15em;
color: var(--wsu-red-bright);
text-transform: uppercase;
margin-bottom: 0.5rem;
}
.timeline-item h4 {
font-family: var(--font-display);
font-size: 1.4rem;
font-style: italic;
color: var(--ivory);
margin-bottom: 0.5rem;
}
.timeline-item p {
color: rgba(250, 247, 242, 0.7);
font-size: 0.95rem;
}
/* ============================================
PUBLICATIONS PAGE
============================================ */
.pub-tabs {
display: flex;
justify-content: center;
gap: 0;
margin: 0 auto 4rem;
border-bottom: 1px solid var(--whisper);
flex-wrap: wrap;
}
.pub-tab {
padding: 1.25rem 2.5rem;
font-family: var(--font-sans);
font-size: 0.85rem;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--slate);
background: transparent;
border: none;
border-bottom: 2px solid transparent;
margin-bottom: -1px;
cursor: pointer;
transition: all 0.25s var(--ease-out);
}
.pub-tab:hover { color: var(--ink); }
.pub-tab.active { color: var(--wsu-red); border-bottom-color: var(--wsu-red); }
.pub-panel { display: none; animation: fadeIn 0.5s var(--ease-out); }
.pub-panel.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
/* Newsletter cards */
.newsletter-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 0;
border-top: 1px solid var(--whisper);
border-left: 1px solid var(--whisper);
}
.newsletter-card {
padding: 2.5rem 2rem;
border-right: 1px solid var(--whisper);
border-bottom: 1px solid var(--whisper);
background: var(--paper);
transition: all 0.3s var(--ease-out);
display: flex;
flex-direction: column;
position: relative;
}
.newsletter-card:hover { background: var(--ivory); transform: translateY(-2px); }
.newsletter-card .issue-num {
font-family: var(--font-mono);
font-size: 0.72rem;
letter-spacing: 0.15em;
color: var(--wsu-red);
margin-bottom: 1rem;
}
.newsletter-card h3 {
font-size: 1.4rem;
font-style: italic;
margin-bottom: 0.6rem;
}
.newsletter-card .date {
font-family: var(--font-sans);
font-size: 0.78rem;
letter-spacing: 0.05em;
color: var(--slate);
margin-bottom: 1rem;
}
.newsletter-card p {
color: var(--charcoal);
font-size: 0.95rem;
margin-bottom: 1.5rem;
flex: 1;
}
/* Opportunities Board */
.opps-toolbar {
display: flex;
gap: 1rem;
flex-wrap: wrap;
margin-bottom: 2rem;
padding: 1.5rem;
background: var(--ivory-warm);
border: 1px solid var(--whisper);
}
.opps-search {
flex: 1;
min-width: 200px;
padding: 0.75rem 1rem;
border: 1px solid var(--whisper);
background: var(--paper);
font-family: var(--font-sans);
font-size: 0.9rem;
color: var(--ink);
}
.opps-search:focus { outline: none; border-color: var(--wsu-red); }
.opps-filter {
padding: 0.75rem 1rem;
border: 1px solid var(--whisper);
background: var(--paper);
font-family: var(--font-sans);
font-size: 0.85rem;
color: var(--ink);
cursor: pointer;
letter-spacing: 0.05em;
}
.opps-filter:focus { outline: none; border-color: var(--wsu-red); }
.opps-list {
border-top: 1px solid var(--whisper);
}
.opp-item {
display: grid;
grid-template-columns: 140px 1fr auto;
gap: 2rem;
padding: 2rem 1.5rem;
border-bottom: 1px solid var(--whisper);
background: var(--paper);
transition: all 0.3s var(--ease-out);
align-items: start;
position: relative;
}
.opp-item:hover { background: var(--ivory); padding-left: 2rem; }
.opp-item:hover .opp-cta { color: var(--wsu-red-deep); gap: 1rem; }
@media (max-width: 720px) {
.opp-item { grid-template-columns: 1fr; gap: 0.75rem; }
}
.opp-meta-col {
font-family: var(--font-sans);
font-size: 0.78rem;
}
.opp-type {
display: inline-block;
padding: 0.3rem 0.7rem;
background: var(--wsu-red);
color: var(--ivory);
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
font-size: 0.7rem;
margin-bottom: 0.5rem;
}
.opp-deadline {
color: var(--slate);
font-size: 0.78rem;
letter-spacing: 0.05em;
display: block;
margin-top: 0.5rem;
}
.opp-deadline strong { color: var(--ink); display: block; font-size: 0.7rem; letter-spacing: 0.15em; text-transform: uppercase; margin-bottom: 0.2rem; }
.opp-body h4 {
font-family: var(--font-display);
font-size: 1.3rem;
font-style: italic;
margin-bottom: 0.4rem;
color: var(--ink);
}
.opp-body .org {
font-family: var(--font-sans);
font-size: 0.85rem;
color: var(--wsu-red);
font-weight: 500;
margin-bottom: 0.7rem;
letter-spacing: 0.02em;
}
.opp-body p { color: var(--charcoal); font-size: 0.95rem; line-height: 1.6; }
.opp-cta {
display: inline-flex;
align-items: center;
gap: 0.6rem;
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--wsu-red);
white-space: nowrap;
align-self: center;
transition: all 0.25s var(--ease-out);
}
@media (max-width: 720px) { .opp-cta { align-self: flex-start; } }
/* Highlights / Hall of Fame */
.highlights-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 2rem;
}
.highlight-card {
background: var(--paper);
border: 1px solid var(--whisper);
padding: 2rem;
position: relative;
transition: all 0.4s var(--ease-out);
display: flex;
flex-direction: column;
}
.highlight-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 0;
background: var(--wsu-red);
transition: height 0.4s var(--ease-out);
}
.highlight-card:hover { box-shadow: var(--shadow-md); }
.highlight-card:hover::before { height: 100%; }
.highlight-portrait {
width: 80px;
height: 80px;
border-radius: 50%;
background: linear-gradient(135deg, var(--wsu-red), var(--wsu-red-deep));
display: grid;
place-items: center;
color: var(--ivory);
font-family: var(--font-display);
font-size: 1.8rem;
font-weight: 500;
margin-bottom: 1.5rem;
}
.highlight-card h4 {
font-family: var(--font-display);
font-size: 1.4rem;
margin-bottom: 0.3rem;
}
.highlight-card .role {
font-family: var(--font-sans);
font-size: 0.78rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--wsu-red);
margin-bottom: 1rem;
font-weight: 500;
}
.highlight-card .achievement {
font-style: italic;
color: var(--charcoal);
line-height: 1.6;
margin-bottom: 1rem;
flex: 1;
}
.highlight-card .date {
font-family: var(--font-sans);
font-size: 0.78rem;
color: var(--slate);
padding-top: 1rem;
border-top: 1px solid var(--whisper);
letter-spacing: 0.05em;
}
/* ============================================
SPONSORS PAGE
============================================ */
.sponsor-tier {
margin-bottom: 5rem;
}
.tier-header {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 2rem;
padding-bottom: 1.5rem;
margin-bottom: 2.5rem;
border-bottom: 1px solid var(--ink);
flex-wrap: wrap;
}
.tier-header h2 {
font-size: clamp(2rem, 4vw, 3rem);
font-style: italic;
}
.tier-header h2 span {
font-family: var(--font-mono);
font-style: normal;
font-size: 0.85rem;
color: var(--wsu-red);
letter-spacing: 0.15em;
margin-right: 1rem;
vertical-align: middle;
}
.tier-meta {
font-family: var(--font-sans);
font-size: 0.78rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--slate);
}
.tier-grid-platinum {
display: grid;
grid-template-columns: 1fr;
gap: 0;
}
.tier-grid-gold { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0; }
.tier-grid-silver { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; }
.tier-grid-bronze { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }
@media (max-width: 900px) {
.tier-grid-gold, .tier-grid-silver, .tier-grid-bronze { grid-template-columns: repeat(2, 1fr); }
}
.sponsor-block {
border: 1px solid var(--whisper);
margin: -0.5px;
padding: 3rem 2rem;
background: var(--paper);
transition: all 0.4s var(--ease-out);
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
position: relative;
min-height: 200px;
}
.sponsor-block.platinum { min-height: 320px; padding: 4rem 3rem; flex-direction: row; gap: 3rem; align-items: center; text-align: left; }
.sponsor-block.gold { min-height: 280px; }
.sponsor-block.silver { min-height: 220px; }
.sponsor-block.bronze { min-height: 180px; padding: 2rem 1.5rem; }
@media (max-width: 720px) { .sponsor-block.platinum { flex-direction: column; text-align: center; } }
.sponsor-block:hover {
background: var(--ivory);
z-index: 2;
border-color: var(--wsu-red);
}
.sponsor-block .logo-mark {
width: 100%;
max-width: 200px;
aspect-ratio: 5/3;
margin: 0 auto 1.5rem;
background: var(--ivory-warm);
display: grid;
place-items: center;
font-family: var(--font-display);
font-style: italic;
color: var(--charcoal);
border: 1px dashed var(--mist);
font-size: 1.05rem;
}
.sponsor-block.platinum .logo-mark { max-width: 280px; margin: 0; flex-shrink: 0; }
.sponsor-block.bronze .logo-mark { max-width: 140px; font-size: 0.85rem; }
.sponsor-block h3 {
font-family: var(--font-display);
font-size: 1.5rem;
font-style: italic;
margin-bottom: 0.5rem;
}
.sponsor-block.platinum h3 { font-size: 2rem; }
.sponsor-block.bronze h3 { font-size: 1.1rem; font-style: normal; font-weight: 500; }
.sponsor-block p {
color: var(--charcoal);
font-size: 0.9rem;
line-height: 1.6;
}
.sponsor-block.platinum p { font-size: 1.05rem; line-height: 1.75; }
.sponsor-info-block { flex: 1; }
/* ============================================
GENERIC PAGE — content for scaffolded pages
============================================ */
.content-section { background: var(--paper); }
.content-block {
max-width: var(--reading-width);
margin: 0 auto;
}
.content-block h2 { margin-block: 2.5rem 1.25rem; }
.content-block h3 { margin-block: 2rem 1rem; font-style: italic; color: var(--wsu-red); }
.content-block p {
font-size: 1.08rem;
line-height: 1.8;
color: var(--charcoal);
margin-bottom: 1.25rem;
}
.content-block p strong { color: var(--ink); font-weight: 600; }
.placeholder-note {
background: var(--ivory-warm);
border-left: 3px solid var(--gold);
padding: 1.25rem 1.5rem;
margin: 1.5rem 0;
font-family: var(--font-sans);
font-size: 0.88rem;
color: var(--charcoal);
}
.placeholder-note strong { color: var(--wsu-red); display: block; margin-bottom: 0.3rem; letter-spacing: 0.05em; text-transform: uppercase; font-size: 0.78rem; }
/* Committee grid */
.committee-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
gap: 0;
border-top: 1px solid var(--whisper);
border-left: 1px solid var(--whisper);
}
.member-card {
padding: 2rem 1.5rem;
border-right: 1px solid var(--whisper);
border-bottom: 1px solid var(--whisper);
text-align: center;
background: var(--paper);
transition: all 0.3s var(--ease-out);
}
.member-card:hover { background: var(--ivory); }
.member-portrait {
width: 140px;
height: 140px;
border-radius: 50%;
margin: 0 auto 1.5rem;
background: linear-gradient(135deg, var(--ink), var(--charcoal));
display: grid;
place-items: center;
color: var(--mist);
font-family: var(--font-sans);
font-size: 0.7rem;
letter-spacing: 0.15em;
text-transform: uppercase;
}
.member-card h4 {
font-family: var(--font-display);
font-size: 1.25rem;
margin-bottom: 0.3rem;
}
.member-card .position {
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--wsu-red);
margin-bottom: 1rem;
}
.member-card .bio {
font-size: 0.85rem;
color: var(--charcoal);
line-height: 1.6;
font-style: italic;
}
/* Memberships pricing */
.tiers-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 0;
border-top: 1px solid var(--whisper);
border-left: 1px solid var(--whisper);
}
@media (max-width: 900px) { .tiers-grid { grid-template-columns: 1fr; } }
.tier-card {
padding: 3rem 2.5rem;
border-right: 1px solid var(--whisper);
border-bottom: 1px solid var(--whisper);
background: var(--paper);
position: relative;
transition: all 0.3s var(--ease-out);
display: flex;
flex-direction: column;
}
.tier-card.featured { background: var(--ink); color: var(--ivory); }
.tier-card.featured h3, .tier-card.featured .price { color: var(--ivory); }
.tier-card.featured .tier-feat { color: rgba(250, 247, 242, 0.85); border-color: rgba(250, 247, 242, 0.15); }
.tier-card.featured::before {
content: 'MOST POPULAR';
position: absolute;
top: 0;
right: 0;
background: var(--wsu-red);
color: var(--ivory);
padding: 0.4rem 1rem;
font-family: var(--font-sans);
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.15em;
}
.tier-card h3 {
font-family: var(--font-display);
font-size: 1.6rem;
font-style: italic;
margin-bottom: 0.5rem;
}
.tier-card .tier-tag {
font-family: var(--font-mono);
font-size: 0.72rem;
letter-spacing: 0.15em;
color: var(--wsu-red);
margin-bottom: 1rem;
}
.tier-card.featured .tier-tag { color: var(--wsu-red-bright); }
.price {
font-family: var(--font-display);
font-size: 3rem;
font-weight: 400;
margin-bottom: 0.3rem;
line-height: 1;
}
.price .currency { font-size: 1.3rem; vertical-align: top; margin-right: 0.2rem; opacity: 0.7; }
.price .period { font-size: 0.85rem; font-family: var(--font-sans); color: var(--slate); margin-left: 0.4rem; letter-spacing: 0.05em; }
.tier-card.featured .price .period { color: var(--mist); }
.tier-card ul { list-style: none; margin: 1.5rem 0 2rem; flex: 1; }
.tier-feat {
padding: 0.7rem 0;
font-size: 0.92rem;
color: var(--charcoal);
border-bottom: 1px solid var(--whisper);
display: flex;
gap: 0.7rem;
align-items: flex-start;
}
.tier-feat::before {
content: '✓';
color: var(--wsu-red);
font-weight: 600;
flex-shrink: 0;
}
.tier-card.featured .tier-feat::before { color: var(--wsu-red-bright); }
/* Events list */
.events-list { border-top: 1px solid var(--whisper); }
.event-row {
display: grid;
grid-template-columns: 100px 1fr auto;
gap: 2.5rem;
padding: 2.5rem 1rem;
border-bottom: 1px solid var(--whisper);
background: var(--paper);
transition: all 0.3s var(--ease-out);
align-items: center;
}
.event-row:hover { background: var(--ivory); padding-left: 1.5rem; }
@media (max-width: 720px) { .event-row { grid-template-columns: 1fr; gap: 1rem; padding: 1.75rem 1rem; } }
.event-date {
text-align: center;
border: 1px solid var(--ink);
padding: 0.8rem 0.5rem;
}
.event-date .day {
font-family: var(--font-display);
font-size: 2.2rem;
font-weight: 400;
line-height: 1;
color: var(--wsu-red);
}
.event-date .month {
font-family: var(--font-sans);
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--ink);
margin-top: 0.4rem;
display: block;
}
.event-info h4 {
font-family: var(--font-display);
font-size: 1.4rem;
font-style: italic;
margin-bottom: 0.4rem;
}
.event-info .ev-meta {
font-family: var(--font-sans);
font-size: 0.82rem;
color: var(--slate);
letter-spacing: 0.05em;
margin-bottom: 0.6rem;
}
.event-info p { color: var(--charcoal); font-size: 0.95rem; }
/* Contact form */
.contact-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: start;
}
@media (max-width: 900px) { .contact-grid { grid-template-columns: 1fr; gap: 3rem; } }
.contact-info h3 {
font-size: 1.5rem;
font-style: italic;
margin-bottom: 1.5rem;
}
.contact-info .info-row {
padding: 1.25rem 0;
border-bottom: 1px solid var(--whisper);
}
.contact-info .info-row strong {
display: block;
font-family: var(--font-sans);
font-size: 0.72rem;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--wsu-red);
margin-bottom: 0.3rem;
}
.contact-info .info-row span,
.contact-info .info-row a {
font-size: 1rem;
color: var(--ink);
font-family: var(--font-display);
font-style: italic;
}
.contact-info .info-row a:hover { color: var(--wsu-red); }
.form-field { margin-bottom: 1.5rem; }
.form-field label {
display: block;
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--ink);
margin-bottom: 0.5rem;
}
.form-field input,
.form-field select,
.form-field textarea {
width: 100%;
padding: 0.85rem 1rem;
border: 1px solid var(--whisper);
background: var(--paper);
font-family: var(--font-serif);
font-size: 1rem;
color: var(--ink);
transition: border-color 0.25s var(--ease-out);
}
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus {
outline: none;
border-color: var(--wsu-red);
box-shadow: 0 0 0 3px var(--wsu-red-glow);
}
.form-field textarea { min-height: 140px; resize: vertical; }
/* ============================================
Loading states
============================================ */
.loading {
text-align: center;
padding: 4rem 2rem;
color: var(--slate);
font-style: italic;
}
.empty-state {
text-align: center;
padding: 4rem 2rem;
background: var(--ivory-warm);
border: 1px dashed var(--whisper);
}
.empty-state p { color: var(--slate); font-style: italic; }