:root {
    --gipyc-ge-navy: #0f2742;
    --gipyc-ge-blue: #183b5b;
    --gipyc-ge-background: #f3f5f7;
    --gipyc-ge-green: #1f9d68;
    --gipyc-ge-orange: #e98b1b;
    --gipyc-ge-red: #b74444;
    --gipyc-ge-white: #ffffff;
    --gipyc-ge-text: #182433;
    --gipyc-ge-muted: #617083;
    --gipyc-ge-border: #dce2e8;
    --gipyc-ge-shadow: 0 12px 30px rgba(15, 39, 66, 0.08);
}

.gipyc-ge-app,
.gipyc-ge-app * {
    box-sizing: border-box;
}

.gipyc-ge-app {
    min-height: 760px;
    color: var(--gipyc-ge-text);
    background: var(--gipyc-ge-background);
    font-family: Poppins, Montserrat, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 16px;
    line-height: 1.55;
}

.gipyc-ge-loading {
    min-height: 520px;
    display: flex;
    gap: 14px;
    align-items: center;
    justify-content: center;
    color: var(--gipyc-ge-muted);
    font-weight: 600;
}

.gipyc-ge-loading__spinner {
    width: 28px;
    height: 28px;
    border: 3px solid var(--gipyc-ge-border);
    border-top-color: var(--gipyc-ge-blue);
    border-radius: 50%;
    animation: gipyc-ge-spin .8s linear infinite;
}

@keyframes gipyc-ge-spin { to { transform: rotate(360deg); } }

.gipyc-ge-layout {
    position: relative;
    min-height: 760px;
    display: grid;
    grid-template-columns: 280px minmax(0, 1fr);
}

.gipyc-ge-sidebar {
    min-height: 760px;
    display: flex;
    flex-direction: column;
    background: var(--gipyc-ge-navy);
    color: var(--gipyc-ge-white);
}

.gipyc-ge-brand {
    min-height: 92px;
    padding: 20px 24px;
    display: flex;
    align-items: center;
    gap: 14px;
    border-bottom: 1px solid rgba(255,255,255,.12);
}

.gipyc-ge-brand__mark {
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: var(--gipyc-ge-green);
    font-weight: 700;
}

.gipyc-ge-brand strong,
.gipyc-ge-brand small {
    display: block;
}

.gipyc-ge-brand strong { font-size: 17px; }
.gipyc-ge-brand small { color: rgba(255,255,255,.7); }

.gipyc-ge-nav {
    flex: 1;
    padding: 20px 14px;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.gipyc-ge-nav__item {
    min-height: 48px;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    border-radius: 11px;
    color: rgba(255,255,255,.82);
    text-decoration: none;
    font-weight: 500;
    transition: background .18s ease, color .18s ease, transform .18s ease;
}

.gipyc-ge-nav__item:hover,
.gipyc-ge-nav__item:focus-visible {
    color: var(--gipyc-ge-white);
    background: rgba(255,255,255,.1);
    transform: translateX(2px);
}

.gipyc-ge-nav__item.is-active {
    color: var(--gipyc-ge-white);
    background: var(--gipyc-ge-blue);
    box-shadow: inset 3px 0 0 var(--gipyc-ge-green);
}

.gipyc-ge-nav__icon {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    background: rgba(255,255,255,.08);
    color: currentColor;
    flex: 0 0 28px;
}

.gipyc-ge-nav__svg {
    width: 17px;
    height: 17px;
    display: block;
}

.gipyc-ge-sidebar__footer {
    padding: 18px 24px;
    display: flex;
    justify-content: space-between;
    border-top: 1px solid rgba(255,255,255,.12);
    color: rgba(255,255,255,.65);
    font-size: 13px;
}

.gipyc-ge-sidebar__footer a { color: rgba(255,255,255,.88); }

.gipyc-ge-main { min-width: 0; }

.gipyc-ge-topbar {
    min-height: 76px;
    padding: 0 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    background: var(--gipyc-ge-white);
    border-bottom: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-topbar strong,
.gipyc-ge-topbar small { display: block; }
.gipyc-ge-topbar small { color: var(--gipyc-ge-muted); }

.gipyc-ge-user {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-user__avatar {
    width: 40px;
    height: 40px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--gipyc-ge-blue);
    color: var(--gipyc-ge-white);
    font-weight: 700;
}

.gipyc-ge-menu-button {
    display: none;
    width: 44px;
    height: 44px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-navy);
    font-size: 23px;
    cursor: pointer;
}

.gipyc-ge-content {
    padding: 34px;
}

.gipyc-ge-page-header {
    margin-bottom: 28px;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
}

.gipyc-ge-page-header h1 {
    margin: 4px 0 8px;
    color: var(--gipyc-ge-navy);
    font-size: clamp(28px, 3vw, 40px);
    line-height: 1.15;
}

.gipyc-ge-page-header p { max-width: 760px; margin: 0; color: var(--gipyc-ge-muted); }
.gipyc-ge-eyebrow { color: var(--gipyc-ge-green); text-transform: uppercase; letter-spacing: .08em; font-size: 13px; font-weight: 700; }

.gipyc-ge-health,
.gipyc-ge-module-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 12px;
    border-radius: 999px;
    white-space: nowrap;
    font-size: 12px;
    font-weight: 700;
}

.gipyc-ge-health.is-ok,
.gipyc-ge-module-status.is-active { background: rgba(31,157,104,.13); color: #14734c; }
.gipyc-ge-health.is-warning,
.gipyc-ge-module-status.is-next { background: rgba(233,139,27,.15); color: #98580f; }
.gipyc-ge-module-status.is-base { background: rgba(24,59,91,.12); color: var(--gipyc-ge-blue); }
.gipyc-ge-module-status.is-planned { background: #edf0f3; color: var(--gipyc-ge-muted); }

.gipyc-ge-metrics {
    margin-bottom: 24px;
    display: grid;
    grid-template-columns: repeat(4, minmax(0,1fr));
    gap: 18px;
}

/* v0.34.30 · resumen de asistencia en una sola fila */
.gipyc-ge-metrics--attendance {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}

/* v0.34.68 · resumen académico operativo en una sola fila */
.gipyc-ge-metrics--academic {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 12px;
}

.gipyc-ge-metrics--academic .gipyc-ge-metric {
    min-width: 0;
    padding: 16px 14px;
}

.gipyc-ge-metric--action {
    width: 100%;
    appearance: none;
    -webkit-appearance: none;
    font: inherit;
    line-height: inherit;
    text-align: left;
    cursor: pointer;
    transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease, background .16s ease;
}

.gipyc-ge-metric--action:hover {
    transform: translateY(-2px);
    border-color: rgba(24,59,91,.28);
    box-shadow: 0 12px 28px rgba(18,48,76,.10);
}

.gipyc-ge-metric--action:focus-visible {
    outline: 3px solid rgba(31,157,104,.24);
    outline-offset: 2px;
    border-color: var(--gipyc-ge-green);
}

.gipyc-ge-metrics--academic .gipyc-ge-metric span {
    min-height: 42px;
    font-size: 14px;
    line-height: 1.35;
}

.gipyc-ge-metrics--academic .gipyc-ge-metric strong {
    margin: 5px 0;
    font-size: 24px;
}

.gipyc-ge-metrics--academic .gipyc-ge-metric small {
    font-size: 11px;
    line-height: 1.35;
}

.gipyc-ge-metric,
.gipyc-ge-card {
    background: var(--gipyc-ge-white);
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    box-shadow: var(--gipyc-ge-shadow);
}

.gipyc-ge-metric { padding: 20px; }
.gipyc-ge-metric span,
.gipyc-ge-metric small { display: block; color: var(--gipyc-ge-muted); }
.gipyc-ge-metric strong { display: block; margin: 7px 0; color: var(--gipyc-ge-navy); font-size: 25px; }

.gipyc-ge-card-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0,1fr));
    gap: 20px;
}

.gipyc-ge-card { padding: 24px; }
.gipyc-ge-card--wide { grid-column: 1 / -1; }
.gipyc-ge-card h2 { margin: 0; color: var(--gipyc-ge-navy); font-size: 20px; }
.gipyc-ge-card p { color: var(--gipyc-ge-muted); }

.gipyc-ge-card__heading {
    margin-bottom: 18px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 14px;
}

.gipyc-ge-feature-list,
.gipyc-ge-table-status {
    margin: 0;
    padding: 0;
    list-style: none;
}

