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.

0 Years of Service
0 Active Members
0 Annual Competitions
0 Industry Partners
What We Stand For

Three pillars, one purpose.

Everything we do at WSLSA flows from a single conviction — that the law students of Western Sydney deserve every advantage afforded to their peers, and more.

— 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
President Portrait
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
Our 2026 Partners

In the company of giants.

We are proud to partner with the firms, chambers and organisations that share our commitment to the next generation of legal professionals.

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; }