/**
 * Centro Impulso — refinamiento tema claro (capa sobre style.css)
 * Paleta estable: fondos blancos, teal #0d9488, bordes #e2e8f0
 */

/* —— Sidebar oscuro (logueado) —— */
.panel-app .panel-sidebar,
.panel-app .panel-sidebar__footer {
    border-color: rgba(255, 255, 255, 0.08);
}

.panel-app .panel-sidebar__link.is-active::before {
    background: var(--primary-bright);
}

.panel-app .panel-sidebar__avatar {
    background: var(--primary-bright);
    color: #0a0a0a;
}

/* —— Cabecera pública —— */
.site-header {
    background: #fff;
    box-shadow: var(--shadow-sm);
}

.logo-mark {
    background: var(--primary);
    color: #fff;
    box-shadow: var(--shadow-sm);
}

.brand-name {
    color: var(--text);
}

.brand-tagline {
    color: var(--muted);
}

nav a {
    color: var(--text);
}

nav a:hover {
    background: var(--primary-glow);
    color: var(--primary);
}

.user-chip {
    background: var(--primary-glow);
    color: var(--primary-dark);
}

.btn-link,
.btn-link--primary {
    color: #fff;
}

.btn-link:hover,
.btn-link--primary:hover {
    color: #fff;
}

/* —— Login / registro —— */
.auth-page .site-header {
    background: #0a0a0a;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.auth-page .site-header .logo-image {
    filter: brightness(0) invert(1);
}

.auth-page .site-header nav a {
    color: rgba(255, 255, 255, 0.88);
}

.auth-page .site-header nav a:hover {
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
}

.auth-page .site-footer {
    background: rgba(255, 255, 255, 0.96);
    border-top: 1px solid var(--border);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.auth-page .site-footer > div:first-child > p:first-child {
    color: var(--muted);
}

.auth-page .site-footer .footer-legal a {
    color: var(--text);
}

.auth-page .site-footer .footer-legal a:hover {
    color: var(--primary);
}

.auth-page .site-footer .footer-legal-sep {
    color: var(--border);
}

/* —— Registro: panel dividido —— */
.auth-page .login-page-bg:has(.register-shell) {
    position: relative;
    inset: auto;
    width: 100%;
    height: auto;
    min-height: calc(100dvh - 4rem);
    padding: 1rem 0 2rem;
    align-items: flex-start;
}

.auth-page .site-main:has(.register-shell) {
    align-items: flex-start;
    justify-content: center;
    padding: 5rem 1rem 4.5rem !important;
}

.register-shell {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    width: 100%;
    max-width: 980px;
    min-height: min(640px, calc(100dvh - 9rem));
    margin: 0 auto;
    border-radius: 20px;
    overflow: hidden;
    box-shadow:
        0 4px 6px rgba(15, 23, 42, 0.04),
        0 24px 48px rgba(15, 23, 42, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.6);
}

.register-shell__brand {
    background:
        radial-gradient(ellipse 120% 80% at 0% 0%, rgba(20, 184, 166, 0.35) 0%, transparent 55%),
        radial-gradient(ellipse 80% 60% at 100% 100%, rgba(3, 105, 161, 0.25) 0%, transparent 50%),
        linear-gradient(155deg, #0f172a 0%, #134e4a 48%, #0f766e 100%);
    color: #fff;
    padding: clamp(1.75rem, 3vw, 2.5rem);
}

.register-shell__brand-inner {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    height: 100%;
}

.register-shell__logo-link {
    display: inline-flex;
    align-self: flex-start;
}

.register-shell__logo {
    height: 44px;
    width: auto;
    object-fit: contain;
    filter: brightness(0) invert(1);
}

.register-shell__eyebrow {
    margin: 0;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.65);
}

.register-shell__title {
    margin: 0;
    font-size: clamp(1.65rem, 3vw, 2.1rem);
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.03em;
}

.register-shell__lead {
    margin: 0;
    font-size: 0.98rem;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.82);
    max-width: 26rem;
}

.register-shell__services {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.25rem;
}

.register-shell__service {
    display: inline-flex;
    align-items: center;
    padding: 0.28rem 0.65rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    background: rgba(255, 255, 255, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: rgba(255, 255, 255, 0.92);
}

.register-shell__benefits {
    list-style: none;
    margin: auto 0 0;
    padding: 1.25rem 0 0;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    border-top: 1px solid rgba(255, 255, 255, 0.14);
}

.register-shell__benefit {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

.register-shell__benefit-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.12);
    color: #5eead4;
    flex-shrink: 0;
}

.register-shell__benefit-text {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    font-size: 0.84rem;
    line-height: 1.45;
    color: rgba(255, 255, 255, 0.78);
}

.register-shell__benefit-text strong {
    color: #fff;
    font-size: 0.9rem;
    font-weight: 700;
}

.register-shell__form-panel {
    background: #fff;
    padding: clamp(1.5rem, 3vw, 2.25rem);
    display: flex;
    align-items: center;
}

.register-shell__card {
    width: 100%;
}

.register-shell__card-head {
    margin-bottom: 1.35rem;
}

.register-shell__form-title {
    margin: 0 0 0.35rem;
    font-size: 1.45rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #0f172a;
}

.register-shell__form-lead {
    margin: 0;
    font-size: 0.9rem;
    color: var(--muted);
    line-height: 1.5;
}

.register-shell__form {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.register-shell__fieldset {
    margin: 0;
    padding: 0;
    border: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.register-shell__legend {
    padding: 0;
    margin: 0 0 0.15rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #94a3b8;
}

.register-shell__field {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.register-shell__label {
    font-size: 0.82rem;
    font-weight: 600;
    color: #334155;
}

.register-shell__form input {
    width: 100%;
    padding: 0.72rem 0.9rem;
    border: 1.5px solid #cbd5e1;
    border-radius: 10px;
    font-size: 0.95rem;
    background: #fff;
    color: #0f172a;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.register-shell__form input:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.14);
}

.register-shell__form input::placeholder {
    color: #94a3b8;
}

.register-shell__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
}

.register-shell__hint {
    font-size: 0.76rem;
    color: var(--muted);
    line-height: 1.4;
}

.register-shell__captcha {
    padding: 0.85rem 1rem;
    border-radius: 12px;
    background: #f8fafc;
    border: 1px dashed #cbd5e1;
}

.register-shell__captcha-row {
    display: flex;
    align-items: center;
    gap: 0.65rem;
}

.register-shell__captcha-prompt {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f766e;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.register-shell__field--captcha input {
    max-width: 5.5rem;
    text-align: center;
    font-weight: 700;
}

.register-shell__submit {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    min-height: 48px;
    margin-top: 0.15rem;
    padding: 0.85rem 1.25rem;
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
    color: #fff;
    font-size: 0.98rem;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 8px 20px rgba(13, 148, 136, 0.28);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.register-shell__submit:hover {
    transform: translateY(-1px);
    box-shadow: 0 12px 28px rgba(13, 148, 136, 0.34);
}

.register-shell__submit-arrow {
    font-size: 1.1rem;
    line-height: 1;
}

.register-shell__legal {
    margin: 0;
    font-size: 0.76rem;
    line-height: 1.45;
    text-align: center;
}

.register-shell__legal a {
    color: var(--primary-dark);
    font-weight: 600;
    text-decoration: none;
}

.register-shell__legal a:hover {
    text-decoration: underline;
}

.register-shell__footer {
    margin: 0;
    padding-top: 0.85rem;
    border-top: 1px solid var(--border);
    text-align: center;
    font-size: 0.88rem;
    color: var(--muted);
}

.register-shell__login-link {
    color: var(--primary-dark);
    font-weight: 700;
    text-decoration: none;
}

.register-shell__login-link:hover {
    text-decoration: underline;
}

.input-uppercase {
    text-transform: uppercase;
}

@media (max-width: 860px) {
    .auth-page .site-main:has(.register-shell) {
        padding: 0.75rem 0.75rem 5.5rem !important;
        align-items: stretch !important;
    }

    .register-shell {
        grid-template-columns: 1fr;
        min-height: 0;
        max-width: 520px;
        border-radius: 16px;
    }

    .register-shell__brand {
        padding: 1.5rem 1.35rem 1.25rem;
    }

    .register-shell__benefits {
        margin-top: 0.5rem;
        padding-top: 1rem;
    }

    .register-shell__form-panel {
        padding: 1.35rem 1.25rem 1.5rem;
    }

    .register-shell__row {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 480px) {
    .register-shell__services {
        gap: 0.35rem;
    }

    .register-shell__service {
        font-size: 0.68rem;
    }
}

/* Legacy register classes (complete_registration) */
.auth-page .site-main:has(.register-hero) {
    align-items: flex-start;
    justify-content: center;
    padding-top: 5.5rem !important;
    padding-bottom: 2.5rem !important;
}

.register-hero {
    width: 100%;
    max-width: 1120px;
    margin: 0 auto;
    padding: 1.5rem clamp(1rem, 3vw, 2rem) 2rem;
}

.register-content {
    gap: clamp(2rem, 5vw, 4rem);
}

.register-intro {
    padding-top: 0.5rem;
}

.register-title {
    font-size: clamp(1.85rem, 3.5vw, 2.35rem);
    letter-spacing: -0.03em;
}

.register-subtitle {
    font-size: 1.05rem;
    max-width: 34rem;
}

.register-benefits {
    list-style: none;
    margin: 0;
    padding: 0;
    border-top: 1px solid var(--border);
}

.register-card {
    border-radius: var(--radius-lg);
    padding: clamp(1.5rem, 3vw, 2.25rem);
    box-shadow: var(--shadow-lg);
    border: 1px solid var(--border);
    background: #fff;
}

.register-card-header {
    margin-bottom: 1.5rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--border);
}

.register-form-title {
    font-size: 1.45rem;
    letter-spacing: -0.02em;
}

.register-form-subtitle {
    font-size: 0.92rem;
    line-height: 1.5;
}

.register-form {
    gap: 1.1rem;
}

.register-form .form-field-compact .label-text {
    font-size: 0.82rem;
    color: #334155;
    margin-bottom: 0.35rem;
}

.register-form input {
    padding: 0.75rem 1rem;
    border-radius: 10px;
    border: 1.5px solid #cbd5e1;
    background: #fff;
    font-size: 0.95rem;
}

.register-form input:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.12);
}

.input-uppercase {
    text-transform: uppercase;
}

.register-captcha-row {
    padding-top: 0.25rem;
}

.benefit-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: rgba(13, 148, 136, 0.12);
    color: var(--primary);
    box-shadow: none;
    font-size: 0;
}

.benefit-icon svg {
    display: block;
}

.btn-register {
    margin-top: 0.25rem;
    min-height: 48px;
    border-radius: 10px;
    box-shadow: var(--shadow-sm);
    color: #fff;
}

.btn-register:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}

.register-form-footer {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    font-size: 0.88rem;
}

@media (max-width: 768px) {
    .auth-page .site-main:has(.register-hero) {
        padding-top: 1rem !important;
        padding-bottom: 1.5rem !important;
    }

    .register-hero {
        padding: 0.5rem 0 1rem;
    }

    .register-intro {
        text-align: center;
        align-items: center;
    }

    .register-logo {
        display: flex;
        justify-content: center;
    }

    .register-benefits {
        text-align: left;
        width: 100%;
    }

    .benefit-item {
        align-items: center;
    }
}

