/**
 * store-cart.css — Carrinho, checkout e elementos relacionados na loja pública
 * Ficheiro à parte do <style> principal de index.php, para isolar esta
 * funcionalidade sem tocar no CSS já existente. Reutiliza as variáveis de
 * cor definidas no :root do index.php (--red, --dark, --muted, etc.).
 */

/* ══ ÍCONE DO CARRINHO NA NAV ══ */
.cart-nav-btn{position:relative;background:none;border:none;font-size:1.35rem;cursor:pointer;color:var(--dark);display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;transition:background .2s;margin-left:.4rem;}
.cart-nav-btn:hover{background:rgba(206,25,53,.08);}
.cart-nav-badge{position:absolute;top:2px;right:0;background:var(--red);color:#fff;font-size:.65rem;font-weight:800;min-width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 0 0 2px var(--bg);}

/* ══ BOTÃO RÁPIDO NO CARTÃO DE PRODUTO ══ */
.card-footer-btns{display:flex;align-items:center;gap:.5rem;}
.card-cart-btn{background:var(--bg2);border:1.5px solid var(--border);color:var(--red);width:34px;height:34px;border-radius:50%;font-size:.95rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0;}
.card-cart-btn:hover{background:var(--red);color:#fff;border-color:var(--red);}

/* ══ BOTÃO "ADICIONAR AO CARRINHO" NO MODAL DE PRODUTO ══ */
.modal-add-cart-btn{width:100%;border:none;font-size:.9rem;letter-spacing:normal;text-transform:none;}
.modal-actions-divider{text-align:center;font-size:.72rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin:.3rem 0;}

/* ══ DRAWER DO CARRINHO ══ */
.cart-drawer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;background:rgba(17,17,17,.5);display:none;justify-content:flex-end;backdrop-filter:blur(2px);}
.cart-drawer-overlay.open{display:flex;}
.cart-drawer{background:var(--white);width:420px;max-width:92vw;height:100%;display:flex;flex-direction:column;box-shadow:-8px 0 40px rgba(17,17,17,.18);animation:cartSlideIn .25s ease-out;}
@keyframes cartSlideIn{from{transform:translateX(100%);}to{transform:translateX(0);}}
.cart-drawer-head{display:flex;align-items:center;justify-content:space-between;padding:1.3rem 1.5rem;border-bottom:1.5px solid var(--border);}
.cart-drawer-head h3{font-family:'Roboto Condensed',sans-serif;font-size:1.15rem;color:var(--dark);}
.cart-drawer-close{background:var(--bg2);border:none;color:var(--muted);font-size:1.1rem;width:34px;height:34px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;}
.cart-drawer-close:hover{background:var(--red);color:#fff;}
.cart-drawer-body{flex:1;overflow-y:auto;padding:1.2rem 1.5rem;}
.cart-drawer-empty{text-align:center;color:var(--muted);font-size:.9rem;font-weight:600;line-height:1.7;padding:3rem 1rem;}
.cart-drawer-item{display:flex;align-items:center;gap:.85rem;padding:.9rem 0;border-bottom:1px solid var(--bg3);}
.cart-drawer-item img{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--border);flex-shrink:0;background:var(--bg2);}
.cdi-info{flex:1;min-width:0;}
.cdi-name{font-size:.86rem;font-weight:700;color:var(--dark);margin-bottom:.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cdi-price{font-size:.8rem;color:var(--red);font-weight:800;margin-bottom:.4rem;}
.cdi-orig{color:var(--muted);text-decoration:line-through;font-weight:400;font-size:.74rem;}
.cdi-qty{display:flex;align-items:center;gap:.6rem;}
.cdi-qty button{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--border);background:#fff;color:var(--dark);font-size:.85rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;}
.cdi-qty button:hover{border-color:var(--red);color:var(--red);}
.cdi-qty span{font-size:.85rem;font-weight:700;min-width:16px;text-align:center;}
.cdi-remove{background:none;border:none;color:var(--muted);font-size:.9rem;cursor:pointer;padding:.3rem;flex-shrink:0;transition:color .2s;}
.cdi-remove:hover{color:var(--red);}
.cart-drawer-foot{padding:1.2rem 1.5rem 1.5rem;border-top:1.5px solid var(--border);}
.cart-drawer-subtotal{display:flex;justify-content:space-between;font-size:1.05rem;font-weight:800;color:var(--dark);margin-bottom:.5rem;}
.cart-drawer-note{font-size:.74rem;color:var(--muted);line-height:1.5;margin-bottom:1rem;}
.cart-drawer-checkout{width:100%;border:none;font-size:.88rem;letter-spacing:normal;text-transform:none;margin-bottom:1rem;}
.cart-drawer-alt{text-align:center;margin-bottom:.9rem;}
.cart-drawer-alt>span{font-size:.72rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;display:block;margin-bottom:.6rem;}
.cart-drawer-alt-btns{display:flex;gap:.6rem;}
.cart-drawer-alt-btns .wa-btn,.cart-drawer-alt-btns .em-btn{flex:1;padding:.6rem .8rem;font-size:.78rem;}
.cart-drawer-clear{width:100%;background:none;border:none;color:var(--muted);font-size:.78rem;font-weight:700;cursor:pointer;text-decoration:underline;padding:.4rem;}
.cart-drawer-clear:hover{color:var(--red);}

/* ══ CHECKOUT ══ */
.checkout-modal{max-width:600px;padding:2.2rem 2.2rem 2rem;}
.checkout-title{font-family:'Roboto Condensed',sans-serif;font-size:1.4rem;color:var(--dark);margin-bottom:1rem;}
.checkout-recap{background:var(--bg2);border-radius:12px;padding:1rem 1.2rem;margin-bottom:1.4rem;}
.checkout-recap-row{display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--text);font-weight:600;padding:.4rem 0;}
.checkout-recap-sub{border-top:1.5px solid var(--border);margin-top:.4rem;padding-top:.5rem;font-weight:800;color:var(--dark);font-size:.9rem;}
.checkout-recap-item{gap:.6rem;border-bottom:1px dashed var(--border);}
.checkout-recap-item:first-child{padding-top:0;}
.checkout-recap-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.checkout-recap-qty{display:flex;align-items:center;gap:.5rem;flex-shrink:0;}
.checkout-recap-qty button{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--border);background:#fff;color:var(--dark);font-size:.85rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;padding:0;}
.checkout-recap-qty button:hover{border-color:var(--red);color:var(--red);}
.checkout-recap-qty span{font-size:.85rem;font-weight:700;min-width:14px;text-align:center;}
.checkout-recap-linetotal{flex-shrink:0;min-width:60px;text-align:right;}
.checkout-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-bottom:1rem;}
.cf-field{display:flex;flex-direction:column;gap:.3rem;}
.cf-field.cf-full{grid-column:1/-1;}
.cf-field label{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);}
.cf-field input,.cf-field select,.cf-field textarea{background:var(--bg);border:1.5px solid var(--border);border-radius:8px;padding:.6rem .8rem;font-family:'Nunito',sans-serif;font-size:.86rem;color:var(--text);outline:none;transition:border-color .2s;font-weight:600;}
.cf-field input:focus,.cf-field select:focus,.cf-field textarea:focus{border-color:var(--red);background:#fff;}
.cf-field textarea{min-height:70px;resize:vertical;}
.checkout-subh{font-size:.85rem;font-weight:800;color:var(--dark);margin:1.2rem 0 .7rem;text-transform:uppercase;letter-spacing:.05em;}
.delivery-toggle{display:flex;gap:.8rem;margin-bottom:.9rem;flex-wrap:wrap;}
.delivery-opt{display:flex;align-items:center;gap:.5rem;font-size:.84rem;font-weight:700;color:var(--text);cursor:pointer;padding:.6rem 1rem;border:1.5px solid var(--border);border-radius:10px;flex:1;min-width:180px;transition:all .2s;}
.delivery-opt:has(input:checked){border-color:var(--red);background:rgba(206,25,53,.05);color:var(--dark);}
.delivery-opt input{accent-color:var(--red);width:16px;height:16px;}
.checkout-note{font-size:.78rem;color:var(--muted);line-height:1.55;font-weight:600;margin:.5rem 0;}
.checkout-shipping-preview{margin:1rem 0;}
.ship-preview-row{background:var(--bg2);border-radius:10px;padding:.75rem 1rem;font-size:.85rem;color:var(--text);font-weight:600;}
.ship-preview-row b{color:var(--red);}
.ship-preview-note{color:var(--muted);font-size:.74rem;font-weight:600;display:block;margin-top:.2rem;}
.ship-preview-free{background:rgba(39,174,96,.09);color:#1e7a45;}
.ship-preview-free b{color:#1e7a45;}
.ship-preview-warn{background:rgba(230,160,10,.1);color:#8a6100;}
.checkout-submit{width:100%;border:none;font-size:.92rem;letter-spacing:normal;text-transform:none;margin-top:1.2rem;}
.checkout-error{color:var(--red);font-size:.82rem;font-weight:700;text-align:center;margin-top:.8rem;}

/* ══ TOTAL FINAL A PAGAR ══ */
.checkout-total-row{display:flex;justify-content:space-between;align-items:baseline;background:rgba(206,25,53,.06);border:1.5px solid rgba(206,25,53,.25);border-radius:12px;padding:.9rem 1.2rem;margin-top:1rem;}
.checkout-total-row span:first-child{font-size:.88rem;font-weight:800;color:var(--dark);}
.checkout-total-note{font-size:.72rem;font-weight:700;color:var(--muted);text-transform:none;letter-spacing:normal;}
.checkout-total-value{font-size:1.25rem;font-weight:800;color:var(--red);}

/* ══ CONFIRMAÇÃO DE ENCOMENDA ══ */
.checkout-confirm{text-align:center;padding:.5rem 0 .5rem;}
.checkout-confirm-icon{font-size:2.6rem;margin-bottom:.5rem;}
.checkout-confirm h2{font-family:'Roboto Condensed',sans-serif;font-size:1.4rem;color:var(--dark);margin-bottom:.4rem;}
.checkout-confirm-num{font-size:.95rem;color:var(--muted);font-weight:700;margin-bottom:1.3rem;}
.checkout-confirm-num b{color:var(--red);font-family:'Courier New',monospace;}
.checkout-confirm-box{background:var(--bg2);border-radius:12px;padding:1rem 1.2rem;margin-bottom:1.3rem;text-align:left;}
.checkout-confirm-pay{background:rgba(206,25,53,.05);border:1.5px solid var(--border);border-radius:12px;padding:1rem 1.2rem;margin-bottom:1.1rem;text-align:left;}
.checkout-confirm-pay h4{font-size:.82rem;color:var(--dark);margin-bottom:.4rem;text-transform:uppercase;letter-spacing:.05em;}
.checkout-confirm-pay p{font-size:.85rem;color:var(--text);line-height:1.6;font-weight:600;}
.checkout-confirm-send-label{font-size:.78rem;color:var(--muted);font-weight:700;margin-top:.3rem;margin-bottom:.6rem;}
.checkout-confirm-send-btns{display:flex;gap:.6rem;margin-bottom:.9rem;}
.checkout-confirm-send-btns .wa-btn,.checkout-confirm-send-btns .em-btn{flex:1;padding:.75rem .8rem;font-size:.82rem;}
.checkout-confirm-close{width:100%;border:none;}

/* ══ PESQUISA + ORDENAR ══ */
.search-sort-row{display:flex;gap:.6rem;max-width:600px;margin:0 auto 1.3rem;align-items:stretch;}
.search-bar{position:relative;flex:1;margin:0;}
.search-icon{position:absolute;left:1rem;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted);pointer-events:none;}
.search-bar input{width:100%;height:100%;background:var(--white);border:1.5px solid var(--border);border-radius:50px;padding:.75rem 2.6rem;font-family:'Nunito',sans-serif;font-size:.88rem;color:var(--text);outline:none;transition:border-color .2s;font-weight:600;box-sizing:border-box;}
.search-bar input:focus{border-color:var(--red);}
.search-clear{position:absolute;right:.6rem;top:50%;transform:translateY(-50%);background:var(--bg2);border:none;color:var(--muted);width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:.75rem;display:flex;align-items:center;justify-content:center;transition:all .2s;}
.search-clear:hover{background:var(--red);color:#fff;}
.search-empty-msg{text-align:center;color:var(--muted);font-size:.9rem;font-weight:600;padding:2.5rem 1rem;}

.sort-btn{display:flex;align-items:center;gap:.4rem;background:var(--white);border:1.5px solid var(--border);border-radius:50px;padding:.7rem 1.1rem;font-family:'Nunito',sans-serif;font-size:.82rem;font-weight:700;color:var(--dark);cursor:pointer;white-space:nowrap;transition:all .2s;}
.sort-btn:hover{border-color:var(--red);color:var(--red);}
.sort-modal{background:var(--white);border-radius:18px;max-width:420px;width:100%;padding:1.6rem 1.6rem 1.8rem;box-shadow:0 20px 80px rgba(206,25,53,.2);max-height:85vh;overflow-y:auto;}
.sort-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.2rem;}
.sort-modal-head h3{font-family:'Roboto Condensed',sans-serif;font-size:1.15rem;color:var(--dark);}
.sort-section{margin-bottom:1.2rem;}
.sort-section-title{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.6rem;}
.sort-opts{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;}
.sort-section:has(.sort-opts > :only-child) .sort-opts{grid-template-columns:1fr;}
.sort-opt{background:var(--bg);border:1.5px solid var(--border);border-radius:10px;padding:.65rem .8rem;font-family:'Nunito',sans-serif;font-size:.82rem;font-weight:700;color:var(--text);cursor:pointer;transition:all .2s;text-align:left;}
.sort-opt:hover{border-color:var(--red);}
.sort-opt.active{border-color:var(--red);background:rgba(206,25,53,.06);color:var(--dark);}
.sort-reset{width:100%;background:none;border:none;color:var(--muted);font-size:.8rem;font-weight:700;cursor:pointer;text-decoration:underline;padding:.5rem;margin-top:.4rem;}
.sort-reset:hover{color:var(--red);}

/* ══ QUANTIDADE EM STOCK (grelha de produtos) ══ */
.card-stock{font-size:.74rem;color:var(--muted);font-weight:700;margin:-.3rem 0 .5rem;}

/* ══ SELO DE DESCONTO (% calculada automaticamente entre preço riscado e preço atual) ══ */
.discount-badge{display:inline-block;background:var(--red);color:#fff;font-size:.68rem;font-weight:800;padding:.15rem .5rem;border-radius:50px;margin-left:.4rem;vertical-align:middle;letter-spacing:.02em;}
.discount-badge-sm{font-size:.62rem;padding:.1rem .4rem;margin-left:.3rem;}

/* ══ TOAST (loja pública) ══ */
.toast{position:fixed;bottom:2rem;left:50%;transform:translateX(-50%) translateY(80px);background:var(--dark);color:#fff;padding:.8rem 1.8rem;border-radius:50px;font-weight:700;font-size:.88rem;z-index:9999;transition:transform .3s;white-space:nowrap;box-shadow:0 4px 20px rgba(0,0,0,.3);}
.toast.show{transform:translateX(-50%) translateY(0);}

/* ══ PRODUTO ESGOTADO (grelha + modal) ══ */
.product-card.sold-out .card-gallery{filter:grayscale(.35);}
.card-badge-soldout{background:var(--dark)!important;}
.card-cart-btn:disabled{opacity:.35;cursor:not-allowed;}
.card-cart-btn:disabled:hover{background:var(--bg2);color:var(--red);border-color:var(--border);}
.modal-add-cart-btn:disabled{opacity:.5;cursor:not-allowed;}
.wa-btn:disabled,.em-btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none;}

/* ══ ITEM INDISPONÍVEL NO CARRINHO ══ */
.cart-drawer-item.unavailable{opacity:.75;}
.cart-drawer-item.unavailable img{filter:grayscale(1);}
.cdi-unavailable-tag{display:inline-block;background:rgba(206,25,53,.1);color:var(--red);font-size:.72rem;font-weight:800;padding:.15rem .55rem;border-radius:50px;margin-bottom:.35rem;}
.cdi-qty-readonly{font-size:.76rem;color:var(--muted);font-weight:600;}
.cart-drawer-warn{background:rgba(230,160,10,.12);color:#8a6100;font-size:.78rem;font-weight:700;padding:.7rem 1rem;margin:0 1.5rem .8rem;border-radius:10px;line-height:1.5;}
.checkout-recap-excluded{color:#8a6100;font-size:.76rem;font-weight:700;padding:.4rem 0;line-height:1.5;}

@media(max-width:900px){
  .cart-drawer{width:100%;max-width:100%;}
  .checkout-modal{padding:1.6rem 1.3rem 1.6rem;}
  .checkout-grid{grid-template-columns:1fr;}
  .delivery-opt{min-width:100%;}
  .cart-drawer-alt-btns{flex-direction:column;}
  .toast{white-space:normal;max-width:88vw;text-align:center;}
  .sort-btn span{display:none;}
  .sort-btn{padding:.7rem .85rem;}
}

/* Grelha "em pares" (2 colunas) em telemóvel — aplica-se tanto a "Todos" como a
   qualquer categoria filtrada, já que buildCards() é a mesma função em ambos os
   casos. Não altera nenhuma informação do produto, só a densidade visual da grelha. */
@media(max-width:600px){
  .products-grid{grid-template-columns:repeat(2,1fr);gap:.7rem;}
  .card-gallery{padding:6px;}
  .card-gallery img.pg{top:6px;left:6px;right:6px;bottom:6px;width:calc(100% - 12px);height:calc(100% - 12px);}
  .card-badge{top:8px;left:8px;font-size:.58rem;padding:.16rem .5rem;}
  .card-code{display:none;}
  .card-body{padding:.7rem .6rem .85rem;}
  .card-body h3{font-size:.78rem;letter-spacing:.01em;margin-bottom:.25rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  .card-desc{font-size:.68rem;line-height:1.4;margin-bottom:.5rem;-webkit-line-clamp:3;}
  .card-stock{font-size:.65rem;margin:-.1rem 0 .35rem;}
  .card-footer{flex-direction:column;align-items:stretch;gap:.5rem;}
  .price{font-size:1rem;}
  .price-orig{font-size:.65rem;}
  .discount-badge{font-size:.6rem;padding:.1rem .4rem;margin-left:.35rem;}
  .card-footer-btns{width:100%;justify-content:space-between;}
  .buy-btn{font-size:.7rem;padding:.4rem .8rem;flex:1;text-align:center;}
  .card-cart-btn{width:30px;height:30px;font-size:.85rem;flex-shrink:0;}
}
