html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
}

img {
  max-width: 100%;
  height: auto;
}

.wp-site-blocks {
  min-height: 100vh;
}

/* ================================
   Global variables
   ================================ */

:root {
  /* Colors from theme.json */
  --ml-color-base: var(--wp--preset--color--base);
  --ml-color-contrast: var(--wp--preset--color--contrast);
  --ml-color-muted: var(--wp--preset--color--muted);
  --ml-color-border: var(--wp--preset--color--border);
  --ml-color-accent: var(--wp--preset--color--accent);
  --ml-color-accent-2: var(--wp--preset--color--accent-2);
  --ml-color-logo: var(--wp--preset--color--logo);
  --ml-color-logo-dark: var(--wp--preset--color--logo-dark);
  --ml-color-logo-light: var(--wp--preset--color--logo-light);
  --ml-color-shadow: var(--wp--preset--color--shadow, #777777);

  /* Header */
  --ml-header-side-space: clamp(16px, 4vw, 40px);
  --ml-header-menu-font-size: 1.02rem;
  --ml-header-navigation-gap: 1.8rem;
  --ml-header-bg: var(--ml-color-border);
  --ml-header-border: var(--ml-color-border);

  /* Dropdown menu */
  --ml-dropdown-bg: var(--ml-header-bg);
  --ml-dropdown-border: var(--ml-color-border);
  --ml-dropdown-link-hover-bg: var(--ml-color-accent-2);
  --ml-dropdown-link-color: var(--ml-color-contrast);
  --ml-dropdown-link-hover-color: var(--ml-color-base);

  /* Mobile menu */
  --ml-mobile-menu-side-space: clamp(24px, 8vw, 56px);
  --ml-mobile-menu-font-size: 1.25rem;
  --ml-mobile-menu-submenu-font-size: 1.12rem;
  --ml-mobile-menu-item-gap: 0.85rem;
  --ml-mobile-submenu-indent: 1.15rem;

  /* Main content */
  --ml-content-side-space: clamp(16px, 4vw, 40px);
  --ml-page-top-space: clamp(2rem, 4vw, 4rem);
  --ml-h1-bottom-space: clamp(1.6rem, 3vw, 2.4rem);
  --ml-page-footer-space: clamp(3rem, 5vw, 5rem);

  /* Sections and headings */
  --ml-section-top-space: clamp(3rem, 5vw, 4.8rem);
  --ml-h2-top-space: clamp(2.4rem, 4vw, 3.4rem);
  --ml-h3-top-space: clamp(1.8rem, 3vw, 2.4rem);
  --ml-heading-to-content-space: 0.15rem;

  /* Images */
  --ml-image-shadow: 0 0 10px 1px var(--ml-color-shadow);

  /* Footer */
  --ml-footer-padding-y: 1rem;
  --ml-footer-grid-gap: clamp(1.2rem, 3vw, 2rem);
  --ml-footer-bg: var(--ml-color-border);
  --ml-footer-border: var(--ml-color-border);

  /* Boxes */
  --ml-box-bg: var(--ml-color-muted);
  --ml-box-border: var(--ml-color-border);

  /* Buttons */
  --ml-button-bg: var(--ml-color-accent);
  --ml-button-bg-hover: var(--ml-color-accent-2);
  --ml-button-text: var(--ml-color-base);
  --ml-button-font-size: 1rem;
  --ml-button-font-weight: 700;
  --ml-button-padding-y: 0.55rem;
  --ml-button-padding-x: 1.35rem;
}

/* ================================
   Header
   ================================ */

.wp-site-blocks > header.wp-block-template-part {
  position: sticky;
  top: 0;
  z-index: 9999;
  width: 100%;
  margin: 0;
  padding-left: var(--ml-header-side-space);
  padding-right: var(--ml-header-side-space);
  box-sizing: border-box;
  background: var(--ml-header-bg);
  border-bottom: 1px solid var(--ml-header-border);
}

.wp-site-blocks > header.wp-block-template-part .ml-site-header {
  width: 100%;
  max-width: none;
  margin-left: auto;
  margin-right: auto;
  background: transparent;
  border-bottom: 0;
}

.wp-site-blocks > header.wp-block-template-part .ml-header-inner {
  box-sizing: border-box;
}

.ml-header-inner {
  gap: 1.5rem;
}

.ml-header-brand {
  gap: 0.85rem;
}

.ml-site-header .wp-block-site-title {
  margin: 0;
  font-weight: 600;
}

.ml-site-header .wp-block-site-title a {
  text-decoration: none;
}

.ml-site-header .wp-block-navigation {
  gap: var(--ml-header-navigation-gap);
  font-size: var(--ml-header-menu-font-size);
}

.ml-site-header .wp-block-navigation a {
  text-decoration: none;
}

.ml-site-header .wp-block-navigation__container {
  gap: var(--ml-header-navigation-gap);
}

/* Dropdown menu */

.ml-site-header .wp-block-navigation__submenu-container {
  background: var(--ml-dropdown-bg) !important;
  border: 1px solid var(--ml-dropdown-border) !important;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
  padding-top: 0.35rem;
  padding-bottom: 0.35rem;
}

.ml-site-header .wp-block-navigation__submenu-container .wp-block-navigation-item {
  background: transparent;
}

.ml-site-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  display: block;
  width: 100%;
  padding: 0.55rem 0.9rem;
  background: transparent !important;
  color: var(--ml-dropdown-link-color);
  box-sizing: border-box;
}

