:root {

	/* THEME COLOR */

	--color-primary: #C21220;
	--color-primary-bg: #C2122020;
	--color-primary-text: #4C0A0F;
	--color-primary-hover: #AF0613;
	
	--color-secondary: #210003;
	--color-secondary-bg: #FAFAFA;
	--color-secondary-text: #040000;
	--color-secondary-hover: #060001;

	/* TEXT COLOR */

	--color-text-1: #2C2C2C;
	--color-text-2: #4B4B4B;
	--color-text-3: #6E6E6E;

	--color-text-body: #3A4D56;
	--color-text-muted: #7B939D;
	--color-text-secondary: #5F7D8C;

	/* FORM COLORS */

	--color-border: #FAFBFC;
	--color-border-hover: #D1D0D6;
	--color-placeholder: #8E8E8E;
	--color-disabled: #B3B3B3;

	/* BACKGROUND */

	--background-1: #FFFFFF;
	--background-2: #FAFBFC;
	--background-disabled: #B3B4B9;
	--background-body: #F5EBEB;

	/* COLORS */

	--color-badge-green-primary: #68BD6E;
	--color-badge-green-hover: #4CB051;
	--color-badge-green-text: #2C6A2E;
	--color-badge-green-bg: #EDF8ED;

	--color-badge-yellow-primary: #FDCD30;
	--color-badge-yellow-hover: #FEC106;
	--color-badge-yellow-text: #9B7703;
	--color-badge-yellow-bg: #FFF9E7;

	--color-badge-red-primary: #F6635A;
	--color-badge-red-hover: #F54336;
	--color-badge-red-text: #982724;
	--color-badge-red-bg: #FEECEB;

	--color-badge-blue-primary: #5361FC;
	--color-badge-blue-hover: #3341FF;
	--color-badge-blue-text: #20289D;
	--color-badge-blue-bg: #EAECFF;

	--color-badge-neutral-primary: #7B939D;
	--color-badge-neutral-hover: #5F7D8C;
	--color-badge-neutral-text: #3A4D56;
	--color-badge-neutral-bg: #EEF2F3;

}

/* == structure */

*:not(.tooltip-arrow, .tooltip-inner, .tooltip) {
	transition: all 400ms ease;
}

body { 
	background: var(--background-body); 
	font-family: Poppins;
}

main {
	padding-top: calc(25px + 60px);
	padding-right: 40px;
	padding-left: calc(80px + 40px);
	padding-bottom: 40px;
}

body:has(nav .menu.opened) main,
body:has(nav .menu.opened) header {
	padding-left: calc(220px + 40px);
	padding-right: 40px;
}

/* == title */

section.title {
	display: flex;
	justify-content: flex-start;
	align-items: flex-start;
	flex-direction: column;
	gap: 8px;
}

section.title h1 {
	font-size: 18pt;
	font-weight: 600;
	line-height: 30px;
	color: var(--color-text-1);
	margin-bottom: 0px;
}

section.title p {
	font-size: 11pt;
	font-weight: 400;
	line-height: 18px;
	color: #7C8082;
	margin-bottom: 0px;
}

/* == helpers */

span.todo {
	color: #c89e9e;
	user-select: none !important;
	font-size: 1rem;
}

/* == buttons */

.buttons {
	display: flex;
	justify-content: flex-start;
	align-items: stretch;
	flex-direction: column;
	gap: 10px;
}

.buttons.end {
	justify-content: flex-end !important;
}

.buttons.right {
	align-items: flex-end !important;
}

button.fill {
	background: var(--color-primary);
	border: 1px solid var(--color-primary);
	color: #ffffff !important;
	font-weight: 500;
	font-size: 10pt;
	height: 48px;
	border-radius: 1.5rem;
	transition: all 400ms ease;
}

button.fill:hover {
	background: var(--color-primary-hover);
}

button.regular {
	background: transparent;
	border: 1px solid var(--color-primary);
	font-weight: 400;
	font-size: 10pt;
	color: var(--color-primary-hover);
	height: 48px;
	border-radius: 1.5rem;
	transition: all 400ms ease;
}

