/* =============================================
   GREENLINE LAWN CARE CO. — styles.css
   Mobile-first responsive stylesheet
   Fonts: Fraunces (display) + Plus Jakarta Sans (body)
   ============================================= */

/* =============================================
   CSS CUSTOM PROPERTIES
   — Edit these to rebrand for a new client —
   ============================================= */
:root {
  /* Brand Colors */
  --green-deep:    #17430C;
  --green-main:    #2B7518;
  --green-mid:     #3A9420;
  --green-light:   #55B52B;
  --green-pale:    #EBF5E1;
  --green-softer:  #F3F9EE;

  --yellow:        #F0C429;
  --yellow-hover:  #D4AA1A;
  --yellow-faint:  #FDF7DC;

  /* Neutrals */
  --white:         #FFFFFF;
  --off-white:     #F7FAF3;
  --charcoal:      #1A2215;
  --text-body:     #364028;
  --text-mid:      #586749;
  --text-light:    #8A9D7A;

  /* Borders & Surfaces */
  --border:        #D0E4BE;
  --border-light:  #E6F0DC;

  /* Shadows */
  --shadow-sm: 0 2px 8px rgba(23, 67, 12, 0.07);
  --shadow-md: 0 4px 20px rgba(23, 67, 12, 0.11);
  --shadow-lg: 0 8px 40px rgba(23, 67, 12, 0.15);

  /* Typography */
  --font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --font-body:    'Plus Jakarta Sans', system-ui, -apple-system, sans-serif;

  /* Layout */
  --max-width:     1200px;
  --section-py:    clamp(64px, 9vw, 104px);
  --container-px:  clamp(16px, 4vw, 36px);

  /* Border Radius */
  --radius-sm:   8px;
  --radius-md:   16px;
  --radius-lg:   24px;
  --radius-pill: 100px;

  /* Transitions */
  --ease: cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --duration: 0.22s;
}

/* =============================================
   RESET & BASE
   ============================================= */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin:  0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 78px; /* header height */
}

