/* Ruler Smart Wishlist - clean styles */

/* Neutralize accidental <code> wrapping the shortcode */
code .rsw-wishlist, .rsw-wishlist code { font-family: inherit; white-space: normal; }
code .rsw-wishlist { display:block; }

/* Button base */
button.rsw-button, .rsw-button {
  display:inline-grid;
  grid-auto-flow:column;
  place-items:center;
  place-content:center;
  text-align:center;
  gap:.5rem;
  cursor:pointer;
  padding:.5rem .875rem;
  line-height:1.2;
  border-radius:.5rem;
  border:1px solid rgba(0,0,0,.08);
  transition: transform .08s ease-in-out, background-color .2s ease, color .2s ease;
  text-decoration:none;
      margin:.25rem 0;
  font-weight:500;
}
.rsw-button:hover { transform: translateY(-1px); }
.rsw-button:active { transform: translateY(0); }
.rsw-button:focus { outline: 2px solid rgba(0,0,0,.15); outline-offset: 1px; }
.rsw-button .rsw-icon {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
  transform:none;
  flex:0 0 auto;
}
.rsw-button.is-active .rsw-icon { filter: saturate(1.2); }
.rsw-icon-only .rsw-label { display:none !important; }
.rsw-icon-only { padding:.35rem; border-radius:9999px; }
.rsw-icon-only .rsw-icon { transform:none; }
/* Icon-only stays a perfect square unless a size is set in the settings. */
.rsw-icon-only { aspect-ratio: 1 / 1; }

/* Size modifiers */
.rsw-size-sm{ font-size: 12px; padding: .35rem .6rem; }
.rsw-size-md{ font-size: 14px; padding: .5rem .875rem; }
.rsw-size-lg{ font-size: 16px; padding: .7rem 1rem; }

/* Over-image placement */
.products .product{ position: relative; }
.products .product .rsw-overwrap{
  position:absolute; top:.5rem; right:.5rem; z-index:5;
  pointer-events:auto;
}