button.regular.icon svg {
	stroke-width: 1px !important;
}

button.small {
	height: 40px !important;
}

button.small svg {
	stroke-width: 1.5px !important;
	width: 20px !important;
}

button.icon {
	height: 48px;
	width: 48px;
	aspect-ratio: 1 / 1;
}

button.icon svg {
	width: 24px;
}

button.small.icon {
	height: 40px;
	width: 40px;
}

button:disabled {
	background: var(--background-disabled);
	border-color: var(--background-disabled);
	color: var(--color-text-3);
}

/* == loading */

.shimmer {
	position: relative;
	color: transparent !important;
	background: transparent !important;
	border-radius: var(--s-radius, .5rem);
}

.shimmer * {
	color: transparent !important;
	background: transparent !important;
	border-color: transparent !important;
	cursor: default !important;
	opacity: 0 !important;
}

.shimmer::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: linear-gradient(
		120deg,
		rgba(var(--s-color, 255),var(--s-color, 255),var(--s-color, 255),.25) 25%,
		rgba(var(--s-color, 255),var(--s-color, 255),var(--s-color, 255),.45) 37%,
		rgba(var(--s-color, 255),var(--s-color, 255),var(--s-color, 255),.25) 63%
	);
	background-size: 400% 100%;
	animation: shimmer 1.2s ease infinite;
	pointer-events: none;
}

button.loading {
	position: relative;
	color: transparent !important;
}

button.loading::after {
	content: '';
	position: absolute;
	top: calc(50% - calc(20px / 2));
	left: calc(50% - calc(20px / 2));
	width: 20px;
	height: 20px;
	border-radius: 50px;
	animation: rotation 2s infinite linear !important;
	border-top-color: transparent !important;
	border: 3px solid #FFFFFF;
}

button.loading[data-color="gray"]::after {
	border-color: #B3B3B3 !important;
	border-top-color: transparent !important;
}

label.loading {
	position: relative;
	color: transparent !important;
}

label.loading svg {
	color: currentColor !important;
}

label.loading::after {
	content: '';
	position: absolute;
	top: calc(50% - calc(20px / 2));
	left: calc(50% - calc(20px / 2));
	width: 20px;
	height: 20px;
	border-radius: 50px;
	animation: rotation 2s infinite linear !important;
	border-top-color: transparent !important;
	border: 3px solid #FFFFFF;
}

label.loading[data-color="gray"]::after {
	border-color: #B3B3B3 !important;
	border-top-color: transparent !important;
}

li.loading {
	position: relative;
	color: transparent !important;
}

li.loading::after {
	content: '';
	position: absolute;
	top: calc(50% - calc(15px / 2));
	left: calc(50% - calc(15px / 2));
	width: 15px;
	height: 15px;
	border-radius: 50px;
	animation: rotation 2s infinite linear !important;
	border-top-color: transparent !important;
	border: 2px solid #FFFFFF;
}

li.loading[data-color="gray"]::after {
	border-color: #B3B3B3 !important;
	border-top-color: transparent !important;
}

div.loading {
	position: relative;
	color: transparent !important;
	height: 100px;
	margin-top: 1rem !important;
	background: #fafafa;
	border-radius: 1.5rem;
}

div.loading::after {
	content: '';
	position: absolute;
	top: calc(50% - calc(25px / 2));
	left: calc(50% - calc(25px / 2));
	width: 25px;
	height: 25px;
	border-radius: 50px;
	border: 3px solid #FFFFFF;
	animation: rotation 2s infinite linear !important;
	border-color: #343a4030 !important;
	border-top-color: transparent !important;
}

/* == module */

.module {
	background: var(--background-1);
	border-radius: 25px;
	padding: 25px;
}

.module.disabled {
	background: var(--background-2);
	display: flex;
	justify-content: center;
	align-items: center;
}

.module.disabled p {
	margin: 0;
	text-align: center;
	color: var(--color-placeholder);
	font-size: 10pt;
	font-weight: 300;
	user-select: none;
}

/* == form */

