/* ============================================================
   GESACA · Sistema de interfaz (tokens + componentes base)
   -----------------------------------------------------------
   - Tipografía: Inter variable (auto-alojada en web/fonts/)
   - Tema claro/oscuro: automático (prefers-color-scheme) con
     override manual mediante [data-theme] en <html>
   - Micro-interacciones en CSS puro. Velocidad: --gs-dur (400 ms)
   - Los componentes usan prefijo .gs-* para no chocar con
     Bootstrap ni con el tema Falcon en páginas aún sin migrar.
   ============================================================ */

/* ---- Tipografía (Inter variable, subconjunto latin = cubre español;
   ejes opsz+wght; opsz mejora la legibilidad en tamaños pequeños) ---- */
@font-face {
    font-family: 'Inter var';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/inter-latin-standard-normal.woff2') format('woff2');
}

@font-face {
    font-family: 'Inter var';
    font-style: italic;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/inter-latin-standard-italic.woff2') format('woff2');
}

/* ============================================================
   1 · TOKENS
   ============================================================ */
:root {
    --gs-font: 'Inter var', 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

    --gs-bg: #F8F9FA;
    --gs-surface: #FFFFFF;
    --gs-surface-2: #F1F3F5;
    --gs-ink: #1C2430;
    --gs-ink-strong: #072436; /* petróleo original: titulares */
    --gs-muted: #5C6773;
    --gs-border: #E3E6EA;

    --gs-primary: #0E3A54; /* petróleo aclarado */
    --gs-primary-hover: #15496A;
    --gs-primary-ink: #FFFFFF;

    --gs-accent: #0E7C7B; /* teal: foco, enlaces, activo */
    --gs-accent-hover: #0B605F;
    --gs-accent-ink: #FFFFFF;

    --gs-danger: #DC3545;
    --gs-warn-bg: #FFF8E6;
    --gs-warn-line: #F0D385;
    --gs-warn-ink: #B6820A;
    --gs-ok-bg: #E9F5EF;
    --gs-ok-line: #A7D3BF;
    --gs-ok-ink: #0F6B45;

    --gs-field: #EEF1F3;
    --gs-field-line: #C4CDD5;

    /* Panel de marca del login (se mantiene oscuro en ambos temas) */
    --gs-brand-panel: #072436;
    --gs-brand-panel-ink: #DCE7EC;
    --gs-brand-motif: rgba(255, 255, 255, .05);

    --gs-shadow: 0 1px 2px rgba(7, 36, 54, .05), 0 2px 8px -4px rgba(7, 36, 54, .10);
    --gs-shadow-pop: 0 4px 12px -2px rgba(7, 36, 54, .12), 0 8px 24px -8px rgba(7, 36, 54, .16);
    --gs-ring: var(--gs-accent);

    --gs-radius: 10px;
    --gs-radius-sm: 8px;

    --gs-dur: 400ms; /* label del campo */
    --gs-dur-fast: 180ms; /* hovers de botón/enlace */
    --gs-ease: cubic-bezier(.4, 0, .2, 1);
}

/* Tema oscuro automático (si el sistema lo pide y no se ha forzado claro) */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        --gs-bg: #0A1A24;
        --gs-surface: #102E40;
        --gs-surface-2: #16384A;
        --gs-ink: #E8EDF1;
        --gs-ink-strong: #F4F8FB;
        --gs-muted: #8DA0AE;
        --gs-border: #1E3A4C;
        --gs-primary: #2C6E8F;
        --gs-primary-hover: #3A82A6;
        --gs-primary-ink: #FFFFFF;
        --gs-accent: #38BDC9;
        --gs-accent-hover: #5FD0DA;
        --gs-accent-ink: #04202B;
        --gs-danger: #FF6B6B;
        --gs-warn-bg: rgba(224, 164, 0, .14);
        --gs-warn-line: rgba(224, 164, 0, .40);
        --gs-warn-ink: #E6B866;
        --gs-ok-bg: rgba(56, 189, 140, .14);
        --gs-ok-line: rgba(56, 189, 140, .40);
        --gs-ok-ink: #6BCF9E;
        --gs-field: #16384A;
        --gs-field-line: #2A4C60;
        --gs-brand-panel: #05202F;
        --gs-brand-panel-ink: #B9CDD6;
        --gs-brand-motif: rgba(255, 255, 255, .04);
        --gs-shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 2px 8px -4px rgba(0, 0, 0, .45);
        --gs-shadow-pop: 0 8px 24px -8px rgba(0, 0, 0, .6);
    }
}

/* Tema oscuro forzado manualmente */
:root[data-theme="dark"] {
    --gs-bg: #0A1A24;
    --gs-surface: #102E40;
    --gs-surface-2: #16384A;
    --gs-ink: #E8EDF1;
    --gs-ink-strong: #F4F8FB;
    --gs-muted: #8DA0AE;
    --gs-border: #1E3A4C;
    --gs-primary: #2C6E8F;
    --gs-primary-hover: #3A82A6;
    --gs-primary-ink: #FFFFFF;
    --gs-accent: #38BDC9;
    --gs-accent-hover: #5FD0DA;
    --gs-accent-ink: #04202B;
    --gs-danger: #FF6B6B;
    --gs-warn-bg: rgba(224, 164, 0, .14);
    --gs-warn-line: rgba(224, 164, 0, .40);
    --gs-warn-ink: #E6B866;
    --gs-ok-bg: rgba(56, 189, 140, .14);
    --gs-ok-line: rgba(56, 189, 140, .40);
    --gs-ok-ink: #6BCF9E;
    --gs-field: #16384A;
    --gs-field-line: #2A4C60;
    --gs-brand-panel: #05202F;
    --gs-brand-panel-ink: #B9CDD6;
    --gs-brand-motif: rgba(255, 255, 255, .04);
    --gs-shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 2px 8px -4px rgba(0, 0, 0, .45);
    --gs-shadow-pop: 0 8px 24px -8px rgba(0, 0, 0, .6);
}

