/*
Theme Name: Heart House Flex
Theme URI: https://hearthousetraining.com/
Author: Heart House Training
Description: Mobile-first, palette-driven WordPress theme built for Heart House Training and its custom plugin ecosystem.
Version: 0.9.3
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: heart-house-flex
*/

:root {
  --hh-brand: #e91935;
  --hh-brand-dark: #c8102e;
  --hh-navy: #061426;
  --hh-blue: #0b2d4d;
  --hh-teal: #0f766e;
  --hh-green: #16834b;
  --hh-gold: #a86f00;
  --hh-danger: #b4232f;
  --hh-page: #f4f7fb;
  --hh-surface: #ffffff;
  --hh-surface-soft: #eef5fb;
  --hh-text: #0b1324;
  --hh-muted: #5c6b7a;
  --hh-border: #d8e2ec;
  --hh-focus: #1769d2;
  --hh-promo: #e85d28;
  --hh-promo-soft: #fff0e7;
  --hh-radius-sm: 6px;
  --hh-radius-md: 10px;
  --hh-radius-lg: 16px;
  --hh-shadow-sm: 0 2px 8px rgba(6,20,38,.08);
  --hh-shadow-md: 0 12px 30px rgba(6,20,38,.12);
  --hh-content: 1540px;
  --hh-reading: 800px;
  --hh-touch: 46px;
  --hh-space-1: .25rem;
  --hh-space-2: .5rem;
  --hh-space-3: .75rem;
  --hh-space-4: 1rem;
  --hh-space-5: 1.5rem;
  --hh-space-6: 2rem;
  --hh-space-7: 3rem;
  --hh-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--hh-page);color:var(--hh-text);font-family:var(--hh-font);font-size:16px;line-height:1.62;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto}
