/* WordPress integration. The original visual system remains in styles.css. */

/* Section fragments meet the header edge, without an additional visual gap. */
:root {
  --section-anchor-offset: var(--mobile-header-height);
}

main > [id] {
  scroll-margin-top: var(--section-anchor-offset);
}

@media (min-width: 1280px) {
  :root {
    --section-anchor-offset: 100px;
  }
}

/* WordPress already adds the toolbar height as root scroll-padding-top.
   The regular site header stays at top: 0, so do not count that space twice. */
body.admin-bar main > [id] {
  scroll-margin-top: calc(var(--section-anchor-offset) - var(--wp-admin--admin-bar--height, 0px));
}

.site-header .current-menu-item > a,
.site-header .current-menu-ancestor > a {
  text-decoration-color: currentColor;
}

/* Global paragraph contract: keep 1.5 even when a component sets its own leading. */
p { line-height: 1.5 !important; }

.site-footer__nav .menu {
  display: block;
}

.site-footer__menu,
.site-footer__nav li,
.site-footer__nav a {
  min-width: 0;
}

.site-footer .site-footer__nav .menu a {
  display: block;
  height: auto;
  min-height: 34px;
  padding-block: 6px;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.45;
}

.site-footer__nav .menu:empty,
.site-footer__nav div:has(.menu:empty) {
  display: none;
}

/* Media/text service compositions. Both variants use the same editable fields. */
.media-text.is-services-front .media-text__intro,
.media-text.is-services-media-left .media-text__intro {
  margin-top: var(--space-20);
}

.media-text.is-services-media-left .media-text__content .services-list {
  margin-top: var(--space-30);
}

.media-text.is-services-media-left .media-text__content .btn {
  margin-top: var(--space-30);
}

/* The second grid row shares a bottom edge, regardless of either text's length. */
@media (min-width: 900px) {
  .media-text.has-summary .media-text__statement,
  .media-text.has-summary .media-text__summary {
    align-self: end;
  }

  .media-text.has-summary .media-text__summary {
    margin-block-start: 0;
  }
}

.contact-form__panel .wpcf7-form,
.contact-form__panel .wpcf7-form-control-wrap,
.questionnaire-form__panel .wpcf7-form,
.questionnaire-form__panel .wpcf7-form-control-wrap {
  display: contents;
}

.contact-form__panel .form-field label,
.questionnaire-form__panel .form-field label {
  display: grid;
  gap: 8px;
  color: var(--ink);
  font-size: 0.95rem;
  font-weight: 650;
}

.contact-form__panel .form-consent,
.questionnaire-form__panel .form-consent {
  display: block;
  grid-column: 1 / -1;
  margin-top: 4px;
}

.contact-form__panel .form-consent > p,
.questionnaire-form__panel .form-consent > p,
.contact-form__panel .form-actions > p,
.questionnaire-form__panel .form-actions > p,
.contact-form__panel .form-field > p,
.questionnaire-form__panel .form-field > p {
  margin: 0;
}

.contact-form__panel .wpcf7-acceptance .wpcf7-list-item,
.questionnaire-form__panel .wpcf7-acceptance .wpcf7-list-item {
  margin: 0;
}

.contact-form__panel .wpcf7-acceptance label,
.questionnaire-form__panel .wpcf7-acceptance label {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  align-items: start;
  gap: 14px;
  color: var(--ink);
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.65;
}

.contact-form__panel .wpcf7-acceptance input,
.questionnaire-form__panel .wpcf7-acceptance input {
  width: 20px;
  height: 20px;
  margin: 3px 0 0;
  padding: 0;
  accent-color: var(--green);
}

.contact-form__panel .form-actions,
.questionnaire-form__panel .form-actions {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 12px;
}

.contact-form__panel .wpcf7-submit,
.questionnaire-form__panel .wpcf7-submit {
  width: auto;
  min-width: 174px;
  cursor: pointer;
}

.contact-form__panel .wpcf7-spinner {
  margin: 10px 0 0;
}

.contact-form__panel .wpcf7-not-valid-tip,
.contact-form__panel .wpcf7-response-output {
  font-size: 0.875rem;
}

.contact-form__panel .wpcf7-response-output {
  grid-column: 1 / -1;
  margin: 10px 0 0;
  padding: 12px;
  border-color: var(--forest);
}

