/*
Theme Name:         Fortunatus
Theme URI:          https://iamfortunatus.com
Author:             Fortunatus
Author URI:         https://iamfortunatus.com
Description:        Official personal brand theme for Fortunatus — Growth Systems Architect. Navy #000080 + Orange #FF751F. Version 3.0 — fully mobile-responsive, SEO-optimised, Elementor-compatible. Custom post types for Programs, Testimonials, Books, Events. One-click demo importer included.
Version:            3.4.0
Requires at least:  6.0
Tested up to:       6.7
Requires PHP:       7.4
License:            Private
Text Domain:        fortunatus
Tags:               elementor, business, dark, custom-colors, custom-logo, full-width-template, responsive-layout, seo-friendly
*/

/* ==========================================================================
   CUSTOM PROPERTIES
   ========================================================================== */
:root {
  /* Brand */
  --navy:          #000080;
  --navy-deep:     #00004D;
  --navy-mid:      #00006B;
  --navy-soft:     #0000B0;
  --navy-pale:     #E6E6FF;
  --orange:        #FF751F;
  --orange-light:  #FF9550;
  --orange-pale:   #FFE0CC;
  --orange-glow:   rgba(255, 117, 31, 0.15);

  /* Surfaces */
  --bg:            #03031A;
  --bg2:           #05051E;
  --surface:       #09092A;
  --surface2:      #0C0C34;

  /* Borders */
  --border:        #121248;
  --border-bright: #1A1A60;

  /* Typography */
  --text:          #E8EAF6;
  --text-soft:     #9BA3D4;
  --text-mute:     #7C85B8;

  /* Fonts */
  --serif:         'Playfair Display', Georgia, 'Times New Roman', serif;
  --sans:          'Outfit', 'Segoe UI', system-ui, sans-serif;

  /* Motion */
  --ease:          cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out:      cubic-bezier(0, 0, 0.3, 1);

  /* Spacing */
  --section-pad:   7rem 5%;
  --container:     1300px;
  --radius:        0;
}

/* ==========================================================================
   RESET & BASE
   ========================================================================== */
*,
*::before,
*::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-weight: 300;
  line-height: 1.6;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body.cursor-custom { cursor: none; }
body.menu-open { overflow: hidden; }

/* Accessible focus */
:focus-visible {
  outline: 2px solid var(--orange);
  outline-offset: 3px;
}

img, video, svg { max-width: 100%; height: auto; display: block; }
a { color: var(--orange); text-decoration: none; transition: color .2s; }
a:hover { color: var(--orange-light); }
ul, ol { list-style: none; }
button { cursor: pointer; font-family: var(--sans); }
input, textarea, select { font-family: var(--sans); }
table { border-collapse: collapse; width: 100%; }

/* ==========================================================================
   ACCESSIBILITY
   ========================================================================== */
.skip-link {
  position: absolute;
  top: -100vh;
  left: 1rem;
  background: var(--orange);
  color: #fff;
  padding: .75rem 1.5rem;
  font-family: var(--sans);
  font-size: .85rem;
  font-weight: 500;
  letter-spacing: .05em;
  z-index: 99999;
  transition: top .2s;
}
.skip-link:focus { top: 1rem; }

.screen-reader-text {
  clip: rect(1px, 1px, 1px, 1px);
  height: 1px;
  overflow: hidden;
  position: absolute !important;
  width: 1px;
  word-wrap: normal !important;
}
.screen-reader-text:focus {
  background: var(--surface);
  clip: auto !important;
  color: var(--text);
  display: block;
  height: auto;
  left: .5rem;
  padding: 1rem;
  top: .5rem;
  width: auto;
  z-index: 100000;
}

/* ==========================================================================
   CUSTOM CURSOR (desktop only)
   ========================================================================== */
.fortunatus-cursor {
  position: fixed;
  width: 10px; height: 10px;
  background: var(--orange);
  border-radius: 50%;
  pointer-events: none;
  z-index: 99999;
  transform: translate(-50%, -50%);
  transition: width .25s var(--ease), height .25s var(--ease), opacity .2s;
  will-change: left, top;
}
.fortunatus-cursor-ring {
  position: fixed;
  width: 38px; height: 38px;
  border: 1px solid rgba(255, 117, 31, .4);
  border-radius: 50%;
  pointer-events: none;
  z-index: 99998;
  transform: translate(-50%, -50%);
  transition: width .3s var(--ease), height .3s var(--ease);
  will-change: left, top;
}
.fortunatus-cursor.expanded { width: 20px; height: 20px; }
.fortunatus-cursor-ring.expanded { width: 56px; height: 56px; }

@media (hover: none) or (max-width: 1024px) {
  .fortunatus-cursor,
  .fortunatus-cursor-ring { display: none !important; }
  body.cursor-custom { cursor: auto; }
}

/* ==========================================================================
   HEADER / NAVIGATION
   ========================================================================== */
#masthead {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.25rem 5%;
  background: transparent;
  border-bottom: 1px solid transparent;
  transition: background .4s, padding .3s, border-bottom-color .4s;
}
#masthead.scrolled {
  background: rgba(3, 3, 26, .97);
  border-bottom-color: var(--border);
  padding: .85rem 5%;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

/* Brand */
.site-branding a {
  display: flex;
  align-items: center;
  gap: .85rem;
  text-decoration: none;
}
.brand-mark {
  width: 36px; height: 36px;
  border: 1.5px solid var(--orange);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif);
  font-size: 1rem; font-weight: 700;
  color: var(--orange);
  position: relative;
  flex-shrink: 0;
  transition: background .2s;
}
.brand-mark::before {
  content: '';
  position: absolute; inset: 3px;
  background: rgba(255, 117, 31, .08);
}
.site-branding a:hover .brand-mark { background: rgba(255, 117, 31, .12); }
.site-name {
  font-family: var(--sans);
  font-size: .75rem; font-weight: 400;
  letter-spacing: .22em; text-transform: uppercase;
  color: var(--text);
}

/* Primary menu */
#primary-navigation { display: flex; align-items: center; }
#primary-navigation ul {
  display: flex;
  gap: 1.75rem;
  align-items: center;
}
#primary-navigation li { position: relative; }
#primary-navigation a {
  font-family: var(--sans);
  font-size: .68rem; font-weight: 300;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-soft);
  text-decoration: none;
  position: relative;
  padding-bottom: 2px;
  transition: color .2s;
  white-space: nowrap;
}
#primary-navigation a::after {
  content: '';
  position: absolute; bottom: 0; left: 0;
  width: 0; height: 1px;
  background: var(--orange);
  transition: width .3s var(--ease);
}
#primary-navigation a:hover,
#primary-navigation .current-menu-item > a,
#primary-navigation .current-page-ancestor > a { color: var(--text); }
#primary-navigation a:hover::after,
#primary-navigation .current-menu-item > a::after,
#primary-navigation .current-page-ancestor > a::after { width: 100%; }

/* Dropdown sub-menus */
#primary-navigation ul ul {
  position: absolute;
  top: calc(100% + .75rem); left: 0;
  background: rgba(5, 5, 30, .98);
  border: 1px solid var(--border);
  padding: .5rem 0;
  min-width: 200px;
  flex-direction: column;
  gap: 0;
  display: none;
  z-index: 100;
  border-top: 2px solid var(--orange);
}
#primary-navigation li:hover > ul,
#primary-navigation li:focus-within > ul { display: flex; }
#primary-navigation ul ul a {
  display: block;
  padding: .6rem 1.25rem;
  font-size: .7rem;
}
#primary-navigation ul ul li { border-bottom: 1px solid var(--border); }
#primary-navigation ul ul li:last-child { border-bottom: none; }

/* Header CTA */
.header-cta {
  font-family: var(--sans);
  font-size: .68rem; font-weight: 400;
  letter-spacing: .15em; text-transform: uppercase;
  color: var(--orange);
  text-decoration: none;
  border: 1px solid var(--orange);
  padding: .6rem 1.35rem;
  position: relative;
  overflow: hidden;
  transition: color .3s;
  white-space: nowrap;
  flex-shrink: 0;
}
.header-cta::before {
  content: '';
  position: absolute; inset: 0;
  background: var(--orange);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .3s var(--ease);
}
.header-cta:hover { color: var(--bg); }
.header-cta:hover::before { transform: scaleX(1); transform-origin: left; }
.header-cta span { position: relative; z-index: 1; }

/* Mobile toggle */
.nav-toggle {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  padding: 6px 4px;
  cursor: pointer;
  z-index: 1001;
}
.nav-toggle span {
  display: block;
  width: 22px; height: 1.5px;
  background: var(--text);
  transition: transform .3s, opacity .3s;
}
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: rotate(45deg) translate(4.5px, 4.5px); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: rotate(-45deg) translate(4.5px, -4.5px); }

