{"id":6,"date":"2026-04-01T14:01:32","date_gmt":"2026-04-01T14:01:32","guid":{"rendered":"https:\/\/tallerbordados.com\/?page_id=6"},"modified":"2026-04-01T22:14:32","modified_gmt":"2026-04-01T22:14:32","slug":"bandas-de-graduacion","status":"publish","type":"page","link":"https:\/\/tallerbordados.com\/index.php\/bandas-de-graduacion\/","title":{"rendered":"Bandas de graduaci\u00f3n"},"content":{"rendered":"<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Sora:wght@400;500;600;700&family=Nunito+Sans:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n<script src=\"https:\/\/unpkg.com\/lucide@latest\/dist\/umd\/lucide.js\"><\/script>\n<style>\n\n.jnb_095056{\n  --jn-amber:#FBB04B;--jn-coral:#F8887D;--jn-slate:#8491C8;--jn-cream:#F8EEE2;\n  --jn-blue:#7BBCD0;--jn-dark:#221E1F;--jn-light:#F9FBFD;\n  font-family:'Nunito Sans',sans-serif;color:var(--jn-dark);\n}\n.jnb_095056 *{box-sizing:border-box;}\n.jnb_095056 h1,.jnb_095056 h2,.jnb_095056 h3{font-family:'Sora',sans-serif;}\n\/* container *\/\n.jnb_095056 .jnb-wrap{max-width:820px;margin:0 auto;padding:clamp(16px,4vw,32px) 16px 60px;}\n\/* header *\/\n.jnb_095056 .jnb-badge{display:inline-flex;align-items:center;gap:8px;background:var(--jn-cream);border-radius:40px;padding:6px 16px;margin-bottom:16px;}\n.jnb_095056 .jnb-badge span{font-size:13px;font-weight:600;color:var(--jn-slate);font-family:'Sora',sans-serif;text-transform:uppercase;letter-spacing:.1em;}\n\/* step bar *\/\n.jnb_095056 .step-dot{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Sora',sans-serif;font-weight:600;font-size:13px;transition:all .3s;flex-shrink:0;}\n.jnb_095056 .step-dot.active{background:var(--jn-slate);color:#fff;}\n.jnb_095056 .step-dot.done{background:var(--jn-amber);color:#fff;}\n.jnb_095056 .step-dot.pending{background:#e5e7eb;color:#9ca3af;}\n.jnb_095056 .step-line{flex:1;height:2px;background:#e5e7eb;transition:background .3s;}\n.jnb_095056 .step-line.done{background:var(--jn-amber);}\n\/* cards *\/\n.jnb_095056 .opt-card{border:2px solid #e5e7eb;border-radius:12px;padding:14px 16px;cursor:pointer;transition:all .2s;position:relative;background:#fff;}\n.jnb_095056 .opt-card:hover{border-color:var(--jn-slate);transform:translateY(-1px);box-shadow:0 4px 12px rgba(132,145,200,.15);}\n.jnb_095056 .opt-card.selected{border-color:var(--jn-slate);background:#f0f2fb;box-shadow:0 4px 16px rgba(132,145,200,.2);}\n.jnb_095056 .opt-card.selected::after{content:'\u2713';position:absolute;top:8px;right:10px;width:20px;height:20px;background:var(--jn-slate);color:#fff;border-radius:50%;font-size:11px;display:flex;align-items:center;justify-content:center;line-height:1;}\n\/* gama modifiers *\/\n.jnb_095056 .gama-bronce{border-color:#cd7f32!important;}\n.jnb_095056 .gama-bronce.selected{background:#fdf5ec!important;}\n.jnb_095056 .gama-plata{border-color:#a8a9ad!important;}\n.jnb_095056 .gama-plata.selected{background:#f4f4f6!important;}\n.jnb_095056 .gama-oro{border-color:#d4af37!important;}\n.jnb_095056 .gama-oro.selected{background:#fefbec!important;}\n\/* color swatches *\/\n.jnb_095056 .color-swatch{width:36px;height:36px;border-radius:50%;cursor:pointer;border:3px solid transparent;transition:all .2s;flex-shrink:0;}\n.jnb_095056 .color-swatch:hover{transform:scale(1.15);}\n.jnb_095056 .color-swatch.selected{border-color:var(--jn-dark);box-shadow:0 0 0 2px #fff inset;}\n\/* qty *\/\n.jnb_095056 .qty-btn{width:40px;height:40px;border-radius:8px;border:2px solid var(--jn-slate);background:#fff;color:var(--jn-slate);font-size:20px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;}\n.jnb_095056 .qty-btn:hover{background:var(--jn-slate);color:#fff;}\n.jnb_095056 .qty-input{width:80px;height:40px;border:2px solid #e5e7eb;border-radius:8px;text-align:center;font-family:'Sora',sans-serif;font-size:18px;font-weight:600;outline:none;}\n.jnb_095056 .qty-input:focus{border-color:var(--jn-slate);}\n\/* price badge *\/\n.jnb_095056 .price-badge{background:linear-gradient(135deg,var(--jn-slate) 0%,#6b7cb8 100%);color:#fff;border-radius:16px;padding:24px 32px;}\n\/* buttons *\/\n.jnb_095056 .btn-primary{background:var(--jn-coral);color:#fff;border:none;border-radius:40px;padding:14px 32px;font-family:'Sora',sans-serif;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:8px;text-decoration:none;}\n.jnb_095056 .btn-primary:hover{background:#f0706a;transform:translateY(-1px);box-shadow:0 6px 20px rgba(248,136,125,.35);}\n.jnb_095056 .btn-secondary{background:transparent;color:var(--jn-slate);border:2px solid var(--jn-slate);border-radius:40px;padding:12px 28px;font-family:'Sora',sans-serif;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:8px;}\n.jnb_095056 .btn-secondary:hover{background:var(--jn-slate);color:#fff;}\n\/* discount pill *\/\n.jnb_095056 .discount-pill{background:var(--jn-amber);color:#fff;border-radius:20px;padding:4px 12px;font-size:12px;font-weight:700;font-family:'Sora',sans-serif;}\n\/* summary *\/\n.jnb_095056 .summary-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f0ede8;}\n.jnb_095056 .summary-row:last-child{border-bottom:none;}\n\/* FAQ *\/\n.jnb_095056 .faq-item{border:2px solid #e5e7eb;border-radius:12px;overflow:hidden;margin-bottom:10px;}\n.jnb_095056 .faq-q{padding:16px 20px;font-family:'Sora',sans-serif;font-weight:600;font-size:15px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;background:#fff;transition:background .2s;}\n.jnb_095056 .faq-q:hover,.jnb_095056 .faq-q.open{background:#f0f2fb;color:var(--jn-slate);}\n.jnb_095056 .faq-a{display:none;padding:0 20px 16px;font-size:14px;color:#4b5563;line-height:1.6;background:#fff;}\n.jnb_095056 .faq-a.open{display:block;}\n\/* band preview *\/\n.jnb_095056 .band-preview-wrap{background:linear-gradient(135deg,#f5f3ef,#eef1f8);border-radius:16px;padding:24px 20px 20px;margin-bottom:24px;text-align:center;}\n.jnb_095056 .band-preview-title{font-family:'Sora',sans-serif;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--jn-slate);margin-bottom:18px;display:flex;align-items:center;justify-content:center;gap:6px;}\n.jnb_095056 .band-preview-svg{max-width:320px;width:100%;height:auto;}\n.jnb_095056 .band-preview-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;}\n.jnb_095056 .band-tag{padding:5px 13px;border-radius:20px;font-family:'Sora',sans-serif;font-size:12px;font-weight:700;display:inline-flex;align-items:center;gap:5px;}\n\/* animations *\/\n@keyframes jnbFadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n.jnb_095056 .step-panel{animation:jnbFadeIn .3s ease;}\n\/* main card *\/\n.jnb_095056 .main-card{background:#fff;border-radius:20px;box-shadow:0 4px 24px rgba(0,0,0,.07);padding:clamp(20px,4vw,36px);}\n\/* responsive *\/\n@media(max-width:640px){\n  .jnb_095056 .price-badge{padding:18px 20px;}\n  .jnb_095056 .btn-primary,.jnb_095056 .btn-secondary{padding:12px 20px;font-size:14px;}\n  .jnb_095056 .step-label{font-size:9px;}\n}\n<\/style>\n\n<div class=\"jnb_095056\">\n<div class=\"jnb-wrap\">\n\n  <!-- \u2500\u2500 H1 + Header \u2500\u2500 -->\n<!-- \u2500\u2500 NAV \u2500\u2500 -->\n<nav style=\"display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;background:#fff;border-radius:16px;padding:14px 14px;box-shadow:0 2px 12px rgba(0,0,0,.07);margin-bottom:28px;\">\n  <!-- Logo -->\n  <a href=\"https:\/\/tallerbordados.com\/\" style=\"display:flex;align-items:center;gap:10px;text-decoration:none;\">\n    <div style=\"width:38px;height:38px;background:var(--jn-cream);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;\">\n      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"color:var(--jn-slate);\"><path d=\"M12 2a5 5 0 0 1 5 5c0 3-5 11-5 11S7 10 7 7a5 5 0 0 1 5-5z\"\/><circle cx=\"12\" cy=\"7\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"\/><path d=\"M3 20c2-2 4-3 9-3s7 1 9 3\"\/><\/svg>\n    <\/div>\n    <span style=\"font-family:'Sora',sans-serif;font-weight:700;font-size:16px;color:var(--jn-dark);\">Taller Bordados<\/span>\n  <\/a>\n\n  <!-- Links -->\n  <div style=\"display:flex;align-items:center;gap:6px;flex-wrap:wrap;\" id=\"jnb-nav-links\">\n    <a href=\"https:\/\/tallerbordados.com\/\" style=\"padding:8px 16px;border-radius:30px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-slate);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='var(--jn-cream)'\" onmouseout=\"this.style.background='transparent'\">Inicio<\/a>\n\n    <!-- Dropdown -->\n    <div style=\"position:relative;\" id=\"jnb-dropdown-wrap\">\n      <button onclick=\"document.getElementById('jnb-dropdown').classList.toggle('jnb-dd-open')\" style=\"padding:8px 16px;border-radius:30px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-slate);background:transparent;border:none;cursor:pointer;display:flex;align-items:center;gap:6px;\" onmouseover=\"this.style.background='var(--jn-cream)'\" onmouseout=\"this.style.background='transparent'\">\n        Nuestros productos\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" id=\"jnb-dd-arrow\"><path d=\"m6 9 6 6 6-6\"\/><\/svg>\n      <\/button>\n      <div id=\"jnb-dropdown\" style=\"display:none;position:absolute;top:calc(100% + 8px);left:0;background:#fff;border-radius:14px;box-shadow:0 8px 32px rgba(0,0,0,.12);padding:8px;min-width:220px;z-index:999;border:2px solid #f0f0f1;\">\n                <a href=\"https:\/\/tallerbordados.com\/index.php\/bordados-en-prendas\/\" style=\"display:block;padding:10px 14px;border-radius:9px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-dark);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='var(--jn-cream)';this.style.color='var(--jn-slate)'\" onmouseout=\"this.style.background='transparent';this.style.color='var(--jn-dark)'\">Bordados en prendas<\/a>\n                <a href=\"https:\/\/tallerbordados.com\/index.php\/gorras-bordadas\/\" style=\"display:block;padding:10px 14px;border-radius:9px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-dark);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='var(--jn-cream)';this.style.color='var(--jn-slate)'\" onmouseout=\"this.style.background='transparent';this.style.color='var(--jn-dark)'\">Gorras bordadas<\/a>\n                <a href=\"https:\/\/tallerbordados.com\/index.php\/llaveros-bordados\/\" style=\"display:block;padding:10px 14px;border-radius:9px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-dark);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='var(--jn-cream)';this.style.color='var(--jn-slate)'\" onmouseout=\"this.style.background='transparent';this.style.color='var(--jn-dark)'\">Llaveros bordados<\/a>\n                <a href=\"https:\/\/tallerbordados.com\/index.php\/parches\/\" style=\"display:block;padding:10px 14px;border-radius:9px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-dark);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='var(--jn-cream)';this.style.color='var(--jn-slate)'\" onmouseout=\"this.style.background='transparent';this.style.color='var(--jn-dark)'\">Parches<\/a>\n                <a href=\"https:\/\/tallerbordados.com\/index.php\/ropa\/\" style=\"display:block;padding:10px 14px;border-radius:9px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-dark);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='var(--jn-cream)';this.style.color='var(--jn-slate)'\" onmouseout=\"this.style.background='transparent';this.style.color='var(--jn-dark)'\">Ropa<\/a>\n                <a href=\"https:\/\/tallerbordados.com\/index.php\/togas-y-birretes\/\" style=\"display:block;padding:10px 14px;border-radius:9px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-dark);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='var(--jn-cream)';this.style.color='var(--jn-slate)'\" onmouseout=\"this.style.background='transparent';this.style.color='var(--jn-dark)'\">Togas y birretes<\/a>\n                <a href=\"https:\/\/tallerbordados.com\/index.php\/bandas-de-graduacion\/\" style=\"display:block;padding:10px 14px;border-radius:9px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:var(--jn-dark);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='var(--jn-cream)';this.style.color='var(--jn-slate)'\" onmouseout=\"this.style.background='transparent';this.style.color='var(--jn-dark)'\">Bandas de graduaci\u00f3n<\/a>\n              <\/div>\n    <\/div>\n\n    <a href=\"https:\/\/tallerbordados.com\/index.php\/presupuestos\/\" style=\"padding:8px 20px;border-radius:30px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:#fff;background:var(--jn-coral);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='#f0706a'\" onmouseout=\"this.style.background='var(--jn-coral)'\">Presupuestos<\/a>\n\n    <a href=\"https:\/\/tallerbordados.com\/index.php\/contacto\/\" style=\"padding:8px 20px;border-radius:30px;font-family:'Sora',sans-serif;font-size:14px;font-weight:600;color:#fff;background:var(--jn-slate);text-decoration:none;transition:background .2s;\" onmouseover=\"this.style.background='#6b7cb8'\" onmouseout=\"this.style.background='var(--jn-slate)'\">Cont\u00e1ctanos!<\/a>\n  <\/div>\n<\/nav>\n  <style>\n  .jnb-dd-open { display:block !important; animation: jnbFadeIn .2s ease; }\n  <\/style>\n  <script>\n  document.addEventListener('click', function(e){\n    const wrap = document.getElementById('jnb-dropdown-wrap');\n    if(wrap && !wrap.contains(e.target)) document.getElementById('jnb-dropdown').classList.remove('jnb-dd-open');\n  });\n  <\/script>\n\n  <!-- \u2500\u2500 H1 + Header \u2500\u2500 -->\n  <header style=\"text-align:center;margin-bottom:36px;\">\n    <div class=\"jnb-badge\">\n      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"color:var(--jn-slate);\"><path d=\"M22 10v6M2 10l10-5 10 5-10 5z\"\/><path d=\"M6 12v5c3 3 9 3 12 0v-5\"\/><\/svg>\n      <span>Taller Bordados<\/span>\n    <\/div>\n    <h1 style=\"font-size:clamp(24px,5vw,36px);font-weight:700;color:var(--jn-dark);margin:0 0 10px;line-height:1.2;\">\n      Bandas de graduacion<br>\n      <span style=\"color:var(--jn-slate);\"><\/span>\n    <\/h1>\n    <p style=\"color:#6b7280;font-size:16px;margin:0 auto;max-width:480px;\">Configura tu banda paso a paso y obt\u00e9n un precio orientativo al instante.<\/p>\n  <\/header>\n  <!-- \u2500\u2500 Step bar \u2500\u2500 -->\n  <div id=\"jnb_095056-step-bar\" style=\"display:flex;align-items:center;gap:0;margin-bottom:32px;\" role=\"navigation\" aria-label=\"Pasos de la p\u00e1gina\">\n        <div class=\"step-dot active\" id=\"jnb_095056-dot-1\" aria-current=\"step\">1<\/div>\n    <div class=\"step-line\" id=\"jnb_095056-line-1\"><\/div>        <div class=\"step-dot pending\" id=\"jnb_095056-dot-2\" aria-current=\"false\">2<\/div>\n    <div class=\"step-line\" id=\"jnb_095056-line-2\"><\/div>        <div class=\"step-dot pending\" id=\"jnb_095056-dot-3\" aria-current=\"false\">3<\/div>\n    <div class=\"step-line\" id=\"jnb_095056-line-3\"><\/div>        <div class=\"step-dot pending\" id=\"jnb_095056-dot-4\" aria-current=\"false\">4<\/div>\n    <div class=\"step-line\" id=\"jnb_095056-line-4\"><\/div>        <div class=\"step-dot pending\" id=\"jnb_095056-dot-5\" aria-current=\"false\">5<\/div>\n          <\/div>\n  <div style=\"display:flex;justify-content:space-between;margin-top:-24px;margin-bottom:32px;font-size:11px;color:#9ca3af;font-family:'Sora',sans-serif;font-weight:600;\" class=\"step-label\">\n    <span>TIPO<\/span><span>GAMA<\/span><span>COLOR<\/span><span>CANTIDAD<\/span><span>RESUMEN<\/span>\n  <\/div>\n\n  <!-- \u2500\u2500 Main card \u2500\u2500 -->\n  <main class=\"main-card\">\n\n    <!-- STEP 1 -->\n    <section id=\"jnb_095056-step-1\" class=\"step-panel\" aria-label=\"Paso 1: Tipo de banda\">\n      <h2 style=\"font-size:18px;font-weight:700;margin:0 0 6px;\">\u00bfQu\u00e9 tipo de banda necesitas?<\/h2>\n      <p style=\"color:#6b7280;font-size:14px;margin:0 0 20px;\">Cada tipo tiene sus caracter\u00edsticas y precio base diferente.<\/p>\n      <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;\" id=\"jnb_095056-tipos-grid\"><\/div>\n      <div style=\"margin-top:24px;text-align:right;\">\n        <button class=\"btn-primary\" id=\"jnb_095056-btn-next-1\" onclick=\"jnb_095056_goStep(2)\" style=\"opacity:.4;pointer-events:none;\" aria-disabled=\"true\">\n          Siguiente <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg>\n        <\/button>\n      <\/div>\n    <\/section>\n\n    <!-- STEP 2 -->\n    <section id=\"jnb_095056-step-2\" class=\"step-panel\" style=\"display:none;\" aria-label=\"Paso 2: Gama de fieltro\">\n      <h2 style=\"font-size:18px;font-weight:700;margin:0 0 6px;\">Selecciona la gama de fieltro<\/h2>\n      <p style=\"color:#6b7280;font-size:14px;margin:0 0 20px;\">La calidad del fieltro influye en el tacto, ca\u00edda y durabilidad.<\/p>\n      <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;\" id=\"jnb_095056-gamas-grid\"><\/div>\n      <div style=\"margin-top:24px;display:flex;justify-content:space-between;align-items:center;\">\n        <button class=\"btn-secondary\" onclick=\"jnb_095056_goStep(1)\">\u2190 Anterior<\/button>\n        <button class=\"btn-primary\" id=\"jnb_095056-btn-next-2\" onclick=\"jnb_095056_goStep(3)\" style=\"opacity:.4;pointer-events:none;\" aria-disabled=\"true\">\n          Siguiente \u2192\n        <\/button>\n      <\/div>\n    <\/section>\n\n    <!-- STEP 3 -->\n    <section id=\"jnb_095056-step-3\" class=\"step-panel\" style=\"display:none;\" aria-label=\"Paso 3: Color\">\n      <h2 style=\"font-size:18px;font-weight:700;margin:0 0 6px;\">\u00bfQu\u00e9 color prefieres?<\/h2>\n      <p style=\"color:#6b7280;font-size:14px;margin:0 0 20px;\">Disponemos de una amplia gama de colores. El precio es el mismo para todos.<\/p>\n      <div id=\"jnb_095056-color-grid\" style=\"display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px;\" role=\"listbox\" aria-label=\"Paleta de colores\"><\/div>\n      <div id=\"jnb_095056-color-label\" style=\"font-family:'Sora',sans-serif;font-size:13px;font-weight:600;color:var(--jn-slate);min-height:20px;\" aria-live=\"polite\"><\/div>\n      <div style=\"margin-top:24px;display:flex;justify-content:space-between;align-items:center;\">\n        <button class=\"btn-secondary\" onclick=\"jnb_095056_goStep(2)\">\u2190 Anterior<\/button>\n        <button class=\"btn-primary\" id=\"jnb_095056-btn-next-3\" onclick=\"jnb_095056_goStep(4)\" style=\"opacity:.4;pointer-events:none;\" aria-disabled=\"true\">\n          Siguiente \u2192\n        <\/button>\n      <\/div>\n    <\/section>\n\n    <!-- STEP 4 -->\n    <section id=\"jnb_095056-step-4\" class=\"step-panel\" style=\"display:none;\" aria-label=\"Paso 4: Cantidad\">\n      <h2 style=\"font-size:18px;font-weight:700;margin:0 0 6px;\">\u00bfCu\u00e1ntas bandas necesitas?<\/h2>\n      <p style=\"color:#6b7280;font-size:14px;margin:0 0 24px;\">A mayor cantidad, mejor precio por unidad.<\/p>\n      <div style=\"display:flex;align-items:center;gap:12px;margin-bottom:28px;flex-wrap:wrap;\">\n        <button class=\"qty-btn\" onclick=\"jnb_095056_changeQty(-1)\" aria-label=\"Reducir cantidad\">\u2212<\/button>\n        <input class=\"qty-input\" type=\"number\" id=\"jnb_095056-qty-input\" value=\"25\" min=\"1\" max=\"9999\" oninput=\"jnb_095056_updateQty()\" aria-label=\"Cantidad de bandas\">\n        <button class=\"qty-btn\" onclick=\"jnb_095056_changeQty(1)\" aria-label=\"Aumentar cantidad\">+<\/button>\n        <span style=\"font-family:'Sora',sans-serif;font-size:14px;color:#6b7280;\">unidades<\/span>\n      <\/div>\n      <div style=\"background:var(--jn-cream);border-radius:12px;padding:16px;margin-bottom:20px;\">\n        <p style=\"font-family:'Sora',sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--jn-slate);margin:0 0 12px;\">Descuentos por volumen<\/p>\n        <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;\" id=\"jnb_095056-discount-tiers\"><\/div>\n      <\/div>\n      <div class=\"price-badge\" style=\"text-align:center;\" aria-live=\"polite\">\n        <div style=\"font-size:13px;opacity:.8;margin-bottom:4px;font-family:'Sora',sans-serif;text-transform:uppercase;letter-spacing:.08em;\">Precio estimado<\/div>\n        <div style=\"font-size:clamp(32px,6vw,48px);font-weight:700;font-family:'Sora',sans-serif;\" id=\"jnb_095056-total-display\">\u2014<\/div>\n        <div style=\"font-size:13px;opacity:.8;\" id=\"jnb_095056-unit-display\"><\/div>\n        <div style=\"margin-top:8px;\" id=\"jnb_095056-discount-display\"><\/div>\n      <\/div>\n      <div style=\"margin-top:24px;display:flex;justify-content:space-between;align-items:center;\">\n        <button class=\"btn-secondary\" onclick=\"jnb_095056_goStep(3)\">\u2190 Anterior<\/button>\n        <button class=\"btn-primary\" onclick=\"jnb_095056_goStep(5)\">Ver resumen \u2192<\/button>\n      <\/div>\n    <\/section>\n\n    <!-- STEP 5 -->\n    <section id=\"jnb_095056-step-5\" class=\"step-panel\" style=\"display:none;\" aria-label=\"Paso 5: Resumen y precio\">\n      <div style=\"display:flex;align-items:center;gap:10px;margin-bottom:20px;\">\n        <div style=\"width:40px;height:40px;background:var(--jn-cream);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"color:var(--jn-slate);\"><path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"\/><polyline points=\"22 4 12 14.01 9 11.01\"\/><\/svg>\n        <\/div>\n        <div>\n          <h2 style=\"font-size:18px;font-weight:700;margin:0;color:var(--jn-dark);\">Resumen de tu configuraci\u00f3n<\/h2>\n          <p style=\"font-size:13px;color:#6b7280;margin:0;\">Precio orientativo sin IVA \u00b7 Sujeto a confirmaci\u00f3n<\/p>\n        <\/div>\n      <\/div>\n      <!-- \u2500\u2500 Band visual preview \u2500\u2500 -->\n      <div class=\"band-preview-wrap\">\n        <div class=\"band-preview-title\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n          Vista previa de tu banda\n        <\/div>\n        <div id=\"jnb_095056-band-preview-svg\"><\/div>\n        <div class=\"band-preview-tags\" id=\"jnb_095056-band-preview-tags\"><\/div>\n      <\/div>\n\n      <div style=\"background:var(--jn-cream);border-radius:12px;padding:20px;margin-bottom:20px;\" id=\"jnb_095056-summary-table\"><\/div>\n      <div class=\"price-badge\" style=\"margin-bottom:24px;\" aria-live=\"polite\">\n        <div style=\"display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;\">\n          <div>\n            <div style=\"font-size:13px;opacity:.8;font-family:'Sora',sans-serif;text-transform:uppercase;letter-spacing:.08em;\">Total estimado<\/div>\n            <div style=\"font-size:clamp(28px,5vw,42px);font-weight:700;font-family:'Sora',sans-serif;\" id=\"jnb_095056-final-total\">\u2014<\/div>\n            <div style=\"font-size:13px;opacity:.8;\" id=\"jnb_095056-final-unit\">+ IVA<\/div>\n          <\/div>\n          <div style=\"text-align:right;\" id=\"jnb_095056-final-discount-wrap\"><\/div>\n        <\/div>\n      <\/div>\n      <div style=\"display:flex;gap:10px;background:#f0f4ff;border-radius:10px;padding:14px;margin-bottom:24px;\" role=\"note\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"color:var(--jn-slate);flex-shrink:0;margin-top:1px;\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 16v-4\"\/><path d=\"M12 8h.01\"\/><\/svg>\n        <p style=\"font-size:13px;color:#374151;margin:0;line-height:1.5;\">\n          Este precio es <strong>orientativo<\/strong> y puede variar seg\u00fan el dise\u00f1o final, n\u00famero de colores del bordado y acabados adicionales.\n          <strong>No incluye IVA<\/strong>. Para un presupuesto exacto, contacta con nuestro equipo.\n        <\/p>\n      <\/div>\n      <div style=\"display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center;\">\n        <button class=\"btn-secondary\" onclick=\"jnb_095056_goStep(4)\">\u2190 Modificar<\/button>\n        <div style=\"display:flex;flex-wrap:wrap;gap:10px;\">\n          <a class=\"btn-primary\" href=\"https:\/\/tallerbordados.com\/index.php\/presupuestos\/\" target=\"_blank\" rel=\"noopener\">\n            \u2709\ufe0f Solicitar presupuesto real\n          <\/a>\n          <button class=\"btn-secondary\" onclick=\"jnb_095056_resetAll()\" style=\"border-color:var(--jn-coral);color:var(--jn-coral);\">\n            \ud83d\udd04 Nueva consulta\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/section>\n\n  <\/main>\n\n  <!-- \u2500\u2500 Footer \u2500\u2500 -->\n  <footer style=\"text-align:center;font-size:12px;color:#9ca3af;margin-top:20px;\">\n    \u00bfDudas? Ll\u00e1manos al <strong style=\"color:var(--jn-slate);\">123 456 789<\/strong> \u00b7 WhatsApp <strong style=\"color:var(--jn-slate);\">ejeje<\/strong>\n  <\/footer>\n\n  <!-- \u2500\u2500 FAQ \u2500\u2500 -->\n    <section style=\"margin-top:56px;\" aria-label=\"Preguntas frecuentes\">\n    <h2 style=\"font-size:24px;font-weight:700;text-align:center;margin-bottom:8px;color:var(--jn-dark);\">Preguntas frecuentes sobre bandas de graduaci\u00f3n<\/h2>\n    <p style=\"text-align:center;color:#6b7280;margin:0 0 28px;\">Todo lo que necesitas saber antes de pedir tu presupuesto.<\/p>\n    <div itemscope itemtype=\"https:\/\/schema.org\/FAQPage\">\n            <div class=\"faq-item\" itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\">\n        <div class=\"faq-q\" onclick=\"jnb_095056_toggleFaq(this)\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n          <h3 itemprop=\"name\" style=\"margin:0;font-size:15px;font-weight:600;\">\u00bfCu\u00e1nto tarda la fabricaci\u00f3n?<\/h3>\n          <span style=\"font-size:20px;transition:transform .2s;\" class=\"faq-arrow\">\u25be<\/span>\n        <\/div>\n        <div class=\"faq-a\" itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\n          <span itemprop=\"text\">El plazo habitual es de 10 a 15 d\u00edas laborables desde la aprobaci\u00f3n del dise\u00f1o. Para pedidos urgentes cons\u00faltanos.<\/span>\n        <\/div>\n      <\/div>\n            <div class=\"faq-item\" itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\">\n        <div class=\"faq-q\" onclick=\"jnb_095056_toggleFaq(this)\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n          <h3 itemprop=\"name\" style=\"margin:0;font-size:15px;font-weight:600;\">\u00bfIncluye el precio el IVA?<\/h3>\n          <span style=\"font-size:20px;transition:transform .2s;\" class=\"faq-arrow\">\u25be<\/span>\n        <\/div>\n        <div class=\"faq-a\" itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\n          <span itemprop=\"text\">No. Todos los precios de la p\u00e1gina son sin IVA. El IVA aplicable es del 21% para empresas y particulares en Espa\u00f1a.<\/span>\n        <\/div>\n      <\/div>\n            <div class=\"faq-item\" itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\">\n        <div class=\"faq-q\" onclick=\"jnb_095056_toggleFaq(this)\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n          <h3 itemprop=\"name\" style=\"margin:0;font-size:15px;font-weight:600;\">\u00bfCu\u00e1l es el pedido m\u00ednimo?<\/h3>\n          <span style=\"font-size:20px;transition:transform .2s;\" class=\"faq-arrow\">\u25be<\/span>\n        <\/div>\n        <div class=\"faq-a\" itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\n          <span itemprop=\"text\">No existe m\u00ednimo de unidades, aunque los mejores precios se obtienen a partir de 50 unidades.<\/span>\n        <\/div>\n      <\/div>\n            <div class=\"faq-item\" itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\">\n        <div class=\"faq-q\" onclick=\"jnb_095056_toggleFaq(this)\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n          <h3 itemprop=\"name\" style=\"margin:0;font-size:15px;font-weight:600;\">\u00bfPuedo personalizar el color?<\/h3>\n          <span style=\"font-size:20px;transition:transform .2s;\" class=\"faq-arrow\">\u25be<\/span>\n        <\/div>\n        <div class=\"faq-a\" itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\n          <span itemprop=\"text\">S\u00ed. Disponemos de una amplia paleta de colores de fieltro. Si necesitas un tono concreto, cons\u00faltanos.<\/span>\n        <\/div>\n      <\/div>\n            <div class=\"faq-item\" itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\">\n        <div class=\"faq-q\" onclick=\"jnb_095056_toggleFaq(this)\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\">\n          <h3 itemprop=\"name\" style=\"margin:0;font-size:15px;font-weight:600;\">\u00bfC\u00f3mo solicito un presupuesto real?<\/h3>\n          <span style=\"font-size:20px;transition:transform .2s;\" class=\"faq-arrow\">\u25be<\/span>\n        <\/div>\n        <div class=\"faq-a\" itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\n          <span itemprop=\"text\">Usa el bot\u00f3n &quot;Solicitar presupuesto real&quot; al final de la p\u00e1gina o ll\u00e1manos directamente.<\/span>\n        <\/div>\n      <\/div>\n          <\/div>\n  <\/section>\n  \n<\/div><!-- \/jnb-wrap -->\n<\/div><!-- \/uid -->\n\n<script>\n(function(){\n\/* \u2500\u2500 Data \u2500\u2500 *\/\nconst TIPOS      = [{\"id\":\"bordada\",\"nombre\":\"Bordada\",\"icono\":\"palette\",\"descripcion\":\"Bordado directo sobre fieltro. Acabado premium y duradero.\"},{\"id\":\"serigrafiada\",\"nombre\":\"Serigrafiada\",\"icono\":\"printer\",\"descripcion\":\"Logotipo impreso en serigraf\\u00eda. Ideal para grandes cantidades.\"},{\"id\":\"doble\",\"nombre\":\"Banda doble\",\"icono\":\"layers\",\"descripcion\":\"Dos piezas de fieltro cosidas. M\\u00e1s cuerpo y vistosidad.\"},{\"id\":\"raso\",\"nombre\":\"Banda de raso\",\"icono\":\"sparkles\",\"descripcion\":\"Tejido raso satinado. Brillo y elegancia para la ceremonia.\"},{\"id\":\"trasera\",\"nombre\":\"Terminaci\\u00f3n trasera\",\"icono\":\"scissors\",\"descripcion\":\"Acabado especial en la parte posterior de la banda.\"}];\nconst GAMAS      = [{\"id\":\"bronce\",\"nombre\":\"Gama Bronce\",\"color_hex\":\"#cd7f32\",\"descripcion\":\"Fieltro est\\u00e1ndar. Perfecta para eventos educativos de gran formato.\"},{\"id\":\"plata\",\"nombre\":\"Gama Plata\",\"color_hex\":\"#a8a9ad\",\"descripcion\":\"Fieltro de calidad media-alta. Mayor consistencia y ca\\u00edda.\"},{\"id\":\"oro1\",\"nombre\":\"Gama Oro I\",\"color_hex\":\"#d4af37\",\"descripcion\":\"Fieltro premium de primera calidad. Acabado refinado y lujoso.\"},{\"id\":\"oro2\",\"nombre\":\"Gama Oro II\",\"color_hex\":\"#b8960c\",\"descripcion\":\"La gama m\\u00e1s exclusiva. M\\u00e1xima calidad para ceremonias especiales.\"}];\nconst PRECIOS    = {\"bordada\":{\"bronce\":9.5,\"plata\":12.5,\"oro1\":16,\"oro2\":20},\"serigrafiada\":{\"bronce\":7,\"plata\":9,\"oro1\":12,\"oro2\":15.5},\"doble\":{\"bronce\":13,\"plata\":16.5,\"oro1\":21,\"oro2\":26},\"raso\":{\"bronce\":10,\"plata\":13,\"oro1\":17,\"oro2\":22},\"trasera\":{\"bronce\":11,\"plata\":14,\"oro1\":18,\"oro2\":23}};\nconst DESCUENTOS = [{\"min\":1,\"max\":24,\"pct\":0,\"label\":\"1\\u201324 ud.\"},{\"min\":25,\"max\":49,\"pct\":10,\"label\":\"25\\u201349 ud.\"},{\"min\":50,\"max\":99,\"pct\":15,\"label\":\"50\\u201399 ud.\"},{\"min\":100,\"max\":199,\"pct\":20,\"label\":\"100\\u2013199 ud.\"},{\"min\":200,\"max\":9999,\"pct\":25,\"label\":\"200+ ud.\"}];\nconst COLORES    = [{\"hex\":\"#221E1F\",\"nombre\":\"Negro\"},{\"hex\":\"#FFFFFF\",\"nombre\":\"Blanco\"},{\"hex\":\"#8491C8\",\"nombre\":\"Azul pizarra\"},{\"hex\":\"#3B5BA5\",\"nombre\":\"Azul marino\"},{\"hex\":\"#7BBCD0\",\"nombre\":\"Azul claro\"},{\"hex\":\"#2E7D32\",\"nombre\":\"Verde oscuro\"},{\"hex\":\"#66BB6A\",\"nombre\":\"Verde\"},{\"hex\":\"#FBB04B\",\"nombre\":\"Naranja \\u00e1mbar\"},{\"hex\":\"#FF6F00\",\"nombre\":\"Naranja\"},{\"hex\":\"#F8887D\",\"nombre\":\"Coral\"},{\"hex\":\"#C62828\",\"nombre\":\"Rojo\"},{\"hex\":\"#D4AF37\",\"nombre\":\"Dorado\"},{\"hex\":\"#9E9E9E\",\"nombre\":\"Gris\"},{\"hex\":\"#6D4C41\",\"nombre\":\"Marr\\u00f3n\"},{\"hex\":\"#7B1FA2\",\"nombre\":\"Violeta\"},{\"hex\":\"#E91E63\",\"nombre\":\"Rosa\"},{\"hex\":\"#F5F5F5\",\"nombre\":\"Beige claro\"},{\"hex\":\"#004D40\",\"nombre\":\"Verde botella\"}];\nconst UID        = 'jnb_095056';\n\n\/* \u2500\u2500 State \u2500\u2500 *\/\nlet state = { tipo:null, gama:null, color:null, colorNombre:null, qty:25 };\n\n\/* \u2500\u2500 Helpers \u2500\u2500 *\/\nconst $  = id => document.getElementById(id);\nconst fmt = n => n.toLocaleString('es-ES',{minimumFractionDigits:2,maximumFractionDigits:2});\nfunction getDescuento(qty){ return DESCUENTOS.find(d=>qty>=d.min&&qty<=d.max)||DESCUENTOS[0]; }\nfunction calcPrecio(){\n  if(!state.tipo||!state.gama) return null;\n  const base = (PRECIOS[state.tipo]||{})[state.gama]||0;\n  const desc = getDescuento(state.qty);\n  const precioUnit = base*(1-desc.pct\/100);\n  return {base,precioUnit,total:precioUnit*state.qty,pct:desc.pct};\n}\n\n\/* \u2500\u2500 Build STEP 1: tipos \u2500\u2500 *\/\n(function buildTipos(){\n  const grid = $(UID+'-tipos-grid');\n  if(!grid) return;\n  TIPOS.forEach(t=>{\n    const el = document.createElement('div');\n    el.className = 'opt-card';\n    el.setAttribute('data-tipo', t.id);\n    el.setAttribute('role','option');\n    el.setAttribute('aria-selected','false');\n    el.innerHTML = `<div style=\"display:flex;align-items:center;gap:10px;margin-bottom:8px;\">\n      <div style=\"width:36px;height:36px;background:var(--jn-cream);border-radius:8px;display:flex;align-items:center;justify-content:center;\">\n        <i data-lucide=\"${t.icono}\" style=\"width:18px;height:18px;color:var(--jn-slate);\"><\/i>\n      <\/div>\n      <strong style=\"font-family:'Sora',sans-serif;font-size:14px;\">${t.nombre}<\/strong>\n    <\/div>\n    <p style=\"font-size:12px;color:#6b7280;margin:0;\">${t.descripcion}<\/p>`;\n    el.onclick = ()=>{ selectTipo(el, t.id); };\n    grid.appendChild(el);\n  });\n  if(window.lucide) lucide.createIcons();\n})();\n\n\/* \u2500\u2500 Build STEP 2: gamas \u2500\u2500 *\/\n(function buildGamas(){\n  const grid = $(UID+'-gamas-grid');\n  if(!grid) return;\n  GAMAS.forEach(g=>{\n    const el = document.createElement('div');\n    el.className = 'opt-card';\n    el.setAttribute('data-gama', g.id);\n    el.setAttribute('role','option');\n    el.style.borderColor = g.color_hex;\n    el.innerHTML = `<div style=\"display:flex;align-items:center;gap:8px;margin-bottom:8px;\">\n      <div style=\"width:12px;height:12px;background:${g.color_hex};border-radius:50%;\"><\/div>\n      <strong style=\"font-family:'Sora',sans-serif;font-size:15px;color:${g.color_hex};\">${g.nombre}<\/strong>\n    <\/div>\n    <p style=\"font-size:12px;color:#6b7280;margin:0 0 10px;\">${g.descripcion}<\/p>\n    <div style=\"font-family:'Sora',sans-serif;font-size:13px;font-weight:700;color:${g.color_hex};\">Desde <span class=\"precio-base-${g.id}\">\u2014<\/span> \u20ac\/ud.<\/div>`;\n    el.onclick = ()=>{ selectGama(el, g.id); };\n    grid.appendChild(el);\n  });\n})();\n\n\/* \u2500\u2500 Step logic \u2500\u2500 *\/\nwindow[UID+'_goStep'] = function(n){\n  for(let i=1;i<=5;i++){\n    const sec = $(UID+'-step-'+i);\n    if(sec) sec.style.display = i===n?'block':'none';\n    const dot = $(UID+'-dot-'+i);\n    if(dot) dot.className='step-dot '+(i<n?'done':i===n?'active':'pending');\n    if(i<5){const line=$(UID+'-line-'+i);if(line)line.className='step-line '+(i<n?'done':'');}\n  }\n  if(n===3) buildColorGrid();\n  if(n===4) buildDiscountTiers();\n  if(n===5) buildSummary();\n  if(n===2) updateGamaHints();\n  if(window.lucide) lucide.createIcons();\n  window.scrollTo({top:0,behavior:'smooth'});\n};\n\nfunction selectTipo(el,tipo){\n  document.querySelectorAll('#'+UID+'-tipos-grid .opt-card').forEach(c=>{c.classList.remove('selected');c.setAttribute('aria-selected','false');});\n  el.classList.add('selected'); el.setAttribute('aria-selected','true');\n  state.tipo=tipo; state.gama=null; state.color=null;\n  const btn=$(UID+'-btn-next-1');btn.style.opacity='1';btn.style.pointerEvents='auto';btn.removeAttribute('aria-disabled');\n  document.querySelectorAll('#'+UID+'-gamas-grid .opt-card').forEach(c=>c.classList.remove('selected'));\n  const btn2=$(UID+'-btn-next-2');if(btn2){btn2.style.opacity='.4';btn2.style.pointerEvents='none';}\n}\n\nfunction selectGama(el,gama){\n  document.querySelectorAll('#'+UID+'-gamas-grid .opt-card').forEach(c=>c.classList.remove('selected'));\n  el.classList.add('selected'); state.gama=gama;\n  const btn=$(UID+'-btn-next-2');btn.style.opacity='1';btn.style.pointerEvents='auto';btn.removeAttribute('aria-disabled');\n}\n\nfunction updateGamaHints(){\n  if(!state.tipo) return;\n  const p=PRECIOS[state.tipo]||{};\n  GAMAS.forEach(g=>{\n    document.querySelectorAll('.precio-base-'+g.id).forEach(el=>el.textContent=fmt(p[g.id]||0));\n  });\n}\n\nfunction buildColorGrid(){\n  const grid=$(UID+'-color-grid'); grid.innerHTML='';\n  COLORES.forEach(c=>{\n    const sw=document.createElement('div');\n    sw.className='color-swatch'+(state.color===c.hex?' selected':'');\n    sw.style.background=c.hex;\n    const light=(c.hex==='#FFFFFF'||c.hex==='#F5F5F5'||c.hex==='#fff');\n    sw.style.border='3px solid '+(state.color===c.hex?'#221E1F':(light?'#d1d5db':'transparent'));\n    sw.title=c.nombre; sw.setAttribute('role','option'); sw.setAttribute('aria-label',c.nombre);\n    sw.onclick=()=>{\n      state.color=c.hex; state.colorNombre=c.nombre;\n      document.querySelectorAll('#'+UID+'-color-grid .color-swatch').forEach(s=>{\n        s.classList.remove('selected');\n        const l=(s.style.background==='#FFFFFF'||s.title==='Blanco'||s.title==='Beige claro');\n        s.style.borderColor=l?'#d1d5db':'transparent';\n      });\n      sw.classList.add('selected'); sw.style.borderColor='#221E1F';\n      $(UID+'-color-label').textContent='\u2713 Color seleccionado: '+c.nombre;\n      const btn=$(UID+'-btn-next-3');btn.style.opacity='1';btn.style.pointerEvents='auto';btn.removeAttribute('aria-disabled');\n    };\n    grid.appendChild(sw);\n  });\n}\n\nfunction buildDiscountTiers(){\n  const container=$(UID+'-discount-tiers'); container.innerHTML='';\n  DESCUENTOS.forEach(d=>{\n    const isActive=state.qty>=d.min&&state.qty<=d.max;\n    const pill=document.createElement('div');\n    pill.style.cssText=`padding:8px 10px;border-radius:8px;text-align:center;font-family:'Sora',sans-serif;font-size:12px;font-weight:600;\n      background:${isActive?'var(--jn-slate)':'#fff'};color:${isActive?'#fff':'#6b7280'};\n      border:2px solid ${isActive?'var(--jn-slate)':'#e5e7eb'};`;\n    pill.innerHTML=`<div>${d.label}<\/div><div style=\"font-size:14px;font-weight:700;margin-top:2px;\">${d.pct>0?'-'+d.pct+'%':'Sin dto.'}<\/div>`;\n    container.appendChild(pill);\n  });\n  updateLivePrice();\n}\n\nwindow[UID+'_changeQty'] = function(delta){\n  const input=$(UID+'-qty-input');\n  const nv=Math.max(1,Math.min(9999,parseInt(input.value||1)+delta));\n  input.value=nv; state.qty=nv; updateLivePrice(); buildDiscountTiers();\n};\n\nwindow[UID+'_updateQty'] = function(){\n  const v=parseInt($(UID+'-qty-input').value)||1;\n  state.qty=Math.max(1,Math.min(9999,v)); updateLivePrice(); buildDiscountTiers();\n};\n\nfunction updateLivePrice(){\n  const r=calcPrecio(); if(!r) return;\n  $(UID+'-total-display').textContent=fmt(r.total)+' \u20ac';\n  $(UID+'-unit-display').textContent=fmt(r.precioUnit)+' \u20ac\/ud. \u00b7 '+state.qty+' unidades';\n  $(UID+'-discount-display').innerHTML=r.pct>0?`<span class=\"discount-pill\">\u2212${r.pct}% descuento por volumen<\/span>`:'';\n}\n\nfunction buildSummary(){\n  const r=calcPrecio(); if(!r) return;\n  const tipoObj=TIPOS.find(t=>t.id===state.tipo)||{nombre:state.tipo};\n  const gamaObj=GAMAS.find(g=>g.id===state.gama)||{nombre:state.gama};\n  const rows=[\n    ['Tipo de banda',tipoObj.nombre],\n    ['Gama de fieltro',gamaObj.nombre],\n    ['Color',`<span style=\"display:inline-flex;align-items:center;gap:6px;\"><span style=\"display:inline-block;width:14px;height:14px;background:${state.color};border-radius:50%;border:1px solid #ccc;\"><\/span>${state.colorNombre}<\/span>`],\n    ['Cantidad',state.qty+' unidades'],\n    ['Precio base\/ud.',fmt(r.base)+' \u20ac'],\n    ['Descuento aplicado',r.pct>0?`<span class=\"discount-pill\">\u2212${r.pct}%<\/span>`:'Sin descuento'],\n    ['Precio final\/ud.','<strong>'+fmt(r.precioUnit)+' \u20ac<\/strong>'],\n  ];\n  $(UID+'-summary-table').innerHTML=rows.map(([k,v])=>`<div class=\"summary-row\"><span style=\"color:#6b7280;font-size:14px;\">${k}<\/span><span style=\"font-size:14px;font-weight:600;\">${v}<\/span><\/div>`).join('');\n  $(UID+'-final-total').textContent=fmt(r.total)+' \u20ac';\n  $(UID+'-final-unit').textContent=fmt(r.precioUnit)+' \u20ac\/ud. \u00b7 sin IVA';\n  $(UID+'-final-discount-wrap').innerHTML=r.pct>0\n    ?`<span class=\"discount-pill\" style=\"font-size:14px;padding:6px 16px;\">\u2212${r.pct}% por volumen<\/span><div style=\"font-size:12px;opacity:.7;margin-top:6px;\">Ahorro: ${fmt(r.base*state.qty-r.total)} \u20ac<\/div>`:'';\n  buildBandPreview();\n}\n\n\/* \u2500\u2500 Band visual preview \u2500\u2500 *\/\nfunction buildBandPreview(){\n  const container=$(UID+'-band-preview-svg');\n  if(!container||!state.tipo||!state.gama||!state.color) return;\n  const tipoObj=TIPOS.find(t=>t.id===state.tipo)||{nombre:state.tipo};\n  const gamaObj=GAMAS.find(g=>g.id===state.gama)||{nombre:state.gama,color_hex:'#d4af37'};\n  const color=state.color;\n  const gamaColor=gamaObj.color_hex||'#d4af37';\n  const light=isLightColor(color);\n  const textColor=light?'#221E1F':'#ffffff';\n  const darkColor=darkenColor(color,0.22);\n  const uid2=UID+'bp';\n  const strokeColor=light?'rgba(0,0,0,0.13)':'rgba(255,255,255,0.13)';\n\n  let defs=`<filter id=\"${uid2}sh\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\">\n    <feDropShadow dx=\"0\" dy=\"6\" stdDeviation=\"10\" flood-color=\"rgba(0,0,0,0.22)\"\/>\n  <\/filter>`;\n  let backLayer='';\n  let decoLayer='';\n  let overlayLayer='';\n\n  if(state.tipo==='doble'){\n    backLayer=`<rect x=\"32\" y=\"44\" width=\"288\" height=\"118\" rx=\"10\"\n      transform=\"rotate(-8 170 101)\" fill=\"${darkColor}\" opacity=\"0.75\"\/>`;\n  }\n  if(state.tipo==='bordada'){\n    defs+=`<pattern id=\"${uid2}emb\" x=\"0\" y=\"0\" width=\"22\" height=\"22\"\n      patternUnits=\"userSpaceOnUse\" patternTransform=\"rotate(-8)\">\n      <circle cx=\"11\" cy=\"11\" r=\"2.5\" fill=\"${textColor}\" opacity=\"0.18\"\/>\n      <circle cx=\"0\"  cy=\"0\"  r=\"1.8\" fill=\"${textColor}\" opacity=\"0.12\"\/>\n      <circle cx=\"22\" cy=\"22\" r=\"1.8\" fill=\"${textColor}\" opacity=\"0.12\"\/>\n    <\/pattern>`;\n    decoLayer=`<rect x=\"26\" y=\"36\" width=\"288\" height=\"118\" rx=\"10\"\n      transform=\"rotate(-8 170 95)\" fill=\"url(#${uid2}emb)\"\/>`;\n    overlayLayer=`<circle cx=\"170\" cy=\"95\" r=\"27\" fill=\"rgba(255,255,255,0.13)\"\n      stroke=\"${textColor}\" stroke-width=\"1.5\" stroke-opacity=\"0.25\" transform=\"rotate(-8 170 95)\"\/>\n      <text x=\"170\" y=\"102\" text-anchor=\"middle\" font-size=\"24\" transform=\"rotate(-8 170 95)\">\ud83c\udf93<\/text>`;\n  }\n  if(state.tipo==='serigrafiada'){\n    defs+=`<pattern id=\"${uid2}silk\" x=\"0\" y=\"0\" width=\"9\" height=\"9\" patternUnits=\"userSpaceOnUse\">\n      <circle cx=\"4.5\" cy=\"4.5\" r=\"1.4\" fill=\"${textColor}\" opacity=\"0.13\"\/>\n    <\/pattern>`;\n    decoLayer=`<rect x=\"26\" y=\"36\" width=\"288\" height=\"118\" rx=\"10\"\n      transform=\"rotate(-8 170 95)\" fill=\"url(#${uid2}silk)\"\/>\n      <rect x=\"128\" y=\"66\" width=\"84\" height=\"58\" rx=\"9\"\n      transform=\"rotate(-8 170 95)\" fill=\"rgba(255,255,255,0.13)\"\n      stroke=\"${textColor}\" stroke-opacity=\"0.18\" stroke-width=\"1.5\"\/>`;\n    overlayLayer=`<text x=\"170\" y=\"102\" text-anchor=\"middle\" font-size=\"22\" transform=\"rotate(-8 170 95)\">\ud83d\udda8\ufe0f<\/text>`;\n  }\n  if(state.tipo==='raso'){\n    defs+=`<linearGradient id=\"${uid2}shine\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n      <stop offset=\"0%\"   stop-color=\"#fff\" stop-opacity=\"0.48\"\/>\n      <stop offset=\"35%\"  stop-color=\"#fff\" stop-opacity=\"0.07\"\/>\n      <stop offset=\"65%\"  stop-color=\"#fff\" stop-opacity=\"0.02\"\/>\n      <stop offset=\"100%\" stop-color=\"#fff\" stop-opacity=\"0.28\"\/>\n    <\/linearGradient>`;\n    decoLayer=`<rect x=\"26\" y=\"36\" width=\"288\" height=\"118\" rx=\"10\"\n      transform=\"rotate(-8 170 95)\" fill=\"url(#${uid2}shine)\"\/>`;\n    overlayLayer=`<text x=\"170\" y=\"102\" text-anchor=\"middle\" font-size=\"24\" transform=\"rotate(-8 170 95)\">\u2728<\/text>`;\n  }\n  if(state.tipo==='trasera'){\n    decoLayer=`\n      <line x1=\"54\"  y1=\"24\" x2=\"40\"  y2=\"168\" stroke=\"${textColor}\" stroke-width=\"1.5\"\n        stroke-dasharray=\"6,5\" opacity=\"0.22\" transform=\"rotate(-8 170 95)\"\/>\n      <line x1=\"288\" y1=\"24\" x2=\"274\" y2=\"168\" stroke=\"${textColor}\" stroke-width=\"1.5\"\n        stroke-dasharray=\"6,5\" opacity=\"0.22\" transform=\"rotate(-8 170 95)\"\/>`;\n    overlayLayer=`<text x=\"170\" y=\"102\" text-anchor=\"middle\" font-size=\"22\" transform=\"rotate(-8 170 95)\">\u2702\ufe0f<\/text>`;\n  }\n  if(!overlayLayer){\n    overlayLayer=`<circle cx=\"170\" cy=\"95\" r=\"26\" fill=\"rgba(255,255,255,0.13)\" transform=\"rotate(-8 170 95)\"\/>\n      <text x=\"170\" y=\"102\" text-anchor=\"middle\" font-size=\"22\" transform=\"rotate(-8 170 95)\">\ud83c\udf93<\/text>`;\n  }\n\n  \/* Gama label badge color: keep readable *\/\n  const gamaLight=isLightColor(gamaColor);\n  const gamaTxt=gamaLight?'#221E1F':'#ffffff';\n\n  container.innerHTML=`<svg viewBox=\"0 0 340 205\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n    class=\"band-preview-svg\" role=\"img\" aria-label=\"Vista previa banda de graduaci\u00f3n\">\n    <defs>${defs}<\/defs>\n    ${backLayer}\n    <!-- Gama trim border -->\n    <rect x=\"18\" y=\"28\" width=\"304\" height=\"134\" rx=\"14\"\n      transform=\"rotate(-8 170 95)\" fill=\"${gamaColor}\" filter=\"url(#${uid2}sh)\"\/>\n    <!-- Main band body -->\n    <rect x=\"26\" y=\"36\" width=\"288\" height=\"118\" rx=\"10\"\n      transform=\"rotate(-8 170 95)\" fill=\"${color}\" stroke=\"${strokeColor}\" stroke-width=\"1\"\/>\n    <!-- Tipo decoration -->\n    ${decoLayer}\n    <!-- Central emblem -->\n    ${overlayLayer}\n    <!-- Gama name badge -->\n    <rect x=\"214\" y=\"151\" width=\"104\" height=\"22\" rx=\"11\" fill=\"${gamaColor}\" opacity=\"0.92\"\/>\n    <text x=\"266\" y=\"166\" text-anchor=\"middle\" fill=\"${gamaTxt}\" font-size=\"10.5\"\n      font-family=\"'Sora',sans-serif\" font-weight=\"700\">${gamaObj.nombre}<\/text>\n  <\/svg>`;\n\n  \/* Tags below the SVG *\/\n  const tags=$(UID+'-band-preview-tags');\n  if(tags){\n    const dot=`<span style=\"display:inline-block;width:9px;height:9px;border-radius:50%;background:${textColor};opacity:0.5;\"><\/span>`;\n    tags.innerHTML=`\n      <span class=\"band-tag\" style=\"background:${color};color:${textColor};border:2px solid rgba(0,0,0,0.1);\">${dot} ${state.colorNombre}<\/span>\n      <span class=\"band-tag\" style=\"background:${gamaColor};color:${gamaTxt};\">\u25c6 ${gamaObj.nombre}<\/span>\n      <span class=\"band-tag\" style=\"background:var(--jn-cream);color:var(--jn-dark);border:1.5px solid #e5e7eb;\">${tipoObj.nombre}<\/span>\n    `;\n  }\n}\n\nfunction isLightColor(hex){\n  if(!hex||hex.length<7) return false;\n  const c=hex.replace('#','');\n  const r=parseInt(c.substr(0,2),16);\n  const g=parseInt(c.substr(2,2),16);\n  const b=parseInt(c.substr(4,2),16);\n  return (r*299+g*587+b*114)\/1000>155;\n}\n\nfunction darkenColor(hex,amount){\n  if(!hex||hex.length<7) return hex;\n  const c=hex.replace('#','');\n  const r=Math.max(0,parseInt(c.substr(0,2),16)-Math.round(255*amount));\n  const g=Math.max(0,parseInt(c.substr(2,2),16)-Math.round(255*amount));\n  const b=Math.max(0,parseInt(c.substr(4,2),16)-Math.round(255*amount));\n  return '#'+[r,g,b].map(x=>x.toString(16).padStart(2,'0')).join('');\n}\n\nwindow[UID+'_resetAll'] = function(){\n  state={tipo:null,gama:null,color:null,colorNombre:null,qty:25};\n  document.querySelectorAll('#'+UID+'-tipos-grid .opt-card,#'+UID+'-gamas-grid .opt-card').forEach(c=>c.classList.remove('selected'));\n  ['btn-next-1','btn-next-2','btn-next-3'].forEach(id=>{\n    const b=$(UID+'-'+id);if(b){b.style.opacity='.4';b.style.pointerEvents='none';}\n  });\n  const qi=$(UID+'-qty-input');if(qi)qi.value=25;\n  window[UID+'_goStep'](1);\n};\n\n\/* FAQ toggle *\/\nwindow[UID+'_toggleFaq'] = function(el){\n  const ans=el.nextElementSibling;\n  const arrow=el.querySelector('.faq-arrow');\n  const open=ans.classList.toggle('open');\n  el.classList.toggle('open',open);\n  el.setAttribute('aria-expanded',open);\n  if(arrow) arrow.style.transform=open?'rotate(180deg)':'';\n};\n\n\/* Init *\/\nwindow[UID+'_goStep'](1);\nif(window.lucide) lucide.createIcons();\n})();\n<\/script>\n    \n\n\n<style>\n    .wp-block-post-title {\n        display: none !important;\n    }\n\n    .wp-block-group.has-global-padding.is-layout-constrained {\n        padding-top: 0 !important;\n        padding-bottom: 0 !important;\n    }\n\n    main#wp--skip-link--target {\n        margin-top: 0 !important;\n    }\n\n    .entry-content.wp-block-post-content,\n    .wp-block-post-content,\n    .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {\n        max-width: 100% !important;\n        margin-left: 0 !important;\n        margin-right: 0 !important;\n    }\n\n    .wp-site-blocks,\n    .has-global-padding {\n        padding-right: 0 !important;\n        padding-left: 0 !important;\n    }\n\n    .<?=$uid?> .jnb-wrap {\n        padding-left: 16px !important;\n        padding-right: 16px !important;\n    }\n<\/style>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tallerbordados.com\/index.php\/wp-json\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tallerbordados.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tallerbordados.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tallerbordados.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tallerbordados.com\/index.php\/wp-json\/wp\/v2\/comments?post=6"}],"version-history":[{"count":16,"href":"https:\/\/tallerbordados.com\/index.php\/wp-json\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":48,"href":"https:\/\/tallerbordados.com\/index.php\/wp-json\/wp\/v2\/pages\/6\/revisions\/48"}],"wp:attachment":[{"href":"https:\/\/tallerbordados.com\/index.php\/wp-json\/wp\/v2\/media?parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}