/* —— Botones primarios globales —— */
.btn,
.btn--primary,
.btn-primary,
.btn-submit,
.btn-login-centered {
    color: #fff;
    box-shadow: var(--shadow-sm);
}

.btn:hover,
.btn--primary:hover,
.btn-primary:hover {
    box-shadow: var(--shadow-md);
}

.btn-primary {
    box-shadow: var(--shadow-sm);
}

.form-field-compact input:focus {
    outline: 2px solid rgba(13, 148, 136, 0.2);
    box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.08);
}

.btn-login-centered:hover {
    box-shadow: var(--shadow-md);
}

/* —— Pie de página —— */
.site-footer {
    background: #fff;
    box-shadow: none;
}

/* —— Tarjetas KPI y dashboard admin —— */
.kpi-card {
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
}

.kpi-card:hover {
    border-color: var(--border-accent);
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

.kpi-card--highlight {
    background: linear-gradient(135deg, #f0fdfa 0%, #ffffff 55%, #f8fafc 100%);
    border-color: var(--border-accent);
}

.kpi-card--highlight:hover {
    box-shadow: var(--shadow-md);
}

.kpi-card__icon {
    background: rgba(13, 148, 136, 0.1);
}

.dashboard__hero--client::before,
.dashboard__hero--client::after {
    background: radial-gradient(circle, rgba(13, 148, 136, 0.05) 0%, transparent 70%);
}

.dashboard__hero--admin {
    border-radius: var(--radius-lg);
    border: 1px solid var(--border);
    box-shadow: var(--shadow-md);
    background: var(--card);
}

.dashboard__hero--admin::before {
    background: radial-gradient(circle, rgba(13, 148, 136, 0.06) 0%, transparent 65%);
}

.dashboard__hero--admin::after {
    background: radial-gradient(circle, rgba(3, 105, 161, 0.05) 0%, transparent 70%);
}

.dashboard__hero-avatar--admin {
    box-shadow: var(--shadow-md);
    border-color: var(--primary);
}

.avatar-wrapper img,
.avatar-placeholder {
    border-color: var(--primary);
    box-shadow: var(--shadow-md);
}

.avatar-placeholder {
    color: #fff;
}

.avatar-badge {
    color: #fff;
}

/* —— Tablas admin —— */
.admin-table {
    border: 1px solid var(--border);
    box-shadow: var(--shadow-sm);
    border-radius: var(--radius-md);
}

.admin-table thead {
    background: #f8fafc;
    color: var(--text);
}

.admin-table th {
    border-bottom: 1px solid var(--border);
    color: var(--muted);
    font-weight: 700;
}

.admin-table tbody tr:hover {
    background: #f8fafc;
}

/* —— Listas y navegación dashboard —— */
.dash-list__item--today {
    background: rgba(13, 148, 136, 0.06);
}

.dash-list__action--primary {
    color: #fff;
}

.dash-list__action--primary:hover {
    background: var(--primary-dark);
    border-color: var(--primary-dark);
    box-shadow: var(--shadow-sm);
}

.dash-nav--grid .dash-nav__link:hover {
    border-color: var(--border-accent);
    box-shadow: var(--shadow-sm);
}

.dash-nav--grid .dash-nav__link:hover {
    background: #fff;
}

/* —— Tarjetas dashboard cliente —— */
.dash-block--card {
    border-radius: var(--radius-lg);
}

.dash-alert {
    border-radius: var(--radius-md);
}

/* —— Modales y dropdowns —— */
.modal-content-panel {
    box-shadow: var(--shadow-lg);
    border: 1px solid var(--border);
}

.nav-dropdown-menu {
    box-shadow: var(--shadow-lg);
}

/* —— Auth card registro —— */
.auth-card {
    box-shadow: var(--shadow-lg);
    border: 1px solid var(--border);
}

.auth-shell .auth-card {
    box-shadow: var(--shadow-lg);
}

/* —— Progreso y anillos —— */
.progress-ring {
    border-color: rgba(13, 148, 136, 0.15);
}

.dash-progress__fill {
    background: var(--primary);
}

/* —— Panel: coherencia extra —— */
.panel-app .site-header {
    display: none;
}

.panel-app section:not(.dashboard--fw),
.panel-app .admin-section {
    border-radius: var(--radius-lg);
}

.panel-app .admin-table thead {
    background: #f8fafc;
    color: var(--text);
}

.panel-app .admin-table th {
    color: var(--muted);
}

.panel-app .badge,
.panel-app .status-badge {
    border-radius: 999px;
}

/* —— Servicios / landings —— */
.service-detail__header-icon {
    background: rgba(13, 148, 136, 0.08);
    border-color: var(--border-accent);
    color: var(--primary);
}

.service-detail__header-icon .service-icon {
    width: 36px;
    height: 36px;
}

.service-detail__header-content--entrenamiento .service-detail__header-icon {
    background: rgba(13, 148, 136, 0.1);
    color: #0d9488;
}

.service-detail__header-content--nutricion .service-detail__header-icon {
    background: rgba(22, 163, 74, 0.1);
    color: #15803d;
}

.service-detail__header-content--fisioterapia .service-detail__header-icon {
    background: rgba(37, 99, 235, 0.1);
    color: #1d4ed8;
}

.service-detail__header-content--psicologia .service-detail__header-icon {
    background: rgba(124, 58, 237, 0.1);
    color: #6d28d9;
}

.service-detail__subscribe-btn {
    width: 100%;
    padding: 1rem 2rem;
    font-size: 1.05rem;
}

/* —— Catálogo de servicios —— */
.panel-app .site-main:has(.services--fw),
.panel-app .site-main:has(.service-detail--fw),
.panel-app .site-main:has(.onboarding-wizard--fw),
.panel-app .site-main:has(.ms-page--fw),
.panel-app .site-main:has(.panel-page--fw) {
    padding: 0;
    max-width: none;
    overflow-x: clip;
    flex: 1;
    min-width: 0;
}

.services--catalog.services--fw,
.service-detail--fw,
.onboarding-wizard--fw,
.ms-page--fw,
.panel-page--fw {
    --services-inset-x: clamp(1.25rem, 4vw, 2.75rem);
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 1.25rem var(--services-inset-x) 2.5rem;
    box-sizing: border-box;
}

.services--catalog {
    width: 100%;
}

.services-hero {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem 1.5rem;
    margin-bottom: 1.75rem;
    padding: 1.75rem 1.85rem;
    background: linear-gradient(135deg, #ffffff 0%, #f8fafc 55%, #f0fdfa 100%);
    border: 1px solid var(--border);
    border-radius: 18px;
    box-shadow: var(--shadow-sm);
}

.services-hero__content h2 {
    margin: 0.25rem 0 0.5rem;
    font-size: clamp(1.5rem, 2.8vw, 2rem);
    letter-spacing: -0.03em;
}

.services-hero__lead {
    margin: 0;
    max-width: 42em;
    color: var(--muted);
    font-size: 0.95rem;
    line-height: 1.55;
}

.services-hero__back {
    margin: 0;
    flex-shrink: 0;
}

.services-categories {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin-bottom: 2rem;
}

.services-categories__pill {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 1rem;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 999px;
    color: var(--text);
    font-size: 0.82rem;
    font-weight: 600;
    text-decoration: none;
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}

.services-categories__pill-icon {
    display: flex;
    color: var(--primary);
}

.services-categories__pill:hover {
    border-color: var(--border-accent);
    box-shadow: var(--shadow-sm);
    transform: translateY(-1px);
}

.services-categories__pill--entrenamiento .services-categories__pill-icon { color: #0d9488; }
.services-categories__pill--nutricion .services-categories__pill-icon { color: #15803d; }
.services-categories__pill--fisioterapia .services-categories__pill-icon { color: #1d4ed8; }
.services-categories__pill--psicologia .services-categories__pill-icon { color: #6d28d9; }

.services-tip {
    margin-bottom: 1.5rem;
    padding: 0.85rem 1.1rem;
    background: rgba(13, 148, 136, 0.06);
    border: 1px solid rgba(13, 148, 136, 0.15);
    border-radius: 12px;
    font-size: 0.88rem;
    color: var(--text);
}

.services-tip p {
    margin: 0;
}

.services-empty {
    padding: 2.5rem 1.5rem;
    text-align: center;
    background: #fff;
    border: 1px dashed var(--border);
    border-radius: 16px;
}

.services-empty p {
    margin: 0 0 0.75rem;
    color: var(--muted);
}

.service-category {
    margin-bottom: 3rem;
}

.service-category__header {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 1rem 1.25rem;
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border);
}

.service-category__heading h3 {
    margin: 0;
    font-size: 1.35rem;
}

.service-category__heading p {
    margin: 0.25rem 0 0;
    font-size: 0.85rem;
    color: var(--muted);
}

.service-category__link {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--primary);
    text-decoration: none;
    white-space: nowrap;
}

.service-category__link:hover {
    text-decoration: underline;
}

.service-category__icon {
    width: 52px;
    height: 52px;
    font-size: inherit;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 14px;
    border: 1px solid var(--border-accent);
    background: rgba(13, 148, 136, 0.08);
    color: var(--primary);
}

.service-category--entrenamiento .service-category__icon {
    background: rgba(13, 148, 136, 0.1);
    color: #0d9488;
    border-color: rgba(13, 148, 136, 0.2);
}

.service-category--nutricion .service-category__icon {
    background: rgba(22, 163, 74, 0.1);
    color: #15803d;
    border-color: rgba(22, 163, 74, 0.2);
}

.service-category--fisioterapia .service-category__icon {
    background: rgba(37, 99, 235, 0.1);
    color: #1d4ed8;
    border-color: rgba(37, 99, 235, 0.2);
}

.service-category--psicologia .service-category__icon {
    background: rgba(124, 58, 237, 0.1);
    color: #6d28d9;
    border-color: rgba(124, 58, 237, 0.2);
}

.services-grid {
    gap: 1.15rem;
}

.services--fw .services-grid {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
}

@media (min-width: 1400px) {
    .services--fw .services-grid {
        grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
    }
}

.service-card {
    border-radius: 16px;
    border: 1px solid var(--border);
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05);
}

.service-card::before {
    height: 3px;
    background: var(--primary);
}

.service-card--entrenamiento::before { background: #0d9488; }
.service-card--nutricion::before { background: #16a34a; }
.service-card--fisioterapia::before { background: #2563eb; }
.service-card--psicologia::before { background: #7c3aed; }

.service-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.08);
    border-color: var(--border-accent);
}

.service-card--entrenamiento,
.service-card--nutricion,
.service-card--fisioterapia,
.service-card--psicologia {
    border-color: var(--border);
}

.service-card--entrenamiento:hover { border-color: rgba(13, 148, 136, 0.35); box-shadow: 0 12px 28px rgba(13, 148, 136, 0.1); }
.service-card--nutricion:hover { border-color: rgba(22, 163, 74, 0.35); box-shadow: 0 12px 28px rgba(22, 163, 74, 0.08); }
.service-card--fisioterapia:hover { border-color: rgba(37, 99, 235, 0.35); box-shadow: 0 12px 28px rgba(37, 99, 235, 0.08); }
.service-card--psicologia:hover { border-color: rgba(124, 58, 237, 0.35); box-shadow: 0 12px 28px rgba(124, 58, 237, 0.08); }

.service-card__header {
    padding: 1.25rem 1.25rem 0.85rem;
    background: #fff;
    border-bottom: none;
}

.service-card__icon {
    width: 44px;
    height: 44px;
    font-size: inherit;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: #f8fafc;
    color: var(--primary);
}

.service-card--entrenamiento .service-card__icon { color: #0d9488; background: rgba(13, 148, 136, 0.08); }
.service-card--nutricion .service-card__icon { color: #15803d; background: rgba(22, 163, 74, 0.08); }
.service-card--fisioterapia .service-card__icon { color: #1d4ed8; background: rgba(37, 99, 235, 0.08); }
.service-card--psicologia .service-card__icon { color: #6d28d9; background: rgba(124, 58, 237, 0.08); }

.service-card:hover .service-card__icon {
    transform: none;
}

.service-card h4 {
    font-size: 1.1rem;
}

.service-badge {
    font-size: 0.7rem;
    letter-spacing: 0.02em;
}

.service-badge--individual {
    background: #f0fdfa;
    color: #0f766e;
    border: 1px solid rgba(13, 148, 136, 0.2);
}

.service-badge--grupal {
    background: #eff6ff;
    color: #1d4ed8;
    border: 1px solid rgba(37, 99, 235, 0.2);
}

.service-card__body {
    padding: 0 1.25rem 1rem;
    gap: 0.85rem;
}

.service-description {
    font-size: 0.88rem;
    line-height: 1.6;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.service-meta {
    padding-top: 0.75rem;
    gap: 0.5rem;
}

.service-meta-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    background: #f8fafc;
    color: var(--muted);
    font-size: inherit;
}

.service-meta-suffix {
    font-weight: 500;
    color: var(--muted);
    font-size: 0.85em;
}

.service-card__footer {
    padding: 0 1.25rem 1.25rem;
}

.service-card__price-block {
    background: #f8fafc;
    border-color: var(--border);
}

.service-card__cta {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 0.65rem 1rem;
    background: var(--primary);
    color: #fff;
    font-size: 0.85rem;
    font-weight: 600;
    border-radius: 10px;
    text-decoration: none;
    transition: background 0.15s, box-shadow 0.15s;
}

.service-card__cta:hover {
    background: var(--primary-dark, #0f766e);
    box-shadow: var(--shadow-sm);
}

.service-card__cta::after {
    content: ' →';
}

.cross-sell-card__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary);
}

.cross-sell-card--entrenamiento .cross-sell-card__icon { color: #0d9488; }
.cross-sell-card--nutricion .cross-sell-card__icon { color: #15803d; }
.cross-sell-card--fisioterapia .cross-sell-card__icon { color: #1d4ed8; }
.cross-sell-card--psicologia .cross-sell-card__icon { color: #6d28d9; }

/* Cross-sell en páginas internas a ancho completo */
.panel-page--fw .cross-sell,
.ms-page--fw .cross-sell,
.services--catalog.services--fw .cross-sell,
.service-detail--fw .cross-sell,
.panel-app .site-main:has(.panel-page--fw) > .cross-sell,
.panel-app .site-main:has(.ms-page--fw) > .cross-sell,
.panel-app .site-main:has(.services--catalog.services--fw) > .cross-sell,
.panel-app .site-main:has(.service-detail--fw) > .cross-sell {
    margin-top: 2.75rem;
    padding-top: 2rem;
    border-top: 1px solid var(--border);
}

.panel-app .site-main:has(.panel-page--fw) > .cross-sell,
.panel-app .site-main:has(.ms-page--fw) > .cross-sell,
.panel-app .site-main:has(.services--catalog.services--fw) > .cross-sell,
.panel-app .site-main:has(.service-detail--fw) > .cross-sell {
    --cross-sell-inset-x: clamp(1.25rem, 4vw, 2.75rem);
    padding-left: var(--cross-sell-inset-x);
    padding-right: var(--cross-sell-inset-x);
    padding-bottom: 0.25rem;
}

.panel-page--fw .cross-sell__header,
.ms-page--fw .cross-sell__header,
.services--catalog.services--fw .cross-sell__header,
.service-detail--fw .cross-sell__header {
    margin-bottom: 1.5rem;
}

.panel-page--fw .cross-sell__grid,
.ms-page--fw .cross-sell__grid,
.services--catalog.services--fw .cross-sell__grid,
.service-detail--fw .cross-sell__grid,
.panel-app .site-main:has(.panel-page--fw) > .cross-sell .cross-sell__grid,
.panel-app .site-main:has(.ms-page--fw) > .cross-sell .cross-sell__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
    gap: 1rem;
    border: none;
    border-radius: 0;
    overflow: visible;
    background: transparent;
}

@media (min-width: 1100px) {
    .panel-page--fw .cross-sell__grid,
    .ms-page--fw .cross-sell__grid,
    .services--catalog.services--fw .cross-sell__grid,
    .service-detail--fw .cross-sell__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .panel-page--fw .cross-sell--compact .cross-sell__grid,
    .ms-page--fw .cross-sell--compact .cross-sell__grid {
        grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
    }
}

.panel-page--fw .cross-sell-card,
.ms-page--fw .cross-sell-card,
.services--catalog.services--fw .cross-sell-card,
.service-detail--fw .cross-sell-card,
.panel-app .site-main:has(.panel-page--fw) > .cross-sell .cross-sell-card,
.panel-app .site-main:has(.ms-page--fw) > .cross-sell .cross-sell-card {
    gap: 0.75rem;
    padding: 1.35rem 1.4rem 1.3rem;
    background: #fff;
    border: 1px solid var(--border) !important;
    border-radius: 16px;
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05);
}

.panel-page--fw .cross-sell-card:hover,
.ms-page--fw .cross-sell-card:hover,
.services--catalog.services--fw .cross-sell-card:hover,
.service-detail--fw .cross-sell-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
    border-color: rgba(13, 148, 136, 0.22) !important;
    background: #fff;
}

.panel-page--fw .cross-sell-card--featured,
.ms-page--fw .cross-sell-card--featured,
.services--catalog.services--fw .cross-sell-card--featured,
.service-detail--fw .cross-sell-card--featured {
    background: linear-gradient(135deg, #f8fafc 0%, #ffffff 55%, #f0fdfa 100%);
    border-color: rgba(13, 148, 136, 0.28) !important;
}

.panel-page--fw .cross-sell-card__icon,
.ms-page--fw .cross-sell-card__icon,
.services--catalog.services--fw .cross-sell-card__icon,
.service-detail--fw .cross-sell-card__icon {
    width: 44px;
    height: 44px;
    border: 1px solid rgba(13, 148, 136, 0.12);
    background: rgba(13, 148, 136, 0.06);
}

.panel-page--fw .cross-sell-card__meta,
.ms-page--fw .cross-sell-card__meta,
.services--catalog.services--fw .cross-sell-card__meta,
.service-detail--fw .cross-sell-card__meta {
    margin-top: 0.15rem;
    gap: 0.35rem;
}

.panel-page--fw .cross-sell-card__actions,
.ms-page--fw .cross-sell-card__actions,
.services--catalog.services--fw .cross-sell-card__actions,
.service-detail--fw .cross-sell-card__actions {
    margin-top: 0.35rem;
    padding-top: 0.9rem;
    border-top: 1px solid var(--border);
    gap: 0.65rem;
}

.panel-page--fw .cross-sell-card__cta,
.ms-page--fw .cross-sell-card__cta,
.services--catalog.services--fw .cross-sell-card__cta,
.service-detail--fw .cross-sell-card__cta {
    font-weight: 600;
}

@media (max-width: 767px) {
    .panel-page--fw .cross-sell-card,
    .ms-page--fw .cross-sell-card,
    .services--catalog.services--fw .cross-sell-card,
    .service-detail--fw .cross-sell-card {
        border-bottom: 1px solid var(--border) !important;
    }
}

@media (max-width: 768px) {
    .services--catalog.services--fw,
    .service-detail--fw,
    .onboarding-wizard--fw,
    .ms-page--fw,
    .panel-page--fw {
        padding: 1rem 1rem 2rem;
    }

    .services-hero {
        padding: 1.25rem;
    }

    .service-category__header {
        grid-template-columns: auto 1fr;
    }

    .service-category__link {
        grid-column: 1 / -1;
    }

    .services-categories__pill {
        flex: 1 1 calc(50% - 0.3rem);
        justify-content: center;
    }
}

.landing-hero,
.landing-section {
    color: var(--text);
}

/* —— Tablas responsivas móvil —— */
@media (max-width: 768px) {
    .admin-section {
        padding: 1.25rem 1rem;
        border-radius: var(--radius-md);
    }

    .kpi-grid {
        gap: 0.85rem;
    }

    .kpi-card {
        padding: 1.15rem 1.25rem;
    }
}

/* ============================================================
   UX y usabilidad
   ============================================================ */

html {
    scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* Acceso rápido al contenido (teclado / lectores de pantalla) */
.skip-link {
    position: absolute;
    top: -100%;
    left: 1rem;
    z-index: 10000;
    padding: 0.65rem 1rem;
    background: var(--text);
    color: #fff;
    font-weight: 600;
    font-size: 0.875rem;
    border-radius: var(--radius-sm);
    text-decoration: none;
    box-shadow: var(--shadow-lg);
}

.skip-link:focus {
    top: 1rem;
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

#main-content:focus {
    outline: none;
}

.panel-app .site-main,
.site-main {
    scroll-margin-top: 5rem;
}

/* Avisos flash — toast legible */
.flash-notification {
    background: var(--primary);
    color: #fff;
    box-shadow: var(--shadow-lg);
}

.flash-notification-text {
    color: #fff;
}

.flash-notification-close {
    color: #fff;
    min-width: 44px;
    min-height: 44px;
    border-radius: var(--radius-sm);
}

.flash-notification-close:hover {
    background: rgba(255, 255, 255, 0.15);
}

.panel-app .flash-notification--panel {
    position: fixed;
    top: max(0.85rem, env(safe-area-inset-top));
    left: 50%;
    right: auto;
    width: min(540px, calc(100vw - 1.5rem));
    z-index: 1300;
    transform: translateX(-50%) translateY(-130%);
    border-radius: var(--radius-md);
    border: 1px solid rgba(255, 255, 255, 0.12);
    transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

.panel-app .flash-notification--panel.flash-notification--show {
    transform: translateX(-50%) translateY(0);
}

@media (max-width: 1023px) {
    .panel-app .flash-notification--panel {
        top: calc(4.25rem + env(safe-area-inset-top));
    }
}

.flash-notification-content {
    padding: 0.85rem 1rem;
}

/* Formularios — áreas táctiles y foco claro */
.panel-app input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]),
.panel-app select,
.panel-app textarea,
.stack input,
.stack select,
.stack textarea {
    min-height: 44px;
    border-radius: var(--radius-sm);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.panel-app textarea,
.stack textarea {
    min-height: 120px;
    padding-top: 0.75rem;
}

.panel-app input:focus,
.panel-app select:focus,
.panel-app textarea:focus,
.stack input:focus,
.stack select:focus,
.stack textarea:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.15);
}

@media (max-width: 768px) {
    .panel-app input:not([type="checkbox"]):not([type="radio"]),
    .panel-app select,
    .panel-app textarea,
    .form-field-compact input {
        font-size: 16px;
    }
}

.label-text {
    font-size: 0.875rem;
    margin-bottom: 0.35rem;
}

/* Botones — objetivo táctil mínimo 44px */
.panel-app .btn,
.panel-app .btn-primary,
.panel-app .btn-secondary,
.panel-app .btn-small,
.panel-app .btn-link {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.panel-app .btn-small {
    min-height: 38px;
    padding: 0.45rem 0.85rem;
}

/* Foco visible en panel */
.panel-app a:focus-visible,
.panel-app button:focus-visible,
.panel-app .btn:focus-visible,
.panel-app input:focus-visible,
.panel-app select:focus-visible,
.panel-app textarea:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

/* Cabeceras de sección admin */
.admin-header {
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-start;
}

.admin-header > div:first-child {
    flex: 1 1 220px;
    min-width: 0;
}

.admin-header .btn,
.admin-header .btn-link,
.admin-header .btn-secondary {
    flex-shrink: 0;
}

@media (max-width: 640px) {
    .admin-header {
        flex-direction: column;
        align-items: stretch;
    }

    .admin-header .btn,
    .admin-header .btn-link,
    .admin-header .btn-secondary,
    .clients-page__header-actions {
        width: 100%;
    }

    .clients-page__header-actions .btn,
    .clients-page__header-actions .btn-link {
        flex: 1;
        text-align: center;
    }
}

/* Tablas — scroll horizontal con indicador visual */
.admin-table-container {
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    background: var(--card);
}

.admin-table-container .admin-table {
    border: none;
    box-shadow: none;
    border-radius: 0;
}

/* Estados vacíos */
.empty-state {
    padding: 2.5rem 1.5rem;
    border-radius: var(--radius-lg);
    background: var(--card);
    border: 1px dashed var(--border);
}

.empty-state__icon {
    font-size: 2.75rem;
    line-height: 1;
    margin-bottom: 0.75rem;
    opacity: 0.85;
}

.empty-state h3 {
    font-size: 1.1rem;
    font-weight: 700;
}

.empty-state__text,
.empty-state p {
    color: var(--muted);
    max-width: 28rem;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.55;
}

.empty-state .btn,
.empty-state .btn-link {
    margin-top: 1rem;
}

/* Navegación inferior móvil */
@media (max-width: 1023px) {
    .panel-mobile-nav__link.is-active {
        color: var(--primary);
        background: rgba(13, 148, 136, 0.1);
    }

    .panel-mobile-nav__link:active {
        transform: scale(0.97);
    }

    /* Menos ruido visual: ocultar pie en vistas con barra inferior */
    body.panel-has-mobile-nav .panel-footer {
        display: none;
    }

    .panel-app .site-main {
        padding-left: 1rem;
        padding-right: 1rem;
    }
}

/* Anuncios del panel */
.announcements-container--panel {
    padding: 0 1rem;
}

.announcement-notification {
    border-radius: var(--radius-md);
    border: 1px solid var(--border);
    box-shadow: var(--shadow-md);
}

/* Tarjetas de servicios / nutrición — tono claro */
.nutrition-suggestion {
    background: linear-gradient(135deg, #f0fdfa 0%, #ffffff 100%);
    color: var(--text);
    border: 1px solid var(--border-accent);
    box-shadow: var(--shadow-md);
}

.nutrition-suggestion .btn-link,
.nutrition-suggestion a {
    color: var(--primary);
}

/* Alertas */
.alert {
    border-left-width: 4px;
    border-left-style: solid;
}

.alert--warning {
    background: #fffbeb;
    border-color: #f59e0b;
    color: #92400e;
}

.alert--success {
    background: #f0fdf4;
    border-color: #22c55e;
    color: #166534;
}

.alert--error {
    background: #fef2f2;
    border-color: #ef4444;
    color: #991b1b;
}

/* Enlaces de acción en tablas */
.actions-cell .btn-small,
.actions-cell .btn-link {
    margin: 0.15rem;
}

/* Mejor lectura en listados largos */
.dash-list__item {
    transition: background 0.15s ease;
}

.dash-list__item:hover {
    background: rgba(13, 148, 136, 0.03);
}

.dash-nav__link:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

/* —— Completar perfil (onboarding) —— */
.profile--onboarding .profile__card:first-child {
    border-color: rgba(13, 148, 136, 0.25);
    box-shadow: 0 4px 20px rgba(13, 148, 136, 0.08);
}

.profile-referral {
    padding-top: 0.5rem;
    margin-top: 0.25rem;
    border-top: 1px dashed var(--border);
}

.profile-referral__detail input {
    margin-top: 0.35rem;
}

/* —— Asistente post-registro —— */
.onboarding-wizard__hero {
    margin-bottom: 1.75rem;
}

.onboarding-wizard__form {
    margin: 0;
}

.onboarding-wizard__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
    gap: 1rem;
}

@media (min-width: 1200px) {
    .onboarding-wizard__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.onboarding-wizard__option {
    display: block;
    cursor: pointer;
}

.onboarding-wizard__option input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.onboarding-wizard__card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.55rem;
    height: 100%;
    padding: 1.25rem 1.3rem 1.35rem;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 16px;
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05);
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
    position: relative;
    overflow: hidden;
}

.onboarding-wizard__card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--primary);
    opacity: 0;
    transition: opacity 0.15s;
}

.onboarding-wizard__card--primary::before { background: #0d9488; }
.onboarding-wizard__card--entrenamiento::before { background: #0d9488; }
.onboarding-wizard__card--fisioterapia::before { background: #2563eb; }
.onboarding-wizard__card--nutricion::before { background: #16a34a; }

.onboarding-wizard__option:hover .onboarding-wizard__card,
.onboarding-wizard__option.is-selected .onboarding-wizard__card {
    transform: translateY(-3px);
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.08);
    border-color: var(--border-accent);
}

.onboarding-wizard__option.is-selected .onboarding-wizard__card::before,
.onboarding-wizard__option:hover .onboarding-wizard__card::before {
    opacity: 1;
}

.onboarding-wizard__option.is-selected .onboarding-wizard__card {
    background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
}

.onboarding-wizard__icon-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: #f8fafc;
    color: var(--primary);
    margin-bottom: 0.15rem;
}

.onboarding-wizard__card--primary .onboarding-wizard__icon-wrap,
.onboarding-wizard__card--entrenamiento .onboarding-wizard__icon-wrap {
    color: #0d9488;
    background: rgba(13, 148, 136, 0.08);
    border-color: rgba(13, 148, 136, 0.15);
}

.onboarding-wizard__card--fisioterapia .onboarding-wizard__icon-wrap {
    color: #1d4ed8;
    background: rgba(37, 99, 235, 0.08);
    border-color: rgba(37, 99, 235, 0.15);
}

.onboarding-wizard__card--nutricion .onboarding-wizard__icon-wrap {
    color: #15803d;
    background: rgba(22, 163, 74, 0.08);
    border-color: rgba(22, 163, 74, 0.15);
}

.onboarding-wizard__label {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text);
    line-height: 1.35;
}

.onboarding-wizard__desc {
    font-size: 0.88rem;
    color: var(--muted);
    line-height: 1.55;
}

.onboarding-wizard__actions {
    margin-top: 2rem;
    display: flex;
    justify-content: flex-end;
    padding-top: 0.25rem;
}

.onboarding-wizard__submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 200px;
    padding: 0.7rem 1.5rem;
    background: var(--primary);
    color: #fff;
    font-size: 0.9rem;
    font-weight: 600;
    border: none;
    border-radius: 10px;
    cursor: pointer;
    transition: background 0.15s, box-shadow 0.15s, transform 0.15s;
}

.onboarding-wizard__submit:hover {
    background: var(--primary-dark, #0f766e);
    box-shadow: var(--shadow-sm);
    transform: translateY(-1px);
}

.onboarding-wizard__submit::after {
    content: ' →';
}

@media (max-width: 768px) {
    .onboarding-wizard__grid {
        grid-template-columns: 1fr;
    }

    .onboarding-wizard__actions {
        justify-content: stretch;
    }

    .onboarding-wizard__submit {
        width: 100%;
    }
}

@media (max-width: 640px) {
    .onboarding-wizard__grid {
        grid-template-columns: 1fr;
    }
}

/* —— Control de peso (measurements) —— */
.ms-page--fw {
    --ms-ink: var(--text);
    --ms-muted: var(--muted);
    --ms-line: var(--border);
    --ms-surface: #fff;
    --ms-soft: #f8fafc;
    --ms-accent: var(--primary);
    color: var(--text);
}

.ms-page__hero {
    margin-bottom: 1.75rem;
}

.ms-page--fw .ms-status {
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.ms-page--fw .ms-stat {
    position: relative;
    overflow: hidden;
    border-radius: 16px;
    border-color: var(--border);
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05);
    padding: 1.15rem 1.25rem 1.2rem;
}

.ms-page--fw .ms-stat::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--primary);
    opacity: 0.85;
}

.ms-page--fw .ms-stat--weight {
    background: #fff;
}

.ms-page--fw .ms-stat--weight::before {
    background: #0f766e;
}

.ms-page--fw .ms-stat__label {
    font-size: 0.72rem;
    letter-spacing: 0.08em;
    color: var(--muted);
}

.ms-page--fw .ms-stat__value {
    font-size: clamp(1.6rem, 2.8vw, 2rem);
}

.ms-page--fw .ms-bmi-tag {
    border-radius: 999px;
    font-size: 0.75rem;
}

.ms-page--fw .ms-onboard,
.ms-page--fw .ms-panel {
    border-radius: 16px;
    border-color: var(--border);
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05);
    background: #fff;
}

.ms-page--fw .ms-onboard {
    max-width: 720px;
    padding: 1.5rem 1.5rem 1.65rem;
    background: linear-gradient(135deg, #ffffff 0%, #f8fafc 55%, #f0fdfa 100%);
}

.ms-page--fw .ms-onboard__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin-bottom: 0.85rem;
    border-radius: 12px;
    border: 1px solid rgba(13, 148, 136, 0.15);
    background: rgba(13, 148, 136, 0.08);
    color: var(--primary);
}

.ms-page--fw .ms-onboard__intro h3 {
    font-size: 1.1rem;
    font-weight: 700;
    letter-spacing: -0.02em;
}

.ms-page--fw .ms-onboard__intro p {
    font-size: 0.9rem;
    line-height: 1.55;
}

.ms-page--fw .ms-layout {
    gap: 1.25rem;
    margin-bottom: 1.25rem;
}

@media (min-width: 1100px) {
    .ms-page--fw .ms-layout {
        grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
    }

    .ms-page--fw .ms-chart {
        height: 300px;
    }
}

.ms-page--fw .ms-panel__head h3 {
    font-size: 1rem;
    font-weight: 700;
}

.ms-page--fw .ms-panel__meta {
    font-size: 0.82rem;
}

.ms-page--fw .ms-input:focus-within,
.ms-page--fw .ms-input-plain:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.15);
    background: #fff;
}

.ms-page--fw .ms-input,
.ms-page--fw .ms-input-plain {
    border-color: var(--border);
    border-radius: 10px;
    background: #f8fafc;
}

.ms-page--fw .ms-field label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--text);
}

.ms-page--fw .ms-submit {
    min-height: 46px;
    border-radius: 10px;
    padding: 0.7rem 1.35rem;
    font-size: 0.9rem;
    font-weight: 600;
    color: #fff;
    background: var(--primary);
    box-shadow: none;
}

.ms-page--fw .ms-submit:hover {
    background: var(--primary-dark, #0f766e);
    box-shadow: var(--shadow-sm);
    transform: translateY(-1px);
}

.ms-page--fw .ms-chart-empty {
    border-radius: 12px;
    background: #f8fafc;
    border: 1px dashed var(--border);
}

.ms-page--fw .ms-timeline__item {
    border-radius: 12px;
    border-color: var(--border);
}

.ms-page--fw .ms-timeline__item:hover {
    border-color: rgba(13, 148, 136, 0.25);
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.06);
}

.ms-page--fw .ms-delete-btn {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--muted);
}

.ms-page--fw .ms-delete-btn:hover {
    color: #b91c1c;
}

@media (max-width: 768px) {
    .ms-page__hero-cta {
        width: 100%;
    }

    .ms-page--fw {
        padding-bottom: calc(2rem + 72px);
    }
}

/* —— Panel pages (cliente, ancho completo) —— */
.panel-page--fw .panel-page__hero-cta,
.ms-page__hero-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    min-height: 44px;
    padding: 0.7rem 1.35rem;
    background: var(--primary);
    color: #fff;
    font-size: 0.9rem;
    font-weight: 600;
    text-decoration: none;
    border: none;
    border-radius: 10px;
    cursor: pointer;
    transition: background 0.15s, box-shadow 0.15s, transform 0.15s;
}

