/* ══════════════════════════════════════════════════════════════
   Skin: EduSafe (Top Nav) — default brand
   Full copy of edusafe-light as the working baseline; the glass
   redesign of the EA5 panel lives here and nowhere else (TK-725).
   ══════════════════════════════════════════════════════════════ */

:root {
    /* ── General ── */
    --font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --accent: #293969;
    --accent-dim: rgba(41, 57, 105, 0.15);
    --danger: #ef4444;
    --danger-dim: rgba(239, 68, 68, 0.08);

    /* ── Top nav bar ── */
    --topnav-h: 56px;
    --topnav-bg: #ffffff;
    --topnav-border: #e2e8f0;
    --topnav-text: #64748b;
    --topnav-text-active: #0f172a;
    --topnav-item-active-bg: rgba(41, 57, 105, 0.08);
    --topnav-item-hover-bg: #f1f5f9;

    /* ── Content area ── */
    --content-bg: #f1f5f9;
    --content-text: #1e293b;
    --content-text-muted: #64748b;
    --content-heading: #0f172a;

    /* ── Borders ── */
    --border-subtle: #e2e8f0;
    --border-light: #cbd5e1;

    /* ── CRUD ── */
    --crud-bg: #ffffff;
    --crud-header-text: #64748b;
    --crud-cell-text: #1e293b;
    --crud-row-hover: rgba(41, 57, 105, 0.04);
    --crud-row-border: #e2e8f0;
    --crud-link: #293969;

    /* ── Inputs ── */
    --input-bg: #ffffff;
    --input-border: #cbd5e1;
    --input-text: #1e293b;
    --input-focus-border: #293969;
    --input-focus-shadow: 0 0 0 3px rgba(41, 57, 105, 0.15);
    --input-placeholder: #94a3b8;

    /* ── Buttons ── */
    --btn-primary-bg: #293969;
    --btn-primary-border: #293969;
    --btn-primary-text: #ffffff;
    --btn-primary-hover: #4570b0;
    --btn-secondary-bg: #f1f5f9;

    /* ── Labels ── */
    --label-text: #475569;

    /* ── Switch ── */
    --switch-active-bg: #8bc34a;
    --switch-active-border: #8bc34a;

    /* ── Paginator ── */
    --paginator-text: #64748b;
    --paginator-active-bg: rgba(41, 57, 105, 0.1);
    --paginator-active-border: rgba(41, 57, 105, 0.3);
    --paginator-active-text: #293969;
    --paginator-disabled: #cbd5e1;

    /* ── Sidebar (needed for shared components) ── */
    --sidebar-bg: #ffffff;
    --sidebar-bg-subtle: #f8fafc;
    --sidebar-text: #64748b;
    --sidebar-text-bright: #0f172a;
    --sidebar-border: #e2e8f0;
    --sidebar-dropdown-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);

    /* ── EduSafe-specific (dashboard, team lists) ── */
    --overlay-strong: rgba(0, 0, 0, 0.06);
    --avatar-alt-1: #6366f1;
    --avatar-alt-2: #f97316;
    --avatar-alt-3: #10b981;

    /* ── EA5 native form variables ── */
    --form-fieldset-header-color: #475569;
    --form-fieldset-header-border-color: #e2e8f0;
    --form-fieldset-icon-color: #64748b;
    --form-fieldset-help-color: #64748b;
    --form-fieldset-border-color: #e2e8f0;

    /* ── EasyAdmin/Bootstrap overrides ── */
    --body-bg: #f1f5f9;
    --content-panel-bg: #ffffff;
    --bs-body-bg: #f1f5f9;
    --bs-body-color: #1e293b;
    --bs-card-bg: #ffffff;
    --bs-border-color: #e2e8f0;
    --bs-table-bg: transparent;
    --bs-table-color: #1e293b;
    --bs-table-border-color: #e2e8f0;
    --bs-table-hover-bg: rgba(41, 57, 105, 0.04);
    --bs-link-color: #293969;
    --bs-link-hover-color: #1f2b4f;

    /* ── Public pages ── */
    --public-bg: #f8fafc;
    --public-text: #334155;
    --public-heading: #0f172a;
    --public-label: #64748b;
    --public-box-bg: #ffffff;
    --public-box-border: #e2e8f0;
    --public-btn-bg: #293969;
    --public-btn-hover: #1f2b4f;
    --public-btn-text: #ffffff;
    --public-error-bg: rgba(239, 68, 68, 0.08);
    --public-error-border: rgba(239, 68, 68, 0.2);
    --public-error-text: #dc2626;

    /* ── Glass surfaces (EA5 panel — TK-725) ──
       Neutral frosted sheen mirroring the detail modal's outer panel; low
       saturation so the backdrop never drenches the card. Only this brand
       defines these, so Fomento / edusafe-light / edusafe-dark stay opaque. */
    --glass-bg: linear-gradient(135deg, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.3));
    --glass-border: rgba(255, 255, 255, 0.65);
    --glass-blur: blur(20px) saturate(115%);
    --glass-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75), 0 16px 40px rgba(15, 23, 42, 0.14);

    /* ── Login screen (TK-726) ── consumed by the shared login template via
       var(..., fallback); only this brand defines them, so other brands keep
       their opaque login. */
    --login-backdrop:
        radial-gradient(1000px 620px at 50% 80%, rgba(41, 57, 105, 0.30), transparent 62%);
    --login-card-bg: linear-gradient(135deg, rgba(255, 255, 255, 0.32), rgba(255, 255, 255, 0.14));
    --login-card-border: rgba(255, 255, 255, 0.55);
    --login-card-blur: blur(22px) saturate(135%);
    --login-card-shadow: 0 20px 50px rgba(15, 23, 42, 0.22);
    --login-label-transform: uppercase;
    --login-label-spacing: 0.08em;
    --login-label-color: #64748b;
    --login-label-size: 0.72rem;
}

