/* Single product page styles */

.upsells.products {
    margin-top: 30px;
    border-top: 1px solid #e6e6e6 !important;
    padding-top: 30px;
}

/* Upsells on single product: full-bleed section with contained card grid */
.single-product .up-sells.upsells.products {
	position: relative;
	left: 50%;
	width: 100vw;
	margin-left: -50vw;
	margin-right: -50vw;
	padding: 56px 0 48px;
	border-top: none !important;
	background: #f1f1f1;
}

.single-product .up-sells.upsells.products > .fusion-title,
.single-product .up-sells.upsells.products > ul.products {
	max-width: 1100px;
	margin-left: auto;
	margin-right: auto;
}

.single-product .up-sells.upsells.products .fusion-title {
	margin-bottom: 22px;
}

.single-product .up-sells.upsells.products .title-heading-left {
	font-size: 50px;
	line-height: 1.1;
	font-weight: 700;
	text-transform: none;
	letter-spacing: 0;
}

.single .product .up-sells h3.title-heading-left {
	font-size: 38px !important;
	margin: 0;
}

@media (max-width: 900px) {
	.single-product .up-sells.upsells.products .title-heading-left {
		font-size: 36px;
	}
}

.avada-product-gallery .woocommerce-product-gallery__image a {
	display: inline-block;
	width: 100%;
}

.avada-product-gallery .woocommerce-product-gallery__image a img {
	width: 100%;
}

.avada-product-images-thumbnails-bottom .avada-product-gallery .flex-control-thumbs li {
    border: solid 1px #ccc;
    border-radius: 8px;
    overflow: hidden;
    aspect-ratio: 1 !important;
    display: block;
}

/* Center bottom thumbnails when they do not overflow */
.avada-single-product-gallery-wrapper.sp-thumbs-centered .avada-product-gallery-thumbs-wrapper {
	display: flex;
	justify-content: center;
}

.avada-single-product-gallery-wrapper.sp-thumbs-centered .avada-product-gallery-thumbs-wrapper .flex-control-thumbs {
	margin-left: auto !important;
	margin-right: auto !important;
	top: 0 !important;
	height: auto;
}

.avada-single-product-gallery-wrapper.sp-thumbs-centered .avada-product-gallery-thumbs-wrapper {
	overflow-y: visible !important;
}

/* Product badges (stock, SKU, brand) */
.product .summary.entry-summary .summary-container > div div.sp-product-badges {
    display: flex !important;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 10px;
}

.sp-badge {
	display: inline-block;
	padding: 4px 10px;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	border-radius: 3px;
	line-height: 1.4;
}

.sp-badge--in-stock {
	background: #50bd36;
	color: #fff;
}

.sp-badge--out-of-stock {
	background: #ffd9e8;
	color: #c00;
}

.sp-badge--sku {
	background: #e0e0e0;
	color: #333;
}

.sp-badge--brand {
	background: #e0e0e0;
	color: #333;
}

/* Badges row: flex container for the badges strip and the quote trigger link */
.sp-product-badges-row {
    display: flex !important;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 4px;
    justify-content: space-between;
}

/* Variation label on its own line */
.variations_form table.variations tr {
	display: flex;
	flex-direction: column;
}

.variations_form table.variations th.label {
	text-align: left;
	padding-bottom: 6px;
}

/* Hide the duplicate variation price inside the form */
.variations_form .woocommerce-variation-price {
	display: none !important;
}

/* Product description section (outside tabs) */
.sp-product-description {
	clear: both;
	padding-top: 80px;
	max-width: 100%;
	position: relative;
}

.sp-product-description::before {
	content: '';
	position: absolute;
	top: 40px;
	left: 50%;
	transform: translateX(-50%);
	width: 100vw;
	height: 1px;
	background: #ccc;
}