.panel-page--fw .panel-page__hero-cta:hover,
.ms-page__hero-cta:hover {
    background: var(--primary-dark, #0f766e);
    box-shadow: var(--shadow-sm);
    transform: translateY(-1px);
}

.panel-page--fw .panel-page__hero-cta::after,
.ms-page__hero-cta::after {
    content: ' →';
}

.panel-page--fw .panel-page__hero-cta--ghost {
    background: #fff;
    color: var(--primary);
    border: 1px solid rgba(13, 148, 136, 0.35);
    box-shadow: none;
}

.panel-page--fw .panel-page__hero-cta--ghost:hover {
    background: rgba(13, 148, 136, 0.06);
}

.panel-page--fw .panel-page__hero-cta--ghost::after {
    content: none;
}

.panel-page--fw .services-hero {
    margin-bottom: 1.75rem;
}

.panel-page--fw .empty-state,
.panel-page--fw .clients-empty {
    text-align: center;
    padding: 2.5rem 1.5rem;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 16px;
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05);
}

.panel-page--fw .empty-state__icon,
.panel-page--fw .clients-empty__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    margin: 0 auto 1rem;
    border-radius: 14px;
    border: 1px solid rgba(13, 148, 136, 0.15);
    background: rgba(13, 148, 136, 0.08);
    color: var(--primary);
    font-size: inherit;
}