body {
  font-family: var(--font-body);
  font-size:   1rem;
  line-height: 1.65;
  color:       var(--text-body);
  background:  var(--white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img {
  max-width: 100%;
  height:    auto;
  display:   block;
}

a {
  color:           var(--green-main);
  text-decoration: none;
  transition:      color var(--duration) var(--ease);
}

a:hover { color: var(--green-deep); }

ul, ol { list-style: none; }

button {
  cursor:      pointer;
  font-family: inherit;
  border:      none;
  background:  none;
}

h1, h2, h3, h4, h5 {
  font-family: var(--font-display);
  line-height: 1.13;
  color:       var(--charcoal);
  font-weight: 700;
}

h1 { font-size: clamp(2.1rem, 5.5vw, 3.75rem); }
h2 { font-size: clamp(1.7rem, 4vw,   2.75rem); }
h3 { font-size: clamp(1.1rem, 2.5vw, 1.35rem); }

p { max-width: 64ch; }

/* =============================================
   ACCESSIBILITY
   ============================================= */
:focus-visible {
  outline:        2.5px solid var(--green-mid);
  outline-offset: 3px;
  border-radius:  3px;
}

.sr-only {
  position:  absolute;
  width:     1px;
  height:    1px;
  padding:   0;
  overflow:  hidden;
  clip:      rect(0, 0, 0, 0);
  white-space: nowrap;
  border:    0;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration:        0.01ms !important;
    animation-iteration-count: 1     !important;
    transition-duration:       0.01ms !important;
  }
  html { scroll-behavior: auto; }
}

/* =============================================
   UTILITIES
   ============================================= */
.container {
  max-width: var(--max-width);
  margin:    0 auto;
  padding:   0 var(--container-px);
}

.section-header {
  text-align:    center;
  margin-bottom: clamp(40px, 6vw, 64px);
}

.section-header > p {
  margin: 0 auto;
}

.section-eyebrow {
  display:      inline-block;
  font-family:  var(--font-body);
  font-size:    0.72rem;
  font-weight:  700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color:        var(--green-main);
  background:   var(--green-pale);
  border:       1px solid var(--border);
  padding:      5px 14px;
  border-radius: var(--radius-pill);
  margin-bottom: 14px;
}

.section-sub {
  color:      var(--text-mid);
  margin-top: 14px;
  font-size:  1.0375rem;
}

/* =============================================
   BUTTONS
   ============================================= */
.btn {
  display:     inline-flex;
  align-items: center;
  gap:         8px;
  font-family: var(--font-body);
  font-weight: 600;
  font-size:   0.9375rem;
  line-height: 1;
  padding:     14px 26px;
  border-radius: var(--radius-sm);
  border:      2px solid transparent;
  transition:  all var(--duration) var(--ease);
  cursor:      pointer;
  white-space: nowrap;
  text-decoration: none;
}

/* Yellow primary — main CTA */
.btn-primary {
  background:   var(--yellow);
  color:        var(--charcoal);
  border-color: var(--yellow);
}
.btn-primary:hover {
  background:   var(--yellow-hover);
  border-color: var(--yellow-hover);
  color:        var(--charcoal);
  transform:    translateY(-2px);
  box-shadow:   0 5px 18px rgba(208, 167, 26, 0.36);
}

/* White outline — hero secondary */
.btn-secondary-outline {
  background:   transparent;
  color:        var(--white);
  border-color: rgba(255, 255, 255, 0.65);
}
.btn-secondary-outline:hover {
  background:   rgba(255, 255, 255, 0.14);
  border-color: var(--white);
  color:        var(--white);
}

/* Green phone button — header */
.btn-phone {
  background:   var(--green-main);
  color:        var(--white);
  border-color: var(--green-main);
  font-size:    0.875rem;
  padding:      10px 18px;
  font-weight:  600;
}
.btn-phone:hover {
  background:   var(--green-deep);
  border-color: var(--green-deep);
  color:        var(--white);
}
.btn-phone-label { display: inline; }

/* White outline on dark bg — final CTA */
.btn-white-outline {
  background:   transparent;
  color:        var(--white);
  border-color: rgba(255, 255, 255, 0.55);
}
.btn-white-outline:hover {
  background:   rgba(255, 255, 255, 0.12);
  border-color: var(--white);
  color:        var(--white);
}

/* Modifiers */
.btn-full { width: 100%; justify-content: center; }
.btn-lg   { font-size: 1rem; padding: 16px 34px; }

/* =============================================
   HEADER / NAVIGATION
   ============================================= */
.site-header {
  position:    sticky;
  top:         0;
  z-index:     200;
  background:  var(--white);
  border-bottom: 1px solid var(--border-light);
  transition:  box-shadow var(--duration) var(--ease);
}

.site-header.scrolled {
  box-shadow: var(--shadow-md);
}

.header-inner {
  display:     flex;
  align-items: center;
  gap:         20px;
  height:      72px;
}

/* — Logo — */
.logo {
  display:     flex;
  align-items: center;
  gap:         10px;
  text-decoration: none;
  flex-shrink: 0;
}

.logo-img {
  height:     42px;
  width:      auto;
  display:    block;
  object-fit: contain;
}

.logo-text {
  font-family: var(--font-display);
  font-size:   1.4rem;
  font-weight: 700;
  color:       var(--charcoal);
  line-height: 1;
}

.logo-accent { color: var(--green-main); }

/* — Nav — */
.main-nav { flex: 1; }

.nav-links {
  display:     flex;
  align-items: center;
  gap:         2px;
  justify-content: center;
}

.nav-links a {
  font-size:   0.9rem;
  font-weight: 500;
  color:       var(--text-body);
  padding:     8px 13px;
  border-radius: var(--radius-sm);
  transition:  all var(--duration) var(--ease);
  text-decoration: none;
}

.nav-links a:hover {
  color:      var(--green-main);
  background: var(--green-pale);
}

.nav-quote-link {
  background:  var(--green-pale) !important;
  color:       var(--green-deep) !important;
  font-weight: 600 !important;
  border:      1px solid var(--border);
}

/* — Header Actions — */
.header-actions {
  display:     flex;
  align-items: center;
  gap:         10px;
  flex-shrink: 0;
}

/* — Hamburger (mobile only) — */
.hamburger {
  display:       none;
  flex-direction: column;
  gap:           5px;
  padding:       8px 6px;
  border-radius: var(--radius-sm);
  background:    transparent;
  border:        none;
  cursor:        pointer;
}

.hamburger span {
  display:       block;
  width:         22px;
  height:        2px;
  background:    var(--charcoal);
  border-radius: 2px;
  transition:    all 0.3s ease;
}

.hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg);  }
.hamburger.open span:nth-child(2) { opacity: 0; transform: scaleX(0);          }
.hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* =============================================
   HERO
   ============================================= */
.hero {
  position:    relative;
  min-height:  clamp(520px, 82vh, 780px);
  display:     flex;
  align-items: center;
  overflow:    hidden;
}

