:root {
    --fwk-fuente-primaria: 'Guardian Sans', sans-serif;
    --fwk-fuente-secundaria: 'Roboto', sans-serif;

    --fwk-header-height: 60px;
    --fwk-aside-width: 150px;

    --fwk-primario: #005BAA;
    --fwk-secundario: #009FE3;
    --fwk-hover: #ff9d00;

    --fwk-gris-oscuro: #666666;
    --fwk-gris-medio: #999999;
    --fwk-gris-claro: #DDDDDD;
    --fwk-blanco: #FFFFFF;

    --fwk-negro-50: rgba(0, 0, 0, 0.50);
    --fwk-negro-40: rgba(0, 0, 0, 0.40);
    --fwk-negro-30: rgba(0, 0, 0, 0.30);
    --fwk-negro-20: rgba(0, 0, 0, 0.20);
    --fwk-negro-10: rgba(0, 0, 0, 0.10);

    --fwk-transition: all 300ms ease;
    --fwk-transition-btn: all 100ms ease;
}

/* FRAMEWORK GENERAL ======================================================== */
html,
body {
    box-sizing: border-box;
    padding: 0;
    margin: 0;
    position: relative;
    height: 100dvh;
    overflow: hidden;
    font-family: var(--fwk-fuente-primaria);
}

a,
p {
    margin: 0;
    padding: 0;
    text-decoration: none;
}

/* FRAMEWORK HEADER ========================================================= */
.header-framework {
    position: fixed;
    display: flex;
    justify-content: center;
    align-items: center;
    height: var(--fwk-header-height);
    width: 100%;
    background: linear-gradient(to right, var(--fwk-primario), var(--fwk-secundario));
    box-shadow: 0 3px 7px 0 var(--fwk-negro-30);
    transition: var(--fwk-transition);
    z-index: 10;
}

.header-framework .header-logo img {
    width: 150px;
}

.header-framework .framework-menu-btn {
    position: absolute;
    left: 15px;
    top: 50%;
    transform: translateY(-50%);
    transition: var(--fwk-transition-btn);
    color: var(--fwk-blanco);
    font-size: 20px;
}

.header-framework .framework-menu-btn:hover,
.header-framework .framework-menu-btn.active {
    cursor: pointer;
    color: var(--fwk-hover);
}

/* FRAMEWORK SIDEBAR ========================================================= */
.framework-menu {
    display: flex;
    flex-direction: column;
    align-items: start;
    justify-content: start;
    position: fixed;
    left: 0;
    top: 0;
    margin: 0;
    list-style: none;
    background-color: var(--fwk-gris-claro);
    box-shadow: inset -3px 0 7px 0 var(--fwk-negro-30);
    height: 100dvh;
    width: var(--fwk-aside-width);
    padding: var(--fwk-header-height) 0px;
    overflow-y: auto;
    user-select: none;
    z-index: 1;
}

.framework-menu::-webkit-scrollbar {
    display: none;
}

.framework-menu .sidebar-title {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding: 8px 10px;
    font-size: 16px;
    font-weight: 700;
    color: var(--fwk-primario);
    border-bottom: 1px solid var(--fwk-gris-medio);
    transition: var(--fwk-transition);
    cursor: pointer;
}

.framework-menu .sidebar-section {
    display: flex;
    flex-direction: column;
    width: 100%;
    padding-left: 5px;
    gap: 5px;
}

.framework-menu .sidebar-item {
    display: flex;
    align-items: center;
    width: 100%;
    padding: 5px 10px;
    font-family: var(--fwk-fuente-secundaria);
    font-size: 14px;
    color: var(--fwk-gris-medio);
    transition: var(--fwk-transition-btn);
    cursor: pointer;
}

.framework-menu .sidebar-item:hover,
.framework-menu .sidebar-item.active {
    color: var(--fwk-primario);
    background-color: var(--fondo-claro);
    border-radius: 5px 0 0 5px;
    border-left: 3px solid var(--fwk-primario);
}

