/* ==========================================================================
   Absolute Belt Contact Form — Frontend Styles
   Structural rules use !important because many WordPress themes ship
   global grid/flex/width rules that otherwise override this layout.
   ========================================================================== */

.acbf-wrap {
	--acbf-primary: #c8161d;
	--acbf-primary-dark: #a10f15;
	--acbf-dark: #1a1a1a;
	--acbf-light: #ffffff;
	--acbf-gray: #6b6b6b;
	--acbf-border: #e5e5e5;
	--acbf-bg-soft: #f9f9f9;

	display: block !important;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
	width: 100% !important;
	max-width: 1300px !important;
	margin: 0 auto !important;
	padding: 60px 24px !important;
	box-sizing: border-box !important;
	color: var(--acbf-dark);
	float: none !important;
	clear: both !important;
	position: relative !important;
	font-size: 16px;
	line-height: 1.5;
	overflow-x: hidden !important;
	/* Enables true container-based responsiveness below, so the form
	   collapses to one column based on the actual space it has —
	   not just the phone's viewport width. Fixes themes that render
	   the shortcode inside a narrower wrapper/column on mobile. */
	container-type: inline-size !important;
	container-name: acbf !important;
}

/* Hard safety net: nothing inside the form can ever push wider than
   its own parent, on any screen size, no matter what the theme does. */
.acbf-wrap,
.acbf-wrap *,
.acbf-columns,
.acbf-sidebar,
.acbf-form-col,
.acbf-form-row,
.acbf-field,
.acbf-field input,
.acbf-field select,
.acbf-field textarea {
	max-width: 100% !important;
}

.acbf-wrap *,
.acbf-wrap *::before,
.acbf-wrap *::after {
	box-sizing: border-box !important;
}

.acbf-wrap ul {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

.acbf-wrap img,
.acbf-wrap svg {
	max-width: 100%;
	display: inline-block;
}

/* ---------------- Two-column layout (flexbox — more resilient than
   grid against theme overrides, and it wraps naturally by itself) ---------------- */
.acbf-columns {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: stretch !important;
	width: 100% !important;
	margin: 0 !important;
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.12);
}

.acbf-sidebar {
	flex: 1 1 320px !important;
	min-width: 280px !important;
	width: auto;
	background: var(--acbf-dark);
	background-image: linear-gradient(160deg, var(--acbf-dark) 0%, #2b2b2b 100%);
	color: #ffffff;
	padding: 44px 34px !important;
	position: relative !important;
	box-sizing: border-box !important;
}
.acbf-sidebar::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 6px;
	height: 100%;
	background: var(--acbf-primary);
}
.acbf-sidebar-heading {
	font-size: 24px !important;
	font-weight: 800 !important;
	margin: 0 0 14px !important;
	color: #ffffff !important;
	line-height: 1.3 !important;
}
.acbf-sidebar-desc {
	font-size: 14px !important;
	line-height: 1.7 !important;
	color: rgba(255, 255, 255, 0.75) !important;
	margin: 0 0 32px !important;
}
.acbf-details-list {
	display: flex !important;
	flex-direction: column !important;
	gap: 22px !important;
}
.acbf-details-list li {
	display: flex !important;
	align-items: flex-start !important;
	gap: 14px !important;
	font-size: 14px !important;
	line-height: 1.5 !important;
	color: #ffffff;
	margin: 0 !important;
	padding: 0 !important;
}
.acbf-details-list a {
	color: #ffffff !important;
	text-decoration: none !important;
}
.acbf-details-list a:hover {
	color: var(--acbf-primary) !important;
	text-decoration: underline !important;
}
.acbf-detail-icon {
	flex: 0 0 34px !important;
	height: 34px !important;
	width: 34px !important;
	border-radius: 50% !important;
	background: var(--acbf-primary) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	color: #fff !important;
}

/* ---------------- Right form column ---------------- */
.acbf-form-col {
	flex: 2 1 480px !important;
	min-width: 300px !important;
	width: auto;
	background: var(--acbf-light);
	padding: 44px 40px !important;
	box-sizing: border-box !important;
}

.acbf-form-row {
	display: flex !important;
	flex-wrap: wrap !important;
	gap: 20px !important;
	width: 100% !important;
	margin: 0 !important;
}
.acbf-form-row .acbf-field {
	flex: 1 1 220px !important;
	min-width: 200px !important;
}

.acbf-field {
	margin-bottom: 20px !important;
	width: 100%;
}
.acbf-field label {
	display: block !important;
	font-size: 13px !important;
	font-weight: 700 !important;
	margin-bottom: 8px !important;
	color: var(--acbf-dark) !important;
	letter-spacing: 0.2px;
}
.acbf-req {
	color: var(--acbf-primary) !important;
}
.acbf-optional {
	color: var(--acbf-gray);
	font-weight: 500;
	font-size: 12px;
}

