/* WordPress content and Contact Form 7 integration. */
/* Override the third-party inline position so the badge stays in document flow. */
.grecaptcha-badge {
  position: static !important;
  margin: var(--gn-space-6) auto;
}
.admin-bar .gn-header { top: var(--wp-admin--admin-bar--height, 32px); }
.gn-entry-content { line-height: var(--gn-lh-body); overflow-wrap: anywhere; margin-bottom: var(--gn-space-10); }
.gn-entry-content :is(p, ul, ol, figure, blockquote) { margin-block: var(--gn-space-6); }
.gn-entry-content blockquote { border-inline-start: 3px solid var(--gn-color-primary); padding-inline-start: var(--gn-space-6); }
.gn-entry-content h2 { font-size: var(--gn-fs-h2); margin-block: var(--gn-space-10) var(--gn-space-5); }
.gn-entry-content h3 { font-size: var(--gn-fs-h3); margin-block: var(--gn-space-8) var(--gn-space-4); }
/* News headings use the reading scale rather than section-title sizing. */
.single-news .gn-entry-content h2 { font-size: var(--gn-fs-cta-title); line-height: var(--gn-lh-heading); margin-block: var(--gn-space-8) var(--gn-space-4); }
.single-news .gn-entry-content h3 { font-size: var(--gn-fs-card-title); line-height: var(--gn-lh-heading); }
/* Article featured images share the supplied 1440 × 754 framing. */
:is(.single-blog, .single-news) .gn-article__figure { width: 100%; }
:is(.single-blog, .single-news) .gn-article__figure > img { display: block; width: 100%; height: auto; aspect-ratio: 1440 / 754; object-fit: cover; object-position: center; }
.gn-entry-content img { max-width: 100%; height: auto; }
.gn-entry-content :is(ul, ol) { padding-inline-start: var(--gn-space-6); }
.gn-entry-content a:not(.gn-btn, .wp-block-button__link) { text-decoration: underline; text-underline-offset: 0.2em; }
.gn-entry-content ul { list-style-type: disc; }
.gn-entry-content ol { list-style-type: decimal; }
.gn-listing .gn-blog-grid { list-style: none; padding: 0; }
.gn-listing { padding-top: var(--gn-space-8); }
.gn-listing-filter { display: flex; align-items: center; flex-wrap: wrap; gap: var(--gn-space-2) var(--gn-space-3); margin-bottom: var(--gn-space-5); padding: var(--gn-space-4); border-radius: var(--gn-radius); background: var(--gn-color-bg-service); }
.gn-listing-filter > div { display: flex; align-items: center; gap: var(--gn-space-2); min-width: 0; }
.gn-listing-filter label { flex-shrink: 0; margin: 0; font-size: var(--gn-fs-small); color: var(--gn-color-text-secondary); }
.gn-listing-filter .gn-form-select { width: 14rem; min-height: 44px; padding-block: var(--gn-space-2); padding-left: var(--gn-space-3); font-size: var(--gn-fs-small); }
.gn-listing-filter .gn-btn { min-height: 44px; padding: var(--gn-space-2) var(--gn-space-4); margin: 0; }
.gn-listing-filter > a { display: inline-flex; align-items: center; min-height: 44px; padding-inline: var(--gn-space-2); font-size: var(--gn-fs-small); }

