/* ===== TOOLKIT DE UTILIDADES ===== */

.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.flow > * + * {
	margin-top: var(--flow-space, 1em);
}

/* BOX SIZING */
.u-box-border {
	box-sizing: border-box;
}
.u-box-content {
	box-sizing: content-box;
}

/* DISPLAY */
.u-d-flex {
	display: flex;
}
.u-d-block {
	display: block;
}
.u-d-inline {
	display: inline;
}
.u-d-inline-block {
	display: inline-block;
}
.u-d-none {
	display: none;
}

/* POSITIONING */
.u-relative {
	position: relative;
}
.u-absolute {
	position: absolute;
}
.u-fixed {
	position: fixed;
}
.u-sticky {
	position: sticky;
}
.u-static {
	position: static;
}

/* POSITION VALUES */
.u-top-0 {
	top: 0;
}
.u-right-0 {
	right: 0;
}
.u-bottom-0 {
	bottom: 0;
}
.u-left-0 {
	left: 0;
}
.u-inset-0 {
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
}

/* Z-INDEX */
.u-z-0 {
	z-index: 0;
}
.u-z-10 {
	z-index: 10;
}
.u-z-20 {
	z-index: 20;
}
.u-z-30 {
	z-index: 30;
}
.u-z-40 {
	z-index: 40;
}
.u-z-50 {
	z-index: 50;
}
.u-z-auto {
	z-index: auto;
}

/* WIDTH */
.u-w-auto {
	width: auto;
}
.u-w-full {
	width: 100%;
}
.u-w-screen {
	width: 100vw;
}
.u-w-25 {
	width: 25%;
}
.u-w-33 {
	width: 33.333%;
}
.u-w-50 {
	width: 50%;
}

.u-min-w-0 {
	min-width: 0;
}
.u-min-w-full {
	min-width: 100%;
}
.u-max-w-full {
	max-width: 100%;
}
.u-max-w-screen {
	max-width: 100vw;
}

/* HEIGHT */
.u-h-auto {
	height: auto;
}
.u-h-full {
	height: 100%;
}
.u-h-screen {
	height: 100vh;
}
.u-h-50 {
	height: 50%;
}

.u-min-h-0 {
	min-height: 0;
}
.u-min-h-full {
	min-height: 100%;
}
.u-min-h-screen {
	min-height: 100vh;
}
.u-max-h-full {
	max-height: 100%;
}

/* RESET MARGINS */
.u-reset-margin {
	margin: 0;
}
.u-reset-margin-top {
	margin-top: 0;
}
.u-reset-margin-right {
	margin-right: 0;
}
.u-reset-margin-bottom {
	margin-bottom: 0;
}
.u-reset-margin-left {
	margin-left: 0;
}

/* MARGINS */
.u-margin-1 {
	margin: 1rem;
}
.u-margin-top-1 {
	margin-top: 1rem;
}
.u-margin-right-1 {
	margin-right: 1rem;
}
.u-margin-bottom-1 {
	margin-bottom: 1rem;
}
.u-margin-left-1 {
	margin-left: 1rem;
}

.u-margin-2 {
	margin: 2rem;
}
.u-margin-top-2 {
	margin-top: 2rem;
}
.u-margin-right-2 {
	margin-right: 2rem;
}
.u-margin-bottom-2 {
	margin-bottom: 2rem;
}
.u-margin-left-2 {
	margin-left: 2rem;
}

/* RESET PADDINGS */
.u-reset-padding {
	padding: 0;
}
.u-reset-padding-top {
	padding-top: 0;
}
.u-reset-padding-right {
	padding-right: 0;
}
.u-reset-padding-bottom {
	padding-bottom: 0;
}
.u-reset-padding-left {
	padding-left: 0;
}

/* SPACING */

