/* Portal logo */
.portal-logo-link {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  text-decoration: none;
  color: inherit;
}

.portal-logo-link:hover {
  color: inherit;
  opacity: 0.92;
}

.portal-logo-img {
  width: 52px;
  height: 52px;
  border-radius: 0;
  /* Logo asset has ~24% transparent padding; zoom to crop visual gap */
  object-fit: cover;
  flex-shrink: 0;
  transform: scale(1.55);
  transform-origin: center center;
  margin-right: -2px;
}

.portal-logo-text {
  font-size: 28px;
  font-weight: 600;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

@media (max-width: 575.98px) {
  .portal-logo-text {
    font-size: 21px;
  }

  .portal-logo-img,
  .header.portal-header .header-logo .portal-logo-img {
    width: 44px;
    height: 44px;
    transform: scale(1.5);
  }
}

/* Hospital name carousel */
.portal-hospital-box {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 72px;
  padding: 16px 20px;
  border: 1px solid #ececec;
  border-radius: 8px;
  background: #fafafa;
  text-align: center;
}

.portal-hospital-box span {
  font-size: 15px;
  font-weight: 500;
  color: #333;
  line-height: 1.4;
}

.avatar-group li img {
  border-radius: 8px;
  object-fit: cover;
}

/* Stats boxes */
.portal-stat-box {
  transition: box-shadow 0.2s;
}

.portal-stat-box:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}

