/* /Views/Shared/_Layout.cshtml.rz.scp.css */
/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */

a.navbar-brand[b-6lyufl43gb] {
  white-space: normal;
  text-align: center;
  word-break: break-all;
}

a[b-6lyufl43gb] {
  color: white;
}

.btn-primary[b-6lyufl43gb] {
  color: var(--accent);
  background-color: var(--surface);
  border-color: var(--accent);
}

.border-top[b-6lyufl43gb] {
  border-top: 1px solid var(--border);
}
.border-bottom[b-6lyufl43gb] {
  border-bottom: 1px solid var(--border);
}

.box-shadow[b-6lyufl43gb] {
  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
}

button.accept-policy[b-6lyufl43gb] {
  font-size: 1rem;
  line-height: inherit;
}

.footer[b-6lyufl43gb] {
  position: absolute;
  bottom: 0;
  width: 100%;
  white-space: nowrap;
  line-height: 60px;
}

/* Estructura principal */
.app-container[b-6lyufl43gb] {
    display: flex;
    min-height: 100vh;
    width: 100vw;
    height: 100vh;
    background-color: var(--bg);
    /* position: relative; */
}

/* Barra lateral principal */
.primary-sidebar[b-6lyufl43gb] {
    left: 0;
    top: 0;
    height: 100%;
    z-index: 1000;
    /* Arriba y no centrado: centrar repartía el exceso por los dos extremos cuando había más
       módulos encendidos que altura de ventana, y la lista tapaba el logotipo y escondía las
       primeras entradas (Operaciones) por encima del borde. */
    justify-content: flex-start!important;
    align-items: center!important;
    width: 72px;
    background-color: var(--surface);
    transition: width 0.3s;
    display: flex;
    flex-direction: column;
    padding-left: 8px;
    padding-right: 8px;
    padding-bottom: 32px;
    padding-top: 32px;
    gap: 24px;
}

.sidebar-nav[b-6lyufl43gb] {
    justify-content: flex-start;
    align-items: inherit;
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    width: 56px;
    /* Lo que no cabe se desplaza dentro de la lista, sin barra visible; la cabecera con el
       logotipo se queda quieta encima. `min-height: 0` es lo que permite al elemento flexible
       encoger por debajo de su contenido. */
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: none;
    /* El velo de los extremos tapa 30 px: al llegar a un enlace con el tabulador, el navegador lo
       desplaza a la vista dejando ese margen y no lo deja medio escondido debajo. */
    scroll-padding: 34px;
}

.sidebar-nav[b-6lyufl43gb]::-webkit-scrollbar {
    display: none;
}

/*
   El aviso de que el raíl sigue más allá del borde.

   La lista se desplaza sin barra (`scrollbar-width: none`, justo aquí arriba), así que con los doce
   módulos encendidos las últimas secciones se quedaban fuera de la vista sin que nada lo dijera: en
   un portátil de 768 px de alto sobran unos 220 px, cuatro entradas invisibles y ninguna pista de
   que estén ahí.

   Dos elementos pegados a los extremos de la propia lista —`position: sticky` y tamaño cero en el
   eje principal, así que no ocupan sitio ni desplazan a nadie— pintan un velo del color del raíl
   que difumina lo que hay debajo, y un galón que apunta hacia donde continúa. Se enciende sólo el
   extremo por el que de verdad queda algo: `initSidebarScrollHints` (site.js) pone y quita
   `nav-more-start` / `nav-more-end`.

   Velo y galón en vez de enseñar la barra de desplazamiento: el raíl mide 56 px de ancho y una
   barra se comería la sexta parte, además de aparecer y desaparecer según el sistema operativo.

   Van dentro del `<ul>` y no colgados de `.primary-sidebar` porque el raíl se pliega, se despliega
   y en tableta se vuelve una tira horizontal; pegados al elemento que se desplaza siempre están
   donde tienen que estar.
*/
.nav-scroll-hint[b-6lyufl43gb] {
    position: sticky;
    z-index: 3;
    /* Cero en el eje principal (alto en columna, ancho en fila) y estirado en el otro: el mismo
       par de reglas sirve para el raíl vertical y para la tira de tableta. */
    flex: 0 0 0px;
    align-self: stretch;
    /* El velo no recibe el ratón: los 30 px que cubre siguen siendo el enlace que hay debajo. La
       única parte que lo recibe es la flecha, y sólo con el aviso encendido (más abajo). */
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.18s ease;
}

.sidebar-nav.nav-more-start .nav-scroll-hint-start[b-6lyufl43gb],
.sidebar-nav.nav-more-end .nav-scroll-hint-end[b-6lyufl43gb] {
    opacity: 1;
}

