/* ===== Стройка ИД — тема поверх Bootstrap (light/dark через data-bs-theme) ===== */

/* ---------- шрифт: Golos Text (вариативный, 400–700) ---------- */
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/static/fonts/golos-cyr-ext.woff2) format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/static/fonts/golos-cyr.woff2) format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/static/fonts/golos-lat-ext.woff2) format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/static/fonts/golos-lat.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---------- дизайн-токены ---------- */
:root,
[data-bs-theme="light"] {
  --sd-bg: #f2f5f8;
  --sd-surface: #ffffff;
  --sd-surface-2: #fafbfd;
  --sd-border: #e3e8ee;
  --sd-border-soft: #eef1f5;
  --sd-text: #24313f;
  --sd-text-muted: #7a8794;
  --sd-accent: #2f80ed;
  --sd-hover: #f0f5fc;
  --sd-shadow: rgba(20, 35, 60, 0.06);
  --sd-shadow-lg: rgba(20, 35, 60, 0.12);
  --bs-primary: var(--sd-accent);
  --bs-link-color: var(--sd-accent);
}

[data-bs-theme="dark"] {
  --sd-bg: #0f151c;
  --sd-surface: #1a222c;
  --sd-surface-2: #212b37;
  --sd-border: #2e3947;
  --sd-border-soft: #27313d;
  --sd-text: #d7dee7;
  --sd-text-muted: #8b99a9;
  --sd-accent: #4d94f0;
  --sd-hover: #223046;
  --sd-shadow: rgba(0, 0, 0, 0.35);
  --sd-shadow-lg: rgba(0, 0, 0, 0.5);
  --bs-primary: var(--sd-accent);
  --bs-link-color: var(--sd-accent);
  --bs-link-hover-color: #74abf4;
  --bs-body-bg: var(--sd-bg);
  --bs-body-color: var(--sd-text);
  --bs-secondary-color: var(--sd-text-muted);
  --bs-border-color: var(--sd-border);
  --bs-tertiary-bg: var(--sd-surface-2);
  --bs-secondary-bg: var(--sd-surface-2);
}

body {
  background: var(--sd-bg);
  color: var(--sd-text);
  font-family: "Golos Text", -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: 0.95rem;
}

h1, h2, h3, .h3, .h5, .h6 { font-weight: 650; letter-spacing: -0.015em; }
.display-6 { font-weight: 700; }

/* ---------- верхнее меню ---------- */
.app-navbar {
  background: var(--sd-surface);
  border-bottom: 1px solid var(--sd-border);
  box-shadow: 0 1px 3px var(--sd-shadow);
  padding-top: 0.45rem;
  padding-bottom: 0.45rem;
}
.app-navbar .navbar-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  font-weight: 700;
  font-size: 1.02rem;
  letter-spacing: -0.01em;
  color: var(--sd-text);
}
.app-navbar .navbar-brand svg { color: var(--sd-accent); }
.app-navbar .nav-link {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  border-radius: 0.6rem;
  padding: 0.45rem 0.85rem;
  font-weight: 500;
  color: var(--sd-text);
  transition: background 0.12s ease, color 0.12s ease;
}
.app-navbar .nav-link svg { opacity: 0.75; }
.app-navbar .nav-link:hover { background: var(--sd-hover); }
.app-navbar .nav-link.active {
  background: color-mix(in srgb, var(--sd-accent) 13%, transparent);
  color: var(--sd-accent);
}
.app-navbar .nav-link.active svg { opacity: 1; }
.app-navbar .dropdown-menu {
  border-color: var(--sd-border);
  box-shadow: 0 10px 30px var(--sd-shadow-lg);
  border-radius: 0.7rem;
}
.app-navbar .dropdown-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  border-radius: 0.45rem;
  margin: 0 0.25rem;
  width: auto;
}
.app-navbar .navbar-toggler { border-color: var(--sd-border); }

/* круглые кнопки справа: уведомления, тема */
.nav-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.35rem;
  height: 2.35rem;
  padding: 0;
  border: 1px solid var(--sd-border);
  border-radius: 0.65rem;
  background: transparent;
  color: var(--sd-text-muted);
  transition: background 0.12s ease, color 0.12s ease;
}
.nav-icon-btn:hover { background: var(--sd-hover); color: var(--sd-text); }
.theme-ico-dark { display: none; }
[data-bs-theme="dark"] .theme-ico-light { display: none; }
[data-bs-theme="dark"] .theme-ico-dark { display: inline-flex; }