.portal-about-stat-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 152px;
  padding: 1.4rem 1rem 1.25rem;
  background: #fff;
  border: 1px solid #dce8e3;
  border-top: 3px solid var(--portal-brand-green, #1e6b5c);
  border-radius: 6px;
  box-shadow: 0 2px 12px rgba(30, 107, 92, 0.05);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.portal-about-stat-box:hover {
  border-color: #c5ddd4;
  border-top-color: var(--portal-brand-green-light, #2f8f7a);
  box-shadow: 0 8px 22px rgba(30, 107, 92, 0.1);
  transform: translateY(-2px);
}

.portal-about-stats-row > .col {
  display: flex;
  min-width: 0;
}

.portal-about-stat-icon-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  flex-shrink: 0;
  border-radius: 50%;
  background: #edf7f3;
  border: 1px solid #d4ebe3;
}

.portal-about-stat-icon-wrap i {
  font-size: 1.4rem;
  line-height: 1;
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-about-stat-value {
  margin-top: 0.85rem;
  margin-bottom: 0.45rem;
  font-size: clamp(1.45rem, 2vw, 1.85rem);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: 0.02em;
  color: var(--portal-brand-green, #1e6b5c);
  white-space: nowrap;
}

.portal-about-stat-label {
  display: block;
  color: #666;
  font-size: 0.9rem;
  line-height: 1.45;
  padding-left: 0;
}

@media (min-width: 992px) {
  .portal-about-stat-box {
    min-height: 156px;
    padding: 1.5rem 1.15rem;
  }
}

@media (max-width: 575.98px) {
  .portal-about-stat-box {
    min-height: 0;
    padding: 1.25rem 1rem;
  }
}

/* 我们的优势 — Frame32 3_17 (1920×1080) */
.portal-advantage {
  --adv-teal: #0d9488;
  position: relative;
  z-index: 0;
  overflow: hidden;
  background: #fff;
  margin: 0;
  /* Exact design height; bottom joins 服务人群 with 115px overlap */
  padding: 80px 0 0 !important;
  min-height: 1080px;
  height: 1080px;
  max-height: none;
  box-sizing: border-box;
}

.portal-advantage.section {
  padding: 80px 0 0;
  margin: 0;
}

.portal-advantage-bg {
  position: absolute;
  inset: 0;
  background-image: url("../images/advantage/advantage-bg.avif");
  background-image: -webkit-image-set(
    url("../images/advantage/advantage-bg.avif") type("image/avif"),
    url("../images/advantage/advantage-bg.jpg") type("image/jpeg")
  );
  background-image: image-set(
    url("../images/advantage/advantage-bg.avif") type("image/avif"),
    url("../images/advantage/advantage-bg.jpg") type("image/jpeg")
  );
  background-size: cover;
  background-position: center right;
  background-repeat: no-repeat;
  pointer-events: none;
  z-index: 0;
}

.portal-advantage-header {
  position: relative;
  z-index: 1;
  text-align: center;
  margin: 0 0 70px;
  padding: 0 20px;
}

.portal-advantage-title {
  margin: 0;
  font-size: 42px;
  font-weight: 700;
  line-height: 40px;
  color: #1f2937;
}

.portal-advantage-desc {
  margin: 19px auto 0;
  font-size: 18px;
  font-weight: 400;
  line-height: 40px;
  color: #999;
}

.portal-advantage-shell {
  position: relative;
  z-index: 1;
  /* Frame32 stats cluster starts ~178px within 1920 */
  width: min(760px, calc(100% - 40px));
  margin-left: max(20px, calc((100% - 1920px) / 2 + 178px));
  margin-right: auto;
  display: flex;
  flex-direction: column;
  gap: 70px;
}

.portal-advantage-row {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 81px;
}

.portal-advantage-row--2 {
  /* second row only has 2 items in design */
  max-width: 478px;
}

.portal-advantage-item {
  position: relative;
  width: 184px;
  min-height: 127px;
  flex: 0 0 184px;
  text-align: center;
}

.portal-advantage-item--wide {
  width: 213px;
  flex-basis: 213px;
}

.portal-advantage-item-title {
  margin: 0 auto;
  font-size: 16px;
  font-weight: 700;
  line-height: 24px;
  color: #333;
  white-space: nowrap;
}

.portal-advantage-item-value {
  margin: 12px 0 0;
  color: var(--adv-teal);
  line-height: 1;
  white-space: nowrap;
  font-family: "DIN Alternate", "DIN Condensed", "Arial Narrow", "Helvetica Neue", sans-serif;
  font-weight: 700;
}

.portal-advantage-num {
  font-size: 50px;
  font-weight: 700;
  letter-spacing: 0;
}

.portal-advantage-unit {
  font-size: 40px;
  font-weight: 700;
  letter-spacing: 0;
}

.portal-advantage-item-desc {
  margin: 12px 0 0;
  font-size: 14px;
  font-weight: 400;
  line-height: 22.75px;
  color: #666;
}

@media (max-width: 1199.98px) {
  .portal-advantage {
    height: auto;
    min-height: 0;
    aspect-ratio: auto;
    padding: 64px 0 72px !important;
  }

  .portal-advantage-shell {
    width: min(720px, calc(100% - 40px));
    margin-left: 20px;
    gap: 48px;
  }

  .portal-advantage-row {
    gap: 40px;
  }

  .portal-advantage-header {
    margin-bottom: 48px;
  }
}

@media (max-width: 767.98px) {
  .portal-advantage {
    padding: 40px 0 48px !important;
  }

  .portal-advantage-bg {
    opacity: 0.35;
    background-position: center;
  }

  .portal-advantage-shell {
    width: calc(100% - 32px);
    margin-left: 16px;
    margin-right: 16px;
    gap: 32px;
  }

  .portal-advantage-row,
  .portal-advantage-row--2 {
    flex-wrap: wrap;
    justify-content: center;
    max-width: none;
    gap: 28px 24px;
  }

  .portal-advantage-item,
  .portal-advantage-item--wide {
    width: 140px;
    flex-basis: 140px;
    min-height: 0;
  }

  .portal-advantage-title {
    font-size: 32px;
    line-height: 1.2;
  }

  .portal-advantage-desc {
    font-size: 16px;
    line-height: 1.5;
  }

  .portal-advantage-num {
    font-size: 40px;
  }

  .portal-advantage-unit {
    font-size: 32px;
  }
}

/* 服务人群 — Frame32 replica (1920 artboard)
   Section ~1502h; cards 304×554 @ left 181/505/829/1153/1477, gap 20
*/
.portal-ivf-crowd {
  --crowd-red: #e25560;
  --crowd-orange: #fba235;
  --crowd-teal: #0d9488;
  --crowd-blue: #2d80f1;
  --crowd-purple: #7f56d0;
  position: relative;
  z-index: 1;
  overflow: hidden;
  /* Transparent so advantage photo shows through the 115px overlap;
     crowd deco (starts @115) continues seamlessly — no white band. */
  background: transparent;
  margin: -115px 0 0;
  padding: 215px 0 0 !important;
  min-height: 1502px;
}

.portal-ivf-crowd.section {
  padding: 215px 0 0;
  margin-top: -115px;
}

/*
 * Frame32 服务人群底图：两张图叠合
 *  3_48  7ef545…（照片）+ Rectangle33.png（遮罩）
 *  3_49  白色 SVG 渐变
 * 画框按 1920×1502 像素还原，再随容器宽度缩放
 */
.portal-ivf-crowd-deco-stage {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  container-type: inline-size;
  container-name: crowd-deco;
}

.portal-ivf-crowd-deco-frame {
  position: absolute;
  left: 0;
  top: 0;
  width: 1920px;
  height: 1501.5206298828125px;
  transform-origin: top left;
  transform: scale(calc(100cqw / 1920));
}

.portal-ivf-crowd-deco-wrap {
  /* Frame32 3_45 */
  position: absolute;
  left: 0;
  top: 0;
  width: 1920px;
  height: 1501.5206298828125px;
  transform: rotateY(180deg);
}

.portal-ivf-crowd-deco {
  /* Frame32 3_48 — 两张图：照片 + Rectangle33 */
  position: absolute;
  left: -286.4375px;
  top: 115.310546875px;
  width: 2968.20947265625px;
  height: 1272.089599609375px;
  background-image:
    url("../images/crowd/7ef545c3bb4e137ec6b3e583032af5eabccf236b.avif"),
    url("../images/crowd/Rectangle33.png");
  background-image:
    -webkit-image-set(
      url("../images/crowd/7ef545c3bb4e137ec6b3e583032af5eabccf236b.avif") type("image/avif"),
      url("../images/crowd/7ef545c3bb4e137ec6b3e583032af5eabccf236b.png") type("image/png")
    ),
    url("../images/crowd/Rectangle33.png");
  background-image:
    image-set(
      url("../images/crowd/7ef545c3bb4e137ec6b3e583032af5eabccf236b.avif") type("image/avif"),
      url("../images/crowd/7ef545c3bb4e137ec6b3e583032af5eabccf236b.png") type("image/png")
    ),
    url("../images/crowd/Rectangle33.png");
  background-size: cover, 0 0;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.8;
  -webkit-mask-image: url("../images/crowd/Rectangle33.png");
  mask-image: url("../images/crowd/Rectangle33.png");
  -webkit-mask-size: 1920px 1501.5206298828125px;
  mask-size: 1920px 1501.5206298828125px;
  -webkit-mask-position: 286.4375px -115.310546875px;
  mask-position: 286.4375px -115.310546875px;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

.portal-ivf-crowd-deco-grad {
  /* Frame32 3_49 */
  position: absolute;
  left: 3px;
  top: 115px;
  width: 1920px;
  height: 1080px;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-position: center;
  background-image: url("data:image/svg+xml;utf8,%3Csvg%20viewBox%3D'0%200%201920%201080'%20preserveAspectRatio%3D'none'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%0A%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D'grad'%20gradientUnits%3D'objectBoundingBox'%20x1%3D'0'%20y1%3D'0.5'%20x2%3D'1'%20y2%3D'0.5'%20gradientTransform%3D'matrix(0.2841%2C%20-0.9773%2C%200.9773%2C%200.8979%2C%20-0.4275%2C%200.5510)'%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cstop%20stop-color%3D'rgba(255%2C255%2C255%2C0.9200000239353554)'%20offset%3D'0'%2F%3E%3Cstop%20stop-color%3D'rgba(255%2C255%2C255%2C0.65)'%20offset%3D'0.14653292298316956'%2F%3E%3Cstop%20stop-color%3D'rgba(255%2C255%2C255%2C0.6700000239353554)'%20offset%3D'0.5732664465904236'%2F%3E%3Cstop%20stop-color%3D'rgba(255%2C255%2C255%2C0.2399999880323223)'%20offset%3D'1'%2F%3E%0A%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%3Crect%20width%3D'100%25'%20height%3D'100%25'%20fill%3D'url(%23grad)'%2F%3E%0A%20%20%20%20%3C%2Fsvg%3E");
}

.portal-ivf-crowd-header {
  position: relative;
  z-index: 1;
  text-align: center;
  /* sub@271 ends ~311 → cards@434 = 123px */
  margin: 0 0 123px;
  padding: 0 20px;
}

.portal-ivf-crowd-title {
  margin: 0;
  font-size: 42px;
  font-weight: 700;
  line-height: 40px;
  color: #333;
}

.portal-ivf-crowd-desc {
  margin: 16px auto 0;
  max-width: 36rem;
  font-size: 18px;
  font-weight: 400;
  line-height: 40px;
  color: #999;
}

.portal-ivf-crowd-shell {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 20px;
  width: min(1600px, calc(100% - 40px));
  margin-left: max(20px, calc((100% - 1600px) * 181 / 320));
  margin-right: max(20px, calc((100% - 1600px) * 139 / 320));
}

.portal-ivf-crowd-card {
  --crowd-accent: var(--crowd-red);
  --crowd-check: url("../images/crowd/Ellipse43.svg");
  --crowd-tick: url("../images/crowd/Vector43.svg");
  position: relative;
  flex: 1 1 0;
  min-width: 0;
  max-width: 304px;
  aspect-ratio: 304 / 554;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 0 12px 0 rgba(0, 105, 81, 0.21);
  container-type: size;
}

.portal-ivf-crowd-card--red {
  --crowd-accent: var(--crowd-red);
  --crowd-check: url("../images/crowd/Ellipse43.svg");
  --crowd-tick: url("../images/crowd/Vector43.svg");
}

.portal-ivf-crowd-card--orange {
  --crowd-accent: var(--crowd-orange);
  --crowd-check: url("../images/crowd/Ellipse48.svg");
  --crowd-tick: url("../images/crowd/Vector48.svg");
}

.portal-ivf-crowd-card--teal {
  --crowd-accent: var(--crowd-teal);
  --crowd-check: url("../images/crowd/Ellipse413.svg");
  --crowd-tick: url("../images/crowd/Vector413.svg");
}

.portal-ivf-crowd-card--blue {
  --crowd-accent: var(--crowd-blue);
  --crowd-check: url("../images/crowd/Ellipse423.svg");
  --crowd-tick: url("../images/crowd/Vector423.svg");
}

.portal-ivf-crowd-card--purple {
  --crowd-accent: var(--crowd-purple);
  --crowd-check: url("../images/crowd/Ellipse418.svg");
  --crowd-tick: url("../images/crowd/Vector418.svg");
}

/* Icon: 86×86 @ left 109 / top 30 */
.portal-ivf-crowd-icon {
  position: absolute;
  left: 35.855%;
  top: 5.415%;
  width: 28.289%;
  height: 15.523%;
}

.portal-ivf-crowd-icon-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Title: left 37 / top 138 / width 230 */
.portal-ivf-crowd-card-title {
  position: absolute;
  left: 12.171%;
  top: 24.91%;
  width: 75.658%;
  margin: 0;
  font-size: 20px;
  font-size: 6.579cqw;
  font-weight: 700;
  line-height: 24px;
  line-height: 4.33cqh;
  color: #333;
  text-align: center;
}

/* Desc: left 38 / top 180 / width 228 */
.portal-ivf-crowd-card-desc {
  position: absolute;
  left: 12.5%;
  top: 32.49%;
  width: 75%;
  margin: 0;
  font-size: 14px;
  font-size: 4.605cqw;
  font-weight: 400;
  line-height: 20px;
  line-height: 3.61cqh;
  color: #999;
  text-align: center;
}

/* Inner panel: 264×270 @ 20,244 (sibling of list, both on card) */
.portal-ivf-crowd-panel {
  position: absolute;
  left: 6.579%;
  top: 44.04%;
  width: 86.842%;
  height: 48.736%;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 0 8px 0 rgba(139, 139, 139, 0.25);
  pointer-events: none;
}

/* List: 204×236 @ 50,261 — positioned on CARD, not panel */
.portal-ivf-crowd-list {
  position: absolute;
  left: 16.447%;
  top: 47.112%;
  width: 67.105%;
  height: 42.599%;
  list-style: none;
  margin: 0;
  padding: 0;
  z-index: 1;
}

/* Rows at 0 / 54 / 107 / 161 / 216 within 236px list */
.portal-ivf-crowd-list li {
  position: absolute;
  left: 0;
  width: 100%;
  height: 16.102%;
  margin: 0;
  padding: 0 0 0 18.627%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  justify-content: center;
  font-size: 14px;
  font-size: 4.605cqw;
  font-weight: 400;
  line-height: 20px;
  color: #666;
  text-align: left;
  background-image: url("../images/crowd/Vector32.svg");
  background-repeat: no-repeat;
  background-position: left bottom;
  background-size: 100% 1px;
}

.portal-ivf-crowd-list li:nth-child(1) { top: 0; }
.portal-ivf-crowd-list li:nth-child(2) { top: 22.881%; } /* 54/236 */
.portal-ivf-crowd-list li:nth-child(3) { top: 45.339%; } /* 107/236 */
.portal-ivf-crowd-list li:nth-child(4) { top: 68.22%; } /* 161/236 */
.portal-ivf-crowd-list li:nth-child(5) {
  top: 91.525%; /* 216/236 */
  height: 8.475%;
  background-image: none;
}

/* Check @ left 18 within 204 list row */
.portal-ivf-crowd-list li::before {
  content: "";
  position: absolute;
  left: 8.824%;
  top: 50%;
  width: 14px;
  height: 14px;
  margin-top: -7px;
  background-image: var(--crowd-check);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  border-radius: 0;
}

.portal-ivf-crowd-list li::after {
  content: "";
  position: absolute;
  left: 10.784%;
  top: 50%;
  width: 8.27px;
  height: 6.27px;
  margin-top: -2px;
  border: none;
  background-image: var(--crowd-tick);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  transform: none;
}

/* Bottom accent bar: 171×7 @ 66,547 */
.portal-ivf-crowd-bar {
  position: absolute;
  left: 21.71%;
  top: 98.74%;
  width: 56.25%;
  height: 1.264%;
  border-radius: 10px 10px 0 0;
  background: var(--crowd-accent);
  box-shadow: 0 2px 2px 0 rgba(228, 197, 200, 0.9);
}

@media (max-width: 1199.98px) {
  .portal-ivf-crowd {
    margin-top: 0;
    padding: 72px 0 0 !important;
    min-height: 0;
  }

  .portal-ivf-crowd-header {
    margin-bottom: 48px;
  }

  .portal-ivf-crowd-shell {
    width: calc(100% - 32px);
    margin-left: 16px;
    margin-right: 16px;
    gap: 12px;
  }
}

@media (max-width: 991.98px) {
  .portal-ivf-crowd-title {
    font-size: 32px;
    line-height: 1.2;
  }

  .portal-ivf-crowd-desc {
    font-size: 16px;
    line-height: 1.6;
  }

  .portal-ivf-crowd-shell {
    flex-wrap: wrap;
    justify-content: center;
    gap: 24px;
  }

  .portal-ivf-crowd-card {
    flex: 0 0 auto;
    width: min(100%, 304px);
    max-width: 304px;
  }
}

@media (max-width: 767.98px) {
  .portal-ivf-crowd {
    margin-top: 0;
    padding: 40px 0 0 !important;
  }

  .portal-ivf-crowd-header {
    margin-bottom: 28px;
  }

  .portal-ivf-crowd-title {
    font-size: 28px;
  }

  .portal-ivf-crowd-card {
    width: 100%;
    max-width: 100%;
  }
}

/* IVF technology — Frame32 skewed cards replica */
.portal-ivf-tech {
  --ivf-tech-teal: #0d9488;
  --ivf-tech-blue: #2d80f1;
  --ivf-tech-orange: #fba235;
  position: relative;
  z-index: 1;
  overflow: hidden;
  background: #ebfcf8;
  /*
   * Frame32: crowd 3_44 @2045 h1502 → ends 3547;
   * IVF 3_276 @3240 → overlap 307px. Mint covers crowd water seam.
   * Title stays at padding-top 100 within this overlapped frame.
   */
  margin-top: -307px;
  padding: 100px 0 120px !important;
}

.portal-ivf-tech.section {
  padding: 100px 0 120px;
}

/* Mother/baby deco — Frame32 3_402 */
.portal-ivf-tech-deco {
  position: absolute;
  right: -2%;
  top: -8%;
  width: min(54vw, 1035px);
  height: min(43vw, 828px);
  background-image: url("../images/ivf/ivf-hero-bg.avif");
  background-image: -webkit-image-set(
    url("../images/ivf/ivf-hero-bg.avif") type("image/avif"),
    url("../images/ivf/ivf-hero-bg.png") type("image/png")
  );
  background-image: image-set(
    url("../images/ivf/ivf-hero-bg.avif") type("image/avif"),
    url("../images/ivf/ivf-hero-bg.png") type("image/png")
  );
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.2;
  pointer-events: none;
  z-index: 0;
  -webkit-mask-image: linear-gradient(to left, #000 40%, transparent 100%);
  mask-image: linear-gradient(to left, #000 40%, transparent 100%);
}

.portal-ivf-tech-header {
  position: relative;
  z-index: 1;
  text-align: center;
  margin: 0 0 88px;
  padding: 0 20px;
}

.portal-ivf-tech-title {
  margin: 0;
  font-size: 42px;
  font-weight: 700;
  line-height: 40px;
  color: #000;
}

.portal-ivf-tech-subtitle {
  margin: 19px auto 0;
  font-size: 18px;
  font-weight: 400;
  line-height: 40px;
  color: #999;
}

.portal-ivf-tech-shell {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 0;
  width: min(1583px, calc(100% - 40px));
  margin-left: max(20px, calc((100% - 1583px) * 186 / 337));
  margin-right: max(20px, calc((100% - 1583px) * 151 / 337));
}

.portal-ivf-tech-card {
  --ivf-accent: var(--ivf-tech-teal);
  /* Frame32: cards ~540 wide, starts 186/708/1229 → ~18px overlap */
  position: relative;
  flex: 0 0 34.1%;
  width: 34.1%;
  max-width: 540px;
  aspect-ratio: 540 / 647;
  min-height: 0;
  margin-right: -1.12%;
  container-type: size;
  container-name: ivf-card;
}

.portal-ivf-tech-card:last-child {
  margin-right: 0;
}

.portal-ivf-tech-card--teal { --ivf-accent: var(--ivf-tech-teal); }
.portal-ivf-tech-card--blue { --ivf-accent: var(--ivf-tech-blue); }
.portal-ivf-tech-card--orange { --ivf-accent: var(--ivf-tech-orange); }

.portal-ivf-tech-card-stack {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.portal-ivf-tech-card-shape {
  position: absolute;
  display: block;
  max-width: none;
}

.portal-ivf-tech-card-shape--back {
  left: 2.78%;
  top: 3.09%;
  width: 96.3%;
  height: 96.9%;
}

.portal-ivf-tech-card-shape--main {
  left: 0;
  top: 0;
  width: 96.3%;
  height: 96.9%;
}

.portal-ivf-tech-card-shape--panel {
  left: 8.3%;
  top: 48.4%;
  width: 75.7%;
  height: 41%;
}

/* Content: Frame32 absolute coords on 540×647 card */
.portal-ivf-tech-card-content {
  position: absolute;
  inset: 0;
  z-index: 1;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.portal-ivf-tech-card-top {
  position: absolute;
  inset: 0;
  margin: 0;
  min-height: 0;
  pointer-events: none;
}

.portal-ivf-tech-card-top > * {
  pointer-events: auto;
}

/* Icon: left 68 / top 54 / 92×74 — art oversized via negative inset (Frame32) */
.portal-ivf-tech-icon {
  position: absolute;
  left: 12.593%;
  top: 8.346%;
  width: 17.037%;
  height: 11.437%;
  overflow: visible;
}

.portal-ivf-tech-icon-art {
  position: absolute;
  inset: -12.162% -25.792% -68.919% -25.792%;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  background-position: center;
  display: block;
}

.portal-ivf-tech-icon--framed .portal-ivf-tech-icon-fg {
  position: absolute;
  left: 28.26%; /* 26/92 */
  top: 22.97%; /* 17/74 */
  width: 42.5%; /* 39/92 */
  height: 52.86%; /* 39/74 */
  inset: auto;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  display: block;
  transform: none;
}

.portal-ivf-tech-icon--framed .portal-ivf-tech-icon-fg--dna {
  left: 30.97%; /* 28.5/92 */
  top: 21.62%; /* 16/74 */
  width: 40.2%; /* 37/92 */
  height: 56.16%; /* 41.6/74 */
}

/*
  Header layout:
  [icon]  01  一代试管     [watermark]
          自然结合·IVF
*/
/* Num: left 190 / top 59 / 42px DIN-Bold (condensed) */
.portal-ivf-tech-num {
  position: absolute;
  left: 35.185%;
  top: 9.119%;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: 0;
  padding: 0;
  font-family: "DIN Alternate", "DIN Condensed", "Arial Narrow", "Helvetica Neue", sans-serif;
  font-size: 42px;
  font-size: 7.778cqw;
  font-weight: 700;
  line-height: 40px;
  line-height: 6.182cqh;
  color: var(--ivf-accent);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  font-stretch: condensed;
  white-space: pre;
}

/* Title beside 01: left 241 / top 71 / 20px */
.portal-ivf-tech-card-title {
  position: absolute;
  left: 44.63%;
  top: 10.974%;
  right: 11.85%;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: 0;
  padding: 0;
  font-size: 20px;
  font-size: 3.704cqw;
  font-weight: 700;
  line-height: 24px;
  line-height: 3.71cqh;
  color: #333;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Tag under 01: left 190 / top 113 / 14px */
.portal-ivf-tech-card-tag {
  position: absolute;
  left: 35.185%;
  top: 17.465%;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: 0;
  padding: 0;
  font-size: 14px;
  font-size: 2.593cqw;
  font-weight: 500;
  line-height: 24px;
  line-height: 3.71cqh;
  color: var(--ivf-accent);
  white-space: nowrap;
}

/* Watermark: left 326 / top 47 / 150px clipped */
.portal-ivf-tech-watermark {
  position: absolute;
  left: 60.423%;
  top: 7.264%;
  z-index: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: 39.5%;
  height: 12.72%;
  margin: 0;
  padding: 0;
  overflow: hidden;
  font-family: "DIN Alternate", "DIN Condensed", "Arial Narrow", "Helvetica Neue", sans-serif;
  font-size: 150px;
  font-size: 27.778cqw;
  font-weight: 700;
  line-height: 40px;
  line-height: 6.182cqh;
  color: rgba(245, 246, 247, 0.69);
  text-align: center;
  pointer-events: none;
  user-select: none;
  font-stretch: condensed;
}

/* Desc: left 68 / top 161 / 374×176, flex-centered */
.portal-ivf-tech-card-desc {
  position: absolute;
  left: 12.593%;
  top: 24.884%;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: 69.26%;
  height: 27.202%;
  margin: 0;
  padding: 0;
  font-size: 14px;
  font-size: 2.593cqw;
  font-weight: 500;
  line-height: 24px;
  line-height: 3.71cqh;
  color: #666;
  white-space: pre-wrap;
}

/* Divider: left 63 / top 186 */
.portal-ivf-tech-divider {
  position: absolute;
  left: 11.667%;
  top: 28.748%;
  z-index: 3;
  width: 72.5%;
  height: 1px;
  margin: 0;
  background: #dbdbdb;
}

/* Indications: label@103,328 / list@89,372×323×180 */
.portal-ivf-tech-indications {
  position: absolute;
  inset: 0;
  z-index: 2;
  margin: 0;
  padding: 0;
  pointer-events: none;
}

.portal-ivf-tech-ind-label {
  position: absolute;
  left: 19.074%;
  top: 50.695%;
  margin: 0;
  padding: 0;
  font-size: 16px;
  font-size: 2.963cqw;
  font-weight: 600;
  line-height: 24px;
  line-height: 3.71cqh;
  color: var(--ivf-accent);
  pointer-events: auto;
}

.portal-ivf-tech-ind-list {
  --ivf-check: url("../images/ivf/Ellipse435.svg");
  --ivf-tick: url("../images/ivf/Vector435.svg");
  position: absolute;
  left: 16.481%;
  top: 57.496%;
  width: 59.815%;
  height: 27.82%; /* 180/647 */
  list-style: none;
  margin: 0;
  padding: 0;
  pointer-events: auto;
}

.portal-ivf-tech-card--blue .portal-ivf-tech-ind-list {
  --ivf-check: url("../images/ivf/Ellipse431.svg");
  --ivf-tick: url("../images/ivf/Vector431.svg");
}

.portal-ivf-tech-card--orange .portal-ivf-tech-ind-list {
  --ivf-check: url("../images/ivf/Ellipse427.svg");
  --ivf-tick: url("../images/ivf/Vector427.svg");
}

/* Rows at 0 / 56 / 108 / 160 within 180px list (Frame32) */
.portal-ivf-tech-ind-list li {
  position: absolute;
  left: 0;
  width: 100%;
  height: 21.11%; /* ~38/180 */
  margin: 0;
  padding: 0 0 0 11.76%; /* text starts ~38/323 */
  box-sizing: border-box;
  font-size: 14px;
  font-size: 2.593cqw;
  font-weight: 400;
  line-height: 20px;
  line-height: 3.091cqh;
  color: #666;
  text-align: left;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.portal-ivf-tech-ind-list li:nth-child(1) { top: 0; }
.portal-ivf-tech-ind-list li:nth-child(2) { top: 31.11%; } /* 56/180 */
.portal-ivf-tech-ind-list li:nth-child(3) { top: 60%; } /* 108/180 */
.portal-ivf-tech-ind-list li:nth-child(4) { top: 88.89%; height: 11.11%; } /* 160/180 */

/* Check circle */
.portal-ivf-tech-ind-list li::before {
  content: "";
  position: absolute;
  left: 5.57%; /* 18/323 */
  top: 50%;
  width: 14px;
  height: 14px;
  margin-top: -7px;
  background-image: var(--ivf-check);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  border-radius: 0;
  opacity: 1;
}

/* Check tick */
.portal-ivf-tech-ind-list li::after {
  content: "";
  position: absolute;
  left: 6.81%; /* 22/323 */
  top: 50%;
  width: 8.27px;
  height: 6.27px;
  margin-top: -2px;
  border: none;
  background-image: var(--ivf-tick);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  transform: none;
}

/* Dashed row dividers (Vector328/329/330) */
.portal-ivf-tech-ind-list li:not(:last-child) {
  background-image: url("../images/ivf/Vector330.svg");
  background-repeat: no-repeat;
  background-position: left bottom;
  background-size: 100% 1px;
}

@media (max-width: 1199.98px) {
  .portal-ivf-tech {
    margin-top: 0;
    padding: 72px 0 80px !important;
  }

  .portal-ivf-tech-header {
    margin-bottom: 48px;
  }

  .portal-ivf-tech-shell {
    width: calc(100% - 32px);
    margin-left: 16px;
    margin-right: 16px;
  }

  .portal-ivf-tech-card {
    flex-basis: 34.1%;
    width: 34.1%;
  }
}

@media (max-width: 991.98px) {
  .portal-ivf-tech-title {
    font-size: 32px;
    line-height: 1.2;
  }

  .portal-ivf-tech-subtitle {
    font-size: 16px;
    line-height: 1.6;
    margin-top: 12px;
  }

  .portal-ivf-tech-shell {
    flex-direction: column;
    align-items: center;
    gap: 28px;
  }

  .portal-ivf-tech-card {
    flex: none;
    width: min(100%, 520px);
    max-width: 520px;
    margin-right: 0;
    aspect-ratio: 540 / 647;
  }
}

@media (max-width: 767.98px) {
  .portal-ivf-tech {
    margin-top: 0;
    padding: 40px 0 56px !important;
  }

  .portal-ivf-tech-header {
    margin-bottom: 28px;
  }

  .portal-ivf-tech-title {
    font-size: 28px;
  }

  .portal-ivf-tech-card {
    width: 100%;
    max-width: 100%;
  }

  .portal-ivf-tech-card-title {
    white-space: normal;
  }
}

@media (min-width: 1200px) {
  .portal-ivf-crowd-shell {
    gap: 20px;
  }
}

/* Contact section — Frame32 absolute layout (1920 artboard)
   Content band: x=334..1763 (1429px)
   Left aside 518 + gap 166 + form 745
   Form top 270 / info top 291 (aside +21)
*/
.portal-contact-section {
  --portal-contact-accent: #0d9488;
  --portal-contact-text: #333333;
  --portal-contact-muted: #666666;
  --portal-contact-hint: #999999;
  --portal-contact-border: #6e7a74;
  --portal-contact-privacy: #3e4944;
  --pc-artboard: 1920;
  --pc-content: 1429;
  --pc-aside: 518;
  --pc-gap: 166;
  --pc-form: 745;
  position: relative;
  overflow: hidden;
  background: #fff;
  padding: 70px 0 134px;
}

.portal-contact-section.section {
  padding: 70px 0 134px;
}

.portal-contact-section::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("../images/backgrounds/contact-pattern.png");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.1;
  pointer-events: none;
  z-index: 0;
}

.portal-contact-shell {
  position: relative;
  z-index: 1;
  width: min(1429px, calc(100% - 40px));
  box-sizing: border-box;
  margin-left: auto;
  margin-right: auto;
  padding: 0;
}

.portal-contact-header {
  position: relative;
  z-index: 1;
  text-align: center;
  /* title@70 + subtitle ends ~169 → body@270 => 101px */
  margin: 0 0 101px;
  padding: 0 20px;
}

.portal-contact-title {
  margin: 0;
  font-size: 42px;
  font-weight: 700;
  line-height: 40px;
  color: #000;
  letter-spacing: 0;
}

.portal-contact-desc {
  margin: 19px auto 0;
  max-width: 480px;
  font-size: 18px;
  font-weight: 400;
  line-height: 40px;
  color: var(--portal-contact-hint);
}

.portal-contact-layout {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: flex-start;
  /* 166 / 1429 */
  gap: 11.6165%;
  width: 100%;
}

.portal-contact-aside {
  display: flex;
  flex-direction: column;
  /* 518 / 1429 */
  flex: 0 0 36.2491%;
  width: 36.2491%;
  max-width: 36.2491%;
  /* info@291 vs form@270 */
  padding-top: 21px;
  box-sizing: border-box;
}

.portal-contact-info-list {
  display: flex;
  flex-direction: column;
  gap: 25px;
  /* 474 / 518 of aside */
  width: 91.5058%;
  max-width: 100%;
}

.portal-contact-item {
  display: flex;
  align-items: flex-start;
  gap: 20px;
  min-height: 53px;
}

.portal-contact-icon {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--portal-contact-accent);
  border-radius: 5px;
  background: transparent;
  box-sizing: border-box;
}

.portal-contact-icon img {
  display: block;
  object-fit: contain;
}

.portal-contact-icon--phone img {
  width: 26px;
  height: 26px;
}

.portal-contact-icon--email img {
  width: 24px;
  height: 19px;
}

.portal-contact-icon--address img {
  width: 21px;
  height: 25px;
}

.portal-contact-icon--company img {
  width: 26px;
  height: 23px;
}

.portal-contact-item-body {
  min-width: 0;
  padding-top: 0;
}

.portal-contact-item-label {
  margin: 0;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  color: var(--portal-contact-muted);
}

.portal-contact-item-value {
  margin: 1px 0 0;
  font-size: 16px;
  font-weight: 600;
  line-height: 28px;
  color: var(--portal-contact-text);
  word-break: break-word;
}

.portal-contact-item-value--lg {
  font-size: 18px;
}

.portal-contact-item-value a {
  color: inherit;
  text-decoration: none;
}

.portal-contact-item-value a:hover {
  color: var(--portal-contact-accent);
}

.portal-contact-map {
  margin-top: 37px;
  width: 100%;
  /* 254 / 518 */
  aspect-ratio: 518 / 254;
  height: auto;
  overflow: hidden;
  background: #f3f3f3;
  flex-shrink: 0;
  border-radius: 8px;
  position: relative;
}

.portal-contact-map a {
  display: block;
  width: 100%;
  height: 100%;
}

.portal-contact-map picture {
  display: block;
  width: 100%;
  height: 100%;
}

.portal-contact-map img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center;
}

.portal-contact-form-card {
  /* 745 / 1429 */
  flex: 0 0 52.1344%;
  width: 52.1344%;
  max-width: 52.1344%;
  box-sizing: border-box;
  border-radius: 24px;
  background: #fff;
  box-shadow: 0 8px 32px rgba(45, 45, 45, 0.4);
  padding: 48px 49px 40px;
  backdrop-filter: blur(6.67px);
  -webkit-backdrop-filter: blur(6.67px);
}

.portal-contact-form-title {
  margin: 0 0 42px;
  font-size: 32px;
  font-weight: 700;
  line-height: 1.3;
  color: #171d1a;
}

.portal-contact-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.portal-contact-form .form-row-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.portal-contact-form .form-group {
  margin-bottom: 0;
  display: flex;
  flex-direction: column;
  gap: 6.5px;
}

.portal-contact-form label {
  display: block;
  margin: 0;
  font-size: 16px;
  font-weight: 500;
  line-height: 16px;
  color: var(--portal-contact-text);
}

.portal-contact-form input,
.portal-contact-form select,
.portal-contact-form textarea {
  width: 100%;
  border: 1px solid var(--portal-contact-border);
  border-radius: 0;
  background: #fff;
  color: var(--portal-contact-text);
  font-size: 14px;
  line-height: 24px;
  padding: 9px 8px 8px;
  box-shadow: none;
  outline: none;
  appearance: none;
  -webkit-appearance: none;
  transition: border-color 0.15s ease;
}

.portal-contact-form select {
  padding-right: 36px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%236e7a74' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px 8px;
  cursor: pointer;
}

.portal-contact-form textarea {
  min-height: 110px;
  resize: vertical;
}

.portal-contact-form input::placeholder,
.portal-contact-form textarea::placeholder {
  color: var(--portal-contact-hint);
  opacity: 1;
}

.portal-contact-form input:focus,
.portal-contact-form select:focus,
.portal-contact-form textarea:focus {
  border-color: var(--portal-contact-accent);
}

.portal-contact-form-actions {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding-top: 8px;
}

.portal-contact-form .portal-contact-submit {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 56px;
  margin: 0;
  padding: 16px 0;
  border: 0;
  border-radius: 12px;
  background: var(--portal-contact-accent);
  color: #fff;
  font-size: 16px;
  font-weight: 500;
  line-height: 24px;
  box-shadow: 0 10px 15px -3px rgba(0, 105, 81, 0.2), 0 4px 6px -4px rgba(0, 105, 81, 0.2);
  transition: background-color 0.2s ease, transform 0.15s ease;
  cursor: pointer;
}

.portal-contact-form .portal-contact-submit:hover {
  background: #0b7f75;
  color: #fff;
}

.portal-contact-form .portal-contact-submit:active {
  transform: translateY(1px);
}

.portal-contact-privacy {
  margin: 0;
  font-size: 12px;
  font-weight: 500;
  line-height: 16px;
  color: var(--portal-contact-privacy);
  text-align: center;
}

.portal-contact-form-card .messages {
  margin-top: 1rem;
}

.portal-contact-form-card .messages .alert {
  margin-bottom: 0;
  border-radius: 8px;
  font-size: 0.9rem;
}

/* Percentage layout already preserves Frame32 ratios above 992px.
   Only collapse to a single column on tablet/phone. */
@media (max-width: 1199.98px) {
  .portal-contact-shell {
    width: calc(100% - 40px);
    margin-left: 20px;
    margin-right: 20px;
  }

  .portal-contact-form-card {
    padding: 40px 32px 32px;
  }
}

@media (max-width: 991.98px) {
  .portal-contact-section,
  .portal-contact-section.section {
    padding: 56px 0 64px;
  }

  .portal-contact-header {
    margin-bottom: 40px;
  }

  .portal-contact-title {
    font-size: 32px;
    line-height: 1.2;
  }

  .portal-contact-desc {
    margin-top: 12px;
    font-size: 16px;
    line-height: 1.6;
  }

  .portal-contact-layout {
    flex-direction: column;
    gap: 36px;
  }

  .portal-contact-aside {
    flex: none;
    width: 100%;
    max-width: 100%;
    padding-top: 0;
  }

  .portal-contact-info-list {
    width: 100%;
  }

  .portal-contact-form-card {
    flex: none;
    width: 100%;
    max-width: 100%;
    padding: 36px 28px 28px;
    box-shadow: 0 8px 28px rgba(45, 45, 45, 0.28);
  }

  .portal-contact-form-title {
    font-size: 26px;
    margin-bottom: 28px;
  }

  .portal-contact-map {
    width: min(100%, 518px);
  }
}

@media (max-width: 575.98px) {
  .portal-contact-shell {
    width: calc(100% - 32px);
    margin-left: 16px;
    margin-right: 16px;
  }

  .portal-contact-header {
    margin-bottom: 32px;
  }

  .portal-contact-title {
    font-size: 28px;
  }

  .portal-contact-form .form-row-2 {
    grid-template-columns: 1fr;
  }

  .portal-contact-item {
    gap: 14px;
  }

  .portal-contact-item-value,
  .portal-contact-item-value--lg {
    font-size: 15px;
  }

  .portal-contact-form-card {
    border-radius: 18px;
    padding: 28px 18px 22px;
  }

  .portal-contact-form-title {
    font-size: 22px;
    margin-bottom: 22px;
  }

  .portal-contact-info-list {
    gap: 20px;
  }
}

.contact-form .form-select {
  width: 100%;
  padding: 12px 16px;
  border: 1px solid #e0e0e0;
  background: #fff;
}

.contact-form .form-check-label {
  font-size: 14px;
  color: #666;
}

.portal-anchor-section {
  scroll-margin-top: 100px;
}

.portal-honor-card {
  transition: box-shadow 0.2s;
  height: 100%;
}

.portal-honor-card:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}

.portal-honor-expert-marquee {
  position: relative;
  overflow: hidden;
  padding: 0.25rem 0 0.5rem;
}

.portal-honor-expert-marquee::before,
.portal-honor-expert-marquee::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 56px;
  z-index: 2;
  pointer-events: none;
}

.portal-honor-expert-marquee::before {
  left: 0;
  background: linear-gradient(90deg, #fff 15%, rgba(255, 255, 255, 0));
}

.portal-honor-expert-marquee::after {
  right: 0;
  background: linear-gradient(270deg, #fff 15%, rgba(255, 255, 255, 0));
}

.portal-honor-expert-swiper {
  width: 100%;
}

.portal-honor-expert-swiper .swiper-wrapper {
  transition-timing-function: linear;
}

.portal-honor-expert-swiper .swiper-slide {
  width: min(78vw, 480px);
}

.portal-honor-expert-card {
  margin: 0;
  height: 100%;
  padding: 0.55rem;
  background: #fff;
  border: 1px solid #e0ebe6;
  border-radius: 10px;
  box-shadow: 0 6px 20px rgba(30, 107, 92, 0.07);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.portal-honor-expert-card:hover {
  box-shadow: 0 12px 30px rgba(30, 107, 92, 0.12);
  transform: translateY(-2px);
}

.portal-honor-expert-card picture {
  display: block;
}

.portal-honor-expert-img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 6px;
}

@media (min-width: 1200px) {
  .portal-honor-expert-swiper .swiper-slide {
    width: 520px;
  }
}

@media (max-width: 767.98px) {
  .portal-honor-expert-marquee::before,
  .portal-honor-expert-marquee::after {
    width: 28px;
  }

  .portal-honor-expert-swiper .swiper-slide {
    width: min(82vw, 400px);
  }
}

.portal-pricing-featured {
  position: relative;
  border: 2px solid var(--portal-nav-accent) !important;
}

.portal-pricing-badge {
  position: absolute;
  top: -12px;
  right: 16px;
  background: var(--portal-nav-accent);
  color: #fff;
  font-size: 12px;
  padding: 4px 12px;
  border-radius: 20px;
}

.portal-pricing-featured ul li {
  margin-bottom: 8px;
}

.portal-case-card {
  transition: box-shadow 0.2s;
  background: #fff;
}

.portal-case-card:hover {
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
}

.portal-case-img {
  height: 220px;
  object-fit: cover;
}

.portal-news-thumb {
  width: 100%;
  height: auto;
  border-radius: 8px;
}

.portal-sidebar-qrcode {
  max-width: 140px;
  border-radius: 8px;
}

/* Floating sidebar */
.portal-float-bar {
  position: fixed;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 999;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.portal-float-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 64px;
  padding: 10px 6px;
  border: 1px solid var(--portal-brand-green, #1e6b5c);
  border-radius: 8px;
  background: var(--portal-brand-green, #1e6b5c);
  box-shadow: 0 6px 18px rgba(30, 107, 92, 0.28);
  color: #fff;
  text-decoration: none;
  font-size: 11px;
  line-height: 1.3;
  cursor: pointer;
  transition: box-shadow 0.2s, transform 0.2s, background 0.2s, border-color 0.2s;
}

.portal-float-btn i {
  font-size: 22px;
  margin-bottom: 4px;
  color: #fff;
}

.portal-float-btn .portal-float-icon {
  width: 22px;
  height: 22px;
  margin-bottom: 4px;
  display: block;
  color: #fff;
}

.portal-float-btn:hover {
  transform: translateY(-2px);
  background: var(--portal-brand-green-light, #2f8f7a);
  border-color: var(--portal-brand-green-light, #2f8f7a);
  box-shadow: 0 10px 24px rgba(30, 107, 92, 0.34);
  color: #fff;
}

.portal-float-btn:hover i {
  color: #fff;
}

.portal-float-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 1000;
}

.portal-float-panel {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1001;
  width: min(320px, 90vw);
  background: #fff;
  border-radius: 12px;
  padding: 24px;
  text-align: center;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);
}

.portal-float-panel-close {
  position: absolute;
  top: 8px;
  right: 12px;
  border: 0;
  background: transparent;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  color: #999;
}

.portal-float-qrcode {
  width: 160px;
  height: 160px;
  object-fit: cover;
  border-radius: 8px;
  margin-bottom: 12px;
}

.portal-float-panel-title {
  font-weight: 600;
  margin-bottom: 8px;
}

.portal-float-panel-desc {
  font-size: 14px;
  color: #666;
  margin-bottom: 8px;
}

.portal-float-panel-hotline a {
  color: var(--portal-brand-green, #1e6b5c);
  font-weight: 600;
}

/* Footer WeChat uses template class social-facebook — restyle to brand green */
.section.bg-dark .button-circle.button-circle-social-facebook {
  background: var(--portal-brand-green, #1e6b5c) !important;
  color: #fff !important;
}

.section.bg-dark .button-circle.button-circle-social-facebook:hover {
  background: var(--portal-brand-green-light, #2f8f7a) !important;
  color: #fff !important;
}

@media (max-width: 767.98px) {
  .portal-float-bar {
    right: 8px;
  }

  .portal-float-btn {
    width: 52px;
    font-size: 10px;
    padding: 8px 4px;
  }

  .portal-float-btn i {
    font-size: 18px;
  }

  .portal-float-btn .portal-float-icon {
    width: 18px;
    height: 18px;
  }
}

/* App download modal */
.portal-app-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 1002;
}

.portal-app-panel {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1003;
  width: min(520px, 92vw);
  background: #fff;
  border: 1px solid #dce8e3;
  border-radius: 12px;
  padding: 28px 24px 24px;
  box-shadow: 0 12px 40px rgba(30, 107, 92, 0.14);
}

.portal-app-panel-close {
  position: absolute;
  top: 8px;
  right: 12px;
  border: 0;
  background: transparent;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  color: #8aa399;
}

.portal-app-panel-close:hover {
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-app-panel-title {
  font-weight: 600;
  font-size: 18px;
  text-align: center;
  margin-bottom: 20px;
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-app-qr-grid {
  display: flex;
  gap: 20px;
}

.portal-app-qr-item {
  flex: 1;
  text-align: center;
}

.portal-app-qr-platform {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  margin-bottom: 12px;
  color: #1a2e28;
}

.portal-app-qr-platform i {
  font-size: 18px;
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-app-qr-img {
  width: 150px;
  height: 150px;
  object-fit: contain;
  border-radius: 8px;
  margin: 0 auto 10px;
  display: block;
  border: 1px solid #e2ece7;
  background: #f7fbf9;
  padding: 8px;
}

.portal-app-qr-empty {
  width: 150px;
  height: 150px;
  margin: 0 auto 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f7fbf9;
  border: 1px dashed #c5ddd4;
  border-radius: 8px;
  color: #7a948a;
  font-size: 16px;
}

.portal-app-qr-desc {
  font-size: 13px;
  color: #5f6764;
  margin: 0;
}

@media (max-width: 479.98px) {
  .portal-app-qr-grid {
    flex-direction: column;
    align-items: center;
  }
}

.portal-legal h5 {
  font-weight: 600;
  color: #121518;
}

.portal-legal p {
  line-height: 1.8;
  color: #444;
  margin-bottom: 0.5rem;
}

.portal-legal .portal-legal-sdk {
  padding: 0.75rem 1rem;
  margin-bottom: 0.75rem;
  background: #f7f8f9;
  border-radius: 6px;
}

.portal-legal .portal-legal-sdk a {
  word-break: break-all;
}

/* Portal title spacing overrides */

/* Offline-safe system fonts (replaces Google Fonts) */
html body,
.font-family-primary,
.font-family-poppins,
.font-family-nunito,
.font-family-outfit,
.header .header-menu .nav .nav-item .nav-link,
.theme-font-nunito .header .header-menu .nav .nav-item .nav-link {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}

.font-family-playfair {
  font-family: Georgia, "Songti SC", "Noto Serif SC", serif;
}

.portal-about-profile-section {
  background: linear-gradient(180deg, #f7fbf9 0%, #fff 55%);
}

.portal-about-profile-section > .container > .row:first-child h2 {
  position: relative;
  padding-bottom: 0.85rem;
}

.portal-about-profile-section > .container > .row:first-child h2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 56px;
  height: 3px;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-about-profile-photo {
  padding: 14px;
  background: #fff;
  text-align: center;
  border: 1px solid #e0ebe6;
  border-radius: 8px;
  box-shadow: 0 10px 28px rgba(30, 107, 92, 0.07);
}

.portal-about-profile-photo picture {
  display: block;
  width: 100%;
}

.portal-about-profile-img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  border-radius: 4px;
}

.portal-about-profile-text {
  line-height: 1.9;
  color: #4a5552;
  margin-bottom: 1.5rem;
  padding: 1.35rem 1.5rem;
  background: #fff;
  border: 1px solid #e8eeeb;
  border-left: 4px solid var(--portal-brand-green, #1e6b5c);
  border-radius: 0 6px 6px 0;
  box-shadow: 0 2px 14px rgba(30, 60, 50, 0.04);
}

.portal-about-profile-text p {
  text-indent: 2em;
  margin: 0 0 1em;
}

.portal-about-profile-text p:last-child {
  margin-bottom: 0;
}

.portal-about-stats-panel {
  padding: 1.15rem;
  background: rgba(237, 247, 243, 0.65);
  border: 1px solid #e0ebe6;
  border-radius: 8px;
}

@media (min-width: 768px) {
  .portal-about-stats-panel {
    padding: 1.25rem;
  }
}

/* About — brand culture */
.portal-about-culture-section {
  background: linear-gradient(180deg, #fff 0%, #f7fbf9 100%);
}

.portal-about-culture-header {
  margin: 0 0 1.75rem;
}

.portal-about-culture-title {
  margin: 0;
  font-size: clamp(1.65rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.35;
}

.portal-about-culture-divider {
  width: 48px;
  height: 3px;
  margin: 1rem 0;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-about-culture-desc {
  margin: 0;
  color: #5f6764;
  font-size: 1rem;
  line-height: 1.8;
}

.portal-about-culture-cards {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  height: 100%;
}

.portal-about-culture-card {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  width: 100%;
  padding: 1.15rem 1.25rem;
  text-align: left;
  background: #fff;
  border: 1px solid #dce8e3;
  border-left: 3px solid var(--portal-brand-green, #1e6b5c);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(30, 107, 92, 0.05);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.portal-about-culture-card:hover {
  border-color: #c5ddd4;
  border-left-color: var(--portal-brand-green-light, #2f8f7a);
  box-shadow: 0 10px 28px rgba(30, 107, 92, 0.1);
  transform: translateY(-2px);
}

.portal-about-culture-icon {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: #edf7f3;
  border: 1px solid #d4ebe3;
}

.portal-about-culture-icon i {
  font-size: 1.45rem;
  line-height: 1;
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-about-culture-card-body {
  min-width: 0;
}

.portal-about-culture-card-title {
  margin: 0 0 0.4rem;
  font-size: 1.05rem;
  font-weight: 600;
  color: #243430;
  line-height: 1.4;
}

.portal-about-culture-card-desc {
  margin: 0;
  color: #6d7773;
  font-size: 0.9rem;
  line-height: 1.7;
}

.portal-about-culture-photo {
  height: 100%;
  padding: 0.5rem;
  background: #fff;
  border: 1px solid #e0ebe6;
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(30, 107, 92, 0.07);
}

.portal-about-culture-photo picture {
  display: flex;
  width: 100%;
  height: 100%;
  align-items: center;
  justify-content: center;
}

.portal-about-culture-photo-img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 6px;
  object-fit: contain;
}

@media (min-width: 992px) {
  .portal-about-culture-layout > .col-lg-8 {
    display: flex;
    min-height: 0;
  }

  .portal-about-culture-photo {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    min-height: 0;
  }

  .portal-about-culture-photo-img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
  }
}

@media (max-width: 991.98px) {
  .portal-about-culture-photo {
    margin-top: 0.5rem;
  }
}

@media (max-width: 575.98px) {
  .portal-about-culture-header {
    margin-bottom: 1.25rem;
  }

  .portal-about-culture-card {
    padding: 1rem 1rem;
  }

  .portal-about-culture-icon {
    width: 48px;
    height: 48px;
  }

  .portal-about-culture-icon i {
    font-size: 1.3rem;
  }
}

/* Inner page banner title */
.portal-about-hero {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  background-position: center center !important;
  background-size: cover !important;
}

.portal-about-hero--banner {
  width: 100%;
  margin-top: 0;
  padding: 0;
  line-height: 0;
  background: #fff;
  overflow: hidden;
}

.portal-about-hero--banner picture {
  display: block;
  width: 100%;
}

.portal-about-hero--banner .portal-about-hero-img {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
}

/* Hospital page banner — static full-bleed */
.portal-hospital-hero {
  width: 100%;
  margin: 0;
  padding: 0;
  line-height: 0;
  background: #fff;
  overflow: hidden;
}

.portal-hospital-hero picture {
  display: block;
  width: 100%;
}

.portal-hospital-banner-img {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
  vertical-align: top;
}

/* Hospital — domestic advantages */
.portal-hospital-advantage-section {
  background: linear-gradient(180deg, #f7fbf9 0%, #fff 55%);
}

.portal-hospital-advantage-header {
  margin: 0 0 2rem;
  text-align: center;
}

.portal-hospital-advantage-title {
  margin: 0;
  font-size: clamp(1.65rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.35;
}

.portal-hospital-advantage-divider {
  width: 48px;
  height: 3px;
  margin: 1rem auto;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-hospital-advantage-desc {
  margin: 0 auto;
  max-width: 36rem;
  color: #5f6764;
  font-size: 1rem;
  line-height: 1.8;
}

.portal-hospital-advantage-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.85rem;
  padding: 1.5rem 1.35rem 1.4rem;
  background: #fff;
  border: 1px solid #dce8e3;
  border-radius: 10px;
  box-shadow: 0 4px 16px rgba(30, 107, 92, 0.05);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
  overflow: hidden;
}

.portal-hospital-advantage-card:hover {
  border-color: #c5ddd4;
  box-shadow: 0 12px 28px rgba(30, 107, 92, 0.1);
  transform: translateY(-3px);
}

.portal-hospital-advantage-num {
  position: absolute;
  top: 0.85rem;
  right: 1rem;
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1;
  color: rgba(30, 107, 92, 0.1);
  letter-spacing: 0.02em;
  pointer-events: none;
}

.portal-hospital-advantage-heading {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  width: 100%;
  padding-right: 2.4rem;
}

.portal-hospital-advantage-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 52px;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: #edf7f3;
  border: 1px solid #d4ebe3;
}

.portal-hospital-advantage-icon i {
  font-size: 1.4rem;
  line-height: 1;
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-hospital-advantage-card-title {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 600;
  color: #1a2e28;
  line-height: 1.35;
}

.portal-hospital-advantage-card-desc {
  margin: 0;
  color: #5f6764;
  font-size: 0.95rem;
  line-height: 1.75;
}

/* Hospital — care journey flow (pre / mid / post) */
.portal-hospital-pathway-section {
  background: linear-gradient(180deg, #fff 0%, #f6faf8 100%);
}

.portal-hospital-pathway-header {
  margin: 0 0 2.2rem;
  text-align: center;
}

.portal-hospital-pathway-title {
  margin: 0;
  font-size: clamp(1.9rem, 3vw, 2.35rem);
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.35;
}

.portal-hospital-pathway-divider {
  width: 56px;
  height: 3px;
  margin: 1.05rem auto;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-hospital-pathway-desc {
  margin: 0 auto;
  max-width: 48rem;
  color: #5f6764;
  font-size: 1.05rem;
  line-height: 1.9;
}

.portal-care-flow-board {
  padding: 1.4rem 1.2rem 1.3rem;
  background: #fff;
  border: 1px solid #dce8e3;
  border-radius: 20px;
  box-shadow: 0 10px 30px rgba(30, 107, 92, 0.06);
}

.portal-care-flow-track {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}


.portal-care-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  height: 100%;
  padding: 1.2rem 1.1rem 1.25rem;
  background: linear-gradient(180deg, #fbfdfc 0%, #f4faf7 100%);
  border: 1px solid #ddece5;
  border-radius: 16px;
  box-shadow: 0 8px 20px rgba(30, 107, 92, 0.05);
}

.portal-care-stage-num {
  position: absolute;
  top: 0.95rem;
  right: 1rem;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: rgba(30, 107, 92, 0.28);
}

.portal-care-stage-head {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding-right: 2rem;
}

.portal-care-stage-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 12px;
  background: #fff;
  border: 1px solid #d4ebe3;
  color: var(--portal-brand-green, #1e6b5c);
  font-size: 1.15rem;
  box-shadow: 0 3px 8px rgba(30, 107, 92, 0.06);
}

.portal-care-stage-title {
  margin: 0;
  font-size: 1.2rem;
  font-weight: 600;
  color: #1a2e28;
}

.portal-care-stage-list {
  list-style: none;
  margin: 0;
  padding: 0;
  color: #4f5c57;
  font-size: 0.94rem;
  line-height: 1.75;
}

.portal-care-stage-list li {
  position: relative;
  padding-left: 0.95rem;
}

.portal-care-stage-list li + li {
  margin-top: 0.12rem;
}

.portal-care-stage-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.66em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--portal-brand-green-light, #2f8f7a);
}

.portal-care-stage-scenes {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.7rem;
  margin-top: 0.1rem;
}

.portal-care-scene {
  flex: 1;
  padding: 0.85rem 0.9rem;
  background: #fff;
  border: 1px solid #e2ece7;
  border-radius: 12px;
}

.portal-care-stage--pre .portal-care-scene,
.portal-care-stage--post .portal-care-scene {
  min-height: 0;
}

.portal-care-scene-title {
  margin: 0 0 0.4rem;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-care-flow-bridge {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.3rem;
  color: var(--portal-brand-green, #1e6b5c);
  font-size: 0.84rem;
  font-weight: 600;
  line-height: 1.35;
  text-align: center;
}

.portal-care-flow-bridge-arrow {
  width: 3px;
  height: 24px;
  background: linear-gradient(180deg, var(--portal-brand-green-light, #2f8f7a), #a8d0c4);
  position: relative;
}

.portal-care-flow-bridge-arrow::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -1px;
  margin-left: -5px;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 7px solid var(--portal-brand-green-light, #2f8f7a);
}

.portal-care-flow-return {
  margin-top: 1.15rem;
}

.portal-care-flow-loop {
  display: grid;
  grid-template-columns: 48px 1fr 48px;
  align-items: center;
  gap: 0.65rem;
  margin: 0;
  padding: 0.55rem 0.7rem;
  text-align: center;
  border: 1px dashed #b7d9cd;
  border-radius: 999px;
  background: linear-gradient(90deg, #edf7f3 0%, #f4faf7 50%, #edf7f3 100%);
  color: var(--portal-brand-green, #1e6b5c);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  width: 100%;
  box-sizing: border-box;
}

.portal-care-flow-loop-text {
  min-width: 0;
  text-align: center;
}

.portal-care-flow-return-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  justify-self: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: #fff;
  border: 1.5px solid #b7d9cd;
  color: var(--portal-brand-green, #1e6b5c);
  font-size: 1.05rem;
  line-height: 1;
  box-shadow: 0 2px 8px rgba(30, 107, 92, 0.08);
}

.portal-care-flow-return-arrow i {
  display: block;
  line-height: 1;
}

.portal-hospital-pathway-cta {
  margin-top: 2.2rem;
  padding: 1.55rem 1.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 1rem 1.5rem;
  text-align: center;
  background: #edf7f3;
  border: 1px solid #d4ebe3;
  border-radius: 12px;
}

.portal-hospital-pathway-cta-text {
  margin: 0;
  color: #3d524c;
  font-size: 1.08rem;
  line-height: 1.65;
}

.portal-hospital-pathway-btn {
  background: var(--portal-brand-green, #1e6b5c) !important;
  border-color: var(--portal-brand-green, #1e6b5c) !important;
  color: #fff !important;
  font-size: 1.05rem !important;
  padding: 0.7rem 1.55rem !important;
}

.portal-hospital-pathway-btn:hover {
  background: var(--portal-brand-green-light, #2f8f7a) !important;
  border-color: var(--portal-brand-green-light, #2f8f7a) !important;
  color: #fff !important;
}

@media (min-width: 992px) {
  .portal-care-flow-board {
    padding: 1.65rem 1.5rem 1.45rem;
  }

  .portal-care-flow-track {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 72px minmax(0, 1.35fr) 72px minmax(0, 1fr);
    grid-template-rows: minmax(240px, auto);
    gap: 0.75rem 0.35rem;
    align-items: stretch;
  }

  .portal-care-stage--pre {
    grid-column: 1;
    grid-row: 1;
  }

  .portal-care-flow-bridge--1 {
    grid-column: 2;
    grid-row: 1;
  }

  .portal-care-stage--mid {
    grid-column: 3;
    grid-row: 1;
  }

  .portal-care-flow-bridge--2 {
    grid-column: 4;
    grid-row: 1;
  }

  .portal-care-stage--post {
    grid-column: 5;
    grid-row: 1;
  }

  .portal-care-flow-bridge {
    align-self: center;
    justify-self: center;
  }

  .portal-care-flow-bridge-arrow {
    order: 2;
    width: 42px;
    height: 3px;
    background: linear-gradient(90deg, var(--portal-brand-green-light, #2f8f7a), #a8d0c4);
  }

  .portal-care-flow-bridge-arrow::after {
    left: auto;
    right: -1px;
    top: 50%;
    bottom: auto;
    margin: -5px 0 0;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    border-left: 7px solid var(--portal-brand-green-light, #2f8f7a);
    border-right: 0;
  }

  .portal-care-flow-return {
    margin-top: 0.95rem;
  }

  .portal-care-flow-loop {
    grid-template-columns: minmax(0, 1fr) 72px minmax(0, 1.35fr) 72px minmax(0, 1fr);
    padding: 0.55rem 0;
    font-size: 1rem;
  }

  .portal-care-flow-return-arrow {
    width: 38px;
    height: 38px;
    font-size: 1.2rem;
  }

  .portal-care-flow-return-arrow--up {
    grid-column: 1;
  }

  .portal-care-flow-loop-text {
    grid-column: 2 / 5;
  }

  .portal-care-flow-return-arrow--down {
    grid-column: 5;
  }

  .portal-care-stage-scenes {
    grid-template-columns: 1fr 1fr;
    flex: 1;
  }

  .portal-care-stage--mid .portal-care-scene {
    height: 100%;
  }
}

/* Hospital — partner clinics marquee */
.portal-clinic-section {
  background: linear-gradient(180deg, #fff 0%, #f7fbf9 100%);
}

.portal-clinic-header {
  margin: 0 0 1.75rem;
  text-align: center;
}

.portal-clinic-title {
  margin: 0;
  font-size: clamp(1.65rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.35;
}

.portal-clinic-divider {
  width: 48px;
  height: 3px;
  margin: 1rem auto;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-clinic-desc {
  margin: 0 auto;
  max-width: 40rem;
  color: #5f6764;
  font-size: 1rem;
  line-height: 1.8;
}

.portal-clinic-marquee {
  position: relative;
  overflow: hidden;
  padding: 0.25rem 0 0.5rem;
}

.portal-clinic-marquee::before,
.portal-clinic-marquee::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 56px;
  z-index: 2;
  pointer-events: none;
}

.portal-clinic-marquee::before {
  left: 0;
  background: linear-gradient(90deg, #f7fbf9 15%, rgba(247, 251, 249, 0));
}

.portal-clinic-marquee::after {
  right: 0;
  background: linear-gradient(270deg, #f7fbf9 15%, rgba(247, 251, 249, 0));
}

.portal-clinic-swiper {
  width: 100%;
}

.portal-clinic-swiper .swiper-wrapper {
  transition-timing-function: linear;
}

.portal-clinic-swiper .swiper-slide {
  width: min(88vw, 440px);
}

.portal-clinic-card {
  margin: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid #dce8e3;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 6px 20px rgba(30, 107, 92, 0.07);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.portal-clinic-card:hover {
  box-shadow: 0 12px 28px rgba(30, 107, 92, 0.12);
  transform: translateY(-2px);
}

.portal-clinic-card picture {
  display: block;
  line-height: 0;
}

.portal-clinic-img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 11;
  object-fit: cover;
}

.portal-clinic-body {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 1.05rem 1.15rem 1.2rem;
  flex: 1;
}

.portal-clinic-name {
  margin: 0;
  font-size: 1.08rem;
  font-weight: 600;
  color: #1a2e28;
  line-height: 1.4;
}

.portal-clinic-intro {
  margin: 0;
  color: #5f6764;
  font-size: 0.92rem;
  line-height: 1.7;
}

@media (min-width: 1200px) {
  .portal-clinic-swiper .swiper-slide {
    width: 480px;
  }
}

@media (max-width: 767.98px) {
  .portal-clinic-marquee::before,
  .portal-clinic-marquee::after {
    width: 28px;
  }

  .portal-clinic-swiper .swiper-slide {
    width: min(86vw, 360px);
  }
}

.portal-about-hero > .portal-about-hero-overlay {
  display: flex;
  align-items: center;
  min-height: 320px;
  padding-top: 80px;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.08) 0%,
    rgba(18, 21, 24, 0.18) 100%
  );
}

.portal-about-hero > .portal-about-hero-overlay .container {
  padding-top: 56px !important;
  padding-bottom: 56px !important;
}

.portal-about-hero h1 {
  color: #fff;
  text-shadow: 0 2px 18px rgba(18, 21, 24, 0.35);
}

@media (max-width: 767.98px) {
  .portal-about-hero > .portal-about-hero-overlay {
    min-height: 260px;
    padding-top: 70px;
  }

  .portal-about-hero > .portal-about-hero-overlay .container {
    padding-top: 42px !important;
    padding-bottom: 42px !important;
  }
}

.section-xl.bg-overlay.bg-image.parallax > .bg-dark-05 {
  display: flex;
  align-items: center;
  min-height: 320px;
  padding-top: 80px;
}

.section-xl.bg-overlay.bg-image.parallax > .bg-dark-05 .container {
  padding-top: 72px !important;
  padding-bottom: 72px !important;
}

.section-xl.bg-overlay.bg-image.parallax .container h1.letter-spacing-1 {
  letter-spacing: 0.14em;
  line-height: 1.45;
}

/* Hero / carousel titles */
.section-fullscreen .container h5.fw-normal,
.bg-gradient-2 .container h5.fw-normal {
  margin-bottom: 1.5rem !important;
}

.section-fullscreen .container h1,
.bg-gradient-2 .container h1.display-4,
.corporate-business .section-lg .container h1 {
  margin-bottom: 1.75rem;
  line-height: 1.4;
  letter-spacing: 0.06em;
}

.section-fullscreen .container h1 + .button,
.section-fullscreen .container h1 + a.button,
.bg-gradient-2 .container h1 + ul,
.corporate-business .section-lg .container h1 + div {
  margin-top: 2.25rem !important;
}

/* Section headings below page banner */
.section .display-6,
.section.border-top .display-6 {
  line-height: 1.5;
  margin-bottom: 0.75rem;
}

.section .mb-5 .display-6 + p,
.section.border-top .display-6 + p {
  margin-top: 1.25rem;
}

@media (max-width: 767.98px) {
  .section-xl.bg-overlay.bg-image.parallax > .bg-dark-05 {
    min-height: 260px;
    padding-top: 70px;
  }

  .section-xl.bg-overlay.bg-image.parallax > .bg-dark-05 .container {
    padding-top: 52px !important;
    padding-bottom: 52px !important;
  }

  .section-fullscreen .container h5.fw-normal,
  .bg-gradient-2 .container h5.fw-normal {
    margin-bottom: 1.25rem !important;
  }

  .section-fullscreen .container h1,
  .bg-gradient-2 .container h1.display-4 {
    margin-bottom: 1.25rem;
    letter-spacing: 0.04em;
  }
}

/* Portal navigation: hover dropdown (level 2 menu) */
:root {
  --portal-nav-accent: #e0536f;
  --portal-header-height: 80px;
  --portal-hero-available-height: calc(100svh - var(--portal-header-height));
  --portal-banner-aspect: 1920 / 712;
  --portal-home-hero-aspect: 1920 / 1081;
  --portal-brand-green: #1e6b5c;
  --portal-brand-green-light: #2f8f7a;
  --portal-brand-green-soft: #4aa88f;
  --portal-brand-green-pale: #edf7f3;
  --portal-brand-green-mist: #f6fbf9;
}

.header.portal-header {
  background: linear-gradient(
    105deg,
    rgba(228, 244, 238, 0.98) 0%,
    rgba(241, 250, 247, 0.96) 42%,
    rgba(241, 250, 247, 0.98) 100%
  );
  border-bottom: none;
  box-shadow: 0 4px 14px rgba(30, 107, 92, 0.04);
}

.header.portal-header.sticky-autohide,
.header.portal-header.sticky {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 993;
  box-shadow: 0 4px 16px rgba(30, 107, 92, 0.05);
}

.header.portal-header > .container {
  position: relative;
  z-index: 1;
  padding-left: 12px;
}

.header.portal-header .header-logo {
  margin-left: 0;
  overflow: visible;
}

@media (min-width: 992px) {
  .header.portal-header > .container {
    padding-left: 0;
  }

  .header.portal-header .header-logo {
    margin-left: -12px;
  }

  /* True center nav: equal side columns balance logo vs menu-extra */
  .header.portal-header.center > .container {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
  }

  .header.portal-header.center .header-logo {
    grid-column: 1;
    justify-self: start;
    margin-right: 0;
  }

  .header.portal-header.center .portal-nav-menu {
    grid-column: 2;
    justify-self: center;
    height: 80px;
    display: flex;
    align-items: center;
  }

  .header.portal-header.center .portal-nav-menu .nav {
    position: static;
    width: auto;
    text-align: center;
  }

  .header.portal-header.center .header-menu-extra {
    grid-column: 3;
    justify-self: end;
  }
}

.header.portal-header .header-logo .portal-logo-link,
.header.portal-header .header-logo .portal-logo-text {
  color: var(--portal-brand-green);
}

.header.portal-header .header-logo .portal-logo-img {
  width: 52px;
  height: 52px;
  max-height: none;
}

.header.portal-header .portal-nav-menu .nav-link,
.header.portal-header .header-menu-extra a:not([class^="button"]) {
  color: #2a4a42;
}

.header.portal-header .header-toggle span,
.header.portal-header .header-toggle span:before,
.header.portal-header .header-toggle span:after {
  background: var(--portal-brand-green);
}

.header.portal-header .lang-switcher::before {
  background: rgba(30, 107, 92, 0.18);
}

.header.portal-header .header-menu-extra .lang-switcher-toggle {
  color: var(--portal-brand-green);
}

.header-placeholder {
  background: linear-gradient(
    105deg,
    rgba(228, 244, 238, 0.98) 0%,
    rgba(241, 250, 247, 0.96) 42%,
    rgba(241, 250, 247, 0.98) 100%
  );
}

html,
body {
  margin: 0;
  padding: 0;
}

@media (min-width: 992px) {
  .header.portal-header .portal-nav-menu .nav {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: center;
    column-gap: 0;
    gap: 0;
  }

  .header.portal-header .portal-nav-menu .nav .nav-item {
    position: relative;
    display: block;
    flex: 0 0 auto;
    margin: 0 !important;
  }

  .portal-nav-menu .nav-item::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    height: 12px;
  }

  .header.portal-header .portal-nav-menu .nav .nav-item > .nav-link,
  .header.portal-header .portal-nav-menu .nav .nav-item > .nav-link.d-toggle {
    padding: 0 18px;
    font-size: 15px;
    white-space: nowrap;
    transition: color 0.2s;
  }

  .portal-nav-menu .nav-item:hover > .nav-link,
  .portal-nav-menu .nav-item > .nav-link.active {
    color: var(--portal-brand-green);
  }

  .portal-nav-menu .nav-item > .nav-link:before {
    display: none;
  }

  .header.portal-header .portal-nav-menu .nav .nav-item > .nav-dropdown-toggle {
    display: none !important;
    position: absolute !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    pointer-events: none !important;
    border: 0 !important;
  }

  .header.portal-header .portal-nav-menu .nav .nav-item > .nav-dropdown {
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(8px);
    width: auto;
    min-width: 168px;
    margin-top: 8px;
    padding: 0;
    border: 1px solid #ececec;
    border-radius: 0;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
    overflow: hidden;
  }

  .portal-nav-menu .nav-dropdown:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 2px;
    background: var(--portal-brand-green);
  }

  .portal-nav-menu .nav-item:hover > .nav-dropdown {
    transform: translateX(-50%) translateY(0);
    visibility: visible;
    opacity: 1;
  }

  .portal-nav-menu .nav-dropdown-item {
    padding: 0;
    margin: 0;
    border-bottom: 1px solid #f2f2f2;
  }

  .portal-nav-menu .nav-dropdown-item:last-child {
    border-bottom: none;
  }

  .portal-nav-menu .nav-dropdown-link {
    display: block;
    padding: 11px 24px;
    text-align: center;
    color: #333;
    border-radius: 0;
    white-space: nowrap;
  }

  .portal-nav-menu .nav-dropdown-link:hover,
  .portal-nav-menu .nav-dropdown-link:focus {
    background: var(--portal-brand-green-pale);
    color: var(--portal-brand-green);
    padding: 11px 24px;
  }
}

@media (max-width: 991.98px) {
  .portal-nav-menu .nav-dropdown {
    position: static;
    visibility: visible;
    opacity: 1;
    transform: none;
    width: 100%;
    box-shadow: none;
    border: 0;
    padding: 0 0 8px 12px;
    background: transparent;
  }

  .portal-nav-menu .nav-dropdown:before {
    display: none;
  }

  .portal-nav-menu .nav-dropdown-link {
    text-align: left;
    padding: 8px 0;
  }
}

@supports (height: 100dvh) {
  :root {
    --portal-hero-available-height: calc(100dvh - var(--portal-header-height));
  }
}

/* Home hero — full width, height capped to viewport */
.portal-hero-band {
  width: 100%;
  background: #f5faf8;
}

.portal-hero-section {
  position: relative;
  width: 100%;
  --portal-hero-h: min(calc(100vw * 1081 / 1920), var(--portal-hero-available-height));
  height: var(--portal-hero-h);
  max-height: var(--portal-hero-available-height);
  margin: 0;
  overflow: hidden;
}

@supports not (height: min(1px, 2px)) {
  .portal-hero-section {
    width: 100%;
    height: calc(100vw * 1081 / 1920);
    max-height: var(--portal-hero-available-height);
  }
}

@media (max-width: 767.98px) {
  .portal-hero-section {
    /* 手机端按宽高比会过矮，文案与下方区块会挤在一起 */
    --portal-hero-h: min(72svh, 640px);
    height: var(--portal-hero-h);
    min-height: 520px;
    max-height: none;
  }
}

@supports not (aspect-ratio: 1920 / 1081) {
  .portal-about-hero--banner {
    height: calc(100vw * 712 / 1920);
  }
}

.portal-home-hero {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0 !important;
  z-index: 1;
}

.portal-home-hero.owl-carousel,
.portal-home-hero .owl-stage-outer,
.portal-home-hero .owl-stage,
.portal-home-hero .owl-item {
  height: 100% !important;
  max-height: 100% !important;
}

.portal-home-hero.owl-carousel .owl-stage-outer {
  overflow: hidden;
}

.portal-home-hero .owl-item {
  height: 100% !important;
  z-index: 1;
}

.portal-home-hero .owl-item.active {
  z-index: 3;
}

.portal-home-hero .owl-item > .portal-hero-image-only,
.portal-home-hero .owl-item > .portal-hero-slide-app,
.portal-home-hero .owl-item > div {
  width: 100% !important;
  height: 100% !important;
}

.portal-home-hero .portal-hero-image-only,
.portal-home-hero .portal-hero-slide-app {
  width: 100% !important;
  height: 100% !important;
  max-height: 100% !important;
  min-height: 0 !important;
  line-height: 0;
}

.portal-hero-slide-app-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  width: 100%;
}

.portal-hero-pagination {
  position: absolute;
  left: 50%;
  bottom: 16px;
  transform: translateX(-50%);
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 12px;
  background: rgba(18, 21, 24, 0.5);
  border-radius: 20px;
  pointer-events: auto;
}

.portal-hero-pagination-dot {
  position: relative;
  width: 20px;
  height: 20px;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
}

.portal-hero-pagination-dot::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.55);
  transform: translate(-50%, -50%);
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.portal-hero-pagination-dot.is-active::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 1px solid #fff;
  border-radius: 50%;
}

.portal-hero-pagination-dot.is-active::after {
  background: #fff;
  opacity: 1;
}

.portal-hero-pagination-dot:hover::after {
  opacity: 1;
}

@media (max-width: 991.98px) {
  :root {
    --portal-header-height: 70px;
  }

  .portal-hero-pagination {
    bottom: 12px;
    padding: 4px 10px;
  }
}

.portal-hero-image-only {
  position: relative;
  overflow: hidden;
  line-height: 0;
}

.portal-hero-image-only picture {
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
}

.portal-home-hero.owl-carousel .owl-item img.portal-hero-img,
.portal-home-hero .owl-item .portal-hero-img {
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: fill;
  display: block !important;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

.portal-home-hero .owl-stage-outer,
.portal-home-hero .owl-stage,
.portal-home-hero .owl-item {
  transform: translate3d(0, 0, 0);
}

.portal-hero-image-link {
  position: absolute;
  inset: 0;
  z-index: 2;
  border: 0;
  padding: 0;
  margin: 0;
  background: transparent;
  cursor: pointer;
}

.portal-hero-banner-4 .portal-hero-image-link {
  z-index: 3;
}

.portal-home-hero .owl-item:not(.active) .portal-hero-image-link,
.portal-home-hero .owl-item:not(.active) .portal-hero-banner-1-copy {
  visibility: hidden;
  pointer-events: none;
}

/* Banner 1 — Frame32 3_8：照片 + Rectangle19 遮罩叠层 (1920×1080) */
.portal-hero-banner-1 {
  container-type: size;
  container-name: hero-b1;
  background-color: #fff;
}

.portal-hero-banner-1-stack {
  position: absolute;
  inset: 0;
  z-index: 0;
  /* Frame32 3_8：照片层 + Rectangle19 作 mask（第二张图不单独绘制，background-size: 0 0） */
  -webkit-mask-image: url("../images/slides/banner-1/Rectangle19.png");
  mask-image: url("../images/slides/banner-1/Rectangle19.png");
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  -webkit-mask-position: 0 0;
  mask-position: 0 0;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

.portal-hero-banner-1-stack picture {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
}

.portal-home-hero .owl-item img.portal-hero-banner-1-photo,
.portal-home-hero .portal-hero-banner-1-photo {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}

.portal-hero-banner-1-wash {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  /* Frame32 3_9 */
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-position: center;
  background-image: url("data:image/svg+xml;utf8,%3Csvg%20viewBox%3D'0%200%201920%201080'%20preserveAspectRatio%3D'none'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%0A%20%20%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%3ClinearGradient%20id%3D'grad'%20gradientUnits%3D'objectBoundingBox'%20x1%3D'0'%20y1%3D'0.5'%20x2%3D'1'%20y2%3D'0.5'%20gradientTransform%3D'matrix(-1.0000%2C%200.0000%2C%20-0.0000%2C%20-3.1605%2C%201.0000%2C%202.0802)'%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cstop%20stop-color%3D'rgba(14%2C94%2C80%2C0)'%20offset%3D'0.4038461446762085'%2F%3E%3Cstop%20stop-color%3D'rgba(13%2C148%2C136%2C0.15)'%20offset%3D'1'%2F%3E%0A%20%20%20%20%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%20%20%3Crect%20width%3D'100%25'%20height%3D'100%25'%20fill%3D'url(%23grad)'%2F%3E%0A%20%20%20%20%3C%2Fsvg%3E");
}

.portal-hero-banner-1-copy {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  line-height: normal;
}

.portal-hero-banner-1-copy .portal-hero-b1-cta {
  pointer-events: auto;
}

.portal-hero-b1-lead {
  position: absolute;
  left: 13.59375%; /* 261/1920 */
  top: 29.907%; /* 323/1080 */
  margin: 0;
  max-width: 32.8125%; /* 630/1920 */
  font-size: 1.5625cqw; /* 30/1920 */
  line-height: 2.1875cqw; /* 42/1920 */
  letter-spacing: 0.03em;
  color: #333;
  font-weight: 400;
  white-space: nowrap;
}

.portal-hero-b1-lead .is-accent {
  color: #0d9488;
  font-weight: 700;
}

.portal-hero-b1-title {
  position: absolute;
  left: 8.59375%; /* 165/1920 */
  top: 34.537%; /* 373/1080 */
  margin: 0;
  font-size: 5.20833cqw; /* 100/1920 */
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0;
  white-space: nowrap;
  color: transparent;
  background-image: linear-gradient(90deg, #0d9488 0%, #0a7053 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.portal-hero-b1-features {
  position: absolute;
  left: 14.2708%; /* 274/1920 */
  top: 48.0556%; /* 519/1080 */
  margin: 0;
  font-size: 1.875cqw; /* 36/1920 */
  font-weight: 700;
  line-height: 1.2;
  color: #0d9488;
  white-space: nowrap;
}

.portal-hero-b1-cta {
  position: absolute;
  left: 21.4583%; /* 412/1920 */
  top: 54.722%; /* 591/1080 */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 17.0833%; /* 328/1920 */
  height: 5.5556%; /* 60/1080 */
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 1000px;
  background: #0d9488;
  color: #fff;
  font-size: 1.4583cqw; /* 28/1920 */
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.2s ease, transform 0.2s ease;
}

.portal-hero-b1-cta:hover,
.portal-hero-b1-cta:focus-visible {
  background: #0b7f75;
  outline: none;
}

.portal-hero-b1-trust {
  position: absolute;
  left: 20.78125%; /* 399/1920 */
  top: 61.944%; /* 669/1080 */
  margin: 0;
  font-size: 1.25cqw; /* 24/1920 */
  font-weight: 400;
  line-height: 1.2;
  color: #666;
  white-space: nowrap;
}

@media (max-width: 767.98px) {
  .portal-hero-banner-1-copy {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 12px;
    padding: 64px 20px 72px;
    box-sizing: border-box;
  }

  .portal-hero-b1-lead,
  .portal-hero-b1-title,
  .portal-hero-b1-features,
  .portal-hero-b1-cta,
  .portal-hero-b1-trust {
    position: relative;
    left: auto;
    top: auto;
    width: auto;
    max-width: 100%;
  }

  .portal-hero-b1-lead {
    font-size: clamp(13px, 3.5vw, 16px);
    line-height: 1.45;
    white-space: normal;
  }

  .portal-hero-b1-title {
    font-size: clamp(26px, 8vw, 36px);
    white-space: normal;
    line-height: 1.25;
  }

  .portal-hero-b1-features {
    font-size: clamp(13px, 3.6vw, 16px);
    white-space: normal;
    line-height: 1.4;
  }

  .portal-hero-b1-cta {
    width: auto;
    min-width: 0;
    height: auto;
    padding: 0.75em 1.5em;
    font-size: clamp(14px, 3.8vw, 16px);
    margin-top: 4px;
  }

  .portal-hero-b1-trust {
    font-size: clamp(12px, 3.2vw, 14px);
    white-space: normal;
    line-height: 1.4;
  }

  .portal-hero-pagination {
    bottom: 12px;
    padding: 4px 10px;
  }
}

.portal-home-hero.owl-nav-overlay .owl-nav {
  z-index: 6;
  top: 50%;
  bottom: auto;
  margin-top: 0;
  transform: translateY(-50%);
}

.portal-hero-desc {
  font-size: 1.15rem;
  line-height: 1.7;
  opacity: 0.92;
}

.portal-hero-service-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px 28px;
}

.portal-hero-service-list li {
  position: relative;
  color: #fff;
  font-size: 1.05rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  padding-left: 18px;
}

.portal-hero-service-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #fff;
  transform: translateY(-50%);
  opacity: 0.9;
}

@media (max-width: 575.98px) {
  .portal-hero-service-list {
    flex-direction: column;
    align-items: center;
    gap: 10px;
  }

  .portal-hero-desc {
    font-size: 1rem;
  }
}

/* Cases — baby wall */
.portal-baby-wall-section {
  padding-left: 0;
  padding-right: 0;
  padding-bottom: 0;
  background: #fff;
}

.portal-baby-wall-header {
  margin: 0 0 1.75rem;
  text-align: center;
}

.portal-baby-wall-title {
  margin: 0;
  font-size: clamp(1.65rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.35;
}

.portal-baby-wall-divider {
  width: 48px;
  height: 3px;
  margin: 1rem auto 0;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-baby-wall-photo {
  width: 100%;
  overflow: hidden;
  background: #f5f1e8;
}

.portal-baby-wall-photo picture {
  display: block;
  width: 100%;
}

.portal-baby-wall-img {
  display: block;
  width: 100%;
  max-width: none;
  height: auto;
}

/* Cases — story share */
.portal-case-share-section {
  background: #fff;
}

.portal-case-share-header {
  margin: 0 0 1.75rem;
  text-align: center;
}

.portal-case-share-title {
  margin: 0;
  font-size: clamp(1.65rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.35;
}

.portal-case-share-divider {
  width: 48px;
  height: 3px;
  margin: 1rem auto;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-case-share-desc {
  margin: 0 auto;
  max-width: 36rem;
  color: #5f6764;
  font-size: 1rem;
  line-height: 1.8;
}

.portal-case-share-card {
  height: 100%;
  padding: 1.5rem 1.6rem;
  background: linear-gradient(180deg, #fff 0%, #f7fbf9 100%);
  border: 1px solid #dce8e3;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(30, 107, 92, 0.05);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.portal-case-share-card:hover {
  border-color: #c5ddd4;
  box-shadow: 0 12px 28px rgba(30, 107, 92, 0.1);
  transform: translateY(-2px);
}

.portal-case-share-marquee {
  position: relative;
  padding-bottom: 0.5rem;
}

.portal-case-share-swiper {
  overflow: hidden;
  padding: 0.25rem 0.15rem 2.5rem;
}

.portal-case-share-swiper .swiper-slide {
  height: auto;
}

.portal-case-share-pagination {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  gap: 0.45rem;
}

.portal-case-share-pagination .swiper-pagination-bullet {
  width: 8px;
  height: 8px;
  margin: 0 !important;
  background: #b7ccc4;
  opacity: 1;
  transition: background 0.2s ease, transform 0.2s ease;
}

.portal-case-share-pagination .swiper-pagination-bullet-active {
  background: var(--portal-brand-green, #1e6b5c);
  transform: scale(1.15);
}

.portal-case-share-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 1rem;
}

.portal-case-share-num {
  font-family: inherit;
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-case-share-tag {
  display: inline-block;
  padding: 0.28rem 0.7rem;
  font-size: 0.78rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--portal-brand-green, #1e6b5c);
  background: #edf7f3;
  border: 1px solid #d4ebe3;
  border-radius: 999px;
}

.portal-case-share-card-title {
  margin: 0 0 0.9rem;
  font-size: 1.15rem;
  font-weight: 600;
  color: #243430;
  line-height: 1.45;
}

.portal-case-share-meta {
  margin: 0 0 1rem;
  padding: 0;
  list-style: none;
}

.portal-case-share-meta li {
  position: relative;
  margin: 0 0 0.45rem;
  padding-left: 0.9rem;
  color: #4a5551;
  font-size: 0.92rem;
  line-height: 1.65;
}

.portal-case-share-meta li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--portal-brand-green-light, #2f8f7a);
}

.portal-case-share-card-desc {
  margin: 0;
  color: #6d7773;
  font-size: 0.92rem;
  line-height: 1.75;
}

/* News — date + title list */
.portal-news-section {
  background: #fff;
}

.portal-news-header {
  margin: 0 0 1.75rem;
  text-align: center;
}

.portal-news-heading {
  margin: 0;
  font-size: clamp(1.65rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.35;
}

.portal-news-divider {
  width: 48px;
  height: 3px;
  margin: 1rem auto 0;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-news-list {
  max-width: 920px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}

.portal-news-item {
  display: flex;
  align-items: stretch;
  gap: 1.25rem;
  text-decoration: none;
  color: inherit;
  transition: opacity 0.2s ease;
}

.portal-news-item:hover {
  opacity: 0.92;
}

.portal-news-item:hover .portal-news-title {
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-news-date {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  align-self: stretch;
  min-width: 6.5rem;
  padding: 0.55rem 0.7rem;
  text-align: center;
  font-size: 0.92rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--portal-brand-green, #1e6b5c);
  white-space: nowrap;
  background: #edf7f3;
  border: 1px solid #d4ebe3;
  border-radius: 6px;
}

.portal-news-body {
  min-width: 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.portal-news-title {
  margin: 0 0 0.55rem;
  font-size: clamp(1.05rem, 1.6vw, 1.2rem);
  font-weight: 700;
  color: #1a1a1a;
  line-height: 1.45;
}

.portal-news-excerpt {
  margin: 0;
  color: #777;
  font-size: 0.95rem;
  line-height: 1.75;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

@media (max-width: 575.98px) {
  .portal-news-item {
    gap: 0.9rem;
  }

  .portal-news-date {
    min-width: 0;
    padding: 0.45rem 0.55rem;
    font-size: 0.82rem;
  }

  .portal-news-title {
    font-size: 1.02rem;
  }

  .portal-news-excerpt {
    font-size: 0.9rem;
  }
}

/* News — detail */
.portal-news-detail-section {
  background: #fff;
}

.portal-news-breadcrumb {
  margin: 0 0 1.5rem;
  color: #8a9190;
  font-size: 0.9rem;
}

.portal-news-breadcrumb a {
  color: #5f6764;
  text-decoration: none;
}

.portal-news-breadcrumb a:hover {
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-news-detail {
  max-width: 860px;
  margin: 0 auto;
}

.portal-news-detail-title {
  margin: 0 0 1rem;
  font-size: clamp(1.35rem, 2.4vw, 1.85rem);
  font-weight: 700;
  color: #1a1a1a;
  line-height: 1.45;
  text-align: center;
}

.portal-news-detail-meta {
  margin: 0 0 1.75rem;
  text-align: center;
  color: #8a9190;
  font-size: 0.92rem;
}

.portal-news-detail-body {
  color: #444;
  font-size: 1rem;
  line-height: 1.9;
}

.portal-news-detail-body p {
  margin: 0 0 1rem;
}

.portal-news-detail-body img {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 1.1rem auto;
  border-radius: 6px;
}

.portal-news-detail-nav {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid #e6eeea;
}

.portal-news-detail-nav-links {
  min-width: 0;
  flex: 1;
}

.portal-news-detail-prev,
.portal-news-detail-next {
  margin: 0 0 0.45rem;
  color: #5f6764;
  font-size: 0.92rem;
  line-height: 1.6;
}

.portal-news-detail-prev a,
.portal-news-detail-next a {
  color: var(--portal-brand-green, #1e6b5c);
  text-decoration: none;
}

.portal-news-detail-prev a:hover,
.portal-news-detail-next a:hover {
  text-decoration: underline;
}

.portal-news-detail-back {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 96px;
  height: 36px;
  padding: 0 1rem;
  color: #fff;
  font-size: 0.9rem;
  text-decoration: none;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 6px;
  white-space: nowrap;
}

.portal-news-detail-back:hover {
  color: #fff;
  background: var(--portal-brand-green-light, #2f8f7a);
}

@media (max-width: 575.98px) {
  .portal-news-detail-nav {
    flex-direction: column;
  }

  .portal-news-detail-back {
    align-self: flex-end;
  }
}

/* Service items page */
.portal-service-items-hero {
  background: linear-gradient(180deg, #fff 0%, #f7fbf9 100%);
  padding-bottom: 0.5rem;
}

.portal-service-items-header {
  margin: 0 auto;
  max-width: 40rem;
  text-align: center;
}

.portal-service-items-title {
  margin: 0;
  font-size: clamp(1.65rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.35;
}

.portal-service-items-divider {
  width: 48px;
  height: 3px;
  margin: 1rem auto;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 2px;
}

.portal-service-items-desc {
  margin: 0;
  color: #5f6764;
  font-size: 1rem;
  line-height: 1.8;
}

.portal-service-items-section {
  background: #fff;
}

.portal-service-item-card {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 1.5rem 1.35rem 1.4rem;
  background: linear-gradient(180deg, #fff 0%, #f7fbf9 100%);
  border: 1px solid #dce8e3;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(30, 107, 92, 0.05);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.portal-service-item-card:hover {
  border-color: #c5ddd4;
  box-shadow: 0 12px 28px rgba(30, 107, 92, 0.1);
  transform: translateY(-2px);
}

.portal-service-item-card--featured {
  border-color: var(--portal-brand-green-light, #2f8f7a);
  box-shadow: 0 10px 28px rgba(30, 107, 92, 0.12);
}

.portal-service-item-badge {
  position: absolute;
  top: 0.9rem;
  right: 0.9rem;
  padding: 0.2rem 0.55rem;
  font-size: 0.75rem;
  font-weight: 600;
  color: #fff;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 999px;
}

.portal-service-item-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  margin-bottom: 0.85rem;
  color: var(--portal-brand-green, #1e6b5c);
  background: #edf7f3;
  border: 1px solid #d4ebe3;
  border-radius: 50%;
  font-size: 1.35rem;
}

.portal-service-item-name {
  margin: 0 0 0.35rem;
  font-size: 1.12rem;
  font-weight: 600;
  color: #243430;
  line-height: 1.4;
}

.portal-service-item-tag {
  margin: 0 0 1rem;
  color: #6d7773;
  font-size: 0.9rem;
  line-height: 1.5;
}

.portal-service-item-list {
  margin: 0 0 1.25rem;
  padding: 0;
  list-style: none;
  flex: 1;
}

.portal-service-item-list li {
  position: relative;
  margin: 0 0 0.45rem;
  padding-left: 0.9rem;
  color: #4a5551;
  font-size: 0.9rem;
  line-height: 1.6;
}

.portal-service-item-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.6em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--portal-brand-green-light, #2f8f7a);
}

.portal-service-item-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: flex-start;
  min-height: 38px;
  padding: 0 1.1rem;
  color: #fff;
  font-size: 0.9rem;
  font-weight: 600;
  text-decoration: none;
  background: var(--portal-brand-green, #1e6b5c);
  border-radius: 999px;
}

.portal-service-item-btn:hover {
  color: #fff;
  background: var(--portal-brand-green-light, #2f8f7a);
}

.portal-service-extra-card {
  padding: 1.35rem 1.4rem;
  background: #fff;
  border: 1px solid #dce8e3;
  border-left: 3px solid var(--portal-brand-green, #1e6b5c);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(30, 107, 92, 0.05);
}

.portal-service-extra-num {
  display: inline-block;
  margin-bottom: 0.55rem;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--portal-brand-green, #1e6b5c);
}

.portal-service-extra-title {
  margin: 0 0 0.45rem;
  font-size: 1.05rem;
  font-weight: 600;
  color: #243430;
}

.portal-service-extra-desc {
  margin: 0;
  color: #6d7773;
  font-size: 0.9rem;
  line-height: 1.7;
}

.portal-service-terms {
  padding: 1.5rem 1.55rem 1.35rem;
  background: linear-gradient(180deg, #f3faf7 0%, #edf7f3 100%);
  border: 1px solid #d4ebe3;
  border-radius: 14px;
}

.portal-service-terms-row {
  display: grid;
  grid-template-columns: 7.5rem 1fr;
  gap: 0.75rem 1.1rem;
  padding: 0;
  border-bottom: 0;
}

.portal-service-terms-label {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--portal-brand-green, #1e6b5c);
  line-height: 1.55;
}

.portal-service-terms-text {
  margin: 0;
  color: #3d524c;
  font-size: 0.95rem;
  line-height: 1.7;
}

@media (max-width: 767.98px) {
  .portal-service-terms-row {
    grid-template-columns: 1fr;
    gap: 0.25rem;
  }
}

/* Theme button on portal pages (no master-color-blue): solid brand CTA */
body:not(.theme-color-blue) .button-theme {
  background: var(--portal-brand-green, #1e6b5c) !important;
  border-color: var(--portal-brand-green, #1e6b5c) !important;
  color: #fff !important;
  box-shadow: 0 8px 24px rgba(30, 107, 92, 0.28);
}

body:not(.theme-color-blue) .button-theme:hover,
body:not(.theme-color-blue) .button-theme:focus {
  background: var(--portal-brand-green-light, #2f8f7a) !important;
  border-color: var(--portal-brand-green-light, #2f8f7a) !important;
  color: #fff !important;
  box-shadow: 0 10px 28px rgba(30, 107, 92, 0.34);
  opacity: 1;
}

.portal-service-items-note {
  margin: 0;
  text-align: center;
  color: #8a9190;
  font-size: 0.88rem;
  line-height: 1.7;
}

/* 404 page */
.portal-404-section {
  min-height: calc(100vh - 280px);
  display: flex;
  align-items: center;
  background: linear-gradient(180deg, #f6fbf9 0%, #fff 55%, #f7fbf9 100%);
  padding-top: 4rem;
  padding-bottom: 4rem;
}

.portal-404-card {
  max-width: 36rem;
  margin: 0 auto;
  text-align: center;
  padding: 2.5rem 1.5rem;
}

.portal-404-code {
  margin: 0 0 0.75rem;
  font-size: clamp(5rem, 16vw, 7.5rem);
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.04em;
  color: var(--portal-brand-green, #1e6b5c);
  opacity: 0.18;
}

.portal-404-heading {
  margin: 0 0 0.85rem;
  font-size: clamp(1.45rem, 3vw, 1.85rem);
  font-weight: 600;
  color: #243430;
  line-height: 1.4;
}

.portal-404-desc {
  margin: 0 auto 1.75rem;
  max-width: 28rem;
  color: #5f6764;
  font-size: 1rem;
  line-height: 1.75;
}

.portal-404-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.85rem;
}

.portal-404-btn-secondary {
  background: #fff !important;
  border: 1px solid var(--portal-brand-green, #1e6b5c) !important;
  color: var(--portal-brand-green, #1e6b5c) !important;
  box-shadow: none !important;
}

.portal-404-btn-secondary:hover,
.portal-404-btn-secondary:focus {
  background: var(--portal-brand-green-pale, #edf7f3) !important;
  border-color: var(--portal-brand-green-light, #2f8f7a) !important;
  color: var(--portal-brand-green, #1e6b5c) !important;
  opacity: 1;
}



/* Site footer — Frame32 视觉比例，流式适配各屏宽 */
.portal-site-footer {
  background: #0e5e50;
  color: #fff;
  overflow: hidden;
}

.portal-site-footer-stage {
  width: 100%;
  max-width: 1920px;
  margin: 0 auto;
}

.portal-site-footer-frame {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  column-gap: clamp(24px, 4vw, 80px);
  row-gap: 28px;
  box-sizing: border-box;
  width: 100%;
  padding: 42px clamp(20px, 7.34vw, 141px) 16px;
}

.portal-site-footer-brand {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 163px;
  flex: 0 0 auto;
  text-align: center;
}

.portal-site-footer-logo {
  display: block;
  width: 57px;
  height: 57px;
  margin: 0 auto;
  object-fit: contain;
}

.portal-site-footer-brand-name {
  margin: 2px 0 0;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.2;
  color: #fff;
  white-space: nowrap;
}

.portal-site-footer-brand-tag {
  margin: 6px 0 0;
  width: 100%;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.2;
  color: #fff;
  white-space: nowrap;
  text-align: center;
}

.portal-site-footer-nav,
.portal-site-footer-services {
  flex: 0 1 auto;
  min-width: 0;
}

.portal-site-footer-heading {
  margin: 0 0 10px;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.4;
  color: #fff;
}

.portal-site-footer-nav-grid {
  display: grid;
  grid-template-columns: auto auto;
  column-gap: 18px;
  row-gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 12px;
  line-height: 24px;
}

.portal-site-footer-nav-grid a,
.portal-site-footer-list a {
  color: #fff;
  text-decoration: none;
  font-weight: 400;
}

.portal-site-footer-nav-grid a:hover,
.portal-site-footer-list a:hover {
  opacity: 0.85;
}

.portal-site-footer-list {
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 12px;
  line-height: 24px;
}

.portal-site-footer-qr {
  position: relative;
  flex: 0 0 auto;
  width: 112px;
  margin-left: auto;
}

.portal-site-footer-qr-img {
  display: block;
  width: 112px;
  height: 112px;
  object-fit: cover;
  background: #fff;
}

.portal-site-footer-qr-caption {
  margin: 5px 0 0;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.2;
  color: #fff;
  text-align: center;
  white-space: nowrap;
}

.portal-site-footer-divider {
  flex: 1 0 100%;
  width: 100%;
  height: 1px;
  margin: 4px 0 0;
  background: rgba(255, 255, 255, 0.35);
}

.portal-site-footer-copy {
  flex: 1 0 100%;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 4px;
  margin: 0;
  padding: 0 8px 4px;
  font-size: 14px;
  font-weight: 400;
  line-height: 20px;
  color: #c4cfcd;
  text-align: center;
}

.portal-site-footer-copy-mark {
  display: inline-block;
  width: 13px;
  font-size: 12px;
  line-height: 16px;
  text-align: center;
}

.portal-site-footer-copy a {
  color: #c4cfcd;
  text-decoration: none;
}

.portal-site-footer-copy a:hover {
  color: #fff;
}

@media (max-width: 991.98px) {
  .portal-site-footer-frame {
    justify-content: center;
    column-gap: 40px;
    row-gap: 28px;
    padding: 36px 24px 20px;
  }

  .portal-site-footer-brand {
    width: 180px;
  }

  .portal-site-footer-brand-tag {
    white-space: normal;
  }

  .portal-site-footer-nav,
  .portal-site-footer-services {
    min-width: 140px;
  }

  .portal-site-footer-qr {
    margin-left: 0;
  }
}

@media (max-width: 767.98px) {
  .portal-site-footer-frame {
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 32px 20px 18px;
    row-gap: 24px;
  }

  .portal-site-footer-nav,
  .portal-site-footer-services {
    width: 100%;
    max-width: 320px;
  }

  .portal-site-footer-heading {
    text-align: center;
  }

  .portal-site-footer-nav-grid {
    justify-content: center;
    justify-items: start;
    width: max-content;
    max-width: 100%;
    margin-inline: auto;
  }

  .portal-site-footer-list {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
}

@media (max-width: 575.98px) {
  .portal-site-footer-frame {
    padding: 28px 16px 16px;
    row-gap: 22px;
  }

  .portal-site-footer-copy {
    font-size: 12px;
    line-height: 1.5;
  }

  .portal-site-footer-copy-sep {
    display: none;
  }

  .portal-site-footer-copy a {
    flex: 1 0 100%;
  }
}
