Files
school_compare/nextjs-app/components/HomeView.module.css
Tudor 1b9220d51b
All checks were successful
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 39s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 1m16s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s
Redesign hero section to be more compact with coral accent
Reduced padding and title size to eliminate empty feeling, added
decorative coral underline bar for visual interest, and subtle
fade-in animation on page load.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 09:29:06 +00:00

224 lines
4.3 KiB
CSS

.homeView {
width: 100%;
}
.hero {
text-align: center;
margin-bottom: 2.5rem;
padding: 2rem 2rem 1.75rem;
background: linear-gradient(135deg, var(--bg-secondary, #f3ede4) 0%, var(--bg-primary, #faf7f2) 100%);
border-radius: 16px;
border: 1px solid var(--border-color, #e5dfd5);
animation: heroFadeIn 0.5s ease-out;
}
@keyframes heroFadeIn {
from {
opacity: 0;
transform: translateY(-8px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.heroTitle {
font-size: 2.25rem;
font-weight: 700;
color: var(--text-primary, #1a1612);
margin-bottom: 0.5rem;
line-height: 1.2;
letter-spacing: -0.02em;
font-family: var(--font-playfair), 'Playfair Display', serif;
}
/* Coral accent bar under title */
.heroTitle::after {
content: '';
display: block;
width: 80px;
height: 3px;
background: var(--accent-coral, #e07256);
border-radius: 2px;
margin: 0.75rem auto 0;
}
.heroDescription {
font-size: 1rem;
color: var(--text-secondary, #5c564d);
max-width: 520px;
margin: 0.75rem auto 0;
line-height: 1.5;
}
.locationBanner {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 1rem 1.5rem;
background: rgba(45, 125, 125, 0.1);
border: 1px solid rgba(45, 125, 125, 0.3);
border-radius: 12px;
margin-bottom: 2rem;
font-size: 0.9375rem;
color: var(--accent-teal, #2d7d7d);
font-weight: 500;
}
.locationIcon {
font-size: 1.25rem;
color: var(--accent-teal, #2d7d7d);
}
.results {
margin-top: 2rem;
}
.sectionHeader {
margin-bottom: 2rem;
}
.sectionHeader h2 {
font-size: 1.875rem;
font-weight: 700;
margin-bottom: 0.75rem;
color: var(--text-primary, #1a1612);
font-family: var(--font-playfair), 'Playfair Display', serif;
}
/* Decorative coral bar under section headings */
.sectionHeader h2::after {
content: '';
display: block;
width: 60px;
height: 3px;
background: var(--accent-coral, #e07256);
border-radius: 2px;
margin-top: 0.75rem;
}
.sectionDescription {
font-size: 1rem;
color: var(--text-secondary, #5c564d);
margin: 0;
line-height: 1.6;
}
.resultsHeader {
margin-bottom: 2rem;
padding-bottom: 1rem;
border-bottom: 2px solid var(--border-color, #e5dfd5);
}
.resultsHeader h2 {
font-size: 1.5rem;
font-weight: 600;
color: var(--text-primary, #1a1612);
margin: 0;
display: flex;
align-items: center;
gap: 0.5rem;
}
.resultsHeader h2::before {
content: '';
display: inline-block;
width: 4px;
height: 1.25em;
background: var(--accent-coral, #e07256);
border-radius: 2px;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}
/* Staggered grid entry animation */
.grid > * {
animation: gridItemFadeIn 0.4s ease-out both;
}
.grid > *:nth-child(1) { animation-delay: 0ms; }
.grid > *:nth-child(2) { animation-delay: 50ms; }
.grid > *:nth-child(3) { animation-delay: 100ms; }
.grid > *:nth-child(4) { animation-delay: 150ms; }
.grid > *:nth-child(5) { animation-delay: 200ms; }
.grid > *:nth-child(6) { animation-delay: 250ms; }
.grid > *:nth-child(7) { animation-delay: 300ms; }
.grid > *:nth-child(8) { animation-delay: 350ms; }
.grid > *:nth-child(9) { animation-delay: 400ms; }
.grid > *:nth-child(n+10) { animation-delay: 450ms; }
@keyframes gridItemFadeIn {
from {
opacity: 0;
transform: translateY(16px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.emptyState {
text-align: center;
padding: 4rem 2rem;
background: var(--bg-card, white);
border: 1px solid var(--border-color, #e5dfd5);
border-radius: 12px;
}
.emptyStateTitle {
font-size: 1.5rem;
font-weight: 600;
color: var(--text-primary, #1a1612);
margin-bottom: 0.5rem;
font-family: var(--font-playfair), 'Playfair Display', serif;
}
.emptyStateDescription {
font-size: 1rem;
color: var(--text-secondary, #5c564d);
max-width: 400px;
margin: 0 auto;
}
@media (max-width: 768px) {
.hero {
padding: 1.5rem 1rem 1.25rem;
margin-bottom: 1.5rem;
border-radius: 12px;
}
.heroTitle {
font-size: 1.75rem;
}
.heroTitle::after {
width: 60px;
margin-top: 0.5rem;
}
.heroDescription {
font-size: 0.9375rem;
}
.grid {
grid-template-columns: 1fr;
}
.locationBanner {
padding: 0.875rem 1rem;
font-size: 0.875rem;
border-radius: 8px;
}
.emptyState {
padding: 3rem 1.5rem;
}
}