Merge branch 'feature/pilzno-brand-alignment'

This commit is contained in:
Yisroel Baum 2026-06-22 21:25:28 +03:00
commit b6982433ca
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
18 changed files with 439 additions and 397 deletions

View file

@ -8,12 +8,12 @@ describe('about page', () => {
cy.contains('Torah Media').should('be.visible')
cy.contains('About').should('be.visible')
cy.contains('Contact').should('be.visible')
cy.contains('Donate').should('be.visible')
cy.contains('Invest in Pilzno').should('be.visible')
})
cy.get('[data-cy="about-hero"]').within(() => {
cy.contains('h1', 'About Rabbi Gerzi').should('be.visible')
cy.contains('Healthy, Integrated and Balanced Torah living')
cy.contains('Integrated Torah life')
.should('be.visible')
cy.get('[data-cy="about-hero-image"]')
.should('be.visible')
@ -121,7 +121,7 @@ describe('about page', () => {
cy.get('[data-cy="footer"]').within(() => {
cy.contains('Torah Media').should('be.visible')
cy.contains('About').should('be.visible')
cy.contains('Donate').should('be.visible')
cy.contains('Invest in Pilzno').should('be.visible')
cy.contains('Contact').should('be.visible')
cy.contains(/Rabbi Gerzi 2025/).should('be.visible')
})

View file

@ -8,7 +8,7 @@ describe('contact page', () => {
cy.contains('Torah Media').should('be.visible')
cy.contains('About').should('be.visible')
cy.contains('Contact').should('be.visible')
cy.contains('Donate').should('be.visible')
cy.contains('Invest in Pilzno').should('be.visible')
})
cy.get('[data-cy="contact-hero"]').within(() => {
@ -111,7 +111,7 @@ describe('contact page', () => {
cy.get('[data-cy="footer"]').within(() => {
cy.contains('Torah Media').should('be.visible')
cy.contains('About').should('be.visible')
cy.contains('Donate').should('be.visible')
cy.contains('Invest in Pilzno').should('be.visible')
cy.contains('Contact').should('be.visible')
cy.contains(/Rabbi Gerzi 2025/).should('be.visible')
})

View file

@ -8,14 +8,14 @@ describe('homepage hero', () => {
cy.contains('Torah Media').should('be.visible')
cy.contains('About').should('be.visible')
cy.contains('Contact').should('be.visible')
cy.contains('Donate').should('be.visible')
cy.contains('Invest in Pilzno').should('be.visible')
})
})
it('links the navbar Donate item to Causematch', () => {
it('links the navbar investment item to Causematch', () => {
const donateHref = 'https://causematch.com/pilzno_donate'
cy.contains('header.site-header a', 'Donate')
cy.contains('header.site-header a', 'Invest in Pilzno')
.should('be.visible')
.and('have.attr', 'href', donateHref)
.and('have.attr', 'target', '_blank')
@ -30,74 +30,46 @@ describe('homepage hero', () => {
cy.contains('Torah Media').should('be.visible')
cy.contains('About').should('be.visible')
cy.contains('Contact').should('be.visible')
cy.contains('Donate').should('be.visible')
cy.contains('Invest in Pilzno').should('be.visible')
})
cy.contains('h1', 'Torah Media').should('be.visible')
})
it('renders the hero headline with italic emphasis', () => {
it('renders the Rabbi Gerzi hero in Pilzno language', () => {
cy.get('[data-cy="hero"]').within(() => {
cy.contains('upgrade our lives').should('be.visible')
cy.contains('em', 'healthy').should('be.visible')
cy.contains('em', 'integrated').should('be.visible')
cy.contains('em', 'balanced').should('be.visible')
cy.contains('Torah existence').should('be.visible')
cy.contains('Rabbi Yehoshua Gerzi').should('be.visible')
cy.contains('PILZNO').should('be.visible')
cy.contains('RAMAT BET SHEMESH').should('be.visible')
cy.contains('h1', 'Rabbi Yehoshua Gerzi').should('be.visible')
cy.contains('Create Geula').should('be.visible')
cy.contains('Elevate Life').should('be.visible')
cy.contains('Geula mindset').should('be.visible')
cy.contains('Integrated Torah life').should('be.visible')
})
})
it('renders the rabbi portrait image', () => {
cy.get('[data-cy="hero-portrait"]')
it('renders the rabbi portrait image in the brand hero', () => {
cy.get('[data-cy="hero-rabbi-portrait"]')
.should('be.visible')
.and('have.attr', 'alt')
.and('match', /Rabbi Yehoshua Gerzi/i)
})
it('lets the rabbi portrait rise above the circular frame', () => {
cy.get<HTMLImageElement>('[data-cy="hero-portrait"]').then(
(portraitElements) => {
const portraitImage = portraitElements[0]
const frameElement = portraitImage.parentElement
it('uses Pilzno brand colors and typography tokens', () => {
cy.get('[data-cy="hero"]').then((heroElements) => {
const heroStyle = getComputedStyle(heroElements[0])
const appDocument = heroElements[0].ownerDocument
const documentStyle = getComputedStyle(appDocument.documentElement)
if (frameElement === null) {
throw new Error('Portrait frame is missing')
}
const frameStyle = getComputedStyle(frameElement)
expect(frameStyle.overflowX).to.equal('visible')
expect(frameStyle.overflowY).to.equal('visible')
expect(portraitImage.getBoundingClientRect().top).to.be.lessThan(
frameElement.getBoundingClientRect().top,
)
},
)
})
it('extends the circular background to the portrait base edges', () => {
cy.get<HTMLImageElement>('[data-cy="hero-portrait"]').then(
(portraitElements) => {
const portraitImage = portraitElements[0]
const frameElement = portraitImage.parentElement
if (frameElement === null) {
throw new Error('Portrait frame is missing')
}
const portraitBounds = portraitImage.getBoundingClientRect()
const frameBounds = frameElement.getBoundingClientRect()
const backgroundStyle = getComputedStyle(frameElement, '::before')
const backgroundWidth = Number.parseFloat(backgroundStyle.width)
const backgroundLeft =
frameBounds.left + (frameBounds.width - backgroundWidth) / 2
const backgroundRight = backgroundLeft + backgroundWidth
expect(backgroundStyle.content).to.not.equal('none')
expect(backgroundWidth).to.be.closeTo(portraitBounds.width, 1)
expect(backgroundLeft).to.be.closeTo(portraitBounds.left, 1)
expect(backgroundRight).to.be.closeTo(portraitBounds.right, 1)
},
)
expect(documentStyle.getPropertyValue('--color-brand-purple').trim())
.to.equal('#2a1f3d')
expect(documentStyle.getPropertyValue('--color-gold').trim())
.to.equal('#c9a84c')
expect(documentStyle.getPropertyValue('--font-display').trim())
.to.contain('Cormorant Garamond')
expect(documentStyle.getPropertyValue('--font-ui').trim())
.to.contain('Jost')
expect(heroStyle.backgroundColor).to.equal('rgb(42, 31, 61)')
})
})
})
@ -112,8 +84,9 @@ describe('homepage discover path section', () => {
.should('be.visible')
cy.contains('Rabbi Yehoshua Gerzi has dedicated his life')
.should('be.visible')
cy.contains('Healthy, Integrated and Balanced Torah Living')
cy.contains('Integrated Torah life')
.should('be.visible')
cy.contains('Geula mindset').should('be.visible')
cy.contains('Ramat Beit Shemesh').should('be.visible')
cy.contains('Pilzno Institute of Higher Learning').should('be.visible')
})
@ -577,16 +550,16 @@ describe('homepage get involved and footer', () => {
cy.get('[data-cy="footer"]').within(() => {
cy.contains('Torah Media').should('be.visible')
cy.contains('About').should('be.visible')
cy.contains('Donate').should('be.visible')
cy.contains('Invest in Pilzno').should('be.visible')
cy.contains('Contact').should('be.visible')
cy.contains(/Rabbi Gerzi 2025/).should('be.visible')
})
})
it('links the footer Donate item to Causematch', () => {
it('links the footer investment item to Causematch', () => {
const donateHref = 'https://causematch.com/pilzno_donate'
cy.contains('[data-cy="footer"] a', 'Donate')
cy.contains('[data-cy="footer"] a', 'Invest in Pilzno')
.should('be.visible')
.and('have.attr', 'href', donateHref)
.and('have.attr', 'target', '_blank')

View file

@ -9,7 +9,7 @@ describe('media page sets', () => {
cy.contains('Torah Media').should('be.visible')
cy.contains('About').should('be.visible')
cy.contains('Contact').should('be.visible')
cy.contains('Donate').should('be.visible')
cy.contains('Invest in Pilzno').should('be.visible')
})
cy.contains('h1', 'Torah Media').should('be.visible')
cy.get('[data-cy="media-set-grid"]').should('be.visible')

View file

@ -12,7 +12,7 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,700&family=Inter:wght@400;500;600;700&display=swap"
href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500&family=Frank+Ruhl+Libre:wght@400;500&family=Jost:wght@300;400;500;600;700&family=Lora:ital,wght@1,400;1,500&display=swap"
rel="stylesheet"
>
</head>

View file

@ -1,14 +1,27 @@
:root {
--color-cream: #f4efe1;
--color-slate: #2b3f4e;
--color-slate-dark: #213240;
--color-olive: #5e6b4c;
--color-text: #1f1f1f;
--color-text-muted: #5a5a5a;
--color-white: #ffffff;
--color-border: #e6e1d2;
--font-serif: 'Merriweather', Georgia, serif;
--font-sans: 'Inter', system-ui, -apple-system, sans-serif;
--color-brand-purple: #2a1f3d;
--color-brand-purple-dark: #20182f;
--color-gold: #c9a84c;
--color-cream: #faf9f5;
--color-light-bg: #f5f2ec;
--color-body-text: #3d3530;
--color-text: var(--color-body-text);
--color-text-muted: #756b62;
--color-border: #ded6c8;
--color-white: var(--color-cream);
--color-slate: var(--color-brand-purple);
--color-slate-dark: var(--color-brand-purple-dark);
--color-olive: var(--color-gold);
--color-pillar-physical: #dce6d4;
--color-pillar-relationships: #e8d8d4;
--color-pillar-wisdom: #dbd6e8;
--color-pillar-guidance: #d0dce8;
--font-display: 'Cormorant Garamond', Georgia, serif;
--font-ui: 'Jost', system-ui, -apple-system, sans-serif;
--font-hebrew: 'Frank Ruhl Libre', serif;
--font-quote: 'Lora', Georgia, serif;
--font-serif: var(--font-display);
--font-sans: var(--font-ui);
}
* {
@ -21,7 +34,7 @@ body {
padding: 0;
font-family: var(--font-sans);
color: var(--color-text);
background: var(--color-white);
background: var(--color-cream);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

View file

@ -34,7 +34,7 @@ defineProps<Props>()
gap: 0.35rem;
min-height: 2.2rem;
padding: 0.35rem 0;
color: var(--color-slate);
color: var(--color-brand-purple);
font-family: var(--font-sans);
font-size: 0.9rem;
font-weight: 600;

View file

@ -127,8 +127,8 @@ function siblingElementAtOffset(offset: number): ChildElement | null {
.element-sibling-navigation__link:hover,
.element-sibling-navigation__link:focus-visible {
border-color: var(--color-slate);
color: var(--color-slate);
border-color: var(--color-brand-purple);
color: var(--color-brand-purple);
}
.element-sibling-navigation__link:focus-visible {

View file

@ -775,11 +775,11 @@ function deleteTable(): void {
overflow: hidden;
border: 1px solid var(--color-border);
border-radius: 4px;
background: var(--color-white);
background: var(--color-cream);
}
.rich-text-editor:focus-within {
border-color: var(--color-slate);
border-color: var(--color-brand-purple);
}
.rich-text-editor__toolbar {
@ -789,7 +789,7 @@ function deleteTable(): void {
gap: 0.45rem;
padding: 0.55rem;
border-bottom: 1px solid var(--color-border);
background: #fbfaf6;
background: var(--color-light-bg);
}
.rich-text-editor__select {
@ -798,7 +798,7 @@ function deleteTable(): void {
border: 1px solid var(--color-border);
border-radius: 4px;
color: var(--color-text);
background: var(--color-white);
background: var(--color-cream);
font-family: var(--font-sans);
font-size: 0.86rem;
}
@ -808,7 +808,7 @@ function deleteTable(): void {
overflow: hidden;
border: 1px solid var(--color-border);
border-radius: 4px;
background: var(--color-white);
background: var(--color-cream);
}
.rich-text-editor__button {
@ -833,7 +833,7 @@ function deleteTable(): void {
.rich-text-editor__button:focus-visible,
.rich-text-editor__button--active {
color: var(--color-white);
background: var(--color-slate);
background: var(--color-brand-purple);
outline: none;
}
@ -844,7 +844,7 @@ function deleteTable(): void {
}
.rich-text-editor__content {
background: var(--color-white);
background: var(--color-cream);
}
.rich-text-editor__content :deep(.rich-text-editor__surface) {
@ -869,8 +869,8 @@ function deleteTable(): void {
.rich-text-editor__content :deep(h3),
.rich-text-editor__content :deep(h4) {
margin: 1.1rem 0 0.45rem;
color: #2c2c2c;
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-weight: 500;
line-height: 1.25;
}
@ -900,17 +900,19 @@ function deleteTable(): void {
.rich-text-editor__content :deep(blockquote) {
margin: 1rem 0;
padding: 0.1rem 0 0.1rem 1rem;
border-left: 3px solid var(--color-olive);
border-left: 3px solid var(--color-gold);
color: var(--color-text-muted);
font-family: var(--font-quote);
font-style: italic;
}
.rich-text-editor__content :deep(mark) {
padding: 0 0.16em;
background: #fff3a7;
background: rgb(201 168 76 / 28%);
}
.rich-text-editor__content :deep(a) {
color: var(--color-slate);
color: var(--color-brand-purple);
font-weight: 600;
text-decoration: underline;
text-underline-offset: 0.16em;
@ -943,7 +945,7 @@ function deleteTable(): void {
}
.rich-text-editor__content :deep(th) {
background: #f6f3eb;
background: var(--color-light-bg);
font-weight: 700;
}

View file

@ -17,11 +17,6 @@ interface ExternalFooterLink {
type FooterLink = RouteFooterLink | ExternalFooterLink
const signatureImage = {
src: '/assets/signature.png',
alt: "R' Yehoshua Gerzi",
}
const socialGlyphs: Record<SocialLinkLabel, string> = {
YouTube: '▶',
Spotify: '♫',
@ -43,7 +38,7 @@ const footerLinkColumns: FooterLink[][] = [
[
{
kind: 'external',
label: 'Donate',
label: 'Invest in Pilzno',
linkAttributes: donateLinkAttributes,
},
{ kind: 'route', label: 'Contact', to: '/contact' },
@ -55,7 +50,13 @@ const footerLinkColumns: FooterLink[][] = [
<footer class="site-footer" data-cy="footer">
<div class="site-footer__inner">
<div class="site-footer__brand">
<img v-bind="signatureImage" class="site-footer__signature" />
<RouterLink class="site-footer__brand-link" to="/">
<span class="site-footer__brand-title">Rabbi Yehoshua Gerzi</span>
<span class="site-footer__brand-context">
PILZNO · RAMAT BET SHEMESH
</span>
</RouterLink>
<p class="site-footer__tagline">Create Geula · Elevate Life</p>
<div class="site-footer__social">
<a
v-for="socialLink in footerSocialLinks"
@ -94,7 +95,8 @@ const footerLinkColumns: FooterLink[][] = [
<style scoped>
.site-footer {
padding: 4rem 2rem 2rem;
background: var(--color-white);
color: var(--color-cream);
background: var(--color-brand-purple);
border-top: 1px solid var(--color-border);
}
@ -113,9 +115,40 @@ const footerLinkColumns: FooterLink[][] = [
gap: 1rem;
}
.site-footer__signature {
width: auto;
height: 40px;
.site-footer__brand-link {
display: flex;
flex-direction: column;
gap: 0.15rem;
}
.site-footer__brand-title {
color: var(--color-cream);
font-family: var(--font-display);
font-size: 1.55rem;
font-weight: 500;
line-height: 1;
}
.site-footer__brand-context,
.site-footer__tagline {
color: rgb(250 249 245 / 72%);
font-family: var(--font-sans);
}
.site-footer__brand-context {
font-size: 0.72rem;
font-weight: 500;
letter-spacing: 0.08em;
line-height: 1.2;
text-transform: uppercase;
}
.site-footer__tagline {
margin: 0;
color: var(--color-gold);
font-family: var(--font-quote);
font-size: 1rem;
font-style: italic;
}
.site-footer__social {
@ -129,13 +162,14 @@ const footerLinkColumns: FooterLink[][] = [
justify-content: center;
width: 2rem;
height: 2rem;
color: var(--color-text-muted);
border: 1px solid var(--color-border);
color: var(--color-cream);
border: 1px solid rgb(201 168 76 / 72%);
border-radius: 6px;
}
.site-footer__social-link:hover {
background: var(--color-cream);
color: var(--color-brand-purple);
background: var(--color-gold);
}
.site-footer__links {
@ -154,18 +188,18 @@ const footerLinkColumns: FooterLink[][] = [
}
.site-footer__link-column a {
color: var(--color-text);
color: rgb(250 249 245 / 84%);
font-family: var(--font-sans);
font-size: 0.95rem;
}
.site-footer__link-column a:hover {
color: var(--color-slate);
color: var(--color-gold);
}
.site-footer__copyright {
margin: 0;
color: var(--color-text-muted);
color: rgb(250 249 245 / 58%);
font-family: var(--font-sans);
font-size: 0.85rem;
text-align: center;

View file

@ -11,7 +11,6 @@ interface ContextualNavAction {
interface HeaderNavItem {
label: string
icon: string
}
interface InternalHeaderNavItem extends HeaderNavItem {
@ -21,11 +20,6 @@ interface InternalHeaderNavItem extends HeaderNavItem {
const authStore = useAuthStore()
const route = useRoute()
const signatureImage = {
src: '/assets/signature.png',
alt: "R' Yehoshua Gerzi",
}
onMounted(() => {
void authStore.fetchUser()
})
@ -35,14 +29,13 @@ async function handleLogout(): Promise<void> {
}
const navItems: InternalHeaderNavItem[] = [
{ label: 'Torah Media', href: '/media', icon: '▶' },
{ label: 'About', href: '/about', icon: 'ⓘ' },
{ label: 'Contact', href: '/contact', icon: '➤' },
{ label: 'Torah Media', href: '/media' },
{ label: 'About', href: '/about' },
{ label: 'Contact', href: '/contact' },
]
const donateNavItem: HeaderNavItem = {
label: 'Donate',
icon: '♡',
label: 'Invest in Pilzno',
}
const routeElementId = computed(() => {
@ -85,7 +78,10 @@ const contextualNavAction = computed<ContextualNavAction | null>(() => {
<template>
<header class="site-header">
<RouterLink class="site-header__brand" to="/">
<img v-bind="signatureImage" class="site-header__signature" />
<span class="site-header__brand-title">Rabbi Yehoshua Gerzi</span>
<span class="site-header__brand-context">
PILZNO · RAMAT BET SHEMESH
</span>
</RouterLink>
<nav class="site-header__nav">
<RouterLink
@ -94,15 +90,12 @@ const contextualNavAction = computed<ContextualNavAction | null>(() => {
:to="item.href"
class="site-header__nav-link"
>
<span class="site-header__nav-icon" aria-hidden="true">
{{ item.icon }}
</span>
<span>{{ item.label }}</span>
</RouterLink>
<a v-bind="donateLinkAttributes" class="site-header__nav-link">
<span class="site-header__nav-icon" aria-hidden="true">
{{ donateNavItem.icon }}
</span>
<a
v-bind="donateLinkAttributes"
class="site-header__nav-link site-header__nav-link--invest"
>
<span>{{ donateNavItem.label }}</span>
</a>
<RouterLink
@ -134,60 +127,95 @@ const contextualNavAction = computed<ContextualNavAction | null>(() => {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem 2rem;
background: rgba(244, 239, 225, 0.85);
padding: 0.9rem 2rem;
background: rgb(250 249 245 / 92%);
backdrop-filter: blur(8px);
border-bottom: 1px solid var(--color-border);
}
.site-header__brand {
display: inline-flex;
align-items: center;
display: flex;
flex-direction: column;
gap: 0.1rem;
min-width: 12rem;
}
.site-header__signature {
height: 36px;
width: auto;
.site-header__brand-title {
color: var(--color-brand-purple);
font-family: var(--font-display);
font-size: 1.25rem;
font-weight: 500;
line-height: 1;
}
.site-header__brand-context {
color: var(--color-text-muted);
font-family: var(--font-sans);
font-size: 0.68rem;
font-weight: 500;
letter-spacing: 0.08em;
line-height: 1.2;
text-transform: uppercase;
}
.site-header__nav {
display: flex;
gap: 0.75rem;
align-items: center;
flex-wrap: wrap;
gap: 1.15rem;
}
.site-header__nav-link {
display: inline-flex;
align-items: center;
gap: 0.4rem;
padding: 0.5rem 1rem;
background: var(--color-white);
border: 1px solid var(--color-border);
border-radius: 9999px;
font-size: 0.95rem;
min-height: 2rem;
padding: 0.15rem 0;
background: transparent;
border: 0;
border-bottom: 1px solid transparent;
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 500;
letter-spacing: 0.08em;
color: var(--color-text);
transition: background 0.15s ease;
text-transform: uppercase;
transition:
border-color 0.15s ease,
color 0.15s ease;
}
.site-header__nav-link:hover {
background: var(--color-cream);
color: var(--color-brand-purple);
border-color: var(--color-gold);
}
.site-header__nav-icon {
display: inline-block;
font-size: 0.85rem;
color: var(--color-slate);
.site-header__nav-link--invest {
padding: 0.45rem 0.8rem;
color: var(--color-brand-purple);
border: 1px solid var(--color-gold);
border-radius: 4px;
}
.site-header__nav-link--invest:hover {
color: var(--color-cream);
background: var(--color-brand-purple);
border-color: var(--color-gold);
}
@media (max-width: 768px) {
.site-header {
align-items: flex-start;
flex-direction: column;
gap: 0.9rem;
padding: 0.75rem 1rem;
}
.site-header__nav {
gap: 0.85rem;
}
.site-header__nav-link {
padding: 0.4rem 0.75rem;
font-size: 0.85rem;
font-size: 0.72rem;
}
}
</style>

View file

@ -231,8 +231,8 @@ function submitNewsletter(submitEvent: Event): void {
<p class="about-hero__eyebrow">Pilzno Institute</p>
<h1 class="about-hero__heading">About Rabbi Gerzi</h1>
<p class="about-hero__lede">
Healthy, Integrated and Balanced Torah living, rooted in mesorah
and made practical for real people building real lives.
Integrated Torah life, rooted in mesorah and made practical for
real people building real lives.
</p>
</div>
<img
@ -314,7 +314,7 @@ function submitNewsletter(submitEvent: Event): void {
</div>
<p class="about-section__closing">
Together, this yields Healthy, Integrated and Balanced Torah living.
Together, this yields an Integrated Torah life.
</p>
</div>
</section>
@ -335,7 +335,7 @@ function submitNewsletter(submitEvent: Event): void {
<p class="about-section__paragraph">
In 2005, the Pilzno Rav instructed Rabbi Gerzi to continue his
legacy by building a community in Eretz Yisrael dedicated to this
unique form of Healthy, Integrated and Balanced Torah living.
unique form of Integrated Torah life.
</p>
</div>
</div>
@ -452,11 +452,11 @@ function submitNewsletter(submitEvent: Event): void {
<style scoped>
.about-page {
min-height: 100vh;
background: var(--color-white);
background: var(--color-light-bg);
}
.about-hero {
background: var(--color-cream);
background: var(--color-light-bg);
padding: 4rem 2rem 5rem;
}
@ -476,7 +476,7 @@ function submitNewsletter(submitEvent: Event): void {
.about-hero__eyebrow,
.about-section__kicker {
margin: 0 0 0.75rem;
color: var(--color-olive);
color: var(--color-gold);
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 700;
@ -487,8 +487,8 @@ function submitNewsletter(submitEvent: Event): void {
.about-hero__heading,
.about-section__heading {
margin: 0;
color: var(--color-slate);
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-size: clamp(2rem, 4vw, 3.35rem);
font-weight: 400;
line-height: 1.12;
@ -498,7 +498,7 @@ function submitNewsletter(submitEvent: Event): void {
max-width: 33rem;
margin: 1.35rem 0 0;
color: var(--color-text-muted);
font-family: var(--font-serif);
font-family: var(--font-sans);
font-size: clamp(1.05rem, 2vw, 1.25rem);
line-height: 1.65;
}
@ -517,15 +517,15 @@ function submitNewsletter(submitEvent: Event): void {
}
.about-section--white {
background: var(--color-white);
}
.about-section--cream {
background: var(--color-cream);
}
.about-section--cream {
background: var(--color-light-bg);
}
.about-section--slate {
background: var(--color-slate);
background: var(--color-brand-purple);
color: var(--color-white);
}
@ -562,7 +562,7 @@ function submitNewsletter(submitEvent: Event): void {
.about-section__closing {
margin: 0;
color: var(--color-text-muted);
font-family: var(--font-serif);
font-family: var(--font-sans);
font-size: 1.02rem;
line-height: 1.78;
}
@ -593,7 +593,7 @@ function submitNewsletter(submitEvent: Event): void {
.mission-grid__item,
.rabbanim__card {
background: var(--color-white);
background: var(--color-cream);
border: 1px solid var(--color-border);
border-radius: 8px;
}
@ -605,8 +605,8 @@ function submitNewsletter(submitEvent: Event): void {
.mission-grid__title,
.rabbanim__name {
margin: 0;
color: var(--color-slate);
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-size: 1.12rem;
font-weight: 500;
line-height: 1.35;
@ -617,7 +617,7 @@ function submitNewsletter(submitEvent: Event): void {
.teacher-list__description {
margin: 0.85rem 0 0;
color: var(--color-text-muted);
font-family: var(--font-serif);
font-family: var(--font-sans);
font-size: 0.94rem;
line-height: 1.65;
}
@ -636,14 +636,14 @@ function submitNewsletter(submitEvent: Event): void {
grid-template-columns: minmax(180px, 0.38fr) minmax(0, 1fr);
gap: 1rem;
padding: 1.1rem 1.25rem;
background: var(--color-white);
background: var(--color-cream);
border: 1px solid var(--color-border);
border-radius: 8px;
}
.teacher-list__name {
color: var(--color-slate);
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-weight: 500;
}
@ -652,7 +652,7 @@ function submitNewsletter(submitEvent: Event): void {
}
.rabbanim {
background: var(--color-white);
background: var(--color-cream);
padding: 5rem 2rem;
text-align: center;
}
@ -692,7 +692,7 @@ function submitNewsletter(submitEvent: Event): void {
}
.haskamot {
background: var(--color-cream);
background: var(--color-light-bg);
padding: 5rem 2rem;
text-align: center;
}
@ -711,13 +711,13 @@ function submitNewsletter(submitEvent: Event): void {
border-radius: 8px;
object-fit: cover;
object-position: center top;
background: var(--color-white);
background: var(--color-cream);
border: 1px solid var(--color-border);
box-shadow: 0 10px 30px rgb(33 50 64 / 10%);
}
.get-involved {
background: var(--color-cream);
background: var(--color-light-bg);
padding: 0 2rem 5rem;
}
@ -729,7 +729,7 @@ function submitNewsletter(submitEvent: Event): void {
margin: 0 auto;
padding: 3rem;
gap: 3rem;
background: rgba(255, 255, 255, 0.48);
background: rgb(250 249 245 / 54%);
border: 1px solid rgb(230 225 210 / 70%);
border-radius: 8px;
}
@ -737,7 +737,7 @@ function submitNewsletter(submitEvent: Event): void {
.get-involved__heading {
margin: 0 0 1.25rem;
color: var(--color-text);
font-family: var(--font-serif);
font-family: var(--font-display);
font-size: clamp(1.6rem, 2.6vw, 2.4rem);
font-weight: 400;
}
@ -746,7 +746,7 @@ function submitNewsletter(submitEvent: Event): void {
max-width: 36ch;
margin: 0;
color: var(--color-text-muted);
font-family: var(--font-serif);
font-family: var(--font-sans);
font-size: 1rem;
line-height: 1.55;
}
@ -780,7 +780,7 @@ function submitNewsletter(submitEvent: Event): void {
}
.get-involved__input:focus {
outline: 2px solid var(--color-slate);
outline: 2px solid var(--color-brand-purple);
outline-offset: 2px;
}
@ -797,7 +797,7 @@ function submitNewsletter(submitEvent: Event): void {
}
.get-involved__submit:hover {
background: var(--color-slate);
background: var(--color-brand-purple);
}
@media (max-width: 860px) {

View file

@ -721,7 +721,7 @@ function resetInput(changeEvent: Event): void {
<style scoped>
.admin-element-page {
min-height: 100vh;
background: var(--color-white);
background: var(--color-light-bg);
}
.admin-element-page__main {
@ -739,8 +739,8 @@ function resetInput(changeEvent: Event): void {
.admin-element-page__heading {
margin: 0.35rem 0 0;
color: #2c2c2c;
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-size: 2rem;
font-weight: 400;
line-height: 1.2;
@ -768,6 +768,7 @@ function resetInput(changeEvent: Event): void {
padding: 0.9rem;
border: 1px solid var(--color-border);
border-radius: 4px;
background: var(--color-cream);
}
.admin-element-page__label {
@ -783,7 +784,7 @@ function resetInput(changeEvent: Event): void {
border: 1px solid var(--color-border);
border-radius: 4px;
color: var(--color-text);
background: var(--color-white);
background: var(--color-cream);
font-family: var(--font-sans);
font-size: 0.96rem;
line-height: 1.5;
@ -791,7 +792,7 @@ function resetInput(changeEvent: Event): void {
.admin-element-page__input:focus,
.admin-element-page__textarea:focus {
border-color: var(--color-slate);
border-color: var(--color-brand-purple);
outline: none;
}
@ -804,6 +805,7 @@ function resetInput(changeEvent: Event): void {
height: 6rem;
border: 1px solid var(--color-border);
border-radius: 4px;
background: var(--color-light-bg);
object-fit: contain;
}
@ -837,6 +839,7 @@ function resetInput(changeEvent: Event): void {
padding: 0.75rem;
border: 1px solid var(--color-border);
border-radius: 4px;
background: var(--color-light-bg);
}
.admin-element-page__child-body {
@ -848,7 +851,7 @@ function resetInput(changeEvent: Event): void {
}
.admin-element-page__child-link {
color: var(--color-slate);
color: var(--color-brand-purple);
font-size: 0.95rem;
font-weight: 600;
}
@ -899,8 +902,8 @@ function resetInput(changeEvent: Event): void {
.admin-element-page__icon-button:hover:not(:disabled),
.admin-element-page__icon-button:focus-visible {
border-color: var(--color-slate);
color: var(--color-slate);
border-color: var(--color-brand-purple);
color: var(--color-brand-purple);
}
.admin-element-page__child-add {
@ -931,7 +934,7 @@ function resetInput(changeEvent: Event): void {
border: 1px solid var(--color-border);
border-radius: 4px;
color: var(--color-text);
background: var(--color-white);
background: var(--color-cream);
font-family: var(--font-sans);
font-size: 0.9rem;
font-weight: 600;
@ -950,7 +953,7 @@ function resetInput(changeEvent: Event): void {
.admin-element-page__secondary-button:focus-visible,
.admin-element-page__pdf-link:hover,
.admin-element-page__pdf-link:focus-visible {
border-color: var(--color-slate);
border-color: var(--color-brand-purple);
}
.admin-element-page__actions {
@ -962,10 +965,10 @@ function resetInput(changeEvent: Event): void {
.admin-element-page__save {
padding: 0.7rem 1.4rem;
border: 1px solid var(--color-slate);
border: 1px solid var(--color-brand-purple);
border-radius: 4px;
color: var(--color-white);
background: var(--color-slate);
background: var(--color-brand-purple);
font-family: var(--font-sans);
font-size: 0.95rem;
font-weight: 600;
@ -984,7 +987,7 @@ function resetInput(changeEvent: Event): void {
.admin-element-page__status--inline {
margin: 0;
color: var(--color-slate);
color: var(--color-brand-purple);
}
.admin-element-page__status--error {

View file

@ -188,11 +188,11 @@ function submitNewsletter(submitEvent: Event): void {
<style scoped>
.contact-page {
min-height: 100vh;
background: var(--color-white);
background: var(--color-light-bg);
}
.contact-hero {
background: var(--color-cream);
background: var(--color-light-bg);
padding: 4rem 2rem;
}
@ -204,7 +204,7 @@ function submitNewsletter(submitEvent: Event): void {
.contact-hero__eyebrow {
margin: 0 0 0.75rem;
color: var(--color-olive);
color: var(--color-gold);
font-family: var(--font-sans);
font-size: 0.78rem;
font-weight: 700;
@ -217,8 +217,8 @@ function submitNewsletter(submitEvent: Event): void {
.contact-social__heading,
.get-involved__heading {
margin: 0;
color: var(--color-slate);
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-weight: 400;
line-height: 1.15;
}
@ -231,13 +231,13 @@ function submitNewsletter(submitEvent: Event): void {
max-width: 42rem;
margin: 1.35rem auto 0;
color: var(--color-text-muted);
font-family: var(--font-serif);
font-family: var(--font-sans);
font-size: clamp(1.05rem, 2vw, 1.25rem);
line-height: 1.65;
}
.contact-main {
background: var(--color-white);
background: var(--color-cream);
padding: 5rem 2rem;
}
@ -252,7 +252,7 @@ function submitNewsletter(submitEvent: Event): void {
.contact-form,
.contact-social {
background: var(--color-white);
background: var(--color-cream);
border: 1px solid var(--color-border);
border-radius: 8px;
}
@ -295,7 +295,7 @@ function submitNewsletter(submitEvent: Event): void {
width: 100%;
padding: 0.78rem 1rem;
color: var(--color-text);
background: var(--color-cream);
background: var(--color-light-bg);
border: 1px solid rgba(0, 0, 0, 0.08);
border-radius: 8px;
font-family: var(--font-sans);
@ -310,7 +310,7 @@ function submitNewsletter(submitEvent: Event): void {
.contact-form__input:focus,
.contact-form__textarea:focus,
.get-involved__input:focus {
outline: 2px solid var(--color-slate);
outline: 2px solid var(--color-brand-purple);
outline-offset: 2px;
}
@ -319,7 +319,7 @@ function submitNewsletter(submitEvent: Event): void {
margin-top: 1.25rem;
padding: 0.85rem 1rem;
color: var(--color-white);
background: var(--color-text);
background: var(--color-brand-purple);
border: none;
border-radius: 8px;
font-family: var(--font-sans);
@ -329,12 +329,12 @@ function submitNewsletter(submitEvent: Event): void {
.contact-form__submit:hover,
.get-involved__submit:hover {
background: var(--color-slate);
background: var(--color-brand-purple);
}
.contact-social {
padding: 2rem;
background: var(--color-cream);
background: var(--color-light-bg);
}
.contact-social__heading {
@ -353,7 +353,7 @@ function submitNewsletter(submitEvent: Event): void {
justify-content: space-between;
padding: 0.95rem 1rem;
color: var(--color-text);
background: var(--color-white);
background: var(--color-cream);
border: 1px solid var(--color-border);
border-radius: 8px;
font-family: var(--font-sans);
@ -361,11 +361,11 @@ function submitNewsletter(submitEvent: Event): void {
}
.contact-social__link:hover {
border-color: var(--color-slate);
border-color: var(--color-brand-purple);
}
.get-involved {
background: var(--color-cream);
background: var(--color-light-bg);
padding: 5rem 2rem;
}
@ -377,7 +377,7 @@ function submitNewsletter(submitEvent: Event): void {
margin: 0 auto;
padding: 3rem;
gap: 3rem;
background: rgba(255, 255, 255, 0.48);
background: rgb(250 249 245 / 54%);
border: 1px solid rgb(230 225 210 / 70%);
border-radius: 8px;
}
@ -392,7 +392,7 @@ function submitNewsletter(submitEvent: Event): void {
max-width: 36ch;
margin: 0;
color: var(--color-text-muted);
font-family: var(--font-serif);
font-family: var(--font-sans);
font-size: 1rem;
line-height: 1.55;
}

View file

@ -332,7 +332,7 @@ function isShortYoutubeHost(hostname: string): boolean {
<style scoped>
.element-page {
min-height: 100vh;
background: var(--color-white);
background: var(--color-light-bg);
}
.element-page__main {
@ -361,8 +361,8 @@ function isShortYoutubeHost(hostname: string): boolean {
.element-page__heading {
margin: 0;
color: #2c2c2c;
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-size: clamp(2.6rem, 4.8vw, 3.2rem);
font-weight: 400;
line-height: 1.1;
@ -371,7 +371,7 @@ function isShortYoutubeHost(hostname: string): boolean {
.element-page__rich-text {
margin-top: 1.75rem;
color: #333333;
color: var(--color-text);
font-family: var(--font-sans);
font-size: 1.05rem;
line-height: 1.75;
@ -389,8 +389,8 @@ function isShortYoutubeHost(hostname: string): boolean {
.element-page__rich-text :deep(h3),
.element-page__rich-text :deep(h4) {
margin: 1.6rem 0 0.65rem;
color: #2c2c2c;
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-weight: 500;
line-height: 1.25;
}
@ -420,22 +420,24 @@ function isShortYoutubeHost(hostname: string): boolean {
.element-page__rich-text :deep(blockquote) {
margin: 1.35rem 0;
padding: 0.2rem 0 0.2rem 1.1rem;
border-left: 3px solid var(--color-olive);
border-left: 3px solid var(--color-gold);
color: var(--color-text-muted);
font-family: var(--font-quote);
font-style: italic;
}
.element-page__rich-text :deep(strong) {
color: #2c2c2c;
color: var(--color-brand-purple);
font-weight: 700;
}
.element-page__rich-text :deep(mark) {
padding: 0 0.16em;
background: #fff3a7;
background: rgb(201 168 76 / 28%);
}
.element-page__rich-text :deep(a) {
color: var(--color-slate);
color: var(--color-brand-purple);
font-weight: 600;
text-decoration: underline;
text-underline-offset: 0.16em;
@ -468,7 +470,7 @@ function isShortYoutubeHost(hostname: string): boolean {
}
.element-page__rich-text :deep(th) {
background: #f6f3eb;
background: var(--color-light-bg);
font-weight: 700;
}
@ -502,7 +504,8 @@ function isShortYoutubeHost(hostname: string): boolean {
min-height: 2.75rem;
padding: 0.7rem 1.15rem;
color: var(--color-white);
background: var(--color-olive);
background: var(--color-brand-purple);
border: 1px solid var(--color-gold);
border-radius: 8px;
font-family: var(--font-sans);
font-size: 0.95rem;
@ -517,13 +520,13 @@ function isShortYoutubeHost(hostname: string): boolean {
.element-page__pdf-link:hover,
.element-page__pdf-link:focus-visible {
background: #4d5b3c;
background: var(--color-body-text);
box-shadow: 0 10px 24px rgb(44 44 44 / 12%);
transform: translateY(-1px);
}
.element-page__pdf-link:focus-visible {
outline: 3px solid rgb(94 107 76 / 38%);
outline: 3px solid rgb(201 168 76 / 42%);
outline-offset: 4px;
}
@ -542,11 +545,11 @@ function isShortYoutubeHost(hostname: string): boolean {
.element-page__child-link {
display: block;
padding: 1rem 1.2rem;
background: var(--color-white);
border: 1px solid #e5cf9f;
background: var(--color-cream);
border: 1px solid rgb(201 168 76 / 54%);
border-radius: 8px;
color: #333333;
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-size: 1.25rem;
line-height: 1.25;
text-align: center;
@ -572,13 +575,13 @@ function isShortYoutubeHost(hostname: string): boolean {
.element-page__child-link:hover,
.element-page__child-link:focus-visible {
border-color: #d4ad5f;
border-color: var(--color-gold);
box-shadow: 0 10px 28px rgb(44 44 44 / 9%);
transform: translateY(-1px);
}
.element-page__child-link:focus-visible {
outline: 3px solid rgb(212 173 95 / 45%);
outline: 3px solid rgb(201 168 76 / 42%);
outline-offset: 4px;
}
@ -587,7 +590,7 @@ function isShortYoutubeHost(hostname: string): boolean {
margin: 0 auto;
padding: 1rem 1.25rem;
color: var(--color-text-muted);
background: var(--color-white);
background: var(--color-cream);
border: 1px solid var(--color-border);
border-radius: 8px;
font-size: 0.95rem;

View file

@ -260,26 +260,22 @@ function projectCardStyle(project: Project): string {
<SiteHeader />
<section class="hero" data-cy="hero">
<div class="hero__backdrop">
<img src="/assets/sky.png" alt="" class="hero__sky" />
<img src="/assets/mountain.png" alt="" class="hero__mountain" />
<img src="/assets/man_on_rock.png" alt="" class="hero__hiker" />
</div>
<div class="hero__content">
<div class="hero__text">
<h1 class="hero__headline">
Let&rsquo;s upgrade our lives to a
<em>healthy</em>, <em>integrated</em>, and <em>balanced</em> Torah
existence.
</h1>
<p class="hero__attribution">Rabbi Yehoshua Gerzi</p>
<p class="hero__eyebrow">PILZNO · RAMAT BET SHEMESH</p>
<h1 class="hero__headline">Rabbi Yehoshua Gerzi</h1>
<p class="hero__tagline">Create Geula · Elevate Life</p>
<p class="hero__lede">
Guiding you toward a Geula mindset and an Integrated Torah life
rooted in ancient wisdom, warm community, and deliberate growth.
</p>
</div>
<div class="hero__portrait-frame">
<div class="hero__portrait-panel">
<img
src="/assets/portrait.png"
alt="Rabbi Yehoshua Gerzi"
class="hero__portrait"
data-cy="hero-portrait"
data-cy="hero-rabbi-portrait"
/>
</div>
</div>
@ -305,10 +301,10 @@ function projectCardStyle(project: Project): string {
</h2>
<p class="discover-path__paragraph">
Rabbi Yehoshua Gerzi has dedicated his life to empowering individuals
to achieve a state of &ldquo;Healthy, Integrated and Balanced Torah
Living.&rdquo; His teachings weave together timeless Torah wisdom,
mystical insights and practical guidance, making ancient wisdom
accessible and transformative for modern lives.
to build an Integrated Torah life from a Geula mindset. His teachings
weave together timeless Torah wisdom, mystical insights and practical
guidance, making ancient wisdom accessible and transformative for
modern lives.
</p>
<p class="discover-path__paragraph">
Rabbi Gerzi is based in Ramat Beit Shemesh, where he serves as Rav of
@ -539,123 +535,110 @@ function projectCardStyle(project: Project): string {
.hero {
position: relative;
overflow: hidden;
min-height: 110vh;
min-height: min(760px, calc(100vh - 4rem));
display: flex;
align-items: center;
color: var(--color-cream);
background: var(--color-brand-purple);
}
.hero__backdrop {
.hero::after {
content: '';
position: absolute;
inset: 0;
z-index: 0;
}
.hero__sky,
.hero__mountain,
.hero__hiker {
position: absolute;
left: 50%;
transform: translateX(-50%);
pointer-events: none;
}
.hero__sky {
top: 0;
width: 100%;
height: 100%;
object-fit: cover;
object-position: center 44%;
z-index: 0;
}
.hero__mountain {
bottom: calc(50% - 58.8vw);
width: 100vw;
max-width: none;
z-index: 1;
}
.hero__hiker {
bottom: min(-30vw, -13rem);
width: 100vw;
max-width: none;
z-index: 2;
right: 0;
width: min(9rem, 22vw);
height: min(9rem, 22vw);
border-right: 1px solid var(--color-gold);
border-bottom: 1px solid var(--color-gold);
}
.hero__content {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: 1fr auto;
grid-template-columns: minmax(0, 0.98fr) minmax(260px, 0.52fr);
align-items: center;
gap: 0.5rem;
gap: clamp(2rem, 6vw, 5rem);
width: 100%;
max-width: 1200px;
max-width: 1180px;
margin: 0 auto;
padding: 6rem 2rem;
transform: translateY(clamp(-15.25rem, calc(-22vh - 20px), -8.25rem));
padding: clamp(4rem, 8vw, 7rem) 2rem;
}
.hero__text {
max-width: 36rem;
max-width: 44rem;
}
.hero__eyebrow {
margin: 0 0 3rem;
color: rgb(250 249 245 / 72%);
font-family: var(--font-sans);
font-size: 0.82rem;
font-weight: 500;
letter-spacing: 0.08em;
line-height: 1.3;
text-transform: uppercase;
}
.hero__eyebrow::after {
content: '';
display: block;
width: 5rem;
height: 2px;
margin-top: 1.35rem;
background: var(--color-gold);
}
.hero__headline {
font-family: var(--font-serif);
font-weight: 400;
font-size: clamp(1.75rem, 3.2vw, 2.8rem);
line-height: 1.25;
color: var(--color-white);
margin: 0;
color: var(--color-cream);
font-family: var(--font-display);
font-size: clamp(4.25rem, 8vw, 7rem);
font-weight: 400;
line-height: 0.92;
}
.hero__headline em {
.hero__tagline {
margin: 1.4rem 0 0;
color: var(--color-gold);
font-family: var(--font-quote);
font-size: clamp(1.25rem, 2.5vw, 1.8rem);
font-style: italic;
line-height: 1.35;
}
.hero__attribution {
margin: 1.5rem 0 0 0;
font-size: 0.95rem;
color: var(--color-white);
opacity: 0.85;
.hero__lede {
max-width: 36rem;
margin: 1.8rem 0 0;
color: rgb(250 249 245 / 82%);
font-family: var(--font-sans);
font-size: clamp(1.04rem, 1.8vw, 1.24rem);
font-weight: 300;
line-height: 1.8;
}
.hero__portrait-frame {
--portrait-frame-size: clamp(200px, 24vw, 350px);
width: var(--portrait-frame-size);
height: var(--portrait-frame-size);
.hero__portrait-panel {
position: relative;
border-radius: 50%;
overflow: visible;
align-self: stretch;
display: flex;
align-items: flex-end;
justify-content: center;
}
.hero__portrait-frame::before {
content: '';
position: absolute;
left: 50%;
bottom: 0;
z-index: 0;
width: 110%;
aspect-ratio: 1;
border-radius: 50%;
background: var(--color-slate);
transform: translateX(-50%);
min-height: 28rem;
border: 1px solid rgb(201 168 76 / 62%);
border-radius: 8px;
background: rgb(250 249 245 / 7%);
}
.hero__portrait {
position: relative;
z-index: 1;
width: 110%;
height: auto;
display: block;
align-self: end;
width: min(88%, 25rem);
height: auto;
object-fit: contain;
}
.discover-path {
background: var(--color-slate);
background: var(--color-brand-purple);
color: var(--color-white);
padding: 5rem 2rem;
}
@ -669,24 +652,24 @@ function projectCardStyle(project: Project): string {
.discover-path__icon {
width: 110px;
height: auto;
color: rgba(255, 255, 255, 0.7);
color: rgb(250 249 245 / 70%);
margin: 0 auto 2rem;
display: block;
}
.discover-path__heading {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.5rem, 2.4vw, 2rem);
margin: 0 0 1.5rem 0;
}
.discover-path__paragraph {
font-family: var(--font-serif);
font-family: var(--font-sans);
font-weight: 300;
font-size: 1.05rem;
line-height: 1.7;
color: rgba(255, 255, 255, 0.85);
color: rgb(250 249 245 / 85%);
margin: 0 0 1.25rem 0;
}
@ -705,10 +688,10 @@ function projectCardStyle(project: Project): string {
}
.core-teachings__heading {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.5rem, 2.4vw, 2rem);
color: var(--color-slate);
color: var(--color-brand-purple);
text-align: center;
margin: 0 0 3rem 0;
}
@ -729,20 +712,20 @@ function projectCardStyle(project: Project): string {
.core-teachings__glyph {
font-size: 3rem;
line-height: 1;
color: var(--color-slate);
color: var(--color-brand-purple);
margin-bottom: 1rem;
font-weight: 300;
}
.core-teachings__label {
font-family: var(--font-serif);
font-family: var(--font-sans);
font-size: 1rem;
color: var(--color-text-muted);
margin: 0;
}
.unique-voice {
background: var(--color-slate);
background: var(--color-brand-purple);
color: var(--color-white);
padding: 5rem 2rem;
}
@ -756,32 +739,32 @@ function projectCardStyle(project: Project): string {
.unique-voice__icon {
width: 140px;
height: auto;
color: rgba(255, 255, 255, 0.7);
color: rgb(250 249 245 / 70%);
display: block;
margin: 0 auto 2rem;
}
.unique-voice__heading {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.5rem, 2.4vw, 2rem);
margin: 0 0 1.5rem 0;
}
.unique-voice__paragraph {
font-family: var(--font-serif);
font-family: var(--font-sans);
font-weight: 300;
font-size: 1.05rem;
line-height: 1.7;
color: rgba(255, 255, 255, 0.85);
color: rgb(250 249 245 / 85%);
margin: 0 0 2.5rem 0;
}
.unique-voice__cta-button {
background: var(--color-white);
color: var(--color-text);
border: none;
border-radius: 9999px;
border: 1px solid var(--color-gold);
border-radius: 4px;
padding: 0.85rem 1.75rem;
font-family: var(--font-sans);
font-weight: 500;
@ -810,10 +793,10 @@ function projectCardStyle(project: Project): string {
}
.testimonials__heading {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.5rem, 2.4vw, 2rem);
color: var(--color-slate);
color: var(--color-brand-purple);
margin: 0 0 2.5rem 0;
}
@ -821,14 +804,15 @@ function projectCardStyle(project: Project): string {
position: relative;
width: min(100%, var(--testimonials-stage-width));
height: var(--testimonials-card-height);
border-radius: 14px;
border-radius: 8px;
margin: 0 auto;
overflow: hidden;
}
.testimonials__card {
background: var(--color-white);
border-radius: 14px;
border: 1px solid var(--color-border);
border-radius: 8px;
padding: 2rem;
text-align: left;
width: calc(50% - var(--testimonials-card-gap));
@ -878,7 +862,7 @@ function projectCardStyle(project: Project): string {
}
.testimonials__name {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 500;
font-size: 1.15rem;
margin: 0 0 1rem 0;
@ -886,7 +870,7 @@ function projectCardStyle(project: Project): string {
}
.testimonials__quote {
font-family: var(--font-serif);
font-family: var(--font-quote);
font-style: italic;
font-size: 1rem;
line-height: 1.6;
@ -905,7 +889,7 @@ function projectCardStyle(project: Project): string {
width: 2.5rem;
height: 2.5rem;
border-radius: 50%;
background: var(--color-text);
background: var(--color-brand-purple);
color: var(--color-white);
border: none;
font-size: 1.25rem;
@ -916,7 +900,7 @@ function projectCardStyle(project: Project): string {
}
.testimonials__arrow:hover {
background: var(--color-slate);
background: var(--color-body-text);
}
.sponsors {
@ -931,10 +915,10 @@ function projectCardStyle(project: Project): string {
}
.sponsors__heading {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.4rem, 2.2vw, 1.85rem);
color: var(--color-slate);
color: var(--color-brand-purple);
margin: 0 0 3rem 0;
}
@ -1005,10 +989,10 @@ function projectCardStyle(project: Project): string {
}
.projects__heading {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.5rem, 2.4vw, 2rem);
color: var(--color-slate);
color: var(--color-brand-purple);
text-align: center;
margin: 0 0 3rem 0;
}
@ -1020,7 +1004,7 @@ function projectCardStyle(project: Project): string {
}
.projects__card {
border-radius: 14px;
border-radius: 8px;
padding: 3rem 2rem;
aspect-ratio: 16 / 10;
min-height: 240px;
@ -1040,18 +1024,18 @@ function projectCardStyle(project: Project): string {
}
.projects__card-title {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.25rem, 2vw, 1.6rem);
margin: 0 0 1rem 0;
}
.projects__card-body {
font-family: var(--font-serif);
font-family: var(--font-sans);
font-weight: 300;
font-size: 0.95rem;
line-height: 1.55;
color: rgba(255, 255, 255, 0.9);
color: rgb(250 249 245 / 90%);
margin: 0;
max-width: 28ch;
}
@ -1068,10 +1052,10 @@ function projectCardStyle(project: Project): string {
}
.journey__heading {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.5rem, 2.4vw, 2rem);
color: var(--color-slate);
color: var(--color-brand-purple);
margin: 0 0 3rem 0;
}
@ -1089,7 +1073,7 @@ function projectCardStyle(project: Project): string {
text-align: center;
padding: 4rem 2rem;
min-height: 280px;
border-radius: 14px;
border-radius: 8px;
color: var(--color-white);
transition: transform 0.2s ease;
}
@ -1099,15 +1083,15 @@ function projectCardStyle(project: Project): string {
}
.journey__card--olive {
background: var(--color-olive);
background: var(--color-gold);
}
.journey__card--slate {
background: var(--color-slate);
background: var(--color-brand-purple);
}
.journey__card-title {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.4rem, 2.2vw, 1.85rem);
margin: 0 0 1.5rem 0;
@ -1115,11 +1099,11 @@ function projectCardStyle(project: Project): string {
}
.journey__card-body {
font-family: var(--font-serif);
font-family: var(--font-sans);
font-weight: 300;
font-size: 1rem;
line-height: 1.55;
color: rgba(255, 255, 255, 0.9);
color: rgb(250 249 245 / 90%);
margin: 0;
max-width: 30ch;
}
@ -1132,8 +1116,9 @@ function projectCardStyle(project: Project): string {
.get-involved__card {
max-width: 1100px;
margin: 0 auto;
background: rgba(255, 255, 255, 0.4);
border-radius: 14px;
background: rgb(250 249 245 / 54%);
border: 1px solid var(--color-border);
border-radius: 8px;
padding: 3rem;
display: grid;
grid-template-columns: 1fr 1fr;
@ -1142,7 +1127,7 @@ function projectCardStyle(project: Project): string {
}
.get-involved__heading {
font-family: var(--font-serif);
font-family: var(--font-display);
font-weight: 400;
font-size: clamp(1.6rem, 2.6vw, 2.4rem);
color: var(--color-text);
@ -1150,7 +1135,7 @@ function projectCardStyle(project: Project): string {
}
.get-involved__subtext {
font-family: var(--font-serif);
font-family: var(--font-sans);
font-size: 1rem;
line-height: 1.55;
color: var(--color-text-muted);
@ -1187,7 +1172,7 @@ function projectCardStyle(project: Project): string {
}
.get-involved__input:focus {
outline: 2px solid var(--color-slate);
outline: 2px solid var(--color-brand-purple);
outline-offset: 2px;
}
@ -1204,7 +1189,7 @@ function projectCardStyle(project: Project): string {
}
.get-involved__submit:hover {
background: var(--color-slate);
background: var(--color-brand-purple);
}
@media (max-width: 768px) {

View file

@ -77,7 +77,7 @@ async function handleSubmit(): Promise<void> {
}
.login-card {
background: var(--color-white);
background: var(--color-cream);
border: 1px solid var(--color-border);
border-radius: 8px;
padding: 2.5rem;
@ -86,9 +86,9 @@ async function handleSubmit(): Promise<void> {
}
.login-card__title {
font-family: var(--font-serif);
font-family: var(--font-display);
font-size: 1.5rem;
color: var(--color-slate);
color: var(--color-brand-purple);
text-align: center;
margin: 0 0 1.5rem;
}
@ -117,13 +117,13 @@ async function handleSubmit(): Promise<void> {
font-family: var(--font-sans);
font-size: 0.9375rem;
color: var(--color-text);
background: var(--color-white);
background: var(--color-light-bg);
outline: none;
transition: border-color 0.15s ease;
}
.login-card__input:focus {
border-color: var(--color-olive);
border-color: var(--color-gold);
}
.login-card__error {
@ -138,7 +138,8 @@ async function handleSubmit(): Promise<void> {
.login-card__submit {
padding: 0.75rem 1rem;
background: var(--color-olive);
background: var(--color-brand-purple);
border: 1px solid var(--color-gold);
color: var(--color-white);
font-family: var(--font-sans);
font-size: 0.9375rem;
@ -151,7 +152,7 @@ async function handleSubmit(): Promise<void> {
}
.login-card__submit:hover:not(:disabled) {
background: var(--color-slate);
background: var(--color-brand-purple);
}
.login-card__submit:disabled {

View file

@ -77,7 +77,7 @@ onMounted(() => {
<style scoped>
.media-page {
min-height: 100vh;
background: var(--color-white);
background: var(--color-light-bg);
}
.media-page__main {
@ -91,8 +91,8 @@ onMounted(() => {
.media-page__heading {
margin: 0;
color: #2c2c2c;
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-size: clamp(2.6rem, 4.8vw, 3.2rem);
font-weight: 400;
line-height: 1.1;
@ -107,7 +107,7 @@ onMounted(() => {
margin: 0 auto;
padding: 1rem 1.25rem;
color: var(--color-text-muted);
background: var(--color-white);
background: var(--color-cream);
border: 1px solid var(--color-border);
border-radius: 8px;
font-size: 0.95rem;
@ -129,9 +129,9 @@ onMounted(() => {
.media-page__card {
min-height: 448px;
padding: 3.1rem 3rem 2.7rem;
background: var(--color-white);
border: 1px solid #e5cf9f;
border-radius: 17px;
background: var(--color-cream);
border: 1px solid rgb(201 168 76 / 54%);
border-radius: 8px;
color: inherit;
text-align: center;
text-decoration: none;
@ -143,13 +143,13 @@ onMounted(() => {
a.media-page__card:hover,
a.media-page__card:focus-visible {
border-color: #d4ad5f;
border-color: var(--color-gold);
box-shadow: 0 14px 35px rgb(44 44 44 / 10%);
transform: translateY(-2px);
}
a.media-page__card:focus-visible {
outline: 3px solid rgb(212 173 95 / 45%);
outline: 3px solid rgb(201 168 76 / 42%);
outline-offset: 4px;
}
@ -167,8 +167,8 @@ a.media-page__card:focus-visible {
.media-page__card-title {
margin: 0;
color: #333333;
font-family: var(--font-serif);
color: var(--color-brand-purple);
font-family: var(--font-display);
font-size: clamp(2rem, 3.7vw, 2.4rem);
font-weight: 400;
line-height: 1.2;
@ -177,8 +177,8 @@ a.media-page__card:focus-visible {
.media-page__card-description {
max-width: 35rem;
margin: 2.15rem auto 0;
color: #333333;
font-family: var(--font-serif);
color: var(--color-text);
font-family: var(--font-sans);
font-size: clamp(1.25rem, 2.3vw, 1.45rem);
line-height: 1.38;
}