/* REDICO — Реестр органов по сертификации и испытательных лабораторий
   Палитра и типографика подобраны в стилистике сайта redico.ru:
   акцент — красный #DA291C, текст — почти чёрный #14171C, фон — белый,
   шрифт — Manrope. Список органов оформлен полноширинными строками
   (во всю ширину экрана), с анимацией появления и наведения. */

#rr-root {
	--rr-red: #da291c;
	--rr-red-dark: #b81f14;
	--rr-red-tint: rgba(218, 41, 28, 0.08);
	--rr-red-tint-strong: rgba(218, 41, 28, 0.16);
	--rr-ink: #14171c;
	--rr-ink-70: rgba(20, 23, 28, 0.7);
	--rr-ink-50: rgba(20, 23, 28, 0.5);
	--rr-line: rgba(20, 23, 28, 0.1);
	--rr-line-soft: rgba(20, 23, 28, 0.06);
	--rr-bg-soft: #f7f7f8;
	--rr-green: #1c8a4b;
	--rr-green-tint: rgba(28, 138, 75, 0.1);
	--rr-amber: #b9770e;
	--rr-amber-tint: rgba(185, 119, 14, 0.12);
	--rr-blue: #2159c9;
	--rr-blue-tint: rgba(33, 89, 201, 0.1);
	--rr-radius: 14px;
	--rr-radius-sm: 10px;
	--rr-radius-pill: 100px;
	--rr-font: Manrope, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	--rr-ease: cubic-bezier(0.22, 1, 0.36, 1);

	font-family: var(--rr-font);
	color: var(--rr-ink);
}

#rr-root * {
	box-sizing: border-box;
}

#rr-root a {
	color: var(--rr-red);
}

.rr-container {
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 24px;
}

.rr-container-top {
	padding-top: 48px;
}

.rr-container-bottom {
	padding-top: 28px;
	padding-bottom: 96px;
}

/* Hero */

.rr-hero {
	margin-bottom: 32px;
}

.rr-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--rr-red);
	margin-bottom: 18px;
}

.rr-dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--rr-red);
	display: inline-block;
	animation: rrPulse 2.4s ease-in-out infinite;
}

@keyframes rrPulse {
	0%, 100% { opacity: 1; transform: scale(1); }
	50% { opacity: 0.45; transform: scale(1.25); }
}

.rr-title {
	font-size: 44px;
	line-height: 1.1;
	font-weight: 800;
	letter-spacing: -0.02em;
	margin: 0 0 18px;
	color: var(--rr-ink);
}

.rr-accent {
	color: var(--rr-red);
}

.rr-lead {
	font-size: 17px;
	line-height: 1.55;
	color: var(--rr-ink-70);
	max-width: 720px;
	margin: 0 0 28px;
}

.rr-stats {
	display: flex;
	flex-wrap: wrap;
	gap: 28px 32px;
	padding-top: 20px;
	border-top: 1px solid var(--rr-line);
}

.rr-stat {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.rr-stat-num {
	font-size: 26px;
	font-weight: 800;
	color: var(--rr-ink);
	font-variant-numeric: tabular-nums;
}

.rr-stat-label {
	font-size: 12px;
	color: var(--rr-ink-50);
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

/* Panel: search + filters */

.rr-panel {
	background: #fff;
	border: 1px solid var(--rr-line);
	border-radius: var(--rr-radius);
	padding: 20px;
	margin-bottom: 24px;
	box-shadow: 0 1px 2px rgba(20, 23, 28, 0.04);
}

.rr-search-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	margin-bottom: 18px;
}

.rr-search-box {
	position: relative;
	flex: 1 1 320px;
	display: flex;
	align-items: center;
}

.rr-search-icon {
	position: absolute;
	left: 16px;
	color: var(--rr-ink-50);
	pointer-events: none;
}

#rr-search {
	width: 100%;
	font-family: var(--rr-font);
	font-size: 15px;
	padding: 13px 40px 13px 44px;
	border: 1px solid var(--rr-line);
	border-radius: var(--rr-radius-sm);
	background: var(--rr-bg-soft);
	color: var(--rr-ink);
	outline: none;
	transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

#rr-search:focus {
	border-color: var(--rr-red);
	background: #fff;
	box-shadow: 0 0 0 3px var(--rr-red-tint);
}