.questionnaire-form__panel .wpcf7,
.questionnaire-form__panel .wpcf7-form {
  min-width: 0;
}

.questionnaire-form__panel .wpcf7-form-control.wpcf7-radio,
.questionnaire-form__panel .wpcf7-form-control.wpcf7-checkbox {
  display: grid;
  gap: 10px;
}

.questionnaire-form__panel .choice-group .wpcf7-list-item {
  display: block;
  margin: 0;
}

.questionnaire-form__panel .choice-group .wpcf7-list-item label {
  width: 100%;
}

.questionnaire-form__panel .choice-group .wpcf7-list-item-label {
  min-width: 0;
}

.questionnaire-form__panel .wpcf7-not-valid-tip {
  margin-top: 7px;
  font-size: 0.825rem;
}

.questionnaire-form__panel .wpcf7-response-output {
  margin: 24px 0 0;
}

.questionnaire-form__panel input[type="number"] {
  width: 100%;
}

.questionnaire-form legend[tabindex="-1"]:focus {
  outline: 0;
}

/* Source-faithful questionnaires in the existing visual system. */
.questionnaire-form__panel .questionnaire-form__actions,
.questionnaire-form__panel .questionnaire-form__actions > p {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-20);
}

.questionnaire-form__actions > p { margin: 0; }
.questionnaire-form__actions br { display: none; }
.questionnaire-form__actions .btn { max-width: 100%; }

.questionnaire-form__steps {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-10);
  margin-block: 0 var(--space-30);
}

.questionnaire-form__steps button {
  min-width: 44px;
  min-height: 44px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  color: var(--ink);
  font: inherit;
  cursor: pointer;
}

.questionnaire-form__steps [aria-current="step"] {
  background: var(--lime);
  border-color: var(--lime);
  font-weight: 700;
}

.legacy-questionnaire { min-width: 0; }
.legacy-questionnaire .main-list { padding-inline-start: 24px; }
.legacy-questionnaire .main-list > li { padding-inline-start: 4px; }
.legacy-questionnaire .main-list > li + li { margin-top: var(--space-30); }
.legacy-questionnaire h5 {
  margin-block: 0 var(--space-10);
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.5;
  font-weight: 700;
  color: var(--ink);
}
.legacy-questionnaire h5:not(:first-child) { margin-top: var(--space-30); }
.legacy-questionnaire label { font-size: 1rem; font-weight: 400; line-height: 1.5; }
.legacy-questionnaire label.inline-label { display: block; margin-block: var(--space-10); }
.legacy-questionnaire .checkboxes ol {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--space-10);
}
.legacy-questionnaire .checkboxes li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-10);
  min-width: 0;
}
.legacy-questionnaire .checkboxes li > label { flex: 1; cursor: pointer; }
.legacy-questionnaire .checkboxes li > :is(ol, .checkboxes) {
  flex-basis: 100%;
  margin-inline-start: 30px;
}
.legacy-questionnaire .checkboxes .wpcf7-form-control-wrap:has(input[type="text"]) { display: block; }
/* Keep the choice and its free-text answer on a shared horizontal axis. */
.legacy-questionnaire .checkboxes li:has(> .wpcf7-form-control-wrap > input[type="text"]) {
  flex-wrap: nowrap;
}
.legacy-questionnaire .checkboxes li > .wpcf7-form-control-wrap:has(> input[type="text"]) {
  flex: 1 1 0;
  min-width: 0;
}
.legacy-questionnaire .checkboxes li:has(> .wpcf7-form-control-wrap > input[type="text"]) > label {
  flex: 0 1 auto;
  min-width: 0;
  max-inline-size: 45%;
}
.legacy-questionnaire .checkboxes li > label:empty { display: none; }
.legacy-questionnaire .checkboxes li > label:has(input[type="text"]) { min-width: 0; }
.legacy-questionnaire :is(input[type="text"], input[type="email"], textarea) {
  display: block;
  width: 100%;
  min-width: 0;
  min-height: 56px;
  margin-block: 6px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  color: var(--ink);
  font: inherit;
  font-weight: 400;
}
.legacy-questionnaire textarea { min-height: 140px; resize: vertical; }
.legacy-questionnaire :is(input[type="radio"], input[type="checkbox"]) {
  width: 20px;
  height: 20px;
  min-height: 20px;
  margin: 0;
  padding: 0;
  flex: 0 0 20px;
  accent-color: var(--green);
}
.legacy-questionnaire :is(input, textarea):focus-visible,
.questionnaire-form__steps button:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 3px;
}
.legacy-questionnaire .form-tips { margin-block: var(--space-10); font-size: 0.875rem; }
.legacy-questionnaire :is(.fields-address, .fields-person, .fields-program) {
  padding-inline-start: 24px;
  margin-block: var(--space-20);
}
.legacy-questionnaire :is(.fields-address, .fields-person, .fields-program) > li + li { margin-top: var(--space-20); }
.questionnaire-form__add { min-height: 44px; height: auto; font-size: 0.875rem; }

