/* One typography contract for the application UI.
   Explicit priority replaces legacy page-specific sizes (including ID selectors).
   Resume documents and the wordmark retain their own designed typography. */
:root {
  --type-title: 2.5rem;
  --type-heading: 1.75rem;
  --type-card: 1.125rem;
  --type-body: .9375rem;
  --type-ui: .875rem;
  --type-label: .75rem;
}
body { font-family: var(--font); font-size: var(--type-body) !important; }
.razorpay-note { font-size: var(--type-body) !important; }
:where(body *):not(:where(.resume-document, .resume-document *, .brand, .brand *)) {
  font-family: inherit !important;
  font-size: inherit !important;
}
:where(h1):not(:where(.resume-document *)) {
  font-size: var(--type-title) !important;
  font-weight: 600 !important;
  line-height: 1.15 !important;
  letter-spacing: -.04em !important;
}
:where(h2):not(:where(.resume-document *)) {
  font-size: var(--type-heading) !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  letter-spacing: -.025em !important;
}
:where(h3,h4):not(:where(.resume-document *)) {
  font-size: var(--type-body) !important;
  font-weight: 600 !important;
  line-height: 1.5 !important;
  letter-spacing: 0 !important;
}
:where(p,li):not(:where(.resume-document *)) {
  font-size: var(--type-body) !important;
  letter-spacing: 0 !important;
}
/* Controls and navigation sit a step below reading text. */
:where(button,input,textarea,select,summary,.button,.desktop-nav a,.mobile-nav a,.filter,.auth-tabs a,
  .text-link,.subpage-actions a,.footer-inner nav a,.footer-legal a,.policy-nav a,label,
  .saved-resume-content p,.template-card-info p):not(:where(.resume-document *)) {
  font-size: var(--type-ui) !important;
  letter-spacing: 0 !important;
}
/* Titles inside cards and lists use a compact heading size. */
:where(.saved-resume h2,.saved-resume-content h2,.mobile-platform h3,.template-card-info h3,.step h3,
  .pricing-inclusions h3,.contact-form h2):not(:where(.resume-document *)) {
  font-size: var(--type-card) !important;
}
/* The homepage hero keeps a display size above page titles. */
:where(.hero h1) { font-size: clamp(2.5rem, 4.2vw, 3.5rem) !important; }
:where(p,li):not(:where(.resume-document *)) { line-height: 1.75 !important; }
:where(button,input,textarea,select,summary):not(:where(.resume-document *)) { line-height: 1.5 !important; }
:where(small,time,.eyebrow,.quiet,.copyright,.auth-footer,.subpage-footer,
  .policy-date,.template-tag,.template-photo-tag,.resume-status-badge,
  .price-card-label,.one-time-pill,.pricing-offer-label,.pricing-pay-once,
  .pricing-unit,.contact-small-label,.auth-aside-tag,.hero-eyebrow,
  .hero-template-picker>span,.template-included,.editor-session-note,
  .save-status,.step-number,.floating-label,.hero-word,.auth-divider,
  .auth-aside-features,.hero-assurance,.benefit-strip,.preview-toolbar,
  .pricing-portrait figcaption):not(:where(.resume-document *)) {
  font-size: var(--type-label) !important;
  line-height: 1.55 !important;
}
:where(.eyebrow,.pricing-offer-label,.contact-small-label,.auth-aside-tag) {
  font-weight: 600 !important;
  letter-spacing: .1em !important;
}
/* Price figures reuse the title size instead of introducing another scale. */
:where(.pricing-amount strong,.big-price,.floating-price strong,.order-total>strong) {
  font-size: var(--type-title) !important;
  line-height: 1.15 !important;
  letter-spacing: -.04em !important;
}
:where(.pricing-currency,.pricing-unit,.big-price>span,.floating-price strong span,.order-total small) {
  font-size: var(--type-label) !important;
  line-height: 1.55 !important;
  letter-spacing: 0 !important;
}
/* Controls grow with readable copy; compact layouts wrap rather than shrink text. */
.header-actions,.hero-assurance,.auth-aside-features,.benefit-strip>span { flex-wrap: wrap; }
.template-card-info { gap: 12px; }
.template-card-info>div { min-width: 0; }
.template-card-info h3,.template-card-info p { overflow-wrap: anywhere; }
.template-tag { max-width: calc(100% - 20px);white-space: normal; }
.editor-step { white-space: normal; }
.auth-content .field input,.contact-form input,.contact-form select { min-height: 54px; }
.pricing-amount .pricing-currency { margin-top: .2rem; }
@media(max-width:680px) {
  :root { --type-title: 2rem; --type-heading: 1.5rem; }
  /* 16px inputs stop iOS from zooming the page when a field is focused. */
  :where(input,textarea,select):not(:where(.resume-document *)) { font-size: 1rem !important; }
  .benefit-strip { gap: 16px 12px;padding-block: 20px; }
  .template-card-info { flex-wrap: wrap; }
  .template-card-info>div { flex: 1 1 100%; }
  .floating-price { right: 0;max-width: 100%; }
  .filter-group { flex-wrap: wrap; }
  .auth-footer { gap: 12px; }
}