.u-padding-2 {
	padding: 2rem;
}
.u-padding-top-2 {
	padding-top: 2rem;
}
.u-padding-right-2 {
	padding-right: 2rem;
}
.u-padding-bottom-2 {
	padding-bottom: 2rem;
}
.u-padding-left-2 {
	padding-left: 2rem;
}

.u-padding-3 {
	padding: 3rem;
}
.u-padding-top-3 {
	padding-top: 3rem;
}
.u-padding-right-3 {
	padding-right: 3rem;
}
.u-padding-bottom-3 {
	padding-bottom: 3rem;
}
.u-padding-left-3 {
	padding-left: 3rem;
}

.u-padding-4 {
	padding: 4rem;
}
.u-padding-top-4 {
	padding-top: 4rem;
}
.u-padding-right-4 {
	padding-right: 4rem;
}
.u-padding-bottom-4 {
	padding-bottom: 4rem;
}
.u-padding-left-4 {
	padding-left: 4rem;
}

/* FLEX DIRECTION */
.u-flex-row {
	flex-direction: row;
}
.u-flex-column {
	flex-direction: column;
}
.u-flex-row-reverse {
	flex-direction: row-reverse;
}
.u-flex-column-reverse {
	flex-direction: column-reverse;
}

/* FLEX WRAP */
.u-flex-wrap {
	flex-wrap: wrap;
}
.u-flex-nowrap {
	flex-wrap: nowrap;
}
.u-flex-wrap-reverse {
	flex-wrap: wrap-reverse;
}

/* JUSTIFY CONTENT */
.u-justify-start {
	justify-content: flex-start;
}
.u-justify-center {
	justify-content: center;
}
.u-justify-end {
	justify-content: flex-end;
}
.u-justify-between {
	justify-content: space-between;
}
.u-justify-around {
	justify-content: space-around;
}
.u-justify-evenly {
	justify-content: space-evenly;
}

/* ALIGN ITEMS */
.u-items-stretch {
	align-items: stretch;
}
.u-items-center {
	align-items: center;
}
.u-items-start {
	align-items: flex-start;
}
.u-items-end {
	align-items: flex-end;
}
.u-items-baseline {
	align-items: baseline;
}

/* ALIGN SELF */
.u-self-stretch {
	align-self: stretch;
}
.u-self-center {
	align-self: center;
}
.u-self-start {
	align-self: flex-start;
}
.u-self-end {
	align-self: flex-end;
}
.u-self-baseline {
	align-self: baseline;
}

/* FLEX GROW/SHRINK */
.u-flex-grow-0 {
	flex-grow: 0;
}
.u-flex-grow-1 {
	flex-grow: 1;
}
.u-flex-shrink-0 {
	flex-shrink: 0;
}
.u-flex-shrink-1 {
	flex-shrink: 1;
}

/* FLEX BASIS */
.u-flex-basis-auto {
	flex-basis: auto;
}
.u-flex-basis-0 {
	flex-basis: 0;
}
.u-basis-0 {
	flex-basis: 0;
}
.u-basis-auto {
	flex-basis: auto;
}
.u-basis-full {
	flex-basis: 100%;
}
.u-basis-50 {
	flex-basis: 50%;
}

/* GRID */

.u-grid-col-1 {
	grid-template-columns: 1fr;
}
.u-grid-col-2 {
	grid-template-columns: 1fr 1fr;
}
.u-grid-col-3 {
	grid-template-columns: 1fr 1fr 1fr;
}

/* GAP */
.u-gap-0 {
	gap: 0;
}
.u-gap-1 {
	gap: 0.25rem;
}
.u-gap-2 {
	gap: 0.5rem;
}
.u-gap-3 {
	gap: 1rem;
}
.u-gap-4 {
	gap: 1.5rem;
}
.u-gap-5 {
	gap: 2rem;
}

/* ORDER */
.u-order-1 {
	order: 1;
}
.u-order-2 {
	order: 2;
}
.u-order-3 {
	order: 3;
}
.u-order-4 {
	order: 4;
}
.u-order-5 {
	order: 5;
}

