/* ==========================================================================
   Pelos · escala de lectura
   Cargada al final de todas las páginas. Sube la tipografía base y los
   tamaños secundarios, con especial atención a móvil.
   ========================================================================== */

body {
    font-size: 16px;
    line-height: 1.6;
}

.eyebrow { font-size: 11.5px; letter-spacing: .16em; }
.wordmark { font-size: 34px; }
.wordmark--sm { font-size: 26px; }
.link-underline { font-size: 13.5px; }

.btn {
    height: 48px;
    padding: 0 24px;
    font-size: 14px;
}
.btn--sm { height: 38px; padding: 0 18px; font-size: 12.5px; }
.btn-arrow { font-size: 16px; }
.text-btn { font-size: 12.5px; }
.circle-btn { width: 38px; height: 38px; font-size: 15px; }

.field > span { font-size: 11.5px; }
.field input,
.field select,
.field textarea {
    min-height: 48px;
    font-size: 16px;
}
.field textarea { min-height: 94px; }
.check { font-size: 13px; }
.form-error { font-size: 13px; }
.fineprint { font-size: 12px; }
.status-pill { font-size: 10.5px; padding: 7px 12px; }
.count { min-width: 22px; height: 22px; font-size: 11.5px; }
.toast { font-size: 14px; }
.modal-close { width: 36px; height: 36px; font-size: 19px; }

/* ==========================================================================
   Reserva pública
   ========================================================================== */
.res-brand__word { font-size: 39px; }
.res-brand__meta strong { font-size: 10.5px; }
.res-brand__meta > span { font-size: 12px; }
.res-headnote { font-size: 10px; }
.res-wa { height: 40px; padding: 0 16px; font-size: 12.5px; }
.res-lead { font-size: 15.5px; line-height: 1.6; }
.res-mini { font-size: 12.5px; }
.res-label { font-size: 10.5px; }
.res-contact h2 { font-size: 32px; }
.res-contact__desc { font-size: 13.5px; line-height: 1.6; }
.res-contact dt { font-size: 9.5px; }
.res-contact dd { font-size: 13.5px; }
.res-social { font-size: 12px; }
.res-panel__head h2 { font-size: 38px; }
.res-badge { font-size: 9.5px; }
.res-field-label { font-size: 10.5px; }
.res-date-label { font-size: 11.5px; }
.res-select {
    height: 50px;
    padding: 0 40px 0 15px;
    font-size: 16px;
}
.res-date { flex-basis: 58px; height: 68px; }
.res-date__dow { font-size: 9.5px; }
.res-date__num { font-size: 24px; }
.res-date__month { font-size: 8.5px; }
.res-arrow { width: 32px; height: 32px; font-size: 13px; }
.res-slot { height: 44px; font-size: 13.5px; }
.res-empty { min-height: 44px; font-size: 12.5px; }
.res-field > span { font-size: 10.5px; }
.res-field input { height: 50px; font-size: 16px; }
.res-check { font-size: 12.5px; }
.res-error { font-size: 12.5px; }
.res-submit { height: 52px; font-size: 14.5px; }
.res-fine { font-size: 11px; line-height: 1.55; }
.res-footer { font-size: 11px; }
.res-credit { font-size: 11px; }
.res-credit img { height: 22px; }
.res-success__lead { font-size: 13.5px; line-height: 1.65; }
.res-code { font-size: 11px; }
.res-code strong { font-size: 13px; }
.res-success__actions .btn { height: 44px; font-size: 12.5px; }

/* ==========================================================================
   Página de la clienta
   ========================================================================== */
.client-topbar__back { font-size: 12.5px; }
.client-hero__lead { font-size: 15.5px; }
.client-notice { font-size: 13px; line-height: 1.55; }
.ticket-label { font-size: 10px; }
.ticket-code { font-size: 11px; }
.ticket-weekday { font-size: 26px; }
.ticket-date strong { font-size: 98px; }
.ticket-month { font-size: 10px; }
.ticket-time { font-size: 15px; }
.ticket-body h2 { font-size: 42px; }
.ticket-meta { font-size: 13.5px; }
.ticket-details dt { font-size: 10px; }
.ticket-details dd { font-size: 13.5px; }
.ticket-actions .btn { font-size: 12.5px; }
.client-panel h3 { font-size: 10px; }
.timeline__item strong { font-size: 13px; }
.timeline__item span { font-size: 11px; }
.client-note p { font-size: 12px; }
.change-card__label { font-size: 9px; }
.change-card__times span { font-size: 9px; }
.change-card__times strong { font-size: 13px; }
.change-card p { font-size: 11px; }
.client-panel--contact p { font-size: 13px; }
.client-panel--contact .link-underline { font-size: 12px; }
.client-actions h3 { font-size: 30px; }
.client-actions p { font-size: 12.5px; }
.client-footer { font-size: 11px; }
.client-modal { width: min(600px, calc(100vw - 32px)); }
.client-modal--wide { width: min(740px, calc(100vw - 32px)); }
.client-modal__head h3 { font-size: 36px; }
.client-modal__body > p { font-size: 14px; }
.client-modal__fine { font-size: 12px !important; }
.client-modal__selected { font-size: 12px; }
.client-modal .slots-grid { grid-template-columns: repeat(4, 1fr); }
.date-day { width: 64px; padding: 10px 4px 9px; }
.date-day__weekday { font-size: 9.5px; }
.date-day__num { font-size: 26px; }
.date-day__month { font-size: 9px; }
.date-day__closed { font-size: 8.5px; }
.slot { height: 44px; font-size: 13.5px; }
.missing > p:not(.eyebrow) { font-size: 15px; line-height: 1.7; }