.gn-pagination .page-numbers { display: inline-flex; padding: var(--gn-space-3) var(--gn-space-4); border: 1px solid var(--gn-color-border); border-radius: var(--gn-radius-sm); }
.gn-pagination .current { background: var(--gn-color-primary); color: var(--gn-color-bg); }
.gn-form .wpcf7-form-control-wrap { display: block; min-width: 0; }
.gn-form .wpcf7-not-valid-tip { color: var(--gn-color-required); font-size: var(--gn-fs-small); margin-top: var(--gn-space-2); }
.gn-form .gn-form-consent { flex-direction: column; gap: var(--gn-space-2); }
.gn-form .wpcf7-list-item { margin: 0; }
.gn-form .wpcf7-list-item label { display: inline-flex; gap: var(--gn-space-2); align-items: center; }
.gn-form .wpcf7-acceptance input { width: 1.25rem; height: 1.25rem; }
.gn-form .wpcf7-response-output { margin-inline: 0; padding: var(--gn-space-4); }
.gn-form .gn-form-submit { flex-wrap: wrap; }
/* Result dialog enhances CF7; without JavaScript its inline response stays visible. */
.gn-form-feedback-modal .wpcf7-response-output { display: none; }
.gn-form-dialog {
  width: min(35rem, calc(100% - var(--gn-space-8)));
  max-height: calc(100dvh - var(--gn-space-12));
  overflow-y: auto;
  padding: clamp(var(--gn-space-6), 5vw, var(--gn-space-12));
  margin: auto;
  border: 0;
  border-radius: var(--gn-radius-lg);
  color: var(--gn-color-text);
  background: var(--gn-color-bg);
  box-shadow: var(--gn-shadow-dialog);
}
.gn-form-dialog::backdrop { background: var(--gn-color-dialog-backdrop); backdrop-filter: blur(4px); }
.gn-form-dialog__close {
  position: absolute;
  top: var(--gn-space-2);
  right: var(--gn-space-2);
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gn-color-text-secondary);
  font-size: var(--gn-fs-h3);
  cursor: pointer;
}
.gn-form-dialog__heading { display: flex; align-items: center; gap: var(--gn-space-4); margin-block: var(--gn-space-4) var(--gn-space-5); }
.gn-form-dialog__icon { display: grid; place-items: center; flex: 0 0 var(--gn-space-12); height: var(--gn-space-12); border-radius: 50%; color: var(--gn-color-primary); background: var(--gn-color-primary-soft); }
.gn-form-dialog__icon svg:not([hidden]) { display: block; width: var(--gn-space-6); height: var(--gn-space-6); }
.gn-form-dialog__title { margin: 0; font-size: var(--gn-fs-card-title); line-height: var(--gn-lh-heading); text-wrap: balance; }
.gn-form-dialog__errors { color: var(--gn-color-required); padding: var(--gn-space-4) var(--gn-space-5) var(--gn-space-4) var(--gn-space-8); margin-top: var(--gn-space-5); background: var(--gn-color-bg-sub); border-radius: var(--gn-radius-sm); font-size: var(--gn-fs-small); overflow-wrap: anywhere; }
.gn-form-dialog__errors li + li { margin-top: var(--gn-space-2); }
.gn-form-dialog__action { width: 100%; margin-top: var(--gn-space-6); justify-content: center; transition: background-color var(--gn-tx), border-color var(--gn-tx); }
.gn-form-dialog__action:hover { transform: none; box-shadow: none; }
.gn-sitemap-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gn-space-5); padding: 0; list-style: none; }
@media (max-width: 600px) {
  .gn-listing-filter > div { width: 100%; }
  .gn-listing-filter label { flex-basis: 5em; }
  .gn-listing-filter .gn-form-select { flex: 1; width: 0; font-size: var(--gn-fs-body); }
  .gn-sitemap-links { grid-template-columns: 1fr; }
}