.rr-search-clear {
	position: absolute;
	right: 12px;
	background: none;
	border: none;
	font-size: 20px;
	line-height: 1;
	color: var(--rr-ink-50);
	cursor: pointer;
	padding: 4px;
	transition: color 0.12s, transform 0.12s;
}

.rr-search-clear:hover {
	color: var(--rr-ink);
	transform: rotate(90deg);
}

.rr-search-spinner {
	position: absolute;
	right: 40px;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	border: 2px solid var(--rr-line);
	border-top-color: var(--rr-red);
	animation: rrSpin 0.7s linear infinite;
}

@keyframes rrSpin {
	to { transform: rotate(360deg); }
}

.rr-scope-toggle {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--rr-ink-70);
	white-space: nowrap;
	cursor: pointer;
	user-select: none;
}

.rr-scope-toggle input {
	accent-color: var(--rr-red);
	width: 15px;
	height: 15px;
}

.rr-filter-group {
	margin-bottom: 14px;
}

.rr-filter-group-label {
	display: block;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--rr-ink-50);
	margin-bottom: 8px;
}

.rr-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.rr-filter-chip {
	font-family: var(--rr-font);
	font-size: 13px;
	font-weight: 700;
	padding: 8px 16px;
	border-radius: var(--rr-radius-pill);
	border: 1px solid var(--rr-line);
	background: #fff;
	color: var(--rr-ink-70);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	transition: all 0.15s var(--rr-ease);
}

.rr-filter-chip:hover {
	border-color: var(--rr-red);
	color: var(--rr-ink);
	transform: translateY(-1px);
}

.rr-filter-chip:active {
	transform: translateY(0) scale(0.97);
}

.rr-filter-chip.is-active {
	background: var(--rr-ink);
	border-color: var(--rr-ink);
	color: #fff;
}

.rr-filter-chip-type.is-active {
	background: var(--rr-red);
	border-color: var(--rr-red);
}

.rr-filter-chip.is-empty {
	opacity: 0.4;
}

.rr-filter-chip-count {
	font-weight: 600;
	opacity: 0.6;
	font-size: 12px;
}

.rr-select-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 16px;
	padding-top: 14px;
	margin-bottom: 4px;
	border-top: 1px solid var(--rr-line-soft);
}

.rr-select-row .rr-sort label {
	font-weight: 600;
}

.rr-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding-top: 14px;
	border-top: 1px solid var(--rr-line-soft);
}

.rr-toolbar-controls {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}

.rr-results-count {
	font-size: 13px;
	color: var(--rr-ink-50);
}

.rr-results-count strong {
	color: var(--rr-ink);
}

.rr-sort {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--rr-ink-50);
}

.rr-sort select {
	font-family: var(--rr-font);
	font-size: 13px;
	padding: 7px 10px;
	border-radius: var(--rr-radius-sm);
	border: 1px solid var(--rr-line);
	background: #fff;
	color: var(--rr-ink);
	cursor: pointer;
}

/* ---------- Полноширинный список ---------- */

/* Полную ширину «пробивает» не CSS (у тем часто узкий .entry-content /
   .prose с max-width и overflow-x: clip на body, где чистый vw-приём
   на отрицательных margin ломается непредсказуемо), а JS — см.
   breakOutOfContainer() в app.js: он меряет реальное смещение до body
   и выставляет точную ширину в пикселях. #rr-root это подготавливает,
   .rr-list-full просто занимает всю ширину уже расширенного #rr-root. */
#rr-list-full {
	width: 100%;
	background: var(--rr-bg-soft);
	border-top: 1px solid var(--rr-line);
	border-bottom: 1px solid var(--rr-line);
}

