/* Overrides and targeted fixes for contrast, navigation, and layout */
:root {
  --text-dim: #a6a6a6;
  --signal: #ff7247;
  --signal-hover: #ff855f;
}

/* Fix [nav_missing] and [overlay_blocks_content] */
@media (max-width: 1023px) {
  header.site-header#sidebar-nav {
    display: none !important;
  }
  header.site-header#sidebar-nav.is-open {
    display: flex !important;
  }
  .mobile-bar {
    display: flex !important;
  }
  .nav-toggle {
    display: inline-flex !important;
  }
}

@media (min-width: 1024px) {
  header.site-header#sidebar-nav {
    display: flex !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    width: var(--sidebar-w) !important;
    transform: none !important;
    visibility: visible !important;
    opacity: 1 !important;
    z-index: 100 !important;
  }
  .mobile-bar {
    display: none !important;
  }
}

/* Contrast fixes: rgb(110,110,110) on dark backdrops */
.footer-legal-link,
.sidebar-contact-label,
.contact-meta-label,
.hero-meta-label,
.spec-line-label,
.estimator-output-label,
.doc-meta-strip,
.margin-note-label,
.held-meta-item,
span.hero-meta-label,
span.spec-line-label,
span.sidebar-contact-label,
span.contact-meta-label {
  color: #b5b5b5 !important;
}

.held-meta-item span {
  color: #b5b5b5 !important;
}

.held-meta-item strong {
  color: #ffffff !important;
}

/* Primary buttons text contrast: white on signal -> dark red-orange or dark text on bright orange */
.btn-primary,
button.btn-primary,
a.btn.btn-primary,
#consent-accept,
#form-submit-btn,
.chat-send-btn,
.callout-pin {
  background-color: #c93400 !important;
  border-color: #c93400 !important;
  color: #ffffff !important;
}

.btn-primary:hover,
#consent-accept:hover,
#form-submit-btn:hover {
  background-color: #b02e00 !important;
  border-color: #b02e00 !important;
}

/* Secondary button styling and contrast */
.btn-secondary,
a.btn.btn-secondary,
button.btn-secondary {
  background-color: #1f1f1f !important;
  border: 1px solid #ffffff !important;
  color: #ffffff !important;
}

.btn-secondary:hover,
a.btn.btn-secondary:hover,
button.btn-secondary:hover {
  background-color: #2b2b2b !important;
  border-color: #ff7247 !important;
  color: #ffffff !important;
}

/* Cramped controls & squeezed copy */
.footer-links li a.footer-link {
  white-space: normal !important;
  word-break: normal !important;
  display: inline-block !important;
}

.footer-grid {
  grid-template-columns: minmax(0, 1.8fr) minmax(0, 1.1fr) minmax(0, 1.1fr) !important;
}

@media (max-width: 1024px) {
  .footer-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
  }
  .footer-brand {
    grid-column: 1 / -1 !important;
  }
}