/* ============================================================
   2 · TEMA (opt-in): envolver una página/zona con class="gs-theme"
   ============================================================ */
/* Tamaño base del texto: 14px (por defecto el navegador usa 16px).
   Se fija en body (no en html) para no alterar la base rem de Bootstrap. */
body {
    font-size: 14px;
}

.gs-theme {
    color: var(--gs-ink);
    font-family: var(--gs-font);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

.gs-theme h1, .gs-theme h2, .gs-theme h3 {
    color: var(--gs-ink-strong);
    letter-spacing: -.01em
}

/* ============================================================
   3 · CAMPOS  (patrón "Sutil": relleno + subrayado + label variable)
   Marcado: <input placeholder=" "> seguido INMEDIATAMENTE del <label>,
   ambos dentro de .gs-field__ctrl, todo dentro de .gs-field
   ============================================================ */
.gs-field {
    position: relative;
    margin-bottom: 18px
}

.gs-field__ctrl {
    position: relative;
    background: var(--gs-field);
    border-radius: var(--gs-radius-sm) var(--gs-radius-sm) 0 0;
    border-bottom: 2px solid var(--gs-field-line);
    transition: border-color var(--gs-dur) var(--gs-ease), background var(--gs-dur) var(--gs-ease);
}

.gs-field__ctrl::after { /* subrayado que crece desde la izquierda */
    content: "";
    position: absolute;
    left: 0;
    bottom: -2px;
    height: 2px;
    width: 100%;
    background: var(--gs-accent);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--gs-dur) var(--gs-ease);
}

.gs-field__ctrl:focus-within {
    background: color-mix(in srgb, var(--gs-field) 84%, var(--gs-accent) 16%)
}

.gs-field__ctrl:focus-within::after {
    transform: scaleX(1)
}

.gs-field input,
.gs-field select,
.gs-field textarea {
    width: 100%;
    border: 0;
    background: transparent;
    outline: none;
    box-shadow: none;
    color: var(--gs-ink);
    font: inherit;
    font-size: 15px;
    padding: 23px 14px 9px;
}

/* Sin marco al enfocar: se neutraliza también el foco de Bootstrap .form-control */
.gs-field input:focus,
.gs-field select:focus,
.gs-field textarea:focus {
    box-shadow: none;
    outline: none
}

/* Neutralizar el estilo de validación de Bootstrap (usamos el subrayado rojo) */
.gs-field input.is-invalid,
.gs-field select.is-invalid,
.gs-field textarea.is-invalid {
    border: 0;
    box-shadow: none;
    background-image: none;
    padding-right: 14px
}

.gs-field label {
    position: absolute;
    left: 14px;
    top: 15px;
    color: var(--gs-muted);
    font-size: 15px;
    pointer-events: none;
    margin: 0;
    font-variation-settings: "wght" 400;
    transform-origin: left top;
    transition: transform var(--gs-dur) var(--gs-ease),
    color var(--gs-dur) var(--gs-ease),
    font-variation-settings var(--gs-dur) var(--gs-ease);
}

.gs-field input:focus + label,
.gs-field input:not(:placeholder-shown) + label,
.gs-field textarea:focus + label,
.gs-field textarea:not(:placeholder-shown) + label {
    transform: translateY(-9px) scale(.72);
    color: var(--gs-accent);
    font-variation-settings: "wght" 600;
}

/* Icono dentro del campo (p. ej. mostrar/ocultar contraseña) */
.gs-field__icon {
    position: absolute;
    right: 8px;
    top: 16px;
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    background: none;
    border: 0;
    cursor: pointer;
    color: var(--gs-muted);
    border-radius: var(--gs-radius-sm);
    z-index: 2;
}

.gs-field__icon:hover {
    color: var(--gs-accent);
    background: color-mix(in srgb, var(--gs-accent) 12%, transparent)
}

.gs-field:has(.gs-field__icon) input {
    padding-right: 46px
}

/* Estado de error */
.gs-field__ctrl:has(input.is-invalid) {
    border-bottom-color: var(--gs-danger)
}

.gs-field__ctrl:has(input.is-invalid)::after {
    background: var(--gs-danger)
}

.gs-field__error {
    color: var(--gs-danger);
    font-size: 12.5px;
    margin-top: 5px;
    min-height: 1em;
    display: block
}

/* ============================================================
   4 · BOTONES
   ============================================================ */
.gs-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 0;
    border-radius: 10px;
    cursor: pointer;
    text-decoration: none;
    font: inherit;
    font-weight: 600;
    font-size: 15px;
    letter-spacing: .01em;
    padding: 13px 20px;
    transition: background var(--gs-dur-fast) var(--gs-ease),
    transform var(--gs-dur-fast) var(--gs-ease),
    box-shadow var(--gs-dur-fast) var(--gs-ease);
}

.gs-btn--primary {
    background: var(--gs-primary);
    color: var(--gs-primary-ink)
}

.gs-btn--primary:hover {
    background: var(--gs-primary-hover);
    transform: translateY(-1px);
    box-shadow: 0 8px 20px -8px color-mix(in srgb, var(--gs-primary) 70%, transparent)
}

.gs-btn--accent {
    background: var(--gs-accent);
    color: var(--gs-accent-ink)
}

.gs-btn--accent:hover {
    background: var(--gs-accent-hover);
    transform: translateY(-1px)
}

.gs-btn--ghost {
    background: transparent;
    color: var(--gs-primary);
    border: 1px solid var(--gs-border)
}

.gs-btn--ghost:hover {
    background: var(--gs-surface-2)
}