.rr-list {
	max-width: 1600px;
	margin: 0 auto;
	padding: 4px 24px;
}

.rr-row {
	display: block;
	color: inherit;
	text-decoration: none;
	cursor: pointer;
	border-bottom: 1px solid var(--rr-line-soft);
	position: relative;
	outline: none;
}

.rr-row:last-child {
	border-bottom: none;
}

.rr-row::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 3px;
	background: var(--rr-red);
	transform: scaleY(0);
	transition: transform 0.18s var(--rr-ease);
}

.rr-row:hover,
.rr-row:focus-visible {
	background: rgba(255, 255, 255, 0.9);
}

.rr-row:hover::before,
.rr-row:focus-visible::before {
	transform: scaleY(1);
}

.rr-row-inner {
	max-width: 1600px;
	margin: 0 auto;
	padding: 18px 20px 18px 26px;
	display: flex;
	align-items: flex-start;
	gap: 18px;
}

.rr-row-type {
	flex: none;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.02em;
	width: 34px;
	height: 34px;
	border-radius: 10px;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-top: 2px;
}

.rr-row-type-ОС {
	background: var(--rr-blue-tint);
	color: var(--rr-blue);
}

.rr-row-type-ИЛ {
	background: var(--rr-red-tint-strong);
	color: var(--rr-red-dark);
}

.rr-row-main {
	flex: 1 1 auto;
	min-width: 0;
}

.rr-row-name {
	font-size: 15.5px;
	font-weight: 700;
	line-height: 1.35;
	color: var(--rr-ink);
	margin: 0 0 8px;
	transition: transform 0.15s var(--rr-ease);
}

.rr-row:hover .rr-row-name {
	transform: translateX(2px);
}

.rr-row-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 18px;
	font-size: 13px;
	color: var(--rr-ink-50);
}

.rr-row-meta span {
	white-space: nowrap;
}

.rr-row-meta b {
	color: var(--rr-ink-70);
	font-weight: 600;
}

.rr-mono {
	font-variant-numeric: tabular-nums;
	color: var(--rr-red);
	font-weight: 700;
}

.rr-row-address {
	margin-top: 6px;
	font-size: 13px;
	color: var(--rr-ink-50);
}

.rr-badge {
	flex: none;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.02em;
	padding: 5px 12px;
	border-radius: var(--rr-radius-pill);
	white-space: nowrap;
	text-transform: uppercase;
	margin-top: 2px;
}

.rr-badge-active {
	background: var(--rr-green-tint);
	color: var(--rr-green);
}

.rr-badge-suspended,
.rr-badge-partial {
	background: var(--rr-amber-tint);
	color: var(--rr-amber);
}

.rr-badge-terminated {
	background: var(--rr-red-tint-strong);
	color: var(--rr-red-dark);
}

.rr-row-chevron {
	flex: none;
	color: var(--rr-ink-50);
	margin-top: 6px;
	transition: transform 0.18s var(--rr-ease), color 0.15s;
}

.rr-row:hover .rr-row-chevron {
	transform: translateX(3px);
	color: var(--rr-red);
}

/* Появление строк */

