/* Shared type scale. CSS pixels describe the actual viewport, not screenshot pixels. */
:root {
  --font-ui: "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
  --type-body: 16px;
  --type-card: 18px;
  --type-detail: 14px;
  --type-meta: 13px;
  --type-section: 40px;
  --type-control: 16px;
  --type-muted: #59636f;
  --sub: #59636f;
  --muted: #59636f
}

body {
  font-family: var(--font-ui);
  font-size: var(--type-body);
  line-height: 1.75
}

body :is(h1, h2, h3, h4, h5, h6, button, input, select, textarea) {
  font-family: var(--font-ui)
}

/* Paragraphs and descriptions carry the information; they must stay readable. */
body :is(.section-head, .intro-body, .solution-copy, .topic-intro, .topic-grid, .course-grid, .article-row, .page-title-copy, .footer-brand) p:not(.kicker):not(.section-subtitle),
body .intro-body li,
body .footer p {
  font-size: var(--type-body);
  line-height: 1.75
}

body main .section-subtitle {
  font-size: 16px !important;
  line-height: 1.6 !important
}

body :is(.kicker, .eyebrow) {
  font-size: var(--type-meta) !important;
  line-height: 1.5
}

body main :is(.section-head, .school-intro, .solution-copy, .flow-heading) h2 {
  font-size: var(--type-section) !important;
  line-height: 1.3;
  letter-spacing: 0
}

body :is(.trust-strip-visual b, .solution-block .visual-step-grid b, .admission-flow .visual-admission-steps b) {
  font-size: var(--type-card);
  line-height: 1.5
}

body .trust-strip-visual .trust-item>div>span,
body .solution-block .visual-step-grid span,
body .admission-flow .visual-admission-steps .step-copy span {
  font-size: var(--type-detail);
  line-height: 1.7;
  color: var(--type-muted)
}

body .trust-strip-visual .trust-item>div {
  min-width: 0
}

body .trust-strip-visual .wrap>.trust-item {
  align-items: flex-start
}

body .trust-strip-visual .trust-icon {
  margin-top: 3px
}

body .admission-flow .visual-admission-steps .step-copy i {
  font-size: 14px
}

/* Preserve the number/title row even in the six-column desktop view. */
body .admission-flow .visual-admission-steps .step-copy {
  column-gap: 7px;
  padding-left: 12px;
  padding-right: 12px
}

/* Let admission copy determine the card height instead of reserving empty space. */
body .admission-flow .visual-admission-steps .step-copy {
  min-height: 0;
  padding-top: 14px;
  padding-bottom: 16px;
  row-gap: 8px
}

body main :is(.visual-step-grid, .visual-admission-steps) .step-image img {
  object-position: center
}

body main>.campus-cta .campus-cta-visual {
  background-image: url("scenes-v1/campus-visit-v2.jpg");
  background-position: center
}

body .teacher-grid h3 {
  font-size: 16px;
  line-height: 1.5
}

body .teacher-grid b,
body .teacher-grid h4 {
  font-size: var(--type-card);
  line-height: 1.5
}

body .teacher-grid p {
  font-size: var(--type-detail);
  line-height: 1.75;
  color: var(--type-muted)
}

body .teacher-carousel-status {
  font-size: 14px
}

body :is(.video-tile, .note) h3 {
  font-size: 16px !important;
  line-height: 1.55 !important;
  white-space: normal !important;
  text-overflow: clip !important
}

body .home-video-section .video-tile h3 {
  display: block !important;
  -webkit-line-clamp: unset;
  overflow: visible
}

body .home-video-section .video-tile p {
  font-size: var(--type-meta) !important;
  line-height: 1.6 !important;
  color: var(--type-muted)
}

body :is(.note-meta, .article-row time, .home-news time, .breadcrumb-line, .crumb, .cover .tag, .thumb) {
  font-size: var(--type-meta);
  line-height: 1.6
}

body .page-title :is(.breadcrumb-line, .crumb) {
  font-size: var(--type-meta)
}

body .compact-news b {
  font-size: 16px;
  line-height: 1.65
}

body .question-grid h3 {
  font-size: 16px;
  line-height: 1.55
}

body .intro-visual figcaption {
  font-size: 14px;
  line-height: 1.6
}

body :is(.pill, .button, .more-link) {
  font-size: var(--type-control)
}

body main>.campus-cta .campus-cta-actions .pill {
  font-size: 15px
}

