form.grid12, .form.grid12 {
	grid-auto-rows: auto;
	grid-gap: var(--form_gap_y) var(--form_gap_x);
	grid-auto-flow: inherit;
	container-type: inline-size;
	container-name: form;
}
form.grid12 > div, .form.grid12 > div {
	position: relative;
}
input.form_error, textarea.form_error, select.form_error {
	border: max(var(--input_borderwidth), 1px) solid var(--form_error_color) !important;
}
fieldset.form_error input + .toggle_desc {
	color: var(--form_error_color);
}
.icol {
	position: relative;
    display: flex;
    flex-direction: column-reverse;
	align-items: flex-start;
	transition: opacity 0.25s;
}
.icol.disabled, input:disabled, textarea:disabled, select:disabled {
	pointer-events: none;
	opacity: 0.4;
}
.icol.submit {
	grid-column-start: 1;
	padding-top: calc(var(--form_rowheight) / 3);
}
.icol.margin_top {
	margin-top: var(--form_gap_y);
}
.icol.margin_bottom {
	margin-bottom: var(--form_gap_y);
}
.icol.margin {
	margin: var(--form_gap_y) 0;
}
.icol.straight {
	flex-direction: column;
}
.icol.oneline {
	flex-direction: row;
    align-items: center;
	min-height: calc(var(--form_rowheight) / 1.5);
}
.icol.center {
	align-items: center;
}
fieldset, legend {
	margin: 0;
	padding: 0;
	border: none;
}
fieldset.icol {
    flex-direction: column;
}

/* #input, textarea, select */
input:not([type="checkbox"]):not([type="radio"]), textarea, select, button, a.button {
	font-family: var(--form_font);
	width: 100%;
	height: var(--form_rowheight);
	position: relative;
	float: left;
	display: block;
	margin: 0;
	box-sizing: border-box;
	-webkit-appearance: none;
	appearance: none;
	transition: var(--input_transition);
}
input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]), textarea, select {
	font-size: var(--input_fontsize);
	font-weight: var(--input_fontweight);
	letter-spacing: var(--input_letterspacing);
	padding: var(--font_adjustment_top) var(--input_padding) var(--font_adjustment_bottom);
	color: var(--input_color);
	background-color: var(--input_bg);
	border: var(--input_borderwidth) solid var(--input_bordercolor);
	border-radius: var(--form_borderradius);
	box-shadow: var(--input_boxshadow);
	outline: none;
}
input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]):focus, textarea:focus, select:focus {
	color: var(--input_color_focus);
	background-color: var(--input_bg_focus);
	border: var(--input_borderwidth) solid var(--input_bordercolor_focus);
	box-shadow: var(--input_boxshadow_focus);
	outline: none;
	transition: var(--input_transition);	
}
textarea {
	height: calc(var(--form_rowheight) * 2.5);
	resize: none;
	font-size: var(--textarea_fontsize);
	padding: var(--textarea_padding_y) var(--input_padding);
	line-height: var(--textarea_lineheight);
	overflow: auto;
}
select {
	cursor: pointer;
}
/* /input, textarea, select */

/* #label */
input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]) ~ label, textarea ~ label, select ~ label, legend {
	font-family: var(--form_font);
	position: var(--label_position);
    top: 0;
	left: var(--input_borderwidth);
	margin: var(--label_margin);
	font-size: var(--label_fontsize);
	font-weight: var(--label_fontweight);
	letter-spacing: var(--label_letterspacing);
	color: var(--label_color);
	pointer-events: none;
	white-space: nowrap;
	z-index: 1;
}
[required] ~ label:not(.option):after, fieldset.required > legend:after {
	content: ' *';
	color: var(--label_required_color);
}
.icol.hide_label > label {
	display: none;
	/* visibility: hidden; */
}
/* /label */

/* #moving label */
.moving_label input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]) ~ label,
.moving_label textarea ~ label,
.moving_label select ~ label,
.moved_label input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]) ~ label,
.moved_label textarea ~ label,
.moved_label select ~ label,
.moving_label label.moved_label {
	position: absolute;
	top: var(--input_borderwidth);
	border-radius: 0.3em;
	transform-origin: center left;
	font-size: var(--input_fontsize);
	font-weight: var(--input_fontweight);
	letter-spacing: var(--input_letterspacing);
	margin-left: var(--input_padding);
	color: var(--placeholder_color);
	transform: translateY(calc(var(--form_rowheight) / 2 - 50% - var(--input_borderwidth)));
	transition: var(--input_transition);
}
.moving_label textarea ~ label {
	transform: translateY(var(--textarea_padding_y));
	line-height: var(--textarea_lineheight);
}
.moving_label input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]):not(:placeholder-shown) ~ label,
.moving_label textarea:not(:placeholder-shown) ~ label,
.moving_label select ~ label,
.moved_label input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]) ~ label,
.moved_label textarea ~ label,
.moved_label select ~ label,
.moving_label label.moved_label {
	font-weight: var(--label_fontweight) !important;
	letter-spacing: var(--label_letterspacing) !important;
	line-height: inherit;
	color: var(--label_color) !important;
	background-color: var(--label_moved_bg) !important;
	box-shadow: -0.3em 0 0 var(--label_moved_bg), 0.3em 0 0 var(--label_moved_bg) !important;
	transform: translateY(-50%) scale(0.85) !important;
}
/* /moving label */

