/* Оформление - как у сайта НПО ПАС (vngtest.npo-pas.com, просьба Alejandro 2026-10-05): серая страница и такая же
   шапка без линии, белые карточки со скруглением 10px без рамок, акцент - красный #d70c0c (кнопки, активный пункт),
   темный графит #303635, заголовки и меню - Roboto Condensed прописными, текст - Inter. Палитра и размеры сняты с
   style.min.css сайта. Цвета - переменные --pas-*; ими же пользуется mr.css (окно объекта). Bootstrap перекрашен
   через свои переменные: синего в интерфейсе не остается. */
/* шрифты сайта (те же файлы, что отдает сайт; лицензии - fonts/README.txt): лежат локально, интернет стенду не нужен */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("fonts/Inter-Regular.woff2") format("woff2");
}

@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url("fonts/Inter-Bold.woff2") format("woff2");
}

@font-face {
	font-family: "Roboto Condensed";
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url("fonts/RobotoCondensed-Bold.woff2") format("woff2");
}

:root {
	--pas-red: #d70c0c;
	--pas-red-dark: #b42e26;
	--pas-orange: #f27728;
	--pas-graphite: #303635;
	--pas-ink: #343936;
	--pas-page: #f1f1f1;
	--pas-line: #d8d8d8;
	--pas-line-soft: #e6e6e6;
	--pas-surface: #f6f6f6;
	--pas-hover: #ececec;
	--pas-tint: rgba(52, 57, 54, .1);
	--pas-text: #000;
	--pas-text-2: #4e4e4e;
	--pas-muted: #7c7c7c;
	--pas-faint: #acacac;
	--pas-font: "Inter", Arial, sans-serif;
	--pas-font-head: "Roboto Condensed", "Arial Narrow", Arial, sans-serif;

	--bs-body-font-family: var(--pas-font);
	--bs-body-color: var(--pas-text);
	--bs-body-color-rgb: 0, 0, 0;
	--bs-emphasis-color: #000;
	--bs-secondary-color: var(--pas-muted);
	--bs-tertiary-color: var(--pas-faint);
	--bs-secondary-bg: var(--pas-line-soft);
	--bs-tertiary-bg: var(--pas-surface);
	--bs-border-color: var(--pas-line);
	--bs-border-radius: 6px;
	--bs-border-radius-sm: 6px;
	--bs-border-radius-lg: 10px;
	--bs-primary: var(--pas-red);
	--bs-primary-rgb: 215, 12, 12;
	--bs-danger: var(--pas-red);
	--bs-danger-rgb: 215, 12, 12;
	--bs-link-color: #000;
	--bs-link-color-rgb: 0, 0, 0;
	--bs-link-hover-color: var(--pas-red-dark);
	--bs-link-hover-color-rgb: 180, 46, 38;
	--bs-focus-ring-color: rgba(52, 57, 54, .2);
	--bs-form-invalid-color: var(--pas-red);
	--bs-form-invalid-border-color: var(--pas-red);
}

html, body {
	font-family: var(--pas-font);
	background: var(--pas-page);
}

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
	font-family: var(--pas-font-head);
	font-weight: 700;
	text-transform: uppercase;
}

h1, .h1 {
	font-size: 1.5rem;
	line-height: 1.75rem;
}

/* Кнопки сайта: красная залитая (.btn--red) - основная; с красной рамкой и черным текстом (.btn) - второе действие;
   серая без рамки - нейтральная (отмена). Подписи жирные прописные. */
.btn {
	--bs-btn-font-family: var(--pas-font);
	--bs-btn-font-weight: 700;
	--bs-btn-font-size: .8125rem;
	--bs-btn-line-height: 1.25;
	--bs-btn-padding-x: 1.125rem;
	--bs-btn-padding-y: .625rem;
	--bs-btn-border-radius: 8px;
	--bs-btn-focus-shadow-rgb: 52, 57, 54;
	text-transform: uppercase;
	white-space: nowrap;
}

.btn-sm, .btn-group-sm > .btn {
	--bs-btn-font-size: .75rem;
	--bs-btn-padding-x: .75rem;
	--bs-btn-padding-y: .375rem;
	--bs-btn-border-radius: 6px;
}