body main>.campus-cta .campus-cta-copy>p:not(.kicker):not(.section-subtitle) {
  font-size: 16px;
  line-height: 1.75
}

body .homepage-carousel .banner-copy>.banner-actions .pill {
  font-size: 15px !important
}

body :is(.lead-form, .hero-card) label {
  font-size: 14px;
  line-height: 1.5
}

body :is(.lead-form, .hero-card) :is(input, select, textarea) {
  font-size: 16px
}

body .lead-form small,
body .hero-card small {
  font-size: 12px;
  line-height: 1.5;
  color: #626b76
}

body .lead-card>p:not(.kicker):not(.section-subtitle) {
  font-size: 14px;
  line-height: 1.6
}

body .lead-card p.section-subtitle {
  font-size: 14px !important
}

body .footer :is(a, .copyright) {
  font-size: 14px;
  line-height: 1.7
}

body .footer .copyright,
body .footer .copyright a {
  font-size: 12px
}

body .side-menu a,
body .tabs a {
  font-size: 15px
}

body .article-body p,
body .article-body li {
  font-size: 18px;
  line-height: 1.9
}

/* The appointment landing page uses the same scale. */
body .problem-grid h3,
body .video-grid h3 {
  font-size: var(--type-card);
  line-height: 1.5
}

body .problem-grid p,
body .system-flow p,
body .hero-card>p:not(.eyebrow) {
  font-size: 14px;
  line-height: 1.75
}

body .video-grid p,
body .trust-line span,
body .program-grid small {
  font-size: 13px;
  line-height: 1.6
}

body .video-meta>p:not(.video-author) {
  font-size: 14px;
  line-height: 1.65
}

body .video-tags span {
  font-size: 13px
}

body .shorts-actions span,
body .gesture-hint {
  font-size: 12px
}

body .control-left span {
  font-size: 13px
}

body .teacher-grid small {
  font-size: 14px
}

body .video-cover {
  font-size: 13px
}

@media(max-width:760px) {
  :root {
    --type-card: 16px;
    --type-section: 28px
  }

  body main .school-intro .intro-heading h2 {
    font-size: 28px !important;
    line-height: 1.35
  }

  body .page-title h1 {
    font-size: 32px !important;
    line-height: 1.3
  }

  body .section-head p:not(.kicker):not(.section-subtitle) {
    font-size: 16px
  }

  body main>.campus-cta .campus-cta-copy h2 {
    font-size: 26px;
    line-height: 1.35
  }

  body .trust-strip-visual .wrap>.trust-item {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr);
    padding: 16px 10px;
    column-gap: 8px;
    row-gap: 6px;
    align-content: start;
    align-items: center
  }

  body .trust-strip-visual .trust-item>div {
    display: contents
  }

  body .trust-strip-visual .trust-item>div>b {
    grid-column: 2;
    grid-row: 1
  }

  body .trust-strip-visual .trust-icon {
    width: 28px;
    height: 28px
  }

  body .trust-strip-visual .trust-icon svg {
    width: 20px;
    height: 20px
  }

  body .trust-strip-visual b {
    font-size: 16px
  }

  body .trust-strip-visual .trust-item>div>span {
    grid-column: 1 / -1;
    margin-top: 0;
    font-size: 14px
  }

  body .trust-strip-visual .trust-item {
    min-width: 0
  }

  body .solution-block .visual-step-grid .step-copy {
    padding: 12px
  }

  body .teacher-grid article>div:not(.teacher-photo) {
    min-width: 0
  }

  body .topbar .nav a,
  body .topbar .nav-dropdown>button,
  body .mobile-nav a {
    font-size: 16px
  }

  body .homepage-carousel .banner-copy>.banner-actions .pill {
    font-size: 15px !important;
    min-height: 44px !important
  }

  body .article-body p,
  body .article-body li {
    font-size: 17px
  }

  body .note-meta {
    flex-wrap: wrap;
    gap: 4px 8px
  }

  body .notice {
    font-size: 13px;
    line-height: 1.6
  }

  body footer>div>a {
    font-size: 14px
  }
}

/* Keep the privacy reassurance centered across consultation forms. */
body .privacy-note {
  display: block;
  width: 100%;
  grid-column: 1/-1;
  text-align: center
}

body #consult .consult-intro {
  text-align: center;
  font-weight: 700
}
