/* Extra homepage sections. Load after home-animations.css */
.home-story-pair {
  padding: clamp(40px, 5vw, 68px) 0;
  background: #efe6d5;
}
.home-story-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: clamp(18px, 2.4vw, 32px);
}
.home-story-card,
.home-growth-card {
  min-width: 0;
  overflow: hidden;
  border: 1px solid rgba(20, 35, 26, 0.08);
  border-radius: 28px;
  background: #f8f3e9;
  box-shadow: 0 18px 44px -28px rgba(13, 28, 19, 0.3);
}
.home-story-card {
  display: flex;
  flex-direction: column;
}
.home-story-card > img {
  display: block;
  flex: 0 0 clamp(180px, 18vw, 240px);
  width: 100%;
  height: clamp(180px, 18vw, 240px);
  object-fit: cover;
}
.home-story-copy {
  flex: 1;
  padding: clamp(20px, 2.4vw, 30px);
  background: #687a35;
  color: #f8f3e9;
}
.home-story-copy h2,
.home-growth-card h2 {
  margin: 8px 0 0;
  font-size: clamp(27px, 2.5vw, 36px);
  line-height: 1.12;
  letter-spacing: -0.04em;
}
.home-story-copy h2 em,
.home-growth-card h2 em { color: var(--olive); font-style: italic; }
.home-story-copy h2 { color: #fffdf6; }
.home-story-copy h2 em { color: #d9e59a; }
.home-story-copy .service-kicker { color: #e3edaa; }
.home-story-copy > p:not(.service-kicker),
.home-growth-card .growth-copy > p:not(.service-kicker) {
  margin-top: 14px;
  color: var(--muted);
  line-height: 1.7;
}
.home-story-copy > p:not(.service-kicker) { color: rgba(255, 253, 246, 0.86); }
.home-story-copy .btn { margin-top: 20px; }
.home-growth-card {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: clamp(22px, 2.8vw, 36px);

  background: #10271d;

  color: #f2ead8;
}
.home-growth-card::before {
  position: absolute;
  z-index: -1;
  right: -12%;
  bottom: -28%;
  width: 90%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(129, 152, 71, 0.2), transparent 68%);
  content: "";
  pointer-events: none;
  animation: garden-glow 7s ease-in-out infinite alternate;
}
.home-growth-card > * { position: relative; z-index: 1; }
.home-growth-card > .canopy-art {
  position: absolute;
  z-index: 0;
  inset: 0 0 auto;
  width: 100%;
  height: 180px;
  overflow: visible;
  opacity: 0.38;
  pointer-events: none;
}
.canopy-leaves { fill: #a2b75b; transform-box: fill-box; transform-origin: 50% 0; }
.canopy-left { animation: canopy-drift-left 8s ease-in-out infinite alternate; }
.canopy-right { animation: canopy-drift-right 9s ease-in-out infinite alternate; }
.home-growth-card .service-kicker { color: #c9d68a; }
.home-growth-card h2 em { color: #c9d68a; }
.home-growth-card .growth-copy > p:not(.service-kicker) { color: rgba(242, 234, 216, 0.78); }
.growth-note {
  display: inline-block;
  margin-top: 18px;
  color: #c9d68a;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.grass-art {
  display: block;
  width: 100%;
  max-height: 210px;
  height: 190px;
  margin: 12px auto -8px;
  overflow: visible;
}
.grass-ground { fill: #334b2c; stroke: #82934a; stroke-width: 3; }
.grass-stems path { fill: none; stroke: #879d47; stroke-width: 9; stroke-linecap: round; }
.grass-blades {
  transform-box: fill-box;
  transform-origin: 50% 90%;
  animation: grass-sway 7s ease-in-out infinite alternate;
}
.grass-blades path { fill: #819847; stroke: #a6b75e; stroke-width: 1.5; }
.grass-blades path:nth-child(2n) { fill: #617d3d; stroke: #819847; }
.grass-blades path:nth-child(3n) { fill: #a2b75b; stroke: #bdc979; }
.grass-blades path {
  transform-box: fill-box;
  transform-origin: 50% 100%;
  animation: leaf-sway 3.8s ease-in-out infinite alternate;
}
.grass-blades path:nth-child(2n) { animation-delay: -1.2s; animation-duration: 4.6s; }
.grass-blades path:nth-child(3n) { animation-delay: -2s; animation-duration: 5.2s; }
.grass-sparks circle {
  fill: #d5e88a;
  filter: drop-shadow(0 0 5px rgba(213, 232, 138, 0.8));
  animation: spark-float 3.2s ease-in-out infinite;
}
.grass-sparks circle:nth-child(2n) { animation-delay: -1.5s; }
.grass-sparks circle:nth-child(3n) { animation-delay: -2.4s; }
@keyframes grass-sway {
  from { transform: rotate(-3deg); }
  to { transform: rotate(3deg); }
}
@keyframes leaf-sway {
  from { transform: rotate(-2.5deg); }
  to { transform: rotate(2.5deg); }
}
@keyframes garden-glow {
  from { opacity: 0.45; transform: scale(0.92); }
  to { opacity: 1; transform: scale(1.08); }
}
@keyframes spark-float {
  0%, 100% { opacity: 0.2; transform: translateY(8px) scale(0.75); }
  50% { opacity: 1; transform: translateY(-10px) scale(1.15); }
}
@keyframes canopy-drift-left {
  from { transform: translate(0, -4px) rotate(-2deg); }
  to { transform: translate(12px, 9px) rotate(4deg); }
}
@keyframes canopy-drift-right {
  from { transform: translate(0, 5px) rotate(3deg); }
  to { transform: translate(-14px, -5px) rotate(-4deg); }
}
@media (max-width: 760px) {
  .home-story-grid { grid-template-columns: minmax(0, 1fr); }
  .home-story-card > img { height: clamp(190px, 52vw, 280px); }
  .home-growth-card { min-height: 360px; }
}
@media (prefers-reduced-motion: reduce) {
  .grass-blades,
  .grass-blades path,
  .grass-sparks circle,
  .canopy-left,
  .canopy-right,
  .home-growth-card::before { animation: none; }
}

body.home .hero-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

body.home .hero-cards article {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 420px;
  padding: 36px 32px 24px;
  overflow: hidden;
  position: relative;
  isolation: isolate;
  border-top: 2px solid rgba(245, 239, 227, .72);
}
body.home .hero-cards article::before {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 0 0 auto;
  height: 132px;
  border-radius: inherit;
  background: linear-gradient(180deg, rgba(245, 239, 227, .12), rgba(245, 239, 227, 0));
  pointer-events: none;
}
body.home .hero-cards article > * {
  position: relative;
  z-index: 1;
}
body.home .hero-card-photo {
  display: block;
  width: 100%;
  height: 220px;
  margin-top: auto;
  border-radius: 18px;
  object-fit: cover;
  object-position: center;
}
body.home .hero-cards article > p:not(.service-kicker) {
  margin-bottom: 22px;
}
body.home .hero-cards article h2 {
  font-size: clamp(24px, 2.5vw, 34px);
}
body.home .hero-cards article p:not(.service-kicker) {
  line-height: 1.6;
}

/* Give the services section a clear content edge and balanced visual weight. */
body.home #home-services {
  width: 100%;
  max-width: 1840px;
  margin-inline: auto;
  padding: clamp(48px, 4vw, 68px) clamp(20px, 3.2vw, 60px) 0;
}
body.home #home-services > h2 {
  max-width: 22ch;
  margin: 10px 0 8px;
  font-size: clamp(36px, 3.5vw, 58px);
  line-height: 1.08;
  letter-spacing: -0.045em;
}
body.home #home-services .home-services-intro {
  max-width: 58ch;
  margin-bottom: clamp(20px, 2.2vw, 32px);
  color: var(--muted);
  font-size: clamp(16px, 1.2vw, 19px);
  line-height: 1.65;
}
body.home #home-services .home-service-selector {
  grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  align-items: stretch;
  gap: clamp(20px, 3vw, 44px);
  padding: clamp(18px, 2vw, 30px);
  border-radius: clamp(22px, 2vw, 34px);
}
body.home #home-services .sv-list {
  align-self: stretch;
  padding: 2px clamp(6px, 1vw, 16px);
}
body.home #home-services .sv-btn {
  padding-block: 11px;
  gap: 12px;
}
body.home #home-services .sv-btn .ar {
  width: 34px;
  height: 34px;
}
body.home #home-services .sv-vis {
  min-height: clamp(360px, 32vw, 480px);
  border-radius: clamp(16px, 1.5vw, 26px);
}
body.home #home-services .sv-row:not(.on) .sv-btn .t {
  font-size: clamp(15px, 1.1vw, 18px);
}
body.home #home-services .sv-row.on .sv-btn .t {
  font-size: clamp(19px, 1.5vw, 23px);
}
body.home #home-services .sv-more p { padding-bottom: 8px; font-size: 13px; }
body.home #home-services .sv-more .btn { margin-bottom: 12px; }
body.home #home-services .home-services-link { margin-top: 24px; }