/* ---------- карточки ---------- */
.card {
  border: 1px solid var(--sd-border);
  border-radius: 0.75rem;
  box-shadow: 0 1px 3px var(--sd-shadow);
  background-color: var(--sd-surface);
}
.card:hover { box-shadow: 0 2px 8px var(--sd-shadow); }
a.card { transition: transform 0.1s ease, box-shadow 0.12s ease; }
a.card:hover { transform: translateY(-2px); box-shadow: 0 6px 16px var(--sd-shadow-lg); }
.card { border-top: 3px solid transparent; }
a.card { border-top-color: color-mix(in srgb, var(--sd-accent) 20%, var(--sd-surface)); }
a.card:hover { border-top-color: var(--sd-accent); }

/* сетка карточек на списках */
.entity-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  gap: 1rem;
}

/* ---------- таблицы ---------- */
.table {
  --bs-table-bg: var(--sd-surface);
  --bs-table-hover-bg: var(--sd-hover);
  --bs-table-color: var(--sd-text);
  --bs-table-hover-color: var(--sd-text);
  border-collapse: separate;
  border-spacing: 0;
  border: 1px solid var(--sd-border);
  border-radius: 0.7rem;
  overflow: hidden;
  box-shadow: 0 1px 3px var(--sd-shadow);
}
.table > :not(caption) > * > * { padding: 0.65rem 0.85rem; }
.table thead th {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--sd-text-muted);
  font-weight: 600;
  background: var(--sd-surface-2);
  border-bottom: 2px solid var(--sd-border);
  white-space: nowrap;
}
.table tbody { border-top: none !important; }
.table > :not(caption) > * > * { border-bottom-width: 1px; border-color: var(--sd-border-soft); }
.table tr:last-child > * { border-bottom: none; }
/* таблица внутри карточки — без двойной рамки */
.card .table { border: none; box-shadow: none; border-radius: 0; }
.table-responsive { border-radius: 0.7rem; }