.sp-product-description ul li {
	page-break-inside: avoid;
	break-inside: avoid-column;
	padding-left: .4rem;
	list-style-image: url('data:image/svg+xml,%3Csvg transform="scale(0.9) translate(0, -1)" transform-origin="center" width=%2213%22 height=%2213%22 fill=%22none%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Cpath d=%22M8.61 2.157c-2.187.539-4.51.27-6.423-.81A8.76 8.76 0 01.41 0L0 .404c1.093 1.079 1.777 2.292 2.187 3.774.82 2.965 0 6.065-2.187 8.087l.41.405c1.093-1.079 2.323-1.753 3.827-2.157 2.87-.809 5.74 0 7.79 1.752l.41.405.41-.405-.41-.404c-.82-.944-1.367-2.022-1.777-3.37-.82-2.83 0-6.065 2.187-8.087L12.437 0c-1.094 1.078-2.46 1.887-3.827 2.157z%22 fill=%22%2355B948%22/%3E%3C/svg%3E');
	margin-bottom: 20px;
}

.sp-product-description ul {
	columns: 2;
	font-size: 20px;
	margin-bottom: 2em;
}

.product .variations .avada-button-select {
    border: solid 2px transparent;
    color: #000;
    padding: 0;
    border-radius: 5px;
    height: 2em;
    line-height: 2em;
}

.product .variations .avada-button-select[data-checked=true] {
    border-color: var(--link_color);
}

.product .variations .avada-button-select:hover {
    border: solid 2px #ccc;
}

.product .variations .avada-button-select[data-checked="true"]:hover {
    border: solid 2px var(--link_color);
}

.woocommerce .single_add_to_cart_button {
    border-radius: 14px !important;
    padding-left: 2.3em;
    padding-right: 2.3em;
}

.single .product {
    padding-top: 40px;
}

.single .product .entry-summary .price {
	font-size: 28px;
	font-weight: bold;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.3em;
	margin-top: 20px;
}

.single .product .entry-summary .price ins {
	order: -1;
}

.single .product .price del span bdi {
	font-size: 15px;
	font-weight: 500;
}

.single .product .price del {
	color: #777 !important;
}

.single .product .summary.entry-summary .summary-container h1.product_title.entry-title {
    font-size: 40px !important;
    margin-bottom: 20px !important;
    color: #000 !important;
}

.single .product .summary .post-content.woocommerce-product-details__short-description {
    font-size: 18px;
    line-height: 1.2em;
    margin-top: 20px;
}

.single .product .summary .product-border.fusion-separator.sep-none {
    display: none;
}

.single .product .fusion-sharing-box.fusion-theme-sharing-box.fusion-single-sharing-box {
    margin-top: 0;
    margin-bottom: 2em;
}

.single .product .summary .quantity {
    width: auto !important;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: space-between;
    width: 120px !important;
    border-radius: 8px;
    border-color: #ccc;
}

.single .product .summary .quantity input {
    border: none;
    background: #fff;
    height: 60px !important;
}

.single .product .summary .quantity input:hover {
    background: #f5f5f5;
}

.woocommerce .single_add_to_cart_button {
    font-size: 16px !important;
    text-transform: capitalize !important;
	height: 60px;
	border: solid 2px transparent !important;
}

.woocommerce .single_add_to_cart_button:hover {
	border: solid 2px var(--link_color) !important;
	background: none !important;
}

.woocommerce .single_add_to_cart_button:after {
	content: "\f07a";
	font-family: "Font Awesome 5 Free";
	font-weight: 900;
	color: #fff;
	margin-left: 8px;
}

.woocommerce .single_add_to_cart_button:hover:after {
	color: var(--link_color);
}

button.single_add_to_cart_button.button.disabled,
button.single_add_to_cart_button.button.disabled:hover {
    background: #ccc !important;
    cursor: default !important;
    color: #777 !important;
    border-color: #ccc !important;
}

button.single_add_to_cart_button.button.disabled:after,
button.single_add_to_cart_button.button.disabled:hover:after {
	color: #777 !important;
}