/* Service pages share the site's existing section, card and button components. */
.gn-service-catalog .gn-section__lead { max-width: none; margin-bottom: var(--gn-space-8); }
.gn-service-catalog .gn-contact__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gn-space-4); }
.gn-service-catalog .gn-contact-card { padding: var(--gn-space-6); background: var(--gn-color-surface); border-color: var(--gn-color-border); border-radius: var(--gn-radius-lg); backdrop-filter: none; -webkit-backdrop-filter: none; }
.gn-service-catalog .gn-contact-topics__card { padding: var(--gn-space-6); }
.gn-service-catalog__icon { display: block; width: calc(var(--gn-space-12) * 2); height: calc(var(--gn-space-12) * 2); object-fit: contain; margin-bottom: var(--gn-space-5); }
.gn-service-catalog[aria-labelledby="core"] .gn-service-catalog__icon { margin-inline: auto; }
.gn-service-catalog[aria-labelledby="core"] .gn-contact-topics__card-title { font-family: 'Raleway', var(--gn-font-en); font-size: var(--gn-fs-cta-title); font-weight: 700; line-height: var(--gn-lh-heading); text-align: center; text-wrap: balance; margin-bottom: var(--gn-space-4); }
@media (max-width: 768px) { .gn-service-catalog .gn-contact__cards { grid-template-columns: minmax(0, 1fr); } }
.gn-service-catalog__description { color: var(--gn-color-text-secondary); font-size: var(--gn-fs-body); line-height: var(--gn-lh-body); }
.gn-service-catalog__description ul { list-style: disc; padding-inline-start: var(--gn-space-5); }
.gn-service-catalog__links { display: flex; justify-content: center; flex-wrap: wrap; gap: var(--gn-space-4); }
@media (min-width: 641px) { .gn-service-catalog__grid--two { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gn-service-catalog__intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: var(--gn-space-8); margin-bottom: var(--gn-space-8); }
.gn-service-catalog .gn-section__title { text-wrap: balance; }
.gn-service-catalog__intro .gn-section__lead { margin-bottom: 0; }
.gn-service-catalog__photo { margin: 0; overflow: hidden; border-radius: var(--gn-radius-lg); }
.gn-service-catalog__photo img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
@media (max-width: 767px) { .gn-service-catalog__intro { grid-template-columns: minmax(0, 1fr); gap: var(--gn-space-5); margin-bottom: var(--gn-space-6); } }

/* DX service cards: balance illustrations with the service summary. */
.gn-service-catalog[aria-labelledby="ai-services"] .gn-contact-topics__grid { gap: var(--gn-space-6); }
.gn-service-catalog[aria-labelledby="ai-services"] .gn-contact-topics__card {
  display: grid;
  grid-template-columns: calc(var(--gn-space-12) * 2) minmax(0, 1fr);
  column-gap: var(--gn-space-6);
  row-gap: var(--gn-space-2);
  align-content: center;
  padding: var(--gn-space-8);
}
.gn-service-catalog[aria-labelledby="ai-services"] .gn-service-catalog__icon { grid-column: 1; grid-row: 1 / 3; align-self: center; margin: 0; }
.gn-service-catalog[aria-labelledby="ai-services"] .gn-contact-topics__card-title { grid-column: 2; margin: 0; font-size: var(--gn-fs-card-title); }
.gn-service-catalog[aria-labelledby="ai-services"] .gn-service-catalog__description { grid-column: 2; }
@media (max-width: 1023px) {
  .gn-service-catalog[aria-labelledby="ai-services"] .gn-contact-topics__grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 600px) {
  .gn-service-catalog[aria-labelledby="ai-services"] .gn-contact-topics__card { grid-template-columns: var(--gn-space-16) minmax(0, 1fr); column-gap: var(--gn-space-4); padding: var(--gn-space-6); }
  .gn-service-catalog[aria-labelledby="ai-services"] .gn-service-catalog__icon { width: var(--gn-space-16); height: var(--gn-space-16); }
}

/* Editorial service sections: shared cards, actions and accessible FAQ. */
.gn-service-detail__head { margin-bottom: var(--gn-space-10); }
.gn-service-detail__head > p:last-child:not(.gn-eyebrow) { max-width: 58em; margin-top: var(--gn-space-6); }
.gn-service-detail p { font-size: var(--gn-fs-body); line-height: 1.85; color: var(--gn-color-text-secondary); }
.gn-service-detail .gn-eyebrow { color: var(--gn-color-primary); font-size: var(--gn-fs-small); }
.gn-service-detail h3 { font-size: var(--gn-fs-card-title); line-height: 1.6; margin-bottom: var(--gn-space-4); }
.gn-service-detail__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gn-space-6); }
.gn-service-detail .gn-service-detail__number { display: block; font-family: var(--gn-ff-en); color: var(--gn-color-primary); font-size: var(--gn-fs-h3); line-height: 1; margin-bottom: var(--gn-space-6); }
.gn-service-detail--improvement, .gn-service-detail--pricing { background: var(--gn-color-bg-service); }
.gn-service-detail__panels { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gn-space-10); }
.gn-service-detail__panels > article { padding-top: var(--gn-space-6); border-top: 2px solid var(--gn-color-primary); }
.gn-service-detail__steps { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--gn-color-border); }
.gn-service-detail__steps > li { display: grid; grid-template-columns: 8rem minmax(0, 1fr); gap: var(--gn-space-8); padding-block: var(--gn-space-8); border-bottom: 1px solid var(--gn-color-border); }
.gn-service-detail__steps .gn-service-detail__number { font-size: var(--gn-fs-card-title); margin: 0; padding-top: var(--gn-space-2); }
.gn-service-detail__pricing { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gn-space-12); align-items: start; }
.gn-service-detail__pricing .gn-service-detail__head { margin: 0; }
.gn-service-detail__estimate { background: var(--gn-color-bg); border: 1px solid var(--gn-color-border); border-radius: var(--gn-radius); padding: var(--gn-space-8); }
.gn-service-detail .gn-actions > p { margin: 0; max-width: 100%; }
.gn-service-detail .gn-btn { white-space: normal; text-align: center; }
.gn-service-detail .gn-service-faq-item__q { font-size: var(--gn-fs-card-title); }
.gn-service-detail .gn-service-faq-item summary { padding-block: var(--gn-space-6); }
.gn-service-detail .gn-service-faq-item__a { padding-bottom: var(--gn-space-6); }
@media (max-width: 1023px) {
  .gn-service-detail__cards { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .gn-service-detail__panels, .gn-service-detail__pricing { grid-template-columns: minmax(0, 1fr); gap: var(--gn-space-8); }
  .gn-service-detail__steps > li { grid-template-columns: minmax(0, 1fr); gap: var(--gn-space-4); }
  .gn-service-detail__estimate { padding: var(--gn-space-6); }
}
.gn-service-detail__cards h3 { text-wrap: balance; }
@media (min-width: 1024px) {
  .gn-service-detail__cards h3 { min-height: 3.2em; }
}

/* Service cards share compact icon/title rows and aligned descriptions. */
.gn-service-catalog:is([aria-labelledby="consulting"], [aria-labelledby="creation"], [aria-labelledby="training"]) .gn-contact-topics__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gn-space-6); }
.gn-service-catalog:is([aria-labelledby="consulting"], [aria-labelledby="creation"], [aria-labelledby="training"]) .gn-contact-topics__card {
  display: grid;
  grid-template-columns: var(--gn-space-16) minmax(0, 1fr);
  grid-template-rows: subgrid;
  grid-row: span 2;
  gap: var(--gn-space-6) var(--gn-space-4);
  padding: var(--gn-space-8);
  align-content: start;
}
.gn-service-catalog:is([aria-labelledby="consulting"], [aria-labelledby="creation"], [aria-labelledby="training"]) .gn-service-catalog__icon { width: var(--gn-space-16); height: var(--gn-space-16); margin: 0; }
.gn-service-catalog:is([aria-labelledby="consulting"], [aria-labelledby="creation"], [aria-labelledby="training"]) .gn-contact-topics__card-title { align-self: center; margin: 0; font-size: var(--gn-fs-card-title); line-height: 1.6; }
.gn-service-catalog:is([aria-labelledby="consulting"], [aria-labelledby="creation"], [aria-labelledby="training"]) .gn-service-catalog__description { grid-column: 1 / -1; }
@media (max-width: 1023px) {
  .gn-service-catalog:is([aria-labelledby="consulting"], [aria-labelledby="creation"], [aria-labelledby="training"]) .gn-contact-topics__grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .gn-service-catalog:is([aria-labelledby="consulting"], [aria-labelledby="creation"], [aria-labelledby="training"]) .gn-contact-topics__card { padding: var(--gn-space-6); }
}

/* Native details retain keyboard behaviour and work without JavaScript. */
@supports (interpolate-size: allow-keywords) {
  .gn-service-faq-item details { interpolate-size: allow-keywords; }
  .gn-service-faq-item details::details-content {
    height: 0;
    overflow: clip;
    transition: height 280ms ease, content-visibility 280ms allow-discrete;
  }
  .gn-service-faq-item details[open]::details-content { height: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .gn-service-faq-item details::details-content { transition: none; }
}

/* Standalone section actions share the same centered placement. */
.gn-container:has(> .gn-btn:only-child) { text-align: center; }
.gn-btn:not(.gn-btn--primary, .gn-btn--outline-light):hover { color: var(--gn-color-primary); border-color: var(--gn-color-primary); box-shadow: inset 0 0 0 3px var(--gn-color-primary); }
.gn-btn > :is(svg, .gn-btn__arrow) { flex-shrink: 0; }
