/* ODA Concepts v1.0.14 text and cascade corrections. */
:root {
  --oda-ink: #161010;
  --oda-muted: #161010;
  --oda-dark-lead: #FFFFFF;
  --oda-footer-copy: #FFFFFF;
  --oda-footer-muted: #FFFFFF;
}

/* The only production text colours are ink and white. */
:is(.oda-page-home, .oda-page-about, .oda-page-services, .oda-page-selected-work, .oda-page-team, .oda-page-contact, .oda-single-service-detail, .oda-theme-404) :is(h1, h2, h3, h4, h5, h6, p, li, span, a, small, label, .elementor-heading-title, .elementor-widget-container, .elementor-widget-text-editor, .elementor-widget-text-editor p, .elementor-icon-list-text, .oda-eyebrow, .oda-section-label, .oda-section-label p, .oda-capability-number, .oda-detail-rail-number, .oda-service-row-number, .oda-process-number, .oda-hero-index, .oda-statement-quote .elementor-heading-title) {
  color: #161010 !important;
  opacity: 1 !important;
}

/* Dark sections and dark hero IDs use solid white text. */
:is(.oda-page-home, .oda-page-about, .oda-page-services, .oda-page-selected-work, .oda-page-team, .oda-page-contact, .oda-single-service-detail, .oda-theme-404) :is(.oda-section--dark, .oda-section-hero--dark, .oda-page-hero--dark, #oda-section-hero-home, #oda-section-approach-home, #oda-section-hero-services, #oda-section-process-services, #oda-section-quote-about, #oda-section-selected-work-featured, #oda-section-hero-contact, #oda-section-contact-form, #oda-section-philosophy-team) :is(h1, h2, h3, h4, h5, h6, p, li, span, a, small, label, .elementor-heading-title, .elementor-widget-container, .elementor-widget-text-editor, .elementor-widget-text-editor p, .elementor-icon-list-text, .oda-eyebrow, .oda-section-label, .oda-section-label p, .oda-capability-number, .oda-detail-rail-number, .oda-service-row-number, .oda-process-number, .oda-hero-index, .oda-statement-quote .elementor-heading-title) {
  color: #FFFFFF !important;
  opacity: 1 !important;
}

/* Blue sections are surfaces, not text colours. */
:is(.oda-page-home, .oda-page-about, .oda-page-services, .oda-page-selected-work, .oda-page-team, .oda-page-contact, .oda-single-service-detail, .oda-theme-404) :is(.oda-section--blue, .oda-section-hero--blue, .oda-page-hero--blue, #oda-section-hero-about, #oda-section-cta-home, #oda-section-cta-about, #oda-section-cta-selected-work, #oda-section-cta-services, #oda-section-service-detail-next, #oda-section-hero-team) :is(h1, h2, h3, h4, h5, h6, p, li, span, a, small, label, .elementor-heading-title, .elementor-widget-container, .elementor-widget-text-editor, .elementor-widget-text-editor p, .elementor-icon-list-text, .oda-eyebrow, .oda-section-label, .oda-section-label p, .oda-capability-number, .oda-detail-rail-number, .oda-service-row-number, .oda-process-number, .oda-hero-index, .oda-statement-quote .elementor-heading-title) {
  color: #161010 !important;
  opacity: 1 !important;
}

/* Background accents with a fixed contrast pair. */
:is(.oda-media-tag, .oda-media-tag p, .oda-header-cta, .oda-header-cta .elementor-button, .oda-button--blue .elementor-button) {
  color: #161010 !important;
  opacity: 1 !important;
}