.input_box {
	display: flex;
	justify-content: flex-start;
	align-items: stretch;
	flex-direction: column;
	margin-bottom: 1rem;
	gap: 5px;
}

.input_box:last-child {
	margin-bottom: 0px;
}

.input_box label {
	font-size: 9pt;
	font-weight: 400;
	color: var(--color-text-1);
	opacity: .8;
	padding-left: 10px;
	transition: all 400ms ease;
}

.input_box p.info {
	font-size: 8pt;
	font-weight: 300;
	color: #B2B8BE;
	margin-top: -2px;
	margin-bottom: 2px;
	margin-left: 10px;
}

.input_box:focus-within label,
.input_box:hover label {
	opacity: 1 !important;
}

.input_box label button.info {
	width: 15px;
	height: 15px;
	background: #fafafa;
	border-radius: 15px;
	border: none !important;
	padding: 0px;
	margin-top: -5px !important;
}

.input_box label button.info svg {
	stroke-width: 1px;
	color: #343a4050;
}

.input_box p.description {
	font-size: 7pt;
	font-weight: 300;
	color: var(--color-text-3);
	margin-top: -2px;
	margin-bottom: 0px;
	padding-left: 10px;
}

.input_box:has(*:required) label::after {
	content: ' *';
	font-weight: 400;
	color: #C6212E;
}

.input_box .input_item {
	width: 100%;
	border-radius: 20px;
	border: 1px solid var(--color-border);
	background-color: var(--background-2);
	transition: all 400ms ease;
	padding: 0 20px;
	height: 48px;
	display: flex;
	justify-content: space-between;
	align-items: stretch;
	gap: 14px;
}

.input_box .input_item:has(svg) {
	padding-left: 15px;
}

.input_box .input_item:hover svg,
.input_box .input_item:focus-within svg {
	color: var(--color-text-2);
}

.input_box input[type="search"]::placeholder {
	font-weight: 300;
}

.input_box .input_item svg {
	width: 22px;
	stroke-width: 1px;
	color: #A8B7C0;
}

.input_box .input_item:focus-within,
.input_box .input_item:hover {
	background: #f6f7f8;
	border-color: #f6f7f8;
}

.input_box .input_item select,
.input_box .input_item input {
	margin: 0 !important;
	padding: 0 !important;
	background: transparent;
	outline: none;
	border: none;
	font-size: 10pt;
	font-weight: 400;
	color: var(--color-text-1);
	width: 100%;
}

.input_box .input_item select::placeholder,
.input_box .input_item textarea::placeholder,
.input_box .input_item input::placeholder {
	color: #97A0A9;
	font-weight: 300;
}

.input_box .input_item input:disabled {
	color: var(--color-disabled);
}

.input_box .input_item:has(input[type="color"]) {
	align-items: center !important;
	padding: 0 10px !important;
	justify-content: flex-start;
	gap: 10px;
}

.input_box .input_item p.color {
	margin: 0px !important;
	font-size: 11pt;
	color: var(--color-text-1);
	font-weight: 400;
}

.input_box .input_item input[type="color"] {
	border-radius: 1rem !important;
	border: none !important;
	width: 30px !important;
	height: 30px !important;
	aspect-ratio: 1 / 1 !important;
}

.input_box .input_item:has(textarea) {
	padding: 0px !important;
	min-height: 150px !important;
	height: auto !important;
}

.input_box .input_item:has(.textarea) {
	padding: 0px !important;
	height: auto !important;
}

.input_box .input_item textarea {
	width: 100%;
	min-height: 150px;
	border: none;
	background: transparent;
	font-size: 10pt;
	font-weight: 400;
	color: var(--color-text-1);
	outline: none;
	padding: 15px 20px;
}

.input_box:has(textarea) .labels {
	display: flex;
	justify-content: space-between;
	align-items: center;
}

.input_box:has(textarea) .labels span.count {
	font-size: 8pt;
	font-weight: 300;
	color: #97A0A9;
	line-height: 100%;
	margin-right: 10px;
}

.input_box:has(textarea) .labels span.count.reached {
	color: var(--color-badge-red-primary);
}

