1<!DOCTYPE html> 2<html lang="en"> 3<head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1.0"> 6<title>Contact Us · Visit · Hours | Ramona MMA Center, Ramona CA</title> 7<meta name="description" content="Visit Ramona MMA Center at 2102 Main Street, Suite 2, Ramona, CA 92065. Call (760) 787-5855 or email [email protected]. View hours, get directions, or send us a message."> 8<link rel="preconnect" href="https://fonts.googleapis.com"> 9<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 10<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet"> 11<link rel="stylesheet" href="assets/css/styles.css"> 12<style>.nav{display:flex;gap:32px;align-items:center;} 13.nav a{color:var(--white);font-weight:600;font-size:0.85rem;letter-spacing:0.02em;position:relative;padding:6px 0;} 14.nav a::after{content:'';position:absolute;left:0;bottom:0;width:0;height:2px;background:var(--action);transition:width 0.25s var(--ease);} 15.nav a:hover::after,.nav a.active::after{width:100%;} 16.nav{gap:28px;} 17.nav-item{position:relative;} 18.nav-item::after{content:'';position:absolute;top:100%;left:0;right:0;height:18px;background:transparent;} 19.nav-trigger{display:inline-flex;align-items:center;gap:6px;cursor:pointer;} 20.nav-trigger .chev{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);margin-bottom:3px;transition:transform 0.25s var(--ease);} 21.nav-item:hover .nav-trigger .chev,.nav-item:focus-within .nav-trigger .chev{transform:rotate(225deg);margin-bottom:-3px;} 22.nav-dropdown{position:absolute;top:100%;left:-16px;min-width:210px;background:var(--black-soft);border:1px solid rgba(255,255,255,0.10);border-radius:var(--radius-lg);padding:22px 0 10px;margin-top:0;box-shadow:0 12px 30px rgba(0,0,0,0.5);opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity 0.18s var(--ease) 0s,transform 0.18s var(--ease) 0s,visibility 0s 0.35s;visibility:hidden;z-index:50;} 23.nav-item:hover .nav-dropdown,.nav-item:focus-within .nav-dropdown{opacity:1;pointer-events:auto;transform:translateY(0);visibility:visible;transition:opacity 0.18s var(--ease),transform 0.18s var(--ease),visibility 0s;} 24.nav-dropdown a{display:block;padding:10px 18px;font-size:0.82rem;letter-spacing:0.02em;font-weight:600;color:var(--white);white-space:nowrap;} 25.nav-dropdown a::after{display:none;} 26.nav-dropdown a:hover{background:rgba(255,255,255,0.06);color:var(--action);} 27.m-nav a.sub{font-size:1.05rem;padding:12px 0 12px 22px;font-weight:600;text-transform:none;letter-spacing:0.01em;color:rgba(255,255,255,0.82);border-bottom:1px solid rgba(255,255,255,0.05);} 28.hamburger{display:none;flex-direction:column;justify-content:center;width:40px;height:40px;gap:5px;padding:0;background:transparent !important;border:0;outline:0;-webkit-appearance:none;appearance:none;cursor:pointer;} 29.hamburger span{display:block;width:24px;height:2px;background:var(--white);transition:all 0.2s ease;} 30.m-nav{position:fixed;inset:0;background:rgba(11,11,15,0.98);backdrop-filter:blur(20px);z-index:200;padding:80px 28px 40px;overflow-y:auto;display:none;} 31.m-nav.open{display:block;} 32.m-nav-close{position:absolute;top:20px;right:20px;color:white;font-size:30px;width:44px;height:44px;line-height:1;} 33.m-nav a{display:block;color:var(--white);font-weight:800;font-size:1.6rem;padding:18px 0;border-bottom:1px solid rgba(255,255,255,0.08);letter-spacing:-0.01em;text-transform:uppercase;} 34.m-nav .btn{margin-top:28px;width:100%;} 35 36.page-hero{background:var(--black);color:var(--white);padding:90px 0 70px;position:relative;overflow:hidden;} 37.page-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 85% 20%,rgba(185,28,28,0.18) 0%,transparent 50%),radial-gradient(circle at 15% 80%,rgba(27,58,111,0.22) 0%,transparent 50%);pointer-events:none;} 38.page-hero .container{position:relative;} 39.page-hero .hero-eyebrow{display:inline-flex;align-items:center;gap:10px;background:rgba(255,255,255,0.10);border:1px solid rgba(255,255,255,0.18);backdrop-filter:blur(8px);padding:8px 14px;border-radius:100px;color:var(--white);font-size:0.72rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:22px;} 40.page-hero h1{color:var(--white);font-size:clamp(2.4rem,5.5vw,4.4rem);font-weight:900;letter-spacing:-0.03em;line-height:0.98;margin-bottom:22px;max-width:920px;text-transform:uppercase;} 41.page-hero-grid{display:grid;grid-template-columns:1fr auto;gap:48px;align-items:center;} 42.page-hero-grid > .reveal{min-width:0;} 43.page-hero-logo{display:flex;justify-content:flex-end;align-items:center;} 44.page-hero-logo img{width:min(360px,38vw);height:auto;display:block;background:transparent;} 45@media (max-width:767px){ 46 .page-hero-grid{grid-template-columns:1fr;gap:24px;} 47 .page-hero-logo{justify-content:center;order:-1;}
48 .page-hero-logo img{width:200px;} 49} 50.page-hero h1 .accent{color:var(--white);position:relative;} 51.page-hero h1 .accent::after{content:'';position:absolute;left:0;bottom:6px;width:100%;height:14%;background:var(--action);z-index:-1;opacity:0.85;} 52.page-hero p.lede{color:rgba(255,255,255,0.78);font-size:1.08rem;max-width:640px;} 53 54section{padding:90px 0;} 55.section-head{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:40px;flex-wrap:wrap;} 56.section-head .title-block{max-width:760px;} 57.section-head h2{margin-bottom:8px;} 58 59.overview{background:var(--white);} 60.overview-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:start;} 61.overview-grid .lede{font-size:1.08rem;} 62.overview-points{list-style:none;padding:0;margin-top:18px;} 63.overview-points li{padding:14px 0;border-bottom:1px solid var(--line);display:flex;gap:14px;align-items:start;font-size:0.96rem;color:var(--text-1);line-height:1.55;} 64.overview-points li:last-child{border-bottom:0;} 65.overview-points li::before{content:'';flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--action);margin-top:7px;} 66.overview-photo{aspect-ratio:4/5;border-radius:var(--radius-lg);position:relative;overflow:hidden;} 67 68.who{background:var(--bg-soft);} 69.who-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;} 70.who-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:30px 26px;} 71.who-card .ico{width:46px;height:46px;background:rgba(185,28,28,0.1);color:var(--action);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1.3rem;margin-bottom:16px;font-weight:800;} 72.who-card h3{font-size:1.2rem;margin-bottom:8px;letter-spacing:-0.02em;text-transform:uppercase;} 73.who-card p{font-size:0.92rem;color:var(--text-2);line-height:1.6;} 74 75.coach-feature{background:var(--black);color:var(--white);} 76.coach-feature h2{color:var(--white);} 77.coach-feature .lede{color:rgba(255,255,255,0.7);} 78.coach-feature-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:24px;} 79.coach-feature-grid.single{grid-template-columns:1fr 2fr;max-width:900px;} 80.coach-spotlight{background:var(--black-soft);border:1px solid rgba(255,255,255,0.08);border-radius:var(--radius-lg);overflow:hidden;display:grid;grid-template-columns:200px 1fr;} 81.coach-spotlight .ph{position:relative;} 82.coach-spotlight .body{padding:28px;display:flex;flex-direction:column;justify-content:center;} 83.coach-spotlight .role{color:var(--gold);font-size:0.7rem;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;margin-bottom:6px;} 84.coach-spotlight h3{color:var(--white);font-size:1.4rem;margin-bottom:8px;letter-spacing:-0.02em;text-transform:uppercase;} 85.coach-spotlight p{color:rgba(255,255,255,0.7);font-size:0.92rem;line-height:1.6;margin-bottom:14px;} 86.coach-spotlight .read{color:var(--white);font-size:0.72rem;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;border-bottom:2px solid var(--action);padding-bottom:3px;align-self:flex-start;} 87 88.levels{background:var(--white);} 89.levels-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;} 90.level-card{background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius-lg);padding:32px 28px;position:relative;} 91.level-card .num{font-size:0.7rem;font-weight:800;letter-spacing:0.18em;text-transform:uppercase;color:var(--action);margin-bottom:8px;} 92.level-card h3{font-size:1.4rem;margin-bottom:10px;letter-spacing:-0.02em;text-transform:uppercase;} 93.level-card p{font-size:0.92rem;color:var(--text-2);line-height:1.6;} 94 95.schedule-cta{background:var(--bg-soft);} 96.schedule-cta .container{text-align:center;} 97.schedule-cta h2{margin-bottom:14px;} 98.schedule-cta p{color:var(--text-2);max-width:580px;margin:0 auto 24px;font-size:1.02rem;} 99 100.final-cta{background:var(--navy-dark);color:var(--white);padding:110px 0;text-align:center;position:relative;overflow:hidden;} 101.final-cta::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 30% 50%,rgba(185,28,28,0.15) 0%,transparent 45%),radial-gradient(circle at 70% 50%,rgba(212,162,76,0.18) 0%,transparent 45%);} 102.final-cta .container{position:relative;} 103.final-cta h2{color:var(--white);font-size:clamp(2.2rem,5.5vw,3.6rem);font-weight:900;letter-spacing:-0.03em;line-height:1;margin-bottom:20px;text-transform:uppercase;} 104.final-cta p{color:rgba(255,255,255,0.78);font-size:1.05rem;max-width:560px;margin:0 auto 30px;} 105 106.footer{background:#050507;color:rgba(255,255,255,0.6);padding:70px 0 0;} 107.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid rgba(255,255,255,0.08);} 108.footer h5{color:var(--white);font-size:0.78rem;font-weight:800;letter-spacing:0.18em;text-transform:uppercase;margin-bottom:20px;} 109.footer ul{list-style:none;} 110.footer ul li{margin-bottom:10px;} 111.footer ul li a{color:rgba(255,255,255,0.55);font-size:0.88rem;} 112.footer ul li a:hover{color:var(--white);} 113.footer-about p{font-size:0.9rem;line-height:1.7;margin-bottom:16px;max-width:360px;} 114.footer-contact-item{margin-bottom:14px;font-size:0.88rem;line-height:1.6;} 115.footer-contact-item strong{color:var(--white);display:block;font-size:0.7rem;letter-spacing:0.15em;text-transform:uppercase;margin-bottom:4px;font-weight:800;} 116.social-icons-big{display:flex;gap:12px;align-items:center;margin-top:18px;flex-wrap:wrap;} 117.social-icons-big .follow-label{font-size:0.7rem;font-weight:800;letter-spacing:0.16em;text-transform:uppercase;color:var(--white);margin-right:6px;} 118.social-icons-big a{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:transform 0.25s var(--ease),box-shadow 0.25s var(--ease);color:var(--white);} 119.social-icons-big a:hover{transform:translateY(-3px) scale(1.06);} 120.social-icons-big a svg{width:22px;height:22px;fill:white;} 121.social-icons-big .ig{background:linear-gradient(135deg,#f09433 0%,#e6683c 25%,#dc2743 50%,#cc2366 75%,#bc1888 100%);} 122.social-icons-big .ig:hover{box-shadow:0 12px 32px rgba(220,39,67,0.45);} 123.social-icons-big .fb{background:#1877F2;} 124.social-icons-big .fb:hover{box-shadow:0 12px 32px rgba(24,119,242,0.45);} 125.social-icons-big .yt{background:#FF0000;} 126.social-icons-big .yt:hover{box-shadow:0 12px 32px rgba(255,0,0,0.45);} 127.footer-bottom{padding:22px 0;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:0.78rem;color:rgba(255,255,255,0.4);} 128.footer-bottom a{color:rgba(255,255,255,0.5);margin-left:16px;} 129 130.m-sticky{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--black);border-top:1px solid var(--line-dark);padding:10px 12px;z-index:90;gap:8px;} 131.m-sticky .btn{flex:1;padding:14px;font-size:0.82rem;} 132.m-sticky .btn-call{background:rgba(255,255,255,0.1);color:var(--white);flex:0 0 auto;width:50px;padding:14px 0;border-radius:var(--radius);} 133 134.modal{position:fixed;inset:0;background:rgba(11,11,15,0.85);backdrop-filter:blur(10px);z-index:300;display:none;align-items:flex-start;justify-content:center;padding:40px 16px;opacity:0;transition:opacity 0.25s ease;overflow-y:auto;} 135.modal.open{display:flex;opacity:1;} 136.modal-card{background:var(--white);width:100%;max-width:560px;border-radius:var(--radius-lg);padding:0;position:relative;animation:modalSlide 0.35s var(--ease);margin:auto;} 137@keyframes modalSlide{from{transform:translateY(30px);opacity:0;}to{transform:translateY(0);opacity:1;}} 138.modal-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;background:rgba(0,0,0,0.05);font-size:22px;color:var(--text-1);z-index:5;} 139.modal-top{background:var(--black);color:var(--white);padding:36px 40px 30px;border-radius:var(--radius-lg) var(--radius-lg) 0 0;position:relative;overflow:hidden;} 140.modal-top::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 90% 0%,rgba(185,28,28,0.3) 0%,transparent 50%);} 141.modal-top > *{position:relative;} 142.modal-top .pill{display:inline-flex;align-items:center;gap:8px;background:rgba(185,28,28,0.18);border:1px solid rgba(185,28,28,0.45);color:#FF8888;padding:6px 12px;border-radius:100px;font-size:0.68rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;margin-bottom:14px;} 143.modal-top .pill .dot{width:7px;height:7px;border-radius:50%;background:var(--action);animation:pulse 2s infinite;} 144@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(185,28,28,0.7);}50%{box-shadow:0 0 0 8px rgba(185,28,28,0);}}
144 145.modal-top h3{color:var(--white);font-size:1.7rem;letter-spacing:-0.025em;text-transform:uppercase;margin-bottom:8px;} 146.modal-top p{color:rgba(255,255,255,0.78);font-size:0.95rem;} 147.modal-form{padding:32px 40px;background:var(--white);} 148.modal-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;} 149.field{margin-bottom:14px;} 150.field label{display:block;font-size:0.7rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--text-2);margin-bottom:6px;} 151.field input,.field select{width:100%;padding:13px 14px;border:1.5px solid var(--line);border-radius:var(--radius);font-size:0.95rem;font-family:inherit;background:var(--bg-soft);transition:all 0.2s ease;} 152.field input:focus,.field select:focus{outline:0;border-color:var(--navy);background:var(--white);} 153.form-fine{font-size:0.72rem;color:var(--text-3);margin-top:12px;line-height:1.5;text-align:center;} 154 155@media (max-width:1023px){ 156 .overview-grid{grid-template-columns:1fr;gap:30px;} 157 .who-grid{grid-template-columns:repeat(2,1fr);} 158 .coach-feature-grid{grid-template-columns:1fr;} 159 .coach-feature-grid.single{grid-template-columns:1fr;} 160 .coach-spotlight{grid-template-columns:1fr;} 161 .coach-spotlight .ph{aspect-ratio:16/9;} 162 .levels-grid{grid-template-columns:1fr;} 163 .footer-grid{grid-template-columns:1fr 1fr;} 164 .head-action{padding:14px 10px;gap:6px;} 165 .nav{display:none;} 166 .hamburger{display:flex;} 167 .head-action .ic{width:32px;height:32px;} 168} 169@media (max-width:767px){ 170 body{padding-bottom:70px;} 171 .nav{display:none;} 172 .hamburger{display:flex;} 173 .util-left{font-size:0.74rem;} 174 section{padding:70px 0;} 175 .page-hero{padding:60px 0 50px;} 176 .head-actions-grid{grid-template-columns:repeat(3,1fr);} 177 .head-action{padding:10px 4px;gap:4px;} 178 .head-action .ic{width:26px;height:26px;} 179 .head-action .ic svg{width:14px;height:14px;} 180 .head-action .lbl{font-size:0.7rem;letter-spacing:0.02em;} 181 .who-grid{grid-template-columns:1fr;} 182 .footer-grid{grid-template-columns:1fr;} 183 .footer{padding-bottom:80px;} 184 .m-sticky{display:flex;} 185 .modal{padding:16px;} 186 .modal-top,.modal-form{padding-left:24px;padding-right:24px;} 187 .modal-form .form-row{grid-template-columns:1fr;} 188} 189 190/* === ABOUT PAGE === */ 191.story{background:var(--white);padding:90px 0;} 192.story-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;margin-bottom:60px;} 193.story-grid:last-child{margin-bottom:0;} 194.story-grid.flip{direction:rtl;}.story-grid.flip > *{direction:ltr;} 195.story-photo{aspect-ratio:4/5;border-radius:var(--radius-lg);position:relative;overflow:hidden;} 196.story-text h2{font-size:clamp(1.6rem,3vw,2.2rem);margin-bottom:18px;letter-spacing:-0.02em;text-transform:uppercase;} 197.story-text p{font-size:1rem;color:var(--text-1);line-height:1.7;margin-bottom:14px;} 198.story-stats{background:var(--bg-soft);padding:80px 0;} 199.story-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;text-align:center;} 200.story-stat .num{font-size:2.4rem;font-weight:900;letter-spacing:-0.025em;line-height:1;color:var(--text-1);} 201.story-stat .lbl{font-size:0.7rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--text-2);margin-top:8px;} 202 203/* === CONTACT PAGE === */ 204.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px;} 205.contact-info{} 206.contact-block{background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius-lg);padding:28px;margin-bottom:18px;} 207.contact-block .label{font-size:0.7rem;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;color:var(--action);margin-bottom:8px;} 208.contact-block h3{font-size:1.15rem;margin-bottom:6px;letter-spacing:-0.015em;text-transform:uppercase;} 209.contact-block p,.contact-block a{font-size:0.95rem;color:var(--text-1);line-height:1.6;} 210.contact-block a:hover{color:var(--action);} 211.contact-hours-list{list-style:none;padding:0;font-size:0.9rem;color:var(--text-1);line-height:1.8;} 212.contact-hours-list li{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:6px 0;} 213.contact-hours-list li:last-child{border-bottom:0;} 214.contact-hours-list .day{font-weight:700;} 215.contact-form{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:36px;} 216.contact-form h2{font-size:1.6rem;margin-bottom:8px;letter-spacing:-0.02em;text-transform:uppercase;} 217.contact-form p.lede-sm{color:var(--text-2);font-size:0.95rem;margin-bottom:24px;} 218.contact-form .field textarea{width:100%;padding:13px 14px;border:1.5px solid var(--line);border-radius:var(--radius);font-size:0.95rem;font-family:inherit;background:var(--bg-soft);min-height:120px;resize:vertical;} 219.map-block{aspect-ratio:16/10;border-radius:var(--radius-lg);overflow:hidden;margin-top:18px;} 220 221/* === SCHEDULE PAGE === */ 222.sched-filters{background:var(--bg-soft);padding:30px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50;} 223.sched-filters-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;align-items:center;} 224.sched-filters-row .label{font-size:0.7rem;font-weight:800;letter-spacing:0.16em;text-transform:uppercase;color:var(--text-2);margin-right:6px;} 225.sched-pill{padding:9px 18px;border-radius:100px;border:1.5px solid var(--line);background:var(--white);color:var(--text-1);font-size:0.82rem;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;cursor:pointer;transition:all 0.2s var(--ease);} 226.sched-pill:hover{border-color:var(--text-1);} 227.sched-pill.active{background:var(--action);border-color:var(--action);color:var(--white);} 228.sched-day{padding:24px 0;border-bottom:1px solid var(--line);} 229.sched-day:last-child{border-bottom:0;} 230.sched-day-head{font-size:0.78rem;font-weight:800;letter-spacing:0.18em;text-transform:uppercase;color:var(--action);margin-bottom:14px;} 231.sched-day-head .day-name{color:var(--text-1);font-size:1.4rem;letter-spacing:-0.02em;text-transform:uppercase;display:block;font-weight:900;margin-bottom:2px;} 232.sched-classes{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;} 233.sched-class{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;display:flex;justify-content:space-between;align-items:center;gap:16px;transition:all 0.2s var(--ease);} 234.sched-class:hover{border-color:var(--text-1);} 235.sched-class.hidden{display:none;} 236.sched-class .time{font-weight:800;font-size:0.92rem;color:var(--text-1);font-variant-numeric:tabular-nums;flex-shrink:0;} 237.sched-class .info{flex:1;} 238.sched-class .name{font-size:0.92rem;font-weight:700;color:var(--text-1);} 239.sched-class .tags{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap;} 240.sched-class .tag{font-size:0.65rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:var(--text-3);background:var(--bg-soft);padding:3px 8px;border-radius:3px;} 241.sched-closed{padding:24px;text-align:center;color:var(--text-3);font-style:italic;font-size:0.95rem;background:var(--bg-soft);border-radius:var(--radius);} 242 243/* === RULES PAGE === */ 244.rules-section{background:var(--white);padding:90px 0;} 245.rules-list{max-width:780px;} 246.rule-item{padding:28px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:60px 1fr;gap:24px;align-items:start;} 247.rule-item:last-child{border-bottom:0;} 248.rule-num{font-size:2.2rem;font-weight:900;letter-spacing:-0.04em;color:var(--action);line-height:1;} 249.rule-text h3{font-size:1.2rem;margin-bottom:8px;letter-spacing:-0.015em;text-transform:uppercase;} 250.rule-text p{font-size:0.96rem;color:var(--text-2);line-height:1.7;} 251 252/* === FOUNDATION PAGE === */ 253.fnd-mission{background:var(--bg-soft);padding:90px 0;} 254.fnd-mission .container{max-width:820px;text-align:center;} 255.fnd-mission h2{font-size:clamp(1.8rem,4vw,2.6rem);margin-bottom:20px;letter-spacing:-0.02em;text-transform:uppercase;} 256.fnd-mission p{font-size:1.1rem;color:var(--text-1);line-height:1.75;margin-bottom:14px;} 257.fnd-categories{padding:90px 0;background:var(--white);} 258.fnd-cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;} 259.fnd-cat{background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius-lg);padding:30px 26px;} 260.fnd-cat .ico{width:48px;height:48px;border-radius:8px;background:var(--action);color:var(--white);display:flex;align-items:center;justify-content:center;font-size:1.3rem;font-weight:800;margin-bottom:14px;} 261.fnd-cat h3{font-size:1.15rem;margin-bottom:8px;letter-spacing:-0.015em;text-transform:uppercase;} 262.fnd-cat p{font-size:0.92rem;color:var(--text-2);line-height:1.6;} 263 264@media (max-width:1023px){ 265 .story-grid,.story-grid.flip{grid-template-columns:1fr;direction:ltr;gap:30px;}
266 .story-stats-grid{grid-template-columns:repeat(2,1fr);gap:18px;} 267 .contact-grid{grid-template-columns:1fr;} 268 .fnd-cat-grid{grid-template-columns:repeat(2,1fr);} 269} 270@media (max-width:767px){ 271 .story-stats-grid{grid-template-columns:1fr;} 272 .fnd-cat-grid{grid-template-columns:1fr;} 273 .rule-item{grid-template-columns:48px 1fr;gap:16px;} 274 .rule-num{font-size:1.7rem;} 275 .sched-class{flex-direction:column;align-items:flex-start;} 276} 277 278@keyframes pulse-call-ring{0%{box-shadow:0 0 0 0 rgba(220,39,67,0.32);}70%{box-shadow:0 0 0 9px rgba(220,39,67,0);}100%{box-shadow:0 0 0 0 rgba(220,39,67,0);}} 279@keyframes pulse-call-scale{0%,100%{transform:scale(1);}50%{transform:scale(1.03);}} 280.m-sticky .btn-call,.btn-call{animation:pulse-call-ring 2s infinite ease-out,pulse-call-scale 2s infinite ease-in-out;} 281.m-sticky .btn-call:hover,.btn-call:hover{animation:none;} 282</style> 283<link rel="canonical" href="https://www.ramonamma.com/contact/"> 284<meta property="og:type" content="article"> 285<meta property="og:title" content="Contact Us · Visit · Hours | Ramona MMA Center, Ramona CA"> 286<meta property="og:description" content="Visit Ramona MMA Center at 2102 Main Street, Suite 2, Ramona, CA 92065. Call (760) 787-5855 or email [email protected]. View hours, get directions, or send us a message."> 287<meta property="og:url" content="https://www.ramonamma.com/contact/"> 288<meta property="og:image" content="https://www.ramonamma.com/images/og-default.jpg"> 289<meta property="og:site_name" content="Ramona MMA Center"> 290<meta name="twitter:card" content="summary_large_image"> 291<meta name="twitter:title" content="Contact Us · Visit · Hours | Ramona MMA Center, Ramona CA"> 292<meta name="twitter:description" content="Visit Ramona MMA Center at 2102 Main Street, Suite 2, Ramona, CA 92065. Call (760) 787-5855 or email [email protected]. View hours, get directions, or send us a message."> 293<meta name="twitter:image" content="https://www.ramonamma.com/images/og-default.jpg">
294<script type="application/ld+json">{"@context":"https://schema.org","@type":"MartialArtsSchool","@id":"https://www.ramonamma.com/#organization","name":"Ramona MMA Center","alternateName":["Ramona Brazilian Jiu Jitsu","Ramona MMA","RBJJ"],"url":"https://www.ramonamma.com","logo":"https://www.ramonamma.com/logo.png","image":"https://www.ramonamma.com/images/gym-exterior.jpg","telephone":"+1-760-787-5855","email":"[email protected]","priceRange":"$$","address":{"@type":"PostalAddress","streetAddress":"2102 Main Street, Suite 2","addressLocality":"Ramona","addressRegion":"CA","postalCode":"92065","addressCountry":"US"},"geo":{"@type":"GeoCoordinates","latitude":"33.0414","longitude":"-116.8676"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":"Monday","opens":"15:25","closes":"20:15"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Tuesday","opens":"15:45","closes":"20:15"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Wednesday","opens":"15:25","closes":"20:15"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Thursday","opens":"15:45","closes":"20:15"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Friday","opens":"15:45","closes":"19:30"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Saturday","opens":"08:45","closes":"11:45"}],"sameAs":["https://www.facebook.com/ramonamma","https://www.instagram.com/ramonamma","https://www.youtube.com/@ramonamma"],"areaServed":[{"@type":"City","name":"Ramona"},{"@type":"City","name":"Poway"},{"@type":"City","name":"Escondido"},{"@type":"AdministrativeArea","name":"San Diego County"}],"founder":{"@type":"Person","name":"Kevin Hosseini","jobTitle":"Head Coach and Owner","description":"4th-degree Brazilian Jiu-Jitsu black belt under Fabio Santos in the Rickson Gracie lineage."}}</script>
vendor: 1 bytes, line 294
294
295<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.ramonamma.com/"},{"@type":"ListItem","position":2,"name":"Contact"}]}</script>
295 296 <!-- Google tag (gtag.js) -->
vendor: 66 bytes, lines 296-297
296 297 <script async src="https://www.googletagmanager.com/gtag/js?id=
297AW-16569339031
vendor: 14 bytes, lines 297-298
297"></script> 298
298<script> 299
vendor: 140 bytes, lines 299-303
299window.dataLayer = window.dataLayer || []; 300 function gtag(){dataLayer.push(arguments);} 301 gtag('js', new Date()); 302 303 gtag('config', '
303AW-16569339031
vendor: 6 bytes, lines 303-304
303'); 304
304</script>
304 305</head> 306<body> 307 308<div class="head-actions"> 309 <div class="head-actions-grid"> 310 <a href="tel:7607875855" class="head-action"> 311 <span class="ic"><svg viewBox="0 0 24 24"><path d="M20 15.5c-1.25 0-2.45-.2-3.57-.57a1 1 0 00-1.02.24l-2.2 2.2a15.07 15.07 0 01-6.59-6.58l2.2-2.21a1 1 0 00.25-1A11.36 11.36 0 018.5 4a1 1 0 00-1-1H4a1 1 0 00-1 1c0 9.39 7.61 17 17 17a1 1 0 001-1v-3.5a1 1 0 00-1-1z"/></svg></span> 312 <span class="lbl">Call Us</span> 313 </a> 314 <a href="schedule.html" class="head-action"> 315 <span class="ic"><svg viewBox="0 0 24 24"><path d="M19 4h-1V2h-2v2H8V2H6v2H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V6a2 2 0 00-2-2zm0 16H5V10h14v10zm0-12H5V6h14v2z"/></svg></span> 316 <span class="lbl">Schedule</span> 317 </a> 318 <button class="head-action" onclick="openModal()"> 319 <span class="ic"><svg viewBox="0 0 24 24"><path d="M12 1L3 5v6c0 5.5 3.8 10.7 9 12 5.2-1.3 9-6.5 9-12V5l-9-4zm0 6c1.4 0 2.5 1.1 2.5 2.5S13.4 12 12 12s-2.5-1.1-2.5-2.5S10.6 7 12 7zm0 12c-2.1 0-4-1.6-4.5-3.7C7.7 14 9.7 13 12 13s4.3 1 4.5 2.3C16 17.4 14.1 19 12 19z"/></svg></span> 320 <span class="lbl">Web Special</span> 321 </button> 322 </div> 323</div> 324 325<div class="header-wrap"> 326 <header class="header"> 327 <div class="container"> 328 <a href="index.html" class="logo"> 329 <span class="logo-mark"><img src="media/logo/ramona-mma-logo.png" alt="Ramona MMA Center logo"></span> 330 <span class="logo-text"><span class="top">RAMONA MMA</span><span class="bottom">Center · Since 2010</span></span> 331 </a> 332 <nav class="nav"> 333 <a href="index.html">Home</a> 334 <span class="nav-item"> 335 <a href="index.html#programs" class="nav-trigger">Training<span class="chev"></span></a> 336 <div class="nav-dropdown"> 337 <a href="index.html#programs">Styles We Offer</a> 338 <a href="index.html#kids-teens">Kids & Teens</a> 339 <a href="index.html#adults">Adults</a> 340 <a href="index.html#specialty">Specialty Classes</a> 341 </div> 342 </span> 343 <span class="nav-item"> 344 <a href="index.html#facility" class="nav-trigger">Facility<span class="chev"></span></a> 345 <div class="nav-dropdown"> 346 <a href="index.html#facility">Our Facility</a> 347 <a href="academy-rules.html">Academy Rules & Gear</a> 348 <a href="waiver.html">Sign Waiver</a> 349 </div> 350 </span> 351 <a href="index.html#memberships">Memberships</a> 352 <a href="schedule.html">Schedule</a> 353 <span class="nav-item"> 354 <a href="about.html" class="nav-trigger">About<span class="chev"></span></a> 355 <div class="nav-dropdown"> 356 <a href="about.html">Our Story</a> 357 <a href="coaches.html">Coaches</a> 358 <a href="foundation.html">Scholarships</a> 359 </div> 360 </span> 361 <a href="refer.html">Refer a Friend</a> 362 <a href="contact.html" class="active">Contact</a> 363 </nav> 364 <button class="hamburger" onclick="document.getElementById('mNav').classList.add('open')"><span></span><span></span><span></span></button> 365 </div> 366 </header> 367</div> 368 369<nav class="m-nav" id="mNav"> 370 <button class="m-nav-close" aria-label="Close menu" onclick="document.getElementById('mNav').classList.remove('open')">Ã</button> 371 <a href="index.html" onclick="document.getElementById('mNav').classList.remove('open')">Home</a> 372 <a href="index.html#programs" onclick="document.getElementById('mNav').classList.remove('open')">Training</a> 373 <a href="index.html#programs" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Styles We Offer</a> 374 <a href="index.html#kids-teens" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Kids & Teens</a> 375 <a href="index.html#adults" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Adults</a> 376 <a href="index.html#specialty" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Specialty Classes</a> 377 <a href="index.html#facility" onclick="document.getElementById('mNav').classList.remove('open')">Facility</a> 378 <a href="index.html#facility" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Our Facility</a> 379 <a href="academy-rules.html" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Academy Rules & Gear</a> 380 <a href="waiver.html" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Sign Waiver</a> 381 <a href="index.html#memberships" onclick="document.getElementById('mNav').classList.remove('open')">Memberships</a> 382 <a href="schedule.html" onclick="document.getElementById('mNav').classList.remove('open')">Schedule</a> 383 <a href="about.html" onclick="document.getElementById('mNav').classList.remove('open')">About</a> 384 <a href="about.html" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Our Story</a> 385 <a href="coaches.html" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Coaches</a> 386 <a href="foundation.html" class="sub" onclick="document.getElementById('mNav').classList.remove('open')">â Scholarships</a> 387 <a href="refer.html" onclick="document.getElementById('mNav').classList.remove('open')">Refer a Friend</a> 388 <a href="contact.html" onclick="document.getElementById('mNav').classList.remove('open')">Contact</a> 389 <button class="btn btn-primary" onclick="document.getElementById('mNav').classList.remove('open');openModal();">Reserve My Spot</button> 390</nav> 391 392<section class="page-hero"> 393 <div class="container"> 394 <div class="page-hero-grid"> 395 <div class="reveal in">
396 <span class="hero-eyebrow">Visit · Call · Email</span> 397 <h1>Find Us On <span class="accent">Main Street.</span></h1> 398 <p class="lede">2102 Main Street, Suite 2, Ramona, CA 92065. Family-owned since 2010. The original Brazilian Jiu-Jitsu and MMA academy in Ramona.</p> 399 </div> 400 <div class="page-hero-logo reveal in" aria-hidden="true"> 401 <img src="media/logo/ramona-mma-logo-banner.png" alt="" width="700" height="700" loading="lazy"> 402 </div> 403 </div> 404 </div> 405</section> 406 407<section class="story"> 408 <div class="container"> 409 <div class="contact-grid"> 410 411 <div class="contact-info reveal"> 412 <div class="contact-block"> 413 <div class="label">Visit Us</div> 414 <h3>Ramona MMA Center</h3> 415 <p>2102 Main Street, Suite 2<br>Ramona, CA 92065</p> 416 <div class="map-block" style="margin-top:18px;"> 417 <iframe 418 src="https://maps.google.com/maps?q=2102+Main+Street+Suite+2+Ramona+CA+92065&t=&z=15&ie=UTF8&iwloc=&output=embed" 419 width="100%" height="100%" 420 style="border:0;display:block;" 421 allowfullscreen="" 422 loading="lazy" 423 referrerpolicy="no-referrer-when-downgrade" 424 title="Ramona MMA Center location map â 2102 Main Street, Suite 2, Ramona, CA 92065"> 425 </iframe> 426 </div> 427 </div> 428 429 <div class="contact-block"> 430 <div class="label">Call Us</div> 431 <h3>(760) 787-5855</h3> 432 <p>Reach out by phone â we’ll text you with available trial times and answer any program questions. If you’ve been searching for martial arts near you in Ramona, we’re happy to help you find the right starting point.</p> 433 </div> 434 435 <div class="contact-block"> 436 <div class="label">Email Us</div> 437 <h3><a href="mailto:[email protected]">[email protected]</a></h3> 438 <p>Best for non-urgent questions or detailed program inquiries.</p> 439 </div> 440 441 </div> 442 443 <div class="reveal"> 444 <div class="contact-form"> 445 <span class="eyebrow">Send Us A Message</span> 446 <h2>Have a Question?</h2> 447 <p class="lede-sm">For the fastest response, reserve your private trial , a coach will follow up directly. For non-urgent questions, fill out the form below.</p> 448 <form action="https://formspree.io/f/mpqnprng" method="POST"> 449 <input type="hidden" name="_subject" value="New message from Ramona MMA contact page"> 450 <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" style="display:none"> 451 <div class="form-row" style="display:grid;grid-template-columns:1fr 1fr;gap:12px;"> 452 <div class="field"><label for="contact-first-name">First Name</label><input id="contact-first-name" type="text" name="first_name" required placeholder="First"></div> 453 <div class="field"><label for="contact-last-name">Last Name</label><input id="contact-last-name" type="text" name="last_name" required placeholder="Last"></div> 454 </div> 455 <div class="field"><label for="contact-email">Email</label><input id="contact-email" type="email" name="email" required placeholder="[email protected]"></div> 456 <div class="field"><label for="contact-phone">Phone (optional)</label><input id="contact-phone" type="tel" name="phone" placeholder="(555) 555-5555"></div> 457 <div class="field"><label for="contact-message">Message</label><textarea id="contact-message" name="message" required placeholder="How can we help?"></textarea></div> 458 <button type="submit" class="btn btn-primary btn-block btn-lg">Send Message</button> 459 <p class="form-fine">For fastest response, reserve a private trial instead , coaches respond same day.</p> 460 </form> 461 </div> 462 </div> 463 464 </div> 465 </div> 466</section> 467 468<section class="final-cta"> 469 <div class="container"> 470 <h2 class="reveal">Step On The Mat. <span style="color:var(--gold);">By Appointment.</span></h2> 471 <p class="reveal">A private session and walk-through of the Center is the fastest way to see the gym.</p> 472 <button class="btn btn-primary btn-lg reveal" onclick="openModal()">Reserve Your Private Trial</button> 473 </div> 474</section> 475 476<footer class="footer"> 477 <div class="container"> 478 <div class="footer-grid"> 479 <div class="footer-about"> 480 <a href="index.html" class="logo" style="margin-bottom:18px;">
481 <span class="logo-mark"><img src="media/logo/ramona-mma-logo.png" alt="Ramona MMA Center logo"></span> 482 <span class="logo-text"><span class="top">RAMONA MMA</span><span class="bottom">Center · Since 2010</span></span> 483 </a> 484 <p>Ramona's original Brazilian Jiu-Jitsu and MMA academy. Family-owned since 2010. Programs for kids, teens, adults, women and 40+.</p> 485 <div class="social-icons-big"> 486 <span class="follow-label">Follow Us</span> 487 <a href="https://instagram.com/ramona.mma" target="_blank" rel="noopener" aria-label="Instagram" class="ig"><svg viewBox="0 0 24 24"><path d="M12 2.16c3.2 0 3.58.01 4.85.07 3.25.15 4.77 1.69 4.92 4.92.06 1.27.07 1.65.07 4.85s-.01 3.58-.07 4.85c-.15 3.23-1.66 4.77-4.92 4.92-1.27.06-1.64.07-4.85.07s-3.58-.01-4.85-.07c-3.26-.15-4.77-1.7-4.92-4.92C2.17 15.58 2.16 15.2 2.16 12s.01-3.58.07-4.85C2.38 3.92 3.9 2.38 7.15 2.23 8.42 2.18 8.8 2.16 12 2.16zM12 0C8.74 0 8.33.01 7.05.07 2.7.27.27 2.69.07 7.05.01 8.33 0 8.74 0 12s.01 3.67.07 4.95c.2 4.36 2.62 6.78 6.98 6.98C8.33 23.99 8.74 24 12 24s3.67-.01 4.95-.07c4.35-.2 6.78-2.62 6.98-6.98.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.2-4.35-2.62-6.78-6.98-6.98C15.67.01 15.26 0 12 0zm0 5.84c-3.4 0-6.16 2.76-6.16 6.16s2.76 6.16 6.16 6.16 6.16-2.76 6.16-6.16S15.4 5.84 12 5.84zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm6.4-11.85c-.79 0-1.44.65-1.44 1.44s.65 1.44 1.44 1.44 1.44-.65 1.44-1.44-.65-1.44-1.44-1.44z"/></svg></a> 488 <a href="https://www.facebook.com/people/Ramona-Brazilian-Jiu-JitsuMMA-Center/100034850330443/" target="_blank" rel="noopener" aria-label="Facebook" class="fb"><svg viewBox="0 0 24 24"><path d="M24 12.07C24 5.41 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.04V9.41c0-3.02 1.79-4.69 4.53-4.69 1.31 0 2.68.24 2.68.24v2.97h-1.5c-1.49 0-1.96.93-1.96 1.89v2.26h3.32l-.53 3.49h-2.79V24C19.61 23.1 24 18.1 24 12.07z"/></svg></a> 489 <a href="#" target="_blank" rel="noopener" aria-label="YouTube" class="yt"><svg viewBox="0 0 24 24"><path d="M23.5 6.2c-.3-1-1.1-1.8-2-2.1C19.7 3.5 12 3.5 12 3.5s-7.7 0-9.5.6c-1 .3-1.8 1.1-2 2.1C0 8 0 12 0 12s0 4 .5 5.8c.3 1 1.1 1.8 2 2.1C4.3 20.5 12 20.5 12 20.5s7.7 0 9.5-.6c1-.3 1.8-1.1 2-2.1.5-1.8.5-5.8.5-5.8s0-4-.5-5.8zM9.5 15.5v-7l6.5 3.5-6.5 3.5z"/></svg></a> 490 </div> 491 </div> 492 <div> 493 <h5>Training</h5> 494 <ul> 495 <li><a href="brazilian-jiu-jitsu.html">Brazilian Jiu-Jitsu</a></li> 496 <li><a href="submission-wrestling-and-grappling.html">No-Gi / Submission Grappling</a></li> 497 <li><a href="striking-muay-thai-kickboxing-boxing.html">Boxing & Muay Thai</a></li> 498 <li><a href="mma.html">MMA</a></li> 499 <li><a href="wrestling.html">Wrestling</a></li> 500 <li><a href="self-defense.html">Self-Defense</a></li> 501 </ul> 502 </div> 503 <div> 504 <h5>The Gym</h5> 505 <ul> 506 <li><a href="index.html#memberships">Three Paths</a></li> 507 <li><a href="about.html">Our Story</a></li> 508 <li><a href="coaches.html">Coaches</a></li> 509 <li><a href="schedule.html">Schedule</a></li> 510 <li><a href="#" onclick="openModal();return false;">Reserve Trial</a></li> 511 <li><a href="academy-rules.html">Academy Rules</a></li> 512 <li><a href="https://rtownmartialarts.foundation" target="_blank" rel="noopener">R-Town Foundation</a></li> 513 </ul> 514 </div> 515 <div> 516 <h5>Areas We Serve</h5> 517 <ul> 518 <li><a href="areas-we-serve.html">All Areas</a></li> 519 <li><a href="index.html">Ramona, CA (Home Gym)</a></li> 520 <li><a href="martial-arts-poway-ca.html">Poway, CA</a></li> 521 <li><a href="martial-arts-lakeside-ca.html">Lakeside, CA</a></li> 522 <li><a href="martial-arts-julian-ca.html">Julian, CA</a></li> 523 <li><a href="martial-arts-santa-ysabel-ca.html">Santa Ysabel</a></li> 524 <li><a href="martial-arts-borrego-springs-ca.html">Borrego Springs</a></li> 525 <li><a href="martial-arts-wynola-ca.html">Wynola</a></li> 526 <li><a href="martial-arts-lake-henshaw-ca.html">Lake Henshaw</a></li> 527 <li><a href="martial-arts-shelter-valley-ca.html">Shelter Valley</a></li> 528 </ul> 529 </div> 530<div> 531 <h5>Get In Touch</h5> 532 <div class="footer-contact-item"> 533 <strong>Visit Us</strong> 534 2102 Main Street, Suite 2<br>Ramona, CA 92065 535 </div> 536 <div class="footer-contact-item"> 537 <strong>Call</strong> 538 <a href="tel:7607875855" style="color:rgba(255,255,255,0.85);">(760) 787-5855</a> 539 </div> 540 <div class="footer-contact-item"> 541 <strong>Email</strong> 542 <a href="mailto:[email protected]" style="color:rgba(255,255,255,0.85);">[email protected]</a> 543 </div> 544 <div class="footer-contact-item"> 545 <strong>Hours</strong> 546 Mon: 3:25â8:15 PM<br> 547 Tue: 3:45â8:15 PM<br> 548 Wed: 3:25â8:15 PM<br> 549 Thu: 3:45â8:15 PM<br> 550 Fri: 3:45â7:30 PM<br> 551 Sat: 8:45â11:45 AM<br> 552 Sun: Closed 553 </div> 554 </div> 555 </div> 556 <div class="footer-bottom"> 557 <div>© 2026 Ramona Brazilian Jiu Jitsu and MMA Center, Inc. · All rights reserved.</div> 558 <div><a href="#">Privacy</a><a href="#">Terms</a><a href="#">Sitemap</a></div> 559 </div> 560 </div> 561</footer> 562 563<div class="m-sticky"> 564 <a href="tel:7607875855" class="btn btn-call" aria-label="Call gym">ð</a> 565 <button class="btn btn-primary" onclick="openModal()">Reserve My Spot</button> 566</div> 567 568<div class="modal" id="leadModal" onclick="if(event.target===this)closeModal()">
569 <div class="modal-card"> 570 <button class="modal-close" onclick="closeModal()" aria-label="Close">Ã</button> 571 572 <div class="modal-top"> 573 <span class="pill"><span class="dot"></span>Limited-Time Offer · Locked In When You Reserve</span> 574 <h3>Reserve Your Private Trial — Lock In Your Offer</h3> 575 <p>One private session with a black belt. One walk-through of the Center. Zero pressure. Reserve before the timer ends and your offer is held if you decide to join.</p> 576 <div class="countdown" id="countdown"> 577 <div class="unit"><div class="num" id="cdDays">06</div><div class="lbl">Days</div></div> 578 <div class="unit"><div class="num" id="cdHours">14</div><div class="lbl">Hours</div></div> 579 <div class="unit"><div class="num" id="cdMinutes">22</div><div class="lbl">Minutes</div></div> 580 <div class="unit"><div class="num" id="cdSeconds">39</div><div class="lbl">Seconds</div></div> 581 </div> 582 </div> 583 584 <form class="modal-form" action="https://formspree.io/f/mpqnprng" method="POST"> 585 <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" style="display:none"> 586 <div class="form-row"> 587 <div class="field"><label>First Name</label><input type="text" name="first_name" required placeholder="First"></div> 588 <div class="field"><label>Last Name</label><input type="text" name="last_name" required placeholder="Last"></div> 589 </div> 590 <div class="form-row"> 591 <div class="field"><label>Phone</label><input type="tel" name="phone" required placeholder="(555) 555-5555"></div> 592 <div class="field"><label>Email</label><input type="email" name="email" required placeholder="[email protected]"></div> 593 </div> 594 <div class="field"><label>Who's training?</label> 595 <select name="student_type" required> 596 <option value="">Select one...</option> 597 <option>My child (3.5â12)</option> 598 <option>My teen (13â16)</option> 599 <option>Myself (Adult)</option> 600 <option>Whole family</option> 601 <option>40+ Program</option> 602 <option>Women's Program</option> 603 </select> 604 </div> 605 <button type="submit" class="btn btn-primary btn-block btn-lg">Reserve My Trial</button> 606 <p class="form-fine">No spam. We'll text you to schedule your visit. Standard message rates apply.</p> 607 </form> 608 609 <div class="modal-reviews"> 610 <div class="modal-reviews-head"> 611 <div class="stars-line"> 612 <span class="stars">â â â â â </span> 613 <span>Hundreds of <strong>perfect</strong> ratings.</span> 614 </div> 615 <div style="display:flex;gap:8px;align-items:center;font-size:0.78rem;color:var(--text-3);"> 616 <a href="https://share.google/6l8d2iKQuOwfnLbMC" target="_blank" rel="noopener noreferrer" aria-label="See Google reviews"><span class="gtrust-google">Google</span></a> 617 <span>·</span> 618 <a href="https://www.yelp.com/biz/ramona-brazilian-jiu-jitsu-mma-ramona-2?utm_campaign=www_business_share_popup&utm_medium=copy_link&utm_source=(direct)" target="_blank" rel="noopener noreferrer" aria-label="See Yelp reviews"><span class="gtrust-yelp">Yelp</span></a> 619 <span>·</span> 620 <a href="https://www.facebook.com/people/Ramona-Brazilian-Jiu-JitsuMMA-Center/100034850330443/" target="_blank" rel="noopener noreferrer" aria-label="See Facebook reviews"><span class="gtrust-fb">Facebook</span></a> 621 </div> 622 </div> 623 <div class="modal-review-list"> 624 <div class="modal-review"> 625 <div class="top-row"><div class="stars">â â â â â </div><div class="src">Google</div></div> 626 <div class="quote">"My family has attended here for over a year now and I could not be more impressed. Excellent instruction. They actually LEARN here. The coaches are good with kids. I mean GOOD with kids. They're patient and firm and they have fun."</div> 627 <div class="name">â Jessica McInnis · Google</div> 628 </div> 629 <div class="modal-review"> 630 <div class="top-row"><div class="stars">â â â â â </div><div class="src">Yelp</div></div> 631 <div class="quote">"Kevin and his team are absolutely amazing. The gym is well equipped and the staff is knowledgeable. The community feels like a fam
631ily, everyone is encouraging and supportive. I cannot recommend this gym enough. 10/10!"</div> 632 <div class="name">â Michael D. · Yelp</div> 633 </div> 634 <div class="modal-review"> 635 <div class="top-row"><div class="stars">â â â â â </div><div class="src">Google</div></div> 636 <div class="quote">"Ramona MMA has been welcoming and supportive from DAY ONE. The coaches here are fantastic and handle my kids incredibly. My kids are learning so many great skills. I would recommend it to everyone!"</div> 637 <div class="name">â Chelsea Betancourt · Google</div> 638 </div> 639 <div class="modal-review"> 640 <div class="top-row"><div class="stars">â â â â â </div><div class="src">Facebook</div></div> 641 <div class="quote">"Best martial arts school in Ramona area. Coaches Kevin and Cameron are professional and invest in each student meeting them where they're at with excellent instruction. Give it a shot."</div> 642 <div class="name">â Loren Fernandez · Facebook</div> 643 </div> 644 </div> 645 </div> 646 647 </div> 648</div> 649
650<script src="assets/js/main.js"></script>
650 651 652<div style="text-align:center;padding:14px 24px;font-size:0.74rem;color:rgba(255,255,255,0.4);background:#050507;border-top:1px solid rgba(255,255,255,0.04);">Serving <a href="areas-we-serve.html" style="color:rgba(255,255,255,0.55);">Ramona, San Diego, Poway, Lakeside, Julian, Santa Ysabel, Borrego Springs, Wynola, Lake Henshaw, and Shelter Valley</a>.</div> 653<div class="last-updated" style="text-align:center;padding:14px 24px;font-size:0.78rem;color:rgba(255,255,255,0.45);background:#050507;border-top:1px solid rgba(255,255,255,0.06);"><time datetime="2026-05-02">Last Updated: May 02, 2026</time></div> 654
655<script> 656/* Web Special countdown â persists per-visitor via localStorage so repeat visits don't reset the timer. 657 First visit: sets target to end of current month at 23:59:59. 658 Repeat visits within the same window: reuses the stored target. 659 When the stored target expires, a new window begins (next month-end). 660 Safe fallback if localStorage is unavailable: uses month-end logic only. */ 661(function(){ 662 var KEY = 'rmma_webspecial_target_v1'; 663 function computeFreshTarget() { 664 var now = new Date(); 665 return new Date(now.getFullYear(), now.getMonth() + 1, 0, 23, 59, 59).getTime(); 666 } 667 var targetTs; 668 try { 669 var stored = window.localStorage && window.localStorage.getItem(KEY); 670 var nowTs = Date.now(); 671 if (stored && Number(stored) > nowTs) { 672 targetTs = Number(stored); 673 } else { 674 targetTs = computeFreshTarget(); 675 if (window.localStorage) window.localStorage.setItem(KEY, String(targetTs)); 676 } 677 } catch(e) { 678 targetTs = computeFreshTarget(); 679 } 680 function setEl(id, v){ var el = document.getElementById(id); if (el) el.textContent = String(v).padStart(2,'0'); } 681 function tick() { 682 var diff = targetTs - Date.now(); 683 if (diff <= 0) { 684 setEl('cdDays', 0); setEl('cdHours', 0); setEl('cdMinutes', 0); setEl('cdSeconds', 0); 685 return; 686 } 687 var d = Math.floor(diff / 86400000); 688 var h = Math.floor((diff % 86400000) / 3600000); 689 var m = Math.floor((diff % 3600000) / 60000); 690 var s = Math.floor((diff % 60000) / 1000); 691 setEl('cdDays', d); setEl('cdHours', h); setEl('cdMinutes', m); setEl('cdSeconds', s); 692 } 693 tick(); 694 setInterval(tick, 1000); 695})(); 696</script>
696 697 698<!-- RMMA: cross-page dropdown state (Task 3, isolated) --> 699<style> 700/* Temporary highlight after dropdown-driven navigation. Desktop only. */ 701@media (hover: hover) and (pointer: fine) and (min-width: 769px) { 702 .nav-item.is-open-from-navigation > .nav-dropdown, 703 .nav-item.is-open-from-navigation > div.nav-dropdown { 704 opacity: 1; 705 pointer-events: auto; 706 transform: translateY(0); 707 visibility: visible; 708 transition: opacity 0.18s var(--ease), transform 0.18s var(--ease), visibility 0s; 709 } 710 .nav-item.is-open-from-navigation > .nav-trigger .chev { 711 transform: rotate(225deg); 712 margin-bottom: -3px; 713 } 714} 715</style>
716<script> 717/* RMMA Task 3 â desktop dropdown state persistence (isolated, non-breaking) */ 718(function(){ 719 try { 720 if (!('matchMedia' in window)) return; 721 var mq = window.matchMedia('(hover: hover) and (pointer: fine) and (min-width: 769px)'); 722 if (!mq.matches) return; 723 var KEY = 'rmma_nav_open_dropdown_v1'; 724 /* On dropdown child link click: identify parent .nav-item and persist its label */ 725 document.addEventListener('click', function(e){ 726 var a = e.target && e.target.closest ? e.target.closest('.nav-dropdown a') : null; 727 if (!a) return; 728 var href = a.getAttribute('href') || ''; 729 /* Same-page anchor links â do not persist state */ 730 if (href.indexOf('#') === 0) return; 731 var item = a.closest('.nav-item'); 732 if (!item) return; 733 var trigger = item.querySelector('.nav-trigger'); 734 if (!trigger) return; 735 var id = (trigger.textContent || '').trim().toLowerCase(); 736 if (!id) return; 737 try { sessionStorage.setItem(KEY, id); } catch(_){} 738 }, true); 739 /* On page load: read stored label, find matching dropdown, open briefly, then clear */ 740 function init(){ 741 var stored;
742 try { stored = sessionStorage.getItem(KEY); } catch(_){ return; } 743 if (!stored) return; 744 try { sessionStorage.removeItem(KEY); } catch(_){} 745 var items = document.querySelectorAll('.nav-item'); 746 var matched = null; 747 for (var i = 0; i < items.length; i++) { 748 var t = items[i].querySelector('.nav-trigger'); 749 if (!t) continue; 750 var id = (t.textContent || '').trim().toLowerCase(); 751 if (id === stored) { matched = items[i]; break; } 752 } 753 if (!matched) return; 754 matched.classList.add('is-open-from-navigation'); 755 var cleared = false; 756 function clear(){ 757 if (cleared) return; 758 cleared = true; 759 matched.classList.remove('is-open-from-navigation'); 760 } 761 var timer = setTimeout(clear, 2800); 762 matched.addEventListener('mouseleave', function(){ clearTimeout(timer); clear(); }, { once: true }); 763 document.addEventListener('keydown', function(){ clearTimeout(timer); clear(); }, { once: true }); 764 document.addEventListener('focusin', function(e){ 765 if (matched && !matched.contains(e.target)) { clearTimeout(timer); clear(); } 766 }); 767 } 768 if (document.readyState === 'loading') { 769 document.addEventListener('DOMContentLoaded', init); 770 } else { 771 init(); 772 } 773 } catch(_){} 774})(); 775</script>
775 776 777 778<!-- RMMA: mobile horizontal overflow safety net (Task 4, isolated) --> 779<style> 780/* Root-cause guards: lock html/body to viewport width and disable horizontal overscroll */ 781html { overflow-x: hidden; max-width: 100%; } 782body { overflow-x: hidden; max-width: 100%; position: relative; overscroll-behavior-x: none; } 783@media (max-width: 768px) { 784 html, body { overscroll-behavior-x: none; } 785 /* Media defensive caps */ 786 img, picture, video, iframe, svg, canvas { max-width: 100%; } 787 iframe { max-width: 100%; } 788 /* Containers should respect viewport on small screens */ 789 .container { max-width: 100%; } 790 /* Long URLs / words shouldn't push width */ 791 body { overflow-wrap: break-word; word-wrap: break-word; } 792 /* Modals must lock to viewport */ 793 .modal { max-width: 100vw; overflow-x: hidden; } 794 .modal-card { max-width: calc(100vw - 24px); } 795 /* Reveal transforms must not paint outside viewport */ 796 .reveal { will-change: opacity, transform; } 797} 798</style> 799 800 801<!-- RMMA: review expand/collapse (Task 6, isolated) --> 802<style> 803/* Compact-by-default review quote with smooth max-height transition. ~3 lines preview. */ 804.review-card .quote.is-clampable, 805.modal-review .quote.is-clampable { 806 max-height: calc(1.6em * 3); 807 overflow: hidden; 808 position: relative; 809 min-height: 0; 810 transition: max-height 0.4s var(--ease, ease); 811} 812/* White fade at the bottom while collapsed */ 813.review-card .quote.is-clampable::after, 814.modal-review .quote.is-clampable::after { 815 content: ''; 816 position: absolute; 817 left: 0; right: 0; bottom: 0; 818 height: 1.6em; 819 background: linear-gradient(to bottom, rgba(255,255,255,0), #ffffff 90%); 820 pointer-events: none; 821 transition: opacity 0.25s ease; 822} 823.review-card.review-expanded .quote.is-clampable, 824.modal-review.review-expanded .quote.is-clampable { 825 max-height: 120em; 826} 827.review-card.review-expanded .quote.is-clampable::after, 828.modal-review.review-expanded .quote.is-clampable::after { 829 opacity: 0; 830} 831/* Read-more toggle button */ 832.review-card .read-more-toggle, 833.modal-review .read-more-toggle { 834 display: inline-block; 835 margin: 8px 0 14px; 836 padding: 6px 0; 837 font-size: 0.82rem; 838 font-weight: 700; 839 color: var(--action); 840 background: transparent; 841 border: 0; 842 cursor: pointer; 843 font-family: inherit; 844 letter-spacing: 0.02em; 845 text-align: left; 846} 847.review-card .read-more-toggle:hover, 848.modal-review .read-more-toggle:hover {
849 color: var(--action-hover); 850 text-decoration: underline; 851} 852.review-card .read-more-toggle:focus-visible, 853.modal-review .read-more-toggle:focus-visible { 854 outline: 2px solid var(--action); 855 outline-offset: 2px; 856 border-radius: 2px; 857} 858.modal-review .read-more-toggle { 859 font-size: 0.74rem; 860 margin: 4px 0 0; 861} 862/* Larger touch target on mobile */ 863@media (max-width: 767px) { 864 .review-card .read-more-toggle, 865 .modal-review .read-more-toggle { padding: 10px 0; min-height: 32px; } 866} 867</style>
868<script> 869/* RMMA Task 6 â review card expand/collapse (isolated, accessible) */ 870(function(){ 871 var LINES = 3; 872 function setup(quoteEl, parentSel){ 873 if (quoteEl.dataset.rmmaClamp) return; 874 quoteEl.dataset.rmmaClamp = '1'; 875 var parent = quoteEl.closest(parentSel); 876 if (!parent) return; 877 /* Apply clamp class */ 878 quoteEl.classList.add('is-clampable'); 879 /* Measure overflow on next frame */ 880 requestAnimationFrame(function(){ 881 /* If element is hidden (modal closed), defer â re-setup on modal open will retry */ 882 if (!quoteEl.offsetParent && !quoteEl.getClientRects().length) { 883 quoteEl.classList.remove('is-clampable'); 884 delete quoteEl.dataset.rmmaClamp; 885 return; 886 } 887 var clientH = quoteEl.clientHeight; 888 var scrollH = quoteEl.scrollHeight; 889 /* No real overflow â remove clamp + don't add button */ 890 if (scrollH <= clientH + 2) { 891 quoteEl.classList.remove('is-clampable'); 892 return; 893 } 894 /* Build button */ 895 var btn = document.createElement('button'); 896 btn.type = 'button'; 897 btn.className = 'read-more-toggle'; 898 btn.setAttribute('aria-expanded', 'false'); 899 btn.textContent = 'Read more'; 900 /* Insert immediately after the quote */ 901 quoteEl.parentNode.insertBefore(btn, quoteEl.nextSibling); 902 btn.addEventListener('click', function(){ 903 var willExpand = !parent.classList.contains('review-expanded'); 904 parent.classList.toggle('review-expanded', willExpand); 905 btn.setAttribute('aria-expanded', willExpand ? 'true' : 'false'); 906 btn.textContent = willExpand ? 'Show less' : 'Read more'; 907 }); 908 }); 909 } 910 function initAll(){ 911 var reviewQuotes = document.querySelectorAll('.review-card .quote');
912 reviewQuotes.forEach(function(q){ setup(q, '.review-card'); }); 913 var modalQuotes = document.querySelectorAll('.modal-review .quote'); 914 modalQuotes.forEach(function(q){ setup(q, '.modal-review'); }); 915 } 916 if (document.readyState === 'loading') { 917 document.addEventListener('DOMContentLoaded', initAll); 918 } else { 919 initAll(); 920 } 921 /* Hook openModal so modal review quotes get measured once the modal is visible */ 922 if (typeof window.openModal === 'function') { 923 var orig = window.openModal; 924 window.openModal = function(){ 925 var r = orig.apply(this, arguments); 926 requestAnimationFrame(function(){ 927 setTimeout(function(){ 928 document.querySelectorAll('.modal-review .quote').forEach(function(q){ 929 setup(q, '.modal-review'); 930 }); 931 }, 60); 932 }); 933 return r; 934 }; 935 } 936})(); 937</script>
937 938
939<script> 940window.onbeforeunload = () => { 941 for(const form of document.getElementsByTagName('form')) { 942 form.reset(); 943 } 944} 945</script>
945 946
947<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"04acbfd0f9f64e1d8644f511fecd221e","r":1,"spa":2}' crossorigin="anonymous"></script>
947 948</body> 949</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.