/* Wishlist flex list */
.rsw-wishlist { margin: 1rem 0 2rem; }
.rsw-wishlist h2 { display:flex; align-items:center; gap:.5rem; font-weight:600; }
.rsw-wishlist .rsw-count { font-size: .85em; opacity:.8; }
.rsw-list { width:100%; background:#fff; box-shadow: 0 1px 2px rgba(0,0,0,.04); border-radius:.5rem; overflow:hidden; }
.rsw-head, .rsw-item {
  display:grid;
  grid-template-columns: 1fr 140px 220px;
  gap: 1rem;
  align-items:center;
  padding: .9rem .9rem;
  border-bottom:1px solid #eee;
}
.rsw-head { background:#fafafa; font-weight:600; }
.rsw-item:last-child { border-bottom:0; }

.rsw-product-link { display:flex; align-items:center; gap:.75rem; text-decoration:none;
      margin:.25rem 0; color:inherit; }
.rsw-product-link img { width:56px; height:56px; object-fit:cover; border-radius:.4rem; }
.rsw-title { font-weight:500; }
.rsw-variation { display:block; font-weight:400; font-size:.85em; opacity:.75; margin-top:2px; }

.rsw-col-actions .button + .button,
.rsw-col-actions .button + .rsw-button,
.rsw-col-actions .rsw-button + .button { margin-left: .4rem; }

@media (max-width: 860px){
  .rsw-head { display:none; }
  .rsw-item{ grid-template-columns: 1fr auto; }
  .rsw-col-price { display:none; }
  .rsw-col-actions { justify-self:end; }
}

.rsw-no-bg, .rsw-no-bg:hover, .rsw-no-bg:active, .rsw-no-bg:focus { background: transparent !important; border-color: transparent !important; box-shadow: none !important; }


/* Credit */
.rsw-credit { margin-top: 1rem; font-size: .9rem; opacity: .85; }
.rsw-credit .rsw-heart { color: #e11d48; margin: 0 .2em; }
.rsw-credit a { text-decoration: none; }

/* Wishlist rows: thumbnail, title, price, actions */
.rsw-product-link img.rsw-thumb,
.rsw-product-link .rsw-thumb {
  width:64px; height:64px; object-fit:cover; border-radius:.4rem; flex:0 0 auto;
}
.rsw-col-price { display:flex; flex-wrap:wrap; align-items:baseline; gap:.4rem; }
.rsw-price { display:inline-flex; flex-wrap:wrap; align-items:baseline; gap:.4rem; }
.rsw-price-regular { opacity:.6; text-decoration:line-through; font-size:.9em; }
.rsw-price-sale { text-decoration:none; font-weight:600; }
.rsw-sale-badge {
  display:inline-block; padding:.1rem .4rem; border-radius:.25rem;
  background:#e11d48; color:#fff; font-size:.72em; font-weight:600; line-height:1.5;
}
.rsw-col-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.4rem; }
.rsw-col-actions .added_to_cart { align-self:center; font-size:.85em; }
.rsw-empty { margin:.5rem 0 0; opacity:.8; }

@media (max-width: 860px){
  .rsw-col-price { display:flex; }
  .rsw-item { grid-template-columns: 1fr; }
  .rsw-col-actions { justify-self:start; }
}

/* Add-to-cart fallback styling for themes that do not style .button */
a.rsw-add-to-cart {
  margin-top:0;
  display:inline-flex; align-items:center; justify-content:center;
  padding:.5rem .875rem; line-height:1.2; font-weight:500;
  border-radius:.5rem; border:1px solid rgba(0,0,0,.08);
  background:#111827; color:#fff; text-decoration:none;
  box-shadow:0 1px 2px rgba(0,0,0,.06);
  transition: transform .08s ease-in-out, box-shadow .12s ease-in-out, opacity .2s ease;
}
a.rsw-add-to-cart:hover { color:#fff; opacity:.9; box-shadow:0 2px 6px rgba(0,0,0,.08); transform:translateY(-1px); }
a.rsw-add-to-cart:focus { outline:2px solid rgba(0,0,0,.15); outline-offset:1px; }
a.rsw-add-to-cart.loading { opacity:.6; pointer-events:none; }

/* Woo's theme stylesheet sets .woocommerce a.button { margin-top: 1rem },
   which outranks a single class, so match its specificity and then beat it. */
.rsw-wishlist a.rsw-add-to-cart,
.woocommerce .rsw-wishlist a.rsw-add-to-cart,
.rsw-modal a.rsw-add-to-cart,
.woocommerce .rsw-modal a.rsw-add-to-cart { margin-top: 0; }

/* Inline SVG icons scale with the button font size and take the icon colour. */
.rsw-button .rsw-icon .rsw-svg {
  width: 1.15em;
  height: 1.15em;
  display: block;
  color: inherit;
}


/* Info bar shown after a product is added to the wishlist */
.rsw-infobar {
  position: fixed;
  left: 50%;
  bottom: 24px;
  z-index: 99999;
  display: flex;
  align-items: center;
  gap: .75rem;
  max-width: min(560px, calc(100vw - 32px));
  padding: .75rem 1rem;
  border-radius: .5rem;
  background: var(--rsw-infobar-bg, #111827);
  color: var(--rsw-infobar-color, #fff);
  font-size: 14px;
  line-height: 1.4;
  box-shadow: 0 6px 24px rgba(0,0,0,.18);
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, 12px);
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
}

.rsw-infobar.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}

.rsw-infobar-text { flex: 1 1 auto; }

.rsw-infobar-image {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: 4px;
  display: block;
}

.rsw-infobar-link {
  flex: 0 0 auto;
  color: inherit;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.rsw-infobar-link:hover,
.rsw-infobar-link:focus { color: inherit; opacity: .85; }

.rsw-infobar [hidden] { display: none !important; }

.rsw-infobar-close {
  flex: 0 0 auto;
  padding: 0 .25rem;
  border: 0;
  background: none;
  color: inherit;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  opacity: .7;
}

.rsw-infobar-close:hover { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .rsw-infobar { transition: opacity .2s ease, visibility .2s; transform: translate(-50%, 0); }
}

/* Wishlist modal */
.rsw-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 99998;
  background: rgba(0,0,0,.45);
  opacity: 0;
  visibility: hidden;
  transition: opacity .2s ease, visibility .2s;
}

.rsw-modal-backdrop.is-visible { opacity: 1; visibility: visible; }

.rsw-modal {
  position: fixed;
  z-index: 99999;
  width: min(720px, calc(100vw - 32px));
  max-height: min(80vh, 900px);
  overflow: auto;
  padding: 0;
  background: #fff;
  color: #111827;
  border-radius: 12px;
  box-shadow: 0 18px 48px rgba(0,0,0,.24);
  opacity: 0;
  visibility: hidden;
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
}

.rsw-modal.is-visible { opacity: 1; visibility: visible; }

.rsw-modal-close {
  position: absolute;
  top: 10px;
  right: 12px;
  z-index: 1;
  padding: 4px 8px;
  border: 0;
  background: none;
  line-height: 1;
  cursor: pointer;
  opacity: .75;
}

.rsw-modal-close:hover { opacity: 1; }

.rsw-modal .rsw-wishlist { margin: 0; }

/* Padding lives on the three sections, so the header background can span the
   full width of the modal. */
.rsw-modal-header { padding: 20px; }
.rsw-modal-body   { padding: 20px; }
.rsw-modal-foot   { padding: 0 20px 20px; margin-top: 0; }

.rsw-modal-header:empty { display: none; }

.rsw-modal-header h2 { margin: 0; }

/* The modal shows the items only: no column header, compact heading. */
.rsw-modal .rsw-head { display: none; }

.rsw-modal .rsw-wishlist h2,
.rsw-modal-header h2 {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 1rem;
  line-height: 1.3;
}

.rsw-modal .rsw-list {
  box-shadow: none;
  border-radius: 0;
}

.rsw-modal .rsw-item:first-child { border-top: 0; }

.rsw-modal-loading { margin: 0; padding: 24px 0; text-align: center; opacity: .7; }

.rsw-modal-foot { margin-top: 16px; }

.rsw-modal-foot:empty { display: none; }

.rsw-modal-link {
  display: inline-block;
  color: inherit;
  font-weight: 600;
  text-decoration: none;
}

.rsw-modal-link:hover,
.rsw-modal-link:focus { text-decoration: none; }

@media (prefers-reduced-motion: reduce) {
  .rsw-modal { transition: opacity .2s ease, visibility .2s; }
}

/* Tooltip on the wishlist button, above by default. Decoration only: the
   accessible name comes from the label or aria-label. */
.rsw-button[data-rsw-tip] { position: relative; }

.rsw-button[data-rsw-tip]::after,
.rsw-button[data-rsw-tip]::before {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, 4px);
  transition: opacity .12s ease, transform .12s ease, visibility .12s;
  pointer-events: none;
  z-index: 20;
}

.rsw-button[data-rsw-tip]::after {
  content: attr(data-rsw-tip);
  padding: 6px 10px;
  border-radius: 4px;
  background: var(--rsw-tip-bg, #111827);
  color: var(--rsw-tip-color, #fff);
  font-size: 12px;
  font-weight: 500;
  line-height: 1.3;
  white-space: nowrap;
}

/* arrow */
.rsw-button[data-rsw-tip]::before {
  content: "";
  bottom: calc(100% + 3px);
  border: 5px solid transparent;
  border-top-color: var(--rsw-tip-bg, #111827);
  padding: 0;
}

.rsw-button[data-rsw-tip]:hover::after,
.rsw-button[data-rsw-tip]:hover::before,
.rsw-button[data-rsw-tip]:focus-visible::after,
.rsw-button[data-rsw-tip]:focus-visible::before {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}

/* Over an image the button sits near the top edge, so drop the tooltip below. */
.rsw-overwrap .rsw-button[data-rsw-tip]::after {
  bottom: auto;
  top: calc(100% + 8px);
}

.rsw-overwrap .rsw-button[data-rsw-tip]::before {
  bottom: auto;
  top: calc(100% + 3px);
  border-top-color: transparent;
  border-bottom-color: var(--rsw-tip-bg, #111827);
}

@media (prefers-reduced-motion: reduce) {
  .rsw-button[data-rsw-tip]::after,
  .rsw-button[data-rsw-tip]::before { transition: opacity .12s ease, visibility .12s; transform: translate(-50%, 0); }
}

/* Counter as a link: inherit the surrounding text, no underline. */
a.rsw-counter-link {
  color: inherit;
  text-decoration: none;
}

a.rsw-counter-link:hover,
a.rsw-counter-link:focus { color: inherit; text-decoration: none; }
