/* Shared reading scale, loaded after the page skins.
   Enlarge interface copy, not the root, headlines, logos or customer artwork. */

/* Navigation and everyday actions. */
body header.v2-header > nav > a:not(.nav-cta) { font-size: 20px; line-height: 1.65; }
body .v2-header > .nav-cta-group .nav-cta { font-size: 18px; }
body .v2-header > .nav-cta-group .nav-why { font-size: 16px; }
body .header-taiwan-mark strong { font-size: 18px; }
body .header-taiwan-caption { font-size: 16px; white-space: normal; word-break: normal; }
body :is(.organizer-header, .project-header-meta, .confirm-header, .proof-header-links,
  .order-header, .help-header, .support-header, .size-guide-header, .v3-header) nav a,
body :is(.project-header-meta, .proof-header-links) > a,
body :is(.back-to-project, .back-to-confirm),
body.proof-page.proof-page-human .proof-header-links a,
body.v3-flow-page .v3-header nav a { font-size: 18px; line-height: 1.65; }
body :is(.mini-label, .organizer-kicker, .help-kicker, .support-kicker,
  .organizer-order-kicker),
body.guide-human-page .help-kicker,
body.qa-page-human .qa-hero-copy .help-kicker,
body.company-human-page .support-kicker { font-size: 15px; line-height: 1.7; }

/* Homepage: keep its approved large type and photo composition. */
body :is(.primary-cta, .play-link, .moments-copy > a, .launch-price > a) { font-size: 18px; }
body .hero-text { font-size: 20px; }
body .launch-price :is(small, p, p span) { font-size: 16px; line-height: 1.8; }
body .launch-price > span { font-size: 15px; }
body .launch-price > strong { font-size: 20px; }
body .launch-price p b { font-size: 20px; }
body .moments-copy > p:not(.mini-label) { font-size: 18px; }
body .flow-nav > a,
body .flow-nav > a.organizer-return { font-size: 20px; line-height: 1.55; }
body .flow-nav :is(.flow-nav-label, a b) { font-size: 16px; }
body .flow-nav .organizer-return small { font-size: 16px; line-height: 1.6; white-space: normal; }
body .service-proof li > span { font-size: 18px; line-height: 1.8; }
body .service-proof li > b { font-size: 16px; }
body .service-proof .home-help-note,
body .how .home-team-note { font-size: 18px; line-height: 1.8; }
body .how li h3 { font-size: 21px; }
body .how li p { font-size: 18px; line-height: 1.8; }
body .how li .step-number,
body .how li:last-child .step-number { font-size: 15px; }
body :is(.project-status span, .project-status small, .live-dot, .project-next,
  .hero-campaign-photo figcaption, .collage-note) { font-size: 16px; }

/* Three-step project builder: readable on phones as well as desktop. */
body.v3-flow-page :is(.v3-eyebrow, .v3-sidebar .v3-eyebrow) { font-size: 15px; }
body.v3-flow-page .v3-progress button span { font-size: 18px; }
body.v3-flow-page .v3-progress button:not(.is-complete) b { font-size: 16px; }
body.v3-flow-page .v3-progress button :is(small, .v3-progress-status) { font-size: 16px; }
body.v3-flow-page :is(.v3-sidebar-intro > p:last-child, .v3-sidebar-note p,
  .v3-panel-heading > p:last-child, .v3-section-heading p) { font-size: 18px; line-height: 1.8; }
body.v3-flow-page :is(.v3-field > label, .v3-choice-group > legend,
  .v3-field input, .v3-field textarea, .v3-field select,
  .v3-primary, .v3-button, .v3-text-button, .v3-service-links a) { font-size: 18px; }