.single-product.product_cat-services #main,
.single-product.product_cat-applications #main {
	padding-top: 20px;
	padding-bottom: 40px;
}

.single .product .product_meta {
    border-top: solid 1px #efefef;
}

.single .product .product_meta > span {
    margin-bottom: 10px;
    font-weight: bold;
}

.single .product .product_meta > span > span,
.single .product .product_meta > span > a {
    font-weight: normal;
    color: #000;
}

.single .product .product_meta > span > a {
    text-decoration: underline;
}

.single .product .product_meta > span > a:hover {
    color: var(--link_color);
}

.single .product .variations .label {
    font-size: 18px;
}

.single .product .woocommerce-variation-add-to-cart:has(.quantity.buttons_added):before {
    content: "Qty";
    display: block !important;
    position: absolute;
    left: 0;
    top: -1em;
    font-size: 18px;
    font-weight: bold;
}

.single .product .single_variation_wrap {
    position: relative;
}

.single .product .single_variation .woocommerce-variation-availability {
	display: none !important;
}

/* Single product mobile refinements */
@media (max-width: 640px) {
	.sp-product-description ul {
		columns: 1;
	}

	.single-product .up-sells.upsells.products {
		padding: 60px 30px;
	}

	.product .variations .avada-button-select {
		font-size: 18px;
		padding: 20px 20px;
		min-width: 80px !important;
		border: solid 2px #ccc;
		margin: 0;
	}

	.single .product .variations .avada-select-wrapper {
		gap: 10px;
		display: flex;
		justify-content: flex-start;
		align-items: flex-start;
	}

	.single .product .variations .avada-select-parent {
		visibility: hidden !important;
		display: none;
	}
}

/* ==============================================
   Quote / Question Modal
   ============================================== */

/* Quote trigger link */
.sp-quote-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 18px;
    color: #54b948;
    text-decoration: underline;
    padding-bottom: 1px;
    line-height: 1.4;
    white-space: nowrap;
    border-bottom: none;
    font-weight: bold;
}

.sp-quote-link:hover {
    color: #3d9936;
}

.sp-quote-link svg {
    flex-shrink: 0;
}

/* Modal overlay */
.sp-quote-modal {
    display: flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    inset: 0;
    z-index: 99999;
}

.sp-quote-modal[hidden] {
    display: none !important;
}

.sp-quote-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
}

/* Dialog box */
.sp-quote-modal__dialog {
    position: relative;
    background: #fff;
    border-radius: 12px;
    width: min(880px, 96vw);
    max-height: 92vh;
    overflow-y: auto;
    padding: 40px;
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.25);
}

/* Close button */
.sp-quote-modal__close {
    position: sticky;
    top: 0;
    float: right;
    background: none;
    border: none;
    font-size: 30px;
    line-height: 1;
    cursor: pointer;
    color: #888;
    padding: 0 0 8px 16px;
    margin-bottom: -38px;
    z-index: 1;
}

.sp-quote-modal__close:hover {
    color: #111;
}

/* Two-column grid */
.sp-quote-modal__columns {
    display: grid;
    grid-template-columns: 1fr 1.3fr;
    gap: 40px;
    align-items: start;
}

/* Left column: product preview */
.sp-quote-product-image img {
    width: 100%;
    border-radius: 8px;
    display: block;
}

.sp-quote-product-title {
    font-size: 18px !important;
    font-weight: 700 !important;
    margin: 14px 0 6px !important;
    color: #111 !important;
    line-height: 1.3 !important;
}

.sp-quote-product-sku {
    font-size: 12px;
    color: #888;
    margin-bottom: 8px;
}

.sp-quote-product-price {
    font-size: 20px;
    font-weight: 700;
    color: #54b948;
    margin-bottom: 18px;
}

.sp-quote-product-price del {
    color: #aaa;
    font-weight: 400;
    font-size: 14px;
}