.ml-site-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.ml-site-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus {
  background: var(--ml-dropdown-link-hover-bg) !important;
  color: var(--ml-dropdown-link-hover-color);
  text-decoration: none;
}

/* Admin bar offset */

.admin-bar .wp-site-blocks > header.wp-block-template-part {
  top: 32px;
}

@media (max-width: 782px) {
  .admin-bar .wp-site-blocks > header.wp-block-template-part {
    top: 46px;
  }
}

/* ================================
   Navigation responsive behavior
   Tablet + mobile burger
   ================================ */

@media (max-width: 1024px) {
  .ml-site-header .wp-block-navigation__responsive-container:not(.is-menu-open) {
    display: none !important;
  }

  .ml-site-header .wp-block-navigation__responsive-container-open {
    display: flex !important;
  }
}

@media (min-width: 1025px) {
  .ml-site-header .wp-block-navigation__responsive-container-open {
    display: none !important;
  }

  .ml-site-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
    display: block !important;
    position: relative;
  }
}

/* ================================
   Mobile menu panel
   ================================ */

.wp-block-navigation__responsive-container.is-menu-open {
  padding-left: var(--ml-mobile-menu-side-space) !important;
  padding-right: var(--ml-mobile-menu-side-space) !important;
  padding-top: 2rem !important;
  padding-bottom: 2rem !important;
  box-sizing: border-box;
}