.gs-btn--secondary {
    background: var(--gs-surface-2);
    color: var(--gs-ink);
    border: 1px solid var(--gs-border)
}

.gs-btn--secondary:hover {
    background: color-mix(in srgb, var(--gs-ink) 8%, var(--gs-surface-2));
    color: var(--gs-ink)
}

.gs-btn--block {
    width: 100%
}

.gs-btn:disabled,
.gs-btn[disabled],
.gs-btn.disabled {
    opacity: .5;
    cursor: not-allowed;
    box-shadow: none;
    transform: none
}

.gs-btn:active {
    transform: translateY(0)
}

/* ============================================================
   5 · ENLACES Y CONTROLES
   ============================================================ */
.gs-link {
    color: var(--gs-accent);
    font-weight: 600;
    text-decoration: none;
}

.gs-link:hover {
    color: var(--gs-accent-hover);
    text-decoration: underline
}

.gs-check {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-size: 14px;
    color: var(--gs-ink);
    cursor: pointer;
    user-select: none;
    margin: 0
}

.gs-check input {
    width: 17px;
    height: 17px;
    accent-color: var(--gs-accent);
    cursor: pointer;
    margin: 0
}

/* ============================================================
   6 · SUPERFICIES
   ============================================================ */
.gs-card {
    background: var(--gs-surface);
    border: 1px solid var(--gs-border);
    border-radius: var(--gs-radius);
    box-shadow: var(--gs-shadow);
}

/* ============================================================
   7 · LOGIN / AUTENTICACIÓN
   ============================================================ */
.gs-auth {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 28px;
    background: var(--gs-bg);
    color: var(--gs-ink);
    font-family: var(--gs-font);
    -webkit-font-smoothing: antialiased;
    transition: background .3s var(--gs-ease), color .3s var(--gs-ease);
}

.gs-auth__card {
    width: min(920px, 100%);
    display: grid;
    grid-template-columns:1fr 1fr;
    overflow: hidden;
}

.gs-auth__brand {
    position: relative;
    background: var(--gs-brand-panel);
    color: var(--gs-brand-panel-ink);
    padding: 48px 44px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    overflow: hidden;
    isolation: isolate;
}

.gs-auth__brand::before { /* hairlines tipo horario */
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: repeating-linear-gradient(to bottom, transparent 0 46px, var(--gs-brand-motif) 46px 47px);
}

.gs-auth__brand::after { /* bloques de "sesión" */
    content: "";
    position: absolute;
    z-index: -1;
    right: -40px;
    top: 96px;
    width: 200px;
    height: 340px;
    background: linear-gradient(var(--gs-brand-motif), var(--gs-brand-motif)) 0 0/100% 64px no-repeat,
    linear-gradient(var(--gs-brand-motif), var(--gs-brand-motif)) 0 110px/70% 90px no-repeat,
    linear-gradient(var(--gs-brand-motif), var(--gs-brand-motif)) 0 230px/85% 48px no-repeat;
    border-radius: 10px;
}

.gs-auth__wordmark {
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 800;
    letter-spacing: .14em;
    font-size: 20px;
    color: #fff
}

.gs-auth__dot {
    width: 11px;
    height: 11px;
    border-radius: 3px;
    background: var(--gs-accent)
}

.gs-auth__title {
    font-size: 29px;
    line-height: 1.18;
    font-weight: 700;
    letter-spacing: -.02em;
    color: #fff;
    margin: 0 0 12px;
    max-width: 15ch
}

.gs-auth__lead {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--gs-brand-panel-ink);
    opacity: .85;
    max-width: 34ch
}

.gs-auth__foot {
    font-size: 12px;
    opacity: .6;
    letter-spacing: .02em
}

.gs-auth__form {
    padding: 48px 44px;
    display: flex;
    flex-direction: column;
    justify-content: center
}

.gs-auth__eyebrow {
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--gs-accent)
}

.gs-auth__form h2 {
    font-size: 23px;
    font-weight: 700;
    letter-spacing: -.01em;
    margin: 6px 0 26px;
    color: var(--gs-ink-strong)
}

.gs-auth__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: 6px 0 24px
}

.gs-auth__help {
    margin-top: 22px;
    text-align: center;
    font-size: 13px;
    color: var(--gs-muted)
}

.gs-theme-toggle {
    position: fixed;
    top: 18px;
    right: 18px;
    z-index: 10;
    background: var(--gs-surface);
    color: var(--gs-muted);
    border: 1px solid var(--gs-border);
    border-radius: 999px;
    padding: 8px 14px;
    font: 600 13px var(--gs-font);
    cursor: pointer;
    box-shadow: var(--gs-shadow);
}

.gs-theme-toggle:hover {
    color: var(--gs-ink)
}

@media (max-width: 760px) {
    .gs-auth__card {
        grid-template-columns:1fr
    }

    .gs-auth__brand {
        padding: 32px 30px
    }

    .gs-auth__brand::after {
        display: none
    }

    .gs-auth__title {
        font-size: 23px
    }

    .gs-auth__lead {
        display: none
    }

    .gs-auth__form {
        padding: 34px 30px
    }
}

/* ============================================================
   8 · FOCO ACCESIBLE Y MOVIMIENTO REDUCIDO
   ============================================================ */
.gs-btn:focus-visible,
.gs-link:focus-visible,
.gs-check input:focus-visible,
.gs-theme-toggle:focus-visible,
.gs-newmenu > summary:focus-visible,
.gs-newmenu__list a:focus-visible,
.gs-content .gs-grid td.gs-actions a:focus-visible,
.gs-content .gs-grid tbody td:not(.gs-actions) a:focus-visible,
.gs-content .gs-grid .page-link:focus-visible {
    outline: 2px solid var(--gs-ring);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    * {
        transition-duration: .01ms !important
    }
}

