/* Flexible Contact Form Builder — frontend foundation + optional ready styles */
.oscf-wrapper,
.oscf-wrapper * { box-sizing: border-box; }

.oscf-wrapper {
	--oscf-radius: 10px;
	--oscf-border: #dcdcde;
	--oscf-soft: #f7f7f8;
	--oscf-dark: #111827;
	--oscf-muted: #6b7280;
	--oscf-danger: #d63638;
	--oscf-success: #137333;
	--oscf-form-bg: transparent;
	--oscf-form-text: inherit;
	--oscf-form-border: transparent;
	--oscf-form-border-width: 0px;
	--oscf-form-radius: 0px;
	--oscf-label-color: inherit;
	--oscf-label-font-size: inherit;
	--oscf-field-bg: #fff;
	--oscf-field-text: inherit;
	--oscf-field-font-size: inherit;
	--oscf-field-border: var(--oscf-border);
	--oscf-field-border-width: 1px;
	--oscf-field-radius: var(--oscf-radius);
	--oscf-field-focus: currentColor;
	--oscf-placeholder-color: #7a7a7a;
	--oscf-button-bg: var(--oscf-dark);
	--oscf-button-text: #fff;
	--oscf-button-font-size: inherit;
	--oscf-button-border: var(--oscf-dark);
	--oscf-button-border-width: 1px;
	--oscf-button-radius: var(--oscf-radius);
	--oscf-button-hover-bg: var(--oscf-button-bg);
	--oscf-button-hover-text: var(--oscf-button-text);
	--oscf-button-hover-border: var(--oscf-button-border);
	width: 100%;
	max-width: 100%;
	margin: 0;
	background: transparent;
	color: inherit;
}

.oscf-form { background: var(--oscf-form-bg); color: var(--oscf-form-text); border: var(--oscf-form-border-width) solid var(--oscf-form-border); border-radius: var(--oscf-form-radius); }
.oscf-field { margin-bottom: 16px; position: relative; }
.oscf-field label { display: block; margin-bottom: 7px; font-weight: 600; line-height: 1.35; color: var(--oscf-label-color); font-size: var(--oscf-label-font-size); }
.oscf-required { color: currentColor; opacity: .8; }

.oscf-form input[type="text"],
.oscf-form input[type="email"],
.oscf-form input[type="tel"],
.oscf-form input[type="number"],
.oscf-form input[type="url"],
.oscf-form input[type="date"],
.oscf-form select,
.oscf-form textarea {
	display: block;
	width: 100%;
	max-width: 100%;
	background: var(--oscf-field-bg);
	border: var(--oscf-field-border-width) solid var(--oscf-field-border);
	border-radius: var(--oscf-field-radius);
	padding: 12px 14px;
	font: inherit;
	font-size: var(--oscf-field-font-size);
	line-height: 1.5;
	color: var(--oscf-field-text);
	outline: none;
	transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease, background-color .2s ease;
}

.oscf-form input:focus,
.oscf-form select:focus,
.oscf-form textarea:focus {
	border-color: var(--oscf-field-focus);
	box-shadow: 0 0 0 3px rgba(17, 24, 39, .08);
}

.oscf-form textarea { min-height: 128px; resize: vertical; }


/* Keep placeholders readable even when the active theme overrides them. */
.oscf-form input[type="text"]::placeholder,
.oscf-form input[type="email"]::placeholder,
.oscf-form input[type="tel"]::placeholder,
.oscf-form input[type="number"]::placeholder,
.oscf-form input[type="url"]::placeholder,
.oscf-form textarea::placeholder {
	color: var(--oscf-placeholder-color) !important;
	opacity: 1 !important;
}
.oscf-submit-row { margin-bottom: 0; }

.oscf-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 46px;
	border: var(--oscf-button-border-width) solid var(--oscf-button-border);
	background: var(--oscf-button-bg);
	color: var(--oscf-button-text);
	border-radius: var(--oscf-button-radius);
	padding: 12px 22px;
	font: inherit;
	font-size: var(--oscf-button-font-size);
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	transition: transform .2s ease, box-shadow .2s ease, opacity .2s ease, background-color .2s ease, color .2s ease, border-color .2s ease;
}
.oscf-btn:hover { transform: translateY(-1px); box-shadow: 0 10px 24px rgba(0,0,0,.12); background: var(--oscf-button-hover-bg); color: var(--oscf-button-hover-text); border-color: var(--oscf-button-hover-border); }
.oscf-btn:active { transform: translateY(0); }
.oscf-btn:disabled { opacity: .65; cursor: wait; transform: none; }
.oscf-loading .oscf-btn-text::after { content: ''; width: 14px; height: 14px; margin-inline-start: 8px; display: inline-block; border: 2px solid currentColor; border-top-color: transparent; border-radius: 50%; animation: oscf-spin .75s linear infinite; vertical-align: -2px; }

