/* === JM 4.1.12 rhythm + unified rail === */

:root {
  --jm-rail: min(72rem, calc(100% - 4rem));
  --jm-rail-sm: min(72rem, calc(100% - 2.5rem));
}

/* ---- Undo blanket margin:0 that collapsed all stack gaps ---- */
.jm-content .is-layout-flow > :where(.wp-block-heading, h1, h2, h3, h4),
.jm-content .is-layout-constrained > :where(.wp-block-heading, h1, h2, h3, h4),
.jm-hero .is-layout-flow > :where(.wp-block-heading, h1, h2, h3),
.jm-band .is-layout-flow > :where(.wp-block-heading, h1, h2, h3),
.jm-page .is-layout-flow > :where(.wp-block-heading, h1, h2, h3),
.jm-about .is-layout-flow > :where(.wp-block-heading, h1, h2, h3),
.jm-guide .is-layout-flow > :where(.wp-block-heading, h1, h2, h3),
.jm-band .wp-block-column > :where(.wp-block-heading, h1, h2, h3),
.jm-page .wp-block-column > :where(.wp-block-heading, h1, h2, h3),
.jm-about .wp-block-column > :where(.wp-block-heading, h1, h2, h3),
.jm-guide .wp-block-column > :where(.wp-block-heading, h1, h2, h3),
.jm-hero .wp-block-column > :where(.wp-block-heading, h1, h2, h3) {
  margin-block-start: 0.25rem !important;
  margin-block-end: 1.05rem !important;
  line-height: 1.18 !important;
}

.jm-content .is-layout-flow > :where(.wp-block-paragraph, p),
.jm-content .is-layout-constrained > :where(.wp-block-paragraph, p),
.jm-hero .is-layout-flow > :where(.wp-block-paragraph, p),
.jm-band .is-layout-flow > :where(.wp-block-paragraph, p),
.jm-page .is-layout-flow > :where(.wp-block-paragraph, p),
.jm-about .is-layout-flow > :where(.wp-block-paragraph, p),
.jm-guide .is-layout-flow > :where(.wp-block-paragraph, p),
.jm-band .wp-block-column > :where(.wp-block-paragraph, p),
.jm-page .wp-block-column > :where(.wp-block-paragraph, p),
.jm-about .wp-block-column > :where(.wp-block-paragraph, p),
.jm-guide .wp-block-column > :where(.wp-block-paragraph, p),
.jm-hero .wp-block-column > :where(.wp-block-paragraph, p) {
  margin-block-start: 0.9rem !important;
  margin-block-end: 0.9rem !important;
}

.jm-content .is-layout-flow > :where(.wp-block-buttons),
.jm-band .wp-block-column > :where(.wp-block-buttons),
.jm-page .wp-block-column > :where(.wp-block-buttons),
.jm-hero .wp-block-column > :where(.wp-block-buttons),
.jm-about .wp-block-column > :where(.wp-block-buttons),
.jm-page > :where(.wp-block-buttons) {
  margin-block-start: 1.75rem !important;
  margin-block-end: 0.5rem !important;
}

.jm-content .is-layout-flow > :where(.wp-block-list, ul, ol),
.jm-band .wp-block-column > :where(.wp-block-list, ul, ol),
.jm-page .wp-block-column > :where(.wp-block-list, ul, ol),
.jm-about .wp-block-column > :where(.wp-block-list, ul, ol),
.jm-guide .wp-block-column > :where(.wp-block-list, ul, ol) {
  margin-block-start: 1.15rem !important;
  margin-block-end: 1.15rem !important;
}

/* First item in a stack: no phantom top gap */
.jm-band .wp-block-column > :first-child,
.jm-page .wp-block-column > :first-child,
.jm-hero .wp-block-column > :first-child,
.jm-about .wp-block-column > :first-child,
.jm-guide .wp-block-column > :first-child,
.jm-page > :first-child,
.jm-band > :first-child {
  margin-block-start: 0 !important;
}

/* Heading then body */
.wp-block-heading + .wp-block-paragraph,
.wp-block-heading + p,
h1 + p, h2 + p, h3 + p {
  margin-block-start: 1rem !important;
}