/* == filters */

article.filters {
	display: flex;
	justify-content: flex-start;
	align-items: center;
	gap: 8px;
}

article.filters select {
	appearance: none;
	background: url("data:image/svg+xml,%3Csvg fill='none' stroke='%2351656D' stroke-width='1' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E") no-repeat right 12px center / 10px #FBFBFB !important;
	padding: 10px 35px 10px 15px;
	border-radius: 24px;
	background: #FBFBFB;
	border: none;
	font-size: 9pt;
	font-weight: 400;
	outline: none;
	color: var(--color-text-body);
	cursor: pointer;
	position: relative;
}

article.filters select:hover {
	background: url("data:image/svg+xml,%3Csvg fill='none' stroke='%23899BA6' stroke-width='1' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E") no-repeat right 12px center / 10px #f6f7f8 !important;
}

article.filters select:focus {
	background: url("data:image/svg+xml,%3Csvg fill='none' stroke='%2351656D' stroke-width='1.5' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m4.5 15.75 7.5-7.5 7.5 7.5'/%3E%3C/svg%3E") no-repeat right 12px center / 10px #f6f7f8 !important;
}

article.filters select.active {
	background: url("data:image/svg+xml,%3Csvg fill='none' stroke='%23C0A8A8' stroke-width='1' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E") no-repeat right 12px center / 10px #FEECEB !important;
	color: #210003;
}

article.filters select.active:hover {
	background: url("data:image/svg+xml,%3Csvg fill='none' stroke='%23C0A8A8' stroke-width='1' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E") no-repeat right 12px center / 10px #F8E1E0 !important;
	color: #210003;
}

/* == badges */

span.badge {
	font-size: 9pt;
	font-weight: 500;
	border-radius: 1.5rem;
}

/* == tooltip */

.tooltip-inner {
	background: #171718;
	border-radius: 15px;
	padding: 8px 12px;
	font-family: Poppins;
	font-weight: 500;
	font-size: 9pt;
	line-height: 100%;
}

/* == articles > metric */

article.metric {
	padding: 1.5rem;
	border-radius: 1.5rem;
	background: #FFFFFF;
	display: flex;
	justify-content: flex-start;
	align-items: flex-start;
	flex-direction: column;
	gap: 10px;
}

article.metric .header {
	display: flex;
	justify-content: flex-start;
	align-items: center;
	margin-bottom: 5px;
	gap: 10px;
}

article.metric .header .icon {
	width: 30px;
	height: 30px;
	border-radius: 12px;
	background-color: var(--color-badge-neutral-bg);
	display: flex;
	justify-content: center;
	align-items: center;
}

article.metric .header .icon svg {
	width: 50%;
	height: 50%;
	stroke-width: 1.5px;
	color: var(--color-badge-neutral-primary);
}

article.metric .header p.title {
	font-size: 9pt;
	font-weight: 400;
	color: var(--color-text-secondary);
	line-height: 18px;
	margin-bottom: 0px;
}

article.metric h1.value {
	font-size: 18pt;
	font-weight: 600;
	color: var(--color-text-1);
	margin-bottom: 0px;
	white-space: nowrap;
	text-overflow: ellipsis;
}

article.metric p.info {
	font-size: 8pt;
	font-weight: 400;
	color: var(--color-text-muted);
	margin-bottom: 0px;
	line-height: 100%;
}

/* == articles > module */

article.module {
	padding: 1.5rem;
	border-radius: 1.5rem;
	background: #FFFFFF;
	margin-bottom: 1rem;
}

article.module:last-child {
	margin-bottom: 0px;
}

article.module div.title {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1.5rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid #f6fafb;
	margin-bottom: 1rem;
}

article.module div.title h1 {
	font-size: 14pt;
	font-weight: 500;
	line-height: 26px;
	color: var(--color-text-1);
	margin-bottom: 0px;
}

article.module div.title a {
	font-size: 8pt;
	font-weight: 300;
	line-height: 20px;
	color: var(--color-text-muted);
	margin-bottom: 0px;
	text-decoration: none;
}

