/* ============================================================
   EplusNINE — diseño "Cycle" (DESIGN.md)
   Warm canvas, ink black, Eudoxus Sans + Inter, soft shadows,
   jewel accents por categoría, un solo botón negro por vista.
   ============================================================ */

/* ---------- Tokens ---------- */
:root {
  --color-ink-black: #171618;
  --color-pure-black: #000000;
  --color-paper-white: #ffffff;
  --color-warm-canvas: #f7f7f7;
  --color-mist-gray: #efefef;
  --color-stone-gray: #dadada;
  --color-pewter: #bababa;
  --color-iron: #727578;
  --color-lead: #8b8d8f;
  --color-pebble: #7d7d7d;
  --color-deep-teal: #004d60;
  --color-deep-violet: #38296c;
  --color-deep-amber: #6c4800;
  --color-deep-plum: #46122d;
  --color-deep-navy: #0f1c41;
  --color-deep-maroon: #663220;
  --color-deep-umber: #772914;
  --color-violet-wash: #f5f0ff;
  --color-teal-mist: #defafe;
  --color-amber-cream: #fff6e1;
  --color-apricot-wash: #fff1ec;
  --color-violet-veil: #e7e0fe;
  --color-sky-tint: #cfeff8;
  --color-honey-veil: #feedcc;

  --font-inter: 'Inter', ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-eudoxus: 'Eudoxus Sans', 'Plus Jakarta Sans', ui-sans-serif, system-ui, sans-serif;

  --text-caption: 12px;
  --text-body: 15px;
  --text-subheading: 21px;
  --text-heading-sm: 27px;
  --text-heading: 32px;
  --text-heading-lg: 48px;
  --text-display: 58px;

  --sp-5: 5px; --sp-6: 6px; --sp-8: 8px; --sp-10: 10px;
  --sp-12: 12px; --sp-16: 16px; --sp-21: 21px; --sp-24: 24px;
  --sp-32: 32px; --sp-42: 42px; --sp-66: 66px; --sp-120: 120px;

  --radius-cards: 20px;
  --radius-badges: 100px;
  --radius-images: 12px;
  --radius-buttons: 8px;
  --shadow-md: rgba(239,239,239,.55) 0 2px 15px 0;
  --shadow-subtle: rgba(0,0,0,.08) 0 1px 2px 0, rgba(0,0,0,.12) 0 .5px 0 0;
  --shadow-card: rgba(23,24,26,.08) 0 1px 2px 0, rgba(23,24,26,.05) 0 8px 16px 0;
  --page-max-width: 1200px;
  --section-gap: 80px;
  --card-padding: 24px;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--font-inter); font-size: var(--text-body);
       line-height: 1.62; color: var(--color-ink-black); background: var(--color-warm-canvas); }
h1,h2,h3,h4 { margin: 0; font-family: var(--font-eudoxus); font-weight: 700; letter-spacing: -0.028em; line-height: 1.1; }
p { margin: 0 0 16px; }
a { color: var(--color-deep-teal); text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }
ul { margin: 0; padding: 0; list-style: none; }

.container { max-width: var(--page-max-width); margin: 0 auto; padding: 0 var(--sp-24); }

/* ---------- Buttons (Cycle: un solo CTA negro + ghost) ---------- */
.btn { display: inline-block; background: var(--color-pure-black); color: var(--color-paper-white);
       font: 500 14px/1 var(--font-inter); padding: 10px 22px; border-radius: var(--radius-buttons);
       box-shadow: var(--shadow-subtle); border: 0; cursor: pointer; text-align: center;
       transition: transform .08s ease, opacity .12s ease; }
.btn:hover { opacity: .92; transform: translateY(-1px); }
.btn-ghost { background: transparent; color: var(--color-ink-black); border: 1px solid var(--color-ink-black); }
.btn-lg { padding: 14px 28px; font-size: 16px; }

/* ---------- Header ---------- */
.topbar { background: var(--color-ink-black); color: var(--color-warm-canvas); font-size: 12px; }
.topbar-inner { max-width: var(--page-max-width); margin: 0 auto; padding: 6px 24px;
                display: flex; justify-content: space-between; gap: var(--sp-16); }
.topbar-link { color: var(--color-warm-canvas); font-weight: 500; }
.topbar-link:hover { text-decoration: underline; }
.nav-wrap { position: relative; max-width: var(--page-max-width); margin: 0 auto; padding: 16px 24px;
            display: flex; align-items: center; gap: var(--sp-32); }
