﻿/* Capa visual de la aplicación. Los colores de datos y estados conservan su significado. */
body.gp-ui {
    /* Tema claro de la intranet: identidad principal exacta #245148. */
    --gp-primary: #245148;
    --gp-primary-hover: #1B3E37;
    --gp-page: #F4F7F5;
    --gp-surface: #FFFFFF;
    --gp-selection: #E4EEE8;
    --gp-text: #1F2A25;
    --gp-muted: #52635A;
    --gp-calendar-header: var(--gp-muted);
    --gp-on-calendar-header: var(--gp-surface);
    --gp-control-border: #7A8B81;
    --gp-border: var(--gp-selection);
    --gp-focus: var(--gp-primary);
    --gp-on-primary: #FFFFFF;
    --gp-success: #246B45;
    --gp-success-soft: #E7F3EB;
    --gp-success-border: var(--gp-success);
    --gp-warning: #8A4B08;
    --gp-warning-soft: #FFF4D6;
    --gp-warning-border: var(--gp-warning);
    --gp-danger: #B42318;
    --gp-danger-soft: #FDECE9;
    --gp-danger-hover: var(--gp-danger);
    --gp-danger-border: var(--gp-danger);
    --gp-soft: var(--gp-surface);
    --gp-radius: 10px;
    --gp-shadow: 0 5px 20px rgba(36, 81, 72, .04);
    margin: 0;
    background-color: var(--gp-page);
    color: var(--gp-text);
    font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 14px;
    line-height: 1.6;
}
.gp-ui .page-wrapper { background: var(--gp-page); }
.gp-ui .page-wrapper > .container-fluid { padding: 24px !important; min-width: 0; }
.gp-ui.gp-dashboard .page-wrapper > .container-fluid { padding: 0 !important; }
.gp-ui.gp-dashboard #divBotones.barraTitulo, .gp-ui.gp-dashboard #divDash .card { border-radius: 0; box-shadow: none; }
.gp-ui.gp-dashboard #divBotones.barraTitulo { margin-bottom: 0; }
.gp-ui.gp-dashboard #divDash .card-body, .gp-ui.gp-dashboard #divDash .card-header, .gp-ui.gp-dashboard #divDash .card-footer,
.gp-ui.gp-dashboard #divDash .form-control, .gp-ui.gp-dashboard #divDash .input-group-text { border-radius: 0 !important; }
.gp-ui.gp-dashboard #cardCuerpo { margin-top: 16px; }
.gp-ui .container-fluid, .gp-ui .card-body, .gp-ui .tab-pane { min-width: 0; }
.gp-ui a { text-underline-offset: 3px; }
.gp-ui button, .gp-ui input, .gp-ui select, .gp-ui textarea { font-family: inherit; }
.gp-ui .text-muted { color: var(--gp-muted) !important; }
.gp-ui a:focus-visible, .gp-ui button:focus-visible, .gp-ui [tabindex]:focus-visible, .gp-ui summary:focus-visible {
    outline: 3px solid var(--gp-focus);
    outline-offset: 3px;
}

/* Cabeceras de pantalla y navegación común. */
.gp-ui .page-titles { margin: 0 0 24px; padding: 16px 20px; background: var(--gp-surface); border: 1px solid var(--gp-border); border-radius: var(--gp-radius); box-shadow: var(--gp-shadow); }
.gp-ui .barraTitulo { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0 0 24px; padding: 16px 20px !important; border: 1px solid var(--gp-border); border-radius: var(--gp-radius); background: var(--gp-surface); color: var(--gp-text); font-size: 22px; font-weight: 500; line-height: 1.3; text-align: center; box-shadow: var(--gp-shadow); }
.gp-ui .page-titles h1, .gp-ui .page-titles h2, .gp-ui .page-titles h3, .gp-ui .page-titles h4, .gp-ui .gp-page-title {
    margin-top: 0; margin-bottom: 0; color: var(--gp-text) !important; font-size: 22px; font-weight: 500; line-height: 1.3; text-align: center;
}
.gp-ui .gp-page-title > i, .gp-ui .gp-page-title > .fa, .gp-ui .gp-page-title > .fas,
.gp-ui .gp-page-title > .far, .gp-ui .barraTitulo > i, .gp-ui .cursos-titulo > .cursos-titulo-icono { display: none; }
.gp-ui .breadcrumb { margin-bottom: 0; background: transparent; color: var(--gp-muted); }
.gp-ui .topbar { background: var(--gp-primary) !important; border-bottom: 1px solid var(--gp-primary-hover); box-shadow: 0 2px 12px rgba(36, 81, 72, .04); }
.gp-ui .topbar .navbar-header, .gp-ui .topbar .navbar-collapse { background: var(--gp-primary) !important; }
.gp-ui .topbar .navbar-brand { background: transparent !important; }
.gp-ui .topbar .navbar-light .navbar-nav .nav-item > a.nav-link, .gp-ui .topbar .text-white { color: var(--gp-on-primary) !important; }
.gp-ui .topbar .navbar-light .navbar-nav .nav-item > a.nav-link:hover, .gp-ui .topbar .navbar-light .navbar-nav .nav-item > a.nav-link:focus-visible { color: var(--gp-on-primary) !important; background-color: rgba(255, 255, 255, .12); }
.gp-ui .topbar .navbar-nav > .nav-item > .nav-link { display: flex; align-items: center; justify-content: center; min-height: 56px; }
.gp-ui .left-sidebar { background: var(--gp-surface); border-right: 1px solid var(--gp-border); box-shadow: none; }
.gp-ui .sidebar-nav { background: var(--gp-surface); }
.gp-ui .sidebar-nav ul li a { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 3px 8px; padding: 11px 28px; border-radius: 8px; color: var(--gp-muted); text-align: center; line-height: 1.4; }
.gp-ui .sidebar-nav ul li a:hover, .gp-ui .sidebar-nav ul li a:focus-visible { background: var(--gp-soft); color: var(--gp-primary); }
.gp-ui .sidebar-nav > ul > li.active > a, .gp-ui .sidebar-nav ul li a.active { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .sidebar-nav > ul > li.active > a > i, .gp-ui .sidebar-nav ul li a.active > i { color: var(--gp-primary) !important; }
.gp-ui .sidebar-nav .nav-small-cap { padding: 20px 16px 8px; color: var(--gp-muted); text-align: center; letter-spacing: .03em; }
.gp-ui .sidebar-nav .nav-devider { margin: 14px 16px; background: var(--gp-border); }
.gp-ui .footer { border-top: 0; background: var(--gp-page); color: var(--gp-muted); font-size: 12px; text-align: center; }
/* Las vistas sin page-wrapper sitúan el pie después del contenido, sin cubrir controles. */
.gp-ui #main-wrapper > .miDash ~ .footer { position: static; left: auto; right: auto; bottom: auto; width: 100%; }
.gp-ui .dropdown-menu { padding: 8px; border: 1px solid var(--gp-border); border-radius: var(--gp-radius); box-shadow: 0 8px 24px rgba(36, 81, 72, .12); }
.gp-ui .dropdown-item { padding: 10px 14px; border-radius: 6px; color: var(--gp-text); text-align: center; }
.gp-ui .dropdown-item:hover, .gp-ui .dropdown-item:focus { background: var(--gp-soft); color: var(--gp-primary); }
.gp-ui .dropdown-item.active, .gp-ui .dropdown-item:active { background: var(--gp-primary); color: var(--gp-on-primary); }

/* Tarjetas, agrupaciones y pestañas. No se fijan alturas de contenido. */
.gp-ui .card { border: 1px solid var(--gp-border); border-radius: 14px; background-color: var(--gp-surface); box-shadow: var(--gp-shadow); }
.gp-ui .card-body { padding: 20px; }
.gp-ui .card-title { color: var(--gp-text); font-weight: 500; line-height: 1.4; text-align: center; }
.gp-ui .card-subtitle { color: var(--gp-muted); line-height: 1.6; }
.gp-ui .card-header { padding: 16px 20px; border-bottom: 1px solid var(--gp-border); border-radius: 13px 13px 0 0; background-color: var(--gp-soft); color: var(--gp-primary); text-align: center; }
.gp-ui .card-header.bg-primary, .gp-ui .card-header.bg-success { background-color: var(--gp-soft) !important; color: var(--gp-primary) !important; }
.gp-ui .card-header.bg-info { background-color: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .card-header .card-title, .gp-ui .card-header .text-white { color: inherit !important; }
.gp-ui .card-footer { padding: 14px 20px; border-top: 1px solid var(--gp-border); border-radius: 0 0 13px 13px; background: var(--gp-soft); color: var(--gp-muted); }
.gp-ui .card-outline-danger { border-color: var(--gp-danger-border); }
.gp-ui .card-outline-danger > .card-header { background: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; border-color: var(--gp-danger-border); }
.gp-ui .card-outline-warning > .card-header { background: var(--gp-warning-soft) !important; color: var(--gp-warning) !important; border-color: var(--gp-warning-border); }
.gp-ui .list-group-item { border-color: var(--gp-border); }
.gp-ui .nav-tabs { gap: 6px; padding: 6px 0; border-bottom: 1px solid var(--gp-border); }
.gp-ui .nav-tabs .nav-link { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 18px; border: 1px solid transparent; border-radius: 8px 8px 0 0; color: var(--gp-muted); text-align: center; }
.gp-ui .nav-tabs .nav-link:hover { background: var(--gp-soft); color: var(--gp-primary); border-color: transparent; }
.gp-ui .nav-tabs .nav-link.active { background: var(--gp-selection); border-color: var(--gp-border); border-bottom-color: var(--gp-selection); color: var(--gp-primary); font-weight: 500; }
.gp-ui .nav-pills .nav-link { border-radius: 8px; text-align: center; }
.gp-ui .nav-pills .nav-link.active { background: var(--gp-primary); color: var(--gp-on-primary); }

/* Botones: alineación equilibrada y estados semánticos. */
.gp-ui .btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 40px; padding: 9px 16px; border-radius: 8px; font-weight: 500; line-height: 1.3; text-align: center; vertical-align: middle; white-space: normal; box-shadow: none; }
.gp-ui .btn > i { flex-shrink: 0; line-height: 1; }
.gp-ui .btn-sm { min-height: 34px; padding: 6px 11px; font-size: 12px; }
.gp-ui .btn-lg { min-height: 46px; padding: 12px 22px; font-size: 15px; }
.gp-ui .btn-block { display: flex; width: 100%; }
.gp-ui .btn-circle, .gp-ui .gp-icon-only { min-width: 40px; padding-left: 10px; padding-right: 10px; }
/* Acciones: el verde identifica la acción; los colores de estado no distinguen módulos. */
.gp-ui .btn { background: var(--gp-surface) !important; border-color: var(--gp-primary) !important; color: var(--gp-primary) !important; }
.gp-ui .btn:hover { background: var(--gp-selection) !important; }
.gp-ui .btn-primary, .gp-ui .btn-01, .gp-ui .btn-05, .gp-ui .btn-15, .gp-ui .btn-success, .gp-ui .btn-verde, .gp-ui .btn-granate { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn-primary:hover, .gp-ui .btn-01:hover, .gp-ui .btn-05:hover, .gp-ui .btn-15:hover, .gp-ui .btn-success:hover, .gp-ui .btn-verde:hover, .gp-ui .btn-granate:hover,
.gp-ui .btn-primary:active, .gp-ui .btn-01:active, .gp-ui .btn-05:active, .gp-ui .btn-15:active, .gp-ui .btn-success:active, .gp-ui .btn-verde:active, .gp-ui .btn-granate:active { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn-warning, .gp-ui .btn-outline-warning { background: var(--gp-warning-soft) !important; color: var(--gp-warning) !important; border-color: var(--gp-warning) !important; }
.gp-ui .btn-danger, .gp-ui .btn-outline-danger, .gp-ui .btn-10, .gp-ui .btn-outline-10 { background: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; border-color: var(--gp-danger) !important; }
.gp-ui .btn-danger:hover, .gp-ui .btn-outline-danger:hover, .gp-ui .btn-10:hover, .gp-ui .btn-outline-10:hover { background: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn-group > .btn { display: inline-flex; }
.gp-ui .btn.active, .gp-ui .btn[aria-pressed="true"] { background: var(--gp-selection) !important; color: var(--gp-primary) !important; box-shadow: inset 0 0 0 2px var(--gp-primary); }
.gp-ui .text-primary, .gp-ui .text-granate, .gp-ui .text-verde, .gp-ui .text-info, .gp-ui .gamyplan { color: var(--gp-primary) !important; }
.gp-ui .text-success { color: var(--gp-success) !important; }
.gp-ui .text-warning { color: var(--gp-warning) !important; }
.gp-ui .text-danger { color: var(--gp-danger) !important; }
.gp-ui .bg-primary, .gp-ui .bg-verde { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .bg-info { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .badge-primary, .gp-ui .label-primary, .gp-ui .badge-info, .gp-ui .label-info, .gp-ui .alert-info { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui .badge-success, .gp-ui .label-success, .gp-ui .alert-success, .gp-ui .bg-success { background: var(--gp-success-soft) !important; color: var(--gp-success) !important; border-color: var(--gp-success); }
.gp-ui .badge-warning, .gp-ui .label-warning, .gp-ui .alert-warning, .gp-ui .bg-warning { background: var(--gp-warning-soft) !important; color: var(--gp-warning) !important; border-color: var(--gp-warning); }
.gp-ui .badge-danger, .gp-ui .label-danger, .gp-ui .alert-danger, .gp-ui .bg-danger { background: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; border-color: var(--gp-danger); }
.gp-ui .bg-success .text-white, .gp-ui .bg-success.text-white { color: var(--gp-success) !important; }
.gp-ui .bg-warning .text-white, .gp-ui .bg-warning.text-white { color: var(--gp-warning) !important; }
.gp-ui .bg-danger .text-white, .gp-ui .bg-danger.text-white { color: var(--gp-danger) !important; }
.gp-ui .bg-info .text-white, .gp-ui .bg-info.text-white { color: var(--gp-primary) !important; }
.gp-ui .card-header.bg-primary { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .card-header.bg-success { background: var(--gp-success-soft) !important; color: var(--gp-success) !important; }
.gp-ui .card-header.bg-info { background: var(--gp-surface) !important; color: var(--gp-text) !important; }
.gp-ui .gp-navigation-tile, .gp-ui .gp-navigation-tile > i { color: var(--gp-primary) !important; }
.gp-ui .gp-navigation-tile:hover, .gp-ui .gp-navigation-tile:focus-visible { background: var(--gp-selection); border-color: var(--gp-primary); }
.gp-ui .gp-navigation-tile h3, .gp-ui .gp-navigation-tile h4, .gp-ui .gp-navigation-tile h5 { color: var(--gp-text); }
.gp-ui .custom-control-input:checked ~ .custom-control-label::before { background: var(--gp-primary); border-color: var(--gp-primary); }
.gp-ui input[type=checkbox], .gp-ui input[type=radio] { accent-color: var(--gp-primary); }
.gp-ui .fc-today, .gp-ui .fc .fc-day-today { background: var(--gp-selection) !important; }

/* Equivalencias de acciones con la familia de iconos de Cursos. */
.gp-ui .btn .fa-edit::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f303"; }
.gp-ui .btn .ti-plus::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f067"; }
.gp-ui .btn .ti-settings::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f013"; }
.gp-ui .btn .ti-lock::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f023"; }
.gp-ui .btn .ti-calendar::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f073"; }
.gp-ui .btn .ti-close::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f00d"; }
.gp-ui .btn .ti-list::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f0ca"; }
.gp-ui .btn .ti-upload::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f093"; }
.gp-ui .btn .ti-link::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f0c1"; }
.gp-ui .btn .ti-video-camera::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f03d"; }
.gp-ui .btn .mdi-image::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f03e"; }
.gp-ui .btn .mdi-file::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f15b"; }
.gp-ui .btn .ti-email::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f0e0"; }
.gp-ui .btn .ti-help::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f059"; }
.gp-ui .btn .mdi-help-circle::before { font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; content: "\f059"; }

/* Acciones con icono: referencia compartida de Cursos. */
.gp-ui .btn.gp-icon-only { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 40px; min-width: 40px; height: 40px; min-height: 40px; padding: 0; margin: 3px !important; border: 1px solid var(--gp-border) !important; border-radius: 8px !important; background: var(--gp-soft) !important; color: var(--gp-primary) !important; box-shadow: none; line-height: 1; }
.gp-ui .btn.gp-icon-only > i { flex: 0 0 auto; margin: 0; font-size: 15px; line-height: 1; color: inherit; }
.gp-ui .btn.gp-icon-only i::before { font-size: 15px; line-height: 1; }
.gp-ui .btn.gp-icon-only > svg { flex: 0 0 auto; width: 16px; height: 16px; margin: 0; }
.gp-ui .btn.gp-icon-only:hover, .gp-ui .btn.gp-icon-only:focus-visible { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn.gp-icon-only.gp-icon-danger { background: var(--gp-danger-soft) !important; border-color: var(--gp-danger-border) !important; color: var(--gp-danger) !important; }
.gp-ui .btn.gp-icon-only.gp-icon-danger:hover, .gp-ui .btn.gp-icon-only.gp-icon-danger:focus-visible { background: var(--gp-danger) !important; border-color: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn.gp-icon-only:focus-visible { outline: 3px solid var(--gp-focus); outline-offset: 2px; }

/* Formularios, selectores y controles de fecha/hora. */
.gp-ui .form-group { margin-bottom: 20px; }
.gp-ui .form-group > label, .gp-ui .form-group > .control-label, .gp-ui label.control-label { color: var(--gp-muted); font-size: 13px; font-weight: 500; text-align: center; }
.gp-ui .form-group > label:not(.custom-control-label):not(.form-check-label) { width: 100%; }
.gp-ui .form-control, .gp-ui .custom-select { min-height: 42px; border: 1px solid var(--gp-control-border); border-radius: 8px; background-color: var(--gp-surface); color: var(--gp-text); box-shadow: none; }
.gp-ui input.form-control:not([type=color]):not([type=range]) { padding-left: 16px; padding-right: 16px; text-align: center; }
.gp-ui select { text-align: left !important; text-align-last: left !important; }
.gp-ui select.form-control, .gp-ui select.custom-select { padding-left: 16px; padding-right: 16px; }
.gp-ui textarea.form-control { padding: 12px 14px; line-height: 1.6; }
.gp-ui select[multiple].form-control, .gp-ui textarea.form-control { height: auto; }
.gp-ui .form-control:focus, .gp-ui .custom-select:focus { border-color: var(--gp-control-border); box-shadow: 0 0 0 3px rgba(36, 81, 72, .18); outline: 0; }
.gp-ui .form-control:disabled, .gp-ui .form-control[readonly], .gp-ui .custom-select:disabled { background-color: var(--gp-surface); color: var(--gp-muted); }
.gp-ui .form-control.is-invalid, .gp-ui .custom-select.is-invalid, .gp-ui .has-danger .form-control, .gp-ui .has-error .form-control { border-color: var(--gp-danger); }
.gp-ui .form-control.is-invalid:focus, .gp-ui .has-danger .form-control:focus, .gp-ui .has-error .form-control:focus { box-shadow: 0 0 0 3px rgba(180, 35, 24, .18); }
.gp-ui .form-control.is-valid, .gp-ui .custom-select.is-valid, .gp-ui .has-success .form-control { border-color: var(--gp-primary); }
.gp-ui .invalid-feedback, .gp-ui .has-danger .control-label, .gp-ui .has-error .control-label { color: var(--gp-danger); }
.gp-ui .input-group-text { display: flex; align-items: center; justify-content: center; min-width: 42px; border-color: var(--gp-control-border); border-radius: 8px; background: var(--gp-soft); color: var(--gp-primary); }
.gp-ui .input-group > .form-control { min-width: 0; }
.gp-ui .input-group .btn { min-height: 42px; }
.gp-ui .form-text { color: var(--gp-muted); line-height: 1.5; }
.gp-ui .toggle .btn { display: flex; align-items: center; justify-content: center; height: 100%; line-height: 1.2; }
.gp-ui .toggle .toggle-handle { min-height: 0; padding: 0; }
.gp-ui .bootstrap-switch { border-color: var(--gp-control-border); border-radius: 8px; }
.gp-ui .bootstrap-switch .bootstrap-switch-label { background: var(--gp-soft); }
.gp-ui .select2-container { max-width: 100%; }
.gp-ui .select2-container--default .select2-selection--single { height: 42px; border-color: var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); }
.gp-ui .select2-container--default .select2-selection--single .select2-selection__rendered { padding-left: 16px; padding-right: 34px; line-height: 40px; color: var(--gp-text); text-align: left; }
.gp-ui .select2-container--default .select2-selection--single .select2-selection__arrow { height: 40px; }
.gp-ui .select2-container--default .select2-selection--multiple { min-height: 42px; border-color: var(--gp-control-border); border-radius: 8px; }
.gp-ui .select2-container--default .select2-selection--multiple .select2-selection__choice { padding: 4px 8px; border-color: var(--gp-control-border); border-radius: 6px; background: var(--gp-selection); color: var(--gp-text); }
.gp-ui .select2-dropdown { border-color: var(--gp-control-border); border-radius: 8px; box-shadow: var(--gp-shadow); }
.gp-ui .select2-results__option { padding: 10px 12px; text-align: left; }
.gp-ui .select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .bootstrap-select > .dropdown-toggle { min-height: 42px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); color: var(--gp-text); }
.gp-ui .bootstrap-select .filter-option, .gp-ui .bootstrap-select .filter-option-inner-inner { text-align: left; }
.gp-ui .bootstrap-select .dropdown-menu > li > a { text-align: left; justify-content: flex-start; }
.gp-ui .datepicker.dropdown-menu, .gp-ui .bootstrap-datetimepicker-widget { border: 1px solid var(--gp-border); border-radius: 10px; box-shadow: var(--gp-shadow); }
.gp-ui .datepicker table tr td.active, .gp-ui .bootstrap-datetimepicker-widget table td.active { background: var(--gp-primary) !important; color: var(--gp-on-primary); text-shadow: none; }

/* Tablas y herramientas. El contenido editorial conserva su formato propio. */
.gp-ui .table-responsive { max-width: 100%; border-radius: 0; }
.gp-ui table.table { color: var(--gp-text); border-color: var(--gp-border); }
.gp-ui table.table thead th { padding: 15px 14px; border-top: 0; border-bottom: 1px solid var(--gp-border); background: var(--gp-soft); color: var(--gp-muted); font-size: 12px; font-weight: 500; text-align: center; vertical-align: middle; }
.gp-ui table.table tbody td { padding: 14px 12px; border-color: var(--gp-border); text-align: center; vertical-align: middle; }
.gp-ui table.dataTable thead th, .gp-ui table.dataTable tbody td { text-align: center !important; vertical-align: middle !important; }
.gp-ui .table-hover tbody tr:hover { background-color: var(--gp-soft); }
.gp-ui table.dataTable thead th.sorting, .gp-ui table.dataTable thead th.sorting_asc, .gp-ui table.dataTable thead th.sorting_desc { padding-left: 26px; padding-right: 26px; }
.gp-ui .dataTables_wrapper .dataTables_length, .gp-ui .dataTables_wrapper .dataTables_filter, .gp-ui .dataTables_wrapper .dataTables_info { margin-bottom: 14px; color: var(--gp-muted); font-size: 13px; }
.gp-ui .dataTables_wrapper .dataTables_length label, .gp-ui .dataTables_wrapper .dataTables_filter label { display: inline-flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px; margin-bottom: 0; }
.gp-ui .dataTables_wrapper .dataTables_length select { min-width: 70px; min-height: 40px; margin: 0; text-align: left; }
.gp-ui .dataTables_wrapper .dataTables_filter input { min-height: 40px; max-width: 100%; margin-left: 0; border: 1px solid var(--gp-control-border); border-radius: 8px; text-align: center; }
.gp-ui .dt-buttons { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.gp-ui .pagination { gap: 4px; flex-wrap: wrap; }
.gp-ui .page-link { display: inline-flex; align-items: center; justify-content: center; min-width: 36px; min-height: 36px; padding: 7px 11px; border-color: var(--gp-border); border-radius: 7px; color: var(--gp-primary); line-height: 1.2; text-align: center; }
.gp-ui .page-item.active .page-link { background: var(--gp-primary); border-color: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .page-item.disabled .page-link { background: var(--gp-page); color: var(--gp-muted); }
.gp-ui .dataTables_empty { padding: 32px 16px !important; background: var(--gp-soft); color: var(--gp-muted); text-align: center !important; }
.gp-ui .dt-button-collection { padding: 8px; border: 1px solid var(--gp-border); border-radius: 10px; box-shadow: var(--gp-shadow); }
.gp-ui table.dataTable.dtr-column > tbody > tr > td.control, .gp-ui table.dataTable > tbody > tr > td.dtr-control { position: relative; width: 48px; min-width: 48px; text-align: center; }
.gp-ui table.dataTable.dtr-column > tbody > tr > td.control::before,
.gp-ui table.dataTable > tbody > tr > td.dtr-control::before,
.gp-ui table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child::before {
    content: '' !important; position: absolute !important; top: 50% !important; left: 50% !important; display: block;
    width: 24px !important; height: 24px !important; margin: 0 !important; padding: 0 !important;
    border: 0 !important; border-radius: 6px !important; box-shadow: none !important;
    background: linear-gradient(var(--gp-surface), var(--gp-surface)) center / 10px 2px no-repeat, linear-gradient(var(--gp-surface), var(--gp-surface)) center / 2px 10px no-repeat, var(--gp-primary) !important;
    transform: translate(-50%, -50%) !important;
}
.gp-ui table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:not(.control):not(.dtr-control) { position: relative; padding-left: 46px; padding-right: 46px; }
.gp-ui table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:not(.control):not(.dtr-control)::before { left: 12px !important; transform: translateY(-50%) !important; }
.gp-ui table.dataTable > tbody > tr.parent > td.control::before, .gp-ui table.dataTable > tbody > tr.parent > td.dtr-control::before,
.gp-ui table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child::before,
.gp-ui table.dataTable > tbody > tr.dtr-expanded > td.dtr-control::before { background-size: 10px 2px, 0 0 !important; }
.gp-ui table.dataTable > tbody > tr.child > td { background: var(--gp-soft); padding: 16px; }
.gp-ui table.dataTable > tbody > tr.child ul.dtr-details { display: block; width: 100%; }
.gp-ui table.dataTable > tbody > tr.child ul.dtr-details > li { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: 12px; padding: 10px; border-color: var(--gp-border); text-align: center; }
.gp-ui table.dataTable > tbody > tr.child .dtr-title, .gp-ui table.dataTable > tbody > tr.child .dtr-data { min-width: 0; margin: 0; white-space: normal; overflow-wrap: anywhere; text-align: center; }

/* Ventanas, mensajes y etiquetas. */
.gp-ui .modal-content { border: 1px solid var(--gp-border); border-radius: 14px; box-shadow: 0 12px 36px rgba(36, 81, 72, .15); }
.gp-ui .modal-header { align-items: center; gap: 12px; padding: 20px 24px; border-bottom: 1px solid var(--gp-border); border-radius: 13px 13px 0 0; background: var(--gp-surface) !important; color: var(--gp-primary); }
.gp-ui .modal-title, .gp-ui .modal-header .text-white { color: var(--gp-text) !important; font-weight: 500; line-height: 1.4; text-align: center; }
.gp-ui .modal-title { flex: 1; }
.gp-ui .modal-header .close { display: inline-flex; align-items: center; justify-content: center; min-width: 36px; min-height: 36px; padding: 6px; margin: 0; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-soft); color: var(--gp-primary); opacity: 1; }
.gp-ui .modal-body, .gp-ui .modal-footer { padding: 24px; }
.gp-ui .modal-footer { gap: 8px; border-top-color: var(--gp-border); }
.gp-ui .modal-footer > * { margin: 0; }
.gp-ui .right-sidebar { border-left: 1px solid var(--gp-border); background-color: var(--gp-surface); box-shadow: -8px 0 24px rgba(36, 81, 72, .1); }
.gp-ui .swal2-popup { border: 1px solid var(--gp-border); border-radius: 14px; box-shadow: 0 12px 36px rgba(36, 81, 72, .15); }
.gp-ui .swal2-title { color: var(--gp-text); font-weight: 500; }
.gp-ui .swal2-actions { gap: 8px; }
.gp-ui .swal2-styled { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; border-radius: 8px; line-height: 1.3; }
.gp-ui .swal2-styled.swal2-confirm { background-color: var(--gp-primary); }
.gp-ui .swal2-styled.swal2-cancel { background-color: var(--gp-muted); }
.gp-ui .badge, .gp-ui .label { display: inline-flex; align-items: center; justify-content: center; padding: 5px 9px; border-radius: 7px; font-size: 12px; font-weight: 500; line-height: 1.4; text-align: center; vertical-align: middle; }
.gp-ui .badge-success, .gp-ui .label-success { background: var(--gp-success-soft); color: var(--gp-success); }
.gp-ui .badge-warning, .gp-ui .label-warning { background: var(--gp-warning-soft); color: var(--gp-warning); }
.gp-ui .badge-danger, .gp-ui .label-danger { background: var(--gp-danger-soft); color: var(--gp-danger); }
.gp-ui .badge-info, .gp-ui .label-info { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui .badge-secondary, .gp-ui .label-default { background: var(--gp-selection); color: var(--gp-muted); }
.gp-ui .alert { border-radius: 10px; line-height: 1.6; }
.gp-ui .alert-success { border-color: var(--gp-control-border); background: var(--gp-success-soft); color: var(--gp-success); }
.gp-ui .alert-warning { border-color: var(--gp-warning-border); background: var(--gp-warning-soft); color: var(--gp-warning); }
.gp-ui .alert-danger { border-color: var(--gp-danger-border); background: var(--gp-danger-soft); color: var(--gp-danger); }
.gp-ui .alert-info { border-color: var(--gp-control-border); background: var(--gp-selection); color: var(--gp-primary); }

/* Calendarios, edición y carga de ficheros: se respeta el contenido del usuario. */
.gp-ui .fc-toolbar h2, .gp-ui .fc-toolbar-title { color: var(--gp-text); font-size: 21px; font-weight: 500; line-height: 1.4; }
.gp-ui .fc .fc-button, .gp-ui .fc-button { min-height: 36px; padding: 7px 12px; border: 1px solid var(--gp-control-border); border-radius: 7px; background: var(--gp-soft); color: var(--gp-primary); text-shadow: none; box-shadow: none; }
.gp-ui .fc .fc-button-active, .gp-ui .fc-state-active { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .fc th { color: var(--gp-primary); font-weight: 500; }
.gp-ui .fc .fc-toolbar { gap: 12px; flex-wrap: wrap; }
.gp-ui .ck.ck-toolbar { border-color: var(--gp-control-border); border-radius: 8px 8px 0 0; background: var(--gp-soft); }
.gp-ui .ck.ck-editor__editable:not(.ck-editor__nested-editable) { border-color: var(--gp-control-border); border-radius: 0 0 8px 8px; }
.gp-ui .note-editor { border-color: var(--gp-control-border); border-radius: 8px; }
.gp-ui .note-toolbar { background: var(--gp-soft); border-bottom-color: var(--gp-border); }
.gp-ui .note-editor .note-editable, .gp-ui .ck-content { color: initial; }
.gp-ui .introjs-tooltip { box-sizing: border-box; min-width: 240px !important; max-width: calc(100vw - 32px) !important; border: 1px solid var(--gp-border); border-radius: 12px; box-shadow: var(--gp-shadow); }
.gp-ui .login-box { max-width: 100%; border-radius: 16px; }
.gp-ui .login-box .card-body { padding: 28px; }
.gp-ui .login-box .box-title, .gp-ui .login-box .form-group { text-align: center; }
.gp-ui .login-box .btn { min-height: 44px; }
.gp-ui .gp-standalone-content { max-width: 1200px; margin-left: auto; margin-right: auto; }

/* Orden común: rejilla, centrado y recorridos de escritorio, alumno y profesor. */
.gp-ui .btn.gp-icon-only[aria-pressed="true"] { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }

.gp-ui .row > .col, .gp-ui .row > [class*="col-"] { min-width: 0; }
.gp-ui .btn { max-width: 100%; overflow-wrap: anywhere; }
.gp-ui .btn.gp-button-stack { flex-direction: column; gap: 4px; min-width: 0; }
.gp-ui .btn.gp-button-stack > h1, .gp-ui .btn.gp-button-stack > h2, .gp-ui .btn.gp-button-stack > h3, .gp-ui .btn.gp-button-stack > h4, .gp-ui .btn.gp-button-stack > h5, .gp-ui .btn.gp-button-stack > h6 { max-width: 100%; margin: 0; text-align: center; overflow-wrap: anywhere; }
.gp-ui .form-group.gp-form-field > label { display: flex; align-items: center; justify-content: center; min-height: 40px; margin-bottom: 8px; line-height: 1.4; text-align: center; }
.gp-ui .gp-form-field > .form-control, .gp-ui .gp-form-field > .custom-select { flex: 0 0 auto; width: 100%; }
.gp-ui .gp-form-row { align-items: stretch; }
.gp-ui .gp-form-row > .gp-form-column { display: flex; align-items: stretch; }
.gp-ui .gp-form-row > .gp-form-column > .gp-form-field { display: flex; flex: 1; flex-direction: column; justify-content: flex-end; min-width: 0; }
.gp-ui .input-group .btn.gp-icon-only { margin: 0 !important; }
.gp-ui table.table th, .gp-ui table.table td { text-align: center !important; vertical-align: middle !important; }
.gp-ui table.table th > .text-left, .gp-ui table.table th > .text-right, .gp-ui table.table td > .text-left, .gp-ui table.table td > .text-right { text-align: center !important; }
.gp-ui .dt-buttons, .gp-ui .pagination { align-items: center; justify-content: center; }
.gp-ui .nav-tabs .nav-link { height: 100%; }
.gp-ui .miDash { width: 100%; max-width: 1200px; margin-right: auto; margin-left: auto; }
.gp-ui.gp-clase-editor .miDash { max-width: none; }
.gp-ui.fix-header .miDash { padding-top: 0; }
.gp-ui .miDash > .container-fluid { padding: 24px !important; min-width: 0; }
@media (max-width: 767px) {
    .gp-ui .miDash > .container-fluid > .row, .gp-ui .page-wrapper > .container-fluid > .row { margin-left: 0; margin-right: 0; }
    .gp-ui .miDash > .container-fluid > .row > .col-12:only-child, .gp-ui .page-wrapper > .container-fluid > .row > .col-12:only-child { padding-left: 0 !important; padding-right: 0 !important; }
    .gp-ui .miDash .card-body.p-0 > .row, .gp-ui .page-wrapper .card-body.p-0 > .row { margin-left: 0; margin-right: 0; }
}
.gp-ui .gp-navigation-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; max-width: 900px; margin: 0 auto; }
.gp-ui .gp-navigation-grid > .col, .gp-ui .gp-navigation-grid > [class*="col-"] { display: flex; flex: none; width: auto; max-width: none; padding: 0; margin: 0 !important; }
.gp-ui .gp-navigation-tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; width: 100%; min-height: 144px; padding: 16px; border: 1px solid var(--gp-border); border-radius: 10px; background: var(--gp-surface); text-align: center; }
.gp-ui .gp-navigation-tile > br { display: none; }
.gp-ui .gp-navigation-tile > i { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; font-size: 36px; line-height: 1; }
.gp-ui .gp-clases-menu .gp-navigation-tile > h4 { white-space: normal !important; }
.gp-ui .gp-mis-cursos { display: grid; gap: 12px; }
.gp-ui .gp-mis-cursos > p:empty { display: none; }
.gp-ui .gp-mi-curso { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px; border: 1px solid var(--gp-border); background: var(--gp-surface); }
.gp-ui .gp-mi-curso-datos { min-width: 0; overflow-wrap: anywhere; text-align: left; }
.gp-ui .gp-mi-curso-datos h2 { margin: 0 0 6px; color: var(--gp-text); font-size: 18px; font-weight: 600; line-height: 1.35; text-align: left; }
.gp-ui .gp-mi-curso-datos p { margin: 0; }
.gp-ui .gp-mi-curso-inscripcion { display: inline-flex; align-items: center; justify-content: center; margin-top: 10px; padding: 5px 10px; border-radius: 8px; background: var(--gp-success-soft); color: var(--gp-success); font-size: 13px; font-weight: 600; text-align: center; }
.gp-ui .gp-mi-curso-asistencia { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 150px; padding: 12px; background: var(--gp-selection); text-align: center; }
.gp-ui .gp-mi-curso-asistencia strong { color: var(--gp-primary); font-size: 24px; line-height: 1.25; }
.gp-ui .gp-mi-curso-asistencia small { max-width: 200px; line-height: 1.3; }
@media (max-width: 480px) { .gp-ui .gp-mi-curso { flex-direction: column; align-items: stretch; text-align: center; } }
.gp-ui .gp-aspectos-menu .gp-navigation-tile > img { width: 40px !important; height: 40px !important; max-width: 100%; object-fit: contain; }
.gp-ui .gp-aspectos-menu.gp-navigation-grid > [class*="col-"]:last-child:nth-child(odd), .gp-ui .gp-entrenador-menu.gp-navigation-grid > [class*="col-"]:last-child:nth-child(odd) { grid-column: 1 / -1; justify-self: center; width: calc((100% - 16px) / 2) !important; }
@media (max-width: 767px) {
    .gp-ui .gp-aspectos-menu.gp-navigation-grid, .gp-ui .gp-clases-menu.gp-navigation-grid { gap: 8px; }
    .gp-ui .gp-aspectos-menu .gp-navigation-tile, .gp-ui .gp-clases-menu .gp-navigation-tile { min-height: clamp(76px, 13vh, 104px); gap: 4px; padding: 8px; }
    .gp-ui .gp-aspectos-menu .gp-navigation-tile > i, .gp-ui .gp-clases-menu .gp-navigation-tile > i { width: 30px; height: 30px; font-size: 27px; }
    .gp-ui .gp-clases-menu .gp-navigation-tile > h4 { white-space: normal !important; }
.gp-ui .gp-aspectos-menu .gp-navigation-tile > img { width: 30px !important; height: 30px !important; }
    .gp-ui .gp-aspectos-menu .gp-navigation-tile > h4, .gp-ui .gp-clases-menu .gp-navigation-tile > h4 { min-height: 0; font-size: 14px; line-height: 1.25; }
    .gp-ui .gp-aspectos-menu.gp-navigation-grid > [class*="col-"]:last-child:nth-child(odd), .gp-ui .gp-entrenador-menu.gp-navigation-grid > [class*="col-"]:last-child:nth-child(odd) { width: calc((100% - 8px) / 2) !important; }
}
.gp-ui .gp-entrenador-menu .colorT-10.gp-navigation-tile > i { color: var(--gp-danger) !important; }
@media (max-width: 767px) {
    .gp-ui .gp-entrenador-menu.gp-navigation-grid { gap: 8px; }
    .gp-ui .gp-entrenador-menu .gp-navigation-tile { min-height: clamp(76px, 13vh, 104px); gap: 4px; padding: 8px; }
    .gp-ui .gp-entrenador-menu .gp-navigation-tile > i { width: 30px; height: 30px; font-size: 27px; }
    .gp-ui .gp-entrenador-menu .gp-navigation-tile > h3, .gp-ui .gp-entrenador-menu .gp-navigation-tile > h4 { min-height: 0; font-size: 14px; line-height: 1.25; }
}
.gp-ui .gp-navigation-tile > h3, .gp-ui .gp-navigation-tile > h4, .gp-ui .gp-navigation-tile > h5 { display: flex; align-items: center; justify-content: center; min-height: 2.8em; margin: 0; padding: 0; font-size: 16px; line-height: 1.4; text-align: center; overflow-wrap: anywhere; }
.gp-ui .horario-campo { width: 100%; min-width: 0; margin: 0 auto; }
.gp-ui .horario-campo-fila { display: grid; grid-template-columns: minmax(0, 1fr) 64px; min-height: 64px; }
.gp-ui .horario-campo-info { display: grid; grid-template-columns: 80px minmax(0, 1fr); align-items: center; gap: 12px; padding: 12px; text-align: center; }
.gp-ui .horario-campo-hora { min-width: 0; margin: 0; text-align: center; }
.gp-ui .horario-campo-detalle { min-width: 0; text-align: center; overflow-wrap: anywhere; }
.gp-ui .horario-campo-accion { width: auto; min-width: 0; padding: 6px; }
.gp-ui .horario-campo-accion .btn.gp-icon-only { margin: 0 !important; }
@media (max-width: 767px) {
    .gp-ui.fix-header .miDash { padding-top: 70px; }
    .gp-ui .miDash > .container-fluid { padding: 16px 12px !important; }
    .gp-ui .gp-navigation-grid { gap: 12px; }
    .gp-ui .gp-navigation-tile { min-height: 144px; padding: 12px 8px; }
    .gp-ui .horario-campo-fila { grid-template-columns: minmax(0, 1fr) 52px; }
    .gp-ui .horario-campo-info { grid-template-columns: 64px minmax(0, 1fr); gap: 8px; padding: 8px; }
    .gp-ui .btn.gp-button-stack > h3 { font-size: 18px; }
}

@media (max-width: 991px) {
    .gp-ui .page-wrapper > .container-fluid { padding: 20px 16px !important; }
    .gp-ui .page-titles { padding: 16px; }
    .gp-ui .card-body { padding: 18px; }
    .gp-ui .dataTables_wrapper .dataTables_filter { text-align: center; }
    .gp-ui .nav-tabs .nav-link { padding: 11px 14px; }
}
/* Opciones de pago y cancelación de clases en la vista del entrenador. */
.gp-ui .gp-clase-opciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; padding: 12px; }
.gp-ui .gp-clase-opciones .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin: 0; padding: 10px 16px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); color: var(--gp-primary); white-space: normal; }
.gp-ui .gp-clase-opciones .btn.is-selected { border-color: var(--gp-primary) !important; background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; box-shadow: inset 0 0 0 1px var(--gp-primary); }
.gp-ui .gp-clase-opciones .btn:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }

.gp-ui.gp-dashboard .gp-registro-horario { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 145px), 1fr)); gap: 8px; max-width: 380px; margin: 0 auto 20px; }
.gp-ui.gp-dashboard .gp-registro-horario > .btn { width: 100%; min-width: 0; min-height: 44px; margin: 0 !important; white-space: normal; overflow-wrap: anywhere; }

.gp-ui.gp-entrenador-contexto .gp-planificacion-contexto { margin-bottom: 18px; padding: 18px 20px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); color: var(--gp-text); text-align: left; }
.gp-ui.gp-entrenador-contexto .gp-planificacion-contexto h1 { margin: 0 0 8px; color: var(--gp-text); font-size: 20px; font-weight: 600; }
.gp-ui.gp-entrenador-contexto .gp-planificacion-contexto p { margin: 4px 0 0; line-height: 1.45; overflow-wrap: anywhere; }
.gp-ui.gp-entrenador-contexto .gp-planificacion-curso, .gp-ui.gp-entrenador-contexto .gp-planificacion-grupo { color: var(--gp-primary); font-weight: 600; }
.gp-ui.gp-entrenador-contexto .gp-planificacion-fecha, .gp-ui.gp-entrenador-contexto .gp-planificacion-referencia { color: var(--gp-muted); }

@media (max-width: 575px) {
    .gp-ui .page-wrapper > .container-fluid { padding: 16px 12px !important; }
    .gp-ui .page-titles h1, .gp-ui .page-titles h2, .gp-ui .page-titles h3, .gp-ui .page-titles h4, .gp-ui .gp-page-title, .gp-ui .barraTitulo { font-size: 18px; }
    .gp-ui .card-body, .gp-ui .card-header, .gp-ui .card-footer { padding: 16px; }
    .gp-ui .modal-dialog { margin: 12px; max-width: calc(100vw - 24px); }
    .gp-ui .modal-header, .gp-ui .modal-body, .gp-ui .modal-footer { padding: 16px; }
    .gp-ui .modal-footer { justify-content: center; }
    .gp-ui .modal-footer .btn { flex: 1 1 120px; }
    .gp-ui .dataTables_wrapper .dataTables_length, .gp-ui .dataTables_wrapper .dataTables_filter, .gp-ui .dataTables_wrapper .dataTables_info { text-align: center; }
    .gp-ui .dataTables_wrapper .dataTables_filter input { width: 180px; }
    .gp-ui .dataTables_wrapper .pagination, .gp-ui .dt-buttons { justify-content: center; }
    .gp-ui .nav-tabs { flex-wrap: wrap; }
    .gp-ui .nav-tabs .nav-item { flex: 1 1 auto; }
    .gp-ui .nav-tabs .nav-link { min-height: 44px; padding: 10px 12px; font-size: 13px; }
    .gp-ui .fc-toolbar h2, .gp-ui .fc-toolbar-title { font-size: 18px; }
    .gp-ui .fc-toolbar .fc-left, .gp-ui .fc-toolbar .fc-right { float: none; margin-bottom: 10px; text-align: center; }
    .gp-ui .login-box .card-body { padding: 20px; }
    .gp-ui .introjs-tooltip { min-width: 200px !important; }
}
@media (prefers-reduced-motion: reduce) {
    .gp-ui .btn, .gp-ui .nav-link, .gp-ui .modal.fade .modal-dialog { transition: none !important; }
}
@media print {
    body.gp-ui, .gp-ui .page-wrapper { background: var(--gp-surface) !important; color: var(--gp-text); }
    .gp-ui .topbar, .gp-ui .left-sidebar, .gp-ui .footer, .gp-ui .dataTables_filter, .gp-ui .dataTables_length, .gp-ui .dataTables_paginate { display: none !important; }
    .gp-ui .page-wrapper { margin-left: 0 !important; padding-top: 0 !important; }
    .gp-ui .card { box-shadow: none; }
}

/* Inicio y navegación: rejillas regulares y controles centrados en todos los roles. */
.gp-ui .topbar .top-navbar { min-height: 70px; padding-top: 0; padding-bottom: 0; }
.gp-ui .topbar .navbar-header .navbar-brand { display: flex; align-items: center; justify-content: center; min-height: 70px; margin: 0; }
.gp-ui .topbar .navbar-nav { align-items: center; }
.gp-ui .topbar .navbar-nav > .nav-item > .nav-link { gap: 8px; min-width: 44px; min-height: 70px; padding: 12px !important; line-height: 1.4; text-align: center; }
.gp-ui .topbar .profile-pic { display: block; width: 34px; height: 34px; object-fit: cover; border-radius: 50%; }
.gp-ui .topbar .avatar-notif-wrap { display: flex; align-items: center; justify-content: center; }
.gp-ui .topbar .nav-toggler i::before { content: '\f0c9'; font-family: 'Font Awesome 5 Free'; font-weight: 900; font-size: 18px; }
.gp-ui.show-sidebar .topbar .nav-toggler i::before { content: '\f00d'; }
.gp-ui .topbar .dropdown-menu { max-height: calc(100vh - 86px); max-height: calc(100dvh - 86px); overflow-y: auto; overscroll-behavior: contain; }
.gp-ui .topbar ul.dropdown-user { width: 270px; max-width: 100%; padding: 0; }
.gp-ui .topbar ul.dropdown-user li { margin: 0 !important; font-size: 14px; text-align: center !important; }
.gp-ui .topbar ul.dropdown-user li a, .gp-ui .topbar a.dropdown-item { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 14px !important; border-radius: 7px; color: var(--gp-text); line-height: 1.4; white-space: normal; text-align: center; overflow-wrap: anywhere; }
.gp-ui .topbar ul.dropdown-user li a > i { flex: 0 0 20px; width: 20px; margin: 0; font-size: 15px; text-align: center; }
.gp-ui .topbar ul.dropdown-user li a:hover, .gp-ui .topbar ul.dropdown-user li a:focus-visible { background: var(--gp-soft); color: var(--gp-primary); }
.gp-ui .topbar ul.dropdown-user .dw-user-box { padding: 12px; }
.gp-ui .topbar ul.dropdown-user .dw-user-box .u-text { width: 100%; margin-top: 0 !important; }
.gp-ui .topbar ul.dropdown-user h4 { margin: 0; font-size: 16px; line-height: 1.5; overflow-wrap: anywhere; }
.gp-ui .topbar .mega-dropdown-menu { margin: 0; padding: 12px; text-align: center; }
.gp-ui .topbar .mega-dropdown-menu .d-flex { flex-wrap: wrap; gap: 12px; }
.gp-ui .sidebar-nav ul li a { min-height: 44px; overflow-wrap: anywhere; }
.gp-ui .sidebar-nav > ul > li > ul { padding: 0 8px; }
.gp-ui .sidebar-nav .has-arrow::after { right: 16px; top: 50%; margin-top: -3px; }
.gp-ui .sidebar-nav .nav-devider { margin: 10px 16px; }
.gp-ui .sidebar-nav ul li a:focus-visible, .gp-ui .topbar a:focus-visible { outline: 3px solid var(--gp-focus); outline-offset: -3px; }
.gp-ui .gp-family-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 20px; }
.gp-ui .gp-family-actions .btn { width: 100%; margin: 0; }
.gp-ui.gp-family #flexPadre, .gp-ui.gp-family #flexHijos { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch !important; gap: 16px; width: 100%; max-width: 900px; margin: 0 auto; }
.gp-ui.gp-family #flexPadre > :only-child { grid-column: 1 / -1; }
.gp-ui.gp-family #flexPadre > a, .gp-ui.gp-family #flexHijos > a { display: flex; min-width: 0; }
.gp-ui.gp-family .carta { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 88px; height: auto; margin: 0 !important; padding: 16px; }
.gp-ui.gp-family .carta .txtRes { margin: 0; padding: 0; font-size: 18px; line-height: 1.5; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-family .carta:not(.bg-secondary):hover { background: var(--gp-soft); color: var(--gp-primary); }
.gp-ui.gp-profile-form .miDash { max-width: 760px; }
.gp-ui.gp-profile-form .card-body { text-align: center; }
.gp-ui.gp-profile-form #divProfile { max-width: 100%; }
.gp-ui.gp-profile-form #fotoPerfil { max-width: 100%; height: auto; }
.gp-ui.gp-welcome #main-wrapper > .d-flex > .col-10 { flex: 0 1 1100px; width: 100%; max-width: 1100px; padding: 24px; }
.gp-ui.gp-welcome .wizard-content { width: 100%; margin-bottom: 0; }
.gp-ui.gp-welcome .wizard-content .wizard > .content { min-width: 0; }
.gp-ui.gp-welcome .wizard-content .wizard > .content > .body { width: 100%; padding: 16px; }
.gp-ui.gp-welcome .wizard-content .wizard > .actions > ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.gp-ui.gp-welcome .wizard-content .wizard > .actions > ul > li { margin: 0; }
.gp-ui.gp-account #main-wrapper > .container-fluid { max-width: 1200px; margin: 0 auto; padding: 24px; }
.gp-ui.gp-account #main-wrapper .col-lg-8 { flex: 0 0 100%; max-width: 100%; }
.gp-ui.gp-account .card-header > .d-flex { flex-wrap: wrap; justify-content: center !important; gap: 12px 24px; }
.gp-ui.gp-account .card-header h3, .gp-ui.gp-account .card-header h6 { flex: 1 1 280px; }
.gp-ui.gp-account .card-body > .row { align-items: center; }
.gp-ui.gp-account .card-body h2, .gp-ui.gp-account .card-body h4, .gp-ui.gp-account .card-body h6 { text-align: center; overflow-wrap: anywhere; line-height: 1.5; }
.gp-ui.gp-account .card-body h2 { font-size: 22px; }
.gp-ui.gp-account .card-body > .row > .col-8 { text-align: center; }
@media (max-width: 767px) {
    .gp-ui .topbar .top-navbar .navbar-header { flex: 0 0 60px; width: 60px; padding: 0; }
    .gp-ui .topbar .top-navbar .navbar-collapse { flex: 1; min-width: 0; padding: 0 4px; }
    .gp-ui .topbar .navbar-nav > .nav-item > .nav-link { padding: 8px !important; font-size: 14px; }
    .gp-ui .topbar .dropdown-menu { max-width: calc(100vw - 24px); }
    .gp-ui.gp-account #main-wrapper > .container-fluid { padding: 86px 12px 16px; }
    .gp-ui.gp-account .card-body > .row > .col-4, .gp-ui.gp-account .card-body > .row > .col-8 { flex: 0 0 100%; max-width: 100%; border-right: 0 !important; }
    .gp-ui.gp-account .card-body > .row > .col-4 { margin-bottom: 12px; }
}
@media (max-width: 575px) {
    .gp-ui.gp-family #flexPadre, .gp-ui.gp-family #flexHijos { grid-template-columns: minmax(0, 1fr); gap: 12px; }
    .gp-ui .gp-family-actions { gap: 12px; }
    .gp-ui.gp-welcome #main-wrapper > .d-flex > .col-10 { padding: 16px 12px; }
    .gp-ui.gp-welcome .validation-wizard section .row > .col-6, .gp-ui.gp-welcome .validation-wizard section .row > .col-8, .gp-ui.gp-welcome .validation-wizard section .row > .col-4 { flex: 0 0 100%; max-width: 100%; }
    .gp-ui.gp-welcome .wizard-content .wizard > .content > .body { padding: 0; }
}
@media (min-width: 576px) {
    .gp-ui.gp-family #flexPadre > :only-child { justify-self: center; width: calc(50% - 8px) !important; }
}
.gp-ui .topbar ul.dropdown-user li a { position: relative; padding-left: 40px !important; padding-right: 40px !important; }
.gp-ui .topbar ul.dropdown-user li a > i { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); }
.gp-ui.gp-family #flexHijos { grid-auto-rows: 1fr; }
.gp-ui.gp-family .carta { border-radius: 14px; }
.gp-ui .gp-birth-date { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, 1.2fr); align-items: end; gap: 12px; }
.gp-ui .gp-birth-date > div { min-width: 0; padding: 0 !important; }
.gp-ui .gp-birth-date .form-control { padding-left: 8px; padding-right: 8px; }
@media (max-width: 575px) {
    .gp-ui.gp-welcome .wizard-content .wizard > .steps > ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
    .gp-ui.gp-welcome .wizard-content .wizard > .steps > ul > li { display: block; width: auto; }
    .gp-ui.gp-welcome .wizard-content .wizard > .steps > ul > li::before, .gp-ui.gp-welcome .wizard-content .wizard > .steps > ul > li::after { display: none; }
    .gp-ui.gp-welcome .wizard-content .wizard > .steps > ul > li > a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; height: 100%; min-height: 100px; margin: 0; padding: 8px; font-size: 12px; line-height: 1.4; }
    .gp-ui.gp-welcome .wizard-content .wizard > .steps .step { display: flex; align-items: center; justify-content: center; position: static; width: 36px; height: 36px; margin: 0; font-size: 16px; line-height: 1; }
    .gp-ui.gp-welcome .wizard-content .wizard > .content { margin-top: 20px; }
}
.gp-ui.gp-family .carta { border-radius: 14px !important; }
@media (max-width: 575px) {
    .gp-ui .gp-birth-date { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 575px) {
    .gp-ui.gp-welcome .wizard-content .wizard > .steps > ul > li > a { justify-content: flex-start; }
    .gp-ui.gp-welcome .wizard-content .wizard > .steps .step { flex-shrink: 0; }
}

/* La tableta es un dispositivo principal: navegación por toque en ambas orientaciones. */
.gp-ui .gp-navigation-backdrop { position: fixed; inset: 70px 0 0; z-index: 30; width: 100%; padding: 0; border: 0; border-radius: 0; background: rgba(36, 81, 72, .24); color: var(--gp-primary); outline-color: var(--gp-primary); cursor: pointer; }
.gp-ui .gp-navigation-backdrop[hidden] { display: none; }
.gp-ui.gp-touch-navigation .topbar .nav-toggler { display: flex !important; align-items: center; justify-content: center; }
.gp-ui.gp-touch-navigation .left-sidebar { position: fixed; top: 70px; left: 0 !important; z-index: 40; width: 280px; max-width: calc(100vw - 48px); height: calc(100vh - 70px); height: calc(100dvh - 70px); padding-top: 0; transform: translateX(calc(-100% - 1px)); visibility: hidden; }
.gp-ui.gp-touch-navigation.show-sidebar .left-sidebar { transform: none; visibility: visible; }
.gp-ui.gp-touch-navigation .left-sidebar .slimScrollDiv { height: 100% !important; }
.gp-ui.gp-touch-navigation .scroll-sidebar { position: relative; height: 100% !important; overflow-x: hidden !important; overflow-y: auto !important; overscroll-behavior-y: contain; -webkit-overflow-scrolling: touch; }
.gp-ui.gp-touch-navigation .left-sidebar .slimScrollBar, .gp-ui.gp-touch-navigation .left-sidebar .slimScrollRail { display: none !important; }
.gp-ui.gp-touch-navigation .sidebar-nav #sidebarnav > li > a { width: auto; min-height: 48px; margin: 4px 12px; padding: 12px 36px; }
.gp-ui.gp-touch-navigation .sidebar-nav #sidebarnav > li > a[aria-expanded="true"] { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui.gp-touch-navigation .sidebar-nav .waves-effect { transform: none; -webkit-mask-image: none; mask-image: none; }
.gp-ui.gp-touch-navigation .sidebar-nav #sidebarnav > li > ul { position: static; left: auto; top: auto; width: auto; padding: 0 8px; background: transparent; }
.gp-ui.gp-touch-navigation .sidebar-nav #sidebarnav > li > ul.collapse:not(.in):not(.show) { display: none; }
.gp-ui.gp-touch-navigation .sidebar-nav #sidebarnav > li > ul.in, .gp-ui.gp-touch-navigation .sidebar-nav #sidebarnav > li > ul.show { display: block; }
.gp-ui.gp-touch-navigation .sidebar-nav #sidebarnav .has-arrow::after { display: block; border-color: currentColor; }
.gp-ui.gp-touch-navigation .sidebar-nav .nav-devider { width: auto; }
.gp-ui.gp-touch-navigation .user-profile { width: auto; }
.gp-ui.gp-touch-navigation .page-wrapper { margin-left: 0 !important; }
.gp-ui.gp-touch-navigation .footer { left: 0; }
@media (min-width: 600px) and (max-width: 1366px) {
    .gp-ui .topbar .top-navbar .navbar-header { flex: 0 0 150px; width: 150px; padding: 0; }
    .gp-ui .topbar .navbar-brand > span { display: inline-block !important; }
    .gp-ui .topbar .top-navbar .navbar-collapse { flex: 1; min-width: 0; padding: 0 8px; }
    .gp-ui .topbar .navbar-nav > .nav-item > .nav-link { font-size: 16px; }
    .gp-ui .miDash > .container-fluid { padding: 20px !important; }
    .gp-ui.gp-welcome #main-wrapper > .d-flex > .col-10 { padding: 20px; }
    .gp-ui.gp-welcome .gp-birth-date { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gp-ui.gp-welcome .gp-birth-date > :nth-child(3) { grid-column: 1 / -1; }
}
@media (min-width: 576px) and (max-width: 991px) {
    .gp-ui.gp-welcome .validation-wizard #divDatosEscuela > .row > .col-6 { flex: 0 0 100%; max-width: 100%; }
}
@media (any-pointer: coarse) {
    .gp-ui .btn, .gp-ui .page-link { min-height: 44px; }
    .gp-ui .btn.gp-icon-only { width: 44px; min-width: 44px; height: 44px; min-height: 44px; }
    .gp-ui .form-control, .gp-ui .custom-select, .gp-ui .input-group-text { min-height: 44px; }
    .gp-ui .topbar ul.dropdown-user li a, .gp-ui .topbar a.dropdown-item, .gp-ui .sidebar-nav ul li a { min-height: 48px; }
    .gp-ui .gp-navigation-tile { min-height: 160px; }
    .gp-ui .gp-navigation-tile:active, .gp-ui.gp-family .carta:not(.bg-secondary):active { background: var(--gp-soft); }
    .gp-ui.gp-welcome .wizard-content .wizard > .actions > ul > li > a { display: flex; align-items: center; justify-content: center; min-width: 100px; min-height: 44px; }
}

/* Referencia común de Cursos: cabecera ligera, superficies limpias y aire regular. */
.gp-ui .page-titles, .gp-ui:not(.gp-dashboard) .barraTitulo { padding: 0 !important; min-height: 46px; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.gp-ui .page-titles { margin-bottom: 24px; }
.gp-ui .card-header { background-color: var(--gp-surface); }
.gp-ui .card-footer { background-color: var(--gp-surface); }
.gp-ui .card-title { font-size: 18px; }
.gp-ui table.table thead th { background-color: var(--gp-surface); color: var(--gp-muted); font-size: 12px; font-weight: 500; }
.gp-ui table.default-bordered-table { border-color: var(--gp-border); }
.gp-ui table.default-bordered-table > thead > tr > th, .gp-ui table.color-table.dark-table > thead > tr > th { background: var(--gp-surface) !important; color: var(--gp-muted) !important; border-color: var(--gp-border); }
.gp-ui table.default-bordered-table > tbody > tr > td { border-color: var(--gp-border); }
.gp-ui .table-responsive { max-width: 100%; }
.gp-ui .btn .text-white { color: inherit !important; }

/* Bloque 02: matrícula y asistencia con la misma composición que Cursos. */
.gp-ui.gp-course-booking .miDash { max-width: 1060px; padding: 24px 20px; }
.gp-ui.gp-course-booking #logoEscuela { max-width: 100%; max-height: 96px; width: auto !important; height: auto !important; object-fit: contain; }
.gp-ui.gp-course-booking #tituloCurso { margin: 20px 0 12px; color: var(--gp-text); font-size: 18px; font-weight: 600; line-height: 1.35; text-align: left !important; overflow-wrap: anywhere; }
.gp-ui.gp-course-booking #desEleccion, .gp-ui.gp-course-booking #desCurso { color: var(--gp-muted); line-height: 1.6; }
.gp-ui.gp-course-booking #divFiltros { margin: 20px 0; }
.gp-ui.gp-course-booking #divFiltros h4 { padding: 0 0 12px !important; background: transparent !important; color: var(--gp-text) !important; font-size: 16px; }
.gp-ui.gp-course-booking #divFiltros .d-flex { flex-wrap: wrap; gap: 4px; }
.gp-ui.gp-course-booking #divFiltros .btn { min-width: 44px; min-height: 44px; }
.gp-ui.gp-course-booking #divRegistros > .row { margin: 12px 0; padding: 20px !important; border: 1px solid var(--gp-border) !important; border-radius: 14px; background: var(--gp-surface); box-shadow: var(--gp-shadow); }
.gp-ui.gp-course-booking #divRegistros h4 { color: var(--gp-text); font-size: 18px; line-height: 1.5; overflow-wrap: anywhere; }
.gp-ui.gp-course-booking #divRegistros .btn.disabled { opacity: 1; }
.gp-ui.gp-course-booking #resumenMultidia { margin: 16px 0; border-color: var(--gp-control-border) !important; border-radius: 12px; background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui.gp-course-booking .curso-tarifa { color: var(--gp-primary); }
.gp-ui.gp-course-booking #divImportante { max-width: 760px; margin: 24px auto; padding: 24px; border: 1px solid var(--gp-border); border-radius: 14px; background: var(--gp-surface); box-shadow: var(--gp-shadow); }
.gp-ui.gp-course-booking #mensajeFinal { padding: 16px; border-radius: 10px; background: var(--gp-selection); color: var(--gp-primary); font-size: 20px; line-height: 1.5; }
.gp-ui.gp-course-attendance #HeaderBotones { padding: 16px 20px; }
.gp-ui.gp-course-attendance #HeaderBotones .btn-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.gp-ui.gp-course-attendance #HeaderBotones .btn { margin: 0; border: 1px solid var(--gp-control-border) !important; border-radius: 8px !important; background: var(--gp-soft) !important; color: var(--gp-primary) !important; }
.gp-ui.gp-course-attendance #HeaderBotones .btn.active, .gp-ui.gp-course-attendance #HeaderBotones .btn.btn-09 { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-course-attendance #HeaderBotones .btn.btn-17 { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-course-attendance #HeaderBotones .btn.btn-16 { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-course-attendance #bodyAlumnos table { width: 100%; }
.gp-ui.gp-course-attendance #bodyAlumnos table td { overflow-wrap: anywhere; }
.gp-ui.gp-course-attendance #vistaNuevo > .hidden-xs-down.d-flex { display: flex !important; flex-wrap: wrap; gap: 12px; }
.gp-ui.gp-course-attendance #vistaNuevo > .d-flex > .form-group { flex: 1 1 160px; }
.gp-ui.gp-course-attendance .btn .test { color: inherit !important; }
@media (max-width: 767px) {
    .gp-ui.gp-course-booking .miDash { padding: 86px 12px 16px; }
    .gp-ui.gp-course-booking #tituloCurso { font-size: 18px; }
    .gp-ui.gp-course-booking #divRegistros > .row { padding: 16px 12px !important; }
    .gp-ui.gp-course-booking #divRegistros .d-flex { flex-wrap: wrap; }
    .gp-ui.gp-course-booking #divImportante { margin: 12px auto; padding: 16px; }
    .gp-ui.gp-course-attendance #HeaderBotones .btn-group > .btn { flex: 1 1 120px; }
    .gp-ui.gp-course-attendance #bodyAlumnos table td::before { position: static; display: block; margin-bottom: 6px; white-space: normal; text-align: center; }
}
@media (any-pointer: coarse) {
    .gp-ui.gp-course-booking #divRegistros .btn, .gp-ui.gp-course-attendance .btn { min-height: 44px; }
}

/* Selección, lectura y foco comunes, incluidas las secciones ya renovadas. */
.gp-ui a { color: var(--gp-primary); }
.gp-ui p a:not(.btn), .gp-ui .form-text a, .gp-ui .alert a:not(.btn) { text-decoration: underline; text-underline-offset: 3px; }
.gp-ui .sidebar-nav > ul > li.active > a, .gp-ui .sidebar-nav ul li a.active { background: var(--gp-selection) !important; color: var(--gp-primary) !important; box-shadow: inset 3px 0 0 var(--gp-primary); }
.gp-ui .sidebar-nav ul li a > i { color: inherit !important; }
.gp-ui .nav-tabs .nav-link.active, .gp-ui .nav-pills .nav-link.active { background: var(--gp-selection); color: var(--gp-primary); border-bottom: 3px solid var(--gp-primary); }
.gp-ui .dropdown-item.active, .gp-ui .dropdown-item:active, .gp-ui .page-item.active .page-link { background: var(--gp-selection) !important; color: var(--gp-primary) !important; box-shadow: inset 0 -3px 0 var(--gp-primary); }
.gp-ui table.table tbody tr.selected > td, .gp-ui table.table tbody tr[aria-selected="true"] > td, .gp-ui table.table tbody tr.table-active > td { background: var(--gp-selection) !important; color: var(--gp-primary); }
.gp-ui table.table tbody tr.selected > td:first-child, .gp-ui table.table tbody tr[aria-selected="true"] > td:first-child { box-shadow: inset 3px 0 0 var(--gp-primary); }
.gp-ui .select2-container--default .select2-results__option--highlighted[aria-selected], .gp-ui .select2-container--default .select2-results__option[aria-selected="true"] { background: var(--gp-selection); color: var(--gp-primary); box-shadow: inset 3px 0 0 var(--gp-primary); }
.gp-ui .datepicker table tr td.active, .gp-ui .datepicker table tr td.active:hover, .gp-ui .datepicker table tr td span.active, .gp-ui .bootstrap-datetimepicker-widget table td.active,
.gp-ui .fc .fc-button-active, .gp-ui .fc-state-active { background: var(--gp-selection) !important; color: var(--gp-primary) !important; box-shadow: inset 0 0 0 2px var(--gp-primary); text-shadow: none; }
.gp-ui .btn.gp-icon-only { border-color: var(--gp-primary) !important; }
.gp-ui .btn.gp-icon-only[aria-pressed="true"] { background: var(--gp-selection) !important; border-color: var(--gp-primary) !important; color: var(--gp-primary) !important; box-shadow: inset 0 0 0 2px var(--gp-primary); }
.gp-ui .btn:disabled, .gp-ui .btn.disabled, .gp-ui .btn.gp-icon-only:disabled, .gp-ui .btn.gp-icon-only.disabled { background: var(--gp-page) !important; border-color: var(--gp-control-border) !important; color: var(--gp-muted) !important; opacity: 1; cursor: default; }
.gp-ui .form-control:disabled, .gp-ui .form-control[readonly], .gp-ui .custom-select:disabled { background: var(--gp-selection); color: var(--gp-muted); opacity: 1; }
.gp-ui .form-control.is-valid, .gp-ui .custom-select.is-valid, .gp-ui .has-success .form-control { border-color: var(--gp-success); }
.gp-ui .valid-feedback { color: var(--gp-success); }
.gp-ui :focus-visible { outline: 3px solid var(--gp-focus) !important; outline-offset: 3px; box-shadow: 0 0 0 2px var(--gp-surface) !important; }
.gp-ui .custom-control-input:focus-visible ~ .custom-control-label::before { outline: 3px solid var(--gp-focus); outline-offset: 3px; box-shadow: 0 0 0 2px var(--gp-surface); }
.gp-ui .topbar a:focus-visible { outline-color: var(--gp-focus) !important; box-shadow: 0 0 0 2px var(--gp-surface), inset 0 0 0 2px var(--gp-surface) !important; }
.gp-ui .swal2-styled.swal2-confirm { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .swal2-styled.swal2-confirm:hover { background: var(--gp-primary-hover); }
.gp-ui .swal2-styled.swal2-cancel { background: var(--gp-surface); color: var(--gp-primary); border: 1px solid var(--gp-primary); }
.gp-ui .gestion-cursos-pagina .gestion-cursos-tabs .nav-link.active { background: var(--gp-selection); color: var(--gp-primary); border-color: var(--gp-primary); box-shadow: inset 0 -2px 0 var(--gp-primary); }
.gp-ui .gestion-cursos-pagina .btn-12, .gp-ui .gestion-cursos-pagina .btn-15 { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui .gestion-cursos-pagina .btn-12:hover, .gp-ui .gestion-cursos-pagina .btn-15:hover { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; }
.gp-ui.gp-course-attendance #HeaderBotones .btn.btn-09, .gp-ui.gp-course-attendance #HeaderBotones .btn.btn-16, .gp-ui.gp-course-attendance #HeaderBotones .btn.btn-17 { background: var(--gp-selection) !important; color: var(--gp-primary) !important; border-color: var(--gp-primary) !important; box-shadow: inset 0 -3px 0 var(--gp-primary); }
.gp-ui.gp-course-booking #tituloCurso { color: var(--gp-text); }
.gp-ui.gp-course-booking #mensajeFinal { background: var(--gp-success-soft); color: var(--gp-success); }
.gp-ui .cursos-pagina .cursos-boton-nuevo, .gp-ui #modalTemporadas .curso-editor-guardar { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .cursos-pagina .cursos-boton-nuevo:hover, .gp-ui #modalTemporadas .curso-editor-guardar:hover { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; color: var(--gp-on-primary) !important; }
.gp-ui .cursos-pagina .cursos-boton-nuevo.disabled, .gp-ui #modalTemporadas .curso-editor-guardar:disabled { background: var(--gp-page) !important; border-color: var(--gp-control-border) !important; color: var(--gp-muted) !important; opacity: 1; }
.gp-ui.gp-dashboard #diadia { color: var(--gp-muted) !important; }
.gp-ui .horario-campo-estado.libre { color: var(--gp-success); background: var(--gp-success-soft); border-radius: 50%; }
.gp-ui .horario-campo-estado.ocupado { color: var(--gp-danger); background: var(--gp-danger-soft); border-radius: 50%; }

/* Paleta cerrada y acciones uniformes: fases 01/02 y recursos de toda la plataforma. */
.gp-ui h1, .gp-ui h2, .gp-ui h3, .gp-ui h4, .gp-ui h5, .gp-ui h6 { color: var(--gp-text); }
.gp-ui input, .gp-ui select, .gp-ui textarea, .gp-ui .select2-search__field { color: var(--gp-text); }
.gp-ui .dropdown-menu { color: var(--gp-text); }
.gp-ui .topbar .navbar-brand { color: var(--gp-on-primary) !important; }
.gp-ui .dropdown-menu .divider { background: var(--gp-border); }
.gp-ui hr { color: var(--gp-border); border-color: var(--gp-border); }
.gp-ui .border, .gp-ui .border-top, .gp-ui .border-right, .gp-ui .border-bottom, .gp-ui .border-left { border-color: var(--gp-border) !important; }
.gp-ui .form-control, .gp-ui .custom-select, .gp-ui input[type="date"], .gp-ui #dpDia { border-color: var(--gp-control-border) !important; }
.gp-ui .was-validated .form-control:invalid, .gp-ui .form-control.is-invalid, .gp-ui .has-danger .form-control { border-color: var(--gp-danger) !important; }
.gp-ui .form-control:valid.is-valid, .gp-ui .has-success .form-control { border-color: var(--gp-success) !important; }
.gp-ui .dataTables_wrapper .paginate_button { border-color: var(--gp-border) !important; color: var(--gp-muted) !important; background: var(--gp-surface) !important; }
.gp-ui .dataTables_wrapper .page-link, .gp-ui .progress .progress-bar, .gp-ui table tr { border-color: var(--gp-border) !important; }
.gp-ui .avatar-notif-dot { background: var(--gp-danger) !important; border-color: var(--gp-surface) !important; }
.gp-ui .bg-secondary, .gp-ui .bg-light, .gp-ui .bg-dark, .gp-ui .bg-granate,
.gp-ui .color-1, .gp-ui .color-2, .gp-ui .color-4, .gp-ui .color-5, .gp-ui .color-6, .gp-ui .color-7,
.gp-ui .color-9, .gp-ui .color-11, .gp-ui .color-12, .gp-ui .color-13, .gp-ui .color-14, .gp-ui .color-17 { background-color: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .color-3, .gp-ui .color-16 { background-color: var(--gp-warning-soft) !important; color: var(--gp-warning) !important; }
.gp-ui .color-8, .gp-ui .color-15 { background-color: var(--gp-success-soft) !important; color: var(--gp-success) !important; }
.gp-ui .color-10 { background-color: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; }
.gp-ui .colorT-1, .gp-ui .colorT-2, .gp-ui .colorT-4, .gp-ui .colorT-5, .gp-ui .colorT-6, .gp-ui .colorT-7,
.gp-ui .colorT-9, .gp-ui .colorT-11, .gp-ui .colorT-12, .gp-ui .colorT-13, .gp-ui .colorT-14, .gp-ui .colorT-17 { color: var(--gp-primary) !important; }
.gp-ui .colorT-3, .gp-ui .colorT-16 { color: var(--gp-warning) !important; }
.gp-ui .colorT-8, .gp-ui .colorT-15 { color: var(--gp-success) !important; }
.gp-ui .colorT-10 { color: var(--gp-danger) !important; }
.gp-ui [class~="bg-secondary"] .text-white, .gp-ui [class~="bg-light"] .text-white, .gp-ui [class~="bg-dark"] .text-white,
.gp-ui [class~="bg-granate"] .text-white, .gp-ui [class*="color-"] > .text-white { color: inherit !important; }
.gp-ui .card-header .text-white { color: var(--gp-text) !important; }
.gp-ui .text-secondary, .gp-ui .text-dark, .gp-ui .text-black { color: var(--gp-text) !important; }
.gp-ui .badge-dark, .gp-ui .badge-primary, .gp-ui .label-primary, .gp-ui .label-verde,
.gp-ui .label-inverse, .gp-ui .label-default { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .border-primary, .gp-ui .border-info, .gp-ui .card-outline-primary, .gp-ui .card-outline-info { border-color: var(--gp-primary) !important; }
.gp-ui .border-secondary, .gp-ui .b-all, .gp-ui .b-t, .gp-ui .b-b, .gp-ui .b-l, .gp-ui .b-r { border-color: var(--gp-border) !important; }
.gp-ui .progress { background: var(--gp-selection); }
.gp-ui .progress .progress-bar { background-color: var(--gp-primary) !important; }
.gp-ui .avatar-notif-badge { background: var(--gp-danger) !important; border-color: var(--gp-surface) !important; }

/* Un tamaño para las acciones, con el mismo redondeo y espaciado en cada sección. */
.gp-ui .btn, .gp-ui .swal2-styled, .gp-ui .fc-button, .gp-ui .modal-header .close {
    min-height: 44px !important; padding: 10px 16px !important; border-width: 1px !important; border-radius: 8px !important;
    font-size: 14px !important; font-weight: 500; line-height: 1.4 !important; text-align: center; box-shadow: none;
}
.gp-ui .btn > i, .gp-ui .btn > span, .gp-ui .btn > h3, .gp-ui .btn > h4 { color: inherit !important; }
.gp-ui .btn.gp-icon-only, .gp-ui .modal-header .close {
    flex: 0 0 44px !important; width: 44px !important; min-width: 44px !important; max-width: 44px !important; height: 44px !important; padding: 0 !important;
}
.gp-ui .gestion-cursos-pagina .gestion-horario-fila > .btn.gp-icon-only { flex: 0 0 44px !important; }
.gp-ui .btn.gp-icon-only > i, .gp-ui .btn.gp-icon-only i::before { margin: 0 !important; font-size: 15px !important; }
.gp-ui .btn-group { gap: 8px; align-items: center; flex-wrap: wrap; }
.gp-ui .btn-group > .btn + .btn { margin-left: 0; }
.gp-ui .btn.gp-action-primary:not(.gp-icon-only) { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn.gp-action-primary:not(.gp-icon-only):hover { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; }
.gp-ui .btn.gp-action-secondary, .gp-ui .btn.gp-action-secondary.gp-icon-only { background: var(--gp-surface) !important; border-color: var(--gp-primary) !important; color: var(--gp-primary) !important; }
.gp-ui .btn.gp-action-secondary:hover, .gp-ui .btn.gp-action-secondary.gp-icon-only:hover { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .btn.gp-action-danger, .gp-ui .btn.gp-icon-only.gp-icon-danger { background: var(--gp-danger-soft) !important; border-color: var(--gp-danger) !important; color: var(--gp-danger) !important; }
.gp-ui .btn.gp-action-danger:hover, .gp-ui .btn.gp-icon-only.gp-icon-danger:hover { background: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn.gp-action-primary:disabled, .gp-ui .btn.gp-action-primary.disabled,
.gp-ui .btn.gp-action-secondary:disabled, .gp-ui .btn.gp-action-secondary.disabled,
.gp-ui .btn.gp-action-danger:disabled, .gp-ui .btn.gp-action-danger.disabled { background: var(--gp-page) !important; border-color: var(--gp-control-border) !important; color: var(--gp-muted) !important; }
.gp-ui .gp-actions, .gp-ui .modal-footer, .gp-ui .swal2-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.gp-ui .gp-actions > .btn, .gp-ui .gp-actions > .swal2-styled { margin: 0 !important; }
.gp-ui .gp-actions > .gp-action-primary, .gp-ui .gp-actions > .gp-action-danger, .gp-ui .swal2-actions > .swal2-confirm { order: 2; }
.gp-ui .gp-actions > .gp-action-secondary, .gp-ui .swal2-actions > .swal2-cancel { order: 1; }
.gp-ui .modal-header > .btn, .gp-ui .modal-header > .close { margin: 0 0 0 auto !important; }
.gp-ui .swal2-styled.swal2-confirm { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; background-image: none !important; }
.gp-ui .swal2-styled.swal2-cancel { background: var(--gp-surface) !important; color: var(--gp-primary) !important; border: 1px solid var(--gp-primary) !important; background-image: none !important; }
.gp-ui .swal2-icon.swal2-success { color: var(--gp-success); border-color: var(--gp-success); }
.gp-ui .swal2-icon.swal2-success .swal2-success-ring { border-color: var(--gp-success); }
.gp-ui .swal2-icon.swal2-success [class^="swal2-success-line"] { background: var(--gp-success); }
.gp-ui .swal2-icon.swal2-warning { color: var(--gp-warning); border-color: var(--gp-warning); }
.gp-ui .swal2-icon.swal2-error { border-color: var(--gp-danger); }
.gp-ui .swal2-icon.swal2-error [class^="swal2-x-mark-line"] { background: var(--gp-danger); }
.gp-ui .swal2-icon.swal2-info, .gp-ui .swal2-icon.swal2-question { color: var(--gp-primary); border-color: var(--gp-primary); }
.gp-ui .jq-toast-single { background-color: var(--gp-selection); color: var(--gp-primary); }
.gp-ui .jq-toast-single.jq-icon-success { background-color: var(--gp-success-soft); color: var(--gp-success); }
.gp-ui .jq-toast-single.jq-icon-warning { background-color: var(--gp-warning-soft); color: var(--gp-warning); }
.gp-ui .jq-toast-single.jq-icon-error { background-color: var(--gp-danger-soft); color: var(--gp-danger); }
.gp-ui .jq-toast-loader { background: var(--gp-primary) !important; }
.gp-ui .fc-unthemed th, .gp-ui .fc-unthemed td, .gp-ui .fc-unthemed .fc-content { border-color: var(--gp-border); }
.gp-ui .fc-event { border-color: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .fc-event .fc-content { color: inherit; }
.gp-ui .fc-nonbusiness { background: var(--gp-selection); }
.gp-ui .dtp > .dtp-content, .gp-ui .dtp div.dtp-date, .gp-ui .dtp div.dtp-time { background: var(--gp-surface); color: var(--gp-text); }
.gp-ui .dtp > .dtp-content > .dtp-date-view > header.dtp-header { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .dtp table.dtp-picker-days tr > td > a.selected { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .wizard-content .wizard > .steps > ul > li.current > a, .gp-ui .wizard-content .wizard > .steps > ul > li.done > a { color: var(--gp-primary); }
.gp-ui .wizard-content .wizard > .steps .step, .gp-ui .wizard-content .wizard > .steps .current .step { background: var(--gp-selection); border-color: var(--gp-primary); color: var(--gp-primary); }
.gp-ui .wizard-content .wizard > .actions > ul > li > a { background: var(--gp-primary); color: var(--gp-on-primary); border-radius: 8px; }
.gp-ui .swal2-styled.swal2-confirm { border: 1px solid var(--gp-primary) !important; }
.gp-ui .btn.gp-icon-only:hover, .gp-ui .btn.gp-icon-only:focus-visible { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .btn.gp-icon-only.gp-icon-danger:hover, .gp-ui .btn.gp-icon-only.gp-icon-danger:focus-visible { background: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui .gp-page-actions { justify-content: flex-start !important; gap: 16px; }
.gp-ui .gp-page-actions > .gp-action-back { order: -1; margin-left: 0 !important; }
.gp-ui .gp-row-actions { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px; }
.gp-ui td.gp-row-actions { display: table-cell; }
.gp-ui .gp-row-actions > .btn { margin: 0 !important; order: 40; }
.gp-ui .gp-row-actions > .gp-row-edit { order: 10; }
.gp-ui .gp-row-actions > .gp-row-view { order: 20; }
.gp-ui .gp-row-actions > .gp-row-calendar { order: 30; }
.gp-ui .gp-row-actions > .gp-row-copy { order: 50; }
.gp-ui .gp-row-actions > .gp-row-delete { order: 90; }
.gp-ui .btn { transition: background-color .15s, border-color .15s, color .15s; }
.gp-ui .was-validated .form-control:invalid, .gp-ui .form-control.is-invalid {
    border-color: var(--gp-danger) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23B42318' stroke-width='2' d='m3 3 6 6m0-6-6 6'/%3E%3C/svg%3E");
}
.gp-ui .was-validated .form-control:valid, .gp-ui .form-control.is-valid {
    border-color: var(--gp-success) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23246B45' stroke-width='2' d='m2 6 3 3 5-6'/%3E%3C/svg%3E");
}
.gp-ui .custom-select:not([multiple]) {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 5'%3E%3Cpath fill='%2352635A' d='M0 0h8L4 5z'/%3E%3C/svg%3E");
}
.gp-ui [type="checkbox"].filled-in:not(:checked) + label::after { border-color: var(--gp-control-border); }
.gp-ui [type="checkbox"].filled-in:checked + label::after { border-color: var(--gp-primary) !important; background-color: var(--gp-primary) !important; }
.gp-ui [type="checkbox"].filled-in:checked + label::before { border-color: transparent var(--gp-on-primary) var(--gp-on-primary) transparent !important; }
.gp-ui [type="radio"] + label::before { border-color: var(--gp-control-border); }
.gp-ui [type="radio"]:checked + label::after { border-color: var(--gp-primary); background: var(--gp-primary); }
.gp-ui input[type="file"]::file-selector-button { min-height: 44px; padding: 10px 16px; border: 1px solid var(--gp-primary); border-radius: 8px; background: var(--gp-surface); color: var(--gp-primary); font: inherit; cursor: pointer; }
.gp-ui input[type="file"]::file-selector-button:hover { background: var(--gp-selection); }
.gp-ui .btn, .gp-ui .btn:hover { box-shadow: none !important; }
.gp-ui .btn:focus-visible { box-shadow: 0 0 0 2px var(--gp-surface) !important; }
.gp-ui #divProfile::before { background: var(--gp-selection); }
.gp-ui .sidebar-nav .has-arrow::after { border-color: var(--gp-muted); }
.gp-ui table.dataTable thead .sorting::before, .gp-ui table.dataTable thead .sorting::after,
.gp-ui table.dataTable thead .sorting_asc::before, .gp-ui table.dataTable thead .sorting_asc::after,
.gp-ui table.dataTable thead .sorting_desc::before, .gp-ui table.dataTable thead .sorting_desc::after { color: var(--gp-muted); outline-color: var(--gp-muted); }
.gp-ui #botonAddFoto { box-shadow: var(--gp-shadow); }
.gp-ui .btn .test, .gp-ui .btn .test2 { color: inherit !important; }
.gp-ui .tooltip-inner { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .bs-tooltip-top .arrow::before, .gp-ui .bs-tooltip-auto[x-placement^="top"] .arrow::before { border-top-color: var(--gp-primary); }
.gp-ui .bs-tooltip-bottom .arrow::before, .gp-ui .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { border-bottom-color: var(--gp-primary); }
.gp-ui .bs-tooltip-left .arrow::before, .gp-ui .bs-tooltip-auto[x-placement^="left"] .arrow::before { border-left-color: var(--gp-primary); }
.gp-ui .bs-tooltip-right .arrow::before, .gp-ui .bs-tooltip-auto[x-placement^="right"] .arrow::before { border-right-color: var(--gp-primary); }

/* Selectores: una flecha pequeña y el mismo eje para el valor y las opciones. */
.gp-ui select.custom-select:not([multiple]):not([size]), .gp-ui select.form-control:not([multiple]):not([size]),
.gp-ui select.custom-select[size="1"]:not([multiple]), .gp-ui select.form-control[size="1"]:not([multiple]) {
    appearance: none; -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 5'%3E%3Cpath fill='%2352635A' d='M0 0h8L4 5z'/%3E%3C/svg%3E");
    background-repeat: no-repeat !important; background-size: 10px 6px !important; background-position: right 14px center !important;
    padding-left: 16px !important; padding-right: 34px !important;
}
.gp-ui select option, .gp-ui select optgroup { text-align: left; text-align-last: left; }
.gp-ui select[multiple], .gp-ui select[size]:not([size="1"]) { background-image: none !important; }

/* Las barras de acciones conservan una fila; el exceso se recorre horizontalmente. */
.gp-ui .btn-group, .gp-ui .gp-actions, .gp-ui .gp-row-actions, .gp-ui .dt-buttons,
.gp-ui .modal-footer, .gp-ui .swal2-actions, .gp-ui .pagination, .gp-ui .fc-button-group,
.gp-ui .ca-acciones, .gp-ui .familia-acciones, .gp-ui .gestion-alumno-acciones {
    display: flex; align-items: stretch;
    flex-direction: row !important; flex-wrap: nowrap !important; max-width: 100%; min-width: 0; overflow-x: auto; overflow-y: hidden;
    -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
}
.gp-ui .gp-actions, .gp-ui .modal-footer, .gp-ui .swal2-actions { justify-content: safe flex-end; }
.gp-ui .gp-actions.gp-actions-start { justify-content: flex-start; }
.gp-ui .gp-row-actions, .gp-ui .dt-buttons, .gp-ui .pagination { justify-content: safe center; }
.gp-ui .btn-group > .btn, .gp-ui .gp-actions > .btn, .gp-ui .gp-row-actions > .btn,
.gp-ui .dt-buttons > .btn, .gp-ui .modal-footer > .btn, .gp-ui .swal2-actions > button,
.gp-ui .ca-acciones > *, .gp-ui .familia-acciones > *, .gp-ui .gestion-alumno-acciones > .btn { flex: 0 0 auto !important; max-width: none; white-space: nowrap; }
.gp-ui .btn-group .btn:focus-visible, .gp-ui .gp-actions .btn:focus-visible, .gp-ui .gp-row-actions .btn:focus-visible { outline-offset: -4px; box-shadow: inset 0 0 0 2px var(--gp-surface) !important; }
.gp-ui .cursos-pagina #vistaTabla .cursos-acciones { width: max-content; min-width: max-content; max-width: none; flex-wrap: nowrap; overflow: visible; }
.gp-ui table.table .dtr-data { min-width: 0; max-width: 100%; overflow-x: auto; }
.gp-ui .wizard-content .wizard > .actions > ul { flex-wrap: nowrap; max-width: 100%; overflow-x: auto; }

/* El estado negativo es rojo; no se confunde con una opción sin seleccionar. */
.gp-ui .public-state-toggle, .gp-ui .btn-group.gp-binary-choice { display: inline-flex; align-items: stretch; flex-wrap: nowrap; gap: 0; padding: 0; border: 1px solid var(--gp-border); border-radius: 999px; background: var(--gp-surface); white-space: nowrap; vertical-align: middle; }
.gp-ui .public-state-toggle button, .gp-ui .btn-group.gp-binary-choice > .btn { display: inline-flex; align-items: center; justify-content: center; min-width: 30px; min-height: 30px !important; margin: 0; padding: 2px 4px !important; border: 0; border-radius: 8px !important; font-size: 12px !important; font-weight: 600; line-height: 1.2 !important; text-align: center; }
.gp-ui .btn-group.gp-binary-choice > .btn:not(.gp-choice-selected) { background: var(--gp-surface) !important; color: var(--gp-primary) !important; }
.gp-ui .public-state-toggle button:focus-visible, .gp-ui .btn-group.gp-binary-choice > .btn:focus-visible { outline: 2px solid var(--gp-focus); outline-offset: -3px; }
.gp-ui .gp-toggle-original { display: none !important; }
.gp-ui .public-state-toggle button { min-height: 30px !important; border-radius: 8px; color: var(--gp-primary); }
.gp-ui .public-state-toggle button:not(.is-active-yes):not(.is-active-no) { background: var(--gp-surface); color: var(--gp-primary); }
.gp-ui .public-state-toggle .is-active-yes { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui .public-state-toggle .is-active-no { background: var(--gp-danger); border-color: var(--gp-danger); color: var(--gp-on-primary); }
.gp-ui .toggle.off { background: var(--gp-danger) !important; border-color: var(--gp-danger) !important; }
.gp-ui .toggle.off .toggle-off { color: var(--gp-on-primary) !important; }

/* Los componentes que inyectan sus propios estilos comparten también la paleta. */
.gp-ui .preloader { background-color: var(--gp-surface); }
.gp-ui .preloader .path { stroke: var(--gp-primary) !important; animation: dash 1.5s ease-in-out infinite !important; }
.gp-ui .cssload-speeding-wheel { border-color: var(--gp-primary) transparent var(--gp-primary) transparent !important; }
.gp-ui input::placeholder, .gp-ui textarea::placeholder { color: var(--gp-muted) !important; opacity: 1; }

/* FullCalendar de Dashboard: tabla clara y colores de estado en los indicadores. */
.gp-ui .fc {
    --fc-page-bg-color: var(--gp-surface); --fc-border-color: var(--gp-border);
    --fc-neutral-bg-color: var(--gp-selection); --fc-neutral-text-color: var(--gp-muted);
    --fc-button-text-color: var(--gp-primary); --fc-button-bg-color: var(--gp-surface); --fc-button-border-color: var(--gp-primary);
    --fc-button-hover-bg-color: var(--gp-selection); --fc-button-hover-border-color: var(--gp-primary);
    --fc-button-active-bg-color: var(--gp-selection); --fc-button-active-border-color: var(--gp-primary);
    --fc-event-bg-color: var(--gp-primary); --fc-event-border-color: var(--gp-primary); --fc-event-text-color: var(--gp-on-primary);
    --fc-list-event-hover-bg-color: var(--gp-selection); --fc-today-bg-color: var(--gp-selection);
    --fc-highlight-color: var(--gp-selection); --fc-non-business-color: var(--gp-page);
    --fc-more-link-bg-color: var(--gp-selection); --fc-more-link-text-color: var(--gp-primary);
    --fc-now-indicator-color: var(--gp-danger); --fc-event-selected-overlay-color: transparent;
}
.gp-ui .fc .fc-list-event { background: var(--gp-surface) !important; color: var(--gp-text) !important; }
.gp-ui .fc .fc-list-event:hover > td { background: var(--gp-selection) !important; }
.gp-ui .fc .fc-list-event a { color: var(--gp-primary); }
.gp-ui .fc .fc-daygrid-dot-event { background: var(--gp-surface) !important; color: var(--gp-text) !important; }
.gp-ui .fc .fc-daygrid-dot-event:hover, .gp-ui .fc .fc-daygrid-dot-event:focus { background: var(--gp-selection) !important; }
.gp-ui .fc .fc-button:focus, .gp-ui .fc .fc-button:focus-visible { box-shadow: none !important; outline: 3px solid var(--gp-focus); outline-offset: -3px; }
.gp-ui .fc .fc-event:focus::after { background: transparent !important; }
/* La hora de los eventos conserva su ancho y el título puede ocupar varias líneas. */
.gp-ui .fc .fc-daygrid-event { white-space: normal; }
.gp-ui .fc .fc-daygrid-block-event .fc-event-main-frame, .gp-ui .fc .fc-daygrid-dot-event { flex-wrap: wrap; align-items: flex-start; }
.gp-ui .fc .fc-daygrid-event .fc-event-time { flex: 0 0 auto; max-width: 100%; white-space: nowrap; overflow: visible; }
.gp-ui .fc .fc-daygrid-event .fc-event-title-container, .gp-ui .fc .fc-daygrid-dot-event .fc-event-title { flex: 1 1 6em; min-width: 0; }
.gp-ui .fc .fc-daygrid-event .fc-event-title { white-space: normal; overflow: visible; overflow-wrap: anywhere; }
.gp-ui .fc .fc-more-link:hover, .gp-ui .fc .fc-more-link:focus { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui .fc .fc-popover { color: var(--gp-text); background: var(--gp-surface); border-color: var(--gp-border); box-shadow: var(--gp-shadow); max-width: calc(100vw - 32px); }
.gp-ui .fc .fc-popover-header { color: var(--gp-on-calendar-header); background: var(--gp-calendar-header); }
.gp-ui .fc .fc-popover-close { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; border-radius: 8px; color: var(--gp-on-calendar-header); opacity: 1; }
.gp-ui .fc .fc-popover-body { max-height: 60vh; overflow: auto; }

/* Selector de rangos del escritorio y calendario de la vista de campo. */
.gp-ui .daterangepicker { background: var(--gp-surface); border-color: var(--gp-border); color: var(--gp-text); box-shadow: var(--gp-shadow); }
.gp-ui .daterangepicker::before { border-bottom-color: var(--gp-border); }
.gp-ui .daterangepicker::after { border-bottom-color: var(--gp-surface); }
.gp-ui .daterangepicker .calendar-table { background: var(--gp-surface); border-color: var(--gp-border); }
.gp-ui .daterangepicker .calendar-table th, .gp-ui .daterangepicker .calendar-table td { color: var(--gp-text); border-color: transparent; }
.gp-ui .daterangepicker .ranges li { color: var(--gp-primary); background: var(--gp-surface); }
.gp-ui .daterangepicker .ranges li.active, .gp-ui .daterangepicker .ranges li:hover,
.gp-ui .daterangepicker td.in-range, .gp-ui .daterangepicker td.available:hover, .gp-ui .daterangepicker th.available:hover,
.gp-ui .daterangepicker td.active, .gp-ui .daterangepicker td.active:hover { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .daterangepicker td.off, .gp-ui .daterangepicker td.disabled { color: var(--gp-muted); background: var(--gp-surface); }
.gp-ui .daterangepicker .calendar-table .next span, .gp-ui .daterangepicker .calendar-table .prev span { border-color: var(--gp-primary); }
.gp-ui .daterangepicker .drp-buttons, .gp-ui .daterangepicker.show-ranges .drp-calendar.left { border-color: var(--gp-border); }
.gp-ui .daterangepicker select { border: 1px solid var(--gp-control-border); background: var(--gp-surface); color: var(--gp-text); }
.gp-ui .datepicker-dropdown::before { border-bottom-color: var(--gp-border); border-top-color: var(--gp-border); }
.gp-ui .datepicker table tr td.old, .gp-ui .datepicker table tr td.new, .gp-ui .datepicker table tr td.disabled,
.gp-ui .datepicker table tr td span.old, .gp-ui .datepicker table tr td span.new, .gp-ui .datepicker table tr td span.disabled { color: var(--gp-muted); }
.gp-ui .datepicker table tr td.day:hover, .gp-ui .datepicker table tr td span:hover,
.gp-ui .datepicker table tr th.prev:hover, .gp-ui .datepicker table tr th.next:hover, .gp-ui .datepicker table tr th.datepicker-switch:hover,
.gp-ui .datepicker table tr td.today, .gp-ui .datepicker table tr td.today:hover { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }

/* La cabecera se distingue del cuerpo blanco y de la selección clara del calendario. */
.gp-ui .fc .fc-col-header-cell, .gp-ui .fc .fc-day-header,
.gp-ui .fc .fc-list-day-cushion, .gp-ui .fc .fc-list-heading td,
.gp-ui .fc .fc-popover .fc-header,
.gp-ui .datepicker thead th, .gp-ui .daterangepicker .calendar-table thead th,
.gp-ui .bootstrap-datetimepicker-widget thead th {
    background: var(--gp-calendar-header) !important;
    color: var(--gp-on-calendar-header) !important;
}
.gp-ui .fc .fc-col-header-cell a, .gp-ui .fc .fc-day-header a,
.gp-ui .fc .fc-list-day-cushion a, .gp-ui .fc .fc-list-heading a,
.gp-ui .fc .fc-popover-header a, .gp-ui .fc .fc-popover .fc-header .fc-close {
    color: var(--gp-on-calendar-header) !important;
}
.gp-ui .datepicker thead th.prev:hover, .gp-ui .datepicker thead th.next:hover,
.gp-ui .datepicker thead th.datepicker-switch:hover,
.gp-ui .daterangepicker .calendar-table thead th.available:hover,
.gp-ui .bootstrap-datetimepicker-widget thead th.picker-switch:hover,
.gp-ui .bootstrap-datetimepicker-widget thead th.prev:hover,
.gp-ui .bootstrap-datetimepicker-widget thead th.next:hover {
    background: var(--gp-primary-hover) !important;
    color: var(--gp-on-calendar-header) !important;
}
.gp-ui .daterangepicker .calendar-table thead .next span,
.gp-ui .daterangepicker .calendar-table thead .prev span { border-color: var(--gp-on-calendar-header); }
.gp-ui .daterangepicker .calendar-table thead tr:last-child th,
.gp-ui .datepicker thead th.dow { border-radius: 0; }
.gp-ui .fc .fc-col-header-cell a:focus-visible, .gp-ui .fc .fc-list-day-cushion a:focus-visible,
.gp-ui .fc .fc-popover-close:focus-visible, .gp-ui .datepicker thead th:focus-visible,
.gp-ui .daterangepicker .calendar-table thead th:focus-visible {
    outline-color: var(--gp-on-calendar-header) !important;
    outline-offset: -3px;
    box-shadow: none !important;
}

/* Mensajes reales, incluidos los estados activo/foco y la carga del diálogo. */
.gp-ui .swal2-popup, .gp-ui .swal2-popup .swal2-content, .gp-ui .swal2-popup .swal2-html-container { background-color: var(--gp-surface); color: var(--gp-text) !important; }
.gp-ui .swal2-popup .swal2-title { color: var(--gp-text) !important; }
.gp-ui .swal2-popup .swal2-styled.swal2-confirm { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui .swal2-popup .swal2-styled.swal2-confirm:hover, .gp-ui .swal2-popup .swal2-styled.swal2-confirm:active { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; }
.gp-ui .swal2-popup .swal2-styled.swal2-confirm:focus { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui .swal2-popup .swal2-styled.swal2-cancel { background: var(--gp-surface) !important; color: var(--gp-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui .swal2-popup .swal2-styled.swal2-cancel:hover, .gp-ui .swal2-popup .swal2-styled.swal2-cancel:active { background: var(--gp-selection) !important; }
.gp-ui .swal2-popup .swal2-styled.swal2-cancel:focus { background: var(--gp-surface) !important; }
.gp-ui .swal2-container.swal2-backdrop-show, .gp-ui .swal2-container.swal2-shown { background: rgba(36, 81, 72, .24) !important; }
.gp-ui .modal-backdrop { background-color: var(--gp-primary-hover); }
.gp-ui .swal2-popup .swal2-close { color: var(--gp-primary); }
.gp-ui .swal2-popup .swal2-close:hover { color: var(--gp-danger); }
.gp-ui .swal2-popup .swal2-loading .swal2-styled.swal2-confirm { background: transparent !important; border-color: var(--gp-primary) transparent var(--gp-primary) transparent !important; }
.gp-ui .jq-toast-single { box-shadow: var(--gp-shadow); }

/* Las variantes de interruptores siempre afirman en verde y niegan en rojo. */
.gp-ui .bootstrap-switch .bootstrap-switch-handle-on { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .bootstrap-switch .bootstrap-switch-handle-off { background: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui .bootstrap-switch .bootstrap-switch-label { background: var(--gp-surface); color: var(--gp-text); }
.gp-ui .toggle.off .toggle-off { background: transparent !important; }
.gp-ui .select2-container--default .select2-selection__choice__remove { color: var(--gp-muted); }
.gp-ui .select2-container--default .select2-selection__choice__remove:hover { color: var(--gp-primary); }
.gp-ui .select2-container--default .select2-selection__placeholder, .gp-ui .select2-container--default .select2-results__option[aria-disabled="true"] { color: var(--gp-muted); }

/* Estados semánticos heredados de tablas, etiquetas y datos comparativos. */
.gp-ui .mejorMedia { color: var(--gp-success); }
.gp-ui .peorMedia { color: var(--gp-danger); }
.gp-ui .igualMedia { color: var(--gp-muted); }
.gp-ui .text-blue, .gp-ui .text-purple, .gp-ui .text-green { color: var(--gp-primary) !important; }
.gp-ui .text-red { color: var(--gp-danger) !important; }
.gp-ui .text-inverse { color: var(--gp-text) !important; }
.gp-ui .bg-blue, .gp-ui .bg-purple, .gp-ui .bg-green, .gp-ui .bg-inverse,
.gp-ui .badge-light, .gp-ui .badge-purple, .gp-ui .badge-blue, .gp-ui .badge-green, .gp-ui .badge-inverse,
.gp-ui .alert-primary, .gp-ui .alert-secondary, .gp-ui .alert-light, .gp-ui .alert-dark { background: var(--gp-selection) !important; color: var(--gp-primary) !important; border-color: var(--gp-border); }
.gp-ui .bg-red, .gp-ui .badge-red { background: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; border-color: var(--gp-danger); }
.gp-ui [class*="bg-"] .text-white { color: inherit !important; }
.gp-ui .table-primary, .gp-ui .table-primary > td, .gp-ui .table-primary > th,
.gp-ui .table-secondary, .gp-ui .table-secondary > td, .gp-ui .table-secondary > th,
.gp-ui .table-info, .gp-ui .table-info > td, .gp-ui .table-info > th,
.gp-ui .table-light, .gp-ui .table-light > td, .gp-ui .table-light > th,
.gp-ui .table-dark, .gp-ui .table-dark > td, .gp-ui .table-dark > th { background: var(--gp-selection) !important; color: var(--gp-primary); border-color: var(--gp-border) !important; }
.gp-ui .table-success, .gp-ui .table-success > td, .gp-ui .table-success > th { background: var(--gp-success-soft) !important; color: var(--gp-success); border-color: var(--gp-success) !important; }
.gp-ui .table-warning, .gp-ui .table-warning > td, .gp-ui .table-warning > th { background: var(--gp-warning-soft) !important; color: var(--gp-warning); border-color: var(--gp-warning) !important; }
.gp-ui .table-danger, .gp-ui .table-danger > td, .gp-ui .table-danger > th { background: var(--gp-danger-soft) !important; color: var(--gp-danger); border-color: var(--gp-danger) !important; }
.gp-ui .bg-primary, .gp-ui .bg-info { border-color: var(--gp-primary) !important; }
.gp-ui .bg-success { border-color: var(--gp-success) !important; }
.gp-ui .bg-warning { border-color: var(--gp-warning) !important; }
.gp-ui .bg-danger { border-color: var(--gp-danger) !important; }
.gp-ui .text-light { color: var(--gp-on-primary) !important; }
.gp-ui .table-hover tbody tr:hover { color: var(--gp-text); }
.gp-ui .fc .fc-prev-button, .gp-ui .fc .fc-next-button, .gp-ui .fc .fc-prevYear-button, .gp-ui .fc .fc-nextYear-button { display: inline-flex; align-items: center; justify-content: center; width: 44px; min-width: 44px; height: 44px; padding: 0 !important; }
.gp-ui .fc .fc-button-group { gap: 8px; }
.gp-ui .fc .fc-button-group > .fc-button { margin-left: 0; }
.gp-ui .daterangepicker .calendar { border-color: var(--gp-border) !important; }
.gp-ui .daterangepicker .applyBtn { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui .daterangepicker .applyBtn:hover, .gp-ui .daterangepicker .applyBtn:active { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; }
.gp-ui .daterangepicker .cancelBtn { background: var(--gp-surface) !important; color: var(--gp-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui .daterangepicker .cancelBtn:hover, .gp-ui .daterangepicker .cancelBtn:active { background: var(--gp-selection) !important; }
.gp-ui ::selection { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui .bootstrap-switch.bootstrap-switch-focused { border-color: var(--gp-focus) !important; box-shadow: 0 0 0 3px var(--gp-selection) !important; }

/* Usuarios, profesores y familias: misma composición de listados y fichas. */
.gp-ui.gp-people .barraTitulo { justify-content: flex-start !important; text-align: left; gap: 16px; overflow-wrap: anywhere; }
.gp-ui.gp-people .barraTitulo > b, .gp-ui.gp-people .barraTitulo > span { min-width: 0; font-weight: 500; }
.gp-ui.gp-people .page-wrapper > .container-fluid > .row > .col-12 { padding-left: 12px !important; padding-right: 12px !important; }
.gp-ui.gp-people .card-body { padding: 24px !important; }
.gp-ui.gp-people .profile-tab { flex-wrap: nowrap; justify-content: flex-start !important; padding-left: 12px; padding-right: 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.gp-ui.gp-people .profile-tab > .nav-item { flex: 0 0 auto; }
.gp-ui.gp-people .profile-tab .nav-link { display: flex; align-items: center; justify-content: center; min-height: 48px; white-space: nowrap; }
.gp-ui.gp-people .table-responsive { width: 100%; }
.gp-ui.gp-people table.dataTable td, .gp-ui.gp-people table.dataTable th { vertical-align: middle; text-align: center; }
.gp-ui.gp-people table.dataTable .btn-group { width: max-content; max-width: none; overflow: visible; }
.gp-ui.gp-people table.dataTable .dtr-details { width: 100%; }
.gp-ui.gp-people .gp-actions > .btn { margin: 0 !important; }
.gp-ui.gp-people #accionesSeleccion { justify-content: flex-start; }
.gp-ui.gp-people .gp-bulk-actions { margin-top: 16px; padding-top: 20px; border-top: 1px solid var(--gp-border); gap: 20px; }
.gp-ui.gp-people .gp-bulk-group { display: flex; align-items: center; flex: 0 0 auto; gap: 8px; }
.gp-ui.gp-people .gp-bulk-group > .btn { flex: 0 0 auto; margin: 0 !important; white-space: nowrap; }
.gp-ui.gp-people .gp-bulk-operations { padding-left: 20px; border-left: 1px solid var(--gp-border); }
.gp-ui.gp-people #numeroSeleccionados { flex: 0 0 auto; white-space: nowrap; color: var(--gp-muted); }
.gp-ui.gp-people .check-seleccion-estudiante { accent-color: var(--gp-primary); }
.gp-ui.gp-people .form-group, .gp-ui.gp-people .flex-fill { min-width: 0; }
.gp-ui.gp-people .perfil-socio { border-color: var(--gp-border); background: var(--gp-surface); text-align: center; }
.gp-ui.gp-people .perfil-socio-estado { color: var(--gp-muted); background: var(--gp-selection); }
.gp-ui.gp-people .perfil-socio-estado.es-socio { color: var(--gp-success); background: var(--gp-success-soft); }
.gp-ui.gp-people .cardHijo:hover { color: var(--gp-primary); background: var(--gp-selection); }
.gp-ui.gp-people .gp-birthdate { margin: 0 0 20px; }
.gp-ui.gp-people .gp-birthdate-fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1.3fr); gap: 8px; }
.gp-ui.gp-people .gp-birthdate-fields > div { min-width: 0; padding: 0 !important; }
.gp-ui.gp-people .gp-birthdate-fields .form-group { margin-bottom: 0; }
.gp-ui.gp-people #formEstudiante textarea { width: 100%; }
.gp-ui.gp-people #formEstudiante .row > .form-group { width: 100%; }
.gp-ui.gp-people .horario-modos, .gp-ui.gp-people .horario-dias { flex-wrap: nowrap; overflow-x: auto; padding: 4px; }
.gp-ui.gp-people .horario-modo { flex: 0 0 min(320px, 85%); }
.gp-ui.gp-people .horario-dia { flex: 0 0 auto; }
.gp-ui.gp-people .horario-modo[aria-pressed="true"], .gp-ui.gp-people .horario-modo.manual[aria-pressed="true"] { color: var(--gp-primary); background: var(--gp-selection); border-color: var(--gp-primary); }
.gp-ui.gp-people .horario-panel-comun, .gp-ui.gp-people .horario-panel-manual { background: var(--gp-page); border-color: var(--gp-primary); }
.gp-ui.gp-people .tablesaw-cell-content { color: var(--gp-text); }
.gp-ui.gp-people .horario-tabla-pie .pagination { flex-wrap: nowrap !important; }
.gp-ui.gp-people #numeroSeleccionados { order: 3; }
.gp-ui.gp-people .table-bordered { border: 1px solid var(--gp-border) !important; }
.gp-ui .btn-primary:not(:disabled):not(.disabled):active, .gp-ui .btn-info:not(:disabled):not(.disabled):active { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-people a.text-info:hover, .gp-ui.gp-people a.text-info:focus { color: var(--gp-primary-hover) !important; }
.gp-ui .was-validated .custom-select:valid, .gp-ui .was-validated .form-control:valid { border-color: var(--gp-success) !important; }
.gp-ui .was-validated .custom-select:invalid, .gp-ui .was-validated .form-control:invalid { border-color: var(--gp-danger) !important; }
.gp-ui .ck {
    --ck-color-base-background: var(--gp-surface); --ck-color-base-foreground: var(--gp-surface);
    --ck-color-base-border: var(--gp-control-border); --ck-color-text: var(--gp-text);
    --ck-color-focus-border: var(--gp-primary); --ck-color-button-default-hover-background: var(--gp-selection);
    --ck-color-button-default-active-background: var(--gp-selection); --ck-color-button-on-background: var(--gp-selection);
    --ck-color-button-on-hover-background: var(--gp-selection); --ck-color-button-on-active-background: var(--gp-selection);
    --ck-color-button-action-background: var(--gp-primary); --ck-color-button-action-hover-background: var(--gp-primary-hover);
    --ck-color-button-action-active-background: var(--gp-primary-hover); --ck-color-button-action-text: var(--gp-on-primary);
    --ck-color-tooltip-background: var(--gp-primary-hover); --ck-color-tooltip-text: var(--gp-on-primary);
}
.gp-ui .ck.ck-reset_all, .gp-ui .ck.ck-reset_all * { color: var(--gp-text); }
.gp-ui .ck-content { color: var(--gp-text) !important; }
.gp-ui .ck.ck-editor__editable:not(.ck-editor__nested-editable) { border-color: var(--gp-control-border); }
.gp-ui .ck.ck-button:hover, .gp-ui .ck.ck-button:active { background: var(--gp-selection); }
.gp-ui .ck.ck-button:focus, .gp-ui .ck.ck-editor__editable.ck-focused { border-color: var(--gp-primary) !important; box-shadow: 0 0 0 3px var(--gp-selection) !important; outline: 0; }
.gp-ui .ck .ck-tooltip__text { background: var(--gp-primary-hover); color: var(--gp-on-primary); }
.gp-ui .ck .ck-tooltip__text::after { border-bottom-color: var(--gp-primary-hover); }
.gp-ui .ck.ck-toolbar .ck-toolbar__separator { background: var(--gp-border); }
.gp-ui .ck.ck-toolbar__separator { background: var(--gp-border) !important; }
.gp-ui .ck.ck-dropdown__panel { border-color: var(--gp-control-border); background: var(--gp-surface); box-shadow: var(--gp-shadow); }
.gp-ui .ck.ck-splitbutton .ck-button { background: var(--gp-surface) !important; border-color: var(--gp-control-border) !important; }
.gp-ui .ck.ck-splitbutton .ck-button:hover, .gp-ui .ck.ck-splitbutton .ck-button:active, .gp-ui .ck.ck-splitbutton .ck-button.ck-on { background: var(--gp-selection) !important; }
.gp-ui .ck.ck-button:active { border-color: var(--gp-primary) !important; box-shadow: 0 0 0 3px var(--gp-selection) !important; }
.gp-ui .ck.ck-button .ck-icon [fill]:not([fill="none"]) { fill: currentColor !important; }
.gp-ui .ck.ck-button .ck-icon .ck-icon__fill { fill: currentColor !important; }
.gp-ui .marker-yellow { background-color: var(--gp-warning-soft); }
.gp-ui .marker-green { background-color: var(--gp-success-soft); }
.gp-ui .marker-pink { background-color: var(--gp-danger-soft); }
.gp-ui .marker-blue { background-color: var(--gp-selection); }
.gp-ui .pen-red { color: var(--gp-danger); background-color: transparent; }
.gp-ui .pen-green { color: var(--gp-success); background-color: transparent; }
.gp-ui.gp-people .breadcrumb-item.active, .gp-ui.gp-people .breadcrumb-item::before { color: var(--gp-muted); }
.gp-ui.gp-people .social-profile { background: rgba(36, 81, 72, .8); }
.gp-ui.gp-people .btn-danger:not(:disabled):not(.disabled):active { background: var(--gp-danger) !important; border-color: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-people .breadcrumb-item::before { color: var(--gp-muted) !important; }
@media (max-width: 767.98px) {
    .gp-ui.gp-people .card-body { padding: 16px !important; }
    .gp-ui.gp-people .page-wrapper > .container-fluid { padding: 16px !important; }
    .gp-ui.gp-people .gp-birthdate-fields { gap: 6px; }
    .gp-ui.gp-people .gp-birthdate-fields input { padding-left: 8px !important; padding-right: 8px !important; }
}
@media (max-width: 575.98px) {
    .gp-ui.gp-people .gp-birthdate-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gp-ui.gp-people .gp-birthdate-fields > div:nth-child(2) { grid-column: 1 / -1; grid-row: 2; }
}

/* Agenda, clases y reservas: calendario y disponibilidad con el mismo criterio. */
.gp-ui.gp-bookings .calendario-leyenda-horario { background: var(--gp-warning); }
.gp-ui.gp-bookings .calendario-leyenda-reserva { background: var(--gp-success); }
.gp-ui.gp-bookings .calendario-curso { border-left: 4px solid var(--gp-warning); background: var(--gp-page); }
.gp-ui.gp-bookings .miDash > .container-fluid { padding: 24px !important; }
.gp-ui.gp-bookings .barraTitulo { justify-content: flex-start !important; gap: 16px; text-align: left; overflow-wrap: anywhere; }
.gp-ui.gp-bookings .barraTitulo > span { min-width: 0; }
.gp-ui.gp-bookings .gp-context-title { margin-bottom: 20px; color: var(--gp-muted); text-align: center; font-size: 16px; }
.gp-ui.gp-bookings .card-body { padding: 24px !important; }
.gp-ui.gp-bookings .form-group, .gp-ui.gp-bookings .flex-fill { min-width: 0; }
.gp-ui.gp-bookings .fc .fc-toolbar { align-items: center; gap: 12px; }
.gp-ui.gp-bookings .fc .fc-toolbar-chunk { min-width: 0; max-width: 100%; overflow-x: auto; white-space: nowrap; padding: 3px; }
.gp-ui.gp-bookings .fc .fc-toolbar-title { white-space: normal; text-align: center; }
.gp-ui.gp-bookings .fc .fc-button-primary { background: var(--gp-surface) !important; border-color: var(--gp-primary) !important; color: var(--gp-primary) !important; }
.gp-ui.gp-bookings .fc .fc-button-primary:hover, .gp-ui.gp-bookings .fc .fc-button-primary.fc-button-active { background: var(--gp-selection) !important; }
.gp-ui.gp-bookings .fc .fc-button-primary:disabled { background: var(--gp-page) !important; border-color: var(--gp-control-border) !important; color: var(--gp-muted) !important; opacity: 1; }
.gp-ui.gp-bookings .dias-tipo-group, .gp-ui.gp-bookings .gp-booking-actions { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; max-width: 100%; overflow-x: auto; padding: 4px; }
.gp-ui.gp-bookings .dias-tipo-group .btn, .gp-ui.gp-bookings .gp-booking-actions > .btn { flex: 0 0 auto; margin: 0 !important; }
.gp-ui.gp-bookings .dias-tipo-group .dia-tipo-icon { text-align: center; }
.gp-ui.gp-bookings .gp-agenda-actions { margin-bottom: 4px; }
.gp-ui.gp-bookings .gp-agenda-filters { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; align-items: center; }
.gp-ui.gp-bookings .gp-agenda-filters > div { min-width: 0; padding: 4px !important; }
.gp-ui.gp-bookings .gp-agenda-filters label { min-height: 44px; display: inline-flex; align-items: center; white-space: normal; }
.gp-ui.gp-bookings .gp-agenda-filters [type="checkbox"].filled-in + label::after { top: calc(50% - 10px) !important; }
.gp-ui.gp-bookings .gp-agenda-filters [type="checkbox"].filled-in:checked + label::before { top: calc(50% - 10px) !important; }
.gp-ui.gp-bookings .gp-agenda-filters [type="checkbox"].filled-in:focus-visible + label::after { outline: 3px solid var(--gp-focus); outline-offset: 3px; }
.gp-ui.gp-bookings [type="checkbox"]:not(.filled-in):checked + label::before { border-right-color: var(--gp-primary) !important; border-bottom-color: var(--gp-primary) !important; }
.gp-ui.gp-bookings [type="checkbox"].filled-in:checked + label::before { border-right-color: var(--gp-surface) !important; border-bottom-color: var(--gp-surface) !important; }
.gp-ui.gp-bookings [type="checkbox"].filled-in:checked.chk-col-orange + label::after { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui.gp-bookings [type="checkbox"]:disabled + label::after { background: var(--gp-selection) !important; border-color: var(--gp-control-border) !important; }
.gp-ui.gp-bookings .table-striped tbody tr:nth-of-type(odd) { background: var(--gp-surface); }
.gp-ui.gp-bookings .btn-primary:not(:disabled):not(.disabled):active { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-bookings .btn-danger:not(:disabled):not(.disabled):active { background: var(--gp-danger) !important; border-color: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui .select2-container--default .select2-selection--single .select2-selection__arrow b { border-color: var(--gp-muted) transparent transparent transparent; }
.gp-ui .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent var(--gp-muted) transparent; }
.gp-ui.gp-bookings .trainer-bio-toggle { min-height: 44px; border-radius: 8px; }
.gp-ui.gp-bookings .trainer-avatar-trigger:focus-visible, .gp-ui.gp-bookings .trainer-bio-toggle:focus-visible { outline: 3px solid var(--gp-focus); outline-offset: 3px; box-shadow: none; }
.gp-ui.gp-bookings .trainer-avatar-trigger { color: var(--gp-primary); }
.gp-ui.gp-bookings .trainer-field { overflow-wrap: anywhere; }
.gp-ui.gp-bookings .trainer-days { display: grid; grid-template-columns: repeat(auto-fit, minmax(44px, 1fr)); gap: 8px; border: 0; padding: 4px; }
.gp-ui.gp-bookings .trainer-day { flex: 0 0 44px; min-width: 44px; padding: 0; border: 1px solid var(--gp-border); border-radius: 8px; }
@media (max-width: 575px) { .gp-ui.gp-bookings .trainer-days { grid-template-columns: repeat(4, minmax(44px, 1fr)); } }
.gp-ui.gp-bookings .trainer-day--partial { color: var(--gp-warning); background: var(--gp-warning-soft); }
.gp-ui.gp-bookings .trainer-day--selected { color: var(--gp-primary); background: var(--gp-selection); box-shadow: inset 0 0 0 2px var(--gp-primary); }
.gp-ui.gp-bookings .carta { height: auto; min-height: 72px; overflow-wrap: anywhere; }
.gp-ui.gp-bookings #divListas .carta { padding: 16px; border: 1px solid var(--gp-border); }
.gp-ui.gp-bookings #divListas .btn[onclick^="Cancelar("] { background: var(--gp-danger-soft) !important; border-color: var(--gp-danger) !important; color: var(--gp-danger) !important; }
.gp-ui.gp-bookings #divListas .btn[onclick^="Cancelar("]:hover { background: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-bookings .reserva-panel { max-width: 100%; padding: 20px; border: 1px solid var(--gp-border); border-radius: 10px; }
.gp-ui.gp-bookings .reserva-profesor-titulo { color: var(--gp-on-primary); line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-bookings .reserva-slot { grid-template-columns: minmax(0, 150px) minmax(0, 1fr) auto; gap: 12px; padding: 16px 8px; }
.gp-ui.gp-bookings .reserva-slot-disponible { grid-template-areas: 'hora clase accion' 'hora tarifa accion'; }
.gp-ui.gp-bookings .reserva-slot-disponible .reserva-hora { grid-area: hora; }
.gp-ui.gp-bookings .reserva-slot-disponible .reserva-clase-contenedor { grid-area: clase; }
.gp-ui.gp-bookings .reserva-slot-disponible .reserva-tarifa-contenedor { grid-area: tarifa; width: 100%; min-width: 0; }
.gp-ui.gp-bookings .reserva-slot-disponible .reserva-tarifa-contenedor .curso-tarifa { margin: 0; }
.gp-ui.gp-bookings .reserva-slot-disponible .reserva-btn { grid-area: accion; }
.gp-ui.gp-bookings .reserva-hora { justify-content: center; min-height: 44px; border: 1px solid var(--gp-control-border); font-size: 14px; white-space: normal; text-align: center; }
.gp-ui.gp-bookings .reserva-clase { min-height: 44px; height: auto !important; border-width: 1px; border-radius: 8px; color: var(--gp-text); font-size: 14px; }
.gp-ui.gp-bookings .reserva-slot .select2-container .select2-selection--single { min-height: 44px; height: auto; border-width: 1px; border-radius: 8px; background: var(--gp-surface); }
.gp-ui.gp-bookings .reserva-slot .select2-container .select2-selection--single .select2-selection__rendered { min-height: 42px; padding: 10px 34px 10px 16px; line-height: 1.5; color: var(--gp-text); font-size: 14px; text-align: left; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-bookings .reserva-slot .select2-container .select2-selection--single .select2-selection__arrow { height: 42px; }
.gp-ui.gp-bookings .reserva-clase-dropdown .select2-results__option { text-align: left; }
.gp-ui.gp-bookings .reserva-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 16px; border-radius: 8px; font-size: 14px; line-height: 1.25; white-space: nowrap; }
.gp-ui.gp-bookings .reserva-btn-disponible { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui.gp-bookings .reserva-btn-ocupada, .gp-ui.gp-bookings .reserva-btn-propia { background: var(--gp-danger-soft); color: var(--gp-danger); }
.gp-ui.gp-bookings .cardHijo:hover { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui.gp-bookings .corner-btn { min-width: 44px; min-height: 44px; border-radius: 8px; }
.gp-ui.gp-bookings .nav-tabs { flex-wrap: nowrap; overflow-x: auto; }
.gp-ui.gp-bookings .nav-tabs .nav-item { flex: 0 0 auto; }
@media (max-width: 767.98px) {
    .gp-ui.gp-bookings .miDash > .container-fluid, .gp-ui.gp-bookings .page-wrapper > .container-fluid { padding: 16px !important; }
    .gp-ui.gp-bookings .card-body { padding: 16px !important; }
    .gp-ui.gp-bookings .fc .fc-toolbar { flex-direction: column; }
    .gp-ui.gp-bookings .reserva-slot { grid-template-columns: minmax(0, 1fr) auto; }
    .gp-ui.gp-bookings .reserva-slot .reserva-hora { grid-column: 1 / -1; width: 100%; }
    .gp-ui.gp-bookings .reserva-slot-disponible { grid-template-areas: 'hora hora' 'clase clase' 'tarifa accion'; }
    .gp-ui.gp-bookings .reserva-slot-disponible .reserva-hora { grid-area: hora; }
    .gp-ui.gp-bookings .reserva-btn { max-width: 100%; padding-left: 12px; padding-right: 12px; }
    .gp-ui.gp-bookings .reserva-panel { padding: 12px; }
}
@media (max-width: 575.98px) {
    .gp-ui.gp-bookings #modalPlantillas .row > .col-4 { flex: 0 0 100%; max-width: 100%; }
    .gp-ui.gp-bookings .gp-agenda-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 375px) {
    .gp-ui.gp-bookings .reserva-slot-disponible { grid-template-areas: 'hora hora' 'clase clase' 'tarifa tarifa' 'accion accion'; }
    .gp-ui.gp-bookings .reserva-slot-disponible .reserva-btn { width: 100%; }
}

/* Grupos y planificación: recursos de edición y campo con una sola interfaz. */
.gp-ui [data-gp-palette] { display: none !important; }
.gp-ui .gp-palette-control { width: 100%; min-width: 0; }
.gp-ui .gp-data-color, .gp-ui .btn.gp-data-color,
.gp-ui .btn.gp-data-color:hover, .gp-ui .btn.gp-data-color:active, .gp-ui .btn.gp-data-color:focus {
    background: var(--gp-data-color) !important; border-color: var(--gp-data-color) !important; color: var(--gp-data-text, var(--gp-on-primary)) !important;
}
.gp-ui .gp-data-color .card-title, .gp-ui .gp-data-color small, .gp-ui .gp-data-color > span:not(.badge):not(.label) { color: var(--gp-data-text, var(--gp-on-primary)) !important; }
.gp-ui.gp-workbench .barraTitulo { justify-content: flex-start !important; gap: 16px; text-align: left; overflow-wrap: anywhere; }
.gp-ui.gp-workbench .barraTitulo > .m-l-30 { margin-left: 0 !important; }
.gp-ui.gp-workbench .miDash > .container-fluid { padding: 24px !important; }
.gp-ui.gp-workbench .card-body { padding: 24px !important; }
.gp-ui.gp-workbench .row > *, .gp-ui.gp-workbench .flex-fill, .gp-ui.gp-workbench .form-group { min-width: 0; }
.gp-ui.gp-workbench .nav-tabs { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; }
.gp-ui.gp-workbench .nav-tabs .nav-item { flex: 0 0 auto; }
.gp-ui.gp-workbench .nav-tabs .nav-link { min-height: 44px; display: flex; align-items: center; justify-content: center; white-space: nowrap; }
.gp-ui.gp-workbench table.table th, .gp-ui.gp-workbench table.table td { text-align: center; vertical-align: middle; }
.gp-ui.gp-workbench .table-bordered { border: 1px solid var(--gp-border) !important; }
.gp-ui.gp-workbench table.table .btn-group { width: max-content; max-width: none; overflow: visible; }
.gp-ui.gp-workbench .gp-actions > .btn { margin: 0 !important; }
.gp-ui.gp-workbench .carta { min-height: 72px; height: auto; overflow-wrap: anywhere; }
.gp-ui.gp-workbench .carta h4, .gp-ui.gp-workbench .carta .txtRes { margin: 0; padding: 12px; white-space: normal !important; overflow-wrap: anywhere; }
.gp-ui.gp-workbench .cardHijo:hover, .gp-ui.gp-workbench .carta:hover { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui.gp-workbench .color-picker { background: var(--gp-surface); border-color: var(--gp-control-border); border-radius: 8px; }
.gp-ui.gp-workbench .color-picker > div { width: 44px; height: 44px; border-radius: 8px; opacity: 1; }
.gp-ui.gp-workbench .btn-primary:not(:disabled):not(.disabled):active { background: var(--gp-primary-hover) !important; color: var(--gp-on-primary) !important; border-color: var(--gp-primary-hover) !important; }
.gp-ui.gp-workbench .btn-danger:not(:disabled):not(.disabled):active { background: var(--gp-danger) !important; color: var(--gp-on-primary) !important; border-color: var(--gp-danger) !important; }
.gp-ui.gp-workbench .table-striped tbody tr:nth-of-type(odd) { background: var(--gp-surface); }
.gp-ui.gp-workbench .golfo-campo-cerrar { display: inline-flex; justify-content: center; align-items: center; min-width: 44px; min-height: 44px; border-radius: 8px; }
.gp-ui .note-editor.note-frame { border-color: var(--gp-control-border); }
.gp-ui .note-editor.note-frame .note-editable { color: var(--gp-text); }
.gp-ui .note-editor .note-toolbar, .gp-ui .note-editor .note-statusbar { background-color: var(--gp-page); border-color: var(--gp-border); }
.gp-ui .gp-legal-scroll { max-height: min(360px, 50vh); overflow: auto; padding: 16px; border: 1px solid var(--gp-border); border-radius: 8px; background: var(--gp-surface); overflow-wrap: anywhere; -webkit-overflow-scrolling: touch; }
.gp-ui .gp-legal-scroll:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
.gp-ui .gp-legal-scroll-ayuda { margin: 0 0 8px; color: var(--gp-muted); font-size: 13px; line-height: 1.4; }
.gp-ui .note-editor .note-palette-title { border-color: var(--gp-border) !important; }
.gp-ui .note-editor .note-icon-bar { border-color: var(--gp-control-border) !important; }
.gp-ui .note-color .note-color-select, .gp-ui .note-color .note-color-select-btn, .gp-ui .note-color .note-holder-custom { display: none; }
.gp-ui .note-color .note-color-row { display: flex; flex-wrap: wrap; gap: 4px; max-width: 100%; }
.gp-ui .note-color .note-color-btn { min-width: 44px; min-height: 44px; border-radius: 6px; color: var(--gp-text); border-color: var(--gp-border) !important; outline-color: var(--gp-primary); }

/* Controles heredados presentes en listas, fichas y editores. */
.gp-ui .custom-control-label::before { background-color: var(--gp-surface); border-color: var(--gp-control-border); }
.gp-ui [type="checkbox"] + label::after { border-color: var(--gp-control-border); }
.gp-ui [type="checkbox"]:checked + label::after { border-color: var(--gp-primary); background-color: var(--gp-primary); }
.gp-ui .nav-tabs .nav-link:hover, .gp-ui .nav-tabs .nav-link:focus, .gp-ui .nav-tabs .nav-link:active { background-color: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .nav-tabs .nav-link.active, .gp-ui .customtab .nav-link.active { background-color: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui [type="radio"]:not(:checked) + label::after { border-color: var(--gp-control-border); }
.gp-ui .golfo-campo-cabecera, .gp-ui .golfo-campo-pie { border-color: var(--gp-border); }
.gp-ui .golfo-campo-cerrar { color: var(--gp-text); outline-color: var(--gp-primary); }
.gp-ui .golfo-campo-cerrar:hover, .gp-ui .golfo-campo-cerrar:focus { background-color: var(--gp-selection); color: var(--gp-primary); }
.gp-ui a.text-info:hover, .gp-ui a.text-info:focus { color: var(--gp-primary-hover) !important; }
.gp-ui .btn.gp-choice-selected, .gp-ui .btn.gp-choice-selected:hover, .gp-ui .btn.gp-choice-selected:active, .gp-ui .btn.gp-choice-selected:focus { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn.gp-choice-selected.gp-choice-negative, .gp-ui .btn.gp-choice-selected.gp-choice-negative:hover, .gp-ui .btn.gp-choice-selected.gp-choice-negative:active, .gp-ui .btn.gp-choice-selected.gp-choice-negative:focus { background: var(--gp-danger) !important; border-color: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
@media (max-width: 575.98px) {
    .gp-ui.gp-workbench .modal .row > .col-3, .gp-ui.gp-workbench .modal .row > .col-4 { flex: 0 0 100%; max-width: 100%; }
}
@media (max-width: 767.98px) {
    .gp-ui.gp-workbench .miDash > .container-fluid, .gp-ui.gp-workbench .page-wrapper > .container-fluid { padding: 16px !important; }
    .gp-ui.gp-workbench .card-body { padding: 16px !important; }
}
/* Una estación ya utilizada conserva un resaltado legible de la paleta. */
.gp-ui .gp-data-color .card-title .gp-data-used {
    background: var(--gp-warning-soft) !important;
    color: var(--gp-warning) !important;
    padding: 2px 8px;
    border-radius: 4px;
    display: inline-block;
}

/* Biblioteca, archivos y editores de imagen y vídeo. */
.gp-ui.gp-library .miDash { padding-top: 0; }
@media (max-width: 767px) { .gp-ui.gp-library.fix-header .miDash { padding-top: 70px; } }
.gp-ui.gp-library .carta { max-width: 100%; min-width: 0; }
.gp-ui.gp-library .carta a, .gp-ui.gp-library .el-card-item { overflow-wrap: anywhere; }
.gp-ui.gp-library .el-card-content { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; padding: 12px; }
.gp-ui.gp-library .el-card-content > .btn { margin: 0 !important; flex: 0 0 auto; border-radius: 8px !important; }
.gp-ui.gp-library .el-card-content > .collapse { flex: 0 0 100%; }
.gp-ui.gp-library .color-picker > div { min-width: 44px; min-height: 44px; border-radius: 8px; opacity: 1; }
.gp-ui.gp-library .color-picker { background: var(--gp-surface); border-color: var(--gp-control-border); }
.gp-ui.gp-library video { max-width: 100%; background: var(--gp-primary-hover); border-radius: 8px; }
.gp-ui.gp-videos-lista .gp-video-tipo-ayuda { margin: 12px 0; color: var(--gp-muted); line-height: 1.5; text-align: center; }
.gp-ui.gp-videos-lista .gp-video-tipo { display: inline-flex; align-items: center; justify-content: center; min-height: 28px; margin: 4px; padding: 3px 9px; border: 1px solid var(--gp-control-border); border-radius: 8px; font-size: 12px; font-weight: 600; line-height: 1.3; text-align: center; }
.gp-ui.gp-videos-lista .gp-video-tipo--archivo { background: #e4eee8; color: #245148; }
.gp-ui.gp-videos-lista .gp-video-tipo--enlace { background: #e9f1f8; color: #274b68; }
/* Vista de vídeo y comentario en listados, alumno y campo. */
.gp-ui #modalVideo #cajaV video { display: block; width: 100% !important; height: auto !important; max-height: 50vh; margin: 0 auto; object-fit: contain; background: #1F2A25; }
.gp-ui #modalVideo #cajaV iframe { display: block; width: min(100%, 88.888vh) !important; height: auto !important; aspect-ratio: 16 / 9; margin: 0 auto; border: 0; }
.gp-ui #modalVideo .modal-footer > .d-flex { width: 100%; min-width: 0; }
.gp-ui #modalVideo .modal-footer { overflow: visible; }
.gp-ui #modalVideo .modal-footer > .d-flex > .col-12 { flex: 0 0 auto; }
.gp-ui #modalVideo #divComentarios { width: 100%; min-width: 0; overflow-wrap: anywhere; }
.gp-ui #modalVideo #divComentarios img, .gp-ui #modalVideo #divComentarios video, .gp-ui #modalVideo #divComentarios iframe { max-width: 100%; }
.gp-ui #modalVideo .modal-footer hr { margin: 0 0 12px; }
.gp-ui #modalVideo .modal-body #divComentarios:not(:empty) { margin-top: 16px; }
.gp-ui .dropzone { background: var(--gp-surface); border: 2px dashed var(--gp-control-border); border-radius: 10px; color: var(--gp-muted); }
.gp-ui .dropzone .dz-preview { background: var(--gp-surface); }
.gp-ui .dropzone .dz-preview .dz-remove { color: var(--gp-danger); }
.gp-ui .dropzone .dz-preview .dz-details { color: var(--gp-text); outline-color: var(--gp-primary); }
.gp-ui .PinturaRoot, .gp-ui .PinturaModal .PinturaRoot, .gp-ui .pintura-editor {
    --color-background: 255, 255, 255 !important;
    --color-foreground: 31, 42, 37 !important;
    --color-preview-outline: 122, 139, 129;
    --color-primary: var(--gp-primary) !important;
    --color-primary-dark: var(--gp-primary-hover) !important;
    --color-primary-text: var(--gp-on-primary) !important;
    --color-secondary: var(--gp-primary) !important;
    --color-secondary-dark: var(--gp-primary-hover) !important;
    --color-focus: 36, 81, 72 !important;
    --border-radius: 8px;
    --border-radius-round: 8px;
    --editor-modal-shadow: var(--gp-shadow);
}
.gp-ui .PinturaModal { background: rgba(31, 42, 37, .8); --editor-modal-shadow: var(--gp-shadow); }
.gp-ui .PinturaRoot .PinturaPanel, .gp-ui .PinturaRoot .PinturaPanelTip { background: var(--gp-surface); color: var(--gp-text); box-shadow: var(--gp-shadow); }
.gp-ui .PinturaRoot button { border-radius: 8px; min-width: 44px; min-height: 44px; }
.gp-ui .PinturaRoot .PinturaButtonPlay, .gp-ui .PinturaRoot .PinturaButtonPlay *,
.gp-ui .PinturaRoot .PinturaButtonMute, .gp-ui .PinturaRoot .PinturaButtonMute * { color: var(--gp-primary) !important; outline-color: var(--gp-primary); }
.gp-ui .PinturaRoot button svg path:not([fill="none"]) { fill: currentColor; }
.gp-ui .PinturaRoot .PinturaNav { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.gp-ui .PinturaRoot .PinturaContentEditable, .gp-ui .PinturaRoot .PinturaInlineInput { caret-color: var(--gp-text); }
.gp-ui .PinturaRoot .PinturaMediaRangeIndicator::before, .gp-ui .PinturaRoot .PinturaMediaRangeIndicator::after,
.gp-ui .PinturaRoot .PinturaMediaRangeIndicatorOutline, .gp-ui .PinturaRoot .PinturaMediaRangeInput span { box-shadow: var(--gp-shadow); }
.gp-ui .PinturaRoot .PinturaMediaRangeIndicatorShadow { border-color: rgba(31, 42, 37, .25); }
.gp-ui .PinturaRoot .PinturaSliderKnob > span { box-shadow: var(--gp-shadow) !important; }
.gp-ui .doka::before { background: var(--gp-page); }
.gp-ui .doka a { background: var(--gp-surface); color: var(--gp-primary); box-shadow: var(--gp-shadow); min-width: 44px; min-height: 44px; border-radius: 8px; }
.gp-ui .doka--root button { min-width: 44px; min-height: 44px; border-radius: 8px; }
.gp-ui .doka--root { --doka-markup-manipulator--fill: var(--gp-primary); --doka-markup-manipulator--stroke: var(--gp-surface); --doka-markup-manipulator--stroke-inverted: var(--gp-text); }
.gp-ui .doka--root { --doka-button-primary--color: var(--gp-on-primary); --doka-modal--overlay: rgba(31, 42, 37, .8); }
.gp-ui .switch label .lever { background: var(--gp-danger) !important; }
.gp-ui .switch label .lever::after { background: var(--gp-on-primary) !important; border: 1px solid var(--gp-control-border); box-shadow: var(--gp-shadow) !important; }
.gp-ui .switch label input[type="checkbox"]:checked + .lever { background: var(--gp-primary) !important; }
.gp-ui .switch label input[type="checkbox"]:checked + .lever::after { background: var(--gp-on-primary) !important; }
.gp-ui .switch label .lever::before { background: rgba(36, 81, 72, .12) !important; box-shadow: none !important; }
.gp-ui .dropzone .dz-preview .dz-success-mark *, .gp-ui .dropzone .dz-preview .dz-error-mark * { stroke: var(--gp-control-border); }
.gp-ui.gp-library .table.color-bordered-table { border-color: var(--gp-border) !important; }
.gp-ui table.table.color-bordered-table thead th { background: var(--gp-surface) !important; color: var(--gp-muted) !important; }
.gp-ui.gp-library table#myTable thead th:focus, .gp-ui.gp-library .dataTables_wrapper table.dataTable thead th:focus { background: var(--gp-selection) !important; }
@media (max-width: 767.98px) {
    .gp-ui.gp-library .editor-stage { padding: 0; }
    .gp-ui.gp-library .editor-container { min-height: 480px; max-height: none; }
    .gp-ui.gp-library .pintura-editor { min-height: 480px; }
}

/* Variables de color del editor Doka. */
/* Inscripciones, compras y bonos: mismos controles y acciones que Cursos. */
.gp-ui .ca-boton, .gp-ui .ca-volver, .gp-ui .ca-cerrar, .gp-ui .compras-cursos-abrir, .gp-ui .compras-cursos-cerrar {
    min-height: 44px; border: 1px solid var(--gp-primary); border-radius: 8px; font-family: inherit;
}
.gp-ui .ca-boton { min-width: 44px; font-size: 14px; padding: 10px 16px; justify-content: center; }
.gp-ui .ca-cerrar, .gp-ui .compras-cursos-cerrar { min-width: 44px; }
.gp-ui .ca-acciones { gap: 8px; }
.gp-ui .ca-curso { box-shadow: var(--gp-shadow); }
.gp-ui .familia-resumen { box-shadow: 0 -3px 12px rgba(31, 42, 37, .06); }
.gp-ui .familia-acciones { gap: 8px; }
.gp-ui .familia-pagina select.form-control { min-height: 44px; }
.gp-ui .ei-selector button.ei-icono { flex: 0 0 44px; width: 44px; min-width: 44px; max-width: 44px; height: 44px; border-radius: 8px; }
.gp-ui .ei-selector button.ei-estado { min-height: 44px; padding: 8px 10px; border-radius: 8px; }
.gp-ui .ei-selector .ei-controles { flex-wrap: nowrap; gap: 8px; }
.gp-ui .curso-tarifa-descuento { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui.gp-enrolment .bono-accion, .gp-ui.gp-enrolment .bono-boton-info, .gp-ui.gp-enrolment .bono-canjear {
    min-width: 44px; min-height: 44px; border: 1px solid var(--gp-primary); border-radius: 8px; background: var(--gp-surface); color: var(--gp-primary);
}
.gp-ui.gp-enrolment .bono-regalar { border-radius: 8px; min-height: 44px; }
.gp-ui.gp-enrolment .bono-card { overflow-wrap: anywhere; }
.gp-ui.gp-enrolment .tablesaw { width: 100%; }
.gp-ui.gp-enrolment .tablesaw th, .gp-ui.gp-enrolment .tablesaw td { text-align: center; vertical-align: middle; border-color: var(--gp-border); }
.gp-ui.gp-enrolment .tablesaw thead { color: var(--gp-muted); background: var(--gp-surface); }
.gp-ui.gp-enrolment .wizard-content .wizard > .steps > ul { display: flex; flex-wrap: nowrap; overflow-x: auto; gap: 8px; }
.gp-ui.gp-enrolment .wizard-content .wizard > .steps > ul > li { float: none; flex: 1 0 140px; min-width: 0; width: auto; }
.gp-ui.gp-enrolment .wizard-content .wizard > .steps > ul > li::before, .gp-ui.gp-enrolment .wizard-content .wizard > .steps > ul > li::after { background: var(--gp-border); }
.gp-ui.gp-enrolment .wizard-content .wizard > .content { min-width: 0; }
.gp-ui.gp-enrolment .wizard-content .wizard > .content > .body { width: 100%; padding: 12px; }
.gp-ui.gp-enrolment .wizard-content .wizard > .actions > ul { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.gp-ui.gp-enrolment .wizard-content .wizard > .actions > ul > li { flex: 0 0 auto; margin: 0; }
.gp-ui.gp-enrolment .wizard-content .wizard > .actions > ul > li > a { display: flex; justify-content: center; align-items: center; min-height: 44px; min-width: 100px; padding: 10px 16px; }
@media (max-width: 767.98px) {
    .gp-ui.gp-enrolment .validation-wizard section .row > .col-6, .gp-ui.gp-enrolment .validation-wizard section .row > .col-4, .gp-ui.gp-enrolment .validation-wizard section .row > .col-8 { flex: 0 0 100%; max-width: 100%; }
    .gp-ui.gp-enrolment .bono-card-cuerpo { flex-wrap: wrap; }
}
.gp-ui .doka--root {
    --doka-color--alpha: var(--gp-primary);
    --doka-color--alpha-dim: var(--gp-primary);
    --doka-color--beta: var(--gp-text);
    --doka-color--gamma: var(--gp-on-primary);
    --doka-color--delta: var(--gp-muted);
    --doka-color--epsilon: var(--gp-muted);
    --doka-editor--color: var(--gp-text);
    --doka-editor--color-dim: var(--gp-muted);
    --doka-editor--background-color: var(--gp-surface);
    --doka-editor--background-ellipse-inner-color: var(--gp-surface);
    --doka-editor--background-ellipse-outer-color: var(--gp-surface);
    --doka-editor-outline--color: var(--gp-control-border);
    --doka-modal--background: var(--gp-surface);
    --doka-modal--shadow: var(--gp-shadow);
    --doka-scroller-thumb--color: var(--gp-text);
    --doka-component--background: var(--gp-surface);
    --doka-component--background-dim: var(--gp-surface);
    --doka-component--background-dark: var(--gp-surface);
    --doka-component--background-darker: var(--gp-surface);
    --doka-component-alt--color-dim: var(--gp-muted);
    --doka-component-alt--background: var(--gp-surface);
    --doka-component-alt-effect--background: var(--gp-surface);
    --doka-component-alt--shadow: var(--gp-shadow);
    --doka-button-hover--background: var(--gp-selection);
    --doka-button-alt-hover--background: var(--gp-selection);
    --doka-button-alt-effect-hover--background: var(--gp-selection);
    --doka-dropdown-hover--background: var(--gp-selection);
    --doka-dropdown-hover-active--background: var(--gp-selection);
    --doka-dropdown-selected--background: var(--gp-selection);
    --doka-dropdown-selected-hover--background: var(--gp-selection);
    --doka-dropdown-selected-active-hover--background: var(--gp-selection);
    --doka-range-input--background: var(--gp-surface);
    --doka-range-input-thumb--color: var(--gp-text);
    --doka-range-input-thumb-hover--color: var(--gp-text);
    --doka-tab--border-color: var(--gp-control-border);
    --doka-crop-focal-line--color: var(--gp-text);
    --doka-crop-corner--shadow: var(--gp-shadow);
    --doka-crop-edge-focus--color: var(--gp-control-border);
    --doka-image-focus--color: var(--gp-text);
    --doka-status--background: var(--gp-surface);
    --doka-status-bubble--color: var(--gp-text);
    --doka-status-bubble--color-dim: var(--gp-muted);
    --doka-status-bubble--background: var(--gp-surface);
    --doka-status-bubble-effect--background: var(--gp-surface);
    --doka-status-bubble--shadow: var(--gp-shadow);
    --doka-size-indicator--color: var(--gp-text);
    --doka-size-indicator--background: var(--gp-surface);
    --doka-button-zoom--color: var(--gp-text);
    --doka-button-zoom--background: var(--gp-surface);
    --doka-button-zoom-hover--background: var(--gp-selection);
    --doka-button-zoom-effect--background: var(--gp-surface);
    --doka-button-zoom-effect-hover--background: var(--gp-selection);
    --doka-instruction-bubble--color: var(--gp-text);
    --doka-instruction-bubble--background: var(--gp-surface);
    --doka-instruction-bubble--color-shadow: rgba(31, 42, 37, .2);
}

/* Inscripciones: controles de extras y acciones del resumen. */
.gp-ui.gp-enrolment .ei-selector button.ei-icono { color: var(--gp-primary); }
.gp-ui.gp-enrolment .ei-selector .ei-seleccionada button.ei-icono { color: var(--gp-on-primary); }
.gp-ui.gp-enrolment .btn-12 { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui.gp-enrolment .btn-12:hover { background: var(--gp-primary-hover) !important; border-color: var(--gp-primary-hover) !important; }
.gp-ui .bono-regalo-dialogo .swal2-actions button { width: auto; }
.gp-ui .bono-regalo-inicio .bono-regalo-escuela { margin-top: 4px; overflow-wrap: anywhere; }
.gp-ui .bono-regalo-inicio .bono-regalo-aviso { margin: 10px 0 0; color: var(--gp-muted); font-size: 13px; line-height: 1.45; }
.gp-ui .bono-regalo-inicio .swal2-actions { display: flex; justify-content: center; gap: 8px; }
.gp-ui .bono-regalo-inicio .swal2-actions button { flex: 1 1 120px; width: auto; min-height: 44px; margin: 0; }

.gp-ui .breadcrumb-item::before { color: var(--gp-muted) !important; }
.gp-ui.gp-enrolment.single-column .container-fluid > .row { margin-left: 0 !important; margin-right: 0 !important; }
.gp-ui.gp-enrolment .btn-11 { background: var(--gp-muted) !important; border-color: var(--gp-muted) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-enrolment .btn-11, .gp-ui.gp-enrolment .btn-12 { box-shadow: none !important; }
.gp-ui .wizard-content .wizard > .steps > ul > li a { color: var(--gp-muted) !important; }
.gp-ui .wizard-content .wizard > .steps > ul > li .step { background: var(--gp-surface) !important; color: var(--gp-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui .wizard-content .wizard > .steps > ul > li.done .step { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .wizard-content .wizard > .steps > ul > li.current:not(.error) .step { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .wizard-content .wizard > .steps > ul > li.current > a { color: var(--gp-primary) !important; font-weight: 600; }
.gp-ui .wizard-content .wizard > .steps > ul > li.error .step { color: var(--gp-danger) !important; border-color: var(--gp-danger) !important; }
.gp-ui .wizard-content .wizard > .steps > ul > li::before, .gp-ui .wizard-content .wizard > .steps > ul > li::after { background: var(--gp-border) !important; }
.gp-ui .wizard-content .wizard > .actions > ul > li > a { border: 1px solid var(--gp-primary); box-shadow: none !important; }
.gp-ui .wizard-content .wizard > .actions > ul > li > a:hover, .gp-ui .wizard-content .wizard > .actions > ul > li > a:focus { background: var(--gp-primary-hover); color: var(--gp-on-primary); }
.gp-ui .wizard-content .wizard > .actions > ul > li.disabled > a { border-color: var(--gp-control-border) !important; color: var(--gp-muted) !important; background: var(--gp-selection) !important; }

.gp-ui .tablesaw-columntoggle-btn.down::before { border-top-color: var(--gp-primary) !important; }

.gp-ui.gp-enrolment .bono-accion { flex: 0 0 auto; flex-direction: row; flex-wrap: nowrap; align-self: center; align-items: center; justify-content: center; gap: 8px; border: 0; background: transparent; padding: 0; }
.gp-ui.gp-enrolment .bono-accion > a, .gp-ui.gp-enrolment .bono-boton-info { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; padding: 0; }
.gp-ui #modalBonoForm .gp-bono-campo-principal { display: flex; align-items: stretch; min-width: 0; }
.gp-ui #modalBonoForm .gp-bono-campo-principal > .form-group { display: flex; flex: 1 1 auto; flex-direction: column; justify-content: flex-start; min-width: 0; }
.gp-ui #modalBonoForm .gp-bono-campo-principal > .form-group > select { flex: 1 1 auto; height: auto; min-height: 44px; }
.gp-ui #modalBonoForm .gp-bono-valor-completo { margin-top: 6px; color: var(--gp-muted); line-height: 1.4; overflow-wrap: anywhere; text-align: center; }
.gp-ui #modalBonoForm .gp-bono-valor-completo[hidden] { display: none; }
@supports (appearance: base-select) and selector(::picker(select)) { .gp-ui #modalBonoForm .gp-bono-campo-principal > .form-group > select { display: inline-flex; align-items: center; } }
@supports not ((appearance: base-select) and selector(::picker(select))) { .gp-ui #modalBonoForm .gp-bono-campo-principal > .form-group > select { flex: 0 0 auto; } }

/* Campos de los diálogos compartidos: la misma paleta que el formulario. */
.gp-ui .swal2-popup .swal2-input, .gp-ui .swal2-popup .swal2-select, .gp-ui .swal2-popup .swal2-textarea { min-height: 44px; max-width: 100%; min-width: 0; border: 1px solid var(--gp-control-border) !important; border-radius: 8px; background: var(--gp-surface) !important; color: var(--gp-text) !important; box-shadow: none !important; }
.gp-ui .swal2-popup .swal2-select { padding: 10px 36px 10px 12px; text-align: left; text-align-last: left; }
.gp-ui .swal2-popup .swal2-input:focus, .gp-ui .swal2-popup .swal2-select:focus, .gp-ui .swal2-popup .swal2-textarea:focus { border-color: var(--gp-primary) !important; outline: 2px solid var(--gp-focus); outline-offset: 2px; }

.gp-ui .wizard-content .wizard > .actions > ul > li > a[href="#previous"] { background: var(--gp-surface); color: var(--gp-primary); }
.gp-ui .wizard-content .wizard > .actions > ul > li > a[href="#previous"]:hover, .gp-ui .wizard-content .wizard > .actions > ul > li > a[href="#previous"]:focus { background: var(--gp-selection); color: var(--gp-primary); }

/* Progreso, niveles y retos: colores de datos adaptados al dibujar. */
.gp-ui [data-gp-color] { background: var(--gp-data-color, var(--gp-primary)) !important; border-color: var(--gp-data-color, var(--gp-primary)) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-progress .btn-fase, .gp-ui.gp-progress .btn-adaptable { min-height: 44px; border-radius: 8px !important; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-progress .ArrowButton { min-width: 100px; min-height: 100px; height: auto; align-items: center; justify-content: center; border-radius: 8px; }
.gp-ui.gp-progress .corner-btn { position: static; transform: none; flex: 0 0 44px; width: 44px; height: 44px; border: 1px solid var(--gp-primary); border-radius: 8px; box-shadow: none; }
.gp-ui.gp-progress .sinPermiso div { background: var(--gp-selection) !important; color: var(--gp-muted); }
.gp-ui.gp-progress #divEtapas { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-start; justify-content: center; }
.gp-ui.gp-progress #divEtapas > .btn-group, .gp-ui.gp-progress #divEtapas > .btn-group-vertical { display: flex; flex-direction: row !important; flex-wrap: nowrap; gap: 8px; overflow-x: auto; max-width: 100%; padding-bottom: 8px; }
.gp-ui.gp-progress #divEtapas > div > .btn { flex: 0 0 120px; margin: 0; }
.gp-ui.gp-progress #divHoyos, .gp-ui.gp-progress #listaActividades { flex-wrap: nowrap !important; overflow-x: auto; justify-content: flex-start !important; gap: 8px; padding: 4px; }
.gp-ui.gp-progress #divHoyos > *, .gp-ui.gp-progress #listaActividades > * { flex-shrink: 0; }
.gp-ui.gp-progress .carta, .gp-ui.gp-progress .movie, .gp-ui.gp-progress .txtRes { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-progress .txtRes { white-space: normal !important; }
.gp-ui.gp-progress .movie .rating .icon { color: var(--gp-control-border); }
@media (max-width: 767px) {
 .gp-ui.gp-progress .col { flex-basis: 100%; margin-right: 0; padding-right: 15px; }
 .gp-ui.gp-progress .shw-rside { width: min(100%, 400px); max-width: 100%; }
 .gp-ui.gp-progress .ArrowButton { min-width: 80px; width: auto; }
 .gp-ui.gp-progress #divEtapas > .btn-group, .gp-ui.gp-progress #divEtapas > .btn-group-vertical { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(44px, 1fr)); width: 100%; flex: 0 0 100%; gap: 6px; margin: 0 !important; padding: 0; overflow: visible; }
 .gp-ui.gp-progress #divEtapas > div > .btn { width: 100%; min-width: 0; min-height: 44px; margin: 0; padding: 8px 4px !important; }
 .gp-ui.gp-progress #divEtapas > div > .btn:first-child { grid-column: 1 / -1; padding: 8px 12px !important; }
}

.gp-ui .btn.gp-choice-neutral, .gp-ui .btn.gp-choice-neutral.active { background: var(--gp-selection) !important; border-color: var(--gp-control-border) !important; color: var(--gp-muted) !important; }
.gp-ui .btn.gp-choice-neutral .test { color: var(--gp-muted) !important; }

/* Componentes antiguos de tarjetas, respuestas y botones. */
.gp-ui [class*="card-outline-"] > .card-header { background: var(--gp-selection) !important; border-color: var(--gp-border) !important; color: var(--gp-primary) !important; }
.gp-ui [class*="card-outline-"] > .card-header .text-white, .gp-ui [class*="card-outline-"] > .card-header h3, .gp-ui [class*="card-outline-"] > .card-header h4 { color: var(--gp-primary) !important; }
.gp-ui .campoFicha { border-color: var(--gp-control-border) !important; }
.gp-ui .btn-label { background: var(--gp-selection); }
.gp-ui .btn-secondary:not(.gp-choice-selected):not(.gp-action-primary):focus, .gp-ui .btn-secondary:not(.gp-choice-selected):not(.gp-action-primary):focus .test { color: var(--gp-primary) !important; }
.gp-ui .page-link:focus { background: var(--gp-selection) !important; }

.gp-ui .gp-medal-first { color: var(--gp-warning); }
.gp-ui .gp-medal-second { color: var(--gp-muted); }
.gp-ui .gp-medal-third { color: var(--gp-primary); }

.gp-ui.gp-progress .barraTitulo { background: transparent !important; color: var(--gp-text) !important; }
.gp-ui .btn-group-toggle > .btn:not(.gp-choice-selected), .gp-ui .btn-group-toggle > .btn:not(.gp-choice-selected) .test { color: var(--gp-primary) !important; }
.gp-ui .page-link:hover, .gp-ui .page-link:active { background: var(--gp-selection) !important; }

.gp-ui.gp-progress .btn.gp-action-back { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px !important; min-height: 44px !important; padding: 0 !important; gap: 0 !important; font-size: 0 !important; }
.gp-ui.gp-progress .btn.gp-action-back > i { font-size: 16px; }

/* Tests, evaluaciones y cuestionarios. */
.gp-ui.gp-assessment .barraTitulo { background: transparent !important; color: var(--gp-text) !important; min-width: 0; overflow-wrap: anywhere; }
.gp-ui .gp-header-actions { display: flex; flex-wrap: nowrap; flex: 0 0 auto; gap: 8px; margin-left: auto; max-width: 100%; overflow-x: auto; }
.gp-ui.gp-assessment .btn.gp-action-back { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px !important; min-height: 44px !important; padding: 0 !important; gap: 0 !important; font-size: 0 !important; }
.gp-ui.gp-assessment .btn.gp-action-back > i { font-size: 16px; }
.gp-ui.gp-assessment .acciones-editor, .gp-ui.gp-assessment .acciones-masivas { display: flex; flex-wrap: nowrap !important; align-items: center; gap: 8px; overflow-x: auto; max-width: 100%; }
.gp-ui.gp-assessment .acciones-editor > .btn, .gp-ui.gp-assessment .acciones-masivas > .btn { flex: 0 0 auto; margin-bottom: 0; min-height: 44px; }
.gp-ui.gp-assessment .bloque-escala { width: 100% !important; min-width: 0; max-width: 100%; }
.gp-ui.gp-assessment .escala-cuestionario { flex-wrap: nowrap !important; overflow-x: auto; gap: 4px; padding: 4px 0; max-width: 100%; }
.gp-ui.gp-assessment .escala-cuestionario .btn-escala { flex: 0 0 48px; min-height: 48px; margin: 0; background: var(--gp-surface) !important; color: var(--gp-primary) !important; border-color: var(--gp-control-border) !important; border-radius: 8px !important; }
.gp-ui.gp-assessment .escala-cuestionario .btn-escala.active, .gp-ui.gp-assessment .escala-cuestionario .btn-escala:hover, .gp-ui.gp-assessment .escala-cuestionario .btn-escala:focus { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui.gp-assessment .etiquetas-escala > span { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-assessment .opcion-cuestionario label, .gp-ui.gp-assessment .opcion-vista label { min-height: 44px; padding: 10px 0; margin-bottom: 0; text-align: left; overflow-wrap: anywhere; }
.gp-ui.gp-assessment .opcion-cuestionario, .gp-ui.gp-assessment .opcion-vista { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.gp-ui.gp-assessment .opcion-cuestionario > input[type=radio], .gp-ui.gp-assessment .opcion-cuestionario > input[type=checkbox], .gp-ui.gp-assessment .opcion-vista > input[type=radio], .gp-ui.gp-assessment .opcion-vista > input[type=checkbox] { position: static !important; left: auto !important; opacity: 1 !important; flex: 0 0 22px; width: 22px; height: 22px; margin: 0; accent-color: var(--gp-primary); }
.gp-ui.gp-assessment .opcion-cuestionario > label, .gp-ui.gp-assessment .opcion-vista > label { display: flex; align-items: center; flex: 1 1 0; min-width: 0; height: auto; margin: 0; padding: 10px 0 !important; line-height: 1.4; color: var(--gp-text); }
.gp-ui.gp-assessment .opcion-cuestionario > label::before, .gp-ui.gp-assessment .opcion-cuestionario > label::after, .gp-ui.gp-assessment .opcion-vista > label::before, .gp-ui.gp-assessment .opcion-vista > label::after { display: none !important; }
.gp-ui.gp-assessment .opcion-cuestionario > input[type=text], .gp-ui.gp-assessment .opcion-vista > input[type=text] { flex: 1 0 100%; }
.gp-ui.gp-assessment .cabecera-cuestionario > .card-body { background: var(--gp-selection); }
.gp-ui.gp-assessment #descripcionCuestionario img, .gp-ui.gp-assessment .cuestionario-listado img { max-width: 100%; height: auto; }
.gp-ui.gp-cuestionario-editor .gp-cuestionario-titulo { background: var(--gp-muted) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-cuestionario-editor .gp-cuestionario-titulo > h4 { color: inherit !important; }
.gp-ui.gp-cuestionario-editor .gp-cuestionario-datos-seccion input.form-control, .gp-ui.gp-cuestionario-editor textarea.gp-cuestionario-textarea { min-height: 44px; }
.gp-ui.gp-cuestionario-editor .gp-cuestionario-texto-corto .form-control { min-height: 44px; }
.gp-ui.gp-cuestionario-editor textarea.gp-cuestionario-textarea { height: 44px; padding: 8px 14px; line-height: 1.4; overflow-y: hidden; resize: vertical; }
.gp-ui.gp-cuestionario-editor .gp-pregunta-obligatoria { margin-left: auto; padding: 0 12px; }
.gp-ui.gp-cuestionario-editor .gp-pregunta-obligatoria label { display: inline-flex; align-items: center; min-height: 44px; margin: 0; padding-left: 32px; line-height: 1.4; }
.gp-ui.gp-cuestionario-editor .gp-pregunta-obligatoria input.filled-in + label::after, .gp-ui.gp-cuestionario-editor .gp-pregunta-obligatoria input.filled-in:checked + label::before { top: 12px !important; }
.gp-ui.gp-cuestionario-editor .gp-pregunta-obligatoria input.filled-in:not(:checked) + label::before { top: 22px !important; }
.gp-ui.gp-cuestionario-editor .gp-editor-opciones { padding: 16px; }
.gp-ui.gp-cuestionario-editor .gp-editor-opciones > h6 { margin: 0 0 12px; line-height: 1.4; }
.gp-ui.gp-cuestionario-editor .gp-editor-opcion { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 10px; }
.gp-ui.gp-cuestionario-editor .gp-editor-opcion > .form-control { min-width: 0; }
.gp-ui.gp-cuestionario-editor .gp-editor-opcion-otra label { display: inline-flex; align-items: center; min-height: 44px; height: auto; margin: 0; padding: 0 0 0 32px; line-height: 1.4; }
.gp-ui.gp-cuestionario-editor .gp-editor-opcion-otra input.filled-in + label::after, .gp-ui.gp-cuestionario-editor .gp-editor-opcion-otra input.filled-in:checked + label::before { top: 12px !important; }
.gp-ui.gp-cuestionario-editor .gp-editor-opcion-otra input.filled-in:not(:checked) + label::before { top: 22px !important; }
.gp-ui.gp-cuestionario-editor .gp-editor-opcion-acciones { display: flex; justify-content: flex-end; }
.gp-ui.gp-planificacion-editor .gp-planificacion-datos { container: gp-planificacion-cabecera / inline-size; }
.gp-ui.gp-planificacion-editor .gp-planificacion-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; align-items: end; margin: 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-campos > .gp-planificacion-campo { display: flex; flex-direction: column; align-self: stretch; min-width: 0; padding: 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-campo .form-group { display: flex; flex: 1 1 auto; flex-direction: column; }
.gp-ui.gp-planificacion-editor .gp-planificacion-campo .form-group > .form-control { flex: 1 0 auto; min-height: 44px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-campo .form-group > label { display: flex; align-items: center; justify-content: center; min-height: 40px; margin: 0 0 8px; line-height: 1.4; }
.gp-ui.gp-planificacion-editor .gp-planificacion-campos > .gp-planificacion-fijar { justify-content: flex-end; padding-top: 48px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-fijar > .btn { flex: 1 0 auto; min-height: 44px; margin: 0 !important; }
.gp-ui.gp-planificacion-editor .page-titles:not(:has(.btn:not(.d-none))) { display: none; }
.gp-ui.gp-planificacion-editor .gp-planificacion-wings .public-state-toggle { flex: 1 0 auto; align-self: center; min-height: 44px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-referencia { grid-column: 1 / -1; width: 100%; min-width: 0; max-width: 720px; margin: 0 auto; }
.gp-ui.gp-planificacion-editor .gp-planificacion-campos > #parte2 { grid-column: 1 / -1; min-width: 0; width: 100%; }
.gp-ui.gp-planificacion-editor .gp-planificacion-filtros { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); align-items: start; gap: 24px; padding: 16px 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-filtros > section { min-width: 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-filtros h3 { display: flex; align-items: center; justify-content: center; min-height: 44px; margin: 0 0 12px; padding: 10px 16px; background: var(--gp-muted); color: var(--gp-on-primary); font-size: 18px; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-planificacion-editor .gp-planificacion-filtros > .gp-planificacion-rotaciones { padding-top: 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-areas > label { display: block; margin-bottom: 6px; text-align: center; }
.gp-ui.gp-planificacion-editor .gp-planificacion-areas > .form-control { min-height: 44px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-areas > .gp-areas-mostrar { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 44px; margin-top: 8px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-filtro-estado { min-height: 1.5em; margin: 10px 0; color: var(--gp-muted); text-align: center; font-size: 13px; }
.gp-ui.gp-planificacion-editor .gp-areas-seleccionadas { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.gp-ui.gp-planificacion-editor .gp-areas-seleccionadas:empty { display: none; }
.gp-ui.gp-planificacion-editor .gp-areas-seleccionadas > .btn { flex: 1 1 200px; flex-wrap: wrap; gap: 4px 8px; min-width: 0; max-width: 100%; min-height: 44px; margin: 0 !important; white-space: normal !important; overflow-wrap: anywhere; }
.gp-ui.gp-planificacion-editor .gp-planificacion-areas #divAreas { flex-direction: column; flex-wrap: nowrap; }
.gp-ui.gp-planificacion-editor .gp-planificacion-areas #divAreas > .btn { display: flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 100%; min-height: 44px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-rotaciones #divRotaciones > .btn { min-height: 44px; }
.gp-ui.gp-planificacion-editor #divRotaciones > .btn { position: relative; border: 2px solid var(--gp-control-border); border-radius: 12px !important; }
.gp-ui.gp-planificacion-editor #divRotaciones > .btn > .d-flex { display: flex; flex-direction: column; width: 100%; counter-reset: gp-rotacion; }
.gp-ui.gp-planificacion-editor #divRotaciones .boton-dividido, .gp-ui.gp-planificacion-editor #divRotaciones .boton-dividido2 { display: flex; align-items: center; justify-content: center; position: relative; min-width: 0; min-height: 48px; width: 100%; padding: 10px 42px; border: 0; white-space: normal; overflow-wrap: anywhere; counter-increment: gp-rotacion; }
.gp-ui.gp-planificacion-editor #divRotaciones .boton-dividido + .boton-dividido, .gp-ui.gp-planificacion-editor #divRotaciones .boton-dividido + .boton-dividido2 { border-top: 1px solid currentColor; }
.gp-ui.gp-planificacion-editor #divRotaciones .boton-dividido::before, .gp-ui.gp-planificacion-editor #divRotaciones .boton-dividido2::before { content: counter(gp-rotacion); position: absolute; left: 10px; display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border: 1px solid var(--gp-rotacion-color, currentColor); border-radius: 50%; background: var(--gp-rotacion-color, transparent); color: var(--gp-rotacion-texto, currentColor); font-size: 12px; line-height: 1; }
.gp-ui.gp-planificacion-editor #divAreas[hidden], .gp-ui.gp-planificacion-editor #divAreas > .btn[hidden], .gp-ui.gp-planificacion-editor #divRotaciones > .btn[hidden] { display: none !important; }
.gp-ui.gp-planificacion-editor .gp-planificacion-areas .gp-area-ratio { flex: 0 0 auto; white-space: nowrap; }
.gp-ui.gp-planificacion-editor .gp-planificacion-areas .gp-area-nombre { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-planificacion-editor .gp-area-quitar { display: none; }
.gp-ui.gp-planificacion-editor .gp-areas-seleccionadas .gp-area-quitar { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; font-size: 20px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-filtros .gp-planificacion-numero > .btn { min-height: 44px; padding: 9px 8px; }
@media (max-width: 767px) { .gp-ui.gp-planificacion-editor .gp-planificacion-filtros { grid-template-columns: minmax(0, 1fr); } }
@container gp-planificacion-cabecera (max-width: 499px) { .gp-ui.gp-planificacion-editor .gp-planificacion-campos { grid-template-columns: minmax(0, 1fr); } }
@container gp-planificacion-cabecera (min-width: 800px) {
    .gp-ui.gp-planificacion-editor .gp-planificacion-campos { grid-template-columns: repeat(12, minmax(0, 1fr)); }
    .gp-ui.gp-planificacion-editor .gp-planificacion-campos > .gp-planificacion-campo { grid-column: span 2; }
    .gp-ui.gp-planificacion-editor .gp-planificacion-campos > :is(.gp-planificacion-curso, .gp-planificacion-programa) { grid-column: span 6; }
}
.gp-ui.gp-planificacion-editor .gp-planificacion-wings { flex: 0 0 auto; margin: 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-estacion { display: grid; grid-template-columns: minmax(0, 1fr) 44px; align-items: stretch; gap: 8px; min-width: 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-estacion > .form-control { min-width: 0; width: 100%; min-height: 44px; height: 100%; border-radius: 8px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-estacion > .gp-icon-only { width: 44px; min-width: 44px; height: 100%; min-height: 44px; margin: 0 !important; padding: 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-bloque-zonas { container: gp-planificacion-zonas / inline-size; }
.gp-ui.gp-planificacion-editor #divZonas > .gp-planificacion-clase { margin: 0 0 20px !important; border: 2px solid var(--gp-primary); border-radius: 14px; overflow: hidden; }
.gp-ui.gp-planificacion-editor .gp-planificacion-clase > .card-header { padding: 10px 14px !important; background: var(--gp-selection) !important; color: var(--gp-primary) !important; font-weight: 700; overflow-wrap: anywhere; }
.gp-ui.gp-planificacion-editor .gp-planificacion-clase > .gp-planificacion-bloque-zonas { padding: 12px !important; }
.gp-ui.gp-planificacion-editor .gp-planificacion-fila { display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: center; gap: 10px; min-width: 0; padding: 10px; border: 1px solid var(--gp-border); border-radius: 10px; background: var(--gp-soft); }
.gp-ui.gp-planificacion-editor .gp-planificacion-fila + .gp-planificacion-fila { margin-top: 12px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-fila-numero { display: flex; align-items: center; justify-content: center; width: 40px; min-height: 44px; padding: 4px; border-radius: 8px; background: var(--gp-primary); color: var(--gp-on-primary); font-size: 18px; font-weight: 700; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona { display: grid; grid-template-columns: minmax(140px, .8fr) repeat(2, minmax(0, 1.15fr)) repeat(2, minmax(0, 1.45fr)); align-items: stretch; gap: 8px; min-width: 0; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > .btn { flex-wrap: wrap; min-width: 0; max-width: 100%; min-height: 44px; margin: 0 !important; padding: 10px 12px; white-space: normal !important; overflow-wrap: anywhere; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="tiempo"] { grid-column: 1; grid-row: 1; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="estacion"] { grid-column: 2 / 4; grid-row: 1; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="zona"] { grid-column: 4 / 6; grid-row: 1; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="materiales"] { grid-column: 1; grid-row: 2; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="grupo"] { grid-column: 2 / 4; grid-row: 2; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="profesional"] { grid-column: 4; grid-row: 2; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="asistente"] { grid-column: 5; grid-row: 2; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > :is([data-gp-campo="profesional"], [data-gp-campo="asistente"]) { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: center; gap: 2px; min-height: 76px !important; padding: 8px 10px !important; white-space: normal !important; overflow-wrap: anywhere; }
.gp-ui.gp-planificacion-editor .gp-planificacion-persona-nombre, .gp-ui.gp-planificacion-editor .gp-planificacion-persona-rol { display: block; max-width: 100%; text-align: center; line-height: 1.3; overflow-wrap: anywhere; }
.gp-ui.gp-planificacion-editor .gp-planificacion-persona-rol { font-size: 12px; }
.gp-ui.gp-planificacion-editor .gp-planificacion-persona-rol:only-child { font-size: 14px; font-weight: 600; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="zona"]::before, .gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-etiqueta].btn-outline-verde:not([data-gp-campo="profesional"])::before { content: attr(data-gp-etiqueta); font-weight: 600; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > .material-toggle { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; gap: 6px; min-width: 0; margin: 0; overflow: visible; }
.gp-ui.gp-planificacion-editor .gp-planificacion-zona > .material-toggle > .btn { min-width: 0; min-height: 44px; margin: 0 !important; padding: 10px 8px; border-radius: 8px !important; }
@container gp-planificacion-zonas (max-width: 899px) {
    .gp-ui.gp-planificacion-editor .gp-planificacion-zona { grid-template-columns: minmax(100px, 1fr) minmax(0, 1.2fr); }
    .gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="estacion"] { grid-column: 2; grid-row: 1; }
    .gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="zona"] { grid-column: 1 / -1; grid-row: 2; }
    .gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="materiales"] { grid-column: 1; grid-row: 3; }
    .gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="grupo"] { grid-column: 2; grid-row: 3; }
    .gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="profesional"] { grid-column: 1 / -1; grid-row: 4; }
    .gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo="asistente"] { grid-column: 1 / -1; grid-row: 5; }
}
@container gp-planificacion-zonas (max-width: 319px) { .gp-ui.gp-planificacion-editor .gp-planificacion-zona { grid-template-columns: minmax(0, 1fr); } .gp-ui.gp-planificacion-editor .gp-planificacion-zona > [data-gp-campo] { grid-column: 1; grid-row: auto; } }
.gp-ui.gp-planificacion-editor #divAreas > .btn { flex-wrap: wrap; gap: 4px 8px; }
.gp-ui.gp-planificacion-editor #divAreas .gp-area-nombre { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-planificacion-editor #divAreas .gp-area-ratio { flex: 0 0 auto; white-space: nowrap; }

/* Historial de planificación: grupo y sesiones adaptables. */
.gp-ui.gp-historial-plan .historial-rotacion .label { flex: 1 1 110px; min-width: min(100%, 110px); max-width: 100%; padding: 4px 8px; font-size: 12px; }
.gp-ui.gp-historial-plan .gp-historial-filtro .form-group { width: min(100%, 640px); min-width: 0; margin: 0; }
.gp-ui.gp-historial-plan .gp-historial-grupo-seleccionado { display: none; overflow-wrap: anywhere; text-align: center; }
.gp-ui.gp-historial-plan #divSesiones { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr)); gap: 10px; width: 100%; margin: 0 auto; }
.gp-ui.gp-historial-plan #divSesiones > div { min-width: 0; margin: 0 !important; }
.gp-ui.gp-historial-plan #divSesiones .btn { min-height: 56px; height: 100%; gap: 8px; white-space: normal; }
.gp-ui.gp-historial-plan #divSesiones .btn > span { flex: 0 0 auto !important; }
.gp-ui.gp-historial-plan #divSesiones .btn > small { min-width: 0; padding: 0 4px !important; font-size: 13px; line-height: 1.35; overflow-wrap: anywhere; }
@media (max-width: 767px) { .gp-ui.gp-historial-plan .gp-historial-grupo-seleccionado:not(:empty) { display: block; margin-top: 8px; } }

/* Visor de estaciones compartido por Metadatos, planificación y campo. */
@media screen {
    body.gp-ui.gp-estacion-view { background: var(--gp-page); color: var(--gp-text); padding: 20px; }
    .gp-ui.gp-estacion-view #main-wrapper.gp-estacion-ficha { width: min(100%, 1120px); max-width: 1120px; margin: 0 auto; padding-bottom: 28px; }
    .gp-ui.gp-estacion-view .gp-estacion-etapa { margin: 0 0 8px; border: 0; }
    .gp-ui.gp-estacion-view #cardHeaderFicha { padding: 0; border: 0; background: transparent !important; text-align: left; }
    .gp-ui.gp-estacion-view #cardHeaderFicha #textoFicha { color: var(--gp-muted) !important; font-size: 13px; font-weight: 600; line-height: 1.4; }
    .gp-ui.gp-estacion-view .gp-estacion-hero { display: grid; grid-template-columns: 72px minmax(0, 1fr) 64px; align-items: center; gap: 20px; padding: 24px; background: var(--gp-surface); border: 1px solid var(--gp-border); border-radius: 14px; }
    .gp-ui.gp-estacion-view .gp-estacion-logo, .gp-ui.gp-estacion-view .gp-estacion-aspecto { display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; padding: 7px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); }
    .gp-ui.gp-estacion-view .gp-estacion-logo img, .gp-ui.gp-estacion-view .gp-estacion-aspecto img { width: 100%; height: 100%; max-height: 50px !important; object-fit: contain; }
    .gp-ui.gp-estacion-view .gp-estacion-identidad { min-width: 0; text-align: left; }
    .gp-ui.gp-estacion-view .gp-estacion-identidad h1 { margin: 0 0 10px; color: var(--gp-primary); font-size: clamp(22px, 3vw, 30px); font-weight: 600; line-height: 1.2; overflow-wrap: anywhere; }
    .gp-ui.gp-estacion-view .gp-estacion-duracion { display: inline-flex; align-items: center; min-height: 30px; padding: 4px 12px; border-radius: 999px; background: var(--gp-selection); color: var(--gp-primary); font-weight: 600; }
    .gp-ui.gp-estacion-view .gp-estacion-banner { display: flex; align-items: center; justify-content: center; min-width: 0; margin: 0 0 16px; padding: 10px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); }
    .gp-ui.gp-estacion-view #imgBanner { display: block; width: auto; height: auto; max-width: 100%; max-height: clamp(80px, 14vw, 160px); object-fit: contain; }
    .gp-ui.gp-estacion-view .gp-estacion-workspace { margin-top: 20px; }
    .gp-ui.gp-estacion-view .gp-estacion-workspace.gp-estacion-listo { display: grid; grid-template-columns: 210px minmax(0, 1fr); align-items: start; gap: 20px; }
    .gp-ui.gp-estacion-view .gp-estacion-contenido, .gp-ui.gp-estacion-view .gp-estacion-panel { min-width: 0; }
    .gp-ui.gp-estacion-view .gp-estacion-panel[hidden] { display: none !important; }
    .gp-ui.gp-estacion-view .gp-estacion-navegacion { position: sticky; top: 12px; display: flex; flex-direction: column; gap: 6px; padding: 8px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); }
    .gp-ui.gp-estacion-view .gp-estacion-navegacion[hidden] { display: none; }
    .gp-ui.gp-estacion-view .gp-estacion-nav-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 44px; padding: 9px 12px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: var(--gp-muted); font-weight: 500; text-align: left; cursor: pointer; }
    .gp-ui.gp-estacion-view .gp-estacion-nav-item:hover, .gp-ui.gp-estacion-view .gp-estacion-nav-item.is-active { border-color: var(--gp-border); background: var(--gp-selection); color: var(--gp-primary); }
    .gp-ui.gp-estacion-view .gp-estacion-nav-item:focus-visible, .gp-ui.gp-estacion-view .gp-estacion-resumen-tarjeta:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
    .gp-ui.gp-estacion-view .gp-estacion-nav-total { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; min-width: 26px; min-height: 26px; padding: 2px 6px; border-radius: 999px; background: var(--gp-page); color: var(--gp-muted); font-size: 12px; }
    .gp-ui.gp-estacion-view .gp-estacion-resumen-contenido { margin: 0 0 16px; }
    .gp-ui.gp-estacion-view .gp-estacion-resumen-contenido[hidden] { display: none; }
    .gp-ui.gp-estacion-view .gp-estacion-resumen-contenido h2 { margin: 0 0 12px; color: var(--gp-text); font-size: 17px; font-weight: 600; }
    .gp-ui.gp-estacion-view .gp-estacion-resumen-tarjetas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
    .gp-ui.gp-estacion-view .gp-estacion-resumen-tarjeta { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; min-height: 94px; padding: 16px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); color: var(--gp-muted); text-align: left; cursor: pointer; }
    .gp-ui.gp-estacion-view .gp-estacion-resumen-tarjeta:hover { border-color: var(--gp-control-border); background: var(--gp-selection); }
    .gp-ui.gp-estacion-view .gp-estacion-resumen-tarjeta strong { color: var(--gp-primary); font-size: 24px; line-height: 1.1; }
    .gp-ui.gp-estacion-view .gp-estacion-resumen-tarjeta span { overflow-wrap: anywhere; }
    .gp-ui.gp-estacion-view #cardEtiquetas { padding: 0; margin: 0 0 16px; background: transparent !important; }
    .gp-ui.gp-estacion-view #etiqTec { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 0; padding: 14px 18px !important; border: 1px solid var(--gp-border) !important; border-radius: 12px; }
    .gp-ui.gp-estacion-view #etiqTec > div:first-child { flex: 0 0 auto; width: auto; max-width: 100%; padding: 0; border: 0 !important; }
    .gp-ui.gp-estacion-view #etiqTec > div:last-child { flex: 1 1 240px; width: auto; max-width: 100%; padding: 0; }
    .gp-ui.gp-estacion-view #nameEtiquetas { font-size: 15px; font-weight: 600; }
    .gp-ui.gp-estacion-view #desEtiquetas { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
    .gp-ui.gp-estacion-view #desEtiquetas .badge { display: inline-flex; align-items: center; min-height: 32px; margin: 0 !important; padding: 6px 10px !important; border: 1px solid var(--gp-control-border); border-radius: 999px; background: var(--gp-surface); color: var(--gp-primary) !important; font-size: 13px; font-weight: 500; }
    .gp-ui.gp-estacion-view .gp-estacion-descripcion, .gp-ui.gp-estacion-view #cardSegundaParte, .gp-ui.gp-estacion-view #divPreguntas, .gp-ui.gp-estacion-view #divRetos { margin: 0 0 16px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); overflow: hidden; }
    .gp-ui.gp-estacion-view .gp-estacion-descripcion { padding: 20px 24px; }
    .gp-ui.gp-estacion-view .gp-estacion-descripcion h2 { margin: 0 0 12px; color: var(--gp-primary); font-size: 18px; font-weight: 600; }
    .gp-ui.gp-estacion-view #container1Informe { padding: 0; text-align: left; line-height: 1.6; }
    .gp-ui.gp-estacion-view #container1Informe p { margin-bottom: 12px !important; }
    .gp-ui.gp-estacion-view .cardHeader > .cardHeaderDes { padding: 14px 20px; border: 0; text-align: left; }
    .gp-ui.gp-estacion-view .cardHeader > .cardHeaderDes h4 { margin: 0; font-size: 17px; font-weight: 600; }
    .gp-ui.gp-estacion-view #txtDes, .gp-ui.gp-estacion-view #bodyPreguntas, .gp-ui.gp-estacion-view #bodyRetos { padding: 16px !important; }
    .gp-ui.gp-estacion-view #txtDes > .card[hidden], .gp-ui.gp-estacion-view .gp-estacion-galeria[hidden], .gp-ui.gp-estacion-view .gp-estacion-volver-recursos[hidden] { display: none !important; }
    .gp-ui.gp-estacion-view .gp-estacion-galeria { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 14px; }
    .gp-ui.gp-estacion-view .gp-estacion-juego { display: flex; flex-direction: column; min-width: 0; padding: 0; overflow: hidden; border: 1px solid var(--gp-border); border-radius: 10px; background: var(--gp-surface); color: var(--gp-text); text-align: left; cursor: pointer; }
    .gp-ui.gp-estacion-view .gp-estacion-juego:hover { border-color: var(--gp-primary); background: var(--gp-selection); }
    .gp-ui.gp-estacion-view .gp-estacion-juego:focus-visible, .gp-ui.gp-estacion-view .gp-estacion-volver-recursos:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
    .gp-ui.gp-print.gp-estacion-sheet #txtDes .gp-estacion-juego img:not(.img-small):not(.img-small-xs) { display: block; width: 100%; height: 150px !important; max-height: 150px !important; max-width: 100% !important; padding: 8px; background: var(--gp-page); object-fit: contain; }
    .gp-ui.gp-estacion-view .gp-estacion-juego-datos { display: flex; flex: 1; flex-direction: column; align-items: flex-start; gap: 6px; width: 100%; min-height: 94px; padding: 14px; color: var(--gp-muted); font-size: 13px; line-height: 1.4; overflow-wrap: anywhere; }
    .gp-ui.gp-estacion-view .gp-estacion-juego-datos strong { color: var(--gp-primary); font-size: 15px; font-weight: 600; }
    .gp-ui.gp-estacion-view .gp-estacion-juego-tiempo { margin-top: auto; color: var(--gp-primary); font-weight: 600; }
    .gp-ui.gp-estacion-view .gp-estacion-volver-recursos { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin: 0 0 14px; padding: 8px 14px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); color: var(--gp-primary); font-weight: 600; cursor: pointer; }
    .gp-ui.gp-estacion-view #txtDes > .card, .gp-ui.gp-estacion-view #bodyPreguntas > .card, .gp-ui.gp-estacion-view #bodyRetos > .card { margin: 0 0 14px !important; border: 1px solid var(--gp-border) !important; border-radius: 10px; overflow: hidden; box-shadow: none; }
    .gp-ui.gp-estacion-view #txtDes > .card:last-child, .gp-ui.gp-estacion-view #bodyPreguntas > .card:last-child, .gp-ui.gp-estacion-view #bodyRetos > .card:last-child { margin-bottom: 0 !important; }
    .gp-ui.gp-estacion-view #txtDes > .card > .color-1 { padding: 10px 16px !important; background: var(--gp-selection) !important; color: var(--gp-primary) !important; text-align: left !important; font-size: 13px; font-weight: 600; }
    .gp-ui.gp-estacion-view #txtDes > .card > .card-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 14px 16px; background: var(--gp-surface) !important; text-align: left; }
    .gp-ui.gp-estacion-view #txtDes > .card > .card-header h4 { color: var(--gp-primary) !important; font-size: 18px; font-weight: 600; }
    .gp-ui.gp-estacion-view #txtDes > .card > .card-header > span { color: var(--gp-muted) !important; font-size: 13px; }
    .gp-ui.gp-estacion-view #txtDes .row, .gp-ui.gp-estacion-view #bodyPreguntas .row, .gp-ui.gp-estacion-view #bodyRetos .row { max-width: none; margin: 0; padding: 16px !important; }
    .gp-ui.gp-estacion-view #txtDes .gp-estacion-recurso-layout { display: grid; grid-template-columns: minmax(0, 1fr) 180px; align-items: start; gap: 14px; }
    .gp-ui.gp-estacion-view #txtDes .gp-estacion-recurso-layout > .tab-content, .gp-ui.gp-estacion-view #txtDes .gp-estacion-recurso-layout > div[id] { grid-column: 1; min-width: 0; }
    .gp-ui.gp-estacion-view #txtDes .gp-estacion-herramientas { grid-column: 2; grid-row: 1 / span 4; display: flex; flex-direction: column !important; flex-wrap: nowrap !important; justify-content: flex-start; gap: 8px; max-width: 100%; overflow: visible; }
    .gp-ui.gp-estacion-view #txtDes .gp-estacion-herramientas .btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; max-width: 100% !important; margin: 0 !important; padding: 8px 12px; border: 1px solid var(--gp-control-border); border-radius: 8px !important; background: var(--gp-surface); color: var(--gp-primary); font-size: 13px; line-height: 1.3; white-space: normal; }
    .gp-ui.gp-estacion-view #txtDes .gp-estacion-herramientas .btn.btn-04 { border-color: var(--gp-primary); background: var(--gp-selection); color: var(--gp-primary); }
    .gp-ui.gp-estacion-view #txtDes .gp-estacion-herramientas .btn:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
    @media (hover: none) {
        .gp-ui.gp-estacion-view #txtDes .gp-estacion-herramientas .btn[aria-pressed="false"] { background: var(--gp-surface) !important; color: var(--gp-primary) !important; box-shadow: none; }
    }
    .gp-ui.gp-estacion-view :is(#txtDes, .gp-programa-estacion, .gp-test-contenido) [id^="desc_"] { width: 100%; max-width: 100%; flex: 0 0 100%; text-align: left; line-height: 1.6; overflow-wrap: anywhere; }
    .gp-ui.gp-print.gp-estacion-sheet #container1Informe img, .gp-ui.gp-print.gp-estacion-sheet #txtDes img:not(.img-small):not(.img-small-xs), .gp-ui.gp-print.gp-estacion-sheet #bodyPreguntas img, .gp-ui.gp-print.gp-estacion-sheet #bodyRetos img { max-width: min(100%, 520px) !important; max-height: 420px !important; height: auto !important; object-fit: contain; }
    .gp-ui.gp-estacion-view #txtDes video { max-width: 100%; height: auto !important; max-height: 420px; }
    .gp-ui.gp-estacion-view #bodyPreguntas .pagination, .gp-ui.gp-estacion-view #bodyRetos .pagination { width: 100%; margin: 8px 0; padding: 0; overflow: visible; }
    .gp-ui.gp-estacion-view #bodyPreguntas .pagination > li:first-child, .gp-ui.gp-estacion-view #bodyRetos .pagination > li:first-child { display: none; }
    .gp-ui.gp-estacion-view #bodyPreguntas .page-link, .gp-ui.gp-estacion-view #bodyRetos .page-link { display: block; width: 100%; min-height: 0; padding: 10px 14px; border: 1px solid var(--gp-border); border-radius: 8px !important; background: var(--gp-page); color: var(--gp-text); text-align: left; white-space: normal; }
    @media (max-width: 767px) {
        .gp-ui.gp-estacion-view .gp-estacion-workspace.gp-estacion-listo { display: block; }
        .gp-ui.gp-estacion-view .gp-estacion-navegacion { position: static; flex-direction: row; gap: 6px; max-width: 100%; margin-bottom: 16px; overflow-x: auto; overscroll-behavior-x: contain; }
        .gp-ui.gp-estacion-view .gp-estacion-nav-item { flex: 0 0 auto; width: auto; white-space: nowrap; }
        .gp-ui.gp-estacion-view #txtDes .gp-estacion-recurso-layout { grid-template-columns: 1fr; }
        .gp-ui.gp-estacion-view #txtDes .gp-estacion-herramientas { grid-column: 1; grid-row: auto; flex-direction: row !important; flex-wrap: wrap !important; justify-content: center; }
    }
    .gp-ui.gp-programa-view .gp-programa-sesion { margin: 0 0 16px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); overflow-wrap: anywhere; }
    .gp-ui.gp-programa-view .gp-programa-sesion > .cardHeaderRed { padding: 14px 20px; background: var(--gp-selection) !important; color: var(--gp-primary) !important; text-align: left; }
    .gp-ui.gp-programa-view .gp-programa-sesion > .cardHeaderRed h4 { margin: 0; color: var(--gp-primary) !important; font-size: 17px; font-weight: 600; }
    .gp-ui.gp-programa-view .gp-programa-sesion > .card-body { padding: 16px !important; }
    .gp-ui.gp-programa-view .gp-programa-resumen-tarjeta strong { font-size: 16px; line-height: 1.4; }
    .gp-ui.gp-informe-view .gp-informe-aspectos { grid-column: 1 / -1; display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px; }
    .gp-ui.gp-informe-view .gp-informe-aspectos:empty { display: none; }
    .gp-ui.gp-informe-view .gp-informe-aspectos img { width: 32px !important; height: 32px !important; margin: 0 !important; object-fit: contain; }
    .gp-ui.gp-informe-view .gp-informe-seccion { margin: 0 0 16px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); overflow-wrap: anywhere; }
    .gp-ui.gp-informe-view .gp-informe-seccion > .d-flex:first-child { padding: 14px 20px !important; background: var(--gp-calendar-header) !important; color: var(--gp-on-calendar-header) !important; font-size: 17px; font-weight: 600; }
    .gp-ui.gp-informe-view .gp-informe-seccion .mensajeInforme { padding: 20px 24px; text-align: left; line-height: 1.6; }
    .gp-ui.gp-informe-view .gp-informe-seccion .mensajeInforme p { margin-bottom: 12px !important; }
    .gp-ui.gp-informe-view .gp-informe-seccion .imgLNuevaInforme { width: auto; height: auto; max-width: min(100%, 520px); max-height: 420px; object-fit: contain; }
    .gp-ui.gp-informe-view .gp-informe-seccion .video-container { width: min(100%, 520px); max-width: 100%; }
    .gp-ui.gp-informe-view .gp-informe-seccion video, .gp-ui.gp-informe-view .gp-informe-seccion audio { max-width: 100%; height: auto; }
    .gp-ui.gp-informe-view .gp-informe-resumen-tarjetas { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr)); gap: 10px; }
    .gp-ui.gp-informe-view .gp-informe-resumen-tarjeta { display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 60px; padding: 12px; border: 1px solid var(--gp-border); border-radius: 10px; background: var(--gp-surface); color: var(--gp-primary); text-align: center; overflow-wrap: anywhere; cursor: pointer; }
    .gp-ui.gp-informe-view .gp-informe-resumen-tarjeta:hover { border-color: var(--gp-control-border); background: var(--gp-selection); }
    .gp-ui.gp-informe-view .gp-informe-resumen-tarjeta:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
    .gp-ui.gp-informe-view #txtDes .gp-estacion-juego img { display: block; width: 100%; height: 150px !important; max-width: 100% !important; max-height: 150px !important; padding: 8px; background: var(--gp-page); object-fit: contain; }
    .gp-ui.gp-informe-view #txtDes > .card img { max-width: 100%; height: auto; object-fit: contain; }
    .gp-ui.gp-informe-view #cardHeaderFicha { margin-top: 0 !important; }
    body.gp-ui.gp-informe-view.gp-informe-ios { padding-top: 90px; }
    .gp-ui.gp-informe-view.gp-informe-ios .headerBack { top: 0; left: 0; right: 0; }
    .gp-ui.gp-estacion-view.gp-macro-view .gp-macro-hero { grid-template-columns: 72px minmax(0, 1fr) auto; }
    .gp-ui.gp-macro-view .gp-macro-aspectos { grid-column: 3; display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; min-width: 0; max-width: min(200px, 25vw); }
    .gp-ui.gp-macro-view .gp-macro-aspectos:empty { display: none; }
    .gp-ui.gp-estacion-view.gp-macro-view .gp-estacion-resumen-tarjetas { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
    .gp-ui.gp-estacion-view.gp-macro-view .gp-estacion-resumen-tarjeta { min-height: 112px; padding: 20px; gap: 10px; line-height: 1.5; }
    .gp-ui.gp-estacion-view.gp-macro-view .gp-programa-resumen-tarjeta strong { line-height: 1.5; }
    .gp-ui.gp-estacion-view.gp-macro-view .gp-estacion-nav-item { line-height: 1.5; overflow-wrap: anywhere; }
    @media (min-width: 1024px) { .gp-ui.gp-estacion-view.gp-macro-view .gp-estacion-workspace.gp-estacion-listo { grid-template-columns: 280px minmax(0, 1fr); } }
    @media (max-width: 1023px) {
        .gp-ui.gp-estacion-view.gp-macro-view .gp-estacion-workspace.gp-estacion-listo { display: block; }
        .gp-ui.gp-estacion-view.gp-macro-view .gp-estacion-navegacion { position: static; flex-direction: row; max-width: 100%; margin-bottom: 16px; overflow-x: auto; }
        .gp-ui.gp-estacion-view.gp-macro-view .gp-estacion-nav-item { flex: 0 0 auto; width: auto; max-width: 260px; white-space: normal; }
    }
    @media (max-width: 575px) { .gp-ui.gp-estacion-view.gp-macro-view .gp-estacion-resumen-tarjetas { grid-template-columns: minmax(0, 1fr); } }
    .gp-ui.gp-macro-view .gp-macro-aspectos img { width: 48px; height: 48px; object-fit: contain; }
    .gp-ui.gp-macro-view .gp-macro-recursos > .card[hidden] { display: none !important; }
    .gp-ui.gp-macro-view .gp-macro-recursos > .card { margin: 0 0 14px !important; border: 1px solid var(--gp-border) !important; border-radius: 10px; box-shadow: none; }
    .gp-ui.gp-macro-view .gp-macro-recursos > .card > .color-1 { padding: 10px 16px !important; background: var(--gp-selection) !important; color: var(--gp-primary) !important; text-align: left !important; }
    .gp-ui.gp-macro-view .gp-macro-recursos > .card > .card-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; background: var(--gp-surface) !important; text-align: left; }
    .gp-ui.gp-macro-view .gp-macro-recursos > .card > .card-header h4 { color: var(--gp-primary) !important; font-size: 18px; font-weight: 600; }
    .gp-ui.gp-macro-view .gp-macro-recursos .gp-estacion-juego img { display: block; width: 100%; height: 150px !important; max-width: 100% !important; max-height: 150px !important; padding: 8px; background: var(--gp-page); object-fit: contain; }
    .gp-ui.gp-macro-view .gp-macro-recursos img:not(.img-small):not(.img-small-xs) { max-width: min(100%, 520px); max-height: 420px; height: auto; object-fit: contain; }
    .gp-ui.gp-macro-view .gp-macro-recursos video { max-width: 100%; height: auto !important; max-height: 420px; }
    @media (max-width: 575px) { .gp-ui.gp-estacion-view.gp-macro-view .gp-macro-hero { grid-template-columns: 48px minmax(0, 1fr) auto; } }
    .gp-ui.gp-programa-view .gp-programa-estacion[hidden] { display: none !important; }
    .gp-ui.gp-programa-view .gp-programa-estacion-seccion .card[hidden] { display: none !important; }
    .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-galeria[hidden], .gp-ui.gp-programa-view .gp-programa-sesion .gp-estacion-galeria[hidden], .gp-ui.gp-programa-view .gp-programa-sesion .gp-estacion-volver-recursos[hidden] { display: none !important; }
    .gp-ui.gp-print.gp-programa-sheet .gp-programa-estacion .gp-estacion-juego img { display: block; width: 100%; height: 150px !important; max-width: 100% !important; max-height: 150px !important; padding: 8px; background: var(--gp-page); object-fit: contain; }
    @media (max-width: 1100px) {
        .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-workspace.gp-estacion-listo { display: block; }
        .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-navegacion { position: static; flex-direction: row; max-width: 100%; margin-bottom: 16px; overflow-x: auto; }
        .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-nav-item { flex: 0 0 auto; width: auto; white-space: nowrap; }
    }
    .gp-ui.gp-programa-view .gp-programa-estacion-hero { padding: 18px 22px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); }
    .gp-ui.gp-programa-view .gp-programa-estacion-hero > span:first-child { display: block; color: var(--gp-muted); font-size: 13px; font-weight: 600; }
    .gp-ui.gp-programa-view .gp-programa-estacion-hero h2 { margin: 6px 0 10px; color: var(--gp-primary); font-size: 22px; overflow-wrap: anywhere; }
    .gp-ui.gp-programa-view .gp-programa-estacion-seccion { margin: 0 0 16px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); overflow-wrap: anywhere; }
    .gp-ui.gp-programa-view .gp-programa-estacion-seccion > .card-body { padding: 16px !important; }
    .gp-ui.gp-programa-view .gp-programa-estacion-seccion > .card-body > .card { margin: 0 0 14px !important; border: 1px solid var(--gp-border) !important; border-radius: 10px; box-shadow: none; }
    .gp-ui.gp-programa-view .gp-programa-estacion-seccion > .card-body > .card > .color-1 { padding: 10px 16px !important; background: var(--gp-selection) !important; color: var(--gp-primary) !important; text-align: left !important; }
    .gp-ui.gp-programa-view .gp-programa-estacion-seccion > .card-body > .card > .card-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; background: var(--gp-surface) !important; text-align: left; }
    .gp-ui.gp-programa-view .gp-programa-estacion-seccion > .card-body > .card > .card-header h4 { color: var(--gp-primary) !important; font-size: 18px; font-weight: 600; }
    .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-recurso-layout { display: grid; grid-template-columns: minmax(0, 1fr) 180px; align-items: start; gap: 14px; }
    .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-recurso-layout > .tab-content, .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-recurso-layout > div[id] { grid-column: 1; min-width: 0; }
    .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-herramientas { grid-column: 2; grid-row: 1 / span 4; display: flex; flex-direction: column !important; flex-wrap: nowrap !important; justify-content: flex-start; gap: 8px; max-width: 100%; overflow: visible; }
    .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-herramientas .btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; margin: 0 !important; padding: 8px 12px; border: 1px solid var(--gp-control-border); border-radius: 8px !important; background: var(--gp-surface); color: var(--gp-primary); white-space: normal; }
    .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-herramientas .btn.btn-04 { border-color: var(--gp-primary); background: var(--gp-selection); }
    @media (max-width: 767px) {
        .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-recurso-layout { grid-template-columns: 1fr; }
        .gp-ui.gp-programa-view .gp-programa-estacion .gp-estacion-herramientas { grid-column: 1; grid-row: auto; flex-direction: row !important; flex-wrap: wrap !important; justify-content: center; }
    }
    @media (max-width: 575px) {
        body.gp-ui.gp-estacion-view { padding: 12px; }
        .gp-ui.gp-estacion-view .gp-estacion-hero { grid-template-columns: 48px minmax(0, 1fr) 48px; gap: 10px; padding: 16px 12px; }
        .gp-ui.gp-estacion-view .gp-estacion-logo, .gp-ui.gp-estacion-view .gp-estacion-aspecto { width: 48px; height: 48px; padding: 5px; border-radius: 9px; }
        .gp-ui.gp-estacion-view .gp-estacion-logo img, .gp-ui.gp-estacion-view .gp-estacion-aspecto img { max-height: 38px !important; }
        .gp-ui.gp-estacion-view .gp-estacion-identidad h1 { font-size: 20px; }
        .gp-ui.gp-estacion-view .gp-estacion-resumen-tarjetas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .gp-ui.gp-estacion-view .gp-estacion-descripcion { padding: 16px; }
        .gp-ui.gp-estacion-view #txtDes, .gp-ui.gp-estacion-view #bodyPreguntas, .gp-ui.gp-estacion-view #bodyRetos { padding: 10px !important; }
        .gp-ui.gp-estacion-view #txtDes .row, .gp-ui.gp-estacion-view #bodyPreguntas .row, .gp-ui.gp-estacion-view #bodyRetos .row { padding: 10px !important; }
    }
}
@media (max-width: 575px) {
    .gp-ui.gp-cuestionario-editor .gp-editor-opcion { grid-template-columns: minmax(0, 1fr) auto; }
    .gp-ui.gp-cuestionario-editor .gp-editor-opcion > .form-control { grid-column: 1 / -1; }
    .gp-ui.gp-cuestionario-editor .gp-editor-opcion-otra { justify-self: end; }
}
.gp-ui.gp-assessment .respuesta-otra { flex-basis: 100%; }
.gp-ui.gp-assessment .pregunta-cuestionario, .gp-ui.gp-assessment .pregunta-vista, .gp-ui.gp-assessment .seccion-cuestionario, .gp-ui.gp-assessment .txtRes { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-assessment .txtRes { white-space: normal !important; }
.gp-ui .gp-test-intermedio .carta > a, .gp-ui .gp-liga-alumno-lista .carta > a { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 72px; padding: 0 12px; text-align: center; }
.gp-ui .gp-test-intermedio .carta .txtRes, .gp-ui .gp-liga-alumno-lista .carta .txtRes { width: 100%; text-align: center; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-assessment .ArrowButton { min-height: 100px; height: auto; justify-content: center; align-items: center; border-radius: 8px; }
.gp-ui .btn.gp-choice-selected .test2 { color: var(--gp-on-primary) !important; }
.gp-ui .btn.gp-choice-neutral .test2 { color: var(--gp-muted) !important; }
@media (max-width: 767px) {
 .gp-ui.gp-assessment .col { flex-basis: 100%; margin-right: 0; padding-right: 15px; }
 .gp-ui.gp-assessment .shw-rside { max-width: 100%; width: min(100%, 400px); }
 .gp-ui.gp-assessment .dato-numerico { min-width: 0; flex: 1 1 110px; }
}

/* Las respuestas de evaluación conservan el significado de sus tres estados. */
.gp-ui .btn.btn-outline-v { background: var(--gp-success-soft) !important; color: var(--gp-success) !important; border-color: var(--gp-success) !important; }
.gp-ui .btn.btn-outline-n { background: var(--gp-surface) !important; color: var(--gp-muted) !important; border-color: var(--gp-control-border) !important; }
.gp-ui .btn.btn-outline-r { background: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; border-color: var(--gp-danger) !important; }
.gp-ui .btn.btn-outline-v.active { background: var(--gp-success) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn.btn-outline-n.active { background: var(--gp-selection) !important; color: var(--gp-muted) !important; }
.gp-ui .btn.btn-outline-r.active { background: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui .btn.btn-outline-v.active .test, .gp-ui .btn.btn-outline-r.active .test { color: var(--gp-on-primary) !important; }
.gp-ui .btn.btn-outline-n.active .test2 { color: var(--gp-muted) !important; }
.gp-ui .btn.gp-mark-choice { min-width: 44px; min-height: 44px; }
.gp-ui .btn.gp-mark-choice .vhidden { display: none; }
.gp-ui .btn.gp-mark-choice::after { font-size: 20px; line-height: 1; }
.gp-ui .btn.btn-outline-v.gp-mark-choice::after { content: '✓'; }
.gp-ui .btn.btn-outline-n.gp-mark-choice::after { content: '−'; }
.gp-ui .btn.btn-outline-r.gp-mark-choice::after { content: '×'; }

/* Opciones nativas y de Material: el estado inactivo conserva la paleta. */
.gp-ui [type="checkbox"]:not(.filled-in):not(:checked) + label::before, .gp-ui [type="radio"]:not(:checked) + label::before { border-color: var(--gp-control-border) !important; }
.gp-ui [type="checkbox"]:not(.filled-in):checked + label::before { border-right-color: var(--gp-primary) !important; border-bottom-color: var(--gp-primary) !important; }
.gp-ui [type="radio"]:checked + label::after { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui [type="radio"]:disabled + label, .gp-ui [type="checkbox"]:disabled + label { color: var(--gp-muted) !important; }
.gp-ui [type="radio"]:disabled + label::before, .gp-ui [type="checkbox"]:disabled + label::before { color: var(--gp-muted) !important; border-color: var(--gp-control-border) !important; }
.gp-ui [type="radio"]:disabled:checked + label::after, .gp-ui [type="checkbox"].filled-in:disabled + label::after { color: var(--gp-muted) !important; background: var(--gp-selection) !important; border-color: var(--gp-control-border) !important; }

.gp-ui [type="checkbox"]:disabled:checked + label::before { border-color: transparent var(--gp-muted) var(--gp-muted) transparent !important; }

.gp-ui .cardSeleccionada .text-muted, .gp-ui .cardSeleccionada .text-success, .gp-ui .cardActiva .text-muted { color: var(--gp-on-primary) !important; }

.gp-ui .PinturaRoot .PinturaButtonCenter, .gp-ui .PinturaRoot .PinturaButtonCenter * { color: var(--gp-primary) !important; outline-color: var(--gp-primary); }

.gp-ui .gp-header-actions { flex-shrink: 1; min-width: 0; }
.gp-ui.gp-assessment #bodyAspectos h4, .gp-ui.gp-assessment #bodyAspectos h5 { white-space: normal !important; overflow-wrap: anywhere; }

.gp-ui .modal-header { color: var(--gp-text) !important; }
.gp-ui .modal-header .modal-title { color: var(--gp-text) !important; }

/* Informes, estadísticas y diplomas. */
.gp-ui.gp-reports .barraTitulo { background: transparent !important; color: var(--gp-text) !important; min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-reports .btn.gp-action-back { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px !important; min-height: 44px !important; padding: 0 !important; gap: 0 !important; font-size: 0 !important; }
.gp-ui.gp-reports .btn.gp-action-back > i { font-size: 16px; }
.gp-ui.gp-reports .txtRes, .gp-ui.gp-reports .card-title { white-space: normal !important; overflow-wrap: anywhere; }
.gp-ui.gp-reports .color-picker { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; padding: 10px; background: var(--gp-surface); border-color: var(--gp-control-border); border-radius: 8px; }
.gp-ui.gp-reports .color-picker > button { display: inline-flex; flex: 0 0 44px; width: 44px; height: 44px; padding: 0; border: 1px solid var(--gp-control-border); border-radius: 8px; cursor: pointer; }
.gp-ui.gp-reports .color-picker > button:focus-visible { outline: 3px solid var(--gp-selection); outline-offset: 2px; }
.gp-ui.gp-reports .golfo-anterior, .gp-ui.gp-reports .golfo-cerrar { display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); color: var(--gp-primary); }
.gp-ui.gp-reports .golfo-anterior:hover, .gp-ui.gp-reports .golfo-cerrar:hover { background: var(--gp-selection); }
.gp-ui.gp-reports .golfo-anterior:focus-visible, .gp-ui.gp-reports .golfo-cerrar:focus-visible { outline: 3px solid var(--gp-selection); outline-offset: 2px; }
.gp-ui.gp-reports .golfo-opcion { text-align: left; }
.gp-ui.gp-reports .golfo-opcion.seleccionada { background: var(--gp-selection); }
.gp-ui.gp-reports #listaEstadisticas > .card, .gp-ui.gp-reports #listaEstadisticas2 > .card { min-width: 0; flex: 1 1 0; }
.gp-ui.gp-reports canvas { max-width: 100%; }
.gp-ui.gp-reports #rowPrincipal { margin-top: 24px; }
.gp-ui.gp-reports #ficherosAdds, .gp-ui.gp-reports #videosAdds { display: grid !important; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.gp-ui.gp-reports #ficherosAdds > .card, .gp-ui.gp-reports #videosAdds > .card { min-width: 0; margin: 0; }
.gp-ui.gp-reports #ficherosAdds .card-footer:not(.d-none), .gp-ui.gp-reports #videosAdds .card-footer:not(.d-none) { display: flex; justify-content: center; }
.gp-ui.gp-reports .gp-report-student-filter { display: flex; align-items: center; justify-content: center; gap: 12px; min-height: 44px; margin: 0; padding: 10px 14px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); color: var(--gp-text); line-height: 1.4; text-align: left; cursor: pointer; }
.gp-ui.gp-reports .gp-report-student-filter input { position: static; opacity: 1; appearance: auto; flex: 0 0 20px; width: 20px; height: 20px; margin: 0; accent-color: var(--gp-primary); }
.gp-ui.gp-reports .gp-report-student-filter span { min-width: 0; overflow-wrap: anywhere; }
@media (min-width: 768px) { .gp-ui.gp-reports #ficherosAdds, .gp-ui.gp-reports #videosAdds { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.gp-ui.gp-reports #home2 form > .row:first-child > div { min-width: 0; }
.gp-ui.gp-reports #home2 form > .row:first-child > div > .form-group { display: flex; flex-direction: column; height: calc(100% - 20px); }
.gp-ui.gp-reports #home2 form > .row:first-child > div > .form-group > label:first-child { display: flex; align-items: center; justify-content: center; min-height: 40px; margin-bottom: 8px; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-reports #home2 form > .row:first-child > div > .form-group > .form-control, .gp-ui.gp-reports #home2 form > .row:first-child > div > .form-group > .custom-select { flex: 1 1 auto; }
.gp-ui .card-header[style*="background"]:not([data-gp-color]):not(.gp-data-color) { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .card-header[style*="background"]:not([data-gp-color]):not(.gp-data-color) .card-title,
.gp-ui .card-header[style*="background"]:not([data-gp-color]):not(.gp-data-color) .text-white { color: var(--gp-primary) !important; }
.gp-ui .card-header > .botonDesplegable { display: flex; align-items: center; justify-content: center; min-height: 44px; color: var(--gp-primary) !important; overflow-wrap: anywhere; }
.gp-ui .navInforme { border-color: var(--gp-control-border); min-width: 0; }
.gp-ui .nav-pills2 { display: flex; flex-wrap: nowrap; overflow-x: auto; padding: 0; margin-bottom: 0; }
.gp-ui .nav-pills2 .nav-link { min-height: 44px; display: flex; align-items: center; justify-content: center; color: var(--gp-primary); }
.gp-ui .nav-pills2 .nav-link.active { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui.gp-reports .color-picker > button { color: var(--gp-primary); outline-color: var(--gp-primary); }
.gp-ui .select2-search__field { border-color: var(--gp-control-border) !important; outline-color: var(--gp-primary); background: var(--gp-surface); color: var(--gp-text); }
.gp-ui .select2-search__field:focus { border-color: var(--gp-primary) !important; box-shadow: 0 0 0 3px var(--gp-selection); }
.gp-ui a.bg-light:hover, .gp-ui a.bg-light:active, .gp-ui a.bg-light:focus { background: var(--gp-selection) !important; color: var(--gp-primary) !important; outline-color: var(--gp-primary); }
@media (min-width: 768px) and (max-width: 1199px) {
 .gp-ui.gp-reports #home2 form > .row:first-child > .col-lg-3 { flex: 0 0 50%; max-width: 50%; }
}

/* Ligas y competición. */
.gp-ui.gp-league .barraTitulo { background: transparent !important; color: var(--gp-text) !important; min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-league .btn.gp-action-back { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px !important; min-height: 44px !important; padding: 0 !important; gap: 0 !important; font-size: 0 !important; }
.gp-ui.gp-league .btn.gp-action-back > i { font-size: 16px; }
.gp-ui.gp-league .txtRes, .gp-ui.gp-league .numero-equipo, .gp-ui.gp-league #divListas { white-space: normal !important; overflow-wrap: anywhere; }
.gp-ui.gp-league .card .txtRes { padding: 12px; margin: 0; }
.gp-ui.gp-league .carta.color-5 { background: var(--gp-selection) !important; color: var(--gp-primary) !important; border-color: var(--gp-border); }
.gp-ui.gp-league .carta.color-5 .txtRes { color: var(--gp-primary) !important; }
.gp-ui.gp-league .rfeg-license-current { flex-wrap: wrap; justify-content: center; text-align: center; }
.gp-ui.gp-league .rfeg-summary-main { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-league .rfeg-summary-main h2 { overflow-wrap: anywhere; }
.gp-ui.gp-league .rfeg-shell { max-width: 800px; }
.gp-ui.gp-league .rfeg-summary-card { border-radius: 14px; }
.gp-ui.gp-league .rfeg-summary-main h2 { font-family: inherit; font-size: 22px; font-weight: 500; line-height: 1.4; }
.gp-ui .handle > .card-header { min-height: 44px; cursor: grab; }
.gp-ui .handle > .card-header::before { content: "\f0c9"; font-family: "Font Awesome 5 Free"; font-weight: 900; display: inline-block; margin-right: 8px; }
.gp-ui.gp-league #rowEquipos > div { min-width: 0; }
.gp-ui.gp-league #rowEquipos .card-body { display: flex; justify-content: center; align-items: center; }
.gp-ui.gp-league #rowEquipos .puntos-equipo { color: var(--gp-primary) !important; font-weight: 600; }
@media (min-width: 768px) and (max-width: 1199px) {
 .gp-ui.gp-league #rowEquipos > div { flex: 0 0 50%; max-width: 50%; }
}
@media (max-width: 767px) {
 .gp-ui.gp-league .col { flex-basis: 100%; margin-right: 0; padding-right: 15px; }
 .gp-ui.gp-league .shw-rside, .gp-ui.gp-league .shw-rside2 { max-width: 100%; }
 .gp-ui.gp-league .rfeg-summary-card { grid-template-columns: minmax(0, 1fr) auto; gap: 16px; padding: 16px; }
 .gp-ui.gp-league .rfeg-summary-left { grid-column: 1; grid-row: 1; min-width: 0; min-height: 0; border-right: 0; padding-right: 0; flex-direction: row; justify-content: flex-start; gap: 12px; }
 .gp-ui.gp-league .rfeg-summary-main { grid-column: 1 / -1; grid-row: 2; text-align: center; }
 .gp-ui.gp-league .rfeg-summary-hcp { grid-column: 2; grid-row: 1; padding-left: 0; border-left: 0; min-width: 70px; }
 .gp-ui.gp-league .rfeg-summary-avatar { flex: 0 0 58px; width: 58px; height: 58px; font-size: 36px; }
}
@media (max-width: 767px) {
 .gp-ui.gp-reports .col { flex-basis: 100%; margin-right: 0; padding-right: 15px; }
 .gp-ui.gp-reports .shw-rside, .gp-ui.gp-reports .shw-rside2 { max-width: 100%; }
 .gp-ui.gp-reports .ArrowButton { min-height: 100px; height: auto; justify-content: center; align-items: center; }
}

.gp-ui .fa-medal { display: inline-block; font-size: 20px; line-height: 1; vertical-align: middle; }
.gp-ui .fa-medal::before { content: "\f091"; font-family: "Font Awesome 5 Free"; font-weight: 900; font-style: normal; }

/* Comunicaciones, noticias, emails, tareas y artículos. */
.gp-ui.gp-communications .barraTitulo { background: transparent !important; color: var(--gp-text) !important; min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-communications .btn.gp-action-back { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px !important; min-height: 44px !important; padding: 0 !important; gap: 0 !important; font-size: 0 !important; }
.gp-ui.gp-communications .btn.gp-action-back > i { font-size: 16px; }
.gp-ui.gp-communications .sl-item, .gp-ui.gp-communications .sl-right, .gp-ui.gp-communications .sl-left, .gp-ui.gp-communications #articulo, .gp-ui.gp-communications #listaPlantillas { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-communications .sl-item .sl-left { float: none; margin: 0; width: auto; display: flex; align-items: center; justify-content: center; gap: 8px; }
.gp-ui.gp-communications .sl-item .sl-right { margin-left: 0; }
.gp-ui.gp-communications .sl-item .sl-left img { flex: 0 0 40px; width: 40px; height: 40px; object-fit: cover; }
.gp-ui.gp-communications .sl-item .sl-date { font-size: 14px; color: var(--gp-muted); }
.gp-ui.gp-communications .sl-item .btn[download] { max-width: 100%; white-space: normal; overflow-wrap: anywhere; background: var(--gp-success-soft) !important; border-color: var(--gp-success) !important; color: var(--gp-success) !important; }
.gp-ui.gp-communications .sl-item .btn[download]:hover { background: var(--gp-success) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-communications .sl-item img, .gp-ui.gp-communications #articulo img, .gp-ui.gp-communications #articulo video { max-width: 100%; height: auto; }
.gp-ui.gp-communications #tagsD { flex-wrap: wrap; gap: 8px; }
.gp-ui.gp-communications #articulo table { display: block; max-width: 100%; overflow-x: auto; }
.gp-ui.gp-communications #listaPlantillas > a { min-height: 44px; display: flex; align-items: center; justify-content: center; padding: 10px; margin-bottom: 8px; white-space: normal; }
.gp-ui .gp-template-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; min-width: 0; }
.gp-ui .gp-template-list > .btn { width: 100%; min-width: 0; max-width: 100%; margin: 0 !important; white-space: normal; overflow-wrap: anywhere; }

/* Selección y acciones de cuestionarios. */
.gp-ui .gp-cuestionarios-acciones { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; }
.gp-ui .gp-cuestionarios-acciones .btn-group, .gp-ui .gp-cuestionarios-acciones .acciones-masivas { margin: 0 !important; }
.gp-ui .gp-cuestionarios-acciones .acciones-masivas { display: flex; flex-wrap: wrap !important; justify-content: center; overflow: visible; }
.gp-ui .gp-cuestionarios-acciones .btn { margin: 0 !important; white-space: normal; }
.gp-ui .gp-cuestionario-selector { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0; cursor: pointer; }
.gp-ui .gp-cuestionario-seleccion, .gp-ui .gp-cuestionarios-seleccionar-pagina { position: static; left: auto; opacity: 1; width: 22px; height: 22px; margin: 0; accent-color: var(--gp-primary); vertical-align: middle; cursor: pointer; }
.gp-ui.gp-communications .task-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.gp-ui.gp-communications .task-summary-item { min-width: 0; width: 100%; min-height: 76px; padding: 10px 6px; border-radius: 8px; font-family: inherit; color: var(--gp-text); }
.gp-ui.gp-communications .task-summary-item small { overflow-wrap: anywhere; font-size: 12px; }
.gp-ui.gp-communications .task-summary-item:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
.gp-ui.gp-communications .task-state-toggle { max-width: 100%; overflow-x: auto; border-radius: 8px; }
.gp-ui.gp-communications .task-state-toggle button { display: inline-flex; justify-content: center; align-items: center; min-height: 44px; min-width: 96px; flex: 0 0 auto; border-radius: 8px; padding: 8px 12px; }
.gp-ui.gp-communications .task-state-toggle button:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: -2px; }
.gp-ui.gp-communications .task-state-toggle button:hover { box-shadow: inset 0 0 0 2px var(--gp-control-border); }
.gp-ui.gp-communications .task-state-toggle .is-active-pendiente { background: var(--gp-danger-soft); color: var(--gp-danger); }
.gp-ui.gp-communications .task-state-toggle .is-active-revision { background: var(--gp-warning-soft); color: var(--gp-warning); }
.gp-ui.gp-communications .task-state-toggle .is-active-finalizada { background: var(--gp-success-soft); color: var(--gp-success); }
@media (max-width: 767px) {
 .gp-ui.gp-communications .shw-rside { max-width: 100%; }
 .gp-ui.gp-communications .col { flex-basis: 100%; margin-right: 0; padding-right: 15px; }
 .gp-ui.gp-communications .sl-item .sl-left { flex-wrap: wrap; }
}

/* Hashtags: el campo y cada etiqueta siguen el tamaño y la paleta comunes. */
.gp-ui .bootstrap-tagsinput { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 44px; width: 100%; padding: 6px 10px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); box-shadow: none; color: var(--gp-text); }
.gp-ui .bootstrap-tagsinput input { min-width: 60px; max-width: 100%; border: 0; outline-color: var(--gp-primary); background: var(--gp-surface); color: var(--gp-text); }
.gp-ui .bootstrap-tagsinput .tag { display: inline-flex; align-items: center; min-height: 44px; margin: 0; padding: 4px 8px; border-radius: 8px; background: var(--gp-selection) !important; color: var(--gp-primary) !important; white-space: normal; overflow-wrap: anywhere; }
.gp-ui .bootstrap-tagsinput .tag [data-role="remove"] { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; margin: 0; border-radius: 8px; color: var(--gp-danger); }
.gp-ui .bootstrap-tagsinput:focus-within { border-color: var(--gp-primary); box-shadow: 0 0 0 3px var(--gp-selection); }

.gp-ui.gp-communications.single-column #main-wrapper { padding: 24px; }
@media (max-width: 767px) {
 .gp-ui.gp-communications.single-column #main-wrapper { padding: 16px; }
}

/* La marcación comparte la paleta cerrada; no ofrece un color arbitrario adicional. */
.gp-ui .doka--color-input { display: none; }

/* Las tarjetas seleccionadas mantienen el contraste también al heredar .card. */
.gp-ui .card.cardSeleccionada { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; border-color: var(--gp-primary) !important; }
.gp-ui .card.cardSeleccionada h4, .gp-ui .card.cardSeleccionada h5, .gp-ui .card.cardSeleccionada h6 { color: var(--gp-on-primary) !important; }
.gp-ui .doka--root input[name="color-select"] + label { box-shadow: inset 0 0 0 1px var(--gp-control-border); }
.gp-ui .doka--root input[name="color-select"]:focus-visible + label { outline: 2px solid var(--gp-primary); outline-offset: 2px; }

/* Configuración, escuela, espacio y cuenta. */
.gp-ui.gp-account .barraTitulo { background: transparent !important; color: var(--gp-text) !important; min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-account .btn.gp-action-back { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px !important; min-height: 44px !important; padding: 0 !important; gap: 0 !important; font-size: 0 !important; }
.gp-ui.gp-account .btn.gp-action-back > i { font-size: 16px; }
.gp-ui.gp-account-form .page-wrapper > .container-fluid { max-width: 800px; margin: 0 auto; }
.gp-ui.gp-account .gp-profile-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 24px; }
.gp-ui.gp-account .gp-profile-fields > :not(.form-group), .gp-ui.gp-account .gp-profile-fields > .gp-field-wide { grid-column: 1 / -1; }
.gp-ui .gp-birth-fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); gap: 8px; }
.gp-ui .gp-birth-fields > div { min-width: 0; padding: 0 !important; }
.gp-ui .bannerDoka > a.btn { display: inline-flex; align-items: center; justify-content: center; left: calc(50% - 22px); width: 44px; height: 44px; min-height: 44px; padding: 0 !important; border-radius: 8px !important; }
.gp-ui .bannerDoka > a.btn > svg { top: 0; width: 18px; height: 18px; }
.gp-ui.gp-account .bannerDoka { width: min(100%, 240px); }
.gp-ui.gp-account #divResumen, .gp-ui.gp-account #listaEscuelas, .gp-ui.gp-account .card-title, .gp-ui.gp-account .txtRes { min-width: 0; overflow-wrap: anywhere; white-space: normal !important; }
.gp-ui.gp-account .socios-accesos { flex-wrap: nowrap; overflow-x: auto; }
.gp-ui.gp-account .socios-accesos > .btn { flex: 0 0 auto; }
.gp-ui.gp-account .socios-panel h4, .gp-ui.gp-account .extras-panel h4 { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-account .socios-panel h4 > i, .gp-ui.gp-account .extras-panel h4 > i { display: none; }
.gp-ui.gp-account #socios .socios-resumen > .socios-descuento { margin: 0; min-width: 0; }
.gp-ui.gp-account #socios .socios-descuento h4 { margin-bottom: 12px; }
.gp-ui.gp-account #socios .socios-descuento-controles { display: grid; gap: 8px; }
.gp-ui.gp-account #socios .socios-descuento-controles > div { min-width: 0; }
.gp-ui.gp-account #socios .socios-descuento-controles .socios-opcion { margin: 0; }
.gp-ui.gp-account #socios .socios-descuento-controles .socios-guardar { margin-top: 0; }
.gp-ui.gp-account #socios .socios-distribucion { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 20px; margin: 0; }
.gp-ui.gp-account #socios .socios-distribucion > div { width: 100%; max-width: 100%; min-width: 0; padding: 0; }
.gp-ui.gp-account #socios .socios-acciones input { max-width: 100%; min-width: 0; }
@media (min-width: 768px) { .gp-ui.gp-account #socios .socios-distribucion { grid-template-columns: minmax(0, 1.8fr) minmax(220px, 1fr); } .gp-ui.gp-account #socios .socios-accesos { display: none; } }
@media (min-width: 992px) { .gp-ui.gp-account #socios .socios-resumen { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 768px) and (max-width: 991px) { .gp-ui.gp-account #socios .socios-descuento { grid-column: 1 / -1; } }
.gp-ui.gp-account-storage .card-body > .row > .col-8 { flex: 0 0 75%; max-width: 75%; }
.gp-ui.gp-account-storage .card-body > .row > .col-4 { flex: 0 0 25%; max-width: 25%; }
.gp-ui.gp-account-storage .card-body > .d-flex.flex-row { flex-wrap: wrap; justify-content: center; text-align: center; gap: 8px; }
.gp-ui.gp-account-storage .card-body > .d-flex.flex-row > .m-l-10 { margin-left: 0 !important; }
.gp-ui.gp-account-storage .progress { height: 44px; }
.gp-ui.gp-account-storage .progress-bar { height: 44px !important; min-width: 0; display: flex; align-items: center; justify-content: center; }
.gp-ui.gp-account-storage canvas { max-width: 100%; }
.gp-ui.gp-account-storage #listaEscuelas label { min-height: 44px; padding-top: 10px; overflow-wrap: anywhere; }
.gp-ui.gp-account-embedded .page-wrapper { margin-left: 0 !important; padding: 16px; }
.gp-ui.gp-account-embedded .container-fluid { padding: 0 !important; }
@media (max-width: 1199px) {
 .gp-ui.gp-account .gp-school-details > .col-4, .gp-ui.gp-account .gp-school-details > .col-8 { flex: 0 0 100%; max-width: 100%; border-right: 0 !important; }
 .gp-ui.gp-account #dEscuela .col-lg-4, .gp-ui.gp-account #dEscuela .col-lg-8, .gp-ui.gp-account #profile .col-lg-3, .gp-ui.gp-account #profile .col-lg-2, .gp-ui.gp-account #profile .col-lg-4 { flex: 0 0 50%; max-width: 50%; }
 .gp-ui.gp-account-storage .card-body > .row > .col-8, .gp-ui.gp-account-storage .card-body > .row > .col-4 { flex: 0 0 100%; max-width: 100%; border-right: 0 !important; }
 .gp-ui.gp-account-storage .card-body > .d-flex.justify-content-center > .col-6 { flex: 0 0 100%; max-width: 100%; }
}
@media (max-width: 767px) {
 .gp-ui.gp-account .gp-profile-fields { grid-template-columns: minmax(0, 1fr); }
 .gp-ui.gp-account #dEscuela .col-lg-4, .gp-ui.gp-account #dEscuela .col-lg-8, .gp-ui.gp-account #profile .col-lg-3, .gp-ui.gp-account #profile .col-lg-2, .gp-ui.gp-account #profile .col-lg-4 { flex: 0 0 100%; max-width: 100%; }
 .gp-ui.gp-account .shw-rside { max-width: 100%; }
 .gp-ui.gp-account.single-column #main-wrapper { padding: 16px; }
}

.gp-ui.gp-account.single-column #main-wrapper { padding: 24px; }
@media (max-width: 767px) {
 .gp-ui.gp-account.single-column #main-wrapper { padding: 16px; }
}
.gp-ui.gp-account .gp-profile-fields > .form-group { margin-top: 0 !important; }
.gp-ui.gp-account .gp-profile-fields > .form-group:first-child { grid-column: 1 / -1; }
.gp-ui.gp-account .gp-profile-fields label small { margin-left: 4px; }
.gp-ui.gp-account-storage .progress-bar { color: var(--gp-on-primary) !important; }

/* Acceso, altas, ayuda y avisos. */
.gp-ui.gp-access .barraTitulo { background: transparent !important; color: var(--gp-text) !important; min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-access-login #wrapper { height: auto !important; min-height: 100vh; }
.gp-ui.gp-access-login .login-register { position: relative; height: auto !important; min-height: 100vh; min-height: 100dvh; display: flex; align-items: center; justify-content: center; padding: 24px; background: var(--gp-page) !important; overflow: visible !important; }
.gp-ui.gp-access-login .login-register > div { width: 100%; max-width: 760px; flex: 0 1 760px; padding: 0; }
.gp-ui.gp-access-login .login-box { width: 100% !important; max-width: none; margin: 0; }
.gp-ui.gp-access-login #loginform { max-width: 480px; margin: 0 auto; }
.gp-ui.gp-access-login .gp-login-links > div { flex: 0 0 auto; }
@media (max-width: 575px) {
    .gp-ui.gp-access-login .gp-login-links { flex-direction: column !important; flex-wrap: wrap !important; align-items: stretch; overflow: visible; }
    .gp-ui.gp-access-login .gp-login-links > div { flex: 0 0 auto; width: 100%; min-width: 0; margin: 0 !important; }
    .gp-ui.gp-access-login .gp-login-links > div > .btn { width: 100%; white-space: normal; }
}
.gp-ui.gp-access-login #escuelasDisponibles .card { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-access-login #escuelasDisponibles .box-title { font-size: 18px; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-access-signup .container-fluid { max-width: 1280px; margin: 0 auto; }
/* Campos del alta de profesionales en una cuadrícula común. */
.gp-ui.gp-access-signup .wizard .gp-professor-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 20px; margin: 0; align-items: end; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div, .gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row { display: contents; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div { width: auto; max-width: none; min-width: 0; padding: 0; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields .form-group { margin: 0; min-width: 0; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields .form-group > label:not(.error) { display: flex; align-items: center; justify-content: center; min-height: 40px; margin: 0 0 8px; line-height: 1.4; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#nombreUser) { order: 1; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#apeUser) { order: 2; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#emailUser) { order: 3; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#emailUser2) { order: 4; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#labelFecha) { order: 5; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#gender) { order: 6; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#selPaisNacional) { order: 7; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#selProvincia) { order: 8; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#dni) { order: 9; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#desTel) { order: 10; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#pass) { order: 11; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#Rpass) { order: 12; }
.gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#labelCond), .gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#labelCond1) { order: 13; grid-column: 1 / -1; }
@media (max-width: 575px) { .gp-ui.gp-access-signup .wizard .gp-professor-fields { grid-template-columns: minmax(0, 1fr); } .gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#labelCond), .gp-ui.gp-access-signup .wizard .gp-professor-fields > div > .row > div:has(#labelCond1) { grid-column: auto; } }
.gp-ui.gp-access.single-column #main-wrapper { padding: 24px; }
.gp-ui.gp-access .wizard > .steps > ul { display: flex; flex-wrap: nowrap; overflow-x: auto; gap: 8px; padding-bottom: 8px; }
.gp-ui.gp-access .wizard > .steps > ul > li { float: none; flex: 1 0 140px; width: auto; min-width: 0; }
.gp-ui.gp-access .wizard > .steps > ul > li > a { min-height: 60px; display: flex; align-items: center; justify-content: center; margin: 0; padding: 10px; overflow-wrap: anywhere; }
.gp-ui.gp-access .wizard > .content { min-height: 0; background: var(--gp-surface); }
.gp-ui.gp-access .wizard > .content > .body { position: relative; width: 100%; padding: 16px 0; min-width: 0; }
.gp-ui.gp-access .wizard > .actions > ul { display: flex; flex-wrap: nowrap; gap: 8px; overflow-x: auto; padding: 4px; }
.gp-ui.gp-access .wizard > .actions > ul > li { flex: 0 0 auto; margin: 0; }
.gp-ui.gp-access .wizard > .actions a { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; }
.gp-ui.gp-access .gp-birth-fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); gap: 8px; }
.gp-ui.gp-access .gp-birth-fields > div { min-width: 0; padding: 0 !important; }
.gp-ui.gp-access .wizard .body > .row, .gp-ui.gp-access .wizard label, .gp-ui.gp-access #desCondiciones { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-access-confirmation { padding: 16px !important; }
.gp-ui.gp-access-confirmation form, .gp-ui.gp-access > #form1 { max-width: 800px; margin: 24px auto; padding: 24px; border: 1px solid var(--gp-border); border-radius: 16px; background: var(--gp-surface); }
.gp-ui.gp-access-confirmation img { max-width: 100%; height: auto; }
.gp-ui.gp-access-confirmation h3, .gp-ui.gp-access-confirmation h6, .gp-ui.gp-access-confirmation p { overflow-wrap: anywhere; line-height: 1.6; }
.gp-ui.gp-access-error #wrapper, .gp-ui.gp-access-error .error-box { min-height: 100vh; height: auto; position: relative; top: 0; }
.gp-ui.gp-access-error .error-box { padding: 24px; }
.gp-ui.gp-access-error .error-box > .row > .col-4:empty { display: none; }
.gp-ui.gp-access-error .gp-service-notice { margin: 0 auto !important; }
.gp-ui.gp-access-error .gp-service-notice img { display: block; width: 100%; max-width: 720px; height: auto; max-height: calc(100vh - 48px); object-fit: contain; margin: 0 auto; }
.gp-ui.gp-access-help .vtabs { display: flex; width: 100%; }
.gp-ui.gp-access-help .tabs-vertical { flex: 0 0 220px; max-width: 220px; }
.gp-ui.gp-access-help .vtabs > .tab-content { min-width: 0; flex: 1 1 auto; }
.gp-ui.gp-access-help .card-header a { display: flex; align-items: center; justify-content: center; min-height: 44px; padding: 8px; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-access-help iframe { width: 100%; max-width: 100%; height: auto; aspect-ratio: 16 / 9; }
.gp-ui.gp-access-help .contenedor-editor { overflow-wrap: anywhere; }
.gp-ui.gp-access-help .contenedor-editor img { max-width: 100%; height: auto; }
.gp-ui.gp-access-help .contenedor-editor table { display: block; max-width: 100%; overflow-x: auto; }
.gp-ui.gp-access-landing #banner { padding: 40px 24px; text-align: center; background: var(--gp-selection); }
.gp-ui.gp-access-landing #banner img { max-width: min(100%, 240px); height: auto; }
.gp-ui.gp-access-landing #one { max-width: 1440px; margin: 0 auto; padding: 24px; text-align: center; }
.gp-ui.gp-access-landing #one > .inner { width: 100% !important; }
.gp-ui.gp-access-landing .features { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; width: 100%; }
.gp-ui.gp-access-landing .feature { display: flex; flex-direction: column; max-width: none; width: auto; padding: 24px; background: var(--gp-surface); border: 1px solid var(--gp-border); border-radius: 16px; overflow-wrap: anywhere; }
.gp-ui.gp-access-landing .feature > img { display: block; max-width: 100%; width: 120px; height: auto; margin: 0 auto 16px; }
.gp-ui.gp-access-landing .feature h3 { font-size: 18px; }
.gp-ui.gp-access-landing .feature .actions { margin-top: auto; }
.gp-ui.gp-access-landing ul.actions { display: flex; justify-content: center; list-style: none; padding: 0; margin-bottom: 0; }
.gp-ui.gp-access-landing #one > .inner > .btn { min-width: 68px; }
.gp-ui.gp-access-landing #one > .inner > .btn img { width: 40px; height: auto; }
.gp-ui.gp-access-landing #footer { padding: 24px; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-access-random #listaCartas2 { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 0 !important; }
.gp-ui.gp-access-random .cartaOculta { display: flex; align-items: center; justify-content: center; min-height: 76px; margin: 0 !important; padding: 12px !important; border-radius: 8px; overflow-wrap: anywhere; }
.gp-ui.gp-access-random .cartaOculta input, .gp-ui.gp-access-random .cartaOculta label { pointer-events: none; }
.gp-ui.gp-access-random .cartaOculta[aria-pressed="true"] { background: var(--gp-selection) !important; border-color: var(--gp-primary) !important; }
.gp-ui.gp-access-random .cartaOculta:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
.gp-ui.gp-access-random .slider.slider-horizontal { width: 100%; max-width: 100%; }
@media (min-width: 768px) and (max-width: 1199px) {
 .gp-ui.gp-access-signup .wizard .col-lg-4, .gp-ui.gp-access-signup .wizard .col-lg-6 { flex: 0 0 50%; max-width: 50%; }
 .gp-ui.gp-access-landing .features { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 991px) {
 .gp-ui.gp-access-help .vtabs { display: block; }
 .gp-ui.gp-access-help .tabs-vertical { display: flex; flex-direction: row; flex-wrap: nowrap; overflow-x: auto; max-width: 100%; width: 100%; }
 .gp-ui.gp-access-help .tabs-vertical > li { flex: 0 0 auto; min-width: 140px; max-width: 240px; }
}
@media (max-width: 767px) {
 .gp-ui.gp-access-login .login-register { padding: 16px; }
 .gp-ui.gp-access.single-column #main-wrapper { padding: 16px; }
 .gp-ui.gp-access .wizard > .content > .body { padding: 12px 0; }
 .gp-ui.gp-access-landing .features { grid-template-columns: minmax(0, 1fr); }
 .gp-ui.gp-access-random #listaCartas2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.gp-ui.gp-access-error .error-box img { max-width: 100%; height: auto; }
.gp-ui.gp-access-error .error-body h1 { font-size: clamp(36px, 8vw, 100px) !important; overflow-wrap: anywhere; }
.gp-ui .slider-track, .gp-ui .slider-tick { background: var(--gp-selection); background-image: none; border-color: var(--gp-control-border); }
.gp-ui .slider-selection, .gp-ui .slider-handle { background: var(--gp-primary); background-image: none; border-color: var(--gp-primary); }
.gp-ui .slider-handle::after { content: ""; position: absolute; inset: -12px; border-radius: 50%; }

.gp-ui .breadcrumb-item.active { color: var(--gp-muted); }
.gp-ui .vtabs .tabs-vertical { border-color: var(--gp-border); }
.gp-ui .vtabs .tabs-vertical .nav-link { color: var(--gp-primary); }
.gp-ui .slider-track, .gp-ui .slider-selection, .gp-ui .slider-handle { box-shadow: none; }
.gp-ui.gp-access-signup .gp-signup-shell > .container-fluid { padding: 24px !important; }
.gp-ui.gp-access-signup .page-titles > div { flex: 0 0 100%; max-width: 100%; }
.gp-ui.gp-access-signup .wizard > .content > .body > .row { margin-left: 0; margin-right: 0; }
.gp-ui.gp-access-signup .wizard > .steps > ul > li::before, .gp-ui.gp-access-signup .wizard > .steps > ul > li::after { display: none; }
.gp-ui.gp-access-signup .wizard > .steps > ul > li > a { flex-direction: column; gap: 8px; min-height: 96px; font-size: 14px; text-align: center; }
.gp-ui.gp-access-signup .wizard > .steps .step { position: static; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 36px; width: 36px; height: 36px; min-width: 36px; margin: 0; font-size: 16px; line-height: 1; border-radius: 50%; }
.gp-ui.gp-access-signup .row > .card.wizard-content { min-width: 0; width: 100%; }
.gp-ui.gp-access-signup #main-wrapper > .d-flex > .col-10 { max-width: 100%; flex: 0 1 1280px; padding: 24px; }
@media (max-width: 767px) {
 .gp-ui.gp-access-signup .gp-signup-shell > .container-fluid { padding: 16px !important; }
 .gp-ui.gp-access-signup #main-wrapper > .d-flex > .col-10 { padding: 16px; }
}
.gp-ui .page-titles .breadcrumb .breadcrumb-item.active { color: var(--gp-muted) !important; }
.gp-ui .pricing-body { border-color: var(--gp-border) !important; }

/* Cuadro de mando de dirección: personas, actividad y capacidad de la escuela. */
.gp-ui.gp-dashboard .gp-manager-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) minmax(230px, 300px) auto; gap: 16px; align-items: center; margin-bottom: 20px; }
.gp-ui.gp-dashboard .gp-manager-toolbar h2 { margin: 0 0 4px; font-size: 24px; line-height: 1.35; font-weight: 500; }
.gp-ui.gp-dashboard .gp-manager-toolbar p { margin: 0; color: var(--gp-muted); }
.gp-ui.gp-dashboard .gp-manager-period { min-width: 0; margin: 0; }
.gp-ui.gp-dashboard .gp-manager-period label { display: block; text-align: center; }
.gp-ui.gp-dashboard .gp-manager-period .input-group { flex-wrap: nowrap; }
.gp-ui.gp-dashboard .gp-manager-period input { min-width: 0; text-align: center; }
.gp-ui.gp-dashboard .gp-manager-toolbar > .btn { align-self: end; margin-bottom: 0; min-height: 44px; }
.gp-ui.gp-dashboard .gp-dashboard-overview { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); align-items: start; gap: 20px; }
.gp-ui.gp-dashboard .gp-manager { display: contents; }
.gp-ui.gp-dashboard .gp-manager-kpis { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.gp-ui.gp-dashboard .gp-manager-kpi { min-width: 0; display: grid; grid-template-rows: minmax(40px, auto) auto 1fr; gap: 8px; padding: 18px 14px; border: 1px solid var(--gp-border); background: var(--gp-surface); text-align: center; }
.gp-ui.gp-dashboard .gp-manager-kpi h3 { align-self: center; margin: 0; font-size: 14px; line-height: 1.4; font-weight: 500; color: var(--gp-muted); overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-kpi > strong { font-size: 34px; line-height: 1.25; font-weight: 600; color: var(--gp-primary); overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-kpi p { margin: 0; color: var(--gp-muted); font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-detail { grid-column: 1; grid-row: 2; min-width: 0; display: grid; gap: 20px; }
.gp-ui.gp-dashboard .gp-dashboard-agenda { grid-column: 2; grid-row: 1; min-width: 0; border: 1px solid var(--gp-border); background: var(--gp-surface); padding: 16px; }
.gp-ui.gp-dashboard .gp-dashboard-overview--manager .gp-dashboard-agenda { grid-row: 2; }
.gp-ui.gp-dashboard .gp-dashboard-agenda > h3 { font-size: 16px; font-weight: 500; text-align: center; margin: 0 0 16px; }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filter { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0 0 16px; }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filter label { margin: 0; text-align: center; }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filter select { width: auto; max-width: 100%; min-height: 44px; text-align: center; text-align-last: center; }
.gp-ui.gp-dashboard .gp-dashboard-legacy { grid-column: 1; grid-row: 1; padding: 24px; text-align: center; border: 1px solid var(--gp-border); }
.gp-ui.gp-dashboard .gp-manager-status { margin: 0; padding: 0 4px; color: var(--gp-muted); font-size: 12px; line-height: 1.5; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-status--error { padding: 14px; border: 1px solid var(--gp-danger); color: var(--gp-danger); background: var(--gp-danger-soft); }
.gp-ui.gp-dashboard .gp-manager-panel { min-width: 0; border: 1px solid var(--gp-border); background: var(--gp-surface); }
.gp-ui.gp-dashboard .gp-manager-panel-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px; padding: 14px 16px; color: var(--gp-surface); background: var(--gp-muted); text-align: center; }
.gp-ui.gp-dashboard .gp-manager-panel-head h3 { flex: 1 1 200px; margin: 0; color: inherit; font-size: 16px; font-weight: 500; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-panel-head > span { font-size: 12px; }
.gp-ui.gp-dashboard .gp-manager-panel-head > .btn { flex: 0 0 auto; min-height: 44px; margin: 0; }
.gp-ui.gp-dashboard .gp-manager-priorities { margin: 0; padding: 0; list-style: none; }
.gp-ui.gp-dashboard .gp-manager-priorities li + li { border-top: 1px solid var(--gp-border); }
.gp-ui.gp-dashboard .gp-manager-priorities a { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 16px; min-height: 72px; padding: 12px 16px; color: var(--gp-text); text-align: center; }
.gp-ui.gp-dashboard .gp-manager-priorities a:hover { background: var(--gp-page); }
.gp-ui.gp-dashboard .gp-manager-priorities span, .gp-ui.gp-dashboard .gp-manager-priorities small { display: block; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-priorities small { color: var(--gp-muted); font-size: 11px; line-height: 1.5; margin-top: 3px; }
.gp-ui.gp-dashboard .gp-manager-priorities strong { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 6px; border-radius: 8px; background: var(--gp-page); color: var(--gp-primary); }
.gp-ui.gp-dashboard .gp-manager-priorities .gp-manager-attention { color: var(--gp-warning); background: var(--gp-warning-soft); }
.gp-ui.gp-dashboard #gmSobreAforo.gp-manager-attention { color: var(--gp-danger); background: var(--gp-danger-soft); }
.gp-ui.gp-dashboard .gp-manager-chart { display: flex; align-items: flex-end; gap: 10px; min-height: 180px; max-width: 100%; padding: 18px 16px; overflow-x: auto; }
.gp-ui.gp-dashboard .gp-manager-chart-column { flex: 1 0 58px; min-width: 0; text-align: center; }
.gp-ui.gp-dashboard .gp-manager-chart-column > strong { display: block; color: var(--gp-primary); font-size: 14px; margin-bottom: 6px; }
.gp-ui.gp-dashboard .gp-manager-chart-track { display: flex; align-items: flex-end; height: 110px; border-bottom: 1px solid var(--gp-control-border); }
.gp-ui.gp-dashboard .gp-manager-chart-bar { width: 100%; background: var(--gp-primary); }
.gp-ui.gp-dashboard .gp-manager-chart-column > span { display: block; margin-top: 8px; color: var(--gp-muted); font-size: 10px; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-chart-empty { flex: 1; align-self: center; margin: 0; text-align: center; color: var(--gp-muted); }
.gp-ui.gp-dashboard .gp-registros-filtros { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 16px 0; }
.gp-ui.gp-dashboard .gp-registros-filtros .form-control { width: 180px; max-width: 100%; }
.gp-ui.gp-dashboard .gp-registros-acciones { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; margin: 20px 0; }
.gp-ui.gp-dashboard .gp-registros-chart { align-items: stretch; gap: 8px; }
.gp-ui.gp-dashboard #gmRegistrosEstado { min-height: 1.6em; text-align: center; }
.gp-ui.gp-dashboard .gp-registro-mes { display: flex; flex: 1 0 76px; flex-direction: column; justify-content: flex-end; gap: 8px; min-height: 176px; padding: 8px; border: 2px solid transparent; border-radius: 8px; background: var(--gp-surface); color: var(--gp-primary); text-align: center; cursor: pointer; }
.gp-ui.gp-dashboard .gp-registro-mes[aria-pressed="true"] { border-color: var(--gp-primary); background: var(--gp-selection); }
.gp-ui.gp-dashboard .gp-registro-mes:focus { outline: none; }
.gp-ui.gp-dashboard .gp-registro-mes:focus-visible { outline: 2px dashed var(--gp-primary); outline-offset: -6px; }
.gp-ui.gp-dashboard .gp-registro-mes-nombre::after { content: "\2713"; display: inline-block; width: 1em; margin-left: 4px; font-weight: 700; visibility: hidden; }
.gp-ui.gp-dashboard .gp-registro-mes[aria-pressed="true"] .gp-registro-mes-nombre::after { visibility: visible; }
.gp-ui.gp-dashboard .gp-registro-mes .gp-manager-chart-track { width: 100%; flex: 0 0 110px; }
.gp-ui.gp-dashboard .gp-registro-mes-nombre { display: block; min-height: 32px; font-size: 12px; line-height: 1.3; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-note { margin: 0; padding: 12px 16px; color: var(--gp-muted); font-size: 12px; line-height: 1.5; text-align: center; }
.gp-ui.gp-dashboard .gp-manager-table-scroll { max-width: 100%; overflow-x: auto; }
.gp-ui.gp-dashboard table.gp-manager-table { min-width: 420px; margin: 0; table-layout: fixed; }
.gp-ui.gp-dashboard table.gp-manager-table thead th { color: var(--gp-surface) !important; background: var(--gp-muted) !important; font-size: 12px; }
.gp-ui.gp-dashboard table.gp-manager-table th:first-child { width: 44%; }
.gp-ui.gp-dashboard table.gp-manager-table th:nth-child(2) { width: 36%; }
.gp-ui.gp-dashboard table.gp-manager-table th:last-child { width: 20%; }
.gp-ui.gp-dashboard table.gp-manager-table td { padding: 14px 12px; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard table.gp-manager-table small { display: block; margin-top: 4px; color: var(--gp-muted); font-size: 11px; }
.gp-ui.gp-dashboard .gp-manager-course-name { text-decoration: underline; text-underline-offset: 3px; }
.gp-ui.gp-dashboard .gp-manager-table progress { display: block; width: 100%; height: 8px; margin-top: 8px; border: 0; border-radius: 4px; overflow: hidden; color: var(--gp-primary); background: var(--gp-selection); }
.gp-ui.gp-dashboard .gp-manager-table progress::-webkit-progress-bar { background: var(--gp-selection); }
.gp-ui.gp-dashboard .gp-manager-table progress::-webkit-progress-value { background: var(--gp-primary); }
.gp-ui.gp-dashboard .gp-manager-table progress::-moz-progress-bar { background: var(--gp-primary); }
.gp-ui.gp-dashboard .gp-manager-table-empty { padding: 24px !important; color: var(--gp-muted); }
@media (max-width: 1199px) {
    .gp-ui.gp-dashboard .gp-manager-toolbar { grid-template-columns: minmax(0, 1fr) auto; }
    .gp-ui.gp-dashboard .gp-manager-toolbar > div:first-child { grid-column: 1 / -1; text-align: center; }
    .gp-ui.gp-dashboard .gp-dashboard-overview { grid-template-columns: minmax(0, 1fr); }
    .gp-ui.gp-dashboard .gp-manager-detail, .gp-ui.gp-dashboard .gp-dashboard-agenda, .gp-ui.gp-dashboard .gp-dashboard-legacy { grid-column: 1; }
    .gp-ui.gp-dashboard .gp-dashboard-agenda { grid-row: 2; }
    .gp-ui.gp-dashboard .gp-dashboard-overview--manager .gp-dashboard-agenda { grid-row: 3; }
}
@media (max-width: 699px) {
    .gp-ui.gp-dashboard .gp-manager-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
    .gp-ui.gp-dashboard .gp-manager-kpi { padding: 14px 10px; }
    .gp-ui.gp-dashboard .gp-manager-kpi > strong { font-size: 28px; }
    .gp-ui.gp-dashboard .gp-manager-toolbar { gap: 12px; }
    .gp-ui.gp-dashboard .gp-manager-toolbar h2 { font-size: 21px; }
    .gp-ui.gp-dashboard .gp-manager-period { width: 100%; }
    .gp-ui.gp-dashboard .gp-manager-panel-head { padding: 12px; }
}


/* Asistencias registradas y jornadas: dos lecturas separadas en el cuadro de gerencia. */
.gp-ui.gp-dashboard .gp-manager-operations { grid-column: 1 / -1; grid-row: 2; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; min-width: 0; align-items: start; }
.gp-ui.gp-dashboard .gp-manager-operations .gp-manager-panel-head { min-height: 72px; }
.gp-ui.gp-dashboard .gp-manager-operations > .gp-manager-status { grid-column: 1 / -1; }
.gp-ui.gp-dashboard .gp-manager-operations > .gp-manager-status:empty { display: none; }
.gp-ui.gp-dashboard .gp-manager-detail { grid-row: 3; }
.gp-ui.gp-dashboard .gp-dashboard-overview--manager .gp-dashboard-agenda { grid-row: 3; }
.gp-ui.gp-dashboard .gp-manager-operation-summary { display: grid; gap: 6px; padding: 18px 16px 8px; text-align: center; }
.gp-ui.gp-dashboard .gp-manager-operation-summary strong { font-size: 30px; line-height: 1.25; color: var(--gp-primary); }
.gp-ui.gp-dashboard .gp-manager-operation-summary span, .gp-ui.gp-dashboard .gp-manager-operation-summary small { color: var(--gp-muted); line-height: 1.5; }
.gp-ui.gp-dashboard .gp-manager-switch { display: flex; justify-content: center; gap: 8px; max-width: 100%; padding: 8px 12px 16px; overflow-x: auto; }
.gp-ui.gp-dashboard .gp-manager-switch .btn { flex: 0 0 auto; min-height: 44px; margin: 0; }
.gp-ui.gp-dashboard .gp-manager-switch [aria-pressed="true"] { background: var(--gp-selection); color: var(--gp-primary); box-shadow: inset 0 -3px 0 var(--gp-primary) !important; }
.gp-ui.gp-dashboard table.gp-manager-operations-table { min-width: 500px; }
.gp-ui.gp-dashboard table.gp-manager-operations-table th:first-child { width: 34%; }
.gp-ui.gp-dashboard table.gp-manager-operations-table th:nth-child(2) { width: 20%; }
.gp-ui.gp-dashboard table.gp-manager-operations-table th:nth-child(3) { width: 24%; }
.gp-ui.gp-dashboard table.gp-manager-operations-table th:last-child { width: 22%; }
.gp-ui.gp-dashboard .gp-manager-work-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 16px 12px 0; gap: 10px; text-align: center; }
.gp-ui.gp-dashboard .gp-manager-work-kpis > div { min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 8px; padding: 12px 6px; border: 1px solid var(--gp-border); }
.gp-ui.gp-dashboard .gp-manager-work-kpis strong { color: var(--gp-primary); font-size: 22px; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-manager-work-kpis span { color: var(--gp-muted); font-size: 11px; line-height: 1.5; }
.gp-ui.gp-dashboard .gp-manager-more { display: flex; justify-content: center; padding: 12px; }
.gp-ui.gp-dashboard .gp-manager-more .btn { min-height: 44px; margin: 0; }
.gp-ui.gp-dashboard .gp-manager-more:has([hidden]) { padding: 0; }
@media (max-width: 1199px) {
    .gp-ui.gp-dashboard .gp-manager-operations { grid-template-columns: minmax(0, 1fr); }
    .gp-ui.gp-dashboard .gp-dashboard-overview--manager .gp-dashboard-agenda { grid-row: 4; }
}
@media (max-width: 575px) {
    .gp-ui.gp-dashboard .gp-manager-work-kpis { gap: 6px; padding: 12px 8px 0; }
    .gp-ui.gp-dashboard .gp-manager-work-kpis strong { font-size: 18px; }
}


/* Dashboard por secciones: calendario izquierdo y área de gestión derecha. */
.gp-ui.gp-dashboard #dashboardOverview { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 20px; }
.gp-ui.gp-dashboard #dashboardOverview > .gp-dashboard-agenda { grid-column: 1; grid-row: 1; padding: 14px; }
.gp-ui.gp-dashboard .gp-dashboard-main { grid-column: 2; grid-row: 1; min-width: 0; }
.gp-ui.gp-dashboard #resumenGerencia { display: block; }
.gp-ui.gp-dashboard .gp-dashboard-main .gp-manager-toolbar { grid-template-columns: minmax(0, 1fr) auto; gap: 12px; margin-bottom: 16px; }
.gp-ui.gp-dashboard .gp-dashboard-main .gp-manager-toolbar > div:first-child { grid-column: 1 / -1; }
.gp-ui.gp-dashboard .gp-dashboard-main .gp-manager-toolbar h2 { font-size: 22px; }
.gp-ui.gp-dashboard .gp-dashboard-main .gp-manager-toolbar > .btn { align-self: end; }
.gp-ui.gp-dashboard .gp-manager-tabs { display: flex; flex-wrap: nowrap; gap: 8px; max-width: 100%; overflow-x: auto; padding: 4px 3px 12px; margin-bottom: 8px; }
.gp-ui.gp-dashboard .gp-manager-tabs .btn { flex: 0 0 auto; min-width: 100px; min-height: 44px; margin: 0; white-space: nowrap; }
.gp-ui.gp-dashboard .gp-manager-tabs [aria-selected="true"] { background: var(--gp-selection); color: var(--gp-primary); box-shadow: inset 0 -3px 0 var(--gp-primary) !important; }
.gp-ui.gp-dashboard .gp-manager-tabs .gp-sport-tab { color: var(--gp-warning); border-color: var(--gp-warning); background: var(--gp-warning-soft); }
.gp-ui.gp-dashboard .gp-manager-tabs .gp-sport-tab[aria-selected="true"] { color: var(--gp-on-primary); background: var(--gp-warning); box-shadow: inset 0 -3px 0 var(--gp-warning) !important; }
.gp-ui.gp-dashboard .gp-sport-panel { min-width: 0; padding: 16px; border: 1px solid var(--gp-border); background: var(--gp-surface); }
.gp-ui.gp-dashboard .gp-sport-filters { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); align-items: end; gap: 12px; margin-bottom: 16px; }
.gp-ui.gp-dashboard .gp-sport-filters[hidden], .gp-ui.gp-dashboard .gp-manager-attendance-legacy[hidden] { display: none !important; }
.gp-ui.gp-dashboard #gmOperativaEstado[hidden] { display: none !important; }
.gp-ui.gp-dashboard .gp-sport-filters label { display: grid; gap: 5px; min-width: 0; margin: 0; color: var(--gp-muted); font-size: 13px; text-align: center; }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filtros { display: grid; grid-template-columns: minmax(0, 1fr); align-items: end; gap: 12px; margin-bottom: 16px; }
.gp-ui.gp-dashboard .gp-dashboard-agenda-integrada .gp-dashboard-agenda-filtros { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filtros .gp-dashboard-agenda-filter { min-width: 0; margin: 0; }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filtros .gp-dashboard-agenda-filter select { width: min(100%, 200px); }
.gp-ui.gp-dashboard .gp-dashboard-agenda-integrada .gp-dashboard-agenda-filtros .gp-dashboard-agenda-filter select { width: 100%; }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filtros #dashboardAgendaFiltrosDeportivos:not([hidden]) { display: contents; }
@media (max-width: 991px) { .gp-ui.gp-dashboard .gp-dashboard-agenda-integrada .gp-dashboard-agenda-filtros { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575px) { .gp-ui.gp-dashboard .gp-dashboard-agenda-integrada .gp-dashboard-agenda-filtros { grid-template-columns: minmax(0, 1fr); } }
.gp-ui.gp-dashboard .gp-sport-filters .form-control, .gp-ui.gp-dashboard .gp-sport-filters .btn { width: 100%; min-width: 0; min-height: 44px; margin: 0; }
.gp-ui.gp-dashboard .gp-sport-date-field { display: grid; gap: 5px; min-width: 0; }
.gp-ui.gp-dashboard .gp-sport-date-control { display: flex; align-items: center; gap: 8px; min-width: 0; }
.gp-ui.gp-dashboard .gp-sport-date-control .form-control { flex: 1 1 0; width: 0; background: var(--gp-surface); cursor: pointer; }
.gp-ui.gp-dashboard .gp-sport-filters .gp-sport-date-control .gp-calendar-trigger { flex: 0 0 44px; width: 44px; min-width: 44px; }
.gp-ui.gp-dashboard .gp-personas-filtros { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 2fr); }
.gp-ui.gp-dashboard .gp-personas-filtros > div { display: grid; gap: 5px; min-width: 0; }
.gp-ui.gp-dashboard .gp-persona-buscador { position: relative; }
.gp-ui.gp-dashboard .gp-persona-coincidencias { position: absolute; top: 100%; left: 0; right: 0; z-index: 1051; max-height: min(320px, 45vh); overflow-y: auto; margin-top: 4px; padding: 4px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); box-shadow: var(--gp-shadow); text-align: left; }
.gp-ui.gp-dashboard .gp-persona-coincidencias[hidden] { display: none !important; }
.gp-ui.gp-dashboard .gp-persona-coincidencia { display: flex; align-items: center; min-height: 44px; padding: 10px 12px; border-radius: 6px; color: var(--gp-text); overflow-wrap: anywhere; cursor: pointer; }
.gp-ui.gp-dashboard .gp-persona-coincidencia:hover, .gp-ui.gp-dashboard .gp-persona-coincidencia[aria-selected="true"] { background: var(--gp-soft); color: var(--gp-primary); }
.gp-ui.gp-dashboard .gp-persona-hora-control { display: flex; align-items: center; gap: 8px; min-width: 0; }
.gp-ui.gp-dashboard .gp-persona-hora-control .form-control { flex: 1 1 0; width: 0; }
.gp-ui.gp-dashboard .gp-persona-hora-control .btn { flex: 0 0 auto; width: auto; }
.gp-ui.gp-dashboard .gp-persona-hora-control .btn[aria-pressed="true"] { background: var(--gp-primary); color: var(--gp-on-primary); }
.gp-ui.gp-dashboard .gp-jornada-fecha { width: min(100%, 320px); grid-template-columns: minmax(0, 1fr); margin: 16px auto; }
.gp-ui.gp-dashboard .gp-jornada-date-field { display: grid; gap: 5px; min-width: 0; }
.gp-ui.gp-dashboard #gpMontajesResultados .gp-sport-card > p > strong { font-weight: 700; }
@media (max-width: 991px) { .gp-ui.gp-dashboard .gp-personas-filtros { grid-template-columns: repeat(2, minmax(0, 1fr)); } .gp-ui.gp-dashboard .gp-personas-filtros > .gp-persona-buscador { grid-column: 1 / -1; } }
@media (max-width: 575px) { .gp-ui.gp-dashboard .gp-personas-filtros { grid-template-columns: minmax(0, 1fr); } }
.gp-ui.gp-dashboard .gp-sport-note { margin: 0 0 14px; color: var(--gp-muted); font-size: 13px; text-align: center; }
.gp-ui.gp-dashboard .gp-zonas-tabla { width: 100%; table-layout: fixed; border-collapse: collapse; }
.gp-ui.gp-dashboard .gp-zonas-tabla th, .gp-ui.gp-dashboard .gp-zonas-tabla td { width: 50%; padding: 12px; border: 1px solid var(--gp-border); text-align: center; vertical-align: middle; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-zonas-tabla th { font-weight: 600; }
.gp-ui.gp-dashboard .gp-zonas-tabla .gp-zona-ocupada { background: var(--gp-danger-soft); color: var(--gp-danger); }
.gp-ui.gp-dashboard .gp-zonas-tabla .gp-zona-libre { background: var(--gp-success-soft); color: var(--gp-success); }
.gp-ui.gp-dashboard .gp-sport-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); gap: 12px; }
.gp-ui.gp-dashboard .gp-sport-card { min-width: 0; padding: 14px; border: 1px solid var(--gp-border); background: var(--gp-surface); overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-sport-card h3 { margin: 0 0 6px; color: var(--gp-primary); font-size: 16px; font-weight: 600; }
.gp-ui.gp-dashboard .gp-sport-card p { margin: 4px 0; }
.gp-ui.gp-dashboard .gp-sport-card small { display: block; color: var(--gp-muted); }
.gp-ui.gp-dashboard .gp-montaje-accion { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.gp-ui.gp-dashboard .gp-montaje-etiqueta { display: inline-flex; align-items: center; justify-content: center; min-height: 30px; padding: 4px 10px; border: 1px solid; border-radius: 6px; font-weight: 600; text-align: center; }
.gp-ui.gp-dashboard .gp-montaje-etiqueta--montar { color: #245b36; background: #e1f0e2; border-color: #8bb896; }
.gp-ui.gp-dashboard .gp-montaje-etiqueta--recoger { color: #8b2525; background: #f9dddd; border-color: #d59595; }
.gp-ui.gp-dashboard .gp-montaje-etiqueta--sin { color: #704500; background: #fff0d1; border-color: #d3a65d; }
.gp-ui.gp-dashboard .gp-sport-card .gp-sport-item { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--gp-border); }
.gp-ui.gp-dashboard .gp-sport-summary { margin: 0 0 14px; padding: 12px; background: var(--gp-selection); color: var(--gp-primary); text-align: center; }
.gp-ui.gp-dashboard #gpAsistenciasResultados { grid-template-columns: repeat(auto-fit, minmax(min(100%, 310px), 1fr)); }
.gp-ui.gp-dashboard .gp-asistencia-acciones { display: flex; justify-content: flex-end; margin: 0 0 14px; }
.gp-ui.gp-dashboard .gp-asistencia-acciones .btn { min-height: 44px; white-space: normal; }
.gp-ui.gp-dashboard .gp-asistencia-pendientes-modal .modal-dialog { width: calc(100% - 24px); max-width: 760px; margin: 12px auto; }
.gp-ui.gp-dashboard .gp-asistencia-pendientes-modal .modal-content { max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); }
.gp-ui.gp-dashboard .gp-asistencia-pendientes-modal .modal-body { overflow-y: auto; }
.gp-ui.gp-dashboard .gp-asistencia-pendientes-modal .gp-sport-list { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.gp-ui.gp-dashboard .gp-asistencia-card { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.gp-ui.gp-dashboard .gp-asistencia-card .gp-asistencia-pendiente { min-height: 44px; margin-top: 8px; max-width: 100%; white-space: normal; }
.gp-ui.gp-dashboard .gp-asistencia-card .gp-asistencia-linea { margin: 0; line-height: 1.45; }
.gp-ui.gp-dashboard .gp-asistencia-card .gp-asistencia-porcentaje { align-self: flex-end; display: inline-flex; align-items: center; justify-content: center; min-width: 64px; min-height: 34px; padding: 5px 10px; border: 1px solid; border-radius: 6px; font-weight: 700; }
.gp-ui.gp-dashboard .gp-asistencia-porcentaje--alto { color: #245b36; background: #e1f0e2; border-color: #8bb896; }
.gp-ui.gp-dashboard .gp-asistencia-porcentaje--medio { color: #704500; background: #fff0d1; border-color: #d3a65d; }
.gp-ui.gp-dashboard .gp-asistencia-porcentaje--bajo { color: #8b2525; background: #f9dddd; border-color: #d59595; }
.gp-ui.gp-dashboard .gp-sport-card .gp-asistencia-presentes, .gp-ui.gp-dashboard .gp-sport-summary .gp-asistencia-presentes { color: var(--gp-success) !important; font-weight: 600; }
.gp-ui.gp-dashboard .gp-sport-card .gp-asistencia-ausencias, .gp-ui.gp-dashboard .gp-sport-summary .gp-asistencia-ausencias { color: var(--gp-danger) !important; font-weight: 600; }
.gp-ui.gp-dashboard .gp-persona-modal .modal-dialog { width: calc(100% - 24px); max-width: 600px; margin: 12px auto; }
.gp-ui.gp-dashboard .gp-persona-modal .modal-content { max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); }
.gp-ui.gp-dashboard .gp-persona-modal .modal-body { overflow-y: auto; overflow-wrap: anywhere; text-align: center; }
.gp-ui.gp-dashboard .gp-persona-modal .modal-footer { justify-content: center; }
.gp-ui.gp-dashboard .gp-persona-modal .gp-persona-seccion { padding: 12px 0; border-bottom: 1px solid var(--gp-border); }
.gp-ui.gp-dashboard .gp-persona-modal .gp-persona-seccion:last-child { border-bottom: 0; }
.gp-ui.gp-dashboard .gp-persona-modal .gp-persona-seccion h4 { margin: 0 0 10px; color: var(--gp-primary); font-size: 16px; }
.gp-ui.gp-dashboard .gp-persona-modal .gp-persona-seccion p { margin: 4px 0; }
.gp-ui.gp-dashboard .gp-persona-modal .gp-persona-item, .gp-ui.gp-dashboard .gp-persona-modal .gp-sport-item { margin: 8px 0; padding: 10px; background: var(--gp-page); overflow-wrap: anywhere; }
.gp-ui.gp-dashboard #dashboardOverview.gp-dashboard-agenda-integrada { grid-template-columns: minmax(0, 1fr); }
.gp-ui.gp-dashboard #dashboardOverview.gp-dashboard-agenda-integrada > .gp-dashboard-main { grid-column: 1; grid-row: 1; }
.gp-ui.gp-dashboard .gp-manager-period[hidden], .gp-ui.gp-dashboard #gmActualizar[hidden], .gp-ui.gp-dashboard #gmEstado[hidden] { display: none !important; }
.gp-ui.gp-dashboard #resumenGerencia [data-gm-panel][hidden], .gp-ui.gp-dashboard #gmOperativa[hidden] { display: none !important; }
.gp-ui.gp-dashboard #resumenGerencia [data-gm-panel]:not([hidden]) { display: block; min-width: 0; }
.gp-ui.gp-dashboard #gmOperativa { display: block; }
.gp-ui.gp-dashboard .gp-manager-tab-panel > .gp-manager-panel, .gp-ui.gp-dashboard .gp-manager-tab-panel > .gp-manager-kpis { margin-top: 16px; }
.gp-ui.gp-dashboard #resumenGerencia > .gp-manager-status { margin-bottom: 12px; }
.gp-ui.gp-dashboard #gmOperativa > .gp-manager-status:not(:empty) { margin-bottom: 12px; }
.gp-ui.gp-dashboard .gp-dashboard-main .gp-dashboard-legacy { margin-top: 16px; }
.gp-ui.gp-dashboard .gp-dashboard-agenda .fc-toolbar { justify-content: center; }
.gp-ui.gp-dashboard .gp-dashboard-agenda .fc-toolbar-chunk { min-width: 0; max-width: 100%; }
.gp-ui.gp-dashboard .gp-dashboard-agenda .fc-toolbar-title { font-size: 18px; text-align: center; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-event-title { overflow-wrap: anywhere; }
@media (max-width: 1399px) {
    .gp-ui.gp-dashboard #resumenGerencia .gp-manager-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 768px) and (max-width: 1199px) {
    .gp-ui.gp-dashboard #dashboardOverview { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
}
@media (max-width: 767px) {
    .gp-ui.gp-dashboard #dashboardOverview { grid-template-columns: minmax(0, 1fr); gap: 16px; }
    .gp-ui.gp-dashboard #dashboardOverview > .gp-dashboard-agenda { grid-column: 1; grid-row: 1; }
    .gp-ui.gp-dashboard .gp-dashboard-main { grid-column: 1; grid-row: 2; }
    .gp-ui.gp-dashboard .gp-manager-tabs .btn { min-width: 94px; }
}

@media (max-width: 1199px) {
    .gp-ui.gp-dashboard .gp-dashboard-main .gp-manager-toolbar { grid-template-columns: minmax(0, 1fr); }
    .gp-ui.gp-dashboard .gp-dashboard-main .gp-manager-toolbar > .btn { justify-self: end; }
}
@media (min-width: 768px) and (max-width: 1199px) {
    .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-table, .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-table tbody, .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-day, .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-day > th { display: block; width: 100%; }
    .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-event { display: grid; grid-template-columns: 20px minmax(0, 1fr); }
    .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-event > td { display: block; width: auto; padding: 8px; }
    .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-event-time { grid-column: 1 / -1; padding-bottom: 0 !important; }
    .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-event-graphic { padding-right: 0 !important; }
    .gp-ui.gp-dashboard .gp-dashboard-agenda .fc-list-event-title { overflow-wrap: break-word; }
}
/* Navegación lateral: identidad verde bajo el logo de la escuela. */
.gp-ui .left-sidebar { background: var(--gp-primary); border-right-color: var(--gp-primary-hover); }
.gp-ui :is(.left-sidebar, .gp-school-logo-preview) .user-profile { width: 96px; max-width: calc(100% - 32px); height: 96px; margin: 16px auto 12px !important; padding: 16px; border: 1px solid var(--gp-border); border-radius: 50%; box-shadow: 0 0 0 4px rgba(228, 238, 232, .15); background-color: var(--gp-surface) !important; background-repeat: no-repeat !important; background-position: center !important; background-size: contain !important; background-origin: content-box; background-clip: padding-box; }
.gp-ui .left-sidebar .user-profile .profile-img { display: none; }
.gp-ui :is(.left-sidebar, .gp-school-logo-preview) .user-profile.gp-school-logo--wide { width: 176px; border-radius: 48px; }
.gp-ui :is(.left-sidebar, .gp-school-logo-preview) .user-profile.gp-school-logo--transparent { background-color: var(--gp-selection) !important; }
.gp-ui :is(.left-sidebar, .gp-school-logo-preview) .user-profile.gp-school-logo--dark, .gp-ui :is(.left-sidebar, .gp-school-logo-preview) .user-profile[data-gp-logo-surface="dark"] { background-color: var(--gp-primary) !important; }
@media (min-width: 1200px) {
    .gp-ui.mini-sidebar:not(.gp-touch-navigation) .left-sidebar .user-profile { width: 48px; max-width: calc(100% - 12px); height: 48px; margin: 12px 6px 8px !important; padding: 7px; border-radius: 50%; }
}
.gp-ui .sidebar-nav { background: var(--gp-primary); }
.gp-ui .sidebar-nav #sidebarnav > li > ul, .gp-ui.gp-touch-navigation .sidebar-nav #sidebarnav > li > ul { background: var(--gp-primary-hover); border-radius: 8px; }
.gp-ui .sidebar-nav #sidebarnav a { color: var(--gp-on-primary); }
.gp-ui .sidebar-nav #sidebarnav a:hover, .gp-ui .sidebar-nav #sidebarnav a:focus-visible { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .sidebar-nav #sidebarnav a:hover > i, .gp-ui .sidebar-nav #sidebarnav a:focus-visible > i { color: var(--gp-primary) !important; }
.gp-ui .sidebar-nav #sidebarnav > li > a[aria-expanded="true"] { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .sidebar-nav #sidebarnav a.active, .gp-ui .sidebar-nav #sidebarnav > li.active > a { background: var(--gp-selection) !important; color: var(--gp-primary) !important; }
.gp-ui .sidebar-nav .nav-small-cap { color: var(--gp-selection); }
.gp-ui .sidebar-nav .nav-devider { background: rgba(228, 238, 232, .24); }
.gp-ui .sidebar-nav #sidebarnav .has-arrow::after { border-color: currentColor; }
.gp-ui .sidebar-nav #sidebarnav a:focus-visible { outline-color: var(--gp-primary); }
.gp-ui .sidebar-nav #sidebarnav a.active:focus-visible, .gp-ui .sidebar-nav #sidebarnav > li.active > a:focus-visible, .gp-ui .sidebar-nav #sidebarnav > li > a[aria-expanded="true"]:focus-visible { outline-color: var(--gp-primary); }

/* FilePond: un solo criterio para archivos, imágenes y estados de carga. */
.gp-ui .filepond--root { font-family: inherit; font-size: 16px; line-height: 1.4; }
.gp-ui .filepond--panel-root { background-color: var(--gp-surface); border: 1px dashed var(--gp-control-border); border-radius: 8px; }
.gp-ui .filepond--root .filepond--drop-label { min-height: 96px; color: var(--gp-muted); }
.gp-ui .filepond--root .filepond--drop-label label { padding: 12px 16px; font-size: 14px; line-height: 1.6; }
.gp-ui .filepond--label-action { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 8px 10px; border-radius: 8px; color: var(--gp-primary); font-weight: 500; text-decoration-color: currentColor; text-underline-offset: 3px; }
.gp-ui .filepond--label-action:hover, .gp-ui .filepond--label-action:focus-visible { background: var(--gp-selection); }
.gp-ui .filepond--drip { background: rgba(36, 81, 72, .01); }
.gp-ui .filepond--drip-blob { background: var(--gp-primary); }
.gp-ui .filepond--item { --gp-pond-state: var(--gp-primary); width: calc(100% - .5em); border-radius: 8px; background: var(--gp-pond-state); }
.gp-ui .filepond--item[data-filepond-item-state="processing-complete"] { --gp-pond-state: var(--gp-success); }
.gp-ui .filepond--item[data-filepond-item-state*="invalid"], .gp-ui .filepond--item[data-filepond-item-state*="error"] { --gp-pond-state: var(--gp-danger); }
.gp-ui .filepond--item-panel { background: var(--gp-pond-state); border-radius: 8px; }
.gp-ui .filepond--item > .filepond--panel .filepond--panel-bottom { box-shadow: none; }
.gp-ui .filepond--file { flex-direction: column; align-items: stretch; min-height: 136px; padding: 12px 12px 64px; color: var(--gp-on-primary); }
.gp-ui .filepond--file .filepond--file-info, .gp-ui .filepond--file .filepond--file-status { flex: none; width: 100%; min-width: 0; margin: 0; align-items: center; text-align: center; color: var(--gp-on-primary); transform: none !important; }
.gp-ui .filepond--file .filepond--file-status { margin-top: 6px; }
.gp-ui .filepond--file-info .filepond--file-info-main, .gp-ui .filepond--file-status .filepond--file-status-main { width: 100%; font-size: 14px; line-height: 1.4; text-align: center; white-space: normal; overflow: visible; overflow-wrap: anywhere; text-overflow: clip; }
.gp-ui .filepond--file-info .filepond--file-info-sub, .gp-ui .filepond--file-status .filepond--file-status-sub { max-width: 100%; font-size: 12px; line-height: 1.5; white-space: normal; overflow-wrap: anywhere; opacity: 1 !important; }
.gp-ui .filepond--item, .gp-ui .filepond--item .filepond--file-wrapper, .gp-ui .filepond--item .filepond--file { height: auto !important; }
.gp-ui .filepond--root .filepond--file-action-button, .gp-ui .filepond--root .filepond--action-edit-item-alt { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0; border: 1px solid var(--gp-primary) !important; border-radius: 8px; background: var(--gp-surface) !important; color: var(--gp-primary) !important; box-shadow: none; cursor: pointer; }
.gp-ui .filepond--root .filepond--file-action-button::after { inset: 0; border-radius: inherit; }
.gp-ui .filepond--root .filepond--file-action-button svg, .gp-ui .filepond--root .filepond--action-edit-item-alt svg { width: 22px; height: 22px; }
.gp-ui .filepond--root .filepond--file-action-button:hover, .gp-ui .filepond--root .filepond--file-action-button:focus-visible, .gp-ui .filepond--root .filepond--action-edit-item-alt:hover, .gp-ui .filepond--root .filepond--action-edit-item-alt:focus-visible { background: var(--gp-selection) !important; box-shadow: none; }
.gp-ui .filepond--root .filepond--file-action-button:focus, .gp-ui .filepond--root .filepond--file-action-button:focus-visible, .gp-ui .filepond--root .filepond--action-edit-item-alt:focus, .gp-ui .filepond--root .filepond--action-edit-item-alt:focus-visible { outline: 3px solid var(--gp-focus); outline-offset: 2px; box-shadow: 0 0 0 2px var(--gp-surface); }
.gp-ui .filepond--root .filepond--file-action-button:disabled { cursor: default; opacity: .65; }
.gp-ui .filepond--root .filepond--action-remove-item { border-color: var(--gp-danger) !important; background: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; }
.gp-ui .filepond--root .filepond--action-remove-item:hover, .gp-ui .filepond--root .filepond--action-remove-item:focus-visible { background: var(--gp-danger) !important; color: var(--gp-on-primary) !important; }
.gp-ui .filepond--file .filepond--file-action-button { top: auto; bottom: 12px; }
.gp-ui .filepond--file .filepond--file-action-button[data-align*="left"] { left: 12px; }
.gp-ui .filepond--file .filepond--file-action-button[data-align*="right"] { right: 12px; }
.gp-ui .filepond--file .filepond--file-action-button[data-align*="center"] { left: calc(50% - 22px); margin: 0; }
.gp-ui .filepond--file-info-main:has(.filepond--action-edit-item-alt) { position: relative; min-height: 44px; padding-right: 52px; }
.gp-ui .filepond--root .filepond--action-edit-item-alt { top: 0; right: 0; margin: 0; }
.gp-ui .filepond--file .filepond--progress-indicator, .gp-ui .filepond--file .filepond--processing-complete-indicator { top: auto; bottom: 23px; width: 22px; height: 22px; margin: 0; color: var(--gp-primary); }
.gp-ui .filepond--file .filepond--progress-indicator[data-align*="right"], .gp-ui .filepond--file .filepond--processing-complete-indicator[data-align*="right"] { right: 23px; }
.gp-ui .filepond--file .filepond--progress-indicator[data-align*="left"] { left: 23px; color: var(--gp-on-primary); }
.gp-ui .filepond--file .filepond--load-indicator { color: var(--gp-primary); }
.gp-ui .filepond--image-preview { background: var(--gp-surface); }
.gp-ui .filepond--image-preview-wrapper { background: rgba(31, 42, 37, .01); }
.gp-ui .filepond--image-preview-overlay-idle { color: var(--gp-primary); }
.gp-ui .filepond--image-preview-overlay-success { color: var(--gp-success); }
.gp-ui .filepond--image-preview-overlay-failure { color: var(--gp-danger); }
.gp-ui .filepond--image-preview-overlay stop { stop-color: var(--gp-pond-state); }
.gp-ui .btn .fa-spinner, .gp-ui .btn .fa-circle-notch { color: inherit; }.gp-ui .filepond--item > .filepond--panel { display: none; }
.gp-ui .filepond--item:has(.filepond--image-preview-wrapper) .filepond--file { padding-top: 0; padding-left: 0; padding-right: 0; }
.gp-ui .filepond--item:has(.filepond--image-preview-wrapper) .filepond--file-info { padding: 8px 12px; border-radius: 8px 8px 0 0; background: var(--gp-pond-state); }
.gp-ui .filepond--item:has(.filepond--image-preview-wrapper) .filepond--file-status { padding: 4px 12px; background: var(--gp-pond-state); }
.gp-ui .filepond--root .filepond--action-abort-item-load::before, .gp-ui .filepond--root .filepond--action-abort-item-processing::before { content: ''; width: 8px; height: 8px; border-radius: 2px; background: currentColor; pointer-events: none; }
.gp-ui .filepond--item:has(.filepond--image-preview-wrapper) .filepond--file { min-height: var(--gp-pond-min-height, 280px); }
.gp-ui .filepond--file-status:has(.filepond--file-status-main:empty) { display: none; }
.gp-ui .filepond--item .filepond--image-preview-wrapper { top: var(--gp-pond-header-height, 56px); height: calc(100% - var(--gp-pond-header-height, 56px) - 64px); }

/* La carga no hereda la forma ni la distribución de los botones del diálogo. */
.gp-ui .swal2-popup .swal2-actions.swal2-loading { justify-content: center; overflow: visible; }
.gp-ui .swal2-popup.swal2-loading .swal2-styled.swal2-confirm, .gp-ui .swal2-popup .swal2-loading .swal2-styled.swal2-confirm, .gp-ui .swal2-popup .swal2-loader { flex: 0 0 44px; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0; margin: 12px; border: 3px solid !important; border-color: var(--gp-primary) transparent var(--gp-primary) transparent !important; border-radius: 50% !important; background: transparent !important; color: transparent !important; box-shadow: none !important; opacity: 1; }
.gp-ui .dataTables_wrapper .dataTables_processing { max-width: calc(100% - 24px); height: auto; min-height: 56px; padding: 16px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface) !important; color: var(--gp-primary) !important; text-align: center; white-space: normal; overflow-wrap: anywhere; box-shadow: var(--gp-shadow); }
.gp-ui .dataTables_processing > div:last-child > div { background: var(--gp-primary); }
.gp-ui .spinner-border, .gp-ui .spinner-grow, .gp-ui .fa-spinner, .gp-ui .fa-circle-notch { color: var(--gp-primary); }
/* Menús del header: misma jerarquía, color y acciones que el resto de la interfaz. */
.gp-ui .topbar .navbar-nav > .nav-item > .nav-link { min-height: 44px; padding: 10px 12px !important; margin: 0 2px; border-radius: 8px; }
.gp-ui .topbar .navbar-nav > .nav-item.show { background: transparent !important; }
.gp-ui .topbar .navbar-nav > .nav-item.show > .nav-link { background: rgba(255, 255, 255, .12); }
.gp-ui .topbar .navbar-nav > .nav-item > .nav-link:focus-visible { outline: 2px solid var(--gp-on-primary) !important; outline-offset: -2px; box-shadow: none !important; }
.gp-ui .topbar .dropdown-menu { border: 1px solid var(--gp-border); border-radius: 8px; background: var(--gp-surface); }
.gp-ui .topbar .dropdown-menu:has(> .dropdown-user) { width: 288px; max-width: calc(100vw - 24px); padding: 0; overflow-x: hidden; }
.gp-ui .topbar ul.dropdown-user { width: 100%; max-width: 100%; }
.gp-ui .topbar ul.dropdown-user .dw-user-box { display: flex; align-items: center; justify-content: center; min-height: 56px; padding: 12px 16px; background: var(--gp-calendar-header); color: var(--gp-on-calendar-header); }
.gp-ui .topbar ul.dropdown-user .dw-user-box h4 { color: var(--gp-on-calendar-header) !important; font-size: 15px; line-height: 1.4; }
.gp-ui .topbar ul.dropdown-user li.divider { height: 1px; margin: 0 !important; background: var(--gp-border); }
.gp-ui .topbar ul.dropdown-user li a { min-height: 48px; margin: 2px 6px; padding: 10px 48px !important; font-size: 14px; color: var(--gp-text); }
.gp-ui .topbar ul.dropdown-user li a > i { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 8px; background: var(--gp-selection); color: var(--gp-primary); font-size: 14px; }
.gp-ui .topbar ul.dropdown-user li a:hover, .gp-ui .topbar ul.dropdown-user li a:focus-visible, .gp-ui .topbar ul.dropdown-user li a.active { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui .topbar ul.dropdown-user li a:hover > i, .gp-ui .topbar ul.dropdown-user li a:focus-visible > i, .gp-ui .topbar ul.dropdown-user li a.active > i { background: var(--gp-surface); }
.gp-ui .topbar .dropdown-menu > a.dropdown-item { position: relative; min-height: 48px; margin: 2px 0; padding: 10px 44px !important; font-size: 14px; }
.gp-ui .topbar .dropdown-menu > a.dropdown-item > i { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); }
.gp-ui .topbar .dropdown-menu > a.dropdown-item:hover, .gp-ui .topbar .dropdown-menu > a.dropdown-item:focus-visible { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui .topbar .mega-dropdown-menu > li { margin-bottom: 16px !important; }
.gp-ui .topbar .mega-dropdown-menu > li > h4 { margin: 0 0 12px !important; color: var(--gp-muted); font-size: 14px; font-weight: 500; line-height: 1.4; }
.gp-ui .topbar [id$="escuelasDisponibles"], .gp-ui .topbar [id$="escuelasPorAceptar"] { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
.gp-ui .topbar .mega-dropdown-menu .card { min-width: 0; margin: 0; border: 1px solid var(--gp-border); border-radius: 0; background: var(--gp-surface); box-shadow: none; }
.gp-ui .topbar .mega-dropdown-menu .card[style*="background-color"] { border-color: var(--gp-primary); background: var(--gp-selection) !important; box-shadow: inset 3px 0 0 var(--gp-primary); }
.gp-ui .topbar .mega-dropdown-menu .card:hover, .gp-ui .topbar .mega-dropdown-menu .card:active { border-color: var(--gp-primary); }
.gp-ui .topbar .mega-dropdown-menu .card > .d-flex { flex: 1 1 auto; align-items: center; justify-content: center !important; min-height: 88px; padding: 12px; }
.gp-ui .topbar .mega-dropdown-menu .card .p-10, .gp-ui .topbar .mega-dropdown-menu .card .p-20 { padding: 0 !important; }
.gp-ui .topbar .mega-dropdown-menu .card img { width: 56px; height: 56px; object-fit: contain; }
.gp-ui .topbar .mega-dropdown-menu .card h3 { margin: 0; color: var(--gp-text); font-size: 15px; font-weight: 500; line-height: 1.4; text-align: center; overflow-wrap: anywhere; }
.gp-ui .topbar .mega-dropdown-menu .card[style*="background-color"] h3 { color: var(--gp-primary) !important; }
@media (max-width: 575px) {
    .gp-ui .topbar .top-navbar .navbar-header { flex-basis: 48px; width: 48px; }
    .gp-ui .topbar .navbar-nav > .nav-item > .nav-link { margin: 0; padding: 8px !important; }
    .gp-ui .topbar .mega-dropdown > .nav-link > i { display: none; }
}
/* Vista previa del logo de Mi Escuela con la misma geometría que el menú. */
.gp-ui.gp-account #divProfile { width: min(100%, 240px); margin-bottom: 12px; background: transparent; }
.gp-ui.gp-account #divProfile::before { display: none; }
.gp-ui.gp-account #divProfile > img { display: none; }
.gp-ui.gp-account .gp-school-logo-preview { display: flex; align-items: center; justify-content: center; min-height: 136px; background: var(--gp-surface); }
.gp-ui.gp-account .gp-school-logo-preview .user-profile { flex: 0 0 auto; }
.gp-ui.gp-account .gp-school-logo-help { margin: 20px auto 0; max-width: 320px; line-height: 1.5; text-align: center; }
.gp-ui.gp-account .gp-school-logo-help p { margin: 0 0 8px; }
/* Las vistas móviles usan la navegación de vuelta del dispositivo. */
.gp-ui .miDash .barraTitulo > a:has(> .fa-arrow-left, > .ti-arrow-left),
.gp-ui .miDash .ca-cabecera > .ca-volver { display: none !important; }
.gp-ui .miDash .barraTitulo.gp-mobile-back-only { display: none !important; }
.gp-ui .miDash .ca-cabecera { justify-content: flex-start; }
.gp-ui .miDash .ca-cabecera > div { min-width: 0; text-align: left; }
.gp-ui .miDash .ca-cabecera h1, .gp-ui .cursos-cabecera > .cursos-titulo h1 { font-size: 22px; font-weight: 500; line-height: 1.3; overflow-wrap: anywhere; }
/* Espacio para los accesos y el borde inferior del inicio del alumno. */
.gp-ui.gp-dashboard-usuario .miDash > .container-fluid { padding-bottom: 40px !important; }
.gp-ui.gp-dashboard-usuario .card-body { padding: 24px 24px 40px !important; }
.gp-ui.gp-dashboard-usuario .gp-navigation-grid { gap: 20px; }
.gp-ui.gp-dashboard-usuario .gp-navigation-tile { min-height: 164px; padding: 20px 16px; }
@media (max-width: 767px) {
    .gp-ui.gp-dashboard-usuario .miDash > .container-fluid { padding-bottom: 32px !important; }
    .gp-ui.gp-dashboard-usuario .card-body { padding: 20px 16px 32px !important; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-grid { gap: 16px; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-tile { min-height: 156px; padding: 16px 10px; }
}

/* Cabeceras móviles compactas y opciones del perfil separadas. */
.gp-ui .gp-profile-menu { display: grid; gap: 12px; }
.gp-ui.gp-family .gp-profile-menu > a { display: block; min-width: 0; }
.gp-ui.gp-family .gp-profile-menu .carta { min-height: 52px; padding: 8px 12px; }
.gp-ui.gp-family .gp-profile-menu .txtRes { white-space: normal; font-size: 16px; }
@media (max-width: 767px) {
    .gp-ui:not(.gp-dashboard) .miDash .barraTitulo { min-height: 32px; margin-bottom: 12px; font-size: 18px; }
    .gp-ui .miDash .ca-cabecera h1, .gp-ui .cursos-cabecera > .cursos-titulo h1 { font-size: 18px; }
}

/* Las acciones de Mi Perfil se adaptan sin cortar sus textos ni el final de la tarjeta. */
.gp-ui.gp-account-profile #botonesCambiar { justify-content: center; flex-wrap: wrap !important; gap: 12px; overflow: visible; }
.gp-ui.gp-account-profile #botonesCambiar > .btn { flex: 0 1 auto !important; max-width: 100%; margin: 0 !important; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-account-profile .card-body { padding-bottom: 40px !important; }
.gp-ui.gp-account-profile .miDash > .container-fluid { padding-bottom: 40px !important; }
@media (max-width: 767px) {
    .gp-ui.gp-account-profile .card-body { padding-bottom: 32px !important; }
    .gp-ui.gp-account-profile .miDash > .container-fluid { padding-bottom: 32px !important; }
}

/* Fecha común, vuelta conservada para guardar y textos extensos legibles. */
.gp-ui .barraTitulo > .gp-hidden-return { display: none !important; }
.gp-ui .gp-birth-note { margin: 0 0 16px; color: var(--gp-muted); font-size: 12px; }
.gp-ui textarea.form-control, .gp-ui .ck-editor__editable, .gp-ui .note-editor .note-editable { text-align: left; }

.gp-ui .form-group > label.gp-long-text-label { justify-content: flex-start; text-align: left; }

/* Estados de selección con los colores comunes. */
.gp-ui .select2-container--default .select2-results__option--highlighted,
.gp-ui .select2-container--default .select2-results__option[aria-selected="true"],
.gp-ui .select2-container--default .select2-results__option--selected {
    background-color: var(--gp-selection) !important; color: var(--gp-primary) !important;
}
.gp-ui .select2-container--default.select2-container--focus .select2-selection,
.gp-ui .select2-container--default.select2-container--open .select2-selection {
    border-color: var(--gp-primary) !important; outline-color: var(--gp-primary);
}
.gp-ui .bootstrap-select .dropdown-menu .active > a,
.gp-ui .bootstrap-select .dropdown-menu a.active,
.gp-ui .bootstrap-select .dropdown-menu a:focus,
.gp-ui .bootstrap-select .dropdown-menu a:hover {
    background-color: var(--gp-selection) !important; color: var(--gp-primary) !important;
}
/* Los navegadores compatibles permiten colorear también el desplegable nativo. */
@supports (appearance: base-select) and selector(::picker(select)) {
    .gp-ui select:not([multiple]):not([size]), .gp-ui select:not([multiple])[size="1"] { appearance: base-select !important; }
    .gp-ui select.custom-select:not([multiple]):not([size]), .gp-ui select.form-control:not([multiple]):not([size]), .gp-ui select.custom-select:not([multiple])[size="1"], .gp-ui select.form-control:not([multiple])[size="1"] { height: auto; min-height: 44px; padding: 10px 40px 10px 16px; line-height: 1.4; }
    .gp-ui select:not([multiple]):not([size]) selectedcontent, .gp-ui select:not([multiple])[size="1"] selectedcontent { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
    .gp-ui select:not([multiple]):not([size])::picker(select), .gp-ui select:not([multiple])[size="1"]::picker(select) {
        appearance: base-select; max-height: min(50vh, 360px); border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); color: var(--gp-text);
    }
    .gp-ui select.custom-select:not([multiple]):not([size])::picker-icon, .gp-ui select.form-control:not([multiple]):not([size])::picker-icon, .gp-ui select.custom-select:not([multiple])[size="1"]::picker-icon, .gp-ui select.form-control:not([multiple])[size="1"]::picker-icon { display: none; }
    .gp-ui select:not([multiple]):not([size]) option, .gp-ui select:not([multiple])[size="1"] option { padding: 10px 12px; background: var(--gp-surface); color: var(--gp-text); }
    .gp-ui select:not([multiple]):not([size]) option:checked, .gp-ui select:not([multiple])[size="1"] option:checked,
    .gp-ui select:not([multiple]):not([size]) option:hover, .gp-ui select:not([multiple])[size="1"] option:hover,
    .gp-ui select:not([multiple]):not([size]) option:focus, .gp-ui select:not([multiple])[size="1"] option:focus { background: var(--gp-selection); color: var(--gp-primary); }
    .gp-ui select:not([multiple]):not([size]) option:disabled, .gp-ui select:not([multiple])[size="1"] option:disabled { color: var(--gp-muted); }
}
/* Contornos rectos de tablas y sus marcos; los controles conservan su redondeo. */
.gp-ui .table-responsive, .gp-ui .cursos-tabla-scroll,
.gp-ui .dataTables_scrollHead, .gp-ui .dataTables_scrollBody, .gp-ui .dataTables_scrollFoot,
.gp-ui table,
.gp-ui table.table > thead > tr > th, .gp-ui table.table > tbody > tr > td,
.gp-ui table.table > tfoot > tr > td, .gp-ui table.table > tfoot > tr > th,
.gp-ui table.dataTable > thead > tr > th, .gp-ui table.dataTable > tbody > tr > td,
.gp-ui table.tablesaw > thead > tr > th, .gp-ui table.tablesaw > tbody > tr > td {
    border-radius: 0 !important;
}
/* Cabeceras de tablas: fondo común y texto legible. */
.gp-ui table thead th, .gp-ui table thead td,
.gp-ui table.table.color-bordered-table thead th,
.gp-ui table.default-bordered-table > thead > tr > th,
.gp-ui table.color-table.dark-table > thead > tr > th,
.gp-ui.gp-dashboard table.gp-manager-table thead th,
.gp-ui.gp-library table#myTable thead th:focus,
.gp-ui.gp-library .dataTables_wrapper table.dataTable thead th:focus {
    background: #52635A !important; color: #FFFFFF !important; border-color: #52635A;
}
.gp-ui table thead th > a:not(.btn), .gp-ui table thead td > a:not(.btn) { color: inherit; }
.gp-ui table.dataTable thead .sorting::before, .gp-ui table.dataTable thead .sorting::after,
.gp-ui table.dataTable thead .sorting_asc::before, .gp-ui table.dataTable thead .sorting_asc::after,
.gp-ui table.dataTable thead .sorting_desc::before, .gp-ui table.dataTable thead .sorting_desc::after { color: #FFFFFF; }
/* Ocultar el selector de columnas sin afectar a las demás acciones de la tabla. */
.gp-ui .dt-buttons .buttons-colvis { display: none !important; }
.gp-ui .dt-buttons:has(> .buttons-colvis:only-child) { display: none !important; }

/* Filtros centrados, con los valores de selectores alineados a la izquierda. */
.gp-ui .cursos-listado-cabecera { justify-content: center; }
.gp-ui .cursos-listado-cabecera > h2 { width: 100%; justify-content: center; text-align: center; }
.gp-ui .cursos-listado-cabecera .cursos-filtros { width: 100%; justify-content: center; }
.gp-ui .cursos-tabla-herramientas { justify-content: center; }
.gp-ui .cursos-pagina #vistaTabla .dataTables_filter, .gp-ui.cursos-pagina #vistaTabla .dataTables_filter { margin-left: 0; }
.gp-ui .dataTables_wrapper .dataTables_filter { float: none; text-align: center !important; }
.gp-ui .dataTables_wrapper .dataTables_filter label { justify-content: center; }
.gp-ui div[id^="divFiltros"] { text-align: center; }
.gp-ui div[id^="divFiltros"] > .row { justify-content: center; }
.gp-ui div[id^="divFiltros"] .d-flex { justify-content: center !important; flex-wrap: wrap; }
.gp-ui .gp-agenda-filters > div { text-align: center; }
.gp-ui.gp-bookings .gp-agenda-filter-panel { padding: 12px 24px !important; }
.gp-ui.gp-bookings .gp-agenda-filter-panel > hr { margin: 8px 0 12px; }
.gp-ui.gp-bookings .gp-agenda-filter-panel > .row .form-group { margin-bottom: 8px; }
@media (max-width: 767px) { .gp-ui.gp-bookings .gp-agenda-filter-panel { padding: 12px 16px !important; } }
.gp-ui .gp-agenda-filters label { justify-content: center; }.gp-ui .dataTables_wrapper > .row:first-child { justify-content: center; }
.gp-ui .dataTables_wrapper > .row:first-child > div:has(> .dataTables_filter),
.gp-ui .dataTables_wrapper > .row:first-child > div:has(> .dataTables_length) { flex: 0 1 auto; width: auto; max-width: 100%; }.gp-ui .familia-filtros, .gp-ui .filtros-cuestionarios { text-align: center; }
.gp-ui .filtros-cuestionarios .row, .gp-ui .row:has([id^="filtro" i]) { justify-content: center; }
/* Acciones centradas en celdas y detalles adaptables. */
.gp-ui table td:has(.btn), .gp-ui table th:has(.btn),
.gp-ui table .dtr-data:has(.btn), .gp-ui table td > div:has(> .btn) { text-align: center !important; vertical-align: middle; }
.gp-ui table td .gp-actions, .gp-ui table td .gp-row-actions, .gp-ui table td .btn-group,
.gp-ui table td .cursos-acciones, .gp-ui table td .d-flex:has(> .btn),
.gp-ui table .dtr-data .gp-actions, .gp-ui table .dtr-data .gp-row-actions,
.gp-ui table .dtr-data .btn-group, .gp-ui table .dtr-data .cursos-acciones {
    justify-content: safe center !important; margin-left: auto !important; margin-right: auto !important;
}
.gp-ui table td:has(button), .gp-ui table td:has(input[type=button]), .gp-ui table td:has(input[type=submit]) { text-align: center !important; vertical-align: middle; }
.gp-ui table td .d-flex:has(> button), .gp-ui table td .d-flex:has(> input[type=button]), .gp-ui table td .d-flex:has(> input[type=submit]) { justify-content: safe center !important; margin-left: auto !important; margin-right: auto !important; }

/* Cabeceras de listados: título a la izquierda y acciones a la derecha. */
.gp-ui .gp-initial-header, .gp-ui .cursos-cabecera { display: flex; align-items: center; flex-wrap: nowrap; gap: 16px; min-width: 0; margin-bottom: 24px; }
.gp-ui .gp-initial-header > .barraTitulo, .gp-ui .barraTitulo:has(> .gp-header-actions) { display: flex; align-items: center; justify-content: flex-start !important; flex: 1 1 auto; min-width: 0; text-align: left; overflow-wrap: anywhere; }
.gp-ui .gp-initial-header > .barraTitulo { margin: 0; }
.gp-ui .gp-initial-header > .page-titles, .gp-ui .barraTitulo > .gp-header-actions, .gp-ui .cursos-cabecera > .cursos-alta { flex: 0 1 auto; min-width: 0; max-width: 65%; margin: 0 0 0 auto; overflow-x: auto; overflow-y: hidden; }
.gp-ui .gp-initial-header > .page-titles { display: flex; justify-content: flex-end; flex-wrap: nowrap; align-items: center; margin: 0 0 0 auto !important; }
.gp-ui.gp-library .gp-initial-header > .page-titles { padding-right: 20px !important; }
.gp-ui .gp-initial-header > .page-titles > [class*="col-"] { flex: 0 0 auto; width: auto; max-width: none; padding: 0; }
.gp-ui .gp-initial-header .btn, .gp-ui .barraTitulo > .gp-header-actions .btn, .gp-ui .cursos-cabecera .btn { flex: 0 0 auto; margin: 0 !important; white-space: nowrap; }
.gp-ui.gp-bookings .gp-agenda-header { flex-wrap: wrap; }
.gp-ui.gp-bookings .gp-agenda-header > .barraTitulo { flex: 1 1 120px; }
.gp-ui.gp-bookings .gp-agenda-header > .page-titles { flex: 0 1 auto; max-width: 100%; overflow: visible; }
.gp-ui.gp-bookings .gp-agenda-header .gp-agenda-actions { flex-wrap: wrap !important; justify-content: flex-end; overflow: visible; }
.gp-ui.gp-bookings .gp-agenda-header .gp-agenda-actions > .btn { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
@media (max-width: 575px) { .gp-ui.gp-bookings .gp-agenda-header > .page-titles { flex: 1 1 100%; } }
.gp-ui .cursos-cabecera > .cursos-titulo { flex: 1 1 auto; min-width: 0; }
.gp-ui .cursos-cabecera > .cursos-titulo h1 { white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-trainers-list:has(#divProfe:not(.active)) .barraTitulo #btnAlta { display: none !important; }
/* Filtros en el cuerpo blanco del contenido. */
.gp-ui .gp-filter-row { justify-content: center; }
.gp-ui .gp-compact-filters { display: flex; flex-wrap: wrap; justify-content: center; align-items: end; gap: 16px; margin: 0 0 16px; }
.gp-ui .gp-compact-filters > .form-group { flex: 0 1 220px; min-width: 0; max-width: 100%; margin: 0; }
.gp-ui .gp-compact-filters > .form-group > label { display: flex; justify-content: center; align-items: center; min-height: 40px; margin: 0 0 8px; text-align: center; line-height: 1.4; overflow-wrap: anywhere; }
@media (max-width: 575px) { .gp-ui .gp-compact-filters > .form-group { flex-basis: 100%; max-width: 320px; } }
.gp-ui .gp-filter-single { width: 100%; max-width: 480px; margin: 0 auto 16px; }
.gp-ui .gp-filter-single > .form-group { margin: 0 !important; }
.gp-ui.gp-course-booking .miDash > div:has(> #divFiltros) { padding: 24px !important; border: 1px solid var(--gp-border); background: var(--gp-surface); }
@media (max-width: 767px) {
    .gp-ui.gp-course-booking .miDash > div:has(> #divFiltros) { padding: 16px !important; }
}
@media (max-width: 575px) {
    .gp-ui.gp-bookings .gp-agenda-filters + hr + .row > .col-4 { flex: 0 0 50%; max-width: 50%; }
}

/* Filtros del cuadro de mando con el mismo acabado y calendario accionable. */
.gp-ui.gp-dashboard .gp-dashboard-agenda-filter { flex-direction: column; gap: 4px; }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filter label, .gp-ui.gp-dashboard .gp-manager-period label { display: block; min-height: 0; margin: 0 0 4px; color: var(--gp-muted); font-size: 13px; font-weight: 500; text-align: center; }
.gp-ui.gp-dashboard #divDash .gp-dashboard-filter-control { min-height: 44px; border: 1px solid var(--gp-control-border) !important; border-radius: 8px !important; background-color: var(--gp-surface); color: var(--gp-text); }
.gp-ui.gp-dashboard .gp-dashboard-agenda-filter select { width: min(100%, 200px); }
.gp-ui.gp-dashboard .gp-manager-period .input-group { gap: 8px; align-items: center; }
.gp-ui.gp-dashboard .gp-manager-period .input-group-append { margin-left: 0; }
.gp-ui.gp-dashboard .gp-calendar-trigger { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px; min-height: 44px; padding: 0 !important; border-radius: 8px !important; }
/* Opciones de filtros y rangos con la misma presentación. */
.gp-ui .daterangepicker { border-color: var(--gp-control-border); border-radius: 8px; font-family: inherit; font-size: 14px; line-height: 1.4; }
.gp-ui .daterangepicker::before, .gp-ui .daterangepicker::after { display: none; }
.gp-ui .daterangepicker:not(.show-calendar) { width: 200px; max-width: calc(100vw - 24px); }
.gp-ui .daterangepicker .ranges ul { width: 200px; max-width: 100%; }
.gp-ui .daterangepicker .ranges li { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 12px; font: inherit; text-align: left; }
.gp-ui .daterangepicker .ranges li::before { content: ''; flex: 0 0 16px; width: 16px; text-align: center; }
.gp-ui .daterangepicker .ranges li.active::before { content: '✓'; }
@supports (appearance: base-select) and selector(::picker(select)) {
    .gp-ui select:not([multiple]):not([size]) option, .gp-ui select:not([multiple])[size="1"] option { position: relative; min-height: 44px; padding: 10px 12px 10px 36px; font-size: 14px; font-weight: 400; line-height: 1.4; }
    .gp-ui select:not([multiple]):not([size]) option::checkmark, .gp-ui select:not([multiple])[size="1"] option::checkmark { position: absolute; left: 12px; top: 50%; width: 16px; transform: translateY(-50%); text-align: center; color: var(--gp-primary); }
}
.gp-ui.gp-dashboard #gmEstado:empty { display: none; }

/* Selección visible en las secciones y los desgloses de Dashboard. */
.gp-ui.gp-dashboard .gp-manager-tabs .btn[aria-selected="true"],
.gp-ui.gp-dashboard .gp-manager-tabs .btn[aria-selected="true"]:hover,
.gp-ui.gp-dashboard .gp-manager-tabs .btn[aria-selected="true"]:focus,
.gp-ui.gp-dashboard .gp-manager-switch .btn[aria-pressed="true"],
.gp-ui.gp-dashboard .gp-manager-switch .btn[aria-pressed="true"]:hover,
.gp-ui.gp-dashboard .gp-manager-switch .btn[aria-pressed="true"]:focus {
    background: var(--gp-selection) !important; color: var(--gp-primary) !important; border-color: var(--gp-primary) !important;
}
/* Marca y sección familiar en las vistas de alumno. */
.gp-ui.gp-family .gp-family-section-heading { background: var(--gp-muted) !important; }
.gp-ui.gp-family .gp-family-section-heading h4 { color: var(--gp-on-primary) !important; }
@media (max-width: 767px) {
    .gp-ui .topbar .navbar-brand > .gp-brand-name { display: none !important; }
}
.gp-ui .topbar .gp-brand-name { color: var(--gp-on-primary); font-size: 16px; font-weight: 400; white-space: nowrap; }

/* Inicio del alumno: opciones visibles en una pantalla de móvil. */
@media (max-width: 767px) {
    .gp-ui.gp-dashboard-usuario .miDash > .container-fluid { padding: 8px 10px 12px !important; }
    .gp-ui.gp-dashboard-usuario .card-group > .card { margin-bottom: 0; }
    .gp-ui.gp-dashboard-usuario .card-body { padding: 12px 12px 16px !important; }
    .gp-ui.gp-dashboard-usuario #imgUser { height: 56px !important; max-width: 100%; object-fit: contain; }
    .gp-ui.gp-dashboard-usuario #nombreUser, .gp-ui.gp-dashboard-usuario #nivel { margin-top: 5px !important; font-size: 15px; line-height: 1.25; overflow-wrap: anywhere; }
    .gp-ui.gp-dashboard-usuario .card-body hr { margin: 8px 0 !important; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-grid { gap: 8px; margin-top: 0 !important; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-tile { min-height: clamp(76px, 13vh, 104px); gap: 4px; padding: 8px; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-tile > i { width: 30px; height: 30px; font-size: 27px; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-tile > h4 { min-height: 0; font-size: 14px; line-height: 1.25; }
}
@media (max-width: 900px) and (max-height: 500px) and (orientation: landscape) {
    .gp-ui.gp-dashboard-usuario .miDash > .container-fluid { padding: 6px 10px 8px !important; }
    .gp-ui.gp-dashboard-usuario .card-body { padding: 8px 12px !important; }
    .gp-ui.gp-dashboard-usuario .card-body > .row { align-items: center; }
    .gp-ui.gp-dashboard-usuario .card-body > .row > .col-12:first-child { flex: 0 0 25%; max-width: 25%; }
    .gp-ui.gp-dashboard-usuario .card-body > .row > .col-12:nth-child(2) { flex: 0 0 75%; max-width: 75%; }
    .gp-ui.gp-dashboard-usuario #imgUser { height: 48px !important; max-width: 100%; object-fit: contain; }
    .gp-ui.gp-dashboard-usuario #nombreUser, .gp-ui.gp-dashboard-usuario #nivel { margin-top: 3px !important; font-size: 14px; line-height: 1.2; overflow-wrap: anywhere; }
    .gp-ui.gp-dashboard-usuario .card-body hr { margin: 4px 0 !important; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-top: 0 !important; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-tile { min-height: 68px; gap: 3px; padding: 6px; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-tile > i { width: 26px; height: 26px; font-size: 23px; }
    .gp-ui.gp-dashboard-usuario .gp-navigation-tile > h4 { min-height: 0; font-size: 13px; line-height: 1.2; }
}
/* Acciones y filtros del Planificador. */
.gp-ui .gp-planner-actions { gap: 8px; }
/* Mantener visibles todas las acciones de la cabecera del Planificador. */
.gp-ui.gp-planificador .gp-initial-header { flex-wrap: wrap; }
.gp-ui.gp-planificador .gp-initial-header > .barraTitulo { flex: 0 0 auto; }
.gp-ui.gp-planificador .gp-initial-header > .page-titles { flex: 1 1 600px; max-width: 100%; overflow: visible; }
.gp-ui.gp-planificador .gp-initial-header > .page-titles > [class*="col-"] { flex: 1 1 0; width: 100%; max-width: 100%; min-width: 0; }
.gp-ui.gp-planificador .gp-planner-actions, .gp-ui.gp-planificador .gp-planner-actions > .btn-group { flex-wrap: wrap !important; justify-content: flex-end !important; }
.gp-ui.gp-planificador .gp-planner-actions > .btn-group { width: auto; max-width: 100%; gap: 8px; }
.gp-ui.gp-planificador .gp-planner-actions .btn { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.gp-ui .gp-planner-actions > .btn-group { flex: 0 0 auto; width: max-content; max-width: none; overflow: visible; }
.gp-ui .gp-planner-filters { display: flex; flex-wrap: wrap; justify-content: center; align-items: stretch; gap: 8px 16px; max-width: 1120px; margin: 0 auto; }
.gp-ui .gp-planner-filters > .form-group { display: flex; flex: 1 1 190px; flex-direction: column; justify-content: flex-end; min-width: 0; max-width: 220px; margin: 0 !important; }
/* Controles de tabla: cantidad a la izquierda y búsqueda a la derecha. */
.gp-ui .dataTables_wrapper .dataTables_length { float: none; text-align: left !important; }
.gp-ui .dataTables_wrapper .dataTables_filter { float: none; text-align: right !important; }
.gp-ui .dataTables_wrapper .dataTables_length label { justify-content: flex-start; white-space: normal; }
.gp-ui .dataTables_wrapper .dataTables_filter label { justify-content: flex-end; white-space: normal; }
.gp-ui .dataTables_wrapper :is(div):has(> .dataTables_length):has(> .dataTables_filter) { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; width: 100%; }
.gp-ui .dataTables_wrapper :is(div):has(> .dataTables_length):has(> .dataTables_filter) > :not(.dataTables_length):not(.dataTables_filter) { flex: 0 0 100%; min-width: 0; }
.gp-ui .dataTables_wrapper :is(div):has(> .dataTables_length):has(> .dataTables_filter) > :is(.dt-buttons, .toolbar, div:has(> .dt-buttons)) { order: -1; }
.gp-ui .dataTables_wrapper :is(div):has(> .dataTables_length):has(> .dataTables_filter) > .dataTables_filter { margin-left: auto; }
.gp-ui .dataTables_wrapper > .row:first-child:has(> div > .dataTables_length),
.gp-ui .dataTables_wrapper > .row:first-child:has(> div > .dataTables_filter) { justify-content: space-between; }
.gp-ui .dataTables_wrapper > .row:first-child > div:has(> .dataTables_filter) { margin-left: auto; }
.gp-ui .cursos-pagina #vistaTabla .dataTables_filter, .gp-ui.cursos-pagina #vistaTabla .dataTables_filter { margin-left: auto; }
.gp-ui .dataTables_wrapper :is(div):has(> .dataTables_length):has(> .dataTables_filter) > :is(.dataTables_length, .dataTables_filter) { flex: 0 0 auto; width: max-content; max-width: 100%; min-width: 0; }
/* Acciones de exportación junto al selector de registros. */
.gp-ui .dataTables_wrapper .gp-table-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin-bottom: 14px; }
.gp-ui .dataTables_wrapper .gp-table-length-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; min-width: 0; max-width: 100%; }
.gp-ui .dataTables_wrapper .gp-table-toolbar .dataTables_length, .gp-ui .dataTables_wrapper .gp-table-toolbar .dataTables_filter, .gp-ui .dataTables_wrapper .gp-table-length-actions .dt-buttons { margin: 0; }
.gp-ui .dataTables_wrapper .gp-table-toolbar .dataTables_filter { margin-left: auto; }

/* Edición de entrenador: campos alineados y fecha adaptable. */
.gp-ui.gp-people .gp-trainer-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 20px; margin: 0; }
.gp-ui.gp-people .gp-trainer-fields > div { width: auto; max-width: none; min-width: 0; padding: 0; }
.gp-ui.gp-people .gp-trainer-fields > .gp-trainer-field-wide { grid-column: 1 / -1; }
.gp-ui.gp-people .gp-trainer-fields .form-group { margin: 0; min-width: 0; }
.gp-ui.gp-people .gp-trainer-id { display: flex; align-items: flex-end; }
.gp-ui.gp-people .gp-trainer-id .form-group { width: 100%; }
.gp-ui.gp-people .gp-trainer-fields .form-group > label { display: flex; align-items: center; justify-content: center; min-height: 40px; margin: 0 0 8px; padding: 0; line-height: 1.4; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-people .gp-trainer-fields .form-group > .col-md-12 { padding: 0; }
.gp-ui.gp-people .gp-trainer-birth { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); gap: 10px; }
.gp-ui.gp-people .gp-trainer-birth > div { min-width: 0; padding: 0 !important; }
.gp-ui.gp-people .gp-trainer-photo { padding: 24px !important; }
@media (max-width: 575px) { .gp-ui.gp-people .gp-trainer-fields { grid-template-columns: minmax(0, 1fr); } .gp-ui.gp-people .gp-trainer-fields > .gp-trainer-field-wide { grid-column: auto; } }

/* Condiciones de contraseña alineadas con sus campos. */
.gp-ui .gp-password-conditions { display: flex; min-width: 0; }
.gp-ui .gp-password-conditions > .card { flex: 1 1 auto; width: 100%; margin-bottom: 0; }
.gp-ui .gp-password-conditions .card-body { display: flex; flex-direction: column; justify-content: center; }
@media (max-width: 991px) { .gp-ui .gp-password-conditions { margin-top: 16px; } }

/* Centrado vertical del valor en los selectores de cantidad de las tablas. */
.gp-ui .dataTables_wrapper .dataTables_length select { min-height: 44px; padding-top: 0; padding-bottom: 0; line-height: normal; vertical-align: middle; }
@supports (appearance: base-select) and selector(::picker(select)) {
    .gp-ui .dataTables_wrapper .dataTables_length select:not([multiple]):not([size]), .gp-ui .dataTables_wrapper .dataTables_length select:not([multiple])[size="1"] { display: inline-flex; align-items: center; }
}

/* Datos de escuela: orden común y cuadrícula adaptable. */
.gp-ui.gp-account .gp-school-tabs { justify-content: flex-start !important; flex-wrap: nowrap; padding-left: 12px; padding-right: 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.gp-ui.gp-account .gp-school-tabs > .nav-item { flex: 0 0 auto; }
.gp-ui.gp-account .gp-school-tabs .nav-link { white-space: nowrap; }
.gp-ui.gp-account .gp-school-save { text-align: right; }
.gp-ui.gp-account .gp-faacil-opcion { gap: 12px 20px; }
.gp-ui.gp-account .gp-faacil-descripcion { flex: 1 1 260px; min-width: 0; text-align: left; }
.gp-ui.gp-account .gp-faacil-descripcion small { display: block; margin-top: 4px; line-height: 1.45; overflow-wrap: anywhere; }
.gp-ui.gp-account .gp-faacil-opcion .public-state-toggle { flex: 0 0 auto; }
.gp-ui.gp-account .gp-faacil-opcion .public-state-toggle button { min-width: 44px; min-height: 44px !important; }
.gp-ui.gp-account .gp-plano-vista { margin-top: 20px; min-width: 0; }
.gp-ui.gp-account .gp-plano-vista[hidden] { display: none !important; }
.gp-ui.gp-account .gp-plano-vista-cabecera { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 12px; }
.gp-ui.gp-account .gp-plano-vista-cabecera .btn { min-height: 44px; }
.gp-ui.gp-account .gp-plano-vista iframe { display: block; width: 100%; height: clamp(360px, 60vh, 720px); border: 1px solid var(--gp-border); border-radius: 10px; background: var(--gp-surface); }
.gp-ui.gp-account .gp-plano-vista-estado:empty { display: none; }
.gp-ui.gp-account .gp-school-fields { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 16px 20px; padding: 20px; }
.gp-ui.gp-account .gp-school-fields > div { min-width: 0; }
.gp-ui.gp-account .gp-school-fields .gp-school-field-wide { grid-column: span 12; }
.gp-ui.gp-account .gp-school-fields .gp-school-field-half { grid-column: span 6; }
.gp-ui.gp-account .gp-school-fields .gp-school-field-quarter { grid-column: span 3; }
.gp-ui.gp-account .gp-school-fields .gp-school-field-third { grid-column: span 4; }
.gp-ui.gp-account .gp-school-fields .form-group { display: flex; flex-direction: column; height: 100%; min-width: 0; margin: 0; }
.gp-ui.gp-account .gp-school-fields .form-group > label { display: flex; align-items: center; justify-content: center; min-height: 40px; margin: 0 0 8px; line-height: 1.4; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-account .gp-school-fields .form-group > .form-control { width: 100%; }
@media (max-width: 991px) { .gp-ui.gp-account .gp-school-fields .gp-school-field-quarter { grid-column: span 6; } }
@media (max-width: 575px) { .gp-ui.gp-account .gp-school-fields { padding: 16px; } .gp-ui.gp-account .gp-school-fields .gp-school-field-half, .gp-ui.gp-account .gp-school-fields .gp-school-field-quarter, .gp-ui.gp-account .gp-school-fields .gp-school-field-third { grid-column: span 12; } }

/* Campo con acción independiente, separado y adaptable. */
.gp-ui .gp-input-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.gp-ui .gp-input-actions > .form-control { min-width: 0; border-radius: 8px !important; }
.gp-ui .gp-input-actions > .input-group-append { margin: 0; }
.gp-ui .gp-input-actions > .input-group-append > .btn { border-radius: 8px !important; padding-left: 16px; padding-right: 16px; }
@media (max-width: 400px) { .gp-ui .gp-input-actions > .form-control { flex-basis: 100%; width: 100%; } }

/* Fecha con acción de calendario separada y alineada. */
.gp-ui .gp-fecha-accion { display: flex; flex-wrap: nowrap; align-items: stretch; gap: 8px; }
.gp-ui .gp-fecha-accion > .form-control { flex: 1 1 auto; width: 1%; min-width: 0; min-height: 44px; border-radius: 8px !important; }
.gp-ui .gp-fecha-accion > .input-group-append { flex: 0 0 44px; margin: 0; }
.gp-ui .gp-fecha-accion > .input-group-append > .btn { display: inline-flex; align-items: center; justify-content: center; width: 44px; min-width: 44px; height: 44px; min-height: 44px; margin: 0 !important; padding: 0; border-radius: 8px !important; }

/* Descuentos: pestañas centradas y controles del listado en extremos. */
.gp-ui.gp-account #descuentos .descuentos-tabs { justify-content: center !important; }
.gp-ui.gp-account #descuentos .descuentos-tabs > .nav-item { flex: 0 0 auto; }
.gp-ui.gp-account #descuentos #btnGuardarDescuentoSocios, .gp-ui.gp-account #descuentos #btnGuardarDescuentosFamilia { width: auto; max-width: 100%; }

/* Editor de entrenamientos */
.gp-ui.gp-gestor-macros .gp-macro-campos .form-group > label { display: flex; align-items: center; justify-content: center; min-height: 40px; margin-bottom: 8px; line-height: 1.4; text-align: center; }
.gp-ui.gp-gestor-macros .gp-macro-asociar { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; white-space: normal; }
.gp-ui.gp-gestor-macros .gp-macro-objetivo-grupo { display: flex; flex-wrap: wrap; align-items: stretch; gap: 8px; }
.gp-ui.gp-gestor-macros .gp-macro-objetivo-grupo > .input-group-prepend { flex: 0 0 auto; margin: 0; }
.gp-ui.gp-gestor-macros .gp-macro-objetivo-grupo .gp-macro-asociar { width: 100%; height: 100%; margin: 0 !important; border-radius: 8px !important; }
.gp-ui.gp-gestor-macros .gp-macro-objetivo-grupo > .gp-macro-objetivo { flex: 1 1 150px; display: flex; align-items: center; width: auto; height: auto; min-width: 0; min-height: 44px; margin: 0; border-radius: 8px !important; background: var(--gp-selection); color: var(--gp-text); white-space: pre-wrap; overflow-wrap: anywhere; }
.gp-ui.gp-gestor-macros .gp-macro-objetivo:empty { background: var(--gp-surface); }
.gp-ui.gp-gestor-macros .gp-macro-objetivo:empty::before { content: 'Etiqueta...'; color: var(--gp-muted); }
.gp-ui.gp-gestor-macros .gp-macro-recurso-asociado, .gp-ui.gp-gestor-macros .gp-macro-recurso-asociado:hover, .gp-ui.gp-gestor-macros .gp-macro-recurso-asociado:focus { background: var(--gp-muted) !important; border-color: var(--gp-muted) !important; color: var(--gp-surface) !important; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-gestor-macros .gp-macro-recurso-usado, .gp-ui.gp-gestor-macros .gp-macro-recurso-usado:hover, .gp-ui.gp-gestor-macros .gp-macro-recurso-usado:focus { background: var(--gp-muted) !important; border-color: var(--gp-muted) !important; color: var(--gp-surface) !important; }
.gp-ui.gp-gestor-macros .gp-macro-reset { margin-top: 4px; }
.gp-ui.gp-gestor-macros .card-outline-inverse > .gp-macro-rutinas-title { background: #52635a !important; color: #fff !important; }
.gp-ui.gp-gestor-macros .gp-macro-rutina-header { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; background: #e4eee8 !important; color: #245148 !important; }
.gp-ui.gp-gestor-macros #divZonas .gp-macro-rutina-header, .gp-ui.gp-gestor-macros #divZonas .card-footer { padding-left: 24px; padding-right: 24px; }
@media (max-width: 767px) { .gp-ui.gp-gestor-macros #divZonas .gp-macro-rutina-header, .gp-ui.gp-gestor-macros #divZonas .card-footer { padding-left: 16px; padding-right: 16px; } }
.gp-ui.gp-gestor-macros .gp-macro-rutina-name { flex: 1 1 160px; min-width: 0; font-size: 1rem; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-gestor-macros .gp-macro-rutina-header .btn-group { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; max-width: 100%; margin-left: auto; }
.gp-ui.gp-gestor-macros .gp-macro-rutina-header .btn { border-radius: 6px !important; }
.gp-ui.gp-gestor-macros #divZonas .card-body > [id^='flex-'] { align-items: flex-start; }
.gp-ui.gp-gestor-macros #divZonas .card-body .btn-group { justify-content: flex-start; width: 100%; max-width: 100%; }
.gp-ui.gp-gestor-macros #divZonas .card-body .btn-group > .btn:first-child { flex: 1 1 auto !important; min-width: 0; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-gestor-macros #divZonas .card-body .btn-group > .btn:last-child { flex: 0 0 44px !important; width: 44px; max-width: 44px; }
.gp-ui.gp-gestor-macros #divZonas .card-footer { display: flex; justify-content: center; }
.gp-ui.gp-gestor-macros #divZonas .card-footer .btn-group > .btn { flex: 0 1 auto !important; min-width: 0; max-width: 100%; white-space: normal; overflow-wrap: anywhere; }

/* Filtros de grupos en las pantallas de asignación. */
.gp-ui .gp-asignar-horario { display: flex; justify-content: center; align-items: end; flex-wrap: wrap; gap: 12px; }
.gp-ui .gp-asignar-horario .gp-asignar-dias { padding: 0; justify-content: center; max-width: 100%; }
.gp-ui .gp-asignar-horario .gp-asignar-dias .btn-group { justify-content: center; flex-wrap: wrap !important; overflow: visible; }
.gp-ui .gp-asignar-dias .btn[aria-pressed="true"], .gp-ui .gp-asignar-dias .btn[aria-pressed="true"]:hover, .gp-ui .gp-asignar-dias .btn[aria-pressed="true"]:focus { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .gp-asignar-hora { width: min(100%, 200px); }
.gp-ui .gp-asignar-hora .form-group { margin: 0; }
.gp-ui .gp-asignar-hora label { display: block; text-align: center; }
.gp-ui .gp-asignar-hora input { min-height: 44px; text-align: center; }
.gp-ui .gp-asignar-grupos { margin-top: 12px; }
.gp-ui .gp-asignar-grupos-acciones, .gp-ui .gp-asignar-acciones { justify-content: center; flex-wrap: wrap !important; overflow: visible; gap: 8px; margin: 12px auto 0 !important; }
.gp-ui .gp-asignar-grupos-acciones > .btn, .gp-ui .gp-asignar-acciones > .btn { min-height: 44px; white-space: normal; }
.gp-ui .gp-asignar-dias { display: flex; align-items: end; justify-content: flex-start; padding-bottom: 10px; }
.gp-ui .gp-asignar-dias .btn-group { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 !important; }
.gp-ui .gp-asignar-dias .btn-group > .btn { flex: 0 0 auto; min-height: 44px; margin: 0 !important; border-radius: 6px !important; }

/* Noticias: filtros y datos de cada publicación. */
.gp-ui.gp-noticias .card-header .form-group { margin-bottom: 0; }
.gp-ui.gp-noticias .gp-noticia-cabecera { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr) auto; align-items: center; gap: 12px; }
.gp-ui.gp-noticias .sl-item .gp-noticia-cabecera .sl-left { justify-content: flex-start; flex-wrap: nowrap; }
.gp-ui.gp-noticias .gp-noticia-cabecera > span { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-noticias .gp-noticia-cabecera > .btn { justify-self: end; }
@media (max-width: 767px) {
    .gp-ui.gp-noticias .card-header .form-group { margin-bottom: 16px; }
    .gp-ui.gp-noticias .gp-noticia-cabecera { grid-template-columns: minmax(0, 1fr) auto; }
    .gp-ui.gp-noticias .gp-noticia-cabecera > .sl-left { grid-column: 1; }
    .gp-ui.gp-noticias .gp-noticia-cabecera > .sl-date { grid-column: 1; }
    .gp-ui.gp-noticias .gp-noticia-cabecera > .gp-noticia-tags { grid-column: 1 / -1; }
    .gp-ui.gp-noticias .gp-noticia-cabecera > .btn { grid-column: 2; grid-row: 1; }
}
.gp-ui.gp-account #descuentos .socios-tabla .dataTables_wrapper > .row:first-child { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; }
.gp-ui.gp-account #descuentos .socios-tabla .dataTables_wrapper > .row:first-child > div { flex: 0 1 auto; width: auto; max-width: 100%; }
.gp-ui.gp-account #descuentos .socios-tabla .dataTables_wrapper > .row:first-child > div:has(.dataTables_filter) { margin-left: auto; }
.gp-ui.gp-account #tablaFamilia { table-layout: fixed; min-width: 580px; }
.gp-ui.gp-account #tablaFamilia th:first-child { width: 30%; }
.gp-ui.gp-account #tablaFamilia th:nth-child(2) { width: 55%; }
.gp-ui.gp-account #tablaFamilia th:nth-child(3) { width: 15%; }
.gp-ui.gp-account #tablaFamilia th, .gp-ui.gp-account #tablaFamilia td { text-align: center; vertical-align: middle; overflow-wrap: anywhere; }
.gp-ui.gp-account #tablaFamilia .gp-familia-nombres { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }
.gp-ui.gp-account #tablaFamilia .gp-familia-detalles summary { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 6px 12px; color: var(--gp-primary); cursor: pointer; font-weight: 600; }
.gp-ui.gp-account #tablaFamilia .gp-familia-detalles summary:focus-visible, .gp-ui.gp-account #tablaFamilia .gp-familia-restantes:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
.gp-ui.gp-account #tablaFamilia .gp-familia-restantes { max-height: 280px; overflow-y: auto; padding: 8px; border: 1px solid var(--gp-border); border-radius: 8px; -webkit-overflow-scrolling: touch; }

/* Logos completos y proporcionados en la lista de escuelas. */
.gp-ui .gp-school-list-item { align-items: center; flex-wrap: wrap; gap: 8px; min-width: 0; }
.gp-ui .gp-school-list-item > div { min-width: 0; }
.gp-ui .gp-school-list-item h3 { margin: 0; text-align: center; overflow-wrap: anywhere; }
.gp-ui .gp-school-list-logo { display: block; width: 80px; height: 80px; max-width: 100%; object-fit: contain; }

/* Mi Espacio: consumo de entidad y filtros de escuelas. */
.gp-ui.gp-account-storage .gp-storage-help { margin: 8px 0 16px; color: var(--gp-muted); line-height: 1.5; overflow-wrap: anywhere; }
.gp-ui.gp-account-storage .gp-storage-section { margin: 24px 0 0; text-align: center; }
.gp-ui.gp-account-storage .gp-storage-metrics { display: flex; align-items: stretch; }
.gp-ui.gp-account-storage .gp-storage-metrics > div { display: flex; }
.gp-ui.gp-account-storage .gp-storage-metrics > div > .card { flex: 1; width: 100%; }
.gp-ui.gp-account-storage #listaEscuelas { display: grid; gap: 10px; }
.gp-ui.gp-account-storage .gp-school-list-item { padding: 8px; border-color: var(--gp-border) !important; background: var(--gp-surface); }
.gp-ui.gp-account-storage .gp-school-list-item > div:nth-child(2) { flex: 1 1 100px; padding: 8px !important; }
.gp-ui.gp-account-storage .gp-school-list-item h3 { font-size: 16px; line-height: 1.4; }
.gp-ui.gp-account-storage .gp-school-list-item label { margin-bottom: 0; }
.gp-ui.gp-account-storage .progress { overflow: hidden; }
.gp-ui.gp-account-storage .progress-bar { white-space: nowrap; }
@media (max-width: 767px) { .gp-ui.gp-account-storage .gp-storage-metrics > div { flex: 0 0 100%; max-width: 100%; } }

.gp-ui.gp-account-storage .gp-storage-actions { justify-content: center; margin: 0 0 16px; }
.gp-ui.gp-account-storage .gp-storage-actions[hidden] { display: none; }

/* Archivador: selección visible y foco accesible de la paleta. */
.gp-ui.gp-library .color-picker > [data-col] { cursor: pointer; border: 2px solid var(--gp-surface); }
.gp-ui.gp-library .color-picker > [data-col][aria-pressed="true"] { box-shadow: 0 0 0 2px var(--gp-primary); }
.gp-ui.gp-library .color-picker > [data-col]:focus-visible { outline: 3px solid var(--gp-primary); outline-offset: 3px; }

/* En Select2 múltiple el foco corresponde al selector completo, no al campo estrecho de búsqueda. */
.gp-ui .select2-container .select2-search--inline .select2-search__field:focus,
.gp-ui .select2-container .select2-search--inline .select2-search__field:focus-visible { outline: 0 !important; box-shadow: none !important; }
.gp-ui .select2-container--default.select2-container--focus .select2-selection--multiple { border-color: var(--gp-primary) !important; box-shadow: 0 0 0 3px var(--gp-selection); }

/* Ficheros: separación de cabecera y acciones alineadas a la derecha. */
.gp-ui .gp-file-heading { margin-bottom: 16px; }
.gp-ui .page-titles.gp-file-actions { padding-bottom: 16px !important; margin-bottom: 16px !important; }
.gp-ui .gp-file-actions > .gp-actions { justify-content: flex-end; min-width: 0; }
.gp-ui .gp-file-actions .btn-group { max-width: 100%; overflow-x: auto; }

/* Cierre compacto en visores de fichas con cierre a ancho completo heredado. */
.gp-ui .modal-content > a[data-dismiss="modal"][style*="width: 100%" i][style*="border-radius: 0" i] { display: inline-flex; align-items: center; justify-content: center; align-self: flex-end; flex: 0 0 44px; width: 44px !important; min-width: 44px; height: 44px; padding: 0 !important; margin: 16px 16px 12px !important; border: 1px solid var(--gp-control-border) !important; border-radius: 8px !important; background: var(--gp-surface) !important; color: var(--gp-primary) !important; font-size: 0 !important; }
.gp-ui .modal-content > a[data-dismiss="modal"][style*="width: 100%" i][style*="border-radius: 0" i] > i { font-size: 16px !important; }
.gp-ui .modal-content > a[data-dismiss="modal"][style*="width: 100%" i][style*="border-radius: 0" i] + .embed-responsive { flex: 1 1 auto; min-height: 0; height: auto !important; }
.gp-ui .modal-content > a[data-dismiss="modal"][style*="width: 100%" i][style*="border-radius: 0" i] + .embed-responsive::before { display: none; }

/* Cruces de cierre de diálogos: rojo común y centrado. */
.gp-ui .modal-header > .close,
.gp-ui .modal-header > [data-dismiss="modal"]:has(.fa-times),
.gp-ui .modal-content > a[data-dismiss="modal"][style*="width: 100%" i][style*="border-radius: 0" i] { display: inline-flex; align-items: center; justify-content: center; color: var(--gp-danger) !important; }
.gp-ui .modal-header > [data-dismiss="modal"] .fa-times,
.gp-ui .modal-content > a[data-dismiss="modal"][style*="width: 100%" i][style*="border-radius: 0" i] .fa-times { margin: 0 !important; color: var(--gp-danger) !important; line-height: 1; }

.gp-ui .modal-header > .close:hover,
.gp-ui .modal-header > [data-dismiss="modal"]:has(.fa-times):hover,
.gp-ui .modal-content > a[data-dismiss="modal"][style*="width: 100%" i][style*="border-radius: 0" i]:hover { background: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; }

/* Cabecera de tareas: título, estados y acción en una cuadrícula. */
.gp-ui.gp-communications .gp-task-header { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); align-items: center; gap: 16px; margin-bottom: 24px; }
.gp-ui.gp-communications .gp-task-header > .barraTitulo { min-width: 0; margin: 0; }
.gp-ui.gp-communications .gp-task-header .task-summary { width: 100%; max-width: 720px; justify-self: center; }
.gp-ui.gp-communications .gp-task-header .gp-task-create { justify-content: flex-end; min-width: 0; }
.gp-ui.gp-communications .gp-task-header .gp-task-create .btn { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-communications .gp-task-header .task-summary-item { box-shadow: none; }
.gp-ui.gp-communications .gp-task-header .task-kpi-pendiente { background: var(--gp-danger-soft); border-color: var(--gp-danger); color: var(--gp-danger); }
.gp-ui.gp-communications .gp-task-header .task-kpi-revision { background: var(--gp-warning-soft); border-color: var(--gp-warning); color: var(--gp-warning); }
.gp-ui.gp-communications .gp-task-header .task-kpi-finalizada { background: var(--gp-success-soft); border-color: var(--gp-success); color: var(--gp-success); }
.gp-ui.gp-communications .gp-task-header .task-summary-item small, .gp-ui.gp-communications .gp-task-header .task-summary-item strong { color: inherit; }
.gp-ui.gp-communications .gp-task-header .task-summary-item.is-active { box-shadow: inset 0 0 0 2px currentColor, 0 0 0 2px var(--gp-selection); }
@media (max-width: 700px) { .gp-ui.gp-communications .gp-task-header { grid-template-columns: minmax(0, 1fr) auto; } .gp-ui.gp-communications .gp-task-header .task-summary { grid-column: 1 / -1; grid-row: 2; } .gp-ui.gp-communications .gp-task-header .gp-task-create { grid-column: 2; grid-row: 1; } }

/* Cierre centrado y espacio flexible en visores con cabecera. */
.gp-ui .modal-header .gp-modal-close { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; min-width: 44px; padding: 0 !important; border-radius: 8px !important; }
.gp-ui .modal-header .gp-modal-close > i { display: block; margin: 0 !important; line-height: 1; }
.gp-ui .gp-modal-viewer > .modal-header { flex: 0 0 auto; }
.gp-ui .gp-modal-viewer > .embed-responsive { flex: 1 1 auto; min-height: 0; height: auto !important; }
.gp-ui .gp-modal-viewer > .embed-responsive::before { display: none; }

/* Soporte: título de tarjeta alineado con su contenido. */
.gp-ui .gp-support-title { text-align: left; }

/* Descargas junto al número de registros en las tablas con controles heredados. */
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter):has(> div > .dt-buttons),
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter):has(> .dt-buttons) { justify-content: flex-start; gap: 10px 16px; }
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter):has(> div > .dt-buttons) > .dataTables_length,
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter):has(> .dt-buttons) > .dataTables_length { order: -2; margin: 0; }
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter) > div:has(> .dt-buttons),
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter) > .dt-buttons { order: -1; flex: 0 1 auto; width: auto; max-width: 100%; margin: 0; }
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter) > div > .dt-buttons { margin: 0; }
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter):has(.dt-buttons) > .dataTables_filter { order: -1; margin: 0 0 0 auto; }
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter):has(.dt-buttons) > .toolbar { order: 0; }
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter):has(.dt-buttons) > .toolbar:empty { display: none; }
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter) > div:has(> .dt-buttons):not(.dataTables_length):not(.dataTables_filter),
.gp-ui .dataTables_wrapper div:has(> .dataTables_length):has(> .dataTables_filter) > .dt-buttons:not(.dataTables_length):not(.dataTables_filter) { flex: 0 1 auto; width: auto; max-width: 100%; }

/* Selección de aspectos del informe: estado visible y accesible al pulsar. */
.gp-ui.gp-reports #divListA > .card[role="button"] { position: relative; min-height: 44px; outline-offset: -4px; }
.gp-ui.gp-reports #divListA > .card[role="button"]:focus-visible { outline: 3px solid var(--gp-primary); }
.gp-ui.gp-reports #divListA > .card[aria-pressed="true"] { background: var(--gp-primary) !important; border: 1px solid var(--gp-primary) !important; }
.gp-ui.gp-reports #divListA > .card[aria-pressed="true"] .card-text { color: var(--gp-on-primary) !important; }
.gp-ui.gp-reports #divListA > .card[aria-pressed="true"]::after { content: "✓"; position: absolute; top: 8px; right: 10px; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: var(--gp-surface); color: var(--gp-primary); font-weight: bold; line-height: 1; }
/* Las tarjetas mantienen la misma cuadrícula al cambiar de estado. */
.gp-ui.gp-reports #divListA { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 145px), 1fr)); align-items: stretch; }
.gp-ui.gp-reports #divListA > .card[role="button"] { width: 100%; height: 100%; margin: 0 !important; border-width: 1px; }
.gp-ui.gp-reports #divListA > .card[role="button"] > .card-body { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 36px 12px 16px !important; text-align: center; }
.gp-ui.gp-reports #divListA > .card[role="button"] .card-text { width: 100%; white-space: normal; overflow-wrap: anywhere; }
/* Tipos de clase: días adaptables y casillas nativas legibles. */
.gp-ui.gp-bookings #modalPlantillas .modal-dialog { width: calc(100% - 24px); max-width: 1100px; margin: 12px auto; }
.gp-ui.gp-bookings #modalPlantillas .dias-tipo-group { display: grid; grid-template-columns: repeat(7, minmax(max-content, 1fr)); align-items: stretch; gap: 8px; max-width: 100%; overflow-x: auto; overflow-y: hidden; padding: 4px; -webkit-overflow-scrolling: touch; }
.gp-ui.gp-bookings #modalPlantillas .dias-tipo-group .btn { display: flex; align-items: center; justify-content: center; gap: 4px; min-width: 0; min-height: 44px; padding: 8px 12px; white-space: nowrap; overflow-wrap: normal; }
.gp-ui.gp-bookings #modalPlantillas .dias-tipo-group .dia-tipo-icon { flex: 0 0 14px; width: 14px; text-align: center; }
.gp-ui.gp-bookings #modalPlantillas .dias-tipo-group:focus-visible { outline: 2px solid var(--gp-primary); outline-offset: 2px; }
.gp-ui.gp-bookings #modalPlantillas .gp-dias-scroll-ayuda { display: none; color: var(--gp-muted); line-height: 1.4; text-align: center; }
@media (max-width: 1199px) { .gp-ui.gp-bookings #modalPlantillas .gp-dias-scroll-ayuda { display: block; margin-top: 4px; } }
.gp-ui .gp-native-check { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-width: 44px; min-height: 44px; padding: 8px; margin: 0; cursor: pointer; }
.gp-ui .gp-native-check::before, .gp-ui .gp-native-check::after { display: none !important; content: none !important; }
.gp-ui .gp-native-check input[type="checkbox"] { position: static !important; appearance: auto !important; opacity: 1 !important; flex: 0 0 20px; width: 20px; height: 20px; margin: 0; accent-color: var(--gp-primary); cursor: pointer; }
.gp-ui .gp-native-check input[type="checkbox"]:disabled { cursor: default; opacity: .65 !important; }
.gp-ui .gp-native-check-text { justify-content: flex-start; text-align: left; }
.gp-ui .gp-native-check-text span { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
/* Asistencias: cabecera alineada y navegación con pestañas comunes. */
.gp-ui.gp-course-attendance .barraTitulo { justify-content: flex-start !important; text-align: left; }
.gp-ui.gp-course-attendance #HeaderBotones .nav-tabs { flex-wrap: nowrap; justify-content: flex-start !important; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; }
.gp-ui.gp-course-attendance #HeaderBotones .nav-item { flex: 0 0 auto; }
.gp-ui.gp-course-attendance #HeaderBotones .nav-link { min-height: 44px; white-space: nowrap; }
/* Seguimiento: cabecera de escuela y lectura clara de cada alumno. */
.gp-ui.gp-course-attendance .gp-seguimiento-cabecera { display: flex; flex: 1 1 auto; min-width: 0; align-items: center; gap: 12px; }
.gp-ui.gp-course-attendance #pieSeguimiento #btnActualizar { order: 2; }
.gp-ui.gp-course-attendance .gp-seguimiento-logo { display: block; flex: 0 0 56px; width: 56px; height: 56px; border: 1px solid var(--gp-border); border-radius: 10px; background: var(--gp-surface) center / contain no-repeat; }
.gp-ui.gp-course-attendance .gp-seguimiento-logo-oscuro { background-color: var(--gp-primary); }
.gp-ui.gp-course-attendance #nombreSeguimiento { flex: 1 1 240px; min-width: 0; margin: 0; color: var(--gp-text) !important; font-size: 17px; line-height: 1.4; text-align: left; overflow-wrap: anywhere; }
.gp-ui.gp-course-attendance #modalEstadisticas table { width: 100%; }
.gp-ui.gp-course-attendance #modalEstadisticas th, .gp-ui.gp-course-attendance #modalEstadisticas td { padding: 12px; text-align: center; vertical-align: middle; }
.gp-ui.gp-course-attendance #modalEstadisticas th:first-child, .gp-ui.gp-course-attendance #modalEstadisticas td:first-child { width: 80px; }
.gp-ui.gp-course-attendance #modalEstadisticas .imgNuevaAlumno { display: block; width: 48px; height: 48px; margin: 0 auto; border-radius: 50%; object-fit: contain; }
.gp-ui.gp-course-attendance #modalEstadisticas td h4 { margin: 0; font-size: 15px; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-course-attendance .gp-seguimiento-resultados { display: flex; align-items: center; justify-content: center; min-height: 44px; }
.gp-ui.gp-course-attendance .gp-seguimiento-resultados h2 { margin: 0; font-size: 14px; }
.gp-ui.gp-course-attendance .gp-seguimiento-sin-registro { color: var(--gp-muted); font-size: 16px; }
.gp-ui.gp-course-attendance .gp-seguimiento-resultados .badge { display: inline-flex; align-items: center; justify-content: center; min-width: 76px; min-height: 36px; padding: 8px 12px; border: 1px solid currentColor; border-radius: 8px; font-size: 14px; line-height: 1.3; white-space: normal; }
.gp-ui.gp-course-attendance #modalEstadisticas .modoEditar.btn-group { justify-content: safe center; overflow: visible; flex-wrap: wrap !important; gap: 6px; }
.gp-ui.gp-course-attendance #modalEstadisticas .modoEditar.btn-group > .btn { min-width: 60px; min-height: 44px; margin: 0; }
@media (max-width: 767px) {
    .gp-ui.gp-course-attendance #modalEstadisticas table, .gp-ui.gp-course-attendance #modalEstadisticas tbody, .gp-ui.gp-course-attendance #modalEstadisticas tr, .gp-ui.gp-course-attendance #modalEstadisticas td { display: block; width: 100%; }
    .gp-ui.gp-course-attendance #modalEstadisticas thead { display: none; }
    .gp-ui.gp-course-attendance #modalEstadisticas tbody tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; margin: 12px; width: calc(100% - 24px); border: 1px solid var(--gp-border); border-radius: 10px; }
    .gp-ui.gp-course-attendance #modalEstadisticas tbody tr:has(.modoEditar .btn) > td:nth-child(n+3) { grid-column: 1 / -1; }
    .gp-ui.gp-course-attendance #modalEstadisticas td { display: flex; flex-direction: column; justify-content: center; align-items: center; min-width: 0; padding: 8px; }
    .gp-ui.gp-course-attendance #modalEstadisticas td:first-child { width: 100%; }
    .gp-ui.gp-course-attendance #modalEstadisticas td[data-label]::before { content: attr(data-label); display: block; margin-bottom: 6px; color: var(--gp-muted); font-size: 13px; font-weight: 500; text-align: center; overflow-wrap: anywhere; }
}
/* Resúmenes de evaluación: los mismos estados en informes y fichas. */
.gp-ui .stacked-bar-graph .bar-1 { background: var(--gp-success); color: var(--gp-on-primary); }
.gp-ui .stacked-bar-graph .bar-2 { background: var(--gp-muted); color: var(--gp-on-primary); }
.gp-ui .stacked-bar-graph .bar-3 { background: var(--gp-danger); color: var(--gp-on-primary); }
.gp-ui.gp-course-attendance #modalEstadisticas .btn-group.gp-binary-choice > .btn { min-height: 44px !important; }
/* El filtro de días se centra cuando cabe y se puede desplazar en móvil. */
.gp-ui.gp-course-attendance .gp-asistencia-dias { justify-content: safe center; }

/* Mapa global: filtros centrados y equipos legibles en cualquier ancho. */
.gp-ui.gp-mapa-global .gp-mapa-dias, .gp-ui.gp-mapa-global .gp-mapa-acciones { justify-content: safe center; }
.gp-ui.gp-mapa-global .gp-mapa-dias .btn[aria-pressed="true"] { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui.gp-mapa-global .gp-mapa-equipos .row { justify-content: center; row-gap: 12px; }
.gp-ui.gp-mapa-global .gp-mapa-equipos .col { flex: 0 1 160px; min-width: 125px; padding: 0 8px; }
.gp-ui.gp-mapa-global .gp-mapa-equipos .card { height: 100%; }
.gp-ui.gp-mapa-global .gp-mapa-equipos .gp-mapa-logo { display: block; width: 44px; height: 44px; max-width: 100%; margin: 0 auto; object-fit: contain; }
.gp-ui.gp-mapa-global .gp-mapa-equipos h4 { white-space: normal; overflow-wrap: anywhere; }
/* Agrupaciones: cabecera común y aviso del ratio en su indicador. */
.gp-ui.gp-mapa-global #divAgrupaciones .gp-mapa-grupo-cabecera { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; background: var(--gp-calendar-header) !important; color: var(--gp-on-calendar-header) !important; }
.gp-ui.gp-mapa-global .gp-mapa-grupo-titulo { flex: 1 1 180px; min-width: 0; color: inherit; text-align: left; overflow-wrap: anywhere; }
.gp-ui.gp-mapa-global .gp-mapa-grupo-acciones { display: flex; flex: 0 0 auto; align-items: center; justify-content: flex-end; gap: 4px; margin-left: auto; }
.gp-ui.gp-mapa-global #divAgrupaciones .gp-mapa-ratio { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 12px; background: var(--gp-selection) !important; color: var(--gp-primary) !important; text-align: center; }
.gp-ui.gp-mapa-global #divAgrupaciones .gp-mapa-ratio-superado { background: var(--gp-danger-soft) !important; color: var(--gp-danger) !important; border-color: var(--gp-danger) !important; }
.gp-ui.gp-mapa-global .gp-mapa-ratio-aviso { display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-weight: 600; }
.gp-ui.gp-mapa-global .gp-mapa-ratio-aviso::before { content: '!'; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; background: var(--gp-danger); color: var(--gp-on-primary); font-weight: 700; line-height: 1; }
/* Datos del alumno: aspectos, cursos y resúmenes. */
.gp-ui.gp-datos-alumno .gp-datos-panel { padding: 24px; }
.gp-ui.gp-datos-alumno .gp-datos-panel > .row { margin: 0; row-gap: 16px; }
.gp-ui.gp-datos-alumno .gp-datos-panel > .row > .col-12 { min-width: 0; padding: 0; }
.gp-ui.gp-datos-alumno .gp-datos-titulo h2 { margin: 0; color: var(--gp-primary); font-size: 18px; font-weight: 600; text-align: center; }
.gp-ui.gp-datos-alumno .gp-datos-aspectos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); align-items: stretch; gap: 12px; }
.gp-ui.gp-datos-alumno .gp-datos-aspecto { min-width: 0; margin: 0 !important; border: 1px solid var(--gp-border); border-radius: 10px; box-shadow: none; }
.gp-ui.gp-datos-alumno .gp-datos-aspecto-contenido { display: grid; grid-template-columns: 84px minmax(0, 1fr); align-items: center; gap: 12px; min-height: 120px; margin: 0; padding: 14px; }
.gp-ui.gp-datos-alumno .gp-datos-aspecto-icono, .gp-ui.gp-datos-alumno .gp-datos-aspecto-datos { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; max-width: none; min-width: 0; padding: 0; }
.gp-ui.gp-datos-alumno .gp-datos-aspecto-icono img { display: block; width: 64px !important; height: 64px !important; max-width: 100%; object-fit: contain; }
.gp-ui.gp-datos-alumno .gp-datos-aspecto-icono h4, .gp-ui.gp-datos-alumno .gp-datos-aspecto-datos h4 { margin: 0 0 10px; color: var(--gp-primary); font-size: 15px; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-datos-alumno .gp-datos-aspecto-datos img { display: block; width: auto !important; height: auto !important; max-width: 100%; max-height: 90px; object-fit: contain; }
.gp-ui.gp-datos-alumno .gp-datos-indicadores { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; margin: 0; gap: 6px; }
.gp-ui.gp-datos-alumno .gp-datos-indicador { display: flex; align-items: center; justify-content: center; width: 100%; max-width: none; min-width: 0; min-height: 44px; padding: 8px; border: 1px solid var(--gp-border) !important; border-radius: 8px; font-weight: 600; overflow-wrap: anywhere; }
.gp-ui.gp-datos-alumno .gp-datos-cursos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 12px; }
.gp-ui.gp-datos-alumno .gp-datos-cursos > p, .gp-ui.gp-datos-alumno .gp-datos-asistencias > p { margin: 0; color: var(--gp-muted); text-align: center; }
.gp-ui.gp-datos-alumno .gp-datos-cursos .card, .gp-ui.gp-datos-alumno .gp-datos-pares .card { height: 100%; min-width: 0; }
.gp-ui.gp-datos-alumno .gp-datos-pares { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.gp-ui.gp-datos-alumno .gp-datos-panel .card-header h4, .gp-ui.gp-datos-alumno .gp-datos-panel .card-body h5 { margin: 0; font-size: 15px; line-height: 1.5; overflow-wrap: anywhere; }
.gp-ui.gp-datos-alumno .gp-datos-pares .card-body { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: start; }
.gp-ui.gp-datos-alumno .gp-datos-pares .card-body h5, .gp-ui.gp-datos-alumno .gp-datos-resumen-tarjeta .card-body { text-align: center; }
.gp-ui.gp-datos-alumno .gp-datos-asistencia { padding: 14px; border: 1px solid var(--gp-border); border-radius: 10px; text-align: center; }
.gp-ui.gp-datos-alumno .gp-datos-asistencia + .gp-datos-asistencia { margin-top: 12px; }
.gp-ui.gp-datos-alumno .gp-datos-asistencia h4 { margin: 0 0 12px; color: var(--gp-primary); font-size: 16px; overflow-wrap: anywhere; }
.gp-ui.gp-datos-alumno .gp-datos-asistencia-valores { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.gp-ui.gp-datos-alumno .gp-datos-asistencia-valores > div { min-width: 0; padding: 8px; border-radius: 8px; background: var(--gp-page); overflow-wrap: anywhere; }
.gp-ui.gp-datos-alumno .gp-datos-resumen { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.gp-ui.gp-datos-alumno .gp-datos-resumen-tarjeta { border: 1px solid var(--gp-border); }
.gp-ui.gp-datos-alumno .gp-datos-resumen-tarjeta .card-body { line-height: 1.5; overflow-wrap: anywhere; }
@media (max-width: 767px) { .gp-ui.gp-datos-alumno .gp-datos-panel { padding: 16px; } }
@media (max-width: 480px) { .gp-ui.gp-datos-alumno .gp-datos-pares { grid-template-columns: minmax(0, 1fr); } .gp-ui.gp-datos-alumno .gp-datos-aspecto-contenido { grid-template-columns: 64px minmax(0, 1fr); padding: 12px; } .gp-ui.gp-datos-alumno .gp-datos-aspecto-icono img { width: 52px !important; height: 52px !important; } }
/* Selector de hora compartido y paneles de selección de usuarios. */
.gp-ui .bootstrap-datetimepicker-widget .timepicker { padding: 8px; }
.gp-ui .bootstrap-datetimepicker-widget .timepicker table { width: 100%; margin: 0; }
.gp-ui .bootstrap-datetimepicker-widget .timepicker td { text-align: center; vertical-align: middle; }
.gp-ui .bootstrap-datetimepicker-widget .timepicker a[data-action], .gp-ui .bootstrap-datetimepicker-widget .timepicker span[data-action] { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; border-radius: 8px; color: var(--gp-primary); cursor: pointer; }
.gp-ui .bootstrap-datetimepicker-widget .timepicker a[data-action] { width: 44px; height: 44px; padding: 0; margin: 0 auto; }
.gp-ui .bootstrap-datetimepicker-widget .timepicker td[data-action] { height: 44px; border-radius: 8px; cursor: pointer; }
.gp-ui .bootstrap-datetimepicker-widget .timepicker [data-action]:hover, .gp-ui .bootstrap-datetimepicker-widget .timepicker [data-action]:focus-visible { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui .gp-person-panel, .gp-ui .gp-person-panel > .card-header { border-radius: 0 !important; }
.gp-ui .gp-person-panel { border: 1px solid var(--gp-border); overflow: visible; }
.gp-ui .gp-person-panel > .card-header { background: var(--gp-calendar-header) !important; color: var(--gp-on-calendar-header) !important; }
.gp-ui .gp-person-panel > .card-header h3, .gp-ui .gp-person-panel.card-outline-info > .card-header .text-white { color: var(--gp-on-calendar-header) !important; }
.gp-ui .gp-grupo-horarios { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); align-items: start; gap: 4px; }
.gp-ui .gp-grupo-horarios > div { min-width: 0; }
.gp-ui .gp-grupo-horarios .btn { display: flex; align-items: center; justify-content: center; min-height: 44px; border-radius: 8px !important; white-space: normal; overflow-wrap: anywhere; }
.gp-ui .gp-grupo-horarios .card-body { padding: 12px 4px; }

.gp-ui .gp-grupo-horarios .btn[aria-pressed="true"]:not(.btn-danger) { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }

.gp-ui .gp-grupo-acciones { padding-right: 12px !important; }

/* Paneles de selección de personas y búsqueda de grupos. */
.gp-ui .gp-person-panel > .card-header h3 { margin: 0; font-size: 12px; font-weight: 500; line-height: 1.4; }
.gp-ui .gp-grupo-busqueda-controles { display: flex; align-items: stretch; gap: 8px; }
.gp-ui .gp-grupo-busqueda-controles .input-group { flex: 1 1 auto; min-width: 0; }
.gp-ui .gp-grupo-busqueda-controles > .btn { flex: 0 0 44px; display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; margin: 0 !important; }
.gp-ui .gp-grupo-busqueda-controles .form-control, .gp-ui .gp-grupo-busqueda-controles .input-group-text { min-height: 44px; }

/* Tarjetas del buscador compartido de juegos. */
.gp-ui .gp-juego-buscador-item { min-width: 224px; }
.gp-ui .gp-juego-buscador-card { min-width: 0; overflow: hidden; }
.gp-ui .gp-juego-buscador-card .card-header { min-height: 68px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 10px 12px !important; white-space: normal !important; overflow-wrap: anywhere; text-align: center !important; }
.gp-ui .gp-juego-buscador-card .el-card-avatar { display: flex; align-items: center; justify-content: center; background: var(--gp-surface); }
.gp-ui .gp-juego-buscador-card .el-card-avatar img { display: block; width: 100%; max-width: 100%; max-height: 260px; height: auto; object-fit: contain; }
.gp-ui .gp-juego-buscador-card .el-card-content { display: grid; grid-template-columns: 44px minmax(76px, max-content) 44px; justify-content: center; gap: 8px; padding: 12px; }
.gp-ui .gp-juego-buscador-card .el-card-content > .btn { display: inline-flex; align-items: center; justify-content: center; width: 100% !important; min-width: 0; min-height: 44px; margin: 0 !important; padding: 8px; border-radius: 8px !important; line-height: 1.2; }
.gp-ui .gp-juego-buscador-card .el-card-content > .btn i { font-size: 16px; }
.gp-ui .gp-juego-buscador-card .el-card-content > .btn-puntuaje-control { flex-wrap: nowrap !important; gap: 6px; padding: 8px 6px; white-space: nowrap !important; }
.gp-ui .gp-juego-buscador-card .btn-puntuaje-control > span { flex: 0 0 auto; white-space: nowrap; overflow-wrap: normal; word-break: normal; font-variant-numeric: tabular-nums; }
.gp-ui .gp-juego-buscador-card .el-card-content > .collapse { grid-column: 1 / -1; min-width: 0; }

.gp-ui .btn.gp-favorito[aria-pressed="true"], .gp-ui .btn.gp-favorito[aria-pressed="true"]:hover, .gp-ui .btn.gp-favorito[aria-pressed="true"]:focus-visible { background: var(--gp-primary) !important; border-color: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }

/* Campos numéricos con controles táctiles integrados. */
.gp-ui .gp-touchspin-integrado .input-group.bootstrap-touchspin { display: flex; flex-wrap: nowrap; align-items: center; width: 100%; height: 52px; padding: 3px; gap: 3px; border: 1px solid var(--gp-control-border); border-radius: 10px; background: var(--gp-surface); overflow: visible; }
.gp-ui .gp-touchspin-integrado .input-group.bootstrap-touchspin:focus-within { box-shadow: 0 0 0 3px rgba(36, 81, 72, .18); }
.gp-ui .gp-touchspin-integrado .bootstrap-touchspin > .form-control { flex: 1 1 0; width: 0; min-width: 0; height: 44px; min-height: 44px; margin: 0; padding: 0 4px; border: 0 !important; border-radius: 0 !important; background: var(--gp-surface); color: var(--gp-text); box-shadow: none !important; text-align: center; }
.gp-ui .gp-touchspin-integrado .bootstrap-touchspin .input-group-btn { flex: 0 0 44px; display: flex; align-items: center; margin: 0; }
.gp-ui .gp-touchspin-integrado .bootstrap-touchspin .input-group-btn > .btn { display: inline-flex; align-items: center; justify-content: center; width: 44px; min-width: 44px; height: 44px; min-height: 44px; margin: 0 !important; padding: 0; border-radius: 8px !important; line-height: 1; }
.gp-ui .gp-touchspin-integrado .bootstrap-touchspin-postfix { display: flex; flex: 0 0 auto; align-items: center; margin: 0; }
.gp-ui .gp-touchspin-integrado .bootstrap-touchspin-postfix .input-group-text { width: auto; min-width: 0; height: 44px; min-height: 44px; padding: 0 5px; border: 0; background: transparent; color: var(--gp-muted); }

/* Filas de personas: imagen proporcionada y texto adaptable. */
.gp-ui .gp-person-row { align-items: center; flex-wrap: nowrap; gap: 12px; }
.gp-ui .gp-person-avatar { flex: 0 0 64px; width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; }
.gp-ui .gp-person-avatar img { display: block; width: 64px; height: 64px; max-width: 100%; object-fit: contain; }
.gp-ui .gp-person-datos { flex: 1 1 0; min-width: 0; overflow-wrap: anywhere; }
.gp-ui .gp-person-datos h5, .gp-ui .gp-person-datos h6 { white-space: normal; overflow-wrap: anywhere; }
.gp-ui .gp-person-datos h6 { flex-wrap: wrap; }

/* Mis Reservas: fecha y acción en una fila compacta. */
.gp-ui.gp-bookings .gp-reserva-fila { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; }
.gp-ui.gp-bookings .gp-reserva-fecha { flex: 1 1 auto; min-width: 0; }
.gp-ui.gp-bookings .gp-reserva-fecha .txtRes { margin: 0; font-size: 14px; line-height: 1.4; white-space: nowrap; }
.gp-ui.gp-bookings .gp-reserva-acciones { flex: 0 0 auto; display: flex; align-items: center; justify-content: center; }
.gp-ui.gp-bookings .gp-reserva-acciones .btn { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; }
.gp-ui.gp-bookings .gp-reservas-listado { padding-left: 0; padding-right: 0; }
.gp-ui.gp-bookings #divListas.gp-reservas-listado .carta { padding: 12px; }

/* Estados de reserva: colores semánticos y diferenciados. */
.gp-ui .gp-reserva-estado-cancelada { color: var(--gp-danger) !important; }
.gp-ui .gp-reserva-estado-pendiente { color: var(--gp-muted) !important; }
.gp-ui .gp-reserva-estado-confirmada { color: var(--gp-warning) !important; }
.gp-ui .gp-reserva-estado-pagada { color: var(--gp-success) !important; }

/* Hoja de Ruta: palmarés legible y acción junto al listado. */
.gp-ui #divPalmares > h3.label { color: #fff !important; }
.gp-ui .gp-palmares-imagenes { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; }
.gp-ui .gp-palmares-imagenes img { width: 64px !important; height: 64px !important; max-width: 100%; object-fit: contain; margin: 0 !important; }
.gp-ui.gp-mapa-c .gp-ruta-desplazamiento { width: 100%; overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
.gp-ui.gp-mapa-c #divEtapas.gp-ruta-bloques { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; width: max-content; min-width: 0; padding: 8px 0; }
.gp-ui.gp-mapa-c .gp-ruta-bloque { width: max-content; min-width: 112px; border: 1px solid var(--gp-border); border-radius: 8px; }
.gp-ui.gp-mapa-c .gp-ruta-bloque-titulo { min-height: 48px; margin: 0; padding: 0; border-radius: 8px 8px 0 0; font-size: 16px; text-align: center; }
.gp-ui.gp-mapa-c .gp-ruta-bloque-titulo > span { position: sticky; left: 0; display: flex; align-items: center; justify-content: center; width: 100%; max-width: calc(100vw - 48px); min-height: 48px; padding: 10px 16px; overflow-wrap: anywhere; }
.gp-ui.gp-mapa-c .gp-ruta-fases { display: flex; align-items: stretch; }
.gp-ui.gp-mapa-c .gp-ruta-fase { display: flex; flex-direction: column; min-width: 112px; border-right: 1px solid var(--gp-control-border); }
.gp-ui.gp-mapa-c .gp-ruta-fase:last-child { border-right: 0; }
.gp-ui.gp-mapa-c .gp-ruta-fase-titulo { display: flex; flex: 1 0 auto; flex-direction: column; align-items: center; justify-content: center; box-sizing: border-box; width: 0; min-width: 100%; min-height: 64px; padding: 8px; background: var(--gp-selection); color: var(--gp-primary); line-height: 1.35; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-mapa-c .gp-ruta-niveles { display: flex; gap: 6px; padding: 6px; }
.gp-ui.gp-mapa-c .gp-ruta-niveles > .btn { flex: 0 0 100px; width: 100px; min-width: 0; min-height: 44px; margin: 0; padding: 8px; white-space: normal; overflow-wrap: anywhere; }
.gp-ui .gp-practicas-tarjetas { display: grid !important; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
.gp-ui .gp-practicas-tarjetas > .card { min-width: 0; width: 100%; height: 100%; margin: 0 !important; }
.gp-ui .gp-practicas-tarjetas .card-header { display: flex; align-items: center; justify-content: center; min-height: 52px; }
.gp-ui .gp-practicas-tarjetas > .card > .text-center.p-1 { display: flex; flex: 1 1 auto; align-items: center; justify-content: center; min-height: 52px; }
.gp-ui .gp-practicas-tarjetas .gp-practicas-tiempo { font-size: 14px; line-height: 1.4; overflow-wrap: anywhere; }
@media (max-width: 1000px) { .gp-ui .gp-practicas-tarjetas { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 480px) { .gp-ui .gp-practicas-tarjetas { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gp-ui .gp-mapa-guardar { display: flex; justify-content: flex-end; margin: 0 0 12px; }
.gp-ui .gp-mapa-guardar > .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin: 0 !important; }

/* HCP Aspectos: cabeceras y acciones de puntuación. */
.gp-ui .gp-test-encabezado, .gp-ui [class*="card-outline-"] > .gp-test-encabezado { background: var(--gp-muted) !important; border-color: var(--gp-muted) !important; color: var(--gp-on-primary) !important; }
.gp-ui .gp-test-encabezado .text-white { color: var(--gp-on-primary) !important; }
.gp-ui .gp-test-cabecera { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; }
.gp-ui .gp-test-cabecera .barraTitulo { flex: 1 1 auto; min-width: 0; }
.gp-ui .gp-test-acciones:not(.d-none) { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.gp-ui .gp-test-acciones > .btn { min-height: 44px; margin: 0; }
.gp-ui .gp-test-maximo { display: inline-flex; align-items: center; justify-content: center; width: 100%; max-width: 100%; min-height: 44px; white-space: normal; overflow-wrap: anywhere; }
.gp-ui .row.gp-test-juego > [class*="col-"] { min-width: 140px; }

/* Agenda de campo: detalles legibles y acciones táctiles. */
.gp-ui.gp-dashboard .btn-reserva-campo { width: 44px; height: 44px; }
@media (max-width: 575px) {
  .gp-ui.gp-dashboard .horario-campo-fila { min-height: 64px; }
  .gp-ui.gp-dashboard .horario-campo-info { gap: 10px; padding: 10px; }
  .gp-ui.gp-dashboard .horario-campo-hora { flex: 0 0 48px; min-width: 0; margin: 0; text-align: center; }
  .gp-ui.gp-dashboard .horario-campo-detalle { flex: 1 1 0; font-size: 14px; line-height: 1.4; text-align: center; overflow-wrap: anywhere; }
  .gp-ui.gp-dashboard .horario-campo-detalle a { display: inline-block; padding: 4px 0; }
  .gp-ui.gp-dashboard .horario-campo-accion { width: 48px; padding: 2px; }
  .gp-ui.gp-dashboard .btn-reserva-campo { width: 44px; height: 44px; }
}


/* Campo: selección de alumno y acciones de vídeos. */
.gp-ui.gp-campo-video .gp-campo-video-cabecera { justify-content: center !important; margin-bottom: 16px; }
.gp-ui.gp-campo-video .gp-campo-video-alumno { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-campo-video .gp-campo-video-alumno::after { content: "▾"; margin-left: 8px; }
.gp-ui.gp-campo-video .barraTitulo.gp-campo-video-superior { display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 40%) minmax(0, 1fr); align-items: center; gap: 12px; }
.gp-ui.gp-campo-video .gp-campo-video-superior > .gp-campo-video-alumno { justify-self: center; }
.gp-ui.gp-campo-video .gp-campo-video-superior > .gp-header-actions { justify-self: end; max-width: 100%; }
@media (max-width: 575px) { .gp-ui.gp-campo-video .barraTitulo.gp-campo-video-superior { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .gp-ui.gp-campo-video .gp-campo-video-superior > .gp-campo-video-alumno { grid-row: 2; grid-column: 1 / -1; } }
.gp-ui.gp-campo-video #desLugar { justify-content: center !important; min-height: 0; margin: 0 0 16px; font-size: 18px; line-height: 1.35; text-align: center; }
.gp-ui.gp-campo-video .gp-campo-video-acciones { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 8px; }
.gp-ui.gp-campo-video .gp-campo-video-acciones > .btn { margin: 0 !important; }
.gp-ui.gp-campo-video .barraTitulo > .gp-campo-video-acciones { flex-wrap: nowrap; justify-content: flex-start; }
.gp-ui.gp-campo-video .gp-campo-video-lista { display: grid; gap: 8px; max-height: min(65vh, 600px); overflow-y: auto; }
.gp-ui.gp-campo-video .gp-campo-video-opcion { width: 100%; min-height: 44px; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-campo-video .gp-campo-video-opcion[aria-current="true"] { background: var(--gp-selection) !important; }
@media (max-width: 575px) { .gp-ui.gp-campo-video .gp-campo-video-acciones { justify-content: center; } }


/* Estados de envío y filas de vídeos de campo. */
.gp-ui .btn.gp-envio-enviado, .gp-ui .btn.gp-envio-enviado.disabled, .gp-ui .btn.gp-envio-enviado:disabled { background: var(--gp-success) !important; border-color: var(--gp-success) !important; color: var(--gp-surface) !important; opacity: 1; }
.gp-ui .btn.gp-envio-pendiente { background: var(--gp-surface) !important; border-color: var(--gp-primary) !important; color: var(--gp-primary) !important; }
.gp-ui.gp-campo-video .gp-video-filtro { width: min(100%, 320px); margin: 0 auto 16px; }
.gp-ui.gp-campo-video .gp-video-filtro label { display: block; text-align: center; }
.gp-ui.gp-campo-video #divListas { display: grid; gap: 10px; }
.gp-ui.gp-campo-video .gp-video-item { overflow: hidden; border: 1px solid var(--gp-border); border-radius: 10px; }
.gp-ui.gp-campo-video .gp-video-item-cabecera { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px 16px; padding: 12px; background: var(--gp-selection); }
.gp-ui.gp-campo-video .gp-video-item-titulo { display: flex; align-items: center; gap: 10px; flex: 1 1 180px; min-width: 0; margin: 0; color: var(--gp-text); font-size: 16px; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.gp-campo-video .gp-video-item-titulo > span { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-campo-video .gp-video-item-acciones { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 6px; }
.gp-ui.gp-campo-video .gp-video-accion { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; min-width: 44px; padding: 0; }
.gp-ui.gp-campo-video .gp-video-estado { display: inline-flex; align-items: center; min-height: 32px; padding: 4px 9px; border-radius: 8px; font-size: 13px; font-weight: 600; }
.gp-ui.gp-campo-video .gp-video-enviado { background: #E7F3EB; color: #246B45; }
.gp-ui.gp-campo-video .gp-video-pendiente { background: #FFF4D6; color: #8A4B08; }
@media (max-width: 575px) { .gp-ui.gp-campo-video .gp-video-item-titulo > span { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-campo-video .gp-video-item-acciones { justify-content: flex-start; } }


/* Editor de vídeo: distribución táctil para tableta y móvil. */
@media (max-width: 1199px) {
    .gp-ui.gp-video-editor .gp-video-layout { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; margin: 0; }
    .gp-ui.gp-video-editor .gp-video-info, .gp-ui.gp-video-editor .gp-video-meta, .gp-ui.gp-video-editor .gp-video-info-campos, .gp-ui.gp-video-editor .gp-video-meta-campos { display: contents; }
    .gp-ui.gp-video-editor .gp-video-layout > .gp-video-comentarios, .gp-ui.gp-video-editor .gp-video-info-campos > div, .gp-ui.gp-video-editor .gp-video-meta-campos > div { width: auto; max-width: none; min-width: 0; padding: 0; }
    .gp-ui.gp-video-editor .gp-video-layout .form-group { margin: 0; }
    .gp-ui.gp-video-editor .gp-video-layout .form-control, .gp-ui.gp-video-editor .gp-video-layout .custom-select, .gp-ui.gp-video-editor .gp-video-layout .select2-container { max-width: 100%; min-width: 0; }
    .gp-ui.gp-video-editor #divEtiquetas, .gp-ui.gp-video-editor .gp-video-meta-campos > div:last-child { grid-column: 1 / -1; }
    .gp-ui.gp-video-editor .gp-video-media { grid-column: 1 / -1; min-width: 0; order: 2; }
    .gp-ui.gp-video-editor .gp-video-media video { display: block; width: 100%; height: auto; max-height: min(50vh, 420px) !important; object-fit: contain; }
    .gp-ui.gp-video-editor .gp-video-media iframe { display: block; width: min(100%, 88.888vh, 746px) !important; height: auto; aspect-ratio: 16 / 9; max-height: none; margin: 0 auto; border: 0; }
    .gp-ui.gp-video-editor .gp-video-comentarios { grid-column: 1 / -1; order: 3; }
    .gp-ui.gp-video-editor .gp-video-comentarios .formInform { margin-top: 0 !important; }
}
@media (max-width: 575px) { .gp-ui.gp-video-editor .gp-video-layout { grid-template-columns: minmax(0, 1fr); } }


/* Identidad y zona de subida del editor de vídeo. */
.gp-ui.gp-video-editor #nombreCarpeta { overflow-wrap: anywhere; }
.gp-ui.gp-video-editor #myDropz.dropzone { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; min-height: 176px; padding: 20px; background: var(--gp-page); cursor: pointer; }
.gp-ui.gp-video-editor #myDropz.dropzone.dz-drag-hover { background: var(--gp-selection); border-color: var(--gp-primary); }
.gp-ui.gp-video-editor #myDropz .dz-message { width: 100%; margin: 0; }
.gp-ui.gp-video-editor .gp-video-subida-contenido { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center; overflow-wrap: anywhere; }
.gp-ui.gp-video-editor .gp-video-subida-contenido > i { color: var(--gp-primary); font-size: 30px; line-height: 1; }
.gp-ui.gp-video-editor .gp-video-subida-contenido > strong { color: var(--gp-primary); font-size: 16px; }
.gp-ui.gp-video-editor .gp-video-subida-limite { color: var(--gp-muted); font-size: 13px; }
.gp-ui.gp-video-editor #myDropz .dz-preview { max-width: 100%; }
.gp-ui.gp-video-editor #myDropz .dz-preview .dz-details { position: static; opacity: 1; padding: 8px; }
.gp-ui.gp-video-editor #myDropz .dz-preview .dz-filename, .gp-ui.gp-video-editor #myDropz .dz-preview .dz-filename:not(:hover) { display: block; overflow: visible; white-space: normal; overflow-wrap: anywhere; }
.gp-ui.gp-video-editor #myDropz .dz-remove { display: flex; align-items: center; justify-content: center; min-height: 44px; }
.gp-ui.gp-video-editor #myDropz .dz-image { display: none; }
.gp-ui.gp-video-editor #myDropz.dropzone.dz-started { min-height: 0; padding: 10px 12px; }
.gp-ui.gp-video-editor #myDropz .dz-preview { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; width: 100%; min-width: 0; min-height: 0; margin: 0; background: transparent; }
.gp-ui.gp-video-editor #myDropz .dz-preview .dz-details { display: flex; flex: 1 1 180px; align-items: center; justify-content: center; flex-wrap: wrap; gap: 4px 12px; min-width: 0; max-width: none; padding: 0; }
.gp-ui.gp-video-editor #myDropz .dz-preview .dz-filename { order: 0; min-width: 0; }
.gp-ui.gp-video-editor #myDropz .dz-preview .dz-size { order: 1; margin: 0; font-size: 13px; }
.gp-ui.gp-video-editor #myDropz .dz-preview .dz-remove { min-width: 72px; padding: 8px 12px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); cursor: pointer; }
.gp-ui.gp-video-editor #myDropz .dz-preview .dz-progress, .gp-ui.gp-video-editor #myDropz .dz-preview .dz-success-mark, .gp-ui.gp-video-editor #myDropz .dz-preview .dz-error-mark { display: none !important; }
.gp-ui.gp-video-editor .gp-video-vista { margin-top: 12px; }
.gp-ui.gp-video-editor .gp-video-vista[hidden] { display: none; }
.gp-ui.gp-video-editor .gp-video-vista video { display: block; width: 100%; max-height: 320px; background: #1F2A25; border-radius: 8px; }
.gp-ui.gp-video-editor .gp-video-subida-estado { margin: 8px 0 0; text-align: center; overflow-wrap: anywhere; }
@media (max-width: 767px) {
    .gp-ui.gp-video-editor .gp-initial-header { flex-wrap: wrap; gap: 8px; }
    .gp-ui.gp-video-editor .gp-initial-header > .barraTitulo { flex-basis: 100%; }
    .gp-ui.gp-video-editor .gp-initial-header > .page-titles { max-width: 100%; width: 100%; padding-right: 0 !important; }
}


/* Multimedia de la ficha de informe. */
@media screen {
    .gp-ui.gp-informe-view #parteVideos .container { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: center; gap: 16px; max-width: 100%; padding: 20px !important; }
    .gp-ui.gp-informe-view #parteVideos .video-container { flex: 1 1 280px; min-width: 0; max-width: 520px; }
    .gp-ui.gp-informe-view #parteVideos video { display: block; width: 100%; max-height: min(50vh, 420px); object-fit: contain; background: #1F2A25; border-radius: 8px; }
    .gp-ui.gp-informe-view #parteAudio audio { width: min(100%, 420px); min-height: 44px; }
}

/* Informe del alumno: lectura continua y resumen de Ace. */
@media screen {
    .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-hero { grid-template-columns: 64px minmax(0, 1fr) auto 64px; padding: 28px 32px; border-color: var(--gp-border); box-shadow: 0 8px 30px rgba(36, 81, 72, .06); }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-estacion-identidad h1 { margin-bottom: 0; font-size: clamp(26px, 3.4vw, 38px); letter-spacing: -.025em; }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-aspectos { grid-column: 3; grid-row: 1; justify-content: flex-end; max-width: 160px; padding: 0; }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-hero > .gp-estacion-aspecto { grid-column: 4; grid-row: 1; }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-estacion-workspace { margin-top: 18px; }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-estacion-contenido { padding: 28px 32px; border: 1px solid var(--gp-border); border-radius: 14px; background: var(--gp-surface); box-shadow: 0 8px 30px rgba(36, 81, 72, .05); }
    .gp-ui.gp-informe-view .gp-informe-ace { display: flex; align-items: flex-start; gap: 18px; padding: 26px; border: 1px solid #cddfd4; border-radius: 14px; background: linear-gradient(120deg, #e4eee8, #f4f7f5); color: var(--gp-text); }
    .gp-ui.gp-informe-view .gp-informe-ace-marca { display: flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; border-radius: 12px; background: var(--gp-primary); color: var(--gp-surface); font-size: 21px; font-weight: 600; }
    .gp-ui.gp-informe-view .gp-informe-ace-contenido { flex: 1; min-width: 0; }
    .gp-ui.gp-informe-view .gp-informe-ace-etiqueta { margin: 0 0 5px; color: var(--gp-primary); font-size: 12px; font-weight: 600; letter-spacing: .04em; }
    .gp-ui.gp-informe-view .gp-informe-ace h2 { margin: 0 0 10px; color: var(--gp-primary); font-size: clamp(20px, 2vw, 25px); line-height: 1.3; }
    .gp-ui.gp-informe-view .gp-informe-ace-texto { margin: 0; font-size: 16px; line-height: 1.7; white-space: pre-wrap; overflow-wrap: anywhere; }
    .gp-ui.gp-informe-view .gp-informe-ace-nota { margin: 12px 0 0; color: var(--gp-muted); font-size: 12px; line-height: 1.4; }
    .gp-ui.gp-informe-view .gp-informe-ace .btn { margin-top: 14px; min-height: 44px; }
    .gp-ui.gp-informe-view .gp-informe-ace .btn[hidden] { display: none !important; }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-seccion, .gp-ui.gp-informe-view .gp-informe-landing #cardSegundaParte { margin: 0; padding: 28px 0 !important; border: 0 !important; border-bottom: 1px solid var(--gp-border) !important; border-radius: 0; background: transparent; box-shadow: none; }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-seccion > .d-flex:first-child { justify-content: flex-start !important; padding: 0 0 14px !important; background: transparent !important; color: var(--gp-primary) !important; font-size: 19px; text-align: left; }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-seccion .mensajeInforme { padding: 0; line-height: 1.75; }
    .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-seccion .well { padding: 0 0 16px !important; }
    .gp-ui.gp-informe-view .gp-informe-landing #cardSegundaParte > .cardHeaderDes { padding: 0 0 14px; background: transparent !important; color: var(--gp-primary) !important; }
    .gp-ui.gp-informe-view .gp-informe-landing #cardSegundaParte > .cardHeaderDes h4 { color: var(--gp-primary) !important; font-size: 19px; }
    .gp-ui.gp-informe-view .gp-informe-landing #txtDes { padding: 0 !important; }
    .gp-ui.gp-informe-view .gp-informe-landing #parteVideos .container, .gp-ui.gp-informe-view .gp-informe-landing #parteAudio > .p-10 { padding: 0 !important; justify-content: flex-start !important; text-align: left !important; }
    @media (max-width: 575px) {
        .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-hero, .gp-ui.gp-informe-view .gp-informe-landing .gp-estacion-contenido { padding: 18px; }
        .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-hero { grid-template-columns: 40px minmax(0, 1fr) 40px; gap: 8px; padding: 14px; }
        .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-hero > .gp-estacion-logo, .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-hero > .gp-estacion-aspecto { width: 40px; height: 40px; }
        .gp-ui.gp-informe-view .gp-informe-landing .gp-estacion-identidad h1 { font-size: 18px; line-height: 1.25; }
        .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-aspectos { grid-column: 2 / -1; grid-row: 2; justify-content: flex-start; max-width: 100%; }
        .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-hero > .gp-estacion-aspecto { grid-column: 3; }
        .gp-ui.gp-informe-view .gp-informe-ace { gap: 12px; padding: 18px; }
        .gp-ui.gp-informe-view .gp-informe-ace-marca { flex-basis: 36px; width: 36px; height: 36px; font-size: 18px; }
        .gp-ui.gp-informe-view .gp-informe-landing .gp-informe-seccion, .gp-ui.gp-informe-view .gp-informe-landing #cardSegundaParte { padding: 22px 0 !important; }
    }
}


/* Cabecera y datos principales del editor de informes. */
.gp-ui.gp-report-editor #tituloPage { overflow-wrap: anywhere; }
.gp-ui.gp-report-editor .gp-informe-campos > div { min-width: 0; }
.gp-ui.gp-report-editor #home2 form > .gp-informe-campos > div > .form-group { justify-content: flex-start; }
.gp-ui.gp-report-editor .gp-informe-campos .form-control, .gp-ui.gp-report-editor .gp-informe-campos .custom-select { width: 100%; min-width: 0; }
.gp-ui.gp-report-editor .gp-informe-seleccion-completa { display: block; margin-top: 5px; color: var(--gp-muted); font-size: 13px; line-height: 1.35; overflow-wrap: anywhere; }
.gp-ui.gp-report-editor .gp-informe-seleccion-completa[hidden] { display: none; }
@media (max-width: 1799px) {
    .gp-ui.gp-report-editor .gp-informe-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; margin: 0; }
    .gp-ui.gp-report-editor .gp-informe-campos > div { width: auto; max-width: none !important; padding: 0; }
    .gp-ui.gp-report-editor #home2 form > .gp-informe-campos > div > .form-group { height: auto; margin: 0; }
    .gp-ui.gp-report-editor #home2 form > .gp-informe-campos > div > .form-group > label:first-child { min-height: 0; margin-bottom: 6px; }
}
@media (max-width: 767px) {
    .gp-ui.gp-report-editor .gp-initial-header { flex-wrap: wrap; gap: 8px; }
    .gp-ui.gp-report-editor .gp-initial-header > .barraTitulo { flex-basis: 100%; }
    .gp-ui.gp-report-editor .gp-initial-header > .page-titles { width: 100%; max-width: 100%; }
}
@media (max-width: 575px) { .gp-ui.gp-report-editor .gp-informe-campos { grid-template-columns: minmax(0, 1fr); } }


/* Alinear etiquetas del editor de vídeo cuando una selección ocupa más altura. */
@media (min-width: 1200px) {
    .gp-ui.gp-video-editor .gp-video-info-campos > .gp-form-column > .gp-form-field,
    .gp-ui.gp-video-editor .gp-video-meta-campos > .gp-form-column > .gp-form-field { justify-content: flex-start; }
}


/* El regreso a alumnos conserva su texto en las pantallas de campo. */
.gp-ui.gp-campo-video .gp-campo-video-acciones #btnAlumnos.gp-action-back { flex: 0 0 auto; width: auto; max-width: 100%; min-width: 44px; height: auto !important; min-height: 44px !important; padding: 10px 16px !important; gap: 8px !important; font-size: 1rem !important; white-space: normal; }


/* Las pestañas principales de informes deben verse completas en móvil. */
@media (max-width: 767px) {
    .gp-ui.gp-report-editor .gp-informe-pestanas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); justify-content: stretch !important; gap: 4px; overflow: visible; }
    .gp-ui.gp-report-editor .gp-informe-pestanas > .nav-item { min-width: 0; }
    .gp-ui.gp-report-editor .gp-informe-pestanas > .nav-item > .nav-link { min-height: 44px; padding: 10px 4px; font-size: 14px; line-height: 1.3; white-space: normal; overflow-wrap: anywhere; }
}
@media (min-width: 768px) and (max-width: 1199px) {
    .gp-ui.gp-report-editor .gp-informe-pestanas { justify-content: flex-start !important; }
}

/* Ficha de test: presentación adaptada a los recursos generados. */
@media screen {
    .gp-ui.gp-test-sheet.gp-test-view .gp-estacion-identidad h1 { font-size: clamp(26px, 3.5vw, 36px); }
    @media (max-width: 575px) {
        .gp-ui.gp-test-sheet.gp-test-view .gp-estacion-hero { grid-template-columns: 48px minmax(0, 1fr) 48px; }
        .gp-ui.gp-test-sheet.gp-test-view .gp-estacion-logo { grid-column: 1; grid-row: 1; }
        .gp-ui.gp-test-sheet.gp-test-view .gp-estacion-aspecto { grid-column: 3; grid-row: 1; }
        .gp-ui.gp-test-sheet.gp-test-view .gp-estacion-identidad { grid-column: 1 / -1; grid-row: 2; }
    }
    .gp-ui.gp-test-view .gp-test-contenido .card { overflow: hidden; margin-bottom: 16px !important; border: 1px solid var(--gp-border) !important; border-radius: 12px; background: var(--gp-surface); }
    .gp-ui.gp-test-view .gp-test-contenido .card-header, .gp-ui.gp-test-view .gp-test-contenido .color-1 { padding: 12px 16px !important; text-align: center; overflow-wrap: anywhere; }
    .gp-ui.gp-test-view .gp-test-contenido .card-header h4 { white-space: normal; overflow-wrap: anywhere; }
    .gp-ui.gp-test-view .gp-test-contenido .card-body .row { margin: 0; }
    .gp-ui.gp-test-view .gp-test-contenido [role="tablist"] { flex-wrap: wrap; gap: 6px; }
    .gp-ui.gp-test-view .gp-test-contenido [role="tablist"] .btn { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; margin: 0 !important; border-radius: 8px; }
    .gp-ui.gp-test-view .gp-test-contenido img, .gp-ui.gp-test-view .gp-test-contenido video { max-width: 100%; height: auto; }
    .gp-ui.gp-test-view .gp-test-contenido iframe { max-width: 100%; }
    .gp-ui.gp-test-view .gp-test-contenido .card-body { overflow-wrap: anywhere; }
    .gp-ui.gp-test-resultado #listEstaciones > [class*="col-"] { width: 100%; max-width: 100%; padding: 0; }
    .gp-ui.gp-test-resultado #listEstaciones .card-body > .d-flex > .d-flex { align-items: stretch; gap: 8px; margin-bottom: 8px; }
    .gp-ui.gp-test-resultado #listEstaciones .card-body > .d-flex > .d-flex > .b-all { display: flex; flex-direction: column; justify-content: center; min-width: 0; border: 1px solid var(--gp-border); border-radius: 8px; }
    .gp-ui.gp-test-resultado #listEstaciones h4, .gp-ui.gp-test-resultado #listEstaciones h5 { white-space: normal; overflow-wrap: anywhere; }
    .gp-ui.gp-test-resultado #listEstaciones .card-footer { flex-wrap: wrap; gap: 16px; }
}
/* Editor de archivos: cabecera y campos adaptables. */
.gp-ui.gp-file-editor .gp-file-editor-body { padding: 20px; }
.gp-ui.gp-file-editor .gp-file-editor-upload { min-width: 0; padding: 8px 0 0; }
.gp-ui.gp-file-editor .form-group, .gp-ui.gp-file-editor .select2-container { min-width: 0; max-width: 100%; }
@media (max-width: 767px) {
    .gp-ui.gp-file-editor .gp-initial-header { flex-wrap: wrap; gap: 8px; }
    .gp-ui.gp-file-editor .gp-initial-header > .barraTitulo { flex: 1 1 130px; }
    .gp-ui.gp-file-editor .gp-initial-header > .page-titles { flex: 0 0 auto; width: auto; max-width: 100%; padding-right: 0 !important; }
    .gp-ui.gp-file-editor .gp-file-editor-body { padding: 16px; }
}
/* Datos de alumno en campo. */
.gp-ui.gp-student-field .gp-student-profile { padding: 24px; }
.gp-ui.gp-student-field .gp-student-avatar { display: flex; flex-direction: column; align-items: center; gap: 8px; margin-bottom: 24px; }
.gp-ui.gp-student-field .gp-student-avatar img { width: 104px; height: 104px; max-width: 100%; border-radius: 50%; object-fit: cover; }
.gp-ui.gp-student-field .gp-student-details, .gp-ui.gp-student-field .gp-student-guardian-details { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px 24px; }
.gp-ui.gp-student-field .gp-student-details > div, .gp-ui.gp-student-field .gp-student-guardian-details > div { min-width: 0; overflow-wrap: anywhere; }
.gp-ui.gp-student-field .gp-student-details strong, .gp-ui.gp-student-field .gp-student-guardian-details strong { display: block; margin-bottom: 4px; font-size: 14px; }
.gp-ui.gp-student-field .gp-student-details p, .gp-ui.gp-student-field .gp-student-guardian-details p { margin: 0; color: var(--gp-muted); font-size: 15px; }
.gp-ui.gp-student-field .gp-student-guardians { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.gp-ui.gp-student-field .gp-student-guardian { min-width: 0; overflow: hidden; margin: 0; }
.gp-ui.gp-student-field .gp-student-guardian h2 { margin: 0; padding: 12px 16px; background: var(--gp-selection); color: var(--gp-primary); font-size: 16px; text-align: center; }
.gp-ui.gp-student-field .gp-student-guardian-details { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 18px; }
@media (max-width: 767px) {
    .gp-ui.gp-student-field .gp-student-profile { padding: 18px; }
    .gp-ui.gp-student-field .gp-student-details { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
    .gp-ui.gp-student-field .gp-student-guardians { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 380px) { .gp-ui.gp-student-field .gp-student-guardian-details { grid-template-columns: minmax(0, 1fr); } }
/* Entrenamientos del alumno y ficha de rutina. */
.gp-ui .gp-macro-alumno-aspectos { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 15px 12px; }
.gp-ui .gp-macro-alumno-aspectos span { display: inline-flex; padding: 4px 9px; border-radius: 8px; background: var(--gp-selection); color: var(--gp-primary); font-size: 13px; overflow-wrap: anywhere; }
.gp-ui .gp-rutina-fila { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 12px 15px; }
.gp-ui .gp-rutina-detalle { flex: 1 1 160px; min-width: 0; overflow-wrap: anywhere; }
.gp-ui .gp-rutina-detalle > a { display: block; }
.gp-ui .gp-rutina-detalle .txtRes, .gp-ui .gp-rutina-detalle p { padding: 0 !important; margin: 0; }
.gp-ui .gp-rutina-detalle p { margin-top: 6px; }
.gp-ui .gp-rutina-accion { flex: 0 1 auto; display: flex; align-items: stretch; gap: 8px; min-width: 0; }
.gp-ui .gp-rutina-accion .gp-rutina-ver { flex: 0 0 44px; width: 44px; min-width: 44px; height: 44px; min-height: 44px; margin: 0 !important; }
.gp-ui .gp-rutina-estado { flex: 1 1 auto; display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 8px 12px; white-space: normal; }
.gp-ui .gp-rutina-realizada { color: var(--gp-surface); background: var(--gp-primary); border-color: var(--gp-primary); }
.gp-ui.gp-micro-view .gp-micro-aspectos { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; }
.gp-ui.gp-micro-view .gp-micro-aspectos img { max-width: 48px; max-height: 48px; object-fit: contain; }
@media (max-width: 575px) { .gp-ui .gp-rutina-accion { width: 100%; } .gp-ui .gp-rutina-estado { width: 100%; } }
/* Muro del alumno: editor amplio y acciones táctiles. */
.gp-ui.gp-student-wall #buttonNuevo { display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.gp-ui.gp-student-wall .gp-student-wall-editor .row { margin-left: 0; margin-right: 0; }
.gp-ui.gp-student-wall .gp-student-wall-editor .col-12, .gp-ui.gp-student-wall .gp-student-wall-editor .col-lg-12, .gp-ui.gp-student-wall .gp-student-wall-editor .col-md-12 { min-width: 0; padding-left: 0; padding-right: 0; }
.gp-ui.gp-student-wall .gp-student-wall-editor #divMensaje { padding: 10px 0 !important; }
.gp-ui.gp-student-wall .gp-student-wall-editor .ck-editor { width: 100%; min-width: 0; }
.gp-ui.gp-student-wall .gp-student-wall-editor .ck-editor__editable_inline { min-height: 250px; overflow-wrap: anywhere; }
@media (max-width: 767px) {
    .gp-ui.gp-student-wall #modalNuevo .modal-dialog { width: calc(100% - 20px); max-width: none !important; margin: 10px auto; }
    .gp-ui.gp-student-wall .gp-student-wall-editor { padding: 12px !important; }
    .gp-ui.gp-student-wall .gp-student-wall-editor .card-body { padding: 12px; }
}
/* Información de retos en el recorrido del alumno. */
.gp-ui .gp-reto-modal .modal-dialog { width: calc(100% - 24px); max-width: 720px; margin: 12px auto; }
.gp-ui .gp-reto-modal .modal-content { max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); overflow: hidden; }
.gp-ui .gp-reto-modal .modal-header { flex: 0 0 auto; justify-content: space-between; padding: 14px 18px; }
.gp-ui .gp-reto-modal .modal-title { min-width: 0; font-size: 18px; text-align: left; overflow-wrap: anywhere; }
.gp-ui .gp-reto-modal .gp-reto-contenido { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 20px; }
.gp-ui .gp-reto-modal .gp-reto-imagen { display: flex; justify-content: center; padding: 0 0 18px; border-bottom: 1px solid var(--gp-border); }
.gp-ui .gp-reto-modal .gp-reto-imagen img { display: block; width: auto; height: auto; max-width: min(100%, 480px); max-height: min(42vh, 360px); object-fit: contain; }
.gp-ui .gp-reto-modal .gp-reto-texto { padding-top: 18px; color: var(--gp-text); font-size: 16px; line-height: 1.55; text-align: left; overflow-wrap: anywhere; }
.gp-ui .gp-reto-modal .gp-reto-texto ul, .gp-ui .gp-reto-modal .gp-reto-texto ol { padding-left: 1.4em; }
.gp-ui .gp-reto-modal .gp-reto-texto li { margin: 4px 0; }
.gp-ui .gp-reto-modal .gp-reto-texto img, .gp-ui .gp-reto-modal .gp-reto-texto iframe, .gp-ui .gp-reto-modal .gp-reto-texto video { max-width: 100%; }
.gp-ui .gp-reto-modal .gp-reto-acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 16px; }
@media (max-width: 575px) { .gp-ui .gp-reto-modal .gp-reto-contenido { padding: 16px; } .gp-ui .gp-reto-modal .gp-reto-texto { font-size: 15px; } }
/* Mantener el tamaño de los niveles aunque se use la imagen de respaldo. */
.gp-ui.gp-progress .gp-roadmap-level-image { width: 64px !important; height: 64px !important; object-fit: contain; }
.gp-ui.gp-progress .gp-roadmap-selected-image { max-width: 100%; object-fit: contain; }
.gp-ui.gp-league .gp-liga-equipo-actual { background: var(--gp-muted); color: var(--gp-on-primary); }

/* Tarjetas de entrenamientos en el recorrido del alumno. */
.gp-ui .gp-student-training-list { display: grid; gap: 12px; }
.gp-ui .gp-student-training-list .gp-student-training-card { min-width: 0; margin: 0 !important; border: 1px solid var(--gp-border); border-radius: 12px !important; }
.gp-ui .gp-student-training-link { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 88px; padding: 16px; text-align: center; color: var(--gp-primary); text-decoration: none; }
.gp-ui .gp-student-training-link:focus-visible { outline: 3px solid var(--gp-primary); outline-offset: -3px; border-radius: 12px; }
.gp-ui .gp-student-training-title { width: 100%; min-width: 0; margin: 0; color: var(--gp-primary); font-size: 17px; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui .gp-student-training-subtitle { width: 100%; min-width: 0; margin: 0; color: var(--gp-muted); font-size: 14px; line-height: 1.45; overflow-wrap: anywhere; }
.gp-ui .gp-student-training-link .gp-macro-alumno-aspectos { justify-content: center; width: 100%; padding: 0; }
.gp-ui .gp-student-training-card.color-1 .gp-macro-alumno-aspectos span { background: var(--gp-surface); }
.gp-ui.gp-student-wall .gp-student-wall-actions { margin-bottom: 20px !important; }

.gp-ui .gp-reto-modal { padding-left: 0 !important; padding-right: 0 !important; }
.gp-ui .gp-reto-modal .modal-dialog-centered::before { height: calc(100vh - 24px); height: calc(100dvh - 24px); }

.gp-ui .gp-reto-modal .modal-dialog-centered { min-height: calc(100vh - 24px); min-height: calc(100dvh - 24px); }

/* Cabecera adaptable de las reservas del alumno. */
.gp-ui.gp-bookings .gp-bookings-header { flex-wrap: wrap; gap: 8px 12px; }
.gp-ui.gp-bookings .gp-bookings-header > .barraTitulo { flex: 1 1 120px; }
.gp-ui.gp-bookings .gp-bookings-header > .page-titles { flex: 0 0 auto; max-width: 100%; overflow: visible; }
/* Reserva: condiciones compactas y acceso táctil al calendario. */
.gp-ui .reserva-condiciones .swal2-content { font-size: 14px; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui .reserva-condiciones .swal2-content p { margin: 0 0 8px; }
.gp-ui .reserva-condiciones .swal2-content hr { margin: 8px 0; }
.gp-ui .reserva-condiciones .swal2-icon { margin: 12px auto; }
.gp-ui.gp-bookings .reserva-calendario-btn { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }

/* Bonos e inscripción: cabeceras y tarjetas legibles en espacios estrechos. */
.gp-ui.gp-enrolment .bonos-seccion > summary,
.gp-ui.gp-course-booking .gp-curso-extras > summary {
    min-height: 48px; padding: 10px 14px; background: var(--gp-muted); color: var(--gp-on-primary); font-weight: 400;
}
.gp-ui.gp-enrolment .bonos-seccion > summary { margin: 8px; border-radius: 8px; font-size: 15px; }
.gp-ui.gp-course-booking .gp-curso-extras > summary { border-radius: 10px; }
.gp-ui.gp-course-booking .gp-curso-extras > summary > span:first-of-type { font-weight: 400; }
.gp-ui.gp-course-booking #resumenExtrasCurso { color: var(--gp-on-primary); }
.gp-ui.gp-enrolment .bonos-seccion > .col-12 { padding-left: 8px; padding-right: 8px; }
.gp-ui.gp-enrolment .bono-card { margin: 0 0 12px; }
.gp-ui.gp-enrolment .bono-card-titulo { background: var(--gp-muted); color: var(--gp-on-primary); font-size: 14px; font-weight: 400; }
.gp-ui.gp-enrolment .bono-tipo { font-weight: 400; }
.gp-ui.gp-enrolment .bono-card-cuerpo { align-items: stretch; }
.gp-ui.gp-enrolment .bono-info { flex: 1 1 200px; }
.gp-ui.gp-enrolment .bono-resumen { flex: 1 1 180px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.gp-ui.gp-enrolment .bono-uso { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center; gap: 4px 6px; }
.gp-ui.gp-enrolment .bono-resumen-acciones { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; }
.gp-ui.gp-enrolment .bono-canjear { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 8px 12px; white-space: nowrap; }
.gp-ui.gp-enrolment .bono-accion { align-self: center; }
@media (max-width: 767.98px) {
    .gp-ui.gp-enrolment .bono-info, .gp-ui.gp-enrolment .bono-resumen { flex-basis: 100%; }
    .gp-ui.gp-course-booking .gp-curso-extras .ei-selector { margin: 0 6px 8px; }
}

/* Ficha de profesional y listado de cursos del alumno. */
.gp-ui.gp-bookings #trainerModal .modal-dialog { max-width: 760px; }
.gp-ui.gp-bookings #trainerModal .modal-content { max-height: calc(100vh - 24px); }
.gp-ui.gp-bookings #trainerModal .modal-header { flex: 0 0 auto; }
.gp-ui.gp-bookings #trainerModal .modal-body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.gp-ui.gp-bookings #trainerModal .trainer-detail { margin: 0; padding: 0; border: 0; }
.gp-ui.gp-bookings #trainerModal .trainer-modal-close { min-width: 44px; min-height: 44px; }
.gp-ui.gp-enrolment .cursos-alumno-pagina .ca-panel { padding: 20px; border: 1px solid var(--gp-border); border-radius: 14px; background: var(--gp-surface); }
.gp-ui.gp-enrolment .cursos-alumno-pagina .ca-panel .ca-alumno { margin-bottom: 18px; }
@media (max-width: 767.98px) {
    .gp-ui.gp-bookings #trainerModal .modal-dialog { margin: 12px auto; width: calc(100% - 24px); }
    .gp-ui.gp-enrolment .cursos-alumno-pagina .ca-panel { padding: 14px; }
}

/* Inscripción familiar: nombres completos, extras amplios y horarios sin banda lateral. */
.gp-ui.familia-pagina #selectorCursoFamilia { max-width: 100%; text-overflow: ellipsis; }
.gp-ui.familia-pagina .familia-cursos h4 { overflow-wrap: anywhere; }
.gp-ui.familia-pagina .familia-selector-curso > summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 10px 14px; border: 1px solid var(--gp-control-border); border-radius: 8px; background: var(--gp-surface); color: var(--gp-text); cursor: pointer; list-style: none; }
.gp-ui.familia-pagina .familia-selector-curso > summary::-webkit-details-marker { display: none; }
.gp-ui.familia-pagina .familia-selector-curso > summary::after { content: ''; flex: 0 0 8px; width: 8px; height: 8px; border-right: 2px solid var(--gp-muted); border-bottom: 2px solid var(--gp-muted); transform: rotate(45deg); }
.gp-ui.familia-pagina .familia-selector-curso[open] > summary::after { transform: rotate(225deg); }
.gp-ui.familia-pagina .familia-selector-curso > summary span { min-width: 0; line-height: 1.4; overflow-wrap: anywhere; }
.gp-ui.familia-pagina .familia-selector-curso > summary[aria-disabled='true'] { color: var(--gp-muted); cursor: default; }
.gp-ui.familia-pagina .familia-opciones-cursos { max-height: 320px; overflow-y: auto; margin-top: 6px; padding: 4px; border: 1px solid var(--gp-border); border-radius: 8px; background: var(--gp-surface); overscroll-behavior: contain; }
.gp-ui.familia-pagina .familia-opcion-curso { display: block; width: 100%; min-height: 44px; padding: 10px 12px; border: 0; border-radius: 8px; background: var(--gp-surface); color: var(--gp-text); text-align: left; line-height: 1.4; overflow-wrap: anywhere; cursor: pointer; }
.gp-ui.familia-pagina .familia-opcion-curso[aria-pressed='true'] { background: var(--gp-selection); color: var(--gp-primary); }
.gp-ui.familia-pagina .familia-opcion-curso:hover, .gp-ui.familia-pagina .familia-opcion-curso:focus-visible { background: var(--gp-selection); }
.gp-ui.familia-pagina .familia-curso-cabecera { align-items: flex-start; }
.gp-ui.familia-pagina .familia-curso-cabecera h4 { flex: 1 1 auto; min-width: 0; line-height: 1.35; overflow-wrap: anywhere; }
.gp-ui.familia-pagina .familia-curso-cabecera #fechasCursoActual { flex: 1 1 auto; min-width: 0; margin: 0; overflow-wrap: anywhere; }
.gp-ui.familia-pagina .familia-curso-cabecera .btn { flex: 0 0 44px; }
.gp-ui.familia-pagina .familia-volver-cursos { margin-bottom: 12px; }
.gp-ui.familia-pagina .familia-horario { box-shadow: none; }
.gp-ui.familia-pagina .familia-horario.con-plazas, .gp-ui.familia-pagina .familia-horario.inscrito,
.gp-ui.familia-pagina .familia-horario.sin-plazas, .gp-ui.familia-pagina .familia-horario.con-espera { border-left-width: 1px; }
.gp-ui.familia-pagina .familia-extras-desplegable > summary { background: var(--gp-muted); color: var(--gp-on-primary); border-radius: 10px; }
.gp-ui.familia-pagina .familia-extras-desplegable > summary > span:first-of-type { font-weight: 400; }
.gp-ui.familia-pagina #resumenExtrasFamilia { color: var(--gp-on-primary); }
@media (max-width: 767.98px) {
    .gp-ui.familia-pagina .familia-selector, .gp-ui.familia-pagina .familia-cursos,
    .gp-ui.familia-pagina .familia-detalle, .gp-ui.familia-pagina .familia-revision { padding-left: 12px; padding-right: 12px; }
    .gp-ui.familia-pagina .familia-extras-desplegable .ei-selector { margin: 0; padding: 12px 8px; border: 0; }
    .gp-ui.familia-pagina .ei-selector .ei-tarjeta { padding: 10px; }
    .gp-ui.familia-pagina .ei-selector .ei-fila, .gp-ui.familia-pagina .ei-selector .ei-controles { flex-wrap: wrap; }
    .gp-ui.familia-pagina .ei-selector .ei-precio { max-width: 100%; }
}

/* Selector de fecha compartido: mismo acabado claro en todas las secciones. */
.gp-ui .datepicker.dropdown-menu { padding: 6px; border: 1px solid #d5d5d5; border-radius: 4px; background: #fff; box-shadow: none; }
.gp-ui .datepicker table th, .gp-ui .datepicker table td { text-align: center; vertical-align: middle; font-weight: 400; }
.gp-ui .datepicker thead th { background: #fff !important; color: var(--gp-text) !important; }
.gp-ui .datepicker thead th.prev:hover, .gp-ui .datepicker thead th.next:hover, .gp-ui .datepicker thead th.datepicker-switch:hover { background: var(--gp-page) !important; color: var(--gp-text) !important; }
.gp-ui .datepicker table tr td.day:not(.disabled) { color: var(--gp-text); cursor: pointer; }
.gp-ui .datepicker table tr td.day.disabled, .gp-ui .datepicker table tr td.day.disabled:hover { background: transparent !important; color: #919999 !important; cursor: default; }
.gp-ui .datepicker table tr td.today, .gp-ui .datepicker table tr td.today:hover { background: #ffeb99 !important; color: var(--gp-text) !important; }
.gp-ui .datepicker table tr td.today.disabled, .gp-ui .datepicker table tr td.today.disabled:hover { color: #777f7c !important; }
.gp-ui .datepicker table tr td.active, .gp-ui .datepicker table tr td.active:hover { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }
.gp-ui .datepicker thead th:focus-visible { outline-color: var(--gp-primary) !important; }

/* Selector de rangos: cabecera clara, como el selector de fecha compartido. */
.gp-ui .daterangepicker .calendar-table thead th { background: #fff !important; color: var(--gp-text) !important; }
.gp-ui .daterangepicker .calendar-table thead th.available:hover { background: var(--gp-page) !important; color: var(--gp-text) !important; }
.gp-ui .daterangepicker .calendar-table thead .next span, .gp-ui .daterangepicker .calendar-table thead .prev span { border-color: var(--gp-primary); }
.gp-ui .daterangepicker .calendar-table thead th:focus-visible { outline-color: var(--gp-primary) !important; }
/* Reserva: calendario claro con fechas disponibles y bloqueadas diferenciadas. */
.gp-ui.gp-bookings .reserva-estado-dias { margin: 8px 0 0; color: var(--gp-muted); font-size: 13px; line-height: 1.4; }
.gp-ui .datepicker.gp-calendario-reserva { width: 366px; max-width: calc(100vw - 24px); padding: 6px; border: 1px solid #d5d5d5; border-radius: 4px; background: #fff; box-shadow: none; }
.gp-ui .datepicker.gp-calendario-reserva table { width: 100%; table-layout: fixed; }
.gp-ui .datepicker.gp-calendario-reserva td, .gp-ui .datepicker.gp-calendario-reserva th { height: 44px; padding: 2px; text-align: center; vertical-align: middle; font-size: 16px; font-weight: 400; }
.gp-ui .datepicker.gp-calendario-reserva thead th { background: #fff !important; color: var(--gp-text) !important; }
.gp-ui .datepicker.gp-calendario-reserva thead th.prev:hover, .gp-ui .datepicker.gp-calendario-reserva thead th.next:hover, .gp-ui .datepicker.gp-calendario-reserva thead th.datepicker-switch:hover { background: var(--gp-page) !important; color: var(--gp-text) !important; }
.gp-ui .datepicker.gp-calendario-reserva td.day.gp-reserva-disponible { background: transparent; color: var(--gp-text); font-weight: 400; cursor: pointer; }
.gp-ui .datepicker.gp-calendario-reserva td.day.gp-reserva-disponible:hover { background: var(--gp-selection) !important; color: var(--gp-text) !important; }
.gp-ui .datepicker.gp-calendario-reserva td.day.disabled, .gp-ui .datepicker.gp-calendario-reserva td.day.disabled:hover { background: transparent !important; color: #919999 !important; font-weight: 400; cursor: default; }
.gp-ui .datepicker.gp-calendario-reserva td.day.today, .gp-ui .datepicker.gp-calendario-reserva td.day.today:hover { background: #ffeb99 !important; box-shadow: none; }
.gp-ui .datepicker.gp-calendario-reserva td.day.today.disabled, .gp-ui .datepicker.gp-calendario-reserva td.day.today.disabled:hover { color: #777f7c !important; }
.gp-ui .datepicker.gp-calendario-reserva td.day.active, .gp-ui .datepicker.gp-calendario-reserva td.day.active:hover { background: var(--gp-primary) !important; color: var(--gp-on-primary) !important; }

/* Etiquetas informativas de zonas y aspectos en Ubicaciones. */
.gp-ui.gp-ubicaciones .gp-ubicaciones-etiquetas { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; padding: 0; margin: 0; list-style: none; }
.gp-ui.gp-ubicaciones .gp-ubicaciones-etiquetas li { max-width: 100%; padding: 6px 10px; border: 1px solid var(--gp-border); border-radius: 6px; background: var(--gp-selection); color: var(--gp-primary); line-height: 1.4; text-align: center; overflow-wrap: anywhere; }

/* Acción de profesional en las agrupaciones del curso. */
.gp-ui .gestion-agrupacion-profesor { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px 12px; }
.gp-ui .gestion-agrupacion-profesor > span { min-width: 0; text-align: center; overflow-wrap: anywhere; }
.gp-ui .gestion-agrupacion-profesor > .btn { margin: 0 !important; }


/* Gamypaths: filtros regulares y navegación común de escuela y alumno. */
.gp-ui .gp-gamypaths-acceso { display: flex; justify-content: flex-end; margin: 0 0 16px; }
.gp-ui.gp-gamypaths .gp-gamypaths-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 20px; }
.gp-ui.gp-gamypaths .gp-gamypaths-nav .btn { min-height: 44px; margin: 0; white-space: normal; }
.gp-ui.gp-gamypaths .gp-gamypaths-filtros { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); align-items: end; gap: 16px; margin: 0 0 24px; }
.gp-ui.gp-gamypaths .gp-gamypaths-filtros > .form-group { min-width: 0; margin: 0 !important; padding: 0 !important; }
.gp-ui.gp-gamypaths .gp-gamypaths-filtros label { display: block; margin: 0 0 6px; text-align: center; }
.gp-ui.gp-gamypaths .gp-gamypaths-filtros br { display: none; }
.gp-ui.gp-gamypaths .gp-gamypaths-filtros select:not(.select2-hidden-accessible), .gp-ui.gp-gamypaths .gp-gamypaths-filtros .select2-container { width: 100% !important; max-width: 100%; }
.gp-ui.gp-gamypaths .select2-hidden-accessible { width: 1px !important; height: 1px !important; }
.gp-ui.gp-gamypaths .table .btn-group { display: inline-flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.gp-ui.gp-gamypaths .table .btn-group > .btn { display: inline-flex; align-items: center; justify-content: center; width: 44px; min-height: 44px; margin: 0 !important; padding: 8px !important; border-radius: 8px !important; }
.gp-ui.gp-gamypaths .table .btn-group > .btn i, .gp-ui.gp-gamypaths .table a.btn > i.fa-2x { font-size: 18px; }
.gp-ui.gp-gamypaths #divHijos > a { text-decoration: none; }
.gp-ui.gp-gamypaths #divHijos > a:focus-visible { outline: 3px solid var(--gp-primary); outline-offset: 3px; border-radius: 8px; }
.gp-ui.gp-gamypaths #divHoyos, .gp-ui.gp-gamypaths #listaActividades { display: flex; flex-wrap: wrap !important; justify-content: center !important; gap: 8px; }
.gp-ui.gp-gamypaths #divHoyos { display: grid; grid-template-columns: repeat(auto-fit, minmax(60px, 1fr)); }
.gp-ui.gp-gamypaths #divHoyos > div { display: flex; justify-content: center; }
.gp-ui.gp-gamypaths #divHoyos .hoyos { width: 100%; max-width: 72px; }
.gp-ui.gp-gamypaths #divHoyos > div, .gp-ui.gp-gamypaths #listaActividades > div { padding: 0 !important; }
.gp-ui.gp-gamypaths .hoyos, .gp-ui.gp-gamypaths .actividades { display: inline-flex; align-items: center; justify-content: center; min-width: 48px; min-height: 48px; margin: 0; padding: 10px !important; line-height: 1.2; }
.gp-ui.gp-gamypaths .gp-gamypaths-error { margin: 0 0 16px; text-align: center; }
@media (max-width: 575px) {
    .gp-ui.gp-gamypaths .gp-gamypaths-filtros { grid-template-columns: minmax(0, 1fr); gap: 12px; }
    .gp-ui.gp-gamypaths .gp-gamypaths-nav > .btn { flex: 1 1 110px; }
}

/* Espacio del alumno: un único contexto, continuación, mapa y material de apoyo. */
.gp-ui.gp-gamypaths-alumno .gp-gpa { max-width: 1248px; padding: 24px; color: var(--gp-text); }
.gp-gpa [hidden] { display: none !important; }
.gp-gpa *, .gp-gpa *::before, .gp-gpa *::after { box-sizing: border-box; }
.gp-gpa h1, .gp-gpa h2, .gp-gpa h3, .gp-gpa p, .gp-gpa span, .gp-gpa strong { overflow-wrap: anywhere; }
.gp-gpa h1 { margin: 0; font-size: 26px; line-height: 1.3; }
.gp-gpa h2 { margin: 0; font-size: 20px; line-height: 1.4; }
.gp-gpa h3 { margin: 0 0 12px; font-size: 19px; line-height: 1.45; }
.gp-gpa .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; gap: 8px; margin: 0; white-space: normal; }
.gp-gpa button:focus-visible, .gp-gpa summary:focus-visible, .gp-gpa input:focus-visible, .gp-gpa select:focus-visible { outline: 3px solid var(--gp-primary); outline-offset: 3px; }
.gp-gpa-cabecera { display: flex; align-items: center; gap: 16px; margin-bottom: 24px; }
.gp-gpa-cabecera > .btn { width: 44px; flex: 0 0 44px; }
.gp-gpa-identidad { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; padding: 20px; margin-bottom: 20px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); }
.gp-gpa-persona { display: flex; align-items: center; min-width: 0; gap: 14px; }
.gp-gpa-persona img { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; }
.gp-gpa-eyebrow { display: block; color: var(--gp-muted); font-size: 13px; line-height: 1.5; margin: 0 0 4px; }
.gp-gpa-identidad label { display: block; margin: 0 0 4px; text-align: center; font-size: 13px; }
.gp-gpa-identidad select { min-width: 220px; max-width: 100%; text-align: center; }
.gp-gpa-resumen { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 20px; }
.gp-gpa-resumen > div { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 16px 12px; border: 1px solid var(--gp-border); border-radius: 10px; background: var(--gp-surface); text-align: center; }
.gp-gpa-resumen strong { font-size: 28px; color: var(--gp-primary); line-height: 1.25; }
.gp-gpa-resumen span { font-size: 13px; }
.gp-gpa-continuar { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 24px; margin-bottom: 24px; border: 1px solid var(--gp-control-border); border-radius: 12px; background: var(--gp-selection); }
.gp-gpa-continuar > div { flex: 1; min-width: 0; }
.gp-gpa-continuar p { margin: 6px 0 12px; }
.gp-gpa-opciones, .gp-gpa-pestanas { display: flex; align-items: stretch; flex-wrap: wrap; gap: 8px; }
.gp-gpa-opciones > .btn, .gp-gpa-pestanas > .btn { min-width: max-content; white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.gp-gpa-filtros { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 20px; }
.gp-gpa-filtros input { min-width: 220px; max-width: 100%; }
.gp-gpa-rutas { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 20px; }
.gp-gpa-tarjeta { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 24px; min-width: 0; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); }
.gp-gpa-tarjeta > .btn { align-self: stretch; margin-top: auto; }
.gp-gpa-tarjeta .gp-gpa-progreso { width: 100%; }
.gp-gpa-progreso { display: grid; gap: 7px; font-size: 13px; }
.gp-gpa-progreso progress { display: block; width: 100%; height: 10px; overflow: hidden; border: 0; border-radius: 8px; background: var(--gp-border); accent-color: var(--gp-primary); }
.gp-gpa-progreso progress::-webkit-progress-bar { background: var(--gp-border); border-radius: 8px; }
.gp-gpa-progreso progress::-webkit-progress-value { background: var(--gp-primary); border-radius: 8px; }
.gp-gpa-etiqueta, .gp-gpa-logro { display: inline-flex; align-items: center; justify-content: center; padding: 5px 10px; border-radius: 6px; background: var(--gp-selection); color: var(--gp-primary); font-size: 12px; text-align: center; }
.gp-gpa-meta { margin: 0; font-size: 12px; color: var(--gp-muted); }
.gp-gpa-vacio { grid-column: 1 / -1; padding: 32px 20px; border: 1px dashed var(--gp-control-border); border-radius: 12px; text-align: center; background: var(--gp-surface); }
.gp-gpa-vacio p { margin: 12px 0; }
.gp-gpa-vacio > .btn { margin-top: 12px; }
.gp-gpa-detalle { min-width: 0; padding: 24px; border: 1px solid var(--gp-border); border-radius: 12px; background: var(--gp-surface); scroll-margin-top: 90px; }
.gp-gpa-ruta-cabecera { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; margin-bottom: 20px; }
.gp-gpa-ruta-cabecera > div { flex: 1; min-width: 180px; }
.gp-gpa-info { width: 100%; margin: 12px 0; }
.gp-gpa summary { cursor: pointer; min-height: 44px; padding: 10px 0; line-height: 1.5; }
.gp-gpa-info p { margin: 8px 0; }
.gp-gpa-nota { margin: 16px 0; padding: 12px 16px; border-left: 3px solid var(--gp-control-border); background: var(--gp-selection); font-size: 14px; line-height: 1.6; }
.gp-gpa-pestanas { margin: 20px 0; padding-bottom: 16px; border-bottom: 1px solid var(--gp-border); }
.gp-gpa-estudio { display: grid; grid-template-columns: minmax(240px, 0.8fr) minmax(0, 1.7fr); align-items: start; gap: 24px; }
.gp-gpa-hoyo { margin-bottom: 10px; border: 1px solid var(--gp-border); border-radius: 8px; overflow: hidden; }
.gp-gpa-hoyo > summary { padding: 12px; background: var(--gp-selection); }
.gp-gpa-hoyo > summary strong { margin-right: 12px; }
.gp-gpa-hoyo > summary span { white-space: nowrap; font-size: 12px; }
.gp-gpa .gp-gpa-paso { display: grid; grid-template-columns: 30px minmax(0, 1fr); align-items: center; gap: 3px 10px; width: 100%; min-height: 64px; border: 0; border-top: 1px solid var(--gp-border); border-radius: 6px; padding: 12px; background: var(--gp-surface); color: var(--gp-text); text-align: center; cursor: pointer; }
.gp-gpa .gp-gpa-paso.is-active { background: var(--gp-selection); box-shadow: inset 4px 0 var(--gp-primary); }
.gp-gpa-numero { display: inline-flex; align-items: center; justify-content: center; grid-row: span 2; width: 30px; height: 30px; border: 1px solid var(--gp-control-border); border-radius: 50%; font-size: 13px; }
.gp-gpa .is-done .gp-gpa-numero { background: var(--gp-primary); border-color: var(--gp-primary); color: white; }
.gp-gpa-paso-nombre { font-size: 14px; line-height: 1.5; }
.gp-gpa-paso small { color: var(--gp-muted); font-size: 12px; }
.gp-gpa-actividad { display: flex; flex-direction: column; align-items: stretch; gap: 14px; min-width: 0; scroll-margin-top: 90px; }
.gp-gpa-actividad > h3, .gp-gpa-actividad > p { margin: 0; }
.gp-gpa-actividad > .gp-gpa-etiqueta { align-self: flex-start; }
.gp-gpa-actividad > img, .gp-gpa-recurso > img { display: block; max-width: 100%; max-height: 360px; width: auto; height: auto; object-fit: contain; margin: 0 auto; border-radius: 8px; }
.gp-gpa-contenido { line-height: 1.65; overflow-wrap: anywhere; min-width: 0; }
.gp-gpa-contenido img { max-width: 100%; height: auto; }
.gp-gpa-contenido table { display: block; max-width: 100%; overflow-x: auto; }
.gp-gpa-respuestas { display: grid; gap: 10px; min-width: 0; }
.gp-gpa-respuestas legend { font-size: 15px; padding: 0; margin-bottom: 10px; }
.gp-gpa-respuestas label { display: flex; align-items: center; gap: 12px; min-height: 50px; padding: 12px; margin: 0; border: 1px solid var(--gp-control-border); border-radius: 8px; cursor: pointer; }
.gp-gpa-respuestas input { flex: 0 0 20px; width: 20px; height: 20px; position: static !important; opacity: 1 !important; accent-color: var(--gp-primary); }
.gp-gpa-respuestas label:has(input:checked) { background: var(--gp-selection); border-color: var(--gp-primary); }
.gp-gpa-respuestas span { min-width: 0; }
.gp-gpa-respuestas img { max-width: 100%; height: auto; }
.gp-gpa-resultado { padding: 14px; background: var(--gp-selection); border-radius: 8px; border: 1px solid var(--gp-control-border); }
.gp-gpa-resultado.is-done { border-left: 4px solid var(--gp-primary); }
.gp-gpa-historial { list-style: none; padding: 0; margin: 20px 0 0; }
.gp-gpa-historial li { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--gp-border); }
.gp-gpa-historial li > div { display: grid; gap: 6px; min-width: 0; }
.gp-gpa-historial span { font-size: 13px; color: var(--gp-muted); }
.gp-gpa-recurso { border: 1px solid var(--gp-border); border-radius: 8px; padding: 16px; margin: 12px 0; }
.gp-gpa-recurso > summary { padding: 0 0 10px; }
.gp-gpa-recurso .gp-gpa-recurso { margin: 16px 0 0; }
.gp-gpa-recurso > .btn { margin-top: 16px; }
.gp-gpa #gpAviso { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
@media (max-width: 991px) {
    .gp-gpa-estudio { grid-template-columns: minmax(210px, 0.8fr) minmax(0, 1.2fr); gap: 16px; }
    .gp-gpa-continuar { flex-wrap: wrap; }
}
@media (max-width: 767px) {
    .gp-ui.gp-gamypaths-alumno .gp-gpa { padding: 86px 12px 24px; }
    .gp-gpa h1 { font-size: 23px; }
    .gp-gpa h2 { font-size: 19px; }
    .gp-gpa-identidad, .gp-gpa-tarjeta, .gp-gpa-continuar, .gp-gpa-detalle { padding: 16px; }
    .gp-gpa-identidad > div, .gp-gpa-identidad select { width: 100%; min-width: 0; }
    .gp-gpa-estudio { display: flex; flex-direction: column; }
    .gp-gpa-actividad { order: 0; width: 100%; }
    .gp-gpa #gpMapa { order: 1; width: 100%; }
    .gp-gpa-continuar > .btn, .gp-gpa-opciones > .btn, .gp-gpa-pestanas > .btn { flex: 1 1 140px; }
    .gp-gpa-filtros > div { width: 100%; }
    .gp-gpa-filtros input { width: 100%; min-width: 0; }
    .gp-gpa-resumen { gap: 8px; }
    .gp-gpa-resumen > div { padding: 12px 6px; }
    .gp-gpa-resumen strong { font-size: 24px; }
    .gp-gpa-resumen span { font-size: 12px; }
    .gp-gpa-historial li { align-items: stretch; flex-direction: column; gap: 12px; }
}