.btn-primary, .btn-danger {
	--bs-btn-color: #fff;
	--bs-btn-bg: var(--pas-red);
	--bs-btn-border-color: var(--pas-red);
	--bs-btn-hover-color: #fff;
	--bs-btn-hover-bg: var(--pas-red-dark);
	--bs-btn-hover-border-color: var(--pas-red-dark);
	--bs-btn-active-color: #fff;
	--bs-btn-active-bg: var(--pas-red-dark);
	--bs-btn-active-border-color: var(--pas-red-dark);
	--bs-btn-disabled-color: #fff;
	--bs-btn-disabled-bg: var(--pas-red);
	--bs-btn-disabled-border-color: var(--pas-red);
}

.btn-outline-primary {
	--bs-btn-color: #000;
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--pas-red);
	--bs-btn-hover-color: #fff;
	--bs-btn-hover-bg: var(--pas-red);
	--bs-btn-hover-border-color: var(--pas-red);
	--bs-btn-active-color: #fff;
	--bs-btn-active-bg: var(--pas-red-dark);
	--bs-btn-active-border-color: var(--pas-red-dark);
	--bs-btn-disabled-color: var(--pas-muted);
	--bs-btn-disabled-border-color: var(--pas-line);
}

.btn-outline-secondary {
	--bs-btn-color: #000;
	--bs-btn-bg: var(--pas-tint);
	--bs-btn-border-color: transparent;
	--bs-btn-hover-color: #000;
	--bs-btn-hover-bg: rgba(52, 57, 54, .2);
	--bs-btn-hover-border-color: transparent;
	--bs-btn-active-color: #000;
	--bs-btn-active-bg: rgba(52, 57, 54, .28);
	--bs-btn-active-border-color: transparent;
	--bs-btn-disabled-color: var(--pas-muted);
	--bs-btn-disabled-bg: var(--pas-tint);
	--bs-btn-disabled-border-color: transparent;
}

/* в строках таблиц кнопки серые, как малые кнопки в карточках сайта (красная рамка в каждой строке рябит);
   под курсором - красные */
.ui-table .btn-outline-primary {
	--bs-btn-bg: var(--pas-tint);
	--bs-btn-border-color: transparent;
	--bs-btn-disabled-bg: var(--pas-tint);
	--bs-btn-disabled-border-color: transparent;
}

.ui-table .btn-group > .dropdown-toggle-split {
	box-shadow: inset 1px 0 0 rgba(0, 0, 0, .14);
}

.btn-outline-danger {
	--bs-btn-color: var(--pas-red);
	--bs-btn-border-color: var(--pas-red);
	--bs-btn-hover-color: #fff;
	--bs-btn-hover-bg: var(--pas-red);
	--bs-btn-hover-border-color: var(--pas-red);
	--bs-btn-active-color: #fff;
	--bs-btn-active-bg: var(--pas-red-dark);
	--bs-btn-active-border-color: var(--pas-red-dark);
	--bs-btn-disabled-color: var(--pas-muted);
	--bs-btn-disabled-border-color: var(--pas-line);
}

.btn-link {
	--bs-btn-color: #000;
	--bs-btn-hover-color: var(--pas-red-dark);
	--bs-btn-active-color: var(--pas-red-dark);
	text-transform: none;
}

/* Поля сайта (.custom-input): серые без рамки на белой карточке, скругление 6px; рамка появляется в фокусе.
   На серой странице (поиск в строке заголовка) поле белое. */
.form-control, .form-select {
	border-color: transparent;
	background-color: var(--pas-page);
	color: #000;
}

.form-control:focus, .form-select:focus {
	border-color: rgba(52, 57, 54, .45);
	background-color: var(--pas-page);
	box-shadow: none;
}

.form-control::placeholder {
	color: rgba(0, 0, 0, .5);
}

.form-control:disabled, .form-select:disabled {
	background-color: #e4e4e4;
	color: var(--pas-text-2);
}

.form-control.is-invalid, .form-select.is-invalid, .form-control.invalid, .form-select.invalid {
	border-color: var(--pas-red);
}

.page-head .form-control, .page-head .form-select {
	background-color: #fff;
}

