/* assets/css/main.css - Base Styles & UI/UX Polish */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font-body);color:var(--black);background:var(--white);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:var(--red, var(--brand-red));text-decoration:none}
h1,h2,h3,h4{font-family:var(--font-head);font-weight:700;line-height:1.2;color:var(--navy, var(--sport-blue))}
header{background:var(--white);position:sticky;top:0;z-index:1000;padding:14px 32px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 12px rgba(0,0,0,.06);transition:all var(--tr)}
header.scrolled{backdrop-filter:blur(20px);background:rgba(255,255,255,.9)}
.logo img{height:52px;width:auto}
nav{display:flex;align-items:center;gap:4px}
nav a{font-family:var(--font-head);font-weight:600;font-size:13px;color:var(--navy, var(--sport-blue));text-transform:uppercase;letter-spacing:.5px;padding:8px 14px;border-radius:var(--radius);transition:all var(--tr)}
nav a:hover,nav a.active{color:var(--red, var(--brand-red));background:rgba(211,47,47,.07)}
.nav-wa{background:var(--red, var(--brand-red))!important;color:var(--white)!important;padding:10px 18px!important;display:flex;align-items:center;gap:8px}
.nav-wa:hover{background:var(--red-dark, var(--brand-red-dark))!important;transform:translateY(-1px)}
.nav-wa svg{flex-shrink:0}
.burger{display:none;background:none;border:none;cursor:pointer;padding:4px}
.nav-close{display:none}
@media(max-width:768px){
  .burger{display:flex}
  nav{display:none;position:fixed;inset:0;background:var(--white);flex-direction:column;align-items:center;justify-content:center;gap:24px;z-index:999}
  nav.open{display:flex}
  nav a{font-size:20px;padding:12px 24px}
  .nav-close{position:absolute;top:20px;right:24px;background:none;border:none;cursor:pointer}
}