/* ============================================================
   9 · TOPBAR, CONTENIDO Y BUSCADOR
   ============================================================ */
.gs-topbar {
    position: sticky;
    top: 0;
    z-index: 30;
    display: flex;
    align-items: center;
    gap: 14px;
    height: 60px;
    padding: 0 20px;
    background: var(--gs-surface);
    border-bottom: 1px solid var(--gs-border);
}

.gs-topbar__menu {
    display: none
}

.gs-topbar__brand {
    display: flex;
    align-items: center;
    gap: 9px;
    font-weight: 800;
    letter-spacing: .12em;
    font-size: 16px;
    color: var(--gs-ink-strong);
    text-decoration: none;
    white-space: nowrap;
    flex: 0 0 auto
}

.gs-topbar__dot {
    width: 10px;
    height: 10px;
    border-radius: 3px;
    background: var(--gs-accent);
    flex: 0 0 auto
}

.gs-content {
    flex: 1 1 auto;
    padding: 24px;
    min-width: 0
}

.gs-footer {
    padding: 24px 4px 4px;
    color: var(--gs-muted);
    font-size: 12.5px;
    text-align: center
}

.gs-footer a {
    color: var(--gs-muted)
}

.gs-footer a:hover {
    color: var(--gs-accent)
}

/* --- Botón de icono (hamburguesa / colapsar) --- */
.gs-iconbtn {
    display: inline-grid;
    place-items: center;
    width: 38px;
    height: 38px;
    flex: 0 0 auto;
    background: none;
    border: 0;
    border-radius: 8px;
    cursor: pointer;
    color: var(--gs-muted);
    font-size: 20px;
}

.gs-iconbtn:hover {
    background: var(--gs-surface-2);
    color: var(--gs-ink)
}

.gs-iconbtn:focus-visible {
    outline: 2px solid var(--gs-ring);
    outline-offset: 2px
}

/* --- Buscador en la topbar --- */
.gs-search {
    position: relative;
    flex: 1 1 340px;
    max-width: 440px
}

.gs-search__icon {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--gs-muted);
    font-size: 15px;
    pointer-events: none
}

.gs-search input {
    width: 100%;
    border: 1px solid var(--gs-border);
    background: var(--gs-bg);
    color: var(--gs-ink);
    border-radius: 9px;
    padding: 9px 12px 9px 36px;
    font: inherit;
    font-size: 14px;
    outline: none;
    transition: border-color .15s var(--gs-ease), box-shadow .15s var(--gs-ease);
}

.gs-search input:focus {
    border-color: var(--gs-accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--gs-accent) 22%, transparent)
}

.gs-search__dropdown {
    position: absolute;
    top: calc(100% + 5px);
    left: 0;
    right: 0;
    z-index: 50;
    background: var(--gs-surface);
    border: 1px solid var(--gs-border);
    border-radius: 10px;
    box-shadow: var(--gs-shadow-pop);
    max-height: 420px;
    overflow-y: auto;
    padding: 6px;
    display: none;
}

.gs-search__dropdown.show {
    display: block
}

.gs-search__group {
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--gs-muted);
    padding: 8px 10px 4px
}

.gs-search__item {
    display: block;
    padding: 7px 10px;
    border-radius: 7px;
    color: var(--gs-ink);
    text-decoration: none;
    font-size: 13.5px
}

.gs-search__item:hover, .gs-search__item.active {
    background: color-mix(in srgb, var(--gs-accent) 14%, transparent)
}

.gs-search__sep {
    height: 1px;
    background: var(--gs-border);
    margin: 4px 0
}

.gs-spacer {
    flex: 1 1 auto
}


/* ============================================================
   10 · DASHBOARD (página principal)
   ============================================================ */
.dash {
    max-width: 1280px;
    margin: 0 auto
}

.dash-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 16px;
    flex-wrap: wrap
}

.dash-ctx {
    color: var(--gs-muted);
    font-size: 13.5px
}

.dash-ctx b {
    color: var(--gs-ink-strong);
    font-weight: 600
}

/* Botón "Nuevo" discreto con dos opciones (details nativo, sin JS) */
.gs-newmenu {
    position: relative
}

.gs-newmenu > summary {
    list-style: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font: 600 13.5px var(--gs-font);
    color: var(--gs-primary);
    background: var(--gs-surface);
    border: 1px solid var(--gs-border);
    border-radius: 9px;
    padding: 8px 13px
}

.gs-newmenu > summary::-webkit-details-marker {
    display: none
}

.gs-newmenu > summary:hover {
    background: var(--gs-surface-2)
}

.gs-newmenu[open] > summary {
    border-color: var(--gs-accent)
}

.gs-newmenu__list {
    position: absolute;
    right: 0;
    top: calc(100% + 6px);
    z-index: 20;
    min-width: 200px;
    background: var(--gs-surface);
    border: 1px solid var(--gs-border);
    border-radius: 10px;
    box-shadow: var(--gs-shadow-pop);
    padding: 6px
}

.gs-newmenu__list a {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 9px 10px;
    border-radius: 7px;
    color: var(--gs-ink);
    text-decoration: none;
    font-size: 13.5px
}

.gs-newmenu__list a:hover {
    background: color-mix(in srgb, var(--gs-accent) 12%, transparent)
}

.gs-newmenu__list i {
    color: var(--gs-accent);
    font-size: 15px
}

/* Distribución lado a lado: calendario (izq) + cursos favoritos (der) */
.dash-grid {
    display: grid;
    grid-template-columns:1.12fr 1fr;
    gap: 20px;
    align-items: start
}

@media (max-width: 1080px) {
    .dash-grid {
        grid-template-columns:1fr
    }
}

