/* Final typography and reflow contracts.
 * This layer loads after versioned themes so dynamic content and navigation
 * retain their sizing guarantees in every approved visual theme. */

.public-body :is(.header-inner, .header-inner > *, .desktop-nav, .header-actions),
.public-body :is(.v3-portal-hero, .v3-portal-hero > *, .v3-booking-heading, .v3-booking-heading > *, .v3-record, .v3-record > *),
.public-body :is(.v3-detail-main, .v3-detail-main > *, .booking-service-card, .service-card-copy, .payment-method-card > span) {
    min-width: 0;
    max-width: 100%;
}

.public-body .desktop-nav {
    min-width: 0;
    gap: clamp(.15rem, .45vw, .45rem);
}

.public-body .desktop-nav > a:not(.button) {
    padding-inline: .4rem;
    font-size: clamp(.68rem, .65vw, .76rem);
}

.public-body .mobile-menu.has-desktop-overflow > summary {
    width: 3rem;
    min-width: 3rem;
    justify-content: center;
    gap: 0;
    padding: .7rem;
}

.public-body .mobile-menu.has-desktop-overflow > summary > span:first-child {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.public-body :is(.button, button, summary, .badge, .status-pill) { max-width: 100%; }

.public-body :is(.button, button) {
    min-width: 0;
    white-space: normal;
    line-height: 1.25;
    text-align: center;
}

.public-body :is(.badge, .status-pill) {
    min-width: 0;
    overflow-wrap: break-word;
    word-break: normal;
    white-space: normal;
}

.public-body :is(.v3-portal-greeting h1, .v3-booking-heading h3, .v3-record > *, .v3-detail-main h1, .v3-detail-main h2, .v3-detail-main h3) {
    overflow-wrap: anywhere;
    word-break: normal;
}

.public-body .v3-detail-main { grid-template-columns: minmax(0, 1fr); }
.public-body .booking-service-card { grid-template-columns: 4.8rem minmax(0, 1fr); }
.public-body .payment-method-card { grid-template-columns: 1.2rem minmax(0, 1fr) 1.5rem; }

.public-body .cards-trust-grid h3,
.public-body .cards-freedom-items h3,
.public-body .v3-seminar .seminar-price-table th {
    max-width: 100%;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}

.public-body .cards-freedom-items article {
    grid-template-columns: minmax(10.5rem, .48fr) minmax(0, 1.52fr);
}

.public-body .newsletter-faq-shell h2 {
    max-width: 14ch;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}

.public-body .contact-experience-intro h2 {
    max-width: 100%;
    font-size: clamp(2.25rem, 3.15vw, 2.8rem);
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}

.public-body .about-values h3 {
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
    font-size: clamp(1.3rem, 1.55vw, 1.65rem);
}

.public-body .knowledge-experience .experience-intro h1 {
    max-width: 100%;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}

@media (max-width: 1240px) {
    .public-body .desktop-nav { display: none; }
    .public-body .mobile-menu { display: block; }
}

@media (max-width: 600px) {
    .public-body .booking-service-card { grid-template-columns: 4rem minmax(0, 1fr); }
}

@media (max-width: 720px) {
    .public-body .knowledge-experience .experience-intro {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 820px) {
    .public-body .contact-experience-layout,
    .public-body .contact-field-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .public-body .contact-field-wide { grid-column: auto; }

    .public-body :is(.global-phone-input, .global-phone-fields) {
        width: 100%;
        min-width: 0;
        max-width: 100%;
    }

    .public-body .global-phone-fields {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 430px) {
    .public-body .coaching-facts div { grid-template-columns: minmax(0, 1fr); }
    .public-body .coaching-facts dd {
        min-width: 0;
        text-align: left;
        overflow-wrap: break-word;
    }

    .public-body .knowledge-experience .experience-intro h1 {
        font-size: clamp(2rem, 10.2vw, 2.7rem);
        letter-spacing: -.04em;
    }
}

@media (forced-colors: active) {
    .public-body :is(.table-wrap, .table-scroll):focus-visible { outline: 2px solid Highlight; }
}