.acbf-field input[type="text"],
.acbf-field input[type="email"],
.acbf-field input[type="tel"],
.acbf-field select,
.acbf-field textarea {
	display: block !important;
	width: 100% !important;
	min-width: 0 !important;
	border: 1.5px solid var(--acbf-border) !important;
	border-radius: 8px !important;
	padding: 12px 14px !important;
	font-size: 14px !important;
	font-family: inherit !important;
	color: var(--acbf-dark) !important;
	background: #fff !important;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
	outline: none !important;
	margin: 0 !important;
	height: auto !important;
	box-shadow: none !important;
}
.acbf-field textarea {
	resize: vertical;
	min-height: 110px !important;
}
.acbf-field input:focus,
.acbf-field select:focus,
.acbf-field textarea:focus {
	border-color: var(--acbf-primary) !important;
	box-shadow: 0 0 0 3px rgba(200, 22, 29, 0.12) !important;
}
.acbf-field select {
	appearance: none;
	-webkit-appearance: none;
	background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='16' height='16' fill='%236b6b6b'%3e%3cpath d='M7 10l5 5 5-5z'/%3e%3c/svg%3e");
	background-repeat: no-repeat;
	background-position: right 14px center;
	padding-right: 36px !important;
}

/* File upload */
.acbf-file-upload {
	display: flex !important;
	align-items: center !important;
	gap: 14px !important;
	flex-wrap: wrap !important;
	position: relative;
}
.acbf-file-upload input[type="file"] {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	overflow: hidden;
}
.acbf-file-label {
	display: inline-flex !important;
	align-items: center !important;
	gap: 8px !important;
	background: var(--acbf-bg-soft) !important;
	border: 1.5px dashed var(--acbf-border) !important;
	color: var(--acbf-dark) !important;
	padding: 11px 18px !important;
	border-radius: 8px !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	cursor: pointer;
	transition: border-color 0.2s ease, color 0.2s ease;
}
.acbf-file-label:hover {
	border-color: var(--acbf-primary) !important;
	color: var(--acbf-primary) !important;
}
.acbf-file-name {
	font-size: 13px;
	color: var(--acbf-gray);
	word-break: break-all;
}

/* Submit button */
.acbf-submit-btn {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 10px !important;
	background: var(--acbf-primary) !important;
	color: #fff !important;
	border: none !important;
	font-size: 15px !important;
	font-weight: 700 !important;
	padding: 14px 36px !important;
	border-radius: 8px !important;
	cursor: pointer;
	transition: background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
	margin-top: 6px !important;
	line-height: 1.2 !important;
}
.acbf-submit-btn:hover {
	background: var(--acbf-primary-dark) !important;
	transform: translateY(-2px);
	box-shadow: 0 10px 24px rgba(200, 22, 29, 0.3);
}
.acbf-submit-btn:disabled {
	opacity: 0.7;
	cursor: not-allowed;
	transform: none;
}
.acbf-btn-spinner {
	width: 16px;
	height: 16px;
	border: 2px solid rgba(255, 255, 255, 0.4);
	border-top-color: #fff;
	border-radius: 50%;
	animation: acbf-spin 0.7s linear infinite;
}
@keyframes acbf-spin {
	to { transform: rotate(360deg); }
}

.acbf-response-msg {
	margin-top: 18px !important;
	padding: 14px 16px !important;
	border-radius: 8px !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	animation: acbf-msg-in 0.4s ease;
}
.acbf-response-msg.acbf-success {
	background: #e8f7ee !important;
	color: #1e7e40 !important;
	border: 1px solid #b9e6c9 !important;
}
.acbf-response-msg.acbf-error {
	background: #fdeceb !important;
	color: var(--acbf-primary-dark) !important;
	border: 1px solid #f6c6c6 !important;
}
@keyframes acbf-msg-in {
	from { opacity: 0; transform: translateY(-6px); }
	to { opacity: 1; transform: translateY(0); }
}

/* ---------------- Map ---------------- */
.acbf-map-wrap {
	margin-top: 30px !important;
	width: 100% !important;
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.12);
	line-height: 0;
}
.acbf-map-wrap iframe {
	display: block !important;
	width: 100% !important;
	border: 0 !important;
}

/* ---------------- Scroll-in animation ---------------- */
.acbf-animate {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1), transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}
.acbf-animate.acbf-in-view {
	opacity: 1;
	transform: translateY(0);
}
.acbf-form-col.acbf-animate {
	transition-delay: 0.12s;
}
.acbf-map-wrap.acbf-animate {
	transition-delay: 0.1s;
}

@media (prefers-reduced-motion: reduce) {
	.acbf-animate {
		opacity: 1;
		transform: none;
		transition: none;
	}
	.acbf-submit-btn:hover {
		transform: none;
	}
}

/* ---------------- Responsive ---------------- */
/* Two layers of the same rules, on purpose:
   1) @container rules key off the ACTUAL width the form has to work
      with (fixes themes that render the shortcode inside a narrower
      column/sidebar even though the phone's screen is wider).
   2) @media rules key off the phone's screen width, as a fallback for
      any older browser that doesn't support container queries.
   Both simply force a clean single column — having both active at
   once is harmless. */

@container acbf (max-width: 992px) {
	.acbf-wrap { padding: 48px 20px !important; }
	.acbf-form-col,
	.acbf-sidebar { padding: 36px 26px !important; }
}
@media (max-width: 992px) {
	.acbf-wrap { padding: 48px 20px !important; }
	.acbf-form-col,
	.acbf-sidebar { padding: 36px 26px !important; }
}

@container acbf (max-width: 700px) {
	.acbf-wrap { padding: 32px 14px !important; }
	.acbf-columns {
		display: block !important;
		border-radius: 10px !important;
	}
	.acbf-sidebar,
	.acbf-form-col {
		width: 100% !important;
		flex-basis: 100% !important;
		min-width: 0 !important;
	}
	.acbf-form-row {
		display: block !important;
	}
	.acbf-form-row .acbf-field {
		width: 100% !important;
		flex-basis: 100% !important;
		min-width: 0 !important;
	}
	.acbf-form-col,
	.acbf-sidebar { padding: 26px 18px !important; }
	.acbf-sidebar-heading { font-size: 20px !important; }
	.acbf-submit-btn { width: 100% !important; }
	.acbf-map-wrap iframe { height: 260px !important; }
}
@media (max-width: 700px) {
	.acbf-wrap { padding: 32px 14px !important; }
	.acbf-columns {
		display: block !important;
		border-radius: 10px !important;
	}
	.acbf-sidebar,
	.acbf-form-col {
		width: 100% !important;
		flex-basis: 100% !important;
		min-width: 0 !important;
	}
	.acbf-form-row {
		display: block !important;
	}
	.acbf-form-row .acbf-field {
		width: 100% !important;
		flex-basis: 100% !important;
		min-width: 0 !important;
	}
	.acbf-form-col,
	.acbf-sidebar { padding: 26px 18px !important; }
	.acbf-sidebar-heading { font-size: 20px !important; }
	.acbf-submit-btn { width: 100% !important; }
	.acbf-map-wrap iframe { height: 260px !important; }
}

/* JS-driven fallback (see acbf-frontend.js) for browsers that don't
   support @container — mirrors the 700px rule above exactly. */
.acbf-wrap.acbf-narrow .acbf-columns {
	display: block !important;
	border-radius: 10px !important;
}
.acbf-wrap.acbf-narrow .acbf-sidebar,
.acbf-wrap.acbf-narrow .acbf-form-col {
	width: 100% !important;
	flex-basis: 100% !important;
	min-width: 0 !important;
	padding: 26px 18px !important;
}
.acbf-wrap.acbf-narrow .acbf-form-row {
	display: block !important;
}
.acbf-wrap.acbf-narrow .acbf-form-row .acbf-field {
	width: 100% !important;
	flex-basis: 100% !important;
	min-width: 0 !important;
}
.acbf-wrap.acbf-narrow .acbf-sidebar-heading {
	font-size: 20px !important;
}
.acbf-wrap.acbf-narrow .acbf-submit-btn {
	width: 100% !important;
}
.acbf-wrap.acbf-narrow .acbf-map-wrap iframe {
	height: 260px !important;
}

@container acbf (max-width: 380px) {
	.acbf-wrap { padding: 24px 10px !important; }
	.acbf-form-col,
	.acbf-sidebar { padding: 20px 14px !important; }
}
@media (max-width: 380px) {
	.acbf-wrap { padding: 24px 10px !important; }
	.acbf-form-col,
	.acbf-sidebar { padding: 20px 14px !important; }
}

/* ==========================================================================
   Admin Dashboard Styles
   ========================================================================== */

.acbf-admin-wrap .acbf-admin-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
	margin-top: 20px;
}
@media (max-width: 1100px) {
	.acbf-admin-wrap .acbf-admin-grid {
		grid-template-columns: 1fr;
	}
}
.acbf-admin-wrap .acbf-card {
	background: #fff;
	border: 1px solid #e2e2e2;
	border-radius: 8px;
	padding: 20px 24px;
}
.acbf-admin-wrap .acbf-card h2 {
	margin-top: 0;
	border-bottom: 1px solid #eee;
	padding-bottom: 10px;
}

.acbf-shortcode-box {
	background: #fff;
	border-left: 4px solid var(--acbf-primary, #c8161d);
	padding: 14px 18px;
	margin: 16px 0;
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
	font-size: 14px;
}
.acbf-shortcode-box code {
	background: #f3f3f3;
	padding: 3px 8px;
	border-radius: 4px;
}

.acbf-dot-new {
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #c8161d;
	margin-right: 6px;
}

.acbf-reason-badge {
	display: inline-block;
	background: #fdeceb;
	color: #a10f15;
	font-size: 12px;
	font-weight: 600;
	padding: 3px 10px;
	border-radius: 20px;
}

.acbf-single-view table.form-table th {
	width: 160px;
}