.gipyc-ge-feature-list li,
.gipyc-ge-table-status li {
    padding: 10px 0;
    display: flex;
    align-items: center;
    gap: 10px;
    border-bottom: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-feature-list li:last-child,
.gipyc-ge-table-status li:last-child { border-bottom: 0; }
.gipyc-ge-feature-list li::before { content: '✓'; color: var(--gipyc-ge-green); font-weight: 700; }
.gipyc-ge-table-status .is-ok { color: var(--gipyc-ge-green); font-weight: 700; }
.gipyc-ge-table-status .is-error { color: var(--gipyc-ge-red); font-weight: 700; }

.gipyc-ge-inline-details {
    margin-top: 20px;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}
.gipyc-ge-inline-details span { padding: 8px 12px; background: var(--gipyc-ge-background); border-radius: 8px; color: var(--gipyc-ge-muted); font-size: 13px; }

.gipyc-ge-empty-state {
    min-height: 360px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.gipyc-ge-empty-state p { max-width: 620px; }
.gipyc-ge-empty-state__icon { width: 72px; height: 72px; display: grid; place-items: center; margin-bottom: 18px; border-radius: 20px; background: var(--gipyc-ge-background); color: var(--gipyc-ge-blue); font-size: 28px; font-weight: 700; }

.gipyc-ge-alert { margin-bottom: 22px; padding: 15px 18px; display: flex; flex-direction: column; border: 1px solid rgba(183,68,68,.25); border-left: 4px solid var(--gipyc-ge-red); border-radius: 10px; background: rgba(183,68,68,.07); color: #7f2f2f; }
.gipyc-ge-alert--error { border-color: rgba(183,68,68,.25); border-left-color: var(--gipyc-ge-red); background: rgba(183,68,68,.07); color: #7f2f2f; }
.gipyc-ge-alert--success { border-color: rgba(31,157,104,.28); border-left-color: var(--gipyc-ge-green); background: rgba(31,157,104,.08); color: #176c4b; }
.gipyc-ge-alert--info { border-color: rgba(24,59,91,.24); border-left-color: var(--gipyc-ge-blue); background: rgba(24,59,91,.07); color: #183b5b; }
.gipyc-ge-alert--warning { border-color: rgba(233,139,27,.32); border-left-color: var(--gipyc-ge-orange); background: rgba(233,139,27,.09); color: #8a5513; }

.gipyc-ge-overlay { display: none; }

.gipyc-ge-access-message {
    max-width: 620px;
    margin: 40px auto;
    padding: 32px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: var(--gipyc-ge-white);
    box-shadow: var(--gipyc-ge-shadow);
    font-family: Poppins, Montserrat, sans-serif;
    text-align: center;
}
.gipyc-ge-access-message--error { border-top: 4px solid var(--gipyc-ge-red); }
.gipyc-ge-button { display: inline-flex; padding: 12px 18px; border-radius: 10px; background: var(--gipyc-ge-navy); color: #fff; text-decoration: none; font-weight: 700; }

@media (max-width: 1100px) {
    .gipyc-ge-layout { grid-template-columns: 235px minmax(0,1fr); }
    .gipyc-ge-metrics { grid-template-columns: repeat(2, minmax(0,1fr)); }
    .gipyc-ge-metrics--academic { grid-template-columns: repeat(6, minmax(0,1fr)); gap: 10px; }
    .gipyc-ge-metrics--academic .gipyc-ge-metric { padding: 14px 10px; }
    .gipyc-ge-metrics--academic .gipyc-ge-metric span { font-size: 13px; }
    .gipyc-ge-metrics--academic .gipyc-ge-metric small { font-size: 10px; }
    .gipyc-ge-metrics--attendance { grid-template-columns: repeat(3, minmax(0,1fr)); }
}

@media (max-width: 820px) {
    .gipyc-ge-layout { display: block; }
    .gipyc-ge-sidebar { position: fixed; z-index: 30; top: 0; bottom: 0; left: 0; width: min(300px, 86vw); transform: translateX(-102%); transition: transform .2s ease; }
    .gipyc-ge-layout.is-menu-open .gipyc-ge-sidebar { transform: translateX(0); }
    .gipyc-ge-layout.is-menu-open .gipyc-ge-overlay { position: fixed; z-index: 20; inset: 0; display: block; border: 0; background: rgba(7,20,35,.48); }
    .gipyc-ge-menu-button { display: grid; place-items: center; }
    .gipyc-ge-topbar { padding: 0 18px; }
    .gipyc-ge-content { padding: 24px 18px; }
    .gipyc-ge-card-grid { grid-template-columns: 1fr; }
    .gipyc-ge-card--wide { grid-column: auto; }
    .gipyc-ge-metrics--academic { grid-template-columns: repeat(3, minmax(0,1fr)); }
    .gipyc-ge-metrics--attendance { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

@media (max-width: 560px) {
    .gipyc-ge-user > span:first-child { display: none; }
    .gipyc-ge-page-header { flex-direction: column; }
    .gipyc-ge-metrics { grid-template-columns: 1fr; }
    .gipyc-ge-metrics--academic { grid-template-columns: repeat(2, minmax(0,1fr)); }
    .gipyc-ge-metrics--attendance { grid-template-columns: 1fr; }
    .gipyc-ge-card { padding: 20px; }
    .gipyc-ge-card__heading { align-items: flex-start; flex-direction: column; }
}

/* Estructura escolar v0.2.0 */
.gipyc-ge-button {
    min-height: 46px;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 1px solid var(--gipyc-ge-navy);
    cursor: pointer;
    font: inherit;
    line-height: 1.2;
}

.gipyc-ge-button:hover,
.gipyc-ge-button:focus-visible {
    background: var(--gipyc-ge-blue);
    color: var(--gipyc-ge-white);
}

.gipyc-ge-button:disabled {
    opacity: .58;
    cursor: not-allowed;
}

.gipyc-ge-button--secondary {
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-navy);
    border-color: var(--gipyc-ge-border);
}

.gipyc-ge-button--secondary:hover,
.gipyc-ge-button--secondary:focus-visible {
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-metrics--structure {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.gipyc-ge-structure-card {
    padding: 0;
    overflow: hidden;
}

/* v0.34.69 · navegación segmentada compartida */
.gipyc-ge-tabs {
    width: max-content;
    max-width: 100%;
    margin: 0 0 22px;
    padding: 5px;
    display: flex;
    align-items: center;
    gap: 4px;
    overflow-x: auto;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 13px;
    background: var(--gipyc-ge-white);
    box-shadow: 0 4px 14px rgba(15, 39, 66, .05);
    scrollbar-width: thin;
}

.gipyc-ge-tabs .gipyc-ge-tab {
    min-height: 40px;
    padding: 8px 13px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex: 0 0 auto;
    appearance: none;
    border: 0;
    border-radius: 9px;
    outline: 0;
    box-shadow: none;
    background: transparent;
    color: var(--gipyc-ge-muted);
    text-decoration: none;
    text-transform: none;
    font: inherit;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    transition: background .16s ease, color .16s ease, box-shadow .16s ease;
}

.gipyc-ge-tabs .gipyc-ge-tab span {
    min-width: 24px;
    height: 24px;
    padding: 0 7px;
    display: inline-grid;
    place-items: center;
    border-radius: 999px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    font-weight: 700;
}

.gipyc-ge-tabs .gipyc-ge-tab:hover,
.gipyc-ge-tabs .gipyc-ge-tab:focus-visible {
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-tabs .gipyc-ge-tab:focus-visible {
    box-shadow: 0 0 0 2px rgba(24, 59, 91, .18);
}

.gipyc-ge-tabs .gipyc-ge-tab.is-active {
    background: var(--gipyc-ge-navy);
    color: var(--gipyc-ge-white);
    box-shadow: 0 5px 12px rgba(15, 39, 66, .14);
}

.gipyc-ge-tabs .gipyc-ge-tab.is-active span {
    background: rgba(255, 255, 255, .16);
    color: var(--gipyc-ge-white);
}

/* En tarjetas sin padding, la barra conserva aire propio; en Asistencia ya vive dentro de una barra operativa. */
.gipyc-ge-structure-card > .gipyc-ge-tabs {
    margin: 16px 16px 20px;
    max-width: calc(100% - 32px);
}

.gipyc-ge-attendance-toolbar .gipyc-ge-tabs {
    margin-bottom: 0;
}

.gipyc-ge-structure-content {
    min-height: 360px;
}

.gipyc-ge-table-wrap {
    width: 100%;
    max-height: 650px;
    overflow: auto;
}

.gipyc-ge-data-table {
    width: 100%;
    min-width: 850px;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 14px;
}

.gipyc-ge-data-table th,
.gipyc-ge-data-table td {
    padding: 15px 17px;
    border-bottom: 1px solid var(--gipyc-ge-border);
    text-align: left;
    vertical-align: middle;
}

.gipyc-ge-data-table th {
    position: sticky;
    z-index: 2;
    top: 0;
    background: #f8fafb;
    color: var(--gipyc-ge-navy);
    font-size: 12px;
    letter-spacing: .025em;
    text-transform: uppercase;
}

.gipyc-ge-data-table tbody tr:hover {
    background: rgba(24, 59, 91, .025);
}

.gipyc-ge-data-table tbody tr:last-child td {
    border-bottom: 0;
}

.gipyc-ge-link-button {
    padding: 6px 0;
    border: 0;
    background: transparent;
    color: var(--gipyc-ge-blue);
    cursor: pointer;
    font: inherit;
    font-weight: 700;
}

.gipyc-ge-link-button:hover,
.gipyc-ge-link-button:focus-visible {
    color: var(--gipyc-ge-green);
    text-decoration: underline;
}

.gipyc-ge-record-status {
    display: inline-flex;
    align-items: center;
    padding: 6px 9px;
    border-radius: 999px;
    white-space: nowrap;
    font-size: 12px;
    font-weight: 700;
}

.gipyc-ge-record-status.is-active { background: rgba(31, 157, 104, .13); color: #14734c; }
.gipyc-ge-record-status.is-next { background: rgba(233, 139, 27, .15); color: #98580f; }
.gipyc-ge-record-status.is-base { background: rgba(24, 59, 91, .12); color: var(--gipyc-ge-blue); }
.gipyc-ge-record-status.is-planned { background: #edf0f3; color: var(--gipyc-ge-muted); }

.gipyc-ge-empty-state--compact {
    min-height: 355px;
    margin: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.gipyc-ge-loading--page {
    min-height: 520px;
}

.gipyc-ge-structure-content > .gipyc-ge-loading {
    min-height: 360px;
}

.gipyc-ge-drawer-backdrop {
    position: fixed;
    z-index: 100000;
    inset: 0;
    background: rgba(7, 20, 35, .54);
}

.gipyc-ge-drawer {
    position: fixed;
    z-index: 100001;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(680px, 94vw);
    display: flex;
    flex-direction: column;
    background: var(--gipyc-ge-white);
    box-shadow: -18px 0 50px rgba(7, 20, 35, .18);
    font-family: Poppins, Montserrat, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--gipyc-ge-text);
}

.gipyc-ge-drawer--wide {
    width: min(980px, 96vw);
}

.gipyc-ge-drawer__header {
    min-height: 88px;
    padding: 18px 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    border-bottom: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-drawer__header span {
    display: block;
    color: var(--gipyc-ge-green);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
}

.gipyc-ge-drawer__header h2 {
    margin: 2px 0 0;
    color: var(--gipyc-ge-navy);
    font-size: 24px;
    text-transform: capitalize;
}

.gipyc-ge-icon-button {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 11px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-navy);
    cursor: pointer;
    font-size: 28px;
    line-height: 1;
}

.gipyc-ge-icon-button:hover,
.gipyc-ge-icon-button:focus-visible {
    background: var(--gipyc-ge-background);
}

.gipyc-ge-drawer__body {
    min-height: 0;
    display: flex;
    flex: 1;
    flex-direction: column;
    overflow: auto;
}

.gipyc-ge-form-grid {
    padding: 24px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.gipyc-ge-field {
    min-width: 0;
}

.gipyc-ge-field.is-full {
    grid-column: 1 / -1;
}

.gipyc-ge-field > label {
    margin-bottom: 7px;
    display: block;
    color: var(--gipyc-ge-navy);
    font-size: 14px;
    font-weight: 700;
}

.gipyc-ge-field input,
.gipyc-ge-field select,
.gipyc-ge-field textarea {
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #cfd7df;
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-text);
    font: inherit;
    font-size: 16px;
}

.gipyc-ge-field textarea {
    min-height: 100px;
    resize: vertical;
}

.gipyc-ge-field input:focus,
.gipyc-ge-field select:focus,
.gipyc-ge-field textarea:focus {
    border-color: var(--gipyc-ge-blue);
    outline: 3px solid rgba(24, 59, 91, .12);
}

.gipyc-ge-field small {
    margin-top: 6px;
    display: block;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-field.is-checkbox {
    display: flex;
    align-items: center;
}

.gipyc-ge-field.is-checkbox > label:not(.gipyc-ge-switch):first-child {
    display: none;
}

.gipyc-ge-switch {
    min-height: 48px;
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
}

.gipyc-ge-switch input {
    width: 21px;
    min-height: 21px;
    height: 21px;
    margin: 0;
}

.gipyc-ge-drawer__footer {
    position: sticky;
    bottom: 0;
    margin-top: auto;
    padding: 18px 24px;
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    border-top: 1px solid var(--gipyc-ge-border);
    background: var(--gipyc-ge-white);
}

.gipyc-ge-drawer .gipyc-ge-alert {
    margin: 20px 24px 0;
}

.gipyc-ge-toast {
    position: fixed;
    z-index: 100005;
    right: 24px;
    bottom: 24px;
    max-width: min(420px, calc(100vw - 48px));
    padding: 14px 18px;
    border-radius: 12px;
    background: var(--gipyc-ge-navy);
    color: var(--gipyc-ge-white);
    box-shadow: 0 14px 35px rgba(7, 20, 35, .25);
    font-family: Poppins, Montserrat, sans-serif;
    font-weight: 600;
}

@media (max-width: 1100px) {
    .gipyc-ge-metrics--structure { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 680px) {
    .gipyc-ge-drawer { width: 100vw; }
    .gipyc-ge-form-grid { grid-template-columns: 1fr; padding: 20px 18px; }
    .gipyc-ge-field.is-full { grid-column: auto; }
    .gipyc-ge-drawer__header { padding: 16px 18px; }
    .gipyc-ge-drawer__footer { padding: 15px 18px; }
    .gipyc-ge-drawer__footer .gipyc-ge-button { flex: 1; }
    .gipyc-ge-tabs { gap: 3px; padding: 4px; }
    .gipyc-ge-tabs .gipyc-ge-tab { min-height: 38px; padding: 8px 11px; }
    .gipyc-ge-structure-card > .gipyc-ge-tabs { margin-left: 12px; margin-right: 12px; max-width: calc(100% - 24px); }
}

@media (max-width: 560px) {
    .gipyc-ge-metrics--structure { grid-template-columns: 1fr; }
}

.gipyc-ge-logo-picker {
    padding: 14px;
    display: flex;
    align-items: center;
    gap: 16px;
    border: 1px dashed #c3cdd7;
    border-radius: 12px;
    background: #fafbfc;
}

.gipyc-ge-logo-picker__preview {
    width: 128px;
    height: 88px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    overflow: hidden;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-logo-picker__preview img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.gipyc-ge-logo-picker__actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

@media (max-width: 480px) {
    .gipyc-ge-logo-picker { align-items: stretch; flex-direction: column; }
    .gipyc-ge-logo-picker__preview { width: 100%; }
}

/* Expedientes v0.3.0 */
.gipyc-ge-records-card {
    padding: 0;
    overflow: hidden;
}

.gipyc-ge-toolbar {
    padding: 18px 20px;
    display: flex;
    align-items: flex-end;
    gap: 12px;
    border-bottom: 1px solid var(--gipyc-ge-border);
    background: #fafbfc;
}

.gipyc-ge-search {
    min-width: min(480px, 100%);
    display: grid;
    gap: 6px;
    color: var(--gipyc-ge-navy);
    font-weight: 600;
}

.gipyc-ge-search input {
    min-height: 46px;
    padding: 10px 13px;
    border: 1px solid #b9c4ce;
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-navy);
    font: inherit;
}

.gipyc-ge-person-cell {
    min-width: 230px;
    display: flex;
    align-items: center;
    gap: 12px;
}

.gipyc-ge-person-cell strong,
.gipyc-ge-person-cell small,
.gipyc-ge-cell-note {
    display: block;
}

.gipyc-ge-person-cell small,
.gipyc-ge-cell-note,
.gipyc-ge-muted {
    margin-top: 3px;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-avatar {
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    overflow: hidden;
    border-radius: 13px;
    background: #e8edf2;
    color: var(--gipyc-ge-blue);
    font-size: 13px;
    font-weight: 700;
}

.gipyc-ge-avatar.is-large {
    width: 88px;
    height: 88px;
    border-radius: 20px;
    font-size: 22px;
}

.gipyc-ge-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gipyc-ge-row-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.gipyc-ge-form-section {
    padding: 4px 0 10px;
    border-bottom: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-form-section h3 {
    margin: 0 0 4px;
    color: var(--gipyc-ge-navy);
    font-size: 17px;
}

.gipyc-ge-form-section p {
    margin: 0;
    color: var(--gipyc-ge-muted);
    font-size: 13px;
}

.gipyc-ge-media-picker {
    padding: 14px;
    display: flex;
    align-items: center;
    gap: 16px;
    border: 1px dashed #c3cdd7;
    border-radius: 12px;
    background: #fafbfc;
}

.gipyc-ge-media-picker__preview {
    min-width: 128px;
    min-height: 88px;
    max-width: 240px;
    display: grid;
    place-items: center;
    overflow: hidden;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    text-align: center;
}

.gipyc-ge-media-picker__preview img {
    width: 128px;
    height: 128px;
    object-fit: cover;
}

.gipyc-ge-media-picker__preview a {
    padding: 16px;
    overflow-wrap: anywhere;
}

.gipyc-ge-student-table td {
    vertical-align: middle;
}

@media (max-width: 760px) {
    .gipyc-ge-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-search {
        min-width: 0;
    }

    .gipyc-ge-media-picker {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-media-picker__preview {
        max-width: none;
        width: 100%;
    }
}

/* Credenciales QR — v0.4.0 */
.gipyc-ge-header-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
}

.gipyc-ge-filter-bar {
    display: grid;
    grid-template-columns: minmax(220px, 1.5fr) minmax(160px, .8fr) minmax(180px, 1fr) auto auto;
    align-items: end;
    gap: 12px;
    margin-bottom: 18px;
}

.gipyc-ge-filter-bar label {
    display: flex;
    flex-direction: column;
    gap: 6px;
    color: var(--gipyc-ge-navy);
    font-size: 13px;
    font-weight: 600;
}

.gipyc-ge-filter-bar input,
.gipyc-ge-filter-bar select {
    min-height: 46px;
    width: 100%;
    padding: 9px 12px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-text);
    font: inherit;
}

.gipyc-ge-credential-table td {
    vertical-align: middle;
}

.gipyc-ge-person-cell {
    min-width: 210px;
    display: flex;
    align-items: center;
    gap: 11px;
}

.gipyc-ge-person-cell img,
.gipyc-ge-photo-placeholder {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    border-radius: 12px;
    object-fit: cover;
    background: #e8edf2;
}

.gipyc-ge-photo-placeholder {
    display: grid;
    place-items: center;
    color: var(--gipyc-ge-blue);
    font-weight: 700;
}

.gipyc-ge-person-cell span:last-child {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.gipyc-ge-action-list {
    min-width: 180px;
    display: flex;
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
}

.gipyc-ge-link-button.is-danger {
    color: var(--gipyc-ge-red);
}

.gipyc-ge-record-status.is-error {
    color: #8d2d2d;
    background: #fde9e9;
}

.gipyc-ge-form-note {
    margin: 0;
    padding: 14px;
    border: 1px solid #dbe3ea;
    border-radius: 11px;
    background: #f8fafb;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-history-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.gipyc-ge-history-list article {
    padding: 14px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 12px;
    background: #fafbfc;
}

.gipyc-ge-history-list article strong,
.gipyc-ge-history-list article span,
.gipyc-ge-history-list article small {
    display: block;
}

.gipyc-ge-history-list article span,
.gipyc-ge-history-list article small {
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-history-list article p {
    margin: 8px 0;
}

@media (max-width: 1040px) {
    .gipyc-ge-filter-bar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .gipyc-ge-header-actions,
    .gipyc-ge-filter-bar {
        display: flex;
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-header-actions .gipyc-ge-button,
    .gipyc-ge-filter-bar .gipyc-ge-button {
        width: 100%;
    }
}

/* Accesos QR v0.5.0 */
.gipyc-ge-access-console {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.gipyc-ge-access-console__header,
.gipyc-ge-access-start {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 20px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: #fff;
}

.gipyc-ge-access-console__header h2,
.gipyc-ge-access-start h2,
.gipyc-ge-access-console__header p,
.gipyc-ge-access-start p {
    margin: 0;
}

.gipyc-ge-access-console__header span,
.gipyc-ge-access-console__header small,
.gipyc-ge-access-start span {
    display: block;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-access-console__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(300px, .75fr);
    gap: 18px;
}

.gipyc-ge-access-scanner,
.gipyc-ge-access-side {
    min-width: 0;
}

.gipyc-ge-access-scanner {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 20px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: #fff;
}

.gipyc-ge-access-result {
    min-height: 160px;
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 22px;
    border: 2px solid #dbe3ea;
    border-radius: 16px;
    background: #f8fafb;
}

.gipyc-ge-access-result img,
.gipyc-ge-access-result__avatar {
    width: 104px;
    height: 104px;
    flex: 0 0 104px;
    border-radius: 18px;
    object-fit: cover;
    background: #e8edf2;
}

.gipyc-ge-access-result__avatar {
    display: grid;
    place-items: center;
    color: var(--gipyc-ge-blue);
    font-size: 34px;
    font-weight: 700;
}

.gipyc-ge-access-result div {
    min-width: 0;
}

.gipyc-ge-access-result span,
.gipyc-ge-access-result strong,
.gipyc-ge-access-result small {
    display: block;
}

.gipyc-ge-access-result span {
    margin-bottom: 6px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.gipyc-ge-access-result strong {
    font-size: clamp(22px, 3vw, 34px);
    line-height: 1.08;
}

.gipyc-ge-access-result small {
    margin-top: 10px;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-access-result__attendance {
    margin-top: 7px !important;
    font-weight: 700;
}

.gipyc-ge-access-result__attendance.is-success {
    color: #0f7a45 !important;
}

.gipyc-ge-access-result__attendance.is-warning {
    color: #946200 !important;
}

.gipyc-ge-access-result.is-success {
    border-color: #88cfad;
    background: #eef9f3;
}

.gipyc-ge-access-result.is-warning {
    border-color: #efbd72;
    background: #fff7e9;
}

.gipyc-ge-access-result.is-info {
    border-color: #8db3d3;
    background: #eef5fa;
}

.gipyc-ge-access-result.is-error {
    border-color: #d99b9b;
    background: #fff0f0;
}

.gipyc-ge-access-result.is-empty {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-scan-form {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 12px;
}

.gipyc-ge-scan-form label,
.gipyc-ge-access-reason {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.gipyc-ge-scan-form input {
    min-height: 54px;
    font-size: 18px;
}

.gipyc-ge-scan-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--gipyc-ge-muted);
    font-size: 13px;
}

.gipyc-ge-camera {
    overflow: hidden;
    border-radius: 16px;
    background: #0b1622;
    color: #fff;
    text-align: center;
}

.gipyc-ge-camera video {
    width: 100%;
    max-height: 420px;
    display: block;
    object-fit: cover;
}

.gipyc-ge-camera p {
    margin: 0;
    padding: 10px;
}

.gipyc-ge-access-side .gipyc-ge-card {
    height: 100%;
}

.gipyc-ge-access-side form {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    margin-bottom: 14px;
}

.gipyc-ge-access-reason {
    margin-bottom: 14px;
}

.gipyc-ge-manual-results {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.gipyc-ge-manual-results button {
    width: 100%;
    padding: 12px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 11px;
    background: #fff;
    text-align: left;
    cursor: pointer;
}

.gipyc-ge-manual-results button:hover {
    border-color: var(--gipyc-ge-blue-secondary);
    background: #f7fafc;
}

.gipyc-ge-manual-results strong,
.gipyc-ge-manual-results small {
    display: block;
}

.gipyc-ge-manual-results small {
    margin-top: 3px;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-access-pill {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 9px;
    border-radius: 999px;
    background: #eef2f5;
    font-size: 12px;
    font-weight: 700;
}

.gipyc-ge-access-pill.is-success { background: #e6f6ee; color: #17734c; }
.gipyc-ge-access-pill.is-warning { background: #fff1d9; color: #955b07; }
.gipyc-ge-access-pill.is-info { background: #e8f1f8; color: #245f8d; }
.gipyc-ge-access-pill.is-error { background: #fde9e9; color: #8d2d2d; }

.gipyc-ge-form-actions {
    display: flex;
    align-items: center;
    gap: 12px;
}

@media (max-width: 980px) {
    .gipyc-ge-access-console__grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 680px) {
    .gipyc-ge-access-console__header,
    .gipyc-ge-access-start,
    .gipyc-ge-scan-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-scan-form,
    .gipyc-ge-access-side form {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-access-result {
        min-height: 0;
        align-items: flex-start;
        flex-direction: column;
    }

    .gipyc-ge-access-result img,
    .gipyc-ge-access-result__avatar {
        width: 86px;
        height: 86px;
        flex-basis: 86px;
    }
}


.gipyc-ge-access-pending-note {
    max-width: 620px;
    margin: 12px 0;
    padding: 12px 14px;
    border: 1px solid #E98B1B;
    border-radius: 10px;
    background: #fff8ec;
}

.gipyc-ge-access-pending-note strong {
    display: block;
    margin-bottom: 4px;
}

/* Asistencia académica — v0.6.0 */
.gipyc-ge-attendance-toolbar {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 20px;
}

.gipyc-ge-attendance-toolbar form {
    display: flex;
    align-items: end;
    gap: 12px;
}

.gipyc-ge-attendance-toolbar label {
    display: grid;
    gap: 6px;
    font-weight: 600;
}

.gipyc-ge-attendance-toolbar input {
    min-height: 44px;
    border: 1px solid #ccd4dc;
    border-radius: 10px;
    padding: 8px 12px;
    font: inherit;
    background: #fff;
}

.gipyc-ge-attendance-groups {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
    gap: 14px;
    margin-bottom: 20px;
}

.gipyc-ge-attendance-group {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(138px, 0.58fr);
    gap: 18px;
    align-items: stretch;
    min-height: 182px;
    text-align: left;
    border: 1px solid #dce2e8;
    border-radius: 14px;
    padding: 16px;
    background: #fff;
    cursor: pointer;
    font: inherit;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.gipyc-ge-attendance-group:hover,
.gipyc-ge-attendance-group.is-selected {
    border-color: #183B5B;
    box-shadow: 0 8px 22px rgba(15, 39, 66, .1);
    transform: translateY(-1px);
}

.gipyc-ge-attendance-group__identity {
    display: flex;
    min-width: 0;
    flex-direction: column;
    align-items: flex-start;
}

.gipyc-ge-attendance-group__institution {
    color: #0F2742;
    font-size: 20px;
    font-weight: 700;
    line-height: 1.2;
}

.gipyc-ge-attendance-group__context {
    margin-top: 8px;
    color: #0F2742;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.25;
}

.gipyc-ge-attendance-group__name {
    margin-top: 5px;
    color: #0F2742;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.25;
}

.gipyc-ge-attendance-group__compact-context {
    display: none;
}

.gipyc-ge-attendance-group__records {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-top: auto;
    padding-top: 14px;
}

.gipyc-ge-attendance-group__records b {
    font-size: 24px;
    color: #0F2742;
}

.gipyc-ge-attendance-group__records > span {
    color: #d72f5b;
}

.gipyc-ge-attendance-group__summary {
    display: grid;
    align-content: center;
    gap: 7px;
    min-width: 0;
    padding-left: 16px;
    border-left: 1px solid #e5e9ed;
}

.gipyc-ge-attendance-group__summary > span {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    min-height: 22px;
}

.gipyc-ge-attendance-group__summary small {
    color: #617080;
    font-size: 13px;
}

.gipyc-ge-attendance-group__summary b {
    color: #0F2742;
    font-size: 17px;
    font-weight: 750;
}

.gipyc-ge-attendance-status {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 700;
}

.gipyc-ge-attendance-status.is-good {
    background: rgba(31, 157, 104, .12);
    color: #176f4c;
}

.gipyc-ge-attendance-status.is-warning {
    background: rgba(233, 139, 27, .14);
    color: #955506;
}

.gipyc-ge-attendance-status.is-danger {
    background: rgba(183, 68, 68, .12);
    color: #8e3030;
}

.gipyc-ge-attendance-status.is-neutral {
    background: #eef1f4;
    color: #566473;
}

.gipyc-ge-attendance-table .gipyc-ge-list-number-col,
.gipyc-ge-attendance-table .gipyc-ge-list-number-cell {
    width: 64px;
    min-width: 64px;
    text-align: center;
}
.gipyc-ge-attendance-table .gipyc-ge-list-number-cell strong {
    font-size: 16px;
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-attendance-table td {
    vertical-align: top;
}

.gipyc-ge-attendance-table td > small,
.gipyc-ge-attendance-table td > strong + small {
    display: block;
    margin-top: 5px;
    color: #667584;
}

.gipyc-ge-context-box {
    display: grid;
    gap: 5px;
    padding: 14px;
    margin-bottom: 18px;
    border-radius: 12px;
    background: #F3F5F7;
    border-left: 4px solid #183B5B;
}

.gipyc-ge-context-box small {
    color: #667584;
}

.gipyc-ge-form-grid > .gipyc-ge-context-box.is-full {
    grid-column: 1 / -1;
    margin-bottom: 0;
}

.gipyc-ge-timeline {
    display: grid;
    gap: 12px;
}

.gipyc-ge-timeline article {
    display: grid;
    gap: 5px;
    padding: 14px;
    border: 1px solid #dce2e8;
    border-radius: 12px;
    background: #fff;
}

.gipyc-ge-timeline article small {
    color: #667584;
}

@media (max-width: 760px) {
    .gipyc-ge-attendance-toolbar,
    .gipyc-ge-attendance-toolbar form {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-attendance-groups {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-attendance-group {
        grid-template-columns: minmax(0, 1fr) minmax(124px, 150px);
    }
}

@media (max-width: 460px) {
    .gipyc-ge-attendance-group {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-attendance-group__summary {
        padding-top: 12px;
        padding-left: 0;
        border-top: 1px solid #e5e9ed;
        border-left: 0;
    }
}

/* Reportes y tableros */
.gipyc-ge-report-date {
    display: grid;
    gap: 6px;
    min-width: 190px;
    font-weight: 600;
}

.gipyc-ge-report-date input,
.gipyc-ge-report-filters input,
.gipyc-ge-report-filters select {
    min-height: 44px;
    border: 1px solid #ccd4dc;
    border-radius: 10px;
    padding: 8px 12px;
    font: inherit;
    background: #fff;
}

.gipyc-ge-report-metrics {
    margin-bottom: 20px;
}

.gipyc-ge-report-grid {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
    gap: 20px;
    margin-bottom: 20px;
}

.gipyc-ge-report-builder,
.gipyc-ge-platform-report {
    margin-bottom: 20px;
}

.gipyc-ge-report-filters {
    display: grid;
    grid-template-columns: repeat(6, minmax(135px, 1fr));
    gap: 12px;
    align-items: end;
    margin-bottom: 22px;
}

.gipyc-ge-report-filters label {
    display: grid;
    gap: 6px;
    font-weight: 600;
}

.gipyc-ge-report-filters .gipyc-ge-button {
    min-height: 44px;
}

.gipyc-ge-report-result__heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
}

.gipyc-ge-report-result__heading h2,
.gipyc-ge-report-result__heading p {
    margin: 0;
}

.gipyc-ge-report-result__heading p {
    margin-top: 4px;
    color: #667584;
}

.gipyc-ge-report-table {
    max-height: 560px;
    overflow: auto;
}

.gipyc-ge-report-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #f7f9fb;
}

.gipyc-ge-report-trend {
    display: grid;
    gap: 12px;
}

.gipyc-ge-report-trend__day {
    display: grid;
    grid-template-columns: 62px minmax(120px, 1fr) 48px;
    gap: 10px;
    align-items: center;
}

.gipyc-ge-report-trend__day > span {
    color: #617080;
    font-size: 13px;
}

.gipyc-ge-report-trend__bar {
    display: flex;
    min-height: 16px;
    overflow: hidden;
    border-radius: 999px;
    background: #eef1f4;
}

.gipyc-ge-report-trend__bar i {
    display: block;
    min-width: 0;
}

.gipyc-ge-report-trend__bar .is-present {
    background: #1F9D68;
}

.gipyc-ge-report-trend__bar .is-late {
    background: #E98B1B;
}

.gipyc-ge-report-trend__bar .is-absent {
    background: #B74444;
}

.gipyc-ge-report-alerts {
    display: grid;
    gap: 10px;
}

.gipyc-ge-report-alerts p {
    margin: 0;
    padding: 12px 14px;
    border-radius: 10px;
    background: #eef1f4;
}

.gipyc-ge-report-alerts p.is-warning {
    background: rgba(233, 139, 27, .12);
    color: #8b530a;
}

.gipyc-ge-report-alerts p.is-danger {
    background: rgba(183, 68, 68, .1);
    color: #8e3030;
}

.gipyc-ge-report-alerts p.is-ok {
    background: rgba(31, 157, 104, .1);
    color: #176f4c;
}

.gipyc-ge-empty-state {
    display: grid;
    gap: 6px;
    place-items: center;
    min-height: 180px;
    padding: 24px;
    text-align: center;
    color: #667584;
    border: 1px dashed #ccd4dc;
    border-radius: 14px;
    background: #fbfcfd;
}

.gipyc-ge-empty-state strong {
    color: #0F2742;
}

@container (max-width: 820px) {
    .gipyc-ge-group-card > summary {
        grid-template-columns: minmax(0,1fr) auto;
        grid-template-areas: "main chevron" "teacher teacher" "metrics metrics";
        align-items: start;
    }
    .gipyc-ge-group-card > summary > div:first-child { grid-area: main; }
    .gipyc-ge-group-card > summary > .gipyc-ge-card-chevron { grid-area: chevron; }
    .gipyc-ge-group-card__teacher {
        grid-area: teacher;
        padding: 10px 0 0;
        border-left: 0;
        border-top: 1px solid var(--gipyc-ge-border);
    }
    .gipyc-ge-group-card__metrics { grid-area: metrics; }
}

@media (max-width: 1180px) {
    .gipyc-ge-report-filters {
        grid-template-columns: repeat(3, minmax(150px, 1fr));
    }
}

@media (max-width: 860px) {
    .gipyc-ge-report-grid {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-report-filters {
        grid-template-columns: repeat(2, minmax(140px, 1fr));
    }
}

@media (max-width: 620px) {
    .gipyc-ge-report-date,
    .gipyc-ge-report-filters {
        grid-template-columns: 1fr;
        width: 100%;
    }

    .gipyc-ge-report-result__heading {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-report-trend__day {
        grid-template-columns: 54px minmax(90px, 1fr) 40px;
    }
}

/* v0.8.1 — Estado y acciones de escuelas contratantes */
.gipyc-ge-table-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.gipyc-ge-table tr.is-current-tenant > td {
    background: #f2f8f5;
}

.gipyc-ge-table tr.is-current-tenant > td:first-child {
    box-shadow: inset 4px 0 0 var(--gipyc-ge-green);
}

.gipyc-ge-tenant-name {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.gipyc-ge-current-tenant-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 9px;
    border-radius: 999px;
    background: #dff3e9;
    color: #17764f;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
}

.gipyc-ge-link-button.is-current,
.gipyc-ge-link-button:disabled {
    cursor: default;
    color: #5f6f7f;
    text-decoration: none;
    opacity: 0.78;
}

/* v0.9.0 — Control académico */
.gipyc-ge-academic-selector {
    display: grid;
    grid-template-columns: minmax(240px, 1.5fr) minmax(200px, 1fr) auto;
    gap: 14px;
    align-items: end;
    margin-top: 18px;
}

.gipyc-ge-academic-selector label,
.gipyc-ge-gradebook-actions label {
    display: grid;
    gap: 7px;
    color: #405165;
    font-size: 14px;
    font-weight: 600;
}

.gipyc-ge-academic-selector select,
.gipyc-ge-gradebook-actions select,
.gipyc-ge-grade-input {
    min-height: 44px;
    border: 1px solid #cbd5df;
    border-radius: 9px;
    background: #fff;
    color: #0F2742;
    font: inherit;
}

.gipyc-ge-gradebook-wrap {
    width: 100%;
    margin-top: 20px;
    overflow: auto;
    border: 1px solid #dbe2e8;
    border-radius: 12px;
}

.gipyc-ge-gradebook {
    min-width: 900px;
}

.gipyc-ge-gradebook thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #f4f7f9;
}

.gipyc-ge-gradebook th:first-child,
.gipyc-ge-gradebook td:first-child {
    position: sticky;
    left: 0;
    z-index: 1;
    min-width: 220px;
    background: #fff;
    box-shadow: 1px 0 0 #dbe2e8;
}

.gipyc-ge-gradebook thead th:first-child {
    z-index: 3;
    background: #f4f7f9;
}

.gipyc-ge-gradebook th span,
.gipyc-ge-gradebook th small,
.gipyc-ge-gradebook-student strong,
.gipyc-ge-gradebook-student small,
.gipyc-ge-data-table td strong,
.gipyc-ge-data-table td small {
    display: block;
}

.gipyc-ge-gradebook th small,
.gipyc-ge-gradebook-student small,
.gipyc-ge-data-table td small {
    margin-top: 3px;
    color: #728092;
    font-size: 12px;
    font-weight: 500;
}

.gipyc-ge-grade-input {
    width: 88px;
    padding: 8px 10px;
    text-align: center;
}

.gipyc-ge-grade-input:disabled {
    background: #eef2f5;
    color: #6f7c8a;
}

.gipyc-ge-gradebook-actions {
    display: flex;
    justify-content: flex-end;
    align-items: end;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 18px;
}

.gipyc-ge-grade-risk {
    color: #a23838;
}

.gipyc-ge-period-scores {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.gipyc-ge-period-scores span {
    display: inline-flex;
    gap: 4px;
    padding: 5px 8px;
    border-radius: 8px;
    background: #eef4f8;
}

.gipyc-ge-period-scores span.is-risk {
    background: rgba(183, 68, 68, .1);
    color: #8d3030;
}

@media (max-width: 860px) {
    .gipyc-ge-academic-selector {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-gradebook-actions {
        align-items: stretch;
        flex-direction: column;
    }
}

.gipyc-ge-grade-note {
    width: 220px;
    min-height: 64px;
    padding: 8px 10px;
    resize: vertical;
}

.gipyc-ge-grade-note:disabled {
    background: #eef2f5;
    color: #6f7c8a;
}

.gipyc-ge-period-scores span {
    flex-direction: column;
    align-items: flex-start;
}

.gipyc-ge-period-scores span small {
    max-width: 260px;
    margin-top: 2px;
    white-space: normal;
}

/* v0.10.0 Administración y cobranza */
.gipyc-ge-finance-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 18px;
}

.gipyc-ge-grid {
    display: grid;
    gap: 18px;
}

.gipyc-ge-grid--two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.gipyc-ge-finance-statement-drawer {
    grid-column: 1 / -1;
    min-width: 0;
}

.gipyc-ge-finance-statement-drawer__heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 12px;
}

.gipyc-ge-finance-statement-drawer__heading span {
    display: block;
    color: var(--gipyc-ge-green);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.gipyc-ge-finance-statement-drawer__heading h3 {
    margin: 3px 0 4px;
    color: var(--gipyc-ge-navy);
    font-size: 22px;
}

.gipyc-ge-finance-statement-drawer__heading p {
    margin: 0;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-finance-statement-drawer > h3 {
    margin: 24px 0 10px;
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-statement h3 {
    margin: 24px 0 10px;
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-finance-balance {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    padding: 16px;
    margin: 8px 0 18px;
    border-radius: 12px;
    background: var(--gipyc-ge-background);
}

.gipyc-ge-finance-balance span {
    min-width: 220px;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-finance-balance strong {
    display: block;
    margin-top: 4px;
    color: var(--gipyc-ge-navy);
    font-size: 22px;
}

.gipyc-ge-link-button.is-danger {
    color: var(--gipyc-ge-red);
}

@media (max-width: 1100px) {
    .gipyc-ge-finance-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gipyc-ge-grid--two { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
    .gipyc-ge-finance-metrics { grid-template-columns: 1fr; }
    .gipyc-ge-finance-balance { display: block; }
    .gipyc-ge-finance-balance span + span { margin-top: 14px; }
}

/* v0.11.0 Comunicaciones */
.gipyc-ge-communication-list,
.gipyc-ge-message-grid {
    display: grid;
    gap: 14px;
}

.gipyc-ge-communication-preview {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    padding: 16px;
    border: 1px solid var(--gipyc-ge-border);
    border-left: 4px solid var(--gipyc-ge-blue);
    border-radius: 12px;
    background: var(--gipyc-ge-white);
}

.gipyc-ge-communication-preview.is-important {
    border-left-color: var(--gipyc-ge-orange);
}

.gipyc-ge-communication-preview.is-urgent {
    border-left-color: var(--gipyc-ge-red);
}

.gipyc-ge-communication-preview h3,
.gipyc-ge-message-card h2 {
    margin: 4px 0 8px;
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-communication-preview p,
.gipyc-ge-communication-preview small,
.gipyc-ge-message-card header span,
.gipyc-ge-message-card footer {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-communication-preview > div:last-child {
    display: grid;
    justify-items: end;
    gap: 8px;
    min-width: 130px;
}

.gipyc-ge-message-card {
    overflow: hidden;
    border: 1px solid var(--gipyc-ge-border);
    border-left: 5px solid var(--gipyc-ge-blue);
    border-radius: 14px;
    background: var(--gipyc-ge-white);
    box-shadow: var(--gipyc-ge-shadow);
}

.gipyc-ge-message-card.is-important {
    border-left-color: var(--gipyc-ge-orange);
}

.gipyc-ge-message-card.is-urgent {
    border-left-color: var(--gipyc-ge-red);
}

.gipyc-ge-message-card.is-unread {
    box-shadow: 0 14px 34px rgba(15, 39, 66, .14);
}

.gipyc-ge-message-card header,
.gipyc-ge-message-card footer {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 20px;
}

.gipyc-ge-message-card header {
    border-bottom: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-message-card footer {
    align-items: center;
    border-top: 1px solid var(--gipyc-ge-border);
    background: var(--gipyc-ge-background);
}

.gipyc-ge-message-card__body {
    padding: 22px 20px;
    white-space: normal;
}

.gipyc-ge-message-attachments {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 18px;
}

.gipyc-ge-message-attachments a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 12px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 9px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-blue);
    font-weight: 600;
    text-decoration: none;
}

.gipyc-ge-hidden-select {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
}

.gipyc-ge-attachment-picker {
    display: grid;
    gap: 12px;
}

.gipyc-ge-attachment-picker__list {
    display: grid;
    gap: 8px;
}

.gipyc-ge-attachment-picker__list > span,
.gipyc-ge-attachment-picker__list article {
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-background);
}

.gipyc-ge-attachment-picker__list article {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.gipyc-ge-attachment-picker__list article div {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.gipyc-ge-attachment-picker__list a {
    color: var(--gipyc-ge-blue);
    font-weight: 600;
}

@media (max-width: 760px) {
    .gipyc-ge-communication-preview,
    .gipyc-ge-message-card header,
    .gipyc-ge-message-card footer,
    .gipyc-ge-attachment-picker__list article {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-communication-preview > div:last-child {
        justify-items: start;
    }
}

/* v0.12.0 — Incidencias, orientación y seguimiento */
.gipyc-ge-incident-metrics {
    margin-bottom: 20px;
}

.gipyc-ge-incident-detail {
    display: grid;
    gap: 18px;
    margin-top: 20px;
}

.gipyc-ge-incident-summary {
    border-left: 5px solid var(--gipyc-ge-orange);
}

.gipyc-ge-incident-summary .gipyc-ge-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 18px;
}

.gipyc-ge-record-status.is-danger {
    background: rgba(183, 68, 68, 0.14);
    color: var(--gipyc-ge-red);
}

.gipyc-ge-incident-detail .gipyc-ge-card h3 {
    margin: 0;
}

.gipyc-ge-incident-detail .gipyc-ge-timeline article p {
    margin: 7px 0 0;
    white-space: pre-line;
}

@media (max-width: 760px) {
    .gipyc-ge-incident-summary .gipyc-ge-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-incident-summary .gipyc-ge-actions .gipyc-ge-button {
        width: 100%;
    }
}

/* v0.13.0 — Portal docente */
.gipyc-ge-teacher-grid {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.gipyc-ge-teacher-group {
    align-content: start;
    display: grid;
    gap: 16px;
}

.gipyc-ge-teacher-group .gipyc-ge-button {
    justify-self: start;
}

.gipyc-ge-teacher-group__subjects {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.gipyc-ge-teacher-group__subjects span {
    background: rgba(24, 59, 91, 0.09);
    border-radius: 999px;
    color: var(--gipyc-ge-blue);
    font-size: 13px;
    font-weight: 600;
    padding: 6px 10px;
}

.gipyc-ge-teacher-alerts {
    display: grid;
    gap: 10px;
}

.gipyc-ge-teacher-alert {
    align-items: flex-start;
    background: var(--gipyc-ge-background);
    border-left: 5px solid var(--gipyc-ge-blue);
    border-radius: 10px;
    display: flex;
    gap: 18px;
    justify-content: space-between;
    padding: 14px 16px;
}

.gipyc-ge-teacher-alert.is-warning {
    border-left-color: var(--gipyc-ge-orange);
}

.gipyc-ge-teacher-alert.is-error {
    border-left-color: var(--gipyc-ge-red);
}

.gipyc-ge-teacher-alert p {
    margin: 5px 0;
}

.gipyc-ge-teacher-roster .gipyc-ge-person-cell {
    align-items: center;
    display: flex;
    gap: 10px;
    min-width: 220px;
}

.gipyc-ge-teacher-roster select {
    min-width: 190px;
}

.gipyc-ge-gradebook th small,
.gipyc-ge-gradebook td small {
    display: block;
    margin-top: 4px;
}

.gipyc-ge-gradebook input[type="number"] {
    min-width: 90px;
    width: 100%;
}

.gipyc-ge-teacher-calendar-list {
    display: grid;
    gap: 10px;
}

.gipyc-ge-teacher-calendar-list > article {
    align-items: flex-start;
    border-bottom: 1px solid rgba(15, 39, 66, 0.12);
    display: grid;
    gap: 14px;
    grid-template-columns: minmax(130px, 180px) 1fr auto;
    padding: 12px 0;
}

.gipyc-ge-teacher-calendar-list > article:last-child {
    border-bottom: 0;
}

.gipyc-ge-teacher-calendar-list time {
    color: var(--gipyc-ge-blue);
    font-weight: 700;
}

.gipyc-ge-teacher-calendar-list p {
    margin: 5px 0;
}

.gipyc-ge-teacher-profile {
    align-items: center;
    text-align: center;
}

.gipyc-ge-teacher-profile__photo {
    align-items: center;
    background: var(--gipyc-ge-background);
    border-radius: 50%;
    display: flex;
    height: 120px;
    justify-content: center;
    margin: 0 auto 16px;
    overflow: hidden;
    width: 120px;
}

.gipyc-ge-teacher-profile__photo img {
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.gipyc-ge-teacher-profile__photo span {
    color: var(--gipyc-ge-navy);
    font-size: 42px;
    font-weight: 700;
}

.gipyc-ge-teacher-profile dl {
    display: grid;
    gap: 10px;
    margin: 18px 0 0;
    text-align: left;
    width: 100%;
}

.gipyc-ge-teacher-profile dl div {
    border-top: 1px solid rgba(15, 39, 66, 0.1);
    padding-top: 10px;
}

.gipyc-ge-teacher-profile dt {
    color: #5d6b78;
    font-size: 13px;
}

.gipyc-ge-teacher-profile dd {
    font-weight: 600;
    margin: 3px 0 0;
}

@media (max-width: 760px) {
    .gipyc-ge-teacher-grid {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-teacher-calendar-list > article {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-teacher-alert {
        align-items: stretch;
        flex-direction: column;
    }
}

.gipyc-ge-layout.is-teacher-compact .gipyc-ge-content {
    padding: 22px;
}

.gipyc-ge-layout.is-teacher-compact .gipyc-ge-card {
    padding: 18px;
}

/* Portal de tutores y alumnos */
.gipyc-ge-family-student-select {
    min-width: min(100%, 320px);
}

.gipyc-ge-family-student-card {
    border: 1px solid var(--gipyc-ge-border);
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.gipyc-ge-family-student-card.is-selected {
    border-color: var(--gipyc-ge-green);
    box-shadow: 0 0 0 3px rgba(31, 157, 104, .12), var(--gipyc-ge-shadow);
}

.gipyc-ge-family-student-card .gipyc-ge-button {
    justify-self: start;
}

.gipyc-ge-family-consent,
.gipyc-ge-family-request {
    align-items: center;
    border-top: 1px solid var(--gipyc-ge-border);
    display: flex;
    gap: 20px;
    justify-content: space-between;
    padding: 18px 0;
}

.gipyc-ge-family-consent:first-of-type,
.gipyc-ge-family-request:first-of-type {
    border-top: 0;
}

.gipyc-ge-family-consent p,
.gipyc-ge-family-request p {
    margin: 6px 0;
}

.gipyc-ge-family-request > div:last-child {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.gipyc-ge-rich-text {
    overflow-wrap: anywhere;
}

.gipyc-ge-rich-text img,
.gipyc-ge-rich-text video,
.gipyc-ge-rich-text iframe {
    height: auto;
    max-width: 100%;
}

.gipyc-ge-card.is-unread {
    border-left: 4px solid var(--gipyc-ge-orange);
}

.gipyc-ge-invite-shell {
    align-items: center;
    background: var(--gipyc-ge-background);
    display: flex;
    justify-content: center;
    min-height: 760px;
    padding: 32px;
}

.gipyc-ge-invite-card {
    max-width: 620px;
    width: 100%;
}

.gipyc-ge-invite-card .gipyc-ge-brand {
    background: var(--gipyc-ge-navy);
    border-radius: 16px;
    color: var(--gipyc-ge-white);
    margin-bottom: 28px;
}

.gipyc-ge-invite-card > h1 {
    margin-bottom: 8px;
}

.gipyc-ge-layout.is-family-compact .gipyc-ge-content {
    padding: 22px;
}

.gipyc-ge-layout.is-family-compact .gipyc-ge-card {
    padding: 18px;
}

@media (max-width: 760px) {
    .gipyc-ge-family-consent,
    .gipyc-ge-family-request {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-family-student-select {
        min-width: 100%;
    }

    .gipyc-ge-invite-shell {
        min-height: 620px;
        padding: 16px;
    }
}

@media print {
    .gipyc-ge-layout:has(.gipyc-ge-family-student-card) .gipyc-ge-sidebar,
    .gipyc-ge-layout:has(.gipyc-ge-family-student-card) .gipyc-ge-topbar,
    .gipyc-ge-layout:has(.gipyc-ge-family-student-card) button {
        display: none;
    }
}

/* v0.15.0 — Control seguro de salida */
.gipyc-ge-dismissal-form{margin-bottom:22px;padding:18px;border:1px solid #dce4eb;border-radius:16px;background:#f8fafc}
.gipyc-ge-dismissal-deliver{display:grid;gap:8px;min-width:260px;margin-top:10px;padding:10px;border:1px solid #dce4eb;border-radius:12px;background:#f8fafc}
.gipyc-ge-dismissal-deliver select,.gipyc-ge-dismissal-deliver input{width:100%;min-height:40px;border:1px solid #cbd5df;border-radius:9px;padding:8px 10px;background:#fff;font:inherit}
.gipyc-ge-dismissal-code{border-left:6px solid #1f9d68;text-align:center}
.gipyc-ge-dismissal-code strong{display:block;font-size:clamp(36px,7vw,72px);letter-spacing:.16em;color:#0f2742;margin:12px 0}
.gipyc-ge-row-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.gipyc-ge-row-actions .gipyc-ge-button{padding:8px 11px;min-height:38px;font-size:14px}
.gipyc-ge-table small{display:block;color:#667789;margin-top:4px}
@media (max-width:760px){.gipyc-ge-dismissal-deliver{min-width:220px}.gipyc-ge-dismissal-code strong{letter-spacing:.08em}.gipyc-ge-row-actions{align-items:stretch}.gipyc-ge-row-actions .gipyc-ge-button{width:100%}}

/* v0.16.0 — Datos de prueba y validación integral */

.gipyc-ge-demo-checks {
    display: grid;
    gap: 12px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.gipyc-ge-demo-checks li {
    align-items: flex-start;
    border-bottom: 1px solid #dce4eb;
    display: grid;
    gap: 12px;
    grid-template-columns: auto minmax(0, 1fr);
    padding: 0 0 12px;
}

.gipyc-ge-demo-checks li:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}

.gipyc-ge-demo-checks strong,
.gipyc-ge-demo-checks small {
    display: block;
}

.gipyc-ge-demo-checks small {
    color: #667789;
    margin-top: 4px;
}

.gipyc-ge-table tr.is-selected td {
    background: #eef3f7;
}

.gipyc-ge-table textarea[data-demo-test-notes] {
    min-width: 240px;
    resize: vertical;
    width: 100%;
}

@media (max-width: 760px) {
    .gipyc-ge-table textarea[data-demo-test-notes] {
        min-width: 180px;
    }
}

/* La aplicación reutiliza sus formularios administrativos dentro de wp-admin sin duplicar la barra lateral de WordPress. */
.gipyc-ge-layout.is-wp-admin {
    min-height: 620px;
    grid-template-columns: minmax(0, 1fr);
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-sidebar,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-menu-button,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-overlay {
    display: none;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-main {
    width: 100%;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-topbar {
    min-height: 68px;
    padding: 0 24px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-content {
    padding: 26px;
}

/* v0.17.2 — Ajustes de legibilidad para tablas administrativas en wp-admin */
.gipyc-ge-layout.is-wp-admin .gipyc-ge-content,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-card,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-card-grid {
    min-width: 0;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table-wrap {
    width: 100%;
    max-height: 720px;
    overflow: auto;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 14px;
    background: var(--gipyc-ge-white);
    scrollbar-gutter: stable;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-card > .gipyc-ge-table-wrap {
    margin: 0;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table {
    width: 100%;
    min-width: 920px;
    border-collapse: separate;
    border-spacing: 0;
    table-layout: auto;
    color: var(--gipyc-ge-text);
    font-size: 14px;
    line-height: 1.45;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table th,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td {
    padding: 15px 16px;
    border: 0;
    border-bottom: 1px solid var(--gipyc-ge-border);
    text-align: left;
    vertical-align: middle;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table th {
    position: sticky;
    z-index: 3;
    top: 0;
    background: #f8fafb;
    color: var(--gipyc-ge-navy);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .025em;
    line-height: 1.25;
    text-transform: uppercase;
    white-space: nowrap;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table tbody tr:last-child td {
    border-bottom: 0;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table tbody tr:hover td {
    background: rgba(24, 59, 91, .025);
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table tr.is-current-tenant > td,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table tr.is-selected > td {
    background: #f2f8f5;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td strong,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td small {
    display: block;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td strong {
    color: var(--gipyc-ge-navy);
    font-weight: 700;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td small {
    margin-top: 4px;
    color: var(--gipyc-ge-muted);
    line-height: 1.4;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td select,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td textarea,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td input {
    max-width: 100%;
    border-color: #cbd5df;
    border-radius: 8px;
    background: #fff;
    font: inherit;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td select {
    min-width: 155px;
    min-height: 40px;
    padding: 6px 34px 6px 10px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td textarea {
    min-width: 300px;
    min-height: 76px;
    padding: 9px 11px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table-actions,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table .gipyc-ge-action-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    min-width: max-content;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-page-header > .gipyc-ge-action-row {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td .gipyc-ge-link-button {
    min-height: 36px;
    padding: 7px 10px;
    border: 1px solid #d9e1e8;
    border-radius: 8px;
    background: #f8fafb;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td .gipyc-ge-link-button:hover,
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td .gipyc-ge-link-button:focus-visible {
    border-color: #b9c7d4;
    background: #eef3f7;
    color: var(--gipyc-ge-navy);
    text-decoration: none;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td .gipyc-ge-link-button.is-danger {
    border-color: rgba(183, 68, 68, .2);
    background: rgba(183, 68, 68, .07);
    color: var(--gipyc-ge-red);
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table td .gipyc-ge-link-button:disabled {
    border-color: transparent;
    background: transparent;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools {
    min-width: 1080px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools th:nth-child(1),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools td:nth-child(1) { width: 27%; min-width: 250px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools th:nth-child(2),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools td:nth-child(2) { width: 15%; min-width: 145px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools th:nth-child(3),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools td:nth-child(3) { width: 11%; min-width: 105px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools th:nth-child(4),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools td:nth-child(4),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools th:nth-child(5),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools td:nth-child(5) { width: 8%; min-width: 90px; white-space: nowrap; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools th:nth-child(6),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools td:nth-child(6) { width: 13%; min-width: 125px; white-space: nowrap; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools th:nth-child(7),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--schools td:nth-child(7) { width: 18%; min-width: 165px; }

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users {
    min-width: 930px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(1),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(1) { width: 25%; min-width: 220px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(2),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(2) { width: 29%; min-width: 260px; overflow-wrap: anywhere; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(3),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(3) { width: 20%; min-width: 175px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(4),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(4) { width: 12%; min-width: 105px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(5),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(5) { width: 14%; min-width: 115px; }

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches {
    min-width: 1120px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches th:nth-child(1),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches td:nth-child(1) { width: 13%; min-width: 130px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches th:nth-child(2),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches td:nth-child(2) { width: 24%; min-width: 220px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches th:nth-child(3),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches td:nth-child(3) { width: 11%; min-width: 110px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches th:nth-child(4),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches td:nth-child(4) { width: 16%; min-width: 165px; white-space: nowrap; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches th:nth-child(5),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches td:nth-child(5) { width: 19%; min-width: 190px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches th:nth-child(6),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-batches td:nth-child(6) { width: 17%; min-width: 205px; }

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual {
    min-width: 1320px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual th:nth-child(1),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual td:nth-child(1) { width: 5%; min-width: 60px; text-align: center; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual th:nth-child(2),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual td:nth-child(2) { width: 22%; min-width: 240px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual th:nth-child(3),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual td:nth-child(3) { width: 34%; min-width: 390px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual th:nth-child(4),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual td:nth-child(4) { width: 15%; min-width: 175px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual th:nth-child(5),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--demo-manual td:nth-child(5) { width: 24%; min-width: 320px; }

@media (max-width: 1200px) {
    .gipyc-ge-layout.is-wp-admin .gipyc-ge-content {
        padding: 22px;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-card {
        padding: 20px;
    }
}

@media (max-width: 782px) {
    .gipyc-ge-layout.is-wp-admin .gipyc-ge-topbar {
        padding: 0 18px;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-content {
        padding: 18px;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-card {
        padding: 16px;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-page-header {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-page-header > .gipyc-ge-action-row,
    .gipyc-ge-layout.is-wp-admin .gipyc-ge-page-header > .gipyc-ge-button {
        align-self: flex-start;
    }
}


/* Alta integral de escuelas y usuarios */
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users {
    min-width: 1320px;
}

.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(1),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(1) { width: 17%; min-width: 210px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(2),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(2) { width: 20%; min-width: 250px; overflow-wrap: anywhere; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(3),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(3) { width: 15%; min-width: 185px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(4),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(4) { width: 9%; min-width: 105px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(5),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(5) { width: 17%; min-width: 220px; }
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users th:nth-child(6),
.gipyc-ge-layout.is-wp-admin .gipyc-ge-table--users td:nth-child(6) { width: 22%; min-width: 290px; }

/* v0.36.5 · Vista temporal compacta en la parte superior */
.gipyc-ge-support-banner {
    position: fixed;
    top: 10px;
    right: 14px;
    bottom: auto;
    z-index: 100000;
    display: flex;
    align-items: center;
    gap: 8px;
    max-width: calc(100vw - 28px);
    padding: 6px 8px 6px 10px;
    border: 1px solid rgba(255,255,255,.2);
    border-radius: 9px;
    background: #0F2742;
    box-shadow: 0 8px 24px rgba(15,39,66,.2);
    color: #fff;
    font-size: 12px;
    line-height: 1.2;
}

.admin-bar .gipyc-ge-support-banner {
    top: 42px;
}

.gipyc-ge-support-banner strong {
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
}

.gipyc-ge-support-banner__audit {
    color: rgba(255,255,255,.72);
    white-space: nowrap;
}

.gipyc-ge-support-banner__audit::before {
    content: "·";
    margin-right: 8px;
    color: rgba(255,255,255,.5);
}

.gipyc-ge-support-banner a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 0 9px;
    border-radius: 6px;
    background: #fff;
    color: #0F2742;
    font-size: 12px;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
}

.gipyc-ge-support-banner a:hover,
.gipyc-ge-support-banner a:focus {
    background: #F3F5F7;
    color: #0F2742;
}

@media (max-width: 782px) {
    .admin-bar .gipyc-ge-support-banner {
        top: 56px;
    }
}

@media (max-width: 640px) {
    .gipyc-ge-support-banner {
        left: 10px;
        right: 10px;
        top: 8px;
        max-width: none;
        flex-wrap: wrap;
        justify-content: flex-end;
    }

    .admin-bar .gipyc-ge-support-banner {
        top: 54px;
    }

    .gipyc-ge-support-banner strong {
        flex: 1 1 auto;
        min-width: 180px;
        white-space: normal;
    }

    .gipyc-ge-support-banner__audit {
        display: none;
    }
}

.gipyc-ge-access-movement{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;padding:10px 12px;border:1px solid #d9e0e6;border-radius:10px;background:#f8fafb}.gipyc-ge-access-movement span{font-size:13px;font-weight:700}.gipyc-ge-access-movement select{min-width:150px}.gipyc-ge-access-movement.is-fixed strong{font-size:14px}

/* v0.23.0 — Portal docente consolidado */
.gipyc-ge-teacher-schedule {
    display: grid;
    gap: 18px;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.gipyc-ge-teacher-schedule__day {
    align-content: start;
}

.gipyc-ge-teacher-schedule__slots {
    display: grid;
    gap: 10px;
}

.gipyc-ge-teacher-schedule__slot {
    align-items: start;
    border-top: 1px solid var(--gipyc-ge-border);
    display: grid;
    gap: 12px;
    grid-template-columns: 92px minmax(0, 1fr);
    padding-top: 12px;
}

.gipyc-ge-teacher-schedule__slot:first-child {
    border-top: 0;
    padding-top: 0;
}

.gipyc-ge-teacher-schedule__slot time {
    font-weight: 700;
    white-space: nowrap;
}

.gipyc-ge-teacher-schedule__slot div {
    display: grid;
    gap: 3px;
    min-width: 0;
}

.gipyc-ge-teacher-schedule__slot span,
.gipyc-ge-teacher-schedule__slot small {
    overflow-wrap: anywhere;
}

.gipyc-ge-teacher-history {
    border-top: 1px solid var(--gipyc-ge-border);
    margin-top: 18px;
    padding-top: 18px;
}

.gipyc-ge-teacher-history h3 {
    margin-top: 0;
}

@media (max-width: 760px) {
    .gipyc-ge-teacher-schedule {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-teacher-schedule__slot {
        grid-template-columns: 1fr;
        gap: 5px;
    }

    .gipyc-ge-teacher-roster,
    .gipyc-ge-gradebook {
        min-width: 760px;
    }

    .gipyc-ge-teacher-roster select {
        min-width: 160px;
    }
}

/* v0.24.0 — Portal familiar */
.gipyc-ge-family-activity{display:grid;gap:10px}.gipyc-ge-family-activity article{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid rgba(15,39,66,.10)}.gipyc-ge-family-activity article:last-child{border-bottom:0}.gipyc-ge-family-activity time{white-space:nowrap;font-size:.92em;opacity:.72}@media(max-width:720px){.gipyc-ge-family-activity article{align-items:flex-start;flex-direction:column;gap:4px}.gipyc-ge-family-student-select{width:100%}}

/* v0.25.0 — Control seguro de salida */
.gipyc-ge-dismissal-quick{display:grid;gap:18px}.gipyc-ge-dismissal-scanner{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:10px;align-items:end}.gipyc-ge-dismissal-ready-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.gipyc-ge-dismissal-ready{appearance:none;background:#fff;border:1px solid var(--gipyc-ge-border);border-radius:14px;cursor:pointer;display:grid;gap:5px;padding:14px;text-align:left;font:inherit}.gipyc-ge-dismissal-ready:hover,.gipyc-ge-dismissal-ready.is-selected{border-color:var(--gipyc-ge-primary);box-shadow:0 0 0 2px rgba(15,39,66,.08)}.gipyc-ge-dismissal-ready strong{font-size:1.04em}.gipyc-ge-dismissal-ready span{opacity:.78}.gipyc-ge-dismissal-ready small{display:block;line-height:1.35}.gipyc-ge-dismissal-quick-form{border-top:1px solid var(--gipyc-ge-border);padding-top:18px}.gipyc-ge-dismissal-deliver{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px;margin-top:10px}.gipyc-ge-dismissal-deliver>label{display:grid;gap:5px}.gipyc-ge-dismissal-deliver.is-quick{grid-template-columns:repeat(2,minmax(220px,1fr))}.gipyc-ge-dismissal-deliver .is-full,.gipyc-ge-dismissal-warning-check,.gipyc-ge-dismissal-identity-card{grid-column:1/-1}.gipyc-ge-dismissal-warning-check{align-items:center;background:#fff8e8;border:1px solid rgba(233,139,27,.35);border-radius:12px;display:flex!important;gap:10px!important;padding:12px}.gipyc-ge-dismissal-warning-check input{width:22px;height:22px;flex:0 0 auto}.gipyc-ge-dismissal-stop{background:#fff2f2;border:1px solid rgba(183,68,68,.3);border-radius:12px;padding:14px}.gipyc-ge-dismissal-stop strong{color:#8d2f2f}.gipyc-ge-dismissal-identity-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gipyc-ge-dismissal-identity-card>div{align-items:center;border:1px solid var(--gipyc-ge-border);border-radius:14px;display:grid;gap:3px;grid-template-columns:64px 1fr;padding:12px}.gipyc-ge-dismissal-identity-card strong,.gipyc-ge-dismissal-identity-card small{grid-column:2}.gipyc-ge-dismissal-photo{border-radius:12px;grid-column:1;grid-row:1/3;height:58px;object-fit:cover;width:58px}.gipyc-ge-dismissal-photo.is-empty{align-items:center;background:rgba(15,39,66,.06);display:flex;font-size:26px;justify-content:center}.gipyc-ge-dismissal-camera{background:#111;border-radius:16px;overflow:hidden;max-width:560px}.gipyc-ge-dismissal-camera video{display:block;max-height:420px;object-fit:cover;width:100%}.gipyc-ge-dismissal-code{align-items:center;display:flex;justify-content:space-between;gap:24px}.gipyc-ge-dismissal-code>div:first-child{min-width:0}.gipyc-ge-dismissal-code strong{display:block;font-size:2rem;letter-spacing:.16em;margin:8px 0}.gipyc-ge-dismissal-code__qr{background:#fff;border:1px solid var(--gipyc-ge-border);border-radius:14px;flex:0 0 190px;padding:10px}.gipyc-ge-dismissal-code__qr svg{display:block;height:auto;width:100%}.gipyc-ge-notice--warning{background:#fff8e8;border:1px solid rgba(233,139,27,.35);border-radius:12px;padding:12px 14px}
@media(max-width:760px){.gipyc-ge-dismissal-scanner,.gipyc-ge-dismissal-deliver,.gipyc-ge-dismissal-deliver.is-quick,.gipyc-ge-dismissal-identity-card{grid-template-columns:1fr}.gipyc-ge-dismissal-identity-card strong,.gipyc-ge-dismissal-identity-card small{grid-column:2}.gipyc-ge-dismissal-code{align-items:flex-start;flex-direction:column}.gipyc-ge-dismissal-code__qr{flex-basis:auto;width:min(100%,240px)}.gipyc-ge-dismissal-ready-list{grid-template-columns:1fr}}

/* v0.28.0 — Reportes ejecutivos y exportación multiformato */
.gipyc-ge-report-dashboard-filters {
    margin-bottom: 20px;
}

.gipyc-ge-report-filters--builder {
    grid-template-columns: repeat(4, minmax(150px, 1fr));
}

.gipyc-ge-report-grid--executive {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.gipyc-ge-report-kpis {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.gipyc-ge-report-kpis p {
    display: grid;
    gap: 4px;
    margin: 0;
    padding: 14px;
    border: 1px solid #e3e8ed;
    border-radius: 12px;
    background: #f8fafb;
}

.gipyc-ge-report-kpis strong {
    color: #0F2742;
    font-size: 24px;
    line-height: 1.1;
}

.gipyc-ge-report-kpis span {
    color: #667584;
    font-size: 13px;
}

.gipyc-ge-report-export-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

@media (max-width: 980px) {
    .gipyc-ge-report-grid--executive,
    .gipyc-ge-report-filters--builder {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 620px) {
    .gipyc-ge-report-grid--executive,
    .gipyc-ge-report-filters--builder,
    .gipyc-ge-report-kpis {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-report-export-actions {
        width: 100%;
    }

    .gipyc-ge-report-export-actions .gipyc-ge-button {
        flex: 1 1 140px;
    }
}

/* v0.30.0 — Interfaz jerárquica: Contratante → Escuela → Grupo → Alumno */
.gipyc-ge-nav__group {
    display: grid;
    gap: 5px;
    margin: 0 0 12px;
}

.gipyc-ge-nav__group-title {
    padding: 6px 14px 3px;
    color: rgba(255,255,255,.46);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .11em;
    text-transform: uppercase;
}


/* v0.34.84 — navegación escolar simplificada y grupos colapsables */
.gipyc-ge-nav__group--collapsible {
    gap: 0;
}

.gipyc-ge-nav__group-toggle {
    width: 100%;
    min-height: 34px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 6px 14px 5px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: rgba(255,255,255,.52);
    font: inherit;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .11em;
    line-height: 1.25;
    text-align: left;
    text-transform: uppercase;
    cursor: pointer;
    transition: background .18s ease, color .18s ease;
}

.gipyc-ge-nav__group-toggle:hover,
.gipyc-ge-nav__group-toggle:focus-visible {
    background: rgba(255,255,255,.08);
    color: rgba(255,255,255,.9);
    outline: none;
}

.gipyc-ge-nav__group-chevron {
    flex: 0 0 auto;
    font-size: 16px;
    line-height: 1;
    transform: rotate(-90deg);
    transition: transform .18s ease;
}

.gipyc-ge-nav__group--collapsible.is-open .gipyc-ge-nav__group-chevron {
    transform: rotate(0deg);
}

.gipyc-ge-nav__group-items {
    display: grid;
    gap: 5px;
    padding-top: 5px;
}

.gipyc-ge-nav__group-items[hidden] {
    display: none;
}

.gipyc-ge-workspace-hero {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    overflow: hidden;
    margin-bottom: 22px;
    padding: 28px 30px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 22px;
    background: var(--gipyc-ge-white);
    box-shadow: var(--gipyc-ge-shadow);
}

.gipyc-ge-workspace-hero::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 6px;
    background: var(--gipyc-ge-green);
}

.gipyc-ge-workspace-hero__identity {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 18px;
}

.gipyc-ge-workspace-hero__identity h1,
.gipyc-ge-workspace-hero__identity h2,
.gipyc-ge-workspace-hero__identity p {
    margin: 0;
}

.gipyc-ge-workspace-hero__identity h1 {
    margin-top: 2px;
    font-size: clamp(26px, 3vw, 38px);
    line-height: 1.12;
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-workspace-hero__identity p:last-child {
    margin-top: 7px;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-workspace-hero__mark {
    width: 72px;
    height: 72px;
    flex: 0 0 72px;
    display: grid;
    place-items: center;
    overflow: hidden;
    border-radius: 18px;
    background: rgba(15,39,66,.07);
    color: var(--gipyc-ge-navy);
    font-size: 28px;
    font-weight: 750;
}

.gipyc-ge-workspace-hero__mark img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #fff;
}

.gipyc-ge-workspace-hero__meta,
.gipyc-ge-workspace-hero__facts {
    display: flex;
    align-items: stretch;
    gap: 9px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.gipyc-ge-workspace-hero__meta > span,
.gipyc-ge-workspace-hero__quick {
    padding: 9px 12px;
    border-radius: 999px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-blue);
    font-size: 13px;
    font-weight: 650;
}

.gipyc-ge-workspace-hero__quick {
    appearance: none;
    border: 1px solid transparent;
    font: inherit;
    line-height: 1.2;
    cursor: pointer;
    transition: border-color .18s ease, background .18s ease, transform .18s ease, box-shadow .18s ease;
}

.gipyc-ge-workspace-hero__quick span {
    font-weight: 500;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-workspace-hero__quick:hover,
.gipyc-ge-workspace-hero__quick:focus-visible {
    border-color: var(--gipyc-ge-green);
    background: #fff;
    color: var(--gipyc-ge-blue);
    box-shadow: 0 5px 16px rgba(15, 39, 66, .09);
    transform: translateY(-1px);
    outline: none;
}

.gipyc-ge-workspace-hero__quick:focus-visible {
    box-shadow: 0 0 0 3px rgba(35, 168, 110, .16), 0 5px 16px rgba(15, 39, 66, .09);
}

.gipyc-ge-workspace-hero__facts > span {
    min-width: 92px;
    display: grid;
    gap: 2px;
    padding: 12px 14px;
    border-left: 1px solid var(--gipyc-ge-border);
    text-align: center;
}

.gipyc-ge-workspace-hero__facts strong {
    font-size: 24px;
    color: var(--gipyc-ge-navy);
    line-height: 1.1;
}

.gipyc-ge-workspace-hero__facts small {
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-kpi-strip {
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: 12px;
    margin-bottom: 18px;
}

.gipyc-ge-kpi-strip article {
    display: grid;
    gap: 4px;
    padding: 18px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: var(--gipyc-ge-white);
}

.gipyc-ge-kpi-strip span,
.gipyc-ge-kpi-strip small {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-kpi-strip strong {
    color: var(--gipyc-ge-navy);
    font-size: 30px;
    line-height: 1;
}

.gipyc-ge-dashboard-grid {
    display: grid;
    grid-template-columns: minmax(0,1.35fr) minmax(280px,.65fr);
    gap: 16px;
    margin-bottom: 18px;
}

.gipyc-ge-panel {
    padding: 20px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 18px;
    background: var(--gipyc-ge-white);
}

.gipyc-ge-panel__heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.gipyc-ge-panel__heading h2,
.gipyc-ge-panel__heading p {
    margin: 0;
}

.gipyc-ge-panel__heading > span {
    display: grid;
    place-items: center;
    min-width: 38px;
    min-height: 38px;
    border-radius: 12px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-blue);
    font-weight: 700;
}

.gipyc-ge-panel__heading a {
    color: var(--gipyc-ge-blue);
    text-decoration: none;
    font-weight: 650;
}

.gipyc-ge-panel__lead {
    margin: 12px 0 0;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-attention-list {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 9px;
    margin-top: 16px;
}

.gipyc-ge-attention-list a {
    display: grid;
    grid-template-columns: 42px minmax(0,1fr) auto;
    align-items: center;
    gap: 10px;
    padding: 11px 12px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 12px;
    color: var(--gipyc-ge-text);
    text-decoration: none;
}

.gipyc-ge-attention-list a:hover {
    border-color: rgba(15,39,66,.28);
    background: #f9fbfc;
}

.gipyc-ge-attention-list a strong {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: rgba(233,139,27,.11);
    color: var(--gipyc-ge-orange);
}

.gipyc-ge-attention-list a b {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-attention-empty {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 16px;
    padding: 14px;
    border-radius: 13px;
    background: rgba(31,157,104,.07);
}

.gipyc-ge-attention-empty > span {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: rgba(31,157,104,.13);
    color: var(--gipyc-ge-green);
    font-weight: 800;
}

.gipyc-ge-attention-empty strong,
.gipyc-ge-attention-empty small {
    display: block;
}

.gipyc-ge-attention-empty small {
    margin-top: 2px;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-space-grid,
.gipyc-ge-tenant-space-grid {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 16px;
}

.gipyc-ge-space-card,
.gipyc-ge-tenant-space-card {
    position: relative;
    overflow: hidden;
    display: grid;
    gap: 18px;
    padding: 22px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 19px;
    background: var(--gipyc-ge-white);
    box-shadow: 0 8px 22px rgba(15,39,66,.05);
}

.gipyc-ge-space-card__accent {
    position: absolute;
    inset: 0 0 auto;
    height: 5px;
    background: var(--gipyc-ge-blue);
}

.gipyc-ge-space-card.is-selected .gipyc-ge-space-card__accent,
.gipyc-ge-tenant-space-card.is-current .gipyc-ge-space-card__accent {
    background: var(--gipyc-ge-green);
}

.gipyc-ge-space-card__header,
.gipyc-ge-tenant-space-card > header {
    display: grid;
    grid-template-columns: 54px minmax(0,1fr) auto;
    align-items: center;
    gap: 13px;
}

.gipyc-ge-space-card__header h3,
.gipyc-ge-tenant-space-card > header h2,
.gipyc-ge-space-card__header p,
.gipyc-ge-tenant-space-card > header p {
    margin: 0;
}

.gipyc-ge-space-card__header h3,
.gipyc-ge-tenant-space-card > header h2 {
    color: var(--gipyc-ge-navy);
    font-size: 19px;
}

.gipyc-ge-space-card__header small,
.gipyc-ge-tenant-space-card > header small {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-space-card__logo {
    width: 54px;
    height: 54px;
    display: grid;
    place-items: center;
    overflow: hidden;
    border-radius: 14px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-navy);
    font-size: 22px;
    font-weight: 750;
}

.gipyc-ge-space-card__logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #fff;
}

.gipyc-ge-space-card__metrics {
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: 8px;
}

.gipyc-ge-space-card__metrics > span {
    min-width: 0;
    display: grid;
    gap: 2px;
    padding: 11px 10px;
    border-radius: 12px;
    background: var(--gipyc-ge-background);
    text-align: center;
}

.gipyc-ge-space-card__metrics strong {
    overflow: hidden;
    color: var(--gipyc-ge-navy);
    font-size: 18px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-space-card__metrics small {
    color: var(--gipyc-ge-muted);
    font-size: 11px;
}

.gipyc-ge-space-card__footer,
.gipyc-ge-tenant-space-card > footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding-top: 14px;
    border-top: 1px solid var(--gipyc-ge-border);
    color: var(--gipyc-ge-muted);
    font-size: 13px;
}

.gipyc-ge-tenant-space-card > footer > div {
    display: flex;
    align-items: center;
    gap: 10px;
}

.gipyc-ge-tenant-space-card__details {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 10px;
}

.gipyc-ge-tenant-space-card__details span {
    display: grid;
    gap: 2px;
    color: var(--gipyc-ge-muted);
    font-size: 13px;
}

.gipyc-ge-tenant-space-card__details strong {
    color: var(--gipyc-ge-text);
}

.gipyc-ge-breadcrumb {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 12px;
    color: var(--gipyc-ge-muted);
    font-size: 13px;
}

.gipyc-ge-breadcrumb button {
    padding: 0;
    border: 0;
    background: none;
    color: var(--gipyc-ge-blue);
    cursor: pointer;
    font: inherit;
    font-weight: 650;
}

.gipyc-ge-community-toolbar {
    display: grid;
    grid-template-columns: minmax(260px,.85fr) minmax(0,1.5fr);
    align-items: end;
    gap: 16px;
    margin-bottom: 20px;
    padding: 15px 16px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: var(--gipyc-ge-white);
}

.gipyc-ge-community-toolbar .gipyc-ge-search {
    margin: 0;
}

.gipyc-ge-filter-chips {
    display: flex;
    justify-content: flex-end;
    gap: 7px;
    flex-wrap: wrap;
}

.gipyc-ge-filter-chips button,
.gipyc-ge-student-tabs button {
    appearance: none;
    border: 1px solid var(--gipyc-ge-border);
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-text);
    cursor: pointer;
    font: inherit;
}

.gipyc-ge-filter-chips button {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 11px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
}

.gipyc-ge-filter-chips button span {
    min-width: 22px;
    padding: 1px 6px;
    border-radius: 999px;
    background: var(--gipyc-ge-background);
    text-align: center;
    font-size: 11px;
}

.gipyc-ge-filter-chips button.is-active {
    border-color: var(--gipyc-ge-navy);
    background: var(--gipyc-ge-navy);
    color: #fff;
}

.gipyc-ge-filter-chips button.is-active span {
    background: rgba(255,255,255,.15);
}

.gipyc-ge-section-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 14px;
    margin: 4px 0 12px;
}

.gipyc-ge-section-heading h2,
.gipyc-ge-section-heading p {
    margin: 0;
}

.gipyc-ge-section-heading > span {
    color: var(--gipyc-ge-muted);
    font-weight: 700;
}

.gipyc-ge-group-grid {
    display: grid;
    /* La cuadrícula responde al ancho útil del panel, no al viewport completo.
       Dos tarjetas sólo conviven cuando cada una conserva espacio operativo. */
    grid-template-columns: repeat(auto-fit,minmax(min(760px,100%),1fr));
    gap: 14px;
}

.gipyc-ge-group-card,
.gipyc-ge-person-card {
    min-width: 0;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 17px;
    background: var(--gipyc-ge-white);
    overflow: hidden;
    transition: border-color .18s ease, box-shadow .18s ease;
}

.gipyc-ge-group-card {
    container-type: inline-size;
}

.gipyc-ge-group-card[open],
.gipyc-ge-person-card[open] {
    grid-column: 1 / -1;
    border-color: rgba(15,39,66,.22);
    box-shadow: 0 11px 28px rgba(15,39,66,.08);
}

.gipyc-ge-group-card > summary,
.gipyc-ge-person-card > summary {
    list-style: none;
    cursor: pointer;
}

.gipyc-ge-group-card > summary::-webkit-details-marker,
.gipyc-ge-person-card > summary::-webkit-details-marker {
    display: none;
}

.gipyc-ge-group-card > summary {
    min-height: 142px;
    display: grid;
    grid-template-columns: minmax(0,1.3fr) minmax(150px,.7fr) minmax(240px,1fr) auto;
    align-items: center;
    gap: 14px;
    padding: 18px;
}

.gipyc-ge-group-card > summary h3,
.gipyc-ge-group-card > summary p {
    margin: 0;
}

.gipyc-ge-group-card > summary > div:first-child {
    min-width: 0;
}

.gipyc-ge-group-card > summary > div:first-child > small {
    display: block;
    max-width: 100%;
    line-height: 1.45;
    overflow-wrap: break-word;
}

.gipyc-ge-group-card > summary h3 {
    color: var(--gipyc-ge-navy);
    font-size: 21px;
}

.gipyc-ge-group-card > summary small {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-group-card__teacher {
    display: grid;
    gap: 3px;
    padding-left: 14px;
    border-left: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-group-card__teacher span,
.gipyc-ge-group-card__metrics small {
    color: var(--gipyc-ge-muted);
    font-size: 11px;
}

.gipyc-ge-group-card__metrics {
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: 7px;
}

.gipyc-ge-group-card__metrics > span {
    display: grid;
    gap: 1px;
    padding: 8px;
    border-radius: 10px;
    background: var(--gipyc-ge-background);
    text-align: center;
}

.gipyc-ge-group-card__metrics strong {
    color: var(--gipyc-ge-navy);
    font-size: 17px;
}

.gipyc-ge-card-chevron {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    color: var(--gipyc-ge-muted);
    font-size: 20px;
    transition: transform .18s ease;
}

.gipyc-ge-group-card[open] > summary .gipyc-ge-card-chevron,
.gipyc-ge-person-card[open] > summary .gipyc-ge-card-chevron {
    transform: rotate(180deg);
}

.gipyc-ge-group-card__body {
    padding: 18px;
    border-top: 1px solid var(--gipyc-ge-border);
    background: #f8fafb;
}

.gipyc-ge-group-card__body-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 14px;
    margin-bottom: 13px;
}

.gipyc-ge-group-card__body-head h3,
.gipyc-ge-group-card__body-head p {
    margin: 0;
}

.gipyc-ge-group-card__body-head p {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-person-grid {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 12px;
}

.gipyc-ge-person-card > summary {
    min-height: 180px;
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    grid-template-areas: "identity chevron" "chips chips" "signals signals";
    gap: 11px;
    padding: 15px;
}

.gipyc-ge-person-card__identity {
    grid-area: identity;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 11px;
}

.gipyc-ge-person-card__identity > div {
    min-width: 0;
}

.gipyc-ge-person-card__identity strong,
.gipyc-ge-person-card__identity small {
    display: block;
}

.gipyc-ge-person-card__identity strong {
    overflow: hidden;
    color: var(--gipyc-ge-navy);
    font-size: 15px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-person-card__identity small {
    margin-top: 2px;
    color: var(--gipyc-ge-muted);
    font-size: 11px;
}

.gipyc-ge-person-card > summary > .gipyc-ge-card-chevron {
    grid-area: chevron;
}

.gipyc-ge-person-card__chips {
    grid-area: chips;
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}

.gipyc-ge-state-chip {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 8px;
    border-radius: 999px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-muted);
    font-size: 10px;
    font-weight: 700;
    line-height: 1.2;
}

.gipyc-ge-state-chip.is-positive { background: rgba(31,157,104,.10); color: #14734d; }
.gipyc-ge-state-chip.is-warning { background: rgba(233,139,27,.12); color: #9a5a08; }
.gipyc-ge-state-chip.is-danger { background: rgba(183,68,68,.10); color: #963838; }
.gipyc-ge-state-chip.is-neutral { background: rgba(15,39,66,.07); color: var(--gipyc-ge-blue); }

.gipyc-ge-person-card__signals {
    grid-area: signals;
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 6px;
}

.gipyc-ge-person-card__signals > span {
    min-width: 0;
    display: grid;
    gap: 1px;
    padding: 7px;
    border-radius: 9px;
    background: var(--gipyc-ge-background);
}

.gipyc-ge-person-card__signals strong {
    overflow: hidden;
    color: var(--gipyc-ge-navy);
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-person-card__signals small {
    color: var(--gipyc-ge-muted);
    font-size: 9px;
}

.gipyc-ge-person-card__body {
    padding: 0;
    border-top: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-loading--inline {
    min-height: 150px;
}

.gipyc-ge-student-workspace__hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 20px;
    background: #fff;
}

.gipyc-ge-student-workspace__hero > div:first-child {
    display: flex;
    align-items: center;
    gap: 13px;
}

.gipyc-ge-student-workspace__hero h2,
.gipyc-ge-student-workspace__hero p {
    margin: 0;
}

.gipyc-ge-student-workspace__hero h2 {
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-student-workspace__hero p:last-child {
    color: var(--gipyc-ge-muted);
    font-size: 13px;
}

.gipyc-ge-student-workspace__quick {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.gipyc-ge-student-attention {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 10px 20px;
    border-top: 1px solid rgba(233,139,27,.16);
    border-bottom: 1px solid rgba(233,139,27,.16);
    background: rgba(233,139,27,.06);
    color: #7e500f;
    font-size: 12px;
}

.gipyc-ge-student-attention span {
    padding: 3px 8px;
    border-radius: 999px;
    background: rgba(255,255,255,.7);
}

.gipyc-ge-student-tabs {
    display: flex;
    gap: 2px;
    overflow-x: auto;
    padding: 0 16px;
    border-bottom: 1px solid var(--gipyc-ge-border);
    background: #fff;
}

.gipyc-ge-student-tabs button {
    flex: 0 0 auto;
    padding: 12px 10px 10px;
    border: 0;
    border-bottom: 3px solid transparent;
    background: transparent;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    font-weight: 650;
}

.gipyc-ge-student-tabs button.is-active {
    border-bottom-color: var(--gipyc-ge-green);
    color: var(--gipyc-ge-navy);
}

.gipyc-ge-student-tab-panel {
    padding: 20px;
    background: #fff;
}

.gipyc-ge-student-summary-grid {
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: 10px;
}

.gipyc-ge-student-summary-grid--three { grid-template-columns: repeat(3,minmax(0,1fr)); }

.gipyc-ge-student-summary-grid article {
    display: grid;
    gap: 3px;
    padding: 15px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 13px;
    background: #fbfcfd;
}

.gipyc-ge-student-summary-grid span,
.gipyc-ge-student-summary-grid small {
    color: var(--gipyc-ge-muted);
    font-size: 11px;
}

.gipyc-ge-student-summary-grid strong {
    color: var(--gipyc-ge-navy);
    font-size: 18px;
}

.gipyc-ge-student-context-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 14px;
}

.gipyc-ge-student-context-actions a {
    padding: 8px 10px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 9px;
    color: var(--gipyc-ge-blue);
    text-decoration: none;
    font-size: 12px;
    font-weight: 650;
}

.gipyc-ge-data-grid {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 10px;
}

.gipyc-ge-data-pair {
    display: grid;
    gap: 3px;
    padding: 13px;
    border-radius: 11px;
    background: var(--gipyc-ge-background);
}

.gipyc-ge-data-pair span {
    color: var(--gipyc-ge-muted);
    font-size: 11px;
}

.gipyc-ge-data-pair strong {
    overflow-wrap: anywhere;
}

.gipyc-ge-subsection-title {
    margin: 22px 0 9px;
    color: var(--gipyc-ge-navy);
    font-size: 16px;
}

.gipyc-ge-compact-list {
    display: grid;
    gap: 7px;
}

.gipyc-ge-compact-list > article {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 10px 12px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: #fff;
}

.gipyc-ge-compact-list > article strong,
.gipyc-ge-compact-list > article small {
    display: block;
}

.gipyc-ge-compact-list > article small {
    margin-top: 2px;
    color: var(--gipyc-ge-muted);
    font-size: 11px;
}

.gipyc-ge-family-card-grid {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 10px;
}

.gipyc-ge-family-card-grid article {
    display: grid;
    grid-template-columns: auto minmax(0,1fr);
    align-items: start;
    gap: 11px;
    padding: 13px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 12px;
}

.gipyc-ge-family-card-grid article p {
    margin: 5px 0;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-family-card-grid .gipyc-ge-person-card__chips { grid-area: auto; }

.gipyc-ge-two-columns {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 18px;
}

.gipyc-ge-two-columns h3 {
    margin: 0 0 8px;
    color: var(--gipyc-ge-navy);
    font-size: 15px;
}

.gipyc-ge-score-badge {
    min-width: 44px;
    padding: 7px 9px;
    border-radius: 9px;
    background: rgba(15,39,66,.07);
    color: var(--gipyc-ge-navy);
    text-align: center;
    font-weight: 750;
}

.gipyc-ge-timeline {
    display: grid;
    gap: 0;
}

.gipyc-ge-timeline article {
    display: grid;
    grid-template-columns: 18px minmax(0,1fr);
    gap: 10px;
    position: relative;
    padding: 0 0 15px;
}

.gipyc-ge-timeline article > span {
    width: 10px;
    height: 10px;
    margin-top: 5px;
    border-radius: 50%;
    background: var(--gipyc-ge-green);
}

.gipyc-ge-timeline article:not(:last-child)::before {
    content: "";
    position: absolute;
    left: 4px;
    top: 16px;
    bottom: 0;
    width: 2px;
    background: var(--gipyc-ge-border);
}

.gipyc-ge-timeline strong,
.gipyc-ge-timeline small {
    display: block;
}

.gipyc-ge-timeline small {
    color: var(--gipyc-ge-muted);
    font-size: 11px;
}

.gipyc-ge-timeline p {
    margin: 4px 0 0;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-ungrouped {
    margin-top: 18px;
}

@media (max-width: 1180px) {
    .gipyc-ge-space-grid,
    .gipyc-ge-tenant-space-grid,
    .gipyc-ge-group-grid { grid-template-columns: 1fr; }
    .gipyc-ge-person-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .gipyc-ge-group-card > summary { grid-template-columns: minmax(0,1fr) minmax(150px,.65fr) minmax(210px,.9fr) auto; }
}

@media (max-width: 900px) {
    .gipyc-ge-workspace-hero { align-items: flex-start; flex-direction: column; }
    .gipyc-ge-workspace-hero__meta,
    .gipyc-ge-workspace-hero__facts { width: 100%; justify-content: flex-start; }
    .gipyc-ge-kpi-strip { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .gipyc-ge-dashboard-grid { grid-template-columns: 1fr; }
    .gipyc-ge-community-toolbar { grid-template-columns: 1fr; }
    .gipyc-ge-filter-chips { justify-content: flex-start; }
    .gipyc-ge-group-card > summary { grid-template-columns: minmax(0,1fr) auto; grid-template-areas: "main chevron" "teacher teacher" "metrics metrics"; }
    .gipyc-ge-group-card > summary > div:first-child { grid-area: main; }
    .gipyc-ge-group-card > summary > .gipyc-ge-card-chevron { grid-area: chevron; }
    .gipyc-ge-group-card__teacher { grid-area: teacher; padding: 9px 0 0; border-left: 0; border-top: 1px solid var(--gipyc-ge-border); }
    .gipyc-ge-group-card__metrics { grid-area: metrics; }
    .gipyc-ge-student-summary-grid,
    .gipyc-ge-data-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 680px) {
    .gipyc-ge-workspace-hero { padding: 22px 18px; border-radius: 17px; }
    .gipyc-ge-workspace-hero__mark { width: 58px; height: 58px; flex-basis: 58px; border-radius: 14px; }
    .gipyc-ge-workspace-hero__identity { align-items: flex-start; }
    .gipyc-ge-workspace-hero__facts > span { flex: 1 1 80px; border-left: 0; border-radius: 10px; background: var(--gipyc-ge-background); }
    .gipyc-ge-kpi-strip { grid-template-columns: 1fr 1fr; }
    .gipyc-ge-kpi-strip strong { font-size: 24px; }
    .gipyc-ge-attention-list { grid-template-columns: 1fr; }
    .gipyc-ge-space-card,
    .gipyc-ge-tenant-space-card { padding: 18px; }
    .gipyc-ge-space-card__header,
    .gipyc-ge-tenant-space-card > header { grid-template-columns: 48px minmax(0,1fr); }
    .gipyc-ge-space-card__header > .gipyc-ge-record-status,
    .gipyc-ge-tenant-space-card > header > .gipyc-ge-record-status,
    .gipyc-ge-current-tenant-badge { grid-column: 2; justify-self: start; }
    .gipyc-ge-space-card__logo { width: 48px; height: 48px; }
    .gipyc-ge-space-card__metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .gipyc-ge-space-card__footer,
    .gipyc-ge-tenant-space-card > footer { align-items: stretch; flex-direction: column; }
    .gipyc-ge-tenant-space-card > footer > div { width: 100%; }
    .gipyc-ge-tenant-space-card > footer .gipyc-ge-button { flex: 1; }
    .gipyc-ge-tenant-space-card__details { grid-template-columns: 1fr; }
    .gipyc-ge-group-card__metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .gipyc-ge-person-grid { grid-template-columns: 1fr; }
    .gipyc-ge-person-card[open] { grid-column: auto; }
    .gipyc-ge-student-workspace__hero { align-items: flex-start; flex-direction: column; }
    .gipyc-ge-student-workspace__quick { justify-content: flex-start; }
    .gipyc-ge-student-summary-grid,
    .gipyc-ge-student-summary-grid--three,
    .gipyc-ge-data-grid,
    .gipyc-ge-family-card-grid,
    .gipyc-ge-two-columns { grid-template-columns: 1fr; }
    .gipyc-ge-compact-list > article { align-items: flex-start; flex-direction: column; }
}
.gipyc-ge-community-search-form{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:end}.gipyc-ge-community-search-form .gipyc-ge-search{min-width:0}@media(max-width:680px){.gipyc-ge-community-search-form{grid-template-columns:1fr}.gipyc-ge-community-search-form .gipyc-ge-button,.gipyc-ge-community-search-form .gipyc-ge-link-button{width:100%}}

/* v0.30 · acciones contextualizadas dentro del nuevo workspace */
.gipyc-ge-workspace-hero__side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 14px;
}
.gipyc-ge-inline-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin: 0 0 16px;
}
@media (max-width: 760px) {
    .gipyc-ge-workspace-hero__side {
        width: 100%;
        align-items: stretch;
    }
    .gipyc-ge-inline-actions {
        justify-content: stretch;
    }
    .gipyc-ge-inline-actions .gipyc-ge-button,
    .gipyc-ge-workspace-hero__side > .gipyc-ge-button {
        width: 100%;
        justify-content: center;
    }
}

/* 0.30.1 · eliminación segura de contratantes */
.gipyc-ge-link-button--danger { color: #a12f2f; }
.gipyc-ge-link-button--danger:hover,
.gipyc-ge-link-button--danger:focus { color: #7d1f1f; text-decoration: underline; }
.gipyc-ge-button--danger { background: #a12f2f; border-color: #a12f2f; color: #fff; }
.gipyc-ge-button--danger:hover,
.gipyc-ge-button--danger:focus { background: #7d1f1f; border-color: #7d1f1f; color: #fff; }
.gipyc-ge-button--danger:disabled { opacity: .48; cursor: not-allowed; }
.gipyc-ge-danger-modal-backdrop { position: fixed; inset: 0; z-index: 10020; background: rgba(7,20,35,.58); backdrop-filter: blur(2px); }
.gipyc-ge-danger-modal { position: fixed; z-index: 10021; top: 50%; left: 50%; width: min(760px, calc(100vw - 32px)); max-height: calc(100vh - 42px); transform: translate(-50%,-50%); overflow: auto; background: #fff; border: 1px solid #d9e0e7; border-radius: 18px; box-shadow: 0 26px 70px rgba(7,20,35,.28); }
.gipyc-ge-danger-modal > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 24px 26px 18px; border-bottom: 1px solid #e5e9ee; }
.gipyc-ge-danger-modal > header h2 { margin: 3px 0 0; font-size: 24px; line-height: 1.2; }
.gipyc-ge-danger-modal__body { display: grid; gap: 18px; padding: 22px 26px 26px; }
.gipyc-ge-danger-warning { padding: 16px 18px; border: 1px solid #e6bcbc; border-radius: 13px; background: #fff5f5; color: #6f2424; }
.gipyc-ge-danger-warning strong { display: block; margin-bottom: 5px; font-size: 16px; }
.gipyc-ge-danger-warning p { margin: 0; line-height: 1.55; }
.gipyc-ge-danger-modal__metrics { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 9px; }
.gipyc-ge-danger-modal__metrics span { display: grid; gap: 2px; min-width: 0; padding: 12px 10px; text-align: center; background: #f4f6f8; border-radius: 11px; }
.gipyc-ge-danger-modal__metrics strong { font-size: 18px; color: #10283f; }
.gipyc-ge-danger-modal__metrics small { color: #607080; font-size: 11px; }
.gipyc-ge-preserve-note { display: grid; gap: 4px; padding: 13px 15px; border-radius: 11px; background: #f3f7f5; border: 1px solid #d8e9df; }
.gipyc-ge-preserve-note strong { color: #17663f; }
.gipyc-ge-preserve-note span { color: #53636f; line-height: 1.45; }
.gipyc-ge-danger-check { display: flex; align-items: flex-start; gap: 10px; margin-top: 14px; padding: 13px 14px; border: 1px solid #e1e5e9; border-radius: 11px; background: #fafbfc; cursor: pointer; }
.gipyc-ge-danger-check input { margin-top: 3px; flex: 0 0 auto; }
.gipyc-ge-danger-check span { line-height: 1.45; }
.gipyc-ge-danger-modal__actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 18px; }
@media (max-width: 700px) {
    .gipyc-ge-danger-modal { width: min(100% - 18px, 760px); max-height: calc(100vh - 18px); border-radius: 14px; }
    .gipyc-ge-danger-modal > header { padding: 18px 17px 14px; }
    .gipyc-ge-danger-modal__body { padding: 17px; }
    .gipyc-ge-danger-modal__metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .gipyc-ge-danger-modal__actions { flex-direction: column-reverse; align-items: stretch; }
    .gipyc-ge-danger-modal__actions .gipyc-ge-button { width: 100%; justify-content: center; }
}

/* v0.30.3 — selector explícito de escuela en la aplicación */
.gipyc-ge-app-selector-shell {
    min-height: 100vh;
    display: grid;
    grid-template-rows: auto 1fr auto;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-text);
}
.gipyc-ge-app-selector-topbar {
    min-height: 78px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 14px clamp(20px,4vw,54px);
    border-bottom: 1px solid var(--gipyc-ge-border);
    background: var(--gipyc-ge-white);
}
.gipyc-ge-app-selector-content {
    width: min(1180px, calc(100% - 40px));
    margin: 0 auto;
    padding: 42px 0 56px;
}
.gipyc-ge-app-selector-content .gipyc-ge-page-header { margin-bottom: 22px; }
.gipyc-ge-app-selector-footer {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    padding: 18px clamp(20px,4vw,54px);
    border-top: 1px solid var(--gipyc-ge-border);
    color: var(--gipyc-ge-muted);
    background: var(--gipyc-ge-white);
    font-size: 13px;
}
.gipyc-ge-app-selector-footer a { color: var(--gipyc-ge-navy); font-weight: 700; text-decoration: none; }
.gipyc-ge-school-change {
    min-height: 38px;
    padding: 8px 13px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-navy);
    font: inherit;
    font-size: 13px;
    font-weight: 750;
    cursor: pointer;
}
.gipyc-ge-school-change:hover { border-color: var(--gipyc-ge-blue); }
.gipyc-ge-school-change:disabled { cursor: wait; opacity: .6; }
.gipyc-ge-app-school-card .gipyc-ge-button { min-width: 130px; }
@media (max-width: 720px) {
    .gipyc-ge-app-selector-topbar { min-height: 68px; padding: 12px 18px; }
    .gipyc-ge-app-selector-topbar .gipyc-ge-user > span:first-child { display: none; }
    .gipyc-ge-app-selector-content { width: min(100% - 28px, 1180px); padding: 28px 0 40px; }
    .gipyc-ge-app-selector-footer { padding: 16px 18px; }
}

/* v0.30.7 — navegación contextual desde el expediente integral */
.gipyc-ge-student-module-context {
    margin-bottom: 18px;
    border-left: 4px solid var(--gipyc-ge-green);
}
.gipyc-ge-student-module-context__heading {
    align-items: center;
    gap: 18px;
}
.gipyc-ge-student-module-context__identity {
    display: flex;
    align-items: center;
    gap: 14px;
    min-width: 0;
}
.gipyc-ge-student-module-context__identity h2,
.gipyc-ge-student-module-context__identity p {
    margin: 0;
}
.gipyc-ge-student-module-context__identity h2 {
    color: var(--gipyc-ge-navy);
}
.gipyc-ge-student-module-context__identity > div:last-child {
    min-width: 0;
}
.gipyc-ge-student-module-context__body {
    padding-top: 4px;
}
.gipyc-ge-student-module-context__body > :first-child {
    margin-top: 0;
}
@media (max-width: 760px) {
    .gipyc-ge-student-module-context__heading {
        align-items: stretch;
    }
    .gipyc-ge-student-module-context__heading > .gipyc-ge-button {
        width: 100%;
        justify-content: center;
    }
}

/* v0.32.0 — pagos en línea y suscripciones */
.gipyc-ge-subscription-card,
.gipyc-ge-family-payment-bar {
    margin: 20px 0;
}
.gipyc-ge-family-payment-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
}
.gipyc-ge-family-payment-bar h2,
.gipyc-ge-family-payment-bar p { margin-top: 0; }
.gipyc-ge-family-payment-total {
    min-width: 260px;
    padding: 18px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 14px;
    background: var(--gipyc-ge-surface, #f8fafc);
}
.gipyc-ge-family-payment-total > span { display:block; color:var(--gipyc-ge-muted); font-weight:700; }
.gipyc-ge-family-payment-total > strong { display:block; margin:5px 0 14px; color:var(--gipyc-ge-navy); font-size:28px; }
.gipyc-ge-payment-gateway-form .gipyc-ge-field--wide { grid-column: 1 / -1; }
.gipyc-ge-payment-gateway-section {
    grid-column: 1 / -1;
    display: grid;
    gap: 18px;
    padding: 20px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: var(--gipyc-ge-surface, #f8fafc);
}
.gipyc-ge-payment-gateway-section__heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
}
.gipyc-ge-payment-gateway-section__heading .gipyc-ge-eyebrow { margin: 0 0 4px; }
.gipyc-ge-payment-gateway-section__heading h3 {
    margin: 0 0 5px;
    color: var(--gipyc-ge-navy);
    font-size: 19px;
}
.gipyc-ge-payment-gateway-section__heading p:not(.gipyc-ge-eyebrow) {
    max-width: 820px;
    margin: 0;
    color: var(--gipyc-ge-muted);
    line-height: 1.5;
}
.gipyc-ge-payment-gateway-section__status {
    flex: 0 0 auto;
    padding: 7px 10px;
    border-radius: 999px;
    background: #e9eef3;
    color: var(--gipyc-ge-navy);
    font-size: 12px;
    font-weight: 800;
}
.gipyc-ge-payment-gateway-section__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}
.gipyc-ge-payment-gateway-section .gipyc-ge-field > span {
    display: block;
    margin-bottom: 7px;
    color: var(--gipyc-ge-navy);
    font-size: 14px;
    font-weight: 700;
}
.gipyc-ge-secret-field {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    align-items: stretch;
}
.gipyc-ge-secret-toggle {
    min-width: 82px;
    min-height: 48px;
    padding: 8px 12px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-navy);
    font: inherit;
    font-size: 13px;
    font-weight: 800;
    cursor: pointer;
}
.gipyc-ge-secret-toggle:hover,
.gipyc-ge-secret-toggle:focus-visible { background: #eef3f7; }
.gipyc-ge-payment-gateway-actions {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding-top: 2px;
}
.gipyc-ge-payment-gateway-actions > div:first-child { display: grid; gap: 2px; }
.gipyc-ge-payment-gateway-actions strong { color: var(--gipyc-ge-navy); }
.gipyc-ge-payment-gateway-actions small { color: var(--gipyc-ge-muted); }
@media (max-width: 760px) {
    .gipyc-ge-payment-gateway-section__heading,
    .gipyc-ge-payment-gateway-actions { align-items: stretch; flex-direction: column; }
    .gipyc-ge-payment-gateway-section__grid { grid-template-columns: 1fr; }
    .gipyc-ge-payment-gateway-section .gipyc-ge-field--wide { grid-column: auto; }
    .gipyc-ge-payment-gateway-actions .gipyc-ge-form-actions { align-items: stretch; flex-direction: column; }
    .gipyc-ge-payment-gateway-actions .gipyc-ge-button { width: 100%; }
}
.gipyc-ge-copy-value {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.gipyc-ge-copy-value code {
    flex: 1 1 520px;
    padding: 11px 13px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-surface, #f8fafc);
    overflow-wrap: anywhere;
}
.gipyc-ge-payment-modal {
    position: fixed;
    inset: 0;
    z-index: 100000;
    display: grid;
    place-items: center;
    padding: 24px;
}
.gipyc-ge-payment-modal__backdrop {
    position: absolute;
    inset: 0;
    border: 0;
    background: rgba(15, 23, 42, .64);
    cursor: pointer;
}
.gipyc-ge-payment-modal__panel {
    position: relative;
    z-index: 1;
    width: min(720px, 100%);
    max-height: calc(100vh - 48px);
    overflow: auto;
    padding: 24px;
    border-radius: 18px;
    background: var(--gipyc-ge-white, #fff);
    box-shadow: 0 24px 70px rgba(15, 23, 42, .24);
}
.gipyc-ge-payment-modal__amount {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 20px;
    margin: 18px 0;
    padding: 16px 18px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 14px;
    background: var(--gipyc-ge-surface, #f8fafc);
}
.gipyc-ge-payment-modal__amount span { color:var(--gipyc-ge-muted); font-weight:700; }
.gipyc-ge-payment-modal__amount strong { color:var(--gipyc-ge-navy); font-size:30px; }
.gipyc-ge-card-payment-brick { min-height: 280px; }
@media (max-width: 760px) {
    .gipyc-ge-family-payment-bar { align-items:stretch; flex-direction:column; }
    .gipyc-ge-family-payment-total { min-width:0; width:100%; }
    .gipyc-ge-payment-modal { padding: 10px; }
    .gipyc-ge-payment-modal__panel { max-height:calc(100vh - 20px); padding:18px; border-radius:14px; }
}

/* v0.33.0 · configuración operativa e importaciones en la aplicación */
.gipyc-ge-settings-card > p {
    margin: -2px 0 22px;
    color: var(--gipyc-ge-muted);
}
.gipyc-ge-setting-toggle {
    display: flex;
    align-items: flex-start;
    gap: 13px;
    padding: 14px 16px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 12px;
    background: var(--gipyc-ge-surface, #f8fafc);
    cursor: pointer;
}
.gipyc-ge-setting-toggle input {
    width: 20px;
    height: 20px;
    margin: 2px 0 0;
    flex: 0 0 auto;
}
.gipyc-ge-setting-toggle span,
.gipyc-ge-setting-toggle strong,
.gipyc-ge-setting-toggle small {
    display: block;
}
.gipyc-ge-setting-toggle strong {
    color: var(--gipyc-ge-navy);
}
.gipyc-ge-setting-toggle small {
    margin-top: 4px;
    color: var(--gipyc-ge-muted);
    font-weight: 400;
    line-height: 1.45;
}
.gipyc-ge-import-definition {
    padding: 14px 0;
    border-top: 1px solid var(--gipyc-ge-border);
}
.gipyc-ge-import-definition:first-of-type {
    border-top: 0;
}
.gipyc-ge-import-definition p {
    margin: 5px 0 9px;
    color: var(--gipyc-ge-muted);
}
.gipyc-ge-data-table tr.is-selected td {
    background: var(--gipyc-ge-surface, #f8fafc);
}
.gipyc-ge-data-table td > small {
    display: block;
    margin-top: 4px;
    color: var(--gipyc-ge-muted);
}


/* v0.33.1 · Planes y módulos: tarjetas legibles y responsivas */
.gipyc-ge-space-grid.gipyc-ge-plan-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 500px), 1fr));
    align-items: stretch;
}

.gipyc-ge-plan-card {
    min-width: 0;
    grid-template-rows: auto auto minmax(0, 1fr) auto;
    align-content: start;
}

.gipyc-ge-plan-card__header > div {
    min-width: 0;
}

.gipyc-ge-plan-card__header h3,
.gipyc-ge-plan-card__header small {
    overflow-wrap: anywhere;
}

.gipyc-ge-plan-card__metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.gipyc-ge-plan-card__metrics > span {
    min-width: 0;
    display: grid;
    align-content: start;
    gap: 4px;
    padding: 12px 13px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 13px;
    background: var(--gipyc-ge-background);
}

.gipyc-ge-plan-card__metrics small {
    min-width: 0;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    font-weight: 650;
    line-height: 1.3;
    white-space: normal;
}

.gipyc-ge-plan-card__metrics strong {
    min-width: 0;
    color: var(--gipyc-ge-navy);
    font-size: 17px;
    line-height: 1.25;
    overflow-wrap: anywhere;
}

.gipyc-ge-plan-card__modules {
    min-width: 0;
    display: grid;
    align-content: start;
    gap: 10px;
}

.gipyc-ge-plan-card__section-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .02em;
}

.gipyc-ge-plan-card__section-heading strong {
    min-width: 28px;
    padding: 3px 8px;
    border-radius: 999px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-navy);
    text-align: center;
    font-size: 12px;
}

.gipyc-ge-plan-card__chips {
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 8px;
}

.gipyc-ge-plan-module-shortcut,
.gipyc-ge-plan-card__chips > span.is-empty {
    max-width: 100%;
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 6px 10px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 999px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-text);
    font-size: 12px;
    font-weight: 650;
    line-height: 1.2;
    white-space: normal;
    overflow-wrap: anywhere;
}

.gipyc-ge-plan-module-shortcut {
    appearance: none;
    gap: 7px;
    font-family: inherit;
    cursor: pointer;
    transition: border-color .18s ease, background-color .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.gipyc-ge-plan-module-shortcut > span {
    color: var(--gipyc-ge-green);
    font-size: 13px;
    line-height: 1;
    transition: transform .18s ease;
}

.gipyc-ge-plan-module-shortcut:hover,
.gipyc-ge-plan-module-shortcut:focus-visible {
    border-color: rgba(31,157,104,.55);
    background: rgba(31,157,104,.07);
    color: var(--gipyc-ge-navy);
    box-shadow: 0 5px 14px rgba(15,39,66,.08);
    transform: translateY(-1px);
}

.gipyc-ge-plan-module-shortcut:hover > span,
.gipyc-ge-plan-module-shortcut:focus-visible > span {
    transform: translateX(2px);
}

.gipyc-ge-plan-module-shortcut:focus-visible {
    outline: 2px solid rgba(31,157,104,.28);
    outline-offset: 2px;
}

.gipyc-ge-plan-card__chips > span.is-empty {
    border-style: dashed;
    color: var(--gipyc-ge-muted);
    cursor: default;
}

.gipyc-ge-plan-card__section-heading strong,
.gipyc-ge-module-status,
.gipyc-ge-record-status,
.gipyc-ge-state-chip,
.gipyc-ge-current-tenant-badge {
    cursor: default;
}

.gipyc-ge-plan-card__footer {
    min-width: 0;
    flex-wrap: wrap;
}

.gipyc-ge-plan-card__footer > span {
    flex: 1 1 130px;
    min-width: 0;
}

.gipyc-ge-plan-card__footer .gipyc-ge-button {
    flex: 0 1 auto;
    max-width: 100%;
    margin-left: auto;
    justify-content: center;
    text-align: center;
    white-space: normal;
}

@media (max-width: 860px) {
    .gipyc-ge-space-grid.gipyc-ge-plan-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 560px) {
    .gipyc-ge-plan-card__metrics {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-plan-card__footer {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-plan-card__footer > span {
        flex-basis: auto;
    }

    .gipyc-ge-plan-card__footer .gipyc-ge-button {
        width: 100%;
        margin-left: 0;
    }
}


/* v0.34.0 · configuración comercial por módulo */
.gipyc-ge-commercial-module-card.is-full {
    grid-column: 1 / -1;
}
.gipyc-ge-commercial-module-card {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(220px, .8fr);
    gap: 18px;
    align-items: center;
    padding: 16px 18px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 14px;
    background: var(--gipyc-ge-white);
    transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.gipyc-ge-commercial-module-card.is-enabled {
    border-color: color-mix(in srgb, var(--gipyc-ge-success, #159a5b) 34%, var(--gipyc-ge-border));
    background: color-mix(in srgb, var(--gipyc-ge-success, #159a5b) 4%, var(--gipyc-ge-white));
}
.gipyc-ge-commercial-module-card__toggle {
    display: flex;
    align-items: flex-start;
    gap: 13px;
    min-width: 0;
    cursor: pointer;
}
.gipyc-ge-commercial-module-card__toggle input {
    width: 22px;
    height: 22px;
    margin: 2px 0 0;
    flex: 0 0 auto;
}
.gipyc-ge-commercial-module-card__toggle span,
.gipyc-ge-commercial-module-card__toggle strong,
.gipyc-ge-commercial-module-card__toggle small {
    display: block;
    min-width: 0;
}
.gipyc-ge-commercial-module-card__toggle strong {
    color: var(--gipyc-ge-navy);
    font-size: 15px;
    line-height: 1.35;
}
.gipyc-ge-commercial-module-card__toggle small {
    margin-top: 4px;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    line-height: 1.4;
}
.gipyc-ge-commercial-module-card.is-enabled .gipyc-ge-commercial-module-card__toggle small {
    color: var(--gipyc-ge-success, #159a5b);
    font-weight: 700;
}
.gipyc-ge-commercial-module-card__price {
    min-width: 0;
}
.gipyc-ge-commercial-module-card__price > label {
    display: block;
    margin-bottom: 7px;
    color: var(--gipyc-ge-navy);
    font-size: 13px;
    font-weight: 700;
}
.gipyc-ge-commercial-module-card__price > div {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
}
.gipyc-ge-commercial-module-card__price input {
    width: 100%;
    min-width: 0;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #cfd7df;
    border-radius: 10px;
    background: var(--gipyc-ge-white);
    color: var(--gipyc-ge-text);
    font: inherit;
    font-size: 16px;
}
.gipyc-ge-commercial-module-card__price > div > span {
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    font-weight: 800;
}
.gipyc-ge-commercial-module-card__price > small {
    display: block;
    margin-top: 6px;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    line-height: 1.4;
}
@media (max-width: 760px) {
    .gipyc-ge-commercial-module-card {
        grid-template-columns: 1fr;
        gap: 13px;
    }
}

/* v0.34.2 · Reinicio global de plataforma */
.gipyc-ge-platform-danger-zone{border-color:#e6bcbc;background:linear-gradient(180deg,#fff 0%,#fffafa 100%)}
.gipyc-ge-platform-danger-zone .gipyc-ge-eyebrow{color:#9a3030}
.gipyc-ge-platform-danger-zone__footer{align-items:center;border-top:1px solid #f0dede;display:flex;gap:16px;justify-content:space-between;margin-top:18px;padding-top:16px}
.gipyc-ge-platform-danger-zone__footer>span{color:#7d5c5c;font-size:13px}
@media (max-width:720px){.gipyc-ge-platform-danger-zone__footer{align-items:stretch;flex-direction:column}.gipyc-ge-platform-danger-zone__footer .gipyc-ge-button{justify-content:center;width:100%}}


/* v0.34.3 · Corrección de controles checkbox y administrador inicial */
.gipyc-ge-field.is-checkbox > .gipyc-ge-switch {
    width: 100%;
}
.gipyc-ge-field[data-primary-admin-field][hidden] {
    display: none !important;
}

/* v0.34.10 · Importación rápida: tipo inequívoco y captura única de ciclo */
.gipyc-ge-import-type-callout {
    display: grid;
    gap: 4px;
    padding: 14px 16px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 14px;
    background: var(--gipyc-ge-surface, #f8fafc);
}
.gipyc-ge-import-type-callout strong {
    color: var(--gipyc-ge-navy);
}
.gipyc-ge-import-type-callout span,
.gipyc-ge-import-type-callout small {
    color: var(--gipyc-ge-muted);
    line-height: 1.45;
}
.gipyc-ge-import-cycle-box {
    display: grid;
    gap: 16px;
    margin: 0 0 18px;
    padding: 18px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: var(--gipyc-ge-surface, #f8fafc);
}
.gipyc-ge-import-cycle-box h3 {
    margin: 2px 0 6px;
}
.gipyc-ge-import-cycle-box p {
    margin: 0;
    color: var(--gipyc-ge-muted);
}
.gipyc-ge-import-cycle-row {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: minmax(180px, 1fr) minmax(180px, .8fr) minmax(180px, .8fr);
    gap: 14px;
    align-items: end;
    padding: 14px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 14px;
    background: #fff;
}
.gipyc-ge-import-cycle-row > div {
    align-self: center;
}
.gipyc-ge-import-cycle-row strong,
.gipyc-ge-import-cycle-row small {
    display: block;
}
.gipyc-ge-import-cycle-row small {
    margin-top: 4px;
    color: var(--gipyc-ge-muted);
}
@media (max-width: 760px) {
    .gipyc-ge-import-cycle-row {
        grid-template-columns: 1fr;
        align-items: stretch;
    }
}

/* v0.34.14 · REST/vista previa de importaciones; conserva estilos REP */
.gipyc-ge-import-review-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 3.4rem;
    padding: .25rem .55rem;
    border: 1px solid rgba(180, 83, 9, .28);
    border-radius: 999px;
    background: rgba(245, 158, 11, .12);
    color: #92400e;
    font-weight: 700;
    font-size: .82rem;
    line-height: 1.2;
    cursor: default;
}

/* Credenciales GIPYC v0.34.22 — archivo agrupado por escuela */
.gipyc-ge-issued-school-list {
    display: grid;
    gap: 14px;
}

.gipyc-ge-issued-school {
    min-width: 0;
    overflow: hidden;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: var(--gipyc-ge-white);
    transition: border-color .18s ease, box-shadow .18s ease;
}

.gipyc-ge-issued-school[open] {
    border-color: rgba(15,39,66,.22);
    box-shadow: 0 10px 26px rgba(15,39,66,.07);
}

.gipyc-ge-issued-school > summary {
    min-height: 104px;
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(280px,.75fr) auto;
    align-items: center;
    gap: 18px;
    padding: 18px 20px;
    list-style: none;
    cursor: pointer;
    user-select: none;
}

.gipyc-ge-issued-school > summary::-webkit-details-marker { display: none; }

.gipyc-ge-issued-school__identity {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 14px;
}

.gipyc-ge-issued-school__identity h3,
.gipyc-ge-issued-school__identity p { margin: 0; }

.gipyc-ge-issued-school__identity h3 {
    overflow: hidden;
    color: var(--gipyc-ge-navy);
    font-size: 20px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-issued-school__identity small { color: var(--gipyc-ge-muted); }

.gipyc-ge-issued-school__mark {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-navy);
    font-weight: 800;
}

.gipyc-ge-issued-school__metrics {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 8px;
}

.gipyc-ge-issued-school__metrics > span {
    display: grid;
    gap: 2px;
    padding: 9px 12px;
    border-radius: 10px;
    background: var(--gipyc-ge-background);
    text-align: center;
}

.gipyc-ge-issued-school__metrics strong {
    color: var(--gipyc-ge-navy);
    font-size: 18px;
}

.gipyc-ge-issued-school__metrics small {
    color: var(--gipyc-ge-muted);
    font-size: 11px;
}

.gipyc-ge-issued-school[open] > summary .gipyc-ge-card-chevron { transform: rotate(180deg); }

.gipyc-ge-issued-school__body {
    padding: 0 18px 18px;
    border-top: 1px solid var(--gipyc-ge-border);
    background: #f8fafb;
}

.gipyc-ge-issued-school__body .gipyc-ge-table-wrap {
    margin-top: 16px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 12px;
    background: var(--gipyc-ge-white);
}

@media (max-width: 900px) {
    .gipyc-ge-issued-school > summary {
        grid-template-columns: minmax(0,1fr) auto;
    }
    .gipyc-ge-issued-school__metrics {
        grid-column: 1 / -1;
    }
}

@media (max-width: 560px) {
    .gipyc-ge-issued-school > summary { padding: 16px; }
    .gipyc-ge-issued-school__metrics { grid-template-columns: 1fr 1fr; }
    .gipyc-ge-issued-school__identity h3 { white-space: normal; }
    .gipyc-ge-issued-school__body { padding: 0 12px 12px; }
}

/* v0.34.23 · Editor visual de plantillas de credencial */
.gipyc-ge-issued-school__toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;padding-top:16px;flex-wrap:wrap}.gipyc-ge-issued-school__toolbar span{font-size:12px;color:var(--gipyc-ge-muted)}
.credential-template-modal{align-items:flex-start;overflow:auto;padding:24px}.credential-template-editor{width:min(1500px,98vw);max-width:none;margin:0 auto;padding:0;overflow:hidden}.credential-template-editor__header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding:22px 24px;border-bottom:1px solid var(--gipyc-ge-border);background:#fff}.credential-template-editor__header h2{margin:0 0 6px}.credential-template-editor__header p{margin:0;max-width:900px}.credential-template-topbar{display:flex;gap:12px;align-items:flex-start;padding:16px 24px;background:#f8fafb;border-bottom:1px solid var(--gipyc-ge-border);flex-wrap:wrap}.credential-template-topbar label{display:grid;gap:5px;min-width:140px}.credential-template-topbar label span{font-size:12px;font-weight:700}.credential-template-topbar input{min-height:40px}.credential-template-topbar .credential-template-check{display:flex;align-items:center;gap:8px;min-height:40px}.credential-template-tabs{display:flex;gap:4px;padding:10px 24px 0;background:#fff}.credential-template-tabs button{border:1px solid var(--gipyc-ge-border);background:#f4f6f8;padding:10px 18px;border-radius:10px 10px 0 0;font-weight:700}.credential-template-tabs button.is-active{background:#fff;border-bottom-color:#fff;color:var(--gipyc-ge-navy)}.credential-template-layout{display:grid;grid-template-columns:230px minmax(480px,1fr) 300px;min-height:620px;border-top:1px solid var(--gipyc-ge-border)}.credential-template-palette,.credential-template-inspector{padding:18px;background:#f8fafb;overflow:auto}.credential-template-palette{border-right:1px solid var(--gipyc-ge-border);align-self:stretch;min-height:100%;max-height:none}.credential-template-inspector{border-left:1px solid var(--gipyc-ge-border);align-self:stretch;min-height:100%;max-height:none}.credential-template-palette h3,.credential-template-inspector h3{margin:0 0 12px}.credential-template-palette-section{display:grid;gap:7px;margin-bottom:16px}.credential-template-palette-section strong{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--gipyc-ge-muted)}.credential-template-palette-section button{width:100%;text-align:left;border:1px solid var(--gipyc-ge-border);border-radius:9px;background:#fff;padding:9px 10px;cursor:pointer}.credential-template-palette-section button:hover{border-color:var(--gipyc-ge-navy)}.credential-template-palette>label{display:grid;gap:6px;margin:10px 0}.credential-template-palette>small{display:block;margin-top:10px;line-height:1.45;color:var(--gipyc-ge-muted)}.credential-template-stage{display:grid;place-items:center;padding:28px;background:#e9edf1;overflow:auto}.credential-template-canvas-shell{width:min(760px,100%);display:grid;gap:8px}.credential-template-canvas-shell>small{text-align:center;color:#5f6b76;font-size:12px}.credential-template-canvas-viewport{position:relative;width:100%;overflow:hidden}.credential-template-canvas{position:relative;background:#fff;box-shadow:0 12px 35px rgba(15,39,66,.15);overflow:hidden;touch-action:none;will-change:transform}.credential-template-guide{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;z-index:0}.credential-template-element{position:absolute;display:flex;align-items:center;overflow:hidden;border:calc(1px * var(--credential-editor-ui-scale,1)) dashed transparent;cursor:move;min-width:8px;min-height:8px}.credential-template-element:hover{border-color:rgba(15,39,66,.45)}.credential-template-element.is-selected{outline:calc(1px * var(--credential-editor-ui-scale,1)) solid #1967d2;outline-offset:calc(1px * var(--credential-editor-ui-scale,1));background:rgba(25,103,210,.04)}.credential-template-element>span{display:block;width:100%;line-height:1.12}.credential-template-element>img{width:100%;height:100%;pointer-events:none}.credential-template-element>svg{width:100%;height:100%;display:block;pointer-events:none}.credential-template-element>small{position:absolute;left:0;right:0;bottom:0;font-size:8px;text-align:center;background:rgba(255,255,255,.75)}.credential-template-image-placeholder{display:grid!important;place-items:center;width:100%;height:100%;padding:4px;border:1px dashed #a7b0ba;color:#6f7780;font-size:11px;text-align:center;background:#f6f8fa}.credential-template-resize{position:absolute;width:calc(20px * var(--credential-editor-ui-scale,1));height:calc(20px * var(--credential-editor-ui-scale,1));right:0;bottom:0;background:transparent;border:0;cursor:nwse-resize;opacity:0;pointer-events:none}.credential-template-resize::after{content:"";position:absolute;right:0;bottom:0;width:calc(11px * var(--credential-editor-ui-scale,1));height:calc(11px * var(--credential-editor-ui-scale,1));background:#1967d2;border:calc(1.25px * var(--credential-editor-ui-scale,1)) solid #fff;border-radius:calc(2px * var(--credential-editor-ui-scale,1));box-shadow:0 0 0 calc(.75px * var(--credential-editor-ui-scale,1)) rgba(25,103,210,.28)}.credential-template-element.is-selected .credential-template-resize{opacity:1;pointer-events:auto}.credential-template-properties__heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.credential-template-property-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.credential-template-property-grid label{display:grid;gap:5px}.credential-template-property-grid label.is-full,.credential-template-upload-block{grid-column:1/-1}.credential-template-property-grid label span,.credential-template-upload-block>span{font-size:12px;font-weight:700}.credential-template-property-grid input,.credential-template-property-grid select,.credential-template-property-grid textarea{width:100%;min-height:38px}.credential-template-property-grid textarea{min-height:82px;resize:vertical}.credential-template-property-grid small{font-size:11px;color:var(--gipyc-ge-muted)}.credential-template-upload-block{display:grid;gap:8px;padding:10px;border:1px solid var(--gipyc-ge-border);border-radius:9px;background:#fff}.credential-template-upload-block img{max-width:100%;max-height:110px;object-fit:contain;border:1px solid var(--gipyc-ge-border)}.credential-template-empty-properties{padding:16px;border:1px dashed var(--gipyc-ge-border);border-radius:10px;background:#fff;color:var(--gipyc-ge-muted)}.credential-template-footer{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:16px 24px;border-top:1px solid var(--gipyc-ge-border);background:#fff}.credential-template-footer>div{display:flex;gap:10px}.credential-template-footer span{font-size:12px;color:var(--gipyc-ge-muted)}
@media(max-width:1100px){.credential-template-layout{grid-template-columns:200px minmax(400px,1fr)}.credential-template-inspector{grid-column:1/-1;border-left:0;border-top:1px solid var(--gipyc-ge-border);max-height:none}.credential-template-palette{max-height:none}.credential-template-stage{min-height:520px}}
@media(max-width:760px){.credential-template-modal{padding:0}.credential-template-editor{width:100vw;min-height:100vh;border-radius:0}.credential-template-layout{grid-template-columns:1fr}.credential-template-palette{border-right:0;border-bottom:1px solid var(--gipyc-ge-border)}.credential-template-stage{min-height:380px;padding:16px}.credential-template-topbar{align-items:stretch}.credential-template-topbar label{min-width:calc(50% - 8px)}.credential-template-footer{align-items:stretch;flex-direction:column}.credential-template-footer>div{width:100%}.credential-template-footer button{flex:1}}

/* v0.34.24 · Biblioteca reusable de plantillas de credencial */
.credential-template-library-toggle{display:flex;align-items:center;gap:8px;font-weight:700;white-space:nowrap}.credential-template-library-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.credential-template-library-card{display:grid;gap:14px;padding:20px;border:1px solid var(--gipyc-ge-border);border-radius:16px;background:#fff}.credential-template-library-card.is-archived{opacity:.72}.credential-template-library-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.credential-template-library-card__head h3{margin:2px 0 0;font-size:20px}.credential-template-library-card>p{margin:0;color:var(--gipyc-ge-muted);line-height:1.5}.credential-template-library-card dl{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}.credential-template-library-card dl>div{padding:10px 12px;border:1px solid var(--gipyc-ge-border);border-radius:10px;background:#f8fafb}.credential-template-library-card dt{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--gipyc-ge-muted)}.credential-template-library-card dd{margin:3px 0 0;font-weight:700}.credential-template-library-card__legacy{display:block;color:var(--gipyc-ge-muted)}.credential-template-library-card__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:4px}.credential-template-description{min-width:280px;flex:1}.credential-template-topbar select{min-height:40px}.credential-generation-dialog{width:min(720px,94vw);max-width:720px}.credential-generation-dialog__body{display:grid;gap:18px;padding:22px 24px}.credential-generation-summary{display:flex;gap:10px;flex-wrap:wrap}.credential-generation-summary>span{display:grid;gap:2px;min-width:120px;padding:12px 14px;border:1px solid var(--gipyc-ge-border);border-radius:10px;background:#f8fafb}.credential-generation-summary strong{font-size:18px}.credential-generation-summary small{color:var(--gipyc-ge-muted)}.credential-generation-dialog__select{display:grid;gap:7px}.credential-generation-dialog__select>span{font-weight:800}.credential-generation-dialog__select select{width:100%;min-height:46px}.credential-generation-dialog__select small{color:var(--gipyc-ge-muted);line-height:1.45}.credential-generation-selected{display:grid;gap:4px;padding:14px 16px;border:1px solid var(--gipyc-ge-border);border-radius:12px;background:#f8fafb}.credential-generation-selected span{color:var(--gipyc-ge-muted)}
@media(max-width:760px){.credential-template-library-grid{grid-template-columns:1fr}.credential-template-library-card dl{grid-template-columns:1fr}.credential-template-library-card__head{flex-direction:column}.credential-template-description{min-width:100%}.credential-generation-summary>span{flex:1;min-width:100px}}

/* v0.34.25 · Editor tipográfico de credenciales */
.credential-template-layout{grid-template-columns:230px minmax(480px,1fr) 390px}
.credential-template-inspector{padding:18px 20px}
.credential-template-layer-section{grid-column:1/-1;display:grid;gap:12px;padding:14px;border:1px solid var(--gipyc-ge-border);border-radius:12px;background:#fff}
.credential-template-layer-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.credential-template-layer-actions .gipyc-ge-button{width:100%;min-height:40px;padding:8px 9px;font-size:12px;line-height:1.25}
.credential-template-layer-actions .gipyc-ge-button:disabled{opacity:.45;cursor:not-allowed}
.credential-template-type-section{display:grid;gap:12px;padding:14px;border:1px solid var(--gipyc-ge-border);border-radius:12px;background:#fff}
.credential-template-property-grid>.credential-template-type-section.is-full{grid-column:1/-1;width:100%;min-width:0}
.credential-template-type-section__title{display:grid;gap:3px;padding-bottom:10px;border-bottom:1px solid var(--gipyc-ge-border)}
.credential-template-type-section__title strong{font-size:14px;color:var(--gipyc-ge-navy)}
.credential-template-type-section__title small{font-size:11px;color:var(--gipyc-ge-muted);line-height:1.4}
.credential-template-type-section .credential-template-property-grid{gap:10px}
.credential-template-slider-row{display:grid;grid-template-columns:minmax(0,1fr) 86px;gap:8px;align-items:center}
.credential-template-slider-row input[type="range"]{min-height:32px;padding:0}
.credential-template-color-control>div{display:grid;grid-template-columns:52px minmax(0,1fr);gap:8px}
.credential-template-color-control input[type="color"]{padding:3px;min-height:40px}
.credential-template-element>[data-credential-text]{display:block;width:100%;max-width:100%;overflow:hidden}
@media(max-width:1100px){.credential-template-layout{grid-template-columns:200px minmax(400px,1fr)}.credential-template-inspector{grid-column:1/-1;max-height:none}}
@media(max-width:760px){.credential-template-slider-row{grid-template-columns:1fr 82px}}

/* v0.34.28 · edición de alumno visible y prioritaria en la cabecera */
.gipyc-ge-student-workspace__quick {
    align-items: center;
}
.gipyc-ge-student-workspace__edit {
    margin-right: 6px;
    white-space: nowrap;
}
@media (max-width: 760px) {
    .gipyc-ge-student-workspace__quick {
        width: 100%;
    }
    .gipyc-ge-student-workspace__edit {
        width: 100%;
        justify-content: center;
        margin-right: 0;
    }
}

/* v0.34.29 · alternancia Tarjetas / Lista en Comunidad escolar */
.gipyc-ge-group-card__body-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
}

.gipyc-ge-student-view-toggle {
    display: inline-flex;
    align-items: center;
    padding: 3px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: #fff;
}

.gipyc-ge-student-view-toggle button {
    min-height: 34px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 6px 11px;
    border: 0;
    border-radius: 7px;
    background: transparent;
    color: var(--gipyc-ge-muted);
    font: inherit;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}

.gipyc-ge-student-view-toggle button:hover,
.gipyc-ge-student-view-toggle button:focus-visible {
    color: var(--gipyc-ge-navy);
    background: var(--gipyc-ge-background);
    outline: none;
}

.gipyc-ge-student-view-toggle button.is-active {
    color: #fff;
    background: var(--gipyc-ge-navy);
}

.gipyc-ge-view-icon {
    width: 13px;
    height: 13px;
    display: inline-block;
    position: relative;
    flex: 0 0 13px;
}

.gipyc-ge-view-icon--cards {
    background:
        linear-gradient(currentColor,currentColor) 0 0/5px 5px no-repeat,
        linear-gradient(currentColor,currentColor) 8px 0/5px 5px no-repeat,
        linear-gradient(currentColor,currentColor) 0 8px/5px 5px no-repeat,
        linear-gradient(currentColor,currentColor) 8px 8px/5px 5px no-repeat;
}

.gipyc-ge-view-icon--list {
    background:
        linear-gradient(currentColor,currentColor) 0 1px/13px 2px no-repeat,
        linear-gradient(currentColor,currentColor) 0 6px/13px 2px no-repeat,
        linear-gradient(currentColor,currentColor) 0 11px/13px 2px no-repeat;
}

.gipyc-ge-student-list {
    overflow: hidden;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 14px;
    background: #fff;
}

.gipyc-ge-student-list__head,
.gipyc-ge-student-list-item > summary {
    display: grid;
    grid-template-columns: 58px minmax(250px,2fr) minmax(140px,.9fr) minmax(105px,.7fr) minmax(120px,.8fr) minmax(120px,.8fr) 30px;
    align-items: center;
    gap: 12px;
}

.gipyc-ge-student-list__head {
    min-height: 38px;
    padding: 7px 14px;
    border-bottom: 1px solid var(--gipyc-ge-border);
    background: #f5f7f9;
    color: var(--gipyc-ge-muted);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.gipyc-ge-student-list-item {
    margin: 0;
    border: 0;
    border-bottom: 1px solid var(--gipyc-ge-border);
    border-radius: 0;
    background: #fff;
}

.gipyc-ge-student-list-item:last-child {
    border-bottom: 0;
}

.gipyc-ge-student-list-item > summary {
    min-height: 68px;
    padding: 9px 14px;
    list-style: none;
    cursor: pointer;
    transition: background .15s ease;
}

.gipyc-ge-student-list-item > summary::-webkit-details-marker {
    display: none;
}

.gipyc-ge-student-list-item > summary:hover {
    background: #f8fafb;
}

.gipyc-ge-student-list-item[open] > summary {
    background: rgba(15,39,66,.035);
}

.gipyc-ge-student-list-item[open] > summary .gipyc-ge-card-chevron {
    transform: rotate(180deg);
}

.gipyc-ge-student-list-item__identity {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.gipyc-ge-student-list-item__identity > div {
    min-width: 0;
}

.gipyc-ge-student-list-item__identity strong,
.gipyc-ge-student-list-item__identity small,
.gipyc-ge-student-list-item__list-number strong,
.gipyc-ge-student-list-item__list-number span,
.gipyc-ge-student-list-item__number strong,
.gipyc-ge-student-list-item__number span {
    display: block;
}

.gipyc-ge-student-list-item__identity strong {
    overflow: hidden;
    color: var(--gipyc-ge-navy);
    font-size: 13px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-student-list-item__identity small,
.gipyc-ge-student-list-item__list-number span,
.gipyc-ge-student-list-item__number span {
    color: var(--gipyc-ge-muted);
    font-size: 10px;
}

.gipyc-ge-student-list-item__list-number strong {
    color: var(--gipyc-ge-navy);
    font-size: 15px;
    font-weight: 800;
}

.gipyc-ge-student-list-item__number strong {
    overflow: hidden;
    color: var(--gipyc-ge-blue);
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-student-list-item__list-number > span,
.gipyc-ge-student-list-item__number > span {
    display: none;
}

.gipyc-ge-student-list-item__body {
    padding: 18px;
    border-top: 1px solid var(--gipyc-ge-border);
    background: #f8fafb;
}

.gipyc-ge-student-list-item > summary > .gipyc-ge-card-chevron {
    justify-self: end;
}

@media (max-width: 1100px) {
    .gipyc-ge-student-list__head,
    .gipyc-ge-student-list-item > summary {
        grid-template-columns: 52px minmax(220px,1.7fr) minmax(125px,.8fr) minmax(100px,.65fr) minmax(115px,.75fr) 30px;
    }
    .gipyc-ge-student-list__head > span:nth-child(6),
    .gipyc-ge-student-list-item__credential {
        display: none;
    }
}

@media (max-width: 800px) {
    .gipyc-ge-group-card__body-head {
        align-items: flex-start;
        flex-direction: column;
    }
    .gipyc-ge-group-card__body-actions {
        width: 100%;
        justify-content: space-between;
    }
    .gipyc-ge-student-list__head {
        display: none;
    }
    .gipyc-ge-student-list-item > summary {
        grid-template-columns: minmax(0,1fr) auto;
        grid-template-areas:
            "identity chevron"
            "listnumber number"
            "status attendance"
            "credential credential";
        gap: 8px 12px;
        padding: 12px;
    }
    .gipyc-ge-student-list-item__identity { grid-area: identity; }
    .gipyc-ge-student-list-item__list-number { grid-area: listnumber; }
    .gipyc-ge-student-list-item__number { grid-area: number; }
    .gipyc-ge-student-list-item__status { grid-area: status; }
    .gipyc-ge-student-list-item__attendance { grid-area: attendance; justify-self: start; }
    .gipyc-ge-student-list-item__credential { grid-area: credential; display: block; }
    .gipyc-ge-student-list-item > summary > .gipyc-ge-card-chevron { grid-area: chevron; }
    .gipyc-ge-student-list-item__list-number > span, .gipyc-ge-student-list-item__number > span { display: block; }
}

@media (max-width: 520px) {
    .gipyc-ge-group-card__body-actions {
        align-items: stretch;
        flex-direction: column;
    }
    .gipyc-ge-student-view-toggle,
    .gipyc-ge-group-card__body-actions > .gipyc-ge-button {
        width: 100%;
    }
    .gipyc-ge-student-view-toggle button {
        flex: 1;
        justify-content: center;
    }
}

/* v0.34.31 · rebase y área segura del diseñador de credenciales */
.credential-template-topbar label small{font-size:11px;line-height:1.35;color:var(--gipyc-ge-muted);max-width:180px}
.credential-template-canvas{background:#f7e9ed}
.credential-template-canvas.is-guides-hidden{background:#fff}
.credential-template-trim-surface{position:absolute;background:#fff;pointer-events:none;z-index:0;box-shadow:0 0 0 1px rgba(15,39,66,.08)}
.credential-template-canvas.is-guides-hidden .credential-template-trim-surface{box-shadow:none}
.credential-template-guide[data-template-guide]{inset:auto;pointer-events:none;z-index:0}
.credential-template-cut-guide,.credential-template-safe-guide{position:absolute;pointer-events:none;z-index:10000}
.credential-template-cut-guide{border:1.5px solid rgba(182,45,70,.88);box-shadow:0 0 0 1px rgba(255,255,255,.75) inset}
.credential-template-safe-guide{border:1px dashed rgba(24,128,91,.92)}
.credential-template-geometry-help{grid-column:1/-1;display:grid;gap:3px;padding:9px 10px;border:1px solid var(--gipyc-ge-border);border-radius:9px;background:#fff}
.credential-template-geometry-help strong{font-size:12px}.credential-template-geometry-help small{font-size:11px;line-height:1.4;color:var(--gipyc-ge-muted)}
@media(max-width:520px){.credential-template-layer-actions{grid-template-columns:1fr}}

/* v0.34.36 — preparación de emisión de credenciales */
.credential-generation-toolbar{display:grid;gap:16px;margin:0 0 22px;padding:20px 22px;border:1px solid var(--gipyc-ge-border);border-radius:16px;background:#fff}.credential-generation-toolbar__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.credential-generation-toolbar__heading h2{margin:2px 0 5px;font-size:22px}.credential-generation-toolbar__heading p:not(.gipyc-ge-eyebrow){margin:0;color:var(--gipyc-ge-muted);line-height:1.5}.credential-generation-toolbar__grid{display:grid;grid-template-columns:minmax(300px,1.45fr) minmax(260px,1fr) auto;gap:14px;align-items:start}.credential-generation-toolbar__field{display:grid;gap:6px;min-width:0}.credential-generation-toolbar__field>span{font-weight:800;color:var(--gipyc-ge-text)}.credential-generation-toolbar__field select{width:100%;min-width:0;min-height:46px}.credential-generation-toolbar__field small{min-height:36px;color:var(--gipyc-ge-muted);line-height:1.4}.credential-generation-toolbar__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:27px}.credential-generation-toolbar__actions .gipyc-ge-button{white-space:nowrap}.credential-generation-toolbar__error{margin:0}
@media(max-width:1180px){.credential-generation-toolbar__grid{grid-template-columns:1fr 1fr}.credential-generation-toolbar__actions{grid-column:1/-1;padding-top:0}.credential-generation-toolbar__field small{min-height:0}}
@media(max-width:760px){.credential-generation-toolbar{padding:16px}.credential-generation-toolbar__heading{flex-direction:column}.credential-generation-toolbar__grid{grid-template-columns:1fr}.credential-generation-toolbar__actions{grid-column:auto}.credential-generation-toolbar__actions .gipyc-ge-button{width:100%}}


.credential-render-modal-backdrop{position:fixed;inset:0;z-index:10030;background:rgba(7,20,35,.58);backdrop-filter:blur(2px);display:grid;place-items:center;padding:24px;overflow:auto}.credential-render-modal{width:min(1100px,96vw);max-width:none;margin:0 auto;padding:0;overflow:hidden;background:#fff;border-radius:20px;box-shadow:0 28px 70px rgba(7,20,35,.28)}.credential-render-modal__header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding:22px 24px;border-bottom:1px solid var(--gipyc-ge-border);background:#fff}.credential-render-modal__header h2{margin:0 0 6px}.credential-render-modal__header p{margin:0;max-width:800px}.credential-render-modal__body{padding:20px 24px 24px;background:#f8fafb;display:grid;gap:16px}.credential-render-caption{margin:0;color:var(--gipyc-ge-muted)}.credential-render-preview{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}.credential-render-preview article{display:grid;gap:10px}.credential-render-preview header{display:flex;justify-content:center;font-size:14px;color:var(--gipyc-ge-muted)}.credential-render-preview figure{margin:0;padding:16px;border:1px solid var(--gipyc-ge-border);border-radius:18px;background:#fff;display:grid;place-items:center;min-height:300px}.credential-render-preview img{max-width:100%;max-height:68vh;display:block;box-shadow:0 18px 32px rgba(15,39,66,.16)}.credential-render-status .gipyc-ge-loading{margin:0}
@media(max-width:760px){.credential-render-modal-backdrop{padding:0}.credential-render-modal{width:100vw;min-height:100vh;border-radius:0}.credential-render-modal__header{flex-direction:column;align-items:stretch}.credential-render-modal__header button{align-self:flex-end}.credential-render-modal__body{padding:16px}.credential-render-preview figure{min-height:220px}}

.credential-render-modal__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.credential-render-modal__actions .gipyc-ge-button{white-space:nowrap}
@media(max-width:760px){.credential-render-modal__actions{width:100%;justify-content:stretch}.credential-render-modal__actions .gipyc-ge-button,.credential-render-modal__actions .gipyc-ge-link-button{flex:1}}


.gipyc-ge-credential-thumb{width:170px;max-width:170px;display:grid;gap:5px;justify-items:center}.gipyc-ge-credential-thumb__faces{width:100%;min-height:86px;display:flex;align-items:center;justify-content:center;gap:7px;padding:6px;border:1px solid var(--gipyc-ge-border);border-radius:12px;background:#f7f9fb}.gipyc-ge-credential-thumb figure{margin:0;display:grid;gap:2px;justify-items:center;min-width:0}.gipyc-ge-credential-thumb img{display:block;max-width:74px;max-height:74px;width:auto;height:auto;object-fit:contain;box-shadow:0 3px 8px rgba(15,39,66,.12);background:#fff}.gipyc-ge-credential-thumb figcaption,.gipyc-ge-credential-thumb>small{font-size:9px;line-height:1.1;color:var(--gipyc-ge-muted);font-weight:700}.gipyc-ge-credential-thumb.is-empty{width:120px;min-height:68px;place-items:center;border:1px dashed var(--gipyc-ge-border);border-radius:10px;background:#f8fafb;color:var(--gipyc-ge-muted);font-size:11px}.gipyc-ge-credential-table td:nth-child(2){vertical-align:middle}
@media(max-width:760px){.gipyc-ge-credential-thumb{width:154px;max-width:154px}.gipyc-ge-credential-thumb__faces{min-height:76px}.gipyc-ge-credential-thumb img{max-width:66px;max-height:64px}}

/* Jornadas de acceso — panel operativo v0.34.56 */
.gipyc-ge-journey-overview {
    display: flex;
    flex-direction: column;
    gap: 18px;
    padding: 22px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 10px 28px rgba(20,48,74,.055);
}

.gipyc-ge-journey-overview > header,
.gipyc-ge-journey-overview > footer,
.gipyc-ge-journey-detail > header,
.gipyc-ge-journey-detail > footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}

.gipyc-ge-journey-overview h2,
.gipyc-ge-journey-overview p,
.gipyc-ge-journey-detail h2,
.gipyc-ge-journey-detail p {
    margin: 0;
}

.gipyc-ge-journey-overview header p,
.gipyc-ge-journey-detail header p {
    margin-top: 5px;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-journey-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    width: max-content;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    background: #eef2f5;
    color: #526779;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.gipyc-ge-journey-status i {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: currentColor;
}

.gipyc-ge-journey-status.is-open {
    background: rgba(31,157,104,.12);
    color: #14724d;
}

.gipyc-ge-journey-status.is-closed {
    background: #eef2f5;
    color: #526779;
}

.gipyc-ge-journey-status.is-paused {
    background: #fff3dc;
    color: #9a6208;
}

.gipyc-ge-journey-status.is-idle,
.gipyc-ge-journey-status.is-neutral {
    background: #eef3f7;
    color: #607487;
}

.gipyc-ge-journey-facts {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.gipyc-ge-journey-overview.is-open .gipyc-ge-journey-facts,
.gipyc-ge-journey-detail .gipyc-ge-journey-facts {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gipyc-ge-journey-facts article {
    min-width: 0;
    padding: 13px 14px;
    border: 1px solid #e0e7ed;
    border-radius: 12px;
    background: #f8fafc;
}

.gipyc-ge-journey-facts small,
.gipyc-ge-journey-facts strong {
    display: block;
}

.gipyc-ge-journey-facts small {
    margin-bottom: 5px;
    color: var(--gipyc-ge-muted);
    font-size: 11px;
    font-weight: 750;
    text-transform: uppercase;
    letter-spacing: .035em;
}

.gipyc-ge-journey-facts strong {
    overflow-wrap: anywhere;
    color: var(--gipyc-ge-navy);
    font-size: 14px;
}

.gipyc-ge-journey-help {
    display: grid;
    gap: 2px;
    max-width: 480px;
}

.gipyc-ge-journey-help span {
    color: var(--gipyc-ge-muted);
    font-size: 13px;
}

.gipyc-ge-journey-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.gipyc-ge-journey-steps article {
    display: grid;
    grid-template-columns: 34px 1fr;
    align-items: center;
    gap: 10px;
    min-width: 0;
    padding: 13px 14px;
    border: 1px solid #e0e7ed;
    border-radius: 12px;
    background: #fff;
}

.gipyc-ge-journey-steps article > span {
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #eef3f7;
    color: #536a7d;
    font-weight: 850;
}

.gipyc-ge-journey-steps article.is-current {
    border-color: rgba(26,92,137,.35);
    background: #f5f9fc;
}

.gipyc-ge-journey-steps article.is-current > span {
    background: var(--gipyc-ge-blue);
    color: #fff;
}

.gipyc-ge-journey-steps article.is-done > span {
    background: var(--gipyc-ge-green);
    color: #fff;
}

.gipyc-ge-journey-steps strong,
.gipyc-ge-journey-steps small {
    display: block;
}

.gipyc-ge-journey-steps small {
    margin-top: 2px;
    color: var(--gipyc-ge-muted);
    line-height: 1.35;
}

.gipyc-ge-access-workspace {
    overflow: hidden;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 18px;
    background: #f7fafc;
}

.gipyc-ge-access-workspace__heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 18px 20px;
    border-bottom: 1px solid var(--gipyc-ge-border);
    background: #fff;
}

.gipyc-ge-access-workspace__heading h2,
.gipyc-ge-access-workspace__heading p {
    margin: 0;
}

.gipyc-ge-access-workspace__heading > span {
    padding: 6px 10px;
    border-radius: 999px;
    background: #eef3f7;
    color: #51697e;
    font-size: 12px;
    font-weight: 800;
}

.gipyc-ge-access-workspace .gipyc-ge-access-console__grid {
    padding: 18px;
}

.gipyc-ge-journey-history > .gipyc-ge-card__heading {
    align-items: flex-start;
}

.gipyc-ge-journey-history > .gipyc-ge-card__heading p {
    margin: 4px 0 0;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-journey-filter {
    align-items: end;
}

.gipyc-ge-journey-history tr.is-selected td {
    background: #f4f8fb;
}

.gipyc-ge-journey-detail {
    display: flex;
    flex-direction: column;
    gap: 18px;
    margin-top: 16px;
    padding: 22px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 10px 28px rgba(20,48,74,.055);
}

.gipyc-ge-journey-note {
    display: grid;
    gap: 3px;
    padding: 12px 14px;
    border-left: 3px solid var(--gipyc-ge-blue);
    border-radius: 8px;
    background: #f4f8fb;
}

.gipyc-ge-journey-note span {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-journey-detail__actions {
    justify-content: flex-end !important;
}

@media (max-width: 1080px) {
    .gipyc-ge-journey-facts,
    .gipyc-ge-journey-overview.is-open .gipyc-ge-journey-facts,
    .gipyc-ge-journey-detail .gipyc-ge-journey-facts {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .gipyc-ge-journey-overview > header,
    .gipyc-ge-journey-overview > footer,
    .gipyc-ge-journey-detail > header,
    .gipyc-ge-journey-detail > footer,
    .gipyc-ge-access-workspace__heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .gipyc-ge-journey-overview > footer .gipyc-ge-header-actions,
    .gipyc-ge-journey-detail > footer .gipyc-ge-header-actions {
        width: 100%;
    }

    .gipyc-ge-journey-overview > footer .gipyc-ge-button,
    .gipyc-ge-journey-overview > footer a.gipyc-ge-button,
    .gipyc-ge-journey-detail__actions .gipyc-ge-button {
        width: 100%;
    }

    .gipyc-ge-journey-steps {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-journey-facts,
    .gipyc-ge-journey-overview.is-open .gipyc-ge-journey-facts,
    .gipyc-ge-journey-detail .gipyc-ge-journey-facts {
        grid-template-columns: 1fr;
    }
}

/* v0.34.64 · selección operativa de credenciales */
.gipyc-ge-bulk-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    font-weight: 700;
    color: var(--gipyc-ge-ink, #17324d);
    cursor: pointer;
}
.gipyc-ge-bulk-check input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin: 0;
    flex: 0 0 auto;
}
.gipyc-ge-credential-bulkbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    padding: 14px 16px;
    margin: 14px 0;
    border: 1px solid #d7e0e8;
    border-radius: 14px;
    background: #f7f9fb;
}
.gipyc-ge-credential-table th:first-child,
.gipyc-ge-credential-table td:first-child {
    width: 48px;
    text-align: center;
}
@media (max-width: 780px) {
    .gipyc-ge-credential-bulkbar {
        align-items: stretch;
        flex-direction: column;
    }
}


/* v0.34.65 · barra operativa separada y selección visible en contratante */
.gipyc-ge-issued-actionsbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    padding: 14px 16px;
    margin: 4px 0 18px;
    border: 1px solid #d7e0e8;
    border-radius: 14px;
    background: #f7f9fb;
}
.gipyc-ge-issued-actionsbar__primary,
.gipyc-ge-issued-actionsbar__operations {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.gipyc-ge-issued-actionsbar__operations {
    justify-content: flex-end;
    flex: 1 1 620px;
}
.gipyc-ge-issued-actionsbar .gipyc-ge-bulk-check {
    line-height: 1.08;
}
.gipyc-ge-credential-bulkbar__hint {
    max-width: 560px;
    font-size: 13px;
    line-height: 1.35;
    color: var(--gipyc-ge-muted, #66758a);
}
.gipyc-ge-credential-table input[type="checkbox"]:disabled,
.gipyc-ge-credential-bulkbar input[type="checkbox"]:disabled {
    opacity: .38;
    cursor: not-allowed;
}
@media (max-width: 980px) {
    .gipyc-ge-issued-actionsbar {
        align-items: stretch;
        flex-direction: column;
    }
    .gipyc-ge-issued-actionsbar__operations {
        justify-content: flex-start;
        flex-basis: auto;
    }
}

/* v0.34.71 · opciones técnicas fuera de la operación cotidiana */
.gipyc-ge-advanced-fields {
    grid-column: 1 / -1;
    border: 1px solid #d7e0e8;
    border-radius: 12px;
    background: #f8fafc;
    padding: 0;
    overflow: hidden;
}
.gipyc-ge-advanced-fields > summary {
    cursor: pointer;
    list-style: none;
    padding: 12px 14px;
    font-weight: 700;
    color: var(--gipyc-ge-primary, #0f2742);
}
.gipyc-ge-advanced-fields > summary::-webkit-details-marker { display: none; }
.gipyc-ge-advanced-fields > summary::after {
    content: '⌄';
    float: right;
    transition: transform .18s ease;
}
.gipyc-ge-advanced-fields[open] > summary::after { transform: rotate(180deg); }
.gipyc-ge-advanced-fields > p {
    margin: -4px 14px 8px;
    color: var(--gipyc-ge-muted, #66758a);
    font-size: 13px;
}
.gipyc-ge-advanced-fields__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    padding: 0 14px 14px;
}
.gipyc-ge-advanced-fields__grid .is-full { grid-column: 1 / -1; }
@media (max-width: 720px) {
    .gipyc-ge-advanced-fields__grid { grid-template-columns: 1fr; }
}


/* v0.34.77 · expediente integral: datos personales y gestión de familia desde Comunidad escolar */
.gipyc-ge-subsection-title--first { margin-top: 0; }
.gipyc-ge-data-pair.is-wide { grid-column: span 2; }
.gipyc-ge-family-card-grid { align-items: stretch; }
.gipyc-ge-family-card-grid article.gipyc-ge-family-card { align-content: start; background: #fff; }
.gipyc-ge-family-card__content { min-width: 0; display: grid; gap: 10px; }
.gipyc-ge-family-card__heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.gipyc-ge-family-card__heading strong,
.gipyc-ge-family-card__heading small { display: block; }
.gipyc-ge-family-card__heading small { margin-top: 2px; color: var(--gipyc-ge-muted); font-size: 12px; }
.gipyc-ge-family-card__contact { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 5px 12px; padding: 10px 0; border-top: 1px solid var(--gipyc-ge-border); border-bottom: 1px solid var(--gipyc-ge-border); color: var(--gipyc-ge-muted); font-size: 12px; }
.gipyc-ge-family-card__contact span { min-width: 0; overflow-wrap: anywhere; }
.gipyc-ge-family-card__contact b { color: var(--gipyc-ge-text); font-weight: 650; }
.gipyc-ge-family-card__meta { display: flex; flex-wrap: wrap; gap: 6px 12px; color: var(--gipyc-ge-muted); font-size: 11px; }
.gipyc-ge-family-card__notes { margin: 0 !important; padding: 9px 10px; border-radius: 9px; background: var(--gipyc-ge-background); color: var(--gipyc-ge-text) !important; line-height: 1.45; }
.gipyc-ge-family-card__actions { display: flex; flex-wrap: wrap; gap: 8px 14px; padding-top: 3px; }
.gipyc-ge-family-card__actions .gipyc-ge-link-button { padding: 0; font-size: 12px; }
@media (max-width: 900px) {
    .gipyc-ge-data-pair.is-wide { grid-column: span 2; }
}
@media (max-width: 680px) {
    .gipyc-ge-data-pair.is-wide { grid-column: auto; }
    .gipyc-ge-family-card__heading { flex-direction: column; }
    .gipyc-ge-family-card__contact { grid-template-columns: 1fr; }
}

/* v0.34.78 · perfil responsivo global para tablet (768–1180 px)
 * Mantiene áreas táctiles cómodas, libera el ancho ocupado por el sidebar y
 * compacta densidad visual sin alterar el perfil de escritorio ni móvil.
 */
@media (min-width: 768px) and (max-width: 1180px) {
    .gipyc-ge-layout:not(.is-wp-admin) {
        display: block;
    }

    .gipyc-ge-layout:not(.is-wp-admin) .gipyc-ge-sidebar {
        position: fixed;
        z-index: 30;
        top: 0;
        bottom: 0;
        left: 0;
        width: min(286px, 82vw);
        min-height: 100vh;
        transform: translateX(-102%);
        transition: transform .2s ease;
        box-shadow: 18px 0 44px rgba(7,20,35,.16);
    }

    .gipyc-ge-layout:not(.is-wp-admin).is-menu-open .gipyc-ge-sidebar {
        transform: translateX(0);
    }

    .gipyc-ge-layout:not(.is-wp-admin).is-menu-open .gipyc-ge-overlay {
        position: fixed;
        z-index: 20;
        inset: 0;
        display: block;
        border: 0;
        background: rgba(7,20,35,.48);
    }

    .gipyc-ge-layout:not(.is-wp-admin) .gipyc-ge-menu-button {
        display: grid;
        place-items: center;
    }

    .gipyc-ge-topbar {
        min-height: 64px;
        padding: 0 20px;
        gap: 14px;
    }

    .gipyc-ge-user__avatar {
        width: 36px;
        height: 36px;
    }

    .gipyc-ge-content {
        padding: 20px;
    }

    .gipyc-ge-page-header {
        margin-bottom: 20px;
        gap: 16px;
    }

    .gipyc-ge-page-header h1 {
        margin-top: 2px;
        font-size: clamp(26px, 3.1vw, 34px);
    }

    .gipyc-ge-page-header p {
        max-width: 680px;
    }

    .gipyc-ge-metrics {
        margin-bottom: 18px;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 12px;
    }

    .gipyc-ge-metrics--attendance {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }

    .gipyc-ge-metrics--academic {
        grid-template-columns: repeat(6, minmax(0, 1fr));
        gap: 8px;
    }

    .gipyc-ge-metrics--structure {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .gipyc-ge-metric {
        padding: 15px 14px;
        border-radius: 14px;
    }

    .gipyc-ge-metric strong {
        margin: 4px 0;
        font-size: 22px;
    }

    .gipyc-ge-metrics--academic .gipyc-ge-metric {
        padding: 12px 9px;
    }

    .gipyc-ge-metrics--academic .gipyc-ge-metric span {
        min-height: 36px;
        font-size: 12px;
    }

    .gipyc-ge-metrics--academic .gipyc-ge-metric strong {
        font-size: 21px;
    }

    .gipyc-ge-card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 14px;
    }

    .gipyc-ge-card {
        padding: 17px;
        border-radius: 14px;
    }

    .gipyc-ge-card--wide {
        grid-column: 1 / -1;
    }

    .gipyc-ge-card__heading {
        margin-bottom: 14px;
        gap: 10px;
    }

    .gipyc-ge-card h2 {
        font-size: 18px;
    }

    .gipyc-ge-button {
        min-height: 44px;
        padding: 10px 14px;
    }

    .gipyc-ge-tabs {
        gap: 3px;
        padding: 4px;
    }

    .gipyc-ge-tabs .gipyc-ge-tab {
        min-height: 40px;
        padding: 8px 11px;
    }

    .gipyc-ge-toolbar {
        padding: 14px 16px;
        gap: 10px;
    }

    .gipyc-ge-search input,
    .gipyc-ge-filter-bar input,
    .gipyc-ge-filter-bar select,
    .gipyc-ge-field input,
    .gipyc-ge-field select {
        min-height: 44px;
    }

    .gipyc-ge-data-table th,
    .gipyc-ge-data-table td {
        padding: 11px 13px;
    }

    .gipyc-ge-data-table {
        font-size: 13px;
    }

    .gipyc-ge-drawer {
        width: min(620px, 88vw);
    }

    .gipyc-ge-drawer--wide {
        width: min(900px, 94vw);
    }

    .gipyc-ge-drawer__header {
        min-height: 72px;
        padding: 14px 18px;
    }

    .gipyc-ge-drawer__header h2 {
        font-size: 21px;
    }

    .gipyc-ge-form-grid {
        padding: 18px;
        gap: 14px;
    }

    .gipyc-ge-drawer__footer {
        padding: 14px 18px;
    }

    .gipyc-ge-filter-bar {
        grid-template-columns: minmax(190px, 1.4fr) minmax(145px, .8fr) minmax(160px, 1fr) auto auto;
        gap: 9px;
        margin-bottom: 14px;
    }

    .gipyc-ge-access-console,
    .gipyc-ge-access-console__grid {
        gap: 14px;
    }

    .gipyc-ge-access-console__grid {
        grid-template-columns: minmax(0, 1.45fr) minmax(270px, .75fr);
    }

    .gipyc-ge-access-console__header,
    .gipyc-ge-access-start,
    .gipyc-ge-access-scanner {
        padding: 16px;
    }

    .gipyc-ge-access-result {
        gap: 16px;
        padding: 17px;
    }

    .gipyc-ge-attendance-groups {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
    }

    .gipyc-ge-attendance-group {
        gap: 12px;
        padding: 13px;
    }

    .gipyc-ge-attendance-group__institution {
        font-size: 18px;
    }

    .gipyc-ge-attendance-group__context,
    .gipyc-ge-attendance-group__name {
        font-size: 16px;
    }

    .gipyc-ge-attendance-group__records b {
        font-size: 21px;
    }

    .gipyc-ge-report-grid {
        gap: 14px;
    }

    .gipyc-ge-report-filters,
    .gipyc-ge-report-filters--builder {
        gap: 9px;
    }

    .gipyc-ge-report-kpis p {
        padding: 11px;
    }

    .gipyc-ge-report-kpis strong {
        font-size: 21px;
    }

    .gipyc-ge-workspace-hero {
        gap: 18px;
        margin-bottom: 16px;
        padding: 20px 22px;
        border-radius: 18px;
    }

    .gipyc-ge-workspace-hero__identity {
        gap: 13px;
    }

    .gipyc-ge-workspace-hero__identity h1 {
        font-size: clamp(24px, 3vw, 32px);
    }

    .gipyc-ge-workspace-hero__mark {
        width: 58px;
        height: 58px;
        flex-basis: 58px;
        border-radius: 15px;
        font-size: 24px;
    }

    .gipyc-ge-workspace-hero__meta,
    .gipyc-ge-workspace-hero__facts {
        gap: 7px;
    }

    .gipyc-ge-workspace-hero__meta > span,
    .gipyc-ge-workspace-hero__quick {
        padding: 7px 10px;
        font-size: 12px;
    }

    .gipyc-ge-workspace-hero__facts > span {
        min-width: 78px;
        padding: 9px 10px;
    }

    .gipyc-ge-workspace-hero__facts strong {
        font-size: 21px;
    }

    .gipyc-ge-kpi-strip {
        gap: 9px;
        margin-bottom: 14px;
    }

    .gipyc-ge-kpi-strip article {
        padding: 13px;
        border-radius: 13px;
    }

    .gipyc-ge-kpi-strip strong {
        font-size: 25px;
    }

    .gipyc-ge-dashboard-grid {
        gap: 12px;
        margin-bottom: 14px;
    }

    .gipyc-ge-panel {
        padding: 16px;
        border-radius: 15px;
    }

    .gipyc-ge-attention-list {
        gap: 7px;
        margin-top: 12px;
    }

    .gipyc-ge-space-grid,
    .gipyc-ge-tenant-space-grid {
        gap: 12px;
    }

    .gipyc-ge-space-card,
    .gipyc-ge-tenant-space-card {
        padding: 17px;
    }

    .gipyc-ge-community-toolbar {
        gap: 10px;
        padding: 12px 13px;
    }

    .gipyc-ge-person-grid {
        gap: 10px;
    }

    .gipyc-ge-group-card > summary,
    .gipyc-ge-person-card > summary {
        padding-top: 14px;
        padding-bottom: 14px;
    }

    .gipyc-ge-group-card__body,
    .gipyc-ge-person-card__body {
        padding: 15px;
    }

    .gipyc-ge-student-workspace__hero {
        gap: 12px;
        padding: 15px 17px;
    }

    .gipyc-ge-student-attention {
        padding: 8px 17px;
    }

    .gipyc-ge-student-tabs {
        padding: 0 12px;
    }

    .gipyc-ge-student-tabs button {
        padding: 10px 9px 8px;
    }

    .gipyc-ge-student-tab-panel {
        padding: 16px;
    }

    .gipyc-ge-student-summary-grid,
    .gipyc-ge-student-summary-grid--three {
        gap: 8px;
    }

    .gipyc-ge-student-summary-grid article {
        padding: 12px;
    }

    .gipyc-ge-data-grid,
    .gipyc-ge-family-card-grid {
        gap: 8px;
    }

    .gipyc-ge-data-pair,
    .gipyc-ge-family-card-grid article {
        padding: 11px;
    }

    .gipyc-ge-two-columns {
        gap: 12px;
    }

    .gipyc-ge-issued-actionsbar {
        gap: 10px;
        padding: 11px 13px;
        margin-bottom: 14px;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-topbar {
        min-height: 62px;
        padding: 0 18px;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-content {
        padding: 18px;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-card {
        padding: 17px;
    }

    .gipyc-ge-layout.is-wp-admin .gipyc-ge-table th,
    .gipyc-ge-layout.is-wp-admin .gipyc-ge-table td {
        padding: 11px 12px;
    }
}

/* Tablet en retrato: conservar densidad sin forzar columnas demasiado angostas. */
@media (min-width: 768px) and (max-width: 900px) {
    .gipyc-ge-page-header {
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .gipyc-ge-metrics {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .gipyc-ge-metrics--attendance,
    .gipyc-ge-metrics--academic {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .gipyc-ge-metrics--structure {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .gipyc-ge-filter-bar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .gipyc-ge-filter-bar .gipyc-ge-button {
        width: 100%;
    }

    .gipyc-ge-access-console__grid,
    .gipyc-ge-dashboard-grid,
    .gipyc-ge-report-grid {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-workspace-hero {
        align-items: flex-start;
        flex-direction: column;
    }

    .gipyc-ge-workspace-hero__meta,
    .gipyc-ge-workspace-hero__facts {
        width: 100%;
        justify-content: flex-start;
    }

    .gipyc-ge-kpi-strip {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .gipyc-ge-community-toolbar {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-person-grid,
    .gipyc-ge-family-card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .gipyc-ge-student-summary-grid,
    .gipyc-ge-student-summary-grid--three,
    .gipyc-ge-data-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .gipyc-ge-student-workspace__hero {
        align-items: flex-start;
        flex-direction: column;
    }

    .gipyc-ge-student-workspace__quick {
        justify-content: flex-start;
    }

    .gipyc-ge-report-filters,
    .gipyc-ge-report-filters--builder {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}


/* v0.34.79 · tarjetas de asistencia compactas en tablet y móvil
 * La versión de escritorio conserva su composición original. En pantallas
 * táctiles el resumen deja de apilar cinco estados en vertical y recupera
 * altura útil para la lista diaria.
 */
@media (min-width: 768px) and (max-width: 1180px) {
    .gipyc-ge-attendance-groups {
        gap: 9px;
        margin-bottom: 14px;
    }

    .gipyc-ge-attendance-group {
        grid-template-columns: 1fr;
        align-items: start;
        min-height: 0;
        gap: 8px;
        padding: 10px 12px;
        border-radius: 12px;
    }

    .gipyc-ge-attendance-group__identity {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "institution records"
            "compact records";
        align-items: center;
        gap: 2px 12px;
        width: 100%;
    }

    .gipyc-ge-attendance-group__institution {
        grid-area: institution;
        min-width: 0;
        font-size: 14px;
        line-height: 1.15;
    }

    .gipyc-ge-attendance-group__context,
    .gipyc-ge-attendance-group__name {
        display: none;
    }

    .gipyc-ge-attendance-group__compact-context {
        grid-area: compact;
        display: block;
        min-width: 0;
        overflow: hidden;
        color: #0F2742;
        font-size: 13px;
        font-weight: 700;
        line-height: 1.2;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .gipyc-ge-attendance-group__records {
        grid-area: records;
        align-self: center;
        margin: 0;
        padding: 0;
        gap: 4px;
        white-space: nowrap;
    }

    .gipyc-ge-attendance-group__records b {
        font-size: 18px;
        line-height: 1;
    }

    .gipyc-ge-attendance-group__records > span {
        font-size: 10px;
    }

    .gipyc-ge-attendance-group__summary {
        grid-template-columns: repeat(5, minmax(0, 1fr));
        align-content: initial;
        gap: 4px;
        padding: 7px 0 0;
        border-top: 1px solid #e5e9ed;
        border-left: 0;
    }

    .gipyc-ge-attendance-group__summary > span {
        min-width: 0;
        min-height: 0;
        gap: 3px;
        padding: 0 3px;
    }

    .gipyc-ge-attendance-group__summary small {
        min-width: 0;
        overflow: hidden;
        font-size: 10px;
        line-height: 1.1;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .gipyc-ge-attendance-group__summary b {
        flex: 0 0 auto;
        font-size: 14px;
        line-height: 1;
    }
}

@media (max-width: 767px) {
    .gipyc-ge-attendance-groups {
        grid-template-columns: 1fr;
        gap: 8px;
        margin-bottom: 14px;
    }

    .gipyc-ge-attendance-group {
        grid-template-columns: 1fr;
        align-items: start;
        min-height: 0;
        gap: 8px;
        padding: 10px;
        border-radius: 12px;
    }

    .gipyc-ge-attendance-group__identity {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "institution records"
            "compact records";
        align-items: center;
        gap: 2px 10px;
        width: 100%;
    }

    .gipyc-ge-attendance-group__institution {
        grid-area: institution;
        min-width: 0;
        overflow: hidden;
        font-size: 13px;
        line-height: 1.15;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .gipyc-ge-attendance-group__context,
    .gipyc-ge-attendance-group__name {
        display: none;
    }

    .gipyc-ge-attendance-group__compact-context {
        grid-area: compact;
        display: block;
        min-width: 0;
        overflow: hidden;
        color: #0F2742;
        font-size: 12px;
        font-weight: 700;
        line-height: 1.2;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .gipyc-ge-attendance-group__records {
        grid-area: records;
        align-self: center;
        margin: 0;
        padding: 0;
        gap: 4px;
        white-space: nowrap;
    }

    .gipyc-ge-attendance-group__records b {
        font-size: 17px;
        line-height: 1;
    }

    .gipyc-ge-attendance-group__records > span {
        font-size: 9px;
    }

    .gipyc-ge-attendance-group__summary {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        align-content: initial;
        gap: 5px 8px;
        padding: 7px 0 0;
        border-top: 1px solid #e5e9ed;
        border-left: 0;
    }

    .gipyc-ge-attendance-group__summary > span {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: baseline;
        min-width: 0;
        min-height: 0;
        gap: 3px;
        padding: 0;
    }

    .gipyc-ge-attendance-group__summary small {
        min-width: 0;
        overflow: hidden;
        font-size: 10px;
        line-height: 1.1;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .gipyc-ge-attendance-group__summary b {
        font-size: 13px;
        line-height: 1;
    }
}

/* v0.34.80 · scroll independiente de la botonera lateral en tablet y móvil
 * Mantiene cabecera y pie visibles y permite desplazar sólo la navegación
 * dentro de la altura dinámica real del viewport.
 */
@media (max-width: 1180px) {
    .gipyc-ge-layout:not(.is-wp-admin) .gipyc-ge-sidebar {
        bottom: auto;
        height: 100vh;
        height: 100dvh;
        min-height: 0;
        max-height: 100vh;
        max-height: 100dvh;
        overflow: hidden;
    }

    .gipyc-ge-layout:not(.is-wp-admin) .gipyc-ge-brand,
    .gipyc-ge-layout:not(.is-wp-admin) .gipyc-ge-sidebar__footer {
        flex: 0 0 auto;
    }

    .gipyc-ge-layout:not(.is-wp-admin) .gipyc-ge-nav {
        flex: 1 1 auto;
        min-height: 0;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
        scrollbar-gutter: stable;
    }
}


/* Access stations: full-width stack with a collapsed editor. */
.gipyc-ge-access-stations-stack {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
}

.gipyc-ge-station-editor {
    padding: 0;
    overflow: hidden;
}

.gipyc-ge-station-editor__summary {
    min-height: 72px;
    padding: 0 24px;
    display: flex;
    align-items: center;
    gap: 14px;
    cursor: pointer;
    list-style: none;
    user-select: none;
}

.gipyc-ge-station-editor__summary::-webkit-details-marker {
    display: none;
}

.gipyc-ge-station-editor__summary h2 {
    flex: 1 1 auto;
}

.gipyc-ge-station-editor__status {
    flex: 0 0 auto;
}

.gipyc-ge-station-editor__summary::after {
    content: '⌄';
    flex: 0 0 auto;
    color: var(--gipyc-ge-navy);
    font-size: 18px;
    line-height: 1;
    transform: rotate(0deg);
    transition: transform .2s ease;
}

.gipyc-ge-station-editor[open] .gipyc-ge-station-editor__summary::after {
    transform: rotate(180deg);
}

.gipyc-ge-station-editor__body {
    padding: 0 24px 24px;
    border-top: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-station-editor__body .gipyc-ge-form-grid {
    padding-top: 20px;
}

@media (max-width: 1180px) {
    .gipyc-ge-access-stations-stack {
        gap: 14px;
    }

    .gipyc-ge-station-editor__summary {
        min-height: 62px;
        padding: 0 17px;
    }

    .gipyc-ge-station-editor__body {
        padding: 0 17px 17px;
    }

    .gipyc-ge-station-editor__body .gipyc-ge-form-grid {
        padding-top: 16px;
    }
}

@media (max-width: 767px) {
    .gipyc-ge-station-editor__summary {
        min-height: 58px;
        padding: 0 14px;
        gap: 10px;
    }

    .gipyc-ge-station-editor__body {
        padding: 0 14px 14px;
    }
}


/* v0.34.82 · Asistencia homologada con la interfaz actual
 * Reemplaza visualmente la capa heredada del módulo sin alterar su lógica.
 */
.gipyc-ge-attendance-page-header {
    margin-bottom: 20px;
}

.gipyc-ge-attendance-page-header > div > small {
    display: block;
    max-width: 760px;
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-attendance-toolbar {
    padding: 14px 16px;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
}

.gipyc-ge-attendance-toolbar form {
    align-items: end;
    gap: 8px;
    flex: 0 0 auto;
}

.gipyc-ge-attendance-toolbar label {
    gap: 4px;
    color: var(--gipyc-ge-navy);
    font-size: 12px;
    font-weight: 700;
}

.gipyc-ge-attendance-toolbar input {
    min-height: 40px;
    padding: 7px 10px;
    border-color: var(--gipyc-ge-border);
    border-radius: 9px;
    color: var(--gipyc-ge-text);
}

.gipyc-ge-attendance-toolbar .gipyc-ge-button {
    min-height: 40px;
    padding-top: 8px;
    padding-bottom: 8px;
}

.gipyc-ge-attendance-toolbar .gipyc-ge-tabs {
    margin: 0 0 0 auto;
    box-shadow: none;
}

.gipyc-ge-attendance-groups {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}

.gipyc-ge-attendance-group {
    min-width: 0;
    min-height: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
        "identity records"
        "summary summary";
    align-items: start;
    gap: 10px 12px;
    padding: 13px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 16px;
    background: var(--gipyc-ge-white);
    box-shadow: var(--gipyc-ge-shadow);
    color: var(--gipyc-ge-text);
    text-align: left;
    cursor: pointer;
    font: inherit;
    transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.gipyc-ge-attendance-group:hover {
    transform: translateY(-1px);
    border-color: rgba(24, 59, 91, .34);
    box-shadow: 0 12px 28px rgba(15, 39, 66, .10);
}

.gipyc-ge-attendance-group:focus-visible {
    outline: 3px solid rgba(31, 157, 104, .22);
    outline-offset: 2px;
}

.gipyc-ge-attendance-group.is-selected {
    transform: none;
    border-color: var(--gipyc-ge-blue);
    box-shadow: inset 3px 0 0 var(--gipyc-ge-green), 0 10px 24px rgba(15, 39, 66, .09);
}

.gipyc-ge-attendance-group__identity {
    grid-area: identity;
    min-width: 0;
    display: grid;
    gap: 2px;
    align-content: start;
}

.gipyc-ge-attendance-group__institution {
    min-width: 0;
    overflow: hidden;
    color: var(--gipyc-ge-navy);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-attendance-group__context,
.gipyc-ge-attendance-group__name {
    display: none;
}

.gipyc-ge-attendance-group__compact-context {
    display: block;
    min-width: 0;
    overflow: hidden;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-attendance-group__records {
    grid-area: records;
    align-self: start;
    display: grid;
    justify-items: end;
    gap: 1px;
    margin: 0;
    padding: 0;
    white-space: nowrap;
}

.gipyc-ge-attendance-group__records b {
    color: var(--gipyc-ge-navy);
    font-size: 20px;
    font-weight: 750;
    line-height: 1.05;
}

.gipyc-ge-attendance-group__records > span {
    color: var(--gipyc-ge-muted);
    font-size: 9px;
    font-weight: 600;
    line-height: 1.15;
}

.gipyc-ge-attendance-group__summary {
    grid-area: summary;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    align-content: initial;
    gap: 4px;
    min-width: 0;
    padding: 0;
    border: 0;
}

.gipyc-ge-attendance-group__summary > span {
    min-width: 0;
    min-height: 0;
    display: grid;
    justify-items: center;
    align-content: center;
    gap: 1px;
    padding: 5px 2px;
    border-radius: 8px;
    background: var(--gipyc-ge-background);
}

.gipyc-ge-attendance-group__summary small {
    max-width: 100%;
    overflow: hidden;
    color: var(--gipyc-ge-muted);
    font-size: 9px;
    font-weight: 600;
    line-height: 1.1;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-attendance-group__summary b {
    color: var(--gipyc-ge-navy);
    font-size: 14px;
    font-weight: 750;
    line-height: 1.1;
}

.gipyc-ge-attendance-empty {
    min-height: 126px;
    margin-bottom: 16px;
    padding: 20px;
}

.gipyc-ge-attendance-empty h2 {
    font-size: 18px;
}

.gipyc-ge-attendance-empty p {
    margin: 5px 0 0;
    font-size: 13px;
}

.gipyc-ge-attendance-list-card {
    padding: 18px;
    overflow: hidden;
}

.gipyc-ge-attendance-list-card .gipyc-ge-card__heading {
    align-items: flex-start;
    margin-bottom: 14px;
}

.gipyc-ge-attendance-list-card .gipyc-ge-card__heading > div:first-child > span {
    display: block;
    margin-top: 3px;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-attendance-list-card .gipyc-ge-actions {
    gap: 7px;
}

.gipyc-ge-attendance-list-card .gipyc-ge-actions .gipyc-ge-button {
    min-height: 38px;
    padding: 7px 10px;
    font-size: 12px;
}

.gipyc-ge-attendance-list-card .gipyc-ge-table-wrap {
    max-height: 620px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 12px;
    background: var(--gipyc-ge-white);
}

.gipyc-ge-attendance-table {
    width: 100%;
    min-width: 980px;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 13px;
}

.gipyc-ge-attendance-table--justifications {
    min-width: 900px;
}

.gipyc-ge-attendance-table th,
.gipyc-ge-attendance-table td {
    padding: 11px 12px;
    border-bottom: 1px solid var(--gipyc-ge-border);
    text-align: left;
    vertical-align: middle;
}

.gipyc-ge-attendance-table th {
    position: sticky;
    z-index: 2;
    top: 0;
    background: #f8fafb;
    color: var(--gipyc-ge-navy);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .025em;
    text-transform: uppercase;
}

.gipyc-ge-attendance-table tbody tr:hover td {
    background: rgba(24, 59, 91, .025);
}

.gipyc-ge-attendance-table tbody tr:last-child td {
    border-bottom: 0;
}

.gipyc-ge-attendance-table .gipyc-ge-person-cell {
    min-width: 200px;
    gap: 9px;
}

.gipyc-ge-attendance-table .gipyc-ge-avatar {
    width: 40px;
    height: 40px;
    flex-basis: 40px;
    border-radius: 11px;
}

.gipyc-ge-attendance-table .gipyc-ge-list-number-col,
.gipyc-ge-attendance-table .gipyc-ge-list-number-cell {
    width: 54px;
    min-width: 54px;
}

.gipyc-ge-attendance-table .gipyc-ge-list-number-cell strong {
    font-size: 14px;
}

.gipyc-ge-attendance-table td > small,
.gipyc-ge-attendance-table td > strong + small {
    margin-top: 3px;
    color: var(--gipyc-ge-muted);
    font-size: 11px;
    line-height: 1.35;
}

.gipyc-ge-attendance-table .gipyc-ge-row-actions {
    gap: 7px;
}

.gipyc-ge-attendance-table .gipyc-ge-link-button {
    padding: 4px 0;
    font-size: 12px;
}

.gipyc-ge-attendance-status {
    min-height: 26px;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
}

.gipyc-ge-context-box {
    border-left-color: var(--gipyc-ge-blue);
    background: var(--gipyc-ge-background);
}

.gipyc-ge-context-box small,
.gipyc-ge-timeline article small {
    color: var(--gipyc-ge-muted);
}

.gipyc-ge-timeline article {
    border-color: var(--gipyc-ge-border);
    border-radius: 12px;
}

@media (max-width: 1180px) {
    .gipyc-ge-attendance-toolbar {
        padding: 12px 13px;
    }

    .gipyc-ge-attendance-groups {
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 10px;
    }

    .gipyc-ge-attendance-list-card {
        padding: 15px;
    }
}

@media (max-width: 760px) {
    .gipyc-ge-attendance-toolbar,
    .gipyc-ge-attendance-toolbar form {
        align-items: stretch;
    }

    .gipyc-ge-attendance-toolbar {
        display: grid;
        grid-template-columns: 1fr;
    }

    .gipyc-ge-attendance-toolbar form {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .gipyc-ge-attendance-toolbar form label {
        min-width: 0;
    }

    .gipyc-ge-attendance-toolbar .gipyc-ge-tabs {
        width: 100%;
        margin-left: 0;
    }

    .gipyc-ge-attendance-groups {
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    }

    .gipyc-ge-attendance-list-card .gipyc-ge-card__heading {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-attendance-list-card .gipyc-ge-actions {
        width: 100%;
    }
}

@media (max-width: 520px) {
    .gipyc-ge-attendance-page-header {
        margin-bottom: 14px;
    }

    .gipyc-ge-attendance-toolbar form {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-attendance-toolbar form .gipyc-ge-button {
        width: 100%;
    }

    .gipyc-ge-attendance-groups {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .gipyc-ge-attendance-group {
        padding: 12px;
    }

    .gipyc-ge-attendance-list-card {
        padding: 12px;
    }
}

/* v0.34.83 · tarjetas métricas accionables y barra horizontal de Comunicaciones */
.gipyc-ge-metrics-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 14px;
    margin-bottom: 20px;
}

.gipyc-ge-metrics--five {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
}

.gipyc-ge-metrics--communications {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
}

.gipyc-ge-metrics--communications .gipyc-ge-metric {
    min-width: 0;
    padding: 16px 14px;
}

.gipyc-ge-metrics--communications .gipyc-ge-metric span {
    font-size: 13px;
    font-weight: 600;
    line-height: 1.25;
}

.gipyc-ge-metrics--communications .gipyc-ge-metric strong {
    margin: 5px 0;
    font-size: 24px;
    line-height: 1.05;
}

.gipyc-ge-metrics--communications .gipyc-ge-metric small {
    font-size: 11px;
    line-height: 1.3;
}

.gipyc-ge-metric--action {
    position: relative;
    padding-right: 40px;
}

.gipyc-ge-metric--action::after {
    content: '→';
    position: absolute;
    top: 14px;
    right: 15px;
    color: var(--gipyc-ge-muted);
    font-size: 15px;
    font-weight: 700;
    line-height: 1;
    opacity: .42;
    transform: translateX(0);
    transition: opacity .16s ease, transform .16s ease, color .16s ease;
}

.gipyc-ge-metric--action:hover::after,
.gipyc-ge-metric--action:focus-visible::after {
    color: var(--gipyc-ge-blue);
    opacity: .92;
    transform: translateX(3px);
}

.gipyc-ge-inline-filter-note {
    margin: -2px 0 14px;
    padding: 10px 12px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 10px;
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-muted);
    font-size: 12px;
}

.gipyc-ge-inline-filter-note > div,
.gipyc-ge-inline-filter-note > span {
    min-width: 0;
}

.gipyc-ge-inline-filter-note strong {
    color: var(--gipyc-ge-navy);
    margin-right: 8px;
}

.gipyc-ge-incident-metrics {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}

.gipyc-ge-finance-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (min-width: 768px) and (max-width: 1180px) {
    .gipyc-ge-metrics--communications {
        grid-template-columns: repeat(5, minmax(0, 1fr));
        gap: 8px;
    }

    .gipyc-ge-metrics--communications .gipyc-ge-metric {
        padding: 12px 24px 12px 10px;
    }

    .gipyc-ge-metrics--communications .gipyc-ge-metric span {
        font-size: 11px;
    }

    .gipyc-ge-metrics--communications .gipyc-ge-metric strong {
        font-size: 20px;
    }

    .gipyc-ge-metrics--communications .gipyc-ge-metric small {
        font-size: 9.5px;
    }

    .gipyc-ge-metrics--communications .gipyc-ge-metric--action::after {
        top: 11px;
        right: 8px;
        font-size: 12px;
    }

    .gipyc-ge-metrics--five {
        grid-template-columns: repeat(5, minmax(0, 1fr));
        gap: 9px;
    }

    .gipyc-ge-metrics-grid {
        grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
        gap: 10px;
    }

    .gipyc-ge-incident-metrics {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

@media (min-width: 768px) and (max-width: 900px) {
    .gipyc-ge-metrics--communications {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }

    .gipyc-ge-metrics--five {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .gipyc-ge-incident-metrics {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .gipyc-ge-finance-metrics {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767px) {
    .gipyc-ge-metrics--communications {
        display: flex;
        gap: 9px;
        overflow-x: auto;
        overscroll-behavior-inline: contain;
        scroll-snap-type: inline proximity;
        scrollbar-width: thin;
        padding-bottom: 6px;
    }

    .gipyc-ge-metrics--communications .gipyc-ge-metric {
        flex: 0 0 min(72vw, 190px);
        scroll-snap-align: start;
        padding: 13px 28px 13px 12px;
    }

    .gipyc-ge-metrics--five,
    .gipyc-ge-incident-metrics,
    .gipyc-ge-finance-metrics {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .gipyc-ge-metrics-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 9px;
    }

    .gipyc-ge-metric--action {
        padding-right: 34px;
    }

    .gipyc-ge-metric--action::after {
        top: 12px;
        right: 11px;
    }

    .gipyc-ge-inline-filter-note {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (max-width: 520px) {
    .gipyc-ge-metrics--five,
    .gipyc-ge-incident-metrics,
    .gipyc-ge-finance-metrics,
    .gipyc-ge-metrics-grid {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-metrics--communications .gipyc-ge-metric {
        flex-basis: min(78vw, 184px);
    }
}

.gipyc-ge-card--link {
    display: block;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.gipyc-ge-card--link:hover,
.gipyc-ge-card--link:focus-visible {
    transform: translateY(-2px);
    border-color: rgba(24,59,91,.28);
    box-shadow: 0 14px 30px rgba(18,48,76,.10);
    outline: none;
}

.gipyc-ge-card--link:focus-visible {
    outline: 3px solid rgba(31,157,104,.24);
    outline-offset: 2px;
}

/* v0.34.86 — operación simplificada de jornadas */
.gipyc-ge-access-simple{
    width:min(820px,100%);
    margin:0 auto;
    padding:clamp(24px,4vw,40px);
    border:1px solid var(--gipyc-ge-border);
    border-radius:22px;
    background:#fff;
    box-shadow:0 14px 34px rgba(20,48,74,.07);
    display:grid;
    gap:24px;
}
.gipyc-ge-access-simple__status{
    display:inline-flex;
    align-items:center;
    gap:9px;
    width:max-content;
    padding:7px 12px;
    border-radius:999px;
    background:#eef3f7;
    color:#5b6f80;
    font-weight:850;
    font-size:14px;
}
.gipyc-ge-access-simple__status>span{
    width:10px;
    height:10px;
    border-radius:50%;
    background:currentColor;
}
.gipyc-ge-access-simple__status.is-open{
    background:rgba(31,157,104,.12);
    color:#14724d;
}
.gipyc-ge-access-simple__intro{display:grid;gap:7px}
.gipyc-ge-access-simple__intro h2{margin:0;font-size:clamp(26px,4vw,36px);line-height:1.1}
.gipyc-ge-access-simple__intro p{margin:0;max-width:680px;color:var(--gipyc-ge-muted);line-height:1.55}
.gipyc-ge-access-simple__intro .gipyc-ge-eyebrow{color:var(--gipyc-ge-blue);font-weight:850}
.gipyc-ge-access-simple__meta{display:flex;gap:10px;flex-wrap:wrap}
.gipyc-ge-access-simple__meta span{
    display:inline-flex;
    align-items:center;
    min-height:36px;
    padding:6px 11px;
    border:1px solid var(--gipyc-ge-border);
    border-radius:10px;
    background:#f8fafc;
    color:#526779;
    font-size:13px;
    font-weight:750;
}
.gipyc-ge-access-simple__primary{width:100%;min-height:58px;font-size:18px}
.gipyc-ge-access-simple__close{justify-self:end;min-width:190px;min-height:50px}
.gipyc-ge-access-share{
    display:grid;
    grid-template-columns:220px minmax(0,1fr);
    gap:24px;
    align-items:center;
    padding:22px;
    border:1px solid #dce6ed;
    border-radius:18px;
    background:#f8fbfd;
}
.gipyc-ge-access-share__qr{
    width:220px;
    aspect-ratio:1;
    display:grid;
    place-items:center;
    padding:14px;
    border:1px solid #d7e1e9;
    border-radius:16px;
    background:#fff;
}
.gipyc-ge-access-share__qr svg{display:block;width:100%;height:100%}
.gipyc-ge-access-share__qr.is-empty{color:var(--gipyc-ge-muted);font-weight:750;text-align:center}
.gipyc-ge-access-share__content{display:grid;gap:12px;min-width:0}
.gipyc-ge-access-share__content>span{font-size:21px;font-weight:850;color:var(--gipyc-ge-navy)}
.gipyc-ge-access-share__content label{display:grid;gap:6px;min-width:0}
.gipyc-ge-access-share__content label small{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--gipyc-ge-muted)}
.gipyc-ge-access-share__content input{
    width:100%;
    min-height:48px;
    padding:0 12px;
    border:1px solid var(--gipyc-ge-border);
    border-radius:10px;
    background:#fff;
    color:var(--gipyc-ge-text);
    font:inherit;
}
.gipyc-ge-access-simple__summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.gipyc-ge-access-simple__summary article{padding:14px;border:1px solid var(--gipyc-ge-border);border-radius:12px;background:#fff}
.gipyc-ge-access-simple__summary small,.gipyc-ge-access-simple__summary strong{display:block}
.gipyc-ge-access-simple__summary small{margin-bottom:5px;color:var(--gipyc-ge-muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.035em}
.gipyc-ge-access-simple__summary strong{color:var(--gipyc-ge-navy);font-size:15px;overflow-wrap:anywhere}
.gipyc-ge-access-pending-note{display:grid;grid-template-columns:1fr auto;gap:4px 14px;align-items:center;padding:14px 16px;border-radius:12px;background:#fff7e6;color:#8a5a00}
.gipyc-ge-access-pending-note strong,.gipyc-ge-access-pending-note span{display:block}
.gipyc-ge-access-pending-note span{font-size:13px}
.gipyc-ge-access-pending-note .gipyc-ge-button{grid-row:1/3;grid-column:2}
.gipyc-ge-access-admin-tools{
    width:min(820px,100%);
    margin:18px auto 0;
    border:1px solid var(--gipyc-ge-border);
    border-radius:14px;
    background:#fff;
    overflow:hidden;
}
.gipyc-ge-access-admin-tools>summary{cursor:pointer;padding:15px 18px;font-weight:800;color:#53687a;list-style-position:inside}
.gipyc-ge-access-admin-tools>div{padding:0 18px 18px}
.gipyc-ge-access-admin-tools p{margin:0 0 12px;color:var(--gipyc-ge-muted)}
.gipyc-ge-access-setup{width:min(820px,100%);margin:0 auto}
@media(max-width:720px){
    .gipyc-ge-access-simple{padding:20px 16px;border-radius:18px}
    .gipyc-ge-access-share{grid-template-columns:1fr;padding:16px}
    .gipyc-ge-access-share__qr{width:min(260px,100%);justify-self:center}
    .gipyc-ge-access-simple__summary{grid-template-columns:1fr}
    .gipyc-ge-access-simple__close{width:100%;justify-self:stretch}
    .gipyc-ge-access-pending-note{grid-template-columns:1fr}
    .gipyc-ge-access-pending-note .gipyc-ge-button{grid-row:auto;grid-column:auto;width:100%;margin-top:8px}
    .gipyc-ge-access-share__content .gipyc-ge-header-actions{align-items:stretch}
    .gipyc-ge-access-share__content .gipyc-ge-button{flex:1}
}

/* v0.34.89 · Accesos integrados dentro de Asistencia */
.gipyc-ge-attendance-hub-tabs{
    padding:10px 12px;
    margin-bottom:16px;
}
.gipyc-ge-attendance-hub-tabs .gipyc-ge-tabs{
    margin:0;
}
.gipyc-ge-attendance-automation{
    min-width:180px;
    color:var(--gipyc-ge-muted);
}
.gipyc-ge-attendance-access-admin-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    margin-bottom:16px;
}
.gipyc-ge-attendance-access-admin-header h2,
.gipyc-ge-attendance-access-admin-header p{
    margin:0;
}
.gipyc-ge-attendance-access-admin-header .gipyc-ge-eyebrow{
    margin-bottom:5px;
}
@media(max-width:820px){
    .gipyc-ge-attendance-toolbar{
        flex-wrap:wrap;
    }
    .gipyc-ge-attendance-automation{
        width:100%;
        min-width:0;
    }
    .gipyc-ge-attendance-toolbar .gipyc-ge-tabs{
        margin-left:0;
    }
    .gipyc-ge-attendance-access-admin-header{
        align-items:flex-start;
        flex-direction:column;
    }
}

/* v0.34.90 — Gestión docente centralizada */
.gipyc-ge-teacher-metrics{grid-template-columns:repeat(4,minmax(0,1fr));}
.gipyc-ge-teacher-admin-detail{margin-top:18px;}
.gipyc-ge-teacher-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:18px 0 24px;}
.gipyc-ge-teacher-admin-grid>div{border:1px solid var(--gipyc-ge-border,#dfe5eb);border-radius:16px;padding:18px;background:#fff;}
.gipyc-ge-teacher-admin-grid h3{margin-top:0;}
.gipyc-ge-definition-list{display:grid;gap:8px;margin:0 0 14px;}
.gipyc-ge-definition-list>div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid #edf1f4;padding:7px 0;}
.gipyc-ge-definition-list dt{font-weight:600;}.gipyc-ge-definition-list dd{margin:0;text-align:right;}
.gipyc-ge-teacher-qr{display:flex;flex-direction:column;align-items:flex-start;gap:10px;}
.gipyc-ge-teacher-qr__code{width:170px;max-width:100%;aspect-ratio:1;background:#fff;padding:8px;border:1px solid #dfe5eb;border-radius:12px;}
.gipyc-ge-teacher-qr__code svg{width:100%;height:100%;display:block;}
.gipyc-ge-empty-inline{padding:16px;border:1px dashed #cbd5df;border-radius:12px;color:#617080;width:100%;box-sizing:border-box;}
.gipyc-ge-data-table td>small{display:block;margin-top:3px;color:#6d7885;}
@media (max-width:1100px){.gipyc-ge-teacher-metrics{grid-template-columns:repeat(2,minmax(0,1fr));}.gipyc-ge-teacher-admin-grid{grid-template-columns:1fr;}}
@media (max-width:700px){.gipyc-ge-teacher-metrics{grid-template-columns:1fr 1fr;}.gipyc-ge-teacher-admin-grid{grid-template-columns:1fr;}}

/* v0.34.95 · QR permanente y revocable para Dirección escolar */
.gipyc-ge-director-qr-status{display:block;margin-top:5px;color:var(--gipyc-ge-muted);font-size:11px;line-height:1.35}.gipyc-ge-director-qr-status.is-active{color:#176b46;font-weight:800}.gipyc-ge-director-qr-backdrop{position:fixed;inset:0;z-index:10040;display:grid;place-items:center;padding:24px;background:rgba(7,20,35,.6);backdrop-filter:blur(2px)}.gipyc-ge-director-qr-modal{width:min(720px,96vw);max-height:calc(100vh - 40px);overflow:auto;background:#fff;border:1px solid var(--gipyc-ge-border);border-radius:20px;box-shadow:0 28px 70px rgba(7,20,35,.3)}.gipyc-ge-director-qr-modal>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:22px 24px;border-bottom:1px solid var(--gipyc-ge-border)}.gipyc-ge-director-qr-modal>header h2{margin:2px 0 5px;font-size:24px}.gipyc-ge-director-qr-modal>header p{margin:0;color:var(--gipyc-ge-muted)}.gipyc-ge-director-qr-modal__body{display:grid;gap:18px;padding:24px}.gipyc-ge-director-qr-code{width:min(340px,76vw);margin:0 auto;padding:18px;border:1px solid var(--gipyc-ge-border);border-radius:18px;background:#fff}.gipyc-ge-director-qr-code svg{display:block;width:100%;height:auto}.gipyc-ge-director-qr-details{display:grid;gap:4px;text-align:center}.gipyc-ge-director-qr-details strong{font-size:20px;color:var(--gipyc-ge-navy)}.gipyc-ge-director-qr-details span,.gipyc-ge-director-qr-details small{color:var(--gipyc-ge-muted)}.gipyc-ge-director-qr-warning{display:grid;gap:5px;padding:14px 16px;border:1px solid #f0c36d;border-radius:12px;background:#fff8e8;color:#61420f;line-height:1.45}.gipyc-ge-director-qr-modal__actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.gipyc-ge-table-actions .gipyc-ge-link-button--danger{color:#a33636}
@media(max-width:760px){.gipyc-ge-director-qr-backdrop{padding:0}.gipyc-ge-director-qr-modal{width:100vw;max-height:100vh;min-height:100vh;border-radius:0}.gipyc-ge-director-qr-modal>header,.gipyc-ge-director-qr-modal__body{padding:18px}.gipyc-ge-director-qr-modal__actions{display:grid;grid-template-columns:1fr}.gipyc-ge-director-qr-modal__actions .gipyc-ge-button{width:100%;justify-content:center}}

/* v0.34.96 · Sincronización segura de roles escolares con WordPress */

/* v0.34.99 · Login frontal · distintivo GN corregido */
.gipyc-ge-login-screen,
.gipyc-ge-login-screen *{box-sizing:border-box}
.gipyc-ge-login-screen{width:100%;min-height:min(760px,calc(100vh - 80px));display:grid;place-items:center;padding:42px 20px;background:linear-gradient(145deg,#f3f5f7 0%,#eef3f5 52%,#f8fafb 100%);color:var(--gipyc-ge-text);font-family:Poppins,Montserrat,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.gipyc-ge-login-card{width:min(520px,100%);padding:34px;border:1px solid var(--gipyc-ge-border);border-radius:22px;background:#fff;box-shadow:0 22px 55px rgba(15,39,66,.12)}
.gipyc-ge-login-brand{display:flex;align-items:center;gap:14px;padding-bottom:24px;margin-bottom:28px;border-bottom:1px solid #edf1f4}
.gipyc-ge-login-brand__mark{width:52px;height:52px;display:grid;place-items:center;flex:0 0 52px;border-radius:15px;background:var(--gipyc-ge-navy);color:#fff;font-size:22px;line-height:1;font-weight:700;letter-spacing:.04em;margin:0}
.gipyc-ge-login-brand strong{display:block;color:var(--gipyc-ge-navy);font-size:19px;line-height:1.2;font-weight:700}
.gipyc-ge-login-heading{margin-bottom:24px}
.gipyc-ge-login-eyebrow{margin:0 0 7px!important;color:var(--gipyc-ge-blue)!important;font-size:12px!important;font-weight:800!important;letter-spacing:.11em!important}
.gipyc-ge-login-heading h1{margin:0;color:var(--gipyc-ge-navy);font-size:31px;line-height:1.15;font-weight:800}
.gipyc-ge-login-heading>p:last-child{margin:9px 0 0;color:var(--gipyc-ge-muted);font-size:15px}
.gipyc-ge-login-alert{margin:0 0 20px;padding:13px 15px;border:1px solid rgba(183,68,68,.26);border-left:4px solid var(--gipyc-ge-red);border-radius:10px;background:rgba(183,68,68,.07);color:#7f2f2f;font-size:14px;line-height:1.45}
.gipyc-ge-login-form{display:grid;gap:18px;margin:0}
.gipyc-ge-login-field{display:grid;gap:8px;margin:0;color:var(--gipyc-ge-text);font-size:14px;font-weight:700}
.gipyc-ge-login-field input{width:100%;height:54px;margin:0;padding:0 15px;border:1px solid #cfd8e1;border-radius:11px;background:#fff;color:var(--gipyc-ge-text);box-shadow:none;font:500 18px/1.2 Poppins,Montserrat,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;outline:none;transition:border-color .16s ease,box-shadow .16s ease}
.gipyc-ge-login-field input:focus{border-color:var(--gipyc-ge-blue);box-shadow:0 0 0 3px rgba(24,59,91,.12)}
.gipyc-ge-login-options{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:-2px;font-size:14px}
.gipyc-ge-login-options a{color:var(--gipyc-ge-blue);font-weight:700;text-decoration:none}
.gipyc-ge-login-options a:hover,.gipyc-ge-login-options a:focus{text-decoration:underline}
.gipyc-ge-login-remember{display:inline-flex;align-items:center;gap:8px;margin:0;color:var(--gipyc-ge-muted);font-weight:600;cursor:pointer}
.gipyc-ge-login-remember input{width:18px;height:18px;margin:0;accent-color:var(--gipyc-ge-navy)}
.gipyc-ge-login-submit{width:100%;min-height:54px;margin:2px 0 0;padding:13px 18px;border:1px solid var(--gipyc-ge-navy);border-radius:11px;background:var(--gipyc-ge-navy);color:#fff;cursor:pointer;font:800 17px/1.2 Poppins,Montserrat,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;transition:background .16s ease,transform .16s ease,box-shadow .16s ease}
.gipyc-ge-login-submit:hover,.gipyc-ge-login-submit:focus-visible{background:var(--gipyc-ge-blue);box-shadow:0 8px 20px rgba(15,39,66,.18);transform:translateY(-1px)}
.gipyc-ge-login-footer{margin-top:24px;padding-top:20px;border-top:1px solid #edf1f4;color:var(--gipyc-ge-muted);font-size:12px;text-align:center}
@media(max-width:600px){.gipyc-ge-login-screen{min-height:calc(100vh - 40px);padding:22px 14px}.gipyc-ge-login-card{padding:25px 20px;border-radius:18px}.gipyc-ge-login-heading h1{font-size:27px}.gipyc-ge-login-options{align-items:flex-start;flex-direction:column;gap:12px}.gipyc-ge-login-field input{height:56px;font-size:18px}}


/* v0.36.0 · Planes de estudio integrados y múltiples grupos titulares */
.gipyc-ge-plan-builder{display:grid;gap:16px;margin-top:8px;padding-top:8px;border-top:1px solid var(--gipyc-ge-border,#dfe6ee)}
.gipyc-ge-plan-grade{border:1px solid var(--gipyc-ge-border,#dfe6ee);border-radius:16px;background:#fff;overflow:hidden}
.gipyc-ge-plan-grade__heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;background:#f7f9fb;border-bottom:1px solid var(--gipyc-ge-border,#dfe6ee)}
.gipyc-ge-plan-grade__heading>div{display:grid;gap:2px}.gipyc-ge-plan-grade__heading strong{font-size:17px}.gipyc-ge-plan-grade__heading small{color:#6b7b8d}
.gipyc-ge-plan-grade__rows{display:grid;gap:10px;padding:12px}
.gipyc-ge-plan-subject-row{display:grid;grid-template-columns:minmax(210px,2fr) minmax(180px,1.6fr) minmax(110px,.7fr) minmax(130px,.8fr) auto auto;gap:10px;align-items:end;padding:12px;border:1px solid #e4e9ef;border-radius:12px;background:#fff}
.gipyc-ge-plan-subject-row .gipyc-ge-field{margin:0}.gipyc-ge-plan-subject-row__mandatory{display:flex;align-items:center;gap:7px;min-height:44px;font-weight:600;white-space:nowrap}.gipyc-ge-plan-subject-row__mandatory input{width:18px;height:18px}
.gipyc-ge-plan-summary-list{display:grid;gap:14px}.gipyc-ge-plan-summary-card{border:1px solid var(--gipyc-ge-border,#dfe6ee);border-radius:16px;overflow:hidden;background:#fff}.gipyc-ge-plan-summary-card>header{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:18px;border-bottom:1px solid #e6ebf0}.gipyc-ge-plan-summary-card h3{margin:2px 0 5px}.gipyc-ge-plan-summary-card header small{color:#6c7b8b}.gipyc-ge-plan-summary-curriculum{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;padding:16px}.gipyc-ge-plan-summary-grade{border:1px solid #e6ebf0;border-radius:12px;padding:12px}.gipyc-ge-plan-summary-grade>strong{display:block;margin-bottom:10px}.gipyc-ge-plan-summary-grade>div{display:grid;gap:7px}.gipyc-ge-plan-summary-grade span{display:flex;justify-content:space-between;gap:8px;padding:7px 0;border-top:1px solid #edf1f5}.gipyc-ge-plan-summary-grade span:first-child{border-top:0}.gipyc-ge-plan-summary-grade span small{color:#6d7b8a;white-space:nowrap}.gipyc-ge-plan-summary-grade em{color:#7a8794;font-style:normal}
.gipyc-ge-plan-status{display:grid;gap:4px;padding:12px 14px;border:1px solid #dfe6ee;border-radius:12px;background:#f8fafc}.gipyc-ge-plan-status.is-linked{border-color:#b9d9c9;background:#f3faf6}.gipyc-ge-plan-status.is-pending{border-color:#ead7ae;background:#fffaf0}.gipyc-ge-plan-status span{font-size:13px;color:#667688}
.gipyc-ge-teacher-lead-list{display:grid;gap:8px;margin-top:12px}.gipyc-ge-teacher-lead-list>span{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center;padding:9px 10px;border:1px solid #e1e7ed;border-radius:10px}.gipyc-ge-teacher-lead-list>span small{grid-column:1;color:#718091}.gipyc-ge-teacher-lead-list>span button{grid-column:2;grid-row:1 / span 2}.gipyc-ge-teacher-lead-list>em{font-style:normal;color:#718091}
@media (max-width:1100px){.gipyc-ge-plan-subject-row{grid-template-columns:1fr 1fr}.gipyc-ge-plan-subject-row__mandatory{min-height:auto}.gipyc-ge-plan-summary-card>header{flex-direction:column}}
@media (max-width:700px){.gipyc-ge-plan-subject-row{grid-template-columns:1fr}.gipyc-ge-plan-grade__heading{align-items:flex-start;flex-direction:column}.gipyc-ge-plan-summary-curriculum{grid-template-columns:1fr}}

/* v0.36.3 — Centro de escenarios para revisión de interfaces demo */
.gipyc-ge-scenario-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gipyc-ge-scenario-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.gipyc-ge-scenario-card {
    display: flex;
    flex-direction: column;
    min-height: 320px;
}

.gipyc-ge-scenario-card.is-disabled {
    opacity: .68;
}

.gipyc-ge-scenario-card__description {
    margin: 0 0 20px;
    min-height: 64px;
    font-size: 16px;
    line-height: 1.55;
}

.gipyc-ge-scenario-card__meta {
    margin: 0;
    display: grid;
    gap: 10px;
}

.gipyc-ge-scenario-card__meta > div {
    display: grid;
    grid-template-columns: minmax(88px, .45fr) minmax(0, 1fr);
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gipyc-ge-border);
}

.gipyc-ge-scenario-card__meta dt {
    color: var(--gipyc-ge-muted);
    font-weight: 600;
}

.gipyc-ge-scenario-card__meta dd {
    margin: 0;
    color: var(--gipyc-ge-navy);
    font-weight: 600;
    overflow-wrap: anywhere;
}

.gipyc-ge-scenario-card__meta code {
    font-size: 14px;
}

.gipyc-ge-scenario-card__footer {
    margin-top: auto;
    padding-top: 22px;
}

.gipyc-ge-scenario-card__footer .gipyc-ge-button {
    width: 100%;
    justify-content: center;
}

@media (max-width: 980px) {
    .gipyc-ge-scenario-metrics,
    .gipyc-ge-scenario-grid {
        grid-template-columns: 1fr;
    }

    .gipyc-ge-scenario-card {
        min-height: 0;
    }

    .gipyc-ge-scenario-card__description {
        min-height: 0;
    }
}

/* v0.36.4 · Centro de escenarios permanente por escuela */
.gipyc-ge-scenario-platform {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 18px;
}

.gipyc-ge-scenario-platform h2,
.gipyc-ge-scenario-role h2 {
    margin: 0 0 6px;
}

.gipyc-ge-scenario-platform p,
.gipyc-ge-scenario-role p {
    margin: 0;
}

.gipyc-ge-scenario-toolbar {
    margin-bottom: 18px;
}

.gipyc-ge-scenario-toolbar form,
.gipyc-ge-scenario-toolbar p {
    margin: 0;
}

.gipyc-ge-scenario-toolbar p {
    margin-top: 10px;
}

.gipyc-ge-inline-search {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
}

.gipyc-ge-inline-search input {
    flex: 1 1 320px;
    min-width: 0;
}

.gipyc-ge-scenario-role-list {
    display: grid;
    gap: 18px;
}

.gipyc-ge-scenario-role {
    padding: 0;
    overflow: hidden;
}

.gipyc-ge-scenario-role__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    padding: 22px 24px;
    border-bottom: 1px solid var(--gipyc-ge-border, #e5e7eb);
}

.gipyc-ge-scenario-role__header > div:first-child {
    max-width: 820px;
}

.gipyc-ge-scenario-role__count {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    text-align: right;
}

.gipyc-ge-scenario-role__count strong {
    font-size: 26px;
    line-height: 1;
}

.gipyc-ge-scenario-role__count span,
.gipyc-ge-scenario-account small {
    font-size: 13px;
}

.gipyc-ge-scenario-accounts {
    display: grid;
}

.gipyc-ge-scenario-account {
    display: grid;
    grid-template-columns: minmax(260px, 1.2fr) minmax(300px, 1fr) auto;
    align-items: center;
    gap: 22px;
    padding: 18px 24px;
    border-bottom: 1px solid var(--gipyc-ge-border, #e5e7eb);
}

.gipyc-ge-scenario-account:last-child {
    border-bottom: 0;
}

.gipyc-ge-scenario-account.is-disabled {
    background: rgba(15, 35, 58, 0.025);
}

.gipyc-ge-scenario-account__identity {
    display: flex;
    align-items: center;
    gap: 13px;
    min-width: 0;
}

.gipyc-ge-scenario-account__avatar {
    width: 44px;
    height: 44px;
    border-radius: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 44px;
    background: #102d48;
    color: #fff;
    font-weight: 700;
    font-size: 18px;
}

.gipyc-ge-scenario-account__identity > div,
.gipyc-ge-scenario-account__meta {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.gipyc-ge-scenario-account__identity strong,
.gipyc-ge-scenario-account__identity span,
.gipyc-ge-scenario-account__identity small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gipyc-ge-scenario-account__meta {
    align-items: flex-start;
}

.gipyc-ge-scenario-account__meta .gipyc-ge-record-status,
.gipyc-ge-scenario-account__meta .gipyc-ge-scenario-badge {
    display: inline-flex;
}

.gipyc-ge-scenario-badge {
    padding: 3px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    background: #eef7f2;
    color: #246247;
}

.gipyc-ge-scenario-badge.is-real {
    background: #eef2f7;
    color: #42556b;
}

.gipyc-ge-scenario-account__actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    min-width: 138px;
}

.gipyc-ge-scenario-role__empty {
    padding: 24px;
    color: var(--gipyc-ge-muted, #667085);
}

@media (max-width: 980px) {
    .gipyc-ge-scenario-account {
        grid-template-columns: 1fr auto;
    }

    .gipyc-ge-scenario-account__meta {
        grid-column: 1 / -1;
        grid-row: 2;
    }
}

@media (max-width: 680px) {
    .gipyc-ge-scenario-platform,
    .gipyc-ge-scenario-role__header,
    .gipyc-ge-inline-search {
        align-items: stretch;
        flex-direction: column;
    }

    .gipyc-ge-scenario-role__count {
        align-items: flex-start;
        text-align: left;
    }

    .gipyc-ge-scenario-account {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 18px;
    }

    .gipyc-ge-scenario-account__meta,
    .gipyc-ge-scenario-account__actions {
        grid-column: auto;
        grid-row: auto;
    }

    .gipyc-ge-scenario-account__actions,
    .gipyc-ge-scenario-account__actions .gipyc-ge-button {
        width: 100%;
    }
}

/* v0.36.8 · Calendario familiar/alumno: variante independiente del timeline global. */
.gipyc-ge-family-calendar {
    display: grid;
    gap: 10px;
}

.gipyc-ge-family-calendar__item {
    display: grid;
    grid-template-columns: 112px minmax(0, 1fr);
    align-items: center;
    min-height: 76px;
    overflow: hidden;
    border: 1px solid var(--gipyc-ge-border);
    border-radius: 14px;
    background: #fff;
}

.gipyc-ge-family-calendar__date {
    display: grid;
    grid-template-columns: auto auto;
    grid-template-rows: auto auto;
    align-content: center;
    justify-content: center;
    column-gap: 6px;
    min-height: 76px;
    padding: 12px 14px;
    border-right: 1px solid var(--gipyc-ge-border);
    background: var(--gipyc-ge-background);
    color: var(--gipyc-ge-navy);
    text-align: center;
    line-height: 1;
}

.gipyc-ge-family-calendar__date > strong {
    grid-row: 1 / 3;
    align-self: center;
    font-size: 28px;
    font-weight: 750;
    line-height: 1;
}

.gipyc-ge-family-calendar__date > span {
    align-self: end;
    font-size: 12px;
    font-weight: 750;
    letter-spacing: .06em;
}

.gipyc-ge-family-calendar__date > small {
    align-self: start;
    color: var(--gipyc-ge-muted);
    font-size: 11px;
    font-weight: 650;
}

.gipyc-ge-family-calendar__content {
    min-width: 0;
    padding: 14px 18px;
}

.gipyc-ge-family-calendar__content > strong,
.gipyc-ge-family-calendar__content > small {
    display: block;
}

.gipyc-ge-family-calendar__content > strong {
    color: var(--gipyc-ge-navy);
    font-size: 15px;
    line-height: 1.35;
}

.gipyc-ge-family-calendar__content > small {
    margin-top: 5px;
    color: var(--gipyc-ge-muted);
    font-size: 12px;
    line-height: 1.35;
}

.gipyc-ge-family-calendar__empty {
    margin: 0;
    padding: 20px;
    color: var(--gipyc-ge-muted);
    text-align: center;
}

@media (max-width: 640px) {
    .gipyc-ge-family-calendar__item {
        grid-template-columns: 1fr;
        align-items: stretch;
    }

    .gipyc-ge-family-calendar__date {
        display: flex;
        min-height: 0;
        justify-content: flex-start;
        gap: 6px;
        padding: 11px 14px;
        border-right: 0;
        border-bottom: 1px solid var(--gipyc-ge-border);
        text-align: left;
    }

    .gipyc-ge-family-calendar__date > strong {
        font-size: 17px;
    }

    .gipyc-ge-family-calendar__date > span,
    .gipyc-ge-family-calendar__date > small {
        align-self: center;
        font-size: 11px;
    }

    .gipyc-ge-family-calendar__content {
        padding: 13px 14px;
    }
}

/* v0.36.9 · Avisos de llegada permanentes en el Portal Familiar. */
.gipyc-ge-family-arrival-notice {
    border-left: 4px solid var(--gipyc-ge-success, #1f9d68);
}
.gipyc-ge-family-arrival-notice__eyebrow {
    display: inline-block;
    margin-bottom: 6px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--gipyc-ge-muted);
}
.gipyc-ge-family-arrival-notice__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid var(--gipyc-ge-border, #dfe5eb);
}
.gipyc-ge-family-arrival-notice__delivery {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
@media (max-width: 680px) {
    .gipyc-ge-family-arrival-notice__footer {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* v0.37.0 · Operación de acceso simplificada: la jornada pertenece a la estación. */
.gipyc-ge-access-station-picker{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    margin-bottom:16px;
    padding:18px 20px;
}
.gipyc-ge-access-station-picker>div{
    display:flex;
    flex-direction:column;
    gap:4px;
}
.gipyc-ge-access-station-picker>div>strong{
    font-size:18px;
    line-height:1.25;
}
.gipyc-ge-access-station-picker select{
    min-width:min(360px,100%);
    min-height:46px;
}
@media (max-width:720px){
    .gipyc-ge-access-station-picker{
        align-items:stretch;
        flex-direction:column;
    }
    .gipyc-ge-access-station-picker select{
        width:100%;
        min-width:0;
    }
}

/* v0.37.4 · Centro de Correos */
.gipyc-ge-mail-filters {
    display: grid;
    grid-template-columns: minmax(220px, 1.4fr) repeat(4, minmax(150px, .8fr));
    gap: 14px;
    align-items: end;
    margin-bottom: 18px;
}
.gipyc-ge-mail-filters label {
    display: grid;
    gap: 6px;
}
.gipyc-ge-mail-filters label > span {
    font-size: 13px;
    font-weight: 700;
    color: #536577;
}
.gipyc-ge-mail-filters input,
.gipyc-ge-mail-filters select {
    min-height: 44px;
    width: 100%;
}
.gipyc-ge-mail-filters .gipyc-ge-form-actions {
    grid-column: 1 / -1;
    justify-content: flex-end;
    margin: 0;
}
.gipyc-ge-mail-toolbar,
.gipyc-ge-pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin: 14px 0;
}
.gipyc-ge-mail-select-all {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 700;
}
.gipyc-ge-button--small {
    min-height: 34px;
    padding: 6px 12px;
    font-size: 13px;
}
.gipyc-ge-mail-row-error {
    display: block;
    max-width: 320px;
    margin-top: 5px;
    color: var(--gipyc-ge-red);
}
.gipyc-ge-mail-detail {
    margin-top: 18px;
}
.gipyc-ge-mail-detail__meta {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.gipyc-ge-mail-detail__meta > span {
    display: grid;
    gap: 4px;
    padding: 12px 14px;
    border: 1px solid #dde5ec;
    border-radius: 12px;
    background: #f8fafb;
}
.gipyc-ge-mail-detail__meta strong {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #617283;
}
.gipyc-ge-mail-detail__body {
    margin-bottom: 18px;
    padding: 14px 16px;
    border-left: 4px solid var(--gipyc-ge-blue);
    background: #f8fafb;
    border-radius: 8px;
}
.gipyc-ge-mail-detail__body p {
    margin: 8px 0 0;
    white-space: pre-wrap;
}
@media (max-width: 1100px) {
    .gipyc-ge-mail-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gipyc-ge-mail-detail__meta { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
    .gipyc-ge-mail-filters { grid-template-columns: 1fr; }
    .gipyc-ge-mail-filters .gipyc-ge-form-actions { align-items: stretch; flex-direction: column; }
    .gipyc-ge-mail-filters .gipyc-ge-form-actions .gipyc-ge-button { width: 100%; }
    .gipyc-ge-mail-toolbar,
    .gipyc-ge-pagination { align-items: stretch; flex-direction: column; }
}

/* v0.37.6 · Editor visual de correo */
.gipyc-ge-email-brand-card{overflow:visible}
.gipyc-ge-email-brand-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.7fr);gap:28px;align-items:start}
.gipyc-ge-email-brand-summary{border:1px solid var(--gipyc-ge-border,#dbe3ea);border-radius:16px;padding:22px;background:#f8fafc;display:grid;gap:7px}
.gipyc-ge-email-brand-summary strong{margin-top:8px;color:#102a43}
.gipyc-ge-email-brand-summary span{font-size:17px;font-weight:700;color:#183b5b;overflow-wrap:anywhere}
.gipyc-ge-email-brand-summary small,.gipyc-ge-email-brand-summary p{color:#657487;line-height:1.5;margin:0}
.gipyc-ge-email-logo-field{display:grid;gap:10px}
.gipyc-ge-email-logo-field>span{font-weight:700;color:#152f4a}
.gipyc-ge-email-logo-preview{width:220px;min-height:92px;border:1px dashed #cbd6e1;border-radius:14px;background:#fff;display:flex;align-items:center;justify-content:center;padding:14px}
.gipyc-ge-email-logo-preview img{display:block;max-width:190px;max-height:72px;object-fit:contain}
.gipyc-ge-email-logo-preview strong{display:grid;place-items:center;width:54px;height:54px;border-radius:14px;background:#0f2742;color:#fff;font-size:22px}
.gipyc-ge-email-system-templates{display:grid;gap:18px;margin-top:26px}
.gipyc-ge-section-heading{display:flex;justify-content:space-between;align-items:end;gap:20px}
.gipyc-ge-section-heading h2{margin:.15rem 0 .25rem}
.gipyc-ge-section-heading p{margin:0;color:#66768a}
.gipyc-ge-email-template-card{background:#fff;border:1px solid #dbe3ea;border-radius:18px;padding:24px;box-shadow:0 8px 28px rgba(15,39,66,.05)}
.gipyc-ge-email-editor-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.9fr);gap:24px;align-items:start}
.gipyc-ge-email-template-form{display:grid;gap:14px}
.gipyc-ge-email-template-form>label,.gipyc-ge-email-template-form .gipyc-ge-email-test-field{display:grid;gap:7px}
.gipyc-ge-email-template-form label>span{font-weight:700;color:#152f4a}
.gipyc-ge-email-template-form input[type=text],.gipyc-ge-email-template-form input[type=email],.gipyc-ge-email-template-form textarea{width:100%;box-sizing:border-box;border:1px solid #cad6e1;border-radius:10px;padding:12px 13px;font:inherit;color:#17283b;background:#fff}
.gipyc-ge-email-template-form textarea{resize:vertical;min-height:150px;line-height:1.5}
.gipyc-ge-email-template-form small{color:#718096}
.gipyc-ge-email-tokenbar{display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding:10px 12px;border-radius:12px;background:#f4f7fa}
.gipyc-ge-email-tokenbar>span{font-weight:700;font-size:13px;color:#58697c;margin-right:4px}
.gipyc-ge-email-tokenbar button{border:1px solid #d1dae4;background:#fff;color:#183b5b;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700;cursor:pointer}
.gipyc-ge-email-tokenbar button:hover{border-color:#183b5b}
.gipyc-ge-email-template-actions{display:flex;flex-wrap:wrap;align-items:end;gap:10px;padding-top:5px}
.gipyc-ge-email-test-field{min-width:220px;flex:1}
.gipyc-ge-email-test-field span{font-size:13px}
.gipyc-ge-email-preview-shell{position:sticky;top:84px;border:1px solid #dbe3ea;border-radius:16px;overflow:hidden;background:#edf2f6}
.gipyc-ge-email-preview-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 13px;background:#fff;border-bottom:1px solid #dbe3ea;font-size:13px;color:#617184}
.gipyc-ge-email-preview-toolbar strong{color:#183b5b}
.gipyc-ge-email-preview-shell iframe{display:block;width:100%;height:600px;border:0;background:#fff}
@media(max-width:1100px){.gipyc-ge-email-editor-grid,.gipyc-ge-email-brand-grid{grid-template-columns:1fr}.gipyc-ge-email-preview-shell{position:relative;top:auto}.gipyc-ge-email-preview-shell iframe{height:520px}}
@media(max-width:720px){.gipyc-ge-email-template-card{padding:18px}.gipyc-ge-email-preview-shell iframe{height:470px}.gipyc-ge-email-template-actions{align-items:stretch}.gipyc-ge-email-template-actions>*{width:100%}.gipyc-ge-email-logo-preview{width:100%;box-sizing:border-box}}