@media (max-width: 900px) {
  body.home #home-services {
    padding-top: 54px;
    padding-inline: clamp(18px, 4vw, 32px);
  }
  body.home #home-services .home-service-selector {
    grid-template-columns: minmax(0, 1fr);
  }
  body.home #home-services .sv-vis { min-height: clamp(280px, 54vw, 440px); }
}
@media (max-width: 640px) {
  body.home #home-services { padding: 44px 16px 0; }
  body.home #home-services > h2 { font-size: clamp(34px, 9vw, 44px); }
  body.home #home-services .home-service-selector { padding: 14px; }
  body.home #home-services .sv-vis { min-height: 260px; }
  body.home #home-services .sv-list { padding-inline: 2px; }
}

/* Keep the home header's three columns inside the viewport at wide and medium widths. */
@media (min-width: 1001px) {
  body.home > .global-header {
    grid-template-columns: minmax(210px, 0.9fr) max-content minmax(150px, 0.9fr) !important;
    column-gap: clamp(8px, 1vw, 18px) !important;
    padding-inline: clamp(24px, 3.8vw, 64px) !important;
  }
  body.home > .global-header > .nav > .l,
  body.home > .global-header .nav-service > .l {
    padding-inline: clamp(6px, 0.75vw, 11px) !important;
    font-size: clamp(12px, 0.95vw, 14px) !important;
  }
}

