/* DreamTheme Core — Variation swatches. Colour dots reuse .pv-sw, labels reuse .pv-var from main.css. */
.dt-sw-wrap{position:relative;display:grid;gap:8px}
.dt-sw-wrap select{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;border:0!important;opacity:0;pointer-events:none}
.dt-swatches{display:flex;flex-wrap:wrap;gap:10px}
.dt-swatches .dt-sw{position:relative;cursor:pointer}
.dt-swatches .dt-sw:focus-visible{outline:2px solid var(--pri);outline-offset:3px}
.dt-swatches .dt-sw.dis{opacity:.4}
.pv-sw .dt-sw.dis::after{content:"";position:absolute;left:-3px;right:-3px;top:50%;height:2px;background:var(--ink);transform:rotate(-45deg)}
.pv-var .dt-sw.dis{text-decoration:line-through}
.dt-sw-image .dt-sw-im{width:52px;height:52px;padding:2px;border:1px solid var(--line);border-radius:var(--rad);overflow:hidden;background:var(--surface)}
.dt-sw-image .dt-sw-im img{display:block;width:100%;height:100%;object-fit:cover;border-radius:calc(var(--rad) - 2px)}
.dt-sw-image .dt-sw-im.on{border-color:var(--pri);box-shadow:inset 0 0 0 1px var(--pri)}
.dt-sw-image .dt-sw-tx{border:1px solid var(--line);border-radius:var(--rad);padding:9px 14px;font-weight:700;font-size:13px}
.dt-sw-image .dt-sw-tx.on{border-color:var(--pri);color:var(--pri);box-shadow:inset 0 0 0 1px var(--pri)}
.dt-sw-val{font-weight:400;color:var(--ink-2)}