.logo { display: flex; align-items: center; gap: var(--sp-8); color: var(--color-ink-black); font-weight: 600; }
.logo-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--color-pure-black); }
.logo-word { font: 600 16px/1 var(--font-inter); }
.site-nav { margin-left: auto; }
.site-nav ul { display: flex; gap: var(--sp-24); }
.site-nav a { color: var(--color-ink-black); font: 500 14px/1 var(--font-inter); }
.site-nav a:hover { font-weight: 600; }
.has-drop { position: relative; }
.dropdown { position: absolute; top: 100%; left: 0; min-width: 230px; background: var(--color-paper-white);
            border-radius: var(--radius-cards); box-shadow: var(--shadow-card); padding: var(--sp-8);
            display: none; opacity: 0; transition: opacity .12s ease; z-index: 20; }
.has-drop:hover .dropdown { display: block; opacity: 1; }
.dropdown a { display: block; padding: 8px 12px; border-radius: 8px; }
.dropdown a:hover { background: var(--color-warm-canvas); font-weight: 500; }
.chev { font-size: 10px; }
.nav-toggle { display: none; background: none; border: 0; cursor: pointer; padding: 6px; }
.nav-toggle span { display: block; width: 20px; height: 2px; background: var(--color-ink-black); margin: 4px 0; }

/* ---------- Hero ---------- */
.hero { text-align: center; padding: var(--sp-66) 24px var(--sp-42); background: var(--color-paper-white); }
.hero h1 { font-size: var(--text-display); font-weight: 800; max-width: 760px; margin: 0 auto var(--sp-24); }
.hero p { font-size: var(--text-subheading); color: var(--color-iron); max-width: 640px; margin: 0 auto var(--sp-32); }
.hero-actions { display: flex; justify-content: center; gap: var(--sp-16); flex-wrap: wrap; }

/* ---------- Sections ---------- */
.section { padding: var(--sp-66) 0; }
.section-title { font-size: var(--text-heading-lg); margin-bottom: var(--sp-12); }
.section-subtitle { color: var(--color-iron); max-width: 620px; }
.section-head { text-align: center; margin-bottom: var(--sp-42); }

/* ---------- Category grid (home) ---------- */
.cat-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--sp-16); }
.cat-card { background: var(--color-paper-white); border-radius: var(--radius-cards); box-shadow: var(--shadow-md);
            padding: var(--card-padding); text-align: center; transition: transform .12s ease, box-shadow .12s ease; }
.cat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-card); }
.cat-card .cat-count { font-size: var(--text-caption); color: var(--color-pebble); }
.cat-card h3 { font-size: var(--text-heading-sm); margin: var(--sp-8) 0; color: var(--color-deep-violet); }
.cat-card p { font-size: 13px; color: var(--color-iron); margin: 0 0 var(--sp-12); }
.cat-card .cat-thumb { display: block; width: 100%; aspect-ratio: 4/3; object-fit: contain;
                       background: var(--color-warm-canvas); border-radius: var(--radius-images);
                       padding: var(--sp-12); margin-bottom: var(--sp-8); }

/* ---------- Product cards ---------- */
.prod-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-21); }
.prod-card { background: var(--color-paper-white); border-radius: var(--radius-cards); box-shadow: var(--shadow-md);
             overflow: hidden; display: flex; flex-direction: column; transition: transform .12s ease, box-shadow .12s ease; }
.prod-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-card); }
.prod-card .thumb { width: 100%; aspect-ratio: 1/1; object-fit: contain; background: #fff; padding: var(--sp-12); border-radius: var(--radius-images); }
.prod-card .body { padding: var(--card-padding); display: flex; flex-direction: column; flex: 1; }
.prod-card h3 { font-size: 15px; font-family: var(--font-inter); font-weight: 600; letter-spacing: -0.01em; line-height: 1.3; margin-bottom: var(--sp-8); }
.prod-card h3 a { color: var(--color-ink-black); }
.prod-card h3 a:hover { color: var(--color-deep-teal); }
.prod-meta { display: flex; justify-content: space-between; align-items: baseline; margin-top: auto; }
.prod-price { font: 700 17px/1 var(--font-inter); color: var(--color-ink-black); }
.prod-sold { font-size: var(--text-caption); color: var(--color-pebble); }
.badge { display: inline-block; font: 500 11px/1 var(--font-inter); color: var(--color-deep-violet);
         background: var(--color-violet-veil); padding: 6px 9px; border-radius: var(--radius-badges); margin-bottom: var(--sp-8); }
.badge-teal { background: var(--color-sky-tint); color: var(--color-deep-teal); }
.badge-amber { background: var(--color-honey-veil); color: var(--color-deep-amber); }

/* ---------- CTA de afiliación en cards ---------- */
.btn-cta { display: inline-block; width: 100%; text-align: center; margin-top: var(--sp-12);
           background: var(--color-pure-black); color: #fff; font: 500 14px/1 var(--font-inter);
           padding: 11px 16px; border-radius: var(--radius-buttons); box-shadow: var(--shadow-subtle); }
.btn-cta:hover { opacity: .9; }

/* ---------- Banda CTA (antes del footer) ---------- */
.cta-band { background: var(--color-ink-black); color: var(--color-warm-canvas); padding: var(--sp-66) 0; }
.cta-band-inner { text-align: center; }
.cta-band-title { font-size: var(--text-heading); color: var(--color-paper-white); margin-bottom: var(--sp-12); }
.cta-band-text { color: rgba(247,247,247,.8); max-width: 560px; margin: 0 auto var(--sp-24); }
.cta-band .btn { background: var(--color-paper-white); color: var(--color-ink-black); }

/* ---------- Footer ---------- */
.site-footer { background: var(--color-pure-black); color: var(--color-warm-canvas); padding: var(--sp-66) 0 var(--sp-24); margin-top: 0; }
.footer-grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: var(--sp-42); align-items: start; margin-bottom: var(--sp-42); }
.footer-col .logo-footer { color: var(--color-warm-canvas); margin-bottom: var(--sp-16); }
.footer-about { color: rgba(247,247,247,.7); font-size: 13px; max-width: 280px; }
.footer-h { font-size: 14px; font-family: var(--font-inter); font-weight: 600; color: var(--color-paper-white); margin-bottom: var(--sp-16); }
.footer-links li { margin-bottom: var(--sp-8); }
.footer-links a { color: rgba(247,247,247,.8); font-size: 13px; }
.footer-links a:hover { color: var(--color-sky-tint); }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-16);
                 border-top: 1px solid rgba(247,247,247,.15); padding-top: var(--sp-21); color: rgba(247,247,247,.55); font-size: 12px; flex-wrap: wrap; }
