.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;
  transition:transform .18s ease,box-shadow .18s ease}
.card:hover{transform:translateY(-2px);box-shadow:0 7px 22px rgba(15,27,26,.11)}
.card:active{transform:scale(.985)}
.card-media{position:relative;aspect-ratio:1/1;background:var(--brand-light)}
.card-media img{width:100%;height:100%;object-fit:cover}
.card-tag{position:absolute;top:8px;left:8px;background:var(--brand);color:#fff;
  font-size:.68rem;font-weight:700;padding:3px 8px;border-radius:999px}
.card-body{padding:10px 10px 12px;display:flex;flex-direction:column;gap:6px;flex:1}
.card-name{font-size:.92rem;font-weight:600;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.card-price{font-weight:800;color:var(--brand-dark)}
.card-price s{font-weight:400;font-size:.8rem;color:var(--ink-2);margin-left:6px}
.card-cta{margin-top:auto;height:36px;border:0;border-radius:10px;background:var(--brand);
  color:#fff;font-weight:700;font-size:.85rem}
.card-cta[disabled]{background:var(--line);color:var(--ink-2)}
.chip{flex:0 0 auto;padding:7px 14px;border:1px solid var(--line);border-radius:999px;
  background:#fff;font-size:.85rem;white-space:nowrap}
.chip.is-active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}
.tile{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 8px;
  text-align:center;font-size:.8rem;font-weight:600;box-shadow:var(--shadow)}
.tile i{display:block;font-size:1.4rem;color:var(--brand);margin-bottom:6px}
.btn{height:46px;padding:0 18px;border:0;border-radius:12px;font-weight:700}
.btn-primary{background:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-dark)}
.btn-outline{background:#fff;border:1.5px solid var(--brand);color:var(--brand-dark)}
.btn-block{width:100%}
.badge{position:absolute;top:2px;right:2px;min-width:18px;height:18px;padding:0 5px;
  background:var(--danger);color:#fff;border-radius:999px;font-size:.68rem;font-weight:700;
  display:grid;place-items:center}
.badge-sm{top:7px;right:calc(50% - 23px)}
.toast{position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(var(--bottom-h) + 16px + env(safe-area-inset-bottom));z-index:60;
  background:#0f1b1a;color:#fff;padding:10px 16px;border-radius:999px;font-size:.85rem;
  box-shadow:0 6px 20px rgba(0,0,0,.2)}
.skeleton-card{aspect-ratio:3/4;border-radius:var(--radius);
  background:linear-gradient(90deg,#eef2f2,#f8fbfb,#eef2f2);background-size:200% 100%;
  animation:sk 1.2s linear infinite}
@keyframes sk{to{background-position:-200% 0}}
@media (min-width:900px){.toast{bottom:24px}}