.home-main {
  position: relative;
  overflow: hidden;
  background: #fff;
  isolation: isolate;
}
.home-main > * {
  position: relative;
  z-index: 1;
}
.home-main::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(circle at 18% 28%, rgba(77,63,163,.08), transparent 28%),
    radial-gradient(circle at 82% 18%, rgba(128,204,185,.12), transparent 26%),
    linear-gradient(180deg, #fff, #f7fbfa 44%, #fff);
  pointer-events: none;
}
.home-main::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    repeating-linear-gradient(108deg, rgba(77,63,163,.045) 0 1px, transparent 1px 78px),
    repeating-linear-gradient(18deg, rgba(118,190,170,.055) 0 1px, transparent 1px 96px);
  opacity: .45;
  pointer-events: none;
}
.home-banner {
  position: relative;
  z-index: 2;
  min-height: 100vh;
  background: #eef5ff;
  overflow: hidden;
}
.home-banner::before,
.home-banner::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
}
.home-banner::before {
  background:
    linear-gradient(90deg, transparent 0 9%, rgba(255,255,255,.24) 12%, transparent 16% 100%),
    linear-gradient(115deg, transparent 0 38%, rgba(255,255,255,.2) 45%, transparent 54% 100%);
  opacity: .55;
  transform: translate3d(var(--hero-glint-x, -18px), 0, 0);
}
.home-banner::after {
  background:
    radial-gradient(ellipse at 28% 36%, rgba(255,255,255,.24), transparent 34%),
    repeating-linear-gradient(101deg, rgba(255,255,255,.13) 0 1px, transparent 1px 72px);
  opacity: .35;
  transform: translate3d(0, var(--hero-fiber-y, 0), 0);
}
.banner-track,
.banner-slide {
  position: absolute;
  inset: 0;
}
.banner-slide {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 110px max(54px, calc((100vw - 1600px) / 2)) 70px;
  overflow: hidden;
  opacity: 0;
  transform: scale(1.02);
  pointer-events: none;
  isolation: isolate;
  contain: paint;
  transition: opacity .8s ease, transform 1.2s ease;
  background: #eaf2ef;
}
.banner-slide::after {
  content: "";
  position: absolute;
  inset: -4%;
  z-index: 0;
  background-image: var(--banner-image);
  background-size: cover;
  background-position: center calc(50% + var(--bg-y, 0px));
  background-repeat: no-repeat;
  transform: translateZ(0) scale3d(1.01, 1.01, 1);
  transform-origin: var(--banner-origin, center);
  backface-visibility: hidden;
}
.banner-slide.is-active::after {
  will-change: transform;
  animation: banner-quiet-zoom 10s cubic-bezier(.2,.65,.3,1) both;
}
.banner-slide::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at center, rgba(255,255,255,.72), rgba(255,255,255,.28) 44%, rgba(22,34,28,.18) 100%),
    linear-gradient(135deg, rgba(236,249,244,.42), rgba(243,240,255,.26));
  z-index: 1;
}
.banner-paper-1 {
  --banner-origin: 68% 42%;
  --banner-image: url("/images/banner-forest-brand.webp");
}
.banner-paper-2 {
  --banner-origin: 50% 54%;
  --banner-image: url("/images/banner-forest-solution.webp");
}
.banner-paper-3 {
  --banner-origin: 34% 50%;
  --banner-image: url("/images/banner-forest-green.webp");
}
.banner-slide.is-active {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto;
}
.banner-copy {
  position: relative;
  z-index: 2;
  width: min(1500px, 100%);
  max-width: none;
  color: #1f2430;
  text-align: center;
  transform: translate3d(0, var(--hero-copy-y, 0), 0);
  will-change: transform;
}
.banner-copy p {
  margin: 0 0 18px;
  color: var(--primary);
  font-size: clamp(16px, 1.25vw, 22px);
  font-weight: 700;
  white-space: nowrap;
}
.banner-copy h1 {
  margin: 0 0 18px;
  font-size: clamp(42px, 5.4vw, 92px);
  line-height: 1.02;
  font-weight: 900;
  white-space: nowrap;
}
.banner-copy h2 {
  margin: 0 0 34px;
  color: #414957;
  font-size: clamp(22px, 2vw, 36px);
  font-weight: 600;
  white-space: nowrap;
}
.banner-copy a {
  display: inline-flex;
  align-items: center;
  min-width: 154px;
  height: 48px;
  justify-content: center;
  color: #fff;
  background: var(--primary);
  border-radius: 999px;
  font-weight: 700;
}
.banner-dots {
  position: absolute;
  left: 50%;
  bottom: 42px;
  display: flex;
  gap: 14px;
  transform: translateX(-50%);
  z-index: 4;
}
.banner-dots button {
  width: 42px;
  height: 4px;
  border: 0;
  border-radius: 999px;
  background: rgba(77,63,163,.2);
  cursor: pointer;
}
.banner-dots button.is-active { background: var(--primary); }
.banner-scroll {
  position: absolute;
  left: 50%;
  bottom: 72px;
  width: 26px;
  height: 42px;
  border: 2px solid rgba(77,63,163,.28);
  border-radius: 999px;
  transform: translateX(-50%);
}
.banner-scroll span {
  position: absolute;
  left: 50%;
  top: 8px;
  width: 4px;
  height: 8px;
  border-radius: 999px;
  background: var(--primary);
  transform: translateX(-50%);
  animation: mouse-dot 1.6s infinite;
}
@keyframes yj-float {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-16px); }
}
@keyframes mouse-dot {
  0% { opacity: 1; transform: translate(-50%,0); }
  100% { opacity: 0; transform: translate(-50%,16px); }
}
@keyframes banner-quiet-zoom {
  0% { transform: translateZ(0) scale3d(1.01, 1.01, 1); }
  100% { transform: translateZ(0) scale3d(1.075, 1.075, 1); }
}

