:root{
  --tnps-teal:#0f8f86;
  --tnps-teal-dark:#08756e;
  --tnps-ink:#172126;
  --tnps-muted:#7d898d;
  --tnps-line:#edf1f0;
  --tnps-soft:#f7f9f8;
}
.tnps-section{
  width:100%;
  margin:52px 0;
  color:var(--tnps-ink);
  font-family:inherit;
}
.tnps-heading-row{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px;
  margin-bottom:24px;
}
.tnps-eyebrow{
  display:block;
  margin-bottom:8px;
  color:var(--tnps-teal);
  font-size:10px;
  font-weight:800;
  letter-spacing:.22em;
}
.tnps-heading h2{
  margin:0;
  font-size:clamp(25px,2.5vw,36px);
  line-height:1.08;
  font-weight:750;
  letter-spacing:-.04em;
}
.tnps-heading p{
  margin:9px 0 0;
  color:var(--tnps-muted);
  font-size:14px;
  line-height:1.55;
}
.tnps-nav{display:flex;gap:9px}
.tnps-arrow{
  width:42px;height:42px;
  border:1px solid rgba(15,143,134,.18);
  border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:#fff;color:var(--tnps-ink);
  cursor:pointer;padding:0;
  box-shadow:0 8px 24px rgba(20,36,40,.09);
  transition:transform .22s ease,background .22s ease,color .22s ease,box-shadow .22s ease;
}
.tnps-arrow span{font-size:17px;line-height:1;transform:translateY(-1px)}
.tnps-arrow:hover:not(:disabled){
  background:var(--tnps-teal);color:#fff;
  transform:translateY(-2px);
  box-shadow:0 12px 28px rgba(15,143,134,.2);
}
.tnps-arrow:disabled{opacity:.32;cursor:default;box-shadow:none}
.tnps-viewport{
  width:100%;
  overflow:hidden;
  padding:18px 8px 30px;
  margin:0 -8px;
}
.tnps-track{
  display:flex;
  gap:28px;
  will-change:transform;
  transition:transform .58s cubic-bezier(.22,.72,.18,1);
}
.tnps-card{
  flex:0 0 calc((100% - 84px)/4);
  min-width:0;
  overflow:visible;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  transition:transform .32s ease;
}
.tnps-card:hover{transform:translateY(-6px)}
.tnps-card-media{
  position:relative;
  height:300px;
  overflow:hidden;
  border-radius:22px;
  background:linear-gradient(145deg,#f8faf9,#f1f5f4);
  box-shadow:0 13px 32px rgba(20,36,40,.075);
  transition:box-shadow .32s ease,background .32s ease;
}
.tnps-card:hover .tnps-card-media{
  box-shadow:0 21px 42px rgba(20,36,40,.13);
  background:#f6f9f8;
}
.tnps-product-link{display:block;width:100%;height:100%}
.tnps-main-image{
  display:block;
  width:100%;height:100%;
  object-fit:contain;
  padding:20px;
  transition:transform .55s cubic-bezier(.2,.7,.2,1);
}
.tnps-card:hover .tnps-main-image{transform:scale(1.065)}
.tnps-sale-badge{
  position:absolute;top:14px;left:14px;z-index:2;
  display:inline-flex;align-items:center;
  min-height:27px;padding:0 10px;
  border-radius:999px;
  background:#fff;color:var(--tnps-teal);
  font-size:10px;font-weight:850;
  box-shadow:0 7px 18px rgba(20,36,40,.09);
}
.tnps-quick-view{
  position:absolute;top:13px;right:13px;z-index:3;
  width:38px;height:38px;border-radius:50%;
  background:rgba(255,255,255,.96);
  color:var(--tnps-ink);
  display:inline-flex;align-items:center;justify-content:center;
  text-decoration:none;
  box-shadow:0 8px 20px rgba(20,36,40,.11);
  transition:transform .22s ease,background .22s ease,color .22s ease;
}
.tnps-quick-view:hover{
  transform:rotate(6deg) scale(1.05);
  background:var(--tnps-teal);color:#fff;
}
.tnps-card-body{padding:16px 3px 0}
.tnps-category{
  min-height:13px;margin-bottom:7px;
  color:var(--tnps-teal);
  font-size:9px;font-weight:850;
  letter-spacing:.15em;text-transform:uppercase;
}
.tnps-product-title{
  display:-webkit-box;overflow:hidden;
  color:var(--tnps-ink);
  font-size:15px;font-weight:650;line-height:1.35;
  text-decoration:none;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;
  min-height:40px;
}
.tnps-product-title:hover{color:var(--tnps-teal)}
.tnps-rating{
  display:flex;align-items:center;gap:6px;
  margin-top:7px;min-height:16px;
}
.tnps-stars{color:#d9a63a;font-size:11px;letter-spacing:1px}
.tnps-review-count{color:#9aa4a7;font-size:10px}
.tnps-price{
  display:flex;align-items:baseline;flex-wrap:wrap;gap:7px;
  margin-top:8px;min-height:27px;
}
.tnps-price .amount{color:var(--tnps-ink);font-size:17px;font-weight:800}
.tnps-price del .amount{color:#a7afb1;font-size:12px;font-weight:500}
.tnps-price ins{text-decoration:none}
.tnps-actions{
  margin-top:12px;
  opacity:0;
  transform:translateY(5px);
  transition:opacity .25s ease,transform .25s ease;
}
.tnps-card:hover .tnps-actions{opacity:1;transform:translateY(0)}
.tnps-add{
  width:100%;min-height:40px;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 12px 0 15px;
  border-radius:10px;
  background:var(--tnps-ink);color:#fff!important;
  text-decoration:none!important;
  font-size:11px;font-weight:750;
  transition:.22s ease;
}
.tnps-add:hover{
  background:var(--tnps-teal);
  box-shadow:0 9px 18px rgba(15,143,134,.18);
}
.tnps-add-icon{
  width:23px;height:23px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.13);
  font-size:16px;
}
.tnps-progress{
  height:2px;margin-top:0;overflow:hidden;
  border-radius:99px;background:#e9eeee;
}
.tnps-progress-fill{
  display:block;width:12%;height:100%;
  border-radius:inherit;background:var(--tnps-teal);
  transition:width .45s ease;
}
@media (max-width:1199px){
  .tnps-card{flex-basis:calc((100% - 56px)/3)}
}
@media (max-width:919px){
  .tnps-card{flex-basis:calc((100% - 28px)/2)}
  .tnps-card-media{height:270px}
  .tnps-actions{opacity:1;transform:none}
}
@media (max-width:619px){
  .tnps-section{margin:42px 0}
  .tnps-heading-row{gap:14px}
  .tnps-heading p{font-size:12px}
  .tnps-arrow{width:37px;height:37px}
  .tnps-track{gap:18px}
  .tnps-card{flex-basis:calc(82% - 9px)}
  .tnps-card-media{height:255px;border-radius:19px}
  .tnps-card-body{padding:14px 2px 0}
  .tnps-actions{opacity:1;transform:none}
}
@media (max-width:420px){
  .tnps-heading p{display:none}
  .tnps-heading h2{font-size:23px}
  .tnps-card-media{height:235px}
}


/* v1.2.0 refinements */
.tnps-card{
  border:1px solid #e5ecea;
  border-radius:24px;
  padding:10px 10px 14px;
  background:#fff;
  box-shadow:0 8px 25px rgba(20,36,40,.045);
}
.tnps-card:hover{
  border-color:rgba(15,143,134,.28);
  box-shadow:0 18px 38px rgba(20,36,40,.10);
}
.tnps-card-media{
  border-radius:18px;
}
.tnps-card-body{
  padding:15px 5px 0;
}
.tnps-price .amount{
  color:var(--tnps-teal);
  font-size:18px;
  font-weight:850;
}
.tnps-price del .amount{
  color:#a7afb1;
  font-size:12px;
}
.tnps-price ins .amount{
  color:#d26a3d;
}
@media (max-width:619px){
  .tnps-card{
    padding:8px 8px 12px;
    border-radius:21px;
  }
  .tnps-card-media{
    border-radius:16px;
  }
}


/* v1.3.0 refinements */
.tnps-heading p{
  color:var(--tnps-teal);
}
.tnps-add{
  background:#1469d8;
}
.tnps-add:hover{
  background:#0f58ba;
  box-shadow:0 9px 18px rgba(20,105,216,.20);
}


/* Variation picker — additive only */
.tnps-variation-picker{
  margin-top:10px;
  display:flex;
  flex-direction:column;
  gap:9px;
}
.tnps-option-group{
  display:flex;
  align-items:center;
  gap:9px;
  flex-wrap:wrap;
}
.tnps-option-label{
  flex:0 0 auto;
  color:#6f7b7e;
  font-size:9px;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.tnps-color-options,.tnps-size-options{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
}
.tnps-color-swatch{
  width:24px;height:24px;
  padding:0;
  border:2px solid #fff;
  border-radius:50%;
  background:var(--tnps-swatch,#d9dedc);
  box-shadow:0 0 0 1px #d9e0de;
  cursor:pointer;
  position:relative;
  appearance:none;
  -webkit-appearance:none;
  transition:transform .18s ease,box-shadow .18s ease;
}
.tnps-color-swatch span{
  display:block;width:100%;height:100%;border-radius:50%;
  background:var(--tnps-swatch,#d9dedc);
}
.tnps-color-swatch:hover,
.tnps-color-swatch:focus,
.tnps-color-swatch:focus-visible{
  outline:none!important;
  box-shadow:0 0 0 2px #fff,0 0 0 3px #fff!important;
  transform:scale(1.08);
}
.tnps-color-swatch.is-selected{
  box-shadow:0 0 0 2px #fff,0 0 0 3px var(--tnps-ink)!important;
}
.tnps-color-swatch.is-unavailable,
.tnps-size-option.is-unavailable{
  opacity:.28;
  cursor:not-allowed;
}
.tnps-color-swatch.is-unavailable span{
  position:relative;
}
.tnps-color-swatch.is-unavailable span:after{
  content:"";
  position:absolute;left:50%;top:50%;
  width:22px;height:1px;
  background:#fff;
  transform:translate(-50%,-50%) rotate(-45deg);
}
.tnps-size-option{
  min-width:34px;
  min-height:28px;
  padding:4px 9px;
  border:1px solid #e1e7e5;
  border-radius:8px;
  background:#fff;
  color:var(--tnps-ink);
  font-size:10px;
  font-weight:700;
  cursor:pointer;
  appearance:none;
  -webkit-appearance:none;
  transition:all .18s ease;
}
.tnps-size-option:hover,
.tnps-size-option:focus,
.tnps-size-option:focus-visible{
  outline:none!important;
  border-color:var(--tnps-ink);
}
.tnps-size-option.is-selected{
  background:var(--tnps-ink);
  border-color:var(--tnps-ink);
  color:#fff;
}
.tnps-variable-add{
  cursor:pointer;
}
.tnps-variable-add.tnps-needs-selection{
  animation:tnps-shake .24s linear 2;
}
.tnps-variable-add.loading{
  opacity:.7;
  pointer-events:none;
}
.tnps-variable-add.added{
  background:var(--tnps-teal)!important;
}
@keyframes tnps-shake{
  25%{transform:translateX(-3px)}
  75%{transform:translateX(3px)}
}
@media(max-width:619px){
  .tnps-variation-picker{gap:8px}
  .tnps-option-group{gap:7px}
  .tnps-color-swatch{width:23px;height:23px}
}