/* === Botones base === */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 22px;
  border-radius: var(--radius, 8px);
  font-family: var(--font-head);
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  border: none;
  text-decoration: none;
  transition: all 0.2s ease;
  line-height: 1.2;
}
.btn-primary {
  background: var(--red, #D32F2F);
  color: #fff !important;
}
.btn-primary:hover {
  background: var(--red-dark, #B71C1C);
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(211,47,47,.35);
}
.btn-primary:active { transform: scale(0.98); }
.btn-wa-green {
  background: #25D366;
  color: #fff !important;
}
.btn-wa-green:hover {
  background: #1ebe5d;
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(37,211,102,.35);
}
.btn-wa-green:active { transform: scale(0.98); }
.btn-lg { padding: 14px 28px !important; font-size: 16px !important; justify-content: center; }

/* === Select de tamaño === */
.size-select {
  width: 100%;
  padding: 12px 14px;
  border: 2px solid var(--gray-200, #e2e8f0);
  border-radius: var(--radius, 8px);
  font-family: var(--font-body);
  font-size: 16px;
  background: #fff;
  cursor: pointer;
  appearance: auto;
  transition: border-color 0.2s;
}
.size-select:focus { outline: none; border-color: var(--red, #D32F2F); }
.size-select.is-invalid { border-color: var(--red, #D32F2F) !important; background: #fff8f8; }

footer{background:#0a1628;color:rgba(255,255,255,.7);padding:64px 32px 28px;position:relative}
footer::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:repeating-linear-gradient(90deg,var(--brand-red),var(--brand-red) 8px,transparent 8px,transparent 16px)}
.footer-inner{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px}
.footer-brand p{color:rgba(255,255,255,.55);font-size:14px;margin-top:14px;line-height:1.7}
.footer-brand img{height:48px;margin-bottom:12px;filter:brightness(0) invert(1)}
.footer-col h4{font-family:var(--font-head);color:var(--white);font-size:12px;text-transform:uppercase;letter-spacing:2px;margin-bottom:16px}
.footer-col a{display:flex;align-items:center;gap:8px;color:rgba(255,255,255,.55);font-size:14px;margin-bottom:10px;transition:color var(--tr)}
.footer-col a:hover{color:var(--brand-red)}
.footer-col a svg{flex-shrink:0;opacity:.7}
.footer-bottom{max-width:1200px;margin:48px auto 0;padding-top:24px;border-top:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:rgba(255,255,255,.35);flex-wrap:wrap;gap:8px}
.fab-wa{position:fixed;bottom:28px;right:28px;z-index:998;width:58px;height:58px;background:#25D366;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(37,211,102,.45);animation:pulse-fab 2.5s infinite;transition:transform var(--tr)}
.fab-wa:hover{transform:scale(1.1)}
@keyframes pulse-fab{0%{box-shadow:0 0 0 0 rgba(37,211,102,.6)}70%{box-shadow:0 0 0 16px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}
.container{max-width:1200px;margin:0 auto;padding:0 24px}
.section-tag{font-size:11px;font-weight:700;color:var(--brand-red);text-transform:uppercase;letter-spacing:3px;margin-bottom:10px}

/* --- Global Animation Keyframes --- */
@keyframes spin {
  to { transform: rotate(360deg); }
}
@keyframes emi-spin {
  to { transform: rotate(360deg); }
}
@keyframes shake {
  0%, 100% { transform: translateX(0); }
  20%, 60% { transform: translateX(-4px); }
  40%, 80% { transform: translateX(4px); }
}
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes slideUp {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

/* --- Loading Spinner Utilities --- */
.emi-spinner {
  display: inline-block;
  width: 16px;
  height: 16px;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-top-color: #ffffff;
  border-radius: 50%;
  animation: emi-spin 0.75s linear infinite;
  vertical-align: middle;
  margin-right: 8px;
  flex-shrink: 0;
}
.emi-spinner-dark {
  border-color: rgba(29, 53, 87, 0.25);
  border-top-color: var(--emi-navy, #1d3557);
}
.spinner-inline {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(29, 53, 87, 0.25);
  border-top-color: var(--emi-navy, #1d3557);
  border-radius: 50%;
  animation: spin 0.75s linear infinite;
  vertical-align: middle;
  margin-right: 6px;
}

/* --- 44px Minimum Touch Targets & Form Controls --- */
input[type="text"], input[type="tel"], input[type="email"], input[type="number"], select, textarea,
.emi-input, .emi-select, .size-select {
  font-size: 16px !important; /* Prevents iOS Safari auto-zoom */
  min-height: 44px;
  box-sizing: border-box;
}

.modal-box input,
.modal-box select,
.modal-box button,
#emi-cart-sidebar input,
#emi-cart-sidebar select,
#emi-cart-sidebar button,
.btn-buy, .btn-next, .btn-send, .btn-back,
#transf-pay-btn, #nave-pay-btn, .cart-checkout-btn,
.cart-stepper-btn, .cart-item-remove, .modal-close-btn, .cart-close-btn {
  min-height: 44px;
  box-sizing: border-box;
}

.modal-close-btn,
.cart-close-btn,
.cart-stepper-btn,
.cart-item-remove {
  min-width: 44px !important;
  min-height: 44px !important;
  width: 44px !important;
  height: 44px !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* --- Micro-interactions & Tactile Transitions (150ms-300ms ease-out) --- */
.btn-buy, .btn-next, .btn-send, .btn-back,
#transf-pay-btn, #nave-pay-btn, .cart-checkout-btn,
.cart-stepper-btn, .cart-item-remove, .modal-close-btn, .cart-close-btn,
#emi-shipping-calc button, .size-select {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.btn-buy:hover, .btn-next:hover, .btn-send:hover,
#transf-pay-btn:hover, #nave-pay-btn:hover, .cart-checkout-btn:hover {
  transform: translateY(-1px);
}

.btn-buy:active, .btn-next:active, .btn-send:active,
#transf-pay-btn:active, #nave-pay-btn:active, .cart-checkout-btn:active {
  transform: scale(0.98);
}

.modal-close-btn:active, .cart-close-btn:active, .cart-stepper-btn:active, .cart-item-remove:active {
  transform: scale(0.92);
}

button:disabled, .btn:disabled, .btn-next:disabled, .btn-buy:disabled, .btn-send:disabled {
  opacity: 0.65 !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  box-shadow: none !important;
  transform: none !important;
}

/* --- Inline Validation Styles --- */
.is-invalid,
.modal-box input.is-invalid,
.modal-box select.is-invalid,
.size-select.is-invalid {
  border-color: var(--brand-red, #D32F2F) !important;
  background-color: #fff8f8 !important;
  box-shadow: 0 0 0 3px rgba(211, 47, 47, 0.15) !important;
  animation: shake 0.3s ease-in-out;
}

#modal-validation-error {
  background: #fee2e2;
  border: 1px solid #fca5a5;
  border-radius: var(--radius-md, 8px);
  color: #991b1b;
  font-size: 13px;
  font-weight: 600;
  padding: 12px 14px;
  margin-bottom: 14px;
  display: none;
  align-items: center;
  gap: 8px;
  animation: fadeIn 0.25s ease-out;
}

/* --- Mobile Bottom Sheet & Responsive Tweaks --- */
@media (max-width: 768px) {
  .modal-overlay {
    padding: 0;
    align-items: flex-end;
  }
  .modal-box {
    border-radius: var(--radius-xl, 16px) var(--radius-xl, 16px) 0 0;
    max-height: 92vh;
    max-width: 100%;
  }
  .modal-body {
    padding: 20px 18px;
    padding-bottom: max(20px, env(safe-area-inset-bottom));
  }
}

@media (max-width: 480px) {
  .fab-wa {
    bottom: 84px !important;
    right: 20px !important;
    width: 54px;
    height: 54px;
  }
  #back-to-top {
    bottom: 20px !important;
    right: 20px !important;
    width: 44px;
    height: 44px;
  }
}


/* QA 2026-09-10: panel del carrito fuera de pantalla */
html{overflow-x:clip}
