/* Shared type roles for the local Space app and its design-system guide.
   Load after component styles. Sizes change only at the documented hero/service
   breakpoints; body, controls, article cards and captions keep their role. */
:root{
  --font-ui:'TikTok Sans',Arial,sans-serif;
  --font-display:'Space Transforma Mix','TikTok Sans',sans-serif;
  --type-caption:12px;--type-body:14px;--type-body-large:16px;
  --type-heading:20px;--type-title:24px;--type-service-display:22px;
  --weight-regular:400;--weight-medium:500;--weight-semibold:600;
  --leading-caption:1.4;--leading-body:1.5;--leading-reading:1.6;
  --leading-heading:1.25;--leading-title:1.2;
  --tracking-body:0;--tracking-heading:-.015em;
}
body,.ds-page{font-family:var(--font-ui);font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);letter-spacing:var(--tracking-body);font-optical-sizing:auto;font-synthesis:none}
button,input,select,textarea{font-family:var(--font-ui);letter-spacing:var(--tracking-body)}
h1,h2,h3{font-weight:var(--weight-semibold);letter-spacing:var(--tracking-heading)}

/* Page titles. */
.reader-content h1,.question-content h1,.profile-content .profile-page-title,
.profile-subheader .profile-page-title,.profile-toolbar h2,
.profile-auth-dialog .profile-auth-body h1,.ds-intro h1,.ds-type-title{
  font-family:var(--font-ui);font-size:var(--type-title);font-weight:var(--weight-semibold);
  line-height:var(--leading-title);letter-spacing:var(--tracking-heading)
}
/* Section and service titles. Service names intentionally use medium weight. */
.reader-content h2,.profile-info h2,.preview-receipt h2,
.app-header .greeting,.ds-section-head h2,.ds-type-heading{
  font-size:var(--type-heading);font-weight:var(--weight-semibold);
  line-height:var(--leading-heading);letter-spacing:var(--tracking-heading)
}
.app-header .greeting span{font-weight:var(--weight-regular)}
.service-caption h2,.ds-service-caption h3,.ds-type-service{
  font-size:var(--type-heading);font-weight:var(--weight-medium);
  line-height:var(--leading-heading);letter-spacing:var(--tracking-heading)
}
/* Material and compact section headings. */
.material-card .card-open,.profile-section-title,.profile-appointment h3,
.preview-calendar-header h2,.preview-times-title,.figure-step-copy h3,
.ds-control-panel h3,.ds-type-card{
  font-size:var(--type-body-large);font-weight:var(--weight-semibold);
  line-height:1.35;letter-spacing:var(--tracking-heading)
}
/* Reading and input text. Input size stays 16px on mobile. */
.reader-content p,.reader-content li,.booking-field input,.booking-field textarea,
.custom-field textarea,.request-field textarea,.ds-type-reading{
  font-size:var(--type-body-large);font-weight:var(--weight-regular);
  line-height:var(--leading-reading);letter-spacing:var(--tracking-body)
}
/* Ordinary UI copy and card descriptions. */
.material-card .card-description,.service-caption>span,
.question-hint,.request-preview,.profile-request,.profile-blank>p,.profile-info>p,
.profile-auth-description,.profile-auth-state p,.profile-cancel-confirm>p,
.preview-receipt p,.reader-content .prompt-box p,.reader-work p,
.reader-content .figure-step-copy p,.ds-intro>p:last-child,.ds-section-head p,
.ds-type-body{
  font-size:var(--type-body);font-weight:var(--weight-regular);
  line-height:var(--leading-body);letter-spacing:var(--tracking-body)
}
/* One size and weight for actions, navigation and form choices. */
.black-button,.app-dialog .black-button,.profile-primary,.profile-secondary,
.service-art .art-cta,.bottom-nav button,.profile-menu-row .profile-row-label,
.filter-tabs button,.filter-tabs button[aria-pressed=true],.answer-option,
.preview-day,.preview-time,.profile-time,.resource-copy strong,
.reader-content .prompt-box button,.question-content .edit-answers,
.question-actions .skip-button,.inline-link,.ds-page .ds-button,
.ds-type-action{
  font-size:var(--type-body);font-weight:var(--weight-medium);
  line-height:var(--leading-caption);letter-spacing:var(--tracking-body)
}
/* Metadata and help text are a single readable size. */
.material-card .feed-author,.material-card .feed-author .feed-category,
.reader-meta,.reader-content .draft-note,.booking-demo-note,.booking-consent,
.booking-field>span,.custom-field>span,.request-field>span,.request-footnote,
.question-progress,.custom-count,.profile-row-count,.profile-status,
.profile-local-note,.profile-page-note,.profile-preview-badge,.profile-auth-footnote,
.profile-auth-reset,.resource-copy small,.article-figure figcaption,
.case-illustration figcaption,.preview-weekday,.dialog-header>span,
.preview-label,.ds-type-caption,.ds-type-name,.ds-type-name small,
.ds-status,.ds-mode>span,.ds-kicker,.ds-index,.ds-color-label strong,.ds-color-label code,
.ds-caption,.ds-role small,.ds-button-sample small,.ds-choice-note,.ds-demo-pill,
.ds-spacing-item,.ds-radius-example,.ds-radius-example small,.ds-specimen-head,
.ds-specimen-note,.ds-footer,.ds-sources a,.ds-gradient small{
  font-size:var(--type-caption);font-weight:var(--weight-regular);
  line-height:var(--leading-caption);letter-spacing:var(--tracking-body)
}
.material-card .author-name,.profile-auth-state strong,.ds-type-name,
.ds-color-label strong,.ds-specimen-head>span:first-child{font-weight:var(--weight-medium)}
.profile-auth-state strong,.ds-role strong,.ds-demo-label,.ds-gradient strong,.ds-jump a{
  font-size:var(--type-body);font-weight:var(--weight-medium);line-height:var(--leading-caption);letter-spacing:var(--tracking-body)
}
.booking-error,.toast,.dialog-feedback{font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);letter-spacing:var(--tracking-body)}
.service-caption>p,.ds-service-caption>span{font-size:var(--type-caption);font-weight:var(--weight-medium);line-height:var(--leading-caption);letter-spacing:.025em}
.service-art .paper-top,.service-art .paper-top strong{font-size:var(--type-caption);font-weight:var(--weight-medium);line-height:var(--leading-caption);letter-spacing:var(--tracking-body)}
.service-art .paper-top .service-duration,.service-art .topic-tags span{font-size:var(--type-caption);font-weight:var(--weight-regular);line-height:var(--leading-caption);letter-spacing:var(--tracking-body)}

/* The only display face: equal three-line service promises. */
.service-art .paper-card h3,.ds-type-display{
  font-family:var(--font-display);font-size:var(--type-service-display);
  font-weight:var(--weight-semibold);line-height:1.13;letter-spacing:0;
  font-feature-settings:'calt' 1,'ss01' 1;font-synthesis:none
}
.service-art .paper-card h3{min-height:3.39em}
.service-art .paper-card h3>span,.ds-type-display>span{display:block;white-space:nowrap}
.ds-brand{font-size:var(--type-body-large);font-weight:var(--weight-semibold);line-height:var(--leading-heading);letter-spacing:var(--tracking-heading)}
@media(min-width:540px){:root{--type-service-display:26px}}
@media(max-width:359px){
  :root{--type-service-display:19px}
  .service-caption h2,.ds-service-caption h3{font-size:18px}
  /* Two compact columns and the author/duration row: the only 11px exception. */
  .service-art .paper-top,.service-art .paper-top strong,
  .service-art .paper-top .service-duration,.service-art .topic-tags span{font-size:11px}
}
