@charset "utf-8";
/* CSS Document */

/*==================================================
LAYOUT.CSS
Proyecto: MCTIRE
Autor: ColaboraWeb
Descripción:
Estructuras reutilizables del sitio.
==================================================*/


/*==================================================
RESET DE LAYOUT
==================================================*/

*,
*::before,
*::after
{
    box-sizing:border-box;
}


html
{
    width:100%;

    overflow-x:hidden;

}


body
{
    width:100%;

    margin:0;

    overflow-x:hidden;

}


img
{
    max-width:100%;

    height:auto;

    display:block;

}


button,
input,
textarea,
select
{
    font:inherit;

}


/*==================================================
CONTENEDORES
==================================================*/

.container-fluid
{
    width:100%;

    margin:0 auto;

}


.container-small
{
    width:min(900px, calc(100% - 2rem));

    margin:0 auto;

}


.container-medium
{
    width:min(1100px, calc(100% - 2rem));

    margin:0 auto;

}


.container-large
{
    width:min(1440px, calc(100% - 2rem));

    margin:0 auto;

}


/*==================================================
GRID BASE
==================================================*/

.grid
{
    display:grid;

    min-width:0;

}


.grid-2
{
    display:grid;

    grid-template-columns:
    repeat(2,minmax(0,1fr));

    gap:2rem;

}


.grid-3
{
    display:grid;

    grid-template-columns:
    repeat(3,minmax(0,1fr));

    gap:2rem;

}


.grid-4
{
    display:grid;

    grid-template-columns:
    repeat(4,minmax(0,1fr));

    gap:2rem;

}


.grid-5
{
    display:grid;

    grid-template-columns:
    repeat(5,minmax(0,1fr));

    gap:2rem;

}


/*==================================================
AUTO GRID
==================================================*/

.grid-auto
{
    display:grid;

    grid-template-columns:
    repeat(
        auto-fit,
        minmax(280px,1fr)
    );

    gap:2rem;

}


/*==================================================
FLEX
==================================================*/

.flex
{
    display:flex;

    min-width:0;

}


.flex-center
{
    display:flex;

    align-items:center;

    justify-content:center;

}


.flex-between
{
    display:flex;

    align-items:center;

    justify-content:space-between;

}


.flex-around
{
    display:flex;

    align-items:center;

    justify-content:space-around;

}


.flex-column
{
    display:flex;

    flex-direction:column;

}


.flex-wrap
{
    flex-wrap:wrap;

}


/*==================================================
ALIGN
==================================================*/

.align-start
{
    align-items:flex-start;

}


.align-center
{
    align-items:center;

}


.align-end
{
    align-items:flex-end;

}


/*==================================================
JUSTIFY
==================================================*/

.justify-start
{
    justify-content:flex-start;

}


.justify-center
{
    justify-content:center;

}


.justify-between
{
    justify-content:space-between;

}


.justify-end
{
    justify-content:flex-end;

}


/*==================================================
GAPS
==================================================*/

.gap-xs
{
    gap:.5rem;

}


.gap-sm
{
    gap:1rem;

}


.gap-md
{
    gap:2rem;

}


.gap-lg
{
    gap:3rem;

}


.gap-xl
{
    gap:5rem;

}


/*==================================================
WIDTH
==================================================*/

.w-100
{
    width:100%;

}


.w-75
{
    width:75%;

}


.w-50
{
    width:50%;

}


.w-auto
{
    width:auto;

}


.w-fit
{
    width:fit-content;

    max-width:100%;

}


/*==================================================
HEIGHT
==================================================*/

.h-100
{
    height:100%;

}


.min-vh
{
    min-height:100vh;

}


.min-vh-screen
{
    min-height:100svh;

}


/*==================================================
POSITION
==================================================*/

.relative
{
    position:relative;

}


.absolute
{
    position:absolute;

}


.fixed
{
    position:fixed;

}


.sticky
{
    position:sticky;

}


/*==================================================
OVERFLOW
==================================================*/

.overflow-hidden
{
    overflow:hidden;

}


.overflow-auto
{
    overflow:auto;

}


.overflow-x-hidden
{
    overflow-x:hidden;

}


.overflow-x-auto
{
    overflow-x:auto;

}


/*==================================================
BACKGROUND
==================================================*/

.bg-white
{
    background:var(--white);

}


.bg-light
{
    background:var(--background);

}


.bg-soft
{
    background:var(--background-soft);

}


.bg-primary
{
    background:var(--primary);

}


.bg-dark
{
    background:#111827;

}


/*==================================================
TEXT COLOR
==================================================*/

.text-white
{
    color:var(--white);

}


.text-primary
{
    color:var(--primary);

}


.text-secondary
{
    color:var(--secondary);

}


.text-muted
{
    color:var(--text-light);

}


/*==================================================
TEXT ALIGN
==================================================*/

.text-left
{
    text-align:left;

}


.text-center
{
    text-align:center;

}


.text-right
{
    text-align:right;

}


