/**
 * PersoNailit — shop swatches on product cards. Styled by swatch kind
 * (--color / --image / --text). Size: --pi-ls-size ("Shop Listing Swatches"),
 * times --pi-ls-scale (set by the script from the card's width).
 * The script lays the container over the image's top-left corner
 * (.is-overlay): one column per element, closed (.is-collapsed) or open.
 */

.personailit-listing-swatches {
    --pi-ls-size: 16px;
    --pi-ls-ring: #a3a3a3;         /* selected */
    --pi-ls-accent: #c2185b;       /* hover ("Box Accent Color", printed inline) */

    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin: 6px 0 8px;
    line-height: 1;
}

/* Over the image, top-left: the elements side by side. */
.personailit-listing-swatches.is-overlay {
    box-sizing: border-box; /* the padding stays inside the image */
    position: absolute;
    z-index: 3;
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: 8px;
    margin: 0;
    padding: 8px;
    overflow: visible;
    pointer-events: none; /* the empty area stays clickable (image link) */
}

.personailit-listing-swatches.is-overlay.has-open {
    z-index: 5;
}

/* One element: a column, opening downwards. */
.personailit-ls-element {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    pointer-events: auto;
}

/* Closed: only the current option. Open: the list + "+N". */
.personailit-ls-element .personailit-ls-swatch {
    display: none;
}

.personailit-ls-element.is-collapsed .personailit-ls-swatch.is-current,
.personailit-ls-element:not(.is-collapsed) .personailit-ls-swatch.is-in-list {
    display: inline-flex;
}

.personailit-ls-element.is-collapsed .personailit-ls-more {
    display: none;
}

.personailit-ls-more {
    order: 9999;
}

.personailit-ls-swatch {
    position: relative;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    line-height: 1;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

/* Color and image: round, with a white halo that shows on any image. */
.personailit-ls-swatch--color,
.personailit-ls-swatch--image {
    width: calc(var(--pi-ls-size) * var(--pi-ls-scale, 1));
    height: calc(var(--pi-ls-size) * var(--pi-ls-scale, 1));
    border-radius: 50%;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12), 0 0 0 2px rgba(255, 255, 255, 0.95), 0 2px 6px rgba(0, 0, 0, 0.2);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

/* !important: themes style button:hover / :focus (e.g. their primary color). */
.personailit-ls-swatch--color,
.personailit-ls-swatch--color:hover,
.personailit-ls-swatch--color:focus,
.personailit-ls-swatch--color:active {
    background: var(--pi-ls-color, #fff) !important;
}

.personailit-ls-swatch--image,
.personailit-ls-swatch--image:hover,
.personailit-ls-swatch--image:focus,
.personailit-ls-swatch--image:active {
    overflow: hidden;
    background: #fff !important;
}

/* Selected / focus: a thin ring (accent color) outside the halo. */
.personailit-ls-swatch--color.is-selected,
.personailit-ls-swatch--image.is-selected,
.personailit-ls-swatch--color:focus-visible,
.personailit-ls-swatch--image:focus-visible {
    outline: none;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12), 0 0 0 2px #fff, 0 0 0 3.5px var(--pi-ls-ring), 0 2px 6px rgba(0, 0, 0, 0.18);
}

.personailit-ls-swatch--text:focus-visible {
    outline: 2px solid var(--pi-ls-ring);
    outline-offset: 2px;
}

@media (hover: hover) {
    .personailit-ls-element .personailit-ls-swatch--color:hover,
    .personailit-ls-element .personailit-ls-swatch--image:hover {
        transform: scale(1.12);
        box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12), 0 0 0 2px #fff, 0 0 0 3.5px var(--pi-ls-accent), 0 2px 6px rgba(0, 0, 0, 0.18);
    }
}

/* Opening: the options drop in one after the other. */
.personailit-ls-element:not(.is-collapsed) .personailit-ls-swatch.is-in-list:not(.is-current),
.personailit-ls-element:not(.is-collapsed) .personailit-ls-more {
    animation: personailit-ls-drop 0.18s ease both;
    animation-delay: calc(var(--pi-ls-pos, 1) * 35ms);
}