/* Mobile overlay menu */
.mobile-menu-overlay {
  position: fixed;
  inset: 0;
  background: rgba(3, 3, 26, .98);
  z-index: 999;
  display: flex;
  flex-direction: column;
  padding: 7rem 5% 3rem;
  transform: translateX(100%);
  transition: transform .35s var(--ease);
  overflow-y: auto;
}
.mobile-menu-overlay.open { transform: translateX(0); }
.mobile-menu-overlay ul { flex-direction: column; gap: 0; }
.mobile-menu-overlay ul li { border-bottom: 1px solid var(--border); }
.mobile-menu-overlay ul a {
  display: block;
  font-family: var(--serif);
  font-size: clamp(1.5rem, 5vw, 2rem);
  font-weight: 400;
  color: var(--text);
  padding: 1rem 0;
  letter-spacing: -.01em;
  text-transform: none;
  transition: color .2s, padding-left .2s;
}
.mobile-menu-overlay ul a:hover { color: var(--orange); padding-left: .5rem; }
.mobile-menu-overlay ul a::after { display: none; }
.mobile-menu-cta {
  margin-top: 2.5rem;
  padding-top: 2rem;
  border-top: 1px solid var(--border);
}

/* ==========================================================================
   PAGE WRAPPER
   ========================================================================== */
#page { padding-top: 80px; }
.site-content { min-height: 60vh; }

/* ==========================================================================
   TYPOGRAPHY
   ========================================================================== */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--serif);
  font-weight: 700;
  color: var(--text);
  line-height: 1.1;
  letter-spacing: -.01em;
}
h1 { font-size: clamp(2.5rem, 6vw, 5.5rem); }
h2 { font-size: clamp(2rem, 4vw, 3.2rem); }
h3 { font-size: clamp(1.4rem, 2.5vw, 2rem); }
h4 { font-size: 1.25rem; }
h5 { font-size: 1rem; }
h6 { font-size: .9rem; }

p {
  font-family: var(--sans);
  font-weight: 300;
  line-height: 1.9;
  color: var(--text-soft);
  margin-bottom: 1.25rem;
}
p:last-child { margin-bottom: 0; }
strong { font-weight: 500; color: var(--text); }
em { font-style: italic; }

blockquote {
  border-left: 2px solid var(--orange);
  padding: 1.5rem 0 1.5rem 2rem;
  background: linear-gradient(90deg, rgba(255, 117, 31, .05) 0%, transparent 100%);
  margin: 2.5rem 0;
}
blockquote p {
  font-family: var(--serif);
  font-size: clamp(1.1rem, 2vw, 1.3rem);
  font-style: italic;
  color: var(--text);
  margin: 0;
  line-height: 1.65;
}
blockquote cite {
  display: block;
  font-family: var(--sans);
  font-size: .75rem;
  color: var(--orange);
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-top: .75rem;
}

code, pre {
  font-family: 'Courier New', monospace;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 2px;
}
code { padding: .15em .4em; font-size: .85em; }
pre { padding: 1.5rem; overflow-x: auto; font-size: .85rem; line-height: 1.6; }
pre code { background: none; border: none; padding: 0; }

hr {
  border: none;
  border-top: 1px solid var(--border);
  margin: 3rem 0;
}

/* ==========================================================================
   BUTTONS
   ========================================================================== */
.btn-primary {
  font-family: var(--sans);
  font-size: .72rem; font-weight: 400;
  letter-spacing: .18em; text-transform: uppercase;
  color: #fff !important;
  background: var(--orange);
  text-decoration: none;
  padding: 1rem 2.25rem;
  display: inline-flex; align-items: center; gap: .75rem;
  position: relative; overflow: hidden;
  cursor: pointer; border: none;
  transition: color .3s;
  line-height: 1;
  min-height: 48px; /* Touch target */
}
.btn-primary::before {
  content: '';
  position: absolute; inset: 0;
  background: var(--navy-soft);
  transform: scaleX(0); transform-origin: right;
  transition: transform .35s var(--ease);
}
.btn-primary:hover::before { transform: scaleX(1); transform-origin: left; }
.btn-primary > span, .btn-primary .btn-arrow { position: relative; z-index: 1; }
.btn-primary .btn-arrow { transition: transform .3s var(--ease); }
.btn-primary:hover .btn-arrow { transform: translateX(4px); }

.btn-ghost {
  font-family: var(--sans);
  font-size: .72rem; font-weight: 300;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--text-soft);
  text-decoration: none;
  padding: 1rem 2.25rem;
  border: 1px solid var(--border-bright);
  display: inline-flex; align-items: center; gap: .75rem;
  transition: all .3s;
  cursor: pointer; background: none;
  min-height: 48px;
}
.btn-ghost:hover { color: var(--orange); border-color: var(--orange); }