.yj-section {
  width: min(1600px, calc(100% - 72px));
  margin: 0 auto;
  padding: 100px 0;
}
.about-block {
  display: grid;
  grid-template-columns: .95fr 1.05fr;
  gap: 72px;
  align-items: center;
}
.about-image {
  position: relative;
  filter: drop-shadow(0 34px 58px rgba(28, 38, 55, .14));
  transform: translate3d(0, var(--motion-y, 0), 0) rotateX(var(--motion-tilt, 0deg));
  transform-style: preserve-3d;
  will-change: transform;
}
.about-image::before {
  content: "";
  position: absolute;
  left: -32px;
  bottom: -32px;
  width: 55%;
  height: 55%;
  background: var(--primary);
  z-index: 0;
}
.about-image::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.62);
  border-radius: 6px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.42),
    inset 0 -80px 120px rgba(18,35,31,.18);
  pointer-events: none;
}
.about-image img {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 560px;
  object-fit: cover;
  border-radius: 6px;
  transform: translate3d(0, calc(var(--motion-y, 0px) * -.18), 0) scale(1.015);
  transition: transform .55s ease, filter .55s ease;
  will-change: transform;
}
.about-image:hover img {
  transform: translate3d(0, calc(var(--motion-y, 0px) * -.18), 0) scale(1.04);
  filter: saturate(1.06) contrast(1.03);
}
.title-mark h2 {
  margin: 0;
  color: #252b36;
  font-size: clamp(32px, 3.3vw, 56px);
  line-height: 1.18;
}
.title-mark strong {
  display: block;
  margin-top: 10px;
  color: #d2d7e4;
  font-size: clamp(36px, 4vw, 72px);
  line-height: 1;
  text-transform: uppercase;
}
.title-mark i {
  display: block;
  width: 64px;
  height: 4px;
  margin: 22px 0 34px;
  background: var(--primary);
}
.about-copy p {
  color: #5d6470;
  font-size: 17px;
  line-height: 2.15;
}
.about-lead {
  color: #3a4250 !important;
  font-size: 24px !important;
  font-weight: 800;
}
.more-line {
  display: inline-flex;
  margin-top: 24px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--primary);
  color: var(--primary);
  font-weight: 800;
  letter-spacing: 1px;
}
.about-links {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 28px;
}