.oscf-message {
	margin: 0 0 16px;
	padding: 13px 15px;
	border: 1px solid var(--oscf-border);
	border-radius: var(--oscf-radius);
	background: #fff;
	line-height: 1.55;
	box-shadow: 0 10px 30px rgba(0,0,0,.05);
}
.oscf-success { border-color: rgba(19,115,51,.28); background: #f0fff5; color: var(--oscf-success); }
.oscf-error { border-color: rgba(214,54,56,.25); background: #fff5f5; color: var(--oscf-danger); }

.oscf-invalid {
	border-color: var(--oscf-danger) !important;
	box-shadow: 0 0 0 3px rgba(214,54,56,.09) !important;
}
.oscf-field-error {
	display: block;
	margin-top: 7px;
	font-size: 13px;
	line-height: 1.4;
	color: var(--oscf-danger);
}
.oscf-has-error label { color: var(--oscf-danger); }

.oscf-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Form style presets */
.oscf-style-clean .oscf-form { padding: 0; }

.oscf-style-compact { max-width: 560px; }
.oscf-style-compact .oscf-field { margin-bottom: 11px; }
.oscf-style-compact input,
.oscf-style-compact select,
.oscf-style-compact textarea { padding: 9px 11px; border-radius: 7px; }
.oscf-style-compact textarea { min-height: 95px; }
.oscf-style-compact .oscf-btn { min-height: 40px; padding: 10px 17px; }

.oscf-style-rounded .oscf-form {
	padding: 22px;
	border-radius: 24px;
	box-shadow: 0 18px 50px rgba(0,0,0,.08);
}
.oscf-style-rounded input,
.oscf-style-rounded select,
.oscf-style-rounded textarea { border-radius: 18px; background: #fbfbfc; }
.oscf-style-rounded .oscf-btn { border-radius: 999px; }

.oscf-style-outlined .oscf-form {
	padding: 22px;
	border: 1px solid var(--oscf-border);
	border-radius: 18px;
}
.oscf-style-outlined input,
.oscf-style-outlined select,
.oscf-style-outlined textarea { border-radius: 6px; }

.oscf-style-two-columns .oscf-form {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
}
.oscf-style-two-columns .oscf-message,
.oscf-style-two-columns .oscf-field-message,
.oscf-style-two-columns .oscf-submit-row,
.oscf-style-two-columns .oscf-hp,
.oscf-style-two-columns input[type="hidden"] { grid-column: 1 / -1; }
.oscf-style-two-columns .oscf-field { margin-bottom: 0; }

.oscf-style-floating .oscf-field label {
	position: absolute;
	top: -9px;
	inset-inline-start: 12px;
	z-index: 1;
	margin: 0;
	padding: 0 6px;
	background: #fff;
	font-size: 12px;
	color: var(--oscf-muted);
}
.oscf-style-floating .oscf-field { margin-top: 8px; margin-bottom: 18px; }
.oscf-style-floating input,
.oscf-style-floating select,
.oscf-style-floating textarea { padding-top: 14px; }

/* Button style presets */
.oscf-wrapper:not(.oscf-has-custom-colors) .oscf-btn-outline { background: transparent; color: var(--oscf-dark); }
.oscf-wrapper:not(.oscf-has-custom-colors) .oscf-btn-outline:hover { background: var(--oscf-dark); color: #fff; }
.oscf-btn-rounded { border-radius: 999px; padding-inline: 28px; }
.oscf-wrapper:not(.oscf-has-custom-colors) .oscf-btn-ghost { background: var(--oscf-soft); color: var(--oscf-dark); border-color: transparent; }
.oscf-wrapper:not(.oscf-has-custom-colors) .oscf-btn-gradient { border: 0; background: linear-gradient(135deg, #111827, #4b5563); color: #fff; }
.oscf-button-wide .oscf-btn,
.oscf-btn-wide { width: 100%; }

@keyframes oscf-spin { to { transform: rotate(360deg); } }
@keyframes oscf-shake {
	0%, 100% { transform: translateX(0); }
	20% { transform: translateX(-7px); }
	40% { transform: translateX(7px); }
	60% { transform: translateX(-5px); }
	80% { transform: translateX(5px); }
}
.oscf-shake { animation: oscf-shake .42s ease; }

@media (max-width: 700px) {
	.oscf-style-two-columns .oscf-form { grid-template-columns: 1fr; }
	.oscf-style-rounded .oscf-form,
	.oscf-style-outlined .oscf-form { padding: 16px; }
}


.oscf-field select {
	width: 100%;
	min-height: 46px;
	appearance: auto;
}


/* Transparent form mode: no forced card/background on the frontend.
   The section/container design should come from Elementor/theme/custom CSS. */
.oscf-wrapper:not(.oscf-has-custom-colors),
.oscf-wrapper:not(.oscf-has-custom-colors) .oscf-form {
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}

.oscf-wrapper:not(.oscf-has-custom-colors).oscf-style-rounded .oscf-form,
.oscf-wrapper:not(.oscf-has-custom-colors).oscf-style-outlined .oscf-form {
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	background: transparent !important;
}

.oscf-style-floating .oscf-field label {
	background: transparent;
}

/* v1.7.7: Checkbox field + advanced select options */
.oscf-type-checkbox > label:not(.oscf-checkbox-label) {
	display: none !important;
}
.oscf-checkbox-label {
	display: flex !important;
	align-items: flex-start;
	gap: 10px;
	margin: 0 !important;
	font-weight: 600;
	line-height: 1.55;
	cursor: pointer;
	color: var(--oscf-label-color);
	font-size: var(--oscf-label-font-size);
}
.oscf-checkbox-label input[type="checkbox"] {
	width: 18px;
	height: 18px;
	min-width: 18px;
	margin: .2em 0 0;
	accent-color: var(--oscf-button-bg);
	cursor: pointer;
}
.oscf-checkbox-help {
	display: block;
	margin-top: 6px;
	color: var(--oscf-muted);
	font-size: 13px;
	line-height: 1.5;
}
.oscf-form select option[disabled],
.oscf-form select option[data-oscf-disabled="1"] {
	color: #b40000;
	background-color: #fff1f1;
	font-weight: 700;
}
.oscf-style-two-columns .oscf-type-checkbox {
	grid-column: 1 / -1;
}

/* v1.8.0 — Phone help line */
.oscf-field-help {
	display: block;
	margin-top: 8px;
	font-size: 14px;
	line-height: 1.45;
	color: var(--oscf-muted);
}
.oscf-type-tel input[type="tel"] {
	direction: ltr;
	text-align: inherit;
}

/* v1.9.0 — Fixed country-code phone field */
.oscf-phone-group {
	display: flex;
	width: 100%;
	align-items: stretch;
}
.oscf-phone-code {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	min-width: 72px;
	padding: 12px 14px;
	background: color-mix(in srgb, var(--oscf-field-bg) 88%, #000 12%);
	border: var(--oscf-field-border-width) solid var(--oscf-field-border);
	border-inline-end: 0;
	border-radius: var(--oscf-field-radius) 0 0 var(--oscf-field-radius);
	font: inherit;
	font-size: var(--oscf-field-font-size);
	font-weight: 700;
	color: var(--oscf-field-text);
	white-space: nowrap;
}
.oscf-phone-group .oscf-phone-local-input {
	flex: 1 1 auto;
	min-width: 0;
	border-radius: 0 var(--oscf-field-radius) var(--oscf-field-radius) 0 !important;
}
[dir="rtl"] .oscf-phone-group .oscf-phone-code,
.rtl .oscf-phone-group .oscf-phone-code {
	border-radius: var(--oscf-field-radius) 0 0 var(--oscf-field-radius);
}
.oscf-phone-group:focus-within .oscf-phone-code {
	border-color: var(--oscf-field-focus);
	box-shadow: none;
}
.oscf-phone-group:focus-within .oscf-phone-local-input {
	border-color: var(--oscf-field-focus);
}
@media (max-width: 480px) {
	.oscf-phone-code { min-width: 64px; padding-inline: 10px; }
}


/* v1.11.0 — Professional underline + interactive floating labels */

/* Minimal Underline: editorial layout inspired by the supplied reference. */
.oscf-style-minimal-underline .oscf-form {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: clamp(18px, 3vw, 34px);
	row-gap: 26px;
}
.oscf-style-minimal-underline .oscf-field {
	min-width: 0;
	margin: 0;
}
.oscf-style-minimal-underline .oscf-type-email,
.oscf-style-minimal-underline .oscf-type-textarea,
.oscf-style-minimal-underline .oscf-type-checkbox,
.oscf-style-minimal-underline .oscf-submit-row,
.oscf-style-minimal-underline .oscf-hp {
	grid-column: 1 / -1;
}
.oscf-style-minimal-underline .oscf-field > label:not(.oscf-checkbox-label) {
	margin: 0 0 10px;
	font-size: var(--oscf-label-font-size);
	font-weight: 600;
	line-height: 1.35;
	color: var(--oscf-label-color);
}
.oscf-style-minimal-underline .oscf-form input[type="text"],
.oscf-style-minimal-underline .oscf-form input[type="email"],
.oscf-style-minimal-underline .oscf-form input[type="tel"],
.oscf-style-minimal-underline .oscf-form input[type="number"],
.oscf-style-minimal-underline .oscf-form input[type="url"],
.oscf-style-minimal-underline .oscf-form input[type="date"],
.oscf-style-minimal-underline .oscf-form select,
.oscf-style-minimal-underline .oscf-form textarea {
	width: 100%;
	min-height: 48px;
	padding: 10px 10px 13px;
	border: 0;
	border-bottom: var(--oscf-field-border-width) solid var(--oscf-field-border);
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	outline: 0;
	transition: border-color .22s ease, box-shadow .22s ease, color .22s ease;
}
.oscf-style-minimal-underline .oscf-form textarea {
	min-height: 132px;
	padding-top: 10px;
}
.oscf-style-minimal-underline .oscf-form input:focus,
.oscf-style-minimal-underline .oscf-form select:focus,
.oscf-style-minimal-underline .oscf-form textarea:focus {
	border-color: var(--oscf-field-focus);
	box-shadow: 0 1px 0 var(--oscf-field-focus);
}
.oscf-style-minimal-underline .oscf-invalid {
	border-color: var(--oscf-danger) !important;
	box-shadow: 0 1px 0 var(--oscf-danger) !important;
}
.oscf-style-minimal-underline .oscf-field-error {
	margin-top: 5px;
	font-size: 14px;
}
.oscf-style-minimal-underline .oscf-phone-group {
	align-items: stretch;
}
.oscf-style-minimal-underline .oscf-phone-code {
	min-width: 64px;
	padding: 10px 8px 13px;
	border: 0;
	border-bottom: var(--oscf-field-border-width) solid var(--oscf-field-border);
	border-radius: 0;
	background: transparent;
}
.oscf-style-minimal-underline .oscf-phone-group .oscf-phone-local-input {
	border-radius: 0 !important;
}
.oscf-style-minimal-underline .oscf-phone-group:focus-within .oscf-phone-code {
	border-color: var(--oscf-field-focus);
	box-shadow: 0 1px 0 var(--oscf-field-focus);
}

/* Smart Floating Labels: label begins inside, then moves up on focus/value. */
.oscf-style-smart-floating .oscf-field:not(.oscf-type-checkbox):not(.oscf-submit-row) {
	position: relative;
	margin-bottom: 22px;
	padding-top: 0;
}
.oscf-style-smart-floating .oscf-field > label:not(.oscf-checkbox-label) {
	position: absolute;
	top: 27px;
	inset-inline-start: 15px;
	z-index: 3;
	max-width: calc(100% - 30px);
	margin: 0;
	padding: 0 5px;
	color: var(--oscf-muted);
	font-size: var(--oscf-label-font-size);
	font-weight: 500;
	line-height: 1;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	pointer-events: none;
	transform: translateY(-50%);
	transform-origin: top inline-start;
	transition: top .2s ease, transform .2s ease, font-size .2s ease, color .2s ease, background-color .2s ease;
}
.oscf-style-smart-floating .oscf-form input[type="text"],
.oscf-style-smart-floating .oscf-form input[type="email"],
.oscf-style-smart-floating .oscf-form input[type="tel"],
.oscf-style-smart-floating .oscf-form input[type="number"],
.oscf-style-smart-floating .oscf-form input[type="url"],
.oscf-style-smart-floating .oscf-form input[type="date"],
.oscf-style-smart-floating .oscf-form select,
.oscf-style-smart-floating .oscf-form textarea {
	min-height: 54px;
	padding: 18px 15px 8px;
	background: var(--oscf-field-bg);
	transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.oscf-style-smart-floating .oscf-form textarea {
	min-height: 132px;
	padding-top: 22px;
}
.oscf-style-smart-floating .oscf-type-textarea > label:not(.oscf-checkbox-label) {
	top: 24px;
}
.oscf-style-smart-floating .oscf-field:not(.oscf-field-active):not(.oscf-field-filled) input::placeholder,
.oscf-style-smart-floating .oscf-field:not(.oscf-field-active):not(.oscf-field-filled) textarea::placeholder {
	color: transparent !important;
}
.oscf-style-smart-floating .oscf-field-active > label:not(.oscf-checkbox-label),
.oscf-style-smart-floating .oscf-field-filled > label:not(.oscf-checkbox-label) {
	top: 0;
	font-size: 12px;
	font-weight: 600;
	color: var(--oscf-field-focus);
	background: var(--oscf-field-bg);
	transform: translateY(-50%);
}
.oscf-style-smart-floating .oscf-has-error > label:not(.oscf-checkbox-label) {
	color: var(--oscf-danger);
}
.oscf-style-smart-floating .oscf-phone-group {
	position: relative;
}
.oscf-style-smart-floating .oscf-phone-code {
	padding-top: 18px;
	padding-bottom: 8px;
}
.oscf-style-smart-floating .oscf-phone-group .oscf-phone-local-input {
	padding-top: 18px;
	padding-bottom: 8px;
}

@media (max-width: 700px) {
	.oscf-style-minimal-underline .oscf-form {
		grid-template-columns: 1fr;
		row-gap: 22px;
	}
	.oscf-style-minimal-underline .oscf-field {
		grid-column: 1 / -1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.oscf-style-smart-floating .oscf-field > label:not(.oscf-checkbox-label),
	.oscf-style-minimal-underline input,
	.oscf-style-minimal-underline select,
	.oscf-style-minimal-underline textarea {
		transition: none !important;
	}
}


/* v1.13.0 — Field and button icons / custom SVG with RTL-aware positioning */
.oscf-control-wrap {
	position: relative;
	width: 100%;
}
.oscf-control-icon,
.oscf-btn-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--oscf-field-icon-color, currentColor);
	pointer-events: none;
	line-height: 0;
}
.oscf-control-icon {
	position: absolute;
	z-index: 4;
	top: 50%;
	width: var(--oscf-field-icon-size, 20px);
	height: var(--oscf-field-icon-size, 20px);
	transform: translateY(-50%);
}
.oscf-icon-inner,
.oscf-icon-inner svg {
	display: block;
	width: 100%;
	height: 100%;
}
.oscf-icon-inner {
	transform: rotate(var(--oscf-field-icon-rotation, var(--oscf-button-icon-rotation, 0deg))) scaleX(var(--oscf-icon-flip-scale, 1));
	transform-origin: center;
}
[dir="rtl"] .oscf-icon-flip-rtl,
.rtl .oscf-icon-flip-rtl {
	--oscf-icon-flip-scale: -1;
}
.oscf-field-icon-start .oscf-control-icon { inset-inline-start: var(--oscf-field-icon-gap, 12px); }
.oscf-field-icon-end .oscf-control-icon { inset-inline-end: var(--oscf-field-icon-gap, 12px); }
.oscf-field-icon-left .oscf-control-icon { left: var(--oscf-field-icon-gap, 12px); }
.oscf-field-icon-right .oscf-control-icon { right: var(--oscf-field-icon-gap, 12px); }

.oscf-field-icon-start .oscf-control-wrap > input,
.oscf-field-icon-start .oscf-control-wrap > select,
.oscf-field-icon-start .oscf-control-wrap > textarea {
	padding-inline-start: calc(var(--oscf-field-icon-size, 20px) + (var(--oscf-field-icon-gap, 12px) * 2));
}
.oscf-field-icon-end .oscf-control-wrap > input,
.oscf-field-icon-end .oscf-control-wrap > select,
.oscf-field-icon-end .oscf-control-wrap > textarea {
	padding-inline-end: calc(var(--oscf-field-icon-size, 20px) + (var(--oscf-field-icon-gap, 12px) * 2));
}
.oscf-field-icon-left .oscf-control-wrap > input,
.oscf-field-icon-left .oscf-control-wrap > select,
.oscf-field-icon-left .oscf-control-wrap > textarea {
	padding-left: calc(var(--oscf-field-icon-size, 20px) + (var(--oscf-field-icon-gap, 12px) * 2));
}
.oscf-field-icon-right .oscf-control-wrap > input,
.oscf-field-icon-right .oscf-control-wrap > select,
.oscf-field-icon-right .oscf-control-wrap > textarea {
	padding-right: calc(var(--oscf-field-icon-size, 20px) + (var(--oscf-field-icon-gap, 12px) * 2));
}
.oscf-type-textarea .oscf-control-icon {
	top: 18px;
	transform: none;
}

/* Fixed country phone groups reserve room without breaking the prefix block. */
.oscf-field-icon-start .oscf-phone-code {
	padding-inline-start: calc(var(--oscf-field-icon-size, 20px) + (var(--oscf-field-icon-gap, 12px) * 1.7));
}
.oscf-field-icon-end .oscf-phone-local-input {
	padding-inline-end: calc(var(--oscf-field-icon-size, 20px) + (var(--oscf-field-icon-gap, 12px) * 2));
}
.oscf-field-icon-left .oscf-phone-code {
	padding-left: calc(var(--oscf-field-icon-size, 20px) + (var(--oscf-field-icon-gap, 12px) * 1.7));
}
.oscf-field-icon-right .oscf-phone-local-input {
	padding-right: calc(var(--oscf-field-icon-size, 20px) + (var(--oscf-field-icon-gap, 12px) * 2));
}

/* Floating-label styles must leave room for a logical-start icon. */
.oscf-style-smart-floating .oscf-field-icon-start > label:not(.oscf-checkbox-label) {
	inset-inline-start: calc(15px + var(--oscf-field-icon-size, 20px) + var(--oscf-field-icon-gap, 12px));
}

/* Button icon positioning. */
.oscf-btn-has-icon {
	position: relative;
	gap: var(--oscf-button-icon-gap, 8px);
}
.oscf-btn-icon {
	position: relative;
	flex: 0 0 auto;
	width: var(--oscf-button-icon-size, 18px);
	height: var(--oscf-button-icon-size, 18px);
	color: var(--oscf-button-icon-color, currentColor);
}
.oscf-btn-icon .oscf-icon-inner {
	transform: rotate(var(--oscf-button-icon-rotation, 0deg)) scaleX(var(--oscf-icon-flip-scale, 1));
}
.oscf-btn-icon-end .oscf-btn-icon { order: 2; }
.oscf-btn-icon-end .oscf-btn-text { order: 1; }
.oscf-btn-icon-left {
	padding-left: calc(22px + var(--oscf-button-icon-size, 18px) + var(--oscf-button-icon-gap, 8px));
}
.oscf-btn-icon-right {
	padding-right: calc(22px + var(--oscf-button-icon-size, 18px) + var(--oscf-button-icon-gap, 8px));
}
.oscf-btn-icon-left .oscf-btn-icon,
.oscf-btn-icon-right .oscf-btn-icon {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
}
.oscf-btn-icon-left .oscf-btn-icon { left: var(--oscf-button-icon-gap, 8px); }
.oscf-btn-icon-right .oscf-btn-icon { right: var(--oscf-button-icon-gap, 8px); }
.oscf-btn-has-icon.oscf-loading .oscf-btn-text::after {
	display: none;
}
.oscf-btn-has-icon.oscf-loading .oscf-btn-icon .oscf-icon-inner {
	display: none;
}
.oscf-btn-has-icon.oscf-loading .oscf-btn-icon::after {
	content: '';
	display: block;
	width: 100%;
	height: 100%;
	border: 2px solid currentColor;
	border-top-color: transparent;
	border-radius: 50%;
	animation: oscf-spin .75s linear infinite;
}

@media (prefers-reduced-motion: reduce) {
	.oscf-icon-inner { transition: none !important; }
}

/* Avoid duplicate native arrows when a custom icon occupies the physical end. */
.oscf-type-select.oscf-field-icon-end select,
.oscf-type-select.oscf-field-icon-right select {
	appearance: none;
	-webkit-appearance: none;
	background-image: none;
}

/* Extra floating-label clearance for fixed physical positions. */
html:not([dir="rtl"]) .oscf-style-smart-floating .oscf-field-icon-left > label:not(.oscf-checkbox-label),
body:not(.rtl) .oscf-style-smart-floating .oscf-field-icon-left > label:not(.oscf-checkbox-label) {
	inset-inline-start: calc(15px + var(--oscf-field-icon-size, 20px) + var(--oscf-field-icon-gap, 12px));
}
[dir="rtl"] .oscf-style-smart-floating .oscf-field-icon-right > label:not(.oscf-checkbox-label),
.rtl .oscf-style-smart-floating .oscf-field-icon-right > label:not(.oscf-checkbox-label) {
	inset-inline-start: calc(15px + var(--oscf-field-icon-size, 20px) + var(--oscf-field-icon-gap, 12px));
}