@media (max-width: 640px) {
  .footer-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

/* Squeezed text in agency-coverage-grid and held-grid at 1024px */
@media (max-width: 1100px) {
  .held-grid {
    grid-template-columns: 1fr !important;
  }
  .held-aside {
    position: static !important;
  }
  .agency-coverage-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 700px) {
  .agency-coverage-grid {
    grid-template-columns: 1fr !important;
  }
}

/* Estimator breakdown row squeezed text */
.estimator-breakdown .breakdown-row {
  display: flex !important;
  flex-direction: row !important;
  justify-content: space-between !important;
  align-items: baseline !important;
  gap: 1rem !important;
  width: 100% !important;
}

.estimator-breakdown .breakdown-row span:first-child {
  flex-shrink: 0 !important;
  white-space: nowrap !important;
}

.estimator-breakdown .breakdown-row span:last-child {
  text-align: right !important;
  word-break: normal !important;
  overflow-wrap: break-word !important;
}

.estimator-breakdown .breakdown-row.is-total {
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 0.35rem !important;
}

.estimator-breakdown .breakdown-row.is-total span:first-child {
  font-weight: 600 !important;
  color: var(--text-muted, #a6a6a6) !important;
  font-size: 0.8rem !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
}

.estimator-breakdown .breakdown-row.is-total span:last-child,
.estimator-breakdown .breakdown-row.is-total [data-tool-note] {
  text-align: left !important;
  width: 100% !important;
  min-width: 0 !important;
  word-break: normal !important;
  font-size: 0.95rem !important;
  line-height: 1.4 !important;
}

@media (max-width: 1200px) {
  .estimator-container {
    grid-template-columns: 1fr !important;
  }
}

/* Apply scope button */
[data-tool-apply] {
  white-space: normal !important;
  width: 100% !important;
}

/* Hero meta panel on small screens */
.hero-meta-panel {
  min-width: 0 !important;
}

.hero-meta-row {
  display: flex !important;
  flex-direction: row !important;
  justify-content: space-between !important;
  align-items: baseline !important;
  gap: 0.75rem !important;
}

.hero-meta-label {
  flex-shrink: 0 !important;
  white-space: nowrap !important;
}

.hero-meta-value {
  text-align: right !important;
}

/* Table squeezed text */
.data-table th, .data-table td {
  min-width: 160px !important;
  word-break: normal !important;
  white-space: normal !important;
}

/* Plate callout card text overlap fix */
.plate-callout {
  z-index: 10 !important;
}

.plate-callout .callout-card {
  width: 200px !important;
  max-width: 80vw !important;
  display: none !important;
}

.plate-callout:hover .callout-card,
.plate-callout:focus-within .callout-card {
  display: block !important;
}

@media (max-width: 768px) {
  .plate-overlay {
    display: none !important;
  }
}

/* Signal & Tag Contrast Boost */
span.agency-acronym,
span.warranty-badge,
span.mono-tag,
span.service-entry-rate,
div.clause-num,
span.rail-card-stage,
span.hero-meta-value.is-signal,
span.statutory-fee-title {
  color: #ff7247 !important;
}

/* Specific fix for hero-meta-panel contrast & squeezed values at narrow widths */
.hero-meta-panel {
  background-color: #141414 !important;
  background: #141414 !important;
  border: 1px solid rgba(255, 255, 255, 0.15) !important;
  position: relative !important;
  z-index: 5 !important;
  padding: 1.5rem !important;
}

@media (max-width: 480px) {
  .hero-meta-panel {
    background-color: #141414 !important;
    background: #141414 !important;
    padding: 1.25rem !important;
    border-radius: 4px !important;
    border: 1px solid rgba(255, 255, 255, 0.15) !important;
  }
  .hero-meta-row {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0.25rem !important;
  }
  .hero-meta-value {
    text-align: left !important;
  }
}

/* Form group label flex layout fix */
.form-label {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 0.25rem !important;
  width: 100% !important;
}

.form-label span,
.form-label .form-label-title,
.form-label .form-label-opt {
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
  white-space: normal !important;
  word-break: normal !important;
}

.form-label .form-label-opt {
  font-size: 0.75rem !important;
}

/* Contact intake layout grid at 1024px */
@media (max-width: 1100px) {
  .intake-layout {
    grid-template-columns: 1fr !important;
  }
}

/* Estimator container at wide viewports */
.estimator-container {
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.2fr) !important;
}

@media (max-width: 1200px) {
  .estimator-container {
    grid-template-columns: 1fr !important;
  }
}

/* Apply scope button room at 1440px */
.estimator-actions {
  flex-wrap: wrap !important;
}
.estimator-actions .btn,
[data-tool-apply] {
  min-width: 260px !important;
  white-space: normal !important;
}

/* Cookies table layout in clause grid */
#legal-consent-mode .clause-text,
#legal-cookie-table .clause-text,
.data-table-wrap {
  min-width: 0 !important;
  width: 100% !important;
  overflow-x: auto !important;
}
.clauses-layout .data-table {
  width: 100% !important;
  min-width: 780px !important;
}