/* ==========================================================================
   Panel de la estilista
   ========================================================================== */
.topbar { flex-basis: 68px; }
.topbar__tag { font-size: 9.5px; }
.nav-cluster .btn { height: 34px; padding: 0 14px; font-size: 12px; }
.nav-cluster .icon-btn { width: 34px; height: 34px; font-size: 19px; }
.topbar__title h1 { font-size: 30px; }
.topbar__title span { font-size: 12px; }
.notif-btn__count { min-width: 19px; height: 19px; font-size: 9.5px; }
.topbar__actions .btn { height: 38px; font-size: 12.5px; }
.topbar .avatar { width: 38px; height: 38px; font-size: 11.5px; }

.segmented button { height: 32px; padding: 0 14px; font-size: 12px; }
.cal-legend { font-size: 10.5px; }
.cal-stats { font-size: 11px; }

.cal-head { flex-basis: 66px; }
.cal-day__weekday { font-size: 9.5px; }
.cal-day__num { width: 29px; height: 29px; font-size: 18px; }
.cal-day__closed { font-size: 8px; }
.cal-gutter span { font-size: 9px; }
.cal-time { font-size: 9.5px; }
.ev { padding: 5px 7px 4px; border-radius: 8px; }
.ev__time { font-size: 9px; }
.ev__name { font-size: 11.5px; }
.ev__service { font-size: 9.5px; }
.ev--tiny .ev__name { font-size: 10px; }
.ev__ghost-label { font-size: 8px; }
.cal-hint { font-size: 10px; }
.cal-hint span { font-size: 12px; }

.workspace { grid-template-columns: minmax(0, 1fr) 380px; }
.rail-profile__info strong { font-size: 14px; }
.rail-profile__info span { font-size: 11px; }
.rail-section__head h2 { font-size: 10.5px; }
.rail-muted { font-size: 10.5px; }
.req { padding: 13px 14px; }
.req__top .status-pill { padding: 4px 8px; font-size: 9.5px; }
.req__when { font-size: 10.5px; }
.req h3 { font-size: 14px; }
.req__meta { font-size: 11.5px; }
.req__change { font-size: 11px; line-height: 1.5; }
.req-btn { height: 32px; padding: 0 12px; font-size: 11px; }
.rail-empty { font-size: 11px; line-height: 1.55; }
.rail-empty strong { font-size: 11.5px; }
.today-item__time { font-size: 10.5px; }
.today-item__body strong { font-size: 12.5px; }
.today-item__body small { font-size: 10.5px; }
.rail-foot__btn { font-size: 11.5px; }

.modal { width: min(560px, calc(100vw - 32px)); }
.modal--form { width: min(640px, calc(100vw - 32px)); }
.modal--sm { width: min(500px, calc(100vw - 32px)); }
.modal__head h2 { font-size: 32px; }
.modal__lead { font-size: 12.5px; }
.modal__hint { font-size: 10.5px; }
.modal .field > span { font-size: 10px; }
.modal .field input,
.modal .field select,
.modal .field textarea { min-height: 46px; font-size: 16px; }
.modal .form-error { font-size: 12px; }
.detail-code { font-size: 9.5px; }
.detail-client h2 { font-size: 33px; }
.detail-client p { font-size: 11.5px; }
.detail-row span { font-size: 9.5px; }
.detail-row strong { font-size: 12.5px; }
.detail-row strong.big { font-size: 22px; }
.detail-block > span { font-size: 9.5px; }
.detail-block p { font-size: 12px; }
.detail-block--request .detail-change span { font-size: 10px; }
.detail-block--request .detail-change strong { font-size: 13px; }
.detail-block--request p { font-size: 11px; }
.detail-links { font-size: 11px; }
.detail-links a,
.detail-links button { font-size: 11px; }
.detail-actions .btn { height: 36px; padding: 0 13px; font-size: 11.5px; }
.notif-card p { font-size: 12px; }
.notif-card__top strong { font-size: 12px; }
.notif-card__top span { font-size: 10px; }
.notif-card__actions .btn { height: 32px; font-size: 10.5px; }
.notif-empty { font-size: 11.5px; }
.modal--confirm .confirm-body p { font-size: 12.5px; }
.empty-block { font-size: 11px; }