/* Variation selects inside popup */
.sp-quote-product-options {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.sp-quote-option__label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #555;
    margin-bottom: 4px;
}

.sp-quote-attr-select {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 14px;
    background: #fff;
    color: #333;
    appearance: auto;
}

/* Right column: GF form */
.sp-quote-modal__heading {
    font-size: 20px !important;
    font-weight: 700 !important;
    margin: 0 0 24px !important;
    color: #111 !important;
    line-height: 1.3 !important;
}

.sp-quote-no-form {
    font-size: 13px;
    color: #888;
}

/* Gravity Forms: floating labels */
#sp-quote-modal .gform_body {
    margin: 0;
}

#sp-quote-modal .gform_fields {
    display: flex !important;
    flex-direction: column;
    gap: 22px;
}

#sp-quote-modal .gfield {
    position: relative;
    margin-bottom: 0 !important;
    padding-top: 0 !important;
}

/* Label floats inside the field by default */
#sp-quote-modal .gfield_label {
    position: absolute;
    left: 14px;
    top: 14px;
    font-size: 14px;
    font-weight: 400;
    color: #888;
    transition: top 0.15s ease, font-size 0.15s ease, color 0.15s ease;
    pointer-events: none;
    background: #fff;
    padding: 0 4px;
    z-index: 1;
    margin: 0 !important;
    line-height: 1.2;
}

/* Float label up when input is focused or has content */
#sp-quote-modal .gfield:has(input:focus) .gfield_label,
#sp-quote-modal .gfield:has(input:not(:placeholder-shown)) .gfield_label,
#sp-quote-modal .gfield:has(textarea:focus) .gfield_label,
#sp-quote-modal .gfield:has(textarea:not(:placeholder-shown)) .gfield_label {
    top: -9px;
    font-size: 11px;
    color: #54b948;
}

/* Input / textarea base */
#sp-quote-modal .ginput_container input[type="text"],
#sp-quote-modal .ginput_container input[type="email"],
#sp-quote-modal .ginput_container input[type="tel"],
#sp-quote-modal .ginput_container textarea {
    width: 100% !important;
    border: 1px solid #ddd !important;
    border-radius: 6px !important;
    padding: 13px 14px !important;
    font-size: 14px !important;
    outline: none !important;
    transition: border-color 0.15s ease;
    background: #fff !important;
    box-sizing: border-box;
    box-shadow: none !important;
}

#sp-quote-modal .ginput_container input:focus,
#sp-quote-modal .ginput_container textarea:focus {
    border-color: #54b948 !important;
}

#sp-quote-modal .ginput_container textarea {
    min-height: 110px;
    resize: vertical;
}

/* Required asterisk: keep visible, tucked next to floated label */
#sp-quote-modal .gfield_required {
    font-size: 11px;
    color: #e74c3c;
}

/* Submit button */
#sp-quote-modal .gform_footer {
    margin-top: 8px !important;
    padding: 0 !important;
}

#sp-quote-modal .gform_footer input[type="submit"],
#sp-quote-modal .gform_footer button[type="submit"] {
    width: 100% !important;
    padding: 14px !important;
    background: #54b948 !important;
    color: #fff !important;
    font-weight: 700 !important;
    font-size: 16px !important;
    border: none !important;
    border-radius: 999px !important;
    cursor: pointer;
    transition: background 0.2s ease;
    letter-spacing: 0.3px;
}

#sp-quote-modal .gform_footer input[type="submit"]:hover,
#sp-quote-modal .gform_footer button[type="submit"]:hover {
    background: #3d9936 !important;
}

/* Prevent body scroll when modal is open */
body.sp-quote-modal-open {
    overflow: hidden;
}

/* Modal mobile */
@media (max-width: 640px) {
    .sp-quote-modal__dialog {
        padding: 28px 20px 24px;
    }

    .sp-quote-modal__columns {
        grid-template-columns: 1fr;
    }
}
