.sd-dc{--border:#ddd8cf;--soft:#f7f5f1;--text:#242424;max-width:1320px;margin:auto;color:var(--text)}

/* Shared informational note styling: Corner/Bi-fold, Bar Panel and Hinge Options */
.sd-info-note{
    margin-top:10px;
    padding:10px 12px;
    border:1px solid var(--border);
    border-radius:8px;
    background:#f8f7f4;
    color:#666;
    font-size:13px;
    line-height:1.5;
    text-align:left;
}
.sd-info-note strong{
    color:var(--text);
    font-weight:650;
}
@media(max-width:620px){
    .sd-info-note{
        font-size:12px;
        padding:9px 10px;
    }
}
.sd-dc *{box-sizing:border-box}.sd-dc-form{width:880px;max-width:100%}.sd-dc-layout{display:grid;grid-template-columns:minmax(0,880px) 390px;gap:24px;align-items:start}.sd-dc-form section,.sd-preview-wrap{background:#fff;border:1px solid var(--border);border-radius:14px;padding:20px;margin:0 0 18px}.sd-dc h3{margin:0 0 16px;font-size:20px}.sd-dc h4{margin:0 0 10px;font-size:15px}.sd-grid{display:grid;gap:14px}.sd-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sd-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sd-grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sd-dc label,.sd-label{display:block;font-size:13px;font-weight:650}.sd-dc input,.sd-dc select{width:100%;min-height:44px;margin-top:6px;padding:8px 10px;border:1px solid #cfcac2;border-radius:7px;background:#fff;font:inherit}.sd-field{margin-top:17px}.sd-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:7px}.sd-choice-grid{display:flex;flex-wrap:wrap;align-items:flex-start}.sd-buttons button,.sd-image-options button{border:1px solid #cfcac2;background:#fff;border-radius:8px;padding:10px 14px;cursor:pointer;color:inherit;font:inherit}.sd-choice-grid button{flex:0 0 auto;width:auto;min-width:0;white-space:normal}.sd-buttons button.is-active,.sd-image-options button.is-active{border-color:#222;box-shadow:0 0 0 1px #222;background:#faf9f7}.sd-dimensions-row{display:grid;grid-template-columns:repeat(2,minmax(110px,1fr));gap:12px;margin-top:17px;align-items:end}.sd-dimensions-row:has([data-show="corner"]:not([style*="display: none"])){grid-template-columns:repeat(3,minmax(90px,1fr))}.sd-image-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:10px;margin-top:8px}.sd-image-options button{padding:8px;text-align:center;min-width:0}.sd-image-placeholder{display:grid;place-items:center;aspect-ratio:1;background:var(--soft);border:1px dashed #c9c2b8;border-radius:6px;margin-bottom:8px;color:#888;font-size:12px;overflow:hidden}.sd-image-placeholder>.sd-image-fallback{pointer-events:none}.sd-image-options b{display:block;font-size:12px;line-height:1.25;overflow-wrap:anywhere}.sd-sub-options{display:none;margin-top:16px;padding:14px;border:1px solid var(--border);border-radius:10px;background:#fcfbf9}.sd-image-options-small{grid-template-columns:repeat(auto-fit,minmax(115px,1fr))}.sd-colour-options{grid-template-columns:repeat(auto-fit,minmax(105px,1fr));max-height:560px;overflow:auto;padding-right:4px}.sd-colour-options .sd-image-placeholder{aspect-ratio:1}.sd-empty-note{margin:0;font-size:13px;color:#777}.sd-conditional{display:none}.sd-qty-price{display:grid;grid-template-columns:120px 1fr;gap:20px;align-items:end}.sd-price{background:var(--soft);border-radius:10px;padding:14px 18px}.sd-price span,.sd-price small{display:block}.sd-price strong{display:block;font-size:30px;line-height:1.2}.sd-breakdown{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:12px;font-size:12px;color:#666}.sd-preview-wrap{position:sticky;top:20px;text-align:center}.sd-preview-wrap canvas{display:block;width:100%;height:auto;background:#fafafa;border:1px solid var(--border);border-radius:10px}.sd-preview-wrap p{font-size:12px;color:#777}.sd-field small{display:block;margin-top:7px;color:#777}
@media(max-width:1100px){.sd-dc-form{width:100%}.sd-dc-layout{grid-template-columns:minmax(0,1fr)}.sd-preview-wrap{position:static}.sd-grid-5{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.sd-grid-2,.sd-grid-3,.sd-grid-5{grid-template-columns:1fr}.sd-qty-price{grid-template-columns:1fr}.sd-dc-form section,.sd-preview-wrap{padding:15px}.sd-choice-grid{display:flex;flex-wrap:wrap}.sd-dimensions-row,.sd-dimensions-row:has([data-show="corner"]:not([style*="display: none"])){display:flex;gap:8px;align-items:flex-end}.sd-dimensions-row>label{flex:1 1 0;min-width:0;font-size:11px}.sd-dimensions-row input,.sd-dimensions-row select{min-width:0;padding-left:7px;padding-right:7px}.sd-image-options{grid-template-columns:repeat(2,minmax(0,1fr))}.sd-colour-options{grid-template-columns:repeat(3,minmax(0,1fr));max-height:470px}.sd-colour-options button{padding:5px}.sd-colour-options b{font-size:10px}}

.sd-cart-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px}.sd-cart-actions .button{min-height:46px;padding:10px 24px}.sd-cart-actions [data-cart-message]{font-size:13px}.sd-cart-actions .is-error{color:#b42318}.sd-cart-actions .is-success{color:#067647}

/* Image-ready profile and colour cards */
.sd-image-placeholder img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.sd-profile-families .sd-image-placeholder img,.sd-image-options-small .sd-image-placeholder img,.sd-dc-form section[data-show="painted"]>.sd-image-options .sd-image-placeholder img,.sd-dc-form section[data-show="laminated"]>.sd-image-options .sd-image-placeholder img{object-fit:contain;background:#fff}
.sd-colour-options .sd-image-placeholder img{object-fit:cover}
.sd-image-fallback{display:none;width:100%;height:100%;place-items:center;color:#888;font-size:12px}

/* Keep Qty and the full price display on one line. */
.sd-qty-price{display:grid!important;grid-template-columns:110px minmax(0,1fr)!important;gap:14px!important;align-items:stretch!important}
.sd-qty-price>label{min-width:0}
.sd-price{display:flex!important;align-items:center!important;gap:10px!important;flex-wrap:nowrap!important;min-width:0;padding:14px 18px;background:var(--soft);border-radius:10px}
.sd-price>span{display:inline!important;flex:0 0 auto;white-space:nowrap;font-weight:600}
.sd-price>strong{display:inline!important;flex:0 0 auto;margin:0;font-size:30px;line-height:1.1;white-space:nowrap}
.sd-price>strong .woocommerce-Price-amount,.sd-price>strong bdi,.sd-price>strong .woocommerce-Price-currencySymbol{display:inline!important;white-space:nowrap}
.sd-price>small{display:block!important;flex:1 1 auto;min-width:0;margin:0 0 0 auto;font-size:12px;line-height:1.3;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#777}
@media(max-width:620px){.sd-qty-price{grid-template-columns:86px minmax(0,1fr)!important;gap:8px!important}.sd-price{gap:7px!important;padding:12px 10px}.sd-price>strong{font-size:23px}.sd-price>small{font-size:10px}}

/* Door Type starts visible because the default Material Type is Door. */
.sd-default-door-type{display:block}

/* Price panel positioned directly below the door preview. */
.sd-preview-price-panel{margin-top:16px;padding-top:16px;border-top:1px solid var(--border);text-align:left}
.sd-preview-price-panel h3{margin-bottom:12px}
.sd-preview-price-panel .sd-breakdown{justify-content:flex-start}
.sd-preview-price-panel .sd-cart-actions{justify-content:flex-start}

/* v1.3.1: CSV lookup details and integrated handle position */
.sd-csv-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:22px 0 0;padding-top:16px;border-top:1px solid var(--border);text-align:left}
.sd-csv-item{min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#f8f7f4}
.sd-csv-item span{display:block;margin-bottom:3px;font-size:10px;line-height:1.2;text-transform:uppercase;letter-spacing:.07em;color:#777}
.sd-csv-item strong{display:block;font-size:12px;line-height:1.35;font-weight:650;overflow-wrap:anywhere}
.sd-price-status{min-height:0;margin:0 0 8px;font-size:12px;color:#777;text-align:left}
.sd-price-status:empty{display:none}
.sd-handle-position-field{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);text-align:left}
.sd-handle-position-field .sd-buttons{margin-top:7px}
.sd-price>small{display:none!important}
@media(max-width:620px){.sd-csv-info{grid-template-columns:1fr}.sd-csv-item{padding:9px 10px}}


/* v1.3.2: Corner/Bi-fold measurement note and aligned dimension fields */
.sd-dimensions-row{align-items:stretch}
.sd-dimensions-row>label{display:flex;flex-direction:column;min-width:0;height:100%}
.sd-dimensions-row>label>.sd-dimension{display:block;margin-top:auto}
@media(max-width:620px){
  .sd-dimensions-row,.sd-dimensions-row:has([data-show="corner"]:not([style*="display: none"])){align-items:stretch}
  .sd-dimensions-row>label{display:flex;flex-direction:column;height:auto}
  .sd-dimensions-row>label>.sd-dimension{margin-top:auto}
}

/* Required custom paint validation */
.sd-dc input.sd-required-error{border-color:#b42318!important;box-shadow:0 0 0 2px rgba(180,35,24,.12)!important;}

/* Hinge preset locking */
.sd-dc .sd-buttons button.is-disabled,
.sd-dc .sd-buttons button:disabled{
    opacity:.42;
    cursor:not-allowed;
    pointer-events:none;
}
.sd-dc .sd-hinge-preset-message{
    display:block;
    margin-top:7px;
    color:#666;
    line-height:1.4;
}
.sd-dc .sd-hinge-preset-message.is-error{
    color:#b42318;
    font-weight:600;
}

/* v2.0.4: Standard hinge positions are calculated automatically. */
.sd-dc .sd-hinge-readonly {
    background: #f3f3f3;
    color: #666;
    cursor: not-allowed;
}

.sd-dc [data-radio] button.is-disabled,
.sd-dc [data-radio] button:disabled {
    opacity: .45;
    cursor: not-allowed;
}


/* v2.0.5: Bar Panel dimensions and horizontal preview guidance */
.sd-preview-wrap canvas{display:block;width:100%;height:auto;max-width:500px;margin:0 auto}

/* v2.1.1: full configuration renderer */
.sd-preview-meta{margin-top:10px;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:#f8f7f4;color:#555;font-size:12px;line-height:1.45;text-align:left}
.sd-preview-wrap canvas{background:#fff;border:1px solid var(--border);border-radius:12px}

/* v2.1.2: streamlined preview and responsive field sizing */
.sd-preview-meta{display:none!important}

/* Prevent preview drawings and measurement labels escaping visually. */
.sd-preview-wrap{
    overflow:hidden;
}
.sd-preview-wrap canvas{
    max-width:100%;
}

@media(max-width:620px){
    /* Keep Height/Width labels readable rather than shrinking them. */
    .sd-dimensions-row>label{
        font-size:13px;
        line-height:1.3;
    }
    .sd-dimensions-row input,
    .sd-dimensions-row select{
        font-size:16px;
    }
}

/* v2.1.5: taller renderer; disclaimer removed from template */
.sd-preview-wrap canvas{max-height:none;}

/* Hinge preset validation below Configuration Preview */
.sd-hinge-validation{margin:12px 0 14px;padding:11px 13px;border:1px solid #d92d20;border-radius:8px;background:#fff1f0;color:#b42318;font-size:13px;font-weight:650;line-height:1.4;text-align:left}
.sd-hinge-validation[hidden]{display:none!important}
.sd-hinge-validation.is-valid{border-color:#12b76a;background:#ecfdf3;color:#067647}

/* Automatic hinge quantity: editable only in Custom placement */
.sd-buttons.sd-auto-lock {
    opacity: .58;
}
.sd-buttons.sd-auto-lock button {
    cursor: not-allowed !important;
}


/* v2.1.15: lighter section styling, unnumbered headings, button styling, and required choices */
.sd-dc-form section,
.sd-preview-wrap{
    background:#F4F5F6;
    border:2px solid #c8ccce;
}
.sd-dc-form section + section{
    margin-top:20px;
}
.sd-buttons button,
.sd-image-options button{
    background:#F4F5F6;
    border:1px solid #8f969a;
}
.sd-buttons button:hover,
.sd-image-options button:hover{
    border-color:#666d71;
}
.sd-buttons button.is-active,
.sd-image-options button.is-active{
    background:#F4F5F6;
    border-color:#f19429;
    box-shadow:0 0 0 2px rgba(241,148,41,.22);
}
.sd-required-choice-error{
    border:2px solid #b42318!important;
    border-radius:10px;
    padding:8px;
    background:#fff1f0;
}
.sd-required-mark{color:#b42318}

/* v2.1.16: compact, touch-friendly mobile configurator */
@media (max-width:620px){
    .sd-dc{
        width:100%;
        padding:0;
    }

    .sd-dc-layout{
        gap:12px;
    }

    .sd-dc-form section,
    .sd-preview-wrap{
        margin-bottom:12px;
        padding:12px;
        border-radius:10px;
    }

    .sd-dc-form section + section{
        margin-top:12px;
    }

    .sd-dc h3{
        margin-bottom:11px;
        font-size:17px;
        line-height:1.25;
    }

    .sd-dc h4{
        margin-bottom:7px;
        font-size:13px;
        line-height:1.3;
    }

    .sd-grid{
        gap:10px;
    }

    .sd-field{
        margin-top:12px;
    }

    /* Give conditionally revealed controls a clear gap from the field above. */
    .sd-sub-options,
    .sd-handle-position-field,
    .sd-info-note{
        margin-top:12px;
    }

    .sd-dc label,
    .sd-label{
        font-size:12px;
        line-height:1.3;
    }

    .sd-dc input,
    .sd-dc select{
        min-height:40px;
        margin-top:5px;
        padding:6px 8px;
        border-radius:6px;
    }

    /* Keep dimension inputs readable and stop iOS/Android browser zoom. */
    .sd-dimensions-row input,
    .sd-dimensions-row select{
        min-height:40px;
        padding:6px 7px;
        font-size:16px;
    }

    .sd-dimensions-row,
    .sd-dimensions-row:has([data-show="corner"]:not([style*="display: none"])){
        gap:6px;
        margin-top:12px;
    }

    .sd-dimensions-row>label{
        font-size:13px;
        line-height:1.25;
    }

    .sd-buttons{
        gap:6px;
        margin-top:6px;
    }

    .sd-buttons button,
    .sd-image-options button{
        min-height:36px;
        padding:7px 10px;
        border-radius:7px;
        font-size:12px;
        line-height:1.2;
    }

    .sd-image-options{
        gap:7px;
        margin-top:7px;
    }

    .sd-image-options button{
        padding:6px;
    }

    .sd-image-placeholder{
        margin-bottom:5px;
        border-radius:5px;
    }

    .sd-image-options b{
        font-size:11px;
        line-height:1.2;
    }

    .sd-colour-options{
        gap:6px;
        max-height:430px;
    }

    .sd-colour-options button{
        min-height:0;
        padding:4px;
    }

    .sd-colour-options b{
        font-size:9px;
        line-height:1.15;
    }

    .sd-csv-info{
        gap:7px;
        margin-top:18px;
        padding-top:14px;
    }

    .sd-csv-item{
        padding:7px 8px;
    }

    .sd-breakdown{
        gap:6px 10px;
        margin-top:9px;
        font-size:11px;
    }

    .sd-preview-price-panel{
        margin-top:12px;
        padding-top:12px;
    }

    .sd-cart-actions{
        gap:9px;
        margin-top:12px;
    }

    .sd-cart-actions .button{
        min-height:40px;
        padding:8px 14px;
        font-size:13px;
    }

    .sd-hinge-validation{
        margin:9px 0 11px;
        padding:9px 10px;
        font-size:12px;
    }
}


/* v2.2.1: all configured option images use true square frames */
.sd-image-placeholder{aspect-ratio:1 / 1!important;width:100%;height:auto}
.sd-image-placeholder img{width:100%;height:100%;display:block}
.sd-image-options-small .sd-image-placeholder img,
.sd-dc-form section[data-show="painted"]>.sd-image-options .sd-image-placeholder img,
.sd-dc-form section[data-show="laminated"]>.sd-image-options .sd-image-placeholder img{object-fit:contain;background:#fff}
.sd-colour-options .sd-image-placeholder img{object-fit:cover}


/* v2.2.2: three-column child image grids and image zoom */
@media (min-width:621px){
    .sd-image-options-small,
    .sd-colour-options{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}

.sd-image-placeholder{
    position:relative;
}

.sd-image-placeholder img{
    cursor:pointer;
}

.sd-image-zoom-trigger{
    pointer-events:auto;
    position:absolute;
    right:8px;
    bottom:8px;
    z-index:4;
    display:flex;
    align-items:center;
    justify-content:center;
    width:32px;
    height:32px;
    padding:0;
    border:1px solid #555;
    border-radius:50%;
    background:rgba(255,255,255,.96);
    color:#222;
    font-size:16px;
    line-height:1;
    cursor:zoom-in;
    box-shadow:0 2px 8px rgba(0,0,0,.18);
    transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;
}

.sd-image-zoom-trigger:hover,
.sd-image-zoom-trigger:focus-visible{
    border-color:#f19429;
    box-shadow:0 0 0 2px rgba(241,148,41,.22),0 2px 8px rgba(0,0,0,.18);
    transform:scale(1.06);
    outline:none;
}

.sd-image-zoom-modal{
    position:fixed;
    inset:0;
    z-index:2147483647;
    display:none;
    align-items:center;
    justify-content:center;
    padding:24px;
    background:rgba(0,0,0,.82);
}

.sd-image-zoom-modal.is-open{
    display:flex;
}

.sd-image-zoom-dialog{
    position:relative;
    width:min(92vw,900px);
    max-height:92vh;
    padding:18px;
    border-radius:14px;
    background:#fff;
    box-shadow:0 18px 60px rgba(0,0,0,.45);
}

.sd-image-zoom-dialog img{
    display:block;
    width:100%;
    max-height:calc(92vh - 82px);
    object-fit:contain;
    background:#f4f5f6;
    border-radius:8px;
}

.sd-image-zoom-caption{
    margin-top:10px;
    font-size:14px;
    font-weight:650;
    text-align:center;
    color:#333;
}

.sd-image-zoom-close{
    position:absolute;
    top:8px;
    right:8px;
    width:38px;
    height:38px;
    padding:0;
    border:1px solid #777;
    border-radius:50%;
    background:#fff;
    color:#222;
    font-size:25px;
    line-height:34px;
    cursor:pointer;
    z-index:2;
}

body.sd-image-zoom-open{
    overflow:hidden;
}

@media (max-width:620px){
    .sd-image-zoom-modal{padding:12px}
    .sd-image-zoom-dialog{padding:12px}
    .sd-image-zoom-trigger{
    pointer-events:auto;
        right:6px;
        bottom:6px;
        width:34px;
        height:34px;
        font-size:17px;
    }
}


/* v2.2.6: safe pricing and image presentation refinements */
.sd-image-placeholder{
    background:#fff!important;
}
.sd-image-zoom-dialog{
    width:min(92vw,760px);
    background:#fff;
}
.sd-image-zoom-dialog img{
    aspect-ratio:1 / 1;
    width:100%;
    height:auto;
    max-height:min(76vh,760px);
    object-fit:contain;
    background:#fff;
}

/* v2.2.7: mirror only CSV size-bracket errors below dimensions */
.sd-size-table-error{
    margin:8px 0 0;
    padding:8px 10px;
    border:1px solid #d92d20;
    border-radius:6px;
    background:#fff1f0;
    color:#b42318;
    font-size:13px;
    font-weight:600;
    line-height:1.4;
}
.sd-size-table-error[hidden]{display:none!important;}
@media (max-width:680px){
    .sd-size-table-error{font-size:12px;padding:7px 9px;}
}

/* v2.2.9 required-field and Add to Cart state */
.sd-dc [data-add-to-cart]:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.15);}
.sd-dc .sd-required-choice-error{outline:2px solid #c62828!important;outline-offset:3px;border-radius:8px;}
.sd-dc .sd-required-error{border-color:#c62828!important;box-shadow:0 0 0 1px #c62828!important;}

/* Flat Pack dimension dropdown indicator */
.sd-dimensions-row .sd-dimension select{
    -webkit-appearance:none;
    -moz-appearance:none;
    appearance:none;
    cursor:pointer;
    padding-right:38px !important;
    background-color:#fff;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8' viewBox='0 0 14 8'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23555' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat;
    background-position:right 12px center;
    background-size:14px 8px;
}

.sd-dimensions-row .sd-dimension select:hover,
.sd-dimensions-row .sd-dimension select:focus{
    border-color:#f19429;
}

@media(max-width:620px){
    .sd-dimensions-row .sd-dimension select{
        padding-right:28px !important;
        background-position:right 8px center;
        background-size:12px 7px;
    }
}


/* v2.2.23: help text and spacing for conditionally revealed fields */
.sd-revealed-field{
    margin-top:14px;
}
.sd-field-help{
    display:block;
    margin-top:7px;
    color:#666;
    font-size:12px;
    font-weight:400;
    line-height:1.45;
}
@media(max-width:620px){
    .sd-revealed-field{margin-top:12px;}
    .sd-field-help{font-size:11px;line-height:1.4;}
}


/* v2.2.25: Corner/Bi-fold mobile dimension alignment */
@media(max-width:620px){
    .sd-dimensions-row,
    .sd-dimensions-row:has([data-show="corner"]:not([style*="display: none"])){
        display:flex;
        align-items:stretch;
    }
    .sd-dimensions-row>label{
        display:flex;
        flex:1 1 0;
        flex-direction:column;
        justify-content:flex-end;
        min-width:0;
    }
    .sd-dimensions-row>label>.sd-dimension{
        margin-top:6px!important;
    }
}


/* Validation guide above Add to Cart */
.sd-validation-summary{margin:16px 0 4px;padding:12px 14px;border:1px solid #d92d20;border-radius:8px;background:#fff1f0;color:#8f1d18;font-size:13px;line-height:1.45}
.sd-validation-summary[hidden]{display:none!important}
.sd-validation-summary>strong{display:block;margin-bottom:6px;color:#8f1d18}
.sd-validation-summary ul{margin:0;padding:0;list-style:none;display:grid;gap:4px}
.sd-validation-summary li{margin:0;padding:0}
.sd-validation-summary button{appearance:none;-webkit-appearance:none;width:100%;padding:3px 0;border:0!important;background:transparent!important;color:#b42318!important;text-align:left;font:inherit;font-weight:600;line-height:1.35;cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;box-shadow:none!important}
.sd-validation-summary button:hover,.sd-validation-summary button:focus{color:#7a1712!important;outline:none}
@media(max-width:767px){.sd-validation-summary{margin-top:12px;padding:10px 11px;font-size:12px}}


/* v2.2.27: unified light renderer handles and mobile Corner/Bi-fold alignment */
@media(max-width:620px){
    .sd-dimensions-row:has([data-show="corner"]:not([style*="display: none"]))>label{
        display:flex!important;
        flex-direction:column!important;
        justify-content:flex-end!important;
        height:82px!important;
        min-height:82px!important;
        line-height:1.2;
    }
    .sd-dimensions-row:has([data-show="corner"]:not([style*="display: none"]))>label>.sd-dimension{
        display:block!important;
        margin-top:auto!important;
    }
}


/* v2.2.34: mobile sticky configuration preview */
.sd-preview-visual{
    position:relative;
}

@media (max-width:950px){
    /* Let the preview visual and price panel participate separately in the mobile grid. */
    .sd-preview-wrap{
        display:contents;
    }

    .sd-preview-visual{
        order:-1;
        position:sticky;
        top:8px;
        z-index:30;
        margin:0 0 12px;
        padding:10px;
        background:#F4F5F6;
        border:2px solid #c8ccce;
        border-radius:10px;
        text-align:center;
    }

    .sd-preview-visual h3{
        margin:0 0 7px;
        font-size:15px;
        line-height:1.2;
    }

    .sd-preview-visual canvas{
        width:auto;
        max-width:100%;
        height:auto;
        max-height:260px;
        margin:0 auto;
    }

    .sd-preview-price-panel{
        order:1;
        margin:0;
        padding:15px;
        background:#F4F5F6;
        border:2px solid #c8ccce;
        border-radius:10px;
    }
}

@media (max-width:620px){
    .sd-preview-visual{
        top:6px;
        padding:8px;
    }

    .sd-preview-visual canvas{
        max-height:210px;
    }

    .sd-preview-visual .sd-hinge-validation{
        margin:7px 0 0;
        padding:7px 9px;
        font-size:11px;
    }
}

/* v2.2.38: Bar Panel uses the normal preview container, while the
   horizontal canvas uses the maximum drawable width inside it. */
@media (max-width: 767px){
    .sd-dc.is-bar-panel .sd-preview-visual canvas{
        display:block;
        width:100% !important;
        max-width:100% !important;
        height:auto !important;
        max-height:none !important;
        margin:0 auto;
    }
}


/* Notes / Special Instructions */
.sd-dc .sd-notes-section textarea{
    width:100%;
    min-height:120px;
    box-sizing:border-box;
    resize:vertical;
    font:inherit;
}
.sd-dc .sd-notes-label{
    display:block;
    margin-bottom:12px;
}

/* v2.2.57: Dimension arithmetic validation */
.sd-dc input.sd-math-error{
  border-color:#b42318!important;
  box-shadow:0 0 0 2px rgba(180,35,24,.12)!important;
}


/* v2.2.80 Configured preview zoom */
.sd-preview-zoom-button{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-top:8px;
  padding:7px 10px;
  border:1px solid #d8d8d8;
  border-radius:6px;
  background:#fff;
  cursor:pointer;
  font-size:13px;
  line-height:1;
}
.sd-preview-zoom-button:hover,
.sd-preview-zoom-button:focus{
  border-color:#f19429;
  outline:none;
}
.sd-preview-zoom-lightbox{
  display:none;
  position:fixed;
  inset:0;
  z-index:999999;
}
.sd-preview-zoom-lightbox.is-open{
  display:block;
}
.sd-preview-zoom-backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.72);
}
.sd-preview-zoom-dialog{
  position:absolute;
  inset:4vh 4vw;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:42px 20px 20px;
}
.sd-preview-zoom-image{
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
  object-fit:contain;
  background:#fff;
  border-radius:8px;
  box-shadow:0 12px 40px rgba(0,0,0,.35);
}
.sd-preview-zoom-close{
  position:absolute;
  top:8px;
  right:10px;
  z-index:2;
  width:36px;
  height:36px;
  border:0;
  border-radius:50%;
  background:#fff;
  color:#222;
  font-size:26px;
  line-height:1;
  cursor:pointer;
}
body.sd-preview-zoom-open{
  overflow:hidden;
}


/* v2.2.81 Preview zoom placement */
#sd-door-canvas-wrap,
.sd-door-canvas-wrap,
.sd-preview-canvas-wrap,
[data-preview-wrap]{
  position:relative;
}

.sd-preview-zoom-button{
  position:absolute;
  right:10px;
  bottom:10px;
  z-index:8;
  margin:0;
  width:36px;
  height:36px;
  padding:0;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(0,0,0,.18);
  border-radius:6px;
  background:rgba(255,255,255,.92);
  box-shadow:0 1px 4px rgba(0,0,0,.12);
  cursor:pointer;
  line-height:1;
}
.sd-preview-zoom-button:hover,
.sd-preview-zoom-button:focus{
  border-color:#f19429;
  background:#fff;
  outline:none;
}
.sd-preview-zoom-button .screen-reader-text{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  padding:0 !important;
  margin:-1px !important;
  overflow:hidden !important;
  clip:rect(0,0,0,0) !important;
  white-space:nowrap !important;
  border:0 !important;
}


/* v2.3.10 Bar Panel portrait/landscape containment */
#sd-door-canvas-wrap,
.sd-door-canvas-wrap,
[data-preview-wrap]{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  overflow:hidden;
}

#sd-door-canvas-wrap canvas,
.sd-door-canvas-wrap canvas,
.sd-dc canvas[data-preview]{
  display:block;
  max-width:100%;
  height:auto;
  box-sizing:border-box;
}

/* Add vertical space only before the Hinge 1-5 row. */
.sd-dc [data-hinge-fields]{
  margin-top:12px;
}


/* v2.3.11 Minimum dimension validation uses the same visual treatment as
   the existing maximum/size-table validation. */
.sd-profile-min-dimension-error{
  display:block;
  position:static !important;
  float:none !important;
  width:100%;
  max-width:100%;
  box-sizing:border-box;
}
.sd-profile-min-dimension-error + .sd-profile-min-dimension-error{
  margin-top:6px;
}


/* v2.3.12 Stronger selected states */

/* Text / choice buttons */
.sd-dc .sd-buttons button.is-active,
.sd-dc .sd-choice-grid button.is-active{
  background:#f19429;
  border:2px solid #d97c00;
  color:#fff;
  font-weight:600;
}

/* Preserve image/colour visibility while making selection obvious */
.sd-dc .sd-image-options button.is-active,
.sd-dc .sd-image-option.is-active,
.sd-dc .sd-image-options .is-active{
  border:3px solid #f19429 !important;
  box-shadow:0 0 0 1px #d97c00;
}

/* Do not orange-fill image/swatch buttons */
.sd-dc .sd-image-options button.is-active{
  background:#fff;
  color:inherit;
}

/* Keep selected state clear on keyboard focus as well */
.sd-dc .sd-buttons button.is-active:focus-visible,
.sd-dc .sd-choice-grid button.is-active:focus-visible,
.sd-dc .sd-image-options button.is-active:focus-visible{
  outline:2px solid #242424;
  outline-offset:2px;
}


/* v2.3.21 Bar Panel spacing */
.sd-dc .sd-bar-kickboard-field{
  display:block;
  margin-top:12px;
}

/* v2.3.21 Laminated child colours/designs: 4 columns on desktop */
@media (min-width:1024px){
  .sd-dc [data-radio="design16_colour"],
  .sd-dc [data-radio="design18_colour"]{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
}


/* ==========================================================
 * v2.3.26 Cart-derived configurator summary
 * Reads WooCommerce cart contents; does not alter Add to Cart.
 * ========================================================== */
.sd-cart-summary-container{width:100%;max-width:100%;margin-top:28px;clear:both;min-width:0}
.sd-cart-summary-container:empty{display:none}
.sd-production-summary{width:100%;margin:0;padding:22px;border:1px solid #dedbd3;border-radius:16px;background:#fff;box-sizing:border-box}
.sd-production-summary>h2{margin:0 0 18px;font-size:22px;font-weight:700}
.sd-production-group+.sd-production-group{margin-top:26px}
.sd-production-group>h3{margin:0;padding:11px 14px;background:#f5f3ee;border:1px solid #dedbd3;border-bottom:0;border-radius:10px 10px 0 0;font-size:16px;font-weight:700}
.sd-production-table-wrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.sd-production-table{width:100%;border-collapse:collapse;table-layout:auto;margin:0}
.sd-production-table th,.sd-production-table td{padding:10px 12px;border:1px solid #dedbd3;text-align:left;vertical-align:middle;font-size:13px;line-height:1.4}
.sd-production-table th{font-weight:700;white-space:nowrap;background:#fbfaf7}
.sd-production-table td:first-child{width:54px;text-align:center}
.sd-production-table td:nth-child(3){white-space:nowrap}
@media(max-width:767px){
 .sd-cart-summary-container{margin-top:20px}
 .sd-production-summary{padding:10px;border-radius:12px}
 .sd-production-summary>h2{margin-bottom:12px;font-size:18px}
 .sd-production-group+.sd-production-group{margin-top:18px}
 .sd-production-group>h3{padding:8px 10px;font-size:14px}
 .sd-production-table{width:max-content;min-width:100%;table-layout:auto}
 .sd-production-table th,.sd-production-table td{padding:6px 7px;font-size:11.5px;line-height:1.25}
 .sd-production-table th{white-space:nowrap}
 .sd-production-table td{white-space:nowrap}
 .sd-production-table td[data-label="Notes"]{width:180px;min-width:150px;max-width:220px;white-space:normal;overflow-wrap:anywhere;word-break:normal}
}


/* v2.3.27 cart summary minimum-order progress + remove action */
.sd-minimum-progress{margin:0 0 12px;padding:10px 13px;border:1px solid #e1ded6;border-radius:9px;background:#fbfaf7;font-size:13px;line-height:1.45}
.sd-minimum-progress.is-short{border-color:#f0b8b3;background:#fff5f4;color:#8f1d18}
.sd-minimum-progress.is-reached{border-color:#a9d7b6;background:#f2fbf5;color:#176b37}
.sd-minimum-progress+.sd-production-group{margin-top:0}
.sd-production-group+.sd-minimum-progress{margin-top:22px}
.sd-production-table th.sd-remove-column,.sd-production-table td.sd-remove-column{width:44px;min-width:44px;padding:6px;text-align:center;vertical-align:middle}
.sd-cart-summary-remove{display:inline-block;width:auto;height:auto;min-width:0;padding:4px 8px;border:1px solid #b42318;border-radius:4px;background:#d92d20;color:#fff;font-family:inherit;font-size:11px;font-weight:700;line-height:1.2;cursor:pointer;box-shadow:none;transition:background .15s ease,border-color .15s ease,opacity .15s ease}
.sd-cart-summary-remove:hover,.sd-cart-summary-remove:focus{background:#b42318;border-color:#8f1d18;color:#fff;outline:0}
.sd-cart-summary-remove:disabled,.sd-cart-summary-remove.is-loading{opacity:.45;cursor:wait}
@media(max-width:767px){.sd-minimum-progress{font-size:12px}.sd-production-table th.sd-remove-column,.sd-production-table td.sd-remove-column{width:40px;min-width:40px}}


/* v2.3.30: hard reset for cart-summary Delete button.
   High specificity intentionally overrides theme/global button styling. */
.sd-production-summary .sd-production-table td.sd-remove-column button.sd-cart-summary-remove{
    -webkit-appearance:none !important;
    appearance:none !important;
    display:inline-block !important;
    position:static !important;
    width:auto !important;
    height:auto !important;
    min-width:0 !important;
    min-height:0 !important;
    max-width:none !important;
    padding:4px 8px !important;
    margin:0 !important;
    border:1px solid #b42318 !important;
    border-radius:3px !important;
    background:#d92d20 !important;
    background-image:none !important;
    color:#fff !important;
    font-family:inherit !important;
    font-size:11px !important;
    font-weight:700 !important;
    line-height:1.2 !important;
    text-indent:0 !important;
    letter-spacing:0 !important;
    white-space:nowrap !important;
    overflow:visible !important;
    box-shadow:none !important;
    transform:none !important;
    cursor:pointer !important;
}
.sd-production-summary .sd-production-table td.sd-remove-column button.sd-cart-summary-remove::before,
.sd-production-summary .sd-production-table td.sd-remove-column button.sd-cart-summary-remove::after{
    content:none !important;
    display:none !important;
}
.sd-production-summary .sd-production-table td.sd-remove-column button.sd-cart-summary-remove:hover,
.sd-production-summary .sd-production-table td.sd-remove-column button.sd-cart-summary-remove:focus{
    background:#b42318 !important;
    border-color:#8f1d18 !important;
    color:#fff !important;
    transform:none !important;
}


/* v2.3.31: cart-summary footer action */
.sd-summary-cart-action{margin-top:18px;text-align:right}
@media(max-width:767px){.sd-summary-cart-action{text-align:left}}


/* v2.3.33: compact mobile production summary; headers stay on one line, Notes may wrap. */
@media(max-width:767px){
 .sd-production-summary .sd-production-table th{white-space:nowrap!important}
 .sd-production-summary .sd-production-table td:not([data-label="Notes"]){white-space:nowrap}
}

/* v2.3.34: editable cart quantity in configurator summary. */
.sd-production-summary .sd-cart-summary-qty{
    width:58px!important;
    min-width:58px!important;
    max-width:58px!important;
    height:34px!important;
    min-height:34px!important;
    padding:4px 6px!important;
    margin:0!important;
    border:1px solid #cfcac0!important;
    border-radius:4px!important;
    background:#fff!important;
    color:inherit!important;
    font:inherit!important;
    line-height:1.2!important;
    text-align:center!important;
    box-sizing:border-box!important;
}
.sd-production-summary .sd-cart-summary-qty:focus{border-color:#f19429!important;outline:2px solid rgba(241,148,41,.22)!important;outline-offset:1px}
.sd-production-summary .sd-cart-summary-qty:disabled,.sd-production-summary .sd-cart-summary-qty.is-loading{opacity:.55;cursor:wait}
@media(max-width:767px){
 .sd-production-summary .sd-cart-summary-qty{width:50px!important;min-width:50px!important;max-width:50px!important;height:30px!important;min-height:30px!important;padding:2px 4px!important}
}


/* v2.3.35: vertically centre production-summary rows for uniform alignment with editable quantity controls. */
.sd-production-summary .sd-production-table th,
.sd-production-summary .sd-production-table td{vertical-align:middle!important}

/* v2.3.36: desktop summary layout. */
@media(min-width:768px){
 .sd-production-summary .sd-production-table{width:100%;table-layout:auto}
 .sd-production-summary .sd-production-table th{white-space:nowrap!important}
 .sd-production-summary .sd-production-table td:not([data-label="Notes"]){white-space:nowrap!important}
 .sd-production-summary .sd-production-table th,.sd-production-summary .sd-production-table td{padding-left:10px;padding-right:10px}
 .sd-production-summary .sd-production-table td[data-label="Notes"]{width:34%;min-width:280px;white-space:normal!important;overflow-wrap:anywhere;word-break:normal}
}


/* v2.3.37: Project List navigation and footer actions. */
.sd-cart-actions [data-cart-message] .sd-view-project-list{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    min-height:36px!important;
    height:auto!important;
    margin-left:8px!important;
    padding:6px 14px!important;
    vertical-align:middle!important;
    line-height:1.2!important;
    text-decoration:none!important;
}
.sd-summary-cart-action{
    display:flex;
    justify-content:flex-end;
    align-items:center;
    gap:10px;
    flex-wrap:wrap;
}
.sd-summary-cart-action .button{
    margin:0!important;
}
@media(max-width:767px){
    .sd-cart-actions [data-cart-message] .sd-view-project-list{
        margin-left:0!important;
        margin-top:8px!important;
    }
    .sd-summary-cart-action{
        justify-content:flex-start;
    }
}


/* v2.3.39: Prevent View Cart / Checkout navigation while summary edits are syncing. */
.sd-summary-cart-action .button.is-cart-sync-pending,
.sd-summary-cart-action .button[aria-disabled="true"]{
    opacity:.5!important;
    cursor:not-allowed!important;
    pointer-events:none!important;
    filter:grayscale(.2);
}

/* ==========================================================
 * v2.3.51 Tablet portrait containment
 * - Switch the fixed desktop two-column configurator to one column
 *   before 1024px portrait tablets can overflow.
 * - Keep the Project List / Production Table inside its own width
 *   and horizontally scroll it, matching the mobile behaviour.
 * ========================================================== */
@media (max-width:1100px){
  .sd-dc,
  .sd-dc-layout,
  .sd-dc-form,
  .sd-cart-summary-container,
  .sd-production-summary,
  .sd-production-group,
  .sd-production-table-wrap{
    width:100%;
    max-width:100%;
    min-width:0;
  }

  .sd-dc-layout{
    grid-template-columns:minmax(0,1fr);
  }

  .sd-production-table-wrap{
    display:block;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior-x:contain;
  }

  .sd-production-summary .sd-production-table{
    width:max-content;
    min-width:100%;
    max-width:none;
    table-layout:auto;
  }

  .sd-production-summary .sd-production-table th,
  .sd-production-summary .sd-production-table td:not([data-label="Notes"]){
    white-space:nowrap!important;
  }

  .sd-production-summary .sd-production-table td[data-label="Notes"]{
    width:220px;
    min-width:180px;
    max-width:260px;
    white-space:normal!important;
    overflow-wrap:anywhere;
    word-break:normal;
  }
}


/* v2.3.56 child-product gallery navigation */
.sd-image-zoom-nav{
    position:absolute;
    top:50%;
    width:44px;
    height:52px;
    padding:0;
    border:1px solid rgba(0,0,0,.28);
    border-radius:8px;
    background:rgba(255,255,255,.94);
    color:#222;
    font-size:28px;
    line-height:1;
    cursor:pointer;
    z-index:2;
    transform:translateY(-50%);
    box-shadow:0 3px 12px rgba(0,0,0,.18);
}
.sd-image-zoom-prev{left:28px}
.sd-image-zoom-next{right:28px}
.sd-image-zoom-nav:hover,
.sd-image-zoom-nav:focus-visible{
    border-color:#f19429;
    outline:2px solid rgba(241,148,41,.32);
}
.sd-image-zoom-counter{
    min-height:18px;
    margin-top:3px;
    font-size:12px;
    text-align:center;
    color:#666;
}
@media (max-width:620px){
    .sd-image-zoom-nav{width:38px;height:46px;font-size:24px}
    .sd-image-zoom-prev{left:18px}
    .sd-image-zoom-next{right:18px}
}

/* v2.3.60: show arithmetic guide when hovering directly over supported inputs */
.sd-math-hover {
  position: relative;
  display: block;
}
.sd-math-hover::after {
  content: attr(data-tooltip);
  position: absolute;
  z-index: 1000;
  left: 50%;
  bottom: calc(100% + 8px);
  width: max-content;
  max-width: min(300px, 80vw);
  padding: 8px 10px;
  border-radius: 5px;
  background: #222;
  color: #fff;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.4;
  text-align: left;
  white-space: normal;
  box-shadow: 0 2px 8px rgba(0,0,0,.18);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate(-50%, 2px);
  transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
}
.sd-math-hover::before {
  content: "";
  position: absolute;
  z-index: 1001;
  left: 50%;
  bottom: calc(100% + 3px);
  border: 5px solid transparent;
  border-top-color: #222;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateX(-50%);
}
@media (hover: hover) and (pointer: fine) {
  .sd-math-hover:hover::after,
  .sd-math-hover:hover::before {
    opacity: 1;
    visibility: visible;
  }
  .sd-math-hover:hover::after {
    transform: translate(-50%, 0);
  }
}

/* ==========================================================
 * v2.3.62 Tablet portrait sticky preview
 * - v2.3.51 moves tablets up to 1100px into the one-column layout.
 * - v2.2.34 sticky preview stopped at 950px, leaving 951-1100px
 *   portrait tablets without the sticky renderer.
 * - Extend the same sticky preview behaviour only to that portrait gap.
 * ========================================================== */
@media (orientation:portrait) and (min-width:951px) and (max-width:1100px){
  .sd-preview-wrap{
    display:contents;
  }

  .sd-preview-visual{
    order:-1;
    position:sticky;
    top:8px;
    z-index:30;
    margin:0 0 12px;
    padding:10px;
    background:#F4F5F6;
    border:2px solid #c8ccce;
    border-radius:10px;
    text-align:center;
  }

  .sd-preview-visual h3{
    margin:0 0 7px;
    font-size:15px;
    line-height:1.2;
  }

  .sd-preview-visual canvas{
    width:auto;
    max-width:100%;
    height:auto;
    max-height:260px;
    margin:0 auto;
  }

  .sd-preview-price-panel{
    order:1;
    margin:0;
    padding:15px;
    background:#F4F5F6;
    border:2px solid #c8ccce;
    border-radius:10px;
  }
}

/* ==========================================================
 * v2.4.0 Compact purchase panel
 * - Qty and Price remain on one compact row.
 * - Qty is directly editable with minus/plus buttons.
 * - Detailed component pricing appears after Add to Cart.
 * - No renderer/grid/tablet layout changes from v2.3.62.
 * ========================================================== */
.sd-preview-price-panel .sd-qty-price{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  width:100%;
}

.sd-preview-price-panel .sd-qty-label{
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  flex:0 0 auto!important;
  margin:0!important;
  white-space:nowrap;
  font-size:13px;
  line-height:1;
}

.sd-preview-price-panel .sd-qty-stepper{
  display:inline-flex;
  align-items:center;
  gap:4px;
}

.sd-preview-price-panel .sd-qty-stepper input[data-field="quantity"]{
  width:50px!important;
  min-width:50px!important;
  max-width:50px!important;
  height:34px!important;
  min-height:34px!important;
  margin:0!important;
  padding:4px 5px!important;
  text-align:center;
}

.sd-preview-price-panel .sd-qty-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:30px;
  min-width:30px;
  height:34px;
  min-height:34px;
  margin:0;
  padding:0;
  border:1px solid #cfcac2;
  border-radius:6px;
  background:#fff;
  color:inherit;
  font:inherit;
  font-size:18px;
  font-weight:600;
  line-height:1;
  cursor:pointer;
}

.sd-preview-price-panel .sd-qty-btn:hover{background:#f7f5f1;}
.sd-preview-price-panel .sd-qty-btn:active{transform:translateY(1px);}

.sd-preview-price-panel .sd-price{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:7px!important;
  flex:0 1 auto!important;
  min-width:0!important;
  margin:0!important;
  padding:7px 10px!important;
  border-radius:8px!important;
}

.sd-preview-price-panel .sd-price>span{
  font-size:12px!important;
  line-height:1!important;
}

.sd-preview-price-panel .sd-price>strong{
  font-size:24px!important;
  line-height:1.05!important;
}

.sd-preview-price-panel .sd-price-status{
  margin-top:6px!important;
  margin-bottom:6px!important;
}

.sd-preview-price-panel .sd-cart-actions{
  margin-top:8px!important;
}

.sd-preview-price-panel .sd-cart-actions .button[data-add-to-cart]{
  width:100%;
}

.sd-preview-price-panel .sd-breakdown{
  margin-top:10px!important;
  padding-top:9px;
  border-top:1px solid var(--border);
  gap:5px 10px!important;
  font-size:11px!important;
  line-height:1.35;
}

@media(max-width:620px){
  .sd-preview-price-panel .sd-qty-price{
    display:flex!important;
    gap:8px!important;
  }

  .sd-preview-price-panel .sd-qty-label{
    gap:5px!important;
    font-size:12px;
  }

  .sd-preview-price-panel .sd-qty-stepper{
    gap:3px;
  }

  .sd-preview-price-panel .sd-qty-stepper input[data-field="quantity"]{
    width:44px!important;
    min-width:44px!important;
    max-width:44px!important;
    height:32px!important;
    min-height:32px!important;
  }

  .sd-preview-price-panel .sd-qty-btn{
    width:28px;
    min-width:28px;
    height:32px;
    min-height:32px;
    font-size:17px;
  }

  .sd-preview-price-panel .sd-price{
    gap:5px!important;
    padding:6px 8px!important;
  }

  .sd-preview-price-panel .sd-price>span{
    font-size:11px!important;
  }

  .sd-preview-price-panel .sd-price>strong{
    font-size:21px!important;
  }
}

/* ==========================================================
 * v2.4.3 Fluid renderer sizing + compact preview header
 * - Canvas scales fluidly with the right-pane width.
 * - Preserve the rendered door's natural aspect ratio.
 * - Cap display height to prevent tall previews from pushing
 *   Qty / Price / Add to Cart too far down.
 * - Keep the pane structure in normal document flow.
 * ========================================================== */

/* Compact the preview heading and reclaim vertical space. */
.sd-preview-wrap > h3,
.sd-preview-visual > h3{
  margin:0 0 5px!important;
  padding:0!important;
  font-size:15px!important;
  line-height:1.1!important;
}

/* Slightly tighter preview container padding without changing layout structure. */
.sd-preview-wrap{
  padding-top:12px!important;
  padding-bottom:12px!important;
}

/* Fluid canvas envelope for two-column/floating preview layouts. */
@media (min-width:951px){
  .sd-preview-wrap canvas,
  .sd-preview-visual canvas{
    display:block;
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    max-height:min(45vh, 500px)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    object-fit:contain;
  }
}


/* v3.0.21: preserve renderer aspect ratio on tablet landscape.
   The general desktop rule forces width:100% while also capping height;
   on landscape tablets that can distort the canvas after viewport settling. */
@media (min-width:951px) and (max-width:1366px) and (orientation:landscape){
  .sd-preview-wrap canvas,
  .sd-preview-visual canvas{
    width:auto!important;
    max-width:100%!important;
    height:auto!important;
    max-height:min(45vh, 500px)!important;
  }
}

/* Keep existing mobile/tablet portrait behaviour untouched. */
@media (max-width:950px), (orientation:portrait) and (max-width:1100px){
  .sd-preview-wrap{
    padding-top:12px!important;
    padding-bottom:12px!important;
  }
}



/* v3.0.16: simple theme-button navigation. */
.sd-flow-progress{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:8px;
  margin:0 0 12px;
  position:sticky;
  top:0;
  z-index:8;
  background:rgba(255,255,255,.96);
  padding:6px 0 8px;
  backdrop-filter:blur(8px);
}
.sd-flow-progress button.button{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-width:0;
  min-height:38px;
  margin:0;
  padding:7px 10px;
  border-radius:8px!important;
  font:inherit;
  font-weight:800;
  line-height:1.2;
  cursor:pointer;
  white-space:nowrap;
  text-align:center;
  background:var(--theme-button-background-initial-color);
  color:var(--theme-button-text-initial-color);
  border:1px solid var(--theme-button-background-initial-color);
  box-shadow:none;
}
.sd-flow-progress button.button:hover,
.sd-flow-progress button.button:focus-visible{
  background:var(--theme-button-background-hover-color);
  color:var(--theme-button-text-hover-color);
  border-color:var(--theme-button-background-hover-color);
}
.sd-flow-progress button.button.is-current{
  background:var(--theme-button-background-hover-color);
  color:var(--theme-button-text-hover-color);
  border-color:var(--theme-button-background-hover-color);
}
.sd-flow-progress button.button.is-complete{
  background:var(--theme-button-background-initial-color);
  color:var(--theme-button-text-initial-color);
  border-color:var(--theme-button-background-initial-color);
}
@media(max-width:1024px){
  .sd-flow-progress{
    position:static;
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .sd-flow-progress button.button{white-space:normal;}
}
@media(max-width:520px){
  .sd-flow-progress{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:6px;
  }
  .sd-flow-progress button.button{
    min-height:36px;
    padding:6px 5px;
    font-weight:800;
  }
  .sd-dc-form section{scroll-margin-top:12px}
}

.sd-advanced-toggle{width:100%;margin-top:15px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#f8f7f4;text-align:left;font:inherit;font-size:13px;font-weight:700;cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.sd-advanced-toggle span{transition:transform .2s ease}.sd-advanced-toggle[aria-expanded="true"] span{transform:rotate(180deg)}
.sd-advanced-hinges{max-height:0;opacity:0;overflow:hidden;pointer-events:none;transition:max-height .25s ease,opacity .2s ease}.sd-advanced-hinges.is-open{max-height:800px;opacity:1;pointer-events:auto;padding-bottom:2px}
.sd-live-summary{margin:10px 0 0;padding:9px 10px;border-radius:8px;background:var(--soft);font-size:11px;line-height:1.45;text-align:left;color:#555}.sd-live-summary strong{color:#242424}
.sd-preview-visual>h3{font-size:16px!important;margin-bottom:8px!important}
@media(max-width:960px){.sd-flow-progress{position:static;grid-template-columns:repeat(3,minmax(0,1fr))}.sd-flow-progress button{white-space:normal}}
@media(max-width:520px){.sd-flow-progress{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.sd-flow-progress button{font-size:10px}.sd-dc-form section{scroll-margin-top:12px}}



/* v3.0.16: simplified section navigation from v3.0.16 baseline.
   Plain rounded buttons, no circle/chevron, centred bold text.
   Mobile uses 3 columns. */
.sd-flow-progress{
  display:grid!important;
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
  gap:8px!important;
  width:100%!important;
}

.sd-flow-progress button.button,
.sd-flow-progress button.button:hover,
.sd-flow-progress button.button:focus,
.sd-flow-progress button.button:active,
.sd-flow-progress button.button.is-current,
.sd-flow-progress button.button.is-complete{
  position:relative!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  min-width:0!important;
  min-height:38px!important;
  height:auto!important;
  padding:7px 10px!important;
  margin:0!important;
  border-radius:8px!important;
  text-align:center!important;
  font-weight:800!important;
  line-height:1.2!important;
  box-shadow:none!important;
  text-shadow:none!important;
}

.sd-flow-progress button.button::before,
.sd-flow-progress button.button::after{
  content:none!important;
  display:none!important;
  width:0!important;
  height:0!important;
  border:0!important;
  background:none!important;
  box-shadow:none!important;
}

@media (max-width:1024px){
  .sd-flow-progress{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:8px!important;
  }
}

@media (max-width:480px){
  .sd-flow-progress{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:6px!important;
  }
  .sd-flow-progress button.button,
  .sd-flow-progress button.button:hover,
  .sd-flow-progress button.button:focus,
  .sd-flow-progress button.button:active{
    min-height:36px!important;
    padding:6px 5px!important;
    font-weight:800!important;
    text-align:center!important;
  }
}


/* v3.0.16: return navigation labels to regular font weight. */
.sd-flow-progress button.button,
.sd-flow-progress button.button:hover,
.sd-flow-progress button.button:focus,
.sd-flow-progress button.button:active,
.sd-flow-progress button.button.is-current,
.sd-flow-progress button.button.is-complete{
  font-weight:400!important;
}

/* v3.0.18: keep section navigation visible beside the sticky renderer on
   mobile and portrait tablet. JS relocates the existing navigation into the
   renderer only at these responsive widths, so there is still a single set
   of working navigation buttons. */
@media (max-width:950px), (orientation:portrait) and (min-width:951px) and (max-width:1100px){
  .sd-preview-visual.has-floating-flow-nav{
    padding-right:112px!important;
  }

  .sd-preview-visual .sd-flow-progress.is-renderer-nav{
    position:absolute!important;
    top:36px!important;
    right:8px!important;
    left:auto!important;
    z-index:36!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:4px!important;
    width:96px!important;
    margin:0!important;
    padding:5px!important;
    background:rgba(255,255,255,.94)!important;
    border:1px solid rgba(0,0,0,.10)!important;
    border-radius:9px!important;
    box-shadow:0 2px 8px rgba(0,0,0,.08)!important;
    backdrop-filter:blur(6px);
  }

  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button,
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button:hover,
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button:focus,
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button:active,
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button.is-current,
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button.is-complete{
    min-height:27px!important;
    padding:4px 5px!important;
    border-radius:6px!important;
    font-size:10px!important;
    font-weight:400!important;
    line-height:1.1!important;
    white-space:nowrap!important;
  }

  .sd-preview-visual.has-floating-flow-nav canvas{
    max-width:100%!important;
  }
}

@media (max-width:420px){
  .sd-preview-visual.has-floating-flow-nav{
    padding-right:98px!important;
  }
  .sd-preview-visual .sd-flow-progress.is-renderer-nav{
    width:84px!important;
    right:6px!important;
    padding:4px!important;
  }
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button,
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button:hover,
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button:focus,
  .sd-preview-visual .sd-flow-progress.is-renderer-nav button.button:active{
    min-height:25px!important;
    padding:3px 4px!important;
    font-size:9px!important;
  }
}


/* v3.0.19 navigation hover and renderer note refinements. */
@media (hover:hover) and (pointer:fine){
  .sd-flow-progress button.button:hover{
    background:#f58245!important;
    border-color:#f58245!important;
    color:#fff!important;
  }
}
.sd-render-view-note{margin:8px 0 2px!important;text-align:left;font-size:11px!important;line-height:1.4!important;}


/* v3.2.1: Size note placement and renderer contextual help. */
.sd-size-note{
  margin-top:10px;
  margin-bottom:0;
}

.sd-preview-hover-note{
  position:absolute;
  left:12px;
  right:12px;
  top:46px;
  z-index:50;
  padding:9px 10px;
  border:1px solid rgba(0,0,0,.14);
  border-radius:8px;
  background:rgba(255,255,255,.96);
  box-shadow:0 3px 12px rgba(0,0,0,.14);
  color:#555;
  font-size:11px;
  line-height:1.4;
  text-align:left;
  opacity:0;
  visibility:hidden;
  transform:translateY(-3px);
  transition:opacity .14s ease, transform .14s ease, visibility .14s ease;
  pointer-events:none;
}
.sd-preview-hover-note.is-visible{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}
.sd-preview-hover-note strong{
  color:var(--text);
  font-weight:650;
}

/* Raise Zoom clear of the live summary/description at the bottom of Render View. */
.sd-preview-zoom-button{
  bottom:64px!important;
}

@media(max-width:620px){
  .sd-preview-hover-note{
    left:8px;
    right:8px;
    top:40px;
    padding:8px 9px;
    font-size:10px;
  }
  .sd-preview-zoom-button{
    bottom:60px!important;
  }
}


/* v3.2.1: restore visible filtering for Laminated (Polytec) colour search. */
.sd-colour-options button.sd-colour-filtered{
  display:none!important;
}

/* v3.3.4 Edit Item trial */
.sd-production-table th.sd-remove-column,
.sd-production-table td.sd-remove-column{
  width:auto;
  min-width:104px;
  white-space:nowrap;
}
.sd-cart-summary-edit{
  display:inline-block;
  width:auto;
  min-width:0;
  margin:0 5px 0 0;
  padding:4px 8px;
  border:1px solid #cfcac2;
  border-radius:4px;
  background:#fff;
  color:#333;
  font-family:inherit;
  font-size:11px;
  font-weight:650;
  line-height:1.2;
  cursor:pointer;
  box-shadow:none;
}
.sd-cart-summary-edit:hover,
.sd-cart-summary-edit:focus{
  border-color:#f19429;
  background:#fff7ef;
  outline:0;
}
.sd-cancel-edit[hidden]{display:none!important}

/* v3.3.6: stable mobile renderer viewport.
   Keep the sticky Render View dimensions independent of the selected product's
   canvas aspect ratio. Bar Panel can use a wide internal canvas, but it is
   letterboxed/centred inside the same fixed display stage as doors and panels. */
.sd-preview-canvas-stage{
  position:relative;
  width:100%;
  max-width:100%;
}

/* Zoom now belongs to the renderer stage, not to the full sticky panel/live summary. */
.sd-preview-canvas-stage .sd-preview-zoom-button{
  bottom:10px!important;
}

@media (max-width:950px){
  .sd-preview-canvas-stage{
    height:260px;
    min-height:260px;
  }

  .sd-preview-canvas-stage canvas,
  .sd-dc.is-bar-panel .sd-preview-canvas-stage canvas{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    height:100%!important;
    max-height:none!important;
    margin:0 auto!important;
    object-fit:contain!important;
  }

  /* The stage contributes a fixed amount to the sticky shell. The live summary
     may add height below it, but switching product types cannot make it shorter. */
  .sd-preview-visual{
    min-height:0!important;
  }
}

@media (max-width:620px){
  .sd-preview-canvas-stage{
    height:210px;
    min-height:210px;
  }
}

/* Match the existing portrait-tablet sticky renderer behaviour. */
@media (orientation:portrait) and (min-width:951px) and (max-width:1100px){
  .sd-preview-canvas-stage{
    height:260px;
    min-height:260px;
  }
  .sd-preview-canvas-stage canvas,
  .sd-dc.is-bar-panel .sd-preview-canvas-stage canvas{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    height:100%!important;
    max-height:none!important;
    margin:0 auto!important;
    object-fit:contain!important;
  }
}

/* v3.4 Glass Frame test UI */
.sd-glass-frame-types .sd-image-placeholder{display:flex;align-items:center;justify-content:center;min-height:110px;background:#f5f5f5;border:1px dashed #bbb;font-size:12px;color:#777;padding:8px;text-align:center}
[data-radio="glass_type"] button small{display:block;font-size:11px;opacity:.75;margin-top:2px}


/* v3.4.22: preserve renderer aspect ratio on first paint in mobile/tablet portrait.
   A fixed-height stage must not force both canvas dimensions to 100%, otherwise
   the intrinsic 500x700 door renderer is stretched until another redraw occurs. */
@media (max-width:950px), (orientation:portrait) and (min-width:951px) and (max-width:1100px){
  .sd-preview-canvas-stage canvas:not(.sd-bar-panel-canvas),
  .sd-dc:not(.is-bar-panel) .sd-preview-canvas-stage canvas{
    width:auto!important;
    max-width:100%!important;
    height:100%!important;
    max-height:100%!important;
    margin:0 auto!important;
    object-fit:contain!important;
  }

  /* Bar Panel has a deliberately horizontal internal canvas. Fit it by width
     inside the same stable stage without stretching its bitmap. */
  .sd-dc.is-bar-panel .sd-preview-canvas-stage canvas{
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    max-height:100%!important;
    margin:auto!important;
    object-fit:contain!important;
  }
}

/* v4.0.0 Cabinet System -> Product Type hierarchy */
.sd-v4-legacy-fields{display:none!important}
.sd-v4-cabinet-choice{grid-template-columns:repeat(3,minmax(0,1fr))}
.sd-v4-product-choice{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.sd-v4-product-choice .sd-v4-product-group-label{grid-column:1/-1;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.72;margin:8px 0 -2px}
.sd-v4-product-choice button{display:flex;min-height:50px;align-items:center;justify-content:flex-start;text-align:left}
.sd-v4-product-choice button b{font-size:14px}
.sd-v4-cabinet-help,[data-manufacturer-preset-help]{display:block;margin-top:7px;opacity:.75}
.sd-v4-product-help{display:none!important}
.sd-v4-preset-select{width:100%;max-width:620px}
.sd-v4-preset-field:not([hidden]){display:block}
[data-v4-preset-locked="1"]{background:rgba(0,0,0,.035);font-weight:600}
@media(max-width:950px){.sd-v4-cabinet-choice,.sd-v4-product-choice{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.sd-v4-cabinet-choice,.sd-v4-product-choice{grid-template-columns:repeat(2,minmax(0,1fr))}.sd-v4-product-choice button{min-height:46px;padding:8px}}


/* v4.1.51: make Manufacturer Preset visibly identifiable as a dropdown */
.sd-v4-preset-select{
    -webkit-appearance:none;
    -moz-appearance:none;
    appearance:none;
    cursor:pointer;
    padding-right:38px !important;
    background-color:#fff;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8' viewBox='0 0 14 8'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23555' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat;
    background-position:right 12px center;
    background-size:14px 8px;
}
.sd-v4-preset-select:hover,
.sd-v4-preset-select:focus{
    border-color:#f19429;
}
@media(max-width:620px){
    .sd-v4-preset-select{
        padding-right:28px !important;
        background-position:right 8px center;
        background-size:12px 7px;
    }
}


/* v4.1.51: visible dropdown indicator for all Manufacturer Preset selectors */
.sd-dc .sd-v4-preset-select{
    -webkit-appearance:none !important;
    -moz-appearance:none !important;
    appearance:none !important;
    cursor:pointer;
    padding-right:40px !important;
    background-color:#fff;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8' viewBox='0 0 14 8'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23555' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    background-repeat:no-repeat !important;
    background-position:right 12px center !important;
    background-size:14px 8px !important;
}
.sd-dc .sd-v4-preset-select:hover,
.sd-dc .sd-v4-preset-select:focus{
    border-color:#f19429;
}
@media(max-width:620px){
    .sd-dc .sd-v4-preset-select{
        padding-right:30px !important;
        background-position:right 9px center !important;
        background-size:12px 7px !important;
    }
}


/* v4.1.51: Product Type uses the configurator's standard choice-button behaviour.
   Natural flex wrapping replaces the special fixed 3/2-column product grid. */
.sd-dc .sd-v4-product-choice{
    display:flex;
    flex-wrap:wrap;
    align-items:flex-start;
    gap:8px;
    margin-top:7px;
    grid-template-columns:none;
}
.sd-dc .sd-v4-product-choice .sd-v4-product-group-label{
    flex:0 0 100%;
    width:100%;
    margin:8px 0 0;
    font-size:12px;
    font-weight:700;
    letter-spacing:.04em;
    text-transform:uppercase;
    opacity:.72;
}
.sd-dc .sd-v4-product-choice button{
    display:inline-flex;
    flex:0 1 auto;
    width:auto;
    min-width:0;
    min-height:0;
    align-items:center;
    justify-content:center;
    text-align:center;
    white-space:normal;
    border:1px solid #8f969a;
    background:#F4F5F6;
    border-radius:8px;
    padding:10px 14px !important;
    cursor:pointer;
    color:inherit;
    font:inherit;
    line-height:1.25;
}
.sd-dc .sd-v4-product-choice button b{
    display:inline;
    font:inherit;
    font-weight:inherit;
}
.sd-dc .sd-v4-product-choice button:hover{
    border-color:#666d71;
}
.sd-dc .sd-v4-product-choice button.is-active{
    background:#f19429;
    border:2px solid #d97c00;
    color:#fff;
    font-weight:600;
    box-shadow:none;
    padding:9px 13px !important;
}
.sd-dc .sd-v4-product-choice button.is-active:focus-visible{
    outline:2px solid #242424;
    outline-offset:2px;
}
@media(max-width:620px){
    .sd-dc .sd-v4-product-choice{
        gap:8px;
    }
    .sd-dc .sd-v4-product-choice button,
    .sd-dc .sd-v4-product-choice button.is-active{
        min-height:0;
        width:auto;
        flex:0 1 auto;
        padding:8px 10px !important;
        font-size:inherit;
    }
    .sd-dc .sd-v4-product-choice .sd-v4-product-group-label{
        margin-top:6px;
    }
}

/* v4.1.51 Material / Finish descriptions */
.sd-v4-material-descriptions{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin-top:9px;
}
.sd-v4-material-descriptions p{
  margin:0;
  padding:9px 10px;
  border:1px solid var(--border);
  border-radius:8px;
  background:rgba(255,255,255,.55);
  font-size:12px;
  line-height:1.4;
}
@media(max-width:620px){
  .sd-v4-material-descriptions{grid-template-columns:1fr;gap:7px}
  .sd-v4-material-descriptions p{padding:8px 9px}
}

/* v4.1 Drawer Front Configurator */
.sd-drawer-set{margin-top:14px;padding:14px;border:1px solid var(--border);border-radius:10px}
.sd-drawer-set-head{display:flex;flex-direction:column;gap:3px;margin-bottom:10px}
.sd-drawer-set-head span{font-size:12px;opacity:.78}
.sd-drawer-heights{display:grid;gap:7px}
.sd-drawer-row{display:grid;grid-template-columns:minmax(80px,.7fr) minmax(150px,1fr) auto;gap:8px;align-items:end}
.sd-drawer-row>span{font-weight:600;padding-bottom:9px}
.sd-drawer-row label{margin:0}
.sd-drawer-row input{width:100%}
.sd-drawer-row .button{min-height:38px}
.sd-drawer-add{margin-top:9px}
.sd-drawer-total{margin-top:10px}
.sd-drawer-routing-field{margin-top:14px}
@media(max-width:620px){
 .sd-drawer-row{grid-template-columns:1fr auto}
 .sd-drawer-row>span{grid-column:1/-1;padding:0}
 .sd-drawer-row label{min-width:0}
}

/* v4.1.51 Drawer mode-first flow */
.sd-drawer-mode{margin-bottom:12px}
.sd-drawer-sizes-title{display:flex;flex-direction:column;gap:2px;margin:12px 0 8px}
.sd-drawer-sizes-title span{font-size:12px;opacity:.78}

/* v4.1.51 individual manufacturer presets for Drawer Sets */
.sd-drawer-row:has([data-drawer-preset]){grid-template-columns:minmax(72px,.55fr) minmax(230px,1.6fr) minmax(120px,.75fr) auto}
.sd-drawer-preset-label select{width:100%;min-height:38px}
@media(max-width:760px){
 .sd-drawer-row:has([data-drawer-preset]){grid-template-columns:1fr}
 .sd-drawer-row:has([data-drawer-preset])>span{grid-column:1}
}

/* v4.1.51 Drawer Set validation targeting */
.sd-drawer-validation-error{
  outline:2px solid currentColor;
  outline-offset:2px;
}

/* v4.1.51 Manufacturer Presets: width group first, filtered sizes second */
.sd-v4-preset-group{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(280px,1.4fr);gap:12px;align-items:end}
.sd-v4-preset-group[hidden]{display:none!important}
@media(max-width:760px){.sd-v4-preset-group{grid-template-columns:1fr}}


/* v4.1.51 Manufacturer Corner & Bi-fold: restricted real cabinet pairs */
.sd-v4-corner-preset-group{display:grid;grid-template-columns:minmax(260px,1fr);gap:12px;max-width:720px}
.sd-v4-corner-preset-group[hidden]{display:none!important}


/* v4.1.51 Project List actions + running total */
@media(min-width:768px){
  .sd-production-summary .sd-production-table td[data-label="Notes"]{
    width:18%!important;
    min-width:150px!important;
    max-width:220px!important;
  }
}
.sd-production-summary .sd-remove-column{
  white-space:nowrap!important;
  width:1%!important;
  min-width:205px!important;
}

/* Duplicate deliberately mirrors Edit. */
.sd-production-summary .sd-cart-summary-edit,
.sd-production-summary .sd-cart-summary-duplicate{
  -webkit-appearance:none;
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:auto;
  min-width:0;
  min-height:0;
  margin:2px;
  padding:4px 8px;
  border:1px solid #cfcac2;
  border-radius:4px;
  background:#fff;
  background-image:none;
  color:#333;
  font-family:inherit;
  font-size:11px;
  font-weight:650;
  line-height:1.2;
  cursor:pointer;
  box-shadow:none;
  transition:background .15s ease,border-color .15s ease,opacity .15s ease;
}
.sd-production-summary .sd-cart-summary-edit:hover,
.sd-production-summary .sd-cart-summary-edit:focus,
.sd-production-summary .sd-cart-summary-duplicate:hover,
.sd-production-summary .sd-cart-summary-duplicate:focus{
  border-color:#f19429;
  background:#fff7ef;
  color:#333;
  outline:0;
}
.sd-production-summary .sd-cart-summary-edit:disabled,
.sd-production-summary .sd-cart-summary-duplicate:disabled,
.sd-production-summary .sd-cart-summary-edit.is-loading,
.sd-production-summary .sd-cart-summary-duplicate.is-loading{
  opacity:.5;
  cursor:wait;
}

.sd-project-running-total{
  margin-top:18px;
  padding:12px 14px;
  border-top:2px solid rgba(0,0,0,.12);
  display:flex;
  justify-content:flex-end;
  align-items:baseline;
  gap:18px;
  font-size:15px;
}
.sd-project-running-total span{font-weight:650}
.sd-project-running-total strong{font-size:18px}
.sd-project-running-total small{font-size:11px;font-weight:500;opacity:.68}

@media(max-width:767px){
  .sd-production-summary .sd-remove-column{min-width:205px!important}
  .sd-project-running-total{justify-content:space-between}
}
