.ms_component { position: relative; display:block; margin-top: 20px; }
/* ------------------------------------------------------------ Buttons */
.ms_component .button {
	display: inline-block; margin-bottom: 0; line-height: 1.4; text-align: center; height: 32px;
	vertical-align: middle; border-radius: 2px; padding: 6px 10px 0px 10px; color: var(--btn-tx);
	background-color: var(--btn-bg); border: 1px solid var(--btn-bo); cursor: pointer; border-radius: 4px;
}
.ms_component .button:hover { color: var(--btn-tx-hover); border: 1px solid var(--catch); }
.ms_component a i { margin-right: 10px; color: var(--btn-tx-i); }
.ms_component a:hover i { color: var(--btn-tx-hover); }

.ms_component .btn_menu {
	background-color: transparent !important; height:auto;
	border:none; text-align:center !important; color:var(--btn-tx);
}
.ms_component .btn_menu:hover { color:var(--btn-tx-hover); border:none; }
.ms_component .btn_menu i { margin-right: 0; color:var(--btn-tx-i); }

.ms_component .btn_input {
	text-align:center !important; width: 24px; height:24px; line-height: 1 !important; padding: 4px 0 0 4px !important;
	position: absolute; top: -4px; right: 0; font-size: 0.85em;
}

.ms_component .btn_square {
	text-align:center; width: 100%; border: 1px solid var(--btn-bo); aspect-ratio: 1 / 1; border-radius: 4px; font-variant:small-caps;
	position: relative; top: 0; left: 0; display: grid; place-content: center; background-color: var(--btn-bg); padding:2px;
}
.ms_component .btn_square i { display:inline-block; margin-bottom: 10px; }
.ms_component .btn_square:hover { color: var(--btn-tx-hover); border: 1px solid var(--catch);}
.ms_component .btn_square i { color: var(--btn-tx-i); }
.ms_component .btn_square:hover i { color: var(--btn-tx-hover); }

/* ------------------------------------------------------------ input radio/checkbox */
.ms_component input[type="radio"] {
	-webkit-appearance: none; appearance: none; margin-right: 10px; margin-left: 10px; position:relative; top:4px;
	width: 1rem; height: 1rem; border: 1px solid var(--bo-light); border-radius: 50%;
}
.ms_component input[type="radio"]:hover { background: var(--catch); }
.ms_component input[type="radio"]:checked { background: var(--catch); clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); }

.ms_component input[type="checkbox"]{
	-webkit-appearance: none; appearance: none; padding-top: 4px !important;
	width: 14px; height: 14px; border: 1px solid var(--bo-light);
}
.ms_component input[type="checkbox"]:hover { background: var(--catch); }
.ms_component input[type="checkbox"]:checked { background: var(--catch); clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); }
.ms_component .label_checkbox { position: relative; top: -6px; padding-left: 10px; padding-right: 10px; }
.ms_component input:checked + .slider:before { background-color: var(--slider-bg-on); -webkit-transform: translateX(16px); }

/* ------------------------------------------------------------ Slider Switch */
.ms_component .switch { position: relative; display: inline-block; width: 36px; height: 6px; box-sizing: border-box;  }
.ms_component .switch input { display: none; }
.ms_component .slider {
	position: absolute; top: 0; left: 0; right: 0; bottom: 0;
	background-color: var(--slider-bg); border: 1px solid var(--slider-bo); border-radius: 16px; -webkit-transition: .4s;
}
.ms_component .slider:hover { background-color: var(--catch); }
.ms_component .slider:before {
	position: absolute; content: ""; height: 12px; width: 12px; left: 2px; top: -5px;
	background-color: var(--slider-bg); border: 1px solid var(--slider-bo); border-radius: 50%; -webkit-transition: .4s;
}

/* ------------------------------------------------------------ input */
.ms_component input { width: 100%; border: none; border-bottom: 1px solid var(--bo); background-color: transparent; outline: none; color: var(--tx); }
.ms_component .label { position: absolute; top: 0; left: 0; transition: all 0.3s ease; pointer-events: none; color: var(--tx-dark);}
.ms_component input:focus { border-bottom: 1px solid var(--catch); }
.ms_component input:focus ~ .label, .ms_component input:valid ~ .label { top: -20px; color: var(--catch); }
.ms_component.bar_component input:focus { border-bottom: 1px solid var(--btn-tx-hover); }
.ms_component.bar_component input:focus ~ .label, .ms_component.bar_component input:valid ~ .label { top: -20px; color: var(--btn-tx-hover); }
.ms_component + .ms_input_button input { width: calc(100% - 28px) !important; }

