/*
  IDCAD shared UI layer.
  Loaded after page-specific layout CSS. It controls only website chrome and
  HTML controls; technical SVG, maps and drawing geometry are out of scope.
*/

body {
  background: var(--color-surface-page);
  color: var(--color-text-primary);
}

.topbar,
.site-footer,
.parking-global-topbar { background: var(--color-surface-footer); }

h1,
h2,
h3,
.section-title { color: var(--color-text-primary) !important; }

.section-accent-title { color: var(--color-action-primary) !important; }

.section-accent-title::before,
.eyebrow::before { background: var(--color-action-primary); }

.hero-lead,
.feature-section-heading p,
.services-hero-heading p,
.vehicle-hero-heading p,
.geomapping-hero-heading p,
.placement-hero-heading p,
.download-meta,
.sidebar-intro,
.field-label { color: var(--color-text-secondary); }

.footer-copy,
.footer-materials-notice,
.result-placeholder,
.type-meta { color: var(--color-text-muted); }

.main-nav a::after { background: var(--color-action-primary); }
.main-nav a:hover,
.main-nav a[aria-current="page"] { color: var(--color-text-primary); }

.card,
.module-card,
.service-card,
.feature-frame,
.result-card,
.legal-document,
.developer-mail-card,
.developer-social-row,
.download-primary-panel,
.license-card,
.sheet,
.project-head,
dialog { background: var(--color-surface-panel); }

main a:not(.button):not(.button-primary):not(.button-secondary):not(.module-card):not(.service-card):not(.contact-card):not(.developer-social-link),
.legal-document a,
.footer-materials-notice a {
  color: var(--color-link-default);
  text-decoration: underline;
  text-decoration-color: currentColor;
  text-underline-offset: 3px;
}

main a:not(.button):not(.button-primary):not(.button-secondary):not(.module-card):not(.service-card):not(.contact-card):not(.developer-social-link):hover,
.legal-document a:hover,
.footer-materials-notice a:hover { color: var(--color-link-hover); }

button.link,
.link {
  border-color: transparent;
  background: transparent;
  color: var(--color-link-default) !important;
  text-decoration: underline;
  text-underline-offset: 3px;
}

button.link:hover:not(:disabled),
.link:hover:not(:disabled) {
  border-color: transparent;
  background: transparent;
  color: var(--color-link-hover) !important;
}

.main-nav a,
.brand,
.button,
.module-card,
.service-card,
.contact-card,
.developer-social-link,
.footer-legal-links a { text-decoration: none; }

.button-primary,
.icon-button.button-primary,
.command-icon-button.button-primary,
button.primary.button-primary,
.play-button,
.map-video-play,
.carousel-arrow,
[data-carousel-prev],
[data-carousel-next],
[data-diagram-prev],
[data-diagram-next] {
  border-color: var(--color-button-primary);
  border-radius: var(--radius-button);
  background: var(--color-button-primary);
  color: var(--color-action-on-primary) !important;
}

.button-primary:hover:not(:disabled),
.icon-button.button-primary:hover:not(:disabled),
.command-icon-button.button-primary:hover:not(:disabled),
button.primary.button-primary:hover:not(:disabled),
.play-button:hover:not(:disabled),
.map-video-play:hover,
.carousel-arrow:hover:not(:disabled),
[data-carousel-prev]:hover:not(:disabled),
[data-carousel-next]:hover:not(:disabled),
[data-diagram-prev]:hover:not(:disabled),
[data-diagram-next]:hover:not(:disabled) {
  border-color: var(--color-button-hover);
  background: var(--color-button-hover);
  color: var(--color-action-on-primary) !important;
}

.button-secondary,
.icon-button:not(.button-primary),
.menu-button,
.parking-header-icon-button,
.parking-menu-button,
.map-video-dialog-head button,
button.icon:not(.button-primary),
button:not(.button-primary):not(.play-button):not(.link),
.carousel-toggle,
.modal-close {
  border-color: var(--color-border-default);
  border-radius: var(--radius-button);
  background: var(--color-surface-panel);
  color: var(--color-icon-default);
}

.button-secondary:hover:not(:disabled),
.icon-button:not(.button-primary):hover:not(:disabled),
.menu-button:hover:not(:disabled),
.parking-header-icon-button:hover:not(:disabled),
.parking-menu-button:hover:not(:disabled),
.map-video-dialog-head button:hover:not(:disabled),
button.icon:not(.button-primary):hover:not(:disabled),
button:not(.button-primary):not(.play-button):not(.link):hover:not(:disabled),
.carousel-toggle:hover:not(:disabled),
.modal-close:hover:not(:disabled) {
  border-color: var(--color-action-primary);
  background: var(--color-selection);
  color: var(--color-icon-active);
}

body .button.button-secondary.download-action {
  border-color: var(--color-action-primary);
  background: transparent;
  color: var(--color-text-primary);
}

body .button.button-secondary.download-action:hover:not(:disabled) {
  border-color: var(--color-action-hover);
  background: var(--color-selection);
  color: var(--color-text-primary);
}

button:disabled,
.button:disabled { cursor: default; opacity: .55; }

input:not([type="checkbox"]):not([type="radio"]),
select,
textarea {
  border-color: var(--color-border-interactive) !important;
  border-radius: var(--radius-control) !important;
  background: var(--color-surface-control);
  color: var(--color-text-primary);
}