.btn-outline {
  font-family: var(--sans);
  font-size: .72rem; font-weight: 400;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--orange);
  text-decoration: none;
  padding: 1rem 2.25rem;
  border: 1px solid var(--orange);
  display: inline-flex; align-items: center; gap: .75rem;
  transition: all .3s; cursor: pointer; background: none;
  position: relative; overflow: hidden;
  min-height: 48px;
}
.btn-outline::before {
  content: '';
  position: absolute; inset: 0;
  background: var(--orange);
  transform: scaleX(0); transform-origin: right;
  transition: transform .35s var(--ease);
}
.btn-outline:hover { color: #fff; }
.btn-outline:hover::before { transform: scaleX(1); transform-origin: left; }
.btn-outline > span { position: relative; z-index: 1; }

.btn-dark {
  font-family: var(--sans);
  font-size: .72rem; font-weight: 400;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--orange);
  background: var(--bg);
  text-decoration: none;
  padding: 1rem 2.5rem;
  display: inline-flex; align-items: center; gap: .75rem;
  cursor: pointer; transition: background .3s, color .3s;
  border: none;
  min-height: 48px;
}
.btn-dark:hover { background: var(--navy); color: #fff; }

/* CTA button group */
.btn-group {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  align-items: center;
}

/* WordPress block button override */
.wp-block-button__link {
  border-radius: 0 !important;
  font-family: var(--sans) !important;
  letter-spacing: .15em !important;
  text-transform: uppercase !important;
  min-height: 48px !important;
}

/* ==========================================================================
   LAYOUT UTILITIES
   ========================================================================== */
.container {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 5%;
}
.container--wide { max-width: 1400px; margin: 0 auto; padding: 0 5%; }
.container--narrow { max-width: 780px; margin: 0 auto; padding: 0 5%; }

.section-pad   { padding: var(--section-pad); }
.section-pad-sm { padding: 4rem 5%; }
.section-pad-lg { padding: 10rem 5%; }

.navy-bg    { background: var(--navy) !important; }
.dark-bg    { background: var(--bg) !important; }
.surface-bg { background: var(--surface) !important; }
.bg2-bg     { background: var(--bg2) !important; }
.orange-bg  { background: var(--orange) !important; }

.white-text   { color: #fff !important; }
.orange-text  { color: var(--orange) !important; }
.soft-text    { color: var(--text-soft) !important; }
.mute-text    { color: var(--text-mute) !important; }

.text-center  { text-align: center; }
.text-right   { text-align: right; }
.flex-center  { display: flex; align-items: center; justify-content: center; }
.grid-2       { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; }
.grid-3       { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }

/* ==========================================================================
   SECTION LABELS & HEADINGS
   ========================================================================== */
.section-tag {
  display: flex;
  align-items: center;
  gap: 1rem;
  font-family: var(--sans);
  font-size: .7rem; font-weight: 400;
  letter-spacing: .2em; text-transform: uppercase;
  color: var(--orange);
  margin-bottom: 1.25rem;
}
.section-tag::before {
  content: '';
  width: 28px; height: 1px;
  background: var(--orange);
  flex-shrink: 0;
}
.section-tag--center { justify-content: center; }
.section-tag--center::before { display: none; }

.section-h {
  font-family: var(--serif);
  font-size: clamp(2rem, 3.5vw, 3.2rem);
  font-weight: 700; line-height: 1.1;
  color: var(--text);
  margin-bottom: 1.5rem;
}
.section-h em { font-style: italic; font-weight: 400; color: var(--orange); }
.section-h--white { color: #fff; }
.section-h--white em { color: var(--orange); }

.page-eyebrow {
  font-family: var(--sans);
  font-size: .68rem; letter-spacing: .25em; text-transform: uppercase;
  color: var(--orange);
  margin-bottom: 1.5rem;
  display: flex; align-items: center; gap: 1rem;
}
.page-eyebrow::before { content: ''; width: 28px; height: 1px; background: var(--orange); }

/* ==========================================================================
   SCROLL REVEAL ANIMATION
   ========================================================================== */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .8s var(--ease), transform .8s var(--ease);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal.visible.rd1 { transition-delay: 0s; } /* Reset delay after visible */
.rd1 { transition-delay: .1s; }
.rd2 { transition-delay: .2s; }
.rd3 { transition-delay: .3s; }
.rd4 { transition-delay: .4s; }

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* ==========================================================================
   MARQUEE
   ========================================================================== */
.marquee-wrap {
  background: var(--navy);
  border-top: 1px solid rgba(255, 117, 31, .2);
  border-bottom: 1px solid rgba(255, 117, 31, .2);
  padding: 1.25rem 0;
  overflow: hidden;
}
.marquee-wrap:hover .marquee-track { animation-play-state: paused; }
.marquee-track {
  display: flex;
  animation: marquee 45s linear infinite;
  white-space: nowrap;
  width: max-content;
}
.marquee-item {
  display: inline-flex;
  align-items: center;
  gap: 1.5rem;
  padding: 0 3rem;
  font-family: var(--sans);
  font-size: .72rem; letter-spacing: .18em; text-transform: uppercase;
  color: rgba(255, 255, 255, .5);
}
.m-dot { width: 4px; height: 4px; border-radius: 50%; background: var(--orange); flex-shrink: 0; }

/* ==========================================================================
   CTA BAND
   ========================================================================== */
.cta-band { background: var(--orange); padding: 5rem 5%; text-align: center; }
.cta-band-inner { max-width: 700px; margin: 0 auto; }
.cta-band h2 { font-family: var(--serif); font-size: clamp(2rem, 4vw, 3rem); font-weight: 700; color: #fff; margin-bottom: 1rem; line-height: 1.1; }
.cta-band p  { font-family: var(--sans); font-size: .95rem; font-weight: 300; color: rgba(255,255,255,.8); margin-bottom: 2.5rem; line-height: 1.8; }
.btn-dark-invert {
  font-family: var(--sans); font-size: .72rem; font-weight: 400;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--orange); background: var(--bg);
  text-decoration: none; padding: 1rem 2.5rem;
  display: inline-flex; align-items: center; gap: .75rem;
  cursor: pointer; transition: background .3s, color .3s; border: none;
  min-height: 48px;
}
.btn-dark-invert:hover { background: var(--navy); color: #fff; }

/* ==========================================================================
   FORMS
   ========================================================================== */
.fortunatus-form .form-group { margin-bottom: 1.5rem; }
.fortunatus-form label,
.flabel {
  display: block;
  font-family: var(--sans);
  font-size: .62rem; letter-spacing: .18em; text-transform: uppercase;
  color: var(--text-mute);
  margin-bottom: .5rem;
}
.fortunatus-form input[type="text"],
.fortunatus-form input[type="email"],
.fortunatus-form input[type="tel"],
.fortunatus-form input[type="url"],
.fortunatus-form select,
.fortunatus-form textarea,
.finput, .fselect, .ftextarea {
  width: 100%;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: .9rem 1rem;
  font-family: var(--sans);
  font-size: .9rem; font-weight: 300;
  color: var(--text);
  outline: none;
  transition: border-color .2s, background .2s;
  resize: vertical;
  margin-bottom: 0;
  appearance: none; -webkit-appearance: none;
  min-height: 48px; /* Touch target */
}
.fortunatus-form input:focus,
.fortunatus-form select:focus,
.fortunatus-form textarea:focus,
.finput:focus, .fselect:focus, .ftextarea:focus {
  border-color: var(--orange);
  background: var(--surface2);
}
.fortunatus-form input::placeholder,
.fortunatus-form textarea::placeholder { color: var(--text-mute); }
.ftextarea { height: 130px; min-height: 100px; }
.fgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.fortunatus-form button[type="submit"], .fsub {
  font-family: var(--sans); font-size: .72rem; font-weight: 400;
  letter-spacing: .18em; text-transform: uppercase;
  color: #fff; background: var(--orange);
  border: none; padding: 1rem 2.5rem;
  cursor: pointer; transition: background .3s;
  width: 100%; min-height: 52px;
  margin-top: .25rem;
}
.fortunatus-form button[type="submit"]:hover, .fsub:hover { background: var(--orange-light); }

/* Checkbox/radio groups */
.checkbox-group { display: flex; flex-direction: column; gap: .65rem; margin-bottom: 1.5rem; }
.check-item {
  display: flex; align-items: flex-start; gap: .85rem;
  font-family: var(--sans); font-size: .88rem; font-weight: 300;
  color: var(--text-soft); cursor: pointer; line-height: 1.5;
  padding: .25rem 0;
}
.check-item input[type="checkbox"],
.check-item input[type="radio"] {
  width: 18px; height: 18px; min-width: 18px;
  accent-color: var(--orange); cursor: pointer;
  margin-top: 2px;
}
.form-section-title {
  font-family: var(--serif); font-size: 1rem; font-weight: 500;
  color: var(--orange); margin: 2.5rem 0 1.25rem;
  letter-spacing: .05em; border-bottom: 1px solid var(--border);
  padding-bottom: .75rem;
}
.form-section-title:first-child { margin-top: 0; }
.form-error { color: #ff4d4d; font-size: .78rem; margin-top: .35rem; }
.form-success {
  background: rgba(0, 200, 100, .1); border: 1px solid rgba(0, 200, 100, .3);
  padding: 1rem 1.25rem; font-family: var(--sans); font-size: .88rem;
  color: #00c864; margin-top: 1rem;
}

/* Newsletter inline form */
.newsletter-form {
  display: flex;
  border: 1px solid rgba(255, 117, 31, .35);
  overflow: hidden;
  max-width: 480px;
  transition: border-color .2s;
}
.newsletter-form:focus-within { border-color: var(--orange); }
.newsletter-input {
  flex: 1; background: transparent; border: none;
  padding: 1rem 1.25rem;
  font-family: var(--sans); font-size: .88rem; font-weight: 300;
  color: #fff; outline: none;
  min-height: 52px;
}
.newsletter-input::placeholder { color: rgba(255, 255, 255, .3); }
.newsletter-btn {
  font-family: var(--sans); font-size: .68rem; font-weight: 400;
  letter-spacing: .16em; text-transform: uppercase;
  color: #fff; background: var(--orange);
  border: none; padding: 1rem 1.75rem;
  cursor: pointer; transition: background .2s;
  white-space: nowrap; flex-shrink: 0;
  min-height: 52px;
}
.newsletter-btn:hover { background: var(--orange-light); }

/* ==========================================================================
   HERO
   ========================================================================== */
.hero-section {
  min-height: calc(100vh - 80px);
  display: grid;
  grid-template-columns: 55% 45%;
  position: relative;
  overflow: hidden;
}
.hero-section::before {
  content: ''; position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(0, 0, 128, .08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 0, 128, .08) 1px, transparent 1px);
  background-size: 80px 80px;
  z-index: 0;
  pointer-events: none;
}
.hero-section::after {
  content: ''; position: absolute;
  top: 10%; left: -10%;
  width: 700px; height: 700px;
  background: radial-gradient(circle, rgba(0, 0, 160, .2) 0%, transparent 65%);
  z-index: 0; pointer-events: none;
}
.hero-left {
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 8rem 5% 5rem;
  position: relative; z-index: 2;
}
.hero-line {
  width: 40px; height: 2px;
  background: var(--orange);
  margin-bottom: 1.5rem;
  opacity: 0;
  animation: expandLine .8s var(--ease) .3s forwards;
}
.hero-eyebrow-text {
  font-family: var(--sans); font-size: .68rem; font-weight: 300;
  letter-spacing: .24em; text-transform: uppercase;
  color: var(--orange);
  margin-bottom: 2rem;
  opacity: 0; animation: fadeUp .9s var(--ease) .5s forwards;
}
.hero-h {
  font-family: var(--serif);
  font-size: clamp(2.8rem, 6vw, 6rem);
  font-weight: 700; line-height: 1.02;
  letter-spacing: -.02em; color: var(--text);
  margin-bottom: 1.5rem;
  opacity: 0; animation: fadeUp .9s var(--ease) .65s forwards;
}
.hero-h em { display: block; font-style: italic; font-weight: 400; color: var(--orange); }
.hero-sub {
  font-family: var(--sans); font-size: 1rem; font-weight: 300;
  color: var(--text-soft); max-width: 500px; line-height: 1.85;
  margin-bottom: 1.5rem;
  opacity: 0; animation: fadeUp .9s var(--ease) .8s forwards;
}
.hero-desc {
  font-family: var(--sans); font-size: .9rem; font-weight: 300;
  color: var(--text-mute); max-width: 500px; line-height: 1.9;
  margin-bottom: 3rem;
  border-left: 2px solid var(--border-bright); padding-left: 1.25rem;
  opacity: 0; animation: fadeUp .9s var(--ease) .95s forwards;
}
.hero-ctas {
  display: flex; gap: 1rem; flex-wrap: wrap; align-items: center;
  opacity: 0; animation: fadeUp .9s var(--ease) 1.1s forwards;
}
.hero-right {
  position: relative; overflow: hidden;
  opacity: 0; animation: fadeIn 1.4s var(--ease) .4s forwards;
}
.hero-right-inner { position: absolute; inset: 0; background: var(--surface); overflow: hidden; }
.hero-glow1 {
  position: absolute; width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(255,117,31,.1) 0%, transparent 65%);
  bottom: -100px; left: -100px;
  pointer-events: none;
}
.hero-glow2 {
  position: absolute; width: 400px; height: 400px;
  background: radial-gradient(circle, rgba(0,0,180,.2) 0%, transparent 65%);
  top: -50px; right: -50px;
  pointer-events: none;
}
.hero-photo-img {
  position: absolute;
  bottom: 0; left: 50%;
  transform: translateX(-50%);
  width: 75%;
  height: auto;
  object-fit: contain;
  object-position: bottom center;
  display: block;
}
.hero-side-stats {
  position: absolute; right: 0; top: 50%;
  transform: translateY(-50%);
  display: flex; flex-direction: column;
  width: 88px;
  border-left: 1px solid var(--border);
  opacity: 0; animation: fadeIn 1s var(--ease) 1.4s forwards;
}
.s-stat { padding: 1.25rem 0; border-bottom: 1px solid var(--border); text-align: center; }
.s-stat:last-child { border-bottom: none; }
.s-num { font-family: var(--serif); font-size: 1.1rem; font-weight: 700; color: var(--orange); display: block; line-height: 1; }
.s-lbl { font-family: var(--sans); font-size: .58rem; letter-spacing: .1em; text-transform: uppercase; color: var(--text-mute); display: block; margin-top: .35rem; line-height: 1.4; padding: 0 .4rem; }
.hero-bottom {
  position: absolute; bottom: 0; left: 0; right: 45%;
  height: 56px; border-top: 1px solid var(--border);
  display: flex; align-items: center; padding: 0 5%; gap: 2.5rem;
  z-index: 2;
  opacity: 0; animation: fadeIn 1s ease 1.5s forwards;
}
.hb-item { display: flex; align-items: center; gap: .65rem; font-family: var(--sans); font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; color: var(--text-mute); }
.hb-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--orange); flex-shrink: 0; }

/* ==========================================================================
   PAGE HERO (inner pages)
   ========================================================================== */
.page-hero {
  padding: 9rem 5% 5rem;
  position: relative; overflow: hidden;
  background: var(--bg);
}
.page-hero--navy { background: var(--navy); }
.page-hero::before {
  content: ''; position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(0,0,128,.07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,0,128,.07) 1px, transparent 1px);
  background-size: 80px 80px;
  pointer-events: none;
}
.page-hero-inner { max-width: var(--container); margin: 0 auto; position: relative; z-index: 1; }
.page-title {
  font-family: var(--serif);
  font-size: clamp(2.5rem, 6vw, 5.5rem);
  font-weight: 700; line-height: 1.02;
  letter-spacing: -.02em; color: var(--text);
  margin-bottom: 1.5rem;
}
.page-title em { font-style: italic; font-weight: 400; color: var(--orange); }
.page-desc {
  font-family: var(--sans); font-size: 1.05rem; font-weight: 300;
  color: var(--text-soft); max-width: 600px; line-height: 1.9; margin-bottom: 2.5rem;
}

