.container {
  width: min(calc(100% - (var(--container-pad) * 2)), var(--container));
  margin-inline: auto;
}

.section {
  position: relative;
  padding-block: var(--section-pad);
}

.section--soft {
  background: var(--paper-soft);
}

.section--warm {
  background: var(--paper-warm);
}

.section__header {
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(260px, 0.45fr);
  gap: 40px;
  align-items: end;
  margin-bottom: 42px;
}

.section__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
  color: var(--blue-700);
  font-size: 0.78rem;
  font-weight: 760;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.section__eyebrow::before {
  width: 28px;
  height: 1px;
  background: currentColor;
  content: "";
}

.section__title {
  max-width: 760px;
  color: var(--ink-950);
  font-size: clamp(2rem, 4vw, 3.6rem);
  font-weight: 760;
  letter-spacing: 0;
  line-height: 1.08;
  overflow-wrap: break-word;
  word-break: keep-all;
}

.section__title-text {
  display: inline;
}

.section__title-text--mobile {
  display: none;
}

.title-line {
  display: block;
}

.section__desc {
  max-width: 720px;
  color: var(--ink-600);
  font-size: clamp(1rem, 1.4vw, 1.08rem);
  line-height: 1.72;
  overflow-wrap: break-word;
  word-break: keep-all;
}

html[data-locale="zh"] .section__title,
html[data-locale="zh"] .section__desc,
html[data-locale="zh"] .hero__body,
html[data-locale="zh"] .service-card__desc,
html[data-locale="zh"] .case-card__title,
html[data-locale="zh"] .case-card__desc,
html[data-locale="zh"] .case-card__fact,
html[data-locale="zh"] .process-step__desc,
html[data-locale="zh"] .network-group__desc,
html[data-locale="zh"] .contact__intro,
html[data-locale="zh"] .privacy-field__text,
html[data-locale="zh"] .privacy-modal__desc,
html[data-locale="zh"] .privacy-modal__section p,
html[data-locale="zh"] .privacy-modal__item dd,
html[data-locale="zh"] .privacy-modal__bullets li {
  word-break: normal;
}

.grid-12 {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 24px;
}

.stack {
  display: grid;
  gap: 18px;
}

.reveal {
  opacity: 0;
  transform: translateY(22px);
  transition:
    opacity var(--duration-slow) var(--ease-smooth),
    transform var(--duration-slow) var(--ease-smooth);
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
