:root { /* Colors - Brand */ --color-primary: #0066CC; /* Blue - main brand */ --color-primary-dark: #004C99; /* Hover/active states */ --color-primary-light: #E6F2FF; /* Backgrounds/badges */ --color-secondary: #FF6B35; /* Orange - accent/CTA */ --color-secondary-dark: #E55A2B; --color-secondary-light: #FFF0EB; /* Neutrals */ --color-white: #FFFFFF; --color-black: #1A1A1A; --color-gray-50: #F9FAFB; --color-gray-100: #F3F4F6; --color-gray-200: #E5E7EB; --color-gray-300: #D1D5DB; --color-gray-400: #9CA3AF; --color-gray-500: #6B7280; --color-gray-600: #4B5563; --color-gray-700: #374151; --color-gray-800: #1F2937; --color-gray-900: #111827; /* Semantic colors */ --color-success: #10B981; --color-warning: #F59E0B; --color-error: #EF4444; --color-info: #3B82F6; /* Typography */ --font-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --font-heading: 'Poppins', var(--font-primary); --font-size-xs: 0.75rem; /* 12px */ --font-size-sm: 0.875rem; /* 14px */ --font-size-base: 1rem; /* 16px */ --font-size-lg: 1.125rem; /* 18px */ --font-size-xl: 1.25rem; /* 20px */ --font-size-2xl: 1.5rem; /* 24px */ --font-size-3xl: 1.875rem; /* 30px */ --font-size-4xl: 2.25rem; /* 36px */ --font-size-5xl: 3rem; /* 48px */ --font-size-6xl: 3.75rem; /* 60px */ --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --line-height-tight: 1.25; --line-height-normal: 1.5; --line-height-relaxed: 1.75; /* Spacing scale (8px base) */ --space-1: 0.25rem; /* 4px */ --space-2: 0.5rem; /* 8px */ --space-3: 0.75rem; /* 12px */ --space-4: 1rem; /* 16px */ --space-5: 1.25rem; /* 20px */ --space-6: 1.5rem; /* 24px */ --space-8: 2rem; /* 32px */ --space-10: 2.5rem; /* 40px */ --space-12: 3rem; /* 48px */ --space-16: 4rem; /* 64px */ --space-20: 5rem; /* 80px */ --space-24: 6rem; /* 96px */ --space-32: 8rem; /* 128px */ /* Border radius */ --radius-sm: 0.25rem; /* 4px */ --radius-md: 0.5rem; /* 8px */ --radius-lg: 0.75rem; /* 12px */ --radius-xl: 1rem; /* 16px */ --radius-2xl: 1.5rem; /* 24px */ --radius-full: 9999px; /* Shadows */ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); /* Container widths */ --container-sm: 640px; --container-md: 768px; --container-lg: 1024px; --container-xl: 1280px; --container-2xl: 1536px; /* Transitions */ --transition-fast: 150ms ease-in-out; --transition-base: 250ms ease-in-out; --transition-slow: 350ms ease-in-out; /* Z-index scale */ --z-dropdown: 1000; --z-sticky: 1020; --z-fixed: 1030; --z-modal-backdrop: 1040; --z-modal: 1050; --z-popover: 1060; --z-tooltip: 1070; }/* Container */ .container { width: 100%; max-width: var(--container-xl); margin-left: auto; margin-right: auto; padding-left: var(--space-4); padding-right: var(--space-4); } @media (min-width: 768px) { .container { padding-left: var(--space-6); padding-right: var(--space-6); } } @media (min-width: 1024px) { .container { padding-left: var(--space-8); padding-right: var(--space-8); } } .container-sm { max-width: var(--container-sm); } .container-md { max-width: var(--container-md); } .container-lg { max-width: var(--container-lg); } .container-2xl { max-width: var(--container-2xl); } /* Full-width sections */ .section { padding-top: var(--space-16); padding-bottom: var(--space-16); } @media (min-width: 768px) { .section { padding-top: var(--space-20); padding-bottom: var(--space-20); } } @media (min-width: 1024px) { .section { padding-top: var(--space-24); padding-bottom: var(--space-24); } } .section-sm { padding-top: var(--space-12); padding-bottom: var(--space-12); } .section-lg { padding-top: var(--space-24); padding-bottom: var(--space-24); } @media (min-width: 1024px) { .section-lg { padding-top: var(--space-32); padding-bottom: var(--space-32); } }/* Vertical rhythm - use on parent containers */ .stack-xs > * + * { margin-top: var(--space-2); } .stack-sm > * + * { margin-top: var(--space-4); } .stack-md > * + * { margin-top: var(--space-6); } .stack-lg > * + * { margin-top: var(--space-8); } .stack-xl > * + * { margin-top: var(--space-12); } .stack-2xl > * + * { margin-top: var(--space-16); } /* Responsive stacks */ @media (min-width: 768px) { .stack-md@md > * + * { margin-top: var(--space-6); } .stack-lg@md > * + * { margin-top: var(--space-8); } .stack-xl@md > * + * { margin-top: var(--space-12); } } @media (min-width: 1024px) { .stack-lg@lg > * + * { margin-top: var(--space-8); } .stack-xl@lg > * + * { margin-top: var(--space-12); } .stack-2xl@lg > * + * { margin-top: var(--space-16); } }/* Horizontal rhythm - use on parent flex containers */ .cluster { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: center; } .cluster-xs { gap: var(--space-2); } .cluster-sm { gap: var(--space-3); } .cluster-md { gap: var(--space-6); } .cluster-lg { gap: var(--space-8); } .cluster-xl { gap: var(--space-12); } /* Alignment variants */ .cluster-start { justify-content: flex-start; } .cluster-center { justify-content: center; } .cluster-end { justify-content: flex-end; } .cluster-between { justify-content: space-between; } /* Auto-fit grid */ .grid { display: grid; gap: var(--space-6); } .grid-2 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(3, 1fr); } .grid-4 { grid-template-columns: repeat(4, 1fr); } /* Responsive grids */ @media (max-width: 767px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } } @media (min-width: 768px) and (max-width: 1023px) { .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); } } /* Auto-fit (responsive without breakpoints) */ .grid-auto { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); } .grid-auto-sm { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } .grid-auto-lg { grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); } /* Gap variants */ .grid-gap-sm { gap: var(--space-4); } .grid-gap-md { gap: var(--space-6); } .grid-gap-lg { gap: var(--space-8); } .grid-gap-xl { gap: var(--space-12); } /* Headings */ .h1, .h2, .h3, .h4, .h5, .h6 { font-family: var(--font-heading); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); color: var(--color-gray-900); margin: 0; } .h1 { font-size: var(--font-size-3xl); } .h2 { font-size: var(--font-size-2xl); } .h3 { font-size: var(--font-size-xl); } .h4 { font-size: var(--font-size-lg); } .h5 { font-size: var(--font-size-base); } .h6 { font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); } @media (min-width: 768px) { .h1 { font-size: var(--font-size-4xl); } .h2 { font-size: var(--font-size-3xl); } .h3 { font-size: var(--font-size-2xl); } } @media (min-width: 1024px) { .h1 { font-size: var(--font-size-5xl); } .h2 { font-size: var(--font-size-4xl); } .h3 { font-size: var(--font-size-3xl); } } /* Display headings (hero) */ .display-1 { font-family: var(--font-heading); font-size: var(--font-size-4xl); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); color: var(--color-gray-900); } @media (min-width: 768px) { .display-1 { font-size: var(--font-size-5xl); } } @media (min-width: 1024px) { .display-1 { font-size: var(--font-size-6xl); } } /* Body text */ .text-base { font-size: var(--font-size-base); line-height: var(--line-height-normal); } .text-sm { font-size: var(--font-size-sm); line-height: var(--line-height-normal); } .text-lg { font-size: var(--font-size-lg); line-height: var(--line-height-relaxed); } .text-xl { font-size: var(--font-size-xl); line-height: var(--line-height-relaxed); } /* Lead paragraph */ .lead { font-size: var(--font-size-lg); line-height: var(--line-height-relaxed); color: var(--color-gray-600); } @media (min-width: 768px) { .lead { font-size: var(--font-size-xl); } } /* Text colors */ .text-primary { color: var(--color-primary); } .text-secondary { color: var(--color-secondary); } .text-white { color: var(--color-white); } .text-gray-600 { color: var(--color-gray-600); } .text-gray-700 { color: var(--color-gray-700); } .text-gray-900 { color: var(--color-gray-900); } /* Font weights */ .font-normal { font-weight: var(--font-weight-normal); } .font-medium { font-weight: var(--font-weight-medium); } .font-semibold { font-weight: var(--font-weight-semibold); } .font-bold { font-weight: var(--font-weight-bold); } /* Text alignment */ .text-left { text-align: left; } .text-center { text-align: center; } .text-right { text-align: right; } @media (min-width: 768px) { .text-left@md { text-align: left; } .text-center@md { text-align: center; } } /* Base button */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); padding: var(--space-3) var(--space-6); font-family: var(--font-primary); font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); line-height: 1.5; text-align: center; text-decoration: none; white-space: nowrap; border: 2px solid transparent; border-radius: var(--radius-md); cursor: pointer; transition: all var(--transition-base); user-select: none; } .btn:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; } /* Primary button */ .btn-primary { background-color: var(--color-primary); color: var(--color-white); border-color: var(--color-primary); } .btn-primary:hover { background-color: var(--color-primary-dark); border-color: var(--color-primary-dark); transform: translateY(-1px); box-shadow: var(--shadow-md); } .btn-primary:active { transform: translateY(0); } /* Secondary button */ .btn-secondary { background-color: var(--color-secondary); color: var(--color-white); border-color: var(--color-secondary); } .btn-secondary:hover { background-color: var(--color-secondary-dark); border-color: var(--color-secondary-dark); transform: translateY(-1px); box-shadow: var(--shadow-md); } /* Outline button */ .btn-outline { background-color: transparent; color: var(--color-primary); border-color: var(--color-primary); } .btn-outline:hover { background-color: var(--color-primary); color: var(--color-white); } /* Ghost button */ .btn-ghost { background-color: transparent; color: var(--color-gray-700); border-color: transparent; } .btn-ghost:hover { background-color: var(--color-gray-100); } /* White button (for dark backgrounds) */ .btn-white { background-color: var(--color-white); color: var(--color-primary); border-color: var(--color-white); } .btn-white:hover { background-color: var(--color-gray-100); border-color: var(--color-gray-100); } /* Button sizes */ .btn-sm { padding: var(--space-2) var(--space-4); font-size: var(--font-size-sm); } .btn-lg { padding: var(--space-4) var(--space-8); font-size: var(--font-size-lg); } .btn-xl { padding: var(--space-5) var(--space-10); font-size: var(--font-size-xl); } /* Full width button */ .btn-block { display: flex; width: 100%; } /* Icon buttons */ .btn-icon { padding: var(--space-3); aspect-ratio: 1; } .btn-icon-sm { padding: var(--space-2); } .btn-icon-lg { padding: var(--space-4); } /* Base card */ .card { background-color: var(--color-white); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); overflow: hidden; transition: all var(--transition-base); } .card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); } .card-body { padding: var(--space-6); } .card-body-sm { padding: var(--space-4); } .card-body-lg { padding: var(--space-8); } /* Service card (for your HVAC services) */ .service-card { background-color: var(--color-white); border-radius: var(--radius-lg); padding: var(--space-8); box-shadow: var(--shadow-md); text-align: center; transition: all var(--transition-base); } .service-card:hover { box-shadow: var(--shadow-xl); transform: translateY(-4px); } .service-card__icon { width: 64px; height: 64px; margin: 0 auto var(--space-4); display: flex; align-items: center; justify-content: center; background-color: var(--color-primary-light); color: var(--color-primary); border-radius: var(--radius-xl); font-size: var(--font-size-3xl); } .service-card__title { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); margin-bottom: var(--space-3); color: var(--color-gray-900); } .service-card__description { color: var(--color-gray-600); margin-bottom: var(--space-6); } /* Testimonial card */ .testimonial-card { background-color: var(--color-white); border-radius: var(--radius-lg); padding: var(--space-6); box-shadow: var(--shadow-md); border-left: 4px solid var(--color-primary); } .testimonial-card__quote { font-size: var(--font-size-lg); line-height: var(--line-height-relaxed); color: var(--color-gray-700); margin-bottom: var(--space-4); font-style: italic; } .testimonial-card__author { font-weight: var(--font-weight-semibold); color: var(--color-gray-900); } .testimonial-card__role { font-size: var(--font-size-sm); color: var(--color-gray-600); } /* Badge */ .badge { display: inline-flex; align-items: center; gap: var(--space-1); padding: var(--space-1) var(--space-3); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); line-height: 1; border-radius: var(--radius-full); } .badge-primary { background-color: var(--color-primary-light); color: var(--color-primary-dark); } .badge-secondary { background-color: var(--color-secondary-light); color: var(--color-secondary-dark); } .badge-success { background-color: #D1FAE5; color: #065F46; } .badge-warning { background-color: #FEF3C7; color: #92400E; } .badge-error { background-color: #FEE2E2; color: #991B1B; } /* Trust badge (for license, reviews, etc.) */ .trust-badge { display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-4); background-color: var(--color-gray-100); border-radius: var(--radius-md); font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-gray-700); } .trust-badge__icon { color: var(--color-primary); } /* Form group */ .form-group { margin-bottom: var(--space-6); } /* Label */ .form-label { display: block; margin-bottom: var(--space-2); font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-gray-700); } /* Input */ .form-input, .form-select, .form-textarea { display: block; width: 100%; padding: var(--space-3) var(--space-4); font-family: var(--font-primary); font-size: var(--font-size-base); line-height: 1.5; color: var(--color-gray-900); background-color: var(--color-white); border: 2px solid var(--color-gray-300); border-radius: var(--radius-md); transition: all var(--transition-base); } .form-input:focus, .form-select:focus, .form-textarea:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-primary-light); } .form-input::placeholder { color: var(--color-gray-400); } /* Textarea */ .form-textarea { min-height: 120px; resize: vertical; } /* Checkbox & Radio */ .form-check { display: flex; align-items: center; gap: var(--space-2); } .form-check-input { width: 18px; height: 18px; cursor: pointer; } .form-check-label { font-size: var(--font-size-sm); color: var(--color-gray-700); cursor: pointer; } /* Error state */ .form-input.error, .form-select.error, .form-textarea.error { border-color: var(--color-error); } .form-error { display: block; margin-top: var(--space-2); font-size: var(--font-size-sm); color: var(--color-error); } /* Hero */ .hero { position: relative; padding-top: var(--space-20); padding-bottom: var(--space-20); background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%); color: var(--color-white); } @media (min-width: 1024px) { .hero { padding-top: var(--space-32); padding-bottom: var(--space-32); } } .hero__content { max-width: 800px; } .hero__title { font-size: var(--font-size-4xl); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); margin-bottom: var(--space-6); } @media (min-width: 768px) { .hero__title { font-size: var(--font-size-5xl); } } @media (min-width: 1024px) { .hero__title { font-size: var(--font-size-6xl); } } .hero__subtitle { font-size: var(--font-size-lg); line-height: var(--line-height-relaxed); margin-bottom: var(--space-8); opacity: 0.95; } @media (min-width: 768px) { .hero__subtitle { font-size: var(--font-size-xl); } } .hero__cta { display: flex; flex-wrap: wrap; gap: var(--space-4); } /* Header */ .site-header { position: sticky; top: 0; z-index: var(--z-sticky); background-color: var(--color-white); box-shadow: var(--shadow-sm); } .site-header__inner { display: flex; align-items: center; justify-content: space-between; padding-top: var(--space-4); padding-bottom: var(--space-4); } .site-header__logo img { height: 48px; width: auto; } .site-header__nav { display: none; } @media (min-width: 1024px) { .site-header__nav { display: flex; align-items: center; gap: var(--space-8); } } .site-header__nav-link { font-size: var(--font-size-base); font-weight: var(--font-weight-medium); color: var(--color-gray-700); text-decoration: none; transition: color var(--transition-base); } .site-header__nav-link:hover { color: var(--color-primary); } .site-header__cta { display: flex; align-items: center; gap: var(--space-3); } /* Phone link (tap-to-call) */ .phone-link { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); color: var(--color-primary); text-decoration: none; transition: color var(--transition-base); } .phone-link:hover { color: var(--color-primary-dark); } @media (max-width: 767px) { .phone-link__text { display: none; } } /* Footer */ .site-footer { background-color: var(--color-gray-900); color: var(--color-gray-300); padding-top: var(--space-16); padding-bottom: var(--space-8); } .site-footer a { color: var(--color-gray-300); text-decoration: none; transition: color var(--transition-base); } .site-footer a:hover { color: var(--color-white); } .site-footer__title { font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); color: var(--color-white); margin-bottom: var(--space-4); } .site-footer__bottom { margin-top: var(--space-12); padding-top: var(--space-8); border-top: 1px solid var(--color-gray-700); text-align: center; font-size: var(--font-size-sm); } /* Display */ .block { display: block; } .inline-block { display: inline-block; } .flex { display: flex; } .inline-flex { display: inline-flex; } .grid { display: grid; } .hidden { display: none; } /* Flex utilities */ .flex-col { flex-direction: column; } .flex-wrap { flex-wrap: wrap; } .items-start { align-items: flex-start; } .items-center { align-items: center; } .items-end { align-items: flex-end; } .justify-start { justify-content: flex-start; } .justify-center { justify-content: center; } .justify-end { justify-content: flex-end; } .justify-between { justify-content: space-between; } /* Spacing utilities */ .m-0 { margin: 0; } .mt-auto { margin-top: auto; } .mb-0 { margin-bottom: 0; } /* Background colors */ .bg-white { background-color: var(--color-white); } .bg-gray-50 { background-color: var(--color-gray-50); } .bg-gray-100 { background-color: var(--color-gray-100); } .bg-primary { background-color: var(--color-primary); } .bg-primary-light { background-color: var(--color-primary-light); } .bg-secondary { background-color: var(--color-secondary); } /* Border radius */ .rounded-sm { border-radius: var(--radius-sm); } .rounded-md { border-radius: var(--radius-md); } .rounded-lg { border-radius: var(--radius-lg); } .rounded-xl { border-radius: var(--radius-xl); } .rounded-full { border-radius: var(--radius-full); } /* Shadows */ .shadow-sm { box-shadow: var(--shadow-sm); } .shadow-md { box-shadow: var(--shadow-md); } .shadow-lg { box-shadow: var(--shadow-lg); } .shadow-xl { box-shadow: var(--shadow-xl); } /* Width */ .w-full { width: 100%; } .max-w-full { max-width: 100%; } /* Responsive visibility */ @media (max-width: 767px) { .hidden-mobile { display: none !important; } } @media (min-width: 768px) { .hidden-tablet { display: none !important; } } @media (min-width: 1024px) { .hidden-desktop { display: none !important; } } @media (max-width: 1023px) { .visible-desktop { display: none !important; } }

Tag: heating maintenance