/**
 * Dojo athletic presentation — width, type, cards, modules.
 * Prefer body.layout-shell--dojo scoping for shared markup.
 */

body.layout-shell--dojo {
    --container-max-width: 1440px;
    --dojo-section-max: 1360px;
    --dojo-prose-max: 720px;
    --font-size-3xl: clamp(1.75rem, 1.2rem + 1.6vw, 2.75rem);
    --font-size-4xl: clamp(2.25rem, 1.4rem + 2.4vw, 3.75rem);
}

body.layout-shell--dojo .container {
    max-width: var(--container-max-width);
}

body.layout-shell--dojo .dojo-bleed {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
}

body.layout-shell--dojo h1,
body.layout-shell--dojo h2,
body.layout-shell--dojo .section-title,
body.layout-shell--dojo .hero h1,
body.layout-shell--dojo .hero .headline {
    font-family: var(--font-heading, Oswald, 'Barlow Condensed', sans-serif);
    letter-spacing: 0.02em;
    text-wrap: balance;
}

body.layout-shell--dojo .dojo-eyebrow,
body.layout-shell--dojo .section-eyebrow {
    display: inline-block;
    font-family: var(--font-heading, Oswald, sans-serif);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--accent);
    margin-bottom: 0.65rem;
}

/* Soften default card chrome on content shells */
body.layout-shell--dojo .about-section .card,
body.layout-shell--dojo .page-content .card:not(.news-card):not(.profile-card):not(.offering-card),
body.layout-shell--dojo .content-section > .card {
    background: transparent;
    border: 0;
    box-shadow: none;
    padding-left: 0;
    padding-right: 0;
}

body.layout-shell--dojo .hero img,
body.layout-shell--dojo .offering-image img,
body.layout-shell--dojo .news-card img,
body.layout-shell--dojo .profile-card img,
body.layout-shell--dojo .gallery-grid img {
    object-fit: cover;
    object-position: center 20%;
}

body.layout-shell--dojo .hero-layout-split,
body.layout-shell--dojo .hero-layout-inline {
    gap: clamp(1.5rem, 3vw, 3.5rem);
}

/* ——— Offerings / Programs ——— */
body.layout-shell--dojo .offerings-section .section-title,
body.layout-shell--dojo .capabilities-section .section-title {
    font-size: var(--font-size-4xl);
    max-width: 18ch;
}

body.layout-shell--dojo .offerings-section .grid,
body.layout-shell--dojo .grid-3.offerings-grid,
body.layout-shell--dojo .capabilities-grid {
    gap: clamp(1.5rem, 2.5vw, 2.75rem);
}

body.layout-shell--dojo .offerings-section .card,
body.layout-shell--dojo .capability-card {
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

body.layout-shell--dojo .offerings-section .offering-image,
body.layout-shell--dojo .capability-card .offering-image {
    border-radius: 0;
    aspect-ratio: 4 / 5;
    overflow: hidden;
}

body.layout-shell--dojo .offerings-section .card h3,
body.layout-shell--dojo .capability-card h3 {
    font-family: var(--font-heading, Oswald, sans-serif);
    font-size: clamp(1.35rem, 1rem + 1vw, 1.85rem);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* ——— News editorial ——— */
body.layout-shell--dojo .news-grid {
    gap: clamp(1.75rem, 3vw, 2.75rem);
}

body.layout-shell--dojo .news-card {
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
}

body.layout-shell--dojo .news-card h3,
body.layout-shell--dojo .news-article-title {
    font-family: var(--font-heading, Oswald, sans-serif);
    font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2.25rem);
    line-height: 1.15;
}

body.layout-shell--dojo .news-article-header,
body.layout-shell--dojo .news-index {
    max-width: var(--dojo-section-max);
    margin-inline: auto;
}

body.layout-shell--dojo .news-article-body,
body.layout-shell--dojo .page-content .prose,
body.layout-shell--dojo .content-prose {
    max-width: var(--dojo-prose-max);
}

/* ——— Gallery ——— */
body.layout-shell--dojo .gallery-grid,
body.layout-shell--dojo .photo-gallery-grid {
    gap: 0.5rem;
}

body.layout-shell--dojo .gallery-grid figure,
body.layout-shell--dojo .gallery-item {
    border-radius: 0;
    overflow: hidden;
}

body.layout-shell--dojo .gallery-grid img {
    transition: transform 0.35s ease;
}

body.layout-shell--dojo .gallery-grid a:hover img,
body.layout-shell--dojo .gallery-item:hover img {
    transform: scale(1.04);
}

/* ——— Find Us / Contact 40/60 ——— */
body.layout-shell--dojo .find-us-section .container,
body.layout-shell--dojo .contact-section .container,
body.layout-shell--dojo .find-us-layout,
body.layout-shell--dojo .contact-layout {
    max-width: var(--dojo-section-max);
}

body.layout-shell--dojo .find-us-grid,
body.layout-shell--dojo .find-us-module-layout {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: clamp(1.5rem, 4vw, 3.5rem);
    align-items: start;
}

body.layout-shell--dojo .contact-grid,
body.layout-shell--dojo .contact-form-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    justify-items: center;
}