/* User menu: hide dropdown, keep avatar + name */
.user-menu-wrapper .dropdown-menu {
    display: none !important;
}
.user-menu-wrapper .dropdown-toggle::after {
    display: none !important;
}
.user-menu-wrapper .dropdown-toggle {
    pointer-events: none !important;
}

/* ══════════════════════════════════════════════════════════════
   Glass panel (TK-725)
   skin.css loads before the shared component CSS, so these rules win
   with !important (+ body.ea specificity for the ambient, which the
   shared rule sets !important). Nothing outside this file changes.
   ══════════════════════════════════════════════════════════════ */

/* Solid, diffused NEUTRAL backdrop (NOT glass itself) — a soft defocused grey
   surface, like the page behind the detail modal, for the glass cards to float
   over. Muted grey-blue tints give depth without drenching the frost in colour. */
body.ea .main-content,
body.ea .content-wrapper {
    background-color: #eef2f8 !important;
    background-image:
        radial-gradient(640px 520px at 12% 14%, rgba(99, 130, 200, 0.24), transparent 60%),
        radial-gradient(560px 560px at 30% 84%, rgba(120, 142, 178, 0.16), transparent 62%),
        radial-gradient(700px 540px at 82% 8%, rgba(120, 170, 220, 0.22), transparent 58%),
        radial-gradient(600px 640px at 94% 76%, rgba(140, 150, 205, 0.18), transparent 60%),
        radial-gradient(520px 460px at 56% 48%, rgba(110, 140, 205, 0.14), transparent 64%) !important;
    background-attachment: fixed !important;
    background-repeat: no-repeat !important;
}

/* The page-title band paints an opaque --content-bg by default, which reads as
   a flat rectangle over the ambient. Let the backdrop flow behind it. */
body.ea .content-header,
body.ea .content-top {
    background: transparent !important;
}

/* Dashboard only (detected via .dash-stats): drop the "Panel de control"
   title band and lift the cards up against the topnav. */
body.ea .content:has(.dash-stats) .content-header {
    display: none !important;
}
body.ea .content:has(.dash-stats) .content-body {
    padding-top: 0 !important;
    margin-top: 18px !important;
}

/* Dashboard cards: floating glass sheets — frosted-white sheen over the blurred
   backdrop, a bright glass edge and a soft drop shadow so they float. */
.dash-stat-card,
.dash-card {
    background: var(--glass-bg) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
}

/* Settings / user menu (gear dropdown) as glass too. (body.ea beats the
   same-specificity opaque rule in easyadmin-overrides.css.) */
body.ea .dropdown-settings .dropdown-menu {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.06)) !important;
    -webkit-backdrop-filter: blur(26px) saturate(140%);
    backdrop-filter: blur(26px) saturate(140%);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
}

/* Topnav floating submenus as glass too (the bar itself stays white). A touch
   more transparent than the cards; stronger blur keeps the items legible. */