.panel-page--fw .empty-state h3,
.panel-page--fw .clients-empty h3 {
    margin: 0 0 0.35rem;
    font-size: 1.05rem;
    font-weight: 700;
}

.panel-page--fw .subscription-card,
.panel-page--fw .objective-card,
.panel-page--fw .rating-card,
.panel-page--fw .admin-card,
.panel-page--fw .program-card,
.panel-page--fw .subscription-summary__card,
.panel-page--fw .profile__card,
.panel-page--fw .consent-content,
.panel-page--fw .assessment .form-section,
.panel-page--fw .admin-form,
.panel-page--fw .conversation-item {
    border-radius: 16px;
    border-color: var(--border);
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05);
}

.panel-page--fw .subscription-card,
.panel-page--fw .objective-card,
.panel-page--fw .rating-card,
.panel-page--fw .program-card {
    position: relative;
    overflow: hidden;
    background: #fff;
}

.panel-page--fw .subscription-icon,
.panel-page--fw .objective-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    border: 1px solid rgba(13, 148, 136, 0.15);
    background: rgba(13, 148, 136, 0.08);
    color: var(--primary);
    font-size: inherit;
}

.panel-page--fw .stat-card {
    border-radius: 16px;
    border: 1px solid var(--border);
    background: #fff;
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05);
}