@media (min-width: 1001px) and (max-width: 1240px) {
  body.home > .global-header {
    grid-template-columns: minmax(0, 1fr) auto !important;
    padding: 14px clamp(24px, 4vw, 42px) !important;
  }
  body.home > .global-header > .logo { grid-column: 1; min-width: 0; }
  body.home > .global-header > .service-header-actions { grid-column: 2; grid-row: 1; }
  body.home > .global-header > .nav {
    grid-column: 1 / -1;
    position: absolute;
    top: calc(100% + 10px);
    left: 0;
    right: 0;
    z-index: 110;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    white-space: normal;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px);
    left: auto;
    right: 14px;
    width: min(380px, calc(100% - 28px));
    box-sizing: border-box;
    padding: 12px;
    border: 1px solid rgba(201, 214, 138, 0.2);
    border-radius: 18px;
    background: rgba(13, 28, 19, 0.98);
    box-shadow: 0 20px 44px rgba(0, 0, 0, 0.3);
  }
  body.home > .global-header > .nav a.l,
  body.home > .global-header > .nav .nav-service-toggle,
  body.home > .global-header > .nav .nav-service-menu a { color: #fff !important; }
  body.home > .global-header > .nav .nav-service {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 42px;
    align-items: center;
  }
  body.home > .global-header > .nav .nav-service-menu {
    position: static;
    display: none;
    grid-column: 1 / -1;
    grid-template-columns: 1fr 1fr;
    width: auto;
    margin: 0 6px 8px;
    padding: 5px;
    border: 0;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.08);
    box-shadow: none;
    opacity: 1;
    visibility: visible;
    transform: none;
  }
  body.home > .global-header > .nav .nav-service.open .nav-service-menu { display: grid; }
  body.home > .global-header > .service-header-actions > .burger { display: grid; }
  body.home > .global-header > .nav.open {
    opacity: 1;
    visibility: visible;
    transform: none;
  }
}

@media (max-width: 1000px) {
  body.home > .global-header > .nav {
    grid-column: 1 / -1;
    left: auto;
    right: 14px;
    width: min(380px, calc(100% - 28px));
    box-sizing: border-box;
  }
}

.tgi-in {
  opacity: 0;
  transform: translateY(40px);
  transition:
    opacity 0.9s var(--ease),
    transform 0.9s var(--ease);
  transition-delay: calc(var(--d, 0) * 100ms);
}
.tgi-in.on {
  opacity: 1;
  transform: none;
}
.tgi-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 36px;
}
.tgi-head h2 {
  max-width: 32ch;
  font-size: clamp(34px, 3.4vw, 56px);
  line-height: 1.08;
  letter-spacing: -0.045em;
}
.tgi-stats,
.tgi-steps,
.tgi-quotes,
.tgi-faq,
.tgi-contact {
  padding-top: clamp(56px, 7vw, 110px);
}
.tgi-work,
.tgi-why {
  padding-top: clamp(56px, 7vw, 110px);
}

/* stats */
.tgi-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 20px;
}
.tgi-stat {
  padding: 30px 26px;
  border-radius: 26px;
  background: var(--card);
  border: 1px solid var(--line);
  transition:
    transform 0.5s var(--ease),
    background 0.5s,
    color 0.5s;
}
.tgi-stat:hover {
  transform: translateY(-8px);
  background: var(--dark);
  color: #fff;
}
.tgi-stat b {
  display: block;
  font-size: clamp(40px, 5vw, 72px);
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--olive-d);
  transition: color 0.5s;
}
.tgi-stat:hover b {
  color: var(--olive-l);
}
.tgi-stat span {
  display: block;
  margin-top: 10px;
  color: var(--muted);
  font-weight: 500;
}
.tgi-stat:hover span {
  color: #cdd8c8;
}