/* FRAMEWORK MAIN ================================================================================ */
.main-framework {
    display: flex;
    flex-direction: column;
    margin-top: var(--fwk-header-height);
    margin-bottom: var(--fwk-header-height);
    width: calc(100% - var(--fwk-aside-width));
    height: 100%;
    margin-left: auto;
    overflow-y: auto;
}

.framework-container {}

.framework-container .section-name {
    display: flex;
    justify-content: start;
    align-items: center;
    width: calc(100% - 30px);
    border-radius: 8px;
    padding: 10px;
    margin: 15px;
    background-color: var(--fwk-gris-oscuro);
    color: var(--fwk-blanco);
}

.framework-container .section-content-item {
    display: flex;
    flex-direction: column;
    width: 100%;
    border-bottom: 1px solid var(--fwk-gris-claro);
    padding: 15px;
    gap: 25px;
}

.framework-container .section-content-item [data-copyable="true"]:hover,
.framework-container .section-content-item [data-copyable="true"].copy {
    cursor: grab;
    border: 1px dashed var(--fwk-hover);
    border-radius: 5px;
    box-shadow: 0 0 10px 0 var(--fwk-negro-30);
    overflow: hidden;
    transition: var(--fwk-transition);
}

/* ======================================== ICONS SECTION =================================== */

.icon-section div {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: 45px;
    row-gap: 15px;
    font-size: 20px;
    color: var(--gris);
    padding: 0 10px;
}