.nav-scroll-hint-start[b-6lyufl43gb] {
    top: 0;
    left: 0;
}

.nav-scroll-hint-end[b-6lyufl43gb] {
    bottom: 0;
    right: 0;
}

/* El velo: difumina lo que asoma por el borde con el color del propio raíl. */
.nav-scroll-veil[b-6lyufl43gb] {
    position: absolute;
    display: block;
    left: 0;
    right: 0;
    height: 30px;
}

.nav-scroll-hint-start .nav-scroll-veil[b-6lyufl43gb] {
    top: 0;
    background: linear-gradient(to bottom, var(--surface) 10px, transparent);
}

.nav-scroll-hint-end .nav-scroll-veil[b-6lyufl43gb] {
    bottom: 0;
    background: linear-gradient(to top, var(--surface) 10px, transparent);
}

/*
   La flecha, que además de avisar es el mando: un clic desplaza tres entradas (`site.js`).

   La zona sensible mide 24×20 y no 7×7 —el tamaño del galón dibujado— porque a un objetivo de siete
   píxeles no se le acierta con el ratón. Se coloca con `left`/`top` y nunca con `transform`: ese lo
   gasta el cabeceo.
*/
.nav-scroll-arrow[b-6lyufl43gb] {
    position: absolute;
    display: block;
    width: 24px;
    height: 20px;
    left: calc(50% - 12px);
    cursor: pointer;
}

.nav-scroll-hint-start .nav-scroll-arrow[b-6lyufl43gb] {
    top: 0;
}

.nav-scroll-hint-end .nav-scroll-arrow[b-6lyufl43gb] {
    bottom: 0;
}

/* El galón, dibujado con dos bordes y un giro: sin fichero, sin fuente de iconos y hereda el color
   del tema. El giro vive aquí y el desplazamiento en el elemento de arriba, así que el cabeceo no
   tiene que repetir la rotación en cada fotograma. */
.nav-scroll-arrow[b-6lyufl43gb]::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 7px;
    height: 7px;
    margin: -4px 0 0 -4px;
    border-right: 2px solid var(--fg);
    border-bottom: 2px solid var(--fg);
    opacity: 0.55;
    transition: opacity 0.15s ease;
}

.nav-scroll-hint-start .nav-scroll-arrow[b-6lyufl43gb]::before {
    transform: rotate(-135deg);
}

.nav-scroll-hint-end .nav-scroll-arrow[b-6lyufl43gb]::before {
    transform: rotate(45deg);
}

.nav-scroll-arrow:hover[b-6lyufl43gb]::before {
    opacity: 1;
}

/* El ratón, sólo con el aviso encendido: `opacity: 0` no quita el clic —un elemento invisible sigue
   recibiéndolo— y la flecha apagada se comería el clic de la primera y la última entrada. */
.sidebar-nav.nav-more-start .nav-scroll-hint-start .nav-scroll-arrow[b-6lyufl43gb],
.sidebar-nav.nav-more-end .nav-scroll-hint-end .nav-scroll-arrow[b-6lyufl43gb] {
    pointer-events: auto;
}

/*
   El cabeceo: dos píxeles cada dos segundos y medio, con más de la mitad del ciclo quieto.

   Va porque un galón inmóvil de siete píxeles al borde de una columna de iconos se mira sin verlo.
   Y va corto y espaciado porque esto está en la pantalla de trabajo todo el día: lo que reclama la
   atención cada segundo deja de ser un aviso y pasa a ser una mosca. Se para al pasar el ratón por
   encima, que es justo cuando hay que acertarle.

   Todo dentro de `no-preference`: a quien haya pedido menos movimiento en su sistema no le llega
   ninguna regla de animación, en vez de llegarle una y luego otra que la apague.
*/
@keyframes nav-hint-nudge-up-b-6lyufl43gb {
    0%, 55%, 100% { transform: translateY(0); }
    78% { transform: translateY(-2px); }
}

@keyframes nav-hint-nudge-down-b-6lyufl43gb {
    0%, 55%, 100% { transform: translateY(0); }
    78% { transform: translateY(2px); }
}

@keyframes nav-hint-nudge-left-b-6lyufl43gb {
    0%, 55%, 100% { transform: translateX(0); }
    78% { transform: translateX(-2px); }
}

@keyframes nav-hint-nudge-right-b-6lyufl43gb {
    0%, 55%, 100% { transform: translateX(0); }
    78% { transform: translateX(2px); }
}