.wp-block-navigation__responsive-container.is-menu-open,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  text-align: left !important;
  align-items: flex-start !important;
  justify-content: flex-start !important;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
  width: 100%;
  padding-top: 2rem !important;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  justify-content: flex-start !important;
  gap: var(--ml-mobile-menu-item-gap) !important;
  width: 100%;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
  display: block;
  width: 100%;
  margin-left: 0 !important;
  margin-right: 0 !important;
  text-align: left !important;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  display: block;
  width: 100%;
  font-size: var(--ml-mobile-menu-font-size);
  line-height: 1.35;
  text-align: left !important;
  box-sizing: border-box;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
  position: static !important;
  visibility: visible !important;
  opacity: 1 !important;
  width: 100%;
  min-width: 0 !important;
  height: auto !important;
  margin-left: 0 !important;
  margin-top: 0.45rem;
  padding-left: var(--ml-mobile-submenu-indent) !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item {
  width: 100%;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  width: 100%;
  padding: 0.25rem 0 !important;
  font-size: var(--ml-mobile-menu-submenu-font-size);
  line-height: 1.35;
  background: transparent !important;
  text-align: left !important;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle {
  justify-content: flex-start !important;
  width: 100%;
  text-align: left !important;
}

/* ================================
   Main content spacing
   ================================ */

.wp-site-blocks > main.wp-block-main {
  margin-block-start: 0 !important;
  padding-top: var(--ml-page-top-space);
  padding-left: var(--ml-content-side-space);
  padding-right: var(--ml-content-side-space);
  box-sizing: border-box;
}

/* Page title / first H1 */

.wp-site-blocks > main.wp-block-main h1.wp-block-heading:first-of-type {
  margin-top: 0 !important;
  margin-bottom: var(--ml-h1-bottom-space) !important;
  text-align: center;
}

/* Avoid double spacing after H1 */

.wp-site-blocks > main.wp-block-main h1.wp-block-heading:first-of-type + * {
  margin-block-start: 0 !important;
}

/* Distance from last page content to footer */

.wp-site-blocks > footer.wp-block-template-part {
  margin-block-start: var(--ml-page-footer-space) !important;
}

/* ================================
   Content section and heading spacing
   ================================ */

.wp-site-blocks > main.wp-block-main .entry-content > .wp-block-group + .wp-block-group,
.wp-site-blocks > main.wp-block-main .wp-block-post-content > .wp-block-group + .wp-block-group {
  margin-top: var(--ml-section-top-space) !important;
  margin-block-start: var(--ml-section-top-space) !important;
}

/* H2/H3 spacing when not first in a section */

.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h2.wp-block-heading,
.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h3.wp-block-heading,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h2.wp-block-heading,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h3.wp-block-heading {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
}

.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h2.wp-block-heading,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h2.wp-block-heading {
  margin-top: var(--ml-h2-top-space) !important;
}

.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h3.wp-block-heading,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h3.wp-block-heading {
  margin-top: var(--ml-h3-top-space) !important;
}

/* If H2/H3 is first element in section, section spacing handles it */

.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h2.wp-block-heading:first-child,
.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h3.wp-block-heading:first-child,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h2.wp-block-heading:first-child,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h3.wp-block-heading:first-child {
  margin-top: 0 !important;
}

/* Reduce WordPress block-gap directly after H2/H3 */

.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h2.wp-block-heading + *,
.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h3.wp-block-heading + *,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h2.wp-block-heading + *,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h3.wp-block-heading + * {
  margin-top: var(--ml-heading-to-content-space) !important;
  margin-block-start: var(--ml-heading-to-content-space) !important;
  padding-top: 0 !important;
}

/* If an H3 follows directly after an H2, keep subsection spacing */

.wp-site-blocks > main.wp-block-main .entry-content .wp-block-group > h2.wp-block-heading + h3.wp-block-heading,
.wp-site-blocks > main.wp-block-main .wp-block-post-content .wp-block-group > h2.wp-block-heading + h3.wp-block-heading {
  margin-top: var(--ml-h3-top-space) !important;
  margin-block-start: var(--ml-h3-top-space) !important;
}

/* ================================
   General content helpers
   ================================ */

.ml-article-section {
  margin-top: 3.5rem;
  margin-bottom: 3.5rem;
}

.ml-intro {
  font-size: 1.16rem;
  line-height: 1.75;
}

.ml-box {
  padding: 1.5rem;
  background: var(--ml-box-bg);
  border: 1px solid var(--ml-box-border);
}

.ml-center-image {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

.ml-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.5rem;
}

/* ================================
   Links
   ================================ */

a {
  color: var(--ml-color-accent);
}

a:hover,
a:focus {
  color: var(--ml-color-accent-2);
}

/* ================================
   Content link buttons
   ================================ */

.wp-site-blocks > main.wp-block-main .wp-block-buttons {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 1rem;
  width: 100%;
  text-align: center;
}

.wp-site-blocks > main.wp-block-main .wp-block-button {
  display: flex !important;
  justify-content: center !important;
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center;
}

.wp-site-blocks > main.wp-block-main .wp-block-button .wp-block-button__link,
.wp-site-blocks > main.wp-block-main a.wp-block-button__link {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-height: auto;
  margin-left: auto !important;
  margin-right: auto !important;
  padding: var(--ml-button-padding-y) var(--ml-button-padding-x);
  border-radius: 999px;
  background: var(--ml-button-bg) !important;
  color: var(--ml-button-text) !important;
  border: 2px solid var(--ml-button-bg) !important;
  font-size: var(--ml-button-font-size);
  font-weight: var(--ml-button-font-weight);
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
  box-shadow: none;
}

.wp-site-blocks > main.wp-block-main .wp-block-button .wp-block-button__link:hover,
.wp-site-blocks > main.wp-block-main a.wp-block-button__link:hover,
.wp-site-blocks > main.wp-block-main .wp-block-button .wp-block-button__link:focus,
.wp-site-blocks > main.wp-block-main a.wp-block-button__link:focus {
  background: var(--ml-button-bg-hover) !important;
  border-color: var(--ml-button-bg-hover) !important;
  color: var(--ml-button-text) !important;
  text-decoration: none;
}

/* ================================
   Images
   ================================ */

.wp-site-blocks > main.wp-block-main .wp-block-image {
  margin-top: 1.8rem;
  margin-bottom: 1.8rem;
}

.wp-site-blocks > main.wp-block-main .wp-block-image img,
.wp-site-blocks > main.wp-block-main figure.wp-block-image img {
  box-shadow: var(--ml-image-shadow);
}

/* Avoid shadow on images explicitly marked as no shadow */

.wp-site-blocks > main.wp-block-main .no-image-shadow img,
.wp-site-blocks > main.wp-block-main img.no-image-shadow {
  box-shadow: none !important;
}

/* ================================
   Author info box
   ================================ */

.ml-author-info-box {
  max-width: 860px;
  width: 100%;
  margin: 42px auto 56px auto;
  background: var(--ml-color-muted);
  border-left: 6px solid var(--ml-color-accent);
  padding: 22px 24px;
  display: flex;
  gap: 18px;
  align-items: center;
  flex-wrap: wrap;
  box-sizing: border-box;
}

.ml-author-info-box__image {
  flex: 0 0 auto;
}

.ml-author-info-box__image img {
  width: 74px;
  height: 74px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  box-shadow: none !important;
}

.ml-author-info-box__content {
  flex: 1 1 260px;
}

.ml-author-info-box__byline {
  margin: 0 0 6px 0;
  font-size: 15px;
  line-height: 1.45;
}

.ml-author-info-box__text {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
}

.ml-author-info-box a {
  color: var(--ml-color-accent);
  text-decoration: underline;
}

@media (max-width: 1024px) {
  .ml-author-info-box {
    max-width: none;
  }
}

/* ================================
   Author bio box
   ================================ */

.ml-author-bio-box {
  max-width: 860px;
  width: 100%;
  margin: 75px auto 32px auto;
  background: var(--ml-color-muted);
  border-left: 6px solid var(--ml-color-accent);
  padding: 26px 28px 24px 28px;
  box-sizing: border-box;
}

.ml-author-bio-box h3 {
  margin-top: 0;
  margin-bottom: 0.8rem;
}

.ml-author-bio-box p {
  margin: 0;
  font-size: 1rem;
  line-height: 1.65;
}

@media (max-width: 1024px) {
  .ml-author-bio-box {
    max-width: none;
  }
}

/* ================================
   Footer
   ================================ */

.wp-site-blocks > footer.wp-block-template-part {
  width: 100%;
  box-sizing: border-box;
}

.ml-site-footer {
  margin-top: 0;
  padding-top: var(--ml-footer-padding-y);
  padding-bottom: var(--ml-footer-padding-y);
  padding-left: var(--ml-content-side-space);
  padding-right: var(--ml-content-side-space);
  background: var(--ml-footer-bg);
  border-top: 1px solid var(--ml-footer-border);
  box-sizing: border-box;
}

.ml-footer-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: var(--ml-footer-grid-gap) !important;
  align-items: center;
  width: 100%;
}