@media screen and (max-width: 1320px) {
    .icon-section div {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

@media screen and (max-width: 1200px) {
    .icon-section div {
        grid-template-columns: 1fr 1fr;
    }
}

.icon-section div .mls {
    font-family: var(--fuente-secundaria);
    margin-left: 10px;
    font-size: 14px;
}

.icon-section div div .fs0 {
    display: none;
    width: 0px !important;
}

.flex-row {
    display: flex;
    flex-direction: row;
}

.flex-col {
    display: flex;
    flex-direction: column;
}

.justify-content-start {
    justify-content: start;
}

.justify-content-center {
    justify-content: center;
}

.justify-content-end {
    justify-content: end;
}

.justify-content-around {
    justify-content: space-around;
}

.justify-content-between {
    justify-content: space-between;
}

.align-items-start {
    align-items: start;
}

.align-items-center {
    align-items: center;
}

.align-items-end {
    align-items: end;
}

/* GAP ================================================================= */

.gap-100px {
    gap: 100px;
}

.gap-75px {
    gap: 75px;
}

.gap-50px {
    gap: 50px;
}

.gap-40px {
    gap: 40px;
}

.gap-35px {
    gap: 35px;
}

.gap-30px {
    gap: 30px;
}

.gap-25px {
    gap: 25px;
}

.gap-20px {
    gap: 20px;
}

.gap-15px {
    gap: 15px;
}

.gap-10px {
    gap: 10px;
}

.gap-5px {
    gap: 5px;
}

/* ======================================== GRIDS GENERICAS =================================== */

.grid-2-col {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
}

.grid-3-col {
    display: grid !important;
    grid-template-columns: 1fr 1fr 1fr;
}

.grid-4-col {
    display: grid !important;
    grid-template-columns: 1fr 1fr 1fr 1fr;
}

.grid-5-col {
    display: grid !important;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
}

.grid-6-col {
    display: grid !important;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
}

.element-2-col {
    grid-column: span 2;
}

.element-3-col {
    grid-column: span 3;
}

.element-4-col {
    grid-column: span 4;
}

.element-5-col {
    grid-column: span 5;
}

.element-6-col {
    grid-column: span 6;
}

@media screen and (max-width: 1200px) {

    .grid-5-col,
    .grid-6-col {
        grid-template-columns: 1fr 1fr 1fr;
    }

    .element-3-col,
    .element-4-col {
        grid-column: span 2;
    }

    .element-5-col,
    .element-6-col {
        grid-column: span 3;
    }
}

@media screen and (max-width: 768px) {

    .grid-3-col,
    .grid-4-col,
    .grid-5-col,
    .grid-6-col {
        grid-template-columns: 1fr 1fr;
    }

    .element-2-col,
    .element-3-col,
    .element-4-col {
        grid-column: span 1;
    }

    .element-5-col,
    .element-6-col {
        grid-column: span 2;
    }
}

@media screen and (max-width: 576px) {

    .grid-2-col,
    .grid-3-col,
    .grid-4-col,
    .grid-5-col,
    .grid-6-col {
        grid-template-columns: 1fr;
    }

    .element-2-col,
    .element-3-col,
    .element-4-col,
    .element-5-col,
    .element-6-col {
        grid-column: span 1;
    }
}

/* PADDING ====================================================== */
.p-100px {
    padding: 100px;
}

.p-75px {
    padding: 75px;
}

.p-50px {
    padding: 50px;
}

.p-45px {
    padding: 45px;
}

.p-40px {
    padding: 40px;
}

.p-35px {
    padding: 35px;
}

.p-30px {
    padding: 30px;
}

.p-25px {
    padding: 25px;
}

.p-20px {
    padding: 20px;
}

.p-15px {
    padding: 15px;
}

.p-10px {
    padding: 10px;
}

.p-5px {
    padding: 5px;
}

.px-50px {
    padding-inline: 50px;
}

.px-45px {
    padding-inline: 45px;
}

.px-40px {
    padding-inline: 40px;
}

.px-35px {
    padding-inline: 35px;
}

.px-30px {
    padding-inline: 30px;
}

.px-25px {
    padding-inline: 25px;
}

.px-20px {
    padding-inline: 20px;
}

.px-15px {
    padding-inline: 15px;
}

.px-10px {
    padding-inline: 10px;
}

.px-5px {
    padding-inline: 5px;
}

.py-50px {
    padding-block: 50px;
}

.py-45px {
    padding-block: 45px;
}

.py-40px {
    padding-block: 40px;
}

.py-35px {
    padding-block: 35px;
}

.py-30px {
    padding-block: 30px;
}

.py-25px {
    padding-block: 25px;
}

.py-20px {
    padding-block: 20px;
}

.py-15px {
    padding-block: 15px;
}

.py-10px {
    padding-block: 10px;
}

.py-5px {
    padding-block: 5px;
}

.pt-0 {
    padding-top: 0;
}

.pt-5px {
    padding-top: 5px;
}

.pt-10px {
    padding-top: 10px;
}

.pt-15px {
    padding-top: 15px;
}

.pt-20px {
    padding-top: 20px;
}

.pt-25px {
    padding-top: 25px;
}

.pt-30px {
    padding-top: 30px;
}

.pt-40px {
    padding-top: 40px;
}

.pt-50px {
    padding-top: 50px;
}

.pb-0 {
    padding-bottom: 0;
}

.pb-5px {
    padding-bottom: 5px;
}

.pb-10px {
    padding-bottom: 10px;
}

.pb-15px {
    padding-bottom: 15px;
}

.pb-20px {
    padding-bottom: 20px;
}

.pb-25px {
    padding-bottom: 25px;
}

.pb-30px {
    padding-bottom: 30px;
}

.pb-40px {
    padding-bottom: 40px;
}

.pb-50px {
    padding-bottom: 50px;
}

.pr-0 {
    padding-right: 0;
}

.pr-5px {
    padding-right: 5px;
}

.pr-10px {
    padding-right: 10px;
}

.pr-15px {
    padding-right: 15px;
}

.pr-20px {
    padding-right: 20px;
}

.pr-25px {
    padding-right: 25px;
}

.pr-30px {
    padding-right: 30px;
}

.pr-35px {
    padding-right: 35px;
}

.pr-40px {
    padding-right: 40px;
}

.pr-45px {
    padding-right: 45px;
}

.pr-50px {
    padding-right: 50px;
}

.pl-0 {
    padding-left: 0;
}

.pl-5px {
    padding-left: 5px;
}

.pl-10px {
    padding-left: 10px;
}

.pl-15px {
    padding-left: 15px;
}

.pl-20px {
    padding-left: 20px;
}

.pl-25px {
    padding-left: 25px;
}

.pl-30px {
    padding-left: 30px;
}

.pl-35px {
    padding-left: 35px;
}

.pl-40px {
    padding-left: 40px;
}

.pl-45px {
    padding-left: 45px;
}

.pl-50px {
    padding-left: 50px;
}