/* ==========================================================================
   STAGE SELECTOR
   ========================================================================== */
.stage-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 1px; background: var(--border);
}
.stage-card {
  background: var(--bg); padding: 3rem 2.5rem;
  position: relative; overflow: hidden;
  transition: background .3s;
  text-decoration: none; color: inherit; display: block;
}
.stage-card::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0;
  height: 3px; background: var(--orange);
  transform: scaleX(0); transform-origin: left;
  transition: transform .4s var(--ease);
}
.stage-card:hover { background: var(--surface); }
.stage-card:hover::before { transform: scaleX(1); }
.stage-num { font-family: var(--serif); font-size: 3rem; font-weight: 700; color: rgba(255,117,31,.08); line-height: 1; margin-bottom: 1rem; transition: color .3s; }
.stage-card:hover .stage-num { color: rgba(255,117,31,.2); }
.stage-arrow { font-family: var(--sans); font-size: .65rem; letter-spacing: .18em; text-transform: uppercase; color: var(--orange); margin-bottom: .75rem; }
.stage-title { font-family: var(--serif); font-size: clamp(1.2rem, 2vw, 1.5rem); font-weight: 700; color: var(--text); margin-bottom: .75rem; line-height: 1.25; }
.stage-tagline { font-family: var(--sans); font-size: .85rem; font-style: italic; color: var(--text-soft); margin-bottom: 1.25rem; line-height: 1.6; }
.stage-cta { font-family: var(--sans); font-size: .65rem; letter-spacing: .16em; text-transform: uppercase; color: var(--orange); display: flex; align-items: center; gap: .5rem; transition: gap .3s; }
.stage-card:hover .stage-cta { gap: .85rem; }
.stage-footer { margin-top: 2rem; text-align: center; font-family: var(--serif); font-size: 1rem; font-style: italic; color: var(--text-mute); padding: 1.5rem; border: 1px solid var(--border); }

/* ==========================================================================
   PHILOSOPHY / PILLARS
   ========================================================================== */
.pillars { display: flex; flex-direction: column; gap: 1px; background: rgba(255,255,255,.06); }
.pillar {
  background: var(--navy); padding: 2rem;
  position: relative; overflow: hidden; transition: background .3s;
}
.pillar:hover { background: rgba(255, 117, 31, .06); }
.pillar::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0;
  width: 2px; background: var(--orange);
  transform: scaleY(0); transform-origin: bottom;
  transition: transform .4s var(--ease);
}
.pillar:hover::before { transform: scaleY(1); }
.pillar-n { font-family: var(--serif); font-size: .8rem; color: var(--orange); margin-bottom: .6rem; letter-spacing: .1em; }
.pillar-title { font-family: var(--serif); font-size: 1.1rem; font-weight: 500; color: #fff; margin-bottom: .4rem; }
.pillar-desc { font-family: var(--sans); font-size: .82rem; font-weight: 300; color: rgba(255,255,255,.65); line-height: 1.75; margin-bottom: 0; }

.philosophy-quote {
  font-family: var(--serif);
  font-size: clamp(1.3rem, 2.5vw, 2rem);
  font-style: italic; color: #fff; line-height: 1.55;
  padding: 2rem 0 2rem 2rem;
  border-left: 2px solid var(--orange);
  background: linear-gradient(90deg, rgba(255,117,31,.06) 0%, transparent 100%);
}

/* ==========================================================================
   TESTIMONIALS
   ========================================================================== */
.testi-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; background: rgba(255,255,255,.06); }
.testi-card { background: var(--bg2); padding: 2.5rem; transition: background .3s; }
.testi-card:hover { background: var(--surface); }
.t-mark { font-family: var(--serif); font-size: 4rem; font-weight: 700; line-height: .8; color: var(--orange); opacity: .2; margin-bottom: 1rem; display: block; }
.t-text { font-family: var(--serif); font-size: 1rem; font-style: italic; color: var(--text); line-height: 1.8; margin-bottom: 1.75rem; }
.t-rule { width: 24px; height: 1px; background: var(--orange); margin-bottom: 1.25rem; }
.t-name { font-family: var(--sans); font-size: .82rem; font-weight: 400; color: var(--text); margin-bottom: 0; }
.t-role { font-family: var(--sans); font-size: .72rem; font-weight: 300; color: var(--text-mute); margin-top: .2rem; margin-bottom: 0; }

/* ==========================================================================
   SERVICES GRID
   ========================================================================== */