/* ---------- кнопки и формы ---------- */
.btn { border-radius: 0.6rem; font-weight: 500; }
.btn-primary { --bs-btn-bg: var(--sd-accent); --bs-btn-border-color: var(--sd-accent); }
.btn-primary {
  background: linear-gradient(180deg, #3b8bf5 0%, #2670d9 100%);
  border: none;
  box-shadow: 0 2px 6px rgba(47, 128, 237, 0.35);
}
.btn-primary:hover { background: linear-gradient(180deg, #2f80ed 0%, #1f63c6 100%); }
.btn-success {
  background: linear-gradient(180deg, #34b46a 0%, #249653 100%);
  border: none;
}
.form-control, .form-select { border-radius: 0.6rem; border-color: var(--sd-border); }
.form-control, .form-select { background-color: var(--sd-surface); color: var(--sd-text); }
.form-control:focus, .form-select:focus {
  background-color: var(--sd-surface);
  color: var(--sd-text);
  border-color: var(--sd-accent);
  box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--sd-accent) 18%, transparent);
}
.form-control::placeholder { color: var(--sd-text-muted); opacity: 0.8; }

/* переключатель вида список/карточки */
.view-toggle .btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

/* ---------- бейджи, вкладки, крошки ---------- */
.badge { font-weight: 600; border-radius: 0.45rem; padding: 0.35em 0.6em; }
.nav-tabs { border-bottom-color: var(--sd-border); }
.nav-tabs .nav-link {
  color: var(--sd-text-muted);
  border: none;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  padding: 0.55rem 0.9rem;
}
.nav-tabs .nav-link:hover { border-bottom-color: color-mix(in srgb, var(--sd-accent) 35%, transparent); }
.nav-tabs .nav-link.active {
  color: var(--sd-accent);
  background: transparent;
  border-bottom: 2px solid var(--sd-accent);
  font-weight: 600;
}
.breadcrumb { font-size: 0.85rem; margin-bottom: 1rem; }

/* ---------- список-группы ---------- */
.list-group-item { border-color: var(--sd-border); background-color: var(--sd-surface); color: var(--sd-text); }
.list-group-item-action:hover { background: var(--sd-hover); color: var(--sd-text); }

/* ---------- страницы входа: «ночной чертёж» ---------- */
.auth-card { width: 100%; max-width: 420px; }
.auth-page {
  background:
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 44px),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 44px),
    linear-gradient(160deg, #1b2a3d 0%, #2f4a68 100%) !important;
}
.auth-page .card { box-shadow: 0 18px 50px rgba(10, 20, 35, 0.4); border: none; }
[data-bs-theme="dark"] .auth-page .card { background-color: #1e2833; }

/* ---------- статусные бейджи и алерты ---------- */
.badge.text-bg-success { background: #d9f3e5 !important; color: #1a7a45 !important; }
.badge.text-bg-info { background: #dcecfd !important; color: #1c5fb3 !important; }
.badge.text-bg-primary { background: #dce7fb !important; color: #2059b3 !important; }
.badge.text-bg-secondary { background: #e8ecf1 !important; color: #5a6675 !important; }
.badge.text-bg-danger { background: #fde3e3 !important; color: #c02929 !important; }
.badge.text-bg-warning { background: #fdf0d3 !important; color: #93670a !important; }
.badge.text-bg-dark { background: #2b3a4c !important; color: #fff !important; }
[data-bs-theme="dark"] .badge.text-bg-success { background: #173a28 !important; color: #5ad393 !important; }
[data-bs-theme="dark"] .badge.text-bg-info { background: #16324e !important; color: #6fb1f5 !important; }
[data-bs-theme="dark"] .badge.text-bg-primary { background: #1a3454 !important; color: #7fb3f7 !important; }
[data-bs-theme="dark"] .badge.text-bg-secondary { background: #2a3542 !important; color: #a3b1c0 !important; }
[data-bs-theme="dark"] .badge.text-bg-danger { background: #43201f !important; color: #f08a8a !important; }
[data-bs-theme="dark"] .badge.text-bg-warning { background: #3e3116 !important; color: #e8bd5c !important; }
[data-bs-theme="dark"] .badge.text-bg-dark { background: #3a4a5e !important; color: #e3eaf2 !important; }

.alert { border-radius: 0.7rem; border: none; box-shadow: 0 1px 3px var(--sd-shadow); }
.alert-danger { background: #fdeaea; color: #a32222; }
.alert-success { background: #e2f6ec; color: #1a7a45; }
.alert-warning { background: #fdf4dd; color: #8a6207; }
.alert-info { background: #e3efff; color: #21599f; }
[data-bs-theme="dark"] .alert-danger { background: #43201f; color: #f0a1a1; }
[data-bs-theme="dark"] .alert-success { background: #173a28; color: #7fdcab; }
[data-bs-theme="dark"] .alert-warning { background: #3e3116; color: #ecc97d; }
[data-bs-theme="dark"] .alert-info { background: #16324e; color: #93c2f7; }

/* ---------- заголовок с чертёжной линейкой ---------- */
h1.h3 {
  position: relative;
  padding-left: 0.9rem;
}
h1.h3::before {
  content: "";
  position: absolute;
  left: 0; top: 0.2em; bottom: 0.2em;
  width: 4px;
  border-radius: 4px;
  background: linear-gradient(180deg, var(--sd-accent), color-mix(in srgb, var(--sd-accent) 45%, transparent));
}

/* ---------- комбобокс (поиск внутри выпадающего списка) ---------- */
.combo-menu {
  display: none;
  position: absolute;
  z-index: 1050;
  left: 0; right: 0;
  top: 100%;
  max-height: 280px;
  overflow-y: auto;
  background: var(--sd-surface);
  border: 1px solid var(--sd-border);
  border-radius: 0.55rem;
  margin-top: 2px;
}
.combo-item {
  padding: 0.45rem 0.8rem;
  cursor: pointer;
  font-size: 0.9rem;
}
.combo-item:hover, .combo-item.active { background: var(--sd-hover); }

/* комбобокс внутри .input-group: ведёт себя как обычный контрол группы */
.input-group > .combo { flex: 1 1 auto; width: 1%; min-width: 0; }
.input-group > .combo:not(:first-child) .form-control {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.input-group > .combo:not(:last-child) .form-control {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}

/* ---------- доступность и адаптив ---------- */
a:focus-visible, button:focus-visible, .btn:focus-visible, .nav-link:focus-visible {
  outline: 2px solid var(--sd-accent);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition: none !important;
    animation: none !important;
  }
}
main.container-fluid { max-width: 1400px; padding: 1.75rem 2rem !important; }
@media (max-width: 768px) {
  main.container-fluid { padding: 1rem 0.9rem !important; }
}

/* ---------- мелочи ---------- */
details > summary { cursor: pointer; }