/*==================================================
BORDER RADIUS
==================================================*/

.radius-sm
{
    border-radius:var(--radius-sm);

}


.radius-md
{
    border-radius:var(--radius-md);

}


.radius-lg
{
    border-radius:var(--radius-lg);

}


.radius-xl
{
    border-radius:var(--radius-xl);

}


.radius-circle
{
    border-radius:50%;

}


/*==================================================
SHADOWS
==================================================*/

.shadow-sm
{
    box-shadow:var(--shadow-sm);

}


.shadow-md
{
    box-shadow:var(--shadow-md);

}


.shadow-lg
{
    box-shadow:var(--shadow-lg);

}


/*==================================================
Z-INDEX
==================================================*/

.z-1
{
    z-index:1;

}


.z-10
{
    z-index:10;

}


.z-50
{
    z-index:50;

}


.z-100
{
    z-index:100;

}


/*==================================================
OVERLAY
==================================================*/

.overlay
{
    position:absolute;

    inset:0;

    width:100%;

}


/*==================================================
OBJECT FIT
==================================================*/

.object-cover
{
    object-fit:cover;

}


.object-contain
{
    object-fit:contain;

}


/*==================================================
TRANSITIONS
==================================================*/

.transition
{
    transition:var(--transition);

}


/*==================================================
HOVER
==================================================*/

.hover-up
{
    transition:
    transform .3s ease;

}


.hover-up:hover
{
    transform:translateY(-8px);

}


.hover-scale
{
    transition:
    transform .3s ease;

}


.hover-scale:hover
{
    transform:scale(1.05);

}


/*==================================================
NO SELECCIÓN
==================================================*/

.user-select-none
{
    user-select:none;

}


/*==================================================
MARGIN UTILITIES
==================================================*/

.m-0
{
    margin:0;

}


.mt-0
{
    margin-top:0;

}


.mb-0
{
    margin-bottom:0;

}


.mx-auto
{
    margin-left:auto;

    margin-right:auto;

}


/*==================================================
PADDING UTILITIES
==================================================*/

.p-0
{
    padding:0;

}


.px-0
{
    padding-left:0;

    padding-right:0;

}


.py-0
{
    padding-top:0;

    padding-bottom:0;

}


/*==================================================
RESPONSIVE
==================================================*/

@media(max-width:1200px)
{

    .grid-4,
    .grid-5
    {
        grid-template-columns:
        repeat(3,minmax(0,1fr));

    }


    .gap-xl
    {
        gap:4rem;

    }

}


/*==================================================
TABLET
==================================================*/

@media(max-width:992px)
{

    .grid-3,
    .grid-4,
    .grid-5
    {
        grid-template-columns:
        repeat(2,minmax(0,1fr));

    }


    .grid-auto
    {
        grid-template-columns:
        repeat(
            auto-fit,
            minmax(240px,1fr)
        );

    }


    .gap-lg
    {
        gap:2.5rem;

    }


    .gap-xl
    {
        gap:3.5rem;

    }

}


/*==================================================
TABLET PEQUEÑO
==================================================*/

@media(max-width:768px)
{

    .grid-2,
    .grid-3,
    .grid-4,
    .grid-5,
    .grid-auto
    {
        grid-template-columns:1fr;

    }


    /*
    No forzamos todos los flex-between
    a columna. Esto evita romper
    headers, botones y componentes.
    */

    .container-small,
    .container-medium,
    .container-large
    {
        width:
        calc(100% - 1.5rem);

    }


    .gap-md
    {
        gap:1.5rem;

    }


    .gap-lg
    {
        gap:2rem;

    }


    .gap-xl
    {
        gap:3rem;

    }


    .min-vh
    {
        min-height:100svh;

    }

}


/*==================================================
MOBILE
==================================================*/

@media(max-width:576px)
{

    .container-small,
    .container-medium,
    .container-large
    {
        width:
        calc(100% - 1.25rem);

    }


    .grid-auto
    {
        grid-template-columns:1fr;

        gap:1rem;

    }


    .gap-sm
    {
        gap:.75rem;

    }


    .gap-md
    {
        gap:1.25rem;

    }


    .gap-lg
    {
        gap:1.5rem;

    }


    .gap-xl
    {
        gap:2rem;

    }


    .min-vh
    {
        min-height:100svh;

    }

}


/*==================================================
MOBILE PEQUEÑO
==================================================*/

@media(max-width:380px)
{

    .container-small,
    .container-medium,
    .container-large
    {
        width:
        calc(100% - 1rem);

    }


    .gap-md
    {
        gap:1rem;

    }


    .gap-lg
    {
        gap:1.25rem;

    }


    .gap-xl
    {
        gap:1.5rem;

    }

}


/*==================================================
REDUCIR MOVIMIENTO
==================================================*/

@media(prefers-reduced-motion:reduce)
{

    *,
    *::before,
    *::after
    {
        scroll-behavior:auto !important;

        transition:none !important;

        animation:none !important;

    }

}