.services-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--border); }
.svc-card {
  background: var(--bg); padding: 3rem;
  position: relative; overflow: hidden; transition: background .3s;
}
.svc-card:hover { background: var(--surface); }
.svc-card::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0;
  height: 2px; background: var(--orange);
  transform: scaleX(0); transform-origin: left;
  transition: transform .4s var(--ease);
}
.svc-card:hover::before { transform: scaleX(1); }
.svc-num { font-family: var(--serif); font-size: 3rem; font-weight: 700; color: rgba(255,117,31,.07); line-height: 1; margin-bottom: 1.5rem; transition: color .3s; }
.svc-card:hover .svc-num { color: rgba(255,117,31,.2); }
.svc-name { font-family: var(--serif); font-size: clamp(1.1rem, 2vw, 1.35rem); font-weight: 500; color: var(--text); margin-bottom: 1rem; line-height: 1.25; }
.svc-desc { font-family: var(--sans); font-size: .88rem; font-weight: 300; color: var(--text-soft); line-height: 1.85; margin-bottom: 1.75rem; }
.svc-deliverables { list-style: none; display: flex; flex-direction: column; gap: .5rem; }
.svc-deliverable { display: flex; align-items: flex-start; gap: .75rem; font-family: var(--sans); font-size: .78rem; font-weight: 300; color: var(--text-mute); line-height: 1.5; }
.svc-deliverable::before { content: ''; width: 12px; height: 1px; background: var(--orange); flex-shrink: 0; margin-top: .65rem; }

/* Program cards */
.program-card {
  background: var(--navy); padding: 3rem;
  position: relative; overflow: hidden; transition: background .3s;
  text-decoration: none; color: inherit; display: block;
  border-top: 2px solid var(--orange);
}
.program-card:hover { background: rgba(0,0,128,.8); }
.program-tag { font-family: var(--sans); font-size: .62rem; letter-spacing: .2em; text-transform: uppercase; color: var(--orange); margin-bottom: .75rem; }
.program-title { font-family: var(--serif); font-size: 1.4rem; font-weight: 700; color: #fff; margin-bottom: .75rem; line-height: 1.2; }
.program-price { font-family: var(--sans); font-size: .85rem; font-weight: 300; color: rgba(255,255,255,.5); margin-bottom: 1.5rem; }
.program-link { font-family: var(--sans); font-size: .65rem; letter-spacing: .16em; text-transform: uppercase; color: var(--orange); display: flex; align-items: center; gap: .5rem; transition: gap .3s; }
.program-card:hover .program-link { gap: .85rem; }

/* ==========================================================================
   SPRINT / AUDIT / SCALING ROOM
   ========================================================================== */
.sprint-hero-section {
  background: var(--navy); min-height: 55vh;
  display: flex; align-items: flex-end;
  padding: 9rem 5% 5rem;
  position: relative; overflow: hidden;
}
.sprint-hero-section::before {
  content: ''; position: absolute; inset: 0;
  background-image: linear-gradient(rgba(255,117,31,.05) 1px,transparent 1px), linear-gradient(90deg,rgba(255,117,31,.05) 1px,transparent 1px);
  background-size: 60px 60px;
}
.sprint-hero-section::after {
  content: ''; position: absolute; bottom: -50%; right: -10%;
  width: 600px; height: 600px;
  background: radial-gradient(circle, rgba(255,117,31,.12) 0%, transparent 60%);
  pointer-events: none;
}
.sprint-badge {
  display: inline-flex; align-items: center; gap: .75rem;
  font-family: var(--sans); font-size: .65rem; letter-spacing: .22em; text-transform: uppercase;
  color: var(--orange); border: 1px solid rgba(255,117,31,.3);
  padding: .5rem 1rem; margin-bottom: 2rem;
}
.sprint-badge::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--orange); animation: pulse 1.5s ease infinite; flex-shrink: 0; }
.sprint-title { font-family: var(--serif); font-size: clamp(2.8rem, 7vw, 6.5rem); font-weight: 700; line-height: 1; letter-spacing: -.02em; color: #fff; margin-bottom: 1rem; }
.sprint-title em { font-style: italic; font-weight: 400; color: var(--orange); }
.sprint-subtitle { font-family: var(--sans); font-size: clamp(.9rem, 2vw, 1.1rem); font-weight: 300; color: rgba(255,255,255,.6); max-width: 600px; line-height: 1.8; margin-bottom: 3rem; }
.sprint-meta { display: flex; gap: 2rem; flex-wrap: wrap; }
.sprint-meta-item { display: flex; flex-direction: column; gap: .25rem; }
.sprint-meta-label { font-family: var(--sans); font-size: .6rem; letter-spacing: .2em; text-transform: uppercase; color: rgba(255,117,31,.65); }
.sprint-meta-val { font-family: var(--sans); font-size: .9rem; font-weight: 400; color: #fff; }
/* Outcome rows */
.outcomes-grid { display: flex; flex-direction: column; gap: 1px; background: var(--border); }
.outcome-row { background: var(--surface); padding: 1.5rem 2rem; display: flex; align-items: flex-start; gap: 1.5rem; transition: background .2s; }
.outcome-row:hover { background: var(--surface2); }
.o-num { font-family: var(--serif); font-size: 1.8rem; font-weight: 700; color: rgba(255,117,31,.2); min-width: 40px; line-height: 1; flex-shrink: 0; }
.o-text { font-family: var(--sans); font-size: .9rem; font-weight: 400; color: var(--text); line-height: 1.5; padding-top: .25rem; }
/* Registration card */
.reg-card { background: var(--navy); border: 1px solid rgba(255,117,31,.25); padding: 2.5rem; position: sticky; top: 100px; }
.reg-price { font-family: var(--serif); font-size: 3.5rem; font-weight: 700; color: var(--orange); line-height: 1; margin-bottom: .25rem; }
.reg-note { font-family: var(--sans); font-size: .72rem; color: rgba(255,255,255,.55); margin-bottom: 2rem; }
.feat-list { display: flex; flex-direction: column; gap: .85rem; margin-bottom: 2rem; padding-bottom: 2rem; border-bottom: 1px solid rgba(255,255,255,.08); }
.feat-item { display: flex; align-items: center; gap: .85rem; font-family: var(--sans); font-size: .82rem; font-weight: 300; color: rgba(255,255,255,.65); }
.feat-check { width: 18px; height: 18px; border-radius: 50%; background: rgba(255,117,31,.15); border: 1px solid rgba(255,117,31,.4); display: flex; align-items: center; justify-content: center; font-size: .6rem; color: var(--orange); flex-shrink: 0; }
/* Transition block */
.transition-block { background: var(--navy); border: 1px solid rgba(255,117,31,.2); padding: 2rem; }
.transition-row { display: flex; align-items: center; gap: 1rem; padding: .75rem 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.transition-row:last-child { border-bottom: none; }
.t-from { font-family: var(--sans); font-size: .88rem; color: var(--text-mute); flex: 1; }
.t-arrow { color: var(--orange); font-size: 1rem; flex-shrink: 0; }
.t-to { font-family: var(--sans); font-size: .88rem; font-weight: 400; color: var(--text); flex: 1; }

/* ==========================================================================
   BLOG
   ========================================================================== */
.blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--border); }
.blog-card { background: var(--surface); overflow: hidden; transition: background .3s; text-decoration: none; color: inherit; display: block; }
.blog-card:hover { background: var(--surface2); }
.blog-card-img { aspect-ratio: 16/9; overflow: hidden; background: var(--navy); position: relative; }
.blog-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s var(--ease); }
.blog-card:hover .blog-card-img img { transform: scale(1.03); }
.blog-card-img-placeholder { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--surface) 0%, var(--navy) 100%); }
.blog-card-img-placeholder span { font-family: var(--serif); font-size: 4rem; color: rgba(255,117,31,.1); font-weight: 700; }
.blog-card-body { padding: 2rem; }
.blog-card-tag { font-family: var(--sans); font-size: .62rem; letter-spacing: .18em; text-transform: uppercase; color: var(--orange); margin-bottom: .75rem; }
.blog-card-title { font-family: var(--serif); font-size: clamp(1.1rem, 2vw, 1.25rem); font-weight: 700; color: var(--text); line-height: 1.3; margin-bottom: .75rem; transition: color .2s; }
.blog-card:hover .blog-card-title { color: var(--orange); }
.blog-card-excerpt { font-family: var(--sans); font-size: .82rem; font-weight: 300; color: var(--text-mute); line-height: 1.75; margin-bottom: 1.25rem; }
.blog-card-meta { font-family: var(--sans); font-size: .68rem; color: var(--text-mute); margin-bottom: 0; }