.ml-site-footer.ml-footer-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: var(--ml-footer-grid-gap) !important;
  align-items: center;
  width: 100%;
}

.ml-site-footer.ml-footer-grid > *,
.ml-footer-grid > * {
  min-width: 0;
}

.ml-footer-col-center {
  display: flex;
  flex-direction: column;
  justify-content: center;
  height: 100%;
}

/* Footer responsive: 3 columns to 1 column */

@media (max-width: 700px) {
  .ml-site-footer.ml-footer-grid,
  .ml-footer-grid {
    grid-template-columns: 1fr !important;
    gap: 1.5rem !important;
    text-align: center;
    justify-items: center;
  }

  .ml-site-footer.ml-footer-grid > *,
  .ml-footer-grid > * {
    width: 100%;
  }
}

/* ================================
   Mobile spacing
   ================================ */

@media (max-width: 782px) {
  :root {
    --ml-page-top-space: 1.5rem;
    --ml-h1-bottom-space: 1.4rem;
    --ml-page-footer-space: 3rem;

    --ml-section-top-space: 2.2rem;
    --ml-h2-top-space: 2rem;
    --ml-h3-top-space: 1.5rem;
    --ml-heading-to-content-space: 0.1rem;

    --ml-header-menu-font-size: 1.15rem;
    --ml-mobile-menu-font-size: 1.22rem;
    --ml-mobile-menu-submenu-font-size: 1.08rem;
  }

  .ml-article-section {
    margin-top: 2.5rem;
    margin-bottom: 2.5rem;
  }
}