/* Paragraph separation */
.wp-block-paragraph + .wp-block-paragraph,
p + p {
  margin-block-start: 1rem !important;
}

/* Button then eyebrow/list — the Speaking collision */
.wp-block-buttons + .jm-kicker,
.wp-block-buttons + .wp-block-paragraph.jm-kicker,
.wp-block-buttons + .jm-topics,
.wp-block-buttons + .wp-block-list {
  margin-block-start: 2.5rem !important;
}
.jm-kicker + .jm-topics,
.jm-kicker + .wp-block-list,
.jm-kicker + .jm-topic-grid {
  margin-block-start: 0.85rem !important;
}

/* Kickers themselves */
.jm-kicker {
  margin-block-end: 0.35rem !important;
}

/* ---- Unified content rail: one left edge everywhere ---- */
.jm-band > .wp-block-columns,
.jm-page > .wp-block-columns,
.jm-guide > .wp-block-columns,
.jm-about > .wp-block-columns,
.jm-band--ideas .jm-row,
.jm-band--ideas .jm-essays,
.jm-contact-grid,
.jm-cred-grid,
.jm-creds .wp-block-buttons,
.jm-page > :where(.wp-block-heading, .wp-block-paragraph, .wp-block-buttons, .wp-block-list, .wp-block-html, .jm-contact, form, ul, .jm-topic-grid, .jm-kicker),
.jm-speak-topics > :where(.wp-block-heading, .wp-block-paragraph, .wp-block-list, .wp-block-html, ul, .jm-topic-grid, .jm-kicker),
.jm-page > .wp-block-column {
  width: var(--jm-rail-sm) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box;
}
@media (min-width: 1024px) {
  .jm-band > .wp-block-columns,
  .jm-page > .wp-block-columns,
  .jm-guide > .wp-block-columns,
  .jm-about > .wp-block-columns,
  .jm-band--ideas .jm-row,
  .jm-band--ideas .jm-essays,
  .jm-contact-grid,
  .jm-cred-grid,
  .jm-creds .wp-block-buttons,
  .jm-page > :where(.wp-block-heading, .wp-block-paragraph, .wp-block-buttons, .wp-block-list, .wp-block-html, .jm-contact, form, ul, .jm-topic-grid, .jm-kicker),
  .jm-speak-topics > :where(.wp-block-heading, .wp-block-paragraph, .wp-block-list, .wp-block-html, ul, .jm-topic-grid, .jm-kicker),
  .jm-page > .wp-block-column {
    width: var(--jm-rail) !important;
  }
}

/* Indexes: horizontal label on the rail by default (no content shift) */
.jm-band > .jm-index,
.jm-band > .is-layout-flow > .jm-index:first-child {
  position: static !important;
  writing-mode: horizontal-tb !important;
  transform: none !important;
  left: auto !important;
  top: auto !important;
  width: var(--jm-rail-sm) !important;
  margin: 0 auto 1.35rem !important;
  max-width: 100%;
}
@media (min-width: 1024px) {
  .jm-band > .jm-index,
  .jm-band > .is-layout-flow > .jm-index:first-child {
    width: var(--jm-rail) !important;
  }
}
/* Vertical only when there is true outer margin; never pad content */
@media (min-width: 1500px) {
  .jm-band > .jm-index,
  .jm-band > .is-layout-flow > .jm-index:first-child {
    position: absolute !important;
    writing-mode: vertical-rl !important;
    transform: rotate(180deg) !important;
    left: max(0.25rem, calc((100% - 72rem) / 2 - 2.5rem)) !important;
    top: clamp(3.5rem, 6vw, 5.5rem) !important;
    width: auto !important;
    margin: 0 !important;
    white-space: nowrap;
  }
}

/* Hero copy aligns to same rail start as body sections */
@media (min-width: 960px) {
  .jm-hero .wp-block-columns.jm-hero__grid > .wp-block-column:first-child,
  .jm-hero .jm-hero__copy {
    padding: 5rem 3rem 4rem max(2rem, calc((100vw - 72rem) / 2)) !important;
  }
}
.jm-hero h1 {
  max-width: min(32rem, 100%) !important;
  margin-block-end: 1.15rem !important;
}
.jm-hero .jm-hero-lede {
  margin-block-start: 0 !important;
  margin-block-end: 0 !important;
}

