.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:28px}
@media(max-width:480px){.grid{grid-template-columns:repeat(2,1fr);gap:14px}}
.p-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:0;display:flex;flex-direction:column;gap:0;transition:all 0.22s ease;position:relative;overflow:hidden}
.p-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--blue-border)}
.p-card__body{padding:18px 20px;display:flex;flex-direction:column;gap:8px;flex:1}
.p-card__price-block{margin-top:auto;padding-top:10px;}
.p-price-dist{font-size:20px;font-weight:700;color:var(--text-primary);line-height:1;letter-spacing:-0.02em}
.p-price-compare{font-size:12px;color:var(--gray-400);text-decoration:line-through;font-weight:500}
.p-price-label{font-size:10px;color:var(--gray-500);text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.p-price-economy{font-size:12px;font-weight:700;color:#2d8a4e;background:#edfaf2;border-radius:6px;padding:3px 8px;display:inline-flex;align-items:center;gap:4px;align-self:flex-start;margin-top:2px}
.p-card__meta{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.p-card__chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;background:var(--gray-100);color:var(--gray-600);padding:4px 9px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.p-card__chip--pack{background:#eef6ff;color:var(--blue);border:1px solid #dbe7ff}
.p-card-badges{position:absolute;top:10px;left:10px;display:flex;flex-direction:column;gap:4px;z-index:2}
.p-badge{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:3px 8px;border-radius:10px}
.p-badge-new{background:transparent;color:var(--blue);border:1px solid var(--blue-mid)}
.p-badge-promo{background:transparent;color:#B45309;border:1px solid #D97706}
.skeleton{background:linear-gradient(90deg,var(--gray-100) 25%,var(--gray-50) 50%,var(--gray-100) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.skeleton-img{width:100%;height:130px;border-radius:var(--radius)}
.skeleton-line{height:12px;margin-bottom:6px}
.skeleton-line.w80{width:80%}.skeleton-line.w60{width:60%}.skeleton-line.w40{width:40%}
.p-img{width:100%;aspect-ratio:5/4;background:var(--bg-app);border-radius:16px 16px 0 0;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;cursor:pointer;padding:12px}
.p-img img{width:100%;height:100%;object-fit:contain}
.p-img .ph{font-size:52px;color:var(--gray-300)}
.p-code{font-size:11px;color:var(--gray-400);font-weight:600;letter-spacing:.04em}
.p-name{font-size:14px;font-weight:600;color:var(--gray-900);line-height:1.4;flex:1;cursor:pointer}
.p-name:hover{color:var(--blue)}
.p-pack{font-size:11px;color:var(--gray-500);background:var(--gray-100);border-radius:var(--radius-sm);padding:2px 7px;display:inline-block;margin-top:2px;font-weight:500}
.p-unavail{font-size:11px;color:var(--gray-400);font-style:italic}
.p-stock-low{font-size:10px;color:#B45309;font-weight:600;background:transparent;display:inline-flex;align-items:center;gap:3px}
.qty-row{display:flex;align-items:center;gap:8px;padding:0 20px 18px}
.qty-row input{width:58px;text-align:center;padding:9px 4px;font-size:13px;font-weight:700;border-radius:10px}
.btn-add{flex:1;padding:12px 6px;background:var(--blue);color:var(--white);border:none;border-radius:10px;font-size:13px;cursor:pointer;font-weight:600;transition:var(--transition);min-height:44px}
.btn-add:hover{background:var(--blue-dark)}
.btn-add.added{background:#2d7a45;color:var(--white);border:none}
.btn-add:disabled{background:var(--gray-100);color:var(--gray-400);border:1px solid var(--gray-200);cursor:not-allowed}
/* ══ SPINNER DE QUANTIDADE ══ */
.qty-spin{display:inline-flex;align-items:stretch;background:#fff;border:1.5px solid var(--blue);border-radius:8px;overflow:hidden;flex-shrink:0;height:40px;user-select:none}
.qty-spin-val{min-width:34px;text-align:center;font-size:13px;font-weight:700;color:var(--gray-900);padding:0 6px;display:flex;align-items:center;justify-content:center}
.qty-spin-arrows{display:flex;flex-direction:column;border-left:1px solid rgba(56,83,132,.20)}
.qty-spin-btn{width:22px;flex:1;background:#eef6ff;border:none;cursor:pointer;font-size:8px;color:var(--blue);display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s;padding:0;line-height:1;font-family:inherit}
.qty-spin-btn:first-child{border-bottom:1px solid rgba(56,83,132,.15)}
.qty-spin-btn:hover{background:var(--blue);color:#fff}
/* Pack mínimo badge */
.p-pack-badge{display:inline-flex;align-items:center;background:#eef6ff;color:var(--blue);font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;border:1px solid var(--blue-border,#c5d0e6);letter-spacing:.02em;align-self:flex-start}
/* Stepper de quantidade */
.qty-stepper-row{display:flex;align-items:center;gap:8px;width:100%}
.qty-stepper{display:flex;align-items:center;border:2px solid var(--blue);border-radius:10px;overflow:hidden;flex-shrink:0}
.qty-step-btn{width:44px;height:44px;background:#eef6ff;border:none;cursor:pointer;font-size:22px;font-weight:700;color:var(--blue);transition:background .15s,color .15s;display:flex;align-items:center;justify-content:center;line-height:1}
.qty-step-btn:hover{background:var(--blue);color:#fff}
.qty-step-val{min-width:42px;text-align:center;font-size:18px;font-weight:800;color:var(--gray-900)}
@media(max-width:480px){.qty-step-btn{width:40px;height:40px;font-size:20px}.qty-step-val{min-width:38px;font-size:16px}}
/* card compacto (home + catálogo default) */
.p-card-compact{flex:0 0 190px;background:#fff;border:1px solid var(--border);border-radius:16px;display:flex;flex-direction:column;overflow:hidden;transition:box-shadow .22s,transform .22s}
.p-card-compact:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.p-card-compact-img{width:100%;aspect-ratio:1/1;background:var(--bg-app);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:8px;overflow:hidden}
.p-card-compact-img img{width:100%;height:100%;object-fit:contain}
.p-card-compact-img .ph{font-size:40px;color:var(--gray-300)}
.p-card-compact-body{padding:12px 14px;flex:1}
.p-card-compact-name{font-size:13px;font-weight:600;color:var(--text-primary);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer;margin-bottom:6px}
.p-card-compact-name:hover{color:var(--blue)}
.p-card-compact-price{font-size:15px;font-weight:700;color:var(--text-primary);letter-spacing:-0.01em}
.btn-add-compact{margin:0 14px 14px;padding:10px;background:var(--blue);color:#fff;border:none;border-radius:10px;font-size:12px;font-weight:600;cursor:pointer;transition:var(--transition);width:calc(100% - 28px);text-align:center}
.btn-add-compact.added{background:#2d7a45}
.btn-add-compact:disabled{background:var(--gray-100);color:var(--gray-400);cursor:not-allowed}
/* PDP */
.lp-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
@media(max-width:640px){.lp-grid{grid-template-columns:1fr}}
.pdp-shell{display:flex;flex-direction:column;gap:20px}
.pdp-hero{display:grid;grid-template-columns:1fr 1.1fr;gap:20px;align-items:start}
.pdp-gallery{background:#fff;border:1px solid var(--border);border-radius:12px;padding:0;overflow:hidden;position:sticky;top:80px}
.pdp-gallery img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block}
.pdp-gallery-footer{padding:12px 14px;border-top:1px solid rgba(56,83,132,.08);display:flex;justify-content:center}
.pdp-panel{display:flex;flex-direction:column;gap:14px}
.pdp-kicker{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--text-secondary)}
.pdp-title{font-size:clamp(20px,3.2vw,28px);line-height:1.15;font-weight:700;color:var(--text-primary)}
.pdp-copy{font-size:13px;color:var(--gray-600);line-height:1.6}
.pdp-pills{display:flex;gap:7px;flex-wrap:wrap}
.pdp-pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:6px 11px;background:#f4f8ff;border:1px solid rgba(56,83,132,.12);font-size:11px;font-weight:700;color:var(--blue-dark)}
/* price hero block */
.pdp-price-hero{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:8px}
.pdp-price-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.pdp-price-final{font-size:32px;font-weight:700;color:var(--text-primary);letter-spacing:-0.02em;line-height:1}
.pdp-price-from{font-size:14px;color:var(--gray-400);text-decoration:line-through;font-weight:500}
.pdp-economy-badge{background:var(--green-bg);border:1px solid #c5e0a0;color:var(--green);font-size:13px;font-weight:700;padding:5px 12px;border-radius:8px;display:inline-flex;align-items:center;gap:5px}
.pdp-price-label{font-size:11px;color:var(--gray-500);font-weight:600}
/* payment table */
.pdp-pay-table{background:#fff;border:1px solid rgba(56,83,132,.10);border-radius:16px;overflow:hidden;box-shadow:0 4px 14px rgba(56,83,132,.06)}
.pdp-pay-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:var(--gray-500);padding:10px 14px;border-bottom:1px solid rgba(56,83,132,.08);background:var(--gray-50)}
.pdp-pay-row{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid rgba(56,83,132,.06)}
.pdp-pay-row:last-child{border-bottom:none}
.pdp-pay-row-name{font-size:13px;font-weight:700;color:var(--gray-800)}
.pdp-pay-row-sub{font-size:11px;color:var(--gray-400);margin-top:1px}
.pdp-pay-row-price{font-size:16px;font-weight:700}
.pdp-pay-row-pct{font-size:10px;font-weight:700;margin-top:1px}
/* actions */
.pdp-actions{display:flex;gap:10px;align-items:stretch}
.pdp-actions input{width:72px;text-align:center;border-radius:12px;font-size:15px;font-weight:700}
.pdp-btn-buy{flex:1;padding:14px;background:var(--blue);color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer;transition:var(--transition);letter-spacing:.01em}
.pdp-btn-buy:hover{background:var(--blue-dark)}
.pdp-btn-buy:disabled{background:var(--gray-200);color:var(--gray-400);cursor:not-allowed}
/* trust seals */
.pdp-trust{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pdp-trust-item{background:#fff;border:1px solid rgba(56,83,132,.10);border-radius:14px;padding:12px 10px;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;box-shadow:0 4px 10px rgba(56,83,132,.05)}
.pdp-trust-icon{font-size:22px}
.pdp-trust-label{font-size:11px;font-weight:700;color:var(--blue-dark)}
.pdp-trust-sub{font-size:10px;color:var(--gray-500);line-height:1.4}
/* benefits */
.pdp-benefits{background:#fff;border:1px solid var(--border);border-radius:12px;padding:18px}
.pdp-benefits h3{font-size:13px;font-weight:800;color:var(--blue-dark);margin-bottom:12px;display:flex;align-items:center;gap:6px}
.pdp-benefit-list{display:flex;flex-direction:column;gap:8px}
.pdp-benefit-item{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:var(--gray-700);line-height:1.4}
.pdp-benefit-dot{width:6px;height:6px;border-radius:50%;background:var(--blue);flex-shrink:0;margin-top:5px}
@media(max-width:980px){.pdp-hero{grid-template-columns:1fr}.pdp-gallery{position:static}.pdp-trust{grid-template-columns:repeat(3,1fr)}}
@media(max-width:480px){.pdp-trust{grid-template-columns:repeat(2,1fr)}.pdp-price-final{font-size:28px}}
.lp-img-main{border-radius:var(--radius-md);overflow:hidden;background:var(--gray-100)}
.lp-img-main img{width:100%;aspect-ratio:1;object-fit:contain;padding:16px}
.lp-section{background:var(--white);border:1.5px solid var(--gray-200);border-radius:var(--radius-md);padding:20px;margin-bottom:14px}
.lp-section h3{font-size:14px;font-weight:700;margin-bottom:12px;color:var(--gray-900)}
.lp-add-section{background:var(--blue-light);border:1.5px solid var(--blue-border);border-radius:var(--radius-md);padding:20px;margin-top:0}
/* LP loading slot */
.lp-s3-loading{text-align:center;padding:40px 20px;color:var(--gray-400)}
.lp-s3-loading-spinner{display:inline-block;width:28px;height:28px;border:3px solid var(--gray-200);border-top-color:var(--blue);border-radius:50%;animation:spin 0.8s linear infinite;margin-bottom:12px}
@keyframes spin{to{transform:rotate(360deg)}}
.lp-s3-error{background:var(--yellow-bg);border:1px solid var(--yellow-border);border-radius:var(--radius);padding:14px 18px;font-size:13px;color:#7a5c00;margin:16px 0}
/* ══ LP INDISPONÍVEL ══ */
.lp-unavail{background:#fff;border:1px solid var(--border);border-radius:12px;padding:36px 28px;text-align:center;margin:20px 0}
.lp-unavail-icon{font-size:36px;margin-bottom:14px;display:block}
.lp-unavail-title{font-size:16px;font-weight:700;color:var(--gray-700);margin-bottom:8px}
.lp-unavail-desc{font-size:13px;color:var(--gray-400);margin-bottom:20px;line-height:1.5}
/* ══ GALERIA PDP ══ */
.pdp-gallery img{object-fit:contain}
/* ══ GRADE HOME PREVIEW — vitrine 1 linha horizontal ══ */
.grid--home-preview{display:flex;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:16px;padding-bottom:4px}
.grid--home-preview::-webkit-scrollbar{display:none}
.grid--home-preview>.p-card{flex:0 0 280px;width:280px;min-width:280px}
.grid--home-preview .qty-row{padding:0 16px 14px}
/* ══ GRADE CATEGORIA — cards compactos ══ */
.grid--cat{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px}
.grid--cat .p-img{aspect-ratio:7/4;padding:8px}
.grid--cat .p-card__body{padding:10px 14px;gap:5px}
.grid--cat .p-card__price-block{padding-top:6px}
.grid--cat .p-price-dist{font-size:16px}
.grid--cat .p-name{font-size:13px}
.grid--cat .p-pack-badge{font-size:10px;padding:2px 8px}
.grid--cat .qty-row{padding:0 14px 12px}
.grid--cat .btn-add{min-height:40px;padding:9px 6px;font-size:12px}
.grid--cat .qty-stepper{border-width:1.5px}
.grid--cat .qty-step-btn{width:38px;height:38px;font-size:19px}
.grid--cat .qty-step-val{min-width:34px;font-size:15px}
@media(max-width:480px){
  .grid--cat{grid-template-columns:repeat(2,1fr);gap:10px}
  /* touch targets em cards de categoria */
  .grid--cat .btn-add{min-height:44px}
  .qty-step-btn{width:44px;height:44px;font-size:20px}
  .qty-step-val{min-width:38px;font-size:16px}
}
@media(max-width:768px){
  .btn-add-compact{min-height:44px}
  .qty-spin-btn{width:32px}
  .qty-spin{height:44px}
}
/* ══ CARROSSEL — DOTS ══ */
.carousel-dots{display:flex;justify-content:center;align-items:center;gap:5px;padding:10px 0 2px;min-height:24px}
.carousel-dot{width:6px;height:6px;border-radius:50%;background:rgba(65,91,140,.18);border:none;cursor:pointer;padding:0;transition:background .22s,width .22s,border-radius .22s;flex-shrink:0;line-height:1}
.carousel-dot.active{background:var(--blue);width:18px;border-radius:3px}
.carousel-dot:hover:not(.active){background:rgba(65,91,140,.38)}

/* ══ CARROSSEL — SCROLL-SNAP + MOBILE ARROWS ══ */
@media(max-width:768px){
  .grid--home-preview{scroll-snap-type:x mandatory;padding-bottom:4px}
  .grid--home-preview>.p-card{scroll-snap-align:start}
  /* card slightly more compact inside mobile carousel */
  .grid--home-preview .p-card__body{padding:12px 14px}
  .grid--home-preview .p-price-dist{font-size:18px}
}
@media(max-width:640px){
  /* show arrows inside the track bounds */
  .carousel-wrap{overflow:hidden}
  .carousel-btn{display:flex;width:28px;height:28px;font-size:20px;font-weight:400;opacity:.9;box-shadow:0 2px 10px rgba(0,0,0,.18)}
  .carousel-btn-prev{left:4px}
  .carousel-btn-next{right:4px}
  .carousel-btn--hidden{opacity:0!important;pointer-events:none!important}
}