.brand-wall {
  position: relative;
  padding: 110px max(36px, calc((100vw - 1600px) / 2));
  background:
    linear-gradient(135deg, rgba(47,36,111,.92), rgba(77,63,163,.86)),
    url("https://images.unsplash.com/photo-1441974231531-c6227db76b6e?auto=format&fit=crop&w=1800&q=80") center/cover;
  color: #fff;
  background-position: center calc(50% + var(--bg-y, 0px));
  overflow: hidden;
}
.brand-wall::before {
  content: "";
  position: absolute;
  inset: -20%;
  z-index: 0;
  background:
    linear-gradient(100deg, transparent 0 38%, rgba(255,255,255,.14) 45%, transparent 53% 100%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.08) 0 1px, transparent 1px 92px);
  opacity: .45;
  transform: translate3d(var(--brand-scan-x, -70px), 0, 0);
  pointer-events: none;
}
.brand-wall-inner {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 56px;
  align-items: end;
}
.brand-heading p,
.scene-head p,
.history-title p,
.section-title-img p {
  margin: 0 0 8px;
  color: var(--primary);
  font-weight: 900;
  letter-spacing: 1px;
}
.brand-heading p { color: rgba(255,255,255,.64); }
.brand-heading h2,
.scene-head h2,
.history-title h2,
.section-title-img h2 {
  margin: 0;
  font-size: clamp(36px, 4vw, 64px);
  line-height: 1.12;
  transform: translate3d(0, var(--motion-y, 0), 0);
  will-change: transform;
}
.brand-pillars {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: rgba(255,255,255,.18);
}
.brand-pillars article {
  min-height: 280px;
  padding: 34px 24px;
  background: rgba(255,255,255,.1);
  transform: translate3d(0, var(--motion-y, 0), 0);
  transition: background .25s ease, transform .25s ease;
  will-change: transform;
}
.brand-pillars article:hover {
  background: rgba(255,255,255,.18);
  transform: translate3d(0, calc(var(--motion-y, 0px) - 8px), 0);
}
.brand-pillars span {
  color: rgba(255,255,255,.48);
  font-size: 40px;
  font-weight: 900;
}
.brand-pillars h3 { margin: 34px 0 14px; font-size: 24px; }
.brand-pillars p { margin: 0; color: rgba(255,255,255,.78); line-height: 1.8; }

.section-title-img {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 42px;
}
.section-title-img a {
  color: var(--primary);
  font-weight: 900;
}
.carousel-shell {
  display: grid;
  grid-template-columns: 52px 1fr 52px;
  align-items: center;
  gap: 20px;
}
.carousel-btn {
  width: 52px;
  height: 52px;
  border: 1px solid var(--line);
  border-radius: 50%;
  color: var(--primary);
  background: #fff;
  font-size: 34px;
  cursor: pointer;
}
.product-strip {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 90px) / 4);
  gap: 30px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.product-strip::-webkit-scrollbar,
.news-strip::-webkit-scrollbar { display: none; }
.yj-product-card {
  position: relative;
  min-height: 470px;
  border: 1px solid var(--line);
  background: #fff;
  scroll-snap-align: start;
  overflow: hidden;
  transform: translate3d(0, var(--motion-y, 0), 0);
  transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
  will-change: transform;
}
.yj-product-card:hover {
  box-shadow: 0 26px 70px rgba(31,36,48,.12);
  transform: translate3d(0, calc(var(--motion-y, 0px) - 8px), 0);
}
.yj-product-card::before,
.yj-news-card::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 2px solid transparent;
  pointer-events: none;
  transition: border-color .25s ease;
}
.yj-product-card:hover::before,
.yj-news-card:hover::before { border-color: var(--primary); }
.yj-product-card figure {
  height: 260px;
  margin: 0;
  display: grid;
  place-items: center;
  background: #f6f8fc;
  overflow: hidden;
}
.yj-product-card img {
  width: 88%;
  height: 88%;
  object-fit: contain;
  transition: transform .35s ease;
}
.yj-product-card:hover img { transform: scale(1.06); }
.yj-product-card div { padding: 24px; }
.yj-product-card small { color: var(--primary); font-weight: 800; }
.yj-product-card h3 { margin: 10px 0 12px; font-size: 22px; }
.yj-product-card p { min-height: 76px; margin: 0; color: var(--muted); line-height: 1.7; }
.yj-product-card span,
.yj-news-card span {
  display: inline-flex;
  margin-top: 18px;
  color: var(--primary);
  font-weight: 800;
}

.scene-band {
  padding: 100px max(36px, calc((100vw - 1600px) / 2));
  background: #f6f7fb;
}
.scene-head {
  text-align: center;
  margin-bottom: 42px;
}
.scene-mosaic {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 22px;
}
.scene-mosaic article {
  position: relative;
  min-height: 430px;
  overflow: hidden;
  transform: translate3d(0, var(--motion-y, 0), 0);
  transition: transform .45s ease, box-shadow .45s ease;
  will-change: transform;
}
.scene-mosaic article:hover {
  box-shadow: 0 30px 80px rgba(31,36,48,.18);
  transform: translate3d(0, calc(var(--motion-y, 0px) - 10px), 0);
}
.scene-mosaic img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s ease;
}
.scene-mosaic article:hover img { transform: scale(1.08); }
.scene-mosaic div {
  position: absolute;
  inset: auto 0 0;
  padding: 30px;
  color: #fff;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,.72));
  transform: translateY(18px);
  transition: transform .35s ease;
}
.scene-mosaic article:hover div { transform: translateY(0); }
.scene-mosaic h3 { margin: 0 0 10px; font-size: 26px; }
.scene-mosaic p { margin: 0; color: rgba(255,255,255,.82); line-height: 1.7; }