/* TEXT ALIGNMENT */
.u-text-left {
	text-align: left;
}
.u-text-center {
	text-align: center;
}
.u-text-right {
	text-align: right;
}
.u-text-justify {
	text-align: justify;
}

/* FONT WEIGHT */
.u-font-normal {
	font-weight: normal;
}
.u-font-bold {
	font-weight: bold;
}
.u-font-light {
	font-weight: 300;
}

/* TEXT TRANSFORM */
.u-uppercase {
	text-transform: uppercase;
}
.u-lowercase {
	text-transform: lowercase;
}
.u-capitalize {
	text-transform: capitalize;
}

/* TEXT DECORATION */
.u-underline {
	text-decoration: underline;
}
.u-line-through {
	text-decoration: line-through;
}
.u-no-underline {
	text-decoration: none;
}

/* WHITESPACE */
.u-whitespace-normal {
	white-space: normal;
}
.u-whitespace-nowrap {
	white-space: nowrap;
}
.u-whitespace-pre {
	white-space: pre;
}

/* WORD BREAK */
.u-break-words {
	word-wrap: break-word;
}
.u-break-all {
	word-break: break-all;
}

/* OVERFLOW */
.u-overflow-auto {
	overflow: auto;
}
.u-overflow-hidden {
	overflow: hidden;
}
.u-overflow-visible {
	overflow: visible;
}
.u-overflow-scroll {
	overflow: scroll;
}
.u-overflow-x-auto {
	overflow-x: auto;
}
.u-overflow-y-auto {
	overflow-y: auto;
}

/* VISIBILITY */
.u-visible {
	visibility: visible;
}
.u-invisible {
	visibility: hidden;
}

/* OPACITY */
.u-opacity-0 {
	opacity: 0;
}
.u-opacity-50 {
	opacity: 0.5;
}
.u-opacity-100 {
	opacity: 1;
}

/* CURSOR */
.u-cursor-pointer {
	cursor: pointer;
}
.u-cursor-default {
	cursor: default;
}
.u-cursor-not-allowed {
	cursor: not-allowed;
}
.u-cursor-move {
	cursor: move;
}

/* Fondos con shorthand */
.u-bg-none {
	background: none;
}
.u-bg-inherit {
	background: inherit;
}

/* Opacidad */
.u-opacity-0 {
	opacity: 0;
}
.u-opacity-50 {
	opacity: 0.5;
}
.u-opacity-100 {
	opacity: 1;
}

/* Mix blends (para efectos) */
.u-mix-blend-normal {
	mix-blend-mode: normal;
}
.u-mix-blend-multiply {
	mix-blend-mode: multiply;
}
.u-mix-blend-screen {
	mix-blend-mode: screen;
}

/* RESPONSIVE DESIGN */

@media (min-width: 640px) {
	.u-sm-block {
		display: block;
	}
	.u-sm-flex {
		display: flex;
	}
	.u-sm-none {
		display: none;
	}
	.u-sm-flex-row {
		flex-direction: row;
	}
	.u-sm-flex-column {
		flex-direction: column;
	}
}

@media (min-width: 768px) {
	.u-md-block {
		display: block;
	}
	.u-md-flex {
		display: flex;
	}
	.u-md-none {
		display: none;
	}
}

/* ===== MODIFICADORES --> COLORES ===== */

/* BG */

.bg-black {
	background-color: var(--color-black);
}
.bg-white {
	background-color: var(--color-white);
}
.bg-transparent {
	background-color: transparent;
}

.bg-gray-light {
	background-color: var(--color-gray-light);
}

.bg-white {
	background-color: var(--color-white);
}

/* CLR */

.clr-black {
	color: var(--color-black);
}
.clr-white {
	color: var(--color-white);
}
.clr-transparent {
	color: transparent;
}

.clr-black-hover:hover {
	color: var(--color-black);
}
.clr-white-hover:hover {
	color: var(--color-white);
}