.form-label {
	font-size: .875rem;
}

.input-group-text {
	border-color: transparent;
	background-color: var(--pas-line-soft);
}

.form-check-input {
	border-color: #c5c5c5;
}

.form-check-input:checked {
	background-color: var(--pas-red);
	border-color: var(--pas-red);
}

.form-check-input:focus {
	border-color: rgba(52, 57, 54, .45);
	box-shadow: 0 0 0 .2rem rgba(52, 57, 54, .15);
}

/* меню: белое со скруглением, пункт под курсором серый, текущий - графитовый */
.dropdown-menu {
	--bs-dropdown-border-color: var(--pas-line);
	--bs-dropdown-border-radius: 8px;
	--bs-dropdown-link-color: #000;
	--bs-dropdown-link-hover-color: #000;
	--bs-dropdown-link-hover-bg: var(--pas-hover);
	--bs-dropdown-link-active-color: #fff;
	--bs-dropdown-link-active-bg: var(--pas-graphite);
	--bs-dropdown-divider-bg: var(--pas-line-soft);
	--bs-dropdown-font-size: .875rem;
	box-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .12);
}

.card {
	--bs-card-border-width: 0;
	--bs-card-border-radius: 10px;
	--bs-card-inner-border-radius: 10px;
	--bs-card-cap-bg: transparent;
	box-shadow: none !important;
}

.alert {
	--bs-alert-border-radius: 8px;
}

.progress {
	--bs-progress-bar-bg: var(--pas-red);
	--bs-progress-bg: var(--pas-line-soft);
}

.nav-pills {
	--bs-nav-pills-link-active-bg: var(--pas-graphite);
	--bs-nav-pills-link-active-color: #fff;
	--bs-nav-pills-border-radius: 6px;
}

.nav-tabs {
	--bs-nav-tabs-link-active-color: #000;
	--bs-nav-link-color: var(--pas-text-2);
	--bs-nav-link-hover-color: #000;
}

.nav-tabs .nav-link {
	font-family: var(--pas-font-head);
	font-weight: 700;
	text-transform: uppercase;
}

.nav-tabs .nav-link.active {
	box-shadow: inset 0 -2px 0 var(--pas-red);
}

.table {
	--bs-table-border-color: var(--pas-line-soft);
	--bs-table-hover-bg: var(--pas-surface);
}

.text-bg-danger {
	background-color: var(--pas-red) !important;
}

h1:focus {
	outline: none;
}

.table-sm td, .table-sm th {
	vertical-align: middle;
}

.table input.form-control-sm, .table select.form-select-sm {
	min-width: 5rem;
}

.num {
	text-align: right;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.mono {
	font-family: Consolas, "Courier New", monospace;
	font-size: 0.85rem;
}

#blazor-error-ui {
	background: lightyellow;
	bottom: 0;
	box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
	display: none;
	left: 0;
	padding: 0.6rem 1.25rem 0.7rem 1.25rem;
	position: fixed;
	width: 100%;
	z-index: 1000;
}

#blazor-error-ui .dismiss {
	cursor: pointer;
	position: absolute;
	right: 0.75rem;
	top: 0.5rem;
}

#components-reconnect-modal {
	z-index: 1050;
}

/* Шапка как у сайта: фон страницы без линии снизу, логотип, меню прописными Roboto Condensed (активный пункт -
   красный), справа почта пользователя кнопкой с красной рамкой, как «Оставить заявку». Высота меньше, чем у сайта:
   место нужно окну объекта. Шапка и страница одного цвета, поэтому зазор между ними небольшой (замечание Alejandro
   2026-10-05): от логотипа до содержимого 10px. */
.app-navbar {
	padding-top: 0.375rem;
	padding-bottom: 0.25rem;
	background: var(--pas-page);
}

.app-main {
	padding-top: 0.375rem;
	padding-bottom: 1rem;
}

.app-navbar .navbar-brand {
	padding-top: 0;
	padding-bottom: 0;
	font-family: var(--pas-font-head);
	font-weight: 700;
	font-size: 1.25rem;
	text-transform: uppercase;
	color: #000;
}

.app-logo {
	height: 40px;
	width: auto;
}