/* work carousel */
.tgi-track {
  display: flex;
  gap: 18px;
  width: 100%;
  max-width: 1760px;
  margin-inline: auto;
  overflow-x: auto;
  padding: 6px clamp(20px, 2vw, 36px) 24px;
  box-sizing: border-box;
  scroll-snap-type: x proximity;
  scroll-padding-inline: clamp(20px, 2vw, 36px);
  scrollbar-width: none;
  cursor: grab;
}
.tgi-track::-webkit-scrollbar {
  display: none;
}
.tgi-track.drag {
  cursor: grabbing;
  scroll-snap-type: none;
}
.tgi-track.auto-sliding { scroll-snap-type: none; scroll-behavior: auto; }
.tgi-track.loop-reset { scroll-behavior: auto !important; }
.tgi-card {
  position: relative;
  flex: 0 0 clamp(260px, 22vw, 360px);
  aspect-ratio: 4/5;
  border-radius: 28px;
  overflow: hidden;
  scroll-snap-align: start;
  color: #fff;
  text-decoration: none;
  display: flex;
  align-items: flex-end;
  background: var(--dark-2);
}
.tgi-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--img) center/cover;
  transition: transform 1.2s var(--ease);
}
.tgi-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 45%, rgba(13, 28, 19, 0.85));
}
.tgi-card:hover::before {
  transform: scale(1.12);
}
.tgi-card span {
  position: relative;
  z-index: 1;
  padding: 22px;
  font-weight: 700;
  font-size: 20px;
  transform: translateY(8px);
  transition: transform 0.5s var(--ease);
}
.tgi-card:hover span {
  transform: none;
}
.tgi-hint {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  color: var(--muted);
  font-size: 14px;
}
.tgi-hint button {
  flex: none;
  padding: 7px 13px;
  border: 1px solid rgba(20, 35, 26, 0.18);
  border-radius: 999px;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 12px;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
}
.tgi-hint button:hover,
.tgi-hint button:focus-visible { background: var(--dark); color: #fff; }

/* steps */
.tgi-flow {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 24px;
  position: relative;
}
.tgi-flow li {
  position: relative;
  padding: 26px;
  border-radius: 24px;
  background: var(--card);
  transition:
    transform 0.5s var(--ease),
    box-shadow 0.5s;
}
.tgi-flow li:hover {
  transform: translateY(-8px);
  box-shadow: 0 28px 50px -26px rgba(13, 28, 19, 0.5);
}
.tgi-flow i {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--olive);
  color: #fff;
  font-style: normal;
  font-weight: 800;
  margin-bottom: 14px;
  transition: transform 0.6s var(--ease);
}
.tgi-flow li:hover i {
  transform: rotate(360deg) scale(1.1);
}
.tgi-flow h3 {
  font-size: 22px;
  margin-bottom: 6px;
}
.tgi-flow p {
  color: var(--muted);
}

/* why */
.tgi-why {
  background: var(--dark);
  color: #fff;
  margin-top: clamp(56px, 7vw, 110px);
  padding-bottom: clamp(56px, 7vw, 110px);
  border-radius: 40px;
}
.tgi-why .service-kicker {
  color: var(--olive-l);
}
.tgi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 20px;
}
.tgi-grid article {
  padding: 28px;
  border-radius: 24px;
  background: var(--dark-2);
  border: 1px solid rgba(255, 255, 255, 0.08);
  position: relative;
  overflow: hidden;
  transition:
    transform 0.5s var(--ease),
    border-color 0.5s;
}
.tgi-grid article::before {
  content: "";
  position: absolute;
  inset: auto -30% -60% auto;
  width: 220px;
  height: 220px;
  border-radius: 50%;
  background: radial-gradient(
    circle,
    rgba(201, 214, 138, 0.3),
    transparent 65%
  );
  transition: transform 0.8s var(--ease);
}
.tgi-grid article:hover {
  transform: translateY(-8px);
  border-color: var(--olive);
}
.tgi-grid article:hover::before {
  transform: translate(-40px, -40px) scale(1.4);
}
.tgi-grid h3 {
  margin-bottom: 8px;
  font-size: 20px;
}
.tgi-grid p {
  color: #c3cfbf;
}