/* Hero background — swap to real image */
.hero-bg {
  position:          absolute;
  inset:             0;
  background-color:  var(--green-deep); /* fallback if image missing */
  background-size:   cover;
  background-position: center 40%;
  background-repeat: no-repeat;
}

.hero-overlay {
  position: absolute;
  inset:    0;
  background: linear-gradient(
    130deg,
    rgba(14, 36, 7, 0.86)  0%,
    rgba(24, 66, 11, 0.70) 55%,
    rgba(30, 88, 14, 0.40) 100%
  );
}

.hero-content {
  position: relative;
  z-index:  2;
  padding-top:    clamp(56px, 8vw, 80px);
  padding-bottom: clamp(56px, 8vw, 80px);
}

.hero-text { max-width: 680px; }

.hero-eyebrow {
  display:       inline-block;
  font-size:     0.72rem;
  font-weight:   700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color:         var(--yellow);
  background:    rgba(240, 196, 41, 0.14);
  border:        1px solid rgba(240, 196, 41, 0.32);
  padding:       5px 15px;
  border-radius: var(--radius-pill);
  margin-bottom: 20px;
}

.hero-headline {
  font-size:     clamp(2.2rem, 5.5vw, 3.85rem);
  font-weight:   700;
  color:         var(--white);
  margin-bottom: 18px;
  line-height:   1.08;
}

.headline-accent { color: var(--yellow); }

.hero-sub {
  font-size:     clamp(1rem, 2vw, 1.175rem);
  color:         rgba(255, 255, 255, 0.84);
  margin-bottom: 32px;
  max-width:     55ch;
  line-height:   1.65;
}

.hero-ctas {
  display:       flex;
  flex-wrap:     wrap;
  gap:           12px;
  margin-bottom: 36px;
}

/* Trust Badges */
.trust-badges {
  display:   flex;
  flex-wrap: wrap;
  gap:       9px;
}

.badge {
  display:     inline-flex;
  align-items: center;
  gap:         7px;
  background:  rgba(255, 255, 255, 0.10);
  border:      1px solid rgba(255, 255, 255, 0.22);
  color:       rgba(255, 255, 255, 0.92);
  font-size:   0.8125rem;
  font-weight: 500;
  padding:     7px 14px;
  border-radius: var(--radius-pill);
  backdrop-filter: blur(6px);
}

.badge-check {
  color:       var(--yellow);
  font-weight: 700;
  font-size:   0.875rem;
}

/* =============================================
   QUOTE / CONTACT FORM SECTION
   ============================================= */
.quote-section {
  background:    var(--green-softer);
  padding:       var(--section-py) 0;
  border-bottom: 1px solid var(--border-light);
}

.quote-inner {
  display:               grid;
  grid-template-columns: 1fr;
  gap:                   48px;
  align-items:           start;
}

@media (min-width: 780px) {
  .quote-inner {
    grid-template-columns: 1fr 1.45fr;
  }
}

/* Intro column */
.quote-intro h2 { margin-bottom: 12px; }
.quote-intro > p {
  color:         var(--text-mid);
  margin-bottom: 24px;
}

.quote-rating-mini {
  display:     flex;
  align-items: center;
  gap:         10px;
  margin-bottom: 24px;
}

.mini-stars {
  color:          #F5A623;
  font-size:      1.05rem;
  letter-spacing: 2px;
}

.quote-rating-mini span {
  font-size:   0.875rem;
  color:       var(--text-mid);
  font-weight: 500;
}

.quote-reassurances {
  display:        flex;
  flex-direction: column;
  gap:            10px;
}

.quote-reassurances li {
  display:     flex;
  align-items: center;
  gap:         9px;
  font-size:   0.9rem;
  font-weight: 500;
  color:       var(--text-body);
}

.quote-reassurances li svg { color: var(--green-main); flex-shrink: 0; }

/* Form Card */
.quote-form-card {
  background:    var(--white);
  border-radius: var(--radius-lg);
  padding:       clamp(24px, 4vw, 40px);
  box-shadow:    var(--shadow-lg);
  border:        1px solid var(--border);
}

.quote-form {
  display:        flex;
  flex-direction: column;
  gap:            18px;
}

.form-row {
  display:               grid;
  grid-template-columns: 1fr;
  gap:                   18px;
}

@media (min-width: 460px) {
  .form-row { grid-template-columns: 1fr 1fr; }
}

.form-group {
  display:        flex;
  flex-direction: column;
  gap:            6px;
}