body.v3-flow-page :is(.v3-required, .v3-optional, .v3-field > small,
  .v3-reference-placeholder small, .v3-tag, .v3-reference-note,
  .v3-status, .v3-error, .v3-reference-context strong,
  .v3-choice-content > small, .v3-mode-card small, .v3-design-note,
  .v3-materials > p, .v3-material-card :is(span, strong, p),
  .v3-material-list button, .v3-services p, .v3-mode-path-summary,
  .v3-direct-note, .v3-production-note p, .v3-consent,
  .v3-review-reminder, .v3-submit-note, .v3-recovery-note,
  .v3-summary p, .v3-summary dt, .v3-summary-label,
  .v3-summary button, .v3-summary figcaption) { font-size: 16px; line-height: 1.8; }
body.v3-flow-page :is(.v3-choice-content > span:not(.v3-choice-icon),
  .v3-mode-card strong, .v3-summary dd, .v3-reference-placeholder strong) { font-size: 18px; }
body.v3-flow-page #v3-local-editor :is(.ulpe-field, .ulpe-step-title,
  .ulpe-field select, .ulpe-field input:not([type=range]):not([type=color]),
  .ulpe-layer-choice, .ulpe-summary-copy > strong, .ulpe-summary-name,
  .ulpe-enlarge-preview) { font-size: 18px; }
body.v3-flow-page :is(#v3-local-editor, #v3-sublimation-picker) :is(
  .ulpe-color, .ulpe-color-help, .ulpe-catalog-note, .ulpe-preview-help,
  .ulpe-package-side, .ulpe-confirm-status, .ulpe-flow-arrow > small,
  .ulpe-unavailable-panel > p, .ulpe-field small, .ulpe-option-help,
  .ulpe-sublimation-option-price, .ulpe-price-detail, .ulpe-confirm-panel > small,
  .ulpe-preview-name, .ulpe-preview-selection, .ulpe-preview-allowance,
  .ulpe-preview-feedback, .ulpe-side-availability, .ulpe-preview-caption,
  .ulpe-file-help, .ulpe-layer-heading span, .ulpe-empty, .ulpe-field output,
  .ulpe-status, .ulpe-notice, .ulpe-method-availability, .ulpe-package-price,
  .ulpe-mini-caption, .ulpe-bounds-summary, .ulpe-quote-reasons) { font-size: 16px; line-height: 1.8; }
body.v3-flow-page :is(#v3-local-editor, #v3-sublimation-picker) :is(
  .ulpe-button, .ulpe-confirm-button, .ulpe-package-copy strong,
  .ulpe-choice-section legend, .ulpe-preview-title, .ulpe-error) { font-size: 18px; }
body.v3-flow-page :is(.v3-services h3, .v3-summary h3) { font-size: 20px; }

/* Dynamic design-request updates share the same readable scale. */
body.workflow-colors-v3 :is(.design-request-header p, .design-request-brief,
  .design-request-activation p) { font-size: 18px; }
body.workflow-colors-v3 :is(.design-request-status, .design-request-summary dt,
  .design-request-summary dd, .design-request-materials p,
  .design-request-materials small, .design-request-materials button,
  .design-request-error) { font-size: 16px; line-height: 1.8; }
body.workflow-colors-v3 .design-request-controls > :is(button, a) { font-size: 18px; }

/* Returning organizers: login, case cards and progress all stay legible. */
body.organizer-page :is(.organizer-header nav a, .organizer-header nav button,
  .organizer-intro > p:last-child, .organizer-login-copy > p:not(.organizer-kicker),
  .organizer-login-steps, label, input:not([type=checkbox]), textarea,
  .organizer-primary, .organizer-secondary, .organizer-text-button,
  .organizer-inline-link, .organizer-destination p, .organizer-destination a,
  .organizer-shortcut p, .organizer-action-card p, .organizer-action-card .organizer-primary,
  .organizer-cancellation summary, .organizer-cancel-submit,
  .organizer-empty, .organizer-case-button strong) { font-size: 18px; }
