/* Adobe Fonts typography for the main landing page. Load after the scene styles. */
:root {
  --serif: "ar-mingb5std", "Noto Serif TC", "Songti TC", "STSong", "PMingLiU", serif;
  --sans: "ar-udjingxiheib5", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
  --narrative-serif: var(--serif);
  --narrative-sans: var(--sans);
  --display-latin: "ivypresto-display", var(--sans);
  --reading-size: 18px;
  --chapter-size: clamp(44px, 4.6vw, 64px);
  font-synthesis: none;
}

body {
  font-family: var(--sans);
  font-size: var(--reading-size);
  font-weight: 500;
  line-height: 1.9;
}

/* Each Chinese family is published in this kit at Medium only. */
h1, h2, h3, h4, h5, h6, b, strong {
  font-weight: 500;
}
.notice-bar, .brand, .brand small, .site-nav, .eyebrow, .section-kicker,
.micro-label, .button, .roster-link, .availability strong, .card-body b,
.faq summary, .registration-fields > label, .field-pair > label,
.vow-world-controls button, .service-world-tab[aria-selected="true"],
.service-world-roster strong {
  font-weight: 500;
}

.cinematic-copy h1 {
  font-family: var(--serif);
  font-size: clamp(72px, 6.7vw, 96px);
  line-height: 1.25;
  letter-spacing: .025em;
}

.section-title, .vows-heading .section-title, .reach-heading .section-title,
.assigned .section-title, .journey .section-title, .pledge .section-title,
.closing h2, .service-world-heading h3 {
  font-family: var(--serif);
  font-size: var(--chapter-size);
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: .02em;
}

.vow-world-chapter h3 {
  font-family: var(--serif);
  font-size: clamp(32px, 3vw, 43px);
  line-height: 1.4;
  letter-spacing: .025em;
}
.service-world-chapter-title {
  font-family: var(--serif);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: .02em;
}

/* Readable copy is distinct from captions, status labels and editorial quotes. */
.heading-aside, .defense-list p, .defense-foot, .reach-path p, .reach-example,
.vow-world-chapter > p:not(.vow-number):not(.vow-practice):not(.vow-world-caption),
.vow-world-chapter .vow-practice, .section-main > p:not(.lead), .history-note p,
.cycle-context, .crossroads p:not(.crossroads-close), .group-examples p,
.group-card .card-service, .group-card .card-body p, .work-grid p,
.defense-mapping dd, .practice-grid p, .unseen p:last-child,
.service-world-heading > p:last-child, .service-world-chapter-copy,
.need-intro p, .need-grid p, .commitment-copy > p:not(.fine-print),
.commitment .practice-level span, .credential-list p, .credential-end p,
.journey-list p, .takeaways span, .clarifications p, .faq summary, .faq details p,
.registration-intro > p:not(.section-kicker), .form-status, .form-vacancies,
.closing-inner > p:not(.section-kicker) {
  font-family: var(--sans);
  font-size: var(--reading-size);
  line-height: 1.9;
}

/* Selected long-form passages retain the established Ming voice. */
.section-main > .lead, .lead, .cycle-caption, .pledge-card p,
.group-card .card-heart, .vows-close, .crossroads-close {
  font-family: var(--serif);
  line-height: 1.9;
}
.pledge-card p { font-size: var(--reading-size); }
.cinema-lead { font-size: 20px; line-height: 1.9; letter-spacing: .025em; }
.cinema-dedication { font-size: var(--reading-size); line-height: 1.9; letter-spacing: .04em; }
.group-card .deity { font-size: 16px; line-height: 1.7; }