/* ------------------------------------------------------------ input range */
.ms_component input[type="range"] { appearance:none; -webkit-appearance: none;  background: transparent; cursor: pointer; width:100%; border: none !important; }
.ms_component input[type="range"]:focus { outline: none; }
/* Chrome, Safari, Opera and Edge Chromium */
.ms_component input[type="range"]::-webkit-slider-runnable-track { background-color:var(--range-bg); border:1px solid var(--range-bo); border-radius: 5px; height: 10px; }
.ms_component input[type="range"]::-webkit-slider-thumb {
 	-webkit-appearance: none; appearance: none; margin-top: -3px; background-color: var(--range-thumb);  border-radius: 50%; height: 12px; width: 14px;
}
/* Firefox */
.ms_component input[type="range"]::-moz-range-track { background-color:var(--range-bg); border:1px solid var(--range-bo); border-radius: 5px; height: 10px; }
.ms_component input[type="range"]::-moz-range-thumb {
	 -webkit-appearance: none; appearance: none; margin-top: -3px; background-color: var(--range-thumb);  border-radius: 50%; height: 12px; width: 14px;
}

/* ------------------------------------------------------------ Group */
.ms_component:has(.ms_group) { margin:0; }
.ms_component .ms_group { position: relative; width:100%; border: 1px solid var(--bo); border-radius:4px; box-sizing: border-box; display: inline-block; margin-top:20px; }
.ms_component .ms_group_title {
	position: absolute; top: -12px; left: 20px; height:1em; width:auto;
	background-color: var(--bg); padding:0 4px 0 4px; color:var(--group-title);
}
.ms_component .ms_group_title i { color: var(--group-icon); margin-right:10px; }
.ms_component .ms_group_content { padding:20px 10px 2px 10px;}
/* ------------------------------------------------------------ Accordion */
.ms_component .ms_accordion { margin: 0 auto !important; }
.ms_component .ms_accordion .ms_accordion-title { border-bottom: 1px solid var(--bo); /* color: var(--tx-3); */ font-weight: 600; padding: 8px; background: transparent; }
.ms_component .ms_accordion .ms_accordion-title:hover {  border-bottom: 1px solid var(--catch); }
.ms_component .ms_accordion .ms_accordion-title.active { background: transparent; color: var(--catch); border-bottom: 1px solid var(--catch);}
.ms_component .ms_accordion .ms_accordion-content { display: none; margin: 8px; }

/* ------------------------------------------------------------ Tabs */
.ms_component ul.ms_tabs { margin: 2px; padding: 2px; list-style-type: none; cursor: pointer; }
.ms_component ul.ms_tabs li { background: none; display: inline-block; padding: 10px 15px; color: var(--tx-dark); }
.ms_component ul.ms_tabs li.current { border-bottom: 1px solid var(--catch); color: var(--tx-light); }
.ms_component ul.ms_tabs li.ms_tab_link i { margin-right: 10px; color: var(--warning); }
.ms_component div.ms_tab_content { display: none; background-color: transparent; padding: 4px; border-bottom: 1px solid var(--bg-3); }
.ms_component div.ms_tab_content.current { display: inherit; }

/* ------------------------------------------------------------ Slides */
.ms_component ul.ms_slides {
	list-style-type: none; cursor: pointer; text-align:center; position:absolute; width: 100%; top:0;
	border-top: 1px solid var(--bo-dark); margin-bottom:10px;
}
.ms_component ul.ms_slides li { background: none; display: inline-block; padding: 10px; color: var(--tx-dark); }
.ms_component ul.ms_slides li.current { color: var(--tx-light); }
.ms_component ul.ms_slides li.ms_slide_link i { text-align:center; padding:0; }
.ms_component div.ms_slide_content { display: none; background-color: transparent; padding: 4px; /* height: var(--slides-height);  */}
.ms_component div.ms_slide_content.current { display: inherit; }

.ms_slide_prev { position:absolute; top:12px; left:0; color: var(--tx-dark); }
.ms_slide_prev:hover { color: var(--tx-light); }
.ms_slide_next { position:absolute; top:12px; right:0; color: var(--tx-dark); }
.ms_slide_next:hover { color: var(--tx-light); }

