/* nb-p8-type.css  (P8 "text lizibil", 24.10.2026)
   Type floors for NAMED components that measured below the scale on the audited pages. Not a reset: every selector targets known classes,
   a rule only ever raises a size to the scale step (12 meta / 14 body / 20 title), never lowers one. Scale tokens live in tokens.css (--nb-fs-*).
   !important is used on purpose: the page-local <style> blocks and the admin stylesheets that load later also use it; the file is linked last.
   Revert = remove the link (middleware/openuiNbInject.js + views/partials/header.ejs) or delete a block; no other file depends on it. */

/* customer calendar desktop: meta labels 10-11 -> 12 */
html body:not(#_p8) .cal-cap-label,
html body:not(#_p8) .cal-day-chip__name,
html body:not(#_p8) .past-badge,
html body:not(#_p8) .today-badge,
html body:not(#_p8) .cal-filter-card .cal-filter-title,
html body:not(#_p8) .cal-panel .cal-panel__title,
html body:not(#_p8) .rec-item__price,
html body:not(#_p8) .pkg-expiry,
html body:not(#_p8) .pkg-item__credits,
html body:not(#_p8) .upcoming-item__date-m,
html body:not(#_p8) .upcoming-item__time,
html body:not(#_p8) .upcoming-item__trainer { font-size: var(--nb-fs-12, 12px) !important; }

/* customer calendar desktop: readable text 12-13.6 -> 14 */
html body:not(#_p8) .btn-rezerva.slot-row,
html body:not(#_p8) .cal-slot-trainer span,
html body:not(#_p8) .cal-day-heading,
html body:not(#_p8) .cal-day-past-empty,
html body:not(#_p8) .chip-group .chip,
html body:not(#_p8) .chip-group .trainer-chip,
html body:not(#_p8) .cal-layout-btn,
html body:not(#_p8) .cal-week-today,
html body:not(#_p8) .toggle-row .toggle-label,
html body:not(#_p8) .rec-item__name,
html body:not(#_p8) .pkg-item__name,
html body:not(#_p8) .upcoming-item__name,
html body:not(#_p8) .studio-topnav__link { font-size: var(--nb-fs-14, 14px) !important; }

/* customer calendar mobile: day names 11 -> 12 */
@media (max-width: 767.98px) {
  html body:not(#_p8) .mc-day-name { font-size: var(--nb-fs-12, 12px) !important; }
}

/* customer calendar mobile + booking modal: 12-13.6 -> 14 */
html body:not(#_p8) .mc-svc-meta span,
html body:not(#_p8) .mc-svc-trainer span,
html body:not(#_p8) .mc-btn-small,
html body:not(#_p8) .nb-extras-summary,
html body:not(#_p8) .terms-collapsible summary,
html body:not(#_p8) .terms-collapsible li,
html body:not(#_p8) #mcTermsCheckRow label,
html body:not(#_p8) #mcTermsCheckRow label strong,
html body:not(#_p8) #mcTermsCheckRow label a,
html body:not(#_p8) #mcPromoCodeApply,
html body:not(#_p8) .purchase-card__sub,
html body:not(#_p8) .gba-field label,
html body:not(#_p8) .gba-check span,
html body:not(#_p8) .gba-link,
html body:not(#_p8) #booking-form label.form-label,
html body:not(#_p8) #mcBookingForm label.form-label { font-size: var(--nb-fs-14, 14px) !important; }

/* login/register: labels, role tabs, hint 12-13 -> 14 */
html body:not(#_p8) .nb-field__label,
html body:not(#_p8) .nb-role-btn,
html body:not(#_p8) .nb-code-hint,
html body:not(#_p8) .nb-remember span { font-size: var(--nb-fs-14, 14px) !important; }

/* customer studio/purchases mobile: meta 10-11 -> 12 */
@media (max-width: 767.98px) {
  html body:not(#_p8) .m-day__dow,
  html body:not(#_p8) .m-kpi__label,
  html body:not(#_p8) .m-package-banner__hint,
  html body:not(#_p8) .m-bottom-nav__tab span,
  html body:not(#_p8) .m-purchase__meta,
  html body:not(#_p8) .m-purchase__status,
  html body:not(#_p8) .m-package__badge,
  html body:not(#_p8) .m-action__label { font-size: var(--nb-fs-12, 12px) !important; }
}

/* customer studio/purchases mobile: 12-13 -> 14 */
@media (max-width: 767.98px) {
  html body:not(#_p8) .m-section__link,
  html body:not(#_p8) .m-empty p,
  html body:not(#_p8) .m-purchase__name,
  html body:not(#_p8) .m-purchase__price,
  html body:not(#_p8) .m-progress__stats span,
  html body:not(#_p8) .cu-chip { font-size: var(--nb-fs-14, 14px) !important; }
}

/* customer studio/purchases desktop: meta 10-11 -> 12 */
html body:not(#_p8) .day-strip__dow,
html body:not(#_p8) .bento-kpi-label,
html body:not(#_p8) .bento-xp-text,
html body:not(#_p8) .studio__package-startdate small,
html body:not(#_p8) .purchases__status { font-size: var(--nb-fs-12, 12px) !important; }

/* customer studio/purchases desktop: 12-13 -> 14 */
html body:not(#_p8) .slot-row__meta,
html body:not(#_p8) .slot-row__seats,
html body:not(#_p8) .studio__section-head h3,
html body:not(#_p8) .purchases__section-head h3,
html body:not(#_p8) .studio__package-startdate label,
html body:not(#_p8) .studio__contact-tile span,
html body:not(#_p8) .bento-level-label,
html body:not(#_p8) .bento-streak-label,
html body:not(#_p8) .purchases__card-meta,
html body:not(#_p8) .purchases__card-meta strong,
html body:not(#_p8) .purchases__card-meta span,
html body:not(#_p8) .purchases__card .muted,
html body:not(#_p8) .pur-cta-primary { font-size: var(--nb-fs-14, 14px) !important; }

/* admin/trainer sidebar: section titles 10-10.5 -> 12 (nav labels stay 13: nowrap + ellipsis chrome) */
html body:not(#_p8) #tenantSidebar .nav-group-header .group-title,
html body:not(#_p8) .tenant-sidebar .tenant-sidebar-section-title { font-size: var(--nb-fs-12, 12px) !important; }

/* admin services/customers/settings: 12-13 -> 14 */
html body:not(#_p8) .svc-card__name,
html body:not(#_p8) .svc-btn,
html body:not(#_p8) .svc-btn-primary,
html body:not(#_p8) .svc-head__sub,
html body:not(#_p8) .svc-infobar__text,
html body:not(#_p8) .svc-infobar__link,
html body:not(#_p8) p.svc-desc,
html body:not(#_p8) .es-aside-nav a,
html body:not(#_p8) #manualForm .field label,
html body:not(#_p8) .uic-opt,
html body:not(#_p8) .uic-gold,
html body:not(#_p8) .uic-how-title,
html body:not(#_p8) p.uic-how-note,
html body:not(#_p8) .btn-save,
html body:not(#_p8) .btn-cancel,
html body:not(#_p8) .nas-tile__title,
html body:not(#_p8) .nas-group__title,
html body:not(#_p8) .nal-card__title,
html body:not(#_p8) .nal-card td,
html body:not(#_p8) .nal-card th a,
html body:not(#_p8) a.nam-tab,
html body:not(#_p8) a.nal-btn,
html body:not(#_p8) button.nal-btn,
html body:not(#_p8) .nam-unit,
html body:not(#_p8) .nal-name,
html body:not(#_p8) .tup-time,
html body:not(#_p8) .tup-lead,
html body:not(#_p8) .tup-lead strong { font-size: var(--nb-fs-14, 14px) !important; }

/* admin dashboard + setup checklist: 12-13.6 -> 14 */
html body:not(#_p8) .nbsc__why,
html body:not(#_p8) .nbsc__detail,
html body:not(#_p8) .nbsc__fine,
html body:not(#_p8) .nbsc__btn,
html body:not(#_p8) .nbsc__count,
html body:not(#_p8) .nbsc__checks label,
html body:not(#_p8) .nbsc__form label,
html body:not(#_p8) .nbsc__radio label,
html body:not(#_p8) .nbsc__more summary,
html body:not(#_p8) .nbsc__acts a,
html body:not(#_p8) .schedule-timeline__time,
html body:not(#_p8) .schedule-timeline__footer-link,
html body:not(#_p8) .schedule-timeline__instructor,
html body:not(#_p8) .stp__names,
html body:not(#_p8) .td-btn,
html body:not(#_p8) .trainer-tl__time,
html body:not(#_p8) .trainer-tl__customer,
html body:not(#_p8) .nb-att-card__time,
html body:not(#_p8) .nb-att-card__who,
html body:not(#_p8) .nb-att-sum,
html body:not(#_p8) .nb-att-card__head span,
html body:not(#_p8) .nb-att-toggle__label,
html body:not(#_p8) .tup-monthnav a,
html body:not(#_p8) .tup-monthnav strong,
html body:not(#_p8) .tup-layout .btn.btn-sm,
html body:not(#_p8) .nal-empty p,
html body:not(#_p8) .nal-btn--lg,
html body:not(#_p8) .trainer-room-save { font-size: var(--nb-fs-14, 14px) !important; }

/* admin dashboard + setup checklist: meta 8.8-11.8 -> 12 */
html body:not(#_p8) .nbsc__badge,
html body:not(#_p8) .kpi-card__trend,
html body:not(#_p8) .schedule-timeline__instructor-avatar,
html body:not(#_p8) .schedule-timeline__service-type-badge,
html body:not(#_p8) .schedule-timeline__duration,
html body:not(#_p8) .schedule-timeline__footer-date,
html body:not(#_p8) .schedule-timeline__capacity,
html body:not(#_p8) #activityCount,
html body:not(#_p8) .stp__toggle,
html body:not(#_p8) .trainer-tl__badge,
html body:not(#_p8) .trainer-tl__capacity,
html body:not(#_p8) .trainer-tl__type-badge,
html body:not(#_p8) .tenant-sidebar-label .text-muted,
html body:not(#_p8) .tup-layout small.text-muted,
html body:not(#_p8) .tup-layout td small,
html body:not(#_p8) .activity-item div { font-size: var(--nb-fs-12, 12px) !important; }

/* trainer dashboard setup widget */
html body:not(#_p8) #trainer-setup-widget .card-body .d-flex div { font-size: var(--nb-fs-14, 14px) !important; }

/* dense calendar grids (admin week, trainer week): meta -> 12 */
html body:not(#_p8) small.class-type,
html body:not(#_p8) .calendar-class-block .participant-count-value,
html body:not(#_p8) .calendar-class-block .participant-count-badge,
html body:not(#_p8) .calendar-class-block small.badge,
html body:not(#_p8) .nb-att-toggle__label,
html body:not(#_p8) .resource-pill,
html body:not(#_p8) .calendar-class-block .btn.btn-sm,
html body:not(#_p8) .room-badge small { font-size: var(--nb-fs-12, 12px) !important; }

/* dense calendar grids: class time 11.2-12 -> 13 (fits the card width) */
html body:not(#_p8) small.class-time { font-size: var(--nb-fs-13, 13px) !important; }

/* admin/trainer mobile: meta 10-11 -> 12 */
@media (max-width: 767.98px) {
  html body:not(#_p8) .m-te-booking__time-date,
  html body:not(#_p8) .m-te-kpi__label,
  html body:not(#_p8) .m-te-action__label,
  html body:not(#_p8) .m-te-azi__live,
  html body:not(#_p8) .m-te-nav__tab span,
  html body:not(#_p8) .m-te-pill,
  html body:not(#_p8) .m-te-transaction__badge,
  html body:not(#_p8) .m-te-edit-btn,
  html body:not(#_p8) .m-te-kpis__l,
  html body:not(#_p8) .m-tr-nav__tab span,
  html body:not(#_p8) .m-session__time-ampm,
  html body:not(#_p8) .m-session__badge,
  html body:not(#_p8) .m-kpi__label,
  html body:not(#_p8) .m-action__label,
  html body:not(#_p8) .m-cal-day__name,
  html body:not(#_p8) .m-slot__trainer,
  html body:not(#_p8) .m-slot__cap,
  html body:not(#_p8) .m-slot__cust__paid,
  html body:not(#_p8) .m-sheet__label,
  html body:not(#_p8) .m-sheet__card__label,
  html body:not(#_p8) .m-sheet__info-note,
  html body:not(#_p8) .m-sheet__body p,
  html body:not(#_p8) .m-te-logo-preview__hint,
  html body:not(#_p8) .m-te-kpis__v small { font-size: var(--nb-fs-12, 12px) !important; }
}

/* admin/trainer mobile: 12-13 -> 14 */
@media (max-width: 767.98px) {
  html body:not(#_p8) .m-te-btn,
  html body:not(#_p8) .m-te-chip,
  html body:not(#_p8) .m-te-add,
  html body:not(#_p8) .m-te-class-card__meta,
  html body:not(#_p8) .m-te-customer__email,
  html body:not(#_p8) .m-cust-add-field label,
  html body:not(#_p8) .m-te-field label,
  html body:not(#_p8) .m-te-transaction__meta,
  html body:not(#_p8) .m-te-azi__trainer,
  html body:not(#_p8) .m-te-azi__none,
  html body:not(#_p8) .m-te-azi__cap,
  html body:not(#_p8) .m-te-booking__meta,
  html body:not(#_p8) .m-te-card__title,
  html body:not(#_p8) .m-te-sub,
  html body:not(#_p8) .m-te-section__link,
  html body:not(#_p8) .m-te-monthnav a,
  html body:not(#_p8) .m-te-lg-txt,
  html body:not(#_p8) .m-slot__cust__name,
  html body:not(#_p8) .m-cal-summary,
  html body:not(#_p8) .m-attend-btn__label,
  html body:not(#_p8) .m-session__meta,
  html body:not(#_p8) .m-today-count,
  html body:not(#_p8) .m-today-date,
  html body:not(#_p8) .m-te-export-btn { font-size: var(--nb-fs-14, 14px) !important; }
}

/* desktop customer pages: page title (h1 in app-header) 17 -> 20 */
@media (min-width: 769px) {
  html body:not(#_p8) .app-header__titles h1 { font-size: var(--nb-fs-20, 20px) !important; }
}

/* sidebar group headers */
html body:not(#_p8) #tenantSidebar .nav-group-header .group-title { letter-spacing: .03em !important; } /* keeps the group headers on one line at 12px */

/* ---- visually hidden helper (sr-only h1 where the design has no visible title) ---- */
.nb-p8-sronly { position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; border: 0 !important; }

/* ---- mobile: customer pages hide .app-header (display:none) so its <h1> was not exposed; keep it hidden to the eye but available to screen readers.
        Only the title stays; the logo link, subtitle and right slot remain display:none (no invisible focus stops). ---- */
@media (max-width: 768px) {
  html body header.app-header { display: block !important; position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; clip-path: inset(50%) !important; border: 0 !important; background: none !important; }
  html body header.app-header > .nb-mark-link, html body header.app-header .app-header__right, html body header.app-header .app-header__titles p { display: none !important; }
}
@media (max-width: 768px) {
  html body .mc-desktop-header-wrap { display: block !important; position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; }
}
/* login / register: the hero (with the page <h1>) is desktop-only; on narrower screens keep just the title for screen readers */
@media (max-width: 1023.98px) {
  html body .nb-login__hero, html body .nb-register__hero, html body .nb-resetreq__hero, html body .nb-reset__hero { display: block !important; position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; clip-path: inset(50%) !important; border: 0 !important; }
  html body .nb-login__hero > :not(h1), html body .nb-register__hero > :not(h1), html body .nb-resetreq__hero > :not(h1), html body .nb-reset__hero > :not(h1) { display: none !important; }
}