a{color:var(--hh-brand-dark);text-underline-offset:.18em}
a:hover{color:var(--hh-brand)}
button,input,select,textarea{font:inherit}
:focus-visible{outline:3px solid color-mix(in srgb,var(--hh-focus) 70%,transparent);outline-offset:3px}
.hh-container{width:min(calc(100% - 2rem),var(--hh-content));margin-inline:auto}
.hh-reading{width:min(100%,var(--hh-reading));margin-inline:auto}
.hh-main{min-height:55vh;padding-block:1.25rem 3rem}
.hh-skip-link{position:fixed;top:.5rem;left:.5rem;z-index:99999;padding:.75rem 1rem;background:var(--hh-navy);color:#fff;transform:translateY(-160%)}
.hh-skip-link:focus{transform:none}

.hh-site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.96);border-bottom:1px solid var(--hh-border);backdrop-filter:blur(12px)}
.admin-bar .hh-site-header{top:32px}
.hh-header-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:72px}
.hh-brand-link{display:flex;align-items:center;gap:.7rem;color:var(--hh-navy);font-weight:900;text-decoration:none}
.hh-brand-link img{width:auto;max-height:48px}
.hh-brand-name{font-size:1rem;line-height:1.1}
.hh-menu-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:var(--hh-touch);min-height:var(--hh-touch);border:1px solid var(--hh-border);border-radius:var(--hh-radius-sm);background:var(--hh-surface);color:var(--hh-navy);font-weight:800}
.hh-primary-nav{display:none;position:absolute;inset:72px 0 auto;background:#fff;border-bottom:1px solid var(--hh-border);box-shadow:var(--hh-shadow-md);padding:1rem}
.hh-primary-nav.is-open{display:block}
.hh-primary-nav ul{list-style:none;margin:0;padding:0;display:grid;gap:.25rem}
.hh-primary-nav a{display:flex;align-items:center;min-height:44px;padding:.65rem .8rem;border-radius:var(--hh-radius-sm);color:var(--hh-navy);font-weight:750;text-decoration:none}
.hh-primary-nav a:hover,.hh-primary-nav .current-menu-item>a{background:var(--hh-surface-soft);color:var(--hh-brand-dark)}
.hh-header-cta{display:none}

.hh-page-hero{position:relative;overflow:hidden;padding:2.5rem 0 2rem;background:linear-gradient(135deg,var(--hh-navy),var(--hh-blue));color:#fff}
.hh-page-hero::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 85% 10%,color-mix(in srgb,var(--hh-brand) 35%,transparent),transparent 34%);pointer-events:none}
.hh-page-hero .hh-container{position:relative;z-index:1}
.hh-eyebrow{margin:0 0 .45rem;color:color-mix(in srgb,var(--hh-brand) 55%,#fff);font-size:.78rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.hh-page-title{margin:0;font-size:clamp(2rem,8vw,4rem);line-height:1.03;letter-spacing:-.035em}
.hh-page-intro{max-width:720px;margin:.8rem 0 0;color:rgba(255,255,255,.86);font-size:clamp(1rem,3.8vw,1.2rem)}

.hh-content-card{background:var(--hh-surface);border:1px solid var(--hh-border);border-radius:var(--hh-radius-md);box-shadow:var(--hh-shadow-sm);padding:clamp(1rem,4vw,2rem)}
.hh-content-plain{background:transparent;border:0;box-shadow:none;padding:0}
.hh-theme-content>*:first-child{margin-top:0}
.hh-theme-content>*:last-child{margin-bottom:0}
.hh-theme-content h2,.hh-theme-content h3{line-height:1.18;letter-spacing:-.02em;color:var(--hh-navy)}
.hh-theme-content h2{margin-top:2rem;font-size:clamp(1.55rem,5vw,2.35rem)}
.hh-theme-content h3{margin-top:1.5rem;font-size:clamp(1.2rem,4vw,1.65rem)}

/*
 * Reading rhythm belongs to the article container, not to every paragraph
 * and list item. This keeps editor-set widths and indentation intact.
 */
.hh-prose{font-size:1rem;line-height:1.72}
.hh-prose :where(p,ul,ol,blockquote,hr){margin-block:0 1.15em}
.hh-prose :where(ul,ol){padding-inline-start:1.4em}
.hh-prose li{max-width:none;padding-inline-start:.12em}
.hh-prose li+li{margin-top:.3em}

/* Generic content no longer reconstructs WordPress block widths. */
.entry-content>:where(.alignwide,.alignfull){max-width:none}

.hh-site-footer{margin-top:3rem;background:var(--hh-navy);color:#d9e4ef}
.hh-footer-grid{display:grid;gap:1.5rem;padding-block:2.5rem}
.hh-footer-title{margin:0 0 .4rem;color:#fff;font-size:1.4rem}
.hh-footer-nav ul{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}
.hh-footer-nav a{color:#d9e4ef;text-decoration:none}
.hh-footer-meta{padding:1rem 0;border-top:1px solid rgba(255,255,255,.12);font-size:.88rem;color:#aebdca}

@media (min-width:782px){
  .admin-bar .hh-site-header{top:32px}
  .hh-menu-toggle{display:none}
  .hh-primary-nav{display:block;position:static;padding:0;border:0;box-shadow:none;background:transparent}
  .hh-primary-nav ul{display:flex;align-items:center;gap:.15rem}
  .hh-primary-nav a{padding:.55rem .65rem;font-size:.92rem}
  .hh-header-cta{display:inline-flex}
  .hh-footer-grid{grid-template-columns:1.2fr .8fr .8fr}
  .hh-main{padding-block:2rem 4rem}
}
@media (min-width:1024px){.hh-header-row{min-height:82px}.hh-primary-nav a{padding:.65rem .8rem}.hh-page-hero{padding:4rem 0 3.2rem}}
@media (max-width:782px){.admin-bar .hh-site-header{top:46px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}


@media (min-width:1440px){
  .hh-container{width:min(calc(100% - 3rem),var(--hh-content))}
  .hh-primary-nav a{padding-inline:.9rem}
  .hh-content-card{padding:clamp(1.5rem,2vw,2.5rem)}
}
@media (min-width:1800px){
  :root{--hh-content:1680px}
}

/* Heart House adaptive layout system */
.hh-layout-full .hh-main>.hh-container,
.hh-layout-full .entry-content>.hh-container,
.hh-layout-full main>.hh-container{width:100%;max-width:none;padding-inline:0}
.hh-layout-fluid .hh-container{width:calc(100% - (var(--hh-page-gutter, 16px) * 2));max-width:none}
.hh-layout-wide .hh-container{width:min(calc(100% - (var(--hh-page-gutter, 16px) * 2)),var(--hh-content))}
.hh-layout-contained .hh-container{width:min(calc(100% - (var(--hh-page-gutter, 16px) * 2)),1180px)}
.hh-layout-reading .hh-main>.hh-container{width:min(calc(100% - (var(--hh-page-gutter, 16px) * 2)),var(--hh-reading))}
.hh-mobile-gutter-8{--hh-page-gutter:8px}.hh-mobile-gutter-12{--hh-page-gutter:12px}.hh-mobile-gutter-16{--hh-page-gutter:16px}.hh-mobile-gutter-20{--hh-page-gutter:20px}.hh-mobile-gutter-24{--hh-page-gutter:24px}

/*
 * Full-bleed calculations are opt-in. WordPress alignwide/alignfull blocks keep
 * their editor or block-support width rather than being transformed globally.
 */
.hh-breakout-wide{width:min(var(--hh-content),calc(100vw - (var(--hh-page-gutter,16px) * 2)));max-width:none;margin-left:50%;transform:translateX(-50%)}
.hh-breakout-full{width:100vw;max-width:none;margin-left:50%;transform:translateX(-50%)}
.hh-reading-content{width:min(100%,var(--hh-reading));margin-inline:auto}
.hh-app-canvas,.hh-content-free{width:100%;max-width:none;min-width:0}

/*
 * WordPress constrained groups may retain their own intentional inline width.
 * When no explicit inline width exists, content-free and application canvases
 * can use the full selected page canvas.
 */
.hhf-theme .hh-content-free :where(.is-layout-constrained)>:where(:not(.alignleft):not(.alignright):not(.alignfull)),
.hhf-theme .hh-content-free :where(.wp-block-group__inner-container){
  max-width:none;
}
.hh-content-presentation-application .hh-main .hh-container{min-width:0}
.hh-content-presentation-application .hh-page-shell{min-width:0}
.hh-content-presentation-application .entry-content{margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.hh-content-presentation-application .entry-content>:first-child{margin-top:0}
.hh-content-presentation-application .entry-content>:last-child{margin-bottom:0}

/* Existing Heart House marketing rhythm: bold navy, red accents, teal support, clean white panels. */
.hh-service-shell{display:grid;gap:clamp(1rem,2vw,1.75rem)}
.hh-service-hero{border-radius:clamp(10px,1.5vw,20px);overflow:hidden;background:linear-gradient(135deg,var(--hh-navy),var(--hh-blue));color:#fff;box-shadow:var(--hh-shadow-md)}
.hh-service-hero__inner{display:grid;gap:1.25rem;padding:clamp(1.25rem,4vw,4rem)}
.hh-service-summary{display:grid;gap:.75rem;grid-template-columns:1fr}
.hh-service-summary>*{min-width:0}

/* First-time visitors receive clearer orientation; returning users retain direct access. */
.hh-first-visit-guide{display:block}
.hh-returning-shortcuts{display:none}
.hh-user-returning .hh-first-visit-guide{display:none}
.hh-user-returning .hh-returning-shortcuts{display:grid}

/* Plugin and application canvases */
:where(.mstp-wrap,.mstp-portal-wrap,.mstp-registration-wrap,.mstp-player-report-wrap,.mstp-services-shell,.mstp-app,.hh-app){width:100%;max-width:none;min-width:0}
:where(.mstp-card-grid,.mstp-training-grid,.mstp-request-grid,.mstp-service-grid,.mstp-program-grid){display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:clamp(.75rem,1.5vw,1.25rem)}
:where(.mstp-wrap,.mstp-portal-wrap,.mstp-registration-wrap,.mstp-player-report-wrap) :where(img,video,iframe,canvas,svg){max-width:100%}
:where(.mstp-wrap,.mstp-portal-wrap,.mstp-registration-wrap,.mstp-player-report-wrap) :where(table){width:100%;border-collapse:collapse}
:where(.mstp-wrap,.mstp-portal-wrap,.mstp-registration-wrap,.mstp-player-report-wrap) :where(button,a,input,select,textarea){max-width:100%}
:where(.mstp-modal,.mstp-dialog,.mstp-drawer){max-width:min(96vw,900px);max-height:min(92dvh,900px);overflow:auto}

/* Mobile widths: 280px through large phones and landscape devices. */
@media(max-width:359px){:root{--hh-touch:44px}.hh-page-title{font-size:1.8rem}.hh-content-card{padding:.75rem}.hh-brand-name{font-size:.88rem}}
@media(min-width:360px) and (max-width:479px){.hh-content-card{padding:1rem}}
@media(min-width:480px) and (max-width:599px){.hh-service-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:600px){.hh-service-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:782px){
  .hh-layout-fluid .hh-container{width:calc(100% - 48px)}
  .hh-layout-wide .hh-container{width:min(calc(100% - 48px),var(--hh-content))}
  .hh-layout-contained .hh-container{width:min(calc(100% - 48px),1180px)}
  .hh-layout-reading .hh-main>.hh-container{width:min(calc(100% - 48px),var(--hh-reading))}
}
@media(min-width:1280px){.hh-layout-fluid .hh-container{width:calc(100% - 64px)}.hh-service-hero__inner{grid-template-columns:minmax(0,1.4fr) minmax(320px,.6fr);align-items:center}}
@media(min-width:1800px){.hh-layout-fluid .hh-container{width:calc(100% - 96px)}}
