{"id":6970,"date":"2026-06-27T22:06:11","date_gmt":"2026-06-27T22:06:11","guid":{"rendered":"https:\/\/clubfreestylebjj.com\/?page_id=6970"},"modified":"2026-07-13T18:39:30","modified_gmt":"2026-07-13T18:39:30","slug":"inicio","status":"publish","type":"page","link":"https:\/\/clubfreestylebjj.com\/","title":{"rendered":"Club Free Style BJJ"},"content":{"rendered":"\n\n<style>\n  .entry-title,.entry-header,.site-header,.site-footer,.post-navigation,.comments-area{display:none!important}\n  .site,.site-content,.site-container,.content-container,.content-area,.site-main,.entry,.entry-content-wrap,.entry-content,.wp-site-blocks,.wp-site-blocks main,#primary,#main{margin:0!important;padding:0!important;max-width:none!important}\n  .content-style-boxed .entry-content-wrap,.content-style-unboxed .entry-content-wrap,.site-main>article{margin:0!important;padding:0!important;box-shadow:none!important;border-radius:0!important;background:transparent!important}\n  .entry-content>*{max-width:none!important}\n  .fsbjj{--black:#070707;--ink:#111111;--paper:#f4f0e8;--cream:#fffaf1;--muted:#6f675d;--gold:#c57922;--blue:#0757b8;--red:#d71920;--line:rgba(17,17,17,.16);font-family:Inter,Arial,sans-serif;color:var(--ink);background:var(--paper);margin-left:calc(50% - 50vw);width:100vw;overflow:hidden}\n  .fsbjj *{box-sizing:border-box;letter-spacing:0}\n  .fsbjj a{color:inherit}\n  .fs-wrap{width:min(1180px,calc(100% - 32px));margin:0 auto}\n  .fs-nav{position:sticky;top:0;z-index:40;background:rgba(7,7,7,.97);color:#fff;border-bottom:1px solid rgba(255,255,255,.12)}\n  .fs-nav .fs-wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:112px}\n  .fs-brand{display:flex;align-items:center;gap:16px;text-decoration:none;min-width:360px}\n  .fs-brand img{width:106px;height:106px;object-fit:contain;flex:0 0 auto}\n  .fs-brand strong{display:block;font-size:18px;line-height:1;text-transform:uppercase;font-weight:1000}\n  .fs-brand span span{display:block;color:#d4cabe;font-size:14px;margin-top:6px}\n  .fs-links{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:4px}\n  .fs-links a{font-size:12px;font-weight:950;text-transform:uppercase;text-decoration:none;color:#f8f0e6;padding:10px 9px;border-radius:4px}\n  .fs-links a:hover{background:rgba(255,255,255,.12)}\n  .fs-hero{position:relative;min-height:680px;background:#050505;color:#fff;display:grid;align-items:start}\n  .fs-hero:before{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.92),rgba(0,0,0,.56),rgba(0,0,0,.12));z-index:1}\n  .fs-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}\n  .fs-hero .fs-wrap{position:relative;z-index:2;padding:74px 0 78px}\n  .fs-kicker{display:flex;align-items:center;gap:14px;color:#f0d9bd;font-size:13px;font-weight:1000;text-transform:uppercase;margin-bottom:24px}\n  .fs-kicker:before{content:\"\";width:58px;height:4px;background:var(--gold);display:block}\n  h1,h2,h3{margin:0;line-height:.96}\n  .fsbjj h1{font-size:88px;line-height:.92;margin:0!important;text-transform:uppercase;font-weight:1000;max-width:920px;color:#fff}\n  .fsbjj h2{font-size:56px;line-height:.98;margin:0!important;text-transform:uppercase;font-weight:1000}\n  .fsbjj h3{font-size:24px;font-weight:1000;line-height:1.08;margin:0 0 16px!important}\n  p{font-size:18px;line-height:1.62;color:var(--muted);margin:0}\n  .fs-lead{max-width:760px;color:#efe7da;font-size:25px;line-height:1.42;margin-top:28px}\n  .fs-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}\n  .fs-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border:1px solid var(--black);background:var(--black);color:#fff!important;text-decoration:none!important;font-size:13px;font-weight:1000;text-transform:uppercase;border-radius:4px}\n  .fs-btn.fs-gold{background:var(--gold);border-color:var(--gold);color:#090909!important}\n  .fs-btn.fs-light{background:#fff;border-color:#fff;color:#111!important}\n  .fs-btn.fs-ghost{background:transparent;color:#111!important}\n  .fs-hero .fs-btn.fs-ghost{color:#fff!important;border-color:rgba(255,255,255,.72)}\n  .fs-band .fs-btn.fs-ghost{color:#fff!important;border-color:rgba(255,255,255,.72)}\n  .fs-section{padding:86px 0}\n  .fs-band{background:var(--black);color:#fff}\n  .fs-band p{color:#d8cec0}\n  .fs-split{display:grid;grid-template-columns:1.06fr .94fr;gap:64px;align-items:center}\n  .fs-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}\n  .fs-grid.fs-two{grid-template-columns:repeat(2,minmax(0,1fr))}\n  .fs-grid.fs-four{grid-template-columns:repeat(4,minmax(0,1fr))}\n  .fs-panel{background:#fff;border:1px solid var(--line);border-top:6px solid var(--gold);padding:28px;border-radius:6px;min-height:100%;display:flex;flex-direction:column;align-items:flex-start}\n  .fs-panel h3{width:100%}\n  .fs-panel p{font-size:16px;margin-top:12px;color:var(--muted)}\n  .fs-band .fs-panel p{color:var(--muted)}\n  .fs-panel .fs-logo{width:100%;height:92px;max-width:260px;object-fit:contain;object-position:left center;margin-bottom:24px}\n  .fs-card-link{margin-top:auto;padding-top:24px;width:100%}\n  .fs-card-link .fs-btn{min-width:235px}\n  .fs-panel .fs-actions{margin-top:auto;padding-top:24px;width:100%}\n  .fs-panel .fs-actions .fs-btn{min-width:200px}\n  .fs-path-grid .fs-panel{min-height:320px}\n  .fs-price{display:block;font-size:42px;line-height:1;font-weight:1000;color:var(--ink);margin-bottom:14px}\n  .fs-tag{display:inline-flex;align-items:center;min-height:30px;padding:0 10px;background:var(--paper);border:1px solid var(--line);border-radius:4px;color:#332d26;font-size:12px;font-weight:1000;text-transform:uppercase;margin-bottom:16px}\n  .fs-partner-strip{background:#fff;border-bottom:1px solid var(--line);padding:26px 0}\n  .fs-partner-strip .fs-wrap{display:flex;align-items:center;justify-content:center;gap:54px;flex-wrap:wrap}\n  .fs-partner-strip span{font-size:12px;font-weight:1000;text-transform:uppercase;color:var(--muted);width:100%;text-align:center}\n  .fs-partner-strip a{display:inline-flex;align-items:center;justify-content:center;min-width:260px;min-height:92px;padding:10px 18px;border:1px solid var(--line);border-radius:6px;background:#fff;text-decoration:none}\n  .fs-partner-strip img{max-width:250px;max-height:76px;object-fit:contain}\n  .fs-media{width:100%;background:#111;border-radius:6px;overflow:hidden}\n  .fs-media img{display:block;width:100%;height:100%;object-fit:cover}\n  .fs-media.fs-wide{aspect-ratio:16\/10}\n  .fs-media.fs-tall{aspect-ratio:4\/5}\n  .fs-media.fs-banner{aspect-ratio:20\/9}\n  .fs-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid rgba(255,255,255,.16);border-left:1px solid rgba(255,255,255,.16);margin-top:44px}\n  .fs-stat{padding:24px;border-right:1px solid rgba(255,255,255,.16);border-bottom:1px solid rgba(255,255,255,.16)}\n  .fs-stat strong{display:block;font-size:28px;color:#fff;line-height:1.1}\n  .fs-stat span{display:block;color:#d0c6b8;font-size:14px;margin-top:8px;line-height:1.45}\n  .fs-page-hero{background:#0a0a0a;color:#fff;padding:98px 0 72px}\n  .fs-page-hero h1{font-size:76px}\n  .fs-page-hero p{color:#ddd1c0;max-width:820px;margin-top:24px;font-size:22px}\n  .fs-breadcrumb{font-size:13px;font-weight:1000;text-transform:uppercase;color:#d29a5d;margin-bottom:20px}\n  .fs-note{border-left:6px solid var(--blue);background:#fff;padding:22px 24px;margin-top:26px;color:var(--muted);font-size:16px;line-height:1.55}\n  .fs-list{display:grid;gap:12px;margin-top:24px}\n  .fs-list div{background:#fff;border-left:5px solid var(--gold);padding:18px 20px;color:#332d26;font-size:16px;line-height:1.55}\n  .fs-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-top:30px}\n  .fs-step{background:#fff;padding:24px}\n  .fs-step strong{display:block;font-size:18px}\n  .fs-step span{display:block;color:var(--muted);font-size:15px;line-height:1.5;margin-top:8px}\n  .fs-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:26px}\n  .fs-form label{display:grid;gap:7px;font-size:13px;font-weight:950;text-transform:uppercase;color:#342d26}\n  .fs-form input,.fs-form select,.fs-form textarea{width:100%;border:1px solid var(--line);background:#fff;padding:13px 12px;border-radius:4px;font:inherit;color:#111}\n  .fs-form textarea,.fs-form .fs-full{grid-column:1\/-1}\n  .fs-form .fs-check{display:flex;gap:10px;align-items:flex-start;text-transform:none;font-weight:650;color:var(--muted);line-height:1.45}\n  .fs-form .fs-check input{width:auto;margin-top:5px}\n  .fs-form button{grid-column:1\/-1;cursor:pointer}\n  .fs-social{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}\n  .fs-social a{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 14px;border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.06);color:#fff!important;text-decoration:none!important;font-size:12px;font-weight:1000;text-transform:uppercase;border-radius:4px}\n  .fs-social a:hover{background:rgba(255,255,255,.14)}\n  .fs-section .fs-social a{background:#fff;border-color:var(--line);color:#111!important}\n  .fs-section .fs-social a:hover{background:var(--paper)}\n  .fs-source-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}\n  .fs-source-meta span{display:inline-flex;align-items:center;min-height:32px;padding:0 10px;border:1px solid var(--line);background:#fff;color:#3b352d;font-size:11px;font-weight:950;text-transform:uppercase;border-radius:4px}\n  .fs-source-meta .fs-live{background:var(--gold);border-color:var(--gold);color:#090909}\n  .fs-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:30px}\n  .fs-source-card{background:#fff;border:1px solid var(--line);border-top:6px solid var(--gold);border-radius:6px;padding:24px;min-height:100%;display:flex;flex-direction:column}\n  .fs-source-card h3{font-size:22px}\n  .fs-source-card p{font-size:15px;margin-top:10px}\n  .fs-source-card small{display:block;color:#6f675d;font-size:12px;line-height:1.45;margin-top:auto;padding-top:18px}\n  .fs-source-list{display:grid;gap:8px;margin-top:18px}\n  .fs-source-list div{border-left:4px solid var(--gold);background:var(--paper);padding:12px 14px;font-size:14px;line-height:1.45;color:#332d26}\n  .fs-org-logo{width:100%;height:108px;object-fit:contain;object-position:left center;margin-bottom:22px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:12px}\n  .fs-org-card{min-height:420px}\n  .fs-org-card .fs-card-link .fs-btn{width:100%}\n  .fs-org-detail{display:grid;grid-template-columns:300px 1fr;gap:34px;align-items:center;background:#fff;border:1px solid var(--line);border-top:6px solid var(--gold);border-radius:6px;padding:30px;margin-top:32px}\n  .fs-org-detail img{width:100%;max-height:150px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:6px;padding:16px}\n  .fs-org-detail h2{font-size:44px}\n  .fs-source-pill{display:inline-flex;align-items:center;min-height:30px;padding:0 10px;background:#0b0b0b;color:#fff;border-radius:4px;font-size:11px;font-weight:1000;text-transform:uppercase;margin:0 8px 8px 0}\n  .fs-data-note{margin-top:28px;border-left:6px solid var(--blue);background:#fff;padding:22px 24px;color:var(--muted);font-size:16px;line-height:1.55}\n  .fs-data-table{background:#fff;border:1px solid var(--line);border-top:6px solid var(--gold);border-radius:6px;overflow:auto;margin-top:28px}\n  .fs-data-table table{width:100%;border-collapse:collapse;min-width:720px}\n  .fs-data-table th,.fs-data-table td{padding:15px 16px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:14px;line-height:1.45}\n  .fs-data-table th{background:#0b0b0b;color:#fff;text-transform:uppercase;font-size:11px;font-weight:1000;letter-spacing:0}\n  .fs-data-table tr:last-child td{border-bottom:0}\n  .fs-data-table strong{display:block;color:#111}\n  .fs-track-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:28px}\n  .fs-track-box{background:#fff;border:1px solid var(--line);border-left:6px solid var(--blue);border-radius:6px;padding:22px}\n  .fs-track-box h3{font-size:20px}\n  .fs-track-box p,.fs-track-box li{font-size:15px;line-height:1.5;color:var(--muted)}\n  .fs-track-box ul{margin:12px 0 0 18px;padding:0}\n  .fs-refresh-rule{margin-top:28px;background:#0b0b0b;color:#fff;border-left:6px solid var(--gold);border-radius:6px;padding:24px}\n  .fs-refresh-rule h3{color:#fff}\n  .fs-refresh-rule p{color:#d8cec0;font-size:16px}\n  .fs-refresh-rule code{display:block;white-space:normal;margin-top:12px;color:#f2d4aa;font-size:12px}\n  .fs-update-card{background:#0b0b0b;color:#fff;border:1px solid rgba(255,255,255,.18);border-left:6px solid var(--gold);padding:24px;border-radius:6px}\n  .fs-update-card h3{color:#fff}\n  .fs-update-card p{color:#d8cec0;font-size:16px}\n  .fs-next-events{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:34px}\n  .fs-next-intro{max-width:900px}\n  .fs-event-card{background:#fff;border:1px solid var(--line);border-top:7px solid var(--gold);border-radius:6px;padding:28px;display:flex;flex-direction:column;min-height:100%}\n  .fs-event-card.is-international{border-top-color:var(--blue)}\n  .fs-event-card h3{font-size:28px;margin-top:8px!important}\n  .fs-event-card p{font-size:16px;margin-top:14px}\n  .fs-event-card .fs-event-date{display:inline-flex;align-items:center;width:max-content;min-height:34px;padding:0 12px;background:#0b0b0b;color:#fff;border-radius:4px;font-size:12px;font-weight:1000;text-transform:uppercase}\n  .fs-event-meta{display:grid;gap:8px;margin-top:20px}\n  .fs-event-meta div{border-left:4px solid var(--gold);background:var(--paper);padding:10px 12px;color:#332d26;font-size:14px;line-height:1.4}\n  .fs-event-card.is-international .fs-event-meta div{border-left-color:var(--blue)}\n  .fs-event-source{display:block;color:#6f675d;font-size:12px;line-height:1.45;margin-top:auto;padding-top:22px}\n  .fs-footer{background:#050505;color:#fff;padding:46px 0}\n  .fs-footer .fs-wrap{display:grid;grid-template-columns:1.2fr .8fr 1fr;gap:24px;align-items:start}\n  .fs-footer a{color:#fff;text-decoration:none}\n  .fs-muted{color:var(--muted)}\n  @media (max-width:1020px){.fsbjj h1{font-size:64px}.fs-page-hero h1{font-size:58px}.fs-brand{min-width:300px}.fs-brand img{width:88px;height:88px}.fs-split,.fs-grid,.fs-grid.fs-two,.fs-grid.fs-four,.fs-stats,.fs-steps,.fs-footer .fs-wrap,.fs-source-grid,.fs-org-detail,.fs-next-events,.fs-track-grid{grid-template-columns:1fr}.fs-path-grid .fs-panel{min-height:0}.fs-section{padding:70px 0}.fs-hero{min-height:620px}.fs-hero .fs-wrap{padding:66px 0 72px}}\n  @media (max-width:720px){.fs-nav .fs-wrap{align-items:flex-start;flex-direction:column;padding:12px 0}.fs-brand{min-width:0}.fs-links{justify-content:flex-start}.fs-links a{font-size:11px;padding:8px 7px}.fs-brand img{width:76px;height:76px}.fs-brand strong{font-size:16px}.fs-brand span span{font-size:12px}.fs-partner-strip .fs-wrap{gap:14px}.fs-partner-strip a{width:100%;min-width:0}.fsbjj h1{font-size:42px}.fsbjj h2{font-size:36px}.fs-page-hero h1{font-size:40px}.fs-lead{font-size:20px}.fs-hero{min-height:560px}.fs-hero .fs-wrap{padding:54px 0 60px}.fs-form{grid-template-columns:1fr}.fs-panel{padding:22px}.fs-media.fs-banner{aspect-ratio:16\/11}}\n\n\/* fs-structure-menu-v1 *\/\n  .fs-floating-menu{position:relative;z-index:90;flex:0 0 clamp(220px,24vw,320px);margin-left:auto}\n  .fs-floating-menu>summary{list-style:none;display:flex;align-items:center;justify-content:center;gap:14px;min-height:58px;padding:0 22px;background:#c77b22;color:#080808;border:1px solid rgba(255,255,255,.08);border-radius:3px;box-shadow:0 12px 28px rgba(0,0,0,.24);cursor:pointer;font-size:15px;font-weight:950;text-transform:uppercase}\n  .fs-floating-menu>summary::-webkit-details-marker{display:none}\n  .fs-menu-bars{display:grid;gap:5px;width:36px;flex:0 0 auto}\n  .fs-menu-bars i{display:block;height:4px;background:#080808}\n  .fs-menu-panel{position:absolute;right:0;top:calc(100% + 10px);display:grid;align-content:start;width:min(330px,calc(100vw - 28px));max-height:min(440px,62vh);overflow-y:auto;overflow-x:hidden;background:rgba(10,10,10,.98);border:1px solid rgba(255,255,255,.12);border-radius:8px;box-shadow:0 18px 42px rgba(0,0,0,.34);padding:10px;gap:5px}\n  .fs-menu-panel a,.fs-menu-branch summary,.fs-menu-label{box-sizing:border-box;width:100%;display:flex;align-items:center;min-height:42px;padding:10px 14px;text-decoration:none;border:1px solid rgba(255,255,255,.08);background:#101010;color:#f4efe7;font-size:13px;font-weight:850;line-height:1.2;border-radius:5px}\n  .fs-menu-panel a:hover,.fs-menu-panel a:focus,.fs-menu-branch summary:hover,.fs-menu-branch summary:focus{background:#c77b22;color:#060606;outline:none;border-color:#c77b22}\n  .fs-menu-panel .fs-menu-direct{background:#151515;color:#fff;text-transform:uppercase;font-size:12px;font-weight:1000}\n  .fs-menu-branch{display:block;margin:0;padding:0;background:transparent}\n  .fs-menu-branch summary{justify-content:space-between;list-style:none;background:#171717;color:#d69a55;border-color:rgba(199,123,34,.32);font-size:12px;font-weight:1000;text-transform:uppercase;cursor:pointer}\n  .fs-menu-branch summary::-webkit-details-marker{display:none}\n  .fs-menu-branch summary::after{content:\"+\";font-size:18px;line-height:1;color:currentColor;font-weight:1000}\n  .fs-menu-branch[open] summary::after{content:\"-\"}\n  .fs-menu-label{min-height:32px;margin-top:5px;background:#050505;color:#d0c5b6;border-color:rgba(255,255,255,.05);font-size:11px;font-weight:1000;text-transform:uppercase}\n  .fs-menu-branch a{margin-top:5px;padding-left:24px;background:#0b0b0b;color:#f3eadf}\n  @media (max-width:720px){\n    .fs-nav .fs-wrap{align-items:stretch;flex-direction:column}\n    .fs-floating-menu{width:100%;flex:none;margin-left:0}\n    .fs-menu-panel{left:0;right:auto;width:100%;max-height:min(380px,62vh)}\n  }\n\/* fs-home-structure-v1 *\/\n  .fs-section-label{display:inline-flex;align-items:center;min-height:30px;padding:0 10px;background:#0b0b0b;color:#fff;border-radius:4px;font-size:11px;font-weight:1000;text-transform:uppercase;margin-bottom:14px}\n  .fs-carousel{position:relative;background:#090909;border:1px solid var(--line);border-radius:6px;overflow:hidden;min-height:0}\n  .fs-carousel-track{display:flex;transition:transform .34s ease}\n  .fs-carousel-slide{min-width:100%;display:grid;grid-template-rows:1fr auto;background:#090909}\n  .fs-carousel-slide img{width:100%;height:auto;object-fit:contain;display:block}\n  .fs-carousel-caption{padding:14px 16px;color:#f5ede2;background:#090909;font-size:14px;line-height:1.45}\n  .fs-carousel button{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:1px solid rgba(255,255,255,.32);background:rgba(0,0,0,.72);color:#fff;border-radius:999px;font-size:26px;font-weight:900;cursor:pointer}\n  .fs-carousel .fs-prev{left:12px}\n  .fs-carousel .fs-next{right:12px}\n  .fs-section-map iframe{width:100%;min-height:380px;border:0;border-radius:6px}\n  .fs-home-contact{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px}\n  @media (max-width:1020px){.fs-home-contact{grid-template-columns:1fr}.fs-carousel-slide img{height:320px}}\n  @media (max-width:720px){.fs-carousel{min-height:300px}.fs-carousel-slide img{height:270px}.fs-carousel button{width:40px;height:40px}}\n<\/style>\n<div class=\"fsbjj\"><header class=\"fs-header-v3\">\n  <div class=\"fs-header-v3-inner\">\n    <a class=\"fs-header-v3-brand\" href=\"https:\/\/clubfreestylebjj.com\/\">\n      <img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-logo-dark-nav-transparent-1000.png\" alt=\"Club Free Style BJJ\">\n      <span>Club Free Style BJJ<\/span>\n    <\/a>\n    <details class=\"fs-header-v3-menu\">\n      <summary><span class=\"fs-header-v3-bars\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><\/span><span>Menu<\/span><\/summary>\n      <nav class=\"fs-header-v3-panel\" aria-label=\"Menu principal\">\n        <a href=\"https:\/\/clubfreestylebjj.com\/\">Inicio<\/a>\n        <details class=\"fs-header-v3-branch\">\n          <summary>Clases<\/summary>\n          <span class=\"fs-header-v3-label\">Colegios<\/span>\n          <a href=\"https:\/\/clubfreestylebjj.com\/index.php\/salesianos-paseo\/\">Salesianos Paseo<\/a>\n          <a href=\"https:\/\/clubfreestylebjj.com\/index.php\/san-buenaventura\/\">San Buenaventura<\/a>\n        <\/details>\n        <details class=\"fs-header-v3-branch\">\n          <summary>Proyecto<\/summary>\n          <a href=\"https:\/\/clubfreestylebjj.com\/index.php\/liga-escolar-bjj\/\">Liga escolar<\/a>\n        <\/details>\n        <a href=\"https:\/\/clubfreestylebjj.com\/index.php\/campeonatos\/\">Campeonatos<\/a>\n        <a href=\"https:\/\/clubfreestylebjj.com\/index.php\/tienda\/\">Tienda<\/a>\n        <a href=\"https:\/\/clubfreestylebjj.com\/index.php\/contacto\/\">Contacto<\/a>\n      <\/nav>\n    <\/details>\n  <\/div>\n<\/header>\n<div class=\"fs-header-v3-spacer\" aria-hidden=\"true\"><\/div>\n<section class=\"fs-hero\">\n  <img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-adults-handshake-1600x950-1.webp\" alt=\"Alumnos de Club Free Style BJJ saludandose en el tatami en Madrid\">\n  <div class=\"fs-wrap\">\n    <div class=\"fs-kicker\">Jiu-Jitsu brasile\u00f1o en Madrid \u00b7 desde el primer d\u00eda<\/div>\n    <h1>Entra por curiosidad. Qu\u00e9date porque aqu\u00ed se construye algo tuyo.<\/h1>\n    <p class=\"fs-lead\">Club Free Style BJJ es la escuela de Jiu-Jitsu brasile\u00f1o en Madrid donde cada alumno \u2014tenga 6 a\u00f1os o 46\u2014 entra a formar parte de una historia real: la de un tatami donde se aprende a caer, a levantarse, a proteger a los dem\u00e1s y a competir con la cabeza fr\u00eda. Programas por edad y nivel, direcci\u00f3n t\u00e9cnica presente en cada clase, y un camino claro desde tu primera clase hasta tu primera competici\u00f3n.<\/p>\n    <div class=\"fs-actions\"><a class=\"fs-btn fs-gold\" href=\"https:\/\/wa.me\/34681990446\">Hablar por WhatsApp<\/a><a class=\"fs-btn fs-ghost\" href=\"mailto:info@clubfreestylebjj.com\">Enviar email<\/a><\/div>\n    <div class=\"fs-stats fs-home-partners\">\n      <a class=\"fs-stat fs-logo-tile\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/salesianos-paseo\/\" aria-label=\"Clases en Salesianos Paseo\" style=\"min-height:220px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;text-decoration:none;background:rgba(255,255,255,.34)!important;background-color:rgba(255,255,255,.34)!important;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.38)!important;box-shadow:0 18px 40px rgba(0,0,0,.20);\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.salesianospaseo.com\/wp-content\/uploads\/2024\/01\/Logo-nivel-2_HOR.png\" alt=\"Logo oficial Salesianos Paseo\" style=\"width:100%;max-width:270px;max-height:145px;object-fit:contain;display:block;margin:auto;\"><\/a>\n      <a class=\"fs-stat fs-logo-tile\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/san-buenaventura\/\" aria-label=\"Clases en Colegio San Buenaventura\" style=\"min-height:220px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;text-decoration:none;background:rgba(255,255,255,.34)!important;background-color:rgba(255,255,255,.34)!important;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.38)!important;box-shadow:0 18px 40px rgba(0,0,0,.20);\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.sanbuenaventura.org\/wp-content\/uploads\/2020\/05\/cropped-Colegio-1.png\" alt=\"Logo oficial Colegio San Buenaventura\" style=\"width:100%;max-width:270px;max-height:145px;object-fit:contain;display:block;margin:auto;\"><\/a>\n      <a class=\"fs-stat fs-logo-tile\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/equipo-tecnico\/\" aria-label=\"Equipo tecnico profesor Minduin\" style=\"min-height:220px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;text-decoration:none;background:rgba(255,255,255,.34)!important;background-color:rgba(255,255,255,.34)!important;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.38)!important;box-shadow:0 18px 40px rgba(0,0,0,.20);\"><img decoding=\"async\" loading=\"lazy\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAABOCAYAAAByk8mSAAAQAElEQVR4AexdB3yOV9v\/39l7kBCJRAYhib03VWqUGkVrj1ql1J5VQY3aVXuPFzWKlAY1iorV2CRmEokIEiSRCJLId\/1PPKreqCA0+V7P77nOOffZ5zznOtc653708P7zfgbezwByFCJs2RJotmDN+sqT5s1rNWbq9L79x44dOXrGjElDJ0xYSGCYcUxjHuZlmfe\/8\/sZeNkMZGtE8A8I8Ji9cmWr4RMnzuwxdOi5jb+vvnry9LGA6Nt3Vj\/Ww\/R8dvZjDA0NB+W2se1C0Nf0BtnlyjWGacxzJuh0AMt0GjDgLOsgcqzz9\/d+2aS8T\/\/fm4Fshwjrdu50mTx\/Yd9uQ4fuW7V27eXzFy+utrC07F27Rk3v7h072Y0cNBgThg\/DqL59MbBHdwzr2VP5DI\/o01s9M+27YUMxvF8\/fPVFF7vGdev52Frb9L5+48bqbbt3n2PdbINt\/e\/95O9HnNEMZBtEIBszZPzEnzf8\/PPV8Gvh0yuVLlN9RJ++mDLyW7W4P61XFxWKFYWDrS30n4zkUVoaUiVMYDjxUTLoSxSMNE3lLe3thcZ1aitk+X74CAzv0wfVyleoHhkVOZ1tfe3r679q89a6LPMe\/ndn4F9HBC5C7tB7DuwNsLa2bDakdx9MHzMGHVs0h5eHG4wMDdRi5090+sJFTF+0CHNWrMSj5BQcPHIUvlOmKsTY+OuvGD1lCpat+QnL1m9QZY4HBeM\/mzaDPsuzroIuLmjbtAmmjxqFEX37oYCTU\/0tO7dtb9+374GVmza1Yr738L83A\/8aIvjt3Fmq96hRm\/y2b93uU6hw9bGDB6udnzs4d\/zIm7dw4+5dtcPzOfRWDAaPGY2Y23eQkpKqEORhcjIuXrmsfrVbkn795g0k3k+ErY2NQo6V69fhwpUrOBwYCBGkVb64e4m4HB6uwsULe6Jfly6K6lQpV77Klh07VhMpSZ1UhvfO\/8wM\/CuIMGnu3HGLVq8+bm1h2WTcsGHo07kjuFOTreEiXSY7+rK1a5EqrA5ZnFT5OXKZmqJjq1ZwypcPd+NjEXDsBGxkwVtZWYMsUerjFBRwdIKbkzM83T3w+PFjxN27B2dHR1hZWuLqtWtSC7Bp+zaMnDRJUQ22xUinvHnQrXUrTPMdDVdn5+rbdu8IEMSZFBgYaMj09\/D\/fwbeKSJQY9Phq6\/+PH727PD+3bpj7MABCgF005z64AEGjx2LSyEh8CnkibMXL+qSYG1pDitzC3h7esqun4Ttv++BlZk5bt+5jXuJCYi6FY27CfF4kJqM5JRkHDpxStinZNyOvYuN\/r8KKzRa1bVtz258\/GFt3E9KQn9fX8mTouLpECEofA\/p8zXCIiIGTV+27BQpF9Pew\/\/vGXhniED+e9lPP51z8\/Aou2TyZNSsWEHNLFmgEd9PwpR582Equ369D2ohKvoWUjXAQhb63bh4xeakSu54WfC7DxxAhdKlFRJ5iQzhO3CQEoqH9eqFNk0+haGBIcxMTZDXPjea1m+g2C1jY2NciQhXVERPXx937sbiUmgIGtauo1gsyGfzth2gDCJBJZQvEqpRpkQJrzlLlx6fvXx5d8a\/h\/+\/M\/BOEIGs0LJ1a1d3btVaqT254DmlFGSnzJuLYj7eOHb2DLjYO7ZogZvR0UiSHXtvwAHsP3qUWRUyfN6wIb4Q9shbqMXew0eUIBwq\/D6FZ7\/ffkNcfBwszM1x7XoU4hMSUaVCeVV2zrjx8HB2wbkL59Hu0+ZwcswHUaUqdogZiITfz5+LTdv8+aj6oaenp+SHfj2+xK+7d8+jHUIl\/hvO+zbf+gy8dUQYN2PmnD+OHh0+btgIUAX67IgMRCPEBUmWx9TEBBNn\/ojrt25B9P6Ivh2DRnXronLJEtjxxwGlLSLlmDZ\/HibPmRWzYsP6c0dPndy8c+\/vC66Ehk07ExQ8zX\/XzgXC+qxm2qzFi2LGTp6EweMngEhy4txZYYk+RIMPaioEKVmsmKIQrb76CpEiZHdq+RmsLCxU91JFLZuUpoKoW60qpnzri+DLl3tTvZse+25dWsc7dOv2XdmyZQ8Kgob8G9B\/+PCry5cvf2uwePHi8Ixg6qzZIWy7V69eAZUrV\/5u6aZNNm9j9t8qIoiOflXg2dNfTvP1VewGB0Aht8+334KsCHf4gq5u2PDrVnzV+QtERt9E5I2baqdu9NFHCLp0Eb7Tp2HNpo1ht2JiFtna5upXrVIln2YftC6wdOrUoj+OHt109vjx3af5fjuAwPAPvr5tmNardWvHmtWq+1hZWvS4cOXyIiKH77RpCqFiIiMVy5Sc\/AhlihZDmeIlsPuP\/XDJ78wuCkXQxA6hgsrxEhZsjrBKoeFhzWRM6WRDpbx9hz989+6f\/Ll8wYIRIrxXEiWAm4GBgVvhwoXfGeTJk8etdtWqLqVLl3apX7++S\/v27bMcOnfu7PwUOnVy7tixo3ru36un29Rx41xmzZpVuWvXrkMHde16kHOS1TOvl9UV6urj2Z\/wa9da\/\/jdOCUQyw+oNDV+O7ajaBEvzFq5DGRvBvbogdi4OBQuWBBzxn6HXDY2StU5YsIEHAwM3OxZyKvR8unT3SYOG9Z1UPeuM1o2aBDUqFHZ+7p2XuTL7pnMvCP79JnPskSODypXq3c1MnL12NmzMVLsD3nt8yhDG+0KSQ8fIre0zfqMRD7Rl4Dfzl3KZkE2jYa8eRO\/R9SNG\/Wp9pXkd\/Ldu23bwOvXr3uzMVsxJq5ZvTr1mmjAgoKC8K4gKioKp0+fhp+fH+rUrQtN0xQIQsJcWFEzMzNQDnsTYB06MBbugOwzn93c3PDFF18gIfE+OnbsqD9q1CivhZMnD+R8ZCW8FUSYJOrRE2fOdJkm6khqYthhIec4FXQOEdcj1Y5PVmny3DmwtbbCxgULECs2gwlz5mDExPF48ODBoo7t2hXkjt+3c4etLJ8V0KZJwx2kGM0\/\/bTA49SUH4eMG6sQggL78ukzUMLLSzVDJCA7tuA\/K7Hv0EE8Snms4tlXIkNYeHgTIrqKfMtOZEhIWTZhZGSEoydP4vNWrfTt7e0Z9U7h4MGDGDFiBE4ePw5hURQCsAMPZQN59OgRUlNT3whYhw50dfE5LCwMS5YsQbGiPgoZiBROTk7V2XZWQpYjArVDO\/bvGz7p21FwdXJU+vw5Ygmmzp7WXAtRgZLX3yOsSIuGjdRYAo6fFFXmKIjKcn+rZs18uIM3qFLlikp8ifPseSH\/gACPl2RXyS3r1AkfP3Ron3atWxcQ1evqL4cNxVHZ8bjQmYFC\/IatW\/FBpcpo3exThIRcBuMSxa7BPDOFcv15+lSXRWvW9mP+dwFt27ZVlJVtkbrSf2sgMlK0KCxmzZqFNm3aqB35V7Hce3t7w3f0aIwVFTfTR0uYi1ZfNHFE1FeBl+XV1UmKQ+pAhNj6i18qw2Z585pm9dizFBH8AwI8Fq1atbp\/1+6g1ZadJSUwE7UoWZ2wyOtY+P1EnBHtTW4bW3Rs0Vzx7ONnzkCNSpV6LJg4sQbZGZZ7Gfj777cfOHbsqYcJCVV0ee9G3y3IOP+AzCMEKUS9WrVaz1m6JJ7sEo169nZ2aFqvHihEnw0OxobtOzB+7iyER1xTTbkKgo8eMBgrf14\/7V3ZGZxdXFTbdDin9N8WPBLLvbX8Ph4eHli9erXakbkwg2UuRou8t2rVKpjKb3r\/fjqHShZJ09LZJU3LGt\/Q0FCxX2mClJqmqaFeCQkhsYZFWtojFZGFTpYiwqo1a7bU\/eADpZlhHykD\/CQ7awnPQtDT10erXj3BuF+E1NGSO1g0OsdOnQru3q5d6V4dOsxnmcwAj0AEBh0N0vT0i3s5O2\/QlSHrY2JiWvy3nTsvz1iyvKEu\/mV+r3bt1rRt3bpYeOS1gF5DhylNUQnZ\/ViuiBjwaNeYMuwbdfbphrBwVPNWKVMKrZs2w4oNG\/xFiDVk3rcJqSkpb7P6p3WT2hiJNi9RFrkIxihRqpRK48Ikz86H5s2b01MIwgDZoxTpn6alL1jGvSkQAd60jlcpn2WIQLkgOSXFa8CXXz5t\/8TZM5goGqKlP\/+M5sIGlSpWVFl0maHzwIFiL7gVsGrWLO\/GdeqcQCY\/Y2fO7J50PyGgVs1adnltc62nUPxsUSsL8\/HNG34CQ31tCy\/oPJv2T+GWwi6tmDGjqrmZ6WqqVC3MzMUaPQpHhCf+WAxvVLvywN\/Xw4cjKTF9JyQyi8rVYcPOnXP+qe5snya7LhGA\/dRRGxOjdNz+SpQZjOfC5IKnwE4EoaEzTpQcfGY6+Xn6bwPYNusl5aH\/NiBLEME\/IMBj76FDw\/v37CVqR+1pP\/t16YKBI7\/FNdE6ONjnUVohLigigZWl5TYuvKeZMxHgwrY2Np7Hs0lUfT7Ww6bnixkZmx2iYa1n+3awsTCb3t93zNTn8\/zTM1mlvPb2q3t9Mxz8sbu1bYPaVaqin\/DDv+7ZDZ5YtTA3U4cBWc\/wPn1wOji4C6kUn3MkyE6ekvpYjXfbtm1Yv24dli1bRki9LRSQbBEXY6oIxF6iULh88SIOHwzA1KlTsVUo\/kkR4ofLBpGYmAhShpw4B1mCCJu3bFlSuUzZp7aC0xcuKhaIakeqJls2boxDfx5V88MFJRMaIAuugYrIpDN8wvdjiuR3nN67WzfQ2BUok+\/q4nLq+eKeDm5HTgUHqTzMW7t40f6vquH5wde3TS5b280Dxo5RAuqqTRsRfecOdq1egyLu7qCwv2jlf1TTPCxYt8YH2Bewb5GKyKFOXOxdGBoYKHan5WefoWfPnujUqZP+0KFDYSLqTE3TQAH31KlTKCJs46effopBgwbh+++\/R9GiRdGzz9c5dOTp3dZL917fXbV5a93omJjqX7RrqyohD+07ZbI66DZt4SJ0HTIUVuYWSl8\/c8kyRERF3cgMJaBGhlZp8t+T5y\/sW7VwoZEtWrZEqbPncSM6BnqpqaEtxaagGn3GadCgevSjB4928od1P3cBXk2a4pMSJbo8Txn8Rdhm3c8U\/Vvwx9Gjmz5++DBw9IwZIHWZJ\/IMNUedBw7AHlGpUgGgK9D5s5ZITUvzosZMF5fTfGrESOncBdHZdwrDXPgEUgPGUU5ITk5mEI9EZUoKQG0SI27diKKXY+GNEeGPwwem1a5WHQ5i7OEsWBgZw6tgIbiJlsPSwhKGRgbqxOiRM2fhv3snvmjfvirzvQyMTYxuhF6P\/HL1xo2XfexzT6\/ftCm0NRtx8vZdOCYlIFVfb82L6pBB+VvevIEwIfduC1eiUv36IGUga8UTsDwqERQWNPtF5XXxnzVo2eBg4J9JtIYz7uDxQDSsUwefiNW7ZuXKyjpO9okLqLFomTZv3z6N+XIipCQm4FHyXwK5pmkwEApB0I2HCMFnneGMLBOpBdPv3r5ND4xTgRzmyJp5\/R6TL74TG+vdrFHDp5VwUXzTp7cy\/hyShTNn7HegunGMUIlP6tbtkVn7QLumTdc45s4V+Pknn7goGKA56gAAEABJREFUJNhzADhyDLvLlcLFy1dgY2P369NGnwsU8Sr82+nQMIQUEwNZWDg0v+1gHR52uaYHXbhw7nbs3Wb5HPMvfl7Qfq4akLp0aNG66dhpUxCXkKBkHFNjE4RcDcfk2T\/iF0FsshMs1\/CDWjAxNnbIqVQh+fFjUFPEhc7xaJoGLnyG\/wlIMZh+Q6zd9DVNo5fj4I0QIfDUsQlVylVQ1ICklYYz+iSrc8aNh7OjkxIqpy9ahPyOjvtfRUVKtsVIT8+8XIUKIIuDXfuAahVR08QIxyIiUksXcvvzRbNNlmlXUFCMa5Jod2pUUQikCSK1bt8en9aujfx5HXZS1fqi8s\/GM1\/JosU3zhHhkfF7RUi8LmzAx3XqYsmUKbAwMwV3Um4AtatWw54DB0YwX06DBw8f\/q3LZHvI\/mja3xe2pmmg9ui+qFdF1gOpAwtGxUSrY4qa9vf8TMsJ8NqI4C88dmxsbPU6NWqocZqLui1StEPLf\/oJNJztO3gIX3\/xBa5fj8LvYp6v\/eGH7VTGTDrLt2xZN7BFc69FcQkI\/WU7YGmBqsWLQi8+DievXv3tZbu5voHResTFoqp7AVUWAUfR99oNFM3vlMke\/JWtarHa7c6IEZDsXbe27bFg0mTUrlkDvEnXTIT3K+ERKnONGjUhC8iH7JeKyEGObFS4LfN1R7REVIlSO+Ts7KyowrOUgTKCp9hWXF1dwXx58+UDNU0bf96okS16Nm8OGj5eGxHORVxo4+jgoIxMHPDxoGBlNPtlx3bMWb4c+44ehn2uXNiwZQt8PD0XUU\/PfJkBvn+oVYUKTYwLuKLrirWAhQUgiJbAXcvGFrktLMq9zKJrbmXtf+jkKUxxKwAxgwJ2ufDD2o0Is7ZF63Kl6\/hOm\/bNC\/vyXAIP+VUrX378qvXr1Hj\/PH4C7USrciroHEr4+Iit4Zgq4ZbHDgVd3RB88WJHFZGDHJ5fym1tg29G+SIyMlId6BswYAB0O79uKKQSTUVeCw0NBZHl0oULwkI2wJEjR6CTF3R5c5Kv97qdDbp4vkuFMmVU8QQxMG3y95eFnxtenp4wNjLC9FGjwLsF+48eQfUSVYarjJlwyBLpJSasooBLdgZJSYC1JWBmhpP+u9Ah\/DpGDhhgdzwg4Piz54yerZrn969Fho+rVLIEEkW7IRIcICZ75nHbuAWFRLh3MjcfS6rGuMxArXLlfHlhiNTuevQtteA5xtrVamCb2Bd4NIP1VBchOiw8vBPHweccA2JU4zkqp7x5ZN8wVTaFzZs3q+4\/Kzdw1\/\/hhx9UfNu2bRWiUE5gfE6lBhyMHp1XBf+AAI9Hyck+FcpXVEU1WWRjRa3Yp3NH+PYfiNCIcFCNeuDoUbgXKLCNQqfKmAmHVtoeDRpoZInIziCXLfBA+FcxYsHGGiuW\/wSm+X7dB3t2796WUZUb9645+l27tsWP2DvgQ8kPMQSpfNbWQNAlxSJ1EQF\/x9E9y1V8JhyyYjKWRb\/t24dWYhe5\/yBJXfqhIN3044+fGhLLFy8OaJrd8Uuh5ZBDP9HR0Rg96lvs3r1b9hB9GY4G3SLnrp8ohrMvhSJ++eWXIItEKkFkyanGNP5Mr4UIoSEh5cn2uAkrwEq279kDniHiBPKSff\/uPfDgfhL2HT6M8iXLpm8fzPgS4A5d2MGhk3kRL3T1\/w2UC1SR2DgMrlAazcqXVI9dF60AWZxhzT\/1ft5YxrsCvq0+94lycUXFuUshWxZgJRRFlRSHLNKW7UjN54i6xYvXfxV+vlLZsnN+F2GZmqJOn7dCvjz2mCfywucNGwrlSdevc1e1y5UbcfGx5aW1nPN9Rsglm1S3bl18+OGHoJzw4MGDp8hAGYG7v5WlJQ6K7KcbIFkoIgSRQdNynsD8WogQce1aLRcnJzUHiY+ScVusrmEREdh\/7Dj8f9+L+Ph4xIu6MTn5UVibJg13qIyZcPafChjfse5H+mR\/cDnsrwWsr4f2DnnQi4KusRGgbwC3nzbCRazZxRwdu1CNy+p5Dql+iRJNGO+2eBXwSCiJvR16lisB6MlQRUUIY2Mg5g4MTwej\/gc1ERR8YQbLZgZ4JsrUxOTc1t\/3qNO1PEJy8vQZZTQc9t1YcC5YT0FXV1yLivyI4WwJwgapful89QB13v\/s2bNqgR8\/fhwFCoh89SSNHqkCNUX6+voKQYIk75xp0xTlmD59urqnQGQgxaBmSdM0FssRIKvj1fsZGxdX2b2Aqyp44fJl\/Clmd76CxVQWGRHCysoKISGhsLG2PqgyZcJZummTjUeuXF0gO\/WKgMOQwgAXLi2ZsvsUsbZCLdnNFZUgMgiiVLsUitbNm4tm6povqYlFauo82gu0HXuBO3fTW83viNnFvEVgNgYePkqvU+pJOxyIVBG8vfM71nmRrJFewd\/dgs4F9t+Ruqky7TnyG9CWUMrHB1926ARqzpjbU6yzshlkK9aI\/dLBYx0CyEJNSLyvtD68e7Dt161Yu3YtqlSpgm+++QZLlixBhGxwZIdYVtM0JRCTDerduzd6CcwTtTJvr9UVg+KuXbtw6epV8NwR5YZEYaFyCoV4ZUTggk15nObt\/IQi5M2dG64S5lHllT9vwMFjgeqNEcGhV5A\/n9OfnMDMQERIWMdW1ath2p04ICxCFq5JejHRV6OgG\/TpE4rLor6XoLRAB37diWhTUzSrWL72pGWzTvXt2AGjbkYDR49Lem6hCMmYXNA1vR4RAiFUSj0IwgoZQ2cRvFtUq4pL54KHqvhMODa5bf+IvnMb50NCkPwoRdkSeATDwS43KEizCldRO+obGNq9CtvFcu8K9IQ6EpGp9ly2dAkiZbHz0k3DRo3wwQcfqG5wIZuJgoJ2AlICFSmOLmxubi6iVyp++eUX9OvXD95eXigjypOdv\/6KcePG4VZ0DHqIDEEKkczNTMpm5+8rI0Lc3fiqhkbCmjils0bUMowQS\/LM0WPQV2SDL9t3xF3R9YeI9bWAs9NvmR28ubFRH1PPwhhwSHBHVKVPy6U+xrc+hXFJEOzMoUNYW6JYehIXs2iU8p45j2LeXtrgzz\/PlySq0TFiRYaNCMWy08HVGV8IJUHsXSwo7AGqYFVhUhpBoBV\/HgMpkLWxYRtqmlTaSxy33AV23bwdo96dREpAqtDn22\/RoEN7UJBm8byOjsrQFn37dgk+ZytIS0PkzVso7FkITZo0wRdffIEu3bqhVq1aSltEliYz\/SVCEEmILEQKIg4v7vCwHuNvyBzNnTNHyRlEBtbJMvSzI7wyItxLiHOyMDWHFRfYMyOyEK2OlZm5iklJTUFKSnKie548l1TESxzy+JXc3dzCNelOyFVAWCFVhAvW0gKd8tjjz9Aw+AcGopG5afpur2wK1iCLc8PYFPVFt21+5DhAimBuBu7+X1erDKOoSCxatx4tnfIB1oIgut3JQvoaEYUjKY9RvVAhqyvR52qpNl\/iUAN2P\/F+2O24ePRo2wbli5fEx3U+gv\/yFejWupUqbSqssYW5BW7fismrIrKTI+zNwnlzERYWpnb0MGFl3rR7XOAGBgai4TZTd5m58IeJDYL18pQqfU3TlMDNcHYEWXmv1q205FRTczNT6D8pRjUpD57x8Y8jh3Ep5IpYKONhYmR0lSpHxr8MrkdF1Cru5opREdfBBQyZVFWGPH2e3HBMScHd+\/fjb8XHh5vG3YXmXRgge0SqcPsOlrOcFEg7fQ4gNZD8NMKNzu+A\/cHnsffcOVhLOpyFirFOhoU9gNgYWl24RIqCxPi4BozODIjsE3xJZCPmrVf7Q7g4OqkXkVFRwDiCgYE+0vQ1R4azGySRxZROUfClTCDBLPkSIZ6v6IIY3BiXURrjswu8MiKYmJnYG+jp0AD4ccFCdOjXF2QR1m39BYXcPZAkQpKhsfHFzA4yv63tx+ZipV4RLEVMZccnJWBhYX20QgWRdv0aNDOzwS4FC\/e6dOYMfirqBehL15lP2KjZorXaEBkFiJoVpAbia+VKwVpYoqAbt9YXcnUd+fBqGNp7eUIZ6Fg3y0pboecvIkmE5vy21h8zOjMgSoFIUyn757kgfNG3LybPnY31W7fgwpXLT4vbiwr11q1bCv+eRmaTQMdOnaAvmh92Z7OfH72nQLbm6cMrBvRkc6GqlcXmCFt0QpQoNL7p2mJ8FkKWViWr6dXqS36YbEvLMUulitO2eQsM6dUbHVp+jkFf9oJ3QQ\/ciInG4+TkW5L80i+Fb0dr64q0C+CqCMlCbZ4t9JO7K8LDw2FoZHamanGfHftkh29ibgLw2DfZHBHoIgQJWogWSJjcdK2Qvh4OlS2JM6LOLVTIY0IBN7dZx4OC8bWoYJ\/mYSPGRsCt27hpYopC9vYu\/gGZu\/QvSHA38noUistYZ4+fgB8F\/iPWVqpTOSesmqwC\/ewIXkWK4D8rV6qunjpxAlSZvmk\/ueMny+9BKuPPUwb29qhYvryqVqd1Ug\/Z1HllRLiXlGioL2Sf40kVwYtvgeNFdk8XF0THxKjjykyztLTMVN0UvvNT3Zr0ABAjHMsqkEmFLNwPzE3AxW9jZ3ONrFZEbGygUVxsOntEEi9WbdyOVQtaUYOERKCgOyoY6GH\/pUvx1P13ato09vjVq\/GlDYWSOYus8Cx7JHXsik+Ak8ghx44dq63afokTEhT0KI8YE+PE0PTDooWYK2pGnrDlxaMHYlfRFTcwMrLQhd\/Uj3ly3v9N69GV5\/uReGiOz3xxF32CoWwi9F8VNE0TTvORsjTzTnObNm3UM+uhGvW+zPPrAm86sh6qYum\/DcjUYn1Rw0Yy+NMXLoIv0e0xdAi2\/LYDJk929Hv37j1+Ubln42\/dvFHeIU8e\/HJHFrPw7BDyqtK5WMUGYC\/s0c34+OCWdeqEM97SJtcqskcLyOY8s+iE1qdTg3sJ+LZiGSSeD8bthw\/nswwh5v6DIzyNCgeRX2loYyRBtFKzI64hr50dhHf2YVRm4IEgrqUIxO1F8\/JQ+r1w3U+iLYuFocxJZspnNo8sVrPvvvsOtWrWBN8plBXAF3VRffqtaLsgn\/U\/\/yzum301TVMVNG7cWPmly5ROmzhxIqaLoS0rYMrUKWkmpiZp7LuwnIqaqYayyHllRLA0NU9+ID+8rn1ey6TtgPcSGn1UV91NiI+\/p0t+qW9uampnZWWJmWKkwrO7kbTRXnb2xPCrSDU03KqryKeo9xZSiBbWstlSE0TKQeQhMCxxo\/Paw+\/on\/Dy8ZmlK6dvqP9ztCz4qV4iaMvi18XDyAi89WYsGqVcVjYOT+P\/IeDk7m51XxDU1EAf4beiEXP3Dvi6l1EiL\/BVKLqiKY8eicFD9\/R6fu6CHnH88ctVqYrRvr5ZAuPHj8f48ePQp08f1SmyR+Tn1cNrOmSLWLRujRr0MKD\/AG3IkCHoK3OSFcD6rC0sNfY9NDTUQDWShY7eq9aV\/DhFVDt\/lRrQoydqVqqCy2Eh+M+G9Qi+EooCYlAStsD5r1wvDom8YTU\/\/HsAABAASURBVMdFmHZXKIL+k\/FRkJUF2kEswLxpli+vU\/oxSKmGN9xIISgIw0OMZUIBJDr9SyFZZAPaDS7cuBGooyJMLOzltS3w8mU0sxX5VVSyymrNBMKDh0gwNIaNqXGm+hwXH2\/s4eYGCsvDJk8EL\/bvFRsHKSOrIyTeT4S1ldVDht8E9OPvGbN8giAbfQqeZiIXvQmwnimTJwvx1YPuHUUb1q1jNPQNRW5SIbySupMqU5GdULHWh3hbn+TU1LdV9avfR9BL0xI4aF2PKB\/06dwRowcMBAXnpIcPYC\/W5ti4OFHt6HK92E9Le5wnQRahOmGqy\/bwESC8fPm0xzh25QpKF\/r7bbTHegYLwiU+fXd\/MjkKeQwRWKQQKCTnsncYrauOPpEiMCQkxpW31kQAfyqPUHsivH7q4zRmyxQkP35chNoRH3d3\/PTjHPTu0hVVypVDMZ+\/OCtFNdM0we5MVfnOMqWJXMcFS76dVKBfv36q7b179yqfx2MY4G\/MXV7TND5mCurUqaPeZZupzNks0ytThNx57G7KIldXMJ8dC09d8tUt\/DNAYq6enp7r0k2bbJ7Nk1HY1szUOJl6f4Iug7AdVJtaxMfi9qOUnRSSdUn0y3qVWXVAVJftbK0AezuALNE9YcdKFQcF4s0nT8b07dzhKTvFMoS\/3VqTNhinICUZScLmpD58aKme\/8HhPYPkR4+8rS0tQSMiX21ZoVhRNK5TG\/wvBV3R+yL4m5qbRuqes4uvaZqiBJDPlEmTULlSJeEOjSDjwuoVK3D44EFFJXjy1FEs5EQGIo9kf+FXJ8Q2bdo0fVcSZHth5mya8MqIkN\/B4XyC\/MiR0bfVkK4k3sfK8GvYc\/+B8s\/FxYM7pb6wOckPUrxVptdwpuR3RPj160Kq9f9LkqN190R4+Gl7ao9oUxCNBERwXlimJBIvnMeD5NS5GTVpbmXtT0NY73wiCoj94WkeA8OnwZcFQm7dKiQ8g10hYY2Y94YIzRyz7mIO43gKNS4+Du4u7mF8zm6gW9jngoMhY0G9evUgmw1mz5+PcRMmwE5UnwUKFAARAfKhSlS8F3516T5eXqKWe2G2bJ3wyojQuE6dEykpyYmxUZGKKvx28xaskx\/g+o7t8JSFuV8svTHCwxb3cActxi8b\/d37SQ9tDQ0AnTWZu7uNteLlz4VHgLx9RnVYmJuvJ3s0xdMDuBcPiJDcRQToLSdOphYq4jktozJVxQ5x7Fpkal0L078oyRO+0zQlFfrGxkJWMir5V1x0dHQ13jdwyJsHNOIdECE\/EWlYHHoVR+PiVMYroaFIEOS0NbI6riKymaNDhL59+qQmyEbGg3O8asmzQh06dsTmTZvUyVPG8V1GL7OJ6OwEw0aMSB+pUJ30QM5x9V6nq0ZGRsf4HpsTqWmokD8\/vGTn3hNwALmNjdDN3RUhskta2uYSdWJ85ZfVr2l6t9S9AQszIDUFoHxQwBnW8fE4fuVKMHn7jOooX6Ts\/IMXL6Uq9kjfCG5lSgBR13EyLNyvk9gNMioju15ycETECWuxOCtBWxarymdiAiOxOxAp1fM\/OBdDQ6uXE0PaqUcp+PPyJVQSlso8JBSlExOwXRQFpAy8AP\/48eMwUq5\/qOpfS9I0Dfr6+pg0aZL+icCjihXiZZw7YqH3HTVKHbVmOhe4DmmQiU8BoSLMJmOnl6PgtRDBycHhyDnRwNyMjYWxCJ\/RwgaV9C6KeO6qMnzuhvkcHCDaleovO9UpOviYh7KTutlYCyKI6UHUpl\/7FIGRUJyElJQAqS7DLxcZFzXEiKfVqYk1hQth2+Ej8HDzmJphgSeReoaGfn9TowryadZWMBUhPzEp6caTbC\/04uPjPzISJI8VmaaxULKd+\/dj25Ej0BMtkbueBm4O0eFXYfMKdzFe2NhbTKBQTAowZdp0rF+\/Hjx1uk0oAV\/hyGaJCImJiSpe0zRomsboDIGKA+ZnXRlmyAGRr4UI1la2++OjoxEnO+rN5BSkJj9C4oP7CDx5EvxDEI77g6pVYGZsZB5+59w\/vsaF6tibspi\/It+uL90R+CSXDUIir4vty9GPdb0IuKgDAo\/jccXSyH87RlGQbq1aHHxRfsZ7Fymy8fK1a6hpYQ6IihZiU2jn6AAih2agr4x2zJcRrNq8ta6psZFdwfLlwV2f46Y9oZCHB+7JorGyNAc3hxBhjTw9PP5LWM+ozn8jTtM0dYtQKDu+GT4cfKlv06ZNcfriRRBBBg8eDOr+P\/nkExQtXlx0EckKXtRXIgHlhG1+6VpuPT35HV+UOZvGv1aPPR3cjly5exeUCSIFGczt86JHm7aoJYt\/YWgYHAz1QatzpXIVEHj6dG\/8w8cxn\/OeSDFKqYXJfKIF8pbNhy\/x8rD32cOoF4F3sWIrQiMjVDJfsZJmbPyDevgHhy\/\/Co6KivBKTQZVtBAZgfaKG7duwdTE5MQ\/FMW+wweG+xTxho9QkCQpR9t5jWLF4OnuAXsTkzSWjb8WgfC4WLi5ux\/lc3YDsjq6HXzbtm148CAJflu3pNWrWxdJokbes2cPfhZL87Fjx\/iOJjySOC70fxoH5QgiVZsOHTB12lQ1D\/+UPzumvRYikC2Rwe8PDw5CPWcnnLOwxE8iJB8Ss8SnJUugrKgWOdjaNWtwMn38du4sxeeMoLTYCK7GxqYWFeSBkdiOPFzhEHsHV2\/f2cD3CWVURhdH+SH1UfI+GvHCo6JQ0q3ySl3aP\/k37iVuNRU5QStUEMIso4yZCa6JTGKfN++2F5Vbt3OnS3RMTPWPZEzMU1qQYZ\/sfInubrB1zIdTZubaIxNzWETdgJgkgmj4Y77sCNy9q1WrBl7G6f5lTwwcMFBr+dlnoOV6w4YNoE2Bb7AgXBQqwR3eQKfMeMGAZD2oFNZFCsOHnCQrvBYicJDVKlSYt+3oUdjLQzuX\/PhItCjNHPKivLU1UoT0SjQcbG3F0FQBm7dvf+ECpQAbGRu\/kQfp4FMYVfPYgypO6GlnWcfLwDZXbr9pC+Yj4d69uS9DHF1dj\/Vwim30yWULiDxiLUhxLurGvhcJ2SwXEBAwr0yx4ijo4gIqy0kVupUti\/CE+zh6\/Roc8zvjE2GxTh49TDllIctkR+CiZr9iRDCmrzvQxrAOSAF464zWax7LJhXRpWXkM51AqsB0MTjSQ4qwnSqQA5zXRgQvZ+cNFKYCjp9Uw\/QwN4OhCI9cJGSLosWosifmDvp83hIy6T6rhL9WGTNwklIe7f7j1Ckcq1oRP4jG6KTsqt7Cy2eQ9b+irKwtdyQkJqCQZ8Gn54r+K9NzEWUKltzINlpbmmL3B1VxJig4LenBw3QG97m8fCRFuxQSUr\/Np5\/yUdTGEEgDx9xc1LafeBQEXyxwJSQMp0X+8HEuvEplzGaOpmnCCj0QIqiPCePGgWyQqINBWWCh2BB4fJr3CIgEZJ80TXt2BC8Npwq7SCQ6e\/q0ymsk60EFcoDz2ojAnZwvvPIT+4FunEQAfXmgfj3P0p\/w4ZLVSBWbwrAWLbBx25ZlkpThN7+z89o9J06itJEBisrcR0THZPjfBxkVds+T51LtqtX7t8zgvxIyys84snZXY27vE8sYaglbtPHoUa1I8aIbmZYRrPPzW\/Xxh7Xh6uT4t2SqSglEfiZs3rENLvnzv9ILzVjuXYCmaU8F3j+F\/7fLlUvdJ160cGGqn5+furfM49PUHvF4BfvEXZ5+ZoHqViIC2aycJivoZXaQGeUrXbbs2MuhIeBRbKbToqrt2IsWK9IPcKFCGRjsOYBK9esjby5bh+ETJ85kvueBLImhpj+XGqfrIrTeTriXaY0LEbJLq8+mP1\/ny54THz7YdSPmNniRPSnp4caWT455P19u0ty54yxTU71atGuLXmeCEJYG8E4y86VCEzZJA5Gf9fx54gRqVakyAtn0wwVeoUIFlCpRAi0\/\/1z1ctHixfotZKOqUqWK2DQN1BspksWoyUWtMryCQ8Qx5P0QKUNZIfj8eQnljO8bIQIXj6d7wY3rt2z5a7S8blm9EibXrgZcuAycDlJps0Uld+TUyd4v+v+AUp4lR\/22dx\/2HjyIPHnyZfrtF6ry13CorTp2+hT8duxAmZLFR2ZUxSph537dvXv43JHfwF521Dlbd8Jt2hyQ5UunfmmCBGmq6BrRwdvb2e2n5V1FZFNHbCWqZ9YivzFAgZgC8kGZdz6TLTIQwZjIoGlCnhn5CkBkoGzBImGiRqafE+CNEIEDLFOuTD++Ffp4ULB6wdXuts2B8GsY5LcDyG2DBS0aQft5C+JsbLFkwADwf5jJc7Pss0B2JSnx\/nq+UJfq2WfT3kaY2ipaw2\/eiArMiK1at3Ony\/L1qzf17dwFcfkcESeduD\/0a\/CQ34cLVz5FBiIEKdnvhw7i4w8\/7CvZsuWXC5TCLO8eUC6gjPBsR8nSEBjHQ3S6MJ9fBTRNU0Y4lnF9ch6L4ewOb4wIpAoVS5SaO3f5cjVWCo3NvAoBLk7wq1EF3QJPAWERsNl3SL2isZeQ4dnLlgb4B\/z3\/eBChTwmlC9ecj2RQlX2Fh2yVD4ehdYXLuzzzfPN8NTsnIULD7eoXsO0Sf26qu82E37AdbGZpLVvqbKP5v1qFQJmL12KYkW8N2Z3aqBjW5o0aYKKlasoIZmvdl8ogvL3k75Pq1evHiyfqL45NCIP\/cyApqUjABUoFJp5etWrSJHMFP0X8\/zV9BsjAqsq7lF54K3oW\/E\/bU1n7X8uWQx+VcqjseycuByCwQ0\/AmThaAFHwT8ErFO1uum8RYuO+wf8HRm4kAb27JG+0ljxWwa21aZJQyFdfzXk77\/ffuv27cGNK1XK16VbN3x68gyaWVuA8k7BecugzV0GsaBhLV8pI8V2\/HEAF0NCUKNk5R7ymK2\/XNhkfQ4KG1Ra7D2OTk7KdlC4sCcWL1qsHT16FPfu3VNj0LRXY4uoZeILgzt37gxe0Vz\/8wt1D6r+7OZkCSJQf\/9Z409bLlq9ChQaOcgAMbCJ9QmTW3yCSVuF5b8Ti8F2uZiEgT26o1r5ClYz5sw+s2DN+soqMhs4ZNkW+606XbVIEQceMeBfVm08fhYb4xIw2sYC1WtWAcRWcLneh3AwNUHcvUTMXLSQLFGPd0HFsmKKdMgQFhaGeXPngsdB8uVzBM8dkWWiEUxHOV6lPVKBypUrY\/HixRgyZAh4P4V1QdTor1LPv5U3SxCBnefOWq1MubUjJ0\/iI74vXBD7ypTAoF93AUW9kda3G+rmzqX+GVPv8HGFDO0+bWG69pefA2YvX95dFfoXHQrxM5csPt6scmWFBFNEzgkVjRdMxdodG4dRvx9UvUtrXE\/ZD\/jgO20KCrm7b+vVocN8PucU0CED+xt29SoKenqClILPmqbJ2k1XAPD5ZcC6dHmsxJiqC9PXk7pA4EM2hyxDBI7Td+CAz+MTEm6Mm\/kjH9OBLIQYVqhW\/XBfAJD0UL2mMUnmmjfaKEDvO3RoXo9hQ7fFh67jAAAK80lEQVSQLUkv9O7cLVsCzb729V217pdfVk\/\/qnca\/3CQfR104iyqVy4LWFlhopenogT7Hzx82rEFq9cg6NLFpNplGop24Gl0jgnoFvC+vXtVnytWrAju6rp4FZkJR9M0WeuaymmXO7fyBZPSfUlLD2SNa6hPRXXW1PV8LVmKCKyc\/6O884\/94J9z8zmtRiWIKRM4dRawsBRNki1QriT4TiBqk0xLl8HaqVORy9q24bz1Sy9Pnr+wL8u9C+D\/KSzbuvCKBrT+ZdpUFK5USdNoA9m2E4OLpFO0yzUrY6i\/ULW8eZAmcg\/75f\/7XqzetBG9OnaqQraQcTkRqBkiS0QW74Mnb8F+lXEQaTRNZu9Jodw6RHjynNUerwBndZ26+rIcEXjYrFvbjvWWrV+r\/jSEDREZ0gZ\/BfB8i1iQuaDIY8PODnlmLUHfO\/EYN2QwvuvSxTLo4vnpbb76Kojs0qtQCLaTGSAFmDRvXqtOAwacDbl6dd7XrT53mD5qFEY9TIGx\/244e7oDLRpj0rpf1A00ZzNTXO7aFmm1qqrqA46dwKQ5s9GlTZvWFO5V5DtwnJxdVCvctRnQtL8WIJ9fB3RGs5CQyyhdurSqQtMyX6+mpbNRtDmwsJOjIz08\/f8F9fQGDuULwpMqLly48CSU9V6WIwK7SHmhY8vPWnPBUKvCOIJSq7q7Y4gY2sh+gG+lS03FD38cVHH3y1fUlkyZgjYNGngFnj49b92uzaFDJ0xYSIE6MDDQkHW8DrAs6+jvO2bqxt9XXw2+dGl19QoVfWaPHQujKtWxMDIKYw4cBk6fQ3jFsuk7f4H8aPHTJiQnpzyVCYgEIyaOh8g2\/ds1bbrmdfryqmVu3bplwv9doPDJewIsf1\/UuFRT0n8TYB2s79iRI\/AqXoJB\/FN9tC9kBDrkdMqfX9Whp5dFy0oQTfguVefZs2cxV4R79fAWnCzq8X\/3jAulZePGrSfM\/AE\/b0\/XUFKtOqdqeUxavlaxSnO8CiKqe3tc\/qSe2oErHgkEhVSvevWxaNIkDGzbztzF2rrLocDDAbNXr77O\/0cj6zRjyfKGNHhxd3++ZS56UpJVYhUeM3V63699fVexLOvIZWvT37d1K7slkyejY4vmMDU1xaKg8+i2cDl2i82DxjKya6wzSrRdExvVg4lROv7tPXwEOiR4nSMdrPN1IDIycv\/ieXNVUd4eo86f2hlXV1c4ODi8MdDIdjUiArZW1kpgplXYVqzOzwPbokCdEZiYmAj3q68uaD2SjSMpKQlvAgmJ92WPvA++ZZ3HNGbMmAHKMDwiwonwKV16D\/2shLeGCOxkr3bt1pCFWLJmNRaIcMm4L91d4df\/S8DZET3Drik1ZMG9opEp6IoFrs4YNG85Aq9HqVeO+JQqiY49vsT4ESMwvHt3O\/4\/2t27d6aHhYdu+W3nrqvc3Tv06xdKNofAMBf9xr2\/3jp87Mh2M6ROq+Ll1fr7jh3tlnwzAl\/16Y2oEsICyE6TCoDqvYX8Bx6hUh8eOQ6\/JvWBY6fx\/cUQ1a8hwiZRPKN9xHfqFLRs1KjHu0QC6SKGDZs5fvv27YeIBFwgXbp1Q0BAAEJDQxEVFfXGwEN2Y4Uy8k8gExISlB0hJiYGd27fVqDCwtJeDY+AtWiF7t69yzsmfwOyRpQ3GjdtBgeRpZzEPvEmwDoU5LFX\/8TTr18\/1R7kU7BgwTPNG3UbL8Es\/b5VRGBPSRnaNGtZ79ddO+NHfD9JYfonYk+IbdWMydDE4ozjp7G7Tk0oK3SFMuDRZiZydzb7ZTscZIcyKOSJsk2aKFliuvD0C4cNQfeOnezmf93HdUCbtj7tm7fw6dqmnWt3iWPazNGj0bf\/AI0GvJVOLoi2tsG1uHhUnDADc0PCwAWeJiScBwUHVxDkkD54iHZrRY8OKJfLhs2Duxs1YEt\/WpPUtEGjRv+GmpTCuFC5ynPmzOnTtEnjHaMmTQocN2VK8IL5889lJejqXLRw4TnCggULzhFUWNpatmTxOQMDgzOOjo5BLi4uZzICQYZgQYozbwqapp0hWFlZBbO9smXLHhIL+NZmzZr1u3z5cnHOifqBstB564jAvrYR623b1q2LXbsRFdBj+DAcOXMW1pJAAXSOcz50Ed38hfh44Pc\/lEVaknBFyKPoJ0HVJY86u038AXmEZ2fap2LtpXDLF2uttLGDecmSqFmxAqqUKQXG9U14iCkRkTDYsRcuhwMxYLM\/8oggzMs0ECQkJWI9qULGLbZsxyS\/7UD50nAVVomXjHhMhCdqe33zDYIvXQzu0qZt2YxeGMY63iL8rerw8PAfd+3aVW\/MkCHlvhk0yLt7jx5FsxIyUycX4fXr133oZwRCPbyFqhTPKmB9bI8bgWi3Gm3cuHHG3yYlCx\/eCSKwvy3r1AlfMWNGVU9398ljpkwGX6NOtR1ZJbIn9sbG4DGGxms2qePOnc9fAiwtMETYE2pzeKwBRoYKQWjtHbNgpXqPUNcVa9Hh+Ck28RR+2LMfg\/48AaSkIEKsws1KFwXOX0xPJyskwjofjAz0sV6E44lNGiCtbk11aJC8Ldm4YePHwc3Rae6qWbO8MzqUx\/Lv4f\/PDLwzRNBN2ai+fQd3b9eu9Jnz58\/1EPZm87YdSJVEskNpwi4N\/qiGPAH7w8IBMWRx90fAEcDEFEhMwgmx8iKvPWBjjQqyy8PaEm0d8qgyOkepQB8lo7qD5Lt5C73yOwH6BtD8ZOc\/Jyo4d1eVNVXTFBtGZGME7QO9Ro7E\/kMHg9sIOzeib5+ejH8P\/\/9n4J0jAqeU+velU6cWrVa+fI\/\/+G260WPIUKVZovDKoxmzi3njbO0aOFuxNDZejUSXz5uimVNeQNScLcIiwL+GHUyEESs1rl5DCQszVqsoCdWyEbdjlQW7NxFE0pno11YMwKJ27FmpjNr9GUc5gXIAEaDnyG+wZO1PN7w9i\/QjFSA7xzzv4X9jBv4VRNBNba8OHeZ3bNjVo7BHwX5bftsR1n3YcKVd4lspyM8TeLaHrNPPJYthcLOP0dPKAsjvCCLM4CrlFGUwh6aqrGhtBVwVRLkZjQV1a6JZvryY+FkTFDA1AQV0UhwiGTPzDsGy9RvQb9RIhQB5c+Ue+UXjNsUHde86g+nv4X9rBv5VROBUUwPAxbd8+nS3Uj7ePY6dOb1\/3MwZoIaJaksaUsi3My8XPxcyhWzdc0rvL0CE4TMF3bRu7ZDWuRW6OuVTKliyPR7mZqB26HhQMFgn6\/adOhWHjh\/b7+bq0Y\/I6Nu\/\/3cNGlSPZj3v4W3NQPat919HhGenhhRiwcSJNRrXq+djZGQ4ctvu3QFTly5NHDJhAqjG5A5OwxYpBnf0G6LT1hd2h4YXhgkM8zgxtT7My4XPssO+G4sfFy9KZJ3GJsaTxSZQmm0RCYmMz\/bjffh\/bwayFSLopp9aGu7Q1DLVqFYtv7OTU+uU1JSRJ4PObVuxYf25SXNmJX4\/ew7GTJuKfmIlHjNjOr6fOVPBiCmTMHzKVExfMD9x2bq1YfsOBmy9fz9pbPnSpVu3rN3EjXWOEoGdcoquvff++xnIlojw7M\/SqWnT2ME9eqwhYtQtX6tDpbIVu3l7enYtkN+ph6mxybdmxqZj9aA3jcAw41zyOvQrV6pU1yrlK7f5pFqDzuOHDfmWhr33rM+zM\/s+\/OwMZHtEeLazXMjdWrU4SMQY2afP\/GkjR47lIp\/m++0AggpL3LcD+s3g8Q7mZZln63gffj8DGc3A\/wEAAP\/\/JvDKSQAAAAZJREFUAwCy\/UJBf5FRfQAAAABJRU5ErkJggg==\" alt=\"Logotipo oficial profesor Minduin\" style=\"width:100%;max-width:270px;max-height:145px;object-fit:contain;display:block;margin:auto;\"><\/a>\n      <a class=\"fs-stat fs-logo-tile\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/colegios\/\" aria-label=\"Coloca tu centro aqui\" style=\"min-height:220px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;text-decoration:none;background:rgba(255,255,255,.34)!important;background-color:rgba(255,255,255,.34)!important;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.38)!important;box-shadow:0 18px 40px rgba(0,0,0,.20);\"><strong style=\"color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.38);\">Coloca tu centro aqu\u00ed<\/strong><span style=\"color:rgba(255,255,255,.84);text-shadow:0 1px 10px rgba(0,0,0,.28);\">Lleva BJJ educativo a tu colegio.<\/span><\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"fs-section\" id=\"clases-y-programas-entrenamiento\"><div class=\"fs-wrap fs-split\"><div><span class=\"fs-section-label\">Programas de entrenamiento<\/span><h2>Desde primaria a adultos.<\/h2><p>Cada etapa cuenta su propia historia. En primaria entran jugando y salen con m\u00e1s disciplina y confianza que cuando llegaron. En ESO y Bachiller la t\u00e9cnica se vuelve criterio: piensan antes de reaccionar. Y en adultos \u2014con GI, No-Gi, defensa personal, movilidad, drilling y sparring controlado\u2014 el Jiu-Jitsu deja de ser una clase para convertirse en una forma de estar en el mundo. Nadie entra al grupo equivocado: cada persona llega por su edad, su nivel, su objetivo y con un acompa\u00f1amiento real, no gen\u00e9rico.<\/p><div class=\"fs-actions\"><a class=\"fs-btn fs-gold\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/clases-adultos-bjj-madrid\/\">Seguir leyendo<\/a><\/div><\/div><div class=\"fs-carousel\" data-carousel=\"categorias\">\n      <div class=\"fs-carousel-track\"><div class=\"fs-carousel-slide\">\n          <img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-kids-school-ultra-1400x1800-1.webp\" alt=\"Clase infantil de Club Free Style BJJ\">\n          <div class=\"fs-carousel-caption\">Clases y programas \u00b7 foto 1 de 4<\/div>\n        <\/div><div class=\"fs-carousel-slide\">\n          <img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-adultos_tecnica-01-img-20260205-220943.jpg\" alt=\"Adultos: tecnica y control en Club Free Style BJJ\">\n          <div class=\"fs-carousel-caption\">Clases y programas \u00b7 foto 2 de 4<\/div>\n        <\/div><div class=\"fs-carousel-slide\">\n          <img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-adultos_tecnica-02-img-20260205-221124.jpg\" alt=\"Adultos: tecnica y control en Club Free Style BJJ\">\n          <div class=\"fs-carousel-caption\">Clases y programas \u00b7 foto 3 de 4<\/div>\n        <\/div><div class=\"fs-carousel-slide\">\n          <img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-mujeres_seguridad-01-img-20251001-222251.jpg\" alt=\"Mujeres: seguridad y confianza en Club Free Style BJJ\">\n          <div class=\"fs-carousel-caption\">Clases y programas \u00b7 foto 4 de 4<\/div>\n        <\/div><\/div>\n      <button class=\"fs-prev\" type=\"button\" aria-label=\"Foto anterior\">\u2039<\/button>\n      <button class=\"fs-next\" type=\"button\" aria-label=\"Foto siguiente\">\u203a<\/button>\n    <\/div><\/div><\/section>\n\n<section class=\"fs-section\"><div class=\"fs-wrap fs-split\"><div class=\"fs-carousel\" data-carousel=\"centros-y-clases\">\n      <div class=\"fs-carousel-track\"><div class=\"fs-carousel-slide\" style=\"flex:0 0 100%;min-width:100%;box-sizing:border-box;\"><article class=\"fs-panel\" style=\"width:100%;min-height:390px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;padding:34px 30px;background:#fff;overflow:hidden;\">\n          <div style=\"min-height:150px;width:100%;display:flex;align-items:center;justify-content:center;\"><img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/salesianos-logo.png\" alt=\"Logo Salesianos Paseo\" style=\"width:auto!important;max-width:min(78%,310px)!important;max-height:132px!important;height:auto!important;object-fit:contain!important;display:block;margin:0 auto;background:transparent!important;\"><\/div>\n          <h3 style=\"margin:4px 0 0;font-size:clamp(24px,3.8vw,38px);line-height:1.05;\">Salesianos Paseo<\/h3>\n          <p style=\"max-width:620px;margin:0 auto;font-size:16px;line-height:1.55;padding:0 64px;box-sizing:border-box;\">Sede escolar de referencia para iniciar el proyecto: grupos por edad, orientaci\u00f3n familiar, h\u00e1bitos de disciplina y continuidad educativa dentro del tatami.<\/p>\n          <a class=\"fs-btn fs-gold\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/salesianos-paseo\/\">Seguir leyendo<\/a>\n        <\/article><div class=\"fs-carousel-caption\">Centros y clases &#8211; Salesianos Paseo &#8211; 1 de 4<\/div><\/div><div class=\"fs-carousel-slide\" style=\"flex:0 0 100%;min-width:100%;box-sizing:border-box;\"><article class=\"fs-panel\" style=\"width:100%;min-height:390px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;padding:34px 30px;background:#fff;overflow:hidden;\">\n          <div style=\"min-height:150px;width:100%;display:flex;align-items:center;justify-content:center;\"><img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/sanbuenaventura-logo.png\" alt=\"Logo Colegio San Buenaventura\" style=\"width:auto!important;max-width:min(78%,310px)!important;max-height:132px!important;height:auto!important;object-fit:contain!important;display:block;margin:0 auto;background:transparent!important;\"><\/div>\n          <h3 style=\"margin:4px 0 0;font-size:clamp(24px,3.8vw,38px);line-height:1.05;\">Colegio San Buenaventura<\/h3>\n          <p style=\"max-width:620px;margin:0 auto;font-size:16px;line-height:1.55;padding:0 64px;box-sizing:border-box;\">Centro preparado para desarrollar BJJ extraescolar con seguridad, organizaci\u00f3n por grupos, comunicaci\u00f3n clara y una entrada progresiva para familias.<\/p>\n          <a class=\"fs-btn fs-gold\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/san-buenaventura\/\">Seguir leyendo<\/a>\n        <\/article><div class=\"fs-carousel-caption\">Centros y clases &#8211; San Buenaventura &#8211; 2 de 4<\/div><\/div><div class=\"fs-carousel-slide\" style=\"flex:0 0 100%;min-width:100%;box-sizing:border-box;\"><article class=\"fs-panel\" style=\"width:100%;min-height:390px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;padding:34px 30px;background:#fff;overflow:hidden;\">\n          <div style=\"min-height:150px;width:100%;display:flex;align-items:center;justify-content:center;\"><img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/profesor-minduin-logo.png\" alt=\"Logotipo profesor Minduin\" style=\"width:auto!important;max-width:min(78%,310px)!important;max-height:132px!important;height:auto!important;object-fit:contain!important;display:block;margin:0 auto;background:transparent!important;\"><\/div>\n          <h3 style=\"margin:4px 0 0;font-size:clamp(24px,3.8vw,38px);line-height:1.05;\">Profesor Minduin<\/h3>\n          <p style=\"max-width:620px;margin:0 auto;font-size:16px;line-height:1.55;padding:0 64px;box-sizing:border-box;\">Profesor Minduin aporta la direcci\u00f3n t\u00e9cnica: metodolog\u00eda, progresi\u00f3n, supervisi\u00f3n de grupos y criterio pedag\u00f3gico para el proyecto.<\/p>\n          <a class=\"fs-btn fs-gold\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/equipo-tecnico\/\">Seguir leyendo<\/a>\n        <\/article><div class=\"fs-carousel-caption\">Centros y clases &#8211; Profesor Minduin &#8211; 3 de 4<\/div><\/div><div class=\"fs-carousel-slide\" style=\"flex:0 0 100%;min-width:100%;box-sizing:border-box;\"><article class=\"fs-panel\" style=\"width:100%;min-height:390px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;padding:34px 30px;background:#fff;overflow:hidden;\">\n          <div style=\"min-height:150px;width:100%;display:flex;align-items:center;justify-content:center;\"><img decoding=\"async\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-logo-transparent-900.png\" alt=\"Logotipo Club Free Style BJJ\" style=\"width:auto!important;max-width:min(72%,250px)!important;max-height:132px!important;height:auto!important;object-fit:contain!important;display:block;margin:0 auto;background:transparent!important;\"><\/div>\n          <h3 style=\"margin:4px 0 0;font-size:clamp(24px,3.8vw,38px);line-height:1.05;\">Club Free Style BJJ<\/h3>\n          <p style=\"max-width:620px;margin:0 auto;font-size:16px;line-height:1.55;padding:0 64px;box-sizing:border-box;\">Club Free Style BJJ une colegios, familias y adultos bajo una misma cultura: respeto, t\u00e9cnica, comunidad y mejora constante.<\/p>\n          <a class=\"fs-btn fs-gold\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/equipo-tecnico\/\">Seguir leyendo<\/a>\n        <\/article><div class=\"fs-carousel-caption\">Centros y clases &#8211; Club Free Style BJJ &#8211; 4 de 4<\/div><\/div><\/div>\n      <button class=\"fs-prev\" type=\"button\" aria-label=\"Centro anterior\">\u2039<\/button>\n      <button class=\"fs-next\" type=\"button\" aria-label=\"Centro siguiente\">\u203a<\/button>\n    <\/div><div><span class=\"fs-section-label\">Centros y proyecto<\/span><h2>Centros, profesor y club.<\/h2><p>La actividad se ordena por sedes, profesor y estructura de club. Cada ficha lleva a una p\u00e1gina interna para ampliar horarios, grupos, ubicaci\u00f3n, contacto y contexto del proyecto.<\/p><\/div><\/div><\/section>\n<section class=\"fs-section\"><div class=\"fs-wrap fs-split\"><div><span class=\"fs-section-label\">Campeonatos<\/span><h2>Buscador mundial de eventos de BJJ.<\/h2><p>Un buscador para orientar al competidor y a la familia: eventos de BJJ y grappling, calendarios por organizador, torneos pr\u00f3ximos, resultados y referencias para planificar la temporada sin perderse entre plataformas.<\/p><div class=\"fs-actions\"><a class=\"fs-btn fs-gold\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/campeonatos\/\">Abrir buscador<\/a><\/div><\/div><div class=\"fs-carousel fs-home-events-carousel\" data-carousel=\"campeonatos-madrid\">\n      <div class=\"fs-carousel-track\">\n<div class=\"fs-carousel-slide\" data-event-date=\"2026-06-27\">\n<a class=\"fs-cs-event-card\" href=\"https:\/\/grapplingindustries.smoothcomp.com\/en\/event\/31883\" target=\"_blank\" rel=\"noopener\" style=\"--event-accent:#111111\">\n<div class=\"fs-cs-cover\">\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/smoothcomp.com\/pictures\/t\/8605873-xifu\/grappling-industries-madrid-2026.jpg\" alt=\"Grappling Industries MADRID\">\n<span class=\"fs-cs-cover-tag\">Grappling Industries<\/span>\n<\/div>\n<div class=\"fs-cs-event-body\">\n<div class=\"fs-cs-date-row\"><strong>June 27<\/strong><span class=\"fs-cs-days\">6 d\u00edas<\/span><\/div>\n<h3>Grappling Industries MADRID<\/h3>\n<div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">ES<\/span><span>Madrid, Comunidad de Madrid, Spain<\/span><\/div>\n<div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">Madrid<\/span><span class=\"fs-cs-tag\">Gi<\/span><span class=\"fs-cs-tag\">Ranking<\/span><\/div>\n\n<span class=\"fs-home-card-cta\">Ver en marcadores<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Proximos campeonatos en Madrid \u00b7 1 de 8<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\" data-event-date=\"2026-06-28\">\n<a class=\"fs-cs-event-card\" href=\"https:\/\/agf.smoothcomp.com\/en\/event\/30204\" target=\"_blank\" rel=\"noopener\" style=\"--event-accent:#111111\">\n<div class=\"fs-cs-cover\">\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/smoothcomp.com\/pictures\/t\/8051766-w0ua\/2026-agf-madrid-championships.jpg\" alt=\"2026 AGF Madrid Championships\">\n<span class=\"fs-cs-cover-tag\">Smoothcomp<\/span>\n<\/div>\n<div class=\"fs-cs-event-body\">\n<div class=\"fs-cs-date-row\"><strong>June 28<\/strong><span class=\"fs-cs-days\">7 d\u00edas<\/span><\/div>\n<h3>2026 AGF Madrid Championships<\/h3>\n<div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">ES<\/span><span>Madrid, Comunidad de Madrid, Spain<\/span><\/div>\n<div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">Madrid<\/span><span class=\"fs-cs-tag\">Gi<\/span><span class=\"fs-cs-tag\">Ranking<\/span><\/div>\n\n<span class=\"fs-home-card-cta\">Ver en marcadores<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Proximos campeonatos en Madrid \u00b7 2 de 8<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\" data-event-date=\"2026-07-11\">\n<a class=\"fs-cs-event-card\" href=\"https:\/\/gsl-spain.smoothcomp.com\/en\/event\/30701\" target=\"_blank\" rel=\"noopener\" style=\"--event-accent:#111111\">\n<div class=\"fs-cs-cover\">\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/smoothcomp.com\/pictures\/t\/8441341-wa6f\/gsls-madrid-international-open-2026.jpg\" alt=\"GSLS MADRID INTERNATIONAL OPEN\">\n<span class=\"fs-cs-cover-tag\">Smoothcomp<\/span>\n<\/div>\n<div class=\"fs-cs-event-body\">\n<div class=\"fs-cs-date-row\"><strong>July 11<\/strong><span class=\"fs-cs-days\">20 d\u00edas<\/span><\/div>\n<h3>GSLS MADRID INTERNATIONAL OPEN<\/h3>\n<div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">ES<\/span><span>Madrid, Comunidad de Madrid, Spain<\/span><\/div>\n<div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">Madrid<\/span><span class=\"fs-cs-tag\">Ranking<\/span><span class=\"fs-cs-tag\">Gi<\/span><\/div>\n\n<span class=\"fs-home-card-cta\">Ver en marcadores<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Proximos campeonatos en Madrid \u00b7 3 de 8<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\" data-event-date=\"2026-09-12\">\n<a class=\"fs-cs-event-card\" href=\"https:\/\/allstarsbjj.smoothcomp.com\/en\/event\/33157\" target=\"_blank\" rel=\"noopener\" style=\"--event-accent:#111111\">\n<div class=\"fs-cs-cover\">\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/smoothcomp.com\/pictures\/t\/9045029-rbyj\/all-stars-bjj-spain-2026.jpg\" alt=\"All Stars BJJ Spain\">\n<span class=\"fs-cs-cover-tag\">Smoothcomp<\/span>\n<\/div>\n<div class=\"fs-cs-event-body\">\n<div class=\"fs-cs-date-row\"><strong>September 12<\/strong><span class=\"fs-cs-days\">83 d\u00edas<\/span><\/div>\n<h3>All Stars BJJ Spain<\/h3>\n<div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">ES<\/span><span>Madrid, Comunidad de Madrid, Spain<\/span><\/div>\n<div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">Madrid<\/span><span class=\"fs-cs-tag\">Gi<\/span><span class=\"fs-cs-tag\">Ranking<\/span><\/div>\n\n<span class=\"fs-home-card-cta\">Ver en marcadores<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Proximos campeonatos en Madrid \u00b7 4 de 8<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\" data-event-date=\"2026-09-26\">\n<a class=\"fs-cs-event-card\" href=\"https:\/\/ajptour.com\/en\/event\/1535\" target=\"_blank\" rel=\"noopener\" style=\"--event-accent:#10223f\">\n<div class=\"fs-cs-cover\">\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/ajptour.com\/pictures\/t\/2198949-7msl\/ajp-no-gi-madrid-international-jiu-jitsu-championship-2026.png\" alt=\"AJP NO-GI MADRID INTERNATIONAL JIU-JITSU CHAMPIONSHIP 2026\">\n<span class=\"fs-cs-cover-tag\">UAEJJF \/ AJP<\/span>\n<\/div>\n<div class=\"fs-cs-event-body\">\n<div class=\"fs-cs-date-row\"><strong>September 26 &#8211; 27<\/strong><span class=\"fs-cs-days\">97 d\u00edas<\/span><\/div>\n<h3>AJP NO-GI MADRID INTERNATIONAL JIU-JITSU CHAMPIONSHIP 2026<\/h3>\n<div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">ES<\/span><span>Madrid, Comunidad de Madrid, Spain<\/span><\/div>\n<div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">Madrid<\/span><span class=\"fs-cs-tag\">Gi<\/span><span class=\"fs-cs-tag\">No-Gi<\/span><\/div>\n<div class=\"fs-cs-prize\"><b>Premios \/ ranking<\/b>Ranking\/premios oficiales AJP. Revisar convocatoria oficial.<\/div>\n<span class=\"fs-home-card-cta\">Ver en marcadores<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Proximos campeonatos en Madrid \u00b7 5 de 8<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\" data-event-date=\"2026-09-26\">\n<a class=\"fs-cs-event-card\" href=\"https:\/\/ajptour.com\/en\/event\/1526\" target=\"_blank\" rel=\"noopener\" style=\"--event-accent:#10223f\">\n<div class=\"fs-cs-cover\">\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/ajptour.com\/pictures\/t\/2175925-j1vg\/ajp-tour-europe-continental-jiu-jitsu-championship-2026-gi.png\" alt=\"AJP TOUR EUROPE CONTINENTAL JIU-JITSU CHAMPIONSHIP 2026 - GI\">\n<span class=\"fs-cs-cover-tag\">UAEJJF \/ AJP<\/span>\n<\/div>\n<div class=\"fs-cs-event-body\">\n<div class=\"fs-cs-date-row\"><strong>September 26 &#8211; 27<\/strong><span class=\"fs-cs-days\">97 d\u00edas<\/span><\/div>\n<h3>AJP TOUR EUROPE CONTINENTAL JIU-JITSU CHAMPIONSHIP 2026 &#8211; GI<\/h3>\n<div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">ES<\/span><span>Madrid, Comunidad de Madrid, Spain<\/span><\/div>\n<div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">Madrid<\/span><span class=\"fs-cs-tag\">Gi<\/span><\/div>\n<div class=\"fs-cs-prize\"><b>Premios \/ ranking<\/b>Ranking\/premios oficiales AJP. Revisar convocatoria oficial.<\/div>\n<span class=\"fs-home-card-cta\">Ver en marcadores<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Proximos campeonatos en Madrid \u00b7 6 de 8<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\" data-event-date=\"2026-10-10\">\n<a class=\"fs-cs-event-card\" href=\"https:\/\/adcc-spain.smoothcomp.com\/en\/event\/31768\" target=\"_blank\" rel=\"noopener\" style=\"--event-accent:#111111\">\n<div class=\"fs-cs-cover\">\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/smoothcomp.com\/pictures\/t\/8843754-7s24\/adcc-spain-madrid-open-2026.jpg\" alt=\"ADCC SPAIN MADRID OPEN 2026\">\n<span class=\"fs-cs-cover-tag\">Smoothcomp<\/span>\n<\/div>\n<div class=\"fs-cs-event-body\">\n<div class=\"fs-cs-date-row\"><strong>October 10<\/strong><span class=\"fs-cs-days\">111 d\u00edas<\/span><\/div>\n<h3>ADCC SPAIN MADRID OPEN 2026<\/h3>\n<div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">ES<\/span><span>Torrejon de ardoz, Comunidad de Madrid, Spain<\/span><\/div>\n<div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">Madrid<\/span><span class=\"fs-cs-tag\">Juvenil<\/span><\/div>\n\n<span class=\"fs-home-card-cta\">Ver en marcadores<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Proximos campeonatos en Madrid \u00b7 7 de 8<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\" data-event-date=\"2026-10-17\">\n<a class=\"fs-cs-event-card\" href=\"https:\/\/spainbjjtour.com\/calendario-2026-27\/#madrid-bjj-cup-2026-2026-10-17\" target=\"_blank\" rel=\"noopener\" style=\"--event-accent:#d6851f\">\n<div class=\"fs-cs-cover\">\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/spainbjjtour.com\/wp-content\/uploads\/2025\/01\/SPAINBJJTOUR-GOLD.png\" alt=\"MADRID BJJ CUP 2026\">\n<span class=\"fs-cs-cover-tag\">Spain BJJ Tour<\/span>\n<\/div>\n<div class=\"fs-cs-event-body\">\n<div class=\"fs-cs-date-row\"><strong>17 Octubre 2026<\/strong><span class=\"fs-cs-days\">118 d\u00edas<\/span><\/div>\n<h3>MADRID BJJ CUP 2026<\/h3>\n<div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">ES<\/span><span>Alcobendas, Comunidad de Madrid, Spain<\/span><\/div>\n<div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">Madrid<\/span><span class=\"fs-cs-tag\">Gi<\/span><span class=\"fs-cs-tag\">No-Gi<\/span><\/div>\n<div class=\"fs-cs-prize\"><b>Premios \/ ranking<\/b>Ranking Spain BJJ Tour. Premios no publicados en el resumen oficial.<\/div>\n<span class=\"fs-home-card-cta\">Ver en marcadores<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Proximos campeonatos en Madrid \u00b7 8 de 8<\/div>\n<\/div>\n<\/div>\n      <button class=\"fs-prev\" type=\"button\" aria-label=\"Campeonato anterior\">\u2039<\/button>\n      <button class=\"fs-next\" type=\"button\" aria-label=\"Campeonato siguiente\">\u203a<\/button>\n    <\/div><\/div><\/section>\n<section class=\"fs-section\"><div class=\"fs-wrap fs-split\"><div class=\"fs-carousel fs-home-shop-carousel\" data-carousel=\"tienda\">\n      <div class=\"fs-carousel-track\">\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-gold\" href=\"https:\/\/eu.tatamifightwear.com\/\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-light\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/eu.tatamifightwear.com\/cdn\/shop\/files\/Tatami-T-Logo-BLACK_2.png?height=628&amp;pad_color=fff&amp;v=1664896682&amp;width=1200\" alt=\"Logo oficial Tatami Fightwear\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Kimonos, rashguards y ropa BJJ<\/span>\n<h3>Tatami Fightwear<\/h3>\n<p>Referencia solvente para kimono, no-gi y equipaci\u00f3n base de entrenamiento diario.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Gi, no-gi y equipaci\u00f3n base<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 1 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-blue\" href=\"https:\/\/es.venum.com\/\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-light\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/es.venum.com\/cdn\/shop\/files\/LOGO-VENUM-FULL_1_190x.png?v=1685449846\" alt=\"Logo oficial Venum\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Fightwear, protecci\u00f3nes y complementos<\/span>\n<h3>Venum<\/h3>\n<p>Buena opci\u00f3n para rashguards, ropa t\u00e9cnica, protecci\u00f3nes y accesorios de deportes de contacto.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>No-gi, striking y accesorios<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 2 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-black\" href=\"https:\/\/www.buddhafightwear.com\/\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-dark\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.buddhafightwear.com\/cdn\/shop\/files\/logofb_1200x1200.jpg?v=1734690101\" alt=\"Logo oficial Buddha Fightwear\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">BJJ, MMA y deportes de contacto<\/span>\n<h3>Buddha Fightwear<\/h3>\n<p>Marca cercana con cat\u00e1logo amplio para BJJ, MMA, boxeo y material de entrenamiento.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Kimonos, guantes y protecci\u00f3nes<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 3 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-gold\" href=\"https:\/\/nklbudo.com.es\/\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-dark\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-nkl-budo-logo-1782075295904.png\" alt=\"Logo oficial NKL Budo Shop\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Budo, cinturones y material base<\/span>\n<h3>NKL Budo Shop<\/h3>\n<p>Proveedor \u00fatil para primeras compras, cinturones, protecci\u00f3nes y material general de artes marciales.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Equipaci\u00f3n inicial y reposici\u00f3n<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 4 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-blue\" href=\"https:\/\/www.decathlon.es\/es\/deportes\/jiu-jitsu\/kimonos\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-light\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.decathlon.media\/app\/fo-html\/vues\/commun\/img\/commun\/logo-decathlon.svg\" alt=\"Logo oficial Decathlon Jiu-Jitsu\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Kimonos basicos y primeras compras<\/span>\n<h3>Decathlon Jiu-Jitsu<\/h3>\n<p>Opci\u00f3n accesible para empezar, resolver necesidades b\u00e1sicas y comparar tallas antes de invertir m\u00e1s.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Inicio, familias y material sencillo<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 5 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-black\" href=\"https:\/\/shoyoroll.com\/\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-light\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/shoyoroll.com\/cdn\/shop\/files\/syr_logo.png?v=1715179288\" alt=\"Logo oficial Shoyoroll\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Kimonos premium y edici\u00f3nes<\/span>\n<h3>Shoyoroll<\/h3>\n<p>Marca premium para quien busca gi cuidado, colecci\u00f3nes especiales y construcci\u00f3n de alto nivel.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Gi premium y colecci\u00f3n<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 6 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-gold\" href=\"https:\/\/kingzeurope.com\/en-eu\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-light\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/kingzeurope.com\/cdn\/shop\/files\/KINGZ-EUROPE-LOGO-1_440x_d75ece65-cf15-4a5d-97be-ba6bd4423eb2.png?v=1738755446&amp;width=1280\" alt=\"Logo oficial Kingz Europe\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Kimonos, rashguards y gear premium<\/span>\n<h3>Kingz Europe<\/h3>\n<p>Muy buena referencia para kimonos de calidad, rashguards y equipaci\u00f3n t\u00e9cnica para entrenamiento serio.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Entrenamiento constante y competici\u00f3n<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 7 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-blue\" href=\"https:\/\/www.koral.com.br\/\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-dark\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/images.tcdn.com.br\/img\/img_prod\/1341282\/1735217930_logogotipo_horizontal_colorido_para_fundo_preto.png\" alt=\"Logo oficial Koral Fight Co.\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Kimonos brasilenos y competici\u00f3n<\/span>\n<h3>Koral Fight Co.<\/h3>\n<p>Tradici\u00f3n brasilena para Jiu-Jitsu, con kimonos y equipaci\u00f3n enfocada a entrenamiento y competici\u00f3n.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Gi clasico y material BJJ<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 8 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-black\" href=\"https:\/\/customfighter.es\/78-jiu-jitsugrappling\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-light\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/customfighter.es\/stupload\/stthemeeditor\/30ba78b0b2f03b5efcdea5cc860d8bdd.png\" alt=\"Logo oficial Custom Fighter\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Jiu-Jitsu, grappling y complementos<\/span>\n<h3>Custom Fighter<\/h3>\n<p>Catalogo practico para cinturones, protecci\u00f3nes, accesorios y material especifico de grappling.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Accesorios y reposici\u00f3n<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 9 de 10<\/div>\n<\/div>\n<div class=\"fs-carousel-slide\">\n<a class=\"fs-shop-brand-card is-gold\" href=\"https:\/\/www.daruma-greenstore.com\/\" target=\"_blank\" rel=\"noopener\">\n<div class=\"fs-shop-brand-logo is-light\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/clubfreestylebjj.com\/wp-content\/uploads\/2026\/06\/club-free-style-bjj-daruma-green-store-logo-1782075295904.webp\" alt=\"Logo oficial Daruma Green Store\"><\/div>\n<div class=\"fs-shop-brand-body\">\n<span class=\"fs-shop-brand-tag\">Hemp gis y material sostenible<\/span>\n<h3>Daruma Green Store<\/h3>\n<p>Opci\u00f3n sostenible para gis de canamo, rashguards de bambu y material responsable para el tatami.<\/p>\n<div class=\"fs-shop-brand-meta\"><span>Uso recomendado<\/span><strong>Compra consciente y material eco<\/strong><\/div>\n<span class=\"fs-shop-brand-cta\">Abrir web oficial<\/span>\n<\/div>\n<\/a>\n<div class=\"fs-carousel-caption\">Marcas recomendadas \u00b7 10 de 10<\/div>\n<\/div>\n<\/div>\n      <button class=\"fs-prev\" type=\"button\" aria-label=\"Foto anterior\">\u2039<\/button>\n      <button class=\"fs-next\" type=\"button\" aria-label=\"Foto siguiente\">\u203a<\/button>\n    <\/div><div><span class=\"fs-section-label\">Equipaci\u00f3n<\/span><h2>Marcas recomendadas por el club.<\/h2><p>Una selecci\u00f3n orientativa para comprar con criterio: kimono, rashguard, cintur\u00f3n, protecci\u00f3nes y material de entrenamiento. Recomendamos priorizar ajuste, durabilidad, higiene y uso real antes que la marca.<\/p><div class=\"fs-actions\"><a class=\"fs-btn\" href=\"https:\/\/clubfreestylebjj.com\/index.php\/tienda\/\">Ver recomendaci\u00f3nes<\/a><\/div><\/div><\/div><\/section>\n\n<section class=\"fs-section fs-section-map\"><div class=\"fs-wrap\"><span class=\"fs-section-label\">Maps<\/span><h2>Ubicaci\u00f3n y rutas.<\/h2><p>El mapa ayuda a familias y alumnos a ubicar el proyecto, preparar la visita y calcular la ruta antes de la primera clase.<\/p><iframe src=\"https:\/\/maps.google.com\/maps?q=Escuela%20de%20Jiu-Jitsu%20Brasile%C3%B1o%20Puerta%20del%20Angel%20Madrid&amp;output=embed\" loading=\"lazy\" referrerpolicy=\"no-referrer-when-downgrade\" allowfullscreen=\"\" title=\"Mapa Club Free Style BJJ\"><\/iframe><\/div><\/section>\n<footer class=\"fs-footer\">\n  <div class=\"fs-wrap\">\n    <div>\n      <strong>Club Free Style BJJ<\/strong><br>\n      <span class=\"fs-muted\">Jiu-Jitsu brasile\u00f1o en Madrid para adultos, familias y colegios.<\/span>\n    <\/div>\n    <div>\n      <a href=\"tel:+34681990446\">+34 681 990 446<\/a><br>\n      <a href=\"mailto:info@clubfreestylebjj.com\">Enviar email<\/a>\n    <\/div>\n    <div>\n      <strong>Redes y mapa<\/strong><br>\n      <span class=\"fs-muted\">Canales p\u00fablicos de la escuela y perfil de Google Maps.<\/span>\n      <div class=\"fs-social\">\n        <a href=\"https:\/\/www.facebook.com\/people\/Escuela-de-Jiu-Jitsu-Brasile%C3%B1o-Puerta-del-Angel\/100090128777293\/\" target=\"_blank\" rel=\"noopener\">Facebook<\/a>\n        <a href=\"https:\/\/www.instagram.com\/explore\/locations\/462536300569539\/escuela-de-jiu-jitsu-brasileno-puerta-del-angel\/\" target=\"_blank\" rel=\"noopener\">Instagram<\/a>\n        <a href=\"https:\/\/www.google.com\/maps\/search\/?api=1&amp;query=Escuela+de+Jiu-Jitsu+Brasile%C3%B1o+Puerta+del+Angel+Calle+Cabello+Lapiedra+4+Madrid\" target=\"_blank\" rel=\"noopener\">Google Maps<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"fs-footer-credit\">\u00a9 2026 Club Free Style BJJ<\/div>\n<\/footer>\n<script>\n(function(){\n  document.querySelectorAll('[data-carousel]').forEach(function(carousel){\n    var track = carousel.querySelector('.fs-carousel-track');\n    var slides = carousel.querySelectorAll('.fs-carousel-slide');\n    var index = 0;\n    function show(next){ index = (next + slides.length) % slides.length; track.style.transform = 'translateX(' + (-index * 100) + '%)'; }\n    carousel.querySelector('.fs-prev').addEventListener('click', function(){ show(index - 1); });\n    carousel.querySelector('.fs-next').addEventListener('click', function(){ show(index + 1); });\n  });\n}());\n<\/script>\n<\/div>\n\n\n\n<style>\n.fs-home-events-carousel .fs-carousel-slide{background:#120f0c!important}\n.fs-home-event-card{min-height:390px;display:grid;grid-template-rows:150px 1fr;background:#fffaf0;color:#171410}\n.fs-home-event-card .fs-sc-event-banner{display:flex;flex-direction:column;justify-content:flex-end;gap:10px;padding:24px;background:linear-gradient(135deg,#171410,#8f4f1e);color:#fff}\n.fs-home-event-card .fs-tone-white{background:linear-gradient(135deg,#f7f2e8,#d6c2a3);color:#171410}\n.fs-home-event-card .fs-tone-blue{background:linear-gradient(135deg,#154f8f,#0b1728);color:#fff}\n.fs-home-event-card .fs-tone-red{background:linear-gradient(135deg,#c7292f,#401014);color:#fff}\n.fs-home-event-card .fs-tone-photo-b{background:linear-gradient(135deg,#111,#b86f2b);color:#fff}\n.fs-home-event-card .fs-sc-event-banner span{font-size:13px;font-weight:1000;text-transform:uppercase;letter-spacing:0;color:inherit}\n.fs-home-event-card .fs-sc-event-banner strong{font-size:22px;line-height:1.1;color:inherit}\n.fs-home-event-body{padding:26px;display:grid;gap:12px;align-content:start}\n.fs-home-event-date{display:inline-flex;width:max-content;min-height:32px;align-items:center;padding:0 11px;border-radius:999px;background:#171410;color:#fff;font-size:12px;font-weight:1000;text-transform:uppercase}\n.fs-home-event-body h3{font-size:28px!important;line-height:1.05!important;margin:0!important}\n.fs-home-event-body p{margin:0!important}\n.fs-home-event-body .fs-sc-date-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}\n.fs-home-event-body .fs-sc-date-row span{display:inline-flex;align-items:center;min-height:30px;padding:0 10px;border-radius:999px;background:#f0e4d2;color:#3f382f;font-size:12px;font-weight:900}\n.fs-home-event-body .fs-btn{width:max-content;margin-top:4px}\n@media (max-width:720px){\n  .fs-home-event-card{grid-template-rows:130px 1fr;min-height:360px}\n  .fs-home-event-body{padding:22px}\n  .fs-home-event-body h3{font-size:23px!important}\n}\n<\/style>\n\n\n\n\n\n\n\n\n\n\n<script>\n(function(){\n  if (window.__fsContactRoutingV3Ordered) return;\n  window.__fsContactRoutingV3Ordered = true;\n  var phone = \"34681990446\";\n  var programs = {\n    \"Salesianos Paseo\": [\"Primaria extraescolar lunes y mi\u00e9rcoles de 17:00 a 18:30 - recogida en comedor\",\"Primaria extraescolar martes y jueves de 17:00 a 18:30 - recogida en comedor\",\"Infantiles martes y jueves de 17:45 a 19:15\",\"ESO y Bachiller lunes a viernes 18:30-20:00 y 21:00-22:30 - GI y No-Gi\",\"ESO y Bachiller lunes, mi\u00e9rcoles y viernes 18:30-20:00 - GI\",\"ESO y Bachiller lunes, mi\u00e9rcoles y viernes 21:00-22:30 - GI\",\"ESO y Bachiller martes y jueves 18:30-20:00 - GI\",\"ESO y Bachiller martes y jueves 21:00-22:30 - NOGI\",\"Adultos clases ilimitadas lunes a viernes 18:30-20:00 y 21:00-22:30 - GI y No-Gi\",\"Adultos Lunes, mi\u00e9rcoles y viernes 18:30-20:00 - GI\",\"Adultos Lunes, mi\u00e9rcoles y viernes 21:00-22:30 - GI\",\"Adultos Martes y jueves 18:30-20:00 - GI\",\"Adultos Martes y jueves 21:00-22:30 - NOGI\",\"Bono flexible 10 clases - disponibilidad con secretar\u00eda\"],\n    \"San Buenaventura\": [\"Primaria extraescolar - grupo escolar pendiente de confirmaci\u00f3n\",\"ESO - grupo escolar pendiente de confirmaci\u00f3n\",\"Bachiller - grupo escolar pendiente de confirmaci\u00f3n\",\"Lista de familias interesadas - pendiente de confirmaci\u00f3n\"],\n    \"Nuevo colegio interesado\": [\"Presentar proyecto al centro\",\"Solicitar informaci\u00f3n para familias\",\"Coordinar reunion con direcci\u00f3n o AMPA\"]\n  };\n  function fsCleanText(v){\n    v = String(v || \"\");\n    var out = \"\";\n    var lastSpace = false;\n    for (var i=0;i<v.length;i++){\n      var code = v.charCodeAt(i);\n      var ch = v.charAt(i);\n      var isSpace = false;\n      if (code === 9) isSpace = true;\n      if (code === 10) isSpace = true;\n      if (code === 13) isSpace = true;\n      if (code === 32) isSpace = true;\n      if (code === 160) isSpace = true;\n      if (isSpace) {\n        if (!lastSpace) out += \" \";\n        lastSpace = true;\n      } else {\n        out += ch;\n        lastSpace = false;\n      }\n    }\n    return out.trim();\n  }\n  function textOf(el){ return el ? fsCleanText(el.innerText || el.textContent || \"\") : \"\"; }\n  function isContactLink(link){\n    if (!link) return false;\n    var href = link.getAttribute(\"href\") || \"\";\n    var text = textOf(link).toLowerCase();\n    if (href.indexOf(\"wa.me\/\") !== -1) return true;\n    if (href.indexOf(\"api.whatsapp.com\") !== -1) return true;\n    if (href.indexOf(\"mailto:\") === 0) return true;\n    if (text.indexOf(\"whatsapp\") !== -1) return true;\n    return false;\n  }\n  function field(form,name){ return form.querySelector('[name=\"' + name + '\"]'); }\n  function wrap(form,name){ var el = field(form,name); return el ? el.closest(\"label\") : null; }\n  function value(form,name){ var el = field(form,name); if (!el) return \"\"; if (el.type === \"checkbox\") return el.checked ? el.value : \"\"; return (el.value || \"\").trim(); }\n  function hasValue(form,name){ return value(form,name) !== \"\"; }\n  function isDateField(el){\n    if (!el) return false;\n    if (el.name === \"fecha_nacimiento\") return true;\n    if (el.name === \"fecha_nacimiento_menor\") return true;\n    if (el.name.indexOf(\"fecha_nacimiento_menor_\") === 0) return true;\n    return false;\n  }\n  function validDateParts(day,month,year){\n    var cy = (new Date()).getFullYear();\n    if (!day) return false;\n    if (!month) return false;\n    if (!year) return false;\n    if (year < 1900) return false;\n    if (year > cy) return false;\n    if (month < 1) return false;\n    if (month > 12) return false;\n    if (day < 1) return false;\n    if (day > 31) return false;\n    return true;\n  }\n  function onlyDigits(v){ return String(v || \"\").replace(\/[^0-9]\/g,\"\"); }\n  function dateDigitsForInput(v){\n    v = String(v || \"\").trim();\n    if (v.length === 10) {\n      if (v.charAt(4) === \"-\") {\n        if (v.charAt(7) === \"-\") {\n          return onlyDigits(v.slice(8,10) + v.slice(5,7) + v.slice(0,4)).slice(0,8);\n        }\n      }\n    }\n    return onlyDigits(v).slice(0,8);\n  }\n  function dateCaretPosition(value,digitCount){\n    if (digitCount <= 0) return 0;\n    var seen = 0;\n    for (var i=0;i<value.length;i++){\n      if (\/[0-9]\/.test(value.charAt(i))) seen++;\n      if (seen >= digitCount) return i + 1;\n    }\n    return value.length;\n  }\n  function dateDigitCountBefore(value,pos){\n    value = String(value || \"\");\n    var limit = Math.max(0, pos || 0);\n    var count = 0;\n    for (var i=0;i<value.length;i++){\n      if (i >= limit) break;\n      if (\/[0-9]\/.test(value.charAt(i))) count++;\n    }\n    return count;\n  }\n  function formatDateInput(el){\n    if (!isDateField(el)) return;\n    var before = String(el.value || \"\");\n    var digitCursor = dateDigitCountBefore(before, el.selectionStart || before.length);\n    var d = dateDigitsForInput(before);\n    var next = d;\n    if (d.length > 2) next = d.slice(0,2) + \"\/\" + d.slice(2);\n    if (d.length > 4) next = d.slice(0,2) + \"\/\" + d.slice(2,4) + \"\/\" + d.slice(4);\n    if (before !== next) {\n      el.value = next;\n      try {\n        var pos = dateCaretPosition(next,digitCursor);\n        el.setSelectionRange(pos,pos);\n      } catch(error) {}\n    }\n  }\n  function isCompleteDate(v){\n    v = String(v || \"\").trim();\n    if (v.length === 10) {\n      if (v.charAt(4) === \"-\") {\n        if (v.charAt(7) === \"-\") {\n          return validDateParts(parseInt(v.slice(8,10),10), parseInt(v.slice(5,7),10), parseInt(v.slice(0,4),10));\n        }\n      }\n    }\n    var d = onlyDigits(v);\n    if (d.length !== 8) return false;\n    return validDateParts(parseInt(d.slice(0,2),10), parseInt(d.slice(2,4),10), parseInt(d.slice(4,8),10));\n  }\n  function ready(form,name){ var el = field(form,name); if (!el) return true; if (isDateField(el)) return isCompleteDate(el.value || \"\"); if (el.type === \"checkbox\") return el.checked; return hasValue(form,name); }\n  function show(el,on){ if (!el) return; if (on) el.classList.remove(\"fs-hidden-step\"); else el.classList.add(\"fs-hidden-step\"); }\n  function setLabel(form,name,text){ var w = wrap(form,name); if (!w) return; var nodes = Array.from(w.childNodes); for (var i=0;i<nodes.length;i++){ if (nodes[i].nodeType === 3) { nodes[i].nodeValue = text; return; } } w.insertBefore(document.createTextNode(text), w.firstChild); }\n  function fillOptions(select,items,placeholder){ if (!select) return; var current = select.value; select.innerHTML = \"\"; var first = document.createElement(\"option\"); first.value = \"\"; first.textContent = placeholder || \"Elegir opcion\"; select.appendChild(first); for (var i=0;i<items.length;i++){ var opt = document.createElement(\"option\"); opt.value = items[i]; opt.textContent = items[i]; select.appendChild(opt); } select.value = current; }\n  function modeOf(form){\n    var interest = value(form,\"tipo_interesado\");\n    if (interest === \"Quiero clases para mi\") return \"self\";\n    if (interest === \"Busco clases para mi hijo\/a\") return \"child\";\n    if (interest === \"Represento a un centro interesado\") return \"center\";\n    return \"\";\n  }\n  var adultCenters = [\"Salesianos Paseo\"];\n  var childCenters = [\"Salesianos Paseo\",\"San Buenaventura\"];\n  var adultPrograms = {\"Salesianos Paseo\":[\"Adultos clases ilimitadas lunes a viernes 18:30-20:00 y 21:00-22:30 - GI y No-Gi\",\"Adultos Lunes, miercoles y viernes 18:30-20:00 - GI\",\"Adultos Lunes, miercoles y viernes 21:00-22:30 - GI\",\"Adultos Martes y jueves 18:30-20:00 - GI\",\"Adultos Martes y jueves 21:00-22:30 - NOGI\",\"Bono flexible 10 clases - disponibilidad con secretaria\"]};\n  var childPrograms = {\"Salesianos Paseo\":[\"Extraescolar lunes y miercoles de 17:00 a 18:30 - recogida en comedor\",\"Extraescolar martes y jueves de 17:00 a 18:30 - recogida en comedor\",\"Infantiles martes y jueves de 17:45 a 19:15\"],\"San Buenaventura\":[\"Grupo 1 Lunes y miercoles 17:15-18:45\",\"Grupo 2 Martes y jueves 17:15-18:45\",\"Lista de familias interesadas - pendiente de confirmacion\"]};\n  function populateCenters(form,mode){\n    var select = field(form,\"centro\");\n    if (!select) return;\n    if (mode === \"self\") { fillOptions(select,adultCenters,\"Elegir centro\"); return; }\n    if (mode === \"child\") { fillOptions(select,childCenters,\"Elegir centro\"); return; }\n  }\n  function populatePrograms(form){\n    var center = value(form,\"centro\"); var select = field(form,\"programa\"); var mode = modeOf(form); var source = programs;\n    if (mode === \"self\") source = adultPrograms;\n    if (mode === \"child\") source = childPrograms;\n    var list = source[center] || [];\n    fillOptions(select,list,\"Elegir programa\");\n  }\n  function visibleField(el){ if (!el) return false; if (el.disabled) return false; if (el.type === \"hidden\") return false; var w = el.closest(\"label\") || el.closest(\".fs-minor-group\") || el; if (getComputedStyle(w).display === \"none\") return false; return true; }\n  function focusField(el){ if (!el) return; if (el.focus) el.focus({preventScroll:true}); var form = el.closest(\".fs-contact-form\"); if (!form) return; var target = el.closest(\"label\") || el.closest(\".fs-minor-group\") || el; var top = target.offsetTop - Math.max(22, form.clientHeight * 0.52); form.scrollTo({top:Math.max(0,top),behavior:\"smooth\"}); }\n  function nextField(form,el){ var all = Array.from(form.querySelectorAll(\"select,input,textarea,button.fs-add-minor\")); all = all.filter(visibleField); var idx = all.indexOf(el); if (idx < 0) return null; return all[idx + 1] || null; }\n  function orderedNames(mode){\n    if (mode === \"self\") return [\"tipo_interesado\",\"responsable\",\"fecha_nacimiento\",\"mayor_edad\",\"genero\",\"centro\",\"programa\",\"experiencia_bjj\",\"cinturon_bjj\",\"tiempo_bjj\",\"limitaciones_fisicas\",\"detalle_limitaciones\",\"email\",\"telefono\",\"preferencia\",\"mensaje\",\"consentimiento\"];\n    if (mode === \"child\") return [\"tipo_interesado\",\"responsable\",\"relacion_tutor\",\"fecha_nacimiento\",\"mayor_edad\",\"alumno_1\",\"fecha_nacimiento_menor\",\"genero\",\"experiencia_bjj_menor_1\",\"cinturon_bjj_menor_1\",\"tiempo_bjj_menor_1\",\"limitaciones_fisicas_menor_1\",\"detalle_limitaciones_menor_1\",\"add_minor\",\"centro\",\"programa\",\"email\",\"telefono\",\"preferencia\",\"mensaje\",\"consentimiento\"];\n    if (mode === \"center\") return [\"tipo_interesado\",\"responsable\",\"fecha_nacimiento\",\"mayor_edad\",\"nombre_centro\",\"link_centro\",\"puesto_centro\",\"interes_centro\",\"preferencia\",\"mensaje\",\"consentimiento\"];\n    return [\"tipo_interesado\"];\n  }\n  function shouldInclude(form,name,mode){\n    if (name === \"relacion_tutor\") return mode === \"child\";\n    if (name.indexOf(\"cinturon_bjj_menor_\") === 0) { var s1 = name.replace(\"cinturon_bjj_menor_\",\"\"); return value(form,\"experiencia_bjj_menor_\" + s1) === \"Si\"; }\n    if (name.indexOf(\"tiempo_bjj_menor_\") === 0) { var s2 = name.replace(\"tiempo_bjj_menor_\",\"\"); if (value(form,\"experiencia_bjj_menor_\" + s2) !== \"Si\") return false; return hasValue(form,\"cinturon_bjj_menor_\" + s2); }\n    if (name.indexOf(\"detalle_limitaciones_menor_\") === 0) { var s3 = name.replace(\"detalle_limitaciones_menor_\",\"\"); return value(form,\"limitaciones_fisicas_menor_\" + s3) === \"Si\"; }\n    if (name === \"cinturon_bjj\") return value(form,\"experiencia_bjj\") === \"Si\";\n    if (name === \"tiempo_bjj\") return shouldInclude(form,\"cinturon_bjj\",mode) ? hasValue(form,\"cinturon_bjj\") : false;\n    if (name === \"detalle_limitaciones\") return value(form,\"limitaciones_fisicas\") === \"Si\";\n    if (name === \"add_minor\") return mode === \"child\";\n    return true;\n  }\n  function previousReady(form,order,index,mode){\n    for (var i=0;i<index;i++){\n      var prev = order[i];\n      if (!shouldInclude(form,prev,mode)) continue;\n      if (prev === \"add_minor\") continue;\n      if (!ready(form,prev)) return false;\n    }\n    return true;\n  }\n  function showByOrder(form,mode){\n    var names = [\"responsable\",\"relacion_tutor\",\"fecha_nacimiento\",\"mayor_edad\",\"genero\",\"centro\",\"programa\",\"experiencia_bjj\",\"cinturon_bjj\",\"tiempo_bjj\",\"limitaciones_fisicas\",\"detalle_limitaciones\",\"email\",\"telefono\",\"preferencia\",\"mensaje\",\"consentimiento\",\"alumno_1\",\"fecha_nacimiento_menor\",\"experiencia_bjj_menor_1\",\"cinturon_bjj_menor_1\",\"tiempo_bjj_menor_1\",\"limitaciones_fisicas_menor_1\",\"detalle_limitaciones_menor_1\",\"nombre_centro\",\"link_centro\",\"puesto_centro\",\"interes_centro\"];\n    for (var n=0;n<names.length;n++) show(wrap(form,names[n]),false);\n    show(form.querySelector(\".fs-add-minor\"),false); show(form.querySelector(\".fs-contact-actions\"),false);\n    var order = orderedNames(mode);\n    for (var i=0;i<order.length;i++){\n      var name = order[i]; if (!shouldInclude(form,name,mode)) continue; var on = previousReady(form,order,i,mode); if (name === \"add_minor\") show(form.querySelector(\".fs-add-minor\"),on); else show(wrap(form,name),on);\n    }\n    var canActions = previousReady(form,order,order.length,mode); show(form.querySelector(\".fs-contact-actions\"),canActions);\n    var submit = form.querySelector(\".fs-contact-submit\"); if (submit) submit.disabled = !ready(form,\"consentimiento\");\n  }\n  function refreshMinorDetails(form,mode){\n    var items = Array.from(form.querySelectorAll('[name^=\"experiencia_bjj_menor_\"]'));\n    for (var i=0;i<items.length;i++){\n      var suffix = items[i].name.replace(\"experiencia_bjj_menor_\",\"\");\n      var childMode = mode === \"child\";\n      var showBelt = false;\n      if (childMode) showBelt = value(form,\"experiencia_bjj_menor_\" + suffix) === \"Si\";\n      show(wrap(form,\"cinturon_bjj_menor_\" + suffix),showBelt);\n      var showTime = false;\n      if (showBelt) showTime = hasValue(form,\"cinturon_bjj_menor_\" + suffix);\n      show(wrap(form,\"tiempo_bjj_menor_\" + suffix),showTime);\n      var showDetail = false;\n      if (childMode) showDetail = value(form,\"limitaciones_fisicas_menor_\" + suffix) === \"Si\";\n      show(wrap(form,\"detalle_limitaciones_menor_\" + suffix),showDetail);\n    }\n  }\n  function refresh(form){\n    var interest = value(form,\"tipo_interesado\"); var mode = \"\";\n    if (interest === \"Quiero clases para mi\") mode = \"self\";\n    if (interest === \"Busco clases para mi hijo\/a\") mode = \"child\";\n    if (interest === \"Represento a un centro interesado\") mode = \"center\";\n    setLabel(form,\"responsable\", mode === \"child\" ? \"Nombre padre\/madre tutor\" : (mode === \"center\" ? \"Nombre y apellidos completos\" : \"Nombre y apellidos\"));\n    setLabel(form,\"fecha_nacimiento\", \"Fecha de nacimiento\"); populateCenters(form,mode); populatePrograms(form); showByOrder(form,mode); refreshMinorDetails(form,mode);\n  }\n  function addMinor(form){\n    var box = form.querySelector(\".fs-extra-minors\");\n    if (!box) return;\n    var count = box.querySelectorAll(\".fs-minor-group\").length + 2;\n    if (count > 5) return;\n    var group = document.createElement(\"div\");\n    group.className = \"fs-minor-group\";\n    group.innerHTML = '<label>Nombre y apellidos del menor ' + count + '<input name=\"alumno_' + count + '\" autocomplete=\"off\"><\/label><label>Fecha de nacimiento del menor ' + count + '<input type=\"text\" inputmode=\"numeric\" placeholder=\"dd\/mm\/aaaa\" maxlength=\"10\" name=\"fecha_nacimiento_menor_' + count + '\" autocomplete=\"bday\"><\/label><label>Genero del menor ' + count + '<select name=\"genero_menor_' + count + '\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Masculino<\/option><option>Femenino<\/option><\/select><\/label><label>Experiencia previa BJJ del menor ' + count + '<select name=\"experiencia_bjj_menor_' + count + '\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Si<\/option><option>No<\/option><\/select><\/label><label>Color del cinturon del menor ' + count + '<select name=\"cinturon_bjj_menor_' + count + '\"><option value=\"\">Elegir color<\/option><option>Blanco<\/option><option>Gris blanco<\/option><option>Gris<\/option><option>Gris negro<\/option><option>Amarillo blanco<\/option><option>Amarillo<\/option><option>Amarillo negro<\/option><option>Naranja blanco<\/option><option>Naranja<\/option><option>Naranja negro<\/option><option>Verde blanco<\/option><option>Verde<\/option><option>Verde negro<\/option><option>Azul<\/option><option>Morado<\/option><option>Marron<\/option><option>Negro<\/option><\/select><\/label><label>Tiempo total de experiencia del menor ' + count + '<input name=\"tiempo_bjj_menor_' + count + '\" autocomplete=\"off\"><\/label><label>Limitaci\u00f3nes o condici\u00f3nes fisicas del menor ' + count + '<select name=\"limitaciones_fisicas_menor_' + count + '\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Si<\/option><option>No<\/option><\/select><\/label><label>Detalle de limitaci\u00f3n o condici\u00f3n del menor ' + count + '<input name=\"detalle_limitaciones_menor_' + count + '\"><\/label>';\n    box.appendChild(group);\n    refresh(form);\n    focusField(group.querySelector('input'));\n  }\n  function buildModal(){\n    var old = document.querySelector(\".fs-contact-modal\"); if (old) old.remove();\n    var modal = document.createElement(\"div\"); modal.className = \"fs-contact-modal\";\n    modal.innerHTML = '<div class=\"fs-contact-dialog\" role=\"dialog\" aria-modal=\"true\"><div class=\"fs-contact-head\"><div><h2>Formulario de contacto<\/h2><p>Rellena los datos y prepararemos el mensaje para WhatsApp.<\/p><\/div><button class=\"fs-contact-close\" type=\"button\" aria-label=\"Cerrar\">\u00d7<\/button><\/div><form class=\"fs-contact-form\" autocomplete=\"on\"><input type=\"hidden\" name=\"origen\" value=\"web-club-free-style-bjj\"><label>Interesado<select name=\"tipo_interesado\" required><option value=\"\">Elegir opci\u00f3n<\/option><option>Quiero clases para mi<\/option><option>Busco clases para mi hijo\/a<\/option><option>Represento a un centro interesado<\/option><\/select><\/label><label>Nombre y apellidos<input name=\"responsable\" autocomplete=\"name\"><\/label><label>Indica si eres padre, madre o tutor legal<select name=\"relacion_tutor\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Padre<\/option><option>Madre<\/option><option>Tutor legal<\/option><\/select><\/label><label>Fecha de nacimiento<input type=\"text\" inputmode=\"numeric\" placeholder=\"dd\/mm\/aaaa\" maxlength=\"10\" name=\"fecha_nacimiento\" autocomplete=\"bday\"><\/label><label>Confirmo que soy mayor de edad<input type=\"checkbox\" name=\"mayor_edad\" value=\"confirmado\"><\/label><label>Nombre y apellidos del menor<input name=\"alumno_1\" autocomplete=\"off\"><\/label><label>Fecha de nacimiento del menor<input type=\"text\" inputmode=\"numeric\" placeholder=\"dd\/mm\/aaaa\" maxlength=\"10\" name=\"fecha_nacimiento_menor\" autocomplete=\"bday\"><\/label><label>Genero<select name=\"genero\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Masculino<\/option><option>Femenino<\/option><\/select><\/label><label>Experiencia previa BJJ del menor<select name=\"experiencia_bjj_menor_1\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Si<\/option><option>No<\/option><\/select><\/label><label>Color del cinturon del menor<select name=\"cinturon_bjj_menor_1\"><option value=\"\">Elegir color<\/option><option>Blanco<\/option><option>Gris blanco<\/option><option>Gris<\/option><option>Gris negro<\/option><option>Amarillo blanco<\/option><option>Amarillo<\/option><option>Amarillo negro<\/option><option>Naranja blanco<\/option><option>Naranja<\/option><option>Naranja negro<\/option><option>Verde blanco<\/option><option>Verde<\/option><option>Verde negro<\/option><option>Azul<\/option><option>Morado<\/option><option>Marron<\/option><option>Negro<\/option><\/select><\/label><label>Tiempo total de experiencia del menor<input name=\"tiempo_bjj_menor_1\" autocomplete=\"off\"><\/label><label>Limitaci\u00f3nes o condici\u00f3nes fisicas del menor<select name=\"limitaciones_fisicas_menor_1\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Si<\/option><option>No<\/option><\/select><\/label><label>Detalle de limitaci\u00f3n o condici\u00f3n del menor<input name=\"detalle_limitaciones_menor_1\"><\/label><button class=\"fs-add-minor\" type=\"button\">A\u00f1adir otro menor<\/button><div class=\"fs-extra-minors\"><\/div><label>Centro<select name=\"centro\"><option value=\"\">Elegir centro<\/option><option>Salesianos Paseo<\/option><option>San Buenaventura<\/option><\/select><\/label><label>Programas de inter\u00e9s<select name=\"programa\"><option value=\"\">Elegir programa<\/option><\/select><\/label><label>Experiencia previa BJJ<select name=\"experiencia_bjj\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Si<\/option><option>No<\/option><\/select><\/label><label>Color del cinturon<select name=\"cinturon_bjj\"><option value=\"\">Elegir color<\/option><option>Blanco<\/option><option>Azul<\/option><option>Morado<\/option><option>Marron<\/option><option>Negro<\/option><\/select><\/label><label>Tiempo total de experiencia<input name=\"tiempo_bjj\" autocomplete=\"off\"><\/label><label>Limitaci\u00f3nes o condici\u00f3nes fisicas<select name=\"limitaciones_fisicas\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Si<\/option><option>No<\/option><\/select><\/label><label>Detalle de limitaci\u00f3n o condici\u00f3n<input name=\"detalle_limitaciones\"><\/label><label>Email<input type=\"email\" name=\"email\" autocomplete=\"email\"><\/label><label>Telefono<input name=\"telefono\" autocomplete=\"tel\"><\/label><label>Nombre del centro representado<input name=\"nombre_centro\"><\/label><label>link del centro interesado<input name=\"link_centro\" inputmode=\"url\" autocomplete=\"url\"><\/label><label>Puesto ocupado en el centro<select name=\"puesto_centro\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Director<\/option><option>Coordinador de deportes<\/option><option>Profesor<\/option><option>Otro<\/option><\/select><\/label><label>Te interesa<select name=\"interes_centro\"><option value=\"\">Elegir opci\u00f3n<\/option><option>Marcar una cita con los representantes del club<\/option><option>Recibir informaci\u00f3n del proyecto<\/option><\/select><\/label><label>Como quieres que se pongan en contacto contigo<select name=\"preferencia\"><option value=\"\">Elegir opci\u00f3n<\/option><option>WhatsApp<\/option><option>Llamada<\/option><option>Email<\/option><\/select><\/label><label>Mensaje<textarea name=\"mensaje\"><\/textarea><\/label><label class=\"fs-contact-check\">Acepto que el club use estos datos solo para responder a esta solicitud. La documentaci\u00f3n de matr\u00edcula se pedira mas adelante por canal privado, no en este primer formulario p\u00fablico.<input type=\"checkbox\" name=\"consentimiento\" value=\"aceptado\"><\/label><div class=\"fs-contact-actions\"><button class=\"fs-contact-cancel\" type=\"button\">Cancelar<\/button><button class=\"fs-contact-submit\" type=\"submit\" disabled>Enviar WhatsApp<\/button><\/div><\/form><\/div>';\n    document.body.appendChild(modal); var form = modal.querySelector(\"form\"); Array.from(form.querySelectorAll(\"input,select,textarea\")).forEach(function(el){ if (el.type === \"checkbox\") el.checked = false; else if (el.type !== \"hidden\") el.value = \"\"; });\n    form.addEventListener(\"input\",function(e){ var el = e.target; if (!el) return; if (isDateField(el)) formatDateInput(el); refresh(form); },true);\n    form.addEventListener(\"change\",function(e){ refresh(form); if (ready(form,e.target.name)) { var nf = nextField(form,e.target); if (nf) focusField(nf); else if (visibleField(e.target)) focusField(e.target); } else if (visibleField(e.target)) focusField(e.target); },true);\n    form.addEventListener(\"focusout\",function(e){ refresh(form); },true);\n    form.addEventListener(\"keydown\",function(e){ var el = e.target; if (!el) return; if (e.key !== \"Tab\") { if (e.key !== \"Enter\") return; } if (isDateField(el)) { if (!isCompleteDate(el.value || \"\")) { e.preventDefault(); focusField(el); return; } } if (!ready(form,el.name)) return; refresh(form); var next = nextField(form,el); if (next) { e.preventDefault(); focusField(next); } },true);\n    form.querySelector(\".fs-add-minor\").addEventListener(\"click\",function(){ addMinor(form); });\n    form.addEventListener(\"submit\",function(e){\n      e.preventDefault();\n      if (!ready(form,\"consentimiento\")) return;\n      if (form.dataset.fsSubmitLocked === \"1\") return;\n      form.dataset.fsSubmitLocked = \"1\";\n      window.setTimeout(function(){ form.dataset.fsSubmitLocked = \"\"; },3500);\n      function clean(v){ return fsCleanText(v); }\n      function fieldValue(name){ return clean(value(form,name)); }\n      function fsStripGeneratedRequest(v){ var msg = clean(v); var marker = \"Solicitud Club Free Style BJJ\"; var pos = msg.indexOf(marker); if (pos > -1) msg = clean(msg.slice(0,pos)); return msg; }\n      function safeMessage(){ return fsStripGeneratedRequest(fieldValue(\"mensaje\")); }\n      function fsDedupeRequestBody(v){ var text = String(v || \"\").trim(); var marker = \"Solicitud Club Free Style BJJ\"; var first = text.indexOf(marker); if (first > -1) { var second = text.indexOf(marker, first + marker.length); if (second > -1) text = String(text.slice(0,second)).trim(); } return text; }\n      function formatDate(v){\n        v = clean(v);\n        if (v.length === 10 && v.charAt(4) === \"-\" && v.charAt(7) === \"-\") return v;\n        var d = String(v || \"\").replace(\/[^0-9]\/g,\"\");\n        if (d.length === 8) return d.slice(4,8) + \"-\" + d.slice(2,4) + \"-\" + d.slice(0,2);\n        return v;\n      }\n      function programLabel(v){ v = clean(v); if (v.indexOf(\" - \") !== -1) return v.split(\" - \")[0]; return v; }\n      function selfGenderLine(v){ return v === \"Femenino\" ? \"\ud83d\ude4e\u200d\u2640\ufe0f *Genero:* Mujer\" : \"\ud83d\ude4e\u200d\u2642\ufe0f *Genero:* Hombre\"; }\n      function childGenderLine(n,v){ return (v === \"Femenino\" ? \"\ud83d\udc67\" : \"\ud83d\udc66\") + \"*Genero menor \" + n + \"* : \" + clean(v); }\n      function expIcon(v){ return v === \"No\" ? \"\ud83d\udfe5\" : \"\ud83d\udfe9\"; }\n      function addLine(lines,label,name){ var v = fieldValue(name); if (v) lines.push(label + v); }\n      var lines = [];\n      var tipo = fieldValue(\"tipo_interesado\");\n      if (tipo === \"Quiero clases para mi\") {\n        lines.push(\"\ud83d\udccb *_Solicitud Club Free Style BJJ_*\");\n        lines.push(\"\ud83d\udcdd *Interesado:* Clases para mi\");\n        lines.push(\"\u2049\ufe0f *Tipo de consulta:* Clase de prueba\");\n        lines.push(\"\ud83c\udfeb *Centro:* \" + fieldValue(\"centro\"));\n        lines.push(\"\ud83d\udcc6\u23f1\ufe0f *Programa de inter\u00e9s:* \" + programLabel(fieldValue(\"programa\")));\n        lines.push(\"\ud83d\udcac *Preferencia de contacto:* \" + fieldValue(\"preferencia\"));\n        lines.push(\"\ud83d\udcdd *Nombre y apellidos:* \" + fieldValue(\"responsable\") + \" _\" + String.fromCharCode(92) + \"_ *Mayor de edad:* \" + fieldValue(\"mayor_edad\"));\n        lines.push(\"\ud83d\udc23 *Fecha de nacimiento:* \" + formatDate(fieldValue(\"fecha_nacimiento\")));\n        lines.push(selfGenderLine(fieldValue(\"genero\")));\n        lines.push(expIcon(fieldValue(\"experiencia_bjj\")) + \" *Experiencia previa BJJ:* \" + fieldValue(\"experiencia_bjj\"));\n        if (fieldValue(\"experiencia_bjj\") === \"Si\") {\n          if (fieldValue(\"cinturon_bjj\")) lines.push(\"\ud83e\udd4b *Color de cinturon:* \" + fieldValue(\"cinturon_bjj\"));\n          if (fieldValue(\"tiempo_bjj\")) lines.push(\"\ud83d\udcc6 *Tiempo de experiencia:* \" + fieldValue(\"tiempo_bjj\"));\n        }\n        lines.push(\"\ud83e\ude7c *Limitaci\u00f3nes o condici\u00f3nes especiales:* \" + fieldValue(\"limitaciones_fisicas\"));\n        if (fieldValue(\"limitaciones_fisicas\") === \"Si\") { if (fieldValue(\"detalle_limitaciones\")) lines.push(\"\ud83d\udcdd *Detalle de limitaci\u00f3n o condici\u00f3n:* \" + fieldValue(\"detalle_limitaciones\")); }\n        lines.push(\"\ud83d\udce7 *Email:* \" + fieldValue(\"email\"));\n        lines.push(\"\ud83d\udcde *Telefono:* \" + fieldValue(\"telefono\"));\n        lines.push(\"\ud83d\udce8 *Mensaje:* \" + safeMessage());\n      } else if (tipo === \"Busco clases para mi hijo\/a\") {\n        lines.push(\"\ud83d\udccb *Solicitud Club Free Style BJJ*\");\n        lines.push(\"\ud83d\udcdd *Interesado:* Clases para mi hijo\/a\");\n        var rel = fieldValue(\"relacion_tutor\");\n        lines.push(\"\ud83d\udcdd *Nombre padre\/madre tutor* _(\" + (rel || \"indicar si es padre, madre o tutor legal\") + \")_ *:* \" + fieldValue(\"responsable\"));\n        lines.push(\"\ud83d\udc23 *Fecha de nacimiento padre\/madre tutor:* \" + formatDate(fieldValue(\"fecha_nacimiento\")));\n        lines.push(\"*Mayor de edad:* \" + fieldValue(\"mayor_edad\"));\n        for (var m=1;m<=5;m++) {\n          var alumnoName = \"alumno_\" + m;\n          if (!fieldValue(alumnoName)) continue;\n          lines.push(\"\ud83e\uddd2 *Menor \" + m + \":* \" + fieldValue(alumnoName));\n          lines.push(\"\ud83d\udc23 *Fecha de nacimiento menor \" + m + \":* \" + formatDate(fieldValue(m === 1 ? \"fecha_nacimiento_menor\" : \"fecha_nacimiento_menor_\" + m)));\n          lines.push(childGenderLine(m, fieldValue(m === 1 ? \"genero\" : \"genero_menor_\" + m)));\n          var expName = \"experiencia_bjj_menor_\" + m;\n          lines.push(expIcon(fieldValue(expName)) + \" *Experiencia BJJ menor \" + m + \":* \" + fieldValue(expName));\n          if (fieldValue(expName) === \"Si\") {\n            if (fieldValue(\"cinturon_bjj_menor_\" + m)) lines.push(\"\ud83e\udd4b *Color de cinturon menor \" + m + \":* \" + fieldValue(\"cinturon_bjj_menor_\" + m));\n            if (fieldValue(\"tiempo_bjj_menor_\" + m)) lines.push(\"\ud83d\udcc6 *Tiempo de experiencia menor \" + m + \":* \" + fieldValue(\"tiempo_bjj_menor_\" + m));\n          }\n          var limName = \"limitaciones_fisicas_menor_\" + m;\n          lines.push(\"\ud83e\ude7c *Limitaciones menor \" + m + \":* \" + fieldValue(limName));\n          if (fieldValue(limName) === \"Si\") { if (fieldValue(\"detalle_limitaciones_menor_\" + m)) lines.push(\"\ud83d\udcdd *Detalle limitacion menor \" + m + \":* \" + fieldValue(\"detalle_limitaciones_menor_\" + m)); }\n        }\n        lines.push(\"\ud83c\udfeb *Centro:* \" + fieldValue(\"centro\"));\n        lines.push(\"\ud83d\udcc6\u23f1\ufe0f *Programa de interes:* \" + fieldValue(\"programa\"));\n        lines.push(\"\ud83d\udce7 *Email:* \" + fieldValue(\"email\"));\n        lines.push(\"\ud83d\udcde *Telefono:* \" + fieldValue(\"telefono\"));\n        lines.push(\"\ud83d\udcac *Preferencia de contacto:* \" + fieldValue(\"preferencia\"));\n        lines.push(\"\ud83d\udce8 *Mensaje:* \" + safeMessage());\n      } else if (tipo === \"Represento a un centro interesado\") {\n        lines.push(\"\ud83d\udccb *Solicitud Club Free Style BJJ*\");\n        lines.push(\"\ud83d\udcdd *Interesado:* Represento a un centro interesado\");\n        lines.push(\"\ud83d\udcdd *Nombre:* \" + fieldValue(\"responsable\"));\n        lines.push(\"\ud83d\udc23 *Fecha de nacimiento:* \" + formatDate(fieldValue(\"fecha_nacimiento\")));\n        lines.push(\"*Mayor de edad:* \" + fieldValue(\"mayor_edad\"));\n        lines.push(\"\ud83d\udcac *Preferencia de contacto:* \" + fieldValue(\"preferencia\"));\n        lines.push(\"\ud83c\udfeb *Centro representado:* \" + fieldValue(\"nombre_centro\"));\n        lines.push(\"\ud83c\udf10 *link del centro interesado:* \" + (fieldValue(\"link_centro\") || \"(rellenar informacion)\"));\n        lines.push(\"\ud83d\udc64 *Puesto:* \" + fieldValue(\"puesto_centro\"));\n        lines.push(\"\u2049\ufe0f *Interes:* \" + fieldValue(\"interes_centro\"));\n        lines.push(\"\ud83d\udce8 *Mensaje:* \" + safeMessage());\n      }\n      var sep = String.fromCharCode(38);\n      var body = fsDedupeRequestBody(lines.join(String.fromCharCode(10)));\n      var fsNow = Date.now ? Date.now() : new Date().getTime();\n      if (window.__fsLastContactMessage === body) {\n        if (fsNow - (window.__fsLastContactAt || 0) < 3500) return;\n      }\n      window.__fsLastContactMessage = body;\n      window.__fsLastContactAt = fsNow;\n      var submitMode = form.getAttribute(\"data-fs-submit-mode\") || \"whatsapp\";\n      if (submitMode === \"email\") {\n        window.location.href = \"mailto:info@clubfreestylebjj.com?subject=\" + encodeURIComponent(\"Solicitud Club Free Style BJJ\") + sep + \"body=\" + encodeURIComponent(body);\n      } else {\n        window.location.href = \"whatsapp:\/\/send?phone=\" + phone + sep + \"text=\" + encodeURIComponent(body);\n      }\n    });\n    modal.querySelector(\".fs-contact-close\").addEventListener(\"click\",function(){ modal.removeAttribute(\"open\"); }); modal.querySelector(\".fs-contact-cancel\").addEventListener(\"click\",function(){ modal.removeAttribute(\"open\"); }); refresh(form); return modal;\n  }\n  function openModal(link){ var modal = buildModal(); var form = modal.querySelector(\"form\"); var href = link ? (link.getAttribute(\"href\") || \"\") : \"\"; var emailMode = href.indexOf(\"mailto:\") === 0; if (form) { form.setAttribute(\"data-fs-submit-mode\", emailMode ? \"email\" : \"whatsapp\"); var pref = field(form,\"preferencia\"); if (emailMode) { if (pref) pref.value = \"Email\"; } } var submit = modal.querySelector(\".fs-contact-submit\"); if (submit) submit.textContent = emailMode ? \"Enviar email\" : \"Enviar WhatsApp\"; var desc = modal.querySelector(\".fs-contact-head p\"); if (desc) desc.textContent = emailMode ? \"Rellena los datos y prepararemos el email.\" : \"Rellena los datos y prepararemos el mensaje para WhatsApp.\"; modal.setAttribute(\"open\",\"\"); focusField(field(modal,\"tipo_interesado\")); }\n  document.addEventListener(\"click\",function(e){ var link = e.target.closest ? e.target.closest(\"a[href]\") : null; if (!isContactLink(link)) return; e.preventDefault(); e.stopImmediatePropagation(); openModal(link); },true);\n})();\n<\/script>\n\n\n\n\n\n<!-- fs-championships-fit-clean-v1 -->\n\n\n<!-- fs-global-media-text-autofit-v1 -->\n<script id=\"fs-merge-round2-js-v1\">\n(function(){\n  \"use strict\";\n\n  \/* origen: c636990249 - interacciones globales genericas:\n     - abre\/cierra el menu flotante (.fs-floating-menu) y sus ramas (.fs-menu-branch)\n     - flechas de carrusel (.fs-prev \/ .fs-next dentro de [data-carousel])\n     - motor del buscador de campeonatos (#buscador-campeonatos), lee sus datos de un\n       <script id=\"fs-cs-data\"> JSON embebido POR PAGINA -- el motor es generico, el\n       dato vive aparte, por lo que no hay riesgo de mezclar contenido entre paginas *\/\n  if (!window.__fsGlobalInteractionsSafeV2) {\n    window.__fsGlobalInteractionsSafeV2 = true;\n\n    document.addEventListener(\"click\", function(event){\n      var summary = event.target && event.target.closest ? event.target.closest(\".fs-floating-menu > summary\") : null;\n      if (summary) {\n        var menu = summary.parentElement;\n        if (menu && menu.tagName === \"DETAILS\") {\n          event.preventDefault();\n          menu.open = !menu.open;\n        }\n        return;\n      }\n      var branchSummary = event.target && event.target.closest ? event.target.closest(\".fs-menu-branch > summary\") : null;\n      if (branchSummary) {\n        var branch = branchSummary.parentElement;\n        if (branch && branch.tagName === \"DETAILS\") {\n          event.preventDefault();\n          event.stopPropagation();\n          branch.open = !branch.open;\n        }\n        return;\n      }\n      var prev = event.target && event.target.closest ? event.target.closest(\"[data-carousel] .fs-prev\") : null;\n      var next = event.target && event.target.closest ? event.target.closest(\"[data-carousel] .fs-next\") : null;\n      if (!prev && !next) return;\n      var carousel = (prev || next).closest(\"[data-carousel]\");\n      var track = carousel && carousel.querySelector(\".fs-carousel-track\");\n      var slides = carousel ? carousel.querySelectorAll(\".fs-carousel-slide\") : [];\n      if (!track || !slides.length) return;\n      event.preventDefault();\n      event.stopPropagation();\n      var index = Number(carousel.dataset.fsSafeIndex || \"0\") || 0;\n      index = (index + (next ? 1 : -1) + slides.length) % slides.length;\n      carousel.dataset.fsSafeIndex = String(index);\n      track.style.transform = \"translateX(\" + (-index * 100) + \"%)\";\n    }, false);\n\n    function bootChampionshipSearch(){\n      var root = document.getElementById(\"buscador-campeonatos\");\n      if (!root || root.dataset.fsSafeSearch === \"true\") return;\n      var dataEl = document.getElementById(\"fs-cs-data\");\n      var grid = root.querySelector(\"[data-grid]\");\n      var pages = root.querySelector(\"[data-pages]\");\n      var count = root.querySelector(\"[data-count]\");\n      var pageState = root.querySelector(\"[data-page-state]\");\n      var empty = root.querySelector(\"[data-empty]\");\n      var loading = root.querySelector(\"[data-loading]\");\n      if (!dataEl || !grid || !pages) return;\n      var raw;\n      try { raw = JSON.parse(dataEl.textContent || \"{}\"); } catch(error) { return; }\n      var orgs = raw.orgs || {};\n      var today = new Date();\n      today = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n      function mapEvents(list){\n        return (list || []).map(function(x){\n          var org = orgs[x[3]] || [x[3], x[2]];\n          return {t:x[0]||\"\",u:x[1]||\"#\",img:x[2]||\"\",org:x[3]||\"\",on:org[0]||x[3]||\"\",logo:org[1]||\"\",cc:x[4]||\"\",cn:x[5]||\"\",city:x[6]||\"\",prov:x[7]||\"\",loc:x[8]||\"\",start:x[9]||\"\",date:x[10]||\"\",days:x[11],status:x[12]||\"\",type:x[13]||\"\",pk:x[14]||\"unknown\",prize:x[15]||\"\",color:x[16]||\"#111\"};\n        });\n      }\n      var events = mapEvents(raw.events);\n      var fsCsFullLoadState = 0;\n      function ensureFullThenRender(){\n        if (fsCsFullLoadState === 2 || !raw.fullDataUrl) { render(); return; }\n        if (fsCsFullLoadState === 1) return;\n        fsCsFullLoadState = 1;\n        if (loading) loading.style.display = \"\";\n        fetch(raw.fullDataUrl).then(function(r){ return r.text(); }).then(function(text){\n          var fullData = JSON.parse(text);\n          if (fullData.orgs) { Object.keys(fullData.orgs).forEach(function(k){ orgs[k] = fullData.orgs[k]; }); }\n          events = mapEvents(fullData.events);\n          fsCsFullLoadState = 2;\n          render();\n        }).catch(function(){ fsCsFullLoadState = 0; render(); });\n      }\n      var filters = {q:root.querySelector('[data-filter=\"q\"]'),org:root.querySelector('[data-filter=\"org\"]'),country:root.querySelector('[data-filter=\"country\"]'),province:root.querySelector('[data-filter=\"province\"]'),city:root.querySelector('[data-filter=\"city\"]'),type:root.querySelector('[data-filter=\"type\"]'),prize:root.querySelector('[data-filter=\"prize\"]'),sort:root.querySelector('[data-filter=\"sort\"]')};\n      var state = {status:\"upcoming\",page:1,pageSize:24};\n      function norm(v){return String(v||\"\").toLowerCase().normalize(\"NFD\").replace(new RegExp(\"[\" + String.fromCharCode(92) + \"u0300-\" + String.fromCharCode(92) + \"u036f]\", \"g\"), \"\").replace(new RegExp(String.fromCharCode(92) + \"s+\", \"g\"), \" \").trim();}\n      function esc(v){return String(v==null?\"\":v).replace(\/[&<>\"']\/g,function(c){return {\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#039;\"}[c];});}\n      function val(k){return filters[k]?filters[k].value:\"\";}\n      function actual(e){var p=String(e.start||\"\").split(\"-\");if(p.length===3){var d=new Date(Number(p[0]),Number(p[1])-1,Number(p[2]));return d<today?\"past\":\"upcoming\";}return e.status||\"upcoming\";}\n      function match(e){var q=norm(val(\"q\"));var text=norm([e.t,e.on,e.cn,e.cc,e.city,e.prov,e.loc,e.type,e.prize,e.pk].join(\" \"));var org=val(\"org\"),country=val(\"country\"),province=val(\"province\"),city=val(\"city\"),type=val(\"type\"),prizeVal=val(\"prize\");if(actual(e)!==state.status)return false;if(q ? text.indexOf(q)===-1 : false)return false;if(org ? e.org!==org : false)return false;if(country ? norm([e.cc,e.cn].join(\" \")).indexOf(norm(country))===-1 : false)return false;if(province ? norm(e.prov).indexOf(norm(province))===-1 : false)return false;if(city ? norm(e.city).indexOf(norm(city))===-1 : false)return false;if(type ? norm(e.type).indexOf(norm(type))===-1 : false)return false;if(prizeVal ? e.pk!==prizeVal : false)return false;return true;}\n      function sorted(list){var mode=val(\"sort\");return list.slice().sort(function(a,b){if(mode===\"name\")return a.t.localeCompare(b.t);if(mode===\"city\")return (a.city||a.loc).localeCompare(b.city||b.loc);if(mode===\"federation\")return (a.on||\"\").localeCompare(b.on||\"\");var at=a.start?Date.parse(a.start):8640000000000000,bt=b.start?Date.parse(b.start):8640000000000000;return state.status===\"past\"?bt-at:at-bt;});}\n      function days(e){if(e.days===\"\"||e.days==null||isNaN(Number(e.days)))return \"Fecha por confirmar\";var n=Number(e.days);if(actual(e)===\"past\")return Math.abs(n)+\" dias\";if(n===0)return \"hoy\";if(n===1)return \"1 dia\";return n+\" dias\";}\n      function prize(e){return e.prize || (e.pk===\"ranking\"?\"Ranking oficial. Premios no publicados en el resumen.\":\"Premios no publicados en el resumen oficial.\");}\n\n      function card(e){var img=e.img||e.logo||\"\";var logo=!e.img||e.img===e.logo;var bg=(logo ? e.color : false)?' style=\"background:linear-gradient(135deg,'+esc(e.color)+',#111)\"':\"\";return '<a class=\"fs-cs-event-card\" href=\"'+esc(e.u)+'\" target=\"_blank\" rel=\"noopener\"><div class=\"fs-cs-cover '+(logo?'is-logo':'')+'\"'+bg+'><img decoding=\"async\" loading=\"lazy\" src=\"'+esc(img)+'\" alt=\"'+esc(e.t)+'\"><span class=\"fs-cs-cover-tag\">'+esc(e.on)+'<\/span><\/div><div class=\"fs-cs-event-body\"><h3>'+esc(e.t)+'<\/h3><div class=\"fs-cs-meta-line\"><span class=\"fs-cs-country\">'+esc(e.cc||\"--\")+'<\/span><span>'+esc(e.loc||e.city||e.cn||\"Evento oficial\")+'<\/span><\/div><div class=\"fs-cs-tags\"><span class=\"fs-cs-tag gold\">'+esc(actual(e)===\"past\"?\"Pasado\":\"Pr\u00f3ximo\")+'<\/span><span class=\"fs-cs-tag\">'+esc(e.type||\"Evento\")+'<\/span><\/div><div class=\"fs-cs-prize\"><b>Premio<\/b>'+esc(prize(e))+'<\/div><div class=\"fs-cs-date-row\"><span>'+esc(e.date||e.start||\"Fecha oficial\")+'<\/span><span class=\"fs-cs-days\">'+esc(days(e))+'<\/span><\/div><\/div><\/a>';}\n      function renderPages(totalPages){pages.innerHTML=\"\";if(totalPages<=1)return;function add(label,page,active,disabled){var b=document.createElement(\"button\");b.type=\"button\";b.textContent=label;b.disabled=!!disabled;if(active)b.className=\"is-active\";b.addEventListener(\"click\",function(e){e.preventDefault();state.page=page;render();});pages.appendChild(b);}add(\"Anterior\",Math.max(1,state.page-1),false,state.page===1);var start=Math.max(1,state.page-2),end=Math.min(totalPages,start+4);start=Math.max(1,end-4);for(var i=start;i<=end;i++)add(String(i),i,i===state.page,false);add(\"Siguiente\",Math.min(totalPages,state.page+1),false,state.page===totalPages);}\n      function render(){var list=sorted(events.filter(match));var total=list.length;var totalPages=Math.max(1,Math.ceil(total\/state.pageSize));if(state.page>totalPages)state.page=totalPages;grid.innerHTML=list.slice((state.page-1)*state.pageSize,state.page*state.pageSize).map(card).join(\"\");if(count)count.textContent=total+(total===1?\" evento encontrado\":\" eventos encontrados\");if(pageState)pageState.textContent=total?\"P\u00e1gina \"+state.page+\" de \"+totalPages:\"\";if(empty)empty.classList.toggle(\"is-visible\",total===0);if(loading)loading.style.display=\"none\";renderPages(totalPages);}\n      root.querySelectorAll(\"[data-status]\").forEach(function(b){b.addEventListener(\"click\",function(e){e.preventDefault();state.status=b.getAttribute(\"data-status\")||\"upcoming\";state.page=1;root.querySelectorAll(\"[data-status]\").forEach(function(x){x.classList.toggle(\"is-active\",x===b);});render();});});\n      Object.keys(filters).forEach(function(k){if(!filters[k])return;filters[k].addEventListener(\"input\",function(){state.page=1;ensureFullThenRender();});filters[k].addEventListener(\"change\",function(){state.page=1;ensureFullThenRender();});});\n      var reset=root.querySelector(\"[data-reset]\");if(reset)reset.addEventListener(\"click\",function(e){e.preventDefault();Object.keys(filters).forEach(function(k){if(filters[k])filters[k].value=\"\";});state.page=1;render();});\n      root.querySelectorAll(\"[data-quick]\").forEach(function(b){b.addEventListener(\"click\",function(e){e.preventDefault();if(filters.country)filters.country.value=b.getAttribute(\"data-quick\")===\"ES\"?\"ES\":\"\";if(filters.province)filters.province.value=\"\";if(filters.city)filters.city.value=\"\";state.page=1;render();});});\n      root.querySelectorAll(\"[data-quick-city]\").forEach(function(b){b.addEventListener(\"click\",function(e){e.preventDefault();if(filters.q)filters.q.value=b.getAttribute(\"data-quick-city\")||\"\";state.page=1;ensureFullThenRender();});});\n      root.dataset.fsSafeSearch = \"true\";\n      render();\n    }\n    if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", bootChampionshipSearch);\n    else bootChampionshipSearch();\n    window.addEventListener(\"load\", bootChampionshipSearch, {once:true});\n  }\n\n  \/* origen: 635a90b87b - scroll suave a anclas de horarios (.fs-schedule-link[href^=\"#\"]) *\/\n  (function scheduleAnchors(){\n    function init(){\n      document.querySelectorAll('.fs-schedule-link[href^=\"#\"]').forEach(function(link){\n        if(link.dataset.fsScheduleReady==='1')return;\n        link.dataset.fsScheduleReady='1';\n        link.addEventListener('click',function(e){\n          var target=document.querySelector(link.getAttribute('href'));\n          if(!target)return;\n          e.preventDefault();\n          target.scrollIntoView({behavior:'smooth',block:'start'});\n          try{history.pushState(null,'',link.getAttribute('href'));}catch(err){}\n        });\n      });\n    }\n    if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);\n    else init();\n  })();\n\n  \/* origen: 893dcfc3ae - garantiza que .fs-contact-actions \/ .fs-contact-choice queden al\n     final del formulario de contacto (evita que el reordenado dinamico del formulario los\n     deje en medio) *\/\n  if (!window.__fsContactFormFooterEnforcerSafe) {\n    window.__fsContactFormFooterEnforcerSafe = true;\n    function placeFooter(form){\n      if (!form || !form.querySelectorAll) return;\n      var actions = form.querySelector(\".fs-contact-actions\") || form.querySelector(\".fs-actions\");\n      var choice = form.querySelector(\".fs-contact-choice\");\n      if (actions && actions.parentNode === form && actions.nextElementSibling && actions.nextElementSibling !== choice) {\n        form.appendChild(actions);\n      }\n      if (choice && choice.parentNode === form && choice.nextElementSibling) {\n        form.appendChild(choice);\n      }\n    }\n    function scanFooters(){\n      document.querySelectorAll(\"form.fs-contact-form, .fs-contact-modal form, .fs-form-disclosure form, .fsbjj form.fs-form\").forEach(placeFooter);\n    }\n    document.addEventListener(\"change\", function(event){\n      var form = event.target && event.target.closest ? event.target.closest(\"form\") : null;\n      if (form) window.setTimeout(function(){ placeFooter(form); }, 40);\n    }, true);\n    if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", scanFooters);\n    else scanFooters();\n    window.addEventListener(\"load\", scanFooters, {once:true});\n  }\n\n  \/* origen: e186ccec01 - texto\/estado del boton de envio segun modo (WhatsApp vs email) y\n     segun si el checkbox de consentimiento esta marcado. Respeta la botonera de eleccion\n     (.fs-contact-choice) -- NO la oculta ni la fuerza, Marcelo confirmo que debe conservarse. *\/\n  if (!window.__fsSubmitModeLabelFix) {\n    window.__fsSubmitModeLabelFix = true;\n    function fixSubmitLabels(){\n      document.querySelectorAll('form.fs-contact-form, .fs-contact-modal form').forEach(function(form){\n        var submit = form.querySelector('.fs-contact-submit');\n        if (!submit) return;\n        var emailMode = form.getAttribute('data-fs-submit-mode') === 'email';\n        submit.textContent = emailMode ? 'Enviar email' : 'Enviar WhatsApp';\n        var consent = form.querySelector('[name=\"consentimiento\"]');\n        if (consent) {\n          submit.disabled = !consent.checked;\n          submit.setAttribute('aria-disabled', submit.disabled ? 'true' : 'false');\n        }\n      });\n    }\n    document.addEventListener('click', function(){ setTimeout(fixSubmitLabels, 90); }, true);\n    document.addEventListener('change', fixSubmitLabels, true);\n    document.addEventListener('input', fixSubmitLabels, true);\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fixSubmitLabels);\n    else fixSubmitLabels();\n    window.addEventListener('load', fixSubmitLabels, { once:true });\n  }\n\n  \/* origen: ee8c24a4c8 - envuelve formularios .fsbjj form.fs-form en un <details> colapsable\n     (no toca los que ya viven dentro de .fs-form-disclosure) *\/\n  if (!window.__fsCollapsibleFormsReady) {\n    window.__fsCollapsibleFormsReady = true;\n    function titleFor(form){\n      var section = form.closest(\"section\");\n      var heading = section && section.querySelector(\"h2,h3\");\n      var submit = form.querySelector('button[type=\"submit\"],input[type=\"submit\"]');\n      var text = heading ? heading.textContent.trim() : \"\";\n      if (!text && submit) text = submit.textContent || submit.value || \"\";\n      return text || \"Formulario\";\n    }\n    function makeCollapsible(){\n      document.querySelectorAll(\".fsbjj form.fs-form\").forEach(function(form){\n        if (form.dataset.fsCollapsibleReady === \"true\") return;\n        if (form.closest(\".fs-form-disclosure\")) return;\n        form.dataset.fsCollapsibleReady = \"true\";\n        var details = document.createElement(\"details\");\n        details.className = \"fs-form-disclosure\";\n        var summary = document.createElement(\"summary\");\n        summary.textContent = titleFor(form);\n        form.parentNode.insertBefore(details, form);\n        details.appendChild(summary);\n        details.appendChild(form);\n      });\n    }\n    if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", makeCollapsible);\n    else makeCollapsible();\n    window.addEventListener(\"load\", makeCollapsible, {once:true});\n  }\n\n  \/* origen: 59f89a4f69 - recorta el credito de Kadence en el footer nativo despues del guion *\/\n  (function trimKadenceCredit(){\n    function trimKadenceCreditAfterDash(){\n      document.querySelectorAll('.site-footer .footer-html-inner p, .site-footer .site-info p').forEach(function(item){\n        var text = (item.textContent || '').replace(new RegExp(String.fromCharCode(92) + \"s+\", \"g\"), \" \").trim();\n        if (!text.includes('Club Free Style BJJ') || !text.includes(' - ')) return;\n        item.textContent = text.split(' - ')[0].trim();\n      });\n    }\n    trimKadenceCreditAfterDash();\n    document.addEventListener('DOMContentLoaded', trimKadenceCreditAfterDash);\n    window.addEventListener('load', trimKadenceCreditAfterDash);\n  })();\n\n})();\n\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Club Free Style BJJ Menu Inicio Clases Colegios Salesianos Paseo San Buenaventura Proyecto Liga escolar Campeonatos Tienda Contacto Jiu-Jitsu brasile\u00f1o en Madrid \u00b7 desde el primer d\u00eda Entra por curiosidad. Qu\u00e9date porque aqu\u00ed se construye algo tuyo. Club Free Style BJJ es la escuela de Jiu-Jitsu brasile\u00f1o en Madrid donde cada alumno \u2014tenga 6 a\u00f1os&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-6970","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/clubfreestylebjj.com\/index.php\/wp-json\/wp\/v2\/pages\/6970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clubfreestylebjj.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/clubfreestylebjj.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/clubfreestylebjj.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/clubfreestylebjj.com\/index.php\/wp-json\/wp\/v2\/comments?post=6970"}],"version-history":[{"count":0,"href":"https:\/\/clubfreestylebjj.com\/index.php\/wp-json\/wp\/v2\/pages\/6970\/revisions"}],"wp:attachment":[{"href":"https:\/\/clubfreestylebjj.com\/index.php\/wp-json\/wp\/v2\/media?parent=6970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}