@media (prefers-reduced-motion: no-preference) {
    .sidebar-nav.nav-more-start .nav-scroll-hint-start .nav-scroll-arrow[b-6lyufl43gb] {
        animation: nav-hint-nudge-up-b-6lyufl43gb 2.5s ease-in-out infinite;
    }

    .sidebar-nav.nav-more-end .nav-scroll-hint-end .nav-scroll-arrow[b-6lyufl43gb] {
        animation: nav-hint-nudge-down-b-6lyufl43gb 2.5s ease-in-out infinite;
    }

    /* Misma especificidad que las dos de arriba y después de ellas, que si no el atajo `animation`
       le devolvería el `running` en cuanto el ratón llegara. */
    .sidebar-nav .nav-scroll-hint .nav-scroll-arrow:hover[b-6lyufl43gb] {
        animation-play-state: paused;
    }
}

.nav-item[b-6lyufl43gb] {
    position: relative;
    color: transparent;
    border-radius: 16px;
    /* padding: 16px; */
    gap: 10px;
    width: 56px;
    height: 56px;
    justify-content: inherit;
    align-items: inherit;
}

.nav-link[b-6lyufl43gb] {
    align-items: inherit;
    display: flex!important;
    align-items: inherit;
    color: var(--fg);
    transition: background 0.3s;
    border-radius: 16px;
    padding: 16px!important;
    height: 56px;
    font-weight: 600;
}

.nav-link.w-100.h-100.selected[b-6lyufl43gb]  {
    color:var(--accent)!important;
}


.nav-link .link-text[b-6lyufl43gb] {
    display: none;
    margin-left: 10px;
    white-space: nowrap;
    color: inherit;
    width: 49px;
    height: 19px;
    font-family: 'Roboto, Arial, sans-serif';
    font-weight: 600;
    font-style: medium;
    font-size: 16px;
    line-height: 100%;
}

.primary-sidebar.selected[b-6lyufl43gb] {
    position: fixed;
    left: 0;
    top: 0;
    height: 100%;
    z-index: 1000;
    width: 180px;
    display: contents;
    padding-left: 12px;
    padding-right: 12px;
    padding-bottom: 32px;
    padding-top: 32px;
    justify-content: flex-start!important;
    align-items: start!important;
    justify-items: center;
}

.primary-sidebar.selected .link-text[b-6lyufl43gb] {
    display: contents;
    color: inherit; 
    width: 200px;
    font-family: 'Roboto', 'Arial', sans-serif; 
    font-weight: 600; 
    font-size: 16px; 
    line-height: 100%;
}

/* Barra lateral secundaria */
.secondary-sidebar[b-6lyufl43gb] {
    display : none;
    position: fixed;
    left: 72px;
    top: 0;
    height: 100%;
    z-index: 999;
    width: 72px;
    background-color: var(--surface);
    transition: width 0.3s;
    flex-direction: column;
    white-space: nowrap;
    gap: 32px;
    padding-left: 8px;
    padding-right: 8px;
    padding-bottom: 32px;
    padding-top: 32px;
    border-left: 2px solid var(--border);
}

.secondary-sidebar.selected[b-6lyufl43gb] {
    overflow-y: auto;
    scrollbar-width: none;
    z-index: 1001;
    position: fixed;
    left: 72px;
    top: 0;
    height: 100%;
    gap: 32px!important;
    width: auto;
    display: flex!important;
    padding-left: 10px;
    padding-right: 10px;
    padding-bottom: 32px;
    padding-top: 32px;
    border-radius: 0px 8px 8px 0px!important;
    border-right : 1px solid var(--accent)!important;
}

.close-submenu[b-6lyufl43gb] {
    background: none;
    border: none;
    color: white;
    font-size: 1.5rem;
    cursor: pointer;
}

.main-content[b-6lyufl43gb] {
    flex: 1; 
    min-width: 0;
    padding-left: 24px;
    padding-right: 24px;
    padding-bottom: 32px;
    padding-top: 32px;
}

.secondary-sidebar .submenu-nav .nav-item.selected .a[b-6lyufl43gb]{
    color: var(--accent);
}

    #submenuContent[b-6lyufl43gb] {
        display: inline;
        padding-left: 0px;
        /* padding-right: 24px;
        padding-top: 32px;
        padding-bottom: 32px;
        gap: 32px;
        border-radius: 16px; */ 
        width: 104px;
        list-style: none;
        height: auto;
    }