/* Header: light = white/ink, dark = ink/white. */
.oda-site-header--light,
.oda-site-header:not(.oda-site-header--dark),
.oda-site-header--light > .e-con-inner,
.oda-site-header:not(.oda-site-header--dark) > .e-con-inner {
  background: #FFFFFF !important;
  color: #161010 !important;
  border-bottom-color: #161010 !important;
}
.oda-site-header--light .oda-brand img,
.oda-site-header:not(.oda-site-header--dark) .oda-brand img { filter: none !important; }
.oda-site-header--light :is(a, button, span, .elementor-item),
.oda-site-header:not(.oda-site-header--dark) :is(a, button, span, .elementor-item) {
  color: #161010 !important;
  opacity: 1 !important;
}
.oda-site-header--dark,
.oda-site-header--dark > .e-con-inner {
  background: #161010 !important;
  color: #FFFFFF !important;
  border-bottom-color: #FFFFFF !important;
}
.oda-site-header--dark .oda-brand img { filter: invert(1) !important; }
.oda-site-header--dark :is(a, button, span, .elementor-item) {
  color: #FFFFFF !important;
  opacity: 1 !important;
}
.oda-site-header--dark :is(.oda-header-cta, .oda-header-cta .elementor-button) { color: #161010 !important; }

/* Footer: all copy is white on the ink field. */
.oda-site-footer,
.oda-site-footer > .e-con-inner { background: #161010 !important; color: #FFFFFF !important; }
.oda-site-footer :is(h1, h2, h3, h4, h5, h6, p, li, span, a, small, .elementor-heading-title, .elementor-widget-container, .elementor-widget-text-editor, .elementor-widget-text-editor p, .elementor-icon-list-text, .oda-footer-title, .oda-footer-copy, .oda-footer-bottom) {
  color: #FFFFFF !important;
  opacity: 1 !important;
}
.oda-footer-brand img { filter: invert(1) !important; }

/* Prevent Elementor's inner wrapper from shrinking editorial layouts. */
:is(.oda-section-head, .oda-footer-grid) {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}
.oda-section-head > .e-con-inner {
  display: grid !important;
  grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr) !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  align-items: end !important;
  gap: clamp(2rem, 6vw, 7rem) !important;
}
.oda-section-head .oda-display-md .elementor-heading-title { max-width: 16ch !important; }
.oda-footer-grid > .e-con-inner {
  display: grid !important;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr) minmax(0, .8fr) !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  align-items: start !important;
  gap: 2rem !important;
}
.oda-footer-grid > .e-con-inner > .e-con { width: 100% !important; min-width: 0 !important; }

