/* Shared component typography. This layer follows the legacy and page styles. */
:root{
 --type-booking-heading:1.25rem;
 --type-booking-title:1.25rem;
 --type-booking-subtitle:.875rem;
 --type-booking-action:1rem;
 --type-booking-price:1.125rem;
 --type-booking-time:.875rem;
 --type-editorial-category:1.25rem;
 --type-editorial-card:clamp(1.35rem,1.8vw,1.75rem);
 --type-blog-card:clamp(1.25rem,1.7vw,1.5rem);
}
:root body .booking-route>summary{font-size:var(--type-booking-heading);line-height:1.5;font-weight:600;letter-spacing:0}
:root body .booking-route>summary>span{display:flex;flex-direction:column;gap:6px;min-width:0}
:root body .booking-route>summary strong{font-size:var(--type-booking-heading);font-weight:600!important;line-height:1.5;letter-spacing:0;margin:0}
:root body .booking-route>summary small{font-size:var(--type-booking-subtitle);font-weight:500!important;line-height:1.6;letter-spacing:0;display:block;margin:0;color:var(--muted)}
:root body .booking-route .booking-option>strong{font-size:var(--type-booking-title);font-weight:600!important;line-height:1.45;letter-spacing:0}
:root body .booking-option .booking-action{font-size:var(--type-booking-action);font-weight:600!important;line-height:1.5;letter-spacing:0}
:root body .booking-option .booking-price{font-size:var(--type-booking-price);font-weight:600!important;line-height:1.5;letter-spacing:0}
:root body .booking-option .booking-treatment-time{font-size:var(--type-booking-time);font-weight:400;line-height:1.6;letter-spacing:0}
:root body .booking-option .booking-recommendation{font-size:var(--type-booking-subtitle);font-weight:500;line-height:1.6;letter-spacing:0}
:root body .booking-note-heading{font-size:1rem;font-weight:600!important;line-height:1.6}
:root body[data-treatment-page] :is(.condition,.treatment-disclosure)>summary{font-size:var(--type-item,1.25rem);font-weight:600!important;line-height:1.55;letter-spacing:0}
:root body[data-treatment-page] :is(.condition,.treatment-disclosure)>summary>span{font-size:inherit;line-height:inherit;font-weight:inherit}
:root body .editorial-card-title,
:root body .individual-selection .care-path-link>.editorial-card-title,
:root body .cdt-phase-card .editorial-card-title,
:root body .home-disclosure .editorial-card-title,
:root body.patient-home .meaning .editorial-card-title,
:root body.patient-home .patient-process .editorial-card-title{font-size:var(--type-editorial-card);font-weight:600!important;line-height:1.35;letter-spacing:-.02em}
:root body .editorial-card-category,
:root body .treatment-detail-content .editorial-card-category{font-size:var(--type-editorial-category)!important;font-weight:600!important;line-height:1.45;letter-spacing:.025em;overflow-wrap:normal;word-break:normal;hyphens:auto;text-wrap:balance}
:root body .editorial-card-number{font-size:.8125rem;font-weight:500;line-height:1.5}
:root body :is(.journal-card h2,.reading-card h3){font-size:var(--type-blog-card);font-weight:600!important;line-height:1.35;letter-spacing:-.02em}
/* The final word and its decorative mark form one nonbreaking unit. */
:root body .punctuation-word{display:inline-block;white-space:nowrap;vertical-align:baseline;font-size:inherit;font-weight:inherit;letter-spacing:inherit}
/* Long words may hyphenate; the zero-width word joiner still binds the mark. */
:root body .punctuation-word-long{display:inline;white-space:normal;hyphens:auto;overflow-wrap:normal;word-break:normal}

/* Home service names stand apart from small card metadata. */
:root body.patient-home .home-offer-name{font-size:1.25rem!important;font-weight:600!important;line-height:1.45;letter-spacing:.025em;overflow-wrap:normal;word-break:normal;hyphens:none;text-wrap:balance}
@media(max-width:680px){:root body.patient-home .home-offer-name{font-size:1.125rem!important}}

/* Compact labels retain the same hierarchy on narrower screens. */
@media(max-width:680px){:root{--type-editorial-category:1.125rem}}
