/** * Dashboard/Home Page - Professional Bootstrap Design * Clean professional homepage styling * * @author David Valera Melendez * @created 2025-08-08 * @location Made in Germany 🇩🇪 */ /* ========================================================================== Home Container & Layout (Matching Angular) ========================================================================== */ .home-container { max-width: 1200px; margin: 0 auto; padding: 32px 24px 0 24px; } /* ========================================================================== Hero Section (Exact Angular Material Match) ========================================================================== */ .hero-section { margin-bottom: 48px; } .hero-card { text-align: center; padding: 48px 24px; @include gradient-background(var(--gradient-primary)); color: var(--color-text-white); border-radius: var(--border-radius-xl); border: none; box-shadow: var(--shadow-lg); } .hero-content { max-width: 600px; margin: 0 auto; } .hero-icon .large-icon { font-size: 72px; width: 72px; height: 72px; margin-bottom: 24px; color: var(--color-text-white-muted); } .hero-title { font-size: 2.5rem; font-weight: $font-weight-light; margin-bottom: 16px; line-height: 1.2; color: var(--color-text-white); } .hero-subtitle { font-size: 1.25rem; margin-bottom: 16px; opacity: 0.9; line-height: 1.5; color: var(--color-text-white); } .author-signature { font-size: 1rem; margin-bottom: 32px; opacity: 0.8; color: var(--color-text-white); } .hero-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; } .primary-cta, .secondary-cta { @include material-button(); display: flex; align-items: center; gap: 8px; padding: 12px 24px; font-size: 1rem; font-weight: $font-weight-medium; border-radius: var(--border-radius-md); transition: var(--transition-normal); text-decoration: none; i { font-size: 1.1rem; } } .primary-cta { background-color: var(--color-text-white); color: var(--color-primary); border: 2px solid var(--color-text-white); &:hover { background-color: transparent; color: var(--color-text-white); border-color: var(--color-text-white); transform: translateY(-2px); box-shadow: var(--shadow-md); } } .secondary-cta { background-color: transparent; color: var(--color-text-white); border: 2px solid var(--color-text-white); &:hover { background-color: var(--color-text-white); color: var(--color-primary); transform: translateY(-2px); box-shadow: var(--shadow-md); } } /* ========================================================================== Features Section (Angular Material Grid Match) ========================================================================== */ .features-section { margin-bottom: 48px; } .section-header { text-align: center; margin-bottom: 32px; } .section-header h2 { font-size: 2rem; font-weight: $font-weight-normal; margin-bottom: 8px; color: var(--color-text-primary); } .section-header p { font-size: 1.125rem; color: var(--color-text-secondary); } .features-grid { margin-bottom: 24px; } .feature-card { @include material-card; height: 100%; padding: 24px; display: flex; flex-direction: column; border: 1px solid var(--color-border-light); .card-header { background: none; border: none; padding: 0; margin-bottom: 16px; } .card-body { padding: 0; flex-grow: 1; } } .feature-avatar { background-color: var(--color-primary); color: var(--color-text-white); width: 48px; height: 48px; border-radius: var(--border-radius-round); display: flex; align-items: center; justify-content: center; font-size: 1.5rem; flex-shrink: 0; } .feature-highlights { list-style: none; padding: 0; margin: 16px 0 0; } .feature-highlights li { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: 0.9rem; color: var(--color-text-secondary); } .check-icon { color: var(--color-success); font-size: 16px; flex-shrink: 0; } /* ========================================================================== Technology Stack Section (Angular Material Match) ========================================================================== */ .tech-section { margin-bottom: 48px; } .tech-card { @include material-card; padding: 24px; border: 1px solid var(--color-border-light); .card-header { background: none; border: none; padding: 0; margin-bottom: 24px; .card-title { color: var(--color-text-primary); font-size: 1.25rem; font-weight: $font-weight-medium; i { color: var(--color-primary); font-size: 1.5rem; } } } .card-body { padding: 0; } } .tech-stack { display: flex; flex-wrap: wrap; gap: 24px; margin: 24px 0; justify-content: center; } .tech-item { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 16px; border-radius: var(--border-radius-md); background-color: var(--color-surface-variant); border: 1px solid var(--color-border-light); transition: var(--transition-normal); min-width: 100px; &:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); background-color: var(--color-surface); } } .tech-item i { color: var(--color-primary); font-size: 32px; width: 32px; height: 32px; } .tech-item span { font-size: 0.9rem; font-weight: $font-weight-medium; color: var(--color-text-primary); text-align: center; } .tech-description { text-align: center; color: var(--color-text-secondary); margin-top: 24px; line-height: 1.6; font-size: 1rem; } /* ========================================================================== Responsive Design (Angular Material Breakpoints) ========================================================================== */ @media (max-width: 768px) { .home-container { padding: 24px 16px 0 16px; } .hero-card { padding: 32px 16px; } .hero-title { font-size: 2rem; } .hero-actions { flex-direction: column; align-items: center; .primary-cta, .secondary-cta { width: 100%; max-width: 280px; justify-content: center; } } .tech-stack { justify-content: space-around; } .tech-item { min-width: 80px; padding: 12px; } } @media (max-width: 992px) { .features-grid { .col-lg-4:nth-child(3) { margin-top: 1rem; } } } @media (max-width: 480px) { .home-container { padding: 16px 12px 0 12px; } .hero-title { font-size: 1.75rem; } .hero-subtitle { font-size: 1rem; } .section-header h2 { font-size: 1.5rem; } }