/* Cursos favoritos: 2 columnas compactas, se ajustan a su contenido */
.dash-favs {
    columns: 2;
    column-gap: 16px
}

@media (max-width: 640px) {
    .dash-favs {
        columns: 1
    }
}

.fav {
    break-inside: avoid;
    margin: 0 0 16px
}

.fav__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
    padding: 11px 14px;
    border-bottom: 1px solid var(--gs-border)
}

.fav__title {
    font-size: 13px;
    font-weight: 700;
    color: var(--gs-ink-strong);
    line-height: 1.25
}

.fav__ref {
    display: block;
    font-size: 10.5px;
    font-weight: 700;
    color: var(--gs-accent);
    letter-spacing: .04em;
    margin-top: 2px
}

.fav__link {
    font-size: 12px;
    color: var(--gs-accent);
    text-decoration: none;
    font-weight: 600;
    white-space: nowrap;
    padding: 0
}

.fav__link:hover {
    text-decoration: underline;
    color: var(--gs-accent-hover)
}

.fav__body {
    padding: 10px 12px
}

.fav__row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 9px;
    border-radius: 9px;
    margin-bottom: 6px;
    text-decoration: none;
    color: inherit
}

.fav__row:last-child {
    margin-bottom: 0
}

.fav__row.evento {
    background: var(--gs-warn-bg)
}

.fav__row.tarea {
    background: var(--gs-ok-bg)
}

.fav__row:hover {
    filter: brightness(.975)
}

.fav__badge {
    width: 30px;
    height: 30px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    background: var(--gs-surface)
}

.fav__badge.evento {
    color: var(--gs-warn-ink);
    border: 1px solid var(--gs-warn-line)
}

.fav__badge.tarea {
    color: var(--gs-ok-ink);
    border: 1px solid var(--gs-ok-line)
}

.fav__name {
    flex: 1;
    font-size: 13px;
    color: var(--gs-ink);
    line-height: 1.3
}

.fav__empty {
    text-align: center;
    padding: 20px 14px;
    color: var(--gs-muted)
}

.fav__empty i {
    font-size: 24px;
    color: var(--gs-accent);
    opacity: .55
}

.fav__empty p {
    margin: 8px 0 0;
    font-size: 12.5px
}

/* ============================================================
   11 · CRUD GENÉRICO (listado, detalle, formulario)
   Restylea el marcado que emiten QGridView (.gs-grid),
   getBasicModelCardInfo (.gs-detail) y QActiveForm (.gs-form),
   respetando las clases del editor en línea. Scopeado a .gs-content.
   ============================================================ */

/* Modificadores de botón usados aquí */
.gs-btn--sm {
    padding: 8px 14px;
    font-size: 13.5px
}

.gs-btn--danger {
    color: var(--gs-danger);
    background: transparent
}

.gs-btn--danger:hover {
    color: var(--gs-danger);
    background: color-mix(in srgb, var(--gs-danger) 10%, transparent)
}

/* Botón suave tipo pastilla (p. ej. "＋ Nuevo" de listados y subgrids) */
.gs-btn--soft {
    background: var(--gs-surface-2);
    color: var(--gs-primary);
    border: 0;
    border-radius: 20px;
    box-shadow: none
}

.gs-btn--soft:hover {
    background: color-mix(in srgb, var(--gs-accent) 14%, transparent);
    color: var(--gs-accent);
    transform: none;
    box-shadow: none
}

/* ---- Contenedores tipo tarjeta (grid / detalle / formulario) ---- */
.gs-content .gs-grid,
.gs-content .gs-detail,
.gs-content .gs-form {
    background: var(--gs-surface);
    border: 1px solid var(--gs-border);
    border-radius: var(--gs-radius);
    box-shadow: var(--gs-shadow);
    overflow: hidden;
    padding: 0;
}

.gs-content .gs-grid > .card-header,
.gs-content .gs-detail > .card-header {
    padding: 12px 16px;
    background: transparent;
    border-bottom: 1px solid var(--gs-border);
}

.gs-content .gs-grid .card-header .row {
    margin: 0
}

.gs-content .gs-grid .card-header .border-bottom {
    border: 0 !important
}

.gs-content .gs-grid .card-header h5 {
    font-size: 18px;
    color: var(--gs-ink-strong);
    letter-spacing: -.01em;
    margin: 0
}

.gs-content .gs-grid .btn-group {
    gap: 8px
}

/* ---- Tabla del listado (aprovecha las variables de Bootstrap) ---- */
.gs-content .gs-grid .card-body {
    padding: 0
}

.gs-content .gs-grid table {
    margin: 0;
    width: 100%;
    --bs-table-bg: transparent;
    --bs-table-color: var(--gs-ink);
    --bs-table-striped-bg: color-mix(in srgb, var(--gs-surface-2) 55%, transparent);
    --bs-table-striped-color: var(--gs-ink);
    --bs-table-border-color: var(--gs-border);
}

.gs-content .gs-grid thead th {
    background: var(--gs-surface-2);
    color: var(--gs-muted);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 9px 14px;
    border: 0;
    border-bottom: 1px solid var(--gs-border);
    white-space: nowrap;
    vertical-align: middle;
}

.gs-content .gs-grid tbody td {
    border: 0;
    border-bottom: 1px solid var(--gs-border);
    color: var(--gs-ink);
    vertical-align: middle
}

.gs-content .gs-grid tbody tr:hover > * {
    box-shadow: inset 0 0 0 9999px color-mix(in srgb, var(--gs-accent) 8%, transparent)
}

/* Enlaces de contenido (p. ej. el id → detalle) */
.gs-content .gs-grid tbody td:not(.gs-actions) a:hover {
    text-decoration: underline
}

/* Fila de filtros del GridView */
.gs-content .gs-grid thead tr:nth-child(2) th {
    background: var(--gs-surface);
    padding: 6px 8px
}