.form-group label {
  font-size:   0.875rem;
  font-weight: 600;
  color:       var(--charcoal);
}

.form-group label span[aria-label="required"] {
  color:       var(--green-main);
  margin-left: 2px;
}

.label-optional {
  font-weight: 400;
  color:       var(--text-light);
  font-size:   0.8rem;
}

.form-group input,
.form-group select,
.form-group textarea {
  font-family:     var(--font-body);
  font-size:       0.9375rem;
  color:           var(--charcoal);
  background:      var(--off-white);
  border:          1.5px solid var(--border);
  border-radius:   var(--radius-sm);
  padding:         13px 16px;
  width:           100%;
  transition:      border-color var(--duration) var(--ease),
                   box-shadow   var(--duration) var(--ease);
  -webkit-appearance: none;
  appearance:         none;
}

.form-group select {
  background-image:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23586749' stroke-width='1.5' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");
  background-repeat:   no-repeat;
  background-position: right 14px center;
  padding-right:       40px;
  cursor:              pointer;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  outline:      none;
  border-color: var(--green-mid);
  box-shadow:   0 0 0 3px rgba(58, 148, 32, 0.13);
}

.form-group input.field-error,
.form-group select.field-error,
.form-group textarea.field-error {
  border-color: #D84040;
  box-shadow:   0 0 0 3px rgba(216, 64, 64, 0.10);
}

.form-group textarea {
  resize:     vertical;
  min-height: 80px;
  line-height: 1.5;
}

.form-note {
  font-size:  0.8rem;
  color:      var(--text-light);
  text-align: center;
  max-width:  100%;
}

/* Feedback messages */
.form-feedback {
  display:       flex;
  align-items:   center;
  gap:           10px;
  padding:       13px 16px;
  border-radius: var(--radius-sm);
  font-weight:   600;
  font-size:     0.9375rem;
}

.form-success {
  background: #EBF8E1;
  color:      var(--green-deep);
  border:     1px solid var(--border);
}

.form-error {
  background: #FDECEA;
  color:      #B83030;
  border:     1px solid #F5C6C6;
}

.form-error a {
  color:           #B83030;
  text-decoration: underline;
}

/* =============================================
   SERVICES SECTION
   ============================================= */
.services-section {
  padding:    var(--section-py) 0;
  background: var(--white);
}

.services-grid {
  display:               grid;
  grid-template-columns: 1fr;
  gap:                   18px;
}

@media (min-width: 560px) {
  .services-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 900px) {
  .services-grid { grid-template-columns: repeat(3, 1fr); }
}

.service-card {
  background:    var(--off-white);
  border:        1px solid var(--border-light);
  border-radius: var(--radius-md);
  padding:       28px 24px 28px;
  transition:    all var(--duration) var(--ease);
  position:      relative;
  overflow:      hidden;
}

/* Animated green top-bar on hover */
.service-card::before {
  content:          '';
  position:         absolute;
  top:              0;
  left:             0;
  right:            0;
  height:           3px;
  background:       var(--green-main);
  transform:        scaleX(0);
  transform-origin: left;
  transition:       transform 0.3s var(--ease);
}

.service-card:hover {
  box-shadow:  var(--shadow-md);
  transform:   translateY(-4px);
  border-color: var(--border);
}

.service-card:hover::before { transform: scaleX(1); }

.service-icon {
  width:         48px;
  height:        48px;
  color:         var(--green-main);
  margin-bottom: 16px;
}

.service-card h3 {
  font-size:     1.1rem;
  margin-bottom: 10px;
  color:         var(--charcoal);
}

.service-card p {
  font-size:   0.9rem;
  color:       var(--text-mid);
  max-width:   100%;
  line-height: 1.58;
}

.services-cta {
  text-align: center;
  margin-top: 48px;
}

/* =============================================
   HOW IT WORKS
   ============================================= */
.how-it-works {
  background:    var(--green-softer);
  padding:       var(--section-py) 0;
  border-top:    1px solid var(--border-light);
  border-bottom: 1px solid var(--border-light);
}

.steps-grid {
  display:        flex;
  flex-direction: column;
  gap:            16px;
  align-items:    center;
  list-style:     none;
}

@media (min-width: 768px) {
  .steps-grid {
    flex-direction: row;
    align-items:    flex-start;
  }
}

.step-card {
  background:    var(--white);
  border:        1px solid var(--border);
  border-radius: var(--radius-md);
  padding:       32px 28px;
  text-align:    center;
  flex:          1;
  max-width:     360px;
  width:         100%;
  list-style:    none;
}