/* Forms sit on a paper surface, so labels, fields, and placeholders use ink. */
.oda-contact-form :is(input, textarea, select, option) { color: #161010 !important; opacity: 1 !important; }
.oda-contact-form :is(input, textarea, select)::placeholder { color: #161010 !important; opacity: .72 !important; }

@media (max-width: 980px) {
  .oda-section-head > .e-con-inner { grid-template-columns: 1fr !important; }
  .oda-footer-grid > .e-con-inner { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (max-width: 700px) {
  .oda-section-head > .e-con-inner,
  .oda-footer-grid > .e-con-inner { grid-template-columns: 1fr !important; }
}

/* PHP fallback header/footer and native Elementor buttons. These selectors are
 * intentionally independent of Theme Builder wrappers so the same visual
 * contract remains active when Elementor's header/footer locations are not
 * assigned yet. */
.oda-site-header.oda-site-header--dark {
  background-color: #161010 !important;
  background-image: none !important;
  color: #FFFFFF !important;
  border-bottom-color: rgba(255, 255, 255, .14) !important;
}
.oda-site-header.oda-site-header--light {
  background-color: #FFFFFF !important;
  background-image: none !important;
  color: #161010 !important;
  border-bottom-color: rgba(22, 16, 16, .14) !important;
}
.oda-site-header.oda-site-header--dark > .oda-brand img { filter: invert(1) !important; }
.oda-site-header.oda-site-header--light > .oda-brand img { filter: none !important; }
.oda-site-header.oda-site-header--dark > .oda-site-nav,
.oda-site-header.oda-site-header--dark > .oda-site-nav :is(a, span, li),
.oda-site-header.oda-site-header--dark > .oda-menu-toggle { color: #FFFFFF !important; opacity: 1 !important; }
.oda-site-header.oda-site-header--light > .oda-site-nav,
.oda-site-header.oda-site-header--light > .oda-site-nav :is(a, span, li),
.oda-site-header.oda-site-header--light > .oda-menu-toggle { color: #161010 !important; opacity: 1 !important; }
.oda-site-header > .oda-header-cta {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  min-height: 42px !important;
  max-width: 100% !important;
  padding: .75rem 1rem !important;
  box-sizing: border-box !important;
  background: #2396F4 !important;
  border: 1px solid #2396F4 !important;
  color: #161010 !important;
  font-weight: 700 !important;
  text-decoration: none !important;
  opacity: 1 !important;
}
.oda-site-header > .oda-header-cta span { color: #161010 !important; opacity: 1 !important; }

.oda-site-footer > .oda-footer-grid {
  display: grid !important;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr) minmax(0, .8fr) !important;
  width: min(var(--oda-max, 1320px), calc(100% - (var(--oda-gutter, 4.5rem) * 2))) !important;
  max-width: none !important;
  min-width: 0 !important;
  margin: 0 auto !important;
  padding: 0 0 3.5rem !important;
  gap: 2rem !important;
  align-items: start !important;
}
.oda-site-footer > .oda-footer-grid > :is(.oda-footer-brand, .oda-footer-nav, .oda-footer-contact) {
  width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
}
.oda-site-footer > .oda-footer-grid :is(p, a, li, span, .oda-footer-copy, .oda-footer-title) {
  color: #FFFFFF !important;
  opacity: 1 !important;
}
.oda-site-footer > .oda-footer-grid .oda-footer-menu,
.oda-site-footer > .oda-footer-grid .oda-footer-contact ul {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.oda-site-footer > .oda-footer-grid .oda-footer-menu li,
.oda-site-footer > .oda-footer-grid .oda-footer-contact li { margin: 0 0 .7rem !important; }
.oda-site-footer > .oda-footer-grid .oda-footer-menu a,
.oda-site-footer > .oda-footer-grid .oda-footer-contact a { color: #FFFFFF !important; }
.oda-site-footer > .oda-footer-bottom {
  width: min(var(--oda-max, 1320px), calc(100% - (var(--oda-gutter, 4.5rem) * 2))) !important;
  max-width: none !important;
  margin: 0 auto !important;
  color: #FFFFFF !important;
}
.oda-site-footer > .oda-footer-bottom :is(span, a, p) { color: #FFFFFF !important; opacity: 1 !important; }

/* Light content is ink; dark and blue fields have their own explicit text
 * colour below. This removes inherited Elementor grey/disabled opacity. */
:is(main, .elementor-location-single, .elementor-location-archive) :is(
  .elementor-heading-title,
  .elementor-widget-text-editor,
  .elementor-widget-text-editor p,
  .oda-eyebrow,
  .oda-body-copy,
  .oda-body-large,
  .oda-lead,
  .oda-display-md,
  .oda-display-xl,
  .oda-statement-copy,
  .oda-statement-quote,
  .oda-capability-card,
  .oda-capability-card h3,
  .oda-capability-card p,
  .oda-service-row,
  .oda-service-row :is(h2, h3, p, span),
  .oda-detail-panel,
  .oda-detail-panel :is(h2, h3, p, li),
  .oda-portfolio-card,
  .oda-portfolio-card :is(h2, h3, p, span),
  .oda-team-card,
  .oda-team-card :is(h2, h3, p, span),
  .elementor-icon-list-text
) {
  color: #161010 !important;
  opacity: 1 !important;
}
:is(main, .elementor-location-single, .elementor-location-archive) :is(
  .oda-section--dark,
  .oda-section-hero--dark,
  .oda-hero--dark,
  #oda-section-hero-home,
  #oda-section-approach-home
) :is(
  .elementor-heading-title,
  .elementor-widget-text-editor,
  .elementor-widget-text-editor p,
  .oda-eyebrow,
  .oda-body-copy,
  .oda-body-large,
  .oda-lead,
  .oda-display-md,
  .oda-display-xl,
  .oda-statement-copy,
  .oda-statement-quote,
  .oda-capability-card,
  .oda-capability-card h3,
  .oda-capability-card p,
  .oda-service-row,
  .oda-service-row :is(h2, h3, p, span),
  .oda-detail-panel,
  .oda-detail-panel :is(h2, h3, p, li),
  .elementor-icon-list-text
) {
  color: #FFFFFF !important;
  opacity: 1 !important;
}
:is(main, .elementor-location-single, .elementor-location-archive) :is(
  .oda-section--blue,
  .oda-hero--blue,
  .oda-section-cta,
  .oda-section-cta-home
) :is(
  .elementor-heading-title,
  .elementor-widget-text-editor,
  .elementor-widget-text-editor p,
  .oda-eyebrow,
  .oda-body-copy,
  .oda-body-large,
  .oda-lead,
  .oda-display-md,
  .oda-display-xl,
  .oda-statement-copy,
  .oda-statement-quote,
  .oda-capability-card,
  .oda-capability-card h3,
  .oda-capability-card p,
  .oda-service-row,
  .oda-service-row :is(h2, h3, p, span),
  .elementor-icon-list-text
) {
  color: #161010 !important;
  opacity: 1 !important;
}

/* Elementor wraps a Button widget in a coloured outer container. Reset that
 * wrapper and style only the editable button control. */
.oda-button.elementor-widget-button,
.oda-header-cta.elementor-widget-button {
  width: auto !important;
  max-width: 100% !important;
  min-height: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}
.oda-button.elementor-widget-button .elementor-button,
.oda-button:not(.elementor-widget-button) {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  min-height: 48px !important;
  max-width: 100% !important;
  padding: .85rem 1.15rem !important;
  box-sizing: border-box !important;
  border: 1px solid #161010 !important;
  border-radius: 0 !important;
  background: #161010 !important;
  color: #FFFFFF !important;
  opacity: 1 !important;
  text-decoration: none !important;
  box-shadow: none !important;
}
.oda-button--blue.elementor-widget-button .elementor-button,
.oda-button--blue:not(.elementor-widget-button) {
  background: #2396F4 !important;
  border-color: #2396F4 !important;
  color: #161010 !important;
}
.oda-button--outline.elementor-widget-button .elementor-button,
.oda-button--outline:not(.elementor-widget-button) {
  background: transparent !important;
  border-color: #161010 !important;
  color: #161010 !important;
}
.oda-section--dark .oda-button--outline.elementor-widget-button .elementor-button,
.oda-section--dark .oda-button--outline:not(.elementor-widget-button),
.oda-section-hero--dark .oda-button--outline.elementor-widget-button .elementor-button,
.oda-section-hero--dark .oda-button--outline:not(.elementor-widget-button) {
  border-color: #FFFFFF !important;
  color: #FFFFFF !important;
}
.oda-button :is(.elementor-button-text, .elementor-button-icon, span) { opacity: 1 !important; }

/* Final contrast guard for imported Elementor revisions. */
body main#main #oda-section-capabilities-home :is(
  .elementor-heading-title,
  .elementor-widget-text-editor,
  .elementor-widget-text-editor p,
  .oda-eyebrow,
  .oda-body-copy,
  .oda-display-md,
  .oda-capability-card,
  .oda-capability-card h3,
  .oda-capability-card p,
  .elementor-icon-list-text
) {
  color: #161010 !important;
  opacity: 1 !important;
}
body main#main #oda-section-capabilities-home .oda-eyebrow::before { background: #161010 !important; }
body main#main :is(.oda-page-home, .oda-page-about, .oda-page-services, .oda-page-selected-work, .oda-page-team, .oda-page-contact, .oda-single-service-detail) .oda-hero-media .oda-media-tag,
body main#main :is(.oda-page-home, .oda-page-about, .oda-page-services, .oda-page-selected-work, .oda-page-team, .oda-page-contact, .oda-single-service-detail) .oda-hero-media .oda-media-tag p {
  color: #161010 !important;
  opacity: 1 !important;
}
body main#main .oda-contact-form :is(.elementor-field-label, label, input, textarea, select, option) {
  color: #161010 !important;
  opacity: 1 !important;
}
body main#main .oda-contact-form :is(input, textarea, select)::placeholder {
  color: #161010 !important;
  opacity: .72 !important;
}
body main#main .oda-contact-form .elementor-button,
body main#main .oda-contact-form .elementor-button :is(.elementor-button-content-wrapper, .elementor-button-text, .elementor-button-icon) {
  color: #161010 !important;
}
body main#main .oda-contact-form .elementor-button:hover,
body main#main .oda-contact-form .elementor-button:hover :is(.elementor-button-content-wrapper, .elementor-button-text, .elementor-button-icon) {
  color: #FFFFFF !important;
}

@media (max-width: 980px) {
  .oda-site-footer > .oda-footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (max-width: 700px) {
  .oda-site-footer > .oda-footer-grid { grid-template-columns: 1fr !important; }
  .oda-site-footer > .oda-footer-grid,
  .oda-site-footer > .oda-footer-bottom {
    width: calc(100% - 2.5rem) !important;
  }
  .oda-site-header > .oda-header-cta { min-width: 0 !important; white-space: normal !important; }
}