/* #button */
input[type="submit"], button, a.button {
	width: 100%;
	max-width: 550px;
	height: auto;
	text-align: center;
	font-size: var(--button_fontsize);
	font-weight: var(--button_fontweight);
	letter-spacing: var(--button_letterspacing);
	line-height: var(--button_lineheight);
	color: var(--button_color);
	background-color: var(--button_bg);
	border: var(--button_border);
	border-radius: var(--form_borderradius);
	padding: var(--button_padding_top) var(--button_padding_x, 4rem) var(--button_padding_bottom);
	transition: var(--input_transition);
	cursor: pointer;
	overflow: hidden;
}
input[type="submit"]:active, button:active, a.button:active {
	color: var(--button_color_active);
	background-color: var(--button_bg_active);
	border: var(--button_border_active);
	transition: 0s;
}
input[type="submit"]:disabled, button:disabled {
	color: transparent;
	pointer-events: none;
	transition: 0s;
}
button, a.button {
	--loader_bg: var(--button_loader_bg);
	--loader_color_ind: var(--button_loader_color_ind);
	--loader_color_base: var(--button_loader_color_base);
    display: flex;
	align-items: center;
    justify-content: center;
	gap: 1em;
}
a.button:hover {
    text-decoration: none;
}
input[type="submit"].ghost, button.ghost, a.button.ghost {
	color: var(--button_ghost_color);
    background-color: var(--button_ghost_bg, transparent);
    border: var(--button_ghost_borderwidth)  solid currentColor;
}
input[type="submit"].small, button.small, a.button.small {
	font-size: var(--button_small_fontsize);
}
input[type="submit"].auto_width, button.auto_width, a.button.auto_width {
	width: auto;
}
input[type="submit"].enable_center, button.enable_center, a.button.enable_center {
	float: none;
	display: inline-flex;
}
button .icon, a.button .icon {
	width: var(--button_icon_size);
	min-width: var(--button_icon_size);
	stroke: var(--button_icon_stroke);
	stroke-width: var(--button_icon_strokewidth);
}
button.load, a.button.load {
    color: transparent;
	transition: 0s;
}
/* /button */

/* #check */
.check {
	position: relative;
	float: left;
	width: 100%;
	display: block;
	margin: var(--check_margin_y) 0;
	color: var(--check_color);
	font-size: var(--check_fontsize);
	font-weight: var(--check_fontweight);
	letter-spacing: var(--check_letterspacing);
	line-height: var(--check_lineheight);
	cursor: pointer;
}
.check_desc, .toggle_desc {
	position: relative;
	width: 100%;
	display: flex;
	flex-direction: row;
    align-items: flex-start;
	gap: var(--check_gap);
}
.check_desc:before, .check_desc:after {
	content: "";
	position: relative;
	min-width: var(--check_input_size);
	aspect-ratio: 1/1;
	top: calc((var(--check_lineheight) - var(--check_input_size)) / 2);
	box-sizing: border-box;
	background-color: var(--check_bg);
	border: var(--check_border, var(--input_bordercolor));
}
.check_desc:after {
	position: absolute;
	border: none;
	background-color: transparent;
	z-index: -1;
	pointer-events: none;
	display: none;
}
input[type="checkbox"] + .check_desc:before,
input[type="checkbox"] + .check_desc:after {
	border-radius: var(--check_checkbox_br);
}
input[type="radio"] + .check_desc:before,
input[type="radio"] + .check_desc:after {
	border-radius: 50%;
}
input[type="checkbox"]:checked + .check_desc:before {
	background-image: url('data:image/svg+xml; utf8, <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" stroke="white" stroke-width="1.2" fill="none"><polyline points="7.5,2.8 3.9,6.4 2.5,5"/></svg>');
	background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
	border: var(--check_border_checked);
	background-color: var(--check_bg_checked);
}
input:checked + .check_desc:after {
	display: block;
	background-color: var(--check_bg_checked);
	-webkit-animation: checked 0.75s forwards;
			animation: checked 0.75s forwards;
}
@-webkit-keyframes checked {
    to   { transform: scale(1.75); opacity: 0; }
}
@keyframes checked {
	to   { transform: scale(1.75); opacity: 0; }
}
input[type="radio"]:checked + .check_desc:before {
	border: 0.4em solid var(--check_bg_checked);
}
/* /check */