@keyframes rrRowIn {
	from {
		opacity: 0;
		transform: translateY(14px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

.rr-row-enter {
	animation: rrRowIn 0.5s var(--rr-ease) both;
}

@media (prefers-reduced-motion: reduce) {
	.rr-row-enter,
	.rr-dot,
	.rr-row::before,
	.rr-row-name,
	.rr-row-chevron {
		animation: none !important;
		transition: none !important;
	}
}

/* Скелетон загрузки */

.rr-skeleton {
	max-width: 1600px;
	margin: 0 auto;
	padding: 4px 0;
}

.rr-skel-row {
	height: 84px;
	margin: 0 20px;
	border-bottom: 1px solid var(--rr-line-soft);
	background: linear-gradient(90deg, rgba(20,23,28,0.03) 25%, rgba(20,23,28,0.07) 37%, rgba(20,23,28,0.03) 63%);
	background-size: 400% 100%;
	animation: rrShimmer 1.6s ease-in-out infinite;
}

@keyframes rrShimmer {
	0% { background-position: 100% 50%; }
	100% { background-position: 0 50%; }
}

/* Load more / empty */

.rr-loadmore-wrap {
	display: flex;
	justify-content: center;
	margin-top: 28px;
}

.rr-btn {
	font-family: var(--rr-font);
	font-size: 14px;
	font-weight: 700;
	padding: 13px 28px;
	border-radius: var(--rr-radius-sm);
	border: none;
	cursor: pointer;
	transition: opacity 0.12s, background 0.12s, transform 0.12s;
}

.rr-btn-dark {
	background: var(--rr-ink);
	color: #fff;
}

.rr-btn-dark:hover {
	opacity: 0.85;
	transform: translateY(-1px);
}

.rr-btn-outline {
	background: #fff;
	border: 1px solid var(--rr-line);
	color: var(--rr-ink);
}

.rr-btn-outline:hover {
	border-color: var(--rr-red);
	color: var(--rr-red);
}

.rr-empty {
	text-align: center;
	padding: 48px 0 96px;
	color: var(--rr-ink-50);
}

.rr-empty p {
	margin-bottom: 16px;
}

/* Modal (card detail) */

.rr-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(20, 23, 28, 0);
	align-items: flex-start;
	justify-content: center;
	padding: 40px 16px;
	overflow-y: auto;
	z-index: 9999;
	transition: background 0.2s var(--rr-ease);
}

.rr-modal-overlay:not([hidden]) {
	display: flex;
}

.rr-modal-overlay[hidden] {
	display: none;
}

.rr-modal-overlay.is-open {
	background: rgba(20, 23, 28, 0.55);
}

.rr-modal {
	background: #fff;
	border-radius: var(--rr-radius);
	max-width: 720px;
	width: 100%;
	padding: 32px;
	position: relative;
	box-shadow: 0 20px 60px rgba(20, 23, 28, 0.3);
	font-family: var(--rr-font);
	color: var(--rr-ink);
	opacity: 0;
	transform: translateY(16px) scale(0.98);
	transition: opacity 0.22s var(--rr-ease), transform 0.22s var(--rr-ease);
}

.rr-modal-overlay.is-open .rr-modal {
	opacity: 1;
	transform: none;
}

.rr-modal-close {
	position: absolute;
	top: 18px;
	right: 18px;
	background: var(--rr-bg-soft);
	border: none;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
	color: var(--rr-ink-70);
	transition: background 0.15s, color 0.15s, transform 0.15s;
}

.rr-modal-close:hover {
	background: var(--rr-red-tint);
	color: var(--rr-red);
	transform: rotate(90deg);
}

.rr-modal-badges {
	display: flex;
	gap: 8px;
	margin-bottom: 12px;
}

.rr-modal h2 {
	font-size: 21px;
	font-weight: 800;
	margin: 0 30px 12px 0;
	line-height: 1.3;
}

.rr-modal-section {
	margin-top: 20px;
	padding-top: 16px;
	border-top: 1px solid var(--rr-line-soft);
	animation: rrFadeIn 0.3s var(--rr-ease) both;
}

@keyframes rrFadeIn {
	from { opacity: 0; }
	to { opacity: 1; }
}

.rr-modal-section h3 {
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--rr-ink-50);
	margin: 0 0 10px;
	font-weight: 700;
}

.rr-modal-loading {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 13px;
	color: var(--rr-ink-50);
}

.rr-spinner {
	width: 14px;
	height: 14px;
	border-radius: 50%;
	border: 2px solid var(--rr-line);
	border-top-color: var(--rr-red);
	animation: rrSpin 0.7s linear infinite;
	flex: none;
}

.rr-kv {
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 8px 16px;
	font-size: 14px;
}

.rr-kv dt {
	color: var(--rr-ink-50);
}

.rr-kv dd {
	margin: 0;
	color: var(--rr-ink);
	font-weight: 600;
	word-break: break-word;
}

.rr-scope-text {
	font-size: 13.5px;
	line-height: 1.6;
	color: var(--rr-ink-70);
	white-space: pre-wrap;
	max-height: 260px;
	overflow-y: auto;
	background: var(--rr-bg-soft);
	border-radius: var(--rr-radius-sm);
	padding: 14px 16px;
}

/* Responsive */

@media (max-width: 640px) {
	#rr-root {
		padding: 32px 16px 0;
	}
	.rr-title {
		font-size: 30px;
	}
	.rr-lead {
		font-size: 15px;
	}
	.rr-kv {
		grid-template-columns: 1fr;
	}
	.rr-kv dt {
		font-size: 12px;
		margin-top: 6px;
	}
	.rr-row-inner {
		flex-wrap: wrap;
		padding: 16px 16px 16px 20px;
	}
	.rr-badge {
		order: 3;
	}
	.rr-row-chevron {
		display: none;
	}
	.rr-toolbar {
		flex-direction: column;
		align-items: flex-start;
	}
}

