{"product_id":"3-day-summer-camp","title":"LearnToRide Dirt Bikes 3-Day Summer Camp | June 23-25, 2026 | Presented by The MX Factory","description":"\u003csection class=\"ltr-camp\" aria-label=\"3-Day Summer MX Camp at The MX Factory\"\u003e\n\n\u003cstyle\u003e\n  @font-face {\n    font-family: 'IT Jellivox';\n    src: url('https:\/\/cdn.shopify.com\/s\/files\/1\/0328\/4582\/4139\/files\/ITJELLIVOXDEMO-Italic.otf?v=1778199680') format('opentype');\n    font-weight: normal;\n    font-style: italic;\n    font-display: swap;\n  }\n\n  \/* Keep the stock Shopify variant picker + Add to Cart visible.\n     (We intentionally don't hide them here — the camp product uses\n     Shopify's native picker for booking.) *\/\n\n  .ltr-camp {\n    --paper: #fcfaf5;\n    --paper-2: #fff8e6;\n    --ink: #1a1714;\n    --ink-soft: #44403c;\n    --red: #d72525;\n    --yellow: #FFD23F;\n    --yellow-soft: #FFE872;\n    --green: #2f8f3c;\n\n    --ff-display: 'Fjalla One', Impact, 'Arial Narrow Bold', sans-serif;\n    --ff-bubble: 'IT Jellivox', 'Bagel Fat One', Impact, sans-serif;\n    --ff-eyebrow: 'Barlow Condensed', 'Barlow', sans-serif;\n    --ff-body: 'Barlow', system-ui, -apple-system, sans-serif;\n    --ff-meta: 'JetBrains Mono', ui-monospace, monospace;\n\n    background: var(--paper);\n    color: var(--ink);\n    font-family: var(--ff-body);\n    -webkit-font-smoothing: antialiased;\n    line-height: 1.5;\n    font-size: 17px;\n\n    \/* Full-bleed escape — the section breaks out of Shopify's content container\n       and stretches edge-to-edge across the viewport. Carson hid the duplicate\n       description block in the theme, so this no longer doubles content. *\/\n    width: 100vw;\n    max-width: 100vw;\n    position: relative;\n    left: 50%;\n    right: 50%;\n    margin-left: -50vw;\n    margin-right: -50vw;\n    overflow-x: hidden;\n    padding-bottom: 96px;\n  }\n  .ltr-camp *, .ltr-camp *::before, .ltr-camp *::after { box-sizing: border-box; }\n  .ltr-camp .container { max-width: 1180px; margin: 0 auto; padding: 0 clamp(20px, 5vw, 56px); }\n\n  \/* Atoms *\/\n  .ltr-camp .eyebrow {\n    font-family: var(--ff-eyebrow);\n    font-weight: 700;\n    font-size: clamp(11px, 1vw, 14px);\n    letter-spacing: 0.32em;\n    text-transform: uppercase;\n    color: var(--red);\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n  }\n  .ltr-camp .eyebrow::before {\n    content: \"\"; width: 8px; height: 8px;\n    border-radius: 50%; background: var(--red);\n  }\n  .ltr-camp .h-display {\n    font-family: var(--ff-display);\n    text-transform: uppercase;\n    letter-spacing: -0.02em;\n    line-height: 0.94;\n    color: var(--ink);\n    margin: 0;\n  }\n  .ltr-camp .h-section { font-size: clamp(34px, 6vw, 88px); }\n\n  .ltr-camp .btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    min-height: 60px;\n    padding: 16px 28px;\n    font-family: var(--ff-display);\n    font-size: clamp(15px, 1.5vw, 20px);\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    text-decoration: none;\n    line-height: 1;\n    border: 3px solid var(--ink);\n    box-shadow: 5px 5px 0 var(--ink);\n    cursor: pointer;\n    transition: transform 0.12s, box-shadow 0.12s;\n    box-sizing: border-box;\n  }\n  .ltr-camp .btn:hover:not([disabled]) { transform: translate(-2px, -2px); box-shadow: 7px 7px 0 var(--ink); }\n  .ltr-camp .btn:active:not([disabled]) { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--ink); }\n  .ltr-camp .btn-red    { background: var(--red); color: var(--paper); }\n  .ltr-camp .btn-yellow { background: var(--yellow); color: var(--ink); }\n  .ltr-camp .btn-paper  { background: var(--paper); color: var(--ink); }\n\n  \/* 1) HERO *\/\n  .ltr-camp .hero {\n    background: var(--yellow);\n    border-bottom: 4px solid var(--ink);\n    padding: clamp(48px, 6vw, 104px) 0;\n    position: relative;\n    overflow: hidden;\n  }\n  .ltr-camp .hero::before {\n    content: \"\";\n    position: absolute; inset: 0;\n    background-image: repeating-linear-gradient(to bottom, transparent 0, transparent 38px, rgba(26,23,20,0.06) 38px, rgba(26,23,20,0.06) 39px);\n    pointer-events: none;\n  }\n  .ltr-camp .hero .container { position: relative; z-index: 1; }\n  .ltr-camp .hero__tag-row {\n    display: inline-flex;\n    align-items: center;\n    gap: 14px;\n    flex-wrap: wrap;\n    margin-bottom: 20px;\n  }\n  .ltr-camp .hero__stamp {\n    font-family: var(--ff-meta);\n    font-weight: 700;\n    font-size: 12px;\n    letter-spacing: 0.22em;\n    text-transform: uppercase;\n    color: var(--paper);\n    background: var(--red);\n    padding: 6px 12px;\n    line-height: 1;\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    border: 2px solid var(--ink);\n  }\n  .ltr-camp .hero__stamp::before {\n    content: \"\\25CF\";\n    color: var(--paper);\n    animation: pulse 1.8s ease-in-out infinite;\n  }\n  @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.45; } }\n  .ltr-camp .hero .eyebrow { color: var(--ink); }\n  .ltr-camp .hero .eyebrow::before { background: var(--ink); }\n\n  .ltr-camp .hero__title {\n    font-family: var(--ff-display);\n    font-size: clamp(56px, 10vw, 168px);\n    line-height: 0.86;\n    text-transform: uppercase;\n    letter-spacing: -0.03em;\n    color: var(--ink);\n    margin: 0 0 8px;\n  }\n  .ltr-camp .hero__title em {\n    font-style: normal;\n    font-family: var(--ff-bubble);\n    color: var(--red);\n    -webkit-text-stroke: 2px var(--ink);\n    font-size: 0.7em;\n    line-height: 1;\n    display: inline-block;\n  }\n  .ltr-camp .hero__sub {\n    font-size: clamp(16px, 1.4vw, 20px);\n    max-width: 720px;\n    margin: 22px 0 28px;\n    color: var(--ink);\n    line-height: 1.55;\n  }\n  .ltr-camp .hero__sub strong { background: var(--ink); color: var(--yellow); padding: 1px 8px; }\n\n  .ltr-camp .hero__price-row {\n    display: inline-flex;\n    align-items: center;\n    gap: 18px;\n    flex-wrap: wrap;\n    background: var(--paper);\n    border: 3px solid var(--ink);\n    padding: 18px 24px;\n    margin-bottom: 28px;\n    box-shadow: 6px 6px 0 var(--ink);\n  }\n  .ltr-camp .hero__price {\n    display: flex; align-items: baseline; gap: 10px;\n  }\n  .ltr-camp .hero__price .amount {\n    font-family: var(--ff-display);\n    font-size: clamp(42px, 5vw, 64px);\n    line-height: 1;\n    color: var(--ink);\n  }\n  .ltr-camp .hero__price .per {\n    font-family: var(--ff-meta);\n    font-size: 12px;\n    color: var(--ink-soft);\n    letter-spacing: 0.16em;\n    text-transform: uppercase;\n    display: flex;\n    flex-direction: column;\n    gap: 2px;\n  }\n  .ltr-camp .hero__price-strike {\n    text-decoration: line-through;\n    color: var(--ink-soft);\n    opacity: 0.7;\n  }\n  .ltr-camp .hero__price-save {\n    color: var(--red);\n    font-weight: 700;\n  }\n\n  \/* ============================================================\n     EARLY BIRD STICKY HEADER BANNER\n     ============================================================ *\/\n  .ltr-camp .eb-banner {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    z-index: 9999;\n    background: var(--red);\n    color: var(--paper);\n    border-bottom: 3px solid var(--ink);\n    transform: translateY(-100%);\n    transition: transform 0.3s ease;\n    box-shadow: 0 4px 0 rgba(26,23,20,0.15);\n  }\n  .ltr-camp .eb-banner.is-shown { transform: translateY(0); }\n  .ltr-camp .eb-banner__inner {\n    max-width: 1180px;\n    margin: 0 auto;\n    padding: 10px clamp(12px, 3vw, 24px);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    gap: clamp(8px, 1.5vw, 18px);\n    flex-wrap: wrap;\n  }\n  .ltr-camp .eb-banner__tag {\n    background: var(--ink);\n    color: var(--yellow);\n    padding: 4px 10px;\n    border-radius: 4px;\n    font-family: var(--ff-eyebrow);\n    font-weight: 700;\n    font-size: clamp(10px, 0.9vw, 12px);\n    letter-spacing: 0.18em;\n    text-transform: uppercase;\n    flex-shrink: 0;\n  }\n  .ltr-camp .eb-banner__copy {\n    font-family: var(--ff-eyebrow);\n    font-weight: 700;\n    font-size: clamp(11px, 0.95vw, 13px);\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    color: var(--paper);\n  }\n  .ltr-camp .eb-banner__copy strong { color: var(--yellow); }\n  .ltr-camp .eb-banner__cta {\n    background: var(--yellow);\n    color: var(--ink);\n    text-decoration: none;\n    padding: 7px 14px;\n    border-radius: 4px;\n    border: 2px solid var(--ink);\n    font-family: var(--ff-display);\n    font-size: clamp(11px, 0.95vw, 13px);\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    line-height: 1;\n    transition: transform 0.1s;\n    flex-shrink: 0;\n  }\n  .ltr-camp .eb-banner__cta:hover { transform: translateY(-1px); }\n\n  \/* ============================================================\n     SCARCITY STOCK BADGES (injected on Shopify variant picker)\n     ============================================================ *\/\n  .mxf-stock-badge {\n    display: inline-block;\n    margin-left: 8px;\n    padding: 2px 8px;\n    font-family: 'Barlow Condensed', 'Barlow', sans-serif;\n    font-weight: 700;\n    font-size: 11px;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    border-radius: 3px;\n    line-height: 1.4;\n    vertical-align: middle;\n  }\n  .mxf-stock-badge--low {\n    background: #d72525;\n    color: #fcfaf5;\n  }\n  .mxf-stock-badge--last {\n    background: #d72525;\n    color: #fcfaf5;\n    animation: mxfPulse 1.4s ease-in-out infinite;\n  }\n  .mxf-stock-badge--mid {\n    background: #1a1714;\n    color: #FFD23F;\n  }\n  .mxf-stock-badge--byo {\n    background: #2f8f3c;\n    color: #fcfaf5;\n  }\n  @keyframes mxfPulse {\n    0%, 100% { opacity: 1; transform: scale(1); }\n    50% { opacity: 0.7; transform: scale(0.97); }\n  }\n  .ltr-camp .hero__meta {\n    list-style: none; margin: 0; padding: 0;\n    display: flex; gap: 18px; flex-wrap: wrap;\n    font-family: var(--ff-meta);\n    font-size: 12px;\n    color: var(--ink-soft);\n    letter-spacing: 0.12em;\n    text-transform: uppercase;\n  }\n  .ltr-camp .hero__meta li { padding-left: 16px; position: relative; }\n  .ltr-camp .hero__meta li::before {\n    content: \"\";\n    position: absolute; left: 0; top: 50%;\n    transform: translateY(-50%);\n    width: 6px; height: 6px;\n    background: var(--red);\n  }\n  .ltr-camp .hero__ctas { display: inline-flex; gap: 14px; flex-wrap: wrap; align-items: center; }\n\n  \/* Hero 2-col grid: text left, photo right *\/\n  .ltr-camp .hero__grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: clamp(28px, 4vw, 48px);\n    align-items: center;\n  }\n  @media (min-width: 880px) {\n    .ltr-camp .hero__grid { grid-template-columns: 1.15fr 1fr; }\n  }\n  .ltr-camp .hero__photo {\n    background-position: center;\n    background-size: cover;\n    background-repeat: no-repeat;\n    border: 4px solid var(--ink);\n    border-radius: 14px;\n    box-shadow: 10px 10px 0 var(--ink);\n    aspect-ratio: 4 \/ 5;\n    transform: rotate(1.5deg);\n    background-color: var(--paper);\n  }\n  @media (min-width: 880px) {\n    .ltr-camp .hero__photo { min-height: 520px; aspect-ratio: auto; }\n  }\n\n  \/* Inline photo banner between sections *\/\n  .ltr-camp .photo-band {\n    border-radius: 14px;\n    border: 4px solid var(--ink);\n    box-shadow: 8px 8px 0 var(--ink);\n    overflow: hidden;\n    background-position: center;\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-color: var(--paper);\n    aspect-ratio: 16 \/ 9;\n    margin: clamp(24px, 3vw, 40px) auto;\n    max-width: 920px;\n  }\n  \/* Photo + caption banner (used inside sections) *\/\n  .ltr-camp .photo-caption {\n    text-align: center;\n    margin: 12px auto 0;\n    max-width: 920px;\n    font-family: var(--ff-eyebrow);\n    font-weight: 700;\n    font-size: 12px;\n    letter-spacing: 0.24em;\n    text-transform: uppercase;\n    color: var(--ink-soft);\n  }\n  .ltr-camp .hero__proof {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin-top: 22px;\n    font-family: var(--ff-meta);\n    font-size: 12px;\n    color: var(--ink-soft);\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n  }\n  .ltr-camp .hero__proof .stars { color: var(--red); letter-spacing: 2px; }\n\n  \/* 2) SPEC STRIP *\/\n  .ltr-camp .strip {\n    background: var(--paper-2);\n    padding: clamp(28px, 4vw, 48px) 0;\n    border-bottom: 4px solid var(--ink);\n    position: relative;\n  }\n  .ltr-camp .strip::before {\n    content: \"\";\n    position: absolute; inset: 0;\n    background-image: radial-gradient(rgba(26,23,20,0.07) 1.5px, transparent 1.5px);\n    background-size: 22px 22px;\n    pointer-events: none;\n  }\n  .ltr-camp .strip .container { position: relative; z-index: 1; }\n  .ltr-camp .strip__row {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: clamp(18px, 2vw, 32px);\n  }\n  .ltr-camp .stat { text-align: center; padding: 8px; }\n  .ltr-camp .stat__num {\n    font-family: var(--ff-display);\n    font-size: clamp(44px, 5vw, 72px);\n    color: var(--red);\n    -webkit-text-stroke: 2px var(--ink);\n    line-height: 1;\n    margin-bottom: 6px;\n  }\n  .ltr-camp .stat__label {\n    font-family: var(--ff-eyebrow);\n    font-weight: 700;\n    font-size: 12px;\n    letter-spacing: 0.32em;\n    text-transform: uppercase;\n    color: var(--ink);\n  }\n\n  \/* 3) WHY 3-DAY CAMP *\/\n  .ltr-camp .why {\n    padding: clamp(56px, 7vw, 104px) 0;\n    background: var(--paper);\n    border-bottom: 4px solid var(--ink);\n  }\n  .ltr-camp .why__head { max-width: 820px; }\n  .ltr-camp .why__head h2 { margin: 18px 0; }\n  .ltr-camp .why__head p {\n    font-size: clamp(16px, 1.3vw, 20px);\n    color: var(--ink-soft);\n    margin: 0;\n    max-width: 680px;\n  }\n  .ltr-camp .why__head p strong { color: var(--ink); }\n  .ltr-camp .why__grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: clamp(16px, 2vw, 24px);\n    margin-top: clamp(36px, 4vw, 52px);\n  }\n  @media (min-width: 760px) { .ltr-camp .why__grid { grid-template-columns: 1fr 1fr; } }\n  @media (min-width: 1024px) { .ltr-camp .why__grid { grid-template-columns: repeat(3, 1fr); } }\n  .ltr-camp .why-card {\n    background: var(--paper-2);\n    border: 3px solid var(--ink);\n    padding: clamp(22px, 2.4vw, 30px);\n    position: relative;\n    box-shadow: 5px 5px 0 var(--ink);\n    transition: transform 0.2s, box-shadow 0.2s;\n  }\n  .ltr-camp .why-card:hover { transform: translate(-2px, -2px); box-shadow: 7px 7px 0 var(--ink); }\n  .ltr-camp .why-card__num {\n    position: absolute; top: 18px; right: 22px;\n    font-family: var(--ff-meta);\n    font-size: 11px;\n    letter-spacing: 0.18em;\n    color: var(--ink-soft);\n  }\n  .ltr-camp .why-card h4 {\n    font-family: var(--ff-display);\n    font-size: clamp(22px, 2vw, 28px);\n    text-transform: uppercase;\n    letter-spacing: -0.01em;\n    color: var(--ink);\n    margin: 0 0 12px;\n    line-height: 1;\n  }\n  .ltr-camp .why-card p { margin: 0; color: var(--ink-soft); font-size: 15px; line-height: 1.55; }\n\n  \/* 4) DAY BREAKDOWN *\/\n  .ltr-camp .days {\n    padding: clamp(56px, 7vw, 104px) 0;\n    background: var(--paper-2);\n    border-bottom: 4px solid var(--ink);\n    position: relative;\n  }\n  .ltr-camp .days::before {\n    content: \"\";\n    position: absolute; inset: 0;\n    background-image: radial-gradient(rgba(26,23,20,0.07) 1.5px, transparent 1.5px);\n    background-size: 22px 22px;\n    pointer-events: none;\n  }\n  .ltr-camp .days .container { position: relative; z-index: 1; }\n  .ltr-camp .days__head { text-align: center; max-width: 820px; margin: 0 auto clamp(36px, 4vw, 56px); }\n  .ltr-camp .days__head h2 { margin: 18px 0; }\n  .ltr-camp .days__head p { color: var(--ink-soft); font-size: clamp(15px, 1.2vw, 18px); margin: 0; }\n  .ltr-camp .day-grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: clamp(20px, 2.4vw, 30px);\n  }\n  @media (min-width: 900px) { .ltr-camp .day-grid { grid-template-columns: repeat(3, 1fr); } }\n  .ltr-camp .day-card {\n    background: var(--paper);\n    border: 3px solid var(--ink);\n    padding: clamp(26px, 3vw, 36px);\n    position: relative;\n    box-shadow: 6px 6px 0 var(--ink);\n  }\n  .ltr-camp .day-card__tag {\n    display: inline-block;\n    background: var(--red);\n    color: var(--paper);\n    border: 2px solid var(--ink);\n    padding: 5px 12px;\n    font-family: var(--ff-display);\n    font-size: 13px;\n    letter-spacing: 0.16em;\n    text-transform: uppercase;\n    line-height: 1;\n    margin-bottom: 14px;\n    border-radius: 4px;\n  }\n  .ltr-camp .day-card__date {\n    font-family: var(--ff-meta);\n    font-weight: 700;\n    font-size: 13px;\n    color: var(--ink-soft);\n    letter-spacing: 0.16em;\n    text-transform: uppercase;\n    margin-bottom: 14px;\n  }\n  .ltr-camp .day-card h3 {\n    font-family: var(--ff-display);\n    font-size: clamp(28px, 3.2vw, 42px);\n    text-transform: uppercase;\n    letter-spacing: -0.015em;\n    color: var(--ink);\n    margin: 0 0 18px;\n    line-height: 0.95;\n  }\n  .ltr-camp .day-card p {\n    color: var(--ink-soft);\n    margin: 0 0 18px;\n    font-size: 15px;\n    line-height: 1.55;\n  }\n  .ltr-camp .day-card ul { list-style: none; padding: 0; margin: 0; }\n  .ltr-camp .day-card li {\n    padding: 10px 0 10px 28px;\n    border-top: 2px solid var(--ink);\n    position: relative;\n    color: var(--ink);\n    font-size: 15px;\n  }\n  .ltr-camp .day-card li:first-child { border-top: 2px solid var(--ink); }\n  .ltr-camp .day-card li::before {\n    content: \"\\2192\";\n    position: absolute;\n    left: 0; top: 10px;\n    color: var(--red);\n    font-family: var(--ff-display);\n    font-weight: 700;\n  }\n\n  \/* 5) WHO IT'S FOR *\/\n  .ltr-camp .who {\n    padding: clamp(56px, 7vw, 104px) 0;\n    background: var(--yellow);\n    border-bottom: 4px solid var(--ink);\n  }\n  .ltr-camp .who .eyebrow { color: var(--ink); }\n  .ltr-camp .who .eyebrow::before { background: var(--ink); }\n  .ltr-camp .who__split {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: clamp(28px, 3vw, 44px);\n    align-items: start;\n  }\n  @media (min-width: 900px) { .ltr-camp .who__split { grid-template-columns: 5fr 7fr; } }\n  .ltr-camp .who h2 { margin: 18px 0; }\n  .ltr-camp .who__lead { color: var(--ink); font-size: clamp(16px, 1.3vw, 18px); margin: 0; }\n  .ltr-camp .check-grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 12px;\n  }\n  @media (min-width: 640px) { .ltr-camp .check-grid { grid-template-columns: 1fr 1fr; } }\n  .ltr-camp .check {\n    background: var(--paper);\n    border: 3px solid var(--ink);\n    padding: 18px 20px;\n    display: flex;\n    gap: 14px;\n    align-items: flex-start;\n    box-shadow: 4px 4px 0 var(--ink);\n  }\n  .ltr-camp .check__icon {\n    flex-shrink: 0;\n    width: 30px; height: 30px;\n    background: var(--red);\n    color: var(--paper);\n    border: 2px solid var(--ink);\n    border-radius: 6px;\n    font-family: var(--ff-display);\n    font-size: 16px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    line-height: 1;\n  }\n  .ltr-camp .check p { margin: 0; color: var(--ink); font-size: 15px; line-height: 1.5; }\n\n  \/* 6) THE BIKES *\/\n  .ltr-camp .bikes {\n    padding: clamp(56px, 7vw, 104px) 0;\n    background: var(--paper);\n    border-bottom: 4px solid var(--ink);\n  }\n  .ltr-camp .bikes__head { max-width: 820px; margin: 0 auto clamp(36px, 4vw, 56px); text-align: center; }\n  .ltr-camp .bikes__head h2 { margin: 18px 0; }\n  .ltr-camp .bikes__head p { color: var(--ink-soft); font-size: clamp(15px, 1.2vw, 18px); margin: 0; }\n  .ltr-camp .bike-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: clamp(14px, 1.6vw, 20px);\n    max-width: 920px;\n    margin: 0 auto;\n  }\n  @media (min-width: 760px) { .ltr-camp .bike-grid { grid-template-columns: repeat(3, 1fr); } }\n  .ltr-camp .bike-card {\n    background: var(--paper-2);\n    border: 3px solid var(--ink);\n    padding: clamp(18px, 2vw, 24px);\n    box-shadow: 4px 4px 0 var(--ink);\n    text-align: center;\n  }\n  .ltr-camp .bike-card__cc {\n    font-family: var(--ff-display);\n    font-size: clamp(32px, 3.4vw, 44px);\n    color: var(--ink);\n    line-height: 1;\n    margin-bottom: 8px;\n  }\n  .ltr-camp .bike-card__cc small {\n    display: block;\n    font-family: var(--ff-eyebrow);\n    font-weight: 700;\n    font-size: 10px;\n    letter-spacing: 0.24em;\n    color: var(--ink-soft);\n    margin-top: 4px;\n    text-transform: uppercase;\n  }\n  .ltr-camp .bike-card__range {\n    font-family: var(--ff-meta);\n    font-size: 12px;\n    color: var(--ink-soft);\n    line-height: 1.45;\n  }\n\n  \/* 7) INCLUDED *\/\n  .ltr-camp .included {\n    padding: clamp(56px, 7vw, 104px) 0;\n    background: var(--paper-2);\n    border-bottom: 4px solid var(--ink);\n    position: relative;\n  }\n  .ltr-camp .included::before {\n    content: \"\";\n    position: absolute; inset: 0;\n    background-image: radial-gradient(rgba(26,23,20,0.07) 1.5px, transparent 1.5px);\n    background-size: 22px 22px;\n    pointer-events: none;\n  }\n  .ltr-camp .included .container { position: relative; z-index: 1; }\n  .ltr-camp .included__head { text-align: center; max-width: 820px; margin: 0 auto clamp(36px, 4vw, 56px); }\n  .ltr-camp .included__head h2 { margin: 18px 0; }\n  .ltr-camp .included__head p { color: var(--ink-soft); font-size: clamp(15px, 1.2vw, 18px); margin: 0; }\n  .ltr-camp .included__grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: clamp(14px, 1.8vw, 22px);\n  }\n  @media (min-width: 700px) { .ltr-camp .included__grid { grid-template-columns: repeat(3, 1fr); } }\n  .ltr-camp .inc-card {\n    background: var(--paper);\n    border: 3px solid var(--ink);\n    padding: clamp(20px, 2vw, 26px);\n    box-shadow: 4px 4px 0 var(--ink);\n  }\n  .ltr-camp .inc-card__icon {\n    width: 40px; height: 40px;\n    background: var(--yellow);\n    color: var(--ink);\n    border: 2px solid var(--ink);\n    border-radius: 8px;\n    font-family: var(--ff-display);\n    font-size: 20px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin-bottom: 14px;\n    line-height: 1;\n  }\n  .ltr-camp .inc-card h4 {\n    font-family: var(--ff-display);\n    font-size: clamp(16px, 1.4vw, 20px);\n    text-transform: uppercase;\n    letter-spacing: 0.02em;\n    color: var(--ink);\n    margin: 0 0 6px;\n  }\n  .ltr-camp .inc-card p { margin: 0; color: var(--ink-soft); font-size: 14px; line-height: 1.5; }\n  .ltr-camp .inc-card ul { margin: 8px 0 0; padding: 0; list-style: none; }\n  .ltr-camp .inc-card ul li { padding: 4px 0 4px 16px; position: relative; color: var(--ink-soft); font-size: 14px; line-height: 1.4; }\n  .ltr-camp .inc-card ul li::before { content: \"\\2022\"; position: absolute; left: 0; color: var(--red); font-weight: 700; }\n\n  \/* Inline CTA buttons between sections *\/\n  .ltr-camp .section-cta {\n    text-align: center;\n    margin-top: clamp(32px, 4vw, 48px);\n  }\n\n  \/* 8) WHERE + WHEN *\/\n  .ltr-camp .where {\n    padding: clamp(56px, 7vw, 104px) 0;\n    background: var(--paper);\n    border-bottom: 4px solid var(--ink);\n    text-align: center;\n  }\n  .ltr-camp .where__schedule {\n    display: inline-flex;\n    align-items: stretch;\n    gap: 0;\n    margin: 28px 0 36px;\n    border: 3px solid var(--ink);\n    background: var(--paper-2);\n    flex-wrap: wrap;\n    box-shadow: 6px 6px 0 var(--ink);\n  }\n  .ltr-camp .where__day {\n    padding: 18px 26px;\n    border-right: 2px solid var(--ink);\n    text-align: left;\n    background: var(--paper);\n  }\n  .ltr-camp .where__day:last-child { border-right: none; }\n  .ltr-camp .where__day-label {\n    font-family: var(--ff-meta);\n    font-size: 11px;\n    color: var(--ink-soft);\n    letter-spacing: 0.22em;\n    text-transform: uppercase;\n    display: block;\n    margin-bottom: 4px;\n  }\n  .ltr-camp .where__day-date {\n    font-family: var(--ff-display);\n    font-size: clamp(22px, 2vw, 28px);\n    color: var(--ink);\n    text-transform: uppercase;\n    line-height: 1;\n  }\n  .ltr-camp .where__day-hours {\n    display: block;\n    font-family: var(--ff-meta);\n    font-size: 11px;\n    color: var(--red);\n    margin-top: 4px;\n    letter-spacing: 0.1em;\n  }\n  .ltr-camp .where__addr {\n    color: var(--ink);\n    font-size: clamp(15px, 1.2vw, 17px);\n    margin: 0;\n    line-height: 1.55;\n  }\n\n  \/* 9) FAQ *\/\n  .ltr-camp .faq {\n    padding: clamp(56px, 7vw, 104px) 0;\n    background: var(--paper-2);\n    border-bottom: 4px solid var(--ink);\n  }\n  .ltr-camp .faq__head { text-align: center; max-width: 820px; margin: 0 auto clamp(36px, 4vw, 56px); }\n  .ltr-camp .faq__head h2 { margin: 18px 0 0; }\n  .ltr-camp .faq details {\n    border-bottom: 2px solid var(--ink-soft);\n    padding: 20px 0;\n    max-width: 820px;\n    margin: 0 auto;\n  }\n  .ltr-camp .faq details:first-of-type { border-top: 2px solid var(--ink-soft); }\n  .ltr-camp .faq summary {\n    list-style: none;\n    cursor: pointer;\n    font-family: var(--ff-display);\n    font-size: clamp(16px, 1.4vw, 20px);\n    text-transform: uppercase;\n    letter-spacing: 0.02em;\n    color: var(--ink);\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 16px;\n  }\n  .ltr-camp .faq summary::-webkit-details-marker { display: none; }\n  .ltr-camp .faq summary::after {\n    content: \"+\";\n    font-family: var(--ff-display);\n    font-size: 26px;\n    color: var(--red);\n    line-height: 1;\n  }\n  .ltr-camp .faq details[open] summary::after { content: \"\\2212\"; }\n  .ltr-camp .faq details p {\n    margin: 14px 0 0;\n    color: var(--ink-soft);\n    font-size: 15px;\n    line-height: 1.55;\n  }\n  .ltr-camp .faq details a { color: var(--ink); text-decoration: underline; font-weight: 700; }\n\n  \/* 10) FINAL CTA *\/\n  .ltr-camp .final {\n    padding: clamp(56px, 7vw, 104px) 0;\n    background: var(--red);\n    color: var(--paper);\n    text-align: center;\n  }\n  .ltr-camp .final .eyebrow { color: var(--paper); }\n  .ltr-camp .final .eyebrow::before { background: var(--paper); }\n  .ltr-camp .final h2 {\n    font-family: var(--ff-display);\n    font-size: clamp(44px, 8vw, 108px);\n    line-height: 0.9;\n    text-transform: uppercase;\n    letter-spacing: -0.025em;\n    color: var(--paper);\n    margin: 18px 0 14px;\n  }\n  .ltr-camp .final__bubble {\n    font-family: var(--ff-bubble);\n    font-style: italic;\n    font-size: clamp(26px, 3vw, 42px);\n    color: var(--yellow);\n    margin: 0 0 28px;\n    -webkit-text-stroke: 1px var(--ink);\n  }\n  .ltr-camp .final__price {\n    font-family: var(--ff-display);\n    font-size: clamp(22px, 2.4vw, 32px);\n    text-transform: uppercase;\n    color: var(--paper);\n    margin-bottom: 28px;\n  }\n  .ltr-camp .final__price small {\n    display: block;\n    font-family: var(--ff-meta);\n    font-size: 13px;\n    font-weight: 700;\n    letter-spacing: 0.24em;\n    margin-top: 6px;\n    opacity: 0.85;\n  }\n\n  \/* 11) STICKY BOTTOM CTA *\/\n  .ltr-camp .sticky-cta {\n    position: fixed;\n    bottom: 0; left: 0; right: 0;\n    background: var(--ink);\n    color: var(--paper);\n    padding: 12px 16px calc(12px + env(safe-area-inset-bottom));\n    z-index: 9999;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 12px;\n    border-top: 3px solid var(--red);\n  }\n  .ltr-camp .sticky-cta__price { display: flex; flex-direction: column; line-height: 1; }\n  .ltr-camp .sticky-cta__price .amount {\n    font-family: var(--ff-display);\n    font-size: 24px;\n    color: var(--yellow);\n    margin-bottom: 2px;\n  }\n  .ltr-camp .sticky-cta__strike {\n    font-size: 16px;\n    color: var(--paper-soft, rgba(252,250,245,0.55));\n    text-decoration: line-through;\n    margin-left: 6px;\n    letter-spacing: 0;\n  }\n  .ltr-camp .sticky-cta__price .meta {\n    font-family: var(--ff-meta);\n    font-size: 10px;\n    color: var(--paper);\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n  }\n  .ltr-camp .sticky-cta__btn {\n    flex-shrink: 0;\n    padding: 14px 18px;\n    border-radius: 8px;\n    font-family: var(--ff-display);\n    font-size: 15px;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    color: var(--ink);\n    background: var(--yellow);\n    border: 2px solid var(--paper);\n    text-decoration: none;\n    line-height: 1;\n  }\n  \/* Sticky CTA is shown on ALL viewports while early bird is live so the\n     reserve button is always one tap away. *\/\n\u003c\/style\u003e\n\n\u003c!-- 0) STICKY EARLY-BIRD HEADER BANNER (slides in on scroll) --\u003e\n\u003cdiv class=\"eb-banner\" aria-label=\"Early bird offer\"\u003e\n  \u003cdiv class=\"eb-banner__inner\"\u003e\n    \u003cspan class=\"eb-banner__tag\"\u003e★ Early Bird Live\u003c\/span\u003e\n    \u003cspan class=\"eb-banner__copy\"\u003eSave \u003cstrong\u003e$100\u003c\/strong\u003e · book by \u003cstrong\u003eJun 13\u003c\/strong\u003e · limited bike rentals\u003c\/span\u003e\n    \u003ca href=\"#\" class=\"eb-banner__cta\"\u003eReserve Spot  →\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 1) HERO --\u003e\n\u003cdiv class=\"hero\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"hero__grid\"\u003e\n      \u003cdiv class=\"hero__copy\"\u003e\n        \u003cdiv class=\"hero__tag-row\"\u003e\n          \u003cspan class=\"hero__stamp\"\u003eLive · Enrolling\u003c\/span\u003e\n          \u003cspan class=\"eyebrow\"\u003eAustin's Moto School · Lockhart, TX\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003ch1 class=\"hero__title\"\u003e3 Days.\u003cbr\u003eBest Summer Ever.\u003c\/h1\u003e\n        \u003cp class=\"hero__sub\"\u003e\n          Three days of learn-to-ride coaching at our Lockhart, TX track. Built for complete beginners. Any kid who fits a 50cc, 110cc, or 125cc big-wheel gets the bike, the gear, and the kind of summer story they'll tell for years. \u003cstrong\u003e9am - 2pm each day. Cap of 8 riders.\u003c\/strong\u003e\n        \u003c\/p\u003e\n\n        \u003cdiv class=\"hero__price-row\"\u003e\n          \u003cdiv class=\"hero__price\"\u003e\n            \u003cspan class=\"amount\"\u003eFrom $897\u003c\/span\u003e\n            \u003cspan class=\"per\"\u003e\n              \u003cspan class=\"hero__price-strike\"\u003eReg $997\u003c\/span\u003e\n              \u003cspan class=\"hero__price-save\"\u003eSave $100 · Early bird\u003c\/span\u003e\n            \u003c\/span\u003e\n          \u003c\/div\u003e\n          \u003cul class=\"hero__meta\"\u003e\n            \u003cli\u003eJun 23-25, 2026\u003c\/li\u003e\n            \u003cli\u003eBeginners welcome\u003c\/li\u003e\n            \u003cli\u003e+ $300 with bike rental\u003c\/li\u003e\n            \u003cli\u003eEB ends Jun 13\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"hero__ctas\"\u003e\n          \u003ca href=\"#\" class=\"btn btn-red\"\u003eReserve My Kid's Spot  →\u003c\/a\u003e\n          \u003ca href=\"#days\" class=\"btn btn-paper\"\u003eWhat They'll Do\u003c\/a\u003e\n        \u003c\/div\u003e\n        \u003cspan class=\"hero__proof\"\u003e\n          \u003cspan class=\"stars\"\u003e★★★★★\u003c\/span\u003e\n          77 Reviews on Google\n        \u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"hero__photo\" style=\"background-image: url('https:\/\/cdn.shopify.com\/s\/files\/1\/0328\/4582\/4139\/files\/summer-camp-hero-coach-highfive.jpg?v=1780255638'); background-position: 40% 38%;\" role=\"img\" aria-label=\"Coach high-fives a young rider at The MX Factory\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 2) SPEC STRIP --\u003e\n\u003cdiv class=\"strip\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"strip__row\"\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"stat__num\"\u003e3\u003c\/div\u003e\n        \u003cdiv class=\"stat__label\"\u003eDay Camp\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"stat__num\"\u003e8\u003c\/div\u003e\n        \u003cdiv class=\"stat__label\"\u003eRider Cap\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"stat__num\"\u003e15\u003c\/div\u003e\n        \u003cdiv class=\"stat__label\"\u003eCoaching Hours\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 3) WHY 3-DAY CAMP --\u003e\n\u003cdiv class=\"why\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"why__head\"\u003e\n      \u003cspan class=\"eyebrow\"\u003eWhy a camp, not a lesson\u003c\/span\u003e\n      \u003ch2 class=\"h-display h-section\"\u003eThree days beats a year of one-offs.\u003c\/h2\u003e\n      \u003cp\u003eOne 90-minute lesson is a taste. Three full days back-to-back is when skills actually stick. \u003cstrong\u003eSleep on what you learned, ride it again, lock it in.\u003c\/strong\u003e That's how kids who came in nervous on day 1 are jumping by day 3.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"why__grid\"\u003e\n      \u003cdiv class=\"why-card\"\u003e\n        \u003cspan class=\"why-card__num\"\u003e01\u003c\/span\u003e\n        \u003ch4\u003eSkills Compound.\u003c\/h4\u003e\n        \u003cp\u003eWhat you drill on Friday gets sharper Saturday and second-nature Sunday. The brain locks in what you repeat in close succession.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"why-card\"\u003e\n        \u003cspan class=\"why-card__num\"\u003e02\u003c\/span\u003e\n        \u003ch4\u003eReal Friendships.\u003c\/h4\u003e\n        \u003cp\u003eCapped at 8 riders. Your kid spends 15 hours with the same crew, same coaches. They leave with a riding buddy or two for the rest of summer.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"why-card\"\u003e\n        \u003cspan class=\"why-card__num\"\u003e03\u003c\/span\u003e\n        \u003ch4\u003eYou Get The Weekend Off.\u003c\/h4\u003e\n        \u003cp\u003eDrop-off 9am. Pickup 2pm. Three days you're not driving them around. Lunch is on us. Bring a chair if you want to watch.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"photo-band\" style=\"background-image: url('https:\/\/cdn.shopify.com\/s\/files\/1\/0328\/4582\/4139\/files\/summer-camp-young-rider-attack.jpg?v=1780255638');\" role=\"img\" aria-label=\"Young rider in attack position on a 50cc\"\u003e\u003c\/div\u003e\n    \u003cp class=\"photo-caption\"\u003eDay 1, in attack position. · Past camp rider.\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 4) DAY BREAKDOWN --\u003e\n\u003cdiv class=\"days\" id=\"days\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"days__head\"\u003e\n      \u003cspan class=\"eyebrow\"\u003e3 Days. 1 Plan.\u003c\/span\u003e\n      \u003ch2 class=\"h-display h-section\"\u003eDay by day.\u003c\/h2\u003e\n      \u003cp\u003eEach day builds on the last. Fundamentals → cornering and small jumps → moto games and a fun day. Every rider gets a debrief and a take-home plan.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"day-grid\"\u003e\n      \u003cdiv class=\"day-card\"\u003e\n        \u003cspan class=\"day-card__tag\"\u003eDay 1\u003c\/span\u003e\n        \u003cdiv class=\"day-card__date\"\u003eTue Jun 23 · 9am - 2pm\u003c\/div\u003e\n        \u003ch3\u003eFundamentals.\u003c\/h3\u003e\n        \u003cp\u003eBike fit, gear-up, and the three things that change everything: body position, throttle, and brakes. Drill them slow so we can speed them up.\u003c\/p\u003e\n        \u003cul\u003e\n          \u003cli\u003eBike + gear sizing\u003c\/li\u003e\n          \u003cli\u003eThrottle + clutch control\u003c\/li\u003e\n          \u003cli\u003eBody position on the pegs\u003c\/li\u003e\n          \u003cli\u003eBraking technique\u003c\/li\u003e\n          \u003cli\u003eComfortable lapping\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"day-card\"\u003e\n        \u003cspan class=\"day-card__tag\"\u003eDay 2\u003c\/span\u003e\n        \u003cdiv class=\"day-card__date\"\u003eWed Jun 24 · 9am - 2pm\u003c\/div\u003e\n        \u003ch3\u003eCornering \u0026amp; Jumps.\u003c\/h3\u003e\n        \u003cp\u003eNow we add pace and air. Real cornering at real speeds, plus the first tabletops. Most riders' first jump happens today.\u003c\/p\u003e\n        \u003cul\u003e\n          \u003cli\u003eCornering at speed\u003c\/li\u003e\n          \u003cli\u003eInside \/ outside lines\u003c\/li\u003e\n          \u003cli\u003eFirst tabletops\u003c\/li\u003e\n          \u003cli\u003eRhythm sections\u003c\/li\u003e\n          \u003cli\u003eStanding in attack position\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"day-card\"\u003e\n        \u003cspan class=\"day-card__tag\"\u003eDay 3\u003c\/span\u003e\n        \u003cdiv class=\"day-card__date\"\u003eThu Jun 25 · 9am - 2pm\u003c\/div\u003e\n        \u003ch3\u003eFun Day.\u003c\/h3\u003e\n        \u003cp\u003ePut it all together. Moto games, friendly relays, and a great day on the bike. Ends with a coach-led debrief and a take-home practice plan.\u003c\/p\u003e\n        \u003cul\u003e\n          \u003cli\u003eMoto games + relays\u003c\/li\u003e\n          \u003cli\u003eFull track ride-around\u003c\/li\u003e\n          \u003cli\u003eSkill-it-all-together drills\u003c\/li\u003e\n          \u003cli\u003eTake-home practice plan\u003c\/li\u003e\n          \u003cli\u003eHigh-fives all around\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"section-cta\"\u003e\n      \u003ca href=\"#\" class=\"btn btn-red\"\u003eReserve My Kid's Spot  →\u003c\/a\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 5) WHO IT'S FOR --\u003e\n\u003cdiv class=\"who\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"who__split\"\u003e\n      \u003cdiv\u003e\n        \u003cspan class=\"eyebrow\"\u003eWho shows up\u003c\/span\u003e\n        \u003ch2 class=\"h-display h-section\"\u003eBuilt for total beginners.\u003c\/h2\u003e\n        \u003cp class=\"who__lead\"\u003eAny kid who fits a 50cc through 300cc bike (roughly ages 6-17). We size them at drop-off. \u003cstrong\u003eIf your kid has never touched a dirt bike, this is for them.\u003c\/strong\u003e\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"check-grid\"\u003e\n        \u003cdiv class=\"check\"\u003e\n          \u003cspan class=\"check__icon\"\u003e✓\u003c\/span\u003e\n          \u003cp\u003eThey've never been on a dirt bike before and want to start the right way.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"check\"\u003e\n          \u003cspan class=\"check__icon\"\u003e✓\u003c\/span\u003e\n          \u003cp\u003eThey've ridden a few times and want real coaching, not YouTube tutorials.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"check\"\u003e\n          \u003cspan class=\"check__icon\"\u003e✓\u003c\/span\u003e\n          \u003cp\u003eThey want to learn to corner, brake, and ride with control on a real track.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"check\"\u003e\n          \u003cspan class=\"check__icon\"\u003e✓\u003c\/span\u003e\n          \u003cp\u003eYou want them off the screen for three days of sun and dirt.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"check\"\u003e\n          \u003cspan class=\"check__icon\"\u003e✓\u003c\/span\u003e\n          \u003cp\u003eYou want footage. Coaches grab clips every day so they can rewatch and share.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"check\"\u003e\n          \u003cspan class=\"check__icon\"\u003e✓\u003c\/span\u003e\n          \u003cp\u003eThey're self-sufficient enough for a 9am-2pm camp (bathroom, lunch, listening to coaches).\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"photo-band\" style=\"background-image: url('https:\/\/cdn.shopify.com\/s\/files\/1\/0328\/4582\/4139\/files\/summer-camp-bike-fit.jpg?v=1780255638');\" role=\"img\" aria-label=\"Coach working on bike setup with a young rider\"\u003e\u003c\/div\u003e\n    \u003cp class=\"photo-caption\" style=\"color: var(--ink);\"\u003eOne-on-one bike fit before the first lap.\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 6) THE BIKES --\u003e\n\u003cdiv class=\"bikes\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"bikes__head\"\u003e\n      \u003cspan class=\"eyebrow\"\u003eThe Fleet\u003c\/span\u003e\n      \u003ch2 class=\"h-display h-section\"\u003eA bike for every size.\u003c\/h2\u003e\n      \u003cp\u003eThis camp's fleet: \u003cstrong\u003e2 × 50cc\u003c\/strong\u003e, \u003cstrong\u003e2 × 110cc\u003c\/strong\u003e, \u003cstrong\u003e2 × 125cc big-wheel\u003c\/strong\u003e, \u003cstrong\u003e2 × 230cc\u003c\/strong\u003e, \u003cstrong\u003e1 × 300cc\u003c\/strong\u003e. Helmet, gloves, and goggles included. You bring closed-toe shoes, long pants, and a jersey or long-sleeve shirt. Got your own bike? \u003cstrong\u003eSave $300.\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"bike-grid\"\u003e\n      \u003cdiv class=\"bike-card\"\u003e\n        \u003cdiv class=\"bike-card__cc\"\u003e50cc\u003csmall\u003e2 available\u003c\/small\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"bike-card__range\"\u003e3'–4'3\"\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bike-card\"\u003e\n        \u003cdiv class=\"bike-card__cc\"\u003e110cc\u003csmall\u003e2 available\u003c\/small\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"bike-card__range\"\u003e4'3\"–4'11\"\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bike-card\"\u003e\n        \u003cdiv class=\"bike-card__cc\"\u003e125F\u003csmall\u003e2 available · big-wheel\u003c\/small\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"bike-card__range\"\u003e4'11\"–5'7\"\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bike-card\"\u003e\n        \u003cdiv class=\"bike-card__cc\"\u003e230cc\u003csmall\u003e2 available\u003c\/small\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"bike-card__range\"\u003e5'7\"+ · ≤ 200 lbs\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bike-card\"\u003e\n        \u003cdiv class=\"bike-card__cc\"\u003e300cc\u003csmall\u003e1 available\u003c\/small\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"bike-card__range\"\u003e5'9\"+ · ≤ 300 lbs\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bike-card\"\u003e\n        \u003cdiv class=\"bike-card__cc\"\u003eBYO\u003csmall\u003eSave $300\u003c\/small\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"bike-card__range\"\u003eBring your own — any size, safe + ridable\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"photo-band\" style=\"background-image: url('https:\/\/cdn.shopify.com\/s\/files\/1\/0328\/4582\/4139\/files\/summer-camp-bike-fleet.jpg?v=1780255638');\" role=\"img\" aria-label=\"The MX Factory's dirt bike fleet\"\u003e\u003c\/div\u003e\n    \u003cp class=\"photo-caption\"\u003eA small slice of the fleet. We have more.\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 7) INCLUDED --\u003e\n\u003cdiv class=\"included\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"included__head\"\u003e\n      \u003cspan class=\"eyebrow\"\u003eEasy to show up\u003c\/span\u003e\n      \u003ch2 class=\"h-display h-section\"\u003eShow up.\u003cbr\u003eWe've got the rest.\u003c\/h2\u003e\n      \u003cp\u003eYou bring lunch and the right clothes. We bring the bike, the gear, and the coaches.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"included__grid\"\u003e\n      \u003cdiv class=\"inc-card\"\u003e\n        \u003cdiv class=\"inc-card__icon\"\u003e1\u003c\/div\u003e\n        \u003ch4\u003eThe Bike\u003c\/h4\u003e\n        \u003cp\u003e2 × 50cc, 2 × 110cc, 2 × 125cc big-wheel, 2 × 230cc, 1 × 300cc. Sized at drop-off. Bring your own bike and save $300.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"inc-card\"\u003e\n        \u003cdiv class=\"inc-card__icon\"\u003e2\u003c\/div\u003e\n        \u003ch4\u003eSafety Gear\u003c\/h4\u003e\n        \u003cp\u003eWe provide:\u003c\/p\u003e\n        \u003cul\u003e\n          \u003cli\u003eHelmet\u003c\/li\u003e\n          \u003cli\u003eGloves\u003c\/li\u003e\n          \u003cli\u003eGoggles\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"inc-card\"\u003e\n        \u003cdiv class=\"inc-card__icon\"\u003e3\u003c\/div\u003e\n        \u003ch4\u003eYou Bring\u003c\/h4\u003e\n        \u003cul\u003e\n          \u003cli\u003eLunch + water bottle\u003c\/li\u003e\n          \u003cli\u003eClosed-toe shoes (boots if you've got 'em)\u003c\/li\u003e\n          \u003cli\u003eLong pants\u003c\/li\u003e\n          \u003cli\u003eJersey or long-sleeve shirt\u003c\/li\u003e\n          \u003cli\u003eSunscreen\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"section-cta\"\u003e\n      \u003ca href=\"#\" class=\"btn btn-red\"\u003eReserve My Kid's Spot  →\u003c\/a\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 8) WHERE + WHEN --\u003e\n\u003cdiv class=\"where\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cspan class=\"eyebrow\"\u003eWhere \u0026amp; When\u003c\/span\u003e\n    \u003ch2 class=\"h-display h-section\" style=\"margin-top: 18px;\"\u003eLockhart, TX.\u003cbr\u003eThree days. One sweet summer.\u003c\/h2\u003e\n\n    \u003cdiv class=\"where__schedule\"\u003e\n      \u003cdiv class=\"where__day\"\u003e\n        \u003cspan class=\"where__day-label\"\u003eDay 1\u003c\/span\u003e\n        \u003cspan class=\"where__day-date\"\u003eTue Jun 23\u003c\/span\u003e\n        \u003cspan class=\"where__day-hours\"\u003e9am — 2pm\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"where__day\"\u003e\n        \u003cspan class=\"where__day-label\"\u003eDay 2\u003c\/span\u003e\n        \u003cspan class=\"where__day-date\"\u003eWed Jun 24\u003c\/span\u003e\n        \u003cspan class=\"where__day-hours\"\u003e9am — 2pm\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"where__day\"\u003e\n        \u003cspan class=\"where__day-label\"\u003eDay 3\u003c\/span\u003e\n        \u003cspan class=\"where__day-date\"\u003eThu Jun 25\u003c\/span\u003e\n        \u003cspan class=\"where__day-hours\"\u003e9am — 2pm\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cp class=\"where__addr\"\u003e\n      \u003cstrong\u003e1930 Barth Road, Lockhart, TX 78644.\u003c\/strong\u003e\u003cbr\u003e\n      9am drop-off · 2pm pickup · 30 minutes south of Austin.\u003cbr\u003e\n      Easy drive from Downtown Austin, Round Rock, Cedar Park, San Antonio, and the Hill Country.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 9) FAQ --\u003e\n\u003cdiv class=\"faq\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cdiv class=\"faq__head\"\u003e\n      \u003cspan class=\"eyebrow\"\u003eBefore You Book\u003c\/span\u003e\n      \u003ch2 class=\"h-display h-section\"\u003eCommon questions.\u003c\/h2\u003e\n    \u003c\/div\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eMy kid has never been on a dirt bike. Is this too much?\u003c\/summary\u003e\n      \u003cp\u003eNo — this is built for total beginners. We teach kids who've never touched a dirt bike before. By Day 3 they're riding loops on their own.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003cdetails\u003e\n      \u003csummary\u003eWhat's the age range really?\u003c\/summary\u003e\n      \u003cp\u003eAny kid who fits a 50cc through 300cc bike — roughly ages 6-17. We size them up at drop-off. If they can ride a bicycle without training wheels, they can learn here.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003cdetails\u003e\n      \u003csummary\u003eCan my kid bring their own bike?\u003c\/summary\u003e\n      \u003cp\u003eYes. Pick \"BYO Bike\" at checkout and save $100. Just make sure the bike is in safe, ridable condition.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003cdetails\u003e\n      \u003csummary\u003eWhat's your cancellation policy?\u003c\/summary\u003e\n      \u003cp\u003e\u003cstrong\u003eInside 48 hours or no-show:\u003c\/strong\u003e spot is forfeit. No refund, no credit.\u003cbr\u003e\n      \u003cstrong\u003eInside 30 days of camp (but more than 48 hours):\u003c\/strong\u003e our guaranteed spot protection kicks in — we'll credit your tuition toward a future camp or a weekend one-off session.\u003cbr\u003e\n      \u003cstrong\u003eMore than 30 days out:\u003c\/strong\u003e full refund or free reschedule.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003cdetails\u003e\n      \u003csummary\u003eCan parents watch?\u003c\/summary\u003e\n      \u003cp\u003eYes. We have a covered, shaded area. Bring a chair, bring water. By Day 3 you'll want to be there to see how much they've changed.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003cdetails\u003e\n      \u003csummary\u003eWhat should they bring?\u003c\/summary\u003e\n      \u003cp\u003eClosed-toe shoes (boots if you have them), long pants, a jersey or long-sleeve shirt, a water bottle, and sunscreen. We provide the bike, helmet, gloves, and goggles.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003cdetails\u003e\n      \u003csummary\u003eWhat happens if it rains?\u003c\/summary\u003e\n      \u003cp\u003eWe ride in light rain — great way to learn traction. Heavy rain or lightning shuts the camp down. Per our weather policy, you'd be moved to the next available camp at no extra charge.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003cdetails\u003e\n      \u003csummary\u003eHow is this different from your other clinics?\u003c\/summary\u003e\n      \u003cp\u003eIt's three consecutive days with the same crew and coaches, capped at 8 riders. Most clinics are one-and-done. Three days back-to-back is how skills actually stick.\u003c\/p\u003e\n    \u003c\/details\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 10) FINAL CTA --\u003e\n\u003cdiv class=\"final\"\u003e\n  \u003cdiv class=\"container\"\u003e\n    \u003cspan class=\"eyebrow\"\u003eLimited bike rentals available\u003c\/span\u003e\n    \u003ch2\u003ePack snacks.\u003cbr\u003eSend it.\u003c\/h2\u003e\n    \u003cp class=\"final__bubble\"\u003eBest summer ever.\u003c\/p\u003e\n    \u003cdiv class=\"final__price\"\u003e\n      From $897 · Save $100 · ends Jun 13\u003cbr\u003e\n      \u003csmall\u003eJun 23-25, 2026 · Small group, limited bike rentals\u003c\/small\u003e\n    \u003c\/div\u003e\n    \u003ca href=\"#\" class=\"btn btn-yellow\"\u003eReserve My Kid's Spot  →\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 11) STICKY BOTTOM CTA --\u003e\n\u003cdiv class=\"sticky-cta\" role=\"region\" aria-label=\"Quick book\"\u003e\n  \u003cdiv class=\"sticky-cta__price\"\u003e\n    \u003cspan class=\"amount\"\u003eFrom $897 \u003cspan class=\"sticky-cta__strike\"\u003e$997\u003c\/span\u003e\u003c\/span\u003e\n    \u003cspan class=\"meta\"\u003eEarly bird · ends Jun 13 · Save $100\u003c\/span\u003e\n  \u003c\/div\u003e\n  \u003ca href=\"#\" class=\"sticky-cta__btn\"\u003eReserve  →\u003c\/a\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  \/* (1) Wire all \"Reserve\" CTAs to scroll to Shopify's product form. *\/\n  (function () {\n    function findProductForm() {\n      return document.querySelector('form[action*=\"\/cart\/add\"], form[action=\"\/cart\/add\"], [data-product-form], .product-single, .product__form, #ProductSection');\n    }\n    document.addEventListener('click', function (e) {\n      var a = e.target.closest('.ltr-camp a[href=\"#\"], .ltr-camp .eb-banner__cta');\n      if (!a) return;\n      e.preventDefault();\n      var target = findProductForm();\n      if (target) {\n        target.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      } else {\n        window.scrollTo({ top: 0, behavior: 'smooth' });\n      }\n    });\n  })();\n\n  \/* (2) Toggle the early-bird sticky header on scroll. Hidden when at top\n     of page (so Shopify nav has room), slides down once user starts scrolling. *\/\n  (function () {\n    var banner = document.querySelector('.ltr-camp .eb-banner');\n    if (!banner) return;\n    var threshold = 250;\n    function update() {\n      if (window.scrollY \u003e threshold) banner.classList.add('is-shown');\n      else banner.classList.remove('is-shown');\n    }\n    window.addEventListener('scroll', update, { passive: true });\n    update();\n  })();\n\n  \/* (3) Scarcity badges on Shopify's native variant picker. Fetches live\n     inventory for this product from \/products\/{handle}.js, then walks every\n     \u003cinput value=\"...\"\u003e (radio buttons) and \u003coption value=\"...\"\u003e (selects)\n     to attach an \"X left\" badge next to the matching variant option. *\/\n  (function () {\n    var path = location.pathname.split('?')[0].replace(\/\\\/$\/, '');\n    if (!path.includes('\/products\/')) return;\n\n    function badgeFor(qty, isByo) {\n      var span = document.createElement('span');\n      span.className = 'mxf-stock-badge';\n      if (isByo) {\n        span.classList.add('mxf-stock-badge--byo');\n        span.textContent = 'You bring · save $300';\n      } else if (qty \u003c= 0) {\n        return null; \/* Shopify handles sold-out natively *\/\n      } else if (qty === 1) {\n        span.classList.add('mxf-stock-badge--last');\n        span.textContent = 'Last one!';\n      } else if (qty \u003c= 2) {\n        span.classList.add('mxf-stock-badge--low');\n        span.textContent = 'Only ' + qty + ' left';\n      } else if (qty \u003c= 4) {\n        span.classList.add('mxf-stock-badge--mid');\n        span.textContent = qty + ' available';\n      } else {\n        return null;\n      }\n      return span;\n    }\n\n    function decorate(byOption) {\n      Object.keys(byOption).forEach(function (val) {\n        var totalQty = byOption[val].qty;\n        var isByo = \/bringing.*own|byo|own bike\/i.test(val);\n        \/* Match exact value on radio inputs OR \u003coption\u003e elements *\/\n        var nodes = document.querySelectorAll(\n          'input[type=\"radio\"][value=\"' + CSS.escape(val) + '\"], option[value=\"' + CSS.escape(val) + '\"]'\n        );\n        nodes.forEach(function (el) {\n          \/* Don't double-decorate *\/\n          var anchor = el.closest('label') || el;\n          if (anchor.querySelector('.mxf-stock-badge')) return;\n          var badge = badgeFor(totalQty, isByo);\n          if (!badge) return;\n          if (el.tagName === 'OPTION') {\n            \/* Selects can't render HTML inside \u003coption\u003e; mutate text instead *\/\n            if (el.textContent.indexOf('·') === -1) {\n              el.textContent = el.textContent + ' · ' + badge.textContent;\n            }\n          } else {\n            anchor.appendChild(badge);\n          }\n        });\n      });\n    }\n\n    fetch(path + '.js', { credentials: 'same-origin' })\n      .then(function (r) { return r.ok ? r.json() : null; })\n      .then(function (p) {\n        if (!p || !p.variants) return;\n        \/* Aggregate inventory by Bike Rental option value *\/\n        var byOption = {};\n        p.variants.forEach(function (v) {\n          var bike = v.option2 || (v.options \u0026\u0026 v.options[1]);\n          if (!bike) return;\n          if (!byOption[bike]) byOption[bike] = { qty: 0 };\n          byOption[bike].qty += (typeof v.inventory_quantity === 'number' ? v.inventory_quantity : 0);\n        });\n        decorate(byOption);\n        \/* Re-decorate if the theme swaps the form (e.g. on variant change) *\/\n        var attempts = 0;\n        var retry = setInterval(function () {\n          decorate(byOption);\n          if (++attempts \u003e 6) clearInterval(retry);\n        }, 700);\n      })\n      .catch(function () { \/* offline \/ fetch error — skip silently *\/ });\n  })();\n\u003c\/script\u003e\n\n\u003c\/section\u003e\n","brand":"The MX Factory","offers":[{"title":"Jun 23-25, 2026 \/ 50 Size: 3'-4'3\"","offer_id":48161834238106,"sku":null,"price":1197.0,"currency_code":"USD","in_stock":true},{"title":"Jun 23-25, 2026 \/ 110 Size: 4'3\"-4'11\"","offer_id":48161834270874,"sku":null,"price":1197.0,"currency_code":"USD","in_stock":true},{"title":"Jun 23-25, 2026 \/ 125 Size: 4'11\"-5'7\"","offer_id":48161834303642,"sku":null,"price":1197.0,"currency_code":"USD","in_stock":true},{"title":"Jun 23-25, 2026 \/ 230 Size: 5'7\"+ up to 200 lbs","offer_id":48161834336410,"sku":null,"price":1297.0,"currency_code":"USD","in_stock":true},{"title":"Jun 23-25, 2026 \/ 300 Size: 5'9\"+ up to 300 lbs","offer_id":48161834369178,"sku":null,"price":1297.0,"currency_code":"USD","in_stock":true},{"title":"Jun 23-25, 2026 \/ Bringing Own Bike (No Rental Bike)","offer_id":48161834401946,"sku":null,"price":897.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0328\/4582\/4139\/files\/summer-camp-jun-23-25.png?v=1780254625","url":"https:\/\/themxfactory.com\/products\/3-day-summer-camp","provider":"The MX Factory","version":"1.0","type":"link"}