.button, .cinematic-copy .button, .site-nav .nav-action,
.registration-submit { font-family: var(--sans); font-size: 16px; font-weight: 500; }
.registration-fields input[type="text"], .registration-fields input[type="tel"],
.registration-fields textarea { font-family: var(--sans); font-weight: 500; font-size: var(--reading-size); line-height: 1.9; }
.registration-fields input::placeholder, .registration-fields textarea::placeholder {
  font-family: var(--sans);
  font-size: 16px;
  font-weight: 500;
}
.registration-intro > p > strong { display: inline-block; margin-top: .3em; color: var(--ink); }
.notice-bar strong { color: #e9e4d7; letter-spacing: .04em; }

/* Latin titles and chapter indices; Chinese in mixed labels falls back to Hei. */
.brand small, .micro-label, .roster-band-heading .section-kicker,
.closing .section-kicker, .section-kicker > span, .roster-no, .reach-index,
.card-index, .credential-no, .need-grid article > span, .journey-list li > span,
.vow-world-stage-index, .vow-world-stage-bottom span:last-child,
.vow-world-controls button span, .service-world-stage-label,
.service-world-tab span, .service-world-chapter-no, .season-score > button > span,
.clarifications b, .clarifications i, .form-step {
  font-family: var(--display-latin);
  font-weight: 400;
  font-variant-numeric: tabular-nums;
}
.form-step > span { font-family: var(--serif); font-weight: 500; }
.section-kicker > span, .roster-no, .reach-index, .credential-no,
.need-grid article > span, .journey-list li > span { letter-spacing: .04em; }
.card-index { letter-spacing: .025em; }
.brand small { letter-spacing: .06em; }

/* A square em box keeps the rotated open/close glyph inside its row. */
.group-card .details-hint b {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1em;
  height: 1em;
  flex: 0 0 1em;
  line-height: 1;
  margin-inline: .25em;
}

@media (min-width: 761px) and (max-width: 960px) {
  .cinematic-copy h1 { font-size: clamp(60px, 8vw, 72px); }
}
@media (max-width: 760px) {
  :root {
    --reading-size: 17px;
    --chapter-size: clamp(32px, 8.8vw, 42px);
  }
  .cinematic-copy h1 { font-size: clamp(42px, 11.6vw, 50px); line-height: 1.25; letter-spacing: .025em; }
  .cinema-lead { font-size: 18px; }
  .cinema-dedication { font-size: 17px; }
  .vow-world-chapter h3 { font-size: clamp(29px, 7.8vw, 36px); line-height: 1.4; }
  .group-card .card-heart { font-size: 18px; }
}

/* Preserve complete Chinese phrases and give headings enough room at tablet widths. */
.type-phrase, #reach-title > span, #reach-title > em { white-space: nowrap; }
.history-note h3, .defense-mapping h3 { text-wrap: balance; }
main p, .heading-aside { text-wrap: pretty; }
.heading-aside, .lead, .defense-foot, .reach-path p, .history-note p,
.group-examples p, .work-grid p, .practice-grid p, .service-world-chapter-copy,
.credential-list p, .takeaways p, .form-status, .fine-print, .closing-inner > p,
.faq p, .need-grid p, .clarifications p, .card-body p, .vow-practice,
.service-world-heading > p:last-child, .commitment-copy p { text-wrap: balance; }
.button { flex-shrink: 0; white-space: nowrap; }
.pledge-action { flex-wrap: wrap; }
@media (min-width: 961px) {
  .commitment .two-col {
    grid-template-columns: minmax(calc(var(--chapter-size) * 7.2), .9fr) minmax(0, 1.3fr);
    gap: clamp(32px, 4vw, 64px);
  }
}
@media (max-width: 960px) {
  .section-heading { align-items: flex-start; flex-direction: column; gap: 24px; }
  .heading-aside { max-width: 600px; }
  .service-world-heading { display: block; }
  .reach-heading { display: block; }
  .reach-heading .section-title { margin-top: 20px; }
  .service-world-heading > p:last-child { margin-top: 20px; max-width: 600px; }
  .commitment .two-col, .journey-grid, .pledge-grid { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .journey-date { max-width: 420px; }
  .pledge-action { grid-column: 1; }
  .reach-path { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .reach-path li:nth-child(3) { padding-left: 0; border-left: 0; border-top: 1px solid rgb(23 27 25 / 22%); }
  .reach-path li:nth-child(4) { border-top: 1px solid rgb(23 27 25 / 22%); }
}
@media (max-width: 380px) {
  .reach-path { grid-template-columns: minmax(0, 1fr); }
  .reach-path li, .reach-path li + li { min-height: 0; padding: 22px 0; border-left: 0; }
  .reach-path li + li { border-top: 1px solid rgb(23 27 25 / 22%); }
  .reach-index { margin-bottom: 12px; }
}
