.balu-configurator-form .balu-configurator {
 flex: 0 0 100%; width: 100%; box-sizing: border-box; padding: 28px;
 margin: 0 0 18px; border: 1px solid #e5e0da; border-radius: 20px;
 background: #fff; text-align: left; color: #373530; letter-spacing: 0;
}
.balu-configurator-form { width: 100%; max-width: 780px; }
.balu-configurator-form .variations { display: none; }
.balu-configurator-form .single_variation_wrap { width: 100%; }
.balu-configurator-form .woocommerce-variation-add-to-cart { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; }
.balu-fabric-unavailable { opacity: .4; cursor: not-allowed; }
.balu-configurator-form .balu-configurator h2 { font-size: 24px; line-height: 1.3; text-transform: none; letter-spacing: 0; margin: 0 0 10px; }
.balu-configurator .balu-configurator-intro, .balu-configurator .balu-region-help { font-size: 15px; line-height: 1.6; margin: 0 0 16px; text-align: left; }
.balu-configurator fieldset { padding: 0; margin: 0 0 24px; border: 0; min-width: 0; }
.balu-configurator legend { padding: 0; font-size: 18px; font-weight: 600; line-height: 1.4; margin-bottom: 12px; float: none; width: auto; border: 0; text-align: left; }
.balu-configurator-modes { display: flex; gap: 12px; flex-wrap: wrap; }
.balu-configurator-modes label { display: flex; align-items: center; gap: 9px; min-height: 48px; border: 1px solid #d9d4ce; border-radius: 10px; padding: 8px 16px; cursor: pointer; font-size: 16px; margin: 0; }
.balu-configurator-modes label:has(input:checked) { border-color: #49463f; background: #f5f3ef; }
.balu-configurator input[type=radio] { display: block !important; visibility: visible !important; accent-color: #49463f; }
.balu-configurator-modes input[type=radio] { appearance: auto; width: 16px; height: 16px; margin: 0; }
.balu-configurator-modes label:focus-within { outline: 3px solid #5e8499; outline-offset: 3px; }
.balu-fabric-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(108px, 1fr)); gap: 10px; }
.balu-fabric-option { position: relative; margin: 0; cursor: pointer; min-width: 0; }
.balu-fabric-option input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.balu-fabric-card { display: flex; flex-direction: column; gap: 10px; padding: 9px; height: 100%; box-sizing: border-box; border: 1px solid #d9d4ce; border-radius: 12px; background: white; }
.balu-fabric-option input:checked + .balu-fabric-card { border-color: #49463f; box-shadow: 0 0 0 1px #49463f; background: #f8f7f4; }
.balu-fabric-option input:focus-visible + .balu-fabric-card { outline: 3px solid #5e8499; outline-offset: 3px; }
.balu-fabric-card .balu-fabric-sample { width: 100%; aspect-ratio: 1; height: auto; object-fit: cover; border-radius: 7px; margin: 0; }
.balu-fabric-no-sample { display: flex; align-items: center; justify-content: center; min-height: 56px; padding: 6px; border-radius: 7px; background: #f3f2ef; color: #77746e; font-size: 11px; text-align: center; }
.balu-fabric-name { font-size: 14px; font-weight: 500; line-height: 1.4; overflow-wrap: anywhere; text-align: center; }
.balu-configurator .balu-configuration-summary { padding: 14px 16px; margin: 0 0 12px; border-radius: 10px; background: #f3f2ef; font-size: 15px; line-height: 1.5; color: #373530; text-align: left; }
.balu-configurator .balu-configurator-note { font-size: 12px; line-height: 1.6; color: #77746e; margin: 0; text-align: left; }
.balu-configurator [hidden] { display: none !important; }
.balu-configurator-form .single_add_to_cart_button:disabled { opacity: .45; cursor: not-allowed; }
/* The theme's duplicate sticky purchase form does not contain fabric choices. */
.balu-configurable-product .sticky-cart-form { display: none !important; }
@media (max-width: 600px) {
 .balu-configurator-form .balu-configurator { padding: 18px; border-radius: 16px; }
 .balu-configurator-form .balu-configurator h2 { font-size: 21px; }
 .balu-fabric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
 .balu-fabric-card { padding: 7px; }
 .balu-fabric-name { font-size: 13px; }
 .balu-configurator-modes label { flex: 1; justify-content: center; padding: 8px; font-size: 14px; }
}

/* Textile-first selection: real samples, clear labels and restrained motion. */
.balu-configurator-form .balu-configurator { background: linear-gradient(145deg, #fff 60%, #faf9f6); box-shadow: 0 12px 40px #37353008; }
.balu-configurator-modes { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.balu-configurator-modes legend { grid-column: 1 / -1; }
.balu-configurator-modes label { justify-content: center; border-radius: 14px; background: #f4f2ee; border-color: transparent; transition: background .25s, color .25s, box-shadow .25s; }
.balu-configurator-modes label:has(input:checked) { color: #fff; background: #49463f; border-color: #49463f; box-shadow: 0 4px 12px #49463f20; }
.balu-configurator-modes input[type=radio] { position: absolute; width: 1px; height: 1px; opacity: 0; }
.balu-fabric-grid { grid-template-columns: repeat(auto-fit, minmax(125px, 1fr)); gap: 14px; }
.balu-fabric-tile { position: relative; min-width: 0; }
.balu-fabric-option { display: block; height: 100%; }
.balu-fabric-card { gap: 10px; padding: 8px 8px 12px; border-radius: 16px; transition: transform .25s, border-color .25s, box-shadow .25s, background .25s; }
.balu-fabric-card .balu-fabric-sample { aspect-ratio: 1; border-radius: 10px; }
.balu-fabric-name { font-size: 16px; line-height: 1.45; font-weight: 600; color: #373530; overflow-wrap: normal; }
.balu-fabric-state { font-size: 11px; line-height: 1.4; color: #78736a; text-align: center; margin-top: auto; }
.balu-fabric-option input:checked + .balu-fabric-card { border-color: #49463f; box-shadow: 0 0 0 2px #49463f, 0 8px 20px #49463f14; background: #f8f6f1; }
.balu-fabric-option input:checked + .balu-fabric-card .balu-fabric-state { color: #49463f; font-weight: 600; }
.balu-configurator .balu-sample-zoom { position: absolute; top: 14px; right: 14px; display: grid; place-items: center; width: 32px; height: 32px; min-width: 0; padding: 0; border: 1px solid #ffffffaa; border-radius: 50%; background: #ffffffed; color: #373530; font: 22px/1 sans-serif; cursor: pointer; box-shadow: 0 2px 8px #00000012; }
.balu-sample-zoom:focus-visible, .balu-sample-close:focus-visible { outline: 3px solid #5e8499; outline-offset: 3px; }
.balu-configurator .balu-configuration-summary { background: transparent; border-top: 1px solid #e5e0da; border-radius: 0; padding: 20px 0 0; margin-bottom: 12px; }
.balu-configuration-summary.is-complete { font-weight: 500; }
.balu-selection-preview { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 18px; }
.balu-selection-preview:empty { display: none; }
.balu-selection-chip { display: flex; align-items: center; gap: 12px; padding: 10px 14px 10px 10px; border: 1px solid #e5e0da; border-radius: 14px; background: #fff; }
.balu-selection-chip img { width: 54px; height: 54px; object-fit: cover; border-radius: 9px; }
.balu-selection-chip small, .balu-selection-chip strong { display: block; text-align: left; }
.balu-selection-chip small { font-size: 12px; color: #78736a; }
.balu-selection-chip strong { font-size: 15px; color: #373530; }
.balu-configurator .balu-sample-dialog { position: fixed; inset: 0; margin: auto; width: min(600px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); padding: 24px; box-sizing: border-box; border: 0; border-radius: 22px; background: #fff; box-shadow: 0 24px 100px #00000030; overflow-y: auto; }
.balu-sample-dialog::backdrop { background: #24231fcc; backdrop-filter: blur(5px); }
.balu-sample-dialog img { display: block; width: 100%; max-height: 60vh; object-fit: contain; border-radius: 12px; }
.balu-configurator .balu-sample-dialog h3 { font-size: 22px; text-transform: none; margin: 18px 0 8px; letter-spacing: 0; }
.balu-sample-dialog p { font-size: 13px; text-align: left; line-height: 1.6; margin: 0; }
.balu-configurator .balu-sample-close { display: block; margin: 0 0 12px auto; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%; background: #f3f2ef; color: #373530; font: 26px/1 sans-serif; cursor: pointer; }
@media (hover: hover) { .balu-fabric-option:not(.balu-fabric-unavailable):hover .balu-fabric-card { transform: translateY(-3px); box-shadow: 0 8px 22px #37353014; } }
@media (max-width: 600px) { .balu-fabric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .balu-fabric-name { font-size: 16px; } .balu-selection-chip { flex: 1 1 100%; } }
@media (prefers-reduced-motion: reduce) { .balu-configurator *, .balu-configurator *::before { transition: none !important; animation: none !important; } .balu-fabric-option:hover .balu-fabric-card { transform: none !important; } }

.balu-configurator-form .balu-configurator { padding: 0; margin: 0 0 18px; border: 0; border-radius: 0; background: #fff; box-shadow: none; }
.balu-configurator legend { font-size: 15px; margin-bottom: 8px; }
.balu-configurator fieldset { margin-bottom: 24px; }
.balu-configurator-modes { display: flex; gap: 8px; }
.balu-configurator-modes label { flex: 0 1 auto; min-height: 40px; padding: 8px 18px; border-radius: 24px; font-size: 14px; box-shadow: none; }
.balu-configurator-modes label:has(input:checked) { background: #373530; box-shadow: none; }
.balu-configurator-modes label:focus-within { outline: none; }
.balu-configurator-modes label:has(input:focus-visible) { outline: 3px solid #5e8499; outline-offset: 3px; }
.balu-configurator .balu-region-selection { display: block; height: auto; min-height: 24px; width: auto; padding: 0; margin: 0 0 12px; background: none; border: 0; color: #625e58; text-transform: none; font: inherit; font-size: 14px; font-weight: 400; line-height: 1.6; text-align: left; cursor: zoom-in; }
.balu-region-selection:not(:disabled):hover { text-decoration: underline; text-underline-offset: 3px; }
.balu-region-selection:disabled { cursor: default; }
.balu-region-selection:focus-visible { outline: 2px solid #5e8499; outline-offset: 4px; }
.balu-fabric-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; max-width: 450px; }
.balu-fabric-card { padding: 5px; gap: 0; border: 1px solid transparent; border-radius: 10px; background: #fff; }
.balu-fabric-card .balu-fabric-sample { border-radius: 5px; aspect-ratio: 1; }
.balu-fabric-option input:checked + .balu-fabric-card { border-color: #373530; box-shadow: 0 0 0 1px #373530; background: #fff; }
/* One admin-authored name serves both the desktop tooltip and touch caption. */
.balu-fabric-name { position: absolute; bottom: calc(100% + 10px); left: 50%; width: max-content; max-width: 190px; height: auto; padding: 9px 13px; overflow: visible; clip-path: none; white-space: normal; border-radius: 8px; background: #373530; color: #fff; font-size: 13px; font-weight: 600; line-height: 1.4; text-align: center; box-shadow: 0 6px 20px #24231f26; opacity: 0; visibility: hidden; transform: translate(-50%, 4px); transition: opacity .16s ease, transform .16s ease, visibility .16s; pointer-events: none; z-index: 10; }
.balu-fabric-name::after { content: ''; position: absolute; top: 100%; left: 50%; margin-left: -5px; border: 5px solid transparent; border-top-color: #373530; }
.balu-fabric-tile:has(input:focus-visible) { z-index: 11; }
.balu-fabric-option:has(input:focus-visible) .balu-fabric-name { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
@media (min-width: 992px) and (hover: hover) {
 .balu-fabric-tile:hover { z-index: 11; }
 .balu-fabric-option:hover .balu-fabric-name { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
}
@media (max-width: 991px), (hover: none) {
 .balu-fabric-card { gap: 7px; padding-bottom: 8px; }
 .balu-fabric-name, .balu-fabric-option:has(input:focus-visible) .balu-fabric-name { position: static; width: 100%; max-width: none; padding: 0; border-radius: 0; background: none; color: #625e58; font-size: 11px; font-weight: 500; line-height: 1.35; box-shadow: none; opacity: 1; visibility: visible; transform: none; overflow-wrap: anywhere; }
 .balu-fabric-name::after { display: none; }
 .balu-fabric-option input:checked + .balu-fabric-card .balu-fabric-name { color: #373530; font-weight: 600; }
}
@media (max-width: 600px) {
 .balu-fabric-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
 .balu-fabric-name { font-size: 12px; overflow-wrap: normal; }
}
.balu-fabric-state, .balu-configurator .balu-sample-zoom { display: none; }
.balu-fabric-unavailable .balu-fabric-card { background: linear-gradient(135deg, transparent 49%, #a29b93 49%, #a29b93 51%, transparent 51%); }
.balu-configurator .balu-configuration-summary { padding: 0; border: 0; font-size: 13px; color: #625e58; }
.balu-configurator .balu-configurator-note { font-size: 11px; }
.balu-configurator-form .woocommerce-variation-add-to-cart { justify-content: flex-start; }
body.balu-configurable-product.single-product.product-style-4 div.product form.balu-configurator-form { width: 100%; display: flex; margin-top: 24px; }
/* Reuse the existing Frenet card, even before the fabric selection is complete. */
body.balu-configurable-product #shipping-simulator { display: block !important; }
body.balu-configurable-product #shipping-simulator #idx-calc_shipping:disabled { opacity: .55; cursor: not-allowed; }
@media (max-width: 991px) {
 .balu-fabric-grid { gap: 8px; }
 .balu-configurator-modes label { flex: 0 1 auto; padding: 8px 18px; }
}
@media (hover: hover) { .balu-fabric-option:not(.balu-fabric-unavailable):hover .balu-fabric-card { transform: translateY(-2px); box-shadow: none; border-color: #c5bfb7; } }


/* Approved, pre-rendered pilot combinations; keep the original gallery independent. */
.balu-preview-loading-host { position: relative; }
body.balu-configurable-product .images .balu-preview-loading { position: absolute; z-index: 30; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 24px; box-sizing: border-box; border-radius: 24px; background: #f5f3ef; color: #373530; font-size: 14px; text-align: center; cursor: progress; }
body.balu-configurable-product .images .balu-preview-loading[hidden] { display: none !important; }
.balu-preview-spinner { width: 32px; height: 32px; box-sizing: border-box; border: 3px solid #37353026; border-top-color: #373530; border-radius: 50%; animation: balu-preview-spin .8s linear infinite; }
body.balu-configurable-product .images.balu-preview-is-loading .balu-gallery-controls { visibility: hidden; }
@keyframes balu-preview-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .balu-preview-spinner { animation: none; } }
body.balu-configurable-product .images .balu-gallery-hidden,
body.balu-configurable-product .images .balu-combination-preview[hidden],
body.balu-configurable-product .images .balu-preview-toggle[hidden] { display: none !important; }
body.balu-configurable-product .images .balu-preview-enlarge { display: block; width: 100%; height: auto; padding: 0; margin: 0; border: 0; background: transparent; cursor: zoom-in; }
body.balu-configurable-product .images .balu-preview-enlarge img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: contain; border-radius: 24px; }
body.balu-configurable-product .images .balu-preview-caption { margin: 12px 0 6px; font-size: 12px; line-height: 1.6; text-align: left; color: #625e58; }
body.balu-configurable-product .images .balu-preview-original,
body.balu-configurable-product .images .balu-preview-toggle { display: inline-block; padding: 8px 0; height: auto; border: 0; background: transparent; color: #373530; font-size: 13px; line-height: 1.5; text-transform: none; text-decoration: underline; text-underline-offset: 3px; }
body.balu-configurable-product .images .balu-showing-preview { opacity: 1; }
body.balu-configurable-product .images.balu-showing-preview .thumbnails .active { opacity: .65; }
.balu-preview-enlarge:focus-visible, .balu-preview-original:focus-visible, .balu-preview-toggle:focus-visible { outline: 2px solid #5e8499; outline-offset: 4px; }