.topnav-bar__dropdown {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.36), rgba(255, 255, 255, 0.18)) !important;
    -webkit-backdrop-filter: blur(22px) saturate(125%);
    backdrop-filter: blur(22px) saturate(125%);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
}

/* ── CRUD list pages (all of them, via body.ea-index) ──
   The datagrid area becomes one floating glass card and the per-row white
   fills dissolve so the card reads as a single sheet, not stacked rows. */
body.ea-index .content-body {
    background: var(--glass-bg) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
    border-radius: 14px !important;
    padding: 6px 10px !important;
    overflow: hidden;
}
body.ea-index .content-panel,
body.ea-index .content-panel-header,
body.ea-index .content-panel-body,
body.ea-index .content-panel-footer,
body.ea-index table.datagrid,
body.ea-index table.datagrid thead th,
body.ea-index table.datagrid tbody tr,
body.ea-index table.datagrid tbody tr > * {
    background: transparent !important;
}
body.ea-index table.datagrid tbody tr:hover,
body.ea-index table.datagrid tbody tr:hover > * {
    background: rgba(255, 255, 255, 0.34) !important;
}
/* Kill the datagrid's own border/radius so it isn't a second card inside the
   content-body glass card. */
body.ea-index table.datagrid {
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    margin: 0 !important;
}
/* And the paginator footer's own border. */
body.ea-index .content-panel-footer {
    border: 0 !important;
}

/* Page title (list / form pages): minimalist muted heading so it sits quietly
   over the backdrop. */
body.ea .content-header-title .title {
    font-size: 0.85rem !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.08em !important;
    color: var(--content-text-muted) !important;
}

/* Help page: dark-glass TOC sidebar + frosted content card over the page
   backdrop (no boxing content-body around the two-column layout). */
body.ea .content-body:has(.help-page) {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
}
.help-page__sidebar {
    background: rgba(15, 23, 42, 0.88) !important;
    -webkit-backdrop-filter: blur(16px) saturate(140%);
    backdrop-filter: blur(16px) saturate(140%);
    border: 1px solid rgba(255, 255, 255, 0.12) !important;
}
.help-page__content {
    background: var(--glass-bg) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
}

/* Onboarding wizard: frosted glass card over the page backdrop. */
body.ea .content-body:has(.onboarding-wizard) {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
}
.onboarding-wizard {
    background: var(--glass-bg) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
}

/* Custom controller pages (e.g. extension version) wrap content in a white
   .content-panel — turn it into a floating glass card. */
body.ea .content-panel {
    background: var(--glass-bg) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
    border-radius: 14px !important;
}
body.ea .content-panel-header,
body.ea .content-panel-body {
    background: transparent !important;
}

/* ── Edit / New forms (all CRUD, via body.ea-edit / body.ea-new) ──
   The form panel becomes one glass card; fields are translucent so they sit on
   the card instead of reading as solid white boxes. */
body.ea-edit .content-body,
body.ea-new .content-body {
    background: var(--glass-bg) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
    border-radius: 14px !important;
}
body.ea-edit .content-body .form-control,
body.ea-edit .content-body .form-select,
body.ea-edit .content-body .ts-control,
body.ea-new .content-body .form-control,
body.ea-new .content-body .form-select,
body.ea-new .content-body .ts-control {
    background: rgba(255, 255, 255, 0.62) !important;
    -webkit-backdrop-filter: blur(8px) saturate(120%);
    backdrop-filter: blur(8px) saturate(120%);
    border: 1px solid rgba(148, 163, 184, 0.5) !important;
    box-shadow: none !important;
}

/* Boolean switches (green) and checkboxes (indigo) default to off-brand
   colours — force the brand primary for both the switch track and the
   checkbox fill (the white knob/check background-image is preserved). */
body.ea .form-check-input:checked,
body.ea .form-switch .form-check-input:checked,
body.ea table.datagrid .form-switch .form-check-input:checked {
    background-color: var(--switch-active-bg) !important;
    border-color: var(--switch-active-border) !important;
}

/* ── Embedded CRUD (only inside the org-tree modal iframe; body.ea-embed) ──
   Make the page surfaces transparent so the modal's frosted-glass dialog shows
   uniformly behind the cards (instead of the opaque white from admin-embed.css
   / the page gradient). The content cards keep their own glass. Scoped to
   .ea-embed → the full-page CRUDs are untouched. */