/* ------------------------------------------------------------ modal */
.modal {
  position: fixed; top: 0; bottom: 0; left: 0; right: 0;
  background: rgba(0, 0, 0, 0.5); transition: opacity 1s; visibility: hidden; opacity: 0;
}
.modal:target { visibility: visible; opacity: 1; }
.modal_content {
	top: 50%;left: 50%; padding: 10px; transform: translate(-50%, -50%); padding: 0;
	background-color: var(--bg); border: 1px solid var(--bo-light); border-radius: 2px;
	position: relative; transition: all 5s ease-in-out;
}
.modal_header { background-color: var(--bg-dark); padding: 5px; border-bottom: 1px solid var(--bo); }
.modal_body { padding: 10px; }
.modal_footer { background-color: var(--bg-dark); padding: 10px; height: 54px; border-top: 1px solid var(--bo-light); margin-top: 20px; }
.modal_footer .ms_component { margin: 0 !important; }

/* ------------------------------------------------------------ notify */
#_ms_notify {
	display: block; position: fixed; right: 0; top: 30px; float: right; margin-right: 40px; padding: 10px; z-index: 9999;
	border: 1px solid var(--bo); border-radius: 2px; background-color: var(--bg-dark); visibility: hidden; font-size: 1.25em;
}
#_ms_notify.success { border-left: 10px solid var(--success); }
#_ms_notify.warning { border-left: 10px solid var(--warning); }
#_ms_notify.error { border-left: 10px solid var(--error); }
#_ms_notify.info { border-left: 10px solid var(--catch); }
#_ms_notify.show { visibility: visible; -webkit-animation: fadein 0.5s, fadeout  0.5s 2.5s; animation: fadein 0.5s, fadeout 0.5s 2.5s; }
@keyframes fadein { from { top: 0; opacity: 0; } to { top: 30px; opacity: 1; } }
@keyframes fadeout { from { top: 30px; opacity: 1; } to { top: 0; opacity: 0; } }
@-webkit-keyframes fadein { from { top: 0; opacity: 0; } to { top: 30px; opacity: 1;} }
@-webkit-keyframes fadeout { from { top: 30px; opacity: 1; } to { top: 0; opacity: 0; } }

/* ------------------------------------------------------------ Sliding menu */
.ms_slide_menu { color: var(--warning); margin-top:8px; }
.ms_slide_menu_bg { position: fixed; left: 0; top: 0; bottom: 0; right: 0; z-index: 9; background-color: rgba(0, 0, 0, 0.20);  display: none; }
.ms_slide_menu_close { position: absolute; top: 8px; left: 220px; }
.ms_slide_menu_content { width: 250px; left: -250px; height: 100vh; position: fixed; z-index: 10; top: 0; transition: all 0.6s ease-in-out; }
.ms_slide_menu_title { background-color: var(--bg-dark); height: var(--header); border-bottom: 1px solid var(--bo-light); }
.ms_slide_menu_content.show { left: 0px; background-color: rgba(44, 44, 44, 0.8); transition: all 0.6s ease-in-out; }
.ms_slide_menu_action { margin-left: 20px; margin-top:10px; cursor: pointer; }
.ms_slide_menu_action:hover { color: var(--catch); }
.ms_slide_menu_action:hover i { color: var(--catch); }
.ms_slide_menu_action i { margin-right: 20px; color: var(--warning); }
.ms_slide_menu_action_sub { font-size: 1em; margin-left: 40px; margin-top:10px; }
.ms_slide_menu_action_sub i { margin-right: 20px; }
.ms_slide_menu_action.bottom { position: absolute; left: 0; bottom: 80px; }

/* ------------------------------------------------------------ input and readonly */
.ms_component input ~ input[type="range"] { width: 100%; border: none; border-bottom: 1px solid var(--bo); background-color: transparent; outline: none; color: var(--tx); }
.ms_component .label { position: absolute; top: 0; left: 0; transition: all 0.3s ease; pointer-events: none; color: var(--tx-dark);}
.ms_component input:focus ~ input[type="range"] { border-bottom: 1px solid var(--catch); }
.ms_component input:focus ~ .label, .ms_component input:valid ~ .label { top: -20px; color: var(--catch); }
.ms_component + .ms_input_button input { width: calc(100% - 28px) !important; }

.ms_component .text { width: 100%; border: none; border-bottom: 1px solid var(--bo); background-color: transparent; color: var(--tx); }
.ms_component .text_label { position: absolute; top: -20px; left: 0; color: var(--catch);}

