.qv-modal{direction:rtl;text-align:start}
.qv-modal .qv-close{inset-inline-end:14px;inset-inline-start:auto}
.qv-partial{display:contents}
.qv-cat{font-size:11.5px;color:var(--teal-2);font-weight:800;letter-spacing:1.2px;text-transform:uppercase}
.qv-title{font-size:clamp(20px,2.4vw,24px);font-weight:900;line-height:1.25;margin:4px 0 8px}
.qv-price-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.qv-price-now{font-size:26px;font-weight:900}
.qv-price-was{font-size:16px;color:var(--muted);text-decoration:line-through;font-weight:500}
.qv-price-vat{font-size:11px;color:var(--muted);font-weight:600;width:100%}
.qv-stock{font-size:13px;font-weight:700;margin:0}
.qv-stock--in{color:var(--teal-2)}
.qv-stock--out{color:#c44}
.qv-variant{margin-top:8px}
.qv-variant-label{font-size:12.5px;font-weight:700;margin-bottom:8px;color:var(--ink-2)}
.qv-variant-selected{font-weight:800;color:var(--ink)}
.qv-variant-row{display:flex;flex-wrap:wrap;gap:8px}
.qv-color{width:32px;height:32px;border-radius:999px;border:2px solid var(--line);background:var(--c,#ccc);cursor:pointer;padding:0}
.qv-color.is-on{border-color:var(--navy);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--navy)}
.qv-size{min-width:44px;height:38px;padding:0 12px;border:1.5px solid var(--line);background:#fff;font-size:12.5px;font-weight:700;cursor:pointer}
.qv-size.is-on{border-color:var(--navy);background:var(--navy);color:#fff}
.qv-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.qv-atc{flex:1;min-width:140px;background:var(--navy);color:#fff;padding:14px 18px;font-weight:800;font-size:13.5px;letter-spacing:.3px;text-transform:uppercase;border:0;cursor:pointer}
.qv-atc:hover:not(:disabled){background:var(--teal-2)}
.qv-atc:disabled{opacity:.55;cursor:not-allowed}
.qv-details{padding:14px 20px;border:1.5px solid var(--ink);font-weight:800;font-size:13px;letter-spacing:.3px;text-transform:uppercase;color:var(--ink);text-decoration:none;white-space:nowrap}
.qv-details:hover{background:var(--bg)}
.qv-img-ph{font-size:120px;opacity:.35}
.qv-modal.is-loading .qv-body,.qv-modal.is-loading .qv-img{opacity:.45;pointer-events:none}