.month-dows span { font-size: 9.5px; }
.month-day__num { width: 26px; height: 26px; font-size: 14px; }
.month-day__today { font-size: 8px; }
.month-day__month { font-size: 8px; }
.month-day__top { min-height: 28px; }
.month-event { padding: 3px 5px; font-size: 10px; }
.month-event__time { font-size: 8px; }
.month-day__more { font-size: 9px; }

/* ==========================================================================
   Login
   ========================================================================== */
.login-lead { font-size: 13.5px; }
.login-error { font-size: 12.5px; }
.login-demo { font-size: 12px; }
.login-demo summary { font-size: 11.5px; }
.login-back { font-size: 12px; }
.login-form .field > span { font-size: 11.5px; }
.login-form input { min-height: 50px; font-size: 16px; }

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1180px) {
    .workspace { grid-template-columns: minmax(0, 1fr) 340px; }
}
@media (max-width: 1020px) {
    .workspace { grid-template-columns: minmax(0, 1fr) 320px; }
    .topbar__title h1 { font-size: 25px; }
}
@media (max-width: 900px) {
    .topbar { flex: 0 0 56px; height: 56px; }
    .rail { width: min(390px, 94vw); }
    .topbar__title h1 { font-size: 21px; }
    .topbar__actions .btn { height: 34px; font-size: 11.5px; }
    .cal-day__num { width: 26px; height: 26px; font-size: 16px; }
    .cal-time { font-size: 9.5px; }
    .cal-hint { font-size: 10.5px; }
    .admin-mobile-bar .segmented button { font-size: 11px; }
    .admin-mobile-bar .btn { font-size: 10.5px; }
}
@media (max-width: 620px) {
    body { font-size: 16px; }
    .wordmark { font-size: 31px; }
    .res-shell { width: calc(100% - 28px); }
    .res-brand { gap: 10px; }
    .res-brand__word { font-size: 34px; }
    .res-brand__meta { padding-left: 10px; }
    .res-brand__meta strong { font-size: 9px; }
    .res-brand__meta > span { font-size: 11px; }
    .res-headnote { display: none; }
    .res-wa { height: 38px; padding: 0 12px; font-size: 12px; }
    .res-panel { padding: 22px 18px 18px; }
    .res-panel__head h2 { font-size: 34px; }
    .res-date { flex-basis: 52px; height: 64px; }
    .res-date__dow { font-size: 9px; }
    .res-date__num { font-size: 22px; }
    .res-date__month { font-size: 8px; }
    .res-arrow { width: 30px; height: 30px; font-size: 12px; }
    .res-slot { height: 42px; font-size: 13px; }
    .res-field input { height: 50px; font-size: 16px; }
    .res-submit { height: 52px; font-size: 14px; }
    .res-contact dt { font-size: 9.5px; }
    .res-contact dd { font-size: 13px; }
    .res-contact h2 { font-size: 29px; }
    .res-footer { font-size: 10.5px; }
    .res-credit img { height: 19px; }

    .topbar__title h1 { font-size: 20px; }
    .topbar__actions .btn--primary {
        width: 36px;
        padding: 0;
        font-size: 0;
    }
    .topbar__actions .btn--primary::before {
        content: '+';
        font-size: 20px;
        line-height: 1;
    }
    .topbar__actions .notif-btn { width: 34px; height: 34px; }
    .cal-day__weekday { font-size: 9px; }
    .cal-day__num { width: 25px; height: 25px; font-size: 15px; }
    .cal-time { font-size: 9.5px; }
    .ev__name { font-size: 10.5px; }
    .ev__time { font-size: 8px; }
    .ev__service { font-size: 8.5px; }
    .ev__ghost-label { font-size: 7px; }

    .month-dows span { font-size: 9.5px; }
    .month-day__num { width: 21px; height: 21px; font-size: 13px; }
    .month-day__today { font-size: 6.5px; }
    .month-event { height: 5px; min-height: 5px; padding: 0; }

    .client-topbar__back { font-size: 12px; }
    .client-hero__lead { font-size: 15px; }
    .ticket-body h2 { font-size: 36px; }
    .ticket-details dd { font-size: 13px; }
    .ticket-details dt { font-size: 9.5px; }
    .client-actions h3 { font-size: 28px; }
    .client-actions p { font-size: 12px; }
    .client-modal__head h3 { font-size: 31px; }
    .client-modal__body > p { font-size: 13.5px; }
    .date-day { width: 56px; height: auto; }
    .date-day__num { font-size: 24px; }
    .client-modal .slots-grid { grid-template-columns: repeat(3, 1fr); }
    .slot { height: 44px; font-size: 13px; }

    .modal { width: calc(100vw - 24px); }
    .modal__head h2 { font-size: 30px; }
    .detail-client h2 { font-size: 31px; }
    .detail-row strong { font-size: 12px; }
    .detail-actions .btn { font-size: 11px; }
    .notif-card p { font-size: 12px; }
}
@media (max-width: 400px) {
    .res-brand__meta > span { display: none; }
    .res-brand__meta strong { font-size: 8.5px; }
    .res-date { flex-basis: 48px; }
    .res-slot { font-size: 12.5px; }
    .topbar__title h1 { font-size: 18px; }
}