.panel-page--fw .stat-card .stat-value {
    color: var(--primary);
}

.panel-page--fw .btn-primary,
.panel-page--fw .consent-form .btn-primary {
    border-radius: 10px;
    font-weight: 600;
}

.panel-page--fw .profile__grid {
    gap: 1.25rem;
}

.panel-page--fw .consent-content {
    background: #fff;
    border: 1px solid var(--border);
    padding: 1.5rem;
}

.panel-page--fw .consent-body {
    max-height: 50vh;
    overflow-y: auto;
}

.panel-page--fw .conversations-list {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
}

.panel-page--fw .conversation-item {
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
}

.panel-page--fw .conversation-item:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
    border-color: rgba(13, 148, 136, 0.25);
}

@media (max-width: 768px) {
    .panel-page--fw .panel-page__hero-cta {
        width: 100%;
    }

    .panel-page--fw {
        padding-bottom: calc(2rem + 72px);
    }
}

/* —— Dashboard cliente: onboarding y acciones rápidas —— */
.dashboard--client-new {
    --dash-welcome-gap: 1.75rem;
}

.dash-hero__streak-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

.dash-hero__streak-badge .dash-icon {
    width: 14px;
    height: 14px;
}

.dashboard--client-new .dash-alert {
    margin-bottom: 0;
    padding: 1rem clamp(1.25rem, 4vw, 2.75rem);
}

.dashboard--client-new .dash-shell--welcome {
    display: flex;
    flex-direction: column;
    gap: var(--dash-welcome-gap);
    margin-top: 1.25rem;
}

.dashboard--client-new .dash-shell .dash-hero--welcome {
    background: linear-gradient(135deg, #ffffff 0%, #f8fafc 50%, #f0fdfa 100%);
    border-color: rgba(13, 148, 136, 0.18);
    padding: 2rem 2.25rem;
    margin-top: 0;
    gap: 0;
}

.dashboard--client-new .dash-hero--welcome .dash-hero__intro {
    align-items: center;
    column-gap: 1.75rem;
}

.dashboard--client-new .dash-hero--welcome .dash-hero__inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.35rem;
    padding: 0;
}

.dashboard--client-new .dash-hero__avatar-wrap--compact {
    align-self: center;
    min-height: 0;
}

.dashboard--client-new .dash-hero__avatar-wrap--compact > .dash-hero__avatar {
    width: 72px;
    min-width: 72px;
    max-width: 72px;
    height: 72px;
    aspect-ratio: 1;
    border-radius: 18px;
    border: 2px solid rgba(13, 148, 136, 0.25);
    font-size: 1.5rem;
}

.dashboard--client-new .dash-hero__avatar-wrap--compact .dash-hero__avatar img {
    border-radius: 16px;
}

.dashboard--client-new .dash-hero--welcome .dash-hero__meta {
    padding: 0;
}

.dashboard--client-new .dash-hero--welcome .dash-hero__date {
    margin-bottom: 0.15rem;
}

.dashboard--client-new .dash-hero--welcome .dash-hero__eyebrow {
    margin-top: 0.25rem;
}

.dashboard--client-new .dash-hero--welcome .dash-hero__title {
    margin-top: 0.35rem;
    font-size: clamp(1.65rem, 3vw, 2.15rem);
    line-height: 1.15;
}

.dashboard--client-new .dash-hero--welcome .dash-hero__subtitle {
    margin-top: 0.65rem;
    max-width: 38em;
    line-height: 1.6;
}

.dashboard--client-new .dash-hero__actions--inline {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin: 0;
    padding-top: 0.15rem;
}

.dashboard--client-new .dash-hero__actions--inline .dash-hero__cta {
    padding: 0.65rem 1.25rem;
    font-size: 0.86rem;
}

.dashboard--client-new .dash-kpis--welcome {
    padding: 0;
    margin: 0;
}

.dashboard--client-new .dash-kpis--welcome .dash-kpis__inner {
    gap: 1rem;
}

.dashboard--client-new .dash-kpis--welcome .dash-stat {
    padding: 1.35rem 1.35rem 1.25rem;
    min-height: 100%;
}

.dashboard--client-new .dash-stat__icon {
    margin-bottom: 0.65rem;
}

.dashboard--client-new .dash-stat__value {
    margin-bottom: 0.15rem;
}

.dashboard--client-new .dash-stat__hint {
    margin-top: 0.5rem;
}

.dashboard--client-new .dash-recommendation {
    margin: 0;
}

.dashboard--client-new .dash-recommendation .cross-sell-banner {
    margin: 0;
    padding: 1.35rem 1.5rem;
    gap: 1.15rem 1.5rem;
    border-radius: 16px;
}

.dashboard--client-new .dash-recommendation .cross-sell-banner__actions {
    margin-left: 0;
    align-self: center;
}

.dashboard--client-new .dash-body--welcome {
    padding-top: 0.5rem;
}

.dashboard--client-new .dash-body--welcome .dash-body__main {
    padding-top: 1.25rem;
    padding-bottom: 2rem;
}

.dashboard--client-new .dash-onboarding {
    margin-bottom: 2rem;
    padding: 1.75rem 1.85rem;
}

.dashboard--client-new .dash-onboarding.dash-block--card {
    border-radius: 18px;
}

.dashboard--client-new .dash-onboarding__header {
    margin-bottom: 1.5rem;
    gap: 1.25rem 2rem;
}

.dashboard--client-new .dash-onboarding__header .dash-block__lead {
    margin-top: 0.35rem;
}

.dashboard--client-new .dash-onboarding__steps {
    gap: 0.75rem;
}

.dashboard--client-new .dash-onboarding__step {
    padding: 1rem 1.25rem;
    gap: 1rem;
}

.dashboard--client-new .dash-quick-actions {
    margin-bottom: 2.25rem;
    gap: 1rem;
}

.dashboard--client-new .dash-quick-action {
    padding: 1.25rem 1.3rem;
}

.dashboard--client-new .dash-body--welcome .dash-body__aside {
    padding-top: 1.25rem;
}

.dashboard--client-new .dash-aside-panel--client {
    padding: 1.35rem 1.25rem;
}

@media (max-width: 768px) {
    .dashboard--client-new {
        padding: 1rem 0.85rem 1.5rem;
    }

    .dashboard--client-new .dash-shell--welcome {
        gap: 1.25rem;
    }

    .dashboard--client-new .dash-shell .dash-hero--welcome {
        padding: 1.35rem 1.25rem;
    }

    .dashboard--client-new .dash-hero--welcome .dash-hero__intro {
        grid-template-columns: 56px minmax(0, 1fr);
        column-gap: 1rem;
        align-items: start;
    }

    .dashboard--client-new .dash-hero__avatar-wrap--compact > .dash-hero__avatar {
        width: 56px;
        min-width: 56px;
        max-width: 56px;
        height: 56px;
        font-size: 1.2rem;
        border-radius: 14px;
    }

    .dashboard--client-new .dash-hero--welcome .dash-hero__inner {
        gap: 1rem;
    }

    .dashboard--client-new .dash-hero--welcome .dash-hero__subtitle--desktop {
        display: block;
        font-size: 0.88rem;
    }

    .dashboard--client-new .dash-hero__actions--inline {
        width: 100%;
    }

    .dashboard--client-new .dash-hero__actions--inline .dash-hero__cta {
        flex: 1 1 calc(50% - 0.35rem);
        justify-content: center;
        text-align: center;
    }

    .dashboard--client-new .dash-kpis--welcome .dash-kpis__inner {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.75rem;
    }

    .dashboard--client-new .dash-kpis--welcome .dash-stat {
        padding: 1.1rem 1rem;
    }

    .dashboard--client-new .dash-recommendation .cross-sell-banner {
        flex-direction: column;
        align-items: stretch;
        padding: 1.15rem;
    }

    .dashboard--client-new .dash-recommendation .cross-sell-banner__actions {
        width: 100%;
    }

    .dashboard--client-new .dash-recommendation .cross-sell-banner__cta,
    .dashboard--client-new .dash-recommendation .cross-sell-banner__ghost {
        flex: 1;
        justify-content: center;
    }

    .dashboard--client-new .dash-onboarding {
        padding: 1.25rem 1.15rem;
    }

    .dashboard--client-new .dash-onboarding__step {
        flex-wrap: wrap;
        padding: 0.95rem 1rem;
    }
}