.gs-content .gs-grid .form-control {
    border: 1px solid var(--gs-border);
    border-radius: 7px;
    font-size: 12.5px;
    padding: 5px 8px;
    box-shadow: none;
    background: var(--gs-bg)
}

.gs-content .gs-grid .form-control:focus {
    border-color: var(--gs-accent);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--gs-accent) 22%, transparent)
}

/* ---- Columna de acciones (lápiz + papelera al inicio) ---- */
.gs-content .gs-grid td.gs-actions,
.gs-content .gs-grid th.gs-actions-h {
    width: 1%;
    white-space: nowrap
}

.gs-content .gs-grid td.gs-actions a {
    display: inline-grid;
    place-items: center;
    width: 15px;
    height: 22px;
    border-radius: 7px;
    color: var(--gs-muted);
    text-decoration: none;
    font-size: 15px;
    vertical-align: middle;
}

.gs-content .gs-grid td.gs-actions a i {
    color: inherit
}

.gs-content .gs-grid td.gs-actions a:hover {
    background: var(--gs-surface-2);
    color: var(--gs-accent)
}

.gs-content .gs-grid td.gs-actions a[data-confirm]:hover {
    color: var(--gs-danger);
    background: color-mix(in srgb, var(--gs-danger) 10%, transparent)
}

/* ---- Editor en línea (respeta las clases reales) ---- */
.gs-content .inline-editable-container {
    display: inline-flex;
    align-items: center;
    gap: 6px
}

.gs-content .inline-editable-value {
    cursor: pointer;
    border-bottom: 1px dashed color-mix(in srgb, var(--gs-muted) 45%, transparent);
    transition: color .12s, border-color .12s
}

.gs-content .inline-editable-value:hover {
    color: var(--gs-accent);
    border-bottom-color: var(--gs-accent)
}

.gs-content .inline-editable-container:hover .inline-edit-icon {
    opacity: .7 !important;
    color: var(--gs-accent) !important
}

/* ---- Paginación ---- */
.gs-content .gs-grid .grid-view > .mt-2 {
    padding: 12px 16px;
    margin-top: 0 !important;
    border-top: 1px solid var(--gs-border)
}

.gs-content .gs-grid .pagination {
    margin: 0;
    gap: 3px
}

.gs-content .gs-grid .page-link {
    border: 1px solid var(--gs-border);
    border-radius: 8px;
    color: var(--gs-ink);
    background: var(--gs-surface);
    min-width: 32px;
    text-align: center
}

.gs-content .gs-grid .page-link:hover {
    background: var(--gs-surface-2)
}

.gs-content .gs-grid .page-item.active .page-link {
    background: var(--gs-primary);
    border-color: var(--gs-primary);
    color: #fff
}

/* ---- Detalle (label / valor) ---- */
.gs-content .gs-detail .card-header h6 {
    font-size: 17px;
    color: var(--gs-ink-strong);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 6px
}

.gs-content .gs-detail .badge {
    background: var(--gs-surface-2) !important;
    color: var(--gs-muted) !important;
    border: 1px solid var(--gs-border) !important;
    font-weight: 600;
    border-radius: 20px;
    padding: 3px 9px
}

.gs-content .gs-detail .card-body {
    background: transparent !important;
    padding: 8px 12px 14px
}

.gs-content .gs-detail .card-body > .border {
    border: 0 !important;
    background: transparent !important;
    padding: 0 !important;
    margin: 0
}

.gs-content .gs-detail .card-body h6 {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--gs-muted);
    margin: 0 0 2px
}

.gs-content .gs-detail .card-body p {
    font-size: 14px !important;
    color: var(--gs-ink) !important;
    margin: 0
}

.gs-content .gs-detail .card-body [class*="col-"] {
    padding: 10px 12px;
    margin: 0 !important;
    border-bottom: 1px solid var(--gs-border)
}

/* ---- Formulario (patrón "Sutil" sobre los floating labels de Bootstrap) ---- */
.gs-content .gs-form > legend.card-header {
    float: left;
    width: 100%;
    font-size: 17px;
    color: var(--gs-ink-strong);
    padding: 12px 16px;
    background: transparent;
    border-bottom: 1px solid var(--gs-border);
    margin: 0
}

.gs-content .gs-form > legend.card-header + * {
    clear: left
}

.gs-content .gs-form .card-body {
    background: transparent !important;
    padding: 18px 16px
}

.gs-content .gs-form .card-footer {
    background: transparent;
    border-top: 1px solid var(--gs-border);
    padding: 14px 16px
}

.gs-content .gs-form .form-floating > .form-control,
.gs-content .gs-form .form-floating > .form-select {
    background: var(--gs-field);
    border: 0;
    border-bottom: 2px solid var(--gs-field-line);
    border-radius: 8px 8px 0 0;
    box-shadow: none;
    color: var(--gs-ink);
}

.gs-content .gs-form .form-floating > .form-control:focus,
.gs-content .gs-form .form-floating > .form-select:focus {
    border-bottom-color: var(--gs-accent);
    box-shadow: none;
    background: color-mix(in srgb, var(--gs-field) 84%, var(--gs-accent) 16%);
}

.gs-content .gs-form .form-floating > label {
    color: var(--gs-muted)
}

.gs-content .gs-form .form-floating > .form-control:focus ~ label,
.gs-content .gs-form .form-floating > .form-control:not(:placeholder-shown) ~ label,
.gs-content .gs-form .form-floating > .form-select ~ label {
    color: var(--gs-accent);
    opacity: 1
}

.gs-content .gs-form .form-check-input:checked {
    background-color: var(--gs-accent);
    border-color: var(--gs-accent)
}

.gs-content .gs-form .form-check-input:focus {
    border-color: var(--gs-accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--gs-accent) 22%, transparent)
}