.step-number {
  font-family: var(--font-display);
  font-size:   3rem;
  font-weight: 700;
  color:       var(--green-light);
  opacity:     0.45;
  line-height: 1;
  margin-bottom: 14px;
}

.step-card h3 { margin-bottom: 10px; font-size: 1.175rem; }

.step-card p {
  color:      var(--text-mid);
  font-size:  0.9375rem;
  max-width:  100%;
  line-height: 1.6;
}

/* Connector arrow between steps */
.step-connector {
  flex-shrink: 0;
  width:       44px;
  height:      2px;
  background:  var(--border);
  position:    relative;
  margin-top:  68px;
  display:     none;
  list-style:  none;
}

.step-connector::after {
  content:    '';
  position:   absolute;
  right:      -7px;
  top:        -5px;
  width:      12px;
  height:     12px;
  border-right:  2px solid var(--border);
  border-top:    2px solid var(--border);
  transform:  rotate(45deg);
}

@media (min-width: 768px) {
  .step-connector { display: block; }
}

/* =============================================
   SERVICE AREA
   ============================================= */
.service-area-section {
  padding:    var(--section-py) 0;
  background: var(--white);
}

.area-chips {
  display:         flex;
  flex-wrap:       wrap;
  gap:             10px;
  justify-content: center;
  margin-bottom:   36px;
}

.area-chip {
  display:       inline-block;
  background:    var(--green-pale);
  border:        1px solid var(--border);
  color:         var(--green-deep);
  font-size:     0.875rem;
  font-weight:   600;
  padding:       8px 20px;
  border-radius: var(--radius-pill);
  transition:    all var(--duration) var(--ease);
}

.area-chip:hover {
  background:   var(--green-main);
  color:        var(--white);
  border-color: var(--green-main);
}

.area-body {
  max-width: 640px;
  margin:    0 auto;
  text-align: center;
}

.area-body p {
  color:      var(--text-mid);
  max-width:  100%;
  font-size:  1rem;
}

.area-note {
  display:     flex;
  align-items: center;
  justify-content: center;
  gap:         6px;
  margin-top:  18px !important;
  font-style:  italic;
  font-size:   0.9375rem;
}

.area-note a {
  font-weight: 600;
  color:       var(--green-main);
}

.area-note a:hover { text-decoration: underline; }

/* =============================================
   GALLERY
   ============================================= */
.gallery-section {
  padding:    var(--section-py) 0;
  background: var(--charcoal);
}

.gallery-section .section-eyebrow {
  background:   rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.18);
  color:        var(--yellow);
}

.gallery-section h2 { color: var(--white); }

.gallery-section .section-sub { color: rgba(255, 255, 255, 0.60); }

.gallery-grid {
  display:               grid;
  grid-template-columns: repeat(2, 1fr);
  gap:                   14px;
}

@media (min-width: 768px) {
  .gallery-grid { grid-template-columns: repeat(4, 1fr); }
}

.gallery-card {
  border-radius: var(--radius-md);
  overflow:      hidden;
  background:    rgba(255, 255, 255, 0.05);
  border:        1px solid rgba(255, 255, 255, 0.09);
}

.gallery-img-wrap {
  position:   relative;
  aspect-ratio: 4 / 3;
  overflow:   hidden;
  background: rgba(255, 255, 255, 0.04);
}

/* Placeholder shown when image hasn't loaded / is missing */
.gallery-placeholder {
  position:         absolute;
  inset:            0;
  display:          flex;
  align-items:      center;
  justify-content:  center;
  color:            rgba(255, 255, 255, 0.20);
  pointer-events:   none;
  z-index:          0;
}

.gallery-img-wrap img {
  position:   relative;
  z-index:    1;
  width:      100%;
  height:     100%;
  object-fit: cover;
  transition: transform 0.45s var(--ease);
}

.gallery-card:hover .gallery-img-wrap img {
  transform: scale(1.07);
}

.gallery-card figcaption {
  padding:    11px 14px;
  font-size:  0.8rem;
  font-weight: 600;
  color:      rgba(255, 255, 255, 0.70);
  text-align: center;
  letter-spacing: 0.02em;
}

/* =============================================
   REVIEWS
   ============================================= */
.reviews-section {
  padding:    var(--section-py) 0;
  background: var(--off-white);
  border-top: 1px solid var(--border-light);
}