.site-footer__meta {
  align-items: start;
}

.site-footer__meta-item {
  min-width: 0;
  line-height: 1.65;
}

.site-footer__meta-item--credit {
  text-align: left;
}

.legacy-content .text-block__body {
  max-width: 1000px;
  min-width: 0;
  overflow-wrap: anywhere;
}

.text-block.is-narrow .text-block__body {
  max-width: 900px;
}

.hero-slider:not(.swiper-initialized) .swiper-slide:not(:first-child) {
  display: none;
}

.hero-slider .swiper-slide {
  height: auto;
}

/* Actions sit outside the text scroller so focusing them cannot scroll the hero. */
@media (min-width: 1280px) {
  .hero-slider .hero > .hero__actions {
    position: absolute;
    inset-inline: 0;
    inset-block-end: 80px;
    gap: 30px;
  }

  .hero-slider .hero__bottom {
    min-height: 60px;
  }
}

/* Mobile hero includes the fixed header in the first small viewport. */
@media (max-width: 1279px) {
  main:has(> .hero-slider:first-child) {
    padding-block-start: 0;
  }

  .hero-slider .hero {
    --hero-actions-height: 60px;
    --hero-edge: 20px;
    --hero-safe-bottom: env(safe-area-inset-bottom, 0px);
    height: 100svh;
    min-height: 0;
  }

  /* Keep the text scroll area above the pinned actions, not underneath them. */
  .hero-slider .hero__inner {
    position: static;
    height: calc(100% - var(--hero-actions-height) - var(--hero-edge) * 2 - var(--hero-safe-bottom));
    min-height: 0;
    padding-block: calc(78px + var(--hero-edge)) 0;
    justify-content: safe center;
    overflow-x: hidden;
    overflow-y: auto;
  }

  .hero-slider .hero__heading,
  .hero-slider .hero__bottom {
    flex-shrink: 0;
  }

  .hero-slider .hero__bottom {
    display: block;
  }

  .hero-slider .hero__heading,
  .hero-slider .hero__copy {
    position: relative;
    z-index: 1;
  }

  .hero-slider .hero__actions {
    position: absolute;
    z-index: 1;
    inset-inline: 0;
    inset-block-end: calc(var(--hero-edge) + var(--hero-safe-bottom));
    width: calc(100% - var(--gutter) * 2);
    max-width: var(--container);
    min-height: 60px;
    margin-inline: auto;
  }

  .hero-slider .hero__inner:focus-visible {
    outline: 2px solid var(--lime);
    outline-offset: -2px;
  }

  /* WordPress reserves a toolbar above the document for logged-in editors. */
  body.admin-bar .hero-slider .hero {
    height: calc(100svh - var(--wp-admin--admin-bar--height, 0px));
  }
}

@media (max-width: 359px) {
  .hero-slider .hero__actions .btn {
    padding-inline: 16px;
    font-size: 1rem;
  }
}

.map-block iframe {
  display: block;
  width: 100%;
  min-height: 480px;
  margin-top: 32px;
  border: 0;
}

.map-block {
  padding-block: 80px 80px;
  background: var(--paper);
}

.gallery-block {
  padding-block: 80px;
  overflow: hidden;
}

.gallery-block__content {
  max-width: 900px;
  margin-bottom: 30px;
}

.gallery-block__slider {
  overflow: visible;
}

.gallery-block__slider figure {
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}

.gallery-block__slider img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.legacy-content .text-block__body > :where(h2, h3, h4) {
  scroll-margin-top: 120px;
}

.legacy-content .text-block__body :where(table, iframe, img) {
  max-width: 100%;
}

.legacy-content .text-block__body :where(h1, h2, h3, h4, h5, p, li, a),
.legal-document__content :where(h1, h2, h3, h4, h5, p, li, a) {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}

