diff --git a/app/globals.css b/app/globals.css index 2eeb26a..33c01fa 100644 --- a/app/globals.css +++ b/app/globals.css @@ -57,7 +57,8 @@ .main { max-width: var(--max-width); margin: 0 auto; - padding: 104px 24px 96px; /* 56px header + 48px original padding */ + padding: 104px 24px 96px; + /* 56px header + 48px original padding */ } /* Simple CSS Page Fade-In (Replaces Framer Motion) */ @@ -70,6 +71,7 @@ opacity: 0; transform: translateY(8px); } + to { opacity: 1; transform: translateY(0); @@ -80,7 +82,8 @@ .main:has(.hero), .main:has(.about) { max-width: none; - padding-top: 56px; /* Still need space for header */ + padding-top: 56px; + /* Still need space for header */ padding-left: 0; padding-right: 0; padding-bottom: 0; @@ -179,6 +182,95 @@ opacity: 1; } +/* ── Hero: Fullbleed Layout ─────────────────────── */ +.hero--fullbleed { + position: relative; + min-height: calc(100vh - 56px); + overflow: hidden; +} + +/* HeroCarousel images fill the entire container */ +.hero--fullbleed>span, +.hero--fullbleed>img { + position: absolute !important; + inset: 0; + width: 100% !important; + height: 100% !important; + object-fit: cover; +} + +.hero__fullbleed-overlay { + position: absolute; + inset: 0; + z-index: 2; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + padding: 64px 40px; + /* Multi-stop for contrast on any image brightness */ + background: + radial-gradient(ellipse at center, rgba(0, 0, 0, 0.55) 0%, rgba(0, 0, 0, 0.0) 70%), + linear-gradient(to bottom, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.15) 40%, rgba(0, 0, 0, 0.45) 100%); +} + +.hero--fullbleed .hero__title { + color: #fff; + font-size: 4rem; + text-shadow: 0 2px 8px rgba(0, 0, 0, 0.7), 0 8px 48px rgba(0, 0, 0, 0.6); +} + +.hero--fullbleed .hero__subtitle { + color: rgba(255, 255, 255, 0.92); + margin-bottom: 32px; + text-shadow: 0 1px 6px rgba(0, 0, 0, 0.7); +} + +.hero--fullbleed .hero__nav { + background: rgba(0, 0, 0, 0.38); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + padding: 14px 28px; + border-radius: 12px; + border: 1px solid rgba(255, 255, 255, 0.1); +} + +.hero--fullbleed .hero__nav-link { + color: rgba(255, 255, 255, 0.7); + text-decoration-color: rgba(255, 255, 255, 0.25); +} + +.hero--fullbleed .hero__nav-link:hover { + color: #fff; + text-decoration-color: #fff; +} + +/* ── Hero: Minimal Layout ───────────────────────── */ +.hero--minimal { + display: flex; + align-items: center; + justify-content: center; + min-height: calc(100vh - 56px); + padding: 64px 40px; +} + +.hero--minimal .hero__content { + text-align: center; + max-width: 500px; +} + +.hero--minimal .hero__title { + font-size: 4.5rem; + font-weight: 300; + letter-spacing: 0.08em; + margin-bottom: 12px; +} + +.hero--minimal .hero__subtitle { + margin-bottom: 48px; +} + /* ── Hero: Stacked Layout ───────────────────────── */ .hero--stacked { display: flex; diff --git a/app/page.tsx b/app/page.tsx index aac4cf8..b6195cb 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -174,9 +174,56 @@ export default async function HomePage() { ); } - // ── Default: split / fullbleed / minimal (existing layouts) ──── + // ── Minimal: pure text, no image, simple centered ────────────── + if (heroStyle === 'minimal') { + return ( +
{config.siteSubtitle}
+{config.siteSubtitle}
+
+ These settings require a server re-render. Click to copy the YAML snippet, then paste into{' '}
+ content/settings.yaml.
+