.app-navbar .nav-link {
	padding: 0.5rem 0.75rem !important;
	font-family: var(--pas-font-head);
	font-weight: 700;
	font-size: 0.9375rem;
	line-height: 1.2;
	text-transform: uppercase;
	color: #000;
	transition: opacity .3s ease;
}

.app-navbar .nav-link:hover, .app-navbar .nav-link:focus {
	color: #000;
	opacity: .8;
}

.app-navbar .nav-link.active, .app-navbar .nav-link.show {
	color: var(--pas-red);
}

.app-user {
	padding: 0.5rem 0.875rem;
	border: 1px solid var(--pas-red);
	border-radius: 8px;
	background: transparent;
	color: #000;
	font-weight: 700;
	font-size: 0.8125rem;
	line-height: 1.25;
	transition: opacity .3s ease;
}

.app-user:hover {
	opacity: .8;
}

/* страницы входа и регистрации - как форма «Свяжитесь с нами» сайта: белая карточка, серые поля, красная кнопка во всю ширину */
.app-auth-card .card-body {
	padding: 1.5rem 1.75rem;
}

.app-auth-card form .btn-primary[type="submit"] {
	display: block;
	width: 100%;
	--bs-btn-padding-y: 0.875rem;
	--bs-btn-font-size: 0.875rem;
}

/* имя открытого объекта в шапке (FacilityPage): за вертикальной чертой после меню, длинное - с многоточием */
.app-context {
	min-width: 0;
	display: flex;
	align-items: center;
}

.app-context-name {
	margin-left: .75rem;
	padding-left: .75rem;
	border-left: 1px solid var(--pas-line);
	font-family: var(--pas-font-head);
	font-weight: 700;
	font-size: 1.0625rem;
	color: #000;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 50vw;
	min-width: 6rem;
}

/* на узком окне название программы рядом с логотипом уступает место имени объекта */
@media (max-width: 1199.98px) {
	.app-navbar .navbar-brand span {
		display: none;
	}
}

/* счетчик того, что ждет администратора (регистрации, застрявшие события) */
.nav-badge {
	font-size: 0.7rem;
	vertical-align: 0.1rem;
	margin-left: 0.3rem;
}

/* Страницы вне окна объекта (объекты, каталог, профиль, администрирование) - один вид на всю ширину
   окна: строка заголовка со счетчиком, поиском и кнопками справа, белые карточки с таблицами. */
.page-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
	margin-bottom: 1rem;
}

.page-head h1 {
	margin: 0;
}

.page-count {
	color: var(--pas-muted);
	font-weight: 400;
	font-size: 1rem;
	margin-left: 0.35rem;
}

.page-search {
	width: 18rem;
	max-width: 100%;
}

.page-actions {
	margin-left: auto;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.page-lead {
	color: var(--pas-muted);
	margin: -0.5rem 0 1rem;
	max-width: 60rem;
}

.ui-card {
	position: relative;
	background: #fff;
	border-radius: 10px;
}

.ui-card + .ui-card {
	margin-top: 1rem;
}

.ui-card-header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
	padding: 0.6rem 0.75rem;
	border-bottom: 1px solid var(--pas-line-soft);
}

.ui-card-title {
	margin: 0;
	font-family: var(--pas-font-head);
	font-size: 1rem;
	font-weight: 700;
	text-transform: uppercase;
}

.ui-card-body {
	padding: 0.75rem;
}

.ui-card-footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	padding: 0.6rem 0.75rem;
	border-top: 1px solid var(--pas-line-soft);
	font-size: 0.8rem;
	color: var(--pas-muted);
}

.ui-card-empty {
	padding: 1.5rem 0.75rem;
	color: var(--pas-muted);
	text-align: center;
}

/* вкладки в шапке карточки: линия под ними - граница шапки */
.ui-card-header .nav-tabs {
	border-bottom: 0;
	margin: -0.2rem 0 -0.6rem;
}

.ui-table {
	margin: 0;
}

.ui-table thead th {
	padding: 0.7rem 0.75rem 0.6rem;
	background: #fff;
	color: var(--pas-muted);
	font-family: var(--pas-font-head);
	font-size: 0.8125rem;
	font-weight: 700;
	text-transform: uppercase;
	white-space: nowrap;
	border-bottom-width: 1px;
}