/* #toggle */
.toggle {
	position: relative;
	float: left;
	width: 100%;
	display: block;
	margin: var(--toggle_margin_y) 0;
	color: var(--toggle_color);
	font-size: var(--toggle_fontsize);
	font-weight: var(--toggle_fontweight);
	letter-spacing: var(--toggle_letterspacing);
	line-height: var(--toggle_lineheight);
	cursor: pointer;
}
.toggle_desc i {
    position: relative;
    display: block;
    min-width: calc(var(--toggle_handle_size) * 1.8);
	height: auto;
    top: auto;
    left: auto;
    padding: 0.2em;
	border-color: transparent;
    border-radius: 5em;
	box-sizing: content-box;
    background-color: var(--toggle_bg);
	overflow: hidden;
    transform: none;
}
.toggle_desc {
	gap: var(--toggle_gap);
	align-items: center;
}
.toggle_desc i:after {
	content: "";
	display: block !important;
    position: relative;
    width: var(--toggle_handle_size);
    height: var(--toggle_handle_size);
    border-radius: 50%;
    background-color: var(--toggle_handle_bg);
    box-shadow: var(--toggle_handle_boxshadow);
}
.toggle_desc i, .toggle_desc i:after {
	transition: 0.25s, transform 0.25s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.toggle input:checked + .toggle_desc i {
	background-color: var(--toggle_bg_checked);
}
.toggle input:checked + .toggle_desc i:after {
	transform: translateX(80%);
}
.check input, .toggle input {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: 0;
	padding: 0;
	opacity: 0;
	appearance: none;
	pointer-events: none;
}
input[type="radio"]:focus-visible + .check_desc:before,
input[type="checkbox"]:focus-visible + .check_desc:before,
.toggle input:focus-visible + .toggle_desc i {
	outline: var(--focus_outline, 1px solid orange);
	outline-offset: var(--focus_outline_offset, 2px);
	box-shadow: var(--focus_boxshadow, inherit);
	transition: 0s;
}
/* /toggle */

/* #placeholder */
::-webkit-input-placeholder {
	color: var(--placeholder_color);
	font-weight: var(--placeholder_fontweight);
}
:-moz-placeholder { 
	color: var(--placeholder_color);
	font-weight: var(--placeholder_fontweight);
}
::-moz-placeholder {  
	color: var(--placeholder_color);
	font-weight: var(--placeholder_fontweight);
}
:-ms-input-placeholder {  
	color: var(--placeholder_color);
	font-weight: var(--placeholder_fontweight);
}
/* /placeholder */

/* #misc */
.input_overlay {
	position: absolute;
	font-family: var(--form_font);
	width: auto;
	height: var(--form_rowheight);
	font-size: var(--input_fontsize);
	font-weight: var(--input_fontweight);
	letter-spacing: var(--input_letterspacing);
	padding: var(--font_adjustment_top) var(--input_padding) var(--font_adjustment_bottom);
	color: var(--input_color);
	border: var(--input_borderwidth) solid transparent;
	border-radius: var(--form_borderradius);
	pointer-events: none;
	z-index: 6;
	overflow: hidden;
	display: flex;
    align-items: center;
	justify-content: center;
}
.input_overlay.prefix, .input_overlay.suffix {
	width: var(--fix_width);
	font-size: var(--fix_fontsize);
	color: var(--fix_color);
	font-weight: var(--fix_fontweight);
	letter-spacing: var(--fix_letterspacing);
	padding-left: 0;
	padding-right: 0;
}
.input_overlay.prefix:before, .input_overlay.suffix:before {
	content: "";
	position: absolute;
	inset: 0;
	background-color: var(--fix_bg);
	z-index: -1;
}
.input_overlay.prefix, .input_overlay.left {
	left: 0;
	border-top-right-radius: 0;
	border-bottom-right-radius: 0;
}
.input_overlay.prefix {
	border-right: var(--fix_border);
}
.input_overlay.suffix, .input_overlay.right {
	right: 0;
	border-top-left-radius: 0;
	border-bottom-left-radius: 0;
}
.input_overlay.suffix {
	border-left: var(--fix_border);
}
.input_overlay .icon {
	width: var(--icon_size);
	min-width: var(--icon_size);
	stroke: var(--icon_stroke);
	stroke-width: var(--icon_strokewidth);
}
.input_overlay.clickable {
	pointer-events: auto;
	cursor: pointer;
}
.input_overlay.clickable .icon {
	stroke: var(--icon_stroke_clickable);
}
.input_overlay.prefix ~ input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]), 
.input_overlay.prefix ~ select {
	padding-left: calc(var(--input_padding) + var(--fix_width));
}
.input_overlay.left ~ input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.input_overlay.left ~ select {
	padding-left: calc(var(--input_padding) * 2 + var(--icon_size));
}
.input_overlay.suffix ~ input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]), 
.input_overlay.suffix ~ select {
	padding-right: calc(var(--input_padding) + var(--fix_width));
}
.input_overlay.right ~ input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.input_overlay.right ~ select {
	padding-right: calc(var(--input_padding) * 2 + var(--icon_size));
}
.input_toggle > svg:last-child, .input_toggle.toggled > svg:first-child {
	position: absolute;
	visibility: hidden;
}
.input_toggle.toggled > svg:last-child {
	position: relative;
	visibility: visible;
}
input.input_error_highlight:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
textarea.input_error_highlight,
select.input_error_highlight,
.input_error_highlight,
.input_error_highlight .check_desc:before {
	border-color: var(--form_error_color);
}
.input_error_highlight:hover {
	border-color: var(--input_bordercolor_hover) !important;
}
.input_error_notification {
	width: 100%;
	color: var(--form_error_color);
	font-size: 1.2rem;
	min-height: 1.5em;
	margin: 0 0 0.5em 0;
	display: inline-flex;
    align-items: center;
	justify-content: space-between;
    gap: 1em;
    -webkit-animation: oppa 0.8s;
            animation: oppa 0.8s;		
}
.input_error_notification > .icon {
	min-width: 1.4em;
    width: 1.4em;
}
input,
textarea,
label,
button:not(.ghost),
a.button:not(.ghost),
.toggle {
	-webkit-tap-highlight-color: transparent;
}
/* /misc */


