.tw-card{--tw-card-bg:#f3f1ed;--tw-card-ink:#1d1d1d;--tw-card-title-size:16px;color:var(--tw-card-ink);font-family:Roboto,Arial,sans-serif;box-sizing:border-box;text-align:left;min-width:0}
.tw-card *,.tw-card *::before,.tw-card *::after{box-sizing:border-box}
.tw-card__media{position:relative;background:var(--tw-card-bg);aspect-ratio:318/388;overflow:hidden}
.tw-card__image-link{display:block;position:absolute;inset:0;overflow:hidden;color:inherit}
.tw-card__image,.tw-card__alternate{display:block;width:100%;height:100%;object-fit:cover;object-position:center;max-width:none;margin:0}
.tw-card__alternate{position:absolute;inset:0;opacity:0;transition:opacity .2s ease}
.tw-card__badge,.tw-card__stock{position:absolute;z-index:2;top:10px;left:10px;max-width:calc(100% - 20px);background:#202020;color:#fff;font:700 12px/1.25 Roboto,Arial,sans-serif;letter-spacing:.03em;text-transform:uppercase;padding:6px 9px;overflow-wrap:anywhere}
.tw-card__stock{top:auto;bottom:10px}
.tw-card__actions{position:absolute;z-index:3;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-wrap:wrap;justify-content:center;gap:4px;max-width:calc(100% - 24px);opacity:0;pointer-events:none;transition:opacity .15s ease}
.tw-card__actions a,.tw-card__actions button,.tw-card__actions .button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;min-width:0;width:auto;margin:0;padding:10px 16px;background:#fff;color:#111;border:1px solid #111;border-radius:0;box-shadow:none;font:700 13px/1.2 Roboto,Arial,sans-serif;letter-spacing:.04em;text-align:center;text-transform:uppercase;white-space:normal}
.tw-card__actions a:hover,.tw-card__actions button:hover,.tw-card__actions .button:hover,.tw-card__actions a:focus-visible,.tw-card__actions button:focus-visible{background:#111;color:#fff}
.tw-card:focus-within .tw-card__actions{opacity:1;pointer-events:auto}
.tw-card a:focus-visible,.tw-card button:focus-visible{outline:2px solid #111;outline-offset:3px}
.tw-card__details{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 0 0}
.tw-card__rating{display:flex;align-items:center;gap:6px;color:#1d1d1d;font:400 13px/1.3 Roboto,Arial,sans-serif}
.tw-card__rating .star-rating{margin:0;color:#111;font-size:12px}
.tw-card__title{margin:0;padding:0;color:var(--tw-card-ink);font:700 var(--tw-card-title-size)/1.3 Roboto,Arial,sans-serif;letter-spacing:.02em;text-transform:uppercase;overflow-wrap:anywhere}
.tw-card__title a{color:inherit;text-decoration:none}.tw-card__title a:hover{text-decoration:underline}
.tw-card__price{color:#666;font:400 15px/1.4 Roboto,Arial,sans-serif;overflow-wrap:anywhere}.tw-card__price .amount{font-size:inherit}.tw-card__price del{opacity:.7}.tw-card__price ins{text-decoration:none;color:#1d1d1d}
/* The theme emits its own loop sale flash in the slot's outer hook. The real
   percent is rendered inside this card; preserve all unrelated outer hooks. */
@supports selector(:has(*)){.product-small.col>.col-inner:has(>.tw-card)>.badge-container{display:none}}
@media (hover:hover) and (pointer:fine){.tw-card:hover .tw-card__alternate,.tw-card:focus-within .tw-card__alternate{opacity:1}.tw-card:hover .tw-card__actions{opacity:1;pointer-events:auto}}
@media (prefers-reduced-motion:reduce){.tw-card__alternate,.tw-card__actions{transition:none}}
