@use '../../../../../ui-design-system/src/styles/semantic/index' as *; .ui-lp-hero { position: relative; display: flex; align-items: center; width: 100%; // Min Height Variants &--full { min-height: 100vh; } &--large { min-height: 80vh; } &--medium { min-height: 60vh; } // Background Variants &--solid { background: $semantic-color-surface-primary; } &--gradient { background: linear-gradient( 135deg, $semantic-color-primary, $semantic-color-secondary ); } &--animated { background: $semantic-color-surface-primary; overflow: hidden; } // Content Container &__content { position: relative; z-index: $semantic-z-index-dropdown; padding: $semantic-spacing-layout-section-lg 0; } // Alignment Variants &--left &__content { text-align: left; } &--center &__content { text-align: center; margin: 0 auto; max-width: 800px; } &--right &__content { text-align: right; } // Typography &__title { font-family: map-get($semantic-typography-heading-h1, font-family); font-size: map-get($semantic-typography-heading-h1, font-size); font-weight: map-get($semantic-typography-heading-h1, font-weight); line-height: map-get($semantic-typography-heading-h1, line-height); color: $semantic-color-text-primary; margin-bottom: $semantic-spacing-content-heading; .ui-lp-hero--gradient &, .ui-lp-hero--image & { color: $semantic-color-on-primary; } } &__subtitle { font-family: map-get($semantic-typography-body-large, font-family); font-size: map-get($semantic-typography-body-large, font-size); font-weight: map-get($semantic-typography-body-large, font-weight); line-height: map-get($semantic-typography-body-large, line-height); color: $semantic-color-text-secondary; margin-bottom: $semantic-spacing-content-paragraph; .ui-lp-hero--gradient &, .ui-lp-hero--image & { color: $semantic-color-on-primary; opacity: $semantic-opacity-subtle; } } &__actions { display: flex; gap: $semantic-spacing-component-md; margin-top: $semantic-spacing-layout-section-sm; .ui-lp-hero--center & { justify-content: center; } .ui-lp-hero--right & { justify-content: flex-end; } } // Animated Background &__animated-bg { position: absolute; inset: 0; background: linear-gradient( -45deg, $semantic-color-primary, $semantic-color-secondary, $semantic-color-primary, $semantic-color-secondary ); background-size: 400% 400%; animation: gradientShift 15s ease infinite; z-index: $semantic-z-index-dropdown - 1; } // Responsive Design @media (max-width: $semantic-breakpoint-md - 1) { &--full { min-height: 100svh; // Use small viewport height for mobile } &__title { font-family: map-get($semantic-typography-heading-h2, font-family); font-size: map-get($semantic-typography-heading-h2, font-size); font-weight: map-get($semantic-typography-heading-h2, font-weight); line-height: map-get($semantic-typography-heading-h2, line-height); } &__actions { flex-direction: column; align-items: stretch; } } @media (max-width: $semantic-breakpoint-sm - 1) { &__title { font-family: map-get($semantic-typography-heading-h3, font-family); font-size: map-get($semantic-typography-heading-h3, font-size); font-weight: map-get($semantic-typography-heading-h3, font-weight); line-height: map-get($semantic-typography-heading-h3, line-height); } &__subtitle { font-family: map-get($semantic-typography-body-medium, font-family); font-size: map-get($semantic-typography-body-medium, font-size); font-weight: map-get($semantic-typography-body-medium, font-weight); line-height: map-get($semantic-typography-body-medium, line-height); } } } // Keyframes for animated background @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }