/* Instant Quote & Booking — frontend styles (scoped under .iqb-app) */

.iqb-app {
	--iqb-primary: #2F7EB5;
	--iqb-primary-disabled: #8DB9D6;
	--iqb-dark: #1B3F8B;
	--iqb-black: #111111;
	--iqb-grey: #4A4A4A;
	--iqb-card: #F7F7F7;
	--iqb-border: #E0E0E0;
	color: #111;
	font-size: 16px;
	line-height: 1.4;
	position: relative;
}
.iqb-app, .iqb-app * { box-sizing: border-box; }
.iqb-app button { font-family: inherit; }
.iqb-app [hidden] { display: none !important; }

.iqb-app .iqb-layout {
	max-width: 1600px;
	margin: 0 auto;
	padding: 20px 20px 40px;
	display: flex;
	gap: 30px;
	align-items: flex-start;
}

/* ---------- Accordion ---------- */
.iqb-app .iqb-categories { flex: 1 1 65%; min-width: 0; }

.iqb-app .iqb-category-card {
	background: var(--iqb-card);
	border: 1px solid var(--iqb-border);
	border-radius: 6px;
	margin-bottom: 20px;
	box-shadow: 0 2px 4px rgba(0,0,0,.05);
	overflow: hidden;
}
.iqb-app .iqb-category-header {
	padding: 12px 12px 12px 22px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	cursor: pointer;
	user-select: none;
	transition: background .25s, color .25s;
}
.iqb-app .iqb-category-header:focus-visible { outline: 2px solid var(--iqb-primary); outline-offset: -2px; }
.iqb-app .iqb-category-header.open { background: var(--iqb-black); }
.iqb-app .iqb-category-title { font-weight: 700; font-size: 1.15rem; color: var(--iqb-dark); }
.iqb-app .iqb-category-header.open .iqb-category-title { color: #fff; }
.iqb-app .iqb-toggle-btn {
	background: var(--iqb-primary);
	color: #fff;
	border: 0;
	width: 44px;
	height: 44px;
	border-radius: 4px;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	flex: 0 0 auto;
	transition: transform .25s;
}
.iqb-app .iqb-category-header.open .iqb-toggle-btn { transform: rotate(180deg); }
.iqb-app .iqb-toggle-btn svg { width: 22px; height: 22px; }

.iqb-app .iqb-category-content { background: #fff; }
.iqb-app .iqb-table { width: 100%; }
.iqb-app .iqb-thead {
	display: flex;
	background: var(--iqb-grey);
	color: #fff;
	font-weight: 700;
	font-size: .85rem;
	letter-spacing: .02em;
	min-height: 46px;
	align-items: center;
	padding: 0 16px;
}
.iqb-app .iqb-th { flex: 1 1 0; display: flex; align-items: center; justify-content: center; gap: 6px; text-transform: uppercase; }
.iqb-app .iqb-th-name { flex: 1.5 1 0; }
.iqb-app .iqb-info-icon {
	position: relative;
	background: rgba(255,255,255,.25);
	border-radius: 50%;
	width: 16px;
	height: 16px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 10px;
	font-style: normal;
	text-transform: none;
	cursor: help;
}
.iqb-app .iqb-info-icon::after {
	content: attr(data-tip);
	position: absolute;
	bottom: calc(100% + 8px);
	left: 50%;
	transform: translateX(-50%);
	background: #222;
	color: #fff;
	font-size: 12px;
	font-weight: 400;
	line-height: 1.3;
	padding: 6px 10px;
	border-radius: 4px;
	white-space: normal;
	width: max-content;
	max-width: 220px;
	text-align: center;
	opacity: 0;
	pointer-events: none;
	transition: opacity .15s;
	z-index: 5;
}
.iqb-app .iqb-info-icon:hover::after, .iqb-app .iqb-info-icon:focus::after { opacity: 1; }

.iqb-app .iqb-tr {
	display: flex;
	align-items: center;
	padding: 12px 16px;
	border-bottom: 1px solid var(--iqb-border);
	min-height: 58px;
}
.iqb-app .iqb-tr:nth-child(odd) { background: #FAFAFA; }
.iqb-app .iqb-tr:last-child { border-bottom: 0; }
.iqb-app .iqb-td { flex: 1 1 0; display: flex; justify-content: center; }
.iqb-app .iqb-td.iqb-item-name {
	flex: 1.5 1 0;
	justify-content: flex-start;
	color: var(--iqb-primary);
	font-weight: 600;
	font-size: 1.05rem;
	padding-right: 8px;
	word-break: break-word;
}

/* Stepper */
.iqb-app .iqb-stepper {
	display: inline-flex;
	align-items: stretch;
	border: 1px solid #CCC;
	border-radius: 3px;
	overflow: hidden;
	background: #fff;
}
.iqb-app .iqb-stepper-btn {
	background: #fff;
	border: 0;
	width: 40px;
	height: 40px;
	cursor: pointer;
	font-weight: 700;
	font-size: 1.1rem;
	color: #222;
	padding: 0;
	line-height: 1;
	transition: background .15s, color .15s;
}
.iqb-app .iqb-stepper-btn:hover { background: #F0F0F0; }
.iqb-app .iqb-stepper-minus { border-right: 1px solid #DDD; }
.iqb-app .iqb-stepper-plus { border-left: 1px solid #DDD; }
.iqb-app .iqb-stepper.active .iqb-stepper-plus { background: var(--iqb-primary); color: #fff; border-color: var(--iqb-primary); }
.iqb-app .iqb-stepper-val {
	width: 36px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: .95rem;
	color: #999;
}
.iqb-app .iqb-stepper.active .iqb-stepper-val { color: #111; font-weight: 700; }

/* ---------- Quote panel ---------- */
.iqb-app .iqb-quote-panel {
	flex: 0 0 35%;
	max-width: 35%;
	position: sticky;
	top: 20px;
}
.iqb-app .iqb-quote-card {
	background: var(--iqb-card);
	border: 1px solid var(--iqb-border);
	border-radius: 6px;
	padding: 20px 22px 18px;
}
.iqb-app .iqb-quote-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 10px;
	border-bottom: 1px solid #D5D5D5;
	padding-bottom: 14px;
	margin-bottom: 16px;
}
.iqb-app .iqb-quote-title { font-weight: 700; font-size: 1.1rem; text-transform: uppercase; }
.iqb-app .iqb-clear-btn { background: none; border: 0; color: #111; font-weight: 700; font-size: 1.1rem; cursor: pointer; padding: 4px 6px; }
.iqb-app .iqb-clear-btn:hover { text-decoration: underline; }

.iqb-app .iqb-quote-items:not(:empty) { margin-bottom: 14px; }
.iqb-app .iqb-quote-cat-group { margin-bottom: 8px; }
.iqb-app .iqb-quote-cat-bar { background: var(--iqb-black); color: #fff; padding: 10px 12px; font-weight: 700; font-size: 1rem; border-radius: 3px; }
.iqb-app .iqb-quote-line {
	display: grid;
	grid-template-columns: 1fr auto auto;
	gap: 14px;
	align-items: center;
	font-size: .95rem;
	padding: 10px 4px 10px 10px;
	border-bottom: 1px solid #E5E5E5;
}
.iqb-app .iqb-quote-line-qty { color: #333; }
.iqb-app .iqb-quote-line-total { font-weight: 600; }

.iqb-app .iqb-quote-totals { padding-top: 8px; }
.iqb-app .iqb-total-row {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	font-weight: 700;
	font-size: 1rem;
	padding: 6px 0;
	text-transform: uppercase;
}
.iqb-app .iqb-total-row small { text-transform: none; font-weight: 400; color: #555; }
.iqb-app .iqb-grand-total { font-size: 1.15rem; }

.iqb-app .iqb-coupon-row {
	display: flex;
	margin-top: 18px;
	border-radius: 30px;
	overflow: hidden;
	border: 1px solid #DDD;
	background: #fff;
}
.iqb-app .iqb-coupon-input {
	flex: 1 1 auto;
	min-width: 0;
	padding: 12px 18px;
	border: 0;
	font-size: 1rem;
	background: #fff;
	color: #111;
	outline: none;
	box-shadow: none;
	border-radius: 0;
	margin: 0;
	height: auto;
	line-height: 1.3;
}
.iqb-app .iqb-apply-btn {
	background: var(--iqb-dark);
	color: #fff;
	border: 0;
	padding: 12px 22px;
	font-weight: 600;
	font-size: .9rem;
	cursor: pointer;
	white-space: nowrap;
	border-radius: 30px 0 0 30px;
	margin-left: -20px;
	padding-left: 34px;
}
.iqb-app .iqb-apply-btn:disabled { opacity: .6; cursor: default; }
.iqb-app .iqb-coupon-msg { font-size: .85rem; margin-top: 8px; min-height: 1.2em; }
.iqb-app .iqb-coupon-msg.ok { color: #2e7d32; }
.iqb-app .iqb-coupon-msg.err { color: #c62828; }
.iqb-app .iqb-coupon-remove { background: none; border: 0; color: #c62828; cursor: pointer; font-size: 1rem; padding: 0 4px; }

/* ---------- Bottom bar ---------- */
.iqb-app .iqb-bottom-bar {
	position: sticky;
	bottom: 0;
	background: #fff;
	border-top: 1px solid var(--iqb-border);
	padding: 16px 20px;
	display: flex;
	flex-direction: column;
	align-items: center;
	z-index: 50;
}
.iqb-standalone .iqb-app .iqb-bottom-bar { position: fixed; left: 0; right: 0; }
.iqb-standalone .iqb-app .iqb-layout { padding-bottom: 120px; }

.iqb-app .iqb-continue-btn {
	background: var(--iqb-primary);
	color: #fff;
	border: 0;
	padding: 16px 40px;
	min-width: 190px;
	border-radius: 4px;
	font-size: 1.05rem;
	font-weight: 700;
	letter-spacing: .02em;
	cursor: pointer;
	transition: background .2s;
}
.iqb-app .iqb-continue-btn:hover:not(:disabled) { background: var(--iqb-dark); }
.iqb-app .iqb-continue-btn:disabled { background: var(--iqb-primary-disabled); cursor: not-allowed; }

.iqb-app .iqb-mobile-summary { display: none; width: 100%; margin-bottom: 12px; }
.iqb-app .iqb-mobile-top { text-align: right; }
.iqb-app .iqb-mobile-main { display: flex; justify-content: space-between; align-items: center; font-weight: 700; font-size: 1rem; }
.iqb-app .iqb-mobile-label { font-weight: 500; color: #333; }
.iqb-app .iqb-mobile-toggle {
	background: var(--iqb-primary);
	color: #fff;
	border: 0;
	width: 56px;
	height: 26px;
	border-radius: 3px;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
}
.iqb-app .iqb-mobile-toggle svg { width: 20px; height: 20px; }

/* Bottom sheet (mobile) */
.iqb-app .iqb-bottom-sheet {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	transform: translateY(105%);
	background: #fff;
	z-index: 9000;
	transition: transform .3s ease-out;
	border-radius: 16px 16px 0 0;
	max-height: 85vh;
	display: flex;
	flex-direction: column;
	box-shadow: 0 -5px 20px rgba(0,0,0,.15);
}
.iqb-app .iqb-bottom-sheet.open { transform: translateY(0); }
.iqb-app .iqb-bottom-sheet-header { padding: 6px; text-align: center; border-bottom: 1px solid #eee; }
.iqb-app .iqb-bottom-sheet-close { background: none; border: 0; cursor: pointer; color: var(--iqb-primary); padding: 4px 20px; }
.iqb-app .iqb-bottom-sheet-close svg { width: 30px; height: 30px; }
.iqb-app .iqb-bottom-sheet-content { padding: 16px; overflow-y: auto; }
.iqb-app .iqb-bottom-sheet-content .iqb-quote-card { border: 0; background: #fff; padding: 0; }

.iqb-app .iqb-overlay {
	position: fixed;
	inset: 0;
	background: rgba(0,0,0,.5);
	z-index: 8999;
	display: none;
}
.iqb-app .iqb-overlay.open { display: block; }

/* ---------- Modals ---------- */
.iqb-app .iqb-modal {
	position: fixed;
	inset: 0;
	z-index: 9500;
	background: rgba(60,60,60,.65);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	overflow-y: auto;
}
.iqb-app .iqb-modal-box {
	background: #fff;
	border-radius: 6px;
	width: 100%;
	max-width: 560px;
	max-height: calc(100vh - 40px);
	display: flex;
	flex-direction: column;
	position: relative;
	box-shadow: 0 10px 40px rgba(0,0,0,.3);
	animation: iqbPop .2s ease-out;
}
@keyframes iqbPop { from { transform: translateY(12px); opacity: 0; } to { transform: none; opacity: 1; } }
.iqb-app .iqb-modal-center { text-align: center; padding: 40px 36px 34px; max-width: 800px; }
.iqb-app .iqb-modal-heading { font-size: 2.2rem; font-weight: 400; margin: 0 0 18px; color: #222; line-height: 1.2; }
.iqb-app .iqb-modal-text { font-size: 1.35rem; line-height: 1.45; margin: 0 0 26px; color: #333; }
.iqb-app .iqb-modal-x {
	position: absolute;
	top: 10px;
	right: 14px;
	background: none;
	border: 0;
	font-size: 28px;
	line-height: 1;
	color: #999;
	cursor: pointer;
	padding: 4px 8px;
}
.iqb-app .iqb-modal-x:hover { color: #333; }
.iqb-app .iqb-modal-x-italic { position: static; font-weight: 700; font-style: italic; font-size: 1.2rem; color: #111; }
.iqb-app .iqb-modal-titlebar {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 14px 20px;
	border-bottom: 1px solid #E5E5E5;
	font-size: 1.1rem;
	color: #222;
	flex: 0 0 auto;
}
.iqb-app .iqb-modal-body { padding: 20px; overflow-y: auto; flex: 1 1 auto; }

.iqb-app .iqb-btn {
	background: var(--iqb-primary);
	color: #fff;
	border: 0;
	padding: 14px 30px;
	border-radius: 4px;
	font-size: 1.1rem;
	font-weight: 700;
	cursor: pointer;
	transition: background .2s;
}
.iqb-app .iqb-btn:hover:not(:disabled) { background: var(--iqb-dark); }
.iqb-app .iqb-btn:disabled { opacity: .6; cursor: default; }
.iqb-app .iqb-btn.loading { position: relative; color: transparent; }
.iqb-app .iqb-btn.loading::after {
	content: '';
	position: absolute;
	top: 50%; left: 50%;
	width: 20px; height: 20px;
	margin: -10px 0 0 -10px;
	border: 3px solid rgba(255,255,255,.4);
	border-top-color: #fff;
	border-radius: 50%;
	animation: iqbSpin .7s linear infinite;
}
@keyframes iqbSpin { to { transform: rotate(360deg); } }

/* Calendar */
.iqb-app .iqb-calendar { border: 1px solid #DDD; border-radius: 4px; padding: 12px 14px 8px; }
.iqb-app .iqb-cal-nav { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.iqb-app .iqb-cal-prev, .iqb-app .iqb-cal-next { background: none; border: 0; font-size: 1.6rem; line-height: 1; cursor: pointer; padding: 0 10px; color: #222; }
.iqb-app .iqb-cal-month, .iqb-app .iqb-cal-year {
	flex: 1 1 auto;
	padding: 4px 8px;
	border: 1px solid #CCC;
	border-radius: 3px;
	font-size: .9rem;
	background: #fff;
	color: #222;
	height: auto;
}
.iqb-app .iqb-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.iqb-app .iqb-cal-head span { text-align: center; font-weight: 700; font-size: .85rem; padding: 6px 0; color: #222; }
.iqb-app .iqb-cal-day {
	text-align: center;
	padding: 9px 0;
	font-size: .95rem;
	border-radius: 4px;
	border: 0;
	background: none;
	color: #222;
	cursor: pointer;
	font-family: inherit;
}
.iqb-app .iqb-cal-day:hover:not(:disabled) { background: #E3F0F9; }
.iqb-app .iqb-cal-day:disabled { color: #999; text-decoration: line-through; cursor: default; }
.iqb-app .iqb-cal-day.other { color: #BBB; }
.iqb-app .iqb-cal-day.selected { background: var(--iqb-primary); color: #fff; font-weight: 700; }
.iqb-app .iqb-cal-loading { opacity: .5; pointer-events: none; }

/* Slots */
.iqb-app .iqb-slots { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 16px; }
.iqb-app .iqb-slot {
	background: #F9FAFB;
	border: 1px solid #D0D5DD;
	border-radius: 4px;
	padding: 14px 6px;
	text-align: center;
	font-size: 1rem;
	color: #222;
	cursor: pointer;
	font-family: inherit;
}
.iqb-app .iqb-slot:hover { background: #E3F0F9; border-color: var(--iqb-primary); }
.iqb-app .iqb-slot.selected { background: var(--iqb-primary); color: #fff; border-color: var(--iqb-primary); }
.iqb-app .iqb-slots-msg { margin-top: 12px; color: #555; font-size: .95rem; text-align: center; }

/* Form */
.iqb-app .iqb-appt-summary { margin: 0 0 14px; font-weight: 600; color: #222; }
.iqb-app .iqb-form label { display: block; font-size: .95rem; color: #222; margin-bottom: 14px; }
.iqb-app .iqb-form input, .iqb-app .iqb-form textarea {
	display: block;
	width: 100%;
	margin-top: 6px;
	padding: 14px 16px;
	border: 1px solid #CCC;
	border-radius: 3px;
	font-size: 1rem;
	font-family: inherit;
	background: #fff;
	color: #111;
	height: auto;
	line-height: 1.3;
	box-shadow: none;
}
.iqb-app .iqb-form input:focus, .iqb-app .iqb-form textarea:focus { outline: none; border-color: var(--iqb-primary); box-shadow: 0 0 0 2px rgba(47,126,181,.2); }
.iqb-app .iqb-form input.error, .iqb-app .iqb-form textarea.error { border-color: #c62828; }
.iqb-app .iqb-field-error { color: #c62828; font-size: .85rem; margin-top: 4px; display: block; }
.iqb-app .iqb-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.iqb-app .iqb-form-note { font-size: 1.05rem; color: #222; margin: 6px 0 18px; }
.iqb-app .iqb-form-error { color: #c62828; margin-bottom: 12px; font-weight: 600; }
.iqb-app .iqb-form-error:empty { display: none; }
.iqb-app .iqb-form-actions { display: flex; gap: 10px; }
.iqb-app .iqb-back-btn { font-weight: 500; }

/* Success */
.iqb-app .iqb-check { width: 96px; height: 96px; margin: 0 auto 18px; }
.iqb-app .iqb-check svg { width: 100%; height: 100%; }
.iqb-app .iqb-success-ref { color: #666; font-size: .95rem; margin: -10px 0 22px; }

/* ---------- Responsive ---------- */
@media screen and (max-width: 991px) {
	.iqb-app .iqb-layout { flex-direction: column; padding: 16px 16px 24px; gap: 0; }
	.iqb-app .iqb-categories { flex: 1 1 auto; width: 100%; }
	.iqb-app .iqb-quote-panel { display: none; }
	.iqb-app .iqb-mobile-summary { display: block; }
	.iqb-app .iqb-bottom-bar { position: fixed; left: 0; right: 0; padding: 10px 16px 14px; box-shadow: 0 -3px 12px rgba(0,0,0,.08); }
	.iqb-app .iqb-layout { padding-bottom: 150px; }
	.iqb-app .iqb-continue-btn { padding: 14px 32px; font-size: 1rem; }
	.iqb-app .iqb-category-header { padding: 10px 10px 10px 16px; }
	.iqb-app .iqb-category-title { font-size: 1.05rem; }
	.iqb-app .iqb-toggle-btn { width: 40px; height: 40px; }
	.iqb-app .iqb-thead, .iqb-app .iqb-tr { padding-left: 10px; padding-right: 10px; }
	.iqb-app .iqb-th { font-size: .75rem; }
	.iqb-app .iqb-td.iqb-item-name { font-size: .95rem; flex: 1.2 1 0; }
	.iqb-app .iqb-stepper-btn { width: 34px; height: 36px; }
	.iqb-app .iqb-stepper-val { width: 30px; }
	.iqb-app .iqb-modal { padding: 12px; align-items: flex-start; }
	.iqb-app .iqb-modal-box { max-height: calc(100vh - 24px); margin-top: 10px; }
	.iqb-app .iqb-modal-center { padding: 34px 20px 28px; }
	.iqb-app .iqb-modal-heading { font-size: 1.7rem; }
	.iqb-app .iqb-modal-text { font-size: 1.1rem; }
}
@media screen and (max-width: 400px) {
	.iqb-app .iqb-slots { grid-template-columns: repeat(2, 1fr); gap: 8px; }
	.iqb-app .iqb-stepper-btn { width: 30px; height: 34px; }
	.iqb-app .iqb-stepper-val { width: 26px; font-size: .85rem; }
	.iqb-app .iqb-apply-btn { padding: 12px 14px 12px 26px; font-size: .8rem; }
}