body.layout-shell--dojo .contact-grid > *,
body.layout-shell--dojo .contact-form-layout > * {
    width: 100%;
    max-width: 700px;
}

@media (max-width: 900px) {
    body.layout-shell--dojo .find-us-grid,
    body.layout-shell--dojo .find-us-module-layout {
        grid-template-columns: 1fr;
    }
}

body.layout-shell--dojo .find-us-hours,
body.layout-shell--dojo .booking-hours,
body.layout-shell--dojo .hours-list {
    font-family: var(--font-heading, Oswald, sans-serif);
    letter-spacing: 0.03em;
}

body.layout-shell--dojo .single-location {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: clamp(1.5rem, 4vw, 3rem);
    align-items: start;
}

@media (max-width: 900px) {
    body.layout-shell--dojo .single-location {
        grid-template-columns: 1fr;
    }
}

body.layout-shell--dojo .location-name {
    font-family: var(--font-heading, Oswald, sans-serif);
    font-size: clamp(1.75rem, 1.2rem + 1.5vw, 2.75rem);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* ——— Profiles athletic ——— */
body.layout-shell--dojo .profiles-grid,
body.layout-shell--dojo .profile-cards {
    gap: clamp(1.5rem, 2.5vw, 2.5rem);
}

body.layout-shell--dojo .profile-card {
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
}

body.layout-shell--dojo .profile-card .profile-photo,
body.layout-shell--dojo .profile-card img {
    aspect-ratio: 3 / 4;
    object-fit: cover;
    width: 100%;
}

body.layout-shell--dojo .profile-card h3,
body.layout-shell--dojo .profile-name {
    font-family: var(--font-heading, Oswald, sans-serif);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ——— CTA photographic bands ——— */
body.layout-shell--dojo .homepage-block--cta-strip.socials-cta.testimonials-cta {
    padding: clamp(3rem, 8vw, 6rem) 0;
    position: relative;
}

body.layout-shell--dojo .homepage-block--cta-strip .socials-cta-content {
    max-width: var(--dojo-prose-max);
}

body.layout-shell--dojo .homepage-block--cta-strip.tone-photo,
body.layout-shell--dojo .homepage-block--cta-strip.has-background {
    background-size: cover;
    background-position: center;
}

body.layout-shell--dojo .homepage-block--cta-strip .social-cta-button,
body.layout-shell--dojo .cta-button {
    font-family: var(--font-heading, Oswald, sans-serif);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

/* Bookings / hours emphasis (schedule stand-in) */
body.layout-shell--dojo .homepage-booking-section,
body.layout-shell--dojo .bookings-section {
    max-width: var(--dojo-section-max);
    margin-inline: auto;
}

body.layout-shell--dojo .bookings-section h2,
body.layout-shell--dojo .homepage-booking-section h2 {
    font-size: var(--font-size-3xl);
}

/* ——— Grit hero (tenant-flagged via dojo-hero--grit) ——— */
body.dojo-hero--grit .hero,
body.dojo-hero--grit .hero.has-background {
    background: #000 !important;
    background-image: none !important;
    min-height: 100vh;
    align-items: stretch;
    text-align: left;
    padding: 0;
    overflow: hidden;
}

body.dojo-hero--grit .hero.has-video-background .hero-video-bg,
body.dojo-hero--grit .hero.has-video-background video {
    display: none;
}

body.dojo-hero--grit .hero > .container {
    width: 100%;
    max-width: 1440px;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 7.25rem 1.25rem 6.5rem;
}

body.dojo-hero--grit .hero-layout-split {
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    gap: clamp(1.5rem, 4vw, 3.75rem);
    align-items: center;
    flex: 1;
}

body.dojo-hero--grit .hero h1 {
    font-family: var(--font-heading, Oswald, Impact, sans-serif);
    font-size: clamp(3.4rem, 2.2rem + 7vw, 8.25rem);
    font-weight: 700;
    line-height: 0.82;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    color: #fff;
    margin: 0 0 0.85rem;
    text-wrap: balance;
}

body.dojo-hero--grit .hero-headline-accent {
    color: var(--accent, #6B2D8B);
}

body.dojo-hero--grit .hero-kicker {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    margin: 0 0 1rem;
    font-family: var(--font-heading, Oswald, sans-serif);
    font-size: clamp(0.95rem, 0.7rem + 1vw, 1.35rem);
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    line-height: 1.35;
    color: #fff;
}

body.dojo-hero--grit .hero-kicker-accent {
    color: var(--accent, #6B2D8B);
}

body.dojo-hero--grit .hero-mission,
body.dojo-hero--grit .hero .subtitle.hero-mission {
    max-width: 38rem;
    margin: 0 0 1.75rem;
    font-size: 1.05rem;
    line-height: 1.55;
    letter-spacing: 0.01em;
    text-transform: none;
    color: rgba(255, 255, 255, 0.82);
}

body.dojo-hero--grit .hero-cta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.85rem;
    justify-content: flex-start;
}

body.dojo-hero--grit .hero .btn-primary {
    background: var(--accent, #6B2D8B);
    border-color: var(--accent, #6B2D8B);
    color: #fff;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 700;
    padding: 0.85rem 1.35rem;
}

body.dojo-hero--grit .hero .btn-secondary {
    background: transparent;
    color: #fff;
    border: 2px solid rgba(255, 255, 255, 0.85);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 700;
    padding: 0.85rem 1.35rem;
}

body.dojo-hero--grit .hero .btn-secondary:hover {
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    border-color: #fff;
}

body.dojo-hero--grit .hero-addon,
body.dojo-hero--grit .hero-addon-custom,
body.dojo-hero--grit .hero-addon-anim-float,
body.dojo-hero--grit .hero-addon-anim-rotate,
body.dojo-hero--grit .hero-addon-anim-float_rotate {
    animation: none !important;
    transform: none !important;
}

body.dojo-hero--grit .hero-addon {
    position: relative;
    min-height: 0;
    justify-content: flex-end;
}

body.dojo-hero--grit .hero-addon-custom {
    position: relative;
    width: 100%;
    max-width: none;
}

body.dojo-hero--grit .hero-addon-custom img {
    width: 100%;
    max-width: none;
    height: auto;
    max-height: min(72vh, 640px);
    object-fit: cover;
    object-position: center 20%;
    display: block;
    margin: 0;
    filter: none;
    border-radius: 0;
    mask-image: linear-gradient(90deg, transparent 0%, #000 18%, #000 78%, transparent 100%),
        linear-gradient(180deg, transparent 0%, #000 12%, #000 88%, transparent 100%);
    mask-composite: intersect;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 18%, #000 78%, transparent 100%),
        linear-gradient(180deg, transparent 0%, #000 12%, #000 88%, transparent 100%);
    -webkit-mask-composite: source-in;
}

body.dojo-hero--grit .hero-addon-custom::after {
    content: "";
    position: absolute;
    inset: -8% -12% -12% -18%;
    pointer-events: none;
    background:
        radial-gradient(ellipse at 12% 50%, #000 0%, transparent 55%),
        radial-gradient(ellipse at 88% 18%, color-mix(in srgb, var(--accent, #6B2D8B) 70%, transparent) 0%, transparent 58%),
        radial-gradient(ellipse at 70% 92%, color-mix(in srgb, var(--accent, #6B2D8B) 55%, transparent) 0%, transparent 50%);
    mix-blend-mode: screen;
}

body.dojo-hero--grit .hero-stat-bar,
body.dojo-hero--grit .bottom-transition--statistics_bar {
    background: #000;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    border-bottom: 0;
    padding: 1.5rem 0 2rem;
}

body.dojo-hero--grit .hero-stat-bar-inner--items-4 {
    gap: 0;
    max-width: 1440px;
    align-items: stretch;
}

body.dojo-hero--grit .hero-stat-item {
    max-width: none;
    text-align: left;
    padding: 0.5rem 1.5rem;
    border-right: 1px solid rgba(255, 255, 255, 0.14);
}

body.dojo-hero--grit .hero-stat-item:last-child {
    border-right: 0;
}

body.dojo-hero--grit .hero-stat-value {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.45rem;
    font-family: var(--font-heading, Oswald, sans-serif);
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #fff;
}

body.dojo-hero--grit .hero-stat-value::before {
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 1.35rem;
    color: var(--accent, #6B2D8B);
    line-height: 1;
}

body.dojo-hero--grit .hero-stat-item:nth-child(1) .hero-stat-value::before { content: "\f0c0"; }
body.dojo-hero--grit .hero-stat-item:nth-child(2) .hero-stat-value::before { content: "\f44b"; }
body.dojo-hero--grit .hero-stat-item:nth-child(3) .hero-stat-value::before { content: "\f5a2"; }
body.dojo-hero--grit .hero-stat-item:nth-child(4) .hero-stat-value::before { content: "\f3ed"; }

body.dojo-hero--grit .hero-stat-label {
    display: block;
    margin-top: 0.35rem;
    font-size: 0.9rem;
    font-weight: 400;
    letter-spacing: 0;
    text-transform: none;
    color: rgba(255, 255, 255, 0.72);
}

@media (max-width: 900px) {
    body.dojo-hero--grit .hero > .container {
        min-height: 0;
        padding: 6.5rem 1rem 2rem;
    }

    body.dojo-hero--grit .hero-layout-split {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }

    body.dojo-hero--grit .hero h1 {
        font-size: clamp(3rem, 18vw, 4.5rem);
    }

    body.dojo-hero--grit .hero-addon-custom img {
        max-height: 42vh;
    }

    body.dojo-hero--grit .hero-stat-bar-inner--items-4 {
        grid-template-columns: 1fr 1fr;
        gap: 1.25rem 0;
    }

    body.dojo-hero--grit .hero-stat-item {
        border-right: 0;
        padding: 0.75rem 0.5rem;
        border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    }
}