/* Responsive padding/gap removal for small screens */
@media (max-width: 1024px) {
    .primary-sidebar[b-6lyufl43gb] {
        padding: 8px !important;
        gap: 8px !important;
    }

    /*
       Aquí el raíl es una tira horizontal (`site.css` le pone `flex-direction: row`), así que lo
       que se sale lo hace por los lados.

       `overflow-x` estaba en `hidden`: en esta franja —769 a 1024 px, por debajo manda la barra
       inferior de `mobile-menu.css`— las entradas que no cabían quedaban recortadas y **sin manera
       de llegar a ellas**, ni con la rueda ni con el dedo. Con `auto` se desplazan; la barra sigue
       oculta y el aviso de los extremos es el mismo, girado.
    */
    .sidebar-nav[b-6lyufl43gb] {
        overflow-x: auto;
    }

    .nav-scroll-veil[b-6lyufl43gb] {
        left: auto;
        right: auto;
        top: 0;
        bottom: 0;
        height: auto;
        width: 30px;
    }

    .nav-scroll-hint-start .nav-scroll-veil[b-6lyufl43gb] {
        left: 0;
        background: linear-gradient(to right, var(--surface) 10px, transparent);
    }

    .nav-scroll-hint-end .nav-scroll-veil[b-6lyufl43gb] {
        right: 0;
        background: linear-gradient(to left, var(--surface) 10px, transparent);
    }

    .nav-scroll-arrow[b-6lyufl43gb] {
        left: auto;
        top: calc(50% - 12px);
        width: 20px;
        height: 24px;
    }

    .nav-scroll-hint-start .nav-scroll-arrow[b-6lyufl43gb] {
        top: calc(50% - 12px);
        left: 0;
    }

    .nav-scroll-hint-end .nav-scroll-arrow[b-6lyufl43gb] {
        top: calc(50% - 12px);
        bottom: auto;
        right: 0;
    }

    .nav-scroll-hint-start .nav-scroll-arrow[b-6lyufl43gb]::before {
        transform: rotate(135deg);
    }

    .nav-scroll-hint-end .nav-scroll-arrow[b-6lyufl43gb]::before {
        transform: rotate(-45deg);
    }

    /* Sólo el nombre: la duración y el resto siguen viniendo de la regla de arriba, que ya está
       dentro de `no-preference`. Si no hay animación, esto no enciende ninguna. */
    .sidebar-nav.nav-more-start .nav-scroll-hint-start .nav-scroll-arrow[b-6lyufl43gb] {
        animation-name: nav-hint-nudge-left-b-6lyufl43gb;
    }

    .sidebar-nav.nav-more-end .nav-scroll-hint-end .nav-scroll-arrow[b-6lyufl43gb] {
        animation-name: nav-hint-nudge-right-b-6lyufl43gb;
    }
    
    .primary-sidebar.selected[b-6lyufl43gb] {
        padding: 8px !important;
        gap: 8px !important;
        width: 256px;
        display: contents;
    }
    
    .secondary-sidebar[b-6lyufl43gb], .secondary-sidebar.selected[b-6lyufl43gb] {
        left: 0;
        top: 72px;
    }
    
    .main-content[b-6lyufl43gb] {
        padding: 2px !important;
    }
    
    /* .nav-link {
        padding: 2px !important;
    }

    .nav-link.selected {
        padding: 2px !important;
    }  */

}

/* Remove almost all padding/gap for very small screens */
@media (max-width: 480px) {
    /* .primary-sidebar {
        padding: 4px !important;
        gap: 4px !important;
    }
    
    .primary-sidebar.selected {
        padding: 4px !important;
        gap: 4px !important;
        width: 256px;
        display: contents;
    }
    
    .secondary-sidebar {
        padding: 4px !important;
        gap: 4px !important;
    }
    
    .secondary-sidebar.selected {
        padding: 4px !important;
        gap: 4px !important;
    }
    */
    .main-content[b-6lyufl43gb] {
        padding: 2px !important;
    }
    
    /* .nav-link {
        padding: 0px !important;
    }

    .nav-link.selected {
        padding: 0px !important;
    }  */
}


#submenuContent a.selected[b-6lyufl43gb] {
    color: var(--accent) !important;
}


.secondary-sidebar.selected #submenuContent .link-text[b-6lyufl43gb] {
  display: inline;
}

/* Pantalla a sangre (`ViewData["FullBleed"]`, hoy el Login).
 *
 * Tiene que estar en esta hoja y no en site.css porque las reglas de aquí llevan el atributo de
 * ámbito que Razor añade, y las de abajo de 1024 px van con `!important`: esos 2 px de relleno eran
 * los que dejaban la página del login con scroll aunque la tarjeta cupiera entera. Dos clases más el
 * ámbito ganan a una, así que no depende del orden. */
.main-content.is-full-bleed[b-6lyufl43gb] {
    padding: 0 !important;
    gap: 0 !important;
}
