Files
AV-Yard-Pro-AI-Pilots-Client/styles.css
T

3039 lines
61 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ==========================================================================
NEXT GEN LANDSCAPING & YARD CARE - CORE DESIGN SYSTEM
Theme: Clean Modern Light Mode with Pitch Black & Electric Neon Green Branding
High-Contrast, Crisp, Commercial High Desert Landscaping Aesthetic
========================================================================== */
:root {
/* Color Palette - Light Mode Foundation */
--bg-pitch: #f8faf9;
--bg-surface: #ffffff;
--bg-card: #ffffff;
--bg-card-hover: #f2fbf5;
--bg-glass: rgba(255, 255, 255, 0.88);
--bg-glass-strong: rgba(255, 255, 255, 0.96);
--bg-subtle: #f1f5f3;
/* Black & Obsidian Contrast Anchors */
--brand-black: #080c09;
--brand-charcoal: #121a14;
--brand-dark-surface: #0e1610;
/* Neon & Electric Green Accents */
--neon-green: #00C853;
--neon-lime: #00E676;
--neon-electric: #10f576;
--neon-dark: #008f39;
--neon-text-shade: #00873d;
--neon-glow: rgba(0, 200, 83, 0.28);
--neon-glow-soft: rgba(0, 200, 83, 0.12);
--neon-glow-strong: rgba(0, 230, 118, 0.5);
/* Neutrals & Typography */
--text-primary: #0a0f0d;
--text-secondary: #475569;
--text-muted: #64748b;
--text-dark: #060a07;
--text-light: #f8faf8;
/* Borders & Dividers */
--border-subtle: #e2e8f0;
--border-card: #e5eae7;
--border-neon: #00C853;
--border-neon-bright: #00E676;
--border-dark: #cbd5e1;
/* Typography */
--font-heading: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif;
--font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
/* Shadows */
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.04);
--shadow-md: 0 8px 24px rgba(0, 0, 0, 0.06);
--shadow-card: 0 12px 32px rgba(10, 25, 15, 0.07);
--shadow-neon-sm: 0 0 14px rgba(0, 200, 83, 0.22);
--shadow-neon-md: 0 0 26px rgba(0, 200, 83, 0.35);
/* Transitions */
--transition-fast: 0.2s cubic-bezier(0.16, 1, 0.3, 1);
--transition-smooth: 0.35s cubic-bezier(0.16, 1, 0.3, 1);
--transition-bounce: 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
/* Layout */
--max-width: 1240px;
--header-height: 76px;
--radius-sm: 8px;
--radius-md: 14px;
--radius-lg: 20px;
--radius-full: 9999px;
}
/* Reset & Base */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
color-scheme: light;
font-size: 16px;
overflow-x: hidden;
}
body {
font-family: var(--font-body);
background-color: var(--bg-pitch);
color: var(--text-primary);
line-height: 1.65;
overflow-x: hidden;
position: relative;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Subtle Clean Pattern Background */
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-image:
radial-gradient(circle at 10% 10%, rgba(0, 200, 83, 0.04) 0%, transparent 40%),
radial-gradient(circle at 90% 80%, rgba(0, 230, 118, 0.03) 0%, transparent 45%),
linear-gradient(to right, rgba(0, 0, 0, 0.02) 1px, transparent 1px),
linear-gradient(to bottom, rgba(0, 0, 0, 0.02) 1px, transparent 1px);
background-size: 100% 100%, 100% 100%, 40px 40px, 40px 40px;
pointer-events: none;
z-index: -1;
}
/* Typography Helpers */
h1, h2, h3, h4, h5, h6 {
font-family: var(--font-heading);
color: var(--text-primary);
font-weight: 700;
line-height: 1.2;
}
p {
color: var(--text-secondary);
}
a {
color: inherit;
text-decoration: none;
transition: var(--transition-fast);
}
img {
max-width: 100%;
height: auto;
display: block;
}
.container {
width: 100%;
max-width: var(--max-width);
margin-left: auto;
margin-right: auto;
padding-left: 24px;
padding-right: 24px;
}
/* Neon Text & Highlight Utilities */
.neon-text {
color: var(--neon-text-shade);
font-weight: 800;
background: linear-gradient(135deg, #007032 0%, #00b84c 60%, #00e676 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
display: inline-block;
}
.neon-border {
border: 1px solid var(--border-neon);
box-shadow: var(--shadow-neon-sm);
}
.badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 16px;
border-radius: var(--radius-full);
font-family: var(--font-heading);
font-size: 0.82rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
background: #ffffff;
border: 1.5px solid rgba(0, 200, 83, 0.45);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04), 0 0 12px rgba(0, 200, 83, 0.12);
color: var(--neon-text-shade);
}
.badge-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--neon-green);
box-shadow: 0 0 8px var(--neon-green);
animation: pulse-dot 2s infinite;
}
@keyframes pulse-dot {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.5; transform: scale(0.85); }
}
/* ==========================================================================
SVG VECTOR ICONS SYSTEM
========================================================================== */
.icon-svg {
display: inline-block;
vertical-align: middle;
stroke: currentColor;
fill: none;
}
.logo-symbol svg {
width: 24px;
height: 24px;
stroke: #080c09;
fill: none;
}
.card-icon svg {
width: 24px;
height: 24px;
stroke: var(--neon-green);
fill: none;
}
.stat-icon svg {
width: 26px;
height: 26px;
stroke: var(--neon-text-shade);
fill: none;
}
.service-icon-box svg {
width: 30px;
height: 30px;
stroke: var(--neon-text-shade);
fill: none;
transition: transform var(--transition-fast);
}
.service-card:hover .service-icon-box svg {
transform: scale(1.12);
stroke: var(--neon-green);
}
.area-icon svg {
width: 22px;
height: 22px;
stroke: var(--neon-text-shade);
fill: none;
flex-shrink: 0;
}
.review-stars {
display: flex;
gap: 4px;
margin-bottom: 16px;
}
.review-stars svg {
width: 18px;
height: 18px;
fill: #f59e0b;
stroke: #f59e0b;
}
.ba-handle svg {
width: 24px;
height: 24px;
stroke: #080c09;
fill: none;
}
.mobile-bar-btn svg {
width: 20px;
height: 20px;
stroke: currentColor;
fill: none;
}
/* ==========================================================================
BUTTONS
========================================================================== */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
font-family: var(--font-heading);
font-weight: 700;
font-size: 0.98rem;
padding: 14px 28px;
border-radius: var(--radius-md);
border: 1px solid transparent;
cursor: pointer;
transition: all var(--transition-smooth);
text-align: center;
white-space: nowrap;
}
.btn-primary {
background: var(--neon-lime);
color: #080c09;
box-shadow: 0 4px 18px rgba(0, 230, 118, 0.45);
font-weight: 800;
}
.btn-primary:hover {
background: #25ff89;
box-shadow: 0 6px 26px rgba(0, 230, 118, 0.65);
transform: translateY(-2px);
}
.btn-secondary {
background: #ffffff;
color: var(--text-primary);
border: 1.5px solid #cbd5e1;
box-shadow: var(--shadow-sm);
}
.btn-secondary:hover {
background: #f0fdf4;
border-color: var(--neon-green);
color: var(--neon-text-shade);
transform: translateY(-2px);
box-shadow: 0 4px 15px rgba(0, 200, 83, 0.2);
}
.btn-ghost {
background: transparent;
color: var(--text-secondary);
border: 1px solid var(--border-subtle);
}
.btn-ghost:hover {
background: rgba(0, 0, 0, 0.04);
color: var(--text-primary);
}
.btn-lg {
padding: 18px 36px;
font-size: 1.08rem;
}
.btn-sm {
padding: 8px 16px;
font-size: 0.85rem;
border-radius: var(--radius-sm);
}
/* ==========================================================================
ALERT TOP BANNER
========================================================================== */
.announcement-bar {
background: #080d0a;
border-bottom: 2px solid var(--neon-green);
padding: 10px 16px;
font-size: 0.85rem;
text-align: center;
position: relative;
z-index: 101;
color: #ffffff;
}
.announcement-content {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
gap: 12px;
}
.announcement-tag {
background: var(--neon-lime);
color: #060806;
font-weight: 800;
font-size: 0.72rem;
padding: 3px 8px;
border-radius: var(--radius-sm);
letter-spacing: 0.05em;
text-transform: uppercase;
display: inline-flex;
align-items: center;
}
.announcement-link {
color: var(--neon-lime);
font-weight: 700;
text-decoration: underline;
text-underline-offset: 3px;
}
/* ==========================================================================
NAVIGATION
========================================================================== */
.site-header {
position: sticky;
top: 0;
width: 100%;
background: var(--bg-glass-strong);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border-bottom: 1px solid var(--border-subtle);
z-index: 100;
height: var(--header-height);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.03);
}
.header-inner, .header-container {
display: flex;
align-items: center;
justify-content: space-between;
height: 100%;
gap: 16px;
flex-wrap: nowrap;
}
.brand-logo {
display: flex;
align-items: center;
gap: 12px;
flex-shrink: 0;
white-space: nowrap;
text-decoration: none;
}
.logo-symbol {
width: 44px;
height: 44px;
border-radius: var(--radius-md);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
overflow: hidden;
transition: transform var(--transition-bounce), filter var(--transition-fast), box-shadow var(--transition-fast);
}
.brand-logo:hover .logo-symbol {
transform: scale(1.08) rotate(-2deg);
filter: drop-shadow(0 0 14px rgba(0, 230, 118, 0.75));
}
.logo-symbol img,
.logo-symbol .custom-logo-mark {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
}
.logo-text {
display: flex;
flex-direction: column;
white-space: nowrap;
}
.brand-name {
font-size: 1.35rem;
font-weight: 900;
letter-spacing: 0.02em;
color: var(--brand-black);
line-height: 1.1;
white-space: nowrap;
}
.brand-name span {
color: var(--neon-text-shade);
background: linear-gradient(135deg, #007a37 0%, #00c853 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.brand-tagline {
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.12em;
color: var(--text-muted);
text-transform: uppercase;
white-space: nowrap;
}
.nav-desktop {
display: flex;
align-items: center;
gap: 20px;
flex-shrink: 0;
}
.nav-link {
font-size: 0.9rem;
font-weight: 600;
color: var(--text-secondary);
position: relative;
padding: 6px 0;
white-space: nowrap !important;
text-decoration: none;
}
.nav-link:hover, .nav-link.active {
color: var(--neon-text-shade);
}
.nav-link::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0%;
height: 2px;
background: var(--neon-green);
transition: width var(--transition-fast);
}
.nav-link:hover::after {
width: 100%;
}
.header-cta-group {
display: flex;
align-items: center;
gap: 12px;
flex-shrink: 0 !important;
white-space: nowrap !important;
}
.phone-direct {
display: inline-flex;
align-items: center;
gap: 8px;
color: var(--text-primary);
font-weight: 700;
font-size: 0.9rem;
padding: 8px 14px;
border-radius: var(--radius-sm);
background: #ffffff;
border: 1px solid var(--border-subtle);
box-shadow: var(--shadow-sm);
white-space: nowrap !important;
flex-shrink: 0 !important;
text-decoration: none;
}
.phone-direct span,
.phone-direct .phone-text {
white-space: nowrap !important;
display: inline-block;
}
.phone-direct:hover {
border-color: var(--neon-green);
color: var(--neon-text-shade);
}
.mobile-menu-btn {
display: none;
background: #ffffff;
border: 1.5px solid var(--border-subtle);
border-radius: var(--radius-sm);
color: var(--brand-black);
width: 44px;
height: 44px;
cursor: pointer;
flex-shrink: 0 !important;
align-items: center;
justify-content: center;
transition: all var(--transition-fast);
}
.mobile-menu-btn:hover {
border-color: var(--neon-green);
color: var(--neon-text-shade);
box-shadow: 0 0 10px rgba(0, 200, 83, 0.2);
}
/* Mobile Navigation Drawer */
.mobile-nav-drawer {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background: #ffffff;
border-bottom: 3px solid var(--neon-green);
padding: 24px;
box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
flex-direction: column;
gap: 16px;
z-index: 999;
}
.mobile-nav-drawer.open {
display: flex;
animation: slideDownDrawer 0.22s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes slideDownDrawer {
from {
opacity: 0;
transform: translateY(-6px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.mobile-nav-drawer .nav-link {
font-size: 1.05rem;
padding: 10px 0;
border-bottom: 1px solid var(--border-subtle);
}
/* ==========================================================================
HERO SECTION
========================================================================== */
.hero-section {
position: relative;
padding: 80px 0 100px;
overflow: hidden;
background: radial-gradient(1100px circle at 85% 15%, rgba(0, 230, 118, 0.14) 0%, transparent 60%),
linear-gradient(180deg, #e3f5ea 0%, #ebf7f0 50%, #f4fbf7 100%);
border-bottom: 2px solid #c8e6d3;
}
.hero-grid {
display: grid;
grid-template-columns: 1.1fr 0.9fr;
align-items: center;
gap: 50px;
}
.hero-content {
position: relative;
z-index: 2;
}
.hero-badge-row {
margin-bottom: 20px;
}
.hero-title {
font-size: clamp(2.4rem, 4.8vw, 3.8rem);
font-weight: 900;
line-height: 1.08;
letter-spacing: -0.02em;
margin-bottom: 24px;
text-transform: uppercase;
color: var(--brand-black);
}
.hero-subtitle {
font-size: 1.12rem;
line-height: 1.7;
color: var(--text-secondary);
margin-bottom: 34px;
max-width: 580px;
}
.hero-actions {
display: flex;
flex-wrap: wrap;
gap: 16px;
margin-bottom: 36px;
}
.hero-trust-bar {
display: flex;
align-items: center;
gap: 16px;
padding-top: 20px;
border-top: 1px solid var(--border-subtle);
}
.avatar-stack {
display: flex;
align-items: center;
}
.avatar-stack-item {
width: 38px;
height: 38px;
border-radius: 50%;
border: 2px solid #ffffff;
margin-left: -10px;
background: #0d1e13;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
color: var(--neon-lime);
font-weight: 700;
box-shadow: var(--shadow-sm);
}
.avatar-stack-item:first-child {
margin-left: 0;
}
.trust-text {
font-size: 0.88rem;
color: var(--text-secondary);
line-height: 1.35;
}
.trust-text strong {
color: var(--brand-black);
display: block;
}
.hero-visual {
position: relative;
}
.hero-image-wrapper {
position: relative;
border-radius: var(--radius-lg);
overflow: hidden;
border: 1.5px solid #d1fae5;
box-shadow: 0 16px 40px rgba(10, 25, 15, 0.12);
}
.hero-image-wrapper img {
width: 100%;
height: 480px;
object-fit: cover;
transition: transform 0.8s ease;
}
.hero-image-wrapper:hover img {
transform: scale(1.03);
}
/* Floating Badges on Hero Image */
.floating-glass-card {
position: absolute;
bottom: 24px;
left: 24px;
right: 24px;
background: rgba(255, 255, 255, 0.94);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1.5px solid var(--border-neon);
border-radius: var(--radius-md);
padding: 16px 20px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
}
.card-stat-group {
display: flex;
align-items: center;
gap: 12px;
}
.card-icon {
width: 42px;
height: 42px;
border-radius: 10px;
background: rgba(0, 200, 83, 0.12);
border: 1px solid rgba(0, 200, 83, 0.3);
display: flex;
align-items: center;
justify-content: center;
color: var(--neon-text-shade);
}
.card-stat-text h4 {
font-size: 1.05rem;
color: var(--brand-black);
}
.card-stat-text p {
font-size: 0.8rem;
color: var(--neon-text-shade);
font-weight: 700;
}
/* ==========================================================================
STATS TICKER SECTION (High Contrast Obsidian Band)
========================================================================== */
.stats-ticker-section {
padding: 34px 0;
background: #080d0a;
border-top: 2.5px solid var(--neon-lime);
border-bottom: 2.5px solid var(--neon-lime);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
color: #ffffff;
}
.stats-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
}
.stat-item {
display: flex;
align-items: center;
gap: 16px;
padding: 10px 16px;
}
.stats-ticker-section .stat-icon {
width: 50px;
height: 50px;
border-radius: var(--radius-md);
background: rgba(0, 230, 118, 0.12);
border: 1.5px solid rgba(0, 230, 118, 0.4);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.stats-ticker-section .stat-icon svg {
stroke: var(--neon-lime);
}
.stats-ticker-section .stat-num {
font-family: var(--font-heading);
font-size: 2rem;
font-weight: 900;
color: #ffffff;
line-height: 1.1;
}
.stats-ticker-section .stat-num span {
color: var(--neon-lime);
}
.stats-ticker-section .stat-label {
font-size: 0.82rem;
color: #94a3b8;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
}
/* ==========================================================================
SECTION COMMON STYLES & DISTINCT SECTION BACKGROUND PALETTES
========================================================================== */
.section {
padding: 100px 0;
position: relative;
}
/* 1. Calculator Section: Crisp Tech Ice & Slate Tone */
section#calculator {
background: linear-gradient(180deg, #e8f0f6 0%, #dce7f0 100%);
border-bottom: 2px solid #cad8e5;
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02);
}
/* 2. Before & After Section: High Desert Sand & Warm Earth Tone */
section#transformation {
background: linear-gradient(180deg, #f4eee2 0%, #eae1ce 100%);
border-bottom: 2px solid #ddcfb8;
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02);
}
/* 3. Core Services Section: Fresh Vibrant Spring Turf & Lawn Green */
section#services {
background: linear-gradient(180deg, #dfefe4 0%, #cee6d5 100%);
border-bottom: 2px solid #b4dcbe;
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02);
}
/* 4. Service Areas Section: Architectural Cool High Desert Slate */
section#areas {
background: linear-gradient(180deg, #eaeff5 0%, #dde4ec 100%);
border-bottom: 2px solid #c8d3df;
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02);
}
/* 5. Customer Reviews Section: Warm Mojave Amber & Sand Dune Pearl */
section#reviews {
background: linear-gradient(180deg, #f8f1e2 0%, #efe4ce 100%);
border-bottom: 2px solid #e1d0b5;
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02);
}
/* 6. FAQ Accordion Section: Crisp Celadon Mist & Soft Mountain Sage */
section#faq {
background: linear-gradient(180deg, #e7f1eb 0%, #d7e8de 100%);
border-bottom: 2px solid #bedbcd;
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02);
}
.section-header {
text-align: center;
max-width: 720px;
margin: 0 auto 60px;
}
.section-tag {
margin-bottom: 16px;
}
.section-title {
font-size: clamp(2rem, 3.4vw, 2.8rem);
font-weight: 900;
letter-spacing: -0.01em;
margin-bottom: 18px;
color: var(--brand-black);
}
.section-description {
font-size: 1.05rem;
color: var(--text-secondary);
line-height: 1.7;
}
/* ==========================================================================
INTERACTIVE YARD ESTIMATOR / CALCULATOR
========================================================================== */
.calculator-card {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-lg);
padding: 44px;
box-shadow: var(--shadow-card);
position: relative;
overflow: hidden;
}
.calculator-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, transparent, var(--neon-green), transparent);
}
.calculator-layout {
display: grid;
grid-template-columns: 1.25fr 0.75fr;
gap: 44px;
align-items: start;
}
.calc-step {
margin-bottom: 30px;
}
.calc-step-label {
display: flex;
align-items: center;
gap: 10px;
font-family: var(--font-heading);
font-size: 1.08rem;
font-weight: 700;
color: var(--brand-black);
margin-bottom: 16px;
}
.calc-step-num {
width: 26px;
height: 26px;
border-radius: 50%;
background: var(--neon-lime);
color: #060806;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.85rem;
font-weight: 800;
}
.calc-grid-options {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 12px;
}
.calc-option {
position: relative;
cursor: pointer;
}
.calc-option input[type="radio"] {
position: absolute;
opacity: 0;
pointer-events: none;
}
.calc-option-content {
background: #fbfdfc;
border: 1.5px solid #e2e8f0;
border-radius: var(--radius-md);
padding: 16px 14px;
display: flex;
flex-direction: column;
gap: 6px;
transition: all var(--transition-fast);
height: 100%;
}
.calc-option-title {
font-size: 0.95rem;
font-weight: 700;
color: var(--brand-black);
}
.calc-option-desc {
font-size: 0.78rem;
color: var(--text-muted);
}
.calc-option:hover .calc-option-content {
border-color: rgba(0, 200, 83, 0.5);
background: #f0fdf4;
}
.calc-option input[type="radio"]:checked + .calc-option-content {
background: #edfcf2;
border: 2px solid var(--neon-green);
box-shadow: 0 4px 15px rgba(0, 200, 83, 0.18);
}
.calc-option input[type="radio"]:checked + .calc-option-content .calc-option-title {
color: var(--neon-text-shade);
}
/* Calculator Output Panel - High Contrast Dark Obsidian Inside Light Mode */
.calc-result-panel {
background: #0a110c;
border: 1.5px solid var(--neon-green);
border-radius: var(--radius-md);
padding: 32px 28px;
position: sticky;
top: 100px;
box-shadow: 0 12px 35px rgba(0, 0, 0, 0.25);
color: #ffffff;
}
.result-header {
border-bottom: 1px solid rgba(255, 255, 255, 0.12);
padding-bottom: 18px;
margin-bottom: 22px;
}
.result-header span {
font-size: 0.82rem;
color: var(--neon-lime);
text-transform: uppercase;
letter-spacing: 0.06em;
font-weight: 700;
}
.result-price-box {
margin-top: 8px;
}
.price-range-value {
font-family: var(--font-heading);
font-size: 2.5rem;
font-weight: 900;
color: #ffffff;
line-height: 1.1;
}
.price-range-value span {
color: var(--neon-lime);
}
.price-note {
font-size: 0.78rem;
color: #a7b8ad;
margin-top: 4px;
}
.estimate-details {
list-style: none;
margin-bottom: 26px;
display: flex;
flex-direction: column;
gap: 12px;
}
.estimate-details li {
display: flex;
align-items: center;
gap: 10px;
font-size: 0.88rem;
color: #d1d5db;
}
.estimate-details li svg {
color: var(--neon-lime);
flex-shrink: 0;
}
.estimate-details li strong {
color: #ffffff;
}
/* ==========================================================================
INTERACTIVE BEFORE & AFTER SLIDER (Clip-Path Powered)
========================================================================== */
.before-after-container {
max-width: 980px;
margin: 0 auto;
position: relative;
border-radius: var(--radius-lg);
overflow: hidden;
border: 2.5px solid var(--neon-green);
box-shadow: 0 16px 45px rgba(0, 0, 0, 0.15);
user-select: none;
-webkit-user-select: none;
touch-action: pan-y;
--slider-pos: 50%;
}
.ba-slider-wrapper {
position: relative;
width: 100%;
aspect-ratio: 16 / 9;
background: #000;
overflow: hidden;
}
.ba-image {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
pointer-events: none;
}
.ba-before-layer {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
clip-path: inset(0 calc(100% - var(--slider-pos)) 0 0);
z-index: 2;
pointer-events: none;
}
.ba-divider-line {
position: absolute;
top: 0;
bottom: 0;
left: var(--slider-pos);
width: 3px;
background: var(--neon-lime);
box-shadow: 0 0 16px var(--neon-lime), 0 0 30px rgba(0, 230, 118, 0.8);
z-index: 8;
transform: translateX(-50%);
pointer-events: none;
}
.ba-badge {
position: absolute;
top: 18px;
padding: 6px 14px;
font-family: var(--font-heading);
font-weight: 800;
font-size: 0.82rem;
letter-spacing: 0.08em;
border-radius: var(--radius-sm);
z-index: 5;
text-transform: uppercase;
white-space: nowrap;
pointer-events: none;
user-select: none;
}
.ba-badge-before {
left: 20px;
background: rgba(220, 38, 38, 0.92);
color: #fff;
border: 1px solid rgba(255, 255, 255, 0.4);
box-shadow: var(--shadow-sm);
}
.ba-badge-after {
right: 20px;
background: #080c09;
color: var(--neon-lime);
border: 1.5px solid var(--neon-lime);
box-shadow: 0 0 15px rgba(0, 230, 118, 0.4);
}
.ba-handle {
position: absolute;
top: 50%;
left: var(--slider-pos);
transform: translate(-50%, -50%);
width: 52px;
height: 52px;
border-radius: 50%;
background: var(--neon-lime);
border: 3px solid #080c09;
box-shadow: 0 0 25px rgba(0, 230, 118, 0.6), 0 6px 20px rgba(0,0,0,0.35);
cursor: ew-resize;
z-index: 10;
display: flex;
align-items: center;
justify-content: center;
transition: transform 0.1s ease;
}
.ba-handle:hover, .ba-handle:active {
transform: translate(-50%, -50%) scale(1.1);
}
.ba-hint {
text-align: center;
margin-top: 18px;
font-size: 0.92rem;
color: var(--text-secondary);
font-weight: 600;
}
/* Secondary Before/After Mini Showcase Cards */
.mini-showcase-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 28px;
max-width: 860px;
margin: 50px auto 0;
}
.showcase-card {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-md);
overflow: hidden;
box-shadow: var(--shadow-sm);
transition: all var(--transition-smooth);
}
.showcase-card:hover {
border-color: var(--neon-green);
transform: translateY(-4px);
box-shadow: var(--shadow-card);
}
.showcase-img-box {
height: 200px;
position: relative;
overflow: hidden;
}
.showcase-img-box img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.6s ease;
}
.showcase-card:hover .showcase-img-box img {
transform: scale(1.05);
}
.showcase-tag {
position: absolute;
top: 12px;
left: 12px;
background: rgba(8, 12, 9, 0.88);
backdrop-filter: blur(8px);
border: 1px solid var(--neon-green);
color: var(--neon-lime);
font-size: 0.72rem;
font-weight: 800;
padding: 4px 10px;
border-radius: var(--radius-sm);
}
.showcase-content {
padding: 20px;
}
.showcase-content h4 {
font-size: 1.12rem;
margin-bottom: 8px;
color: var(--brand-black);
}
.showcase-content p {
font-size: 0.88rem;
color: var(--text-secondary);
line-height: 1.5;
}
.showcase-stats {
display: flex;
justify-content: space-between;
margin-top: 14px;
padding-top: 12px;
border-top: 1px solid var(--border-subtle);
font-size: 0.82rem;
}
.showcase-stat strong {
color: var(--neon-text-shade);
}
/* ==========================================================================
SERVICES GRID
========================================================================== */
.services-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
gap: 32px;
}
.service-card {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-lg);
overflow: hidden;
position: relative;
transition: all var(--transition-smooth);
display: flex;
flex-direction: column;
justify-content: space-between;
box-shadow: var(--shadow-sm);
}
.service-card:hover {
transform: translateY(-8px);
background: #ffffff;
border-color: var(--neon-green);
box-shadow: 0 20px 40px rgba(0, 200, 83, 0.16), var(--shadow-card);
}
.service-img-box {
position: relative;
width: 100%;
height: 210px;
overflow: hidden;
background: #080c09;
}
.service-img-box img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
display: block;
}
.service-card:hover .service-img-box img {
transform: scale(1.06);
}
.service-tag {
position: absolute;
top: 14px;
right: 14px;
background: rgba(8, 12, 9, 0.88);
color: var(--neon-lime);
border: 1px solid var(--neon-green);
font-family: var(--font-heading);
font-size: 0.72rem;
font-weight: 800;
letter-spacing: 0.06em;
padding: 4px 11px;
border-radius: var(--radius-full);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
text-transform: uppercase;
z-index: 3;
}
.service-icon-badge {
position: absolute;
top: 14px;
left: 14px;
width: 44px;
height: 44px;
border-radius: var(--radius-md);
background: rgba(255, 255, 255, 0.95);
border: 1.5px solid var(--neon-green);
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15), 0 0 12px rgba(0, 230, 118, 0.3);
display: flex;
align-items: center;
justify-content: center;
z-index: 3;
color: var(--neon-text-shade);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
transition: transform var(--transition-fast);
}
.service-card:hover .service-icon-badge {
transform: scale(1.08) rotate(3deg);
border-color: var(--neon-lime);
background: #ffffff;
}
.service-icon-badge svg {
width: 22px;
height: 22px;
}
.service-content {
padding: 24px 26px 26px 26px;
display: flex;
flex-direction: column;
flex: 1;
justify-content: space-between;
}
.service-content h3 {
font-size: 1.32rem;
margin-bottom: 12px;
color: var(--brand-black);
line-height: 1.25;
}
.service-content p {
font-size: 0.92rem;
color: var(--text-secondary);
line-height: 1.6;
margin-bottom: 18px;
}
.service-feature-list {
list-style: none;
display: flex;
flex-direction: column;
gap: 9px;
margin-bottom: 22px;
}
.service-feature-list li {
display: flex;
align-items: center;
gap: 9px;
font-size: 0.88rem;
color: var(--text-secondary);
}
.service-feature-list li svg {
color: var(--neon-green);
flex-shrink: 0;
}
.service-card-footer {
margin-top: auto;
padding-top: 14px;
}
.service-btn-link {
display: inline-flex;
align-items: center;
gap: 8px;
color: var(--neon-text-shade);
font-family: var(--font-heading);
font-size: 0.92rem;
font-weight: 700;
transition: gap var(--transition-fast);
}
.service-btn-link:hover {
gap: 12px;
}
/* ==========================================================================
SERVICE AREAS SECTION
========================================================================== */
.area-pills-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 16px;
margin-bottom: 40px;
}
.area-pill {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-md);
padding: 18px 20px;
display: flex;
align-items: center;
gap: 14px;
box-shadow: var(--shadow-sm);
transition: all var(--transition-fast);
text-decoration: none;
cursor: pointer;
}
.area-pill:hover {
border-color: var(--neon-green);
background: #f0fdf4;
transform: translateY(-2px);
box-shadow: 0 6px 18px rgba(0, 200, 83, 0.15);
}
.area-pill h4 {
font-size: 1.05rem;
color: var(--brand-black);
margin-bottom: 2px;
display: flex;
align-items: center;
justify-content: space-between;
}
.area-pill span {
font-size: 0.78rem;
color: var(--text-muted);
}
.area-banner-box {
background: #0a100c;
border: 1.5px solid var(--neon-green);
border-radius: var(--radius-lg);
padding: 36px 40px;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 24px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
color: #ffffff;
}
.area-banner-text h3 {
font-size: 1.4rem;
margin-bottom: 6px;
color: #ffffff;
}
.area-banner-text p {
color: #d1d5db;
}
/* ==========================================================================
TESTIMONIALS / REVIEWS
========================================================================== */
.testimonials-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 28px;
}
.review-card {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-lg);
padding: 32px 28px;
display: flex;
flex-direction: column;
justify-content: space-between;
box-shadow: var(--shadow-sm);
transition: all var(--transition-smooth);
}
.review-card:hover {
border-color: var(--neon-green);
transform: translateY(-4px);
box-shadow: var(--shadow-card);
}
.review-quote {
font-size: 0.95rem;
line-height: 1.65;
color: var(--text-secondary);
margin-bottom: 24px;
font-style: italic;
}
.review-author {
display: flex;
align-items: center;
gap: 14px;
border-top: 1px solid var(--border-subtle);
padding-top: 16px;
}
.author-avatar {
width: 44px;
height: 44px;
border-radius: 50%;
background: #e6f9ed;
border: 1.5px solid var(--neon-green);
display: flex;
align-items: center;
justify-content: center;
font-weight: 800;
color: var(--neon-text-shade);
font-family: var(--font-heading);
}
.author-info h4 {
font-size: 0.98rem;
color: var(--brand-black);
margin-bottom: 2px;
}
.author-info span {
font-size: 0.8rem;
color: var(--neon-text-shade);
font-weight: 700;
}
/* ==========================================================================
FAQ ACCORDION (Details & Summary)
========================================================================== */
.faq-accordion-wrapper {
max-width: 820px;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 16px;
}
details.faq-item {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-md);
overflow: hidden;
box-shadow: var(--shadow-sm);
transition: all var(--transition-fast);
}
details.faq-item:hover {
border-color: rgba(0, 200, 83, 0.4);
}
details.faq-item[open] {
border-color: var(--neon-green);
box-shadow: 0 4px 20px rgba(0, 200, 83, 0.12);
}
summary.faq-question {
padding: 22px 24px;
font-family: var(--font-heading);
font-size: 1.08rem;
font-weight: 700;
color: var(--brand-black);
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
list-style: none;
user-select: none;
}
summary.faq-question::-webkit-details-marker {
display: none;
}
summary.faq-question::after {
content: '+';
font-size: 1.5rem;
color: var(--neon-green);
font-weight: 700;
transition: transform 0.25s ease;
}
details.faq-item[open] summary.faq-question::after {
content: '';
transform: rotate(180deg);
}
.faq-answer {
padding: 0 24px 22px;
font-size: 0.95rem;
color: var(--text-secondary);
line-height: 1.65;
border-top: 1px solid var(--border-subtle);
padding-top: 16px;
}
/* ==========================================================================
FINAL HIGH-IMPACT CTA BANNER (Obsidian Contrast Anchor)
========================================================================== */
.cta-banner-section {
padding: 80px 0;
position: relative;
}
.cta-banner-card {
background: #080d0a;
border: 2px solid var(--neon-green);
border-radius: var(--radius-lg);
padding: 60px 40px;
text-align: center;
position: relative;
overflow: hidden;
box-shadow: 0 16px 50px rgba(0, 0, 0, 0.25);
color: #ffffff;
}
.cta-banner-card h2 {
font-size: clamp(2.2rem, 4vw, 3.2rem);
font-weight: 900;
margin-bottom: 20px;
color: #ffffff;
}
.cta-banner-card p {
font-size: 1.15rem;
max-width: 680px;
margin: 0 auto 34px;
color: #d1d5db;
}
.cta-banner-actions {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 18px;
}
/* ==========================================================================
FOOTER (Deep Obsidian Brand Base)
========================================================================== */
.site-footer {
background: #060907;
border-top: 3px solid var(--neon-green);
padding: 70px 0 30px;
position: relative;
color: #ffffff;
}
.footer-top {
display: grid;
grid-template-columns: 1.5fr 1fr 1fr 1fr;
gap: 40px;
margin-bottom: 50px;
}
.footer-brand p {
margin-top: 16px;
font-size: 0.9rem;
max-width: 320px;
color: #94a3b8;
}
.footer-brand .brand-name {
color: #ffffff;
}
.footer-heading {
font-family: var(--font-heading);
font-size: 1.05rem;
font-weight: 700;
color: #ffffff;
margin-bottom: 20px;
position: relative;
}
.footer-heading::after {
content: '';
position: absolute;
bottom: -6px;
left: 0;
width: 24px;
height: 2px;
background: var(--neon-lime);
}
.footer-links {
list-style: none;
display: flex;
flex-direction: column;
gap: 10px;
}
.footer-links a {
font-size: 0.88rem;
color: #cbd5e1;
}
.footer-links a:hover {
color: var(--neon-lime);
padding-left: 4px;
}
.footer-bottom {
padding-top: 24px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 16px;
font-size: 0.82rem;
color: #94a3b8;
}
/* ==========================================================================
NATIVE MODAL DIALOG
========================================================================== */
dialog#quote-dialog {
border: none;
background: transparent;
padding: 0;
max-width: 580px;
width: 90vw;
margin: auto;
border-radius: var(--radius-lg);
box-shadow: 0 25px 60px rgba(0, 0, 0, 0.45);
}
dialog#quote-dialog::backdrop {
background: rgba(10, 20, 14, 0.65);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
.modal-content {
background: #ffffff;
border: 2px solid var(--neon-green);
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.2);
border-radius: var(--radius-lg);
padding: 36px;
position: relative;
overflow: hidden;
}
.modal-close-btn {
position: absolute;
top: 18px;
right: 18px;
width: 36px;
height: 36px;
border-radius: 50%;
background: #f1f5f9;
border: 1px solid #cbd5e1;
color: var(--text-secondary);
font-size: 1.2rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all var(--transition-fast);
}
.modal-close-btn:hover {
color: #080c09;
border-color: var(--neon-green);
background: #f0fdf4;
}
.modal-header {
margin-bottom: 24px;
}
.modal-header h3 {
font-size: 1.6rem;
color: var(--brand-black);
margin-bottom: 6px;
}
.modal-header p {
font-size: 0.9rem;
color: var(--text-secondary);
}
.form-group {
margin-bottom: 18px;
}
.form-group label {
display: block;
font-family: var(--font-heading);
font-size: 0.86rem;
font-weight: 700;
color: var(--brand-black);
margin-bottom: 6px;
}
.form-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
}
.form-control {
width: 100%;
background: #f8fafc;
border: 1.5px solid #cbd5e1;
border-radius: var(--radius-sm);
padding: 12px 14px;
color: var(--text-primary);
font-family: var(--font-body);
font-size: 0.94rem;
transition: all var(--transition-fast);
}
.form-control:focus {
outline: none;
border-color: var(--neon-green);
box-shadow: 0 0 10px rgba(0, 200, 83, 0.25);
background: #ffffff;
}
.form-control::placeholder {
color: var(--text-muted);
}
textarea.form-control {
resize: vertical;
min-height: 80px;
}
/* ==========================================================================
TOAST NOTIFICATION
========================================================================== */
.toast-notification {
position: fixed;
bottom: 30px;
right: 30px;
background: #080d0a;
border: 2px solid var(--neon-lime);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
border-radius: var(--radius-md);
padding: 16px 22px;
display: flex;
align-items: center;
gap: 14px;
color: #fff;
z-index: 999;
transform: translateY(120px);
opacity: 0;
transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
pointer-events: none;
}
.toast-notification.show {
transform: translateY(0);
opacity: 1;
pointer-events: auto;
}
.toast-icon {
width: 32px;
height: 32px;
border-radius: 50%;
background: var(--neon-lime);
color: #060806;
display: flex;
align-items: center;
justify-content: center;
font-weight: 900;
flex-shrink: 0;
}
/* ==========================================================================
MOBILE STICKY ACTION BAR
========================================================================== */
.mobile-sticky-bar {
display: none;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background: rgba(255, 255, 255, 0.97);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-top: 1.5px solid var(--neon-green);
padding: 10px 16px;
z-index: 95;
box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.1);
}
.mobile-sticky-inner {
display: grid;
grid-template-columns: 1fr 1fr 1.2fr;
gap: 8px;
}
.mobile-bar-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
padding: 8px 6px;
font-size: 0.75rem;
font-weight: 700;
border-radius: var(--radius-sm);
text-align: center;
}
.mobile-bar-call {
background: #f1f5f9;
border: 1px solid #cbd5e1;
color: var(--brand-black);
}
.mobile-bar-text {
background: #f0fdf4;
border: 1.5px solid var(--neon-green);
color: var(--neon-text-shade);
}
.mobile-bar-quote {
background: var(--neon-lime);
color: #060806;
box-shadow: 0 2px 10px rgba(0, 230, 118, 0.4);
}
/* ==========================================================================
RESPONSIVE BREAKPOINTS (iPad, Tablet & Mobile)
========================================================================== */
/* Tablet & iPad Breakpoint: Catches all iPads (Landscape & Portrait: 768px - 1200px) */
@media (max-width: 1200px) {
.nav-desktop {
display: none !important;
}
.mobile-menu-btn {
display: flex !important;
}
.phone-direct {
display: inline-flex !important;
padding: 8px 12px;
font-size: 0.88rem;
white-space: nowrap !important;
flex-shrink: 0 !important;
}
.header-cta-group {
gap: 10px;
}
.header-cta-group .open-quote-btn {
padding: 9px 16px;
font-size: 0.88rem;
white-space: nowrap !important;
flex-shrink: 0 !important;
}
}
@media (max-width: 1024px) {
.hero-grid {
grid-template-columns: 1fr;
gap: 40px;
}
.hero-image-wrapper img {
height: 380px;
}
.calculator-layout {
grid-template-columns: 1fr;
gap: 32px;
}
.calc-result-panel {
position: static;
}
.testimonials-grid,
.mini-showcase-grid {
grid-template-columns: 1fr;
}
.stats-grid {
grid-template-columns: repeat(2, 1fr);
}
.footer-top {
grid-template-columns: 1fr 1fr;
}
}
/* iPad Portrait (768px - 860px) */
@media (max-width: 860px) {
.container {
padding-left: 18px;
padding-right: 18px;
}
.brand-name {
font-size: 1.22rem;
}
.brand-tagline {
font-size: 0.62rem;
letter-spacing: 0.08em;
}
.phone-direct {
padding: 8px 10px;
font-size: 0.82rem;
}
.header-cta-group .open-quote-btn {
padding: 8px 12px;
font-size: 0.82rem;
}
.header-cta-group {
gap: 8px;
}
}
/* Smartphone / Handheld Breakpoint (<= 640px) */
@media (max-width: 640px) {
.container {
padding-left: 14px;
padding-right: 14px;
}
.header-cta-group {
gap: 8px;
}
.header-cta-group .phone-direct {
display: none !important;
}
.brand-tagline {
display: none;
}
.brand-name {
font-size: 1.1rem;
}
.hero-title {
font-size: clamp(1.85rem, 7.5vw, 2.4rem);
word-break: break-word;
}
.logo-symbol {
width: 36px;
height: 36px;
}
.mobile-menu-btn {
width: 38px;
height: 38px;
padding: 6px;
}
#header-quote-btn,
.header-cta-group .open-quote-btn {
display: none !important;
}
.announcement-bar .lang-switch {
display: none !important;
}
.mobile-sticky-bar {
display: block;
}
body {
padding-bottom: 72px; /* offset for bottom sticky bar */
}
.stats-grid {
grid-template-columns: 1fr;
gap: 16px;
}
.calculator-card {
padding: 24px 18px;
}
.services-grid {
grid-template-columns: 1fr;
}
.footer-top {
grid-template-columns: 1fr;
}
.form-row {
grid-template-columns: 1fr;
}
.announcement-bar {
font-size: 0.78rem;
}
.hero-actions {
flex-direction: column;
width: 100%;
}
.hero-actions .btn {
width: 100%;
}
/* Before / After Slider Badge Collision Prevention */
.ba-badge {
top: 10px;
padding: 4px 9px;
font-size: 0.7rem;
letter-spacing: 0.05em;
}
.ba-badge-before {
left: 10px;
}
.ba-badge-after {
right: 10px;
}
.ba-badge .badge-text-sub {
display: none;
}
.ba-handle {
width: 44px;
height: 44px;
}
}
/* Specific Smartphone Adjustments (<= 480px) */
@media (max-width: 480px) {
#header-quote-btn,
.header-cta-group .open-quote-btn {
display: none !important;
}
.announcement-bar .lang-switch {
display: none !important;
}
.announcement-bar {
padding: 8px 12px;
font-size: 0.74rem;
}
}
/* ==========================================================================
YARD CLEANUP SECTION & FEATURED PROJECTS SECTION (2-SECTION SPLIT)
========================================================================== */
.ba-trust-strip {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
margin-top: 36px;
max-width: 1000px;
margin-left: auto;
margin-right: auto;
}
.ba-trust-item {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-md);
padding: 16px 14px;
display: flex;
align-items: center;
gap: 12px;
box-shadow: var(--shadow-sm);
}
.ba-trust-icon {
width: 38px;
height: 38px;
border-radius: var(--radius-sm);
background: rgba(0, 200, 83, 0.1);
border: 1px solid rgba(0, 200, 83, 0.3);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
color: var(--neon-text-shade);
}
.ba-trust-item span {
font-size: 0.86rem;
font-weight: 700;
color: var(--brand-black);
line-height: 1.35;
}
/* Featured Projects Section */
section#projects {
background: linear-gradient(180deg, #edf5f0 0%, #e2ece5 100%);
border-bottom: 2px solid #cad8cf;
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.02);
}
.featured-projects-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 32px;
max-width: 1060px;
margin: 0 auto;
}
@media (max-width: 860px) {
.ba-trust-strip {
grid-template-columns: repeat(2, 1fr);
}
.featured-projects-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 480px) {
.ba-trust-strip {
grid-template-columns: 1fr;
}
}
/* ==========================================================================
SUBPAGE HEADER, BREADCRUMBS & INNER HEROES
========================================================================== */
.subpage-hero {
position: relative;
padding: 60px 0 80px;
background: radial-gradient(1000px circle at 80% 20%, rgba(0, 230, 118, 0.12) 0%, transparent 60%),
linear-gradient(180deg, #e3f5ea 0%, #edf8f2 50%, #f4fbf7 100%);
border-bottom: 2px solid #c8e6d3;
}
.breadcrumbs {
display: flex;
align-items: center;
gap: 8px;
font-size: 0.86rem;
color: var(--text-secondary);
margin-bottom: 20px;
font-weight: 600;
}
.breadcrumbs a {
color: var(--text-primary);
text-decoration: none;
transition: color var(--transition-fast);
}
.breadcrumbs a:hover {
color: var(--neon-text-shade);
}
.breadcrumbs span.separator {
color: var(--text-muted);
}
.subpage-title {
font-size: clamp(2.2rem, 4.2vw, 3.4rem);
font-weight: 900;
line-height: 1.1;
letter-spacing: -0.02em;
color: var(--brand-black);
margin-bottom: 20px;
text-transform: uppercase;
}
.subpage-subtitle {
font-size: 1.15rem;
line-height: 1.68;
color: var(--text-secondary);
max-width: 780px;
margin-bottom: 32px;
}
/* ==========================================================================
CONTACT PAGE LAYOUT & FORM SUBMISSIONS
========================================================================== */
.contact-section {
padding: 80px 0;
background: linear-gradient(180deg, #eaeff5 0%, #dde4ec 100%);
}
.contact-grid {
display: grid;
grid-template-columns: 1fr 1.35fr;
gap: 40px;
align-items: start;
}
.contact-info-panel {
display: flex;
flex-direction: column;
gap: 20px;
}
.contact-card {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-md);
padding: 24px;
box-shadow: var(--shadow-sm);
display: flex;
align-items: flex-start;
gap: 16px;
transition: all var(--transition-fast);
}
.contact-card:hover {
border-color: var(--neon-green);
transform: translateY(-2px);
box-shadow: var(--shadow-card);
}
.contact-card-icon {
width: 48px;
height: 48px;
border-radius: var(--radius-sm);
background: rgba(0, 200, 83, 0.1);
border: 1.5px solid rgba(0, 200, 83, 0.35);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.contact-card-icon svg {
stroke: var(--neon-text-shade);
}
.contact-card-content h4 {
font-size: 1.05rem;
font-weight: 800;
color: var(--brand-black);
margin-bottom: 4px;
}
.contact-card-content p {
font-size: 0.88rem;
color: var(--text-secondary);
line-height: 1.5;
margin-bottom: 8px;
}
.contact-card-link {
display: inline-flex;
align-items: center;
gap: 6px;
font-family: var(--font-heading);
font-size: 0.95rem;
font-weight: 800;
color: var(--neon-text-shade);
text-decoration: none;
}
.contact-form-panel {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-lg);
padding: 40px;
box-shadow: var(--shadow-card);
position: relative;
overflow: hidden;
}
.contact-form-panel::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, transparent, var(--neon-green), transparent);
}
.contact-form-header {
margin-bottom: 28px;
}
.contact-form-header h3 {
font-size: 1.6rem;
font-weight: 900;
color: var(--brand-black);
margin-bottom: 8px;
}
.contact-form-header p {
font-size: 0.94rem;
color: var(--text-secondary);
line-height: 1.5;
}
.form-submission-success {
display: none;
background: #f0fdf4;
border: 2px solid var(--neon-green);
border-radius: var(--radius-md);
padding: 28px;
text-align: center;
animation: fadeIn 0.4s ease;
}
.form-submission-success.show {
display: block;
}
.success-icon-box {
width: 60px;
height: 60px;
border-radius: 50%;
background: var(--neon-green);
color: #060a08;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 16px;
}
/* ==========================================================================
SERVICE DETAIL PAGES (SCOPE, PRICING & TRUST)
========================================================================== */
.service-content-section {
padding: 80px 0;
}
.service-content-grid {
display: grid;
grid-template-columns: 1.3fr 0.7fr;
gap: 50px;
}
.service-scope-list {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 16px;
margin: 30px 0;
}
.service-scope-item {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-md);
padding: 18px;
display: flex;
align-items: flex-start;
gap: 12px;
box-shadow: var(--shadow-sm);
}
.service-scope-item svg {
color: var(--neon-green);
flex-shrink: 0;
margin-top: 2px;
}
.service-scope-item h5 {
font-size: 0.96rem;
font-weight: 800;
color: var(--brand-black);
margin-bottom: 4px;
}
.service-scope-item p {
font-size: 0.82rem;
color: var(--text-secondary);
line-height: 1.4;
}
.service-sidebar {
display: flex;
flex-direction: column;
gap: 24px;
}
.service-sidebar-card {
background: #ffffff;
border: 1.5px solid var(--border-card);
border-radius: var(--radius-md);
padding: 28px;
box-shadow: var(--shadow-sm);
}
.service-sidebar-card h4 {
font-size: 1.15rem;
font-weight: 800;
color: var(--brand-black);
margin-bottom: 12px;
}
@media (max-width: 1024px) {
.contact-grid {
grid-template-columns: 1fr;
}
.service-content-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 640px) {
.contact-form-panel {
padding: 26px 18px;
}
.service-scope-list {
grid-template-columns: 1fr;
}
}
/* ==========================================================================
LANGUAGE SWITCHER (EN / ES)
========================================================================== */
.lang-switch {
display: inline-flex;
align-items: center;
background: rgba(15, 23, 42, 0.06);
border: 1.5px solid rgba(15, 23, 42, 0.12);
border-radius: 20px;
padding: 3px;
gap: 2px;
user-select: none;
flex-shrink: 0;
transition: all var(--transition-fast);
}
.lang-switch:hover {
border-color: var(--neon-green);
box-shadow: 0 0 12px rgba(0, 230, 118, 0.3);
}
.lang-btn {
background: transparent;
border: none;
color: #64748b;
font-family: var(--font-body);
font-size: 0.74rem;
font-weight: 800;
letter-spacing: 0.06em;
padding: 5px 11px;
border-radius: 14px;
cursor: pointer;
transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
display: inline-flex;
align-items: center;
justify-content: center;
line-height: 1;
}
.lang-btn:hover {
color: #0f172a;
}
.lang-btn.active {
background: #0f172a;
color: var(--neon-lime);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), 0 0 10px rgba(0, 230, 118, 0.45);
}
/* Top bar variant */
.top-bar .lang-switch {
background: rgba(255, 255, 255, 0.08);
border-color: rgba(255, 255, 255, 0.16);
}
.top-bar .lang-btn {
color: #94a3b8;
font-size: 0.7rem;
padding: 3px 8px;
}
.top-bar .lang-btn.active {
background: var(--neon-lime);
color: #05080b;
box-shadow: 0 0 10px rgba(0, 230, 118, 0.6);
}
/* Mobile drawer container */
.mobile-lang-wrap {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 18px;
background: rgba(255, 255, 255, 0.05);
border-radius: var(--radius-md);
margin-bottom: 20px;
border: 1px solid rgba(255, 255, 255, 0.08);
}
.mobile-lang-label {
font-size: 0.85rem;
font-weight: 700;
color: #cbd5e1;
display: flex;
align-items: center;
gap: 6px;
}
/* ==========================================================================
PODCAST & WEBINAR MEDIA SECTION (100% Vector & Pure CSS - No Images)
========================================================================== */
.media-hub-section {
background: var(--bg-subtle);
position: relative;
padding: 90px 0;
}
.media-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 30px;
margin-top: 20px;
}
.media-card {
background: var(--bg-card);
border-radius: 16px;
border: 1.5px solid var(--border-card);
padding: 36px;
box-shadow: var(--shadow-card);
display: flex;
flex-direction: column;
justify-content: space-between;
transition: transform var(--transition-smooth), border-color var(--transition-smooth), box-shadow var(--transition-smooth);
position: relative;
overflow: hidden;
}
.media-card:hover {
transform: translateY(-4px);
border-color: var(--neon-green);
box-shadow: 0 16px 36px rgba(0, 200, 83, 0.12);
}
.media-card-top {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 22px;
}
.media-badge-group {
display: flex;
flex-direction: column;
gap: 6px;
}
.media-badge {
display: inline-flex;
align-items: center;
font-size: 0.78rem;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.5px;
padding: 5px 12px;
border-radius: 50px;
}
.podcast-badge {
background: rgba(0, 200, 83, 0.12);
color: var(--neon-text-shade);
border: 1px solid rgba(0, 200, 83, 0.3);
}
.webinar-badge {
background: rgba(239, 68, 68, 0.1);
color: #dc2626;
border: 1px solid rgba(239, 68, 68, 0.25);
}
.pulse-live-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: #ef4444;
margin-right: 6px;
display: inline-block;
box-shadow: 0 0 0 rgba(239, 68, 68, 0.7);
animation: pulse-dot 1.8s infinite;
}
@keyframes pulse-dot {
0% {
transform: scale(0.95);
box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7);
}
70% {
transform: scale(1.1);
box-shadow: 0 0 0 8px rgba(239, 68, 68, 0);
}
100% {
transform: scale(0.95);
box-shadow: 0 0 0 0 rgba(239, 68, 68, 0);
}
}
.media-badge-sub {
font-size: 0.75rem;
color: var(--text-muted);
font-weight: 600;
}
/* Pure CSS Soundwave Animation */
.soundwave-container {
display: flex;
align-items: center;
gap: 3px;
height: 28px;
padding: 4px 8px;
background: #080c09;
border-radius: 8px;
border: 1px solid rgba(0, 200, 83, 0.25);
}
.soundwave-bar {
width: 3px;
background: var(--neon-lime);
border-radius: 3px;
animation: bounce-soundwave 1.2s infinite ease-in-out alternate;
}
.bar-1 { height: 8px; animation-delay: 0.1s; }
.bar-2 { height: 18px; animation-delay: 0.3s; }
.bar-3 { height: 12px; animation-delay: 0.2s; }
.bar-4 { height: 22px; animation-delay: 0.4s; }
.bar-5 { height: 14px; animation-delay: 0.25s; }
.bar-6 { height: 20px; animation-delay: 0.35s; }
.bar-7 { height: 10px; animation-delay: 0.15s; }
.bar-8 { height: 16px; animation-delay: 0.45s; }
@keyframes bounce-soundwave {
0% { transform: scaleY(0.4); }
100% { transform: scaleY(1.2); }
}
.webinar-icon-wrap {
width: 44px;
height: 44px;
border-radius: 10px;
background: rgba(0, 200, 83, 0.1);
color: var(--neon-text-shade);
border: 1px solid rgba(0, 200, 83, 0.2);
display: flex;
align-items: center;
justify-content: center;
}
.media-title {
font-size: 1.45rem;
font-weight: 800;
color: var(--text-primary);
margin-bottom: 10px;
line-height: 1.3;
}
.media-desc {
font-size: 0.95rem;
color: var(--text-secondary);
line-height: 1.6;
margin-bottom: 20px;
}
/* Episode Player Box */
.episode-box {
background: #080c09;
border-radius: 12px;
padding: 20px;
margin-bottom: 20px;
border: 1px solid rgba(0, 200, 83, 0.25);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}
.episode-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.episode-tag {
font-size: 0.72rem;
font-weight: 800;
color: var(--neon-lime);
letter-spacing: 0.5px;
}
.episode-length {
font-size: 0.72rem;
color: #94a3b8;
}
.episode-name {
font-size: 0.96rem;
color: #ffffff;
font-weight: 700;
margin-bottom: 14px;
line-height: 1.4;
}
.mini-player-bar {
display: flex;
align-items: center;
gap: 12px;
}
.player-toggle-btn {
width: 34px;
height: 34px;
border-radius: 50%;
background: var(--neon-green);
color: #080c09;
display: flex;
align-items: center;
justify-content: center;
border: none;
cursor: pointer;
flex-shrink: 0;
transition: transform 0.15s ease, background 0.15s ease;
}
.player-toggle-btn:hover {
background: var(--neon-lime);
transform: scale(1.08);
}
.player-track {
flex: 1;
height: 6px;
background: rgba(255, 255, 255, 0.15);
border-radius: 10px;
overflow: hidden;
position: relative;
}
.player-fill {
width: 35%;
height: 100%;
background: var(--neon-lime);
border-radius: 10px;
}
.player-time {
font-size: 0.75rem;
color: #94a3b8;
font-family: monospace;
}
/* Platform Strip */
.platform-strip {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 10px;
padding-top: 14px;
border-top: 1px solid var(--border-subtle);
}
.platform-label {
font-size: 0.8rem;
font-weight: 700;
color: var(--text-muted);
}
.platform-icons {
display: flex;
gap: 8px;
}
.platform-chip {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 6px 12px;
border-radius: 20px;
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
color: var(--text-primary);
font-size: 0.76rem;
font-weight: 700;
text-decoration: none;
transition: all 0.15s ease;
}
.platform-chip:hover {
background: var(--bg-card-hover);
border-color: var(--neon-green);
color: var(--neon-text-shade);
transform: translateY(-1px);
}
/* Webinar Schedule Box */
.webinar-schedule-box {
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: 12px;
padding: 20px;
margin-bottom: 20px;
}
.webinar-date-row {
display: flex;
align-items: flex-start;
gap: 10px;
margin-bottom: 14px;
padding-bottom: 12px;
border-bottom: 1px solid var(--border-subtle);
}
.webinar-date-row strong {
display: block;
font-size: 0.88rem;
color: var(--text-primary);
}
.webinar-date-row span {
display: block;
font-size: 0.84rem;
color: var(--neon-text-shade);
font-weight: 700;
}
.webinar-bullets {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 8px;
}
.webinar-bullets li {
display: flex;
align-items: center;
gap: 8px;
font-size: 0.85rem;
color: var(--text-secondary);
}
.webinar-action-row {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}
.webinar-guarantee {
font-size: 0.75rem;
color: var(--text-muted);
text-align: center;
}
@media (max-width: 900px) {
.media-grid {
grid-template-columns: 1fr;
}
}