@media screen and (hover: hover) and (pointer: fine) {
input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]):not(:focus):hover, textarea:not(:focus):hover, select:not(:focus):hover {
	color: var(--input_color_hover);
	background-color: var(--input_bg_hover);
	border: var(--input_borderwidth) solid var(--input_bordercolor_hover);
	box-shadow: var(--input_boxshadow_hover);
	transition: 0s;
}
input[type="submit"]:hover:not(:active), button:hover:not(:active), a.button:hover:not(:active) {
	color: var(--button_color_hover);
	background-color: var(--button_bg_hover);
	border: var(--button_border_hover);
}
button.ghost:hover:not(:active), a.button.ghost:hover:not(:active) {
	color: var(--button_ghost_color_hover);
	background-color: var(--button_ghost_bg_hover, transparent);
	border: var(--button_ghost_borderwidth) solid var(--button_ghost_bg_hover);
}
.check:hover input:not(:checked) + .check_desc:before {
	border: var(--check_border_hover);
	background-color: var(--check_bg_hover);
}
.check:hover input[type="checkbox"]:checked + .check_desc:before {
	border: var(--check_border_checked_hover);
	background-color: var(--check_bg_checked_hover);
}
.toggle input + .toggle_desc:hover i:after {
    box-shadow: var(--toggle_handle_boxshadow_hover);
}
.check:hover .check_desc {
	color: var(--check_color_hover);
}
.toggle_desc:hover {
	color: var(--toggle_color_hover);
}
.input_overlay.clickable:hover .icon {
	stroke: var(--icon_stroke_clickable_hover);
}
}

@container form (max-width: 600px) {
form.grid12 .col3:not(.keep_span) {
	grid-column: span 6;
}
form.grid12 .col4:not(.keep_span) {
	grid-column: span 6;
}
form.grid12 .col6:not(.keep_span) {
	grid-column: span 12;
}
.icol.margin_top {
	margin-top: calc(var(--form_gap_y) / 2);
}
.icol.margin_bottom {
	margin-bottom: calc(var(--form_gap_y) / 2);
}
.icol.margin {
	margin: calc(var(--form_gap_y) / 2) 0;
}
}

@container form (max-width: 506px) {
form.grid12 .col2:not(.keep_span) {
	grid-column: span 4;
}
form.grid12 .col3:not(.keep_span) {
	grid-column: span 12;
}
input[type="submit"], button, a.button {
	max-width: 100%;
}
}

@container form (max-width: 413px) {
form.grid12 .col4:not(.keep_span) {
	grid-column: span 12;
}
}