/* Rating summary block */
.rating-summary {
  display:         flex;
  flex-wrap:       wrap;
  align-items:     center;
  justify-content: center;
  gap:             16px 28px;
  margin:          0 auto 52px;
  max-width:       540px;
  background:      var(--white);
  border:          1px solid var(--border);
  border-radius:   var(--radius-lg);
  padding:         24px 32px;
}

.rating-stars {
  font-size:      1.5rem;
  color:          #F5A623;
  letter-spacing: 4px;
}

.rating-info {
  display:        flex;
  flex-direction: column;
  gap:            4px;
}

.rating-score {
  font-family: var(--font-display);
  font-size:   2.25rem;
  font-weight: 700;
  color:       var(--charcoal);
  line-height: 1;
}

.rating-label {
  font-size: 0.875rem;
  color:     var(--text-mid);
}

.rating-source {
  display:     flex;
  align-items: center;
  gap:         7px;
  font-size:   0.8125rem;
  color:       var(--text-mid);
  font-weight: 500;
  padding-left: 24px;
  border-left: 1px solid var(--border);
}

/* Review grid */
.reviews-grid {
  display:               grid;
  grid-template-columns: 1fr;
  gap:                   18px;
}

@media (min-width: 640px) {
  .reviews-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 960px) {
  .reviews-grid { grid-template-columns: repeat(3, 1fr); }
}

.review-card {
  background:    var(--white);
  border:        1px solid var(--border-light);
  border-radius: var(--radius-md);
  padding:       28px 24px;
  display:       flex;
  flex-direction: column;
  gap:           14px;
  transition:    box-shadow var(--duration) var(--ease);
}

.review-card:hover { box-shadow: var(--shadow-sm); }

.review-stars {
  color:          #F5A623;
  font-size:      1rem;
  letter-spacing: 2px;
}

.review-card blockquote p {
  font-size:   0.9375rem;
  color:       var(--text-body);
  font-style:  italic;
  line-height: 1.65;
  max-width:   100%;
}

.review-meta {
  display:     flex;
  align-items: center;
  gap:         12px;
  margin-top:  auto;
  padding-top: 14px;
  border-top:  1px solid var(--border-light);
}

.reviewer-avatar {
  width:       40px;
  height:      40px;
  border-radius: 50%;
  background:  var(--green-pale);
  color:       var(--green-main);
  font-weight: 700;
  font-size:   1rem;
  display:     flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border:      2px solid var(--border);
}

.reviewer-name {
  display:     block;
  font-size:   0.9rem;
  font-weight: 600;
  color:       var(--charcoal);
  font-style:  normal;
}

.reviewer-location {
  display:   block;
  font-size: 0.8rem;
  color:     var(--text-light);
}

/* =============================================
   WHY CHOOSE US
   ============================================= */
.why-us-section {
  padding:    var(--section-py) 0;
  background: var(--white);
  border-top: 1px solid var(--border-light);
}

.why-inner {
  display:               grid;
  grid-template-columns: 1fr;
  gap:                   56px;
  align-items:           center;
}

@media (min-width: 900px) {
  .why-inner { grid-template-columns: 1fr 1fr; }
}

.why-text .section-eyebrow { display: inline-block; margin-bottom: 14px; }
.why-text h2 { margin-bottom: 14px; }

.why-intro {
  color:         var(--text-mid);
  margin-bottom: 32px;
}

.why-list {
  display:        flex;
  flex-direction: column;
  gap:            17px;
}

.why-list li {
  display:     flex;
  align-items: flex-start;
  gap:         14px;
}

.why-check {
  display:         flex;
  align-items:     center;
  justify-content: center;
  width:           26px;
  height:          26px;
  min-width:       26px;
  border-radius:   50%;
  background:      var(--green-pale);
  color:           var(--green-main);
  font-weight:     700;
  font-size:       0.82rem;
  border:          1px solid var(--border);
  margin-top:      2px;
}

.why-list li > div {
  display:        flex;
  flex-direction: column;
  gap:            3px;
}

.why-list li strong {
  font-size:   0.9375rem;
  color:       var(--charcoal);
}

.why-list li span {
  font-size:   0.9rem;
  color:       var(--text-mid);
  line-height: 1.55;
}

/* Why visual / image */
.why-visual {
  position: relative;
}

.why-image-wrap {
  position:      relative;
  border-radius: var(--radius-lg);
  overflow:      hidden;
  box-shadow:    var(--shadow-lg);
  aspect-ratio:  5 / 4;
  background:    var(--green-pale);
  display:       flex;
  align-items:   center;
  justify-content: center;
}

