/*======================================
  Wx Design System v1.0
  Layout
======================================*/


/*=============================
  CONTAINERS
==============================*/

.container{
    width:min(100% - 2rem, var(--container-width));
    margin-inline:auto;
}

.container-wide{
    width:min(100% - 2rem, var(--container-wide));
    margin-inline:auto;
}

.container-narrow{
    width:min(100% - 2rem, 900px);
    margin-inline:auto;
}

.container-full{
    width:100%;
}


/*=============================
  DISPLAY
==============================*/

.flex{
    display:flex;
}

.grid{
    display:grid;
}

.block{
    display:block;
}

.inline-flex{
    display:inline-flex;
}


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

.flex-row{
    flex-direction:row;
}

.flex-column{
    flex-direction:column;
}

.flex-wrap{
    flex-wrap:wrap;
}

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

.items-center{
    align-items:center;
}

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

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

.justify-center{
    justify-content:center;
}

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

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

.justify-around{
    justify-content:space-around;
}

.justify-evenly{
    justify-content:space-evenly;
}

.flex-1{
    flex:1;
}


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

.grid-2{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:2rem;
}

.grid-3{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:2rem;
}

.grid-4{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:2rem;
}

.grid-auto{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
    gap:2rem;
}


/*=============================
  GAP
==============================*/

.gap-xs{gap:var(--space-xs);}
.gap-sm{gap:var(--space-sm);}
.gap-md{gap:var(--space-md);}
.gap-lg{gap:var(--space-lg);}
.gap-xl{gap:var(--space-xl);}
.gap-2xl{gap:var(--space-2xl);}


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

.w-100{
    width:100%;
}

.h-100{
    height:100%;
}


/*=============================
  SPACING
==============================*/

.mt-auto{
    margin-top:auto;
}

.mx-auto{
    margin-inline:auto;
}

.my-auto{
    margin-block:auto;
}


/*=============================
  SECTION
==============================*/

.section{
    position:relative;
    overflow:hidden;
}

.section-sm{
    padding:80px 0;
}

.section-md{
    padding:120px 0;
}

.section-lg{
    padding:160px 0;
}


/*=============================
  STACK
==============================*/

.stack-xs > * + *{
    margin-top:var(--space-xs);
}

.stack-sm > * + *{
    margin-top:var(--space-sm);
}

.stack-md > * + *{
    margin-top:var(--space-md);
}

.stack-lg > * + *{
    margin-top:var(--space-lg);
}

.stack-xl > * + *{
    margin-top:var(--space-xl);
}


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

.relative{
    position:relative;
}

.absolute{
    position:absolute;
}

.fixed{
    position:fixed;
}

.sticky{
    position:sticky;
}


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

.overflow-hidden{
    overflow:hidden;
}

.overflow-auto{
    overflow:auto;
}


/*=============================
  VISIBILITY
==============================*/

.hide{
    display:none;
}