svarog-ui-core
Version:
Core components of Svarog UI without themes
478 lines (441 loc) • 17 kB
CSS
/* src/styles/themes/red-theme.css */
.red-theme {
/* Typography */
--font-family-primary:
'Poppins', -apple-system, BlinkMacSystemFont, sans-serif;
--font-family-heading: var(--font-family-primary);
--font-family-base: var(--font-family-primary);
--font-family-mono: 'Fira Code', 'Courier New', monospace;
/* Colors - Brand - Red & Bold */
--color-brand-primary: #dc2626;
--color-brand-primary-light: #ef4444;
--color-brand-primary-dark: #b91c1c;
--color-brand-secondary: #1f2937;
--color-brand-secondary-light: #374151;
--color-brand-secondary-dark: #111827;
/* Base colors */
--color-bg: #ffffff;
--color-bg-secondary: #fef2f2;
--color-border: #fecaca;
--color-gray-50: #fef2f2;
--color-text: #1f2937;
--color-text-light: #6b7280;
--color-text-muted: #9ca3af;
/* Component: Typography */
--typography-color: var(--color-text);
--typography-muted-color: var(--color-text-muted);
--typography-margin-bottom: 1.5rem;
--typography-h1-size: 3.5rem;
--typography-h2-size: 2.5rem;
--typography-h3-size: 2rem;
--typography-h4-size: 1.5rem;
--typography-h5-size: 1.25rem;
--typography-h6-size: 1.125rem;
--typography-body-size: 1rem;
--typography-small-size: 0.875rem;
/* Component: Button */
--button-bg: var(--color-brand-primary);
--button-color: #ffffff;
--button-border: none;
--button-radius: 9999px;
--button-hover-bg: var(--color-brand-primary-dark);
--button-hover-border-color: transparent;
--button-hover-color: #ffffff;
--button-hover-shadow: 0 20px 25px -5px rgba(220, 38, 38, 0.25);
--button-hover-transform: scale(1.05);
--button-active-bg: #991b1b;
--button-active-border-color: transparent;
--button-active-transform: scale(0.98);
--button-active-shadow: 0 10px 15px -3px rgba(220, 38, 38, 0.2);
--button-disabled-bg: #fecaca;
--button-disabled-border-color: transparent;
--button-disabled-color: #f87171;
--button-disabled-opacity: 1;
--button-padding: 0.75rem 2rem;
--button-font-size: 1rem;
--button-font-family: var(--font-family-primary);
--button-font-weight: 600;
--button-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
--button-shadow: 0 10px 15px -3px rgba(220, 38, 38, 0.2);
--button-focus-shadow: 0 0 0 3px rgba(220, 38, 38, 0.3);
/* Primary variant */
--button-primary-bg: var(--color-brand-primary);
--button-primary-color: #ffffff;
--button-primary-border-color: transparent;
--button-primary-hover-bg: var(--color-brand-primary-dark);
--button-primary-hover-border-color: transparent;
--button-primary-hover-color: #ffffff;
--button-primary-active-bg: #991b1b;
--button-primary-active-border-color: transparent;
/* Secondary variant */
--button-secondary-bg: var(--color-brand-secondary);
--button-secondary-color: #ffffff;
--button-secondary-border-color: transparent;
--button-secondary-hover-bg: var(--color-brand-secondary-dark);
--button-secondary-hover-border-color: transparent;
--button-secondary-hover-color: #ffffff;
--button-secondary-active-bg: #030712;
--button-secondary-active-border-color: transparent;
/* Text variant */
--button-text-color: var(--color-brand-primary);
--button-text-hover-color: var(--color-brand-primary-dark);
--button-text-padding: 0.75rem 1rem;
/* Small button styles */
--button-padding-sm: 0.5rem 1.25rem;
--button-font-size-sm: 0.875rem;
--button-radius-sm: 9999px;
--button-icon-size-sm: 1.125rem;
/* Large button styles */
--button-padding-lg: 1rem 2.5rem;
--button-font-size-lg: 1.125rem;
--button-radius-lg: 9999px;
--button-icon-size-lg: 1.5rem;
/* Icon button styles */
--button-icon-margin: 0.625rem;
--button-icon-padding: 0.875rem;
--button-icon-radius: 50%;
--button-icon-size: 1.375rem;
/* Outlined button styles */
--button-outlined-color: var(--color-brand-primary);
--button-outlined-border-color: var(--color-brand-primary);
--button-outlined-hover-bg: rgba(220, 38, 38, 0.05);
--button-outlined-hover-color: var(--color-brand-primary-dark);
--button-outlined-hover-border-color: var(--color-brand-primary-dark);
/* Success button styles */
--button-success-bg: #059669;
--button-success-color: #ffffff;
--button-success-border-color: transparent;
--button-success-hover-bg: #047857;
--button-success-hover-border-color: transparent;
--button-success-hover-color: #ffffff;
/* Danger button styles */
--button-danger-bg: #1f2937;
--button-danger-color: #ffffff;
--button-danger-border-color: transparent;
--button-danger-hover-bg: #111827;
--button-danger-hover-border-color: transparent;
--button-danger-hover-color: #ffffff;
/* Component: Link */
--link-color: var(--color-brand-primary);
--link-hover-color: var(--color-brand-primary-dark);
--link-active-color: #991b1b;
--link-margin-left: 0;
--link-margin-right: 0;
--link-font-family: var(--font-family-primary);
--link-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
/* Component: Card */
--card-bg: #ffffff;
--card-color: var(--color-text);
--card-radius: 1rem;
--card-border: 2px solid transparent;
--card-border-color: transparent;
--card-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
--card-hover-border-color: var(--color-brand-primary);
--card-hover-shadow: 0 25px 50px -12px rgba(220, 38, 38, 0.25);
--card-title-padding: 2rem;
--card-title-font-size: 1.5rem;
--card-title-font-weight: 700;
--card-title-border: none;
--card-content-padding: 2rem;
--card-footer-padding: 2rem;
--card-footer-bg: #fef2f2;
--card-footer-border: none;
--card-footer-font-size: 0.875rem;
--card-title-padding-mobile: 1.5rem;
--card-content-padding-mobile: 1.5rem;
--card-footer-padding-mobile: 1.5rem;
/* Component: Input */
--input-bg: #ffffff;
--input-color: var(--color-text);
--input-border: 2px solid #fecaca;
--input-radius: 0.75rem;
--input-padding: 0.75rem 1rem;
--input-font-size: 1rem;
--input-font-family: var(--font-family-primary);
--input-shadow: none;
--input-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
--input-placeholder-color: #f87171;
--input-focus-border-color: var(--color-brand-primary);
--input-focus-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
--input-disabled-bg: #fef2f2;
--input-disabled-opacity: 0.6;
--input-valid-border-color: #059669;
--input-valid-color: #059669;
--input-invalid-border-color: #7f1d1d;
--input-validation-color: #7f1d1d;
--input-validation-font-size: 0.875rem;
--input-margin-bottom: 1.5rem;
--input-mobile-font-size: 16px;
--input-mobile-padding: 0.75rem 1rem;
/* Component: Select */
--select-bg: #ffffff;
--select-color: var(--color-text);
--select-border: 2px solid #fecaca;
--select-radius: 0.75rem;
--select-padding: 0.75rem 1rem;
--select-font-size: 1rem;
--select-font-family: var(--font-family-primary);
--select-shadow: none;
--select-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
--select-option-color: var(--color-text);
--select-option-bg: #ffffff;
--select-option-disabled-color: #f87171;
--select-focus-border-color: var(--color-brand-primary);
--select-focus-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
--select-disabled-bg: #fef2f2;
--select-disabled-opacity: 0.6;
--select-valid-border-color: #059669;
--select-valid-color: #059669;
--select-invalid-border-color: #7f1d1d;
--select-validation-color: #7f1d1d;
--select-validation-font-size: 0.875rem;
--select-margin-bottom: 1.5rem;
--select-mobile-font-size: 16px;
--select-mobile-padding: 0.75rem 1rem;
--select-multiple-padding: 0.5rem;
--select-option-padding: 0.625rem 1rem;
--select-option-margin: 0.25rem 0;
/* Component: Checkbox */
--checkbox-bg: #ffffff;
--checkbox-border: 2px solid var(--color-brand-primary);
--checkbox-radius: 0.375rem;
--checkbox-size: 1.25rem;
--checkbox-color: var(--color-text);
--checkbox-indicator-margin: 0.75rem;
--checkbox-font-size: 1rem;
--checkbox-font-family: var(--font-family-primary);
--checkbox-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
--checkbox-padding: 0;
--checkbox-hover-border-color: var(--color-brand-primary-dark);
--checkbox-checked-bg: var(--color-brand-primary);
--checkbox-checked-border-color: var(--color-brand-primary);
--checkbox-focus-shadow: 0 0 0 3px rgba(220, 38, 38, 0.3);
--checkbox-disabled-bg: #fef2f2;
--checkbox-disabled-border-color: #fecaca;
--checkbox-disabled-color: #f87171;
--checkbox-valid-border-color: #059669;
--checkbox-valid-color: #059669;
--checkbox-invalid-border-color: #7f1d1d;
--checkbox-validation-color: #7f1d1d;
--checkbox-validation-font-size: 0.875rem;
--checkbox-margin-bottom: 1.25rem;
--checkbox-indicator-width: 4px;
--checkbox-indicator-height: 10px;
--checkbox-required-color: #7f1d1d;
--checkbox-indeterminate-bg: var(--color-brand-primary);
--checkbox-indeterminate-border-color: var(--color-brand-primary);
--checkbox-indeterminate-width: 10px;
--checkbox-indeterminate-height: 2px;
/* Component: Radio */
--radio-bg: #ffffff;
--radio-border: 2px solid var(--color-brand-primary);
--radio-size: 1.25rem;
--radio-inner-size: 0.625rem;
--radio-color: var(--color-text);
--radio-indicator-margin: 0.75rem;
--radio-font-size: 1rem;
--radio-font-family: var(--font-family-primary);
--radio-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
--radio-padding: 0;
--radio-hover-border-color: var(--color-brand-primary-dark);
--radio-checked-color: var(--color-brand-primary);
--radio-checked-border-color: var(--color-brand-primary);
--radio-focus-shadow: 0 0 0 3px rgba(220, 38, 38, 0.3);
--radio-disabled-bg: #fef2f2;
--radio-disabled-border-color: #fecaca;
--radio-disabled-color: #f87171;
--radio-disabled-checked-color: #fecaca;
--radio-margin-bottom: 1.25rem;
--radio-required-color: #7f1d1d;
/* Component: Radio Group */
--radio-group-margin-bottom: 1.5rem;
--radio-group-padding: 1rem;
--radio-group-border: 2px solid #fecaca;
--radio-group-radius: 0.75rem;
--radio-group-legend-font-size: 1rem;
--radio-group-legend-color: var(--color-text);
--radio-group-font-family: var(--font-family-primary);
--radio-group-legend-font-weight: 600;
--radio-group-legend-padding: 0 0.5rem;
--radio-group-legend-margin-bottom: 1rem;
--radio-group-required-color: #7f1d1d;
--radio-group-gap: 1rem;
--radio-group-valid-border-color: #059669;
--radio-group-invalid-border-color: #7f1d1d;
--radio-group-validation-color: #7f1d1d;
--radio-group-validation-font-size: 0.875rem;
--radio-group-disabled-opacity: 0.6;
--radio-group-disabled-bg: #fef2f2;
/* Component: Form Group */
--form-group-margin-bottom: 1.5rem;
--form-group-label-font-size: 1rem;
--form-group-label-color: var(--color-text);
--form-group-font-family: var(--font-family-primary);
--form-group-label-font-weight: 600;
--form-group-label-margin-bottom: 0.75rem;
--form-group-required-color: var(--color-brand-primary);
--form-group-help-font-size: 0.875rem;
--form-group-help-color: #6b7280;
--form-group-label-margin-right: 1.5rem;
--form-group-label-margin-left: 1.5rem;
--form-group-label-width: 30%;
/* Component: Form */
--form-label-width: 30%;
--form-section-margin-bottom: 3rem;
--form-section-title-font-size: 1.75rem;
--form-section-title-color: var(--color-brand-primary);
--form-section-title-font-weight: 700;
--form-section-title-margin-bottom: 1.5rem;
--form-section-title-border: none;
--form-section-description-font-size: 1rem;
--form-section-description-color: #6b7280;
--form-section-description-margin-bottom: 1.5rem;
--form-actions-gap: 1rem;
--form-actions-margin-top: 2.5rem;
--form-actions-justify: flex-end;
/* Component: Navigation */
--nav-bg: #ffffff;
--nav-border-bottom: 3px solid var(--color-brand-primary);
--nav-dropdown-bg: #ffffff;
--nav-dropdown-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
--nav-padding: 0 2rem;
--nav-margin-right: 0;
--nav-font-size: 1rem;
--nav-line-height: 1.5;
--nav-active-font-weight: 700;
--nav-focus-shadow: none;
--nav-item-spacing: 2.5rem;
--nav-item-spacing-vertical: 1rem;
--nav-submenu-indent: 1.5rem;
--nav-link-color: var(--color-text);
--nav-link-hover-color: var(--color-brand-primary);
--nav-link-active-color: var(--color-brand-primary);
--nav-link-font-size: 1rem;
--nav-link-padding: 0.75rem 1rem;
--nav-link-radius: 0.5rem;
--nav-link-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
--nav-burger-font-size: 1.5rem;
--nav-burger-color: var(--color-brand-primary);
--nav-burger-size: 1.5rem;
--nav-burger-margin-bottom: 0;
--nav-dropdown-border: 2px solid #fecaca;
--nav-dropdown-link-padding: 0.75rem 1.25rem;
--nav-dropdown-padding: 0.75rem;
--nav-dropdown-radius: 0.75rem;
--nav-padding-mobile: 1rem;
--nav-mobile-bg: #ffffff;
--nav-mobile-item-border: 2px solid #fecaca;
--nav-mobile-link-padding: 1.25rem;
--nav-mobile-max-height: calc(100vh - 5rem);
--nav-mobile-padding: 0;
--nav-mobile-radius: 0;
--nav-mobile-shadow: inset 0 3px 0 0 var(--color-brand-primary);
--nav-mobile-submenu-bg: #fef2f2;
--nav-mobile-active-bg: #fee2e2;
--nav-mobile-hover-bg: #fef2f2;
/* Component: Section */
--section-bg: #ffffff;
--section-color: var(--color-text);
--section-padding: 5rem 2.5rem;
--section-gap: 2rem;
--section-content-max-width: 80rem;
--section-padding-tablet: 4rem 2rem;
--section-gap-tablet: 1.5rem;
--section-padding-mobile: 3rem 1.5rem;
--section-bg-minor: #fef2f2;
--section-color-minor: #991b1b;
/* Component: Logo */
--logo-width: auto;
--logo-height: 3rem;
--logo-height-tablet: 2.5rem;
--logo-hover-opacity: 0.8;
--logo-max-height: 4rem;
--logo-max-width: 15rem;
--logo-width-tablet: auto;
/* ContactInfo Component */
--contact-info-gap: 1.5rem;
--contact-info-item-gap: 0.75rem;
--contact-info-mobile-gap: 0.75rem;
--contact-info-color: var(--color-text);
--contact-info-hover-color: var(--color-brand-primary);
--contact-info-font-size: 1rem;
--contact-info-icon-size: 1.25rem;
/* StickyContactIcons Variables */
--sticky-contact-icons-right: 2.5rem;
--sticky-contact-icons-gap: 1.25rem;
--sticky-contact-icons-padding: 1.25rem;
--sticky-contact-icons-bg: var(--color-brand-primary);
--sticky-contact-icons-radius: 50%;
--sticky-contact-icons-shadow: 0 20px 25px -5px rgba(220, 38, 38, 0.25);
--sticky-contact-icons-size: 3.5rem;
--sticky-contact-icons-color: #ffffff;
--sticky-contact-icons-hover-color: #fef2f2;
--sticky-contact-icons-icon-size: 1.75rem;
--sticky-contact-icons-mobile-right: 1.25rem;
--sticky-contact-icons-mobile-bottom: 1.25rem;
--sticky-contact-icons-mobile-size: 3rem;
--sticky-contact-icons-mobile-icon-size: 1.5rem;
/* Component: Header */
--header-bg: #ffffff;
--header-bg-scrolled: rgba(255, 255, 255, 0.98);
--header-branding-gap: 1.5rem;
--header-color: var(--color-text);
--header-height: 5rem;
--header-height-mobile: 4rem;
--header-max-width: 100%;
--header-padding: 0 2.5rem;
--header-padding-mobile: 0 1.5rem;
--header-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
--header-shadow-scrolled: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
--header-title-size: 1.5rem;
--header-title-size-mobile: 1.25rem;
--header-title-weight: 700;
--header-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
--header-transparent-color: var(--color-text);
--header-z-index: 50;
/* Component: CollapsibleHeader */
--collapsible-header-collapsed-height: 5rem;
--collapsible-header-contact-bg: #fef2f2;
--collapsible-header-contact-transition: all 300ms
cubic-bezier(0.4, 0, 0.2, 1);
--collapsible-header-height: 8rem;
--collapsible-header-logo-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
--collapsible-header-mobile-height: 4rem;
--collapsible-header-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
--collapsible-header-transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
/* Component: Footer */
--footer-bg: var(--color-brand-secondary);
--footer-text: #e5e7eb;
--footer-link-hover: #ffffff;
/* Component: PriceDisplay */
--price-display-bg: rgba(220, 38, 38, 0.05);
--price-display-border: 2px solid var(--color-brand-primary);
--price-display-color: var(--color-brand-primary);
/* Additional Variables */
--color-yellow: #fbbf24;
--transition-duration: 300ms;
--transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
--border-radius: 0.75rem;
--border-radius-default: 0.75rem;
--box-shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
/* Red theme specific enhancements */
.red-theme .card {
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
.red-theme .card:hover {
transform: translateY(-8px) rotate(-1deg);
}
.red-theme h1,
.red-theme h2,
.red-theme h3,
.red-theme h4,
.red-theme h5,
.red-theme h6 {
color: var(--color-text);
line-height: 1.2;
letter-spacing: -0.025em;
}
.red-theme h1 {
color: var(--color-brand-primary);
}