:root {
  --green: #2f6b3a;
  --green-dark: #1f4a28;
  --green-light: #e8f1e9;
  --cream: #f6f4ec;
  --ink: #23302a;
}

html { font-size: 15px; position: relative; min-height: 100%; }
@media (min-width: 768px) { html { font-size: 16px; } }

body {
  font-family: "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
  color: var(--ink);
  line-height: 1.65;
}

h1, h2, h3, h4, h5 { font-weight: 700; letter-spacing: -.01em; color: var(--green-dark); }
a { color: var(--green); }
a:hover { color: var(--green-dark); }

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus {
  box-shadow: 0 0 0 .15rem #fff, 0 0 0 .3rem rgba(47,107,58,.45);
}

/* Top bar */
.topbar { background: var(--green-dark); color: #dbe8dc; font-size: .85rem; padding: .4rem 0; }
.topbar a { color: #fff; text-decoration: none; }
.topbar a:hover { text-decoration: underline; }

/* Navigation */
.main-nav { padding: .6rem 0; box-shadow: 0 2px 12px rgba(0,0,0,.06); }
.navbar-brand { display: flex; align-items: center; gap: .6rem; }
.brand-mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2.5rem; height: 2.5rem; border-radius: 50%;
  background: var(--green-light); font-size: 1.3rem;
}
.brand-text { display: flex; flex-direction: column; line-height: 1.1; font-weight: 700; color: var(--green-dark); font-size: 1.2rem; }
.brand-text small { font-weight: 500; font-size: .7rem; letter-spacing: .15em; text-transform: uppercase; color: #6b7a70; }
.main-nav .nav-link { color: var(--ink); font-weight: 500; padding: .5rem .9rem; border-radius: .4rem; }
.main-nav .nav-link:hover, .main-nav .nav-link.active { color: var(--green); background: var(--green-light); }

/* Buttons */
.btn-green { background: var(--green); color: #fff; border: 0; font-weight: 600; padding: .55rem 1.2rem; border-radius: .4rem; }
.btn-green:hover { background: var(--green-dark); color: #fff; }
.btn-outline-success { border-color: var(--green); color: var(--green); font-weight: 600; }
.btn-outline-success:hover, .btn-outline-success.active { background: var(--green); border-color: var(--green); color: #fff; }

/* Hero */
.hero {
  background: linear-gradient(135deg, rgba(20,50,25,.92), rgba(47,107,58,.82)), var(--green-dark);
  color: #fff; padding: 7rem 0 6.5rem; text-align: center; position: relative;
}
.hero h1 { color: #fff; font-weight: 800; font-size: clamp(2.2rem, 5vw, 3.6rem); }
.hero .lead { max-width: 40rem; margin: 1rem auto 2rem; color: #e3eee5; }
.hero .btn-lg { padding: .8rem 1.8rem; }

/* Sections */
.section { padding: 4.5rem 0; }
.section-alt { background: var(--cream); }
.section h1, .section h2 { position: relative; padding-bottom: .9rem; margin-bottom: 1.5rem; }
.section h1::after, .section h2::after {
  content: ""; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
  width: 3.5rem; height: 3px; background: var(--green); border-radius: 2px;
}

/* Seasons */
.season-badge { display: inline-block; margin-bottom: 1.2rem; padding: .4rem 1.1rem; border-radius: 2rem; background: rgba(255,255,255,.15); border: 1px solid rgba(255,255,255,.4); font-weight: 600; letter-spacing: .03em; }
.hero { padding-bottom: 9rem; }
.season-feature { margin-top: -5.5rem; position: relative; z-index: 2; padding-bottom: 3rem; }
.season-featured { box-shadow: 0 18px 45px rgba(0,0,0,.18); border-left-width: 0; border-top: 6px solid var(--season); background: #fff; margin-bottom: 0; }
.season-featured .season-header h2 { font-size: 1.9rem; }
.season-kicker { text-transform: uppercase; letter-spacing: .12em; font-weight: 700; color: var(--season); }
.season-featured .service-card { background: var(--season-bg); border-color: transparent; }
.season-featured .service-icon { background: #fff; }
.season-block { margin-bottom: 3rem; padding: 1.75rem; border-radius: 1rem; border-left: 6px solid var(--season, var(--green)); background: var(--season-bg, var(--cream)); }
.season-spring { --season: #6aa84f; --season-bg: #f1f8ec; }
.season-summer { --season: #e0a800; --season-bg: #fff9e6; }
.season-autumn { --season: #c0662b; --season-bg: #fdf1e8; }
.season-winter { --season: #3b82b6; --season-bg: #eaf4fb; }
.season-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.season-header h2 { margin: 0; padding: 0; color: var(--season); }
.season-header h2::after { display: none; }
.season-header p { margin: 0; color: #5b6a60; }
.season-icon { font-size: 2.5rem; line-height: 1; }

/* Service cards */
.service-card { border: 1px solid #e6ebe7; border-radius: .75rem; height: 100%; transition: transform .2s, box-shadow .2s; }
.service-card:hover { transform: translateY(-4px); box-shadow: 0 10px 24px rgba(31,74,40,.12); }
.service-card .card-body { padding: 1.75rem; }
.service-icon {
  width: 3.5rem; height: 3.5rem; border-radius: .75rem; background: var(--green-light);
  display: flex; align-items: center; justify-content: center; font-size: 1.7rem;
}

/* Gallery */
.gallery-item { position: relative; overflow: hidden; border-radius: .75rem; cursor: pointer; aspect-ratio: 4/3; background: #dfe5e0; box-shadow: 0 2px 10px rgba(0,0,0,.08); }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s; }
.gallery-item:hover img { transform: scale(1.07); }
.gallery-caption {
  position: absolute; inset: auto 0 0 0; padding: 1.5rem .9rem .6rem; color: #fff; font-size: .9rem;
  background: linear-gradient(transparent, rgba(0,0,0,.7)); opacity: 0; transition: opacity .25s;
}
.gallery-item:hover .gallery-caption { opacity: 1; }

/* Contact */
.contact-card { background: #fff; border: 1px solid #e6ebe7; border-radius: .75rem; padding: 2rem 1.5rem; height: 100%; transition: box-shadow .2s; }
.contact-card:hover { box-shadow: 0 10px 24px rgba(31,74,40,.12); }
.contact-card .icon {
  width: 3.5rem; height: 3.5rem; margin: 0 auto; border-radius: 50%; background: var(--green-light);
  display: flex; align-items: center; justify-content: center; font-size: 1.6rem;
}
.contact-card a { text-decoration: none; font-weight: 500; }

/* Footer */
.site-footer { background: var(--green-dark); color: #cddbd0; padding: 3.5rem 0 1.5rem; margin-top: 0; }
.site-footer h5 { color: #fff; font-size: 1.05rem; margin-bottom: 1rem; }
.site-footer a { color: #cddbd0; text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,.15); margin-top: 2.5rem; padding-top: 1.2rem; font-size: .85rem; text-align: center; }