.legacy-content .text-block__body h1,
.legal-document__content h1 {
  margin-block: 48px 24px;
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  line-height: 1.02;
}

.legacy-content .text-block__body :where(h2, h3, h4, h5),
.legal-document__content :where(h2, h3, h4, h5) {
  margin-block: 42px 18px;
}

.legacy-content .text-block__body :where(ol, ul),
.legal-document__content :where(ol, ul) {
  max-width: 100%;
  padding-left: 1.4em;
}

.legacy-content .text-block__body li + li,
.legal-document__content li + li {
  margin-top: 10px;
}

.legacy-content .text-block__body table {
  width: 100%;
  border-collapse: collapse;
}

.legacy-content .text-block__body :where(th, td) {
  padding: 12px;
  border: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}

.legal-document__layout,
.legal-document__content {
  min-width: 0;
}

.legal-document__content {
  width: 100%;
}

.legal-document__content :where(table, iframe, img, video) {
  max-width: 100%;
}

.legal-document__content table {
  display: block;
  width: 100%;
  overflow-x: auto;
}

.legacy-questionnaire-source {
  margin-top: 30px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.legacy-questionnaire-source > summary {
  padding-block: 20px;
  color: var(--green);
  font-weight: 700;
  cursor: pointer;
}

.legacy-questionnaire-source > div {
  max-height: min(62vh, 720px);
  overflow: auto;
  padding: 0 18px 24px 0;
  font-size: 0.9rem;
}

.legacy-questionnaire-source :where(ol, ul) {
  padding-left: 1.4em;
}

.legacy-questionnaire-source li + li {
  margin-top: 8px;
}

.lexlab-embed-placeholder {
  min-height: 220px;
  display: grid;
  place-items: center;
  padding: 30px;
  border: 1px dashed var(--sage);
  background: var(--paper);
  color: var(--forest);
  text-align: center;
}

.demo-import-notice {
  max-width: 860px;
}

/* Free quote modal: legacy interaction rebuilt with native dialog semantics. */
.quote-header-slot {
  display: none;
}

@media (min-width: 1280px) {
  /* Match the in-flow desktop header, including across modal-open resizes. */
  .quote-header-slot {
    display: block;
    height: 100px;
  }
}

.primary-navigation__footer {
  display: none;
}

.quote-modal {
  --quote-header-height: 100px;
  --quote-toolbar-height: 0px;
  width: 100%;
  max-width: none;
  height: 100dvh;
  max-height: none;
  inset: 0;
  margin: 0;
  padding: 0;
  border: 0;
  overflow: hidden;
  background: transparent;
  color: var(--ink);
}

.quote-modal::backdrop {
  background: transparent;
}

.quote-modal__viewport {
  position: absolute;
  inset: calc(var(--quote-header-height) + var(--quote-toolbar-height)) 0 0;
  overflow-y: auto;
  background: var(--white);
  opacity: 0;
  transition: opacity var(--duration-base) var(--ease-out);
}

.quote-modal.is-visible .quote-modal__viewport {
  opacity: 1;
}

.quote-modal__content {
  display: grid;
  min-height: 100%;
  align-content: center;
  padding-block: 72px;
}

.quote-modal__header {
  margin-inline: auto;
  text-align: center;
  opacity: 0;
  transform: translateY(-20px);
  transition: opacity var(--duration-base) var(--ease-out), transform var(--duration-base) var(--ease-out);
}

.quote-modal.is-visible .quote-modal__header {
  opacity: 1;
  transform: none;
}

.quote-modal__header > p:first-child {
  color: rgb(21 32 25 / 66%);
  font-size: 1.125rem;
}

.quote-modal__phone {
  margin-top: 18px;
  font-size: 1.5rem;
  font-weight: 750;
}

.quote-modal__phone a {
  color: #7ac943;
}

.quote-modal__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px 20px;
  width: min(880px, 100%);
  margin: 42px auto 0;
}

.quote-modal__card {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  min-height: 100px;
  align-items: center;
  gap: 14px;
  padding: 20px;
  border-radius: 4px;
  background: var(--white);
  box-shadow: 0 8px 26px rgb(21 32 25 / 10%);
  color: rgb(21 32 25 / 76%);
  font-weight: 700;
  line-height: 1.35;
  opacity: 0;
  transition: opacity var(--duration-base) var(--ease-out), transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
}