.footer-meta { display: flex; gap: var(--sp-16); }
.footer-meta a { color: rgba(247,247,247,.55); }

/* ---------- Página de producto (ficha) ---------- */
.product-page { padding: var(--sp-42) 0; }
.breadcrumb { font-size: 13px; color: var(--color-lead); margin-bottom: var(--sp-24); }
.breadcrumb a { color: var(--color-lead); }
.breadcrumb a:hover { color: var(--color-deep-teal); }
.product-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-42); align-items: start; }
.product-gallery img { width: 100%; aspect-ratio: 1/1; object-fit: contain; background: #fff; border-radius: var(--radius-images); }
.product-info h1 { font-size: var(--text-heading); margin-bottom: var(--sp-12); }
.product-price-line { display: flex; align-items: center; gap: var(--sp-16); margin-bottom: var(--sp-16); }
.product-price-now { font: 800 28px/1 var(--font-inter); color: var(--color-ink-black); }
.product-price-from { font: 500 14px/1 var(--font-inter); color: var(--color-pebble); }
.product-rating { font-size: 13px; color: var(--color-pebble); }
.product-body { margin-top: var(--sp-42); }
.product-body h2 { font-size: var(--text-heading-sm); margin: var(--sp-42) 0 var(--sp-12); }
.product-body h3 { font-size: 18px; font-family: var(--font-inter); font-weight: 600; margin: var(--sp-16) 0 6px; color: var(--color-deep-teal); }
.product-body ul { list-style: disc; padding-left: var(--sp-24); margin-bottom: var(--sp-16); }
.product-body table { width: 100%; border-collapse: collapse; margin-bottom: var(--sp-24); }
.product-body th, .product-body td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--color-mist-gray); font-size: 14px; }
.product-body th { font-weight: 600; color: var(--color-pebble); width: 220px; }

/* CTA principal de la ficha */
.checkout-box { background: var(--color-paper-white); border: 1px solid var(--color-mist-gray);
                border-radius: var(--radius-cards); padding: var(--card-padding); box-shadow: var(--shadow-md);
                margin-top: var(--sp-24); }
.checkout-box .btn-cta { font-size: 16px; padding: 14px 22px; }
.checkout-note { font-size: 12px; color: var(--color-pebble); margin: var(--sp-12) 0 0; }

/* ---------- Listado de categoría ---------- */
.cat-page { padding: var(--sp-42) 0; }
.cat-header { margin-bottom: var(--sp-32); }
.cat-header h1 { font-size: var(--text-heading-lg); margin-bottom: var(--sp-8); }
.cat-header p { color: var(--color-iron); max-width: 640px; }

/* ---------- Legal / simple pages ---------- */
.simple-page { padding: var(--sp-42) 0; }
.simple-page .container { max-width: 760px; }
.simple-page h1 { font-size: var(--text-heading); margin-bottom: var(--sp-24); }
.simple-page h2 { font-size: var(--text-heading-sm); margin: var(--sp-24) 0 var(--sp-8); }
.simple-page p { color: var(--color-iron); }
.simple-page li { list-style: disc; margin-left: var(--sp-24); margin-bottom: 6px; }