.dashboard--client-new .dash-shell .dash-hero {
    background: linear-gradient(135deg, #ffffff 0%, #f0fdfa 45%, #f8fafc 100%);
    border-color: rgba(13, 148, 136, 0.2);
}

.dash-alert__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 12px;
    background: rgba(13, 148, 136, 0.12);
    color: var(--primary);
}

.dash-alert__icon .dash-icon {
    width: 20px;
    height: 20px;
}

.dash-alert--onboarding {
    background: linear-gradient(90deg, rgba(13, 148, 136, 0.1) 0%, rgba(13, 148, 136, 0.03) 100%);
    border-bottom-color: rgba(13, 148, 136, 0.25);
}

.dash-alert--success {
    background: linear-gradient(90deg, rgba(34, 197, 94, 0.1) 0%, rgba(34, 197, 94, 0.03) 100%);
    border-bottom-color: rgba(34, 197, 94, 0.25);
}

.dash-alert--success .dash-alert__icon {
    background: rgba(34, 197, 94, 0.15);
    color: #15803d;
}

.dash-stat__hint {
    display: block;
    margin-top: 0.35rem;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--primary);
    letter-spacing: 0.01em;
}

.dash-onboarding {
    margin-bottom: 1.5rem;
}

.dash-onboarding__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}

.dash-onboarding__header .dash-block__title {
    margin: 0;
}

.dash-onboarding__progress {
    flex-shrink: 0;
    min-width: 140px;
}

.dash-onboarding__progress-label {
    display: block;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--primary);
    text-align: right;
    margin-bottom: 0.35rem;
}

.dash-onboarding__progress-bar {
    height: 6px;
    background: #e2e8f0;
    border-radius: 999px;
    overflow: hidden;
}

.dash-onboarding__progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--primary), #2be8b7);
    border-radius: 999px;
    transition: width 0.6s ease;
}

.dash-onboarding__steps {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.dash-onboarding__step {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.85rem 1rem;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.dash-onboarding__step--done {
    background: #f8fafc;
    border-color: #e2e8f0;
}

.dash-onboarding__step--pending {
    border-color: rgba(13, 148, 136, 0.25);
    box-shadow: 0 2px 8px rgba(13, 148, 136, 0.06);
}

.dash-onboarding__step-marker {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    background: #e2e8f0;
    color: var(--muted);
    font-size: 0.8rem;
    font-weight: 700;
}

.dash-onboarding__step--done .dash-onboarding__step-marker {
    background: rgba(34, 197, 94, 0.15);
    color: #15803d;
}

.dash-onboarding__step--pending .dash-onboarding__step-marker {
    background: rgba(13, 148, 136, 0.12);
    color: var(--primary);
}

.dash-onboarding__step-marker .dash-icon {
    width: 16px;
    height: 16px;
    stroke-width: 2.5;
}

.dash-onboarding__step-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.dash-onboarding__step-label {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--text);
}

.dash-onboarding__step-hint {
    font-size: 0.78rem;
    color: var(--muted);
}

.dash-onboarding__step-cta {
    flex-shrink: 0;
    padding: 0.45rem 0.9rem;
    font-size: 0.78rem;
    font-weight: 600;
    color: #fff;
    background: var(--primary);
    border-radius: 999px;
    text-decoration: none;
    white-space: nowrap;
    transition: transform 0.15s, box-shadow 0.15s;
}

.dash-onboarding__step-cta:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-sm);
}

.dash-onboarding__step-done {
    flex-shrink: 0;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #15803d;
}

.dash-quick-actions {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
    gap: 0.75rem;
    margin-bottom: 2rem;
}

.dash-quick-action {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.35rem;
    padding: 1.1rem 1.15rem;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 14px;
    text-decoration: none;
    transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
    box-shadow: 0 2px 6px rgba(15, 23, 42, 0.04);
}

.dash-quick-action:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
    border-color: var(--border-accent);
}

.dash-quick-action--highlight {
    border-color: rgba(13, 148, 136, 0.35);
    background: linear-gradient(135deg, #f0fdfa 0%, #ffffff 100%);
}

.dash-quick-action__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 10px;
    background: rgba(13, 148, 136, 0.1);
    color: var(--primary);
}

.dash-quick-action__icon .dash-icon {
    width: 18px;
    height: 18px;
}

.dash-quick-action__label {
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--text);
}

.dash-quick-action__hint {
    font-size: 0.75rem;
    color: var(--muted);
    line-height: 1.35;
}

.dash-welcome--enhanced {
    padding: 2.5rem 2rem;
    text-align: center;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 16px;
    margin: 0 0 2rem;
    max-width: none;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04);
}

.dash-welcome__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    margin-bottom: 0.75rem;
    border-radius: 14px;
    background: rgba(13, 148, 136, 0.1);
    color: var(--primary);
}

.dash-welcome__icon .dash-icon {
    width: 22px;
    height: 22px;
}