/* Article list */
.article-list { border-top: 1px solid var(--border); }
.article-row {
  display: grid; grid-template-columns: auto 1fr auto;
  gap: 2rem; align-items: center;
  padding: 1.75rem 0; border-bottom: 1px solid var(--border);
  text-decoration: none; color: inherit;
  position: relative; overflow: hidden; cursor: pointer;
  transition: padding-left .3s var(--ease);
}
.article-row::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0;
  width: 2px; background: var(--orange);
  transform: scaleY(0); transform-origin: bottom;
  transition: transform .3s var(--ease);
}
.article-row:hover { padding-left: 1.25rem; }
.article-row:hover::before { transform: scaleY(1); }
.art-num { font-family: var(--serif); font-size: .9rem; color: var(--text-mute); min-width: 32px; }
.art-tag { font-family: var(--sans); font-size: .62rem; letter-spacing: .18em; text-transform: uppercase; color: var(--orange); margin-bottom: .4rem; }
.art-title { font-family: var(--serif); font-size: clamp(1rem, 1.8vw, 1.15rem); font-weight: 500; color: var(--text); line-height: 1.35; transition: color .2s; margin-bottom: 0; }
.article-row:hover .art-title { color: var(--orange); }
.art-arrow { font-size: 1rem; color: var(--text-mute); transition: transform .3s var(--ease), color .2s; flex-shrink: 0; }
.article-row:hover .art-arrow { transform: translate(4px, -4px); color: var(--orange); }

/* Single post */
.post-header { padding: 9rem 5% 5rem; background: var(--navy); position: relative; overflow: hidden; }
.post-header::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(rgba(0,0,128,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,128,.1) 1px,transparent 1px); background-size: 80px 80px; pointer-events: none; }
.post-content { max-width: 780px; margin: 0 auto; padding: 5rem 5%; }
.post-content > * + * { margin-top: 1.5rem; }
.post-content h2 { font-size: clamp(1.5rem, 3vw, 2rem); margin-top: 3rem; margin-bottom: 1rem; }
.post-content h3 { font-size: clamp(1.2rem, 2.5vw, 1.5rem); margin-top: 2.5rem; margin-bottom: .75rem; }
.post-content p { color: var(--text-soft); line-height: 1.95; }
.post-author-row { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.post-author-img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; object-position: top; border: 2px solid rgba(255,117,31,.3); flex-shrink: 0; }
.post-author-name { font-family: var(--sans); font-size: .85rem; font-weight: 400; color: var(--text); line-height: 1.2; margin-bottom: 0; }
.post-author-role { font-family: var(--sans); font-size: .72rem; color: rgba(255,255,255,.6); margin-bottom: 0; }
.post-meta-text { font-family: var(--sans); font-size: .72rem; color: rgba(255,255,255,.55); margin-bottom: 0; }

/* ==========================================================================
   BOOKS
   ========================================================================== */
.books-list { display: flex; flex-direction: column; gap: 1px; background: var(--border); }
.book-item {
  background: var(--bg);
  display: grid; grid-template-columns: 90px 1fr auto;
  gap: 2.5rem; align-items: center;
  padding: 2.5rem;
  transition: background .3s;
  text-decoration: none; color: inherit;
}
.book-item:hover { background: var(--surface); }
.book-cover { width: 80px; height: 110px; background: var(--navy); border: 1px solid rgba(255,117,31,.2); position: relative; display: flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden; }
.book-cover-bar { position: absolute; left: 0; top: 0; bottom: 0; width: 8px; background: var(--orange); }
.book-cover-letter { font-family: var(--serif); font-size: 2.5rem; font-weight: 700; color: rgba(255,117,31,.15); }
.book-tag { font-family: var(--sans); font-size: .62rem; letter-spacing: .18em; text-transform: uppercase; color: var(--orange); margin-bottom: .5rem; }
.book-title { font-family: var(--serif); font-size: clamp(1.2rem, 2vw, 1.5rem); font-weight: 700; color: var(--text); margin-bottom: .5rem; line-height: 1.2; }
.book-desc { font-family: var(--sans); font-size: .85rem; font-weight: 300; color: var(--text-mute); line-height: 1.75; max-width: 550px; margin-bottom: 0; }
.book-status { font-family: var(--sans); font-size: .58rem; letter-spacing: .14em; text-transform: uppercase; padding: .4rem 1rem; border: 1px solid; display: inline-block; white-space: nowrap; }
.book-status.coming-soon { color: var(--text-mute); border-color: var(--border); }
.book-status.available { color: var(--orange); border-color: rgba(255,117,31,.35); }

/* ==========================================================================
   EVENTS
   ========================================================================== */
.events-list { display: flex; flex-direction: column; gap: 1px; background: var(--border); }
.event-row { background: var(--surface); padding: 2.5rem; display: grid; grid-template-columns: 90px 1fr auto; gap: 2.5rem; align-items: center; transition: background .3s; }
.event-row:hover { background: var(--surface2); }
.event-date-box { text-align: center; background: var(--navy); padding: 1rem; border: 1px solid rgba(255,117,31,.2); width: 80px; flex-shrink: 0; }
.event-date-label { font-family: var(--serif); font-size: 1.5rem; font-weight: 700; color: var(--orange); display: block; line-height: 1; }
.event-date-sub { font-family: var(--sans); font-size: .65rem; letter-spacing: .1em; text-transform: uppercase; color: rgba(255,255,255,.55); display: block; margin-top: .25rem; }
.event-tag { font-family: var(--sans); font-size: .65rem; letter-spacing: .18em; text-transform: uppercase; color: var(--orange); margin-bottom: .5rem; }
.event-title { font-family: var(--serif); font-size: clamp(1.2rem, 2vw, 1.5rem); font-weight: 700; color: var(--text); margin-bottom: .35rem; line-height: 1.2; }
.event-meta { font-family: var(--sans); font-size: .85rem; font-weight: 300; color: var(--text-mute); margin-bottom: 0; }

/* ==========================================================================
   CONTACT
   ========================================================================== */
.contact-lines { display: flex; flex-direction: column; border: 1px solid var(--border); }
.contact-line { display: flex; align-items: center; padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--border); gap: 1.5rem; transition: background .2s; }
.contact-line:last-child { border-bottom: none; }
.contact-line:hover { background: var(--surface); }
.c-label { font-family: var(--sans); font-size: .62rem; letter-spacing: .18em; text-transform: uppercase; color: var(--orange); min-width: 80px; flex-shrink: 0; }
.c-val { font-family: var(--sans); font-size: .88rem; color: var(--text-soft); margin-bottom: 0; word-break: break-all; }
.social-links { display: flex; gap: .75rem; flex-wrap: wrap; }
.social-link { font-family: var(--sans); font-size: .65rem; letter-spacing: .14em; text-transform: uppercase; color: var(--text-mute); border: 1px solid var(--border); padding: .6rem 1.1rem; text-decoration: none; transition: all .2s; cursor: pointer; background: none; min-height: 40px; display: inline-flex; align-items: center; }
.social-link:hover { border-color: var(--orange); color: var(--orange); }

/* ==========================================================================
   CREDENTIALS PANEL
   ========================================================================== */
.credentials-panel { background: var(--surface); border: 1px solid var(--border); overflow: hidden; }
.cred-panel-header { padding: 1.1rem 1.75rem; border-bottom: 1px solid var(--border); background: var(--navy); font-family: var(--sans); font-size: .65rem; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,255,255,.55); display: flex; justify-content: space-between; align-items: center; }
.cred-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--orange); flex-shrink: 0; }
.cred-row { display: flex; align-items: center; padding: 1.1rem 1.75rem; border-bottom: 1px solid var(--border); gap: 1.25rem; transition: background .2s; }
.cred-row:last-child { border-bottom: none; }
.cred-row:hover { background: var(--surface2); }
.cred-idx { font-family: var(--serif); font-size: .78rem; color: var(--text-mute); min-width: 24px; flex-shrink: 0; }
.cred-title { font-family: var(--sans); font-size: .84rem; font-weight: 400; color: var(--text); flex: 1; margin-bottom: 0; line-height: 1.4; }
.cred-badge { font-family: var(--sans); font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; color: var(--orange); border: 1px solid rgba(255,117,31,.35); padding: .2rem .6rem; white-space: nowrap; flex-shrink: 0; }

/* ==========================================================================
   PODCAST
   ========================================================================== */