@keyframes personailit-ls-drop {
    from {
        opacity: 0;
        transform: translateY(-6px);
    }
}

.personailit-ls-swatch--image img {
    display: block;
    width: 100%;
    height: 100%;
    margin: 0;
    object-fit: cover;
}

.personailit-ls-swatch--text {
    min-height: calc(var(--pi-ls-size) * var(--pi-ls-scale, 1));
    padding: 4px 9px;
    border: 1px solid rgba(0, 0, 0, 0.15);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.94);
    color: #1d1d1f;
    font-size: calc(11px * var(--pi-ls-scale, 1));
    white-space: nowrap;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}

.personailit-ls-swatch--text:hover,
.personailit-ls-swatch--text:focus,
.personailit-ls-swatch--text:active {
    background-color: #fff !important;
    color: #1d1d1f !important;
}

.personailit-ls-swatch--text.is-selected {
    border-color: var(--pi-ls-ring);
    outline: none;
    font-weight: 600;
}

/* "+3": goes to the product page. */
.personailit-ls-more {
    padding: 3px 7px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.94);
    color: #1d1d1f;
    font-size: calc(11px * var(--pi-ls-scale, 1));
    line-height: 1.2;
    text-decoration: none;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}

.personailit-ls-more:hover {
    text-decoration: underline;
}

/* --- Phone (.is-phone): one chip instead of the columns -----------------
   Sized by --pi-ls-chip-scale (set by the script from the card's width). */

.personailit-ls-chip {
    display: none;
}

.personailit-listing-swatches.is-phone {
    flex-direction: column;
    justify-content: flex-start; /* the chip in the image's top-left corner */
}

.personailit-listing-swatches.is-phone .personailit-ls-element {
    display: none;
}

.personailit-listing-swatches.is-phone .personailit-ls-chip {
    display: inline-flex;
    align-items: center;
    --s: var(--pi-ls-chip-scale, 1);

    gap: calc(2px * var(--s));
    max-width: 100%;
    min-height: calc(30px * var(--s));
    margin: 0;
    padding: calc(5px * var(--s)) calc(10px * var(--s)) calc(5px * var(--s)) calc(6px * var(--s));
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.95);
    color: #1d1d1f;
    font: inherit;
    font-size: calc(12px * var(--s));
    line-height: 1.2;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.16);
    cursor: pointer;
    pointer-events: auto;
    -webkit-tap-highlight-color: transparent;
    transition: opacity 0.25s ease, transform 0.25s ease;
}

/* Hidden while its panel is open. */
.personailit-listing-swatches.is-phone.is-panel-open .personailit-ls-chip {
    opacity: 0;
    transform: scale(0.85);
    pointer-events: none;
}

.personailit-ls-chip-dot,
.personailit-ls-chip-thumb {
    display: block;
    flex: none;
    width: calc(16px * var(--s, 1));
    height: calc(16px * var(--s, 1));
    margin: 0;
    border-radius: 50%;
    box-shadow: 0 0 0 1.5px #fff, inset 0 0 0 1px rgba(0, 0, 0, 0.15);
    object-fit: cover;
}

.personailit-ls-chip-thumb {
    border-radius: 4px;
}

.personailit-ls-chip b {
    overflow: hidden;
    margin-left: calc(4px * var(--s, 1));
    font-weight: 600;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.personailit-ls-chip-chevron {
    flex: none;
    width: calc(6px * var(--s, 1));
    height: calc(6px * var(--s, 1));
    margin: calc(-3px * var(--s, 1)) calc(2px * var(--s, 1)) 0 calc(8px * var(--s, 1));
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
}

/* Comfortable tap targets on touch screens, same look. */
@media (pointer: coarse) {
    .personailit-listing-swatches.is-overlay {
        gap: 9px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .personailit-ls-element .personailit-ls-swatch,
    .personailit-ls-element .personailit-ls-more {
        animation: none;
        transition: none;
    }
}