article.module div.title a:hover {
	color: var(--color-text-2);
}

article.module div.title a::after {
	content: '>';
	margin-left: 1ch;
}

/* == table */

table {
	width: 100%;
}

table th {
	height: 30px;
	padding: 5px 10px;
	vertical-align: middle;
	font-size: 9pt;
	line-height: 100%;
	color: var(--color-text-muted);
	font-weight: 400;
	white-space: nowrap;
}

table td {
	height: 50px;
	padding: 10px 10px;
	vertical-align: middle;
	font-size: 11pt;
	color: var(--color-text-1);
	font-weight: 400;
	max-width: 300px;
}

table td .td {
	display: flex;
	justify-content: center;
	align-items: flex-start;
	flex-direction: column;
	gap: 5px;
}

table td .td p.title {
	font-size: 11pt;
	font-weight: 400;
	color: var(--color-text-1);
	margin-bottom: 0px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

table td .td p.description {
	font-size: 10pt;
	font-weight: 400;
	color: var(--color-text-secondary);
	margin-bottom: 0px;
	text-overflow: ellipsis;
}

table td .td.right {
	align-items: flex-end;
}

table th.right {
	text-align: right;
}

table td .td.center {
	align-items: center;
}

table th.center {
	text-align: center;
}

table th:first-child,
table td:first-child {
	padding-left: 0px;
}

table th:last-child,
table td:last-child {
	padding-right: 0px;
}

table td .td.actions {
	display: flex;
	flex-direction: row;
	justify-content: flex-end;
	align-items: center;
}

table td .td.actions button {

	aspect-ratio: 1 / 1;
	display: flex;
	justify-content: center;
	align-items: center;
	background: transparent;
	border: none;
	outline: none;
	padding: 0px;
	color: #A8B7C0;
}

table td .td.actions button svg {
	width: 18px;
	stroke-width: 1px;
}

table tr:hover td .td.actions button svg {
	color: #364147;
}

table input[type="checkbox"] {
	appearance: none !important;
	width: 15px;
	height: 15px;
	aspect-ratio: 1 / 1;
	border-radius: 6px;
	border: 1px solid #EFF1F3;
	background: #F9F9F9;
	margin-top: 2px;
}

table input[type="checkbox"]:checked {
	background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
	background-color: var(--color-primary);
	border-color: var(--color-primary);
}

/* == badges */

span.badge {
	padding: 10px 15px;
	font-size: 10pt;
	font-weight: 500;
	white-space: nowrap;
	text-overflow: ellipsis;
	border-radius: 1.5rem;
	background: var(--color-badge-neutral-bg);
	color: var(--color-badge-neutral-text);
}

span.badge[data-size="small"] {
	padding: 8px 12px;
	font-size: 9pt;
	font-weight: 500;
	white-space: nowrap;
	text-overflow: ellipsis;
	border-radius: 1.5rem;
	background: var(--color-badge-neutral-bg);
	color: var(--color-badge-neutral-text);
}

span.badge[data-color="green"] {
	background: var(--color-badge-green-bg);
	color: var(--color-badge-green-text);
}

span.badge[data-color="blue"] {
	background: var(--color-badge-blue-bg);
	color: var(--color-badge-blue-text);
}

span.badge[data-color="yellow"] {
	background: var(--color-badge-yellow-bg);
	color: var(--color-badge-yellow-text);
}

span.badge[data-color="red"] {
	background: var(--color-badge-red-bg);
	color: var(--color-badge-red-text);
}

span.badge[data-color="neutral"] {
	background: var(--color-badge-neutral-bg);
	color: var(--color-badge-neutral-text);
}

/* == animations */

@keyframes rotation {
	0% {
        transform: rotate(0deg);
	}
	100% {
        transform: rotate(360deg);
    }
}

@keyframes shimmer {
	0% {
		background-position: 100% 0;
	}
	100% {
		background-position: 0 0;
	}
}

@keyframes fade-in-up {
	0% {
		transform: translateY(50px) scale(0.8);
	}
	100% {
		transform: translateY(0px) scale(1);
	}
}