.audio-viz { display: flex; align-items: center; gap: 3px; height: 40px; }
.viz-bar { flex: 1; background: var(--orange); border-radius: 2px; animation: audioBar 1.5s ease-in-out infinite alternate; }
.viz-bar:nth-child(even) { animation-direction: alternate-reverse; }
.viz-bar:nth-child(1){height:30%} .viz-bar:nth-child(2){height:70%} .viz-bar:nth-child(3){height:50%}
.viz-bar:nth-child(4){height:90%} .viz-bar:nth-child(5){height:40%} .viz-bar:nth-child(6){height:75%}
.viz-bar:nth-child(7){height:55%} .viz-bar:nth-child(8){height:85%} .viz-bar:nth-child(9){height:35%}
.viz-bar:nth-child(10){height:65%} .viz-bar:nth-child(11){height:45%} .viz-bar:nth-child(12){height:80%}
.viz-bar:nth-child(13){height:25%} .viz-bar:nth-child(14){height:60%} .viz-bar:nth-child(15){height:40%}
.viz-bar:nth-child(16){height:95%} .viz-bar:nth-child(17){height:50%} .viz-bar:nth-child(18){height:70%}
.viz-bar:nth-child(19){height:35%} .viz-bar:nth-child(20){height:55%}

/* ==========================================================================
   FOOTER
   ========================================================================== */
#colophon {
  background: var(--navy-deep);
  border-top: 1px solid rgba(255,117,31,.15);
  padding: 3.5rem 5%;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 2rem;
}
.footer-brand { font-family: var(--serif); font-size: 1.1rem; font-weight: 700; color: #fff; text-decoration: none; }
.footer-brand span { color: var(--orange); }
#footer-navigation ul { display: flex; gap: 1.5rem; flex-wrap: wrap; justify-content: center; }
#footer-navigation a { font-family: var(--sans); font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: #b3b2af; text-decoration: none; transition: color .2s; padding: .25rem 0; }
#footer-navigation a:hover { color: var(--orange); }
.footer-right { text-align: right; }
.footer-tagline { font-family: var(--serif); font-size: .78rem; font-style: italic; color: rgba(255,117,31,.7); margin-bottom: .35rem; }
.footer-copy { font-family: var(--sans); font-size: .65rem; color: rgba(255,255,255,.7); margin-bottom: 0; }

/* ==========================================================================
   PAGINATION
   ========================================================================== */
.pagination, .nav-links { display: flex; gap: .5rem; flex-wrap: wrap; padding: 3rem 0; }
.pagination .page-numbers, .nav-links a, .nav-links span {
  font-family: var(--sans); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase;
  color: var(--text-soft); border: 1px solid var(--border);
  padding: .6rem 1rem; text-decoration: none; transition: all .2s;
  min-height: 40px; display: inline-flex; align-items: center;
}
.pagination .current, .pagination .page-numbers:hover { border-color: var(--orange); color: var(--orange); }

/* ==========================================================================
   ELEMENTOR COMPATIBILITY
   ========================================================================== */
.elementor-section { position: relative; }
.elementor-section.elementor-section-full_width { padding: 0 !important; }
.elementor-widget-heading .elementor-heading-title { font-family: var(--serif) !important; line-height: 1.1 !important; }
.elementor-widget-text-editor p { font-family: var(--sans) !important; font-weight: 300 !important; }
.elementor-button { border-radius: 0 !important; font-family: var(--sans) !important; letter-spacing: .15em !important; text-transform: uppercase !important; }
/* Custom Elementor CSS classes */
.e-navy      { background-color: var(--navy) !important; }
.e-dark      { background-color: var(--bg) !important; }
.e-surface   { background-color: var(--surface) !important; }
.e-orange-bg { background-color: var(--orange) !important; }
.e-serif     { font-family: var(--serif) !important; }
.e-sans      { font-family: var(--sans) !important; }
.e-border-orange     { border: 1px solid rgba(255,117,31,.25) !important; }
.e-border-top-orange { border-top: 2px solid var(--orange) !important; }
.e-grid-lines::before {
  content: ''; position: absolute; inset: 0;
  background-image: linear-gradient(rgba(0,0,128,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,128,.08) 1px,transparent 1px);
  background-size: 80px 80px; pointer-events: none; z-index: 0;
}

/* ==========================================================================
   WORDPRESS BLOCKS
   ========================================================================== */
.aligncenter { display: block; margin: 2rem auto; }
.alignleft   { float: left; margin: 0 2rem 1rem 0; max-width: 50%; }
.alignright  { float: right; margin: 0 0 1rem 2rem; max-width: 50%; }
.wp-caption  { max-width: 100%; }
.wp-caption-text { font-family: var(--sans); font-size: .78rem; color: var(--text-mute); margin-top: .5rem; }
.gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; margin: 2rem 0; }
.gallery img { width: 100%; height: 200px; object-fit: cover; }

/* ==========================================================================
   ANIMATIONS
   ========================================================================== */
@keyframes fadeUp    { from { opacity: 0; transform: translateY(28px); } to   { opacity: 1; transform: translateY(0); } }
@keyframes fadeIn    { from { opacity: 0; }                              to   { opacity: 1; } }
@keyframes expandLine { from { opacity: 0; transform: scaleX(0); transform-origin: left; } to { opacity: 1; transform: scaleX(1); } }
@keyframes marquee   { from { transform: translateX(0); }                to   { transform: translateX(-50%); } }
@keyframes audioBar  { from { transform: scaleY(.25); }                  to   { transform: scaleY(1); } }
@keyframes pulse     { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
@keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }

/* ==========================================================================
   RESPONSIVE LAYOUT UTILITY CLASSES
   These replace all inline style="display:grid;grid-template-columns:..."
   so they can respond to breakpoints.
   ========================================================================== */

/* Two-column layout: left heavy (3fr 2fr) */
.layout-2col-left  { display: grid; grid-template-columns: 3fr 2fr; gap: 7rem; align-items: start; }
/* Two-column layout: equal (1fr 1fr) */
.layout-2col       { display: grid; grid-template-columns: 1fr 1fr; gap: 6rem; align-items: start; }
/* Two-column layout: content + sidebar (2fr 1fr) */
.layout-2col-main  { display: grid; grid-template-columns: 2fr 1fr; gap: 6rem; align-items: start; }
/* Three-column layout */
.layout-3col       { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; background: var(--border); }
/* Two-column with auto right (for books notify bar) */
.layout-2col-auto  { display: grid; grid-template-columns: 1fr auto; gap: 3rem; align-items: center; }
/* Two-column small gap (events/podcast cards) */
.layout-2col-sm    { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; }
/* Philosophy grid (1fr 1fr wide gap) */
.layout-philosophy { display: grid; grid-template-columns: 1fr 1fr; gap: 8rem; align-items: center; }
/* Approach intro (1fr 1fr) */
.layout-intro      { display: grid; grid-template-columns: 1fr 1fr; gap: 5rem; align-items: center; }
/* Analyze mini grid (2 cols tight) */
.layout-2col-tight { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--border); }

/* Section wrappers */
.section-wrap      { padding: 7rem 5%; max-width: 1300px; margin: 0 auto; }
.section-wrap-wide { padding: 7rem 5%; max-width: 1400px; margin: 0 auto; }
.section-wrap-sm   { padding: 5rem 5%; max-width: 1300px; margin: 0 auto; }

/* ==========================================================================
   RESPONSIVE — 1280px
   ========================================================================== */
@media (max-width: 1280px) {
  :root { --container: 1100px; }
  .hero-h { font-size: clamp(2.8rem, 5.5vw, 5rem); }
  .layout-2col-left { gap: 5rem; }
  .layout-philosophy { gap: 5rem; }
}

/* ==========================================================================
   RESPONSIVE — 1024px (Tablet landscape / small desktop)
   ========================================================================== */