.history-section {
  padding: 110px 0;
  color: #fff;
  background:
    linear-gradient(rgba(31,36,48,.72), rgba(31,36,48,.78)),
    url("https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&fit=crop&w=1800&q=80") center calc(50% + var(--bg-y, 0px))/cover;
}
.history-title {
  width: min(1600px, calc(100% - 72px));
  margin: 0 auto 70px;
  text-align: center;
}
.history-title p { color: rgba(255,255,255,.7); }
.timeline-rail {
  position: relative;
  width: min(1600px, calc(100% - 72px));
  min-height: 310px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  align-items: center;
}
.timeline-rail::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 2px;
  background: rgba(255,255,255,.42);
}
.timeline-rail article {
  position: relative;
  padding: 0 24px;
  text-align: center;
  transform: translate3d(0, var(--motion-y, 0), 0);
  transition: transform .45s ease;
  will-change: transform;
}
.timeline-rail article.up { align-self: start; padding-top: 0; }
.timeline-rail article.down { align-self: end; padding-bottom: 0; }
.timeline-rail i {
  position: absolute;
  left: 50%;
  top: calc(50% + 147px);
  width: 22px;
  height: 22px;
  border: 4px solid #fff;
  border-radius: 50%;
  background: var(--primary);
  transform: translate(-50%, -50%);
}
.timeline-rail article.down i { top: calc(50% - 147px); }
.timeline-rail h3 { margin: 0 0 12px; font-size: 42px; }
.timeline-rail p { margin: 0; color: rgba(255,255,255,.78); line-height: 1.8; }

.news-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}
.yj-news-card {
  position: relative;
  display: block;
  min-height: 520px;
  background: #fff;
  border: 1px solid var(--line);
  overflow: hidden;
  transform: translate3d(0, var(--motion-y, 0), 0);
  transition: transform .35s ease, box-shadow .35s ease;
  will-change: transform;
}
.yj-news-card:hover {
  box-shadow: 0 26px 70px rgba(31,36,48,.12);
  transform: translate3d(0, calc(var(--motion-y, 0px) - 8px), 0);
}
.yj-news-card figure {
  height: 260px;
  margin: 0;
  overflow: hidden;
}
.yj-news-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .4s ease;
}
.yj-news-card:hover img { transform: scale(1.06); }
.yj-news-card div { padding: 28px; }
.yj-news-card time { color: var(--primary); font-weight: 800; }
.yj-news-card h3 { margin: 14px 0; font-size: 23px; line-height: 1.45; }
.yj-news-card p { margin: 0; color: var(--muted); line-height: 1.75; }

@media (max-width: 1180px) {
  .banner-slide { text-align: center; padding-top: 120px; }
  .banner-copy { margin: 0 auto; }
  .brand-wall-inner,
  .about-block { grid-template-columns: 1fr; }
  .brand-pillars,
  .scene-mosaic { grid-template-columns: repeat(2, 1fr); }
  .product-strip { grid-auto-columns: calc((100% - 30px) / 2); }
}
@media (max-width: 760px) {
  .home-banner { min-height: 760px; }
  .banner-slide { padding-inline: 24px; }
  .banner-copy h1 { font-size: clamp(30px, 10vw, 44px); }
  .banner-copy h2 { font-size: clamp(16px, 5vw, 22px); }
  .banner-copy p { font-size: 14px; }
  .yj-section,
  .history-title,
  .timeline-rail { width: min(100% - 32px, 1600px); }
  .about-image img { height: 360px; }
  .brand-pillars,
  .scene-mosaic,
  .news-strip { grid-template-columns: 1fr; }
  .product-strip { grid-auto-columns: 100%; }
  .carousel-shell { grid-template-columns: 1fr; }
  .carousel-btn { display: none; }
  .timeline-rail {
    min-height: 0;
    grid-template-columns: 1fr;
    gap: 26px;
    align-items: start;
  }
  .timeline-rail::before { left: 12px; top: 0; bottom: 0; right: auto; width: 2px; height: auto; }
  .timeline-rail article,
  .timeline-rail article.up,
  .timeline-rail article.down {
    align-self: auto;
    padding: 0 0 0 46px;
    text-align: left;
  }
  .timeline-rail i,
  .timeline-rail article.down i {
    left: 12px;
    top: 22px;
    transform: translate(-50%, 0);
  }
}