/* верхние углы шапки таблицы - по скруглению карточки (overflow: hidden у карточки обрезал бы меню строк) */
.ui-card > .table-responsive:first-child .ui-table thead th:first-child {
	border-top-left-radius: 10px;
}

.ui-card > .table-responsive:first-child .ui-table thead th:last-child {
	border-top-right-radius: 10px;
}

.ui-table tbody td {
	padding: 0.55rem 0.75rem;
}

.ui-table tbody tr:last-child td {
	border-bottom: 0;
}

.ui-table th.sortable {
	cursor: pointer;
	user-select: none;
}

.ui-table th.sortable:hover {
	color: var(--pas-text);
}

.ui-table tr.clickable {
	cursor: pointer;
}

/* под длинным списком мониторинга: сколько показано и «Показать еще» */
.list-more {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding-top: 0.5rem;
	padding-bottom: 0.5rem;
}

/* столбцы дат и состояний постоянной ширины, действия - по содержимому: на широком экране
   лишнее место получает название, а не промежутки между датами */
.ui-table .col-fixed {
	width: 10rem;
}

.ui-table .col-actions {
	width: 1%;
}

/* вторая строка ячейки: состав объекта, город, телефон */
.cell-sub {
	font-size: 0.8rem;
	color: var(--pas-muted);
}

.obj-name {
	font-weight: 700;
	color: #000;
	text-decoration: none;
}

tr:hover .obj-name {
	color: var(--pas-red-dark);
}

/* состояние расчета: точка и время; полное время - в подсказке */
.st {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	white-space: nowrap;
	font-size: 0.875rem;
}

.st::before {
	content: "";
	flex: none;
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background: currentColor;
}

.st-ok {
	color: #198754;
}

.st-stale {
	color: #b7791f;
}

.st-bad {
	color: var(--pas-red);
}

.st-none {
	color: var(--pas-faint);
}

.st-none::before {
	background: transparent;
	border: 1px solid currentColor;
}

/* действия строки: основная кнопка и меню «⋯» с остальным */
.row-actions {
	white-space: nowrap;
	text-align: right;
}

.kebab {
	width: 2rem;
	height: 2rem;
	margin-left: 0.25rem;
	border: 0;
	border-radius: 0.375rem;
	background: transparent;
	color: var(--pas-muted);
	font-size: 1.1rem;
	line-height: 1;
}

.kebab:hover, .kebab[aria-expanded="true"] {
	background: var(--pas-tint);
	color: #000;
}

/* фильтр со счетчиками (пользователи по состоянию) */
.filter-tabs .nav-link {
	padding: 0.3rem 0.75rem;
	font-size: 0.875rem;
	color: var(--pas-text-2);
}

.filter-tabs .nav-link.active {
	background: var(--pas-graphite);
	color: #fff;
	font-weight: 700;
}

.filter-tabs .badge {
	margin-left: 0.35rem;
}

/* показатели мониторинга */
.stats {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 2rem;
}

.stat-value {
	font-size: 1.25rem;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

.stat-label {
	font-size: 0.8rem;
	color: var(--pas-muted);
}

/* Перетаскивание файлов в список объектов: на время перетаскивания поверх карточки встает
   поле выбора файла (app.js ставит класс dragging), и браузер сам отдает ему брошенный файл. */
.file-drop-input {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	pointer-events: none;
	z-index: 6;
}

.file-drop.dragging .file-drop-input {
	pointer-events: auto;
}

.file-drop-overlay {
	display: none;
	position: absolute;
	inset: 0;
	z-index: 5;
	align-items: center;
	justify-content: center;
	border: 2px dashed var(--pas-red);
	border-radius: 10px;
	background: rgba(215, 12, 12, 0.05);
	color: var(--pas-red);
	font-weight: 700;
}

.file-drop.dragging .file-drop-overlay {
	display: flex;
}

/* ход «Отчета по объекту» в строке списка вместо кнопок (отчет формируется, не заходя в объект) */
.list-progress {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	font-size: 0.875rem;
	color: var(--pas-text-2);
	white-space: nowrap;
}