body.organizer-page :is(.organizer-message, .organizer-help,
  .organizer-case-button small, .organizer-status-pill,
  .organizer-detail-heading small, .organizer-metrics dt, .organizer-metrics dd.is-date,
  .organizer-progress li, .organizer-action-number, .organizer-ranking li,
  .organizer-cancellation p, label.organizer-cancel-ack,
  .organizer-cancellation-pending p, .organizer-footer) { font-size: 16px; line-height: 1.8; }

/* Classmates: voting status and results, not the art printed on the shirts. */
body.project-page :is(.student-vote-entry-intro p:last-child,
  .student-vote-entry-controls input, .student-vote-entry-controls button,
  .student-vote-switch, .project-title > p:not(.mini-label), .proposal-meta b,
  .project-share-controls input, .project-share-controls button,
  .vote-completion-actions a, .vote-completion-actions button,
  .vote-dock > p, .vote-dock button, .organizer-voting-control button) { font-size: 18px; }
body.project-page :is(.student-vote-entry-eyebrow, .student-vote-entry-notes,
  .project-deadline span, .project-deadline strong, .vote-total span, .vote-total small,
  .proposal-meta small, .proposal-meta > strong small, .vote-disclaimer,
  .project-journey li > b, .project-journey li > span, .project-journey li > p,
  .project-share-purpose, .project-share label, .project-share-status,
  .project-share-local-note, .vote-completion-facts dt, .vote-completion-facts dd,
  .vote-completion-note, .vote-completion-error, .vote-preview-note,
  .proposal-empty, .vote-dock > span, .organizer-voting-control p:not(.mini-label),
  .proposal-preview-side-label, .proposal-preview-status, .voting-preview-dialog-note) {
  font-size: 16px; line-height: 1.8;
}

/* Choice, proof and order interface copy; large titles and artwork untouched. */
body.confirm-human-page :is(.confirm-project-name, .confirm-focus-list li,
  .confirm-intro .confirm-stage-boundary, .production-note p,
  .stock-tee-copy b, .stock-tee-copy small, .color-picker > div:first-child span,
  .color-swatch span, .artwork-upload b, .artwork-upload small, .artwork-scale small,
  .confirmation-state span, .confirm-fieldset legend small, .readonly-preview,
  .catalog-summary > small, .artwork-metadata, .organizer-resume-note,
  .local-section-heading p) { font-size: 16px; line-height: 1.8; }
body.confirm-human-page :is(#confirmation-copy, .confirm-next-proof,
  .confirm-steps span, .confirm-fieldset legend, .confirmation-state b,
  .confirmed-layout-summary li p, .confirmed-layout-summary > p:not(.layout-summary-kicker),
  .artwork-reset, .artwork-scale > span, .color-picker > div:first-child b) { font-size: 18px; }
body.proof-page.proof-page-human :is(.proof-project-name, .proof-steps small,
  .proof-human-note p, .proof-human-note strong, .proof-human-compare-cue p,
  .proof-human-price-hint, .proof-status p, .proof-board > header > span,
  .proof-caption, .proof-asset-list li, .proof-asset-list b, .proof-asset-list small,
  .checklist-panel small, .public-quote-note, .request-action .readonly-note,
  .proof-comparison-help, .proof-file-name, .proof-comparison-version-status,
  .proof-review-warning) { font-size: 16px; line-height: 1.85; }
body.proof-page.proof-page-human :is(.proof-intro > div > p:not(.mini-label, .proof-project-name),
  .proof-steps span, .protected-confirm-link, .proof-version-field,
  .proof-original-selector, .proof-revision-form label, .proof-revision-form textarea,
  .organizer-proof-review p, .organizer-proof-review li, .organizer-review-consent,
  .quote-request > div > p:not(.mini-label)) { font-size: 18px; }
