*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
–black: #111112;
–white: #ffffff;
–off-white: #f7f7f5;
–light-gray: #efefed;
–accent: #e8ff47;
–accent-dark: #c8df00;
–blue: #2a6ef5;
–text-dark: #111112;
–text-mid: #444450;
–text-muted: #7a7a8a;
–border: rgba(0,0,0,0.08);
–font-display: ‘Bebas Neue’, sans-serif;
–font-body: ‘DM Sans’, sans-serif;
}
html { scroll-behavior: smooth; }
body {
background: var(–white);
color: var(–text-dark);
font-family: var(–font-body);
font-size: 16px;
line-height: 1.6;
overflow-x: hidden;
}
/* ── SECTION BASE ── */
section {
padding: 6rem 5%;
width: 100%;
max-width: 100%;
box-sizing: border-box;
}
.section-label {
font-size: 0.72rem; font-weight: 700; letter-spacing: 0.18em;
text-transform: uppercase; color: var(–blue);
margin-bottom: 1rem; display: flex; align-items: center; gap: 0.6rem;
}
.section-label::after { content: ”; flex: 1; max-width: 40px; height: 1px; background: var(–blue); }
.section-title {
font-family: var(–font-display);
font-size: clamp(2.4rem, 5vw, 4.5rem);
letter-spacing: 0.03em; text-transform: uppercase;
line-height: 0.95; margin-bottom: 1rem;
color: var(–text-dark);
}
.section-sub {
color: var(–text-muted); font-size: 1rem;
max-width: 560px; font-weight: 300; line-height: 1.7;
}
/* ── HERO ── */
.hero {
display: flex; flex-direction: column; justify-content: center;
padding: 5rem 5% 5rem;
min-height: auto;
position: relative;
overflow: hidden;
background: var(–white);
border-bottom: 1px solid var(–border);
}
.hero-bg-text {
position: absolute; top: 50%; left: -2%;
transform: translateY(-50%);
font-family: var(–font-display);
font-size: clamp(8rem, 22vw, 22rem);
color: rgba(0,0,0,0.03);
white-space: nowrap;
pointer-events: none;
letter-spacing: 0.04em;
user-select: none;
}
.hero-tag {
display: inline-flex; align-items: center; gap: 0.5rem;
font-size: 0.75rem; font-weight: 700; letter-spacing: 0.14em;
text-transform: uppercase; color: var(–blue);
margin-bottom: 1.5rem;
}
.hero-tag::before {
content: ”; width: 24px; height: 2px; background: var(–blue);
}
.hero h1 {
font-family: var(–font-display);
font-size: clamp(3.5rem, 9vw, 8.5rem);
line-height: 0.92;
letter-spacing: 0.02em;
text-transform: uppercase;
margin-bottom: 1.5rem;
max-width: 900px;
color: var(–text-dark);
}
.hero h1 span { color: var(–blue); display: block; }
.hero h1 em {
font-style: normal;
color: var(–black);
display: block;
}
.hero-sub {
font-size: 1.1rem; color: var(–text-muted);
max-width: 520px; margin-bottom: 2.5rem; font-weight: 300;
line-height: 1.7;
}
.hero-actions { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; }
.btn-primary {
background: var(–black); color: var(–accent);
padding: 0.85rem 2rem; border-radius: 2px;
font-weight: 700; font-size: 0.9rem;
letter-spacing: 0.1em; text-transform: uppercase;
text-decoration: none; transition: background 0.2s, transform 0.15s;
display: inline-block;
}
.btn-primary:hover { background: #222; transform: translateY(-2px); }
.btn-ghost {
border: 1px solid rgba(0,0,0,0.2); color: var(–text-dark);
padding: 0.85rem 2rem; border-radius: 2px;
font-weight: 500; font-size: 0.9rem;
letter-spacing: 0.08em; text-transform: uppercase;
text-decoration: none; transition: border-color 0.2s, color 0.2s;
}
.btn-ghost:hover { border-color: var(–blue); color: var(–blue); }
.certs-row {
display: flex; gap: 1.5rem; flex-wrap: wrap;
margin-top: 3rem; padding-top: 2.5rem;
border-top: 1px solid var(–border);
}
.cert-badge {
display: flex; align-items: center; gap: 0.6rem;
background: var(–off-white);
border: 1px solid var(–border);
border-radius: 2px;
padding: 0.5rem 1rem;
font-size: 0.78rem; font-weight: 700;
letter-spacing: 0.1em; text-transform: uppercase;
color: var(–blue);
}
.cert-badge span { color: var(–text-muted); font-weight: 400; }
/* ── FOCUS AREAS ── */
.focus-section { background: var(–off-white); }
.focus-header {
display: flex; justify-content: space-between; align-items: flex-end;
flex-wrap: wrap; gap: 2rem; margin-bottom: 3.5rem;
}
.focus-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1px;
background: var(–border);
border: 1px solid var(–border);
}
.focus-card {
background: var(–white);
padding: 2rem 1.8rem;
transition: background 0.25s, box-shadow 0.25s;
position: relative; overflow: hidden;
}
.focus-card:hover { background: #fafaf8; box-shadow: inset 0 -3px 0 var(–blue); }
.focus-card:hover .focus-number { color: var(–blue); }
.focus-number {
font-family: var(–font-display);
font-size: 3.5rem; color: rgba(0,0,0,0.06);
line-height: 1; margin-bottom: 0.5rem;
transition: color 0.25s;
}
.focus-icon { font-size: 1.6rem; margin-bottom: 1rem; }
.focus-name {
font-family: var(–font-display);
font-size: 1.4rem; letter-spacing: 0.04em;
text-transform: uppercase; margin-bottom: 0.6rem;
color: var(–text-dark);
}
.focus-desc { font-size: 0.88rem; color: var(–text-muted); line-height: 1.65; }
/* ── SERVICES ── */
.services-section { background: var(–white); }
.services-layout {
display: grid; grid-template-columns: 1fr 1fr; gap: 4rem;
align-items: start;
}
.services-list { margin-top: 2.5rem; }
.service-item {
display: flex; align-items: flex-start; gap: 1.2rem;
padding: 1.2rem 0;
border-bottom: 1px solid var(–border);
}
.service-item:first-child { border-top: 1px solid var(–border); }
.service-check {
width: 22px; height: 22px; flex-shrink: 0;
background: var(–black); color: var(–accent);
border-radius: 50%; display: flex; align-items: center;
justify-content: center; font-size: 0.75rem; font-weight: 700;
margin-top: 0.1rem;
}
.service-name { font-weight: 600; font-size: 1rem; margin-bottom: 0.25rem; color: var(–text-dark); }
.service-desc { font-size: 0.85rem; color: var(–text-muted); line-height: 1.55; }
/* ── PRICING ── */
.pricing-card {
background: var(–black);
border-radius: 4px; padding: 2.5rem 2rem;
position: sticky; top: 6rem;
color: var(–white);
}
.pricing-eyebrow {
font-size: 0.72rem; font-weight: 700; letter-spacing: 0.15em;
text-transform: uppercase; color: var(–accent); margin-bottom: 1rem;
}
.pricing-amount {
font-family: var(–font-display);
font-size: 5rem; line-height: 1; color: var(–white);
margin-bottom: 0.2rem;
}
.pricing-period { font-size: 0.9rem; color: rgba(255,255,255,0.4); margin-bottom: 2rem; }
.pricing-includes {
font-size: 0.8rem; font-weight: 700; letter-spacing: 0.12em;
text-transform: uppercase; color: rgba(255,255,255,0.4);
margin-bottom: 1rem;
}
.pricing-feature {
display: flex; align-items: center; gap: 0.75rem;
padding: 0.55rem 0; font-size: 0.9rem; color: var(–white);
border-bottom: 1px solid rgba(255,255,255,0.06);
}
.pricing-feature:last-of-type { border-bottom: none; margin-bottom: 1.5rem; }
.pricing-dot {
width: 6px; height: 6px; border-radius: 50%;
background: var(–accent); flex-shrink: 0;
}
.referral-box {
background: rgba(232,255,71,0.08);
border: 1px dashed rgba(232,255,71,0.3);
border-radius: 3px; padding: 1rem 1.2rem;
font-size: 0.85rem; margin-top: 1.5rem;
line-height: 1.55; color: rgba(255,255,255,0.75);
}
.referral-box strong { color: var(–accent); }
/* ── SOCIAL PROOF ── */
.proof-section { background: var(–off-white); }
.results-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 1px;
background: var(–border);
border: 1px solid var(–border);
margin: 3rem 0;
}
.result-stat { background: var(–white); padding: 2rem 1.5rem; text-align: center; }
.stat-word {
font-family: var(–font-display);
font-size: clamp(1.4rem, 2.5vw, 2rem);
letter-spacing: 0.04em;
text-transform: uppercase;
line-height: 1.1;
color: var(–text-dark);
}
.stat-word.accent { color: var(–blue); }
.testimonials-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem; margin-top: 3rem;
}
.testimonial-card {
background: var(–white);
border: 1px solid var(–border);
border-radius: 4px; padding: 1.8rem;
position: relative;
}
.testimonial-card::before {
content: ‘”‘;
font-family: var(–font-display);
font-size: 5rem; color: var(–blue);
opacity: 0.15; position: absolute;
top: 0.5rem; left: 1.2rem;
line-height: 1;
}
.testimonial-text {
font-size: 0.95rem; color: var(–text-mid);
line-height: 1.65; margin-bottom: 1.2rem;
padding-top: 1.5rem;
}
.testimonial-name { font-weight: 700; font-size: 0.9rem; color: var(–text-dark); }
.testimonial-result {
font-size: 0.78rem; color: var(–blue);
font-weight: 700; letter-spacing: 0.08em;
text-transform: uppercase; margin-top: 0.2rem;
}
.transformation-strip {
background: var(–white);
border: 1px solid var(–border);
border-radius: 4px; padding: 2rem;
margin-top: 3rem;
display: flex; align-items: center; gap: 2rem; flex-wrap: wrap;
}
.transform-tag {
background: rgba(42,110,245,0.07);
border: 1px solid rgba(42,110,245,0.2);
color: var(–blue);
padding: 0.4rem 1rem; border-radius: 2px;
font-size: 0.78rem; font-weight: 700;
letter-spacing: 0.1em; text-transform: uppercase;
white-space: nowrap;
}
.transform-label { font-size: 0.82rem; color: var(–text-muted); flex: 1; min-width: 200px; }
/* ── COMMUNICATION ── */
.comm-section { background: var(–white); }
.comm-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 1.5rem; margin-top: 3rem;
}
.comm-card {
border: 1px solid var(–border);
border-radius: 4px; padding: 1.8rem 1.5rem;
background: var(–off-white);
transition: border-color 0.25s, transform 0.25s, box-shadow 0.25s;
}
.comm-card:hover {
border-color: var(–blue);
transform: translateY(-4px);
box-shadow: 0 8px 24px rgba(42,110,245,0.08);
}
.comm-icon { font-size: 1.8rem; margin-bottom: 1rem; display: block; }
.comm-name {
font-family: var(–font-display);
font-size: 1.3rem; letter-spacing: 0.04em;
text-transform: uppercase; margin-bottom: 0.5rem;
color: var(–text-dark);
}
.comm-desc { font-size: 0.83rem; color: var(–text-muted); line-height: 1.55; }
/* ── CTA ── */
.cta-section {
background: var(–black);
text-align: center; padding: 6rem 5%;
position: relative; overflow: hidden;
}
.cta-bg {
position: absolute; inset: 0;
font-family: var(–font-display);
font-size: 18vw; color: rgba(255,255,255,0.03);
display: flex; align-items: center; justify-content: center;
pointer-events: none; user-select: none; line-height: 1;
}
.cta-section .section-label { color: var(–accent); justify-content: center; }
.cta-section .section-label::after { background: var(–accent); }
.cta-section h2 {
font-family: var(–font-display);
font-size: clamp(2.5rem, 6vw, 5.5rem);
text-transform: uppercase; color: var(–white);
line-height: 0.93; margin-bottom: 1.2rem;
position: relative;
}
.cta-section p {
color: rgba(255,255,255,0.5); font-size: 1.05rem;
max-width: 480px; margin: 0 auto 2.5rem;
font-weight: 300; position: relative;
}
.btn-dark {
background: var(–accent); color: var(–black);
padding: 1rem 2.5rem; border-radius: 2px;
font-weight: 700; font-size: 0.9rem;
letter-spacing: 0.1em; text-transform: uppercase;
text-decoration: none; display: inline-block;
transition: background 0.2s, transform 0.15s;
position: relative;
}
.btn-dark:hover { background: var(–accent-dark); transform: translateY(-2px); }
/* ── FOOTER ── */
footer {
background: var(–off-white);
border-top: 1px solid var(–border);
padding: 2.5rem 5%;
display: flex; justify-content: space-between; align-items: center;
flex-wrap: wrap; gap: 1rem;
font-size: 0.82rem; color: var(–text-muted);
}
footer a { color: var(–blue); text-decoration: none; }
/* ── FULL WIDTH OVERRIDES ── */
.site-content,
.entry-content,
.wp-block-group,
#content,
#primary,
.site-main,
main {
max-width: 100% !important;
width: 100% !important;
padding: 0 !important;
margin: 0 !important;
}
/* ── SCROLL REVEAL ── */
.reveal {
opacity: 0;
transform: translateY(28px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
.reveal.visible {
opacity: 1;
transform: translateY(0);
}
/* ── MOBILE NAV ── */
.mobile-menu-btn {
display: none;
background: none; border: none; cursor: pointer;
color: var(–text-dark); font-size: 1.4rem; padding: 0.3rem;
}
.mobile-nav {
display: none;
position: fixed; top: 0; left: 0; right: 0; bottom: 0;
background: var(–white);
z-index: 99;
flex-direction: column; align-items: center; justify-content: center;
gap: 2.5rem;
}
.mobile-nav.open { display: flex; }
.mobile-nav a {
font-family: var(–font-display);
font-size: 2.5rem; letter-spacing: 0.06em;
text-transform: uppercase; color: var(–text-dark);
text-decoration: none; transition: color 0.2s;
}
.mobile-nav a:hover { color: var(–blue); }
.mobile-nav-close {
position: absolute; top: 1.5rem; right: 5%;
background: none; border: none; cursor: pointer;
color: var(–text-dark); font-size: 1.6rem;
}
/* ── RESPONSIVE ── */
@media (max-width: 768px) {
.mobile-menu-btn { display: block; }
.services-layout { grid-template-columns: 1fr; }
.pricing-card { position: static; }
.focus-grid { grid-template-columns: 1fr; }
}
/* ─────────────────────────────────────────
fitness-trainer.js
Scroll reveal, mobile nav, active nav link
───────────────────────────────────────── */
document.addEventListener(‘DOMContentLoaded’, function () {
// ── SCROLL REVEAL ──────────────────────────────────────────────
// Adds .reveal to eligible elements, then watches them with
// IntersectionObserver and adds .visible when they enter view.
const revealSelectors = [
‘.focus-card’,
‘.service-item’,
‘.testimonial-card’,
‘.comm-card’,
‘.result-stat’,
‘.cert-badge’,
‘.transform-tag’,
‘.section-title’,
‘.section-label’,
‘.section-sub’,
‘.pricing-card’,
‘.hero-tag’,
‘.hero h1’,
‘.hero-sub’,
‘.hero-actions’,
‘.certs-row’,
];
const revealElements = document.querySelectorAll(revealSelectors.join(‘, ‘));
revealElements.forEach(function (el) {
el.classList.add(‘reveal’);
});
const observer = new IntersectionObserver(
function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
entry.target.classList.add(‘visible’);
observer.unobserve(entry.target);
}
});
},
{ threshold: 0.12, rootMargin: ‘0px 0px -40px 0px’ }
);
revealElements.forEach(function (el) {
observer.observe(el);
});
// Stagger children inside grids for a cascade effect
const staggerParents = document.querySelectorAll(
‘.focus-grid, .comm-grid, .testimonials-grid, .results-grid, .certs-row’
);
staggerParents.forEach(function (parent) {
const children = parent.querySelectorAll(‘.reveal’);
children.forEach(function (child, i) {
child.style.transitionDelay = (i * 80) + ‘ms’;
});
});
// ── MOBILE NAV ─────────────────────────────────────────────────
// Injects a hamburger button into the nav and a full-screen
// overlay menu for mobile viewports.
var nav = document.querySelector(‘nav’);
// Create hamburger button
var menuBtn = document.createElement(‘button’);
menuBtn.className = ‘mobile-menu-btn’;
menuBtn.setAttribute(‘aria-label’, ‘Open menu’);
menuBtn.innerHTML = ‘☰’; // ☰
nav.appendChild(menuBtn);
// Create mobile overlay
var mobileNav = document.createElement(‘div’);
mobileNav.className = ‘mobile-nav’;
mobileNav.innerHTML = `
✕
Home
Focus
Services
Results
Pricing
Start Today
`;
document.body.appendChild(mobileNav);
var closeBtn = mobileNav.querySelector(‘.mobile-nav-close’);
menuBtn.addEventListener(‘click’, function () {
mobileNav.classList.add(‘open’);
document.body.style.overflow = ‘hidden’;
});
closeBtn.addEventListener(‘click’, function () {
mobileNav.classList.remove(‘open’);
document.body.style.overflow = ”;
});
// Close menu when a link is clicked
mobileNav.querySelectorAll(‘a’).forEach(function (link) {
link.addEventListener(‘click’, function () {
mobileNav.classList.remove(‘open’);
document.body.style.overflow = ”;
});
});
// ── ACTIVE NAV LINK ────────────────────────────────────────────
// Highlights the nav link matching the section currently in view.
var sections = document.querySelectorAll(‘section[id], nav + section[id]’);
var navLinks = document.querySelectorAll(‘.nav-links a’);
var sectionObserver = new IntersectionObserver(
function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
var id = entry.target.getAttribute(‘id’);
navLinks.forEach(function (link) {
link.style.color = ”;
link.style.opacity = ‘0.75’;
if (link.getAttribute(‘href’) === ‘#’ + id) {
link.style.color = ‘var(–accent)’;
link.style.opacity = ‘1’;
}
});
}
});
},
{ threshold: 0.35 }
);
sections.forEach(function (section) {
sectionObserver.observe(section);
});
// ── NAV SCROLL SHADOW ──────────────────────────────────────────
// Adds a slightly more opaque background to the nav once the
// user scrolls past the fold.
window.addEventListener(‘scroll’, function () {
if (window.scrollY > 80) {
nav.style.background = ‘rgba(10,10,10,0.98)’;
} else {
nav.style.background = ‘rgba(10,10,10,0.92)’;
}
}, { passive: true });
// ── SMOOTH CTA PULSE ──────────────────────────────────────────
// Briefly pulses the CTA button to draw attention after 4s.
setTimeout(function () {
var ctaBtn = document.querySelector(‘.nav-cta’);
if (!ctaBtn) return;
ctaBtn.style.transition = ‘background 0.2s, transform 0.15s, box-shadow 0.3s’;
ctaBtn.style.boxShadow = ‘0 0 0 6px rgba(232,255,71,0.2)’;
setTimeout(function () {
ctaBtn.style.boxShadow = ‘0 0 0 0px rgba(232,255,71,0)’;
}, 800);
}, 4000);
});
Online Fitness Trainer | Custom Coaching & Workout Plans
LIFT
NASM · ACE · ISSA Certified
Train Smarter.
Get Results.
Online personal training built around progressive overload, fat loss, muscle gain, and real accountability — all from anywhere in the world.
NASM Certified Personal Trainer
ACE Fitness Certified
ISSA Certified Specialist
01
🏋️
Workout Routines
Structured programs tailored to your goals, equipment, and fitness level. No guesswork.
02
📈
Progressive Overload
Scientific load progression built into every cycle so you never plateau.
03
🔥
Fat Loss & Muscle Gain
Body recomposition strategies that actually work — sustainable and effective.
04
🛡️
Recovery & Injury Prevention
Smart programming that keeps you training hard without breaking down.
05
🥗
Nutrition Basics
Macro targets and meal guidance that support your training — simple and practical.
06
🎯
Form Coaching
Video form checks and cues to maximize efficiency and stay injury-free.
Everything Included
What You Get Daily
✓
Custom Workout Plans
Fully personalized programs designed around your goals, schedule, and available equipment.
✓
Weekly Check-Ins
Structured weekly reviews to assess progress and adjust your program in real time.
✓
Meal Guidance & Nutrition Targets
Practical macro targets and food guidance — no complicated diets, just results.
✓
Weekly Accountability
Regular touchpoints to keep you on track and motivated throughout the week.
✓
Messaging Support
Direct coach access — ask questions, get answers, stay supported between sessions.
✓
Form Checks via Video
Send video clips and receive detailed coaching feedback on your technique.
✓
Habit & Progress Tracking
Structured tracking so you can see exactly how far you’ve come — week by week.
Monthly Investment
$250
per month
Everything included:
Weekly check-ins & adjustments
Nutrition targets & meal guidance
Habit & progress tracking
Start Now →
💰 Refer 2 friends — earn $25.
When you refer two people who sign up, you get $25 back — as a thank-you for spreading the word.
Real Results
Clients Who Showed Up
These aren’t before-and-after photos. These are life changes. Here’s what clients say happens when they commit.
I’ve tried a dozen programs over the years. This is the first time I’ve actually stuck to it for longer than 6 weeks. The weekly check-ins and messaging support made all the difference.
Jordan M.
-22 lbs in 3 months
The form check videos changed everything for my lifts. I was compensating wrong for years and didn’t even know it. My back pain is basically gone now.
Marcus T.
Pain-free + 40 lb deadlift PR
I never thought nutrition coaching would be this simple. No crazy diets — just clear targets I could actually hit. I finally feel like I understand how to eat for my goals.
Priya K.
Body recomp — stronger & leaner
How We Coach
Coaches Who Actually Show Up
⚡
Responsive
Fast replies. You won’t be waiting days for an answer when you have a question.
🔥
Motivating
Accountability without judgment. Encouragement when you need it most.
📋
Organized
Everything is structured — your program, your check-ins, your goals. No chaos.
📅
Consistent
Weekly rhythm that keeps you progressing without burning out.
🧠
Simplifying Fitness
No confusion, no information overload. Just clear direction and action.
GO
Ready to Start?
Your Best Shape Starts Now
Join clients who stopped guessing and started seeing real results. $250/month. Full support. Real coaching.
Apply for Coaching →
http://script.js