/* Latest Ideas header row */
.jm-band--ideas .jm-row {
  display: flex !important;
  align-items: baseline !important;
  justify-content: space-between !important;
  gap: 1rem !important;
  margin: 0 auto 1.75rem !important;
}
.jm-band--ideas .jm-row > .wp-block-column {
  width: auto !important;
  flex: 1 1 auto !important;
  padding: 0 !important;
  margin: 0 !important;
}
.jm-band--ideas .jm-row > .wp-block-column:last-child {
  flex: 0 0 auto !important;
  text-align: right;
}
.jm-band--ideas .jm-row h2 {
  margin: 0 !important;
}
.jm-band--ideas .jm-row .jm-rowlink {
  margin: 0 !important;
}

/* Split: shorter image so text column isn't deserted */
.jm-band .jm-split {
  align-items: start !important;
}
.jm-band .jm-split .wp-block-image img {
  aspect-ratio: 1 / 1 !important;
  max-height: 26rem;
  width: 100%;
  object-fit: cover;
}

/* Themes / engage: consistent gutters between cards */
.jm-themes {
  gap: 0 !important;
}
@media (min-width: 900px) {
  .jm-themes > .wp-block-column {
    padding: 2rem 2.25rem !important;
  }
}

.jm-engage > .wp-block-column {
  position: relative;
  padding: 2.75rem 1.75rem 1.5rem !important;
  min-height: 100%;
}
.jm-engage .jm-kicker {
  position: absolute;
  top: 1rem;
  left: 1.75rem;
  right: 1rem;
  margin: 0 !important;
  order: unset !important;
}
.jm-engage .jm-icon { margin-top: 0.15rem; }
@media (min-width: 1024px) {
  .jm-engage > .wp-block-column + .wp-block-column {
    border-left: 1px solid var(--line) !important;
  }
}

/* Essay card breathing room */
.jm-essays {
  gap: 2.25rem !important;
}
@media (min-width: 900px) {
  .jm-essays {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 2.25rem !important;
  }
}
.jm-essay-card {
  padding: 0 !important;
}
.jm-essay-card .wp-block-image { margin-bottom: 1.05rem !important; }

/* Guide: tighter, more even columns */
@media (min-width: 1024px) {
  .jm-guide__grid {
    grid-template-columns: 0.9fr 1.15fr 0.95fr !important;
    gap: 2.5rem !important;
    align-items: center !important;
  }
}
.jm-guide {
  padding-inline: max(1.25rem, calc((100% - 72rem) / 2)) !important;
}
.jm-guide > .wp-block-columns {
  width: 100% !important;
  margin: 0 !important;
}

/* About text column padding */
.jm-about__grid {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
}
.jm-about__grid > .wp-block-column:last-child {
  padding: clamp(2.75rem, 5vw, 4.25rem) clamp(1.75rem, 4vw, 3.75rem) !important;
}
.jm-about h2 {
  margin-block-end: 1.15rem !important;
}

/* Topics list card spacing on home speaking */
.jm-topics {
  margin-top: 0.75rem !important;
  padding: 1.15rem 1.25rem !important;
  background: color-mix(in srgb, var(--ivory) 70%, #e8e4dc);
  border: 1px solid var(--line);
}
.jm-topics li {
  margin-top: 0.55rem !important;
  padding-left: 0.9rem;
}

/* Speak topics page bottom padding so list isn't clipped by footer */
.jm-speak-topics {
  padding-bottom: clamp(3.5rem, 6vw, 5.5rem) !important;
}
.jm-topic-grid li {
  padding: 1.25rem 1.35rem !important;
}

/* Contact */
.jm-contact label { margin: 0; }
.jm-contact input,
.jm-contact textarea { margin-top: 0.35rem; }

/* Footer newsletter breathing room */
.jm-footer__top,
.site-footer .jm-wrap,
footer .jm-wrap {
  width: var(--jm-rail-sm);
  margin-inline: auto;
}
@media (min-width: 1024px) {
  .jm-footer__top,
  .site-footer .jm-wrap,
  footer .jm-wrap {
    width: var(--jm-rail);
  }
}