.why-image-wrap img {
  position:   absolute;
  inset:      0;
  width:      100%;
  height:     100%;
  object-fit: cover;
  z-index:    1;
}

.why-image-wrap .gallery-placeholder {
  color: var(--green-light);
  z-index: 0;
}

/* Years badge overlay */
.why-badge {
  position:      absolute;
  bottom:        20px;
  left:          20px;
  background:    var(--yellow);
  color:         var(--charcoal);
  border-radius: var(--radius-md);
  padding:       14px 20px;
  box-shadow:    var(--shadow-md);
  z-index:       2;
  line-height:   1.1;
}

.why-badge-num {
  display:     block;
  font-family: var(--font-display);
  font-size:   2.4rem;
  font-weight: 700;
  line-height: 1;
}

.why-badge-label {
  display:        block;
  font-size:      0.72rem;
  font-weight:    700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-top:     5px;
  color:          rgba(26, 34, 21, 0.72);
}

/* =============================================
   FAQ ACCORDION
   ============================================= */
.faq-section {
  padding:    var(--section-py) 0;
  background: var(--green-softer);
  border-top: 1px solid var(--border-light);
}

.faq-list {
  max-width:      780px;
  margin:         0 auto;
  display:        flex;
  flex-direction: column;
  gap:            10px;
}

.faq-item {
  background:    var(--white);
  border:        1px solid var(--border);
  border-radius: var(--radius-md);
  overflow:      hidden;
}

.faq-question {
  width:           100%;
  display:         flex;
  justify-content: space-between;
  align-items:     center;
  gap:             16px;
  padding:         20px 24px;
  text-align:      left;
  font-size:       1rem;
  font-weight:     600;
  color:           var(--charcoal);
  background:      transparent;
  cursor:          pointer;
  transition:      background var(--duration) var(--ease),
                   color     var(--duration) var(--ease);
  border:          none;
  font-family:     var(--font-body);
  line-height:     1.4;
}

.faq-question:hover { background: var(--green-softer); }

.faq-question[aria-expanded="true"] {
  color:      var(--green-main);
  background: var(--green-softer);
}

/* Plus/minus icon */
.faq-icon {
  flex-shrink:   0;
  width:         22px;
  height:        22px;
  border-radius: 50%;
  background:    var(--green-pale);
  border:        1px solid var(--border);
  position:      relative;
  transition:    background var(--duration) var(--ease);
}

.faq-icon::before,
.faq-icon::after {
  content:      '';
  position:     absolute;
  background:   var(--green-main);
  border-radius: 2px;
  top:          50%;
  left:         50%;
  transform:    translate(-50%, -50%);
}

.faq-icon::before { width: 10px; height: 2px; }

.faq-icon::after {
  width:      2px;
  height:     10px;
  transition: transform 0.3s var(--ease);
}

/* Rotate vertical bar to hide it when open = minus sign */
.faq-question[aria-expanded="true"] .faq-icon::after {
  transform: translate(-50%, -50%) rotate(90deg);
}

.faq-answer {
  padding: 0 24px 22px;
}

.faq-answer p {
  color:      var(--text-mid);
  font-size:  0.9375rem;
  max-width:  100%;
  line-height: 1.68;
}

.faq-answer a {
  color:       var(--green-main);
  font-weight: 600;
}

.faq-answer a:hover { text-decoration: underline; }

/* =============================================
   FINAL CTA
   ============================================= */
.final-cta {
  background: var(--green-deep);
  padding:    clamp(72px, 10vw, 120px) 0;
  position:   relative;
  overflow:   hidden;
}

/* Subtle radial glow accents */
.final-cta::before {
  content:  '';
  position: absolute;
  inset:    0;
  background:
    radial-gradient(ellipse at 15% 60%, rgba(85, 181, 43, 0.16) 0%, transparent 55%),
    radial-gradient(ellipse at 85% 25%, rgba(240, 196, 41, 0.08) 0%, transparent 50%);
  pointer-events: none;
}

.final-cta-inner {
  position:   relative;
  z-index:    1;
  text-align: center;
}

.final-cta h2 {
  color:         var(--white);
  margin-bottom: 16px;
}

.final-cta > .final-cta-inner > p {
  color:         rgba(255, 255, 255, 0.72);
  font-size:     1.0625rem;
  margin:        0 auto 36px;
}

.cta-buttons {
  display:         flex;
  flex-wrap:       wrap;
  gap:             14px;
  justify-content: center;
}

/* =============================================
   FOOTER
   ============================================= */
.site-footer {
  background: #131A0F;
  color:      rgba(255, 255, 255, 0.65);
}