body.order-page :is(.order-intro > div > p:not(.mini-label), .order-steps span,
  .order-form label, .order-form input, .order-form select, .order-form button,
  .organizer-order-panel p, .organizer-order-field, .organizer-order-form button,
  .order-size-links, .deposit-info p, .deposit-info li) { font-size: 18px; }
body.order-page :is(.order-steps small, .order-size-help, #order-size-message,
  .organizer-deposit-summary dt, .order-summary dt, .order-summary small,
  .order-form small, .order-note, .deposit-note) { font-size: 16px; line-height: 1.8; }
body :is(.size-guide-table th, .size-guide-table td,
  .order-size-table th, .order-size-table td, .order-size-table input) { font-size: 16px; }

/* Guide, Q&A, company and policy copy, including their narrow-screen skins. */
body.guide-human-page :is(.guide-welcome-reply, .guide-section-heading p:not(.help-kicker),
  .guide-opening-cards p, .guide-opening-cards a, .guide-step-content p,
  .guide-step-content li, .guide-role > div > p:not(.help-kicker),
  .guide-text-link, .guide-jump a, .help-primary, .help-secondary) { font-size: 18px; }
body.guide-human-page :is(.guide-safe-note, .guide-story-picture figcaption,
  .guide-story-picture figcaption small, .guide-role-buttons small,
  .guide-step summary small, .guide-task-label, .help-status) { font-size: 16px; line-height: 1.8; }
body.qa-page-human :is(.qa-hero-copy .help-lead, .qa-answer, .qa-field,
  .qa-field input, .qa-field select, .qa-contact-links a) { font-size: 18px; }
body.qa-page-human :is(.qa-hero-note p, .qa-hero-photo figcaption, .qa-photo-sticker,
  .qa-search-intro p, .qa-topic-shortcuts button, .qa-reset,
  .qa-category, .qa-results-heading p, .qa-contact-guide,
  .qa-human-help p, .qa-status, .qa-search-status) { font-size: 16px; line-height: 1.8; }
body.company-human-page :is(.company-intro-note, .company-intro-actions a,
  .support-preview p, .support-toc a, .company-section-heading p,
  .company-feature-card p, .support-section p, .support-section li) { font-size: 18px; }
body.company-human-page :is(.company-moment figcaption small,
  .company-experience-stamp span, .support-preview small,
  .support-facts dt, .company-step-number) { font-size: 16px; line-height: 1.8; }
body.support-page :is(.support-preview p, .support-callout p, .support-toc a,
  .support-section p, .support-section li, .support-cta a) { font-size: 18px; }
body.support-page :is(.support-preview small, .support-facts dt) { font-size: 16px; }
body :is(.size-guide-main p, .size-guide-picker label, .size-guide-picker select,
  .size-guide-actions a, .size-guide-actions button, .size-guide-refresh,
  .size-guide-chart summary, .fitting-form-panel label,
  .fitting-form-panel input, .fitting-form-panel select, .fitting-form-panel textarea) { font-size: 18px; }