.gs-content .gs-form .invalid-feedback {
    color: var(--gs-danger)
}

/* ============================================================
   12 · LAYOUT SUPERIOR + MENÚ (menubar, estilo shadcn)
   Sustituye al sidebar: topbar con marca + menubar + buscador.
   ============================================================ */
.gs-app {
    min-height: 100vh;
    background: var(--gs-bg);
}

/* Menubar horizontal en la topbar */
.gs-menubar {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-wrap: wrap;
}

.gs-menubar__item {
    position: relative;
}

.gs-menubar__trigger {
    border: 0;
    background: none;
    cursor: pointer;
    font: 600 14px var(--gs-font);
    color: var(--gs-ink);
    padding: 6px 12px;
    border-radius: 8px;
    line-height: 1.2;
    transition: background .12s var(--gs-ease), color .12s var(--gs-ease);
}

.gs-menubar__trigger:hover,
.gs-menubar__trigger[aria-expanded="true"] {
    background: color-mix(in srgb, var(--gs-accent) 12%, transparent);
    color: var(--gs-accent);
}

/* Desplegable (MenubarContent) — popover estilo shadcn */
.gs-menu.dropdown-menu {
    min-width: 12rem;
    border: 1px solid var(--gs-border);
    border-radius: 10px;
    box-shadow: var(--gs-shadow-pop);
    background: var(--gs-surface);
    padding: 5px;
    margin-top: 4px;
}

.gs-menu__item.dropdown-item {
    display: flex;
    align-items: center;
    border-radius: 7px;
    padding: 7px 10px;
    font-size: 13.5px;
    color: var(--gs-ink);
}

.gs-menu__item.dropdown-item:hover,
.gs-menu__item.dropdown-item:focus,
.gs-menu__item.dropdown-item.active {
    background: color-mix(in srgb, var(--gs-accent) 12%, transparent);
    color: var(--gs-accent);
}

.gs-menu__sep {
    margin: 5px -1px;
    border: 0;
    border-top: 1px solid var(--gs-border);
    opacity: 1;
}

/* ============================================================
   13 · UTILIDADES DE TARJETA (para vistas propias con gs-card)
   ============================================================ */
.gs-card__head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 13px 18px;
    border-bottom: 1px solid var(--gs-border);
}

.gs-card__head h1, .gs-card__head h5, .gs-card__head h6 {
    margin: 0;
    font-size: 17px;
    color: var(--gs-ink-strong);
    letter-spacing: -.01em;
}

.gs-card__body {
    padding: 18px;
}

.gs-card__foot {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 18px;
    border-top: 1px solid var(--gs-border);
}

.gs-card__back {
    width: 32px;
    height: 32px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    color: var(--gs-muted);
    text-decoration: none;
    font-size: 16px;
    flex: 0 0 auto;
}

.gs-card__back:hover {
    background: var(--gs-surface-2);
    color: var(--gs-ink);
}

.gs-formsection {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--gs-muted);
    margin-bottom: 2px;
}

.gs-field__hint {
    font-size: 12px;
    color: var(--gs-muted);
    margin-top: 4px;
}

/* El label de un <select> va siempre flotado (no tiene placeholder) */
.gs-field select + label {
    transform: translateY(-9px) scale(.72);
    font-variation-settings: "wght" 600;
}

.gs-field select:focus + label {
    color: var(--gs-accent);
}

/* Acciones del grid basadas en <button> (p. ej. borrado por POST) */
.gs-content .gs-grid td.gs-actions button {
    display: inline-grid;
    place-items: center;
    width: 30px;
    height: 30px;
    border: 0;
    background: none;
    border-radius: 7px;
    cursor: pointer;
    color: var(--gs-muted);
    font-size: 15px;
    vertical-align: middle;
}

.gs-content .gs-grid td.gs-actions button i {
    color: inherit;
}

.gs-content .gs-grid td.gs-actions button:hover {
    background: var(--gs-surface-2);
    color: var(--gs-accent);
}

.gs-content .gs-grid td.gs-actions .gs-actions__del:hover {
    color: var(--gs-danger);
    background: color-mix(in srgb, var(--gs-danger) 10%, transparent);
}

/* ============================================================
   14 · BASE PARA VISTAS PROPIAS (cards Bootstrap sin hook gs-*)
   Restylea .card/.table/.list-group de las vistas hechas a mano
   (buscador, models, anexos, cronometros, expediente, calificaciones…)
   SIN tocar su PHP, excluyendo las tarjetas del CRUD genérico.
   ============================================================ */
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) {
    background: var(--gs-surface);
    border: 1px solid var(--gs-border);
    border-radius: var(--gs-radius);
    box-shadow: var(--gs-shadow);
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) > .card-header {
    background: transparent;
    border-bottom: 1px solid var(--gs-border);
    padding: 12px 16px;
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .card-header h5,
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .card-header h6 {
    color: var(--gs-ink-strong);
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .card-header .border-bottom {
    border: 0 !important;
}

/* Tablas dentro de esas cards */
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--gs-ink);
    --bs-table-striped-bg: color-mix(in srgb, var(--gs-surface-2) 55%, transparent);
    --bs-table-border-color: var(--gs-border);
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) thead th {
    background: var(--gs-surface-2);
    color: var(--gs-muted);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    border-bottom: 1px solid var(--gs-border);
    vertical-align: middle;
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) thead .bg-200 {
    background: var(--gs-surface-2) !important;
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) tbody td {
    vertical-align: middle;
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) tbody tr:hover > * {
    box-shadow: inset 0 0 0 9999px color-mix(in srgb, var(--gs-accent) 8%, transparent);
}