/* ---------- Contact ---------- */
.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-42); }
.contact-info li { margin-bottom: var(--sp-12); }
.contact-info strong { color: var(--color-ink-black); }
.form-field { margin-bottom: var(--sp-16); }
.form-field label { display: block; font-weight: 600; margin-bottom: var(--sp-6); font-size: 14px; }
.form-field input, .form-field textarea { width: 100%; border: 1px solid var(--color-mist-gray); border-radius: var(--radius-inputs, 20px);
      background: var(--color-paper-white); padding: 11px 14px; font: 400 14px var(--font-inter); color: var(--color-ink-black); }
.form-field input:focus, .form-field textarea:focus { outline: none; border-color: var(--color-ink-black); }
.form-field textarea { min-height: 130px; resize: vertical; }
.form-success { background: var(--color-teal-mist); color: var(--color-deep-teal); padding: 12px 16px; border-radius: 8px; margin-bottom: 24px; }
.form-error { background: var(--color-apricot-wash); color: var(--color-deep-umber); padding: 12px 16px; border-radius: 8px; margin-bottom: 24px; }

/* ---------- GMB embed ---------- */
.gmb-embed { margin-top: var(--sp-24); border-radius: var(--radius-cards); overflow: hidden; background: var(--color-paper-white);
             box-shadow: var(--shadow-md); }
.gmb-embed iframe { width: 100%; height: 360px; border: 0; display: block; }
@media (max-width: 640px) { .gmb-embed iframe { height: 300px; } }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
  .cat-grid { grid-template-columns: repeat(3, 1fr); }
  .prod-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 820px) {
  .nav-toggle { display: block; }
  .site-nav { display: none; position: absolute; top: 100%; left: 0; right: 0; background: var(--color-paper-white);
              box-shadow: var(--shadow-card); padding: var(--sp-16); z-index: 30; }
  .site-nav.open { display: block; }
  .site-nav ul { flex-direction: column; gap: var(--sp-8); }
  .site-nav a { display: block; padding: 10px; }
  .dropdown { position: static; display: block; opacity: 1; box-shadow: none; padding: 0 0 0 var(--sp-16); min-width: 0; }
  .nav-cta { margin-left: auto; }
  .cat-grid { grid-template-columns: repeat(2, 1fr); }
  .prod-grid { grid-template-columns: repeat(2, 1fr); }
  .product-grid { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .contact-grid { grid-template-columns: 1fr; }
  .hero h1 { font-size: 40px; }
}
@media (max-width: 520px) {
  .cat-grid { grid-template-columns: 1fr; }
  .prod-grid { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  .topbar-text { display: none; }
}

/* ---------- Category feature (best seller / cover image) ---------- */
.cat-feature {
  display: grid; grid-template-columns: minmax(0, 380px) minmax(0, 1fr);
  gap: var(--sp-42); align-items: center;
  background: var(--color-paper-white); border-radius: var(--radius-cards);
  box-shadow: var(--shadow-card); padding: var(--card-padding);
  margin: var(--sp-32) 0 var(--sp-42);
}
.cat-feature-media { display: block; }
.cat-feature-media img {
  width: 100%; height: auto; aspect-ratio: 1/1; object-fit: contain;
  background: var(--color-warm-canvas); border-radius: var(--radius-images);
  padding: var(--sp-16); display: block;
}
.cat-feature-body { min-width: 0; }
.cat-feature-tag {
  display: inline-block; font: 500 11px/1 var(--font-inter); text-transform: uppercase;
  letter-spacing: .08em; color: var(--color-deep-violet); background: var(--color-violet-veil);
  padding: 6px 9px; border-radius: var(--radius-badges); margin-bottom: var(--sp-12);
}
.cat-feature-body h2 { font-size: var(--text-heading-sm); margin: 0 0 var(--sp-12); line-height: 1.25; }
.cat-feature-body h2 a { color: var(--color-ink-black); }
.cat-feature-body h2 a:hover { color: var(--color-deep-teal); }
.cat-feature-meta { display: flex; align-items: baseline; gap: var(--sp-12); flex-wrap: wrap; }
.cat-feature-price { font: 700 var(--text-subheading)/1 var(--font-inter); color: var(--color-ink-black); }
.cat-feature-sold { font-size: var(--text-caption); color: var(--color-pebble); }
@media (max-width: 820px) {
  .cat-feature { grid-template-columns: 1fr; gap: var(--sp-24); }
  .cat-feature-media img { max-width: 300px; margin: 0 auto; }
}

/* ---------- «More <categoría>» en las fichas (reutiliza .prod-card/.prod-grid) ---------- */
.related-bikes { border-top: 1px solid var(--color-mist-gray); }
.related-bikes h2 { font-size: var(--text-heading-sm); margin-bottom: var(--sp-32); }
@media (max-width: 820px) {
  .related-bikes h2 { font-size: var(--text-subheading); }
}