/* Homepage visual refinement: minimal, bright, premium and fluid. */
.home {
  --home-ivory: #fffdf8;
  --home-emerald: #08785a;
  --home-deep: #102b25;
  background:
    radial-gradient(circle at 8% 2%, rgba(229, 190, 111, .11), transparent 25%),
    var(--home-ivory);
}

.home .scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 120;
  width: 100%;
  height: 3px;
  pointer-events: none;
  transform: scaleX(0);
  transform-origin: 0 50%;
  background: linear-gradient(90deg, #c89b45, #0b8b67 62%, #69c9a8);
  box-shadow: 0 0 18px rgba(8, 120, 90, .28);
}

.home .nav {
  height: 78px;
  border-bottom: 1px solid rgba(16, 43, 37, .07);
  background: rgba(255, 253, 248, .78);
  box-shadow: 0 10px 38px rgba(33, 66, 56, .035);
}

.home .brand {
  letter-spacing: .13em;
}

.home .navlinks {
  gap: 32px;
}

.home .navcta {
  padding: 11px 22px;
  background: linear-gradient(135deg, #173d34, #08785a);
  box-shadow: 0 10px 26px rgba(8, 120, 90, .16);
}

.home .hero {
  min-height: calc(100vh - 78px);
  grid-template-columns: 47% 53%;
  position: relative;
  isolation: isolate;
  background:
    radial-gradient(circle at 48% 46%, rgba(255, 255, 255, .96), transparent 25%),
    linear-gradient(110deg, #fffdf8 0 45%, #f7f3e9 67%, #edf7f0 100%);
}

.home .motion-field,
.home .hero-cursor-glow {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.home .motion-field {
  z-index: 1;
  overflow: hidden;
}

.home .motion-field span {
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: var(--size);
  height: var(--size);
  border-radius: 50%;
  background: rgba(13, 142, 105, .32);
  box-shadow: 0 0 0 6px rgba(13, 142, 105, .05), 0 0 22px rgba(13, 142, 105, .22);
  animation: lingying-mote 8s ease-in-out var(--delay) infinite alternate;
}

.home .motion-field span:nth-child(3n) {
  background: rgba(200, 155, 69, .52);
  box-shadow: 0 0 0 6px rgba(200, 155, 69, .06), 0 0 22px rgba(200, 155, 69, .24);
}

.home .hero-cursor-glow {
  z-index: 1;
  opacity: 0;
  background: radial-gradient(340px circle at var(--glow-x, 72%) var(--glow-y, 38%), rgba(9, 157, 114, .16), rgba(222, 177, 84, .06) 42%, transparent 70%);
  transition: opacity .45s ease;
}

.home .hero-cursor-glow.is-active { opacity: 1; }

.home .hero::before {
  content: "";
  position: absolute;
  width: 38vw;
  height: 38vw;
  left: 34%;
  top: 8%;
  border: 1px solid rgba(183, 139, 58, .23);
  border-radius: 48% 52% 63% 37% / 42% 37% 63% 58%;
  transform: rotate(13deg);
  pointer-events: none;
  animation: lingying-orbit 18s ease-in-out infinite alternate;
}

.home .hero::after {
  content: "";
  position: absolute;
  width: 56vw;
  height: 1px;
  left: 22%;
  bottom: 17%;
  background: linear-gradient(90deg, transparent, rgba(183, 139, 58, .7), rgba(8, 120, 90, .35), transparent);
  transform: rotate(-8deg);
  filter: blur(.2px);
  pointer-events: none;
  animation: lingying-glow 5s ease-in-out infinite;
}

.home .hero-copy {
  padding: 96px 36px 88px clamp(34px, 7.2vw, 132px);
  position: relative;
  z-index: 3;
  opacity: 0;
  transform: translate3d(0, 26px, 0);
  transition: opacity .9s ease .08s, transform 1s cubic-bezier(.2, .7, .2, 1) .08s;
}

.home.home-ready .hero-copy {
  opacity: 1;
  transform: none;
}

.home .hero-copy .eyebrow {
  margin-bottom: 26px;
  color: #6a7a74;
  letter-spacing: .26em;
}

.home .hero h1 {
  max-width: 690px;
  margin-bottom: 28px;
  font-size: clamp(52px, 5.2vw, 84px);
  line-height: 1.08;
  letter-spacing: -.065em;
  font-weight: 780;
}

.home .hero-line {
  display: block;
  opacity: 0;
  transform: translate3d(0, 108%, 0) rotate(2deg);
  clip-path: inset(0 0 100% 0);
  transition: opacity .75s ease, transform 1s cubic-bezier(.18,.82,.22,1), clip-path 1s cubic-bezier(.18,.82,.22,1);
}

.home.home-ready .hero-line {
  opacity: 1;
  transform: none;
  clip-path: inset(0);
}

.home.home-ready .hero-line:nth-child(1) { transition-delay: .12s; }
.home.home-ready .hero-line:nth-child(2) { transition-delay: .25s; }
.home.home-ready .hero-line:nth-child(3) { transition-delay: .38s; }

.home .hero h1 i {
  display: inline-block;
  color: var(--home-emerald);
  font-weight: 780;
  position: relative;
}

.home .hero h1 i::after {
  content: "";
  position: absolute;
  left: 2%;
  right: -7%;
  bottom: 4px;
  height: 10px;
  border-radius: 99px;
  background: linear-gradient(90deg, rgba(8, 120, 90, .18), rgba(187, 143, 57, .16), transparent);
  z-index: -1;
}

.home .hero-copy > p {
  max-width: 560px;
  margin: 0;
  font-size: 17px;
  line-height: 1.95;
  letter-spacing: .035em;
  color: #66736f;
}

.home .hero-actions {
  margin-top: 38px;
  gap: 30px;
}

.home .hero-actions .button {
  min-width: 148px;
  padding: 15px 25px;
  background: linear-gradient(135deg, #0d8e69, #06674e);
  box-shadow: 0 18px 40px rgba(8, 120, 90, .2);
  transition: transform .35s ease, box-shadow .35s ease;
}

.home .hero-actions .button:hover {
  transform: translateY(-3px);
  box-shadow: 0 24px 48px rgba(8, 120, 90, .26);
}

.home .hero-visual {
  min-height: calc(100vh - 78px);
  z-index: 2;
  overflow: hidden;
  clip-path: ellipse(92% 100% at 100% 50%);
  opacity: 0;
  transform: translate3d(34px, 0, 0);
  transition: opacity 1.1s ease .18s, transform 1.25s cubic-bezier(.2, .7, .2, 1) .18s;
}

.home.home-ready .hero-visual {
  opacity: 1;
  transform: translate3d(var(--parallax-x, 0), var(--parallax-y, 0), 0);
}

.home .hero-visual::before {
  content: "";
  position: absolute;
  inset: 7% 6% 10% 2%;
  border: 1px solid rgba(255, 255, 255, .72);
  border-radius: 50%;
  box-shadow: inset 0 0 80px rgba(255, 255, 255, .2), 0 28px 90px rgba(37, 87, 70, .08);
  z-index: 2;
  pointer-events: none;
}

.home .hero-visual > img {
  transform: scale(1.06);
  transform-origin: 72% 62%;
  filter: saturate(.94) contrast(.98);
  animation: lingying-wave-drift 8.5s ease-in-out infinite alternate;
}

.home .hero-wave-motion {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  overflow: hidden;
}

.home .hero-wave-motion::before,
.home .hero-wave-motion::after,
.home .hero-wave-motion span {
  content: "";
  position: absolute;
  pointer-events: none;
  will-change: transform, opacity;
}

.home .hero-wave-motion::before {
  left: -8%;
  right: -8%;
  bottom: -12%;
  height: 64%;
  opacity: .62;
  background:
    radial-gradient(ellipse at 72% 78%, rgba(0, 197, 137, .48), transparent 48%),
    radial-gradient(ellipse at 34% 56%, rgba(54, 169, 128, .3), transparent 52%);
  filter: blur(13px) saturate(1.25);
  mix-blend-mode: screen;
  animation: lingying-green-wave 6.5s ease-in-out infinite alternate;
}

.home .hero-wave-motion::after {
  left: -18%;
  bottom: 6%;
  width: 138%;
  height: 24%;
  opacity: .58;
  border-radius: 50%;
  border-top: 3px solid rgba(239, 188, 90, .72);
  box-shadow: 0 -8px 26px rgba(239, 188, 90, .22), inset 0 10px 24px rgba(255,255,255,.18);
  transform: rotate(-8deg);
  mix-blend-mode: screen;
  animation: lingying-gold-ribbon 5.4s ease-in-out infinite alternate;
}

.home .hero-wave-motion span {
  left: 10%;
  right: -20%;
  bottom: 17%;
  height: 33%;
  opacity: .42;
  background: linear-gradient(112deg, transparent 16%, rgba(255,255,255,.05) 35%, rgba(255,224,157,.7) 47%, rgba(255,255,255,.78) 51%, transparent 61%);
  filter: blur(6px);
  transform: skewX(-12deg);
  mix-blend-mode: screen;
  animation: lingying-wave-shimmer 4.8s ease-in-out infinite;
}

.home .hero-visual:hover > img,
.home .hero-visual:hover .hero-wave-motion::before,
.home .hero-visual:hover .hero-wave-motion::after,
.home .hero-visual:hover .hero-wave-motion span {
  animation-duration: 3.2s;
}

.home .hero-badge {
  left: auto;
  right: 7%;
  bottom: 7%;
  min-width: 248px;
  padding: 17px 22px;
  border: 1px solid rgba(255, 255, 255, .86);
  background: rgba(255, 255, 255, .64);
  box-shadow: 0 24px 60px rgba(42, 75, 64, .12);
  backdrop-filter: blur(22px) saturate(1.2);
  transition: transform .45s cubic-bezier(.2, .7, .2, 1), box-shadow .35s ease;
  z-index: 4;
}

.home .hero-badge b {
  letter-spacing: .08em;
}

.home .proof-strip {
  margin: 0;
  padding: 22px clamp(34px, 7.2vw, 132px);
  color: var(--home-deep);
  background: rgba(255, 255, 255, .76);
  border-top: 1px solid rgba(16, 43, 37, .06);
  border-bottom: 1px solid rgba(16, 43, 37, .08);
  box-shadow: 0 14px 45px rgba(24, 65, 53, .04);
}

.home .proof-strip div {
  border-right-color: rgba(16, 43, 37, .1);
}

.home .proof-strip b {
  color: var(--home-emerald);
  font-size: 18px;
}

.home .proof-strip span {
  color: #77827e;
}

.home .motion-ribbon {
  width: 100%;
  overflow: hidden;
  padding: 13px 0;
  border-bottom: 1px solid rgba(16, 43, 37, .08);
  background: linear-gradient(90deg, #0f3028, #0a765a 52%, #102f28);
  color: rgba(255,255,255,.92);
}

.home .motion-ribbon-track {
  display: flex;
  align-items: center;
  width: max-content;
  animation: lingying-ribbon 28s linear infinite;
  will-change: transform;
}

.home .motion-ribbon span {
  padding: 0 24px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .16em;
  white-space: nowrap;
}

.home .motion-ribbon i {
  color: #e4bc70;
  font-style: normal;
  font-size: 11px;
}

.home .section {
  padding-top: 126px;
  padding-bottom: 126px;
}

.home .section-head h2 {
  max-width: 760px;
  font-weight: 760;
}

.home .service-grid {
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}

.home .service-card {
  min-height: 286px;
  padding: 30px;
  border-color: rgba(16, 43, 37, .09);
  background: rgba(255, 255, 255, .74);
  backdrop-filter: blur(14px);
  --tilt-x: 0deg;
  --tilt-y: 0deg;
  --shine-x: 50%;
  --shine-y: 50%;
  transform: perspective(900px) rotateX(var(--tilt-y)) rotateY(var(--tilt-x));
  transform-style: preserve-3d;
  overflow: hidden;
  transition: transform .38s cubic-bezier(.2, .7, .2, 1), box-shadow .38s ease, border-color .38s ease;
}

.home .service-card::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(circle at var(--shine-x) var(--shine-y), rgba(255,255,255,.62), transparent 34%);
  transition: opacity .35s ease;
}

.home .service-card:hover::after { opacity: .55; }

.home .service-card h3 {
  margin-top: 42px;
  font-size: 24px;
}

.home .service-card:hover {
  transform: perspective(900px) translateY(-9px) rotateX(var(--tilt-y)) rotateY(var(--tilt-x));
  box-shadow: 0 30px 75px rgba(26, 72, 58, .12);
}

.home .service-card:last-child {
  background: linear-gradient(155deg, #143b32, #08785a);
}

.home .feature {
  border: 1px solid rgba(16, 43, 37, .07);
  background: rgba(247, 242, 232, .75);
  box-shadow: 0 32px 90px rgba(24, 65, 53, .08);
}

.home .feature-image img {
  transition: transform 1.2s cubic-bezier(.2, .7, .2, 1);
}

.home .feature:hover .feature-image img {
  transform: scale(1.035);
}

.home [data-reveal] {
  opacity: 0;
  transform: translate3d(var(--reveal-x, 0), 38px, 0) scale(.975);
  filter: blur(6px);
  transition: opacity .9s ease, transform 1s cubic-bezier(.2, .75, .2, 1), filter .8s ease;
}

.home [data-reveal].is-visible {
  opacity: 1;
  transform: none;
  filter: none;
}

.home .service-card[data-reveal].is-visible {
  transform: perspective(900px) rotateX(var(--tilt-y)) rotateY(var(--tilt-x));
}

.home .service-card[data-reveal].is-visible:hover {
  transform: perspective(900px) translateY(-11px) scale(1.012) rotateX(var(--tilt-y)) rotateY(var(--tilt-x));
}

@keyframes lingying-float {
  from { transform: scale(1.06) translate3d(0, 0, 0); }
  to { transform: scale(1.085) translate3d(-10px, -9px, 0); }
}

@keyframes lingying-orbit {
  from { transform: rotate(13deg) scale(1); }
  to { transform: rotate(27deg) scale(1.06); }
}

@keyframes lingying-glow {
  0%, 100% { opacity: .35; transform: rotate(-8deg) translateX(-2%); }
  50% { opacity: .9; transform: rotate(-8deg) translateX(5%); }
}

@keyframes lingying-mote {
  0% { transform: translate3d(-5px, 12px, 0) scale(.75); opacity: .3; }
  55% { opacity: .9; }
  100% { transform: translate3d(18px, -24px, 0) scale(1.25); opacity: .45; }
}

@keyframes lingying-ribbon {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(-50%, 0, 0); }
}

@keyframes lingying-wave-drift {
  0% { transform: scale(1.06) translate3d(0, 0, 0); filter: saturate(.94) contrast(.98); }
  45% { transform: scale(1.095) translate3d(-13px, -8px, 0); filter: saturate(1.02) contrast(1); }
  100% { transform: scale(1.12) translate3d(-24px, -14px, 0); filter: saturate(1.08) contrast(1.01); }
}

@keyframes lingying-green-wave {
  from { transform: translate3d(-2%, 5%, 0) scaleX(.96) rotate(-2deg); opacity: .38; }
  to { transform: translate3d(5%, -7%, 0) scaleX(1.08) rotate(2deg); opacity: .78; }
}

@keyframes lingying-gold-ribbon {
  from { transform: translate3d(-3%, 8px, 0) rotate(-10deg) scaleX(.94); opacity: .34; }
  to { transform: translate3d(6%, -16px, 0) rotate(-5deg) scaleX(1.08); opacity: .78; }
}

@keyframes lingying-wave-shimmer {
  0%, 100% { transform: translate3d(-18%, 4px, 0) skewX(-12deg); opacity: .12; }
  48%, 58% { transform: translate3d(18%, -10px, 0) skewX(-12deg); opacity: .62; }
}

@media (max-width: 1180px) {
  .home .hero { grid-template-columns: 46% 54%; }
  .home .hero h1 { font-size: clamp(50px, 5vw, 68px); }
  .home .service-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 980px) {
  .home .hero { min-height: auto; grid-template-columns: 1fr; }
  .home .hero-copy { padding: 76px 28px 64px; }
  .home .hero h1 { max-width: 720px; }
  .home .hero-visual { min-height: 510px; clip-path: ellipse(105% 100% at 62% 50%); }
  .home .hero::before { width: 78vw; height: 78vw; left: 20%; top: 35%; }
  .home .service-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 620px) {
  .home .nav { height: 70px; }
  .home .hero-copy { padding: 58px 23px 54px; }
  .home .hero-copy .eyebrow { margin-bottom: 20px; font-size: 10px; letter-spacing: .19em; }
  .home .hero h1 { font-size: 44px; line-height: 1.08; margin-bottom: 24px; }
  .home .hero-copy > p { font-size: 15px; line-height: 1.85; }
  .home .hero-actions { margin-top: 30px; gap: 20px; }
  .home .hero-actions .button { min-width: auto; padding: 13px 20px; }
  .home .hero-visual { min-height: 370px; }
  .home .hero-badge { right: 20px; bottom: 20px; min-width: 218px; }
  .home .proof-strip { padding: 24px; gap: 20px; }
  .home .section { padding-top: 84px; padding-bottom: 84px; }
  .home .service-grid { grid-template-columns: 1fr; }
  .home .service-card { min-height: 238px; }
  .home .motion-field span:nth-child(even) { display: none; }
  .home .motion-ribbon { padding: 11px 0; }
  .home .motion-ribbon span { padding: 0 18px; font-size: 11px; }
}

@media (hover: none), (pointer: coarse) {
  .home .service-card,
  .home .service-card:hover {
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home *, .home *::before, .home *::after {
    scroll-behavior: auto !important;
    animation: none !important;
    transition-duration: .01ms !important;
  }
  .home [data-reveal] { opacity: 1; transform: none; }
  .home .hero-copy, .home .hero-visual { opacity: 1; transform: none; }
  .home .hero-line { opacity: 1; transform: none; clip-path: inset(0); }
  .home .motion-ribbon-track { animation: none; }
  .home .hero-wave-motion::before,
  .home .hero-wave-motion::after,
  .home .hero-wave-motion span { animation: none; }
}