input[type="checkbox"],
input[type="radio"] { accent-color: var(--color-action-primary); }

input::placeholder,
textarea::placeholder { color: var(--color-text-secondary); }

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--color-focus) !important;
  outline-offset: 3px !important;
  box-shadow: none !important;
}

.nspd-filter-tree input:focus-visible + .filter-check,
.coordinate-results input:focus-visible + .coordinate-radio {
  outline: 2px solid var(--color-focus) !important;
  outline-offset: 3px !important;
  box-shadow: none !important;
}

.suggestion-message.is-error,
.map-status.is-error,
.map-status.is-success,
.result-note.is-warning,
.efficiency-status.is-error,
.state-ready,
.state-check,
.no-js {
  position: relative;
  padding-left: 16px;
  border-color: var(--color-border-default);
  color: var(--color-text-secondary);
}

.suggestion-message.is-error::before,
.map-status.is-error::before,
.map-status.is-success::before,
.result-note.is-warning::before,
.efficiency-status.is-error::before,
.state-ready::before,
.state-check::before,
.no-js::before {
  position: absolute;
  left: 3px;
  color: var(--color-text-primary);
  font-weight: 800;
}

.suggestion-message.is-error::before,
.map-status.is-error::before,
.efficiency-status.is-error::before,
.no-js::before { color: var(--color-feedback-danger); content: "×"; }

.map-status.is-success::before,
.state-ready::before { color: var(--color-feedback-success); content: "✓"; }

.result-note.is-warning::before,
.state-check::before { color: var(--color-feedback-warning); content: "!"; }

.result-card,
.feature-frame,
.services-grid,
.developer-mail-card,
.developer-social-row,
.download-primary-panel,
.map-video-dialog,
dialog { box-shadow: none; }

.picker,
.toast,
.modal,
.map-video-dialog[open],
dialog[open] { box-shadow: var(--shadow-overlay); }

/* Единый футер сайта. Локальные CSS отвечают за страницы, этот слой — за общий компонент. */
.site-shell {
  --site-footer-height: 96px;
  min-height: 100vh;
  padding-bottom: calc(var(--site-footer-height) + 1px) !important;
}

.site-footer {
  position: fixed !important;
  z-index: 49;
  right: 0;
  bottom: 0;
  left: 0;
  height: var(--site-footer-height) !important;
  margin: 0 !important;
  padding: 0 !important;
  border-top: 1px solid var(--color-border-default);
  background: var(--color-surface-footer);
}

.site-footer .footer-inner {
  display: grid !important;
  min-height: 100%;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
  gap: 4px 28px;
  align-items: center;
  padding-block: 8px;
}

.site-footer .footer-copy {
  grid-column: 1;
  grid-row: 1;
  margin: 0;
  color: var(--color-text-muted);
  font-size: .72rem;
  line-height: 1.3;
  white-space: nowrap;
}

.site-footer .footer-legal-links {
  display: grid;
  width: min(560px, 46vw);
  grid-column: 2;
  grid-row: 1 / span 2;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  align-self: center;
}

.site-footer .footer-legal-links a {
  display: grid;
  min-height: 28px;
  padding: 5px 8px;
  place-items: center;
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-button);
  background: var(--color-surface-panel);
  color: var(--color-text-secondary);
  font-size: .62rem;
  line-height: 1.15;
  text-align: center;
  text-decoration: none;
}

.site-footer .footer-legal-links a:hover {
  border-color: var(--color-action-primary);
  background: var(--color-selection);
  color: var(--color-text-primary);
}

.site-footer .footer-legal-links a[aria-current="page"] {
  border-color: var(--color-action-primary);
  background: var(--color-selection);
  color: var(--color-text-primary);
}

.site-footer .footer-materials-notice {
  grid-column: 1;
  grid-row: 2;
  max-width: 980px;
  margin: 0;
  color: var(--color-text-muted);
  font-size: .66rem;
  line-height: 1.35;
}

.site-footer .footer-materials-notice a {
  color: var(--color-link-default);
  text-decoration: underline;
  text-underline-offset: 2px;
}

@media (max-width: 1100px) {
  .site-shell { --site-footer-height: 132px; }

  .site-footer .footer-inner {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto auto;
    gap: 5px;
    justify-items: center;
  }

  .site-footer .footer-copy,
  .site-footer .footer-legal-links,
  .site-footer .footer-materials-notice {
    grid-column: 1;
    max-width: none;
    text-align: center;
  }

  .site-footer .footer-copy { grid-row: 1; white-space: normal; }
  .site-footer .footer-legal-links { width: min(100%, 620px); grid-row: 2; }
  .site-footer .footer-materials-notice { grid-row: 3; }
}

@media (max-width: 760px) {
  .site-shell { --site-footer-height: 156px; }

  .site-footer .footer-inner { padding-block: 7px; }
  .site-footer .footer-legal-links { width: 100%; gap: 4px; }
  .site-footer .footer-legal-links a { padding: 3px 5px; font-size: .56rem; }
  .site-footer .footer-materials-notice { font-size: .58rem; line-height: 1.25; }
}

.root-development-page.site-shell main,
.placeholder-page.site-shell main {
  min-height: calc(100vh - var(--site-footer-height) - 1px);
}
