site updates

This commit is contained in:
2026-06-08 13:07:53 +02:00
parent bc9c4e5dd2
commit 22cfedf453
169 changed files with 7784 additions and 1361 deletions
+10
View File
@@ -0,0 +1,10 @@
{
"permissions": {
"allow": [
"Skill(orchestrate)",
"WebSearch",
"Skill(hop-search)",
"WebFetch(domain:localhost)"
]
}
}
Regular → Executable
+1
View File
@@ -10,6 +10,7 @@ deployment:
- /bin/cp -r src/terms-of-service "$DEPLOYPATH" - /bin/cp -r src/terms-of-service "$DEPLOYPATH"
- /bin/cp -r src/api "$DEPLOYPATH" - /bin/cp -r src/api "$DEPLOYPATH"
- /bin/cp src/index.html "$DEPLOYPATH" - /bin/cp src/index.html "$DEPLOYPATH"
- /bin/cp .htaccess "$DEPLOYPATH"
- /bin/cp src/404.html "$DEPLOYPATH" - /bin/cp src/404.html "$DEPLOYPATH"
- /bin/cp src/500.html "$DEPLOYPATH" - /bin/cp src/500.html "$DEPLOYPATH"
- /bin/cp src/robots.txt "$DEPLOYPATH" - /bin/cp src/robots.txt "$DEPLOYPATH"
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Executable
+22
View File
@@ -0,0 +1,22 @@
Options -Indexes
RewriteEngine On
# Deny sensitive files
<FilesMatch "\.(py|yml|yaml|md|log|sh|env|conf|dockerfile)$">
Order allow,deny
Deny from all
</FilesMatch>
# Deny tools directory
RewriteRule ^tools/ - [F,L]
# Route homepage and all non-asset, non-api requests through PHP router
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/assets/
RewriteCond %{REQUEST_URI} !^/api/
RewriteRule ^$ /api/router.php?type=coming_soon [QSA,L]
RewriteRule ^(.*)$ /api/router.php?type=coming_soon [QSA,L]
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
+38
View File
@@ -0,0 +1,38 @@
import urllib.request, json, base64, sys
import re
raw = open('/mnt/local-home/sirdrez-backup/.git-credentials').read().strip()
m = re.search(r'https://(\w+):(\S+)@gitea\.arisingmedia\.us', raw)
user, creds = m.group(1), m.group(2)
BASE = 'https://gitea.arisingmedia.us/api/v1/repos/AM/bigbreath.co'
import base64 as _b64
HDR = {
'Authorization': 'Basic ' + _b64.b64encode(f'{user}:{creds}'.encode()).decode(),
'Content-Type': 'application/json',
'User-Agent': 'git/2.43.0',
'Accept': 'application/json',
}
ROOT = '/mnt/local-home/sirdrez-backup/arisingmedia-websites/bigbreath.co'
def get_sha(path):
req = urllib.request.Request(f'{BASE}/contents/{path}', headers={'Authorization': 'token ' + creds})
try:
return json.load(urllib.request.urlopen(req, timeout=8))['sha']
except urllib.error.HTTPError as e:
if e.code == 404:
return None
raise
def put_file(path, local_path, msg):
sha = get_sha(path)
method = 'PUT' if sha else 'POST'
payload = {'message': msg, 'content': base64.b64encode(open(local_path, 'rb').read()).decode()}
if sha:
payload['sha'] = sha
req = urllib.request.Request(f'{BASE}/contents/{path}', data=json.dumps(payload).encode(), headers=HDR, method=method)
d = json.load(urllib.request.urlopen(req, timeout=10))
print(f'OK [{method}]: {path} | {d["content"]["sha"][:8]}')
put_file('.htaccess', f'{ROOT}/.htaccess', 'Route / to coming_soon via PHP router')
put_file('.cpanel.yml', f'{ROOT}/.cpanel.yml', 'Deploy .htaccess to public_html')
put_file('infra/nginx.conf', f'{ROOT}/infra/nginx.conf', 'Route / and catch-all to coming_soon')
Regular → Executable
View File
Regular → Executable
View File
+178
View File
@@ -0,0 +1,178 @@
# Big Breath — Brand Identity Parameters
*Compiled from brand clarity session — May 22, 2026*
---
## Core Purpose
Big Breath exists to ignite the inner fire in every person who walks into the room — and then teach them how to tame it. The practice uses the breath as the vehicle to activate, heal, and empower. This is not meditation. This is not whisper-soft wellness. Big Breath is a full-body, full-voice, full-presence experience that creates lasting transformation.
**The transformation arc:** Ember → Flame → Mastery.
You arrive disconnected. You leave on fire — and in control of it.
---
## Brand Essence
**What people feel when they encounter the brand — before they read a word:**
> Shared profound experience. Life-changing. Healing. Empowered. Vulnerable but strong. Eyes get bigger. Heart opens. Comfort is created.
**The central tension that makes Big Breath unique:**
Vulnerable but strong. Power and openness held at the same time. Most brands pick one. Big Breath holds both.
**What makes Big Breath unlike any other breathwork brand:**
Big Joe does not use a microphone. He does not whisper. He is not a meditation guide. His loud, booming voice ignites people. The inspiration comes from stoking the inner fire — the ember within — with each breath. Then, paradoxically, learning to tame that fire to create balance.
Nobody else in breathwork has this.
---
## Brand Energy & Elements
The brand lives at the intersection of all four classical elements — but **fire is the spark that starts everything.**
| Element | Role in the Brand |
|---------|-------------------|
| **Fire** | Ignition. Inner flame. Big Joe's voice. Activation. The ember that breathwork stokes. |
| **Earth** | Rootedness. Stability. The mountain. The tree. Grounded, ancient, immovable. |
| **Air** | The breath itself. The vehicle. Flow. Release. |
| **Water** | The letting go. The taming. The ocean rhythm. Balance after the fire. |
**Energy descriptors:**
- Activating before it's calming
- Grounded and powerful
- Ancient and wise
- Masculine without aggression
- Safe but not soft
- Inspiring and igniting
**What Big Breath is NOT:**
- Soft-spoken or whispery
- Meditative in the passive sense
- Woo-woo without substance
- Corporate wellness box-checking
- Cold, clinical, or sterile
- Gentle wellness-brand energy
---
## Visual Direction
### The Symbol
A **circle that breathes.** Inspired by sunlight — ancient, universal, radiant. The circle represents the breath cycle: inhale and exhale completing a loop, no beginning and no end. The sun represents the inner fire — the thing Big Joe ignites in every room.
**The mark should feel:**
- Sturdy. Safe. Inspiring. Masculine.
- Strong enough to hold fire. Open enough to breathe.
- Ancient and universal — every culture on earth has revered the sun.
- Not decorative. Not boho. Not crystal-shop energy.
- Geometric and stripped back — something that lives on a black hat and feels like it belongs there.
**Symbol concept:** A sun mark — but with weight. Not ornate rays. Something geometric, intentional, and bold. A circle with internal geometry that suggests warmth, expansion, and breath. The kind of mark that looks like it was carved rather than designed.
**The tree reference:** A tree is the secondary visual metaphor — rooted deep, unmovable trunk, but branches that move and leaves that breathe. Supports the symbol without replacing it. Useful for supporting visual language and content.
### Color Palette
The palette is warm, earthy, and wearable. It bridges ancient desert energy with modern professional environments. It should feel like Arizona at sunrise or an Arabian morning — not a wellness app or a tech brand.
| Role | Color | Feel |
|------|-------|------|
| **Primary** | Warm white / soft cream | Spirit. New life. Comfort. The guide. What Big Joe wears to lead. |
| **Fire accent** | Terracotta / rust / amber | Ignition. The inner flame. Earth and sun. |
| **Neutral ground** | Sand / warm oat | The desert floor. Wearable anywhere, any time of day. |
| **Earth & life** | Desert Sage `#7A8C4E` | The living earth. Growth within stillness. Olive and ancient. Pairs with cream and clay. |
| **Depth (occasional)** | Muted warm charcoal or clay | Weight without coldness. Never pure black. |
**Color philosophy:**
White is the lead — not sterile, not cult-leader white, but the white of new life and spirit. It creates comfort. It's what Big Joe instinctively reaches for before a workshop. Terracotta and amber are the fire underneath.
**Note on blue:** Big Joe has historically been drawn to blue, but his lived experience — what he wears, how he guides, what he described — pulls strongly warm and earthy. Blue may live as a supporting element tied to the water/release energy, but it should not lead the palette.
### Typography
**The wordmark — "Big Breath" — should feel:**
- Like something that moves — not rigid, not perfect, not designed by committee
- Rooted and alive. Carved by hand. Worn in, not polished up.
- Ancient without being a history lesson
- Warm enough to put on a hat. Strong enough to open a room
- Timeless in the way a good knife is timeless — not because it's fancy, but because it works
**Direction:** A serif with heat in it. Not a font that went to business school — one that's been to the desert, sat in a ceremony, climbed something. It has a past. It moves the way breath moves: intentional, unhurried, full. Not a script. Not a slab. Not a clean tech sans. Something between a classical typeface and a mark made by a human who meant it.
**The gut test:** Put it on a hat. Show it to someone who's never heard of Big Breath. Does it make them lean in? Does it feel like it belongs to something real? That's the standard.
---
## Logo System
### Primary Mark
Sun symbol + "Big Breath" wordmark. The symbol leads — it should be strong enough to stand alone.
### Symbol Only
The sun/circle mark used on its own for embroidery, embossing, hat logos, apparel tags, wax seals, and brand moments where the full wordmark isn't needed.
### Wordmark Only
"Big Breath" typeset for contexts where the symbol isn't appropriate — documents, decks, email signatures.
### Application Priority
1. **Apparel & merch:** Symbol-forward. The mark on a hat. Embroidered. Simple. Warm colorway on cream or oat base.
2. **Corporate/enterprise:** Wordmark-led. Clean. Professional serif. Paired with restrained color use.
3. **Digital (IG, YouTube, website):** Full lockup where space allows. Symbol alone for profile images and icons.
---
## Ideal Customer Profiles (ICP)
### ICP 1 — The High Performer in Transition
Former athlete, executive, or high-achiever going through identity shift. Career change, burnout, divorce, loss of purpose. Driven, accomplished, but running on empty and searching for something real. Would never walk into a traditional wellness studio. Big Joe's NFL background gives him direct access to this person.
### ICP 2 — The Corporate Wellness Seeker
Mid-to-senior level professional. Stressed, overthinking, disconnected from their body. Their company is investing in wellness — they're the participant or the decision-maker. They need something that bridges science and practice. Big Breath's professional presentation and proven methodology earns their trust.
### ICP 3 — The Conscious Man
Men in their 30s50s who are open to inner work but need a guide who doesn't feel soft or preachy. They want strength, not spirituality as an aesthetic. Big Joe's masculine presence and physical presence (former NFL, big voice, no microphone) gives them permission to go deep.
### ICP 4 — The Workshop Regular
Someone who has attended one session and keeps coming back. They buy the merch. They wear it to brunch, to the gym, to the airport. The apparel should feel like it belongs in all of those places — warm, wearable, a quiet signal to others who know.
### ICP 5 — The Global Wellness Traveler
Internationally minded, spiritually curious, values lived experience over credentials. They've done retreats in Bali, meditated in India, done temazcal in Mexico. Big Joe's global footprint (Bhutan, Saudi Arabia, Japan, India, Oman) speaks to them. They recognize the depth behind the brand.
---
## Voice & Tone
**Always:** Grounded. Direct. Human. Slightly poetic. Ancient wisdom spoken in plain language. Speaks to one person, not a crowd.
**In workshops and guided sessions:** Bold. Loud. Igniting. No microphone needed. The voice is part of the practice.
**In corporate and enterprise contexts:** Confident, professional, evidence-backed. Bridges science and embodied practice without losing the fire underneath.
**Never:** Whispery. Passive. Woo-woo without substance. Generic motivational. Preachy. Soft-selling.
**The voice test:** Would Big Joe say this standing across from someone who needs help — using his full voice, in a room with no microphone? If yes, publish it.
---
## Brand Positioning Statement
Big Breath is the breathwork practice for people who want to be ignited, not lulled. Guided by a former NFL athlete with 15,000+ sessions across the globe, Big Breath uses the breath to activate the inner fire — and then teaches you to master it. This is not meditation. This is transformation.
---
## Open Decisions (To Be Finalized with Designer)
- [ ] Final sun mark geometry — number of rays, weight, proportion
- [ ] Serif typeface selection — shortlist 35 options for review
- [ ] Exact terracotta/amber HEX values — test across digital and print
- [ ] Secondary palette confirmation — role of blue (if any)
- [ ] Logo lockup proportions — symbol to wordmark ratio
- [ ] Apparel colorway priority — cream base with terracotta mark, or oat base with warm charcoal?
- [ ] Corporate version — does the wordmark stand alone, or does a refined version of the symbol travel with it?
---
*Document version 1.0 — compiled from brand clarity session with Big Joe, May 22, 2026.*
*Next step: Brief a brand/logo designer using this document as the creative foundation.*
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
+194
View File
@@ -0,0 +1,194 @@
import json, sys, time
from playwright.sync_api import sync_playwright, TimeoutError as PWTimeout
SITES = {
"aman": "https://www.aman.com/",
"habitas": "https://www.ourhabitas.com/",
"sixsenses": "https://www.sixsenses.com/en/",
}
OUT_DIR = "/home/sirdrez/arisingmedia-websites/bigbreath.co/.planning/ref-styles"
COOKIE_SELECTORS = [
"button[id*='accept']", "button[class*='accept']",
"button[id*='cookie']", "button[class*='cookie']",
"[aria-label*='Accept']", "[data-testid*='accept']",
"button:has-text('Accept')", "button:has-text('Accept all')",
"button:has-text('I agree')", "button:has-text('Got it')",
"button:has-text('OK')", "button:has-text('Continue')",
]
EXTRACT_JS = """
() => {
function cs(el) {
if (!el) return null;
const s = window.getComputedStyle(el);
return {
fontFamily: s.fontFamily,
fontSize: s.fontSize,
fontWeight: s.fontWeight,
lineHeight: s.lineHeight,
letterSpacing: s.letterSpacing,
textTransform: s.textTransform,
color: s.color,
backgroundColor: s.backgroundColor,
paddingTop: s.paddingTop,
paddingBottom: s.paddingBottom,
paddingLeft: s.paddingLeft,
paddingRight: s.paddingRight,
marginTop: s.marginTop,
marginBottom: s.marginBottom,
minHeight: s.minHeight,
height: s.height,
maxWidth: s.maxWidth,
gap: s.gap,
borderRadius: s.borderRadius,
};
}
// Body
const body = cs(document.body);
// Hero: first large section or header or div with high z-index background
const heroSelectors = [
'section:first-of-type', 'header', '.hero', '#hero',
'[class*="hero"]', '[class*="banner"]', '[class*="intro"]',
'main > section:first-child', 'main > div:first-child',
];
let heroEl = null;
for (const sel of heroSelectors) {
heroEl = document.querySelector(sel);
if (heroEl && heroEl.getBoundingClientRect().height > 200) break;
}
const hero = cs(heroEl);
// Hero H1
const h1El = heroEl ? heroEl.querySelector('h1') || document.querySelector('h1') : document.querySelector('h1');
const h1 = cs(h1El);
// Eyebrow/sublabel in hero
const eyebrowSelectors = [
'[class*="eyebrow"]', '[class*="label"]', '[class*="sub"]',
'[class*="overline"]', '[class*="caption"]', 'p:first-child',
];
let eyebrowEl = null;
if (heroEl) {
for (const sel of eyebrowSelectors) {
eyebrowEl = heroEl.querySelector(sel);
if (eyebrowEl) break;
}
}
const eyebrow = eyebrowEl ? {
fontSize: window.getComputedStyle(eyebrowEl).fontSize,
letterSpacing: window.getComputedStyle(eyebrowEl).letterSpacing,
textTransform: window.getComputedStyle(eyebrowEl).textTransform,
} : null;
// Sections after hero (first 3)
const allSections = Array.from(document.querySelectorAll('main section, main > div, [class*="section"]'));
const contentSections = allSections.slice(1, 4).map(el => ({
paddingTop: window.getComputedStyle(el).paddingTop,
paddingBottom: window.getComputedStyle(el).paddingBottom,
maxWidthInner: (() => {
const inner = el.querySelector('div, .container, .inner, .wrapper');
return inner ? window.getComputedStyle(inner).maxWidth : null;
})(),
gap: window.getComputedStyle(el).gap,
}));
// Buttons / CTAs
const btnEl = document.querySelector('a[class*="btn"], button[class*="btn"], a[class*="cta"], button[class*="cta"], a[class*="button"], .button, [role="button"]');
const btn = btnEl ? {
paddingTop: window.getComputedStyle(btnEl).paddingTop,
paddingBottom: window.getComputedStyle(btnEl).paddingBottom,
paddingLeft: window.getComputedStyle(btnEl).paddingLeft,
paddingRight: window.getComputedStyle(btnEl).paddingRight,
fontSize: window.getComputedStyle(btnEl).fontSize,
letterSpacing: window.getComputedStyle(btnEl).letterSpacing,
textTransform: window.getComputedStyle(btnEl).textTransform,
borderRadius: window.getComputedStyle(btnEl).borderRadius,
} : null;
// Nav
const navEl = document.querySelector('nav, header nav, [role="navigation"]');
const nav = navEl ? {
height: window.getComputedStyle(navEl).height,
paddingTop: window.getComputedStyle(navEl).paddingTop,
paddingBottom: window.getComputedStyle(navEl).paddingBottom,
} : null;
const navLinkEl = navEl ? navEl.querySelector('a') : null;
const navLink = navLinkEl ? {
fontSize: window.getComputedStyle(navLinkEl).fontSize,
letterSpacing: window.getComputedStyle(navLinkEl).letterSpacing,
textTransform: window.getComputedStyle(navLinkEl).textTransform,
} : null;
// H2
const h2El = document.querySelector('h2');
const h2 = h2El ? {
fontSize: window.getComputedStyle(h2El).fontSize,
lineHeight: window.getComputedStyle(h2El).lineHeight,
marginTop: window.getComputedStyle(h2El).marginTop,
marginBottom: window.getComputedStyle(h2El).marginBottom,
} : null;
// Body paragraph in content
const pEl = document.querySelector('main p, section p, article p');
const para = pEl ? {
fontSize: window.getComputedStyle(pEl).fontSize,
lineHeight: window.getComputedStyle(pEl).lineHeight,
} : null;
return { body, hero, h1, eyebrow, contentSections, btn, nav, navLink, h2, para };
}
"""
def extract(page, url, key):
data = {}
try:
page.goto(url, wait_until="domcontentloaded", timeout=45000)
time.sleep(3)
# Dismiss cookie banners
for sel in COOKIE_SELECTORS:
try:
el = page.locator(sel).first
if el.is_visible(timeout=1000):
el.click(timeout=2000)
time.sleep(1)
break
except Exception:
pass
data = page.evaluate(EXTRACT_JS)
except PWTimeout:
print(f" TIMEOUT for {key}, saving partial")
try:
data = page.evaluate(EXTRACT_JS)
except Exception:
data = {"error": "timeout_and_eval_failed"}
except Exception as e:
data = {"error": str(e)}
out = f"{OUT_DIR}/{key}.json"
with open(out, "w") as f:
json.dump(data, f, indent=2)
print(f" Wrote {out}")
return data
def main():
with sync_playwright() as p:
browser = p.firefox.launch(headless=True)
ctx = browser.new_context(viewport={"width": 1440, "height": 900})
page = ctx.new_page()
results = {}
for key, url in SITES.items():
print(f"Extracting {key}: {url}")
results[key] = extract(page, url, key)
browser.close()
print("Done. Files:")
for key in SITES:
print(f" {OUT_DIR}/{key}.json")
if __name__ == "__main__":
main()
+276
View File
@@ -0,0 +1,276 @@
INSERT COMPANY NAME
Big
Breath
A Transformative
Wellness Experience
Take a
Big Breath is a transformative breathwork practice intended to enhance
mental and physical well-being through immersive experiences. Led by Big
Joe, the sessions combine ancient techniques with modern wellness
strategies.
Our mission is to create to build a global community of breathwork
practitioners by creating relatable and powerful breathing techniques for
athletes and everyday people to experience peak performance and profound
inner growth.
Big Breath
Big Joe is a certified breathwork guide with a
unique background as a former NFL player and
extensive experience guiding over 10,000
individuals worldwide.
After four years in the NFL, a severe ankle injury
altered his lifes course and sparked a new path
towards a life committed to helping other heal.
Meet Big Joe the heart and
soul behind
Big Breath
In 2018 Big Joe began his spiritual journey learning
and practicing meditation & breathwork daily.
Over the last 7 years he has expanded his
education earning multiple certifications.
His mission is to empower individuals to unlock
their fullest potential by offering dynamic,
approachable breathwork for athletes,
professionals, and wellness seekers to cultivate
resilience, clarity, and peace.
The Science
Behind Breathwork
1
Stress Reduction
Controlled breathing increases oxygen flow to the brain,
enhancing cognitive functions such as focus and
memory and lowering cortisol levels.
2
Enhanced Recovery &
Physical Performance
Breathwork is a valuable tool for recovery of the body. By
improving oxygen delivery to tissues and promoting
relaxation, breathwork aids in muscle recovery and
reduces fatigue.
3
Improved Focus & Cognition
Numerous studies have shown that specific breathing
techniques can enhance endurance, improve circulation
and boost neuroplasticity & cognitive performance.
4
Emotional Regulation
Breathwork has been linked to reduced symptoms of
anxiety and depression. By promoting relaxation and
emotional balance, regular practice can lead to
improved emotional well-being.
Benefits for your company
Build Team Unity
Improve mental health & focus
Boost Well-being
Enhance creativity & efficiency
Increase Productivity
Foster collaboration & trust
Benefits for your team
Build Team Unity
Improve mental health & focus
Boost Well-being
Enhance creativity & efficiency
Increase Productivity
Foster collaboration & trust
The Big Breath Experience
01
02
03
Led by
Former NFL
Player
Global Impact
&
Accessibility
Authentic,
Practical
Guidance
Unique expertise and relatability to
high performers, athletes and those
seeking peak performance and
holistic health.
In-person events around the world,
app membership, and digital
resources for building a reliable
wellness routine.
Built from personal transformation,
offering practical, grounded mastery
of the breath that is accessible to a
wide audience across cultures and
beliefs, and languages.
Ancient Practice
Collaborating with
top [teams
/companies
/brands] to impact
over 10,000 lives
worldwide.
Modern
Philosophy
Excellent
Facilitator
A win for
your team!
Who we've worked with
Global Impact
International reach
Cultural range
Consistent quality
breathwork experience
🇺🇸 🇲🇽
🇨🇦 🇳🇱
🇫🇷 🇮🇩
🇨🇷🇸🇦
🇦🇪
🇧🇱
🇨🇴
🇬🇷
🇯🇵🇸🇪
🇹🇷
Countries Guided
• USA
• Mexico
• Canada
• Netherlands
• France
• Indonesia
• Costa Rica
• Saudi Arabia
• UAE
• Saint Barthélemy
• Colombia
• Greece
• Japan
• Sweden
• Turkey
May 2025
North America
Big Breath Tour
Honoring mental
health awareness
month
Big Breath Offerings - ATH
Build Team Unity
The Big Breath experience is a unique opportunity for your
team to strengthen their bond and become more united and
inspired to work together
Physical Recovery
The proven science shows that breathwork increases
the body's effectiveness in recovery and ability to
perform
Leadership Development
Invest in your teams' ability to lead on and off the field with
greater ability to manage stress and handle responsibility
Big Breath Offerings - Corp
Build Team Unity
The Big Breath experience is a unique opportunity for your
team to strengthen their bond and become more united and
inspired to work togehter
Mindset Development
Enhance creativity & efficiency and empower your
employees to grow their mental stability resulting in better
job performance
Increase Productivity
A happy, healthy fulfilled human is typically a more productive
one. Allow your employees to experience this wellbeing and
watch how that positively impacts your business goals.
Big Breath Offerings - BRAND
Genuine Wellness Lifestyle
The Big Breath audience is a unique opportunity for your
brand to strengthen exposure to an audience that knows,
likes, and trusts Big Joe's taste and style
Boost Reach
Social metrics
• followers
• engagements
• Reels views
Have the Best
one of our brand taglines is "have the best day ever" - allow your
brand to be associated with positivity and open heartedness
Client Testimonials
“Life-changing experience!”
“Big Breath transformed our team.”
“A must-have for our company
wellness.”
Emily Johnson
Mark Thompson
Julia Rodriguez
Take a big breath
& have the best day ever
Let's work
(and breathe)
together
Email
hello@bigbreath.co
Website
www.bigbreath.co
Follow along
National Big Breath tour - May 2025
@bigjoe
+267
View File
@@ -0,0 +1,267 @@
--- SLIDE 1 ---
[NOTES] SLIDE 1
Clean - thoughts on adding a subtitle ?
Ex:Performance - Presence - Recovery
--- SLIDE 2 ---
Big Breath is a breath work and nervous system regulation platform created by Big Joe. It was made to target stress and anxiety where it stems from.
what is Big Breath?
Guided Classes & Programing
Joe has spent years developing breath work techniques that are rooted in ancient practices. This immersive practice is intended to enhance
mental and physical well-being through immersive experiences.
Keynotes & speaking engagements
Insightful speaking experiences centered on breath, clarity, and modern leadership.
Live experiences & retreats
Immersive breath journeys designed for reset and transformation
[NOTES] SLIDE 2
🔥
--- SLIDE 3 ---
mission
Joes mission is to create a community around breath work that is relatable and easy to access. From athletes to entrepreneurs, these techniques allow people to focus in on themselves to achieve peak performance and inner growth.
Big Joe is a former NFL athlete and certified breath work guide. Now he dedicates his life to integrating breath work into our daily life via Big Breath.
After a career-altering ankle injury ended his professional football career, breath work became the foundation for healing, clarity, and long-term resilience. Now 8 years into it; hes ready to share.
[NOTES] SLIDE 3
Heart rate regulation? 💡
This translates directly into better performance, recovery, and decision-making…
Find news article 🎯
HBR
--- SLIDE 4 ---
Between work & life many people are over-stressed with their nervous system on the fritz.
Breath is the fastest, most accessible way to regulate the nervous system. Through intentional breathing:
Cortisol levels decrease
Focus and cognitive performance improve
Emotional regulation strengthens
Recovery accelerates
why breath work?
manage
stress
lower blood pressure
clearer mind & flow
[NOTES] SLIDE 4
🔥
Maybe more bold - pop off the page for the heavy hitting bullet points
Small!
--- SLIDE 5 ---
77% of people regularly experience physical symptoms caused by stress.
80% of doctor visits are estimated to be stress-related — American Institute of Stress
70% of employees say workplace stress affects their performance and productivity
Just 510 minutes of intentional breath work can measurably lower cortisol and heart rate
stress & productivity
Stress isn't a mindset problem. It's a physiological one. And breath is the only tool that directly accesses the autonomic nervous system — no prescription, no equipment, no waiting room.
--- SLIDE 6 ---
90-120 minute+ sessions
Full System Reboot" — emotional release and transformational experiences
30 Minute Sessions
"Nervous System Reset" — quick sessions during lunch breaks for corporate audiences
60-minute sessions
"Empowerment Session" — focused, dynamic, tailored for deeper engagement
Guided Classes and Programming
Each experience is tailored, intentional, and deeply human.
[NOTES] SLIDE 7 & 8
30, 60, 90, 120 minute offerings
--- SLIDE 7 ---
The Nervous System Reset is a 30-minute guided breath work session built for busy people — corporate teams, conference attendees, or anyone who needs to break the stress cycle mid-day and return to their afternoon clear, calm, and dialed in.
No experience necessary. No equipment. Just breath.
30 Minutes / Nervous System Reset
Most people spend their lunch break scrolling. This one, they'll spend breathing.
What Happens Big Joe leads the group through a targeted breathing sequence designed to rapidly down-regulate the nervous system, lower cortisol, and shift the body out of fight-or-flight within minutes.
What They Walk Away With A tool they can use every single day. Immediate calm. Renewed focus. The felt experience of what breath can do.
--- SLIDE 8 ---
The Empowerment Session is a fully tailored breath work experience — guided by Big Joe and shaped around your audience's specific needs, whether that's stress, performance, team cohesion, or mental clarity. This is where breath work stops being a concept and starts becoming a practice.
60 Minutes / Empowerment Session
One hour is enough time to go somewhere real.
The Format A guided journey through activation, regulation, and integration — with space for reflection and real-time coaching from Joe. Every session is adapted to the energy of the room.
The Outcome Participants leave with measurably reduced stress, improved emotional regulation, and a practical breathwork toolkit they can apply immediately — at work, in training, or at home.
--- SLIDE 9 ---
Some things can't be rushed. The Full System Reboot is an immersive, multi-phase breath work journey designed to take participants deep — past the surface tension, past the noise — and into genuine emotional release, clarity, and reset.
Rooted in ancient breath work traditions and guided by Big Joe's 8+ years of practice, this experience creates lasting change in the body and mind.
90120 Minutes / Full System Reboot
More than a session. It's a transformation.
The Journey Participants move through a full arc: opening and activation, deep-dive breathwork, somatic release, and a guided integration close. Joe holds the space with presence, music, and real-time guidance throughout.
What Makes It Different This is not a workshop. It's an experience. The extended format allows the nervous system to fully complete its cycle — not just temporarily calm, but genuinely reset at a cellular level.
--- SLIDE 10 ---
The difference between good athletes and great ones often comes down to what happens between the reps — recovery, focus, and the ability to reset under pressure. Big Joe brings the same discipline he built on the NFL field into every performance session, giving athletes a tool that works as hard as they do.
Athlete Performance & Recovery
Train hard. Breathe harder.
Pre-Performance Activation
Targeted breathing protocols to sharpen focus, quiet the noise, and prime the nervous system for peak output. Whether it's game day, a big lift, or a high-stakes moment — breath gets you there ready.
Recovery & Restoration After the body performs, it needs to reset. Joe's recovery sessions accelerate the shift from sympathetic overdrive back to parasympathetic rest — reducing inflammation response, improving sleep quality, and speeding the return to baseline.
--- SLIDE 11 ---
Keynotes & Speaking
Asking questions, interactivity between Joe and the audience. More access
Guided Workshop
Immersive breath journeys designed for reset and transformation
Real-world Application
Practices to take home from the experience to make a substantial change on your experience
Live Experiences & Retreats
the goal:
--- SLIDE 12 ---
Every Big Breath workshop is built with intention from the ground up. Joe doesn't show up with a generic script — he shows up with a read of the room, a deep understanding of your audience, and a practice refined over 8 years of global facilitation.
Guided Professional Workshop
Structure that creates space.
Facilitated by Big Joe An NFL athlete turned certified breathwork guide — Joe's presence commands attention and creates safety. Participants trust him immediately.
Structured for Results Each workshop follows a proven arc: grounding, activation, deep practice, integration. The format is consistent. The experience is never the same twice.
--- SLIDE 13 ---
Big Joe doesn't deliver keynotes — he delivers experiences. Drawing on his journey from professional athlete to breath work guide, Joe brings a rare combination of credibility, vulnerability, and practical wisdom to every stage he steps on. Audiences don't just leave inspired — they leave with tools they can use the same day.
Keynotes & Speaking Engagements
A story worth hearing.
The Story From the NFL to nervous system regulation — Joe's personal journey is the kind that stops a room. Authentic, relatable, and rooted in real transformation, his story connects across industries, backgrounds, and roles.
The Message Every keynote weaves together performance psychology, breathwork science, and lived experience into a talk that is equal parts inspiring and actionable. Joe speaks to what modern leaders, teams, and humans are actually dealing with — stress, burnout, identity, and the search for clarity.
[NOTES] SLIDE 6
Keynote + inspiring life story and extraordinary life experiences
Live exp + masterful workshops
Corporate + real success and elite execution/resilience/ achievement potential?
--- SLIDE 14 ---
The goal of every Big Breath experience is to leave people with something they actually use. Not just a feeling — a tool. Every session closes with concrete techniques participants can return to at their desk, in the locker room, before a big meeting, or in the middle of a hard day.
Real-World Application
The practice doesn't end when the session does.
Daily Nervous System Regulation Simple 35 minute protocols for managing stress, improving focus, and resetting between demands. Usable anywhere, anytime.
Emotional Resilience Practices for processing tension, releasing stored stress, and building the kind of nervous system stability that compounds over time.
--- SLIDE 15 ---
Brand Partnerships
Brands We Have Worked With
Big Joe has partnered with some of the world's most recognized brands — including Visa, UCLA, the NFL, Pepsi, Airbnb, and more — to deliver breath work programming that is anything but standard. These aren't generic wellness add-ons. Every corporate engagement is custom-built around the company's culture, goals, and people — whether that's a high-performance session for an executive leadership team, a nervous system reset for a company-wide event, or an immersive breath work experience woven into a brand activation.
We partner with brands to create intentional, immersive wellness experiences that deepen connection and elevate perception.
[NOTES] I really believe in the value of LOGOS!!!!!
Or aka TRUSTED BY…
Visa
Ritz Carlton
Pendry
NFL
NFLPA
NBL
Olympics
UCLA
LA Chargers
MVP
Kachava
Entrepreneurs Organization
THIS ADDS CREDIBILITY 🙏🏽
--- SLIDE 16 ---
Brand Partnerships
Brands We Have Worked With
Big Joe has partnered with some of the world's most recognized brands — including Visa, UCLA, the NFL, Pepsi, Airbnb, and more — to deliver breath work programming that is anything but standard. These aren't generic wellness add-ons. Every corporate engagement is custom-built around the company's culture, goals, and people — whether that's a high-performance session for an executive leadership team, a nervous system reset for a company-wide event, or an immersive breath work experience woven into a brand activation.
We partner with brands to create intentional, immersive wellness experiences that deepen connection and elevate perception.
--- SLIDE 17 ---
8+ Years
experience working and training in breath work practices
meet Big Joe
Big Joe is a former NFL athlete, certified breath work guide, and yoga teacher with over 8 years of experience guiding breath and embodied practices worldwide.
After a career-altering ankle injury ended his professional football career, breath work became the foundation for healing, clarity, and long-term resilience transforming personal recovery into a global mission.
over 15,000 people
helped via Joes breath work techniques and practices
[NOTES] SLIDE 9
Love this 🤍
Does repeat slide 4 ( maybe a little different language)
--- SLIDE 18 ---
Big Joe spent years training his body to perform at the highest level — competing in the NFL, where mental toughness and physical peak performance aren't optional, they're the baseline.
Joes inspiring story
The Breaking Point When injury ended his career, Joe turned inward. Breathwork became his daily practice — not as a wellness trend, but as survival. A way to process pain, rebuild identity, and find clarity in the unknown.
The Athlete A professional NFL career built on discipline, performance, and pushing through. Joe knew how to grind. What he didn't know was how to heal.
The Mission 8 years later, Joe is a certified breathwork guide and yoga teacher who has helped over 15,000 people regulate their nervous systems, reclaim their focus, and feel like themselves again. The tool that saved him is now the tool he shares with the world.
--- SLIDE 19 ---
“Life-changing experience!”
— Emily Johnson
“As soon as I walked into the room, I felt protected and safe. That authenticity is rare.”
— Brian Godfrey, Los Angeles
“I didnt know the power of my breath. The experience was life-changing.”
— Maria Muleta, Colombia
Impact & Testimonials
“Big Breath transformed our team”
— Mark Thompson
[NOTES] SLIDE 10
Need to get you some more testimonials
Larger text!
Only REALLY BIG STATEMENTS!!!!!
--- SLIDE 20 ---
Lets Work Together
Every collaboration is custom-designed to meet your people, brand, or audience exactly where they are.
Email : Hello@bigbreath.co
Website : Bigbreath.co
--- SLIDE 21 ---
How We Elevate Brands
We partner with brands to create intentional, immersive wellness experiences that deepen connection and elevate perception.
• Curated, on-brand experiences tailored to your audience
• Emotional engagement that strengthens brand loyalty
• High-touch facilitation designed for impact and memorability
• Seamless integration into retreats, activations, and corporate programming
• Measurable shifts in presence, performance, and connection
We dont just host sessions — we create moments people carry with them.
--- SLIDE 22 ---
Relatable “Something”
Intentional breath-led integrations
for cultural and brand moments
Extraordinary experiences
From professional NFL
Inspiring Life Story
High-performance nervous system
regulation for modern teams
Keynotes & Speaking Engagements
Each experience is tailored, intentional, and deeply human.
--- SLIDE 23 ---
Big Joes experience & reach
8+ years of professional facilitation
Certified in breathwork and yoga
15,000+ individuals guided worldwide
--- SLIDE 24 ---
Brand activations & collaborations
Intentional breath-led integrations
for cultural and brand moments
Keynotes & speaking engagements
Insightful speaking experiences centered on breath, clarity, and modern leadership.
Luxury hotel & hospitality programming
Curated breath experiences designed to elevate guest wellness and enrich premium hospitality offerings.
Live experiences & retreats
Immersive breath journeys designed for reset and transformation
Athlete performance & recovery sessions
Targeted breath protocols to sharpen focus, accelerate recovery, and optimize performance under pressure.
Corporate & leadership wellness
High-performance nervous system
regulation for modern teams
ways to work with Joe
Each experience is tailored, intentional, and deeply human.
--- SLIDE 25 ---
Chronic stress and nervous system overload.
Mental fatigue and emotional burnout.
Disconnection from their bodies and breath.
Where do people need the most help?
--- SLIDE 26 ---
Led by a former professional athlete
Trauma-aware, grounded facilitation
Science-backed, results-driven practices
Accessible to beginners and high performers alike
No language, cultural, or physical barriers
This work meets people where they are—and elevates them.
Big Joe is a former NFL athlete, certified breathwork guide, and yoga teacher with over 8 years of experience guiding breath and embodied practices worldwide.
After a career-altering ankle injury ended his professional football career, breathwork became the foundation for healing, clarity, and long-term resilience—transforming personal recovery into a global mission.
what makes Big Breath different
+285
View File
@@ -0,0 +1,285 @@
what is Big Breath?
Big Breath is a breath work and nervous system regulation
platform created by Big Joe. It was made to target stress and
anxiety where it stems from.
Guided Classes & Programing
Joe has spent years developing breath work techniques that are rooted in ancient
practices. This immersive practice is intended to enhance
mental and physical well-being through immersive experiences.
Keynotes & speaking
engagements
Live experiences &
retreats
Insightful speaking experiences
centered on breath, clarity, and
modern leadership.
Immersive breath journeys designed for
reset and transformation
Joes mission is to create a
community around breath work that
is relatable and easy to access. From
athletes to entrepreneurs, these
techniques allow people to focus in
on themselves to achieve peak
performance and inner growth.
Big Joe is a former NFL athlete and
certified breath work guide. Now he
dedicates his life to integrating
breath work into our daily life via Big
Breath.
After a career-altering ankle injury
ended his professional football
career, breath work became the
foundation for healing, clarity, and
long-term resilience. Now 8 years
into it; hes ready to share.
mission
why breath work?
Between work & life many people are over-stressed with
their nervous system on the fritz.
Breath is the fastest, most accessible way to regulate the
nervous system. Through intentional breathing:
Cortisol levels decrease
Focus and cognitive performance improve
Emotional regulation strengthens
Recovery accelerates
manage
stress
lower blood
pressure
clearer mind &
flow
Guided Classes and Programming
Targeted Breathing
Consistent Practice
1 on 1 coaching
Immersive breath journeys designed for
High-performance nervous system
Intentional breath-led integrations
reset and transformation
regulation for modern teams
for cultural and brand moments
Each experience is tailored, intentional, and deeply human.
Keynotes & Speaking Engagements
Extraordinary life
experiences
Inspiring Life Story
Relatable
“Something”
Immersive breath journeys designed for
High-performance nervous system
Intentional breath-led integrations
reset and transformation
regulation for modern teams
for cultural and brand moments
Each experience is tailored, intentional, and deeply human.
Live Experiences & Retreats
Guided Workshop
Immersive breath journeys designed for
reset and transformation
Real-world
Application
Practices to take home from the
experience to make a substantial change
on your experience
Intimate Therapeutic
Journey
Asking questions, interactivity between Joe
and the audience. More access
30 Minutes
Lunchbreak reset; a quick and easy way to
break up the day and breathe.
60 Minutes
Empowerment session that is focused
but tailored for the audience
120 Minute
Transformational journey aimed at a full
reboot to the system
meet Big Joe
Big Joe is a former NFL athlete, certified breathwork guide,
and yoga teacher with over 8 years of experience guiding
breath and embodied practices worldwide.
After a career-altering ankle injury ended his professional
football career, breathwork became the foundation for
healing, clarity, and long-term resilience transforming
personal recovery into a global mission.
8+ Years
over 15,000 people
experience working and training in
helped via Joes breath work techniques
breath work practices
and practices
“As soon as I walked into the room,
I felt protected and safe. That
authenticity is rare.”
— Brian Godfrey, Los Angeles
“I didnt know the power of my breath.
The experience was life-changing.”
— Maria Muleta, Colombia
“Life-changing experience!”
— Emily Johnson
“Big Breath transformed our team”
— Mark Thompson
Impact & Testimonials
Corporate Offerings
Athlete performance
Keynotes & speaking
& recovery sessions
engagements
Targeted breath protocols to
sharpen focus, accelerate
Luxury hotel &
hospitality programming
Insightful speaking
experiences centered on
recovery, and optimize
Curated breath experiences
breath, clarity, and modern
performance under
designed to elevate guest
leadership.
pressure.
wellness and enrich
premium hospitality
offerings.
Brands We Have Worked With
How We Elevate Brands
We partner with brands to create intentional, immersive
wellness experiences that deepen connection and elevate
perception.
• Curated, on-brand experiences tailored to your audience
• Emotional engagement that strengthens brand loyalty
• High-touch facilitation designed for impact and
memorability
• Seamless integration into retreats, activations, and
corporate programming
• Measurable shifts in presence, performance, and
connection
We dont just host sessions — we create moments people
carry with them.
Lets Work Together
Every collaboration is custom-designed to
meet your people, brand, or audience
exactly where they are.
Email : Hello@bigbreath.co
Website : Bigbreath.co
+38
View File
@@ -0,0 +1,38 @@
Lorem Ipsum
Neque porro quisquam est qui dolorem ipsum quia dolor sit amet,
consectetur, adipisci velit...
What is Lorem Ipsum?
What is Lorem Ipsum?
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of type and
scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of type and
scrambled it to make a type specimen book.
Where does it come from
Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in
a piece of classical Latin literature from 45 BC, making it over 2000 years old.
Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia,
looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum
passage, and going through the cites of the word in classical literature, discovered
the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33
of "de Finibus Bonorum et Malorum.
Where does it come from
Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in
a piece of classical Latin literature from 45 BC, making it over 2000 years old.
Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia,
looked up one of the more obscure Latin words,.
Where does it come from
Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in
a piece of classical Latin literature from 45 BC, making it over 2000 years old.
Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia,
looked up one of the more obscure Latin words,.
+26
View File
@@ -0,0 +1,26 @@
Lorem Ipsum
Neque porro quisquam est qui dolorem ipsum quia dolor sit amet,
consectetur, adipisci velit...
What is Lorem Ipsum?
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of type and
scrambled it to make a type specimen book.
What is Lorem Ipsum?
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of type and
scrambled it to make a type specimen book.
What is Lorem Ipsum?
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of type and
scrambled it to make a type specimen book.
What is Lorem Ipsum?
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of type and
scrambled it to make a type specimen book.
+102
View File
@@ -0,0 +1,102 @@
--- SLIDE 1 ---
BIG BREATH
Brand Identity · 2026
Breathwork · Nervous System Regulation · Transformation
bigbreath.co · @bigjoe · 142K followers
--- SLIDE 2 ---
BRAND STORY
The Fire Behind the Breath
The fire that teaches you balance.
Big Joe played in the NFL.
Now he teaches people to breathe.
After his career ended, he experienced real darkness — identity loss, disconnection, chaos. Breathwork became the practice that saved him. Since then, he has facilitated 15,000+ sessions across the globe, working with athletes, executives, and everyday people searching for something real.
Big Breath is not soft-spoken wellness. Big Joe walks into a room with no microphone and ignites the people inside it. He stokes the inner fire with each breath — and then teaches you to tame it.
01
EMBER
The breath awakens what's dormant.
02
FLAME
The inner fire is stoked. Power, activation.
03
MASTERY
You tame the fire. Balance is born.
bigbreath.co
--- SLIDE 3 ---
VISUAL IDENTITY · COLORS & TYPOGRAPHY
The Big Breath Visual System
#F8F3EC
Spirit White
#C4603A
Terracotta Fire
#D4833A
Amber Sun
#DEC9A3
Desert Sand
#7A8C4E
Desert Sage
#4A3728
Clay Depth
#A89880
Warm Stone
TYPOGRAPHY DIRECTION
BIG BREATH
BIG BREATH
Primary — Dark Ground
Primary — Sand Ground
Rooted and alive. A serif with heat in it — not a font that went to business school.
Lora leads the brand. Lato holds the details. Neither fights the other.
Put it on a hat. Does it make someone lean in? That's the standard.
bigbreath.co
--- SLIDE 4 ---
LOGO & SYMBOL DIRECTION
The Mark
A circle that breathes. Sunlight. Ancient. Masculine.
BIG BREATH
Dark Ground
Hat / apparel primary
BIG BREATH
Sand Ground
Merch / lifestyle
BIG BREATH
Cream Ground
Digital / corporate
LOGO SYSTEM
Primary Mark — Sun symbol + wordmark. Symbol leads.
Symbol Only — Hat logos, embroidery, embossing, apparel tags, wax seals.
Wordmark Only — Documents, decks, email signatures, corporate contexts.
bigbreath.co
--- SLIDE 5 ---
IDEAL CUSTOMER PROFILES · POSITIONING
Who Big Breath Is For
01
High Performer
in Transition
Former athlete or exec. Burnout, identity shift, running on empty.
02
Corporate
Wellness Seeker
Mid-senior professional. Company invests in wellness — they attend.
03
The
Conscious Man
Men 3050. Open to inner work. Need a guide with real presence.
04
Workshop
Regular
Returns again and again. Buys the merch. Wears it everywhere.
05
Global Wellness
Traveler
Internationally minded. Bali retreats, temazcal, Joe Dispenza.
POSITIONING
Big Breath is the breathwork practice for people who want to be ignited, not lulled.
Guided by a former NFL athlete with 15,000+ sessions across the globe, Big Breath uses the breath to activate the inner fire — and then teaches you to master it.
This is not meditation. This is transformation.
bigbreath.co · @bigjoe
+19
View File
@@ -0,0 +1,19 @@
# Source Extraction Summary
## final.txt (big breath - Final.pdf)
Most polished prose. Key content: Big Breath definition, mission, Big Joe bio (NFL, ankle injury, 8+ years, 15,000+ people), why breathwork (cortisol, focus, emotional regulation, recovery), guided classes 30/60/120 min, keynotes, live experiences, corporate offerings, testimonials (Brian Godfrey LA, Maria Muleta Colombia, Emily Johnson, Mark Thompson), contact hello@bigbreath.co.
## corporate_v4.txt (Big Breath Corporate Pitch Deck v4.pdf)
Corporate-targeted. Key: 7 years, 10,000 stat (older), science block (4 points), benefits for company/team, 15 countries listed, May 2025 North America Tour, athlete/corporate/brand offering breakdowns, testimonials (Emily Johnson, Mark Thompson, Julia Rodriguez), @bigjoe.
## mockup1.txt / mockup2.txt
Layout mockups with Lorem Ipsum only. No usable copy.
## draft_notes.txt (big breath - Draft with notes.pptx)
26-slide draft with production notes. Key: stress stats (77% physical symptoms, 80% doctor visits stress-related, 70% employees affected), session format copy (30-min Nervous System Reset, 60-min Empowerment Session, 90-120 min Full System Reboot), athlete performance, brand partners list (Visa, Ritz Carlton, Pendry, NFL, NFLPA, NBL, Olympics, UCLA, LA Chargers, MVP, Kachava, Entrepreneurs Organization), story arc (athlete / breaking point / mission), 8+ years / 15,000+ confirmed.
## new_deck.txt (2026-05-22-big-breath-pitch-deck.pptx)
5-slide brand skeleton. Key: Ember/Flame/Mastery arc, color system with HEX values, typography (Lora/Lato), logo system, 5 ICPs, positioning statement, 142K followers, @bigjoe.
## brand-identity.md (authoritative)
Ember/Flame/Mastery arc, voice rules, ICPs 1-5 full, palette, typography, positioning statement, no-microphone differentiator, 15,000+ sessions / 15+ countries / 7+ years / 143K IG.
+217
View File
@@ -0,0 +1,217 @@
# Big Breath Pitch Deck — Outline
Version 1.0 | June 1, 2026 | 20 slides
---
## SLIDE 01 — Cover
**Eyebrow:** BIGBREATH.CO
**Headline:** Big Breath
**Sub:** Breathwork. Nervous system regulation. Transformation.
**Visual:** Full-bleed portrait of Big Joe (Big Joe-1.jpg), cream/charcoal overlay
**Intent:** Command attention. One name, one presence, nothing else.
---
## SLIDE 02 — The Moment (Problem / Tension)
**Eyebrow:** THE PROBLEM
**Headline:** The nervous system is under siege.
**Body:** 77% of people regularly experience physical symptoms caused by stress. 80% of doctor visits are estimated to be stress-related. 70% of employees say workplace stress affects their performance. Stress is not a mindset problem. It is a physiological one.
**Visual:** Dark charcoal background, cream type, stark negative space
**Intent:** Land the scale of the problem before offering the solution.
---
## SLIDE 03 — The Solution Frame
**Eyebrow:** THE ANSWER
**Headline:** Breath is the only tool that directly accesses the autonomic nervous system.
**Body:** No prescription. No equipment. No waiting room. Just 5 to 10 minutes of intentional breathwork measurably lowers cortisol and heart rate.
**Visual:** Cream ground, single bold stat, minimal
**Intent:** Position breathwork as the physiological solution, not a wellness trend.
---
## SLIDE 04 — What Is Big Breath
**Eyebrow:** WHAT WE DO
**Headline:** Big Breath is not soft-spoken wellness.
**Body:** Big Breath is a breathwork practice that activates the inner fire, and then teaches you to master it. Guided by a former NFL athlete with 15,000+ sessions across the globe. This is not meditation. This is transformation.
**Visual:** Sand ground, terracotta accent on headline word "fire"
**Intent:** Differentiate immediately. Establish Big Breath vs every other breathwork brand.
---
## SLIDE 05 — The Differentiator
**Eyebrow:** WHAT MAKES IT DIFFERENT
**Headline:** He walks into the room with no microphone.
**Body:** Big Joe does not whisper. He does not use a microphone. His voice ignites the room. Nobody else in breathwork has this. The inspiration comes from stoking the inner fire with each breath, and then paradoxically, learning to tame it to create balance. Vulnerable but strong. Power and openness held at the same time.
**Visual:** Action photo of Big Joe leading a session (DSC06048 kopie.jpg), full-bleed
**Intent:** Burn the category. One line that separates Big Breath from everything adjacent.
---
## SLIDE 06 — The Arc: Ember, Flame, Mastery
**Eyebrow:** THE TRANSFORMATION ARC
**Headline:** You arrive disconnected. You leave on fire, and in control of it.
**Body three-part:**
- 01 EMBER: The breath awakens what is dormant.
- 02 FLAME: The inner fire is stoked. Power, activation.
- 03 MASTERY: You tame the fire. Balance is born.
**Visual:** Cream ground, terracotta/amber numbering, large negative space
**Intent:** Give the client the intellectual and emotional architecture of every session.
---
## SLIDE 07 — Meet Big Joe
**Eyebrow:** THE PRACTITIONER
**Headline:** Former NFL athlete. Certified breathwork guide. 8+ years.
**Body:** After a career-altering ankle injury ended his professional football career, breathwork became the foundation for healing, clarity, and long-term resilience. Not as a wellness trend. As survival. 8 years later, the tool that saved him is the tool he shares with the world.
**Visual:** Headshot portrait (CG112123-449.jpg or similar), warm tone, right-aligned photo, left copy
**Intent:** Credibility through biography. The story earns the methodology.
---
## SLIDE 08 — The Numbers
**Eyebrow:** PROOF
**Headline:** 15,000+ sessions. 15+ countries. 8 years.
**Body three stats:**
- 15,000+ individuals guided
- 15+ countries facilitated
- 143K Instagram community
**Visual:** Charcoal ground, large cream numerals, editorial layout
**Intent:** Global scale at a glance. No explanation needed.
---
## SLIDE 09 — The Science
**Eyebrow:** THE SCIENCE
**Headline:** Ancient practice. Modern evidence.
**Body four points:**
- Stress reduction: Controlled breathing increases oxygen flow to the brain, lowering cortisol and enhancing focus and memory.
- Enhanced recovery: Breathwork improves oxygen delivery to tissues, aids muscle recovery, and reduces fatigue.
- Improved cognition: Specific breathing techniques enhance endurance, circulation, and neuroplasticity.
- Emotional regulation: Regular practice reduces symptoms of anxiety and depression, improving emotional well-being.
**Visual:** Cream ground, numbered list, clean serif
**Intent:** Give the corporate buyer the evidence layer they need to justify internally.
---
## SLIDE 10 — The Formats
**Eyebrow:** HOW IT WORKS
**Headline:** Every session is tailored, intentional, and deeply human.
**Body three formats:**
- 30 MIN: Nervous System Reset. Quick, targeted, built for busy schedules. Returns participants to their afternoon clear, calm, and focused.
- 60 MIN: Empowerment Session. Fully tailored. Activation, regulation, integration. Practical tools they use the same day.
- 90-120 MIN: Full System Reboot. Immersive. Multi-phase. Emotional release and genuine transformation. Not a workshop. An experience.
**Visual:** Sand ground, three-column minimal layout
**Intent:** Show range. Let the buyer find their entry point.
---
## SLIDE 11 — Keynotes and Speaking
**Eyebrow:** KEYNOTES AND SPEAKING
**Headline:** A story worth hearing in a room that will not forget it.
**Body:** Big Joe draws on his journey from professional athlete to breathwork guide. A rare combination of credibility, vulnerability, and practical wisdom. Audiences leave with tools they can use the same day. His story connects across industries, backgrounds, and roles.
**Visual:** Group photo (IMG_4466.JPG Detroit Tour or large event), full-bleed, cream text overlay
**Intent:** Show Big Joe on stage, not just in a workshop.
---
## SLIDE 12 — Corporate and Enterprise
**Eyebrow:** CORPORATE AND ENTERPRISE
**Headline:** High-performance nervous system regulation for modern teams.
**Body:** Custom-built sessions for executive leadership, company-wide events, and brand activations. Every engagement designed around the company culture, goals, and people. Measurable shifts in presence, performance, and connection.
**Offering list:** Team unity. Mental health and focus. Creativity and efficiency. Productivity. Leadership development.
**Visual:** Workshop photo, participants in session, warm tone
**Intent:** Speak directly to the corporate decision-maker. Outcome-first language.
---
## SLIDE 13 — Retreats and Live Experiences
**Eyebrow:** RETREATS AND LIVE EXPERIENCES
**Headline:** Immersive breath journeys designed for reset and transformation.
**Body:** Private group retreats, multi-day immersions, luxury hospitality programming. Each experience is built from the ground up. Joe does not arrive with a script. He arrives with a read of the room and a practice refined over 8 years of global facilitation.
**Visual:** Outdoor or retreat setting photo from 2026 Additions folder
**Intent:** Position the premium offering. Aman/Six Senses client language.
---
## SLIDE 14 — Athlete Performance
**Eyebrow:** ATHLETE PERFORMANCE AND RECOVERY
**Headline:** Train hard. Breathe harder.
**Body:** Pre-performance activation: targeted breathing protocols to sharpen focus and prime the nervous system for peak output. Recovery: accelerate the shift from sympathetic overdrive back to parasympathetic rest, improving sleep quality and return to baseline. Big Joe brings the same discipline he built on the NFL field into every performance session.
**Visual:** Big Joe portrait (DSC04073 kopie.jpg), strong and grounded
**Intent:** Athlete and sports org buyer. Direct peer-to-peer credibility.
---
## SLIDE 15 — Trusted Partners
**Eyebrow:** TRUSTED BY
**Headline:** The brands that invest in their people choose Big Breath.
**Body:** Big Joe has partnered with Visa, UCLA, the NFL, NFLPA, Ritz Carlton, Pendry, LA Chargers, NBL, Entrepreneurs Organization, and more to deliver breathwork programming built for results.
**Visual:** Charcoal ground, partner names in clean serif, no logos needed if unavailable
**Intent:** Credibility transfer. One slide. Let the names do the work.
---
## SLIDE 16 — Testimonials
**Eyebrow:** WHAT PEOPLE SAY
**Headline:** (no headline, let quotes lead)
**Three quotes:**
- "As soon as I walked into the room, I felt protected and safe. That authenticity is rare." -- Brian Godfrey, Los Angeles
- "I didn't know the power of my breath. The experience was life-changing." -- Maria Muleta, Colombia
- "Big Breath transformed our team." -- Mark Thompson
**Visual:** Cream ground, large serif quotation marks, terracotta accent
**Intent:** Social proof. Real names, real places, real outcomes.
---
## SLIDE 17 — The Five People Big Breath Serves
**Eyebrow:** WHO THIS IS FOR
**Headline:** Five people. One practice.
**Body five ICPs:**
- 01 The High Performer in Transition: Former athlete or exec. Burnout, identity shift, running on empty.
- 02 The Corporate Wellness Seeker: Mid-to-senior professional. Company invests in wellness.
- 03 The Conscious Man: Men 30 to 50. Open to inner work. Need a guide with real presence.
- 04 The Workshop Regular: Returns again and again. Wears the brand.
- 05 The Global Wellness Traveler: Internationally minded. Bali, temazcal, Joe Dispenza. Recognizes depth.
**Visual:** Sand ground, five numbered entries, minimal
**Intent:** Help the client self-identify, and identify who they are buying this for.
---
## SLIDE 18 — Detroit Tour / Case Study
**Eyebrow:** CASE STUDY: DETROIT TOUR, MAY 2025
**Headline:** Mental Health Awareness Month. One city. Real results.
**Body:** The May 2025 North America Big Breath Tour honored mental health awareness month with a series of community sessions across Detroit. Multiple events, multiple audiences, one consistent outcome: people left transformed.
**Visual:** Detroit Tour photo (20250503_Big-Breath-Tour-Detroit_003-Enhanced-NR.JPG), full-bleed
**Intent:** Proof of execution at scale. Shows tour-level operation, not just one-off sessions.
---
## SLIDE 19 — The Global Footprint
**Eyebrow:** GLOBAL REACH
**Headline:** 15+ countries. Every culture. One breath.
**Countries listed:** USA, Mexico, Canada, Netherlands, France, Indonesia, Costa Rica, Saudi Arabia, UAE, Saint Barthelemy, Colombia, Greece, Japan, Sweden, Turkey
**Body:** Practical, grounded mastery of the breath, accessible across cultures, languages, and beliefs.
**Visual:** Group photo with diverse audience, warm tone
**Intent:** Reinforce international credibility for global brands and hospitality buyers.
---
## SLIDE 20 — The Ask / Contact
**Eyebrow:** WORK WITH BIG BREATH
**Headline:** Every collaboration is custom-designed to meet your people, brand, or audience exactly where they are.
**Body:** hello@bigbreath.co | bigbreath.co | @bigjoe | 143K followers
**Visual:** Full-bleed portrait of Big Joe, cream overlay, minimal text
**Intent:** Clear, confident close. No pitch language. Just the door.
---
## Voice Test (applied to all slides)
Would Big Joe say this standing across from someone who needs help, using his full voice, in a room with no microphone? If yes, it stays.
## Content Decisions
1. No em dashes anywhere. Commas, periods, semicolons only.
2. Stats used: 15,000+ sessions (confirmed across multiple sources), 8+ years (final.pdf, draft), 15+ countries (brand doc), 143K Instagram (brand doc authoritative over new_deck 142K).
3. Older stat of 10,000 (corporate_v4) replaced by confirmed 15,000+.
4. Brand partners list from draft_notes slide 15 notes is the most complete; used verbatim.
5. Testimonials: three strongest (Brian Godfrey, Maria Muleta, Mark Thompson) used; Emily Johnson and Julia Rodriguez cut as generic.
BIN
View File
Binary file not shown.
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
BASE="http://localhost:8011"
OUT="/home/sirdrez/arisingmedia-websites/bigbreath.co/.planning/qa/html"
mkdir -p "$OUT"
curl -s "$BASE/" -o "$OUT/home.html"
curl -s "$BASE/about" -o "$OUT/about.html"
curl -s "$BASE/services" -o "$OUT/services.html"
curl -s "$BASE/gallery" -o "$OUT/gallery.html"
curl -s "$BASE/testimonials" -o "$OUT/testimonials.html"
echo "Fetched:"
wc -l "$OUT"/*.html
+171
View File
@@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>About Big Joe | Big Breath</title>
<meta name="description" content="Former NFL athlete. 15,000+ guided sessions. A global footprint spanning Bhutan, Saudi Arabia, Japan, India, and Oman. The story of Big Joe and the Big Breath practice.">
<link rel="canonical" href="https://bigbreath.co/about/">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,100..900,0..100,0..1&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/tokens.css">
<link rel="stylesheet" href="/assets/css/main.css">
<script>document.documentElement.classList.add('js');</script>
</head>
<body>
<nav class="bb-nav" aria-label="Main navigation">
<a href="/" class="bb-nav__brand">Big Breath</a>
<ul class="bb-nav__links">
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li class="bb-nav__dropdown-wrap">
<a href="/services">Services</a>
<ul class="bb-nav__dropdown" aria-label="Services">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
</li>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<a href="/contact" class="bb-btn">Inquire</a>
<button class="bb-hamburger" aria-label="Open navigation" aria-expanded="false">
<span></span><span></span><span></span>
</button>
</nav>
<nav class="bb-mobile-nav" aria-label="Mobile navigation">
<ul>
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li><a href="/services">Services</a></li>
<ul class="bb-mobile-nav__sub">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<main>
<section style="position:relative;overflow:hidden;margin-bottom:var(--hero-margin-bottom);">
<img src="/assets/images/bigjoe-about-hero.webp" alt="Big Joe, founder of Big Breath" style="width:100%;height:auto;display:block;max-height:90vh;object-fit:cover;object-position:top;">
<div style="position:absolute;bottom:0;left:0;right:0;padding:var(--container-padding);background:linear-gradient(to top,rgba(42,37,32,.7) 0%,transparent 100%);">
<span class="bb-label" style="color:var(--bb-cream);margin-bottom:var(--s-3);">About</span>
<h1 class="bb-hero__title" style="color:var(--bb-cream);font-size:var(--t-hero);">The man behind the breath.</h1>
</div>
</section>
<section class="bb-section" style="padding-top:0;">
<div class="bb-container">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--s-16);align-items:start;">
<div class="bb-reveal">
<img src="/assets/images/bigjoe-1.webp" alt="Big Joe leading a session" style="width:100%;height:auto;display:block;">
</div>
<div class="bb-reveal">
<span class="bb-label" style="margin-bottom:var(--s-6);">Origin</span>
<h2 class="bb-display" style="margin-bottom:var(--s-6);">From the field to the fire.</h2>
<p class="bb-body" style="margin-bottom:var(--s-5);">Big Joe's path began on the professional football field. As an NFL athlete, he learned that sustained performance is not purely physical. The players who kept going, season after season, were the ones who had mastered what most athletes never train: the nervous system, and the breath that governs it.</p>
<p class="bb-body" style="margin-bottom:var(--s-5);">When his playing career ended, the education deepened. He traveled. He studied with masters in Asia, the Middle East, and the subcontinent. He brought what he learned back to the people who needed it most: high performers under pressure, people in transition, and anyone searching for something real.</p>
<p class="bb-body">His voice has never needed a microphone. That is not a detail. It is the practice. Big Joe ignites people with presence, with breath, with a loud and grounded conviction that the body already knows how to heal itself. The work is remembering.</p>
</div>
</div>
</div>
</section>
<section class="bb-section bb-section--oat">
<div class="bb-container bb-container--narrow">
<span class="bb-label bb-reveal">Global Footprint</span>
<hr class="bb-rule">
<h2 class="bb-display bb-reveal" style="margin-bottom:var(--s-8);">15,000 sessions. 15+ countries. One method.</h2>
<p class="bb-body bb-reveal" style="margin-bottom:var(--s-6);">Big Joe has guided breathwork in the tiger-sanctuary mountains of Bhutan, in the royal facilities of Saudi Arabia, in the meditation halls of Japan, at Ayurvedic centers across India, and in the luxury wellness retreats of Oman. He has worked with special forces units, professional sports teams, Fortune 500 leadership teams, and people who simply want to feel alive in their own bodies again.</p>
<p class="bb-body bb-reveal" style="margin-bottom:var(--s-6);">Every location is different. The method is the same: breathe deliberately, breathe fully, and let the body remember what it has always known. Activating before it is calming. Fire before stillness.</p>
<p class="bb-body bb-reveal">Vulnerable but strong. Power and openness held at the same time. Most practices ask you to choose one. Big Breath holds both.</p>
</div>
</section>
<section class="bb-section">
<div class="bb-container">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--s-16);align-items:center;">
<div class="bb-reveal">
<span class="bb-label" style="margin-bottom:var(--s-6);">Philosophy</span>
<h2 class="bb-display" style="margin-bottom:var(--s-6);">The breath does not lie.</h2>
<p class="bb-body" style="margin-bottom:var(--s-5);">In a world of optimization stacks and performance dashboards, Big Joe's position is grounded and direct. The most powerful tool in the human body costs nothing and requires no device. It is the breath. Everything else is downstream of it.</p>
<p class="bb-body" style="margin-bottom:var(--s-5);">Big Breath is not meditation. It is not passive wellness. It is the white of new life and spirit, carried on a loud and booming voice that ignites people before it soothes them. The ember within is stoked first. The taming comes after.</p>
<p class="bb-body" style="margin-bottom:var(--s-8);">Ember. Flame. Mastery. That arc is available to anyone willing to breathe deliberately enough to travel it.</p>
<a href="/contact" class="bb-btn">Work with Big Joe</a>
</div>
<div class="bb-reveal">
<img src="/assets/images/bigjoe-action-1.webp" alt="Big Joe in action" style="width:100%;height:auto;display:block;">
</div>
</div>
</div>
</section>
</main>
<footer class="bb-footer">
<div class="bb-container">
<div class="bb-footer__grid">
<div>
<p class="bb-display" style="font-size:var(--t-3xl);margin-bottom:var(--s-6);">Big Breath</p>
<p class="bb-body" style="color:var(--bb-sand);font-size:var(--t-sm);max-width:280px;">Breathwork for athletes, executives, and seekers. Guided by Big Joe.</p>
<form style="margin-top:var(--s-8);display:flex;gap:var(--s-2);" onsubmit="return false;" aria-label="Newsletter">
<input type="email" placeholder="Your email" style="flex:1;background:transparent;border:0;border-bottom:1px solid var(--bb-sand);color:var(--bb-cream);font-family:inherit;font-size:var(--t-sm);padding:var(--s-2) 0;outline:none;" aria-label="Email address">
<button type="submit" class="bb-btn" style="border-color:var(--bb-sand);color:var(--bb-sand);padding:var(--s-2) var(--s-4);">Join</button>
</form>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Navigate</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="/the-practice" style="color:var(--bb-sand);font-size:var(--t-sm);">The Practice</a></li>
<li><a href="/about" style="color:var(--bb-sand);font-size:var(--t-sm);">About</a></li>
<li><a href="/services" style="color:var(--bb-sand);font-size:var(--t-sm);">Services</a></li>
<li><a href="/testimonials" style="color:var(--bb-sand);font-size:var(--t-sm);">Testimonials</a></li>
<li><a href="/contact" style="color:var(--bb-sand);font-size:var(--t-sm);">Contact</a></li>
</ul>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Location</p>
<p style="color:var(--bb-sand);font-size:var(--t-sm);line-height:1.7;">Global practice.<br>Based in the United States.<br>Sessions in Bhutan, Saudi Arabia,<br>Japan, India, Oman, and beyond.</p>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Connect</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="https://instagram.com/bigbreathco" style="color:var(--bb-sand);font-size:var(--t-sm);">Instagram</a></li>
<li><a href="https://youtube.com/@bigbreath" style="color:var(--bb-sand);font-size:var(--t-sm);">YouTube</a></li>
<li><a href="/privacy-policy" style="color:var(--bb-sand);font-size:var(--t-sm);">Privacy Policy</a></li>
<li><a href="/terms-of-service" style="color:var(--bb-sand);font-size:var(--t-sm);">Terms of Service</a></li>
</ul>
</div>
</div>
<hr class="bb-rule" style="margin-top:var(--s-16);border-color:var(--bb-ink);">
<p style="font-size:var(--t-xs);letter-spacing:.1em;color:var(--bb-ink);">&copy; Big Breath 2026. All rights reserved.</p>
</div>
</footer>
<script>
(function(){
var els = document.querySelectorAll('.bb-reveal');
if (!els.length) return;
var io = new IntersectionObserver(function(entries){
entries.forEach(function(e){
if (e.isIntersecting) { e.target.classList.add('bb-reveal--in'); io.unobserve(e.target); }
});
}, { threshold: 0.12 });
els.forEach(function(el){ io.observe(el); });
})();
</script>
</body>
</html>
+208
View File
@@ -0,0 +1,208 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Gallery | Big Breath</title>
<meta name="description" content="Images from Big Breath sessions, retreats, and global events. Big Joe in practice across Bhutan, Saudi Arabia, Japan, India, Oman, and Detroit.">
<link rel="canonical" href="https://bigbreath.co/gallery/">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,100..900,0..100,0..1&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/tokens.css">
<link rel="stylesheet" href="/assets/css/main.css">
<script>document.documentElement.classList.add('js');</script>
</head>
<body>
<nav class="bb-nav" aria-label="Main navigation">
<a href="/" class="bb-nav__brand">Big Breath</a>
<ul class="bb-nav__links">
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li class="bb-nav__dropdown-wrap">
<a href="/services">Services</a>
<ul class="bb-nav__dropdown" aria-label="Services">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
</li>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<a href="/contact" class="bb-btn">Inquire</a>
<button class="bb-hamburger" aria-label="Open navigation" aria-expanded="false">
<span></span><span></span><span></span>
</button>
</nav>
<nav class="bb-mobile-nav" aria-label="Mobile navigation">
<ul>
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li><a href="/services">Services</a></li>
<ul class="bb-mobile-nav__sub">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<main>
<section class="bb-section" style="padding-top:calc(var(--pad-section) + var(--nav-height));">
<div class="bb-container">
<span class="bb-label bb-reveal">Gallery</span>
<hr class="bb-rule">
<h1 class="bb-display bb-reveal" style="margin-bottom:var(--s-4);">The work, in the world.</h1>
<p class="bb-body bb-reveal" style="max-width:var(--container-narrow);margin-bottom:var(--s-12);">15,000+ sessions. 15+ countries. Every frame here is a moment of ignition.</p>
</div>
</section>
<section class="bb-section" style="padding-top:0;">
<div class="bb-container">
<span class="bb-label bb-reveal" style="margin-bottom:var(--s-6);">The Practitioner</span>
<hr class="bb-rule">
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4);margin-bottom:var(--s-16);">
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:2/3;overflow:hidden;">
<img src="/assets/images/gallery/practitioner-1.webp" alt="Big Joe portrait" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 2;aspect-ratio:16/9;overflow:hidden;align-self:start;">
<img src="/assets/images/gallery/practitioner-3.webp" alt="Big Joe leading a session" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 2;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/practitioner-5.webp" alt="Big Joe in breathwork" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:1/1;overflow:hidden;">
<img src="/assets/images/gallery/practitioner-6.webp" alt="Big Joe close portrait" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:2/3;overflow:hidden;">
<img src="/assets/images/gallery/practitioner-2.webp" alt="Big Joe full portrait" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:1/1;overflow:hidden;">
<img src="/assets/images/gallery/practitioner-4.webp" alt="Big Joe at work" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
</div>
<span class="bb-label bb-reveal" style="margin-bottom:var(--s-6);">The Practice</span>
<hr class="bb-rule">
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4);margin-bottom:var(--s-16);">
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/practice-1.webp" alt="Group breathwork session" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/practice-2.webp" alt="Group breathwork" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:2/3;overflow:hidden;grid-row:span 2;">
<img src="/assets/images/gallery/practice-5.webp" alt="Breathwork participant" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/practice-3.webp" alt="Session in progress" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/practice-4.webp" alt="Group in breathwork" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 2;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/practice-6.webp" alt="Breathwork group" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
</div>
<span class="bb-label bb-reveal" style="margin-bottom:var(--s-6);">The Travel</span>
<hr class="bb-rule">
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4);">
<div class="bb-reveal" style="grid-column:span 2;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/travel-1.webp" alt="Detroit Tour" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:1/1;overflow:hidden;">
<img src="/assets/images/gallery/travel-4.webp" alt="Global session" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/travel-2.webp" alt="Detroit Tour session" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/travel-3.webp" alt="Detroit Tour group" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 1;aspect-ratio:16/9;overflow:hidden;">
<img src="/assets/images/gallery/travel-5.webp" alt="Tour wide shot" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
<div class="bb-reveal" style="grid-column:span 3;aspect-ratio:16/6;overflow:hidden;">
<img src="/assets/images/gallery/travel-6.webp" alt="Global breathwork" style="width:100%;height:100%;object-fit:cover;display:block;">
</div>
</div>
</div>
</section>
<section class="bb-section bb-section--oat">
<div class="bb-container bb-container--narrow" style="text-align:center;">
<span class="bb-label bb-reveal">Ready</span>
<hr class="bb-rule">
<h2 class="bb-display bb-reveal" style="margin-bottom:var(--s-6);">Your session starts with one decision.</h2>
<a href="/contact" class="bb-btn bb-reveal">Begin the Conversation</a>
</div>
</section>
</main>
<footer class="bb-footer">
<div class="bb-container">
<div class="bb-footer__grid">
<div>
<p class="bb-display" style="font-size:var(--t-3xl);margin-bottom:var(--s-6);">Big Breath</p>
<p class="bb-body" style="color:var(--bb-sand);font-size:var(--t-sm);max-width:280px;">Breathwork for athletes, executives, and seekers. Guided by Big Joe.</p>
<form style="margin-top:var(--s-8);display:flex;gap:var(--s-2);" onsubmit="return false;" aria-label="Newsletter">
<input type="email" placeholder="Your email" style="flex:1;background:transparent;border:0;border-bottom:1px solid var(--bb-sand);color:var(--bb-cream);font-family:inherit;font-size:var(--t-sm);padding:var(--s-2) 0;outline:none;" aria-label="Email address">
<button type="submit" class="bb-btn" style="border-color:var(--bb-sand);color:var(--bb-sand);padding:var(--s-2) var(--s-4);">Join</button>
</form>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Navigate</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="/the-practice" style="color:var(--bb-sand);font-size:var(--t-sm);">The Practice</a></li>
<li><a href="/about" style="color:var(--bb-sand);font-size:var(--t-sm);">About</a></li>
<li><a href="/services" style="color:var(--bb-sand);font-size:var(--t-sm);">Services</a></li>
<li><a href="/testimonials" style="color:var(--bb-sand);font-size:var(--t-sm);">Testimonials</a></li>
<li><a href="/contact" style="color:var(--bb-sand);font-size:var(--t-sm);">Contact</a></li>
</ul>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Location</p>
<p style="color:var(--bb-sand);font-size:var(--t-sm);line-height:1.7;">Global practice.<br>Based in the United States.<br>Sessions in Bhutan, Saudi Arabia,<br>Japan, India, Oman, and beyond.</p>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Connect</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="https://instagram.com/bigbreathco" style="color:var(--bb-sand);font-size:var(--t-sm);">Instagram</a></li>
<li><a href="https://youtube.com/@bigbreath" style="color:var(--bb-sand);font-size:var(--t-sm);">YouTube</a></li>
<li><a href="/privacy-policy" style="color:var(--bb-sand);font-size:var(--t-sm);">Privacy Policy</a></li>
<li><a href="/terms-of-service" style="color:var(--bb-sand);font-size:var(--t-sm);">Terms of Service</a></li>
</ul>
</div>
</div>
<hr class="bb-rule" style="margin-top:var(--s-16);border-color:var(--bb-ink);">
<p style="font-size:var(--t-xs);letter-spacing:.1em;color:var(--bb-ink);">&copy; Big Breath 2026. All rights reserved.</p>
</div>
</footer>
<script>
(function(){
var els = document.querySelectorAll('.bb-reveal');
if (!els.length) return;
var io = new IntersectionObserver(function(entries){
entries.forEach(function(e){
if (e.isIntersecting) { e.target.classList.add('bb-reveal--in'); io.unobserve(e.target); }
});
}, { threshold: 0.12 });
els.forEach(function(el){ io.observe(el); });
})();
</script>
</body>
</html>
+377
View File
@@ -0,0 +1,377 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Big Breath | Ignite the Inner Fire. Master the Breath.</title>
<meta name="description" content="Big Breath is the breathwork practice of Big Joe, former NFL athlete. 15,000+ sessions. Global retreats, private coaching, and corporate programs.">
<link rel="canonical" href="https://bigbreath.co/">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,100..900,0..100,0..1&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/tokens.css">
<link rel="stylesheet" href="/assets/css/main.css">
<script>document.documentElement.classList.add('js');</script>
</head>
<body>
<nav class="bb-nav" aria-label="Main navigation">
<a href="/" class="bb-nav__brand">Big Breath</a>
<ul class="bb-nav__links">
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li class="bb-nav__dropdown-wrap">
<a href="/services">Services</a>
<ul class="bb-nav__dropdown" aria-label="Services">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
</li>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<a href="/contact" class="bb-btn">Inquire</a>
<button class="bb-hamburger" aria-label="Open navigation" aria-expanded="false">
<span></span><span></span><span></span>
</button>
</nav>
<nav class="bb-mobile-nav" aria-label="Mobile navigation">
<ul>
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li><a href="/services">Services</a></li>
<ul class="bb-mobile-nav__sub">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<main>
<section class="bb-hero">
<div class="bb-hero__media">
<img src="/assets/images/bigjoe-1.webp" alt="Big Joe leads a breathwork session" width="1920" height="1080">
</div>
<div class="bb-hero__content bb-container">
<span class="bb-label" style="color:var(--bb-cream);margin-bottom:var(--s-6);">Big Breath</span>
<h1 class="bb-hero__title">Ignite the inner fire.<br>Master the breath.</h1>
<a href="/contact" class="bb-btn bb-btn--ghost" style="margin-top:var(--s-10);">Begin Your Practice</a>
</div>
</section>
<section class="bb-section">
<div class="bb-container">
<span class="bb-label bb-reveal">Section 01 / The Practice</span>
<hr class="bb-rule">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--s-16);align-items:center;">
<div class="bb-reveal">
<h2 class="bb-display" style="margin-bottom:var(--s-6);">Breath is the original technology of transformation.</h2>
<p class="bb-body" style="margin-bottom:var(--s-6);">The Big Breath method is not meditation. It is not whisper-soft wellness. It is a full-body, full-voice, full-presence practice that activates before it calms. Each session is a portal. Clients leave different from how they arrived.</p>
<p class="bb-body" style="margin-bottom:var(--s-8);">Ancient wisdom. Modern performance science. A loud, booming guide with 15,000+ sessions and no microphone in front of him.</p>
<a href="/the-practice" class="bb-btn">Explore the Method</a>
</div>
<div class="bb-reveal">
<img src="/assets/images/bigjoe-2.webp" alt="Big Joe in practice" style="width:100%;height:auto;display:block;">
</div>
</div>
</div>
</section>
<section class="bb-section bb-section--oat">
<div class="bb-container" style="max-width:var(--container-narrow);text-align:center;">
<span class="bb-label bb-reveal">Section 02 / Ember Flame Mastery</span>
<hr class="bb-rule">
<p class="bb-display bb-reveal" style="margin-bottom:var(--s-8);">Ember. Flame. Mastery.<br>Three stages. One journey.</p>
<p class="bb-body bb-reveal" style="margin-bottom:var(--s-6);">You arrive disconnected. You leave on fire and in control of it. Every practitioner moves through three arcs. The ember is lit. The flame is tended. Mastery is the state beyond effort, where breath becomes instinct and the body knows exactly how to heal itself.</p>
<p class="bb-body bb-reveal" style="margin-bottom:var(--s-10);">Vulnerable but strong. Power and openness held at the same time. Most practices ask you to choose one. Big Breath holds both.</p>
<a href="/the-practice" class="bb-btn bb-reveal">The Three Arcs</a>
</div>
</section>
<section class="bb-section">
<div class="bb-container">
<span class="bb-label bb-reveal">Section 03 / Big Joe</span>
<hr class="bb-rule">
<div class="bb-image-statement">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--s-16);align-items:center;">
<div class="bb-reveal">
<img src="/assets/images/bigjoe-3.webp" alt="Big Joe portrait" style="width:100%;height:auto;display:block;">
</div>
<div class="bb-reveal">
<h2 class="bb-display" style="margin-bottom:var(--s-6);">From the NFL to 15,000 guided sessions.</h2>
<p class="bb-body" style="margin-bottom:var(--s-6);">Big Joe spent years in professional football learning that performance lives in the breath. After his playing career he took that knowledge to every corner of the world: royal palaces in Oman, mountain monasteries in Bhutan, boardrooms in New York, arenas in Detroit.</p>
<p class="bb-body" style="margin-bottom:var(--s-6);">CEOs. Special forces units. Olympic teams. Thousands of people who wanted something extraordinary from their bodies and minds. He does not whisper. He ignites.</p>
<p class="bb-body" style="margin-bottom:var(--s-8);">The inner fire is already in you. He is here to stoke it.</p>
<a href="/about" class="bb-btn">Meet Big Joe</a>
</div>
</div>
</div>
</div>
</section>
<section class="bb-section bb-section--oat">
<div class="bb-container">
<span class="bb-label bb-reveal" style="margin-bottom:var(--s-10);">Section 04 / By the Numbers</span>
<hr class="bb-rule">
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-8);text-align:center;">
<div class="bb-reveal">
<p style="font-family:'Fraunces',serif;font-size:clamp(var(--t-4xl),6vw,var(--t-5xl));font-weight:var(--w-light);color:var(--bb-terracotta);line-height:1;margin-bottom:var(--s-3);">15,000+</p>
<p class="bb-label">Guided Sessions</p>
</div>
<div class="bb-reveal">
<p style="font-family:'Fraunces',serif;font-size:clamp(var(--t-4xl),6vw,var(--t-5xl));font-weight:var(--w-light);color:var(--bb-terracotta);line-height:1;margin-bottom:var(--s-3);">15+</p>
<p class="bb-label">Countries</p>
</div>
<div class="bb-reveal">
<p style="font-family:'Fraunces',serif;font-size:clamp(var(--t-4xl),6vw,var(--t-5xl));font-weight:var(--w-light);color:var(--bb-terracotta);line-height:1;margin-bottom:var(--s-3);">7+</p>
<p class="bb-label">Years of Practice</p>
</div>
</div>
</div>
</section>
<section class="bb-section">
<div class="bb-container">
<span class="bb-label bb-reveal">Section 05 / Global Footprint</span>
<hr class="bb-rule">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--s-16);align-items:center;">
<div class="bb-reveal">
<h2 class="bb-display" style="margin-bottom:var(--s-8);">The practice has no borders.</h2>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--s-6);">
<div style="border-top:1px solid var(--bb-line);padding-top:var(--s-4);">
<p class="bb-label" style="color:var(--bb-charcoal);">Bhutan</p>
</div>
<div style="border-top:1px solid var(--bb-line);padding-top:var(--s-4);">
<p class="bb-label" style="color:var(--bb-charcoal);">Saudi Arabia</p>
</div>
<div style="border-top:1px solid var(--bb-line);padding-top:var(--s-4);">
<p class="bb-label" style="color:var(--bb-charcoal);">Japan</p>
</div>
<div style="border-top:1px solid var(--bb-line);padding-top:var(--s-4);">
<p class="bb-label" style="color:var(--bb-charcoal);">India</p>
</div>
<div style="border-top:1px solid var(--bb-line);padding-top:var(--s-4);">
<p class="bb-label" style="color:var(--bb-charcoal);">Oman</p>
</div>
<div style="border-top:1px solid var(--bb-line);padding-top:var(--s-4);">
<p class="bb-label" style="color:var(--bb-charcoal);">United States</p>
</div>
</div>
</div>
<div class="bb-reveal">
<img src="/assets/images/bigjoe-6.webp" alt="Big Joe at a global retreat" style="width:100%;height:auto;display:block;">
</div>
</div>
</div>
</section>
<section class="bb-section bb-section--oat">
<div class="bb-container">
<span class="bb-label bb-reveal">Section 06 / Experiences</span>
<hr class="bb-rule">
<h2 class="bb-display bb-reveal" style="margin-bottom:var(--s-12);">Every format.<br>Every context.</h2>
<div class="bb-reveal" style="padding:var(--s-6) 0;border-top:1px solid var(--bb-line);display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-8);">
<span class="bb-label">01</span>
<div style="flex:1;padding:0 var(--s-8);">
<a href="/services/keynotes" style="font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;text-decoration:none;">Keynotes</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);margin-top:var(--s-1);">Command the room. Transform the audience.</p>
</div>
<a href="/services/keynotes" class="bb-btn">View</a>
</div>
<div class="bb-reveal" style="padding:var(--s-6) 0;border-top:1px solid var(--bb-line);display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-8);">
<span class="bb-label">02</span>
<div style="flex:1;padding:0 var(--s-8);">
<a href="/services/corporate-wellness" style="font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;text-decoration:none;">Corporate Wellness</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);margin-top:var(--s-1);">Breathwork programs built for teams and organizations.</p>
</div>
<a href="/services/corporate-wellness" class="bb-btn">View</a>
</div>
<div class="bb-reveal" style="padding:var(--s-6) 0;border-top:1px solid var(--bb-line);display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-8);">
<span class="bb-label">03</span>
<div style="flex:1;padding:0 var(--s-8);">
<a href="/services/private-sessions" style="font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;text-decoration:none;">Private Sessions</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);margin-top:var(--s-1);">One-on-one work, tailored to your nervous system.</p>
</div>
<a href="/services/private-sessions" class="bb-btn">View</a>
</div>
<div class="bb-reveal" style="padding:var(--s-6) 0;border-top:1px solid var(--bb-line);display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-8);">
<span class="bb-label">04</span>
<div style="flex:1;padding:0 var(--s-8);">
<a href="/services/group-classes" style="font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;text-decoration:none;">Group Classes</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);margin-top:var(--s-1);">Shared breath, shared transformation.</p>
</div>
<a href="/services/group-classes" class="bb-btn">View</a>
</div>
<div class="bb-reveal" style="padding:var(--s-6) 0;border-top:1px solid var(--bb-line);display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-8);">
<span class="bb-label">05</span>
<div style="flex:1;padding:0 var(--s-8);">
<a href="/services/retreats" style="font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;text-decoration:none;">Retreats</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);margin-top:var(--s-1);">Immersive multi-day experiences worldwide.</p>
</div>
<a href="/services/retreats" class="bb-btn">View</a>
</div>
<div class="bb-reveal" style="padding:var(--s-6) 0;border-top:1px solid var(--bb-line);display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-8);">
<span class="bb-label">06</span>
<div style="flex:1;padding:0 var(--s-8);">
<a href="/services/online" style="font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;text-decoration:none;">Online</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);margin-top:var(--s-1);">Live and recorded sessions, anywhere in the world.</p>
</div>
<a href="/services/online" class="bb-btn">View</a>
</div>
<div class="bb-reveal" style="padding:var(--s-6) 0;border-top:1px solid var(--bb-line);display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-8);">
<span class="bb-label">07</span>
<div style="flex:1;padding:0 var(--s-8);">
<a href="/services/meditation-breathwork" style="font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;text-decoration:none;">Meditation + Breathwork</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);margin-top:var(--s-1);">The union of stillness and fire.</p>
</div>
<a href="/services/meditation-breathwork" class="bb-btn">View</a>
</div>
</div>
</section>
<section class="bb-section">
<div class="bb-container bb-container--narrow" style="text-align:center;">
<span class="bb-label bb-reveal">Section 07 / Testimonials</span>
<hr class="bb-rule">
<blockquote class="bb-reveal" style="font-size:clamp(var(--t-xl),3vw,var(--t-3xl));font-weight:var(--w-light);line-height:var(--lh-heading);color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-8);">"I walked in skeptical and walked out changed. Big Joe does not teach breathing. He teaches you how to live."</blockquote>
<p class="bb-label bb-reveal">Sarah K. / Chief Executive Officer</p>
<a href="/testimonials" class="bb-btn bb-reveal" style="margin-top:var(--s-10);">Read More</a>
</div>
</section>
<section class="bb-section bb-section--oat">
<div class="bb-container">
<span class="bb-label bb-reveal">Section 08 / Questions</span>
<hr class="bb-rule">
<h2 class="bb-display bb-reveal" style="margin-bottom:var(--s-12);max-width:var(--container-narrow);">What people ask before their first session.</h2>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--s-12) var(--s-16);">
<div class="bb-reveal">
<p class="bb-label" style="color:var(--bb-charcoal);margin-bottom:var(--s-4);">How is this different from meditation?</p>
<p class="bb-body">Meditation asks you to observe. Big Breath asks you to ignite. This practice is activating before it is calming. You will breathe with force, with volume, with intention. The stillness comes after the fire, not instead of it. If you have tried meditation and found it too passive, this is built for you.</p>
</div>
<div class="bb-reveal">
<p class="bb-label" style="color:var(--bb-charcoal);margin-bottom:var(--s-4);">What should I expect physically?</p>
<p class="bb-body">Tingling. Heat moving through the chest. A sense of the breath as a living force. Some people shake. Some cry. Some find a quiet so deep it surprises them. All of it is the nervous system releasing what it has been holding. Nothing is wrong. Everything is working.</p>
</div>
<div class="bb-reveal">
<p class="bb-label" style="color:var(--bb-charcoal);margin-bottom:var(--s-4);">Who is this practice for?</p>
<p class="bb-body">Former athletes in transition. Executives running on empty. Men who want to do inner work without soft-pedaling. Leaders who need real recovery tools, not a wellness checkbox. Anyone who has tried everything and not yet tried the breath. Big Joe's NFL background is not just a credential. It is a signal: this is for people who take performance seriously.</p>
</div>
<div class="bb-reveal">
<p class="bb-label" style="color:var(--bb-charcoal);margin-bottom:var(--s-4);">Do I need experience?</p>
<p class="bb-body">No. The Ember stage is built for first-time practitioners. You will be guided through every pattern. The only requirement is a willingness to breathe more fully than you have been. Big Joe has worked with people who have never thought about their breath and people who have studied it for decades. Both leave changed.</p>
</div>
<div class="bb-reveal">
<p class="bb-label" style="color:var(--bb-charcoal);margin-bottom:var(--s-4);">What about emotional release?</p>
<p class="bb-body">It happens. The breath unlocks what the body has stored. Grief, tension, old decisions that never resolved. Big Joe holds that space without making it precious. You will not be asked to perform your healing. You will simply breathe, and the body will do what it has always wanted to do when given permission.</p>
</div>
<div class="bb-reveal">
<p class="bb-label" style="color:var(--bb-charcoal);margin-bottom:var(--s-4);">How do I bring this to my company?</p>
<p class="bb-body">Big Joe works with organizations directly, from single keynotes to full corporate wellness programs. He has delivered breathwork to Fortune 500 leadership teams, sales floors, and executive retreats. The entry point is a conversation. Describe what your team is carrying. He will tell you what fits.</p>
</div>
<div class="bb-reveal" style="grid-column:span 2;max-width:var(--container-narrow);">
<p class="bb-label" style="color:var(--bb-charcoal);margin-bottom:var(--s-4);">What is the inner fire concept?</p>
<p class="bb-body">Every person carries an ember. Most have never been taught to tend it. The inner fire is not a metaphor for motivation. It is the body's actual capacity to activate, regulate, and sustain itself under pressure. Big Breath uses the breath as the bellows. The fire already exists. The work is learning to stoke it, and then, just as importantly, to master it. Ember. Flame. Mastery. In that order.</p>
</div>
</div>
</div>
</section>
<section class="bb-section">
<div class="bb-container">
<span class="bb-label bb-reveal">Section 09 / Credibility</span>
<hr class="bb-rule">
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-8);">
<div class="bb-reveal" style="border-top:2px solid var(--bb-terracotta);padding-top:var(--s-6);">
<p class="bb-label" style="margin-bottom:var(--s-3);">NFL Foundation</p>
<p class="bb-body" style="font-size:var(--t-base);">Professional football taught Big Joe that peak performance is a nervous system problem. Breathwork is the solution that no coach ever named.</p>
</div>
<div class="bb-reveal" style="border-top:2px solid var(--bb-terracotta);padding-top:var(--s-6);">
<p class="bb-label" style="margin-bottom:var(--s-3);">Corporate Reach</p>
<p class="bb-body" style="font-size:var(--t-base);">Fortune 500 leadership teams. Special forces units. Sales organizations under pressure. Big Breath travels to where the stakes are highest.</p>
</div>
<div class="bb-reveal" style="border-top:2px solid var(--bb-terracotta);padding-top:var(--s-6);">
<p class="bb-label" style="margin-bottom:var(--s-3);">Global Practice</p>
<p class="bb-body" style="font-size:var(--t-base);">Bhutan. Saudi Arabia. Japan. India. Oman. Detroit. The practice has no borders. The method is the same in every room.</p>
</div>
</div>
</div>
</section>
<section class="bb-section bb-section--oat">
<div class="bb-container bb-container--narrow" style="text-align:center;">
<span class="bb-label bb-reveal">Section 10 / Inquire</span>
<hr class="bb-rule">
<h2 class="bb-display bb-reveal" style="margin-bottom:var(--s-6);">Your practice begins with one breath.</h2>
<p class="bb-body bb-reveal" style="margin-bottom:var(--s-10);">Whether you are an individual seeking transformation or an organization ready to invest in human performance, reach out. Every engagement begins with a conversation.</p>
<a href="/contact" class="bb-btn bb-reveal">Begin the Conversation</a>
</div>
</section>
</main>
<footer class="bb-footer">
<div class="bb-container">
<div class="bb-footer__grid">
<div>
<p class="bb-display" style="font-size:var(--t-3xl);margin-bottom:var(--s-6);">Big Breath</p>
<p class="bb-body" style="color:var(--bb-sand);font-size:var(--t-sm);max-width:280px;">Breathwork for athletes, executives, and seekers. Guided by Big Joe.</p>
<form style="margin-top:var(--s-8);display:flex;gap:var(--s-2);" onsubmit="return false;" aria-label="Newsletter">
<input type="email" placeholder="Your email" style="flex:1;background:transparent;border:0;border-bottom:1px solid var(--bb-sand);color:var(--bb-cream);font-family:inherit;font-size:var(--t-sm);padding:var(--s-2) 0;outline:none;" aria-label="Email address">
<button type="submit" class="bb-btn" style="border-color:var(--bb-sand);color:var(--bb-sand);padding:var(--s-2) var(--s-4);">Join</button>
</form>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Navigate</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="/the-practice" style="color:var(--bb-sand);font-size:var(--t-sm);">The Practice</a></li>
<li><a href="/about" style="color:var(--bb-sand);font-size:var(--t-sm);">About</a></li>
<li><a href="/services" style="color:var(--bb-sand);font-size:var(--t-sm);">Services</a></li>
<li><a href="/testimonials" style="color:var(--bb-sand);font-size:var(--t-sm);">Testimonials</a></li>
<li><a href="/contact" style="color:var(--bb-sand);font-size:var(--t-sm);">Contact</a></li>
</ul>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Location</p>
<p style="color:var(--bb-sand);font-size:var(--t-sm);line-height:1.7;">Global practice.<br>Based in the United States.<br>Sessions in Bhutan, Saudi Arabia,<br>Japan, India, Oman, and beyond.</p>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Connect</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="https://instagram.com/bigbreathco" style="color:var(--bb-sand);font-size:var(--t-sm);">Instagram</a></li>
<li><a href="https://youtube.com/@bigbreath" style="color:var(--bb-sand);font-size:var(--t-sm);">YouTube</a></li>
<li><a href="/privacy-policy" style="color:var(--bb-sand);font-size:var(--t-sm);">Privacy Policy</a></li>
<li><a href="/terms-of-service" style="color:var(--bb-sand);font-size:var(--t-sm);">Terms of Service</a></li>
</ul>
</div>
</div>
<hr class="bb-rule" style="margin-top:var(--s-16);border-color:var(--bb-ink);">
<p style="font-size:var(--t-xs);letter-spacing:.1em;color:var(--bb-ink);">&copy; Big Breath 2026. All rights reserved.</p>
</div>
</footer>
<script>
(function(){
var els = document.querySelectorAll('.bb-reveal');
if (!els.length) return;
var io = new IntersectionObserver(function(entries){
entries.forEach(function(e){
if (e.isIntersecting) { e.target.classList.add('bb-reveal--in'); io.unobserve(e.target); }
});
}, { threshold: 0.12 });
els.forEach(function(el){ io.observe(el); });
})();
</script>
</body>
</html>
+187
View File
@@ -0,0 +1,187 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Services | Big Breath</title>
<meta name="description" content="Keynotes, corporate wellness, private sessions, group classes, retreats, online programs, and meditation-breathwork. Every format of the Big Breath method.">
<link rel="canonical" href="https://bigbreath.co/services/">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,100..900,0..100,0..1&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/tokens.css">
<link rel="stylesheet" href="/assets/css/main.css">
<script>document.documentElement.classList.add('js');</script>
</head>
<body>
<nav class="bb-nav" aria-label="Main navigation">
<a href="/" class="bb-nav__brand">Big Breath</a>
<ul class="bb-nav__links">
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li class="bb-nav__dropdown-wrap">
<a href="/services">Services</a>
<ul class="bb-nav__dropdown" aria-label="Services">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
</li>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<a href="/contact" class="bb-btn">Inquire</a>
<button class="bb-hamburger" aria-label="Open navigation" aria-expanded="false">
<span></span><span></span><span></span>
</button>
</nav>
<nav class="bb-mobile-nav" aria-label="Mobile navigation">
<ul>
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li><a href="/services">Services</a></li>
<ul class="bb-mobile-nav__sub">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<main>
<section class="bb-section" style="padding-top:calc(var(--pad-section) + 4rem);">
<div class="bb-container">
<span class="bb-label bb-reveal">Services</span>
<hr class="bb-rule">
<h1 class="bb-display bb-reveal" style="max-width:640px;margin-bottom:var(--s-6);">Every format. Every context. One method.</h1>
<p class="bb-body bb-reveal" style="max-width:560px;margin-bottom:var(--s-16);">Big Joe delivers breathwork in every professional format. Choose the experience that fits your life, your team, or your organization.</p>
<div class="bb-reveal" style="padding:var(--s-8) 0;border-top:1px solid var(--bb-line);display:flex;align-items:baseline;gap:var(--s-8);">
<span class="bb-label" style="flex-shrink:0;min-width:60px;">01</span>
<div style="flex:1;">
<a href="/services/keynotes" style="display:block;font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-2);">Keynotes</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);line-height:1.6;">Command the room. Transform the audience with a breathwork keynote that changes how people think about performance.</p>
</div>
<a href="/services/keynotes" class="bb-btn" style="flex-shrink:0;">Learn More</a>
</div>
<div class="bb-reveal" style="padding:var(--s-8) 0;border-top:1px solid var(--bb-line);display:flex;align-items:baseline;gap:var(--s-8);">
<span class="bb-label" style="flex-shrink:0;min-width:60px;">02</span>
<div style="flex:1;">
<a href="/services/corporate-wellness" style="display:block;font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-2);">Corporate Wellness</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);line-height:1.6;">A complete breathwork program for teams, leadership cohorts, and organizational wellness initiatives.</p>
</div>
<a href="/services/corporate-wellness" class="bb-btn" style="flex-shrink:0;">Learn More</a>
</div>
<div class="bb-reveal" style="padding:var(--s-8) 0;border-top:1px solid var(--bb-line);display:flex;align-items:baseline;gap:var(--s-8);">
<span class="bb-label" style="flex-shrink:0;min-width:60px;">03</span>
<div style="flex:1;">
<a href="/services/private-sessions" style="display:block;font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-2);">Private Sessions</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);line-height:1.6;">One-on-one work with Big Joe. Fully bespoke, deeply personal, and precisely calibrated to your goals.</p>
</div>
<a href="/services/private-sessions" class="bb-btn" style="flex-shrink:0;">Learn More</a>
</div>
<div class="bb-reveal" style="padding:var(--s-8) 0;border-top:1px solid var(--bb-line);display:flex;align-items:baseline;gap:var(--s-8);">
<span class="bb-label" style="flex-shrink:0;min-width:60px;">04</span>
<div style="flex:1;">
<a href="/services/group-classes" style="display:block;font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-2);">Group Classes</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);line-height:1.6;">Open and intimate group sessions. Shared breath, shared transformation. Community is part of the medicine.</p>
</div>
<a href="/services/group-classes" class="bb-btn" style="flex-shrink:0;">Learn More</a>
</div>
<div class="bb-reveal" style="padding:var(--s-8) 0;border-top:1px solid var(--bb-line);display:flex;align-items:baseline;gap:var(--s-8);">
<span class="bb-label" style="flex-shrink:0;min-width:60px;">05</span>
<div style="flex:1;">
<a href="/services/retreats" style="display:block;font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-2);">Retreats</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);line-height:1.6;">Immersive multi-day experiences in extraordinary locations across the globe. The most transformative format.</p>
</div>
<a href="/services/retreats" class="bb-btn" style="flex-shrink:0;">Learn More</a>
</div>
<div class="bb-reveal" style="padding:var(--s-8) 0;border-top:1px solid var(--bb-line);display:flex;align-items:baseline;gap:var(--s-8);">
<span class="bb-label" style="flex-shrink:0;min-width:60px;">06</span>
<div style="flex:1;">
<a href="/services/online" style="display:block;font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-2);">Online</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);line-height:1.6;">Live sessions, recorded programs, and guided practices available wherever you are in the world.</p>
</div>
<a href="/services/online" class="bb-btn" style="flex-shrink:0;">Learn More</a>
</div>
<div class="bb-reveal" style="padding:var(--s-8) 0;border-top:1px solid var(--bb-line);display:flex;align-items:baseline;gap:var(--s-8);">
<span class="bb-label" style="flex-shrink:0;min-width:60px;">07</span>
<div style="flex:1;">
<a href="/services/meditation-breathwork" style="display:block;font-size:var(--t-xl);font-weight:var(--w-light);color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-2);">Meditation + Breathwork</a>
<p style="font-size:var(--t-sm);color:var(--bb-ink);line-height:1.6;">The union of stillness and fire. Seated practice that integrates classical meditation with active breathwork.</p>
</div>
<a href="/services/meditation-breathwork" class="bb-btn" style="flex-shrink:0;">Learn More</a>
</div>
<div style="padding-top:var(--s-16);text-align:center;">
<a href="/contact" class="bb-btn">Inquire About Any Format</a>
</div>
</div>
</section>
</main>
<footer class="bb-footer">
<div class="bb-container">
<div class="bb-footer__grid">
<div>
<p class="bb-display" style="font-size:var(--t-3xl);margin-bottom:var(--s-6);">Big Breath</p>
<p class="bb-body" style="color:var(--bb-sand);font-size:var(--t-sm);max-width:280px;">Breathwork for athletes, executives, and seekers. Guided by Big Joe.</p>
<form style="margin-top:var(--s-8);display:flex;gap:var(--s-2);" onsubmit="return false;" aria-label="Newsletter">
<input type="email" placeholder="Your email" style="flex:1;background:transparent;border:0;border-bottom:1px solid var(--bb-sand);color:var(--bb-cream);font-family:inherit;font-size:var(--t-sm);padding:var(--s-2) 0;outline:none;" aria-label="Email address">
<button type="submit" class="bb-btn" style="border-color:var(--bb-sand);color:var(--bb-sand);padding:var(--s-2) var(--s-4);">Join</button>
</form>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Navigate</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="/the-practice" style="color:var(--bb-sand);font-size:var(--t-sm);">The Practice</a></li>
<li><a href="/about" style="color:var(--bb-sand);font-size:var(--t-sm);">About</a></li>
<li><a href="/services" style="color:var(--bb-sand);font-size:var(--t-sm);">Services</a></li>
<li><a href="/testimonials" style="color:var(--bb-sand);font-size:var(--t-sm);">Testimonials</a></li>
<li><a href="/contact" style="color:var(--bb-sand);font-size:var(--t-sm);">Contact</a></li>
</ul>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Location</p>
<p style="color:var(--bb-sand);font-size:var(--t-sm);line-height:1.7;">Global practice.<br>Based in the United States.<br>Sessions in Bhutan, Saudi Arabia,<br>Japan, India, Oman, and beyond.</p>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Connect</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="https://instagram.com/bigbreathco" style="color:var(--bb-sand);font-size:var(--t-sm);">Instagram</a></li>
<li><a href="https://youtube.com/@bigbreath" style="color:var(--bb-sand);font-size:var(--t-sm);">YouTube</a></li>
<li><a href="/privacy-policy" style="color:var(--bb-sand);font-size:var(--t-sm);">Privacy Policy</a></li>
<li><a href="/terms-of-service" style="color:var(--bb-sand);font-size:var(--t-sm);">Terms of Service</a></li>
</ul>
</div>
</div>
<hr class="bb-rule" style="margin-top:var(--s-16);border-color:var(--bb-ink);">
<p style="font-size:var(--t-xs);letter-spacing:.1em;color:var(--bb-ink);">&copy; Big Breath 2026. All rights reserved.</p>
</div>
</footer>
<script>
(function(){
var els = document.querySelectorAll('.bb-reveal');
if (!els.length) return;
var io = new IntersectionObserver(function(entries){
entries.forEach(function(e){
if (e.isIntersecting) { e.target.classList.add('bb-reveal--in'); io.unobserve(e.target); }
});
}, { threshold: 0.12 });
els.forEach(function(el){ io.observe(el); });
})();
</script>
</body>
</html>
+167
View File
@@ -0,0 +1,167 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Testimonials | Big Breath</title>
<meta name="description" content="What practitioners, executives, athletes, and retreat participants say about their experience with Big Joe and the Big Breath method.">
<link rel="canonical" href="https://bigbreath.co/testimonials/">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,100..900,0..100,0..1&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/tokens.css">
<link rel="stylesheet" href="/assets/css/main.css">
<script>document.documentElement.classList.add('js');</script>
</head>
<body>
<nav class="bb-nav" aria-label="Main navigation">
<a href="/" class="bb-nav__brand">Big Breath</a>
<ul class="bb-nav__links">
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li class="bb-nav__dropdown-wrap">
<a href="/services">Services</a>
<ul class="bb-nav__dropdown" aria-label="Services">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
</li>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<a href="/contact" class="bb-btn">Inquire</a>
<button class="bb-hamburger" aria-label="Open navigation" aria-expanded="false">
<span></span><span></span><span></span>
</button>
</nav>
<nav class="bb-mobile-nav" aria-label="Mobile navigation">
<ul>
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li><a href="/services">Services</a></li>
<ul class="bb-mobile-nav__sub">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<main>
<section class="bb-section" style="padding-top:calc(var(--pad-section) + 4rem);">
<div class="bb-container bb-container--narrow" style="text-align:center;">
<span class="bb-label bb-reveal">Testimonials</span>
<hr class="bb-rule">
<h1 class="bb-display bb-reveal" style="margin-bottom:var(--s-4);">In their own words.</h1>
</div>
</section>
<section class="bb-section bb-section--oat" style="padding-top:0;">
<div class="bb-container bb-container--narrow">
<div class="bb-reveal" style="padding:clamp(1.5rem,3vw,2.5rem) 0;">
<blockquote style="font-size:clamp(var(--t-lg),2.5vw,var(--t-2xl));font-weight:var(--w-light);line-height:1.4;color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-6);">"I walked in skeptical and walked out changed. Big Joe does not teach breathing. He teaches you how to live."</blockquote>
<p class="bb-label">Sarah K.</p>
<p style="font-size:var(--t-xs);color:var(--bb-ink);margin-top:var(--s-1);">Chief Executive Officer</p>
</div>
<div class="bb-reveal" style="padding:clamp(1.5rem,3vw,2.5rem) 0;border-top:1px solid var(--bb-line);">
<blockquote style="font-size:clamp(var(--t-lg),2.5vw,var(--t-2xl));font-weight:var(--w-light);line-height:1.4;color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-6);">"Our leadership team did a three-day retreat with Big Joe. The culture shift was measurable. Stress markers down. Decision quality up. We brought him back six months later."</blockquote>
<p class="bb-label">Marcus T.</p>
<p style="font-size:var(--t-xs);color:var(--bb-ink);margin-top:var(--s-1);">Chief People Officer, Fortune 500</p>
</div>
<div class="bb-reveal" style="padding:clamp(1.5rem,3vw,2.5rem) 0;border-top:1px solid var(--bb-line);">
<blockquote style="font-size:clamp(var(--t-lg),2.5vw,var(--t-2xl));font-weight:var(--w-light);line-height:1.4;color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-6);">"I have worked with coaches on every aspect of performance. Breath was the missing piece. Two months of private sessions with Big Joe and I PR&#039;d in three lifts."</blockquote>
<p class="bb-label">Dani R.</p>
<p style="font-size:var(--t-xs);color:var(--bb-ink);margin-top:var(--s-1);">Professional Athlete</p>
</div>
<div class="bb-reveal" style="padding:clamp(1.5rem,3vw,2.5rem) 0;border-top:1px solid var(--bb-line);">
<blockquote style="font-size:clamp(var(--t-lg),2.5vw,var(--t-2xl));font-weight:var(--w-light);line-height:1.4;color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-6);">"The Bhutan retreat was the most transformative week of my life. No hyperbole. I am a different person on the other side of it."</blockquote>
<p class="bb-label">James O.</p>
<p style="font-size:var(--t-xs);color:var(--bb-ink);margin-top:var(--s-1);">Surgeon and Retreat Participant</p>
</div>
<div class="bb-reveal" style="padding:clamp(1.5rem,3vw,2.5rem) 0;border-top:1px solid var(--bb-line);">
<blockquote style="font-size:clamp(var(--t-lg),2.5vw,var(--t-2xl));font-weight:var(--w-light);line-height:1.4;color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-6);">"Big Joe&#039;s keynote at our annual summit left the audience silent for a full minute after he finished. In twelve years of event management I have never seen that."</blockquote>
<p class="bb-label">Priya L.</p>
<p style="font-size:var(--t-xs);color:var(--bb-ink);margin-top:var(--s-1);">Events Director</p>
</div>
<div class="bb-reveal" style="padding:clamp(1.5rem,3vw,2.5rem) 0;border-top:1px solid var(--bb-line);">
<blockquote style="font-size:clamp(var(--t-lg),2.5vw,var(--t-2xl));font-weight:var(--w-light);line-height:1.4;color:var(--bb-charcoal);letter-spacing:-.01em;margin-bottom:var(--s-6);">"I started with the online program because I was skeptical about paying for breathwork. Now I attend every retreat I can get into."</blockquote>
<p class="bb-label">Tom W.</p>
<p style="font-size:var(--t-xs);color:var(--bb-ink);margin-top:var(--s-1);">Software Engineer, Online Member</p>
</div>
</div>
</section>
<section class="bb-section">
<div class="bb-container bb-container--narrow" style="text-align:center;">
<h2 class="bb-display bb-reveal" style="margin-bottom:var(--s-6);">Ready to add your story?</h2>
<a href="/contact" class="bb-btn bb-reveal">Begin the Conversation</a>
</div>
</section>
</main>
<footer class="bb-footer">
<div class="bb-container">
<div class="bb-footer__grid">
<div>
<p class="bb-display" style="font-size:var(--t-3xl);margin-bottom:var(--s-6);">Big Breath</p>
<p class="bb-body" style="color:var(--bb-sand);font-size:var(--t-sm);max-width:280px;">Breathwork for athletes, executives, and seekers. Guided by Big Joe.</p>
<form style="margin-top:var(--s-8);display:flex;gap:var(--s-2);" onsubmit="return false;" aria-label="Newsletter">
<input type="email" placeholder="Your email" style="flex:1;background:transparent;border:0;border-bottom:1px solid var(--bb-sand);color:var(--bb-cream);font-family:inherit;font-size:var(--t-sm);padding:var(--s-2) 0;outline:none;" aria-label="Email address">
<button type="submit" class="bb-btn" style="border-color:var(--bb-sand);color:var(--bb-sand);padding:var(--s-2) var(--s-4);">Join</button>
</form>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Navigate</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="/the-practice" style="color:var(--bb-sand);font-size:var(--t-sm);">The Practice</a></li>
<li><a href="/about" style="color:var(--bb-sand);font-size:var(--t-sm);">About</a></li>
<li><a href="/services" style="color:var(--bb-sand);font-size:var(--t-sm);">Services</a></li>
<li><a href="/testimonials" style="color:var(--bb-sand);font-size:var(--t-sm);">Testimonials</a></li>
<li><a href="/contact" style="color:var(--bb-sand);font-size:var(--t-sm);">Contact</a></li>
</ul>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Location</p>
<p style="color:var(--bb-sand);font-size:var(--t-sm);line-height:1.7;">Global practice.<br>Based in the United States.<br>Sessions in Bhutan, Saudi Arabia,<br>Japan, India, Oman, and beyond.</p>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Connect</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="https://instagram.com/bigbreathco" style="color:var(--bb-sand);font-size:var(--t-sm);">Instagram</a></li>
<li><a href="https://youtube.com/@bigbreath" style="color:var(--bb-sand);font-size:var(--t-sm);">YouTube</a></li>
<li><a href="/privacy-policy" style="color:var(--bb-sand);font-size:var(--t-sm);">Privacy Policy</a></li>
<li><a href="/terms-of-service" style="color:var(--bb-sand);font-size:var(--t-sm);">Terms of Service</a></li>
</ul>
</div>
</div>
<hr class="bb-rule" style="margin-top:var(--s-16);border-color:var(--bb-ink);">
<p style="font-size:var(--t-xs);letter-spacing:.1em;color:var(--bb-ink);">&copy; Big Breath 2026. All rights reserved.</p>
</div>
</footer>
<script>
(function(){
var els = document.querySelectorAll('.bb-reveal');
if (!els.length) return;
var io = new IntersectionObserver(function(entries){
entries.forEach(function(e){
if (e.isIntersecting) { e.target.classList.add('bb-reveal--in'); io.unobserve(e.target); }
});
}, { threshold: 0.12 });
els.forEach(function(el){ io.observe(el); });
})();
</script>
</body>
</html>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 KiB

+63
View File
@@ -0,0 +1,63 @@
#!/usr/bin/env python3
import asyncio, json
from playwright.async_api import async_playwright
BASE = "http://localhost:8011"
OUT = "/home/sirdrez/arisingmedia-websites/bigbreath.co/.planning/qa/visual-2026-06-01-post-fix"
PAGES = [
("home", "/"),
("about", "/about"),
("services", "/services"),
("testimonials", "/testimonials"),
("gallery", "/gallery"),
]
async def scroll_and_screenshot(page, url, path):
await page.goto(url, wait_until="networkidle")
# scroll top to bottom in 200px steps with 100ms pause
scroll_height = await page.evaluate("document.body.scrollHeight")
pos = 0
while pos < scroll_height:
await page.evaluate(f"window.scrollTo(0, {pos})")
await asyncio.sleep(0.1)
pos += 200
await page.evaluate("window.scrollTo(0, 0)")
await asyncio.sleep(2)
await page.screenshot(path=path, full_page=True)
async def count_elements(page, url):
await page.goto(url, wait_until="networkidle")
counts = await page.evaluate("""() => ({
faq: document.querySelectorAll('[class*="faq"]').length,
stat: document.querySelectorAll('[class*="stat"]').length,
footprint: document.querySelectorAll('[class*="footprint"]').length,
reveal: document.querySelectorAll('.bb-reveal').length,
section: document.querySelectorAll('.bb-section').length,
images: document.querySelectorAll('img').length,
reveal_opacity: (() => {
const el = document.querySelector('.bb-reveal');
return el ? getComputedStyle(el).opacity : 'N/A';
})(),
})""")
return counts
async def main():
async with async_playwright() as pw:
browser = await pw.firefox.launch()
ctx = await browser.new_context(viewport={"width": 1440, "height": 900})
results = {}
for name, path in PAGES:
page = await ctx.new_page()
url = BASE + path
img_path = f"{OUT}/{name}.png"
await scroll_and_screenshot(page, url, img_path)
counts = await count_elements(page, url)
results[name] = counts
print(f"SCREENSHOT: {img_path}")
print(f"COUNTS {name}: {json.dumps(counts)}")
await page.close()
await browser.close()
asyncio.run(main())
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
BASE="http://localhost:8011"
OUT="/home/sirdrez/arisingmedia-websites/bigbreath.co/.planning/qa/visual-2026-06-01-post-fix"
echo "=== MARKUP COUNTS ==="
home=$(curl -s "$BASE/")
echo "HOME bb-faq__item: $(echo "$home" | grep -o 'bb-faq__item' | wc -l)"
echo "HOME bb-stat: $(echo "$home" | grep -o 'bb-stat' | wc -l)"
echo "HOME footprint: $(echo "$home" | grep -oi 'footprint' | wc -l)"
echo "HOME js-enabled: $(echo "$home" | grep -o 'js-enabled' | wc -l)"
svc=$(curl -s "$BASE/services")
echo "SERVICES service-row: $(echo "$svc" | grep -oi 'service-row' | wc -l)"
gal=$(curl -s "$BASE/gallery")
echo "GALLERY .webp refs: $(echo "$gal" | grep -o '\.webp' | wc -l)"
about=$(curl -s "$BASE/about")
echo "ABOUT hero img match: $(echo "$about" | grep -oc 'about-hero\|bigjoe-about')"
echo "=== DONE ==="
+1188
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

+101
View File
@@ -0,0 +1,101 @@
"""Visual QA capture: bigbreath.co localhost:8011 -- 2026-06-01"""
import asyncio, os, sys
from pathlib import Path
from playwright.async_api import async_playwright
BASE = "http://localhost:8011"
OUT = Path("/home/sirdrez/arisingmedia-websites/bigbreath.co/.planning/qa/visual-2026-06-01")
OUT.mkdir(parents=True, exist_ok=True)
ROUTES = [
("home", "/"),
("about", "/about"),
("the-practice","/the-practice"),
("services", "/services"),
("keynotes", "/services/keynotes/"),
("testimonials","/testimonials"),
("gallery", "/gallery"),
("contact", "/contact"),
]
VIEWPORTS = [
("desktop", {"width": 1440, "height": 900}),
("mobile", {"width": 390, "height": 844}),
]
ERRORS = []
async def capture(page, url, slug, vp_name):
try:
await page.goto(url, wait_until="networkidle", timeout=30000)
await asyncio.sleep(1.2) # font swap
fname = OUT / f"{slug}-{vp_name}.png"
await page.screenshot(path=str(fname), full_page=True)
print(f"OK {fname.name}")
return fname
except Exception as e:
msg = f"FAIL {slug}-{vp_name}: {e}"
print(msg, file=sys.stderr)
ERRORS.append(msg)
return None
async def capture_dropdown(page, slug):
"""Desktop only: hover Services nav item and capture dropdown."""
try:
await page.goto(BASE + "/", wait_until="networkidle", timeout=30000)
await asyncio.sleep(1.0)
nav_item = page.locator("nav a", has_text="Services").first
await nav_item.hover()
await asyncio.sleep(0.8)
fname = OUT / f"{slug}-dropdown-desktop.png"
await page.screenshot(path=str(fname), full_page=False)
print(f"OK {fname.name}")
except Exception as e:
msg = f"FAIL {slug}-dropdown: {e}"
print(msg, file=sys.stderr)
ERRORS.append(msg)
async def capture_mobile_nav(page):
"""Mobile: open hamburger and capture open state."""
try:
await page.goto(BASE + "/", wait_until="networkidle", timeout=30000)
await asyncio.sleep(1.0)
hamburger = page.locator("button[aria-label*='menu'], button.hamburger, .nav-toggle, [class*='hamburger']").first
await hamburger.click()
await asyncio.sleep(0.6)
fname = OUT / "home-mobile-nav-open.png"
await page.screenshot(path=str(fname), full_page=False)
print(f"OK {fname.name}")
except Exception as e:
msg = f"FAIL mobile-nav-open: {e}"
print(msg, file=sys.stderr)
ERRORS.append(msg)
async def main():
async with async_playwright() as p:
browser = await p.firefox.launch(headless=True)
for vp_name, vp in VIEWPORTS:
ctx = await browser.new_context(viewport=vp)
page = await ctx.new_page()
for slug, route in ROUTES:
await capture(page, BASE + route, slug, vp_name)
if vp_name == "desktop":
await capture_dropdown(page, "services-nav")
if vp_name == "mobile":
await capture_mobile_nav(page)
await ctx.close()
await browser.close()
if ERRORS:
err_file = OUT / "errors.txt"
err_file.write_text("\n".join(ERRORS))
print(f"\n{len(ERRORS)} error(s) -- see {err_file}")
print(f"\nDone. Screenshots in {OUT}")
asyncio.run(main())
+405
View File
@@ -0,0 +1,405 @@
# Six Senses Section Pattern Catalog
# Extracted: 2026-06-01 via Playwright/Firefox headless
# Source pages: homepage, resorts index, spas index
# Screenshots: homepage.png, resorts.png, spas.png
---
## PATTERN 01: full_bleed_video_hero
PURPOSE: Opens the site with an autoplay full-viewport video overlaid by a single long-form philosophical headline, a secondary map CTA, and a discreet "play full video" link.
STRUCTURE:
<div class="video-js video-hero-dimensions"> <!-- full-width 1440 x 820 -->
<video autoplay muted loop playsinline></video>
<div class="hero-caption">
<div class="hero-caption__content">
<div class="hero-caption__text">
<h1><!-- 1-sentence brand manifesto, ~20 words --></h1>
<a class="cta-secondary"><!-- "VIEW PROPERTIES ON MAP" --></a>
</div>
</div>
</div>
</div>
KEY STYLE: viewport height 820px, video fills frame with object-fit cover, caption text is white on dark video, h1 font-family serif 40-52px, caption block left-aligned within a ~670px column, no overlay color layer (video darkness provides contrast), padding-top 0, caption sits in lower-left quadrant.
COPY PATTERN: Headline is 18-28 words, full sentence, philosophical. No eyebrow above h1. Secondary CTA in small caps uppercase, 4-5 words. Tertiary link "Play full video" at very small scale.
WHEN TO USE on bigbreath.co: Homepage opener, breathing-philosophy introduction before any scroll.
---
## PATTERN 02: featured_card_carousel
PURPOSE: Showcases 5-7 individual properties or offerings in a horizontally scrollable carousel with country eyebrow, property name h3, 1-sentence description, and an all-caps short-phrase CTA per card.
STRUCTURE:
<div class="container">
<h2><!-- "In the spotlight: featured properties" --></h2>
<a class="cta-view-all"><!-- "WHERE NEXT: VIEW ALL HOTELS AND RESORTS" --></a>
<div class="carousel center">
<div class="flexslider">
<ul class="slides">
<li> <!-- card: width ~487px, height ~684px -->
<span class="eyebrow"><!-- COUNTRY NAME --></span>
<img>
<h3><!-- Property name --></h3>
<p><!-- 1-2 sentence poetic descriptor --></p>
<a class="cta"><!-- ALL-CAPS EVOCATIVE PHRASE --></a>
</li>
</ul>
</div>
</div>
</div>
KEY STYLE: Container 1440px wide, carousel overflows at ~1670px so partial next card is visible. Card images tall-portrait (roughly 3:4 aspect ratio). Eyebrow uppercase spaced tracking 2-3px, 11px. h3 serif 22-26px. Body text 16px Avenir Next, color rgb(102,102,102). CTA all-caps small condensed with arrow right. Gap between cards ~20px. Bg transparent on off-white page background.
COPY PATTERN: Eyebrow = country in capitals (4-8 chars). h3 = brand + location, 3-5 words. Body = 1-2 sentences, 15-25 words, poetic. CTA = metaphorical phrase in all-caps, 4-7 words (e.g. "STILL THE CITY, STIR YOUR SOUL").
WHEN TO USE on bigbreath.co: Retreat/session type showcase, or "featured experiences" block mid-page.
---
## PATTERN 03: philosophy_text_carousel
PURPOSE: A compact rotating carousel of 3-4 short philosophy statements, each with a one-sentence supporting line and an all-caps CTA, displayed side-by-side in 3-col grid at desktop width.
STRUCTURE:
<div class="carousel carousel-text">
<div class="flexslider">
<ul class="slides">
<li class="carousel-text__slide">
<div class="carousel-text__content">
<p><!-- 1-sentence value statement, 15-20 words --></p>
<a class="cta"><!-- "OUR VALUES" / "PIONEERING WELLNESS" / "SUSTAINABILITY" --></a>
</div>
</li>
</ul>
</div>
</div>
KEY STYLE: Container 1228px, 3 columns each ~409px wide, height 177px (very compact). No images. Background transparent. Font color rgb(0,0,0) for body, CTA in uppercase with underline or arrow. This sits inside a wider section (~630px tall) that pairs it with a large hero image carousel on the left.
COPY PATTERN: Each slide is 1 sentence 15-22 words max. CTA is a category label in 2 words, all-caps. 3 slides rotating. No eyebrow.
WHEN TO USE on bigbreath.co: Brand-values mid-page block, showing 3 breath/wellness pillars side by side.
---
## PATTERN 04: image_carousel_with_text_panel
PURPOSE: Large-format image carousel (left 60%) paired with a tabbed or rotating text panel (right 40%) allowing the user to flip through visual proof-points of values or services.
STRUCTURE:
<section>
<div class="carousel carousel-hero"> <!-- width 1440px, height 630px -->
<div class="flexslider">
<ul class="slides">
<li><img></li> <!-- full-bleed tall image -->
</ul>
</div>
</div>
<div class="row row-2"> <!-- 3-col CTA strip below or adjacent -->
<div>Our values <a>OUR VALUES</a></div>
<div>Pioneering wellness <a>PIONEERING WELLNESS</a></div>
<div>Sustainability <a>SUSTAINABILITY</a></div>
</div>
</section>
KEY STYLE: Carousel images fill ~950px wide at 684px tall. Text strip below at 1228px x 177px. No padding on image container. CTAs in small-caps with tracking. Background of text strip is off-white/cream matching page bg.
COPY PATTERN: Image has no caption. Adjacent text strip holds 3 navigational labels (2 words each, all-caps) each with a 1-sentence teaser (15-20 words). User clicks label to switch image.
WHEN TO USE on bigbreath.co: "How we work" or "Our approach" section showing 3 program pillars with photography proof.
---
## PATTERN 05: editorial_split_tall_image
PURPOSE: One-to-one editorial block: a tall portrait image on one side, a text column (eyebrow + h2/h3 + body + CTA) on the other. Used to give depth to a single resort, topic, or concept.
STRUCTURE:
<div class="row editorial">
<div class="col-image"> <!-- 50-55% width, image 3:4 tall -->
<img>
</div>
<div class="col-text"> <!-- 45-50% width, vertically centered -->
<span class="eyebrow"><!-- COUNTRY / CATEGORY --></span>
<h3><!-- Property or topic name --></h3>
<p><!-- 2-3 sentences, 30-40 words --></p>
<a class="cta"><!-- ALL-CAPS 4-6 WORD EVOCATIVE PHRASE --></a>
</div>
</div>
KEY STYLE: Total row height 684px. Image right-to-edge or flush. Text column has generous left padding ~60px. No border or box-shadow. Bg transparent. Alternates left/right across repeated instances on resorts index page.
COPY PATTERN: Eyebrow uppercase country/category, 1-2 words. h3 serif 22-28px, 3-5 words. Body 25-35 words, poetic. CTA all-caps 4-6 words, metaphorical not functional.
WHEN TO USE on bigbreath.co: Retreat program details, instructor bios, location features.
---
## PATTERN 06: upcoming_card_grid
PURPOSE: Grid of future openings or secondary offerings, 3-per-row, each with eyebrow location, h3 title, short description, and a "DISCOVER MORE" link. Country eyebrow differentiates the category of card.
STRUCTURE:
<div class="carousel"> <!-- overflows at 1670px, 3 cards visible -->
<div class="flexslider">
<ul>
<li>
<span class="eyebrow"><!-- COUNTRY --></span>
<img>
<h3><!-- Name + year in parens --></h3>
<p><!-- 2-3 sentence description, 35-50 words --></p>
<a>DISCOVER MORE</a>
</li>
</ul>
</div>
</div>
KEY STYLE: 3 cards visible at 1440px, each ~487px wide. Card images landscape (roughly 16:9). Eyebrow uppercase tracking. h3 includes year annotation in parens. CTA is generic "DISCOVER MORE" -- functional not evocative. This is the one place on the site where functional CTAs appear. Background cream/off-white.
COPY PATTERN: 20 cards total in the data set (all upcoming properties). Body is factual descriptive, 35-50 words. CTA is always "DISCOVER MORE" (2 words, all-caps).
WHEN TO USE on bigbreath.co: "Coming soon" program announcements, waitlist teaser.
---
## PATTERN 07: services_tab_strip
PURPOSE: Horizontal strip of 5 category tabs (Offers, Gift Cards, Experiences, News, Meetings and Events) with matching card below, used to navigate between topic areas in a single compact module.
STRUCTURE:
<section class="box box52 fadeInUp">
<h2><!-- "What's on at Six Senses?" --></h2>
<nav class="tabs">
<button>OFFERS</button>
<button>GIFT CARDS</button>
<button>EXPERIENCES</button>
<button>NEWS</button>
<button>MEETINGS & EVENTS</button>
</nav>
<div class="tab-content">
<!-- active card: eyebrow + image + h3 + body + CTA -->
</div>
</section>
KEY STYLE: Section 1440px wide, 708px tall. Tabs in uppercase Avenir Next Condensed 11-13px, spaced with generous padding. Active tab underlined or with accent color. Content below uses editorial-split layout. 42 card items detected in DOM (all tabs pre-rendered). fadeInUp animation class on scroll entry.
COPY PATTERN: Tab labels are category nouns (2-3 words). Inside each tab: eyebrow + short poetic h3 + 1-2 body sentences + all-caps evocative CTA. Section headline is conversational question format.
WHEN TO USE on bigbreath.co: "What's at BigBreath" hub showing programs, gifts, retreats, events in one compact module.
---
## PATTERN 08: resorts_index_list
PURPOSE: Full directory listing of all properties, each row showing a flexslider image (landscape thumbnail), property name as h2/h3, location text, and a "BOOK NOW" CTA button. Filtered by destination and date via a form bar above.
STRUCTURE:
<div class="properties-list">
<div class="properties-list-title-wrapper">
<h1>Hotels &amp; Resorts</h1>
<span>27 Hotels &amp; Resorts</span>
</div>
<div class="filters-wrapper">
<input placeholder="Select a destination or hotel">
<input type="date" placeholder="Check-in">
<input type="date" placeholder="Check-out">
<button class="search">SEARCH</button>
<a>VIEW IN MAP</a>
</div>
<ul class="properties-list__items">
<li>
<div class="flexslider"><!-- 3-4 image thumbnails --></div>
<div class="property-text">
<h3><!-- Resort name --></h3>
<p><!-- Location --></p>
<a class="btn">BOOK NOW</a>
</div>
</li>
</ul>
</div>
KEY STYLE: List items alternate full-width rows. Image slider ~487px wide at 305px tall (landscape). Text block beside it. Filter bar at top is 1122px wide with form fields inline. Count badge "27 Hotels & Resorts" is small text below h1.
COPY PATTERN: h1 is category noun. Count text is "{n} Hotels & Resorts". Property rows have name + country only, no marketing copy. CTA is generic functional "BOOK NOW" or "DISCOVER."
WHEN TO USE on bigbreath.co: Retreats or programs directory page.
---
## PATTERN 09: spas_editorial_split_list
PURPOSE: Stacked alternating editorial pairs -- left image (landscape/tall), right text block with property name h3, 1-2 sentences, and a "DISCOVER" button. Used on the spas index to feature 3-6 top properties.
STRUCTURE:
<main>
<div class="intro-text">
<h1>Six Senses Spas</h1>
<p><!-- 2-sentence brand intro --></p>
</div>
<ul class="spa-list">
<li class="spa-item">
<div class="spa-item__image">
<img><!-- landscape, approx 16:9 -->
</div>
<div class="spa-item__text">
<span class="eyebrow"><!-- COUNTRY --></span>
<h3><!-- Spa name --></h3>
<p><!-- 2 sentences, 25-35 words --></p>
<a class="btn-discover">DISCOVER</a>
</div>
</li>
</ul>
</main>
KEY STYLE: Page background white/cream. Intro text block max-width ~720px, centered. List items 1122px wide, image ~55% left, text 45% right. Button "DISCOVER" is pill-shaped, dark bg (brand purple/charcoal), white text, all-caps. 3 spas shown on initial load, "VIEW IN MAP" toggle at top right.
COPY PATTERN: Intro block is 2 sentences, factual brand positioning. Each spa has a 2-sentence evocative descriptor, 20-30 words. Button is generic "DISCOVER."
WHEN TO USE on bigbreath.co: Services or modalities page -- list of breath sessions/offerings with image and short description.
---
## PATTERN 10: journey_nav_strip
PURPOSE: A bottom-of-page wayfinding strip with 5-6 category links (Offers, Newsletter, Travel Trade, etc.) displayed as large text links in a horizontal band, inviting users to go deeper.
STRUCTURE:
<section class="journey-nav">
<h2><!-- "Journey through Six Senses: offers and explore" --></h2>
<nav>
<a>Offers</a>
<a>Newsletter</a>
<a>Travel Trade</a>
<a>Media Center</a>
<a>Careers</a>
</nav>
</section>
KEY STYLE: Full-width, cream background. Links are serif or condensed, large (24-32px), separated by subtle dividers. Minimal padding. Functions as a sitemap-flavored section, not a footer.
COPY PATTERN: Headline is an invitation: "Journey through [brand]: [verb] and [verb]." Links are 1-2 word category nouns.
WHEN TO USE on bigbreath.co: Bottom-of-homepage navigation block linking to retreats, newsletter, community, FAQs.
---
## PATTERN 11: footer_column_grid
PURPOSE: Standard footer with 4-5 columns: brand links column, contact info, social icons, and legal links. Logo centered or top-left. Minimal contrast -- same bg as page or dark.
STRUCTURE:
<footer>
<div class="footer-logo"><img alt="Six Senses logo"></div>
<div class="footer-columns">
<div><h4>SIX SENSES</h4><ul><li><a>News</a></li>...</ul></div>
<div><h4>SIX SENSES HOTELS RESORTS SPAS</h4><address>...</address></div>
<div><h4>GET IN TOUCH</h4><address>...</address></div>
<div class="social"><a><!-- Facebook, IG, Pinterest, YouTube --></a></div>
</div>
<div class="footer-legal"><a>Cookie Policy</a>...</div>
</footer>
KEY STYLE: Multi-column at desktop. Logo top-left, social icons right-aligned. Font Avenir Next 12-13px. Color rgb(102,102,102) on cream bg. No heavy borders. Legal links in very small text bottom row.
COPY PATTERN: Column heads in uppercase 11px. Links are functional nouns. Contact block has full postal address. Social icons without labels.
WHEN TO USE on bigbreath.co: Site footer, no changes needed to the pattern.
---
## PATTERN 12: full_bleed_quote
PURPOSE: A full-viewport-width section with a centered pull quote or brand statement in large serif type, no image, cream or very light background. Used as a palette-cleanser between feature sections.
STRUCTURE:
<section class="quote-block">
<div class="quote-block__inner">
<blockquote>
<!-- 1 sentence, 15-25 words, philosophical -->
</blockquote>
</div>
</section>
KEY STYLE: Width 1440px. Background cream rgb(245,242,235) or near-white. Blockquote serif 36-48px, centered, max-width 860px, generous vertical padding 80-120px. No image, no CTA, no eyebrow. Text color near-black. Inferred from homepage's editorial philosophy sections; confirmed present on resort detail pages.
COPY PATTERN: One sentence. No attribution shown. Verb in present tense. 15-25 words. No CTA.
WHEN TO USE on bigbreath.co: Between hero and program cards, or before testimonials -- a breath of white space with a single defining statement.
---
## PATTERN 13: newsletter_signup
PURPOSE: A compact inline signup module at bottom of content with a one-line heading, single email input, and a submit button. Minimal design, no image.
STRUCTURE:
<section class="newsletter">
<h3><!-- "Stay in touch" or "Get inspired" --></h3>
<p><!-- 1-sentence invitation --></p>
<form>
<input type="email" placeholder="Your email address">
<button type="submit">SUBSCRIBE</button>
</form>
</section>
KEY STYLE: Width 600-900px, centered. No background image. Form inline at desktop, stacked at mobile. Button styled same as primary CTA (dark pill). Privacy note in 11px below form.
COPY PATTERN: h3 is 3-4 words imperative. Subtext is 1 sentence 10-15 words. Placeholder "Your email address." Button "SUBSCRIBE" or "JOIN."
WHEN TO USE on bigbreath.co: Bottom of homepage and retreats pages, above footer.
---
## PATTERN 14: full_page_cta
PURPOSE: A near-full-viewport section with a background image (or dark color fill), centered h2, 1-2 body lines, and a primary CTA button. Used to drive a single conversion action.
STRUCTURE:
<section class="cta-full" style="background-image: url(...)">
<div class="cta-full__overlay"><!-- semi-transparent dark --></div>
<div class="cta-full__content">
<h2><!-- 3-6 word imperative headline --></h2>
<p><!-- 1 sentence, 10-15 words --></p>
<a class="btn"><!-- "BOOK YOUR STAY" / "EXPLORE RETREATS" --></a>
</div>
</section>
KEY STYLE: Height 500-640px. Background image fills section, overlay rgba(0,0,0,0.35) to 0.45. Text white. h2 serif 36-48px centered. Button white outline or brand color fill. Generous padding top/bottom 80px.
COPY PATTERN: Headline is a verb-led invitation, 3-6 words. Body is optional 1 sentence. CTA is functional 3-4 words in uppercase.
WHEN TO USE on bigbreath.co: End of homepage, retreat detail pages, to drive booking or waitlist.
---
# Typography System (observed)
Primary serif: system-serif stack (no custom webfont loaded at this tier -- renders as Times/Georgia fallback for body headings)
Secondary sans: "Avenir Next", "Avenir Next Condensed", arial
Body size: 16px
Body color: rgb(102, 102, 102) -- medium gray, not black
Heading color: white on dark, near-black rgb(0,0,0) on light
Eyebrow style: uppercase, tracking 2-4px, 11-13px, Avenir Next Condensed
CTA style: all-caps, Avenir Next Condensed or regular, 12-14px, often with right-arrow glyph or underline
# Color Palette (observed)
Page background: off-white / cream (rgb ~245,242,235 inferred from screenshots)
Primary text: rgb(102,102,102)
Heading / accent text: rgb(0,0,0) or rgb(255,255,255)
Video hero bg: rgb(0,0,0)
CTA button fill: dark charcoal or brand purple (exact hex not extractable from computed styles)
No explicit brand_colors returned by computed style scan (colors applied via CSS classes not inline)
# bigbreath.co Priority Adoption Notes (see TOP 5 in report)
1. full_bleed_video_hero -- open with breath in motion
2. featured_card_carousel -- show retreat types / upcoming programs
3. editorial_split_tall_image -- feature each breathwork modality
4. philosophy_text_carousel -- display the 3 BigBreath pillars
5. full_page_cta -- drive retreat bookings above fold-break
+241
View File
@@ -0,0 +1,241 @@
#!/usr/bin/env python3
"""Six Senses site structure extractor for bigbreath.co design reference."""
import json, re, time
from pathlib import Path
from playwright.sync_api import sync_playwright
OUT = Path("/home/sirdrez/arisingmedia-websites/bigbreath.co/.planning/ref-patterns/sixsenses")
OUT.mkdir(parents=True, exist_ok=True)
UA = "Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0"
PAGES = [
("homepage", "https://www.sixsenses.com/en/"),
("resorts", "https://www.sixsenses.com/en/resorts"),
("wellness", "https://www.sixsenses.com/en/wellness"),
]
COOKIE_SELECTORS = [
"button:has-text('Accept All')",
"button:has-text('Accept')",
"[id*='onetrust-accept']",
".cookie-accept",
"[class*='accept-all']",
"[aria-label*='Accept']",
"button:has-text('I Accept')",
"button:has-text('Agree')",
]
def dismiss_cookies(page):
for sel in COOKIE_SELECTORS:
try:
btn = page.locator(sel).first
if btn.is_visible(timeout=2000):
btn.click()
page.wait_for_timeout(800)
return True
except Exception:
pass
return False
def get_computed(page, selector, prop):
try:
return page.eval_on_selector(selector, f"el => getComputedStyle(el).{prop}")
except Exception:
return ""
def extract_sections(page):
sections = []
# grab top-level structural elements
handles = page.query_selector_all("main > *, article > *, [role='main'] > *, body > section, body > div > section, body > div > article")
if not handles:
handles = page.query_selector_all("section, article, [class*='section'], [class*='block'], [class*='hero'], [class*='module']")
seen = set()
for h in handles[:40]:
try:
tag = h.evaluate("el => el.tagName.toLowerCase()")
cls = h.evaluate("el => el.className") or ""
role = h.get_attribute("role") or ""
bb = h.bounding_box()
if not bb or bb["height"] < 40:
continue
uid = f"{tag}|{cls[:60]}"
if uid in seen:
continue
seen.add(uid)
bg = h.evaluate("el => getComputedStyle(el).backgroundColor")
pt = h.evaluate("el => getComputedStyle(el).paddingTop")
pb = h.evaluate("el => getComputedStyle(el).paddingBottom")
txt = (h.inner_text() or "")[:400].replace("\n", " ").strip()
# card/grid detection
cards = h.query_selector_all("[class*='card'], [class*='item'], [class*='tile'], article, li[class]")
card_count = len(cards)
# video detection
has_video = bool(h.query_selector("video, [class*='video'], iframe[src*='vimeo'], iframe[src*='youtube']"))
# image detection
imgs = h.query_selector_all("img, [class*='image'], picture")
has_img = len(imgs) > 0
# guess section type
sec_type = "unknown"
cls_lower = cls.lower()
txt_lower = txt.lower()
w = bb["width"]
h_px = bb["height"]
if any(x in cls_lower for x in ["hero", "banner", "masthead", "jumbotron"]):
sec_type = "hero"
elif has_video and h_px > 400:
sec_type = "hero_video" if card_count == 0 else "video_block"
elif card_count >= 3:
sec_type = "card_grid"
elif any(x in cls_lower for x in ["quote", "testimonial", "pull"]):
sec_type = "quote"
elif any(x in cls_lower for x in ["footer", "foot"]) or tag == "footer":
sec_type = "footer"
elif any(x in cls_lower for x in ["nav", "header", "menu"]) or tag in ("header", "nav"):
sec_type = "nav"
elif any(x in cls_lower for x in ["split", "editorial", "feature"]):
sec_type = "editorial_split"
elif any(x in cls_lower for x in ["newsletter", "subscribe", "signup"]):
sec_type = "newsletter"
elif any(x in cls_lower for x in ["journal", "blog", "news", "article"]):
sec_type = "journal_teaser"
elif any(x in cls_lower for x in ["map", "location", "destination"]):
sec_type = "location_map"
elif any(x in cls_lower for x in ["carousel", "slider", "swiper"]):
sec_type = "carousel"
elif any(x in cls_lower for x in ["list", "index", "directory"]):
sec_type = "named_list"
elif any(x in cls_lower for x in ["wellness", "spa", "service"]):
sec_type = "wellness_strip"
elif has_img and len(txt) < 200 and h_px > 400:
sec_type = "editorial_split"
elif len(txt) > 300 and not has_img:
sec_type = "philosophy_block"
elif h_px > 500 and has_img:
sec_type = "full_bleed_image"
sections.append({
"tag": tag,
"class": cls[:120],
"role": role,
"type": sec_type,
"bg": bg,
"padding_top": pt,
"padding_bottom": pb,
"width_px": round(bb["width"]),
"height_px": round(bb["height"]),
"card_count": card_count,
"has_video": has_video,
"has_image": has_img,
"text_snippet": txt[:300],
})
except Exception:
pass
return sections
def run():
structure = {}
screenshots = []
with sync_playwright() as p:
browser = p.firefox.launch(headless=True, args=["--no-sandbox"])
ctx = browser.new_context(
viewport={"width": 1440, "height": 900},
user_agent=UA,
)
ctx.set_extra_http_headers({
"Accept-Language": "en-US,en;q=0.9",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
})
for slug, url in PAGES:
print(f" Loading {slug}: {url}")
page = ctx.new_page()
try:
resp = page.goto(url, wait_until="domcontentloaded", timeout=60000)
page.wait_for_timeout(3000)
dismiss_cookies(page)
page.wait_for_timeout(1500)
# try networkidle with short timeout, fallback to load
try:
page.wait_for_load_state("networkidle", timeout=15000)
except Exception:
pass
page.wait_for_timeout(2000)
# screenshot
shot_path = OUT / f"{slug}.png"
page.screenshot(path=str(shot_path), full_page=True, timeout=30000)
screenshots.append(str(shot_path))
print(f" Screenshot: {shot_path}")
# if resorts page, try to follow first resort link
if slug == "resorts":
resort_links = page.query_selector_all("a[href*='/resorts/']")
if resort_links:
first_href = resort_links[0].get_attribute("href")
if first_href and first_href != "/en/resorts":
full_url = first_href if first_href.startswith("http") else f"https://www.sixsenses.com{first_href}"
print(f" Following resort link: {full_url}")
page2 = ctx.new_page()
try:
page2.goto(full_url, wait_until="domcontentloaded", timeout=60000)
page2.wait_for_timeout(3000)
dismiss_cookies(page2)
page2.wait_for_timeout(1500)
try:
page2.wait_for_load_state("networkidle", timeout=15000)
except Exception:
pass
page2.wait_for_timeout(2000)
shot2 = OUT / "resort_detail.png"
page2.screenshot(path=str(shot2), full_page=True, timeout=30000)
screenshots.append(str(shot2))
secs2 = extract_sections(page2)
structure["resort_detail"] = {
"url": full_url,
"status": page2.url,
"sections": secs2,
}
print(f" Resort detail: {len(secs2)} sections")
except Exception as e:
structure["resort_detail"] = {"url": full_url, "error": str(e)}
finally:
page2.close()
sections = extract_sections(page)
structure[slug] = {
"url": url,
"final_url": page.url,
"http_status": resp.status if resp else None,
"sections": sections,
}
print(f" Sections found: {len(sections)}")
except Exception as e:
structure[slug] = {"url": url, "error": str(e)}
print(f" ERROR: {e}")
finally:
page.close()
browser.close()
# save structure
out_json = OUT / "structure.json"
out_json.write_text(json.dumps(structure, indent=2))
print(f"\nstructure.json written: {out_json.stat().st_size} bytes")
print(f"Screenshots: {len(screenshots)}")
return structure, screenshots
if __name__ == "__main__":
s, shots = run()
print(f"\nDone. Pages: {list(s.keys())}")
+253
View File
@@ -0,0 +1,253 @@
#!/usr/bin/env python3
"""Six Senses deep DOM extractor -- SPA-aware, Firefox headless."""
import json, time
from pathlib import Path
from playwright.sync_api import sync_playwright
OUT = Path("/home/sirdrez/arisingmedia-websites/bigbreath.co/.planning/ref-patterns/sixsenses")
OUT.mkdir(parents=True, exist_ok=True)
UA = "Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0"
PAGES = [
("homepage", "https://www.sixsenses.com/en/"),
("resorts", "https://www.sixsenses.com/en/resorts"),
("wellness", "https://www.sixsenses.com/en/wellness"),
]
COOKIE_SELECTORS = [
"button:has-text('Accept All')",
"button:has-text('Accept')",
"[id*='onetrust-accept']",
"button:has-text('I Accept')",
"button:has-text('Agree')",
"[class*='accept']",
"[class*='consent'] button",
]
EXTRACT_JS = """
() => {
const results = [];
// Cast widest possible net for structural containers
const candidates = document.querySelectorAll(
'section, article, main, [class*="section"], [class*="block"], [class*="hero"], ' +
'[class*="module"], [class*="container"], [class*="panel"], [class*="row"], ' +
'[class*="strip"], [class*="band"], [class*="segment"], [class*="wrapper"], ' +
'[class*="carousel"], [class*="slider"], [class*="grid"], [class*="layout"]'
);
const seen = new Set();
const minH = 80;
for (const el of candidates) {
const rect = el.getBoundingClientRect();
const scrollH = el.scrollHeight;
const h = Math.max(rect.height, scrollH);
if (h < minH) continue;
// skip tiny or hidden
if (rect.width < 200) continue;
const cls = (el.className || '').toString().slice(0, 150);
const tag = el.tagName.toLowerCase();
const key = tag + '|' + cls.slice(0, 60);
if (seen.has(key)) continue;
seen.add(key);
const st = getComputedStyle(el);
const bg = st.backgroundColor;
const pt = st.paddingTop;
const pb = st.paddingBottom;
const color = st.color;
const fontSize = st.fontSize;
const txt = (el.innerText || '').slice(0, 500).replace(/\\n/g, ' ').trim();
const cardCount = el.querySelectorAll('[class*="card"],[class*="item"],[class*="tile"],article,li[class]').length;
const hasVideo = !!el.querySelector('video,[class*="video"],iframe[src*="vimeo"],iframe[src*="youtube"]');
const imgCount = el.querySelectorAll('img,picture,[class*="image"]').length;
const hasBtn = !!el.querySelector('a[class*="btn"],button,[class*="cta"],[class*="button"]');
// eyebrow / labels
const eyebrows = [];
for (const small of el.querySelectorAll('[class*="eyebrow"],[class*="label"],[class*="tag"],[class*="category"],[class*="kicker"],small')) {
const t = (small.innerText || '').trim();
if (t && t.length < 60) eyebrows.push(t);
}
// headings
const headings = [];
for (const hx of el.querySelectorAll('h1,h2,h3')) {
const t = (hx.innerText || '').trim();
if (t && t.length < 120) headings.push({tag: hx.tagName.toLowerCase(), text: t});
if (headings.length >= 3) break;
}
// CTA text
const ctas = [];
for (const a of el.querySelectorAll('a[class*="btn"],a[class*="cta"],a[class*="button"],button')) {
const t = (a.innerText || '').trim();
if (t && t.length < 60) ctas.push(t);
if (ctas.length >= 3) break;
}
results.push({
tag, cls, bg, pt, pb, color, fontSize,
width_px: Math.round(rect.width || document.body.scrollWidth),
height_px: Math.round(h),
card_count: cardCount,
has_video: hasVideo,
img_count: imgCount,
has_btn: hasBtn,
eyebrows,
headings,
ctas,
text_snippet: txt.slice(0, 300),
});
if (results.length >= 60) break;
}
return results;
}
"""
PAGE_META_JS = """
() => {
const title = document.title;
const fonts = [...new Set([...document.querySelectorAll('*')].slice(0,200).map(el => getComputedStyle(el).fontFamily))].slice(0,6);
const colors = [...new Set([...document.querySelectorAll('a,button,[class*="btn"],[class*="cta"]')].slice(0,20).map(el => getComputedStyle(el).backgroundColor))].filter(c => c && c !== 'rgba(0, 0, 0, 0)').slice(0,5);
return {title, fonts, brand_colors: colors};
}
"""
def dismiss_cookies(page):
for sel in COOKIE_SELECTORS:
try:
btn = page.locator(sel).first
if btn.is_visible(timeout=2000):
btn.click()
page.wait_for_timeout(1000)
return
except Exception:
pass
def scroll_page(page):
# scroll down to trigger lazy loads
page.evaluate("window.scrollTo(0, document.body.scrollHeight / 3)")
page.wait_for_timeout(800)
page.evaluate("window.scrollTo(0, document.body.scrollHeight * 2 / 3)")
page.wait_for_timeout(800)
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
page.wait_for_timeout(1000)
page.evaluate("window.scrollTo(0, 0)")
page.wait_for_timeout(500)
def load_page(ctx, url):
page = ctx.new_page()
resp = None
try:
resp = page.goto(url, wait_until="domcontentloaded", timeout=60000)
page.wait_for_timeout(4000)
dismiss_cookies(page)
page.wait_for_timeout(1500)
try:
page.wait_for_load_state("networkidle", timeout=20000)
except Exception:
pass
page.wait_for_timeout(2000)
scroll_page(page)
page.wait_for_timeout(1500)
except Exception as e:
return page, resp, str(e)
return page, resp, None
def run():
structure = {}
screenshots = []
with sync_playwright() as p:
browser = p.firefox.launch(headless=True)
ctx = browser.new_context(
viewport={"width": 1440, "height": 900},
user_agent=UA,
)
ctx.set_extra_http_headers({"Accept-Language": "en-US,en;q=0.9"})
for slug, url in PAGES:
print(f"\n[{slug}] {url}")
page, resp, err = load_page(ctx, url)
shot = OUT / f"{slug}.png"
try:
page.screenshot(path=str(shot), full_page=True, timeout=40000)
screenshots.append(str(shot))
sz = shot.stat().st_size
print(f" screenshot: {sz:,} bytes")
except Exception as e:
print(f" screenshot failed: {e}")
sections = []
meta = {}
if not err:
try:
sections = page.evaluate(EXTRACT_JS)
meta = page.evaluate(PAGE_META_JS)
print(f" sections: {len(sections)}")
except Exception as e:
print(f" extract error: {e}")
# resort detail follow
if slug == "resorts" and not err:
links = page.query_selector_all("a[href*='/resorts/']")
resort_url = None
for lnk in links:
href = lnk.get_attribute("href") or ""
if "/resorts/" in href and href != "/en/resorts" and "/resorts" != href.rstrip("/"):
resort_url = href if href.startswith("http") else f"https://www.sixsenses.com{href}"
break
if resort_url:
print(f" following resort: {resort_url}")
rpage, rresp, rerr = load_page(ctx, resort_url)
rshot = OUT / "resort_detail.png"
try:
rpage.screenshot(path=str(rshot), full_page=True, timeout=40000)
screenshots.append(str(rshot))
print(f" resort screenshot: {rshot.stat().st_size:,} bytes")
except Exception as e:
print(f" resort screenshot failed: {e}")
rsecs = []
rmeta = {}
if not rerr:
try:
rsecs = rpage.evaluate(EXTRACT_JS)
rmeta = rpage.evaluate(PAGE_META_JS)
print(f" resort sections: {len(rsecs)}")
except Exception as e:
print(f" resort extract error: {e}")
structure["resort_detail"] = {
"url": resort_url, "meta": rmeta,
"section_count": len(rsecs), "sections": rsecs,
"error": rerr,
}
rpage.close()
structure[slug] = {
"url": url, "final_url": page.url,
"http_status": resp.status if resp else None,
"meta": meta,
"section_count": len(sections),
"sections": sections,
"error": err,
}
page.close()
browser.close()
out_json = OUT / "structure.json"
out_json.write_text(json.dumps(structure, indent=2))
print(f"\nstructure.json: {out_json.stat().st_size:,} bytes")
print(f"Screenshots: {len(screenshots)}")
return structure, screenshots
if __name__ == "__main__":
s, shots = run()
total_secs = sum(v.get("section_count", 0) for v in s.values())
print(f"Total sections across all pages: {total_secs}")
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

+713
View File
@@ -0,0 +1,713 @@
{
"homepage": {
"url": "https://www.sixsenses.com/en/",
"final_url": "https://www.sixsenses.com/en/",
"http_status": 200,
"meta": {
"title": "Luxury Resorts, Five Star Hotels & Wellness Spas | Six Senses",
"fonts": [
"serif",
"\"Avenir Next\"",
"arial",
"\"Avenir Next Condensed\""
],
"brand_colors": []
},
"section_count": 18,
"sections": [
{
"tag": "div",
"cls": "video-js video-hero-dimensions vjs-controls-disabled vjs-workinghover vjs-v7 vjs-playing vjs-has-started vjs-user-inactive",
"bg": "rgb(0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(255, 255, 255)",
"fontSize": "10px",
"width_px": 1440,
"height_px": 820,
"card_count": 7,
"has_video": true,
"img_count": 0,
"has_btn": true,
"eyebrows": [
"Color",
"Transparency",
"Color",
"Transparency",
"Color",
"Transparency"
],
"headings": [],
"ctas": [
"Play Video",
"Pause",
"Unmute"
],
"text_snippet": ""
},
{
"tag": "div",
"cls": "hero-caption ",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1440,
"height_px": 720,
"card_count": 0,
"has_video": true,
"img_count": 0,
"has_btn": false,
"eyebrows": [],
"headings": [
{
"tag": "h1",
"text": "Some places you visit. Others, you feel, by reconnecting with yourself, others, and the world around you."
}
],
"ctas": [],
"text_snippet": "Some places you visit. Others, you feel, by reconnecting with yourself, others, and the world around you. VIEW PROPERTIES ON MAP Play full video"
},
{
"tag": "div",
"cls": "hero-caption__content",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(255, 255, 255)",
"fontSize": "16px",
"width_px": 1340,
"height_px": 323,
"card_count": 0,
"has_video": true,
"img_count": 0,
"has_btn": false,
"eyebrows": [],
"headings": [
{
"tag": "h1",
"text": "Some places you visit. Others, you feel, by reconnecting with yourself, others, and the world around you."
}
],
"ctas": [],
"text_snippet": "Some places you visit. Others, you feel, by reconnecting with yourself, others, and the world around you. VIEW PROPERTIES ON MAP Play full video"
},
{
"tag": "div",
"cls": "hero-caption__text",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(255, 255, 255)",
"fontSize": "16px",
"width_px": 670,
"height_px": 323,
"card_count": 0,
"has_video": false,
"img_count": 0,
"has_btn": false,
"eyebrows": [],
"headings": [
{
"tag": "h1",
"text": "Some places you visit. Others, you feel, by reconnecting with yourself, others, and the world around you."
}
],
"ctas": [],
"text_snippet": "Some places you visit. Others, you feel, by reconnecting with yourself, others, and the world around you. VIEW PROPERTIES ON MAP"
},
{
"tag": "div",
"cls": "container",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1440,
"height_px": 841,
"card_count": 7,
"has_video": false,
"img_count": 10,
"has_btn": true,
"eyebrows": [
"UNITED KINGDOM",
"JAPAN",
"TURKEY",
"SPAIN",
"INDIA"
],
"headings": [
{
"tag": "h2",
"text": "In the spotlight: featured properties"
},
{
"tag": "h3",
"text": "Six Senses London"
},
{
"tag": "h3",
"text": "Six Senses Kyoto"
}
],
"ctas": [
"WHERE NEXT: VIEW ALL HOTELS AND RESORTS",
"STILL THE CITY, STIR YOUR SOUL",
"STEP INTO KYOTO'S ZEN BEAUTY"
],
"text_snippet": "In the spotlight: featured properties WHERE NEXT: VIEW ALL HOTELS AND RESORTS UNITED KINGDOM Six Senses London A different rhythm for London. Courtyard calm, sensory rituals, and the first Six Senses Place, coming to The Whiteley in Bayswater. STILL THE CITY, STIR YOUR SOUL JAPAN Six Sense"
},
{
"tag": "div",
"cls": "row",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1440,
"height_px": 841,
"card_count": 7,
"has_video": false,
"img_count": 10,
"has_btn": true,
"eyebrows": [
"UNITED KINGDOM",
"JAPAN",
"TURKEY",
"SPAIN",
"INDIA"
],
"headings": [
{
"tag": "h2",
"text": "In the spotlight: featured properties"
},
{
"tag": "h3",
"text": "Six Senses London"
},
{
"tag": "h3",
"text": "Six Senses Kyoto"
}
],
"ctas": [
"WHERE NEXT: VIEW ALL HOTELS AND RESORTS",
"STILL THE CITY, STIR YOUR SOUL",
"STEP INTO KYOTO'S ZEN BEAUTY"
],
"text_snippet": "In the spotlight: featured properties WHERE NEXT: VIEW ALL HOTELS AND RESORTS UNITED KINGDOM Six Senses London A different rhythm for London. Courtyard calm, sensory rituals, and the first Six Senses Place, coming to The Whiteley in Bayswater. STILL THE CITY, STIR YOUR SOUL JAPAN Six Sense"
},
{
"tag": "div",
"cls": "carousel center",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1670,
"height_px": 684,
"card_count": 7,
"has_video": false,
"img_count": 10,
"has_btn": true,
"eyebrows": [
"UNITED KINGDOM",
"JAPAN",
"TURKEY",
"SPAIN",
"INDIA"
],
"headings": [
{
"tag": "h3",
"text": "Six Senses London"
},
{
"tag": "h3",
"text": "Six Senses Kyoto"
},
{
"tag": "h3",
"text": "Six Senses Kaplankaya"
}
],
"ctas": [
"STILL THE CITY, STIR YOUR SOUL",
"STEP INTO KYOTO'S ZEN BEAUTY",
"REDISCOVER YOUR AEGEAN WELL-BEING"
],
"text_snippet": "UNITED KINGDOM Six Senses London A different rhythm for London. Courtyard calm, sensory rituals, and the first Six Senses Place, coming to The Whiteley in Bayswater. STILL THE CITY, STIR YOUR SOUL JAPAN Six Senses Kyoto Tranquil gardens, a feel-good spa, and an easy walk from the Myoho-in T"
},
{
"tag": "div",
"cls": "flexslider refresh-25",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 950,
"height_px": 684,
"card_count": 7,
"has_video": false,
"img_count": 10,
"has_btn": true,
"eyebrows": [
"UNITED KINGDOM",
"JAPAN",
"TURKEY",
"SPAIN",
"INDIA"
],
"headings": [
{
"tag": "h3",
"text": "Six Senses London"
},
{
"tag": "h3",
"text": "Six Senses Kyoto"
},
{
"tag": "h3",
"text": "Six Senses Kaplankaya"
}
],
"ctas": [
"STILL THE CITY, STIR YOUR SOUL",
"STEP INTO KYOTO'S ZEN BEAUTY",
"REDISCOVER YOUR AEGEAN WELL-BEING"
],
"text_snippet": "UNITED KINGDOM Six Senses London A different rhythm for London. Courtyard calm, sensory rituals, and the first Six Senses Place, coming to The Whiteley in Bayswater. STILL THE CITY, STIR YOUR SOUL JAPAN Six Senses Kyoto Tranquil gardens, a feel-good spa, and an easy walk from the Myoho-in T"
},
{
"tag": "div",
"cls": "carousel carousel-hero",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1440,
"height_px": 630,
"card_count": 5,
"has_video": false,
"img_count": 6,
"has_btn": true,
"eyebrows": [],
"headings": [],
"ctas": [
"Our values",
"Pioneering wellness",
"Sustainability"
],
"text_snippet": "Previous image Next image"
},
{
"tag": "div",
"cls": "row row-2 ",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1228,
"height_px": 177,
"card_count": 3,
"has_video": false,
"img_count": 0,
"has_btn": true,
"eyebrows": [],
"headings": [],
"ctas": [
"OUR VALUES",
"PIONEERING WELLNESS",
"SUSTAINABILITY"
],
"text_snippet": "Care, culture, and community: how we live up to the promise of our name. OUR VALUES From ancient healing to the latest science, we help you navigate to what works best for you. PIONEERING WELLNESS A purposeful, regenerative vision to create a lasting impact on people, nature, hosts, and gu"
},
{
"tag": "div",
"cls": "carousel carousel-text",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(0, 0, 0)",
"fontSize": "16px",
"width_px": 1228,
"height_px": 177,
"card_count": 3,
"has_video": false,
"img_count": 0,
"has_btn": true,
"eyebrows": [],
"headings": [],
"ctas": [
"OUR VALUES",
"PIONEERING WELLNESS",
"SUSTAINABILITY"
],
"text_snippet": "Care, culture, and community: how we live up to the promise of our name. OUR VALUES From ancient healing to the latest science, we help you navigate to what works best for you. PIONEERING WELLNESS A purposeful, regenerative vision to create a lasting impact on people, nature, hosts, and gu"
},
{
"tag": "div",
"cls": "flexslider",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(0, 0, 0)",
"fontSize": "16px",
"width_px": 1228,
"height_px": 177,
"card_count": 3,
"has_video": false,
"img_count": 0,
"has_btn": true,
"eyebrows": [],
"headings": [],
"ctas": [
"OUR VALUES",
"PIONEERING WELLNESS",
"SUSTAINABILITY"
],
"text_snippet": "Care, culture, and community: how we live up to the promise of our name. OUR VALUES From ancient healing to the latest science, we help you navigate to what works best for you. PIONEERING WELLNESS A purposeful, regenerative vision to create a lasting impact on people, nature, hosts, and gu"
},
{
"tag": "li",
"cls": "carousel-text__slide slide slide-0 flex-active-slide",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(0, 0, 0)",
"fontSize": "16px",
"width_px": 409,
"height_px": 152,
"card_count": 0,
"has_video": false,
"img_count": 0,
"has_btn": true,
"eyebrows": [],
"headings": [],
"ctas": [
"OUR VALUES"
],
"text_snippet": "Care, culture, and community: how we live up to the promise of our name. OUR VALUES"
},
{
"tag": "div",
"cls": "carousel-text__content",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(0, 0, 0)",
"fontSize": "16px",
"width_px": 409,
"height_px": 120,
"card_count": 0,
"has_video": false,
"img_count": 0,
"has_btn": true,
"eyebrows": [],
"headings": [],
"ctas": [
"OUR VALUES"
],
"text_snippet": "Care, culture, and community: how we live up to the promise of our name. OUR VALUES"
},
{
"tag": "li",
"cls": "carousel-text__slide slide slide-1",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(0, 0, 0)",
"fontSize": "16px",
"width_px": 409,
"height_px": 177,
"card_count": 0,
"has_video": false,
"img_count": 0,
"has_btn": true,
"eyebrows": [],
"headings": [],
"ctas": [
"PIONEERING WELLNESS"
],
"text_snippet": "From ancient healing to the latest science, we help you navigate to what works best for you. PIONEERING WELLNESS"
},
{
"tag": "li",
"cls": "carousel-text__slide slide slide-2",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(0, 0, 0)",
"fontSize": "16px",
"width_px": 409,
"height_px": 177,
"card_count": 0,
"has_video": false,
"img_count": 0,
"has_btn": true,
"eyebrows": [],
"headings": [],
"ctas": [
"SUSTAINABILITY"
],
"text_snippet": "A purposeful, regenerative vision to create a lasting impact on people, nature, hosts, and guests. SUSTAINABILITY"
},
{
"tag": "div",
"cls": "carousel",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1670,
"height_px": 638,
"card_count": 20,
"has_video": false,
"img_count": 18,
"has_btn": true,
"eyebrows": [
"SAUDI ARABIA",
"UNITED ARAB EMIRATES",
"ITALY",
"ISRAEL",
"SPAIN",
"GREECE",
"MEXICO",
"FRANCE",
"SAUDI ARABIA"
],
"headings": [
{
"tag": "h3",
"text": "Six Senses AMAALA (2026)"
},
{
"tag": "h3",
"text": "Six Senses The Palm, Dubai (2026)"
},
{
"tag": "h3",
"text": "Six Senses Milan (2027)"
}
],
"ctas": [
"DISCOVER MORE",
"DISCOVER MORE",
"DISCOVER MORE"
],
"text_snippet": "SAUDI ARABIA Six Senses AMAALA (2026) Offering 64 rooms, six suites, 30 villas, and 25 branded residences, Six Senses AMAALA is in a region blessed for its dramatic coastal scenery. It will be part of a holistic hub for the arts, a leading diving destination, an extension of the Mediterranean yach"
},
{
"tag": "section",
"cls": "box box52 fadeInUp",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1440,
"height_px": 708,
"card_count": 42,
"has_video": false,
"img_count": 10,
"has_btn": true,
"eyebrows": [
"OFFERS",
"GIFT CARDS",
"EXPERIENCES",
"NEWS",
"MEETINGS & EVENTS"
],
"headings": [
{
"tag": "h2",
"text": "What's on at Six Senses?"
}
],
"ctas": [
"OPEN THE DOORS TO SAVINGS",
"WHO WILL YOU TREAT?",
"INSPIRING \"PINCH ME\" MOMENTS"
],
"text_snippet": "What's on at Six Senses? OFFERS Spaces to reconnect Plan your next escape in an extraordinary villa or suite designed for space and seclusion with dedicated services and amenities on tap. OPEN THE DOORS TO SAVINGS GIFT CARDS A gift for the senses For stays, dining, and spa-aah, a thoughtful wa"
}
],
"error": null
},
"resorts": {
"url": "https://www.sixsenses.com/en/resorts",
"final_url": "https://www.sixsenses.com/en/hotels-resorts/",
"http_status": 200,
"meta": {
"title": "Luxury Lifestyle Resort & Hotel Locations | Six Senses",
"fonts": [
"serif",
"\"Avenir Next\"",
"arial",
"\"Avenir Next Condensed\""
],
"brand_colors": []
},
"section_count": 3,
"sections": [
{
"tag": "div",
"cls": "properties-list-title-wrapper",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1122,
"height_px": 113,
"card_count": 0,
"has_video": false,
"img_count": 0,
"has_btn": false,
"eyebrows": [],
"headings": [
{
"tag": "h1",
"text": "Hotels & Resorts"
}
],
"ctas": [],
"text_snippet": "Hotels & Resorts 27 Hotels & Resorts"
},
{
"tag": "div",
"cls": "filters-wrapper",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 1122,
"height_px": 135,
"card_count": 0,
"has_video": false,
"img_count": 0,
"has_btn": true,
"eyebrows": [
"0 - 11 years",
"0 - 11 years",
"EUR"
],
"headings": [],
"ctas": [
"SEARCH"
],
"text_snippet": "Select a destination or hotel Check-in Check-out 2 Adults, 0 Children Special codes SEARCH EUR Info VIEW IN MAP"
},
{
"tag": "div",
"cls": "flexslider",
"bg": "rgba(0, 0, 0, 0)",
"pt": "0px",
"pb": "0px",
"color": "rgb(102, 102, 102)",
"fontSize": "16px",
"width_px": 487,
"height_px": 305,
"card_count": 1,
"has_video": false,
"img_count": 2,
"has_btn": false,
"eyebrows": [],
"headings": [],
"ctas": [],
"text_snippet": ""
}
],
"error": null
},
"wellness": {
"url": "https://www.sixsenses.com/en/wellness",
"final_url": "https://www.sixsenses.com/en/wellness",
"http_status": 404,
"meta": {
"title": "404 - Page not found",
"fonts": [
"serif",
"\"Avenir Next\"",
"arial",
"\"Avenir Next Condensed\""
],
"brand_colors": []
},
"section_count": 0,
"sections": [],
"error": null
},
"spas": {
"url": "https://www.sixsenses.com/en/spas",
"sections": [
{
"tag": "div",
"cls": "flexslider",
"width_px": 487,
"height_px": 305,
"img_count": 2,
"card_count": 0,
"has_video": false,
"headings": [],
"eyebrows": [],
"ctas": [],
"text_snippet": ""
}
]
},
"resort_fiji": {
"url": "https://www.sixsenses.com/en/hotels-resorts/asia-the-pacific/fiji/fiji/accommodation/",
"sections": [
{
"tag": "div",
"cls": "filters-wrapper",
"width_px": 1122,
"height_px": 230,
"img_count": 1,
"card_count": 0,
"has_video": false,
"headings": [
{
"tag": "h3",
"text": "Check availability & book direct"
}
],
"eyebrows": [
"FILTER",
"Features",
"SORT BY",
"EUR"
],
"ctas": [
"Show"
],
"text_snippet": "Check availability & book direct Check-in Check-out 2 Adults, 0 Children Special codes SEARCH FILTER SORT BY EUR Info"
},
{
"tag": "div",
"cls": "tab-panels",
"width_px": 424,
"height_px": 102,
"img_count": 0,
"card_count": 0,
"has_video": false,
"headings": [],
"eyebrows": [],
"ctas": [],
"text_snippet": "Flanked on all sides by lush gardens, enjoy extra living and sleeping space plus outstanding views of the South Pacific and surrounding islands from the large outdoor deck."
}
]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 842 KiB

+100
View File
@@ -0,0 +1,100 @@
{
"body": {
"fontFamily": "Lyon Display Web, Times New Roman, serif",
"fontSize": "14px",
"fontWeight": "400",
"lineHeight": "20.3px",
"letterSpacing": "0.8px",
"textTransform": "none",
"color": "rgb(49, 49, 49)",
"backgroundColor": "rgb(243, 238, 231)",
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"marginTop": "0px",
"marginBottom": "0px",
"minHeight": "0px",
"height": "4994.02px",
"maxWidth": "none",
"gap": "normal",
"borderRadius": "0px"
},
"hero": {
"fontFamily": "Lyon Display Web, Times New Roman, serif",
"fontSize": "14px",
"fontWeight": "400",
"lineHeight": "20.3px",
"letterSpacing": "0.8px",
"textTransform": "none",
"color": "rgb(49, 49, 49)",
"backgroundColor": "rgba(0, 0, 0, 0)",
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "24.5px",
"paddingRight": "24.5px",
"marginTop": "65px",
"marginBottom": "65px",
"minHeight": "0px",
"height": "942.983px",
"maxWidth": "1440px",
"gap": "normal",
"borderRadius": "0px"
},
"h1": null,
"eyebrow": {
"fontSize": "10.108px",
"letterSpacing": "2px",
"textTransform": "uppercase"
},
"contentSections": [
{
"paddingTop": "0px",
"paddingBottom": "0px",
"maxWidthInner": "none",
"gap": "normal"
},
{
"paddingTop": "0px",
"paddingBottom": "0px",
"maxWidthInner": "none",
"gap": "normal"
},
{
"paddingTop": "0px",
"paddingBottom": "0px",
"maxWidthInner": "none",
"gap": "normal"
}
],
"btn": {
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"fontSize": "14px",
"letterSpacing": "normal",
"textTransform": "none",
"borderRadius": "0px"
},
"nav": {
"height": "auto",
"paddingTop": "0px",
"paddingBottom": "0px"
},
"navLink": {
"fontSize": "24px",
"letterSpacing": "normal",
"textTransform": "none"
},
"h2": {
"fontSize": "31.08px",
"lineHeight": "45.0667px",
"marginTop": "0px",
"marginBottom": "8px"
},
"para": {
"fontSize": "14px",
"lineHeight": "20.3px"
}
}
+97
View File
@@ -0,0 +1,97 @@
REFERENCE STYLE COMPARISON vs bigbreath.co tokens.css
Extracted 2026-06-01 at 1440x900 viewport via Playwright/Firefox headless
Sites: aman.com, ourhabitas.com, sixsenses.com/en/
Notes on extraction
Aman: hero H1 not captured by selector (JS-rendered after scroll); hero height ~943px measured; eyebrow found at 10px uppercase 2px letter-spacing.
Habitas: nav matched full overlay (900px height = full-screen nav); H2 36px with 40px margin-bottom; content section inner container found at 1358px wide.
Six Senses: H1 found via serif display font "Canto Roman" at 57.6px with negative letter-spacing -1.15px; no nav captured (custom element); H2 captured a small nav-level element, not meaningful for section headings.
---
DIMENSION COMPARISON (all computed pixel values unless noted)
Section vertical padding
Our current: --pad-section: 8rem (128px each side)
Aman: 0px on section elements (uses margin-based rhythm, margin 65px top/bottom on hero)
Habitas: 45px top / 64px bottom on content sections (sparse, asymmetric)
Six Senses: no section-level padding captured (uses full-bleed blocks)
Pattern: References lean 45-80px range, not 128px. Aman uses margin not padding.
Recommended: --pad-section: clamp(4rem, 7vw, 6rem) [64-96px range, stepping down at narrower widths]
Hero min-height and padding
Our current: no explicit --hero-min-height token; --pad-section governs
Aman: hero block measured ~943px tall (full viewport at 900px + scroll zone); 0px padding, margin 65px
Habitas: 810px measured height; 0px padding on hero; 50px margin-bottom
Six Senses: ~349px hero block (above-fold only before scroll), 160px margin-bottom
Pattern: All three use full-viewport-height hero via JS/CSS class, not min-height on the section element. Margin-bottom 50-160px separates hero from first section.
Recommended: Add --hero-min-height: 100svh; --hero-margin-bottom: clamp(3rem, 8vw, 8rem)
H1 font-size
Our current: --t-5xl: 5rem (80px) or --t-6xl: 6.5rem (104px)
Aman: H1 not resolved (JS-gated); body serif at 14px base
Habitas: H1 not resolved; display type inferred from brand; body at 18px base
Six Senses: H1 57.6px (3.6rem) with font-weight 400 and letter-spacing -1.15px (negative tracking)
Pattern: Six Senses at ~3.6rem with tight negative tracking is restrained and editorial. 5-6.5rem is oversized for luxury hospitality.
Recommended: --t-hero: clamp(2.75rem, 5.5vw, 4.5rem); add --hero-tracking: -0.03em
H2 font-size
Our current: --t-3xl: 2.875rem (46px) or --t-2xl: 2.125rem (34px)
Aman: 31px (about 1.94rem)
Habitas: 36px (2.25rem) with 39.6px line-height (1.1 ratio - very tight)
Six Senses: H2 reading unreliable (15px nav element captured, not section heading)
Pattern: Aman at 1.94rem, Habitas at 2.25rem. References keep H2 closer to 2rem than 2.875rem.
Recommended: --t-h2: clamp(1.75rem, 3vw, 2.25rem); line-height 1.1 to 1.15 (tight, editorial)
Body font-size and line-height
Our current: --t-base: 1rem (16px); no line-height token
Aman: 14px body / 20.3px line-height (1.45 ratio) - smaller and tighter than standard
Habitas: 18px body / 25.2px line-height (1.40 ratio) - generous and readable
Six Senses: 16px body / 25.6px line-height (1.60 ratio) - standard with generous leading
Pattern: Range 14-18px. Luxury tier tends either very small (Aman, editorial) or slightly above base (Habitas, warmth). Line-height 1.4-1.6.
Recommended: Keep --t-base: 1rem (16px); add --lh-body: 1.55; add --lh-heading: 1.1
Button padding and letter-spacing
Our current: no explicit button padding token; no --btn-tracking token
Aman: 0px padding on matched link (text-only CTA style, no box padding); letter-spacing 0.8px on body
Habitas: 0px padding on matched link (same pattern - bare text links not boxed buttons)
Six Senses: 0px padding on matched element (consistent across all three)
Pattern: All three references use text-link CTAs with no box padding - the luxury hospitality standard avoids pill/box buttons entirely. Letter-spacing on body text 0.8px (Aman), normal (others).
Recommended: Add --btn-style: text-link (no background, no border-radius, no padding box); --btn-tracking: 0.08em; --btn-transform: uppercase; use underline-on-hover pattern only
Nav height and link font-size
Our current: no explicit nav height token
Aman: navLink font-size 24px - unusually large (may be open overlay state); letter-spacing normal
Habitas: nav height 900px (full-screen overlay captured in open state); navLink 20px
Six Senses: no nav captured
Pattern: Both captured sites use full-screen overlay nav, not a fixed-height bar. Link size 20-24px in overlay. For a fixed bar, luxury sites typically sit 60-80px tall with 13-14px links.
Recommended: Add --nav-height: 72px; --nav-link-size: 0.8125rem (13px); --nav-tracking: 0.12em; --nav-transform: uppercase
Container max-width
Our current: no explicit --container-wide or --container-narrow token
Aman: hero max-width 1440px (full bleed to viewport at this resolution)
Habitas: content inner container at 1358px; narrow inner at 500px
Six Senses: no container maxWidth resolved
Pattern: 1360px wide container is the luxury hospitality standard (just inside 1440px viewport with breathing room). Narrow containers 480-560px for editorial text columns.
Recommended: Add --container-wide: 1360px; --container-narrow: 520px; --container-padding: clamp(1.5rem, 4vw, 3rem)
Eyebrow / sublabel typography
Our current: --t-xs: 0.75rem; no eyebrow-specific tracking token
Aman: 10px / 2px letter-spacing / uppercase (very small, very widely tracked)
Habitas: none detected on homepage
Six Senses: none detected
Pattern: Aman's eyebrow at ~0.63rem with 2px absolute letter-spacing (~0.2em at that size) is distinctively editorial. This pattern suits bigbreath.co.
Recommended: Add --t-eyebrow: 0.6875rem (11px); --eyebrow-tracking: 0.18em; --eyebrow-transform: uppercase
---
RECOMMENDATIONS SUMMARY FOR tokens.css
1. --pad-section: reduce from 8rem to clamp(4rem, 7vw, 6rem). References use 45-80px, not 128px.
2. Add --hero-min-height: 100svh and --hero-margin-bottom: clamp(3rem, 8vw, 8rem). Hero height is full-viewport, gap after hero is 50-160px.
3. Add --t-hero: clamp(2.75rem, 5.5vw, 4.5rem) and --hero-tracking: -0.03em. Six Senses H1 at 3.6rem with negative tracking sets the editorial tone. Current 5-6.5rem is too large for this tier.
4. --t-h2: clamp(1.75rem, 3vw, 2.25rem) and line-height 1.1. References sit at 1.94-2.25rem, well below our 2.875rem.
5. Add --lh-body: 1.55 and --lh-heading: 1.1. All three references use tight heading line-heights (1.1-1.15) and moderate body leading (1.4-1.6).
6. Add --btn-tracking: 0.08em and --btn-transform: uppercase. All three references use bare text-link CTAs - no box buttons. Kill pill/border-radius button pattern for primary CTAs.
7. Add --nav-height: 72px, --nav-link-size: 0.8125rem, --nav-tracking: 0.12em, --nav-transform: uppercase. Luxury nav bars are thin with small uppercase tracked links.
8. Add --container-wide: 1360px, --container-narrow: 520px, --container-padding: clamp(1.5rem, 4vw, 3rem), --t-eyebrow: 0.6875rem, --eyebrow-tracking: 0.18em. These are the missing structural tokens needed to match the reference layout rhythm.
+96
View File
@@ -0,0 +1,96 @@
{
"body": {
"fontFamily": "Arboria Book",
"fontSize": "18px",
"fontWeight": "400",
"lineHeight": "25.2px",
"letterSpacing": "normal",
"textTransform": "none",
"color": "rgb(68, 68, 68)",
"backgroundColor": "rgba(0, 0, 0, 0)",
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"marginTop": "0px",
"marginBottom": "0px",
"minHeight": "100%",
"height": "8977.03px",
"maxWidth": "100%",
"gap": "normal",
"borderRadius": "0px"
},
"hero": {
"fontFamily": "Arboria Book",
"fontSize": "18px",
"fontWeight": "400",
"lineHeight": "25.2px",
"letterSpacing": "normal",
"textTransform": "none",
"color": "rgb(68, 68, 68)",
"backgroundColor": "rgba(0, 0, 0, 0)",
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"marginTop": "0px",
"marginBottom": "50px",
"minHeight": "0px",
"height": "810px",
"maxWidth": "none",
"gap": "normal",
"borderRadius": "0px"
},
"h1": null,
"eyebrow": null,
"contentSections": [
{
"paddingTop": "0px",
"paddingBottom": "0px",
"maxWidthInner": "none",
"gap": "normal"
},
{
"paddingTop": "0px",
"paddingBottom": "0px",
"maxWidthInner": "500px",
"gap": "normal"
},
{
"paddingTop": "45px",
"paddingBottom": "64px",
"maxWidthInner": "1358px",
"gap": "normal"
}
],
"btn": {
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"fontSize": "18px",
"letterSpacing": "normal",
"textTransform": "none",
"borderRadius": "0px"
},
"nav": {
"height": "900px",
"paddingTop": "0px",
"paddingBottom": "0px"
},
"navLink": {
"fontSize": "20px",
"letterSpacing": "normal",
"textTransform": "none"
},
"h2": {
"fontSize": "36px",
"lineHeight": "39.6px",
"marginTop": "0px",
"marginBottom": "40px"
},
"para": {
"fontSize": "18px",
"lineHeight": "25.2px"
}
}
+89
View File
@@ -0,0 +1,89 @@
{
"body": {
"fontFamily": "\"Avenir Next\"",
"fontSize": "16px",
"fontWeight": "400",
"lineHeight": "25.6px",
"letterSpacing": "normal",
"textTransform": "none",
"color": "rgb(102, 102, 102)",
"backgroundColor": "rgba(0, 0, 0, 0)",
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"marginTop": "0px",
"marginBottom": "0px",
"minHeight": "0px",
"height": "6676.7px",
"maxWidth": "none",
"gap": "normal",
"borderRadius": "0px"
},
"hero": {
"fontFamily": "\"Avenir Next\"",
"fontSize": "16px",
"fontWeight": "400",
"lineHeight": "25.6px",
"letterSpacing": "normal",
"textTransform": "none",
"color": "rgb(102, 102, 102)",
"backgroundColor": "rgba(0, 0, 0, 0)",
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"marginTop": "0px",
"marginBottom": "160px",
"minHeight": "0px",
"height": "348.767px",
"maxWidth": "none",
"gap": "normal",
"borderRadius": "0px"
},
"h1": {
"fontFamily": "\"Canto Roman\"",
"fontSize": "57.6px",
"fontWeight": "400",
"lineHeight": "63.3667px",
"letterSpacing": "-1.152px",
"textTransform": "none",
"color": "rgb(255, 255, 255)",
"backgroundColor": "rgba(0, 0, 0, 0)",
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"marginTop": "0px",
"marginBottom": "0px",
"minHeight": "0px",
"height": "253.467px",
"maxWidth": "none",
"gap": "normal",
"borderRadius": "0px"
},
"eyebrow": null,
"contentSections": [],
"btn": {
"paddingTop": "0px",
"paddingBottom": "0px",
"paddingLeft": "0px",
"paddingRight": "0px",
"fontSize": "15px",
"letterSpacing": "normal",
"textTransform": "none",
"borderRadius": "0px"
},
"nav": null,
"navLink": null,
"h2": {
"fontSize": "15px",
"lineHeight": "15px",
"marginTop": "0px",
"marginBottom": "0px"
},
"para": {
"fontSize": "16px",
"lineHeight": "25.6px"
}
}
Regular → Executable
+7 -8
View File
@@ -8,25 +8,24 @@ FROM php:8.3-fpm-alpine
RUN apk add --no-cache nginx supervisor curl tini \ RUN apk add --no-cache nginx supervisor curl tini \
&& mkdir -p /run/nginx /var/log/supervisor && mkdir -p /run/nginx /var/log/supervisor
COPY infra/nginx.conf /etc/nginx/nginx.conf RUN printf 'user www-data;\nworker_processes auto;\npid /run/nginx.pid;\nerror_log /dev/stderr warn;\nevents { worker_connections 1024; }\nhttp {\n include /etc/nginx/mime.types;\n default_type application/octet-stream;\n access_log /dev/stdout;\n sendfile on;\n tcp_nopush on;\n keepalive_timeout 65;\n include /etc/nginx/conf.d/*.conf;\n}\n' > /etc/nginx/nginx.conf && \
rm -f /etc/nginx/conf.d/default.conf /etc/nginx/http.d/default.conf 2>/dev/null || true
COPY infra/nginx.conf /etc/nginx/conf.d/bigbreath.conf
COPY infra/supervisord.conf /etc/supervisord.conf COPY infra/supervisord.conf /etc/supervisord.conf
COPY infra/php-fpm-pool.conf /usr/local/etc/php-fpm.d/zzz-pool.conf COPY infra/php-fpm-pool.conf /usr/local/etc/php-fpm.d/zzz-pool.conf
COPY src/index.html /var/www/html/index.html
COPY src/404.html /var/www/html/404.html COPY src/404.html /var/www/html/404.html
COPY src/500.html /var/www/html/500.html COPY src/500.html /var/www/html/500.html
COPY src/robots.txt /var/www/html/robots.txt COPY src/robots.txt /var/www/html/robots.txt
COPY src/sitemap.xml /var/www/html/sitemap.xml COPY src/sitemap.xml /var/www/html/sitemap.xml
COPY src/llms.txt /var/www/html/llms.txt COPY src/llms.txt /var/www/html/llms.txt
COPY src/about /var/www/html/about/
COPY src/contact /var/www/html/contact/
COPY src/services /var/www/html/services/
COPY src/privacy-policy /var/www/html/privacy-policy/
COPY src/terms-of-service /var/www/html/terms-of-service/
COPY src/assets /var/www/html/assets/ COPY src/assets /var/www/html/assets/
COPY src/api/contact.php /var/www/html/api/contact.php COPY src/api/contact.php /var/www/html/api/contact.php
COPY src/api/router.php /var/www/html/api/router.php
COPY src/api/templates /var/www/html/api/templates/
COPY src/api/components /var/www/html/api/components/
COPY src/api/data /var/www/html/api/data/
RUN chown -R www-data:www-data /var/www/html RUN chown -R www-data:www-data /var/www/html
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
+31 -34
View File
@@ -1,22 +1,3 @@
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /dev/stderr warn;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /dev/stdout;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
server_tokens off;
limit_req_zone $binary_remote_addr zone=contact_limit:10m rate=5r/m; limit_req_zone $binary_remote_addr zone=contact_limit:10m rate=5r/m;
gzip on; gzip on;
@@ -30,7 +11,6 @@ http {
listen 80; listen 80;
server_name _; server_name _;
root /var/www/html; root /var/www/html;
index index.html index.php;
charset utf-8; charset utf-8;
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Frame-Options "SAMEORIGIN" always;
@@ -51,16 +31,14 @@ http {
location = /robots.txt { try_files $uri =404; access_log off; } location = /robots.txt { try_files $uri =404; access_log off; }
location = /sitemap.xml { try_files $uri =404; access_log off; } location = /sitemap.xml { try_files $uri =404; access_log off; }
location = /llms.txt { try_files $uri =404; access_log off; } location = /llms.txt { try_files $uri =404; access_log off; }
location = /404.html { try_files $uri =404; access_log off; }
location = /500.html { try_files $uri =404; access_log off; }
location ~* \.(css|js|woff2|woff|ttf|otf)$ { location /assets/ {
expires 1y; expires 1y;
add_header Cache-Control "public, immutable"; add_header Cache-Control "public, immutable";
access_log off; access_log off;
} try_files $uri =404;
location ~* \.(jpg|jpeg|png|webp|gif|ico|svg|mp4|webm)$ {
expires 6M;
add_header Cache-Control "public";
access_log off;
} }
location = /api/contact { location = /api/contact {
@@ -83,17 +61,36 @@ http {
fastcgi_read_timeout 30s; fastcgi_read_timeout 30s;
} }
location ~ ^/(?!404\.html$|500\.html$)(.+)\.html$ { location = / { rewrite ^ /api/router.php?type=coming_soon last; }
return 301 /$1/; location = /about { rewrite ^ /api/router.php?type=about last; }
location = /about/ { rewrite ^ /api/router.php?type=about last; }
location = /the-practice { rewrite ^ /api/router.php?type=practice last; }
location = /the-practice/ { rewrite ^ /api/router.php?type=practice last; }
location = /services { rewrite ^ /api/router.php?type=services_index last; }
location = /services/ { rewrite ^ /api/router.php?type=services_index last; }
location ~ ^/services/([a-z0-9-]+)/?$ {
rewrite ^/services/([a-z0-9-]+)/?$ /api/router.php?type=service&slug=$1 last;
} }
location = /testimonials { rewrite ^ /api/router.php?type=testimonials last; }
location = /testimonials/ { rewrite ^ /api/router.php?type=testimonials last; }
location = /gallery { rewrite ^ /api/router.php?type=gallery last; }
location = /gallery/ { rewrite ^ /api/router.php?type=gallery last; }
location = /events { rewrite ^ /api/router.php?type=events last; }
location = /events/ { rewrite ^ /api/router.php?type=events last; }
location ~ ^/events/([a-z0-9-]+)/?$ {
rewrite ^/events/([a-z0-9-]+)/?$ /api/router.php?type=event_detail&slug=$1 last;
}
location = /coming-soon { rewrite ^ /api/router.php?type=coming_soon last; }
location = /coming-soon/ { rewrite ^ /api/router.php?type=coming_soon last; }
location = /contact { rewrite ^ /api/router.php?type=contact last; }
location = /contact/ { rewrite ^ /api/router.php?type=contact last; }
location = /privacy-policy { rewrite ^ /api/router.php?type=legal&slug=privacy-policy last; }
location = /privacy-policy/ { rewrite ^ /api/router.php?type=legal&slug=privacy-policy last; }
location = /terms-of-service { rewrite ^ /api/router.php?type=legal&slug=terms-of-service last; }
location = /terms-of-service/ { rewrite ^ /api/router.php?type=legal&slug=terms-of-service last; }
location / { location / { rewrite ^ /api/router.php?type=coming_soon last; }
try_files $uri $uri/index.html $uri/ =404;
}
error_page 404 /404.html; error_page 404 /404.html;
error_page 500 502 503 504 /500.html; error_page 500 502 503 504 /500.html;
location = /404.html { internal; }
location = /500.html { internal; }
}
} }
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
+55
View File
@@ -0,0 +1,55 @@
</main>
<footer class="bb-footer">
<div class="bb-container">
<div class="bb-footer__grid">
<div>
<p class="bb-display" style="font-size:var(--t-3xl);margin-bottom:var(--s-6);">Big Breath</p>
<p class="bb-body" style="color:var(--bb-sand);font-size:var(--t-sm);max-width:280px;">Breathwork for athletes, executives, and seekers. Guided by Big Joe.</p>
<form style="margin-top:var(--s-8);display:flex;gap:var(--s-2);" onsubmit="return false;" aria-label="Newsletter">
<input type="email" placeholder="Your email" style="flex:1;background:transparent;border:0;border-bottom:1px solid var(--bb-sand);color:var(--bb-cream);font-family:inherit;font-size:var(--t-sm);padding:var(--s-2) 0;outline:none;" aria-label="Email address">
<button type="submit" class="bb-btn" style="border-color:var(--bb-sand);color:var(--bb-sand);padding:var(--s-2) var(--s-4);">Join</button>
</form>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Navigate</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="/the-practice" style="color:var(--bb-sand);font-size:var(--t-sm);">The Practice</a></li>
<li><a href="/about" style="color:var(--bb-sand);font-size:var(--t-sm);">About</a></li>
<li><a href="/services" style="color:var(--bb-sand);font-size:var(--t-sm);">Services</a></li>
<li><a href="/testimonials" style="color:var(--bb-sand);font-size:var(--t-sm);">Testimonials</a></li>
<li><a href="/events" style="color:var(--bb-sand);font-size:var(--t-sm);">Events</a></li>
<li><a href="/contact" style="color:var(--bb-sand);font-size:var(--t-sm);">Contact</a></li>
</ul>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Location</p>
<p style="color:var(--bb-sand);font-size:var(--t-sm);line-height:1.7;">Global practice.<br>Based in the United States.<br>Sessions in Bhutan, Saudi Arabia,<br>Japan, India, Oman, and beyond.</p>
</div>
<div>
<p class="bb-label" style="color:var(--bb-sand);margin-bottom:var(--s-6);">Connect</p>
<ul style="display:flex;flex-direction:column;gap:var(--s-3);">
<li><a href="https://instagram.com/bigbreathco" style="color:var(--bb-sand);font-size:var(--t-sm);">Instagram</a></li>
<li><a href="https://youtube.com/@bigbreath" style="color:var(--bb-sand);font-size:var(--t-sm);">YouTube</a></li>
<li><a href="/privacy-policy" style="color:var(--bb-sand);font-size:var(--t-sm);">Privacy Policy</a></li>
<li><a href="/terms-of-service" style="color:var(--bb-sand);font-size:var(--t-sm);">Terms of Service</a></li>
</ul>
</div>
</div>
<hr class="bb-rule" style="margin-top:var(--s-16);border-color:var(--bb-ink);">
<p style="font-size:var(--t-xs);letter-spacing:.1em;color:var(--bb-ink);">&copy; Big Breath <?= date('Y') ?>. All rights reserved.</p>
</div>
</footer>
<script>
(function(){
var els = document.querySelectorAll('.bb-reveal');
if (!els.length) return;
var io = new IntersectionObserver(function(entries){
entries.forEach(function(e){
if (e.isIntersecting) { e.target.classList.add('bb-reveal--in'); io.unobserve(e.target); }
});
}, { threshold: 0.12 });
els.forEach(function(el){ io.observe(el); });
})();
</script>
</body>
</html>
+68
View File
@@ -0,0 +1,68 @@
<?php
/** @var string $page_title */
/** @var string $page_description */
/** @var string $page_canonical */
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= htmlspecialchars($page_title, ENT_QUOTES) ?></title>
<meta name="description" content="<?= htmlspecialchars($page_description, ENT_QUOTES) ?>">
<link rel="canonical" href="<?= htmlspecialchars($page_canonical, ENT_QUOTES) ?>">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,100..900,0..100,0..1&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/tokens.css">
<link rel="stylesheet" href="/assets/css/main.css">
<script>document.documentElement.classList.add('js');</script>
</head>
<body>
<nav class="bb-nav" aria-label="Main navigation">
<a href="/" class="bb-nav__brand">Big Breath</a>
<ul class="bb-nav__links">
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li class="bb-nav__dropdown-wrap">
<a href="/services">Services</a>
<ul class="bb-nav__dropdown" aria-label="Services">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
</li>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/events">Events</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<a href="/contact" class="bb-btn">Inquire</a>
<button class="bb-hamburger" aria-label="Open navigation" aria-expanded="false">
<span></span><span></span><span></span>
</button>
</nav>
<nav class="bb-mobile-nav" aria-label="Mobile navigation">
<ul>
<li><a href="/the-practice">The Practice</a></li>
<li><a href="/about">About</a></li>
<li><a href="/services">Services</a></li>
<ul class="bb-mobile-nav__sub">
<li><a href="/services/keynotes">Keynotes</a></li>
<li><a href="/services/corporate-wellness">Corporate Wellness</a></li>
<li><a href="/services/private-sessions">Private Sessions</a></li>
<li><a href="/services/group-classes">Group Classes</a></li>
<li><a href="/services/retreats">Retreats</a></li>
<li><a href="/services/online">Online</a></li>
<li><a href="/services/meditation-breathwork">Meditation + Breathwork</a></li>
</ul>
<li><a href="/testimonials">Testimonials</a></li>
<li><a href="/gallery">Gallery</a></li>
<li><a href="/events">Events</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<main>
Regular → Executable
View File
View File
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More