/*
 * Shared readability layer. Body copy stays at 16px; supporting text has a
 * 14px floor. Loaded after page styles so family pages and guided previews
 * cannot silently reintroduce the earlier tiny type.
 */
html {
  font-size: 100%;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  font-size: 1rem;
  line-height: 1.6;
}

:is(.small, small, .hint, .eyebrow, .foot,
  .chip, .pos.sm, .stat-l, .fact-k, .steps a, .tabs a,
  .col-head h2, .tbl thead th, .tbl th,
  .landing-table-scroll th, .landing-lead-details dt,
  .landing-lead-details dd, .family-kicker, .family-meta,
  .family-consent, .family-subtitle, .family-message-byline,
  .family-stat-label, .family-rating-head, .family-rating-row,
  .family-rating-values, .family-club-name, .family-club-meta,
  .family-club-tags .chip, .family-step-title, .family-step-detail,
  .family-step-date, .family-milestone-date, .family-milestone-message,
  .family-open, .family-help, .family-empty,
  .demo-progress-line, .demo-step-nav span, .demo-fake-form label,
  .demo-status, .demo-materials small, .demo-received, .demo-consent-ok,
  .demo-family-disclaimer, .demo-transfer-card p, .demo-transfer-status,
  .demo-import-results, .demo-import-preview > p, .demo-import-table-scroll table,
  .demo-import-table-scroll th, .demo-import-table-scroll td, .demo-import-result,
  .demo-import-safety, .demo-reset, .demo-footnote,
  .od-tag, .sd-steps span.d, .sd-log li, .sd-tour-tab, .sd-tour-status,
  .sd-stage-persona, .sd-app-product, .sd-school-name, .sd-app-rail span,
  .sd-app-user, .sd-screen-note, .sd-route-row, .sd-screen-list-row p,
  .sd-screen-badge, .sd-screen-disclaimer, .sd-action-fields .check,
  .sd-action-locked, .sd-presenter-tools .hint, .sd-log-row,
  .intake-note, .tour-actions .button, .sd-public-intake-note, .top-note,
  .sample-stamp, .memory-label, .step-label,
  .lc-tag, .hc-tag, .hc-sub, .stages span, .when, .addr, .addr-who,
  .app-bar, .agency, .score, .measure-note,
  .packet-context, .recipient-label, .student-meta, .school-credit,
  .packet-evidence li, .status-label, .packet-card figcaption,
  .hero-footnote, .role-item h4, .privacy-review-note,
  .contact-date p, .button-light, .pilot-pricing, .pilot-aside p,
  .field label, .form-submit p, .pilot-privacy, .form-errors ul,
  .form-success p, .footer-brand, .footer-links, .nav-cta,
  .review-strip li, .activity-card-head span, .activity-alert,
  .activity-table, .activity-table thead th, .family-card-head span,
  .family-links strong, .family-links small, .family-card-note,
  .source-link, .rule-detail, .site-footer) {
  font-size: max(14px, 0.875rem);
  line-height: 1.5;
}

/* Public Schools page: readable explanations, not miniature wireframe text. */
:is(.role-item p, .privacy-review-card p, .step p, .evidence-item p,
  .activity-copy > p:last-child, .pilot-copy > p:not(.eyebrow),
  .family-copy > p:last-child) {
  font-size: 1rem;
  line-height: 1.6;
}

.student-name {
  font-size: 1rem;
}

:is(.recipient-label, .school-credit, .status-label, .packet-card figcaption,
  .role-mark, .form-submit p, .family-card-note) {
  color: #506157;
}

.eyebrow.eyebrow-light {
  color: #d3e5d7;
}

.pilot-aside p {
  color: #506157;
}

:is(input, select, textarea), .field :is(input, select, textarea),
.demo-fake-form input, .sch-copy {
  font-size: 1rem;
}

/* The family view contains real instructions and consent information. */
.family-page :is(.family-message, .family-step-detail, .family-milestone-message,
  .family-help, .family-subtitle, .family-empty, .statement) {
  font-size: 16px;
  line-height: 1.6;
}

.family-page .family-timeline li {
  grid-template-columns: 24px minmax(0, 1fr);
}

.family-page .family-step-number {
  width: 22px;
  height: 22px;
  font-size: 14px;
}

.family-page .family-rating-row {
  grid-template-columns: minmax(0, 1fr) 1.05fr 52px;
  min-height: 40px;
}

.family-page .family-open {
  min-height: 44px;
}

/* Import previews stay readable on narrow screens and can still scroll. */
.demo-import-table-scroll table {
  min-width: 760px;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