@media (max-width: 640px) {
    .dash-onboarding__header {
        flex-direction: column;
    }

    .dash-onboarding__progress {
        width: 100%;
    }

    .dash-onboarding__progress-label {
        text-align: left;
    }

    .dash-onboarding__step {
        flex-wrap: wrap;
    }

    .dash-onboarding__step-cta,
    .dash-onboarding__step-done {
        width: 100%;
        text-align: center;
        margin-top: 0.25rem;
    }

    .dash-quick-actions {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* —— Dashboard: refinamiento global (cliente + admin) —— */
.panel-app .site-main:has(.dashboard--fw) {
    padding: 0;
    max-width: none;
    overflow-x: clip;
    flex: 1;
    min-width: 0;
    background: linear-gradient(180deg, #e8eef4 0%, #f1f5f9 40%, #f8fafc 100%);
}

.panel-app .dashboard--fw {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0 var(--dash-inset-x, clamp(1.25rem, 4vw, 2.75rem)) 2.5rem;
    box-sizing: border-box;
}

.dashboard--fw {
    --dash-inset-x: clamp(1.25rem, 4vw, 2.75rem);
}

.dashboard--fw .dash-shell,
.dashboard--fw .dash-body--client,
.dashboard--fw .dash-body--admin {
    width: 100%;
    max-width: none;
    margin: 0;
    padding-left: 0;
    padding-right: 0;
    box-sizing: border-box;
}

.dashboard--client .dash-shell,
.dashboard--admin .dash-shell {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

.dashboard--fw .dash-kpis--cards {
    padding-left: 0;
    padding-right: 0;
}

.dashboard--fw .dash-alert {
    margin-left: calc(-1 * var(--dash-inset-x));
    margin-right: calc(-1 * var(--dash-inset-x));
    width: calc(100% + 2 * var(--dash-inset-x));
    padding-left: var(--dash-inset-x);
    padding-right: var(--dash-inset-x);
    border-radius: 0;
    box-sizing: border-box;
}

.dashboard--fw .dash-hero__avatar-wrap {
    align-self: center;
    min-height: 0;
}

.dashboard--fw .dash-hero__avatar-wrap > .dash-hero__avatar {
    aspect-ratio: 1;
    width: 84px;
    min-width: 84px;
    max-width: 84px;
    height: 84px;
    border-radius: 18px;
    border: 2px solid rgba(13, 148, 136, 0.22);
    border-right: 2px solid rgba(13, 148, 136, 0.22);
    font-size: 1.65rem;
}

.dashboard--fw .dash-hero__avatar-wrap > .dash-hero__avatar img {
    border-radius: 16px;
}

.dashboard--admin .dash-hero__profile .dash-hero__avatar {
    width: 84px;
    height: 84px;
    aspect-ratio: 1;
    border-radius: 18px;
}

.dashboard--client .dash-shell .dash-hero {
    margin-top: 1rem;
    padding: 1.35rem 1.5rem 1.15rem;
    background: linear-gradient(135deg, #ffffff 0%, #f8fafc 55%, #f0fdfa 100%);
    border: 1px solid rgba(13, 148, 136, 0.12);
    box-shadow: 0 4px 20px rgba(15, 23, 42, 0.06);
}

.dashboard--client .dash-hero__intro .dash-hero__inner {
    padding: 0.35rem 0 0;
}

.dashboard--client .dash-shell .dash-kpis--cards {
    padding: 1rem 0 0.35rem;
}

.dashboard--admin .dash-shell--admin {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.dashboard--admin .dash-hero--admin {
    margin-top: 1rem;
    padding: 1.5rem 1.75rem;
    border-radius: 18px;
    border: 1px solid var(--border);
    background: linear-gradient(135deg, #ffffff 0%, #f8fafc 50%, #eff6ff 100%);
    box-shadow: 0 4px 20px rgba(15, 23, 42, 0.06);
    border-bottom: 1px solid var(--border);
}

.dashboard--admin .dash-hero--admin .dash-hero__inner {
    align-items: flex-end;
}

.dashboard--admin .dash-shell .dash-kpis--cards {
    padding: 1rem 0 0.5rem;
    margin-top: 0;
}

.dashboard--admin .dash-body--admin {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(240px, 300px);
    gap: 1.75rem;
    max-width: none;
    margin: 0;
    padding: 0 0 2rem;
    width: 100%;
    box-sizing: border-box;
}

.dashboard--client .dash-body--client {
    max-width: none;
    margin: 0;
    padding: 0 0 2rem;
    width: 100%;
    box-sizing: border-box;
}

.dash-kpis--cards .dash-stat {
    position: relative;
    padding-left: calc(1.2rem + 3px);
}

.dash-kpis--cards .dash-stat::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: #cbd5e1;
    border-radius: 14px 0 0 14px;
}

.dash-stat--sessions::before { background: #0d9488; }
.dash-stat--streak::before { background: #f59e0b; }
.dash-stat--points::before { background: #eab308; }
.dash-stat--weight::before { background: #3b82f6; }
.dash-stat--goals::before { background: #0369a1; }
.dash-stat--highlight::before { background: var(--brand-blue); }

.dash-quick-actions--strip {
    margin-bottom: 1.25rem;
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.dash-list__item {
    border-radius: 10px;
    padding: 0.75rem 0.85rem;
    transition: background 0.15s ease;
}

.dash-list__item + .dash-list__item {
    margin-top: 0.25rem;
}

.dash-list__item:hover {
    background: rgba(13, 148, 136, 0.04);
}

.dash-list__item--today {
    background: rgba(13, 148, 136, 0.07);
    border: 1px solid rgba(13, 148, 136, 0.14);
}

.dash-list__tag {
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.dash-finance--visual {
    padding: 1.25rem 1.35rem;
    border-radius: 14px;
    background: linear-gradient(180deg, #f8fafc 0%, #fff 100%);
    border: 1px solid var(--border);
}

.dash-finance__total-value {
    font-size: clamp(1.65rem, 3vw, 2rem);
    letter-spacing: -0.03em;
    color: var(--brand-blue);
}

.dash-hero__stats {
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(15, 23, 42, 0.06);
}

.dash-hero__stat--warn {
    background: rgba(251, 191, 36, 0.08);
}

@media (max-width: 768px) {
    .panel-app .dashboard--fw {
        padding: 0.75rem 0.75rem 1.25rem;
    }

    .dashboard--fw .dash-alert {
        margin-left: -0.75rem;
        margin-right: -0.75rem;
        width: calc(100% + 1.5rem);
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }
}

@media (max-width: 960px) {
    .dashboard--admin .dash-body--admin {
        grid-template-columns: 1fr;
    }

    .dash-quick-actions--strip {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .dashboard--admin .dash-hero--admin .dash-hero__inner {
        flex-direction: column;
        align-items: stretch;
    }

    .dashboard--admin .dash-hero__stats {
        width: 100%;
    }
}

.workout-block-card {
    box-shadow: var(--shadow-sm);
    border-radius: var(--radius-lg);
}

.workout-block-badge {
    color: #fff;
}

/* Admin — hub de grupos y entrenamientos */
.panel-eyebrow {
    margin: 0 0 0.35rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #0d9488;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.groups-hub__hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    align-items: center;
}

.groups-hub__inline-form {
    display: inline;
    margin: 0;
}

.groups-hub__stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.groups-hub__stats--session {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.groups-hub__stat {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 1rem 1.1rem;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 14px;
    box-shadow: var(--shadow-sm);
}

.groups-hub__stat strong {
    display: block;
    font-size: 1.35rem;
    line-height: 1.1;
    letter-spacing: -0.02em;
}

.groups-hub__stat span:last-child {
    display: block;
    font-size: 0.82rem;
    color: var(--muted);
}

.groups-hub__stat-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 10px;
    background: #f0fdfa;
    color: #0d9488;
    flex-shrink: 0;
}

.groups-hub__stat--ok .groups-hub__stat-icon {
    background: #ecfdf5;
    color: #059669;
}

.groups-hub__stat--warn {
    border-color: #fcd34d;
    background: #fffbeb;
}

.groups-hub__stat--warn .groups-hub__stat-icon {
    background: #fef3c7;
    color: #d97706;
}

.groups-hub__toolbar {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.groups-hub__view-tabs {
    display: inline-flex;
    padding: 0.25rem;
    background: var(--card-elevated, #f1f5f9);
    border: 1px solid var(--border);
    border-radius: 12px;
    gap: 0.25rem;
}

.groups-hub__tab {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.5rem 0.9rem;
    border-radius: 9px;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--muted);
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}

.groups-hub__tab.is-active {
    background: #fff;
    color: var(--text, #0f172a);
    box-shadow: var(--shadow-sm);
}

.groups-hub__toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem;
}

.groups-hub__link {
    font-size: 0.88rem;
    font-weight: 600;
    color: #0d9488;
    text-decoration: none;
}

.groups-hub__link:hover {
    text-decoration: underline;
}

.groups-hub__week-nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding: 0.85rem 1rem;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.groups-hub__week-label strong {
    display: block;
    font-size: 0.95rem;
}

.groups-hub__week-label span {
    font-size: 0.88rem;
    color: var(--muted);
}

.groups-hub__week-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.groups-hub__legend {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.25rem;
    margin-bottom: 1rem;
    font-size: 0.8rem;
    color: var(--muted);
}

.groups-hub__dot {
    display: inline-block;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    margin-right: 0.35rem;
    vertical-align: middle;
}

.groups-hub__dot--scheduled { background: #38bdf8; }
.groups-hub__dot--active { background: #fbbf24; }
.groups-hub__dot--done { background: #34d399; }
.groups-hub__dot--pending { background: #f87171; }

.groups-hub__day--today {
    border-color: #0d9488;
    box-shadow: 0 0 0 1px rgba(13, 148, 136, 0.25);
}

.groups-hub__day--today .admin-groups-day__head {
    background: #f0fdfa;
}

.groups-hub__today-tag {
    display: inline-block;
    margin-left: 0.35rem;
    padding: 0.1rem 0.4rem;
    font-size: 0.65rem;
    font-style: normal;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #0d9488;
    background: #ccfbf1;
    border-radius: 999px;
}

.groups-hub__day-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    height: 1.25rem;
    margin-left: 0.35rem;
    padding: 0 0.35rem;
    font-size: 0.7rem;
    font-weight: 800;
    color: #fff;
    background: #ef4444;
    border-radius: 999px;
}

.groups-hub__slot {
    transition: border-color 0.15s, box-shadow 0.15s;
}

.groups-hub__slot--pending {
    border-color: #fecaca;
    background: #fffafa;
}

.groups-hub__slot-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}

.groups-hub__status {
    font-size: 0.68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.15rem 0.45rem;
    border-radius: 999px;
    white-space: nowrap;
}

.groups-hub__status--scheduled { background: #e0f2fe; color: #0369a1; }
.groups-hub__status--active { background: #fef3c7; color: #b45309; }
.groups-hub__status--done { background: #d1fae5; color: #047857; }
.groups-hub__status--cancelled { background: #fee2e2; color: #b91c1c; }
.groups-hub__status--none { background: #f1f5f9; color: #64748b; }

.groups-hub__attendance {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.65rem;
    margin: 0.45rem 0 0.35rem;
    font-size: 0.78rem;
}

.groups-hub__attendance-label {
    font-weight: 600;
    color: var(--muted);
}

.groups-hub__attendance-count--ok {
    font-weight: 700;
    color: #059669;
}

.groups-hub__attendance-count--warn {
    font-weight: 700;
    color: #dc2626;
}

.groups-hub__attendance-pending {
    color: #dc2626;
    font-weight: 600;
}

.groups-hub__no-bookings {
    margin: 0.35rem 0;
    font-size: 0.78rem;
}

.groups-hub__slot-actions {
    margin-top: 0.5rem;
}

.groups-hub__empty-day {
    margin: 0;
    font-size: 0.85rem;
    padding: 0.5rem;
}

.groups-hub__export {
    margin-bottom: 1.25rem;
    padding: 0.85rem 1rem;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.groups-hub__export summary {
    cursor: pointer;
    font-weight: 600;
    font-size: 0.9rem;
}

.groups-hub__export-form {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: flex-end;
    margin-top: 0.85rem;
}

.groups-hub__table-wrap {
    border-radius: 14px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border: 1px solid var(--border);
}

.groups-hub__table {
    width: 100%;
    min-width: 720px;
    table-layout: fixed;
}

.groups-hub__table th,
.groups-hub__table td {
    vertical-align: middle;
}

.groups-hub__table th:nth-child(1),
.groups-hub__table td:nth-child(1) {
    width: 24%;
}

.groups-hub__table th:nth-child(2),
.groups-hub__table td:nth-child(2) {
    width: 18%;
}

.groups-hub__table th:nth-child(3),
.groups-hub__table td:nth-child(3) {
    width: 16%;
}

.groups-hub__table th:nth-child(4),
.groups-hub__table td:nth-child(4) {
    width: 12%;
}

.groups-hub__table th:nth-child(5),
.groups-hub__table td:nth-child(5) {
    width: 10%;
}

.groups-hub__table th:nth-child(6),
.groups-hub__table td:nth-child(6) {
    width: 20%;
}

.groups-hub__table td:nth-child(1) strong {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.groups-hub__table-actions {
    white-space: normal;
}

.groups-hub__table-actions-inner {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.55rem;
    align-items: center;
}

.groups-hub__table-actions .btn-small {
    margin: 0;
    padding: 0.35rem 0.65rem;
    font-size: 0.78rem;
    line-height: 1.2;
}

.groups-hub__table-link {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--brand-blue, #0d9488);
    text-decoration: none;
    white-space: nowrap;
}

.groups-hub__table-link:hover {
    text-decoration: underline;
}

.groups-hub__table-link--danger {
    color: #dc2626;
}

.groups-hub__table-link--danger:hover {
    color: #b91c1c;
}

.groups-hub__table-id {
    display: block;
    font-size: 0.78rem;
}

.groups-hub__hero--compact {
    align-items: flex-start;
}

.groups-hub__training-panel {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.65rem;
    flex-shrink: 0;
}

.groups-hub__training-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem 1rem;
    font-size: 0.88rem;
    font-weight: 600;
}

.groups-hub__training-meta .dash-icon {
    vertical-align: -3px;
    margin-right: 0.2rem;
}

.groups-hub__status-form {
    margin: 0;
}

.groups-hub__status-select {
    min-width: 10rem;
    padding: 0.45rem 0.65rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    font-weight: 600;
    background: #fff;
}

.groups-hub__date-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding: 0.85rem 1rem;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.groups-hub__date-current {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    text-align: center;
}

.groups-hub__date-picker {
    margin: 0;
}

.groups-hub__date-picker input[type="date"] {
    padding: 0.35rem 0.5rem;
    border-radius: 8px;
    border: 1px solid var(--border);
}

.groups-hub__bulk-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding: 0.85rem 1rem;
    background: #fffbeb;
    border: 1px solid #fcd34d;
    border-radius: 12px;
}

.groups-hub__bulk-bar p {
    margin: 0;
    font-size: 0.9rem;
    font-weight: 600;
}

.groups-hub__empty {
    padding: 2.5rem 1.5rem;
    text-align: center;
    border: 1px dashed var(--border);
    border-radius: 16px;
    background: var(--card);
}

.groups-hub__empty .panel-empty-icon {
    color: #94a3b8;
    margin-bottom: 0.75rem;
}

.groups-hub__user-email {
    display: block;
    font-size: 0.82rem;
    margin-top: 0.15rem;
}

.groups-hub__confirmed-by {
    display: block;
    font-size: 0.78rem;
}

.groups-hub__row--pending {
    background: #fffbeb;
}

.groups-hub__help {
    margin-top: 1.5rem;
    padding: 1rem 1.15rem;
    background: #f8fafc;
    border: 1px solid var(--border);
    border-radius: 12px;
}

.groups-hub__help h4 {
    margin: 0 0 0.5rem;
    font-size: 0.95rem;
}

.groups-hub__help ul {
    margin: 0;
    padding-left: 1.15rem;
    color: var(--muted);
    font-size: 0.88rem;
    line-height: 1.55;
}

.groups-hub__filters {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1rem;
}

.groups-hub__pill-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.groups-hub__pill {
    padding: 0.45rem 0.85rem;
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    color: var(--muted);
    background: var(--card-elevated, #f1f5f9);
    border: 1px solid transparent;
}

.groups-hub__pill.is-active {
    color: #0f766e;
    background: #ccfbf1;
    border-color: #99f6e4;
}

.groups-hub__filter-form label {
    font-size: 0.85rem;
    font-weight: 600;
}

.groups-hub__result-count {
    margin: 0 0 1rem;
    font-size: 0.88rem;
}

.groups-hub__today {
    margin-bottom: 1.5rem;
    padding: 1rem 1.15rem;
    background: linear-gradient(135deg, #f0fdfa 0%, #ffffff 100%);
    border: 1px solid #99f6e4;
    border-radius: 16px;
}

.groups-hub__today-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem;
    margin-bottom: 0.85rem;
}

.groups-hub__today-head h3 {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin: 0;
    font-size: 1rem;
}

.groups-hub__today-alert {
    font-size: 0.82rem;
    font-weight: 700;
    color: #b45309;
    background: #fef3c7;
    padding: 0.3rem 0.65rem;
    border-radius: 999px;
}

.groups-hub__today-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 0.65rem;
}

.groups-hub__today-card {
    padding: 0.85rem 1rem;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
}

.groups-hub__today-card--warn {
    border-color: #fcd34d;
    background: #fffbeb;
}

.groups-hub__today-card-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
}

.groups-hub__today-meta {
    margin: 0 0 0.35rem;
    font-size: 0.82rem;
}

.groups-hub__today-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.65rem;
}

.groups-hub__row--today {
    background: #f0fdfa;
}

.groups-hub__trainer-inline {
    display: block;
    font-size: 0.78rem;
    margin-top: 0.15rem;
}

.groups-hub__trainer-inline .dash-icon {
    vertical-align: -2px;
    margin-right: 0.15rem;
}

.groups-hub__filter-form--row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: flex-end;
}

.groups-hub__pagination {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem;
    margin-top: 1.25rem;
}

.groups-hub__status-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding: 0.85rem 1rem;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.groups-hub__status-bar .groups-hub__pill-nav {
    flex: 1;
}

.groups-hub__status-bar .groups-hub__pill {
    cursor: pointer;
    border: none;
    font-family: inherit;
}

.groups-hub__training-form {
    padding: 1.15rem;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 14px;
}

.groups-hub__form-note {
    margin-bottom: 1rem;
    padding: 0.65rem 0.85rem;
    background: #f8fafc;
    border-radius: 8px;
    font-size: 0.88rem;
}

.groups-hub__form-note p {
    margin: 0;
}

.groups-hub__group-trainings-head {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1rem;
}

.groups-hub__group-trainings-head h3 {
    margin: 0 0 0.25rem;
}

/* Calendario unificado */
.groups-hub__stat--clickable {
    padding: 0;
    overflow: hidden;
}

.groups-hub__stat-link {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    width: 100%;
    height: 100%;
    padding: 1rem 1.1rem;
    color: inherit;
    text-decoration: none;
    border-radius: 14px;
    transition: background 0.15s;
}

.groups-hub__stat-link:hover {
    background: rgba(251, 191, 36, 0.12);
}

.groups-hub__calendar-panel {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 18px;
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}

.groups-hub__calendar-toolbar {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--border);
    background: linear-gradient(180deg, #fafafa 0%, #fff 100%);
}

.groups-hub__week-arrow {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.5rem 0.85rem;
    font-size: 0.88rem;
    font-weight: 600;
    color: #0f766e;
    text-decoration: none;
    border: 1px solid #99f6e4;
    border-radius: 999px;
    background: #f0fdfa;
    white-space: nowrap;
    transition: background 0.15s, border-color 0.15s;
}

.groups-hub__week-arrow span[aria-hidden="true"] {
    font-size: 1.15rem;
    line-height: 1;
}

.groups-hub__week-arrow:hover {
    background: #ccfbf1;
    border-color: #0d9488;
}

.groups-hub__week-center {
    text-align: center;
    min-width: 0;
}

.groups-hub__week-eyebrow {
    margin: 0;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #0d9488;
}

.groups-hub__week-range {
    margin: 0.15rem 0 0;
    font-size: clamp(1rem, 2vw, 1.2rem);
    font-weight: 800;
    letter-spacing: -0.02em;
    color: var(--text, #0f172a);
}

.groups-hub__week-jump {
    display: inline-block;
    margin-top: 0.35rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: #0d9488;
    text-decoration: none;
}

.groups-hub__week-jump:hover {
    text-decoration: underline;
}

.groups-hub__legend--inline {
    margin: 0;
    padding: 0.5rem 1.25rem;
    border-bottom: 1px solid var(--border);
    background: #f8fafc;
    font-size: 0.72rem;
    gap: 0.75rem 1rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}

.groups-hub__legend-hint {
    margin-left: auto;
    color: #94a3b8;
    font-weight: 500;
}

.groups-hub__calendar-scroll {
    padding: 1rem;
    overflow-x: auto;
}

.groups-hub .admin-groups-calendar {
    display: grid;
    grid-template-columns: repeat(7, minmax(118px, 1fr));
    gap: 0.5rem;
    min-width: min(100%, 860px);
}

.groups-hub .admin-groups-day {
    min-height: 0;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: #fff;
    overflow: hidden;
}

.groups-hub .admin-groups-day__head {
    padding: 0.45rem 0.55rem;
    background: #f8fafc;
    border-bottom: 1px solid var(--border);
}

.groups-hub .admin-groups-day__name {
    font-size: 0.68rem;
    letter-spacing: 0.07em;
    color: #64748b;
}

.groups-hub .admin-groups-day__date {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.25rem;
    font-size: 0.78rem;
    font-weight: 800;
    color: #0f172a;
}

.groups-hub .admin-groups-day__body {
    padding: 0.4rem;
    gap: 0.4rem;
}

.groups-hub__day--today {
    border-color: #0d9488;
    box-shadow: inset 0 0 0 1px rgba(13, 148, 136, 0.2);
}

.groups-hub__day--today .admin-groups-day__head {
    background: #f0fdfa;
}

.groups-hub__empty-day {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    min-height: 3.5rem;
    padding: 0.5rem;
    text-align: center;
    font-size: 0.72rem;
    color: var(--muted);
}

.groups-hub__empty-day .panel-empty-icon {
    opacity: 0.3;
}

.groups-hub__slot-card {
    display: block;
    padding: 0.45rem 0.5rem 0.45rem 0.55rem;
    border: 1px solid var(--border);
    border-left-width: 3px;
    border-radius: 8px;
    background: #fff;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.12s;
}

.groups-hub__slot-card:hover {
    border-color: #cbd5e1;
    box-shadow: var(--shadow-sm);
    transform: translateY(-1px);
}

.groups-hub__slot-card--pending {
    border-left-color: #f59e0b;
    background: #fffdf8;
}

.groups-hub__slot-card--programado {
    border-left-color: #38bdf8;
}

.groups-hub__slot-card--en_curso {
    border-left-color: #fbbf24;
}

.groups-hub__slot-card--completado {
    border-left-color: #34d399;
}

.groups-hub__slot-card--cancelado {
    border-left-color: #f87171;
    opacity: 0.75;
}

.groups-hub__slot-card--none {
    border-left-color: #cbd5e1;
}

.groups-hub__slot-time {
    display: block;
    font-size: 0.76rem;
    font-weight: 800;
    line-height: 1.2;
    color: #0f766e;
    letter-spacing: -0.02em;
}

.groups-hub__slot-title {
    display: block;
    margin: 0.1rem 0 0.15rem;
    font-size: 0.76rem;
    font-weight: 700;
    line-height: 1.25;
    color: #0f172a;
}

.groups-hub__slot-meta {
    display: block;
    font-size: 0.66rem;
    font-weight: 600;
    line-height: 1.3;
    color: #64748b;
}

.groups-hub__slot-meta--warn {
    color: #b45309;
}

@media (max-width: 1024px) {
    .groups-hub__stats,
    .groups-hub__stats--session {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .groups-hub .admin-groups-calendar {
        grid-template-columns: repeat(4, minmax(118px, 1fr));
    }
}

@media (max-width: 640px) {
    .groups-hub__stats,
    .groups-hub__stats--session {
        grid-template-columns: 1fr;
    }

    .groups-hub__calendar-toolbar {
        grid-template-columns: 1fr;
        text-align: center;
    }

    .groups-hub__week-arrow {
        justify-content: center;
    }

    .groups-hub .admin-groups-calendar {
        grid-template-columns: repeat(2, minmax(140px, 1fr));
    }

    .groups-hub__toolbar {
        flex-direction: column;
        align-items: stretch;
    }

    .groups-hub__toolbar-actions {
        justify-content: center;
    }

    .groups-hub__training-panel {
        align-items: stretch;
        width: 100%;
    }

    .groups-hub__hero-actions {
        width: 100%;
    }

    .groups-hub__hero-actions .panel-page__hero-cta {
        flex: 1;
        text-align: center;
    }

    .groups-hub__table {
        min-width: 640px;
    }

    .groups-hub__table-actions-inner {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.3rem;
    }
}

/* —— Cumpleaños (admin) —— */
.birthdays-page__stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.85rem;
    margin-bottom: 1.25rem;
}

.birthdays-page__stat {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.9rem 1rem;
    border-radius: 14px;
    border: 1px solid var(--border);
    background: var(--card);
}

.birthdays-page__stat strong {
    display: block;
    font-size: 1.35rem;
    line-height: 1.1;
    color: #0f172a;
}

.birthdays-page__stat span:last-child {
    font-size: 0.78rem;
    color: var(--muted);
}

.birthdays-page__stat-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 999px;
    background: #f1f5f9;
    color: #0f766e;
    flex-shrink: 0;
}

.birthdays-page__stat--today {
    border-color: #fcd34d;
    background: linear-gradient(180deg, #fffbeb 0%, #fff 100%);
}

.birthdays-page__stat--today .birthdays-page__stat-icon {
    background: #fef3c7;
    color: #b45309;
}

.birthdays-page__stat--ok .birthdays-page__stat-icon {
    background: #d1fae5;
    color: #047857;
}

.birthdays-page__table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.birthdays-page__row--today {
    background: rgba(251, 191, 36, 0.08);
}

.birthdays-page__name {
    display: inline-block;
    font-weight: 700;
    color: inherit;
    text-decoration: none;
}

.birthdays-page__name:hover {
    color: var(--primary);
    text-decoration: underline;
}

.birthdays-page__email,
.birthdays-page__phone {
    display: block;
    font-size: 0.78rem;
    margin-top: 0.15rem;
}

.birthdays-page__date {
    font-weight: 700;
    white-space: nowrap;
}

.birthdays-page__badge-today {
    font-size: 0.72rem;
}

.birthdays-page__whatsapp-btn {
    width: 2.25rem;
    height: 2.25rem;
}

.birthdays-page__help {
    margin-top: 1rem;
    padding: 1rem 1.1rem;
    border-radius: 14px;
    border: 1px solid var(--border);
    background: #f8fafc;
}

.birthdays-page__help h4 {
    margin: 0 0 0.35rem;
    font-size: 0.92rem;
}

.birthdays-page__help p {
    margin: 0 0 0.75rem;
    font-size: 0.84rem;
}

.birthdays-page__preview {
    margin: 0;
    padding: 0.85rem 1rem;
    border-radius: 10px;
    background: #fff;
    border: 1px dashed var(--border);
    font-size: 0.8rem;
    line-height: 1.45;
    white-space: pre-wrap;
    color: #334155;
}

@media (max-width: 768px) {
    .birthdays-page__stats {
        grid-template-columns: 1fr;
    }
}