@media (max-width: 1024px) {
  #page { padding-top: 72px; }

  /* Nav */
  #primary-navigation, .header-cta { display: none; }
  .nav-toggle { display: flex; }

  /* ── HERO ── */
  /* Override the inline style on .hero-section */
  .hero-section {
    grid-template-columns: 1fr !important;
    min-height: auto !important;
    padding-bottom: 0;
  }
  .hero-right { display: none; }
  .hero-left { padding: 6rem 5% 4rem; justify-content: flex-start; min-height: auto; }
  .hero-bottom {
    right: 0;
    position: relative !important;
    height: auto;
    padding: 1.25rem 5%;
    border-top: 1px solid var(--border);
    justify-content: flex-start;
    opacity: 1 !important;
    animation: none !important;
  }

  /* ── ALL LAYOUT CLASSES ── */
  .layout-2col-left,
  .layout-2col,
  .layout-2col-main,
  .layout-philosophy,
  .layout-intro    { grid-template-columns: 1fr; gap: 3rem; }

  .layout-3col     { grid-template-columns: 1fr 1fr; }
  .layout-2col-sm  { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .layout-2col-auto { grid-template-columns: 1fr; gap: 2rem; }
  .layout-2col-tight { grid-template-columns: 1fr 1fr; }

  /* ── NAMED COMPONENT GRIDS ── */
  .grid-2 { grid-template-columns: 1fr; gap: 3rem; }
  .grid-3 { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .stage-grid { grid-template-columns: 1fr 1fr; }
  .services-grid { grid-template-columns: 1fr; }
  .testi-grid { grid-template-columns: 1fr 1fr; }
  .blog-grid  { grid-template-columns: 1fr 1fr; }

  /* Sprint/Audit sidebar layout */
  .sprint-layout { grid-template-columns: 1fr !important; gap: 3rem !important; }
  .reg-card { position: static; }

  /* Footer */
  #colophon { grid-template-columns: 1fr; text-align: center; gap: 1.5rem; }
  .footer-right { text-align: center; }
  #footer-navigation ul { justify-content: center; }
}

/* ==========================================================================
   RESPONSIVE — 768px (Tablet portrait)
   ========================================================================== */
@media (max-width: 768px) {
  :root { --section-pad: 4rem 5%; }
  #page { padding-top: 64px; }
  .section-wrap, .section-wrap-wide, .section-wrap-sm { padding: 4rem 5%; }

  /* Typography */
  h1 { font-size: clamp(2rem, 7vw, 3rem); }
  h2 { font-size: clamp(1.7rem, 5vw, 2.5rem); }
  h3 { font-size: clamp(1.2rem, 4vw, 1.7rem); }
  p  { font-size: .95rem; }

  /* Hero */
  .hero-section { grid-template-columns: 1fr !important; }
  .hero-left { padding: 5rem 5% 3rem; }
  .hero-h { font-size: clamp(2rem, 7vw, 3.2rem); }
  .hero-sub { font-size: 1rem; }
  .hero-desc { font-size: .9rem; }
  .hero-ctas { flex-direction: column; align-items: stretch; }
  .hero-ctas .btn-primary,
  .hero-ctas .btn-ghost { width: 100%; justify-content: center; }

  /* ALL layout grids → single column */
  .layout-2col-left,
  .layout-2col,
  .layout-2col-main,
  .layout-2col-sm,
  .layout-2col-auto,
  .layout-philosophy,
  .layout-intro    { grid-template-columns: 1fr !important; gap: 2.5rem !important; }

  .layout-3col     { grid-template-columns: 1fr !important; }
  .layout-2col-tight { grid-template-columns: 1fr 1fr; }

  /* Named grids */
  .stage-grid   { grid-template-columns: 1fr; }
  .testi-grid   { grid-template-columns: 1fr; }
  .blog-grid    { grid-template-columns: 1fr; }
  .grid-3       { grid-template-columns: 1fr; }

  /* Sprint */
  .sprint-layout { grid-template-columns: 1fr !important; gap: 2.5rem !important; }
  .reg-card { position: static; }

  /* Sprint meta pills wrap nicely */
  .sprint-meta { gap: 1rem; }
  .sprint-meta-item { min-width: calc(50% - .5rem); }
  .sprint-title { font-size: clamp(2.5rem, 8vw, 4rem) !important; }

  /* Books */
  .book-item { grid-template-columns: 80px 1fr; gap: 1.5rem; }
  .book-item > *:last-child { display: none; }

  /* Events */
  .event-row { grid-template-columns: 80px 1fr; gap: 1.5rem; }
  .event-row > *:last-child { display: none; }

  /* Article rows */
  .article-row { grid-template-columns: auto 1fr; gap: 1rem; }
  .art-arrow { display: none; }

  /* Forms */
  .fgrid { grid-template-columns: 1fr; }
  .newsletter-form { flex-direction: column; max-width: 100%; }
  .newsletter-input { border-bottom: 1px solid rgba(255,117,31,.3); }
  .newsletter-btn { width: 100%; text-align: center; }

  /* Page hero */
  .page-hero { padding: 6.5rem 5% 3rem; }
  .page-title { font-size: clamp(2rem, 7vw, 3.5rem); }
  .page-desc  { font-size: .95rem; }

  /* Buttons */
  .btn-group { flex-direction: column; align-items: stretch; }
  .btn-group .btn-primary,
  .btn-group .btn-ghost,
  .btn-group .btn-outline { width: 100%; justify-content: center; }

  /* CTA band */
  .cta-band { padding: 4rem 5%; }
  .btn-dark-invert { width: 100%; justify-content: center; }

  /* Contact */
  .c-label { min-width: 65px; font-size: .58rem; }
  .c-val { font-size: .82rem; word-break: break-word; }

  /* Credentials */
  .cred-row { flex-wrap: wrap; }
  .cred-badge { font-size: .52rem; }

  /* Philosophy */
  .philosophy-quote { font-size: 1.1rem; padding: 1.5rem 0 1.5rem 1.25rem; }
}

/* ==========================================================================
   RESPONSIVE — 640px
   ========================================================================== */
@media (max-width: 640px) {
  .sprint-meta { flex-wrap: wrap; gap: .85rem; }
  .sprint-meta-item { flex: 1; min-width: calc(50% - .5rem); }
  .stage-card { padding: 1.75rem 1.5rem; }
  .svc-card { padding: 2rem 1.5rem; }
  .testi-card { padding: 1.75rem; }
  .program-card { padding: 2rem; }
  .post-content { padding: 3rem 5%; }
  .outcome-row { gap: .5rem; }
  .layout-2col-tight { grid-template-columns: 1fr; }
  .section-tag { font-size: .6rem; }
  .section-h { font-size: clamp(1.7rem, 6vw, 2.5rem); }

  /* Fix pillar text */
  .pillar-desc { font-size: .85rem; color: rgba(255,255,255,.6); }
  .pillar-title { font-size: 1.05rem; }

  /* Better readable body text */
  .svc-desc, .blog-card-excerpt, .book-desc,
  .event-meta, .art-title { font-size: .88rem; }
  .stage-tagline { font-size: .88rem; }
}

/* ==========================================================================
   RESPONSIVE — 480px (Phone)
   ========================================================================== */
@media (max-width: 480px) {
  .hero-left { padding: 4.5rem 5% 2.5rem; }
  .hero-h { font-size: clamp(1.9rem, 8vw, 2.8rem); }
  .hero-sub { font-size: .92rem; }
  .hero-desc { font-size: .85rem; }

  .section-wrap { padding: 3rem 5%; }
  .section-wrap-sm { padding: 3rem 5%; }
  .marquee-item { padding: 0 1.5rem; font-size: .62rem; }

  .sprint-badge { flex-wrap: wrap; font-size: .58rem; }
  .sprint-meta-item { min-width: calc(50% - .5rem); }

  .book-cover { width: 60px; height: 85px; }
  .book-cover-letter { font-size: 1.8rem; }
  .book-item { grid-template-columns: 60px 1fr; gap: 1rem; }

  #colophon { padding: 2.5rem 5%; }
  #footer-navigation ul { gap: .75rem; }

  /* Override section padding inline styles can't break */
  section[style*="padding:7rem"],
  div[style*="padding:7rem"] { padding-top: 3rem !important; padding-bottom: 3rem !important; }
  section[style*="padding:5rem"],
  div[style*="padding:5rem"] { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; }

  /* Reg card */
  .reg-price { font-size: 2.5rem; }
  .reg-card { padding: 1.75rem; }
  .feat-item { font-size: .8rem; }
}


/* ==========================================================================
   PODCAST PAGE — additional mobile fixes
   ========================================================================== */
.article-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 1.5rem;
  align-items: center;
  padding: 1.5rem 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
  color: inherit;
  position: relative;
  cursor: pointer;
  transition: padding-left .3s var(--ease);
}

@media (max-width: 640px) {
  /* Podcast show card */
  .podcast-show-card {
    padding: 2rem 1.5rem !important;
  }
  /* Article rows — hide arrow, go 2-col */
  .article-row {
    grid-template-columns: auto 1fr !important;
  }
  .article-row .art-arrow { display: none; }
}

@media print {
  *,
  *::before,
  *::after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  body { font-family: Georgia, serif; font-size: 12pt; color: #000; }
  #masthead, .nav-toggle, .fortunatus-cursor, .fortunatus-cursor-ring,
  .cta-band, .marquee-wrap, .skip-link { display: none !important; }
  #page { padding-top: 0; }
  h1, h2, h3 { page-break-after: avoid; color: #000; }
  p, blockquote { orphans: 3; widows: 3; }
  blockquote { border-left: 3pt solid #000; }
  a[href]::after { content: " (" attr(href) ")"; font-size: 9pt; }
  .hero-section { min-height: auto; display: block; padding: 2rem 0; }
  .hero-right { display: none; }
  img { max-width: 100%; page-break-inside: avoid; }
}