body :is(.fitting-privacy, .fitting-form-panel .field-help, .fitting-receipt code,
  #size-guide-local, #size-guide-share-status, .help-footer p) { font-size: 16px; line-height: 1.85; }

/* Shared footer and contact label. The little character keeps its original size. */
body .ulives-footer { font-size: 17px; }
body .ulives-footer-nav a { font-size: 18px; }
body .ulives-footer :is(.ulives-footer-company-en, .ulives-footer-pending,
  .ulives-footer-bottom p) { font-size: 16px; }
body .ulives-contact-pal-label { justify-self: end; width: max-content; max-width: 112px; font-size: 16px; line-height: 1.6; white-space: normal; }
body .ulives-contact-pal-link { grid-template-columns: minmax(0, 1fr); align-items: center; }

/* Shared empty-state gates and detail labels must not fall back to legacy tiny type. */
body :is(.project-help-links a, .project-navigation-actions a, .back-link) { font-size: 18px; }
body .project-navigation-notice p,
body.project-page #student-vote-entry-help { font-size: 16px; line-height: 1.8; }
body.v3-flow-page :is(.v3-comparison-tag, .v3-comparison-banner p) { font-size: 16px; line-height: 1.8; }
body.proof-page.proof-page-human :is(.proof-steps b, .proof-status > span,
  .details-summary dt, .details-summary dd, .checklist-panel i) { font-size: 16px; line-height: 1.8; }
body.proof-page.proof-page-human :is(.mini-label, .section-kicker) { font-size: 15px; }
body.order-page :is(.order-steps b, .deadline-card span, .deadline-card small,
  .order-progress span, .order-progress b, .price-line span, .price-line small,
  .collection-gate b, .collection-gate span, .registration-summary span,
  .registration-button span, .local-demo-note, .after-pay li span,
  .after-pay li b, .threshold-note p, .class-moment figcaption) { font-size: 16px; line-height: 1.8; }
body.order-page :is(.order-form legend, .registration-button b,
  .threshold-note b, .product-card > div > p:not(.section-kicker)) { font-size: 18px; }
body.order-page .after-pay li strong { font-size: 18px; }
body.order-page #unit-price-value { font-size: 22px; }
body.order-page .section-kicker { font-size: 15px; }
body.guide-human-page :is(.guide-reference-note, .guide-jump b,
  .help-main figcaption, .guide-opening-cards a b,
  .guide-role .help-status, .guide-role a) { font-size: 16px; line-height: 1.8; }
body.guide-human-page .guide-situation-grid :is(p, b) { font-size: 18px; }
body.qa-page-human #qa-status { font-size: 16px; }
body.qa-page-human .qa-human-help .help-kicker { font-size: 15px; }
body.company-human-page :is(.support-main small, .support-main figcaption,
  .company-service-label, .company-planned-label, .company-history-list time span,
  .company-story-now > span) { font-size: 16px; line-height: 1.8; }
body.company-human-page .company-section-heading .support-kicker { font-size: 15px; }

/* Reflow enlarged labels; never shrink the letters to make them fit. */
body :is(.v3-field, .v3-summary dd, .organizer-action-card, .proposal-meta,
  .proof-steps > *, .confirm-steps > *, .order-steps > *) { min-width: 0; }
body :is(.v3-primary, .v3-button, .v3-text-button, .v3-service-links a,
  .organizer-primary, .organizer-secondary, .student-vote-entry-controls button,
  .project-share-controls button, .flow-nav > a) { white-space: normal; overflow-wrap: anywhere; }
@media screen and (max-width: 1000px) {
  body .v3-header nav { flex-wrap: wrap; }
  body.v3-flow-page .v3-sidebar .v3-eyebrow { overflow-wrap: anywhere; }
}
@media screen and (max-width: 820px) {
  body .v2-header nav { flex-wrap: wrap; gap: 10px 24px; }
  body .flow-nav { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body .flow-nav .flow-nav-label { grid-column: 1 / -1; }
  body .flow-nav > a { min-height: 86px; }
  body .organizer-progress { flex-wrap: wrap; }
  body .organizer-progress li { flex-basis: 33.333%; }
}
@media screen and (max-width: 620px) {
  body .header-taiwan-mark { width: 144px; }
  body .flow-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body .flow-nav > a { padding: 16px 12px; }
  body.v3-flow-page .v3-progress button span { font-size: 17px; }
  body.v3-flow-page .v3-progress button { min-width: 0; }
  body.v3-flow-page .v3-progress .v3-progress-status { font-size: 15px; }
  body .project-share-controls { flex-wrap: wrap; }
  body .project-share-controls button { min-height: 44px; }
}
@media screen and (max-width: 360px) {
  body .hero-campaign-photo { right: 5px; }
  body .vote-card { right: -12px; }
  body .class-collage::before { right: 8px; }
  body .class-collage::after { right: 20px; }
}