/* Ссылка на полную страницу организации внутри быстрой карточки */

.rr-modal-fulllink {
	display: inline-flex;
	align-items: center;
	margin-top: 20px;
	padding-top: 16px;
	border-top: 1px solid var(--rr-line-soft);
	font-weight: 700;
	font-size: 14px;
	color: var(--rr-red);
	text-decoration: none;
	transition: gap 0.15s var(--rr-ease);
	gap: 4px;
}

.rr-modal-fulllink:hover {
	gap: 8px;
}

/* ---------- Отдельная страница организации (для поисковых систем) ---------- */

.rr-org-page {
	max-width: 980px;
	margin: 0 auto;
	padding: 32px 24px 64px;
}

.rr-org-type {
	display: inline-flex;
	align-items: center;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.02em;
	padding: 6px 12px;
	border-radius: var(--rr-radius-pill);
	white-space: nowrap;
}

.rr-org-type-ОС {
	background: var(--rr-blue-tint);
	color: var(--rr-blue);
}

.rr-org-type-ИЛ {
	background: var(--rr-red-tint-strong);
	color: var(--rr-red-dark);
}

.rr-org-breadcrumbs {
	font-size: 13px;
	color: var(--rr-ink-50);
	margin-bottom: 18px;
}

.rr-org-breadcrumbs a {
	color: var(--rr-ink-50);
	text-decoration: none;
	border-bottom: 1px solid var(--rr-line);
}

.rr-org-breadcrumbs a:hover {
	color: var(--rr-red);
	border-color: var(--rr-red);
}

.rr-org-header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin-bottom: 14px;
}

.rr-org-page h1 {
	font-size: 26px;
	font-weight: 800;
	line-height: 1.3;
	margin: 0 0 20px;
	color: var(--rr-ink);
}

.rr-org-card {
	background: #fff;
	border: 1px solid var(--rr-line);
	border-radius: var(--rr-radius);
	padding: 24px 26px;
	margin-bottom: 20px;
}

.rr-org-card h2 {
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--rr-ink-50);
	margin: 0 0 14px;
	font-weight: 700;
}

.rr-org-back {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-top: 8px;
	font-weight: 700;
	font-size: 14px;
	color: var(--rr-red);
	text-decoration: none;
}

.rr-org-back:hover {
	gap: 10px;
}

@media (max-width: 640px) {
	.rr-org-page {
		padding: 24px 16px 48px;
	}
	.rr-org-card {
		padding: 18px 18px;
	}
	/* На узком экране правило .rr-badge { order: 3 } нужно только строкам
	   списка — в шапке страницы организации статус должен идти первым. */
	.rr-org-header .rr-badge {
		order: 0;
	}
}
