/* _content/Chassis.UI.Common.Blazor/FormComponents/ChassisButtonSpinner.razor.rz.scp.css */
.chassisButtonSpinner.animate[b-rytyz7ls6d] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.chassisButtonSpinner.animate button[b-rytyz7ls6d], 
.chassisButtonSpinner.animate .btn[b-rytyz7ls6d] {
    transition: .25s;
    color: transparent !important;
}
/* _content/Chassis.UI.Common.Blazor/FormComponents/ChassisComboBox.razor.rz.scp.css */
.chassisComboBox-dropdown-menu[b-ljhmbkayrc] {
    width: 100%;
    max-height:200px; 
    overflow:auto;
}
.chassisComboBox input[b-ljhmbkayrc]{
    font-weight: 600; 
}

.chassisComboBox-dropdown-menu.dropdown-menu.show[b-ljhmbkayrc] {
    display: grid!important;
    width: 100%;
    overflow: auto;
    max-height: 200px;
}

.chassisComboBox i[b-ljhmbkayrc] {
    position: absolute;
    right: 14px;
    top: 19px;
    color: black;
    font-weight: 400;
    font-size: 13px;
}

.chassisComboBox-dropdown-item[b-ljhmbkayrc] {
    padding: 0 .75em;
    color: var(--bs-gray-600);
}

.chassisComboBox-dropdown-item.highlighted[b-ljhmbkayrc] {
    background-color: #1967d2;
    color: white;
}
/* _content/Chassis.UI.Common.Blazor/ImageUploader.razor.rz.scp.css */
/* Positioning context for per-photo absolutely-positioned overlays on the
   thumbnail strip (loading indicator, action controls). The AI
   badges were removed; state is shown via icon controls on the editing
   surfaces, not text pills here. */

[b-7qmbsl3y7w] .product-img-wrap {
    position: relative;
}

/* Working-set tile image box: uniform 4:3 across the grid, showing the whole
   image (no crop). Off-aspect/vertical uploads letterbox inside the box instead
   of stretching the tile or getting cropped. */
[b-7qmbsl3y7w] .img-wrapper {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--bs-tertiary-bg, #f8f9fa);
}

