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

2679 lines
54 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;
}