body.ea-embed,
body.ea-embed .wrapper,
body.ea-embed .main-content,
body.ea-embed .content,
body.ea-embed .content-wrapper {
    background: transparent !important;
    background-image: none !important;
}
/* Embed edit/new: Save action moved to the bottom (mirrors the detail's hero
   layout) so it doesn't clash with the hero card. */
body.ea-embed .embed-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 16px;
}
/* Mirror the detail: ONE frosted dialog with white solid cards inside (not
   glass-on-glass). Drop the form's own glass card and make each fieldset a
   white section card like the detail sections. */
body.ea-embed.ea-edit .content-body,
body.ea-embed.ea-new .content-body {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}
body.ea-embed .form-fieldset {
    background: #fff !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 14px !important;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05) !important;
    padding: 20px 22px !important;
    margin-top: 16px !important;
}
body.ea-embed .form-fieldset .form-fieldset-header {
    padding-bottom: 12px !important;
    margin-bottom: 14px !important;
}
/* Embed fieldset forms (stage/cycle/grade): full-width fieldsets stacked, but
   sibling language fieldsets (.edit-lang-col) sit two-up in the same row.
   Scoped to forms that actually have fieldsets so tabbed forms aren't flexed. */
body.ea-embed form.ea-edit-form:has(.form-fieldset),
body.ea-embed form.ea-new-form:has(.form-fieldset) {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: flex-start;
}
body.ea-embed form.ea-edit-form > .form-fieldset,
body.ea-embed form.ea-new-form > .form-fieldset {
    flex: 1 1 100%;
    margin-top: 0 !important;
}
body.ea-embed form .form-fieldset.edit-lang-col {
    flex: 1 1 calc(50% - 8px);
}

/* Embed tabbed forms (organization/center/company): the whole tabbed form is
   ONE white card under the hero (matching the detail's white sections). */
body.ea-embed form.ea-edit-form:has(.nav-tabs),
body.ea-embed form.ea-new-form:has(.nav-tabs) {
    background: #fff !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 14px !important;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05) !important;
    padding: 20px 22px !important;
    margin-top: 16px !important;
}

/* Edit/New modal only: pull the content up to the top edge (overlapping the
   close X is acceptable here). The detail keeps the dialog's comfortable top
   gutter — it must not be touched. */
body.ea-embed.ea-edit .detail-hero,
body.ea-embed.ea-new .detail-hero {
    margin-top: -34px !important;
}

/* Form tabs: the active tab text, icon and underline default to a periwinkle
   blue (#5c70d6) — force the brand primary instead. */
.nav-tabs .nav-link.active,
.nav-tabs .nav-link.active i {
    color: var(--accent) !important;
}
.nav-tabs .nav-link.active::after {
    background-color: var(--accent) !important;
}
.nav-tabs .nav-link.active {
    border-bottom-color: var(--accent) !important;
}

/* Generic CRUD detail (tabbed key/value, e.g. User): content-body becomes a
   floating glass card. The hero details (admin-detail-hero.css) and the
   Evidence custom detail (below) override this. */
body.ea-detail .content-body {
    background: var(--glass-bg) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border) !important;
    box-shadow: var(--glass-shadow) !important;
    border-radius: 14px !important;
}

/* ── Evidence custom detail (body.ea-detail-Evidence) ──
   Drop the white box that wraps everything and float the three fieldsets as
   glass cards over the backdrop. */
body.ea-detail-Evidence .content-body {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
}
body.ea-detail-Evidence .form-fieldset {
    background: var(--glass-bg) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid rgba(255, 255, 255, 0.5) !important;
    box-shadow: var(--glass-shadow) !important;
    border-radius: 14px !important;
    padding: 20px 22px !important;
}
/* Thin line engraved into the glass under each card title (dark hairline +
   light highlight beneath). */
body.ea-detail-Evidence .form-fieldset-header {
    padding-bottom: 12px !important;
    margin-bottom: 14px !important;
    border-bottom: 1px solid rgba(15, 23, 42, 0.22) !important;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.9) !important;
}

/* The search bar only makes sense on list pages — hide it on form/detail. */
body.ea-edit .topnav-search-bar,
body.ea-new .topnav-search-bar,
body.ea-detail .topnav-search-bar {
    display: none !important;
}

/* Search box as glass too — floating frosted field (soft edge, drop shadow). */
.topnav-search-bar .form-control[type="search"] {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.42), rgba(255, 255, 255, 0.22)) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    border: 1px solid rgba(255, 255, 255, 0.35) !important;
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.16) !important;
}