/* quotes */
.tgi-q-wrap {
  position: relative;
  min-height: 230px;
  max-width: 900px;
}
.tgi-q-wrap blockquote {
  position: absolute;
  inset: 0 0 40px;
  opacity: 0;
  visibility: hidden;
  transform: translateX(40px);
  transition:
    opacity 0.7s var(--ease),
    transform 0.7s var(--ease);
  pointer-events: none;
}
.tgi-q-wrap blockquote.on {
  opacity: 1;
  visibility: visible;
  transform: none;
  pointer-events: auto;
}
.tgi-q-wrap p {
  font-size: clamp(22px, 3vw, 38px);
  line-height: 1.3;
  font-weight: 600;
  letter-spacing: -0.01em;
}
.tgi-q-wrap cite {
  display: block;
  margin-top: 16px;
  color: var(--muted);
  font-style: normal;
}
.tgi-dots {
  position: absolute;
  left: 0;
  bottom: 0;
  display: flex;
  gap: 10px;
}
.tgi-dots button {
  width: 12px;
  height: 12px;
  border-radius: 99px;
  border: 0;
  background: var(--line);
  cursor: pointer;
  transition:
    width 0.4s var(--ease),
    background 0.4s;
}
.tgi-dots button.on {
  width: 38px;
  background: var(--olive);
}
.tgi-quote-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(340px, 0.8fr);
  align-items: stretch;
  gap: clamp(20px, 2.5vw, 36px);
}
.tgi-quotes > .tgi-head {
  justify-content: center;
  margin-bottom: clamp(24px, 3vw, 42px);
  text-align: center;
}
.tgi-quotes > .tgi-head h2 { margin-inline: auto; }
.tgi-quote-layout .tgi-q-wrap {
  width: 100%;
  max-width: none;
  min-height: 380px;
  align-self: stretch;
  padding: clamp(30px, 4vw, 54px);
  border: 1px solid #d8ceb8;
  border-radius: 28px;
  background: #f7f1e5;
  box-shadow: 0 18px 44px -34px rgba(13, 28, 19, 0.38);
}
.tgi-quote-layout .tgi-q-wrap blockquote {
  inset: clamp(30px, 4vw, 54px) clamp(30px, 4vw, 54px) 76px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.tgi-quotes .tgi-quote-layout .tgi-q-wrap blockquote {
  right: clamp(30px, 4vw, 54px);
  left: clamp(30px, 4vw, 54px);
}
.tgi-quote-layout .tgi-q-wrap blockquote::before {
  content: "“";
  display: block;
  margin-bottom: 2px;
  color: var(--olive);
  font-family: Georgia, serif;
  font-size: 52px;
  line-height: 0.7;
}
.tgi-quote-layout .tgi-q-wrap p {
  font-size: clamp(22px, 2.35vw, 36px);
  line-height: 1.28;
}
.tgi-quote-layout .tgi-q-wrap cite { font-size: 14px; }
.tgi-quote-layout .tgi-dots { left: clamp(30px, 4vw, 54px); bottom: 30px; }
.tgi-quote-layout .quote-life-card {
  min-height: 380px;
}
.quote-life-card {
  position: relative;
  isolation: isolate;
  display: flex;
  min-width: 0;
  min-height: 380px;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  padding: 24px 28px 26px;
  border: 1px solid rgba(201, 214, 138, 0.2);
  border-radius: 28px;
  background: radial-gradient(ellipse at 50% 42%, #1c412b 0%, #10271d 58%, #0c2017 100%);
  color: #f4ebdc;
  box-shadow: 0 24px 56px -38px rgba(13, 28, 19, 0.6);
}
.quote-life-card::before {
  position: absolute;
  z-index: -1;
  inset: -45% -25% auto;
  height: 85%;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(155, 182, 81, 0.2), transparent 68%);
  content: "";
  animation: life-card-glow 7s ease-in-out infinite alternate;
}
.quote-life-card::after {
  position: absolute;
  top: 0;
  left: -55%;
  width: 38%;
  height: 1px;
  background: linear-gradient(90deg, transparent, #d5e88a, transparent);
  content: "";
  animation: life-card-shimmer 6s ease-in-out infinite;
}
.quote-life-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: #d0df8a;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.12em;
}
.quote-life-meta span { display: inline-flex; align-items: center; gap: 9px; }
.quote-life-meta i {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #b8d568;
  box-shadow: 0 0 0 0 rgba(184, 213, 104, 0.55);
  animation: life-status-pulse 2s ease-out infinite;
}
.quote-life-meta b { color: rgba(244, 235, 220, 0.5); font-size: 10px; }
.quote-life-art { display: block; width: min(100%, 360px); height: 205px; margin: 4px auto 0; overflow: visible; }
.life-orbit {
  fill: none;
  stroke: rgba(180, 204, 105, 0.32);
  stroke-width: 1.2;
  stroke-dasharray: 3 7;
  transform-box: fill-box;
  transform-origin: center;
}
.life-orbit-a { animation: life-orbit-spin 24s linear infinite; }
.life-orbit-b { stroke: rgba(213, 232, 138, 0.24); stroke-dasharray: 1 8; animation: life-orbit-spin 17s linear infinite reverse; }
.life-core { fill: #d4e889; filter: drop-shadow(0 0 12px rgba(212, 232, 137, 0.82)); animation: life-core-breathe 3s ease-in-out infinite; }
.life-stem { fill: none; stroke: #94ad4c; stroke-width: 5; stroke-linecap: round; }
.life-sprout { transform-box: fill-box; transform-origin: 50% 100%; animation: life-sprout-sway 5s ease-in-out infinite alternate; }
.life-leaf { fill: #718d3e; stroke: #a5ba62; stroke-width: 1.2; transform-box: fill-box; transform-origin: 50% 100%; animation: life-leaf-sway 4s ease-in-out infinite alternate; }
.life-leaf-light { fill: #a2b85b; stroke: #c3d578; }
.life-leaf:nth-of-type(3n) { animation-delay: -1.6s; animation-duration: 5.2s; }
.life-leaf:nth-of-type(2n) { animation-delay: -0.8s; animation-duration: 4.6s; }
.life-fireflies circle { fill: #d5e88a; filter: drop-shadow(0 0 5px rgba(213, 232, 138, 0.85)); animation: life-firefly 3.5s ease-in-out infinite; }
.life-fireflies circle:nth-child(2n) { animation-delay: -1.4s; }
.life-fireflies circle:nth-child(3n) { animation-delay: -2.5s; }
.quote-life-copy h3 { margin: 0; font-size: clamp(21px, 2vw, 27px); line-height: 1.2; letter-spacing: -0.03em; }
.quote-life-copy h3 em { color: #c9d978; font-weight: 500; }
.quote-life-copy p { margin-top: 8px; color: rgba(244, 235, 220, 0.7); font-size: 13px; line-height: 1.55; }
.quote-life-tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 14px; }
.quote-life-tags span { padding: 5px 9px; border: 1px solid rgba(201, 214, 138, 0.2); border-radius: 99px; color: #d0df8a; font-size: 10px; }
@keyframes life-orbit-spin { to { transform: rotate(360deg); } }
@keyframes life-sprout-sway { from { transform: rotate(-2deg) translateY(2px); } to { transform: rotate(2deg) translateY(-3px); } }
@keyframes life-leaf-sway { from { transform: rotate(-3deg); } to { transform: rotate(3deg); } }
@keyframes life-firefly { 0%, 100% { opacity: 0.18; transform: translateY(5px) scale(0.65); } 50% { opacity: 1; transform: translateY(-8px) scale(1.25); } }
@keyframes life-core-breathe { 0%, 100% { opacity: 0.72; transform: scale(0.88); } 50% { opacity: 1; transform: scale(1.12); } }
@keyframes life-status-pulse { 70%, 100% { box-shadow: 0 0 0 8px rgba(184, 213, 104, 0); } }
@keyframes life-card-glow { from { opacity: 0.45; transform: translateY(-8px) scale(0.9); } to { opacity: 1; transform: translateY(12px) scale(1.08); } }
@keyframes life-card-shimmer { 0%, 15% { left: -55%; } 55%, 100% { left: 125%; } }
@media (max-width: 900px) {
  .tgi-quote-layout { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .tgi-quote-layout .tgi-q-wrap { min-height: 300px; }
  .quote-life-card { min-height: 350px; }
}
@media (max-width: 640px) {
  .tgi-quote-layout .tgi-q-wrap { min-height: 340px; padding: 26px; }
  .tgi-quotes .tgi-quote-layout .tgi-q-wrap blockquote { inset: 26px 26px 68px; }
  .tgi-quote-layout .tgi-dots { left: 26px; bottom: 24px; }
  .quote-life-card { min-height: 340px; padding: 20px; }
  .quote-life-art { height: 185px; }
}
@media (prefers-reduced-motion: reduce) {
  .quote-life-card::before,
  .quote-life-card::after,
  .quote-life-meta i,
  .life-orbit,
  .life-core,
  .life-sprout,
  .life-leaf,
  .life-fireflies circle { animation: none; }
}

/* faq */
.tgi-acc {
  max-width: 900px;
}
.tgi-acc details {
  border-bottom: 1px solid var(--line);
  padding: 6px 0;
}
.tgi-acc summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 0;
  font-weight: 700;
  font-size: clamp(17px, 1.6vw, 22px);
  transition:
    color 0.3s,
    padding 0.3s;
}
.tgi-acc summary::-webkit-details-marker {
  display: none;
}
.tgi-acc summary::after {
  content: "+";
  font-size: 28px;
  line-height: 1;
  color: var(--olive-d);
  transition: transform 0.5s var(--ease);
}
.tgi-acc details[open] summary::after {
  transform: rotate(135deg);
}
.tgi-acc summary:hover {
  color: var(--olive-d);
  padding-left: 8px;
}
.tgi-acc details > div {
  overflow: hidden;
}
.tgi-acc details p {
  color: var(--muted);
  padding: 0 0 20px;
  max-width: 70ch;
  animation: accIn 0.6s var(--ease);
}
@keyframes accIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
}

/* contact strip */
.tgi-contact {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
  padding-bottom: clamp(40px, 5vw, 70px);
}
.tgi-contact p {
  color: var(--muted);
}
.tgi-links {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

/* Prevent long headings, service labels and contact details from widening home grids. */
body.home main,
body.home main > section,
body.home .wrap,
body.home .tgi-grid > *,
body.home .tgi-flow > *,
body.home .tgi-stat,
body.home .tgi-q-wrap,
body.home .foot-grid > div {
  min-width: 0;
}
body.home .sv-btn .t {
  min-width: 0;
  overflow-wrap: anywhere;
}
body.home .tgi-q-wrap blockquote {
  right: 0;
  left: 0;
  margin-inline: 0;
}
body.home .site-footer .foot-grid > div,
body.home .site-footer .foot-grid a,
body.home .site-footer .bar {
  overflow-wrap: anywhere;
}

/* Animated four-stage process cards */
body.home .tgi-steps .tgi-flow {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(14px, 1.65vw, 24px);
  align-items: stretch;
}
body.home .tgi-steps .process-step-card {
  --step-delay: calc(var(--step, 0) * 110ms);
  isolation: isolate;
  overflow: hidden;
  min-height: 310px;
  padding: clamp(22px, 2.1vw, 32px);
  border: 1px solid rgba(97, 112, 41, .24);
  border-radius: 28px 28px 48px 28px;
  background: linear-gradient(150deg, #f5eedf 0%, var(--card) 78%);
  text-align: center;
  box-shadow: 0 12px 28px -24px rgba(13, 28, 19, .6);
  transition: transform .55s var(--ease), box-shadow .55s var(--ease), border-color .4s ease;
  transition-delay: var(--step-delay);
}
body.home .tgi-steps .process-step-card::before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 180px;
  height: 180px;
  top: -112px;
  right: -80px;
  border: 1px solid rgba(125, 140, 60, .2);
  border-radius: 50%;
  box-shadow: 0 0 0 16px rgba(125, 140, 60, .045), 0 0 0 34px rgba(125, 140, 60, .035);
  transition: transform .7s var(--ease);
}
body.home .tgi-steps .process-step-card:hover {
  transform: translateY(-9px);
  border-color: rgba(97, 112, 41, .55);
  box-shadow: 0 24px 42px -26px rgba(13, 28, 19, .48);
}
body.home .tgi-steps .process-step-card:hover::before { transform: scale(1.28); }
body.home .tgi-steps .process-step-no {
  display: block;
  margin-bottom: 18px;
  color: var(--olive-d);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .16em;
}
body.home .tgi-steps .process-icon {
  position: relative;
  display: grid;
  place-items: center;
  width: 76px;
  height: 76px;
  margin: 0 auto 22px;
  border: 1px solid rgba(201, 214, 138, .36);
  border-radius: 50%;
  background: radial-gradient(circle at 32% 26%, #31583a, var(--dark) 72%);
  color: var(--olive-l);
  box-shadow: 0 10px 25px -14px rgba(13, 28, 19, .75), 0 0 0 7px rgba(125, 140, 60, .1);
  animation: process-bob 4.2s ease-in-out infinite;
  animation-delay: calc(var(--step, 0) * -0.65s);
}
body.home .tgi-steps .process-icon::after {
  content: "";
  position: absolute;
  inset: -8px;
  border: 1px dashed rgba(97, 112, 41, .55);
  border-radius: 50%;
  animation: process-orbit 18s linear infinite;
}
body.home .tgi-steps .process-icon svg {
  width: 39px;
  height: 39px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform .5s var(--ease), color .4s ease;
}
body.home .tgi-steps .process-step-card:hover .process-icon svg { transform: scale(1.12) rotate(-5deg); color: #e0ec9e; }
body.home .tgi-steps .process-step-card h3 { margin-bottom: 10px; font-size: clamp(18px, 1.45vw, 22px); }
body.home .tgi-steps .process-step-card p { max-width: 30ch; margin-inline: auto; color: var(--muted); line-height: 1.65; }
body.home .tgi-steps .process-card-image {
  display: block;
  width: calc(100% + 24px);
  max-width: none;
  height: clamp(150px, 14vw, 205px);
  margin: 20px -12px -12px;
  border: 1px solid rgba(97, 112, 41, .22);
  border-radius: 16px;
  object-fit: cover;
  object-position: center 58%;
  box-shadow: 0 8px 20px -15px rgba(13, 28, 19, .65);
  transition: transform .6s var(--ease), filter .6s ease;
}
body.home .tgi-steps .process-step-card:hover .process-card-image { transform: scale(1.025); filter: saturate(1.08); }
@keyframes process-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes process-orbit { to { transform: rotate(360deg); } }

@media (max-width: 1000px) {
  body.home .tgi-steps .tgi-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  body.home .tgi-steps .tgi-flow { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  body.home .tgi-steps .process-step-card { min-height: 0; padding: 24px 22px 28px; }
  body.home .tgi-steps .process-card-image { width: 100%; height: 210px; margin: 20px auto 0; }
}
@media (prefers-reduced-motion: reduce) {
  body.home .tgi-steps .process-icon,
  body.home .tgi-steps .process-icon::after { animation: none; }
  body.home .tgi-steps .process-step-card,
  body.home .tgi-steps .process-icon svg,
  body.home .tgi-steps .process-card-image { transition: none; }
}
body.home .tgi-work { overflow-x: clip; }
body.home { overflow-x: clip; }
/* Tighter vertical rhythm keeps the homepage from reading as large beige gaps. */
body.home .sec { padding-top: clamp(34px, 3.6vw, 58px); }
body.home .home-story-pair { padding-block: clamp(28px, 3.5vw, 48px); }
body.home .tgi-stats,
body.home .tgi-steps,
body.home .tgi-quotes,
body.home .tgi-faq,
body.home .tgi-contact { padding-top: clamp(38px, 4vw, 66px); }
body.home .tgi-work { padding-top: clamp(38px, 4vw, 66px); padding-bottom: clamp(24px, 3vw, 42px); }
body.home .tgi-why {
  margin-top: clamp(38px, 4vw, 66px);
  padding-top: clamp(38px, 4vw, 66px);
  padding-bottom: clamp(38px, 4vw, 66px);
}
body.home .tgi-head { margin-bottom: clamp(20px, 2.5vw, 30px); }
body.home #home-services { padding-top: clamp(34px, 3.6vw, 58px); }
.home-before-after {
  width: 100%;
  max-width: 1460px;
  box-sizing: border-box;
}
.home-before-after .before-after-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(18px, 2vw, 28px);
}
.home-before-after .ba-frame {
  aspect-ratio: 1.68 / 1;
  border: 1px solid rgba(20, 35, 26, 0.12);
  border-radius: 22px;
}
.home-before-after .ba-card {
  padding: 12px;
  border: 1px solid rgba(20, 35, 26, 0.08);
  border-radius: 26px;
  background: #f7f1e5;
  box-shadow: 0 16px 36px -30px rgba(13, 28, 19, 0.45);
}
.home-before-after .ba-caption { padding: 14px 6px 4px; }
.home-before-after .ba-caption p { max-width: 34ch; }
.home-before-after-intro {
  max-width: 34ch;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.6;
}
@media (max-width: 700px) {
  .home-before-after { padding-inline: 20px; }
  .home-before-after .before-after-grid { grid-template-columns: minmax(0, 1fr); }
  .home-before-after .ba-frame { aspect-ratio: 1.45 / 1; }
  .home-before-after .tgi-head { align-items: flex-start; }
}
body.home .site-footer .bar {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 8px 16px;
}

@media (max-width: 640px) {
  body.home .tgi-grid,
  body.home .tgi-flow,
  body.home .tgi-stats {
    grid-template-columns: minmax(0, 1fr);
  }
  body.home .hero-cards article { min-height: 390px; padding: 28px 24px 20px; }
  body.home .hero-card-photo { height: 200px; }
  body.home .tgi-card { flex-basis: min(78vw, 320px); }
  body.home .tgi-q-wrap { min-height: 270px; }
}

@media (prefers-reduced-motion: reduce) {
  .tgi-in {
    opacity: 1;
    transform: none;
  }
  .tgi-q-wrap blockquote {
    transition: none;
  }
}
/* Keep the homepage header and copy layered over a full-viewport video hero. */
body.home {
  padding-top: 0 !important;
}
body.home > .global-header {
  position: absolute !important;
  inset: 0 0 auto !important;
  z-index: 30 !important;
  min-height: 88px;
  color: #fff !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}
body.home > .global-header .logo,
body.home > .global-header .nav a.l,
body.home > .global-header .nav-service-toggle {
  color: #fff !important;
}
body.home > .global-header .logo .lm img {
  filter: brightness(0) invert(1);
}
body.home .hero {
  min-height: 100svh;
  padding: 0;
}
body.home .hero-card {
  min-height: 100svh;
  min-height: 100vh;
  padding: clamp(112px, 15vh, 168px) clamp(24px, 5.6vw, 96px) clamp(56px, 9vh, 104px);
  border-radius: 0;
}
body.home .hero-bg {
  inset: 0;
  width: 100%;
  height: 100%;
  animation: none;
  translate: none;
}
body.home .hero-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
body.home .hero-grid {
  margin-block: auto;
}
@media (max-width: 640px) {
  body.home > .global-header { min-height: 76px; }
  body.home .hero-card { min-height: 100svh; padding: 112px 22px 52px; }
}