/* Listas (p. ej. resultados del buscador) */
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .list-group-item {
    border-color: var(--gs-border);
    color: var(--gs-ink);
    background: transparent;
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .list-group-item-action:hover {
    background: color-mix(in srgb, var(--gs-accent) 8%, transparent);
    color: var(--gs-accent);
}

/* Botones Falcon dentro de esas cards → aspecto del sistema */
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .btn-falcon-primary,
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .btn-primary {
    background: var(--gs-surface-2);
    color: var(--gs-primary);
    border: 0;
    border-radius: 20px;
}

.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .btn-falcon-primary:hover,
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) .btn-primary:hover {
    background: color-mix(in srgb, var(--gs-accent) 14%, transparent);
    color: var(--gs-accent);
}

/* ============================================================
   15 · INFORME EN PAPEL (QReportTable) — actas y reportes
   ============================================================ */
.gs-report {
    max-width: 880px;
    margin: 0 auto;
    background: var(--gs-surface);
    color: var(--gs-ink);
    border: 1px solid var(--gs-border);
    border-radius: 4px;
    box-shadow: var(--gs-shadow);
    padding: 40px 44px 48px;
}

.gs-report__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding-bottom: 14px;
    border-bottom: 2px solid var(--gs-ink-strong);
}

.gs-report__brand {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-weight: 800;
    letter-spacing: .14em;
    font-size: 17px;
    color: var(--gs-ink-strong);
}

.gs-report__mark {
    width: 11px;
    height: 11px;
    border-radius: 3px;
    background: var(--gs-accent);
}

.gs-report__date {
    font-size: 12.5px;
    color: var(--gs-muted);
}

.gs-report__titles {
    margin: 22px 0 20px;
}

.gs-report__title {
    margin: 0;
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -.01em;
    color: var(--gs-ink-strong);
}

.gs-report__sub {
    margin: 4px 0 0;
    font-size: 14px;
    color: var(--gs-muted);
}

.gs-report__tablewrap {
    overflow-x: auto;
}

.gs-report__table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    font-variant-numeric: tabular-nums;
}

.gs-report__table thead th {
    text-align: left;
    padding: 8px 10px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gs-muted);
    border-bottom: 1.5px solid var(--gs-ink-strong);
    white-space: nowrap;
}

.gs-report__table tbody td {
    padding: 8px 10px;
    border-bottom: 1px solid var(--gs-border);
    color: var(--gs-ink);
}

.gs-report__table tbody tr:nth-child(even) td {
    background: color-mix(in srgb, var(--gs-surface-2) 40%, transparent);
}

.gs-report__table tbody tr:last-child td {
    border-bottom: 0;
}

/* ============================================================
   16 · AJUSTES CLARO/OSCURO: dropdowns y zebra de tablas
   ============================================================ */
/* Dropdowns de Bootstrap dentro del contenido (p. ej. el ⋮ del detalle) */
.gs-content .dropdown-menu {
    --bs-dropdown-bg: var(--gs-surface);
    --bs-dropdown-color: var(--gs-ink);
    --bs-dropdown-border-color: var(--gs-border);
    --bs-dropdown-link-color: var(--gs-ink);
    --bs-dropdown-link-hover-bg: color-mix(in srgb, var(--gs-accent) 12%, transparent);
    --bs-dropdown-link-hover-color: var(--gs-accent);
    --bs-dropdown-link-active-bg: color-mix(in srgb, var(--gs-accent) 16%, transparent);
    --bs-dropdown-link-active-color: var(--gs-accent);
    background: var(--gs-surface);
    border: 1px solid var(--gs-border);
    border-radius: 10px;
    box-shadow: var(--gs-shadow-pop);
}

.gs-content .dropdown-item {
    color: var(--gs-ink);
    border-radius: 7px;
}

.gs-content .dropdown-item:hover,
.gs-content .dropdown-item:focus {
    background: color-mix(in srgb, var(--gs-accent) 12%, transparent);
    color: var(--gs-accent);
}

.gs-content .dropdown-divider {
    border-top-color: var(--gs-border);
}

/* Zebra de tablas por tokens (adapta a oscuro): se anula el striping por
   box-shadow de Bootstrap/Falcon y se pinta la fila par con un tinte propio. */
.gs-content .gs-grid table > tbody > tr > *,
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) table > tbody > tr > * {
    box-shadow: none !important;
    background-color: transparent;
}

.gs-content .gs-grid table > tbody > tr:nth-of-type(even) > *,
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) table > tbody > tr:nth-of-type(even) > * {
    background-color: color-mix(in srgb, var(--gs-surface-2) 50%, transparent);
}

.gs-content .gs-grid table > tbody > tr:hover > *,
.gs-content .card:not(.gs-grid):not(.gs-detail):not(.gs-form) table > tbody > tr:hover > * {
    background-color: color-mix(in srgb, var(--gs-accent) 10%, transparent);
}

/* ============================================================
   17 · COMPATIBILIDAD — utilidades que aportaba el tema Falcon
   (ya retirado). Se replican solo las clases realmente usadas.
   ============================================================ */
.flex-between-center {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.flex-between-end {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
}

.text-600 {
    color: var(--gs-muted) !important;
}

.text-700 {
    color: var(--gs-ink) !important;
}

.bg-200 {
    background-color: var(--gs-surface-2) !important;
}

.btn-falcon-default {
    color: var(--gs-ink);
    background-color: var(--gs-surface-2);
    border: 1px solid var(--gs-border);
}

.btn-falcon-default:hover {
    color: var(--gs-accent);
    background-color: color-mix(in srgb, var(--gs-accent) 12%, transparent);
    border-color: var(--gs-border);
}

.btn-reveal {
    box-shadow: none;
    background: none;
    border: 0;
    color: var(--gs-muted);
}

.btn-reveal:hover {
    background: var(--gs-surface-2);
    color: var(--gs-ink);
}