[b-7qmbsl3y7w] .img-wrapper img.img-fluid {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.video-tile[b-7qmbsl3y7w] {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    background: #5a666f;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

/* Outweighs `.img-wrapper img.img-fluid` (0,2,1), which forced object-fit: contain on the 16:9 poster. */
.video-tile img.video-tile__poster[b-7qmbsl3y7w] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: brightness(0.72);
}

.video-tile__kind[b-7qmbsl3y7w] {
    position: absolute;
    top: 4px;
    left: 4px;
    background: var(--ac-charcoal, #39444d);
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.04em;
    padding: 2px 5px;
    border-radius: 2px;
}

.video-tile__kind--linked[b-7qmbsl3y7w] {
    background: var(--ac-primary, #3b7094);
}

.video-tile__linked[b-7qmbsl3y7w] {
    position: absolute;
    bottom: 4px;
    left: 4px;
    background: var(--ac-charcoal, #39444d);
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 2px;
    display: inline-flex;
    align-items: center;
}

.video-tile__play[b-7qmbsl3y7w] {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 12px;
    position: relative;
}

.video-tile__duration[b-7qmbsl3y7w] {
    position: absolute;
    bottom: 3px;
    right: 3px;
    background: rgba(0, 0, 0, 0.7);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 4px;
    border-radius: 2px;
}

.video-tile__overlay[b-7qmbsl3y7w] {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    background: rgba(21, 25, 28, 0.62);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
}

.video-tile__overlay--failed[b-7qmbsl3y7w] {
    color: var(--ac-yellow, #f9da49);
}

.video-tile__failedMessage[b-7qmbsl3y7w] {
    font-weight: 400;
    font-size: 10px;
    line-height: 1.3;
    text-align: center;
    padding: 0 8px;
    color: #fff;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.image-item__grip[b-7qmbsl3y7w] {
    position: absolute;
    /* Top-right: the video badges sit top-left and bottom-left, the duration bottom-right. */
    top: 8px;
    right: 8px;
    z-index: 3;
    width: 26px;
    height: 26px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: none;
    border-radius: 3px;
    background: rgba(21, 25, 28, 0.55);
    color: #fff;
    font-size: 12px;
    cursor: grab;
    opacity: 0;
    transition: opacity 0.15s ease-in-out;
}

.image-item:hover .image-item__grip[b-7qmbsl3y7w],
.image-item__grip:focus-visible[b-7qmbsl3y7w] {
    opacity: 1;
}

.image-item__grip:focus-visible[b-7qmbsl3y7w] {
    outline: 2px solid var(--ac-primary, #3b7094);
    outline-offset: 2px;
}

.image-item__grip:active[b-7qmbsl3y7w] {
    cursor: grabbing;
}

@media (hover: none) {
    .image-item__grip[b-7qmbsl3y7w] {
        opacity: 1;
    }
}

.image-item--pinned[b-7qmbsl3y7w] {
    cursor: default;
}

.images-dropzone .image-item.insertleft[b-7qmbsl3y7w]::before,
.images-dropzone .image-item.insertright[b-7qmbsl3y7w]::after {
    content: "";
    position: absolute;
    top: 8px;
    bottom: 8px;
    width: 3px;
    border-radius: 2px;
    background: var(--ac-sea-green, #00afaa);
    z-index: 4;
}

.images-dropzone .image-item.insertleft[b-7qmbsl3y7w]::before {
    left: 0;
}

.images-dropzone .image-item.insertright[b-7qmbsl3y7w]::after {
    right: 0;
}

.video-tile__duration--empty[b-7qmbsl3y7w] {
    display: none;
}

.imageUploader__chooseLink[b-7qmbsl3y7w] {
    display: inline-block;
    cursor: pointer;
    color: var(--bs-link-color, #0d6efd);
    text-decoration: underline;
}

.imageUploader__chooseLink:hover[b-7qmbsl3y7w] {
    color: var(--bs-link-hover-color, #0a58ca);
}

.imageUploader__previewDialog--video[b-7qmbsl3y7w] {
    max-width: 60vw;
    width: 60vw;
}

@media (max-width: 575.98px) {
    .imageUploader__previewDialog--video[b-7qmbsl3y7w] {
        max-width: none;
        width: auto;
    }
}

.imageUploader__embedWrap[b-7qmbsl3y7w] {
    line-height: 0;
    position: relative;
    width: 100%;
    display: flex;
    justify-content: center;
    /* A definite cross size beats the aspect-ratio; otherwise Facebook's SDK markup collapses the box to nothing. */
    align-items: flex-start;
    background: #000;
    /* Facebook sizes from the clip, so a square clip would spill out of the box. */
    overflow: hidden;
}

/* A bare iframe has no intrinsic ratio and collapses to ~150px without one. */
.imageUploader__embedWrap[b-7qmbsl3y7w]  .videoPlayer {
    width: 100%;
    aspect-ratio: 16 / 9;
    max-height: 70vh;
}

.imageUploader__embedWrap[b-7qmbsl3y7w]  .videoPlayer__tiktok,
.imageUploader__embedWrap[b-7qmbsl3y7w]  .videoPlayer__instagram {
    width: auto;
    height: min(70vh, 70vw);
    max-height: 70vh;
    aspect-ratio: 9 / 16;
}

/* Width is capped at the height limit because this dialog is not a scroller; a square clip then fits whole. */
.imageUploader__embedWrap[b-7qmbsl3y7w]  .videoPlayer__facebook {
    width: min(100%, 70vh);
    height: auto;
    aspect-ratio: auto;
    max-height: 70vh;
}

.imageUploader__embedWrap[b-7qmbsl3y7w]  .videoPlayer__facebook iframe,
.imageUploader__embedWrap[b-7qmbsl3y7w]  .videoPlayer__facebook .fb-video > span {
    max-height: 70vh;
}

.imageUploader__embedWrap[b-7qmbsl3y7w]  .videoPlayer > *,
.imageUploader__embedWrap[b-7qmbsl3y7w]  .video_embed_container {
    height: 100%;
}

/* VideoPlayer's close control belongs to its placeholder modal; this dialog closes from its header. */
.imageUploader__embedWrap[b-7qmbsl3y7w]  .videoPlayer__close {
    display: none;
}

.imageUploader__embedWrap[b-7qmbsl3y7w]  iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

/* Undoes the inline width FacebookPlayer.razor.js computes. */
.imageUploader__embedWrap[b-7qmbsl3y7w]  .facebookPlayer {
    width: 100% !important;
}
/* _content/Chassis.UI.Common.Blazor/MultiSelect.razor.rz.scp.css */
.multiselect__wrapper[b-w8f4f0t1fw]{
    font-size: 16px;
    padding-top:2px;
    padding-bottom:2px;
    position: relative;
}

.multiSelect__disabled[b-w8f4f0t1fw] {
    background: var(--bs-gray-100);
    cursor: not-allowed;
    pointer-events: none;
}

.multiSelect__disabled input[b-w8f4f0t1fw]{
    background: var(--bs-gray-100);
    cursor: not-allowed;
    pointer-events: none;
}

.multiselect__wrapper input.multiselect__text-input[b-w8f4f0t1fw]{
    flex-basis: 0;
    min-width: min-content;
    border: none;
    height: 38px;
}

/* Open/close uses transitions, NOT keyframe animations: keyframes re-fire whenever the rule
   applies to a (re)created node — visibly replaying the collapse on initial load (late scoped
   stylesheet), on circuit hydration, and on the option-driven remounts in ModelSelect/
   Classification/Subclassification. Transitions only interpolate on a property change on a
   persisting node, so those cases render closed instantly while user toggles still animate. */
.dropdown-multiselect.hidden[b-w8f4f0t1fw] {
    height: 0px;
    box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0);
    /* entering the hidden state: height animates; shadow flips off only at the end (as before) */
    transition: height 0.25s ease-in-out, box-shadow 0s linear 0.25s;
}

.dropdown-multiselect[b-w8f4f0t1fw] {
    display: flex;
    position: absolute;
    background: white;
    z-index: 2;
    width: 100%;
    height: 200px;
    flex-direction: column;
    align-items: start;
    overflow-y: auto;
    /*    drop shadow*/
    box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.5);
    color:black;
    /* entering the open state: height animates; shadow pops in instantly (as before) */
    transition: height 0.25s ease-in-out, box-shadow 0s linear 0s;
}

.multiselect__wrapper--bg-color[b-w8f4f0t1fw]{
    background-color: white;
    color:black;
}

.hover-bg-gray:hover[b-w8f4f0t1fw] {
    background: lightgray;
}

.selected-border[b-w8f4f0t1fw] {
    border: 1px solid gray;
}

@media (min-width: 992px) {
    .multiselect__wrapper[b-w8f4f0t1fw]{
        font-size: 14px;
    }
}