/* Interactive cards fade in without moving their click targets. */
.quote-modal.is-visible .quote-modal__card {
  opacity: 1;
  transition-delay: var(--quote-delay, 0ms), 0ms, 0ms, 0ms;
}

.quote-modal__card:nth-child(2) { --quote-delay: 30ms; }
.quote-modal__card:nth-child(3) { --quote-delay: 60ms; }
.quote-modal__card:nth-child(4) { --quote-delay: 90ms; }
.quote-modal__card:nth-child(5) { --quote-delay: 120ms; }
.quote-modal__card:nth-child(6) { --quote-delay: 150ms; }

.quote-modal__card:focus-visible {
  opacity: 1;
  transition-delay: 0ms;
}

.quote-modal__icon {
  width: 32px;
  height: 32px;
  fill: none;
  stroke: #7ac943;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.quote-modal__icon--custom {
  display: block;
  object-fit: contain;
}

.quote-modal__close {
  position: fixed;
  z-index: 2;
  top: calc(var(--quote-header-height) + var(--quote-toolbar-height) + 14px);
  right: 20px;
  display: grid;
  width: 54px;
  height: 54px;
  place-items: center;
  border: 0;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
}

.quote-modal__close svg {
  width: 28px;
  height: 28px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
}

body.is-quote-modal-open {
  overflow: hidden;
}

body.is-quote-modal-open .site-header {
  position: fixed;
  z-index: 100;
  top: 0;
  right: 0;
  left: 0;
  width: 100%;
  background-color: var(--white);
  transition-property: box-shadow;
}

body.admin-bar.is-quote-modal-open .site-header {
  top: 32px;
}

body.admin-bar .quote-modal {
  --quote-toolbar-height: 32px;
}

@media (prefers-reduced-motion: reduce) {
  .quote-modal__viewport,
  .quote-modal__header,
  .quote-modal.is-visible .quote-modal__card,
  .quote-modal .quote-modal__card {
    transition-property: opacity;
    transition-duration: var(--duration-fast);
    transition-delay: 0ms;
  }

  .quote-modal__header {
    transform: none;
  }
}

@media (hover: hover) and (pointer: fine) {
  .quote-modal__card:hover {
    color: var(--forest);
    box-shadow: 0 12px 34px rgb(21 32 25 / 16%);
    transform: translateY(-3px);
  }
}

@media (min-width: 992px) {
  .legacy-content .text-block__body {
    margin-inline: auto;
  }

  .site-footer__nav {
    grid-template-columns: 1.15fr 1fr 1.15fr 1.25fr;
    gap: 30px;
  }

	.site-footer__meta-item--credit {
	  text-align: right;
	}

	.media-text.is-services-media-left .media-text__content .services-list,
	.media-text.is-services-media-left .media-text__content .btn {
	  margin-top: var(--space-30);
	}
}

@media (max-width: 1279px) {
  .primary-navigation {
    display: flex;
    flex-direction: column;
    gap: var(--space-30);
    padding-block-end: max(var(--space-20), env(safe-area-inset-bottom, 0px));
  }

  .primary-navigation > .menu {
    flex-shrink: 0;
  }

  .primary-navigation__footer {
    display: block;
    flex-shrink: 0;
    margin-top: auto;
  }

  .primary-navigation__footer .btn {
    width: 100%;
  }

  .quote-modal {
    --quote-header-height: 78px;
  }

  .quote-modal__close {
    top: calc(var(--quote-header-height) + var(--quote-toolbar-height) + 10px);
  }

  body.admin-bar .quote-modal .primary-navigation {
    top: calc(var(--quote-header-height) + var(--quote-toolbar-height));
  }
}

@media (max-width: 767px) {
  .quote-modal__content {
    align-content: start;
    padding-block: 76px 48px;
  }

  .quote-modal__header > p:first-child {
    font-size: 1rem;
    line-height: 1.55;
  }

  .quote-modal__phone {
    font-size: 1.25rem;
  }

  .quote-modal__grid {
    grid-template-columns: 1fr;
    margin-top: 32px;
  }

  .quote-modal__card {
    min-height: 82px;
  }

  .quote-modal__close {
    right: 4px;
  }
}

@media (max-width: 782px) {
	body.admin-bar.is-quote-modal-open .site-header {
	  top: 46px;
	}

  body.admin-bar .quote-modal {
    --quote-toolbar-height: 46px;
  }
}