/* ------------------------------------------------------------ Listbox */
.ms_component .ms_listbox { list-style-type: none; padding: 4px; background: transparent; width: 100%; height: 120px; border: 1px solid var(--bo); overflow-y: auto; overflow-x: hidden; }
.ms_component .ms_listbox li { padding-left: 4px; padding-right: 4px; }
.ms_component .ms_listbox:hover { border: 1px solid var(--catch); }
.ms_component .ms_listbox li:hover { background-color: var(--bg-light); }
.ms_component .ms_listbox li:hover div { background-color: var(--bg-light); }
.ms_component .ms_listbox li.selected { background-color: var(--catch); color: var(--tx-invert); }
.ms_component .ms_listbox li.selected div { background-color: var(--catch); color: var(--tx-invert); }

/* ------------------------------------------------------------ Select list */
.ms_component .ms_select_list {
	display: none; z-index: 99;
	position: absolute; top: 12px; left:2px; list-style-type: none; padding: 4px;
	background-color: var(--bg-dark); width: 98%; height: 120px;
	border-bottom: 1px solid var(--bo); border-left: 1px solid var(--bo); border-right: 1px solid var(--bo);
	overflow-y: auto; overflow-x: hidden;
}
.ms_component .ms_select_list li { font-size: 1.1em; margin-top: 6px; }
.ms_component .ms_select_list li:hover { background-color: var(--bg-light); }

/* ------------------------------------------------------------ Textarea */
.ms_component textarea {
	width: 100%; height: 80px; border: none; border-bottom: 1px solid var(--bo);
	background: transparent; color: var(--tx); text-align: justify; font-family: inherit;
	outline: none !important; resize: vertical; padding: 4px 0 4px 2px; margin-top: 4px;
}
.ms_component:hover textarea { border-bottom: 1px solid var(--catch); }
.ms_component .label_text {
	position: absolute; top: 0; left: 0; transition: all 0.3s ease; pointer-events: none;
	color: var(--tx-dark); border-bottom: 1px solid var(--bo); width: 100%;
}
.ms_component textarea:focus ~ .label_text, .ms_component textarea:valid ~ .label_text { top: -16px; color: var(--catch); }

/* ------------------------------------------------------------ Dropzone */
.ms_component .ms_upload { border: 1px solid var(--bo); width: 100%; height: 80px; background-color: var(--bg-dark); margin-top: 2px; }

/* ------------------------------------------------------------ Badge */
[data-ms_badge]:after {
	background: var(--bg-light); border-radius: 30px; color: var(--tx-light);
	content: attr(data-ms_badge); font-size: 11px; margin-top: -6px; min-width: 20px;
	padding: 2px; position: absolute; text-align: center; border:solid 1px var(--bo-light);
}
[data-ms_badge=""]:after { display: none; }

/* ------------------------------------------------------------ Progress Bar */
.ms_component .ms_bar { width: 100%; padding: 2px; border: 1px solid var(--prb-bo); border-radius: 3px; background-color: var(--prb-bg); }
.ms_component .ms_bar .ms_bar_fill { display: block; height: 6px; background-color: var(--prb-fill); border-radius: 3px; }

/* ------------------------------------------------------------ HR */
hr.hr_base { border:none; height:1px; background:var(--hr-base); }
hr.hr_light { border:none; height:1px; background:var(--hr-light); }
hr.hr_dark { border:none; height:1px; background:var(--hr-dark); }
hr.hr_catch { border:none; height:1px; background:var(--catch); }
hr.hr_error { border:none; height:1px; background:var(--error); }
hr.hr_warning { border:none; height:1px; background:var(--warning); }
hr.hr_success { border:none; height:1px; background:var(--success); }
hr.hr_3 { height:3px !important; }
hr.hr_5 { height:5px !important; }

/* ------------------------------------------------------------ Tooltip */
.ms_tip {
	position:absolute; top:0; left:0; padding: 8px;
	border-radius: 4px; background-color: var(--tip-bg); color: var(--tip-tx); z-index: 10;
	border:1px solid var(--tip-bo); box-shadow: rgba(72, 135, 202, 0.3) 0 0 5px 5px; max-width: 250px;
}

/* ------------------------------------------------------------ Steps */
.step {
	/* float:left;  */ display:inline-block; width:auto; margin-left:20px; background-color:var(--step-bg);
	border: 1px solid var(--step-bo); border-radius: 4px;
	padding: 8px; font-size: 1.25em; text-align: center;
}
.step:first-child { margin-left:0 !important; }
.step i { text-align: center; margin-bottom:10px; font-size: 1.25em; }
.step i.fa-check { display:none; }
.step i.fa-hourglass-start { display:block; }
.step[done] i.fa-check { display:block; }
.step[done] i.fa-hourglass-start { display:none; }
.step_title { font-variant:small-caps; color: var(--step-title); }