.footer-inner {
  display:               grid;
  grid-template-columns: 1fr;
  gap:                   40px;
  padding-top:           60px;
  padding-bottom:        52px;
}

@media (min-width: 640px) {
  .footer-inner { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 900px) {
  .footer-inner { grid-template-columns: 2fr 1fr 1fr; }
}

/* Brand column */
.footer-logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}

.footer-logo-img {
  height: 42px;
  width: auto;
  display: block;
  object-fit: contain;
  filter: drop-shadow(0 8px 18px rgba(0, 0, 0, 0.24));
}

.footer-logo-text {
  color:     var(--white);
  font-size: 1.5rem;
}

.footer-tagline {
  font-size:   0.875rem;
  color:       rgba(255, 255, 255, 0.48);
  margin-top:  14px;
  margin-bottom: 22px;
  max-width:   100%;
  line-height: 1.65;
}

.footer-contact {
  display:        flex;
  flex-direction: column;
  gap:            9px;
}

.footer-contact-link {
  display:     flex;
  align-items: center;
  gap:         8px;
  font-size:   0.9rem;
  color:       rgba(255, 255, 255, 0.60);
  font-weight: 500;
  transition:  color var(--duration) var(--ease);
}

.footer-contact-link:hover { color: var(--yellow); }

/* Nav columns */
.footer-nav-heading {
  font-family:    var(--font-body);
  font-size:      0.7rem;
  font-weight:    700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color:          rgba(255, 255, 255, 0.32);
  margin-bottom:  16px;
}

.footer-nav ul,
.footer-areas ul {
  display:        flex;
  flex-direction: column;
  gap:            10px;
}

.footer-nav a {
  font-size:  0.9rem;
  color:      rgba(255, 255, 255, 0.55);
  transition: color var(--duration) var(--ease);
}

.footer-nav a:hover { color: var(--white); }

.footer-areas li {
  font-size: 0.875rem;
  color:     rgba(255, 255, 255, 0.42);
}

/* Footer bottom bar */
.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.footer-bottom-inner {
  display:         flex;
  flex-wrap:       wrap;
  justify-content: space-between;
  align-items:     center;
  gap:             12px;
  padding-top:     20px;
  padding-bottom:  20px;
}

.footer-bottom p {
  font-size: 0.8rem;
  color:     rgba(255, 255, 255, 0.28);
  max-width: 100%;
}

.footer-legal {
  display: flex;
  gap:     20px;
}

.footer-legal a {
  font-size:  0.8rem;
  color:      rgba(255, 255, 255, 0.28);
  transition: color var(--duration) var(--ease);
}

.footer-legal a:hover { color: rgba(255, 255, 255, 0.65); }

/* =============================================
   MOBILE NAVIGATION (max 767px)
   ============================================= */
@media (max-width: 767px) {

  /* Show hamburger */
  .hamburger { display: flex; }

  /* Collapse phone label on very small screens */
  @media (max-width: 399px) {
    .btn-phone-label { display: none; }
  }

  /* Slide-down mobile nav */
  .main-nav {
    position:   fixed;
    top:        72px;
    left:       0;
    right:      0;
    background: var(--white);
    border-bottom: 1px solid var(--border);
    padding:    14px var(--container-px) 24px;
    transform:  translateY(-105%);
    opacity:    0;
    visibility: hidden;
    transition: transform 0.32s var(--ease),
                opacity   0.32s var(--ease),
                visibility 0.32s;
    z-index:    190;
    box-shadow: var(--shadow-md);
  }

  .main-nav.open {
    transform:  translateY(0);
    opacity:    1;
    visibility: visible;
  }

  .nav-links {
    flex-direction: column;
    align-items:    stretch;
    gap:            4px;
  }

  .nav-links a {
    display:   block;
    padding:   12px 16px;
    font-size: 1rem;
    width:     100%;
  }

  /* Rating source layout adjustment */
  .rating-source {
    border-left:    none;
    border-top:     1px solid var(--border);
    padding-left:   0;
    padding-top:    12px;
    width:          100%;
    justify-content: center;
  }
}

/* Show nav normally on desktop */
@media (min-width: 768px) {
  .hamburger { display: none; }
}

/* =============================================
   PRINT STYLES
   ============================================= */
@media print {
  .site-header,
  .hero,
  .gallery-section,
  .final-cta,
  .hamburger,
  .header-actions { display: none; }

  body { font-size: 12pt; color: #000; }
  a    { color: #000; text-decoration: underline; }
}
