/* ========================================================================
   KV Culture — основные стили темы.
   Все классы с префиксом kv- чтобы не конфликтовать с плагинами и Gutenberg.
   Палитра, типографика и компоненты перенесены из дизайн-концепта.
   ======================================================================== */

:root {
	/* Коэффициент масштабирования текста. Меняется скриптом темы, когда
	   пользователь увеличивает текст в панели доступности (kv-visual-accessibility),
	   чтобы масштабировались и элементы с фиксированным px-размером. */
	--kv-fs: 1;
	--kv-bg: #f8f1e7;
	--kv-paper: #fffaf2;
	--kv-paper-2: #fff5e6;
	--kv-text: #2d241c;
	--kv-muted: #786858;
	--kv-accent: #9c3f2f;
	--kv-accent-2: #c9873d;
	--kv-accent-3: #2f5d50;
	--kv-soft: #ead9c2;
	--kv-line: rgba(45, 36, 28, .12);
	--kv-shadow: 0 18px 45px rgba(79, 52, 28, .14);
	--kv-radius: 24px;
	--kv-max: 1180px;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
	margin: 0;
	font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
	color: var(--kv-text);
	background:
		radial-gradient(circle at top left, rgba(201,135,61,.22), transparent 34%),
		radial-gradient(circle at 80% 12%, rgba(156,63,47,.16), transparent 28%),
		linear-gradient(180deg, #fbf4ea 0%, #f5eadb 55%, #efe1cf 100%);
	min-height: 100vh;
}

a { color: inherit; text-decoration: none; }

/* Липкий футер: на коротких страницах footer прижимается к низу экрана,
   а не висит с пустотой под собой. Работает и когда плагин доступности
   оборачивает страницу в свой контейнер #kv-accessibility-site. */
.site {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}
.site-main {
	flex: 1 0 auto;
}
.kv-footer {
	flex-shrink: 0;
}
#kv-accessibility-site {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

/* Доступность */
.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%); height: 1px; margin: -1px;
	overflow: hidden; padding: 0; position: absolute; width: 1px;
	word-wrap: normal !important;
}
.skip-link {
	position: absolute;
	left: -9999px;
	top: 8px;
	z-index: 999;
	padding: 10px 16px;
	background: var(--kv-accent);
	color: #fff;
	border-radius: 999px;
}
.skip-link:focus {
	left: 16px;
}

/* ========================================================================
   Wrapping containers
   ======================================================================== */
.kv-wrap,
.kv-header,
.kv-footer__inner {
	width: min(var(--kv-max), calc(100% - 32px));
	margin: 0 auto;
}

/* ========================================================================
   Top strip
   ======================================================================== */
.kv-top-strip {
	background: #2f2118;
	color: rgba(255,255,255,.86);
	font-size: calc(15px * var(--kv-fs));
}

/* Полоска на всю ширину экрана, без ограничения контейнером */
.kv-top-strip__inner {
	width: 100%;
	padding: 9px 22px;
	display: flex;
	justify-content: space-between;
	gap: 18px;
	align-items: center;
	/* Кнопка доступности всегда остаётся справа: сама полоса не переносится,
	   а контакты при нехватке места переносятся внутри своего блока. */
	flex-wrap: nowrap;
}

.kv-top-strip a { opacity: .92; }
.kv-top-strip a:hover { opacity: 1; }

/* Контакты в топбаре: по центру свободного места, при росте расползаются в стороны */
.kv-top-strip__contacts {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px 18px;
	flex: 1 1 auto;
	min-width: 0;
}
.kv-topc {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	color: rgba(255,255,255,.86);
}
.kv-topc:hover { color: #fff; }
.kv-topc__icon { opacity: .75; font-size: calc(14px * var(--kv-fs)); }

.kv-top-strip__action {
	display: flex;
	align-items: center;
	flex-shrink: 0;
}
.kv-top-strip__action .kv-a11y-btn {
	white-space: nowrap;
}

/* Кнопка «Версия сайта для слабовидящих» */
.kv-a11y-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 9px 20px;
	border-radius: 999px;
	background: linear-gradient(135deg, var(--kv-accent-2), #a9691f);
	border: 1px solid rgba(255,255,255,.25);
	color: #fff;
	font-weight: 800;
	font-size: calc(13px * var(--kv-fs));
	text-transform: uppercase;
	letter-spacing: .045em;
	box-shadow: 0 4px 14px rgba(0,0,0,.28);
	transition: .2s;
}
.kv-a11y-btn:hover {
	filter: brightness(1.12);
	transform: translateY(-1px);
	box-shadow: 0 6px 18px rgba(0,0,0,.34);
	color: #fff;
}
.kv-a11y-btn .kv-a11y-toggle__icon {
	display: inline-flex;
	line-height: 1;
}
.kv-a11y-btn .kv-a11y-toggle__icon svg {
	width: calc(19px * var(--kv-fs));
	height: calc(19px * var(--kv-fs));
	display: block;
}

.kv-top-strip__menu {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	list-style: none;
	margin: 0;
	padding: 0;
}

/* ========================================================================
   Header
   ======================================================================== */
.kv-header-wrap {
	position: sticky;
	top: 0;
	z-index: 50;
	backdrop-filter: blur(18px);
	background: rgba(248, 241, 231, .82);
	border-bottom: 1px solid var(--kv-line);
}

.kv-header {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 14px;
	padding: 16px 0;
}

.kv-brand {
	display: flex;
	align-items: center;
	gap: 14px;
	min-width: 0;
}

.kv-brand__mark {
	width: 54px;
	height: 54px;
	border-radius: 18px;
	display: grid;
	place-items: center;
	color: #fff;
	font-size: calc(28px * var(--kv-fs));
	background: linear-gradient(135deg, var(--kv-accent), var(--kv-accent-2));
	box-shadow: 0 14px 30px rgba(156,63,47,.25);
}

.kv-brand__logo img {
	max-height: 54px;
	width: auto;
	display: block;
}

.kv-brand__title {
	font-size: calc(21px * var(--kv-fs));
	font-weight: 800;
	line-height: 1.08;
	letter-spacing: -.02em;
	display: block;
}

.kv-brand__subtitle {
	color: var(--kv-muted);
	font-size: calc(13px * var(--kv-fs));
	margin-top: 3px;
	display: block;
}

/* Верхний ряд шапки: логотип слева, название по центру, поиск справа */
.kv-header__bar {
	display: grid;
	grid-template-columns: auto 1fr auto;
	grid-template-areas: "logo title search";
	align-items: center;
	gap: 20px;
}

.kv-header__logo {
	grid-area: logo;
	display: flex;
	align-items: center;
}
.kv-header__logo a {
	display: inline-flex;
	align-items: center;
}
.kv-header__logo img,
.kv-header__logo .custom-logo {
	max-height: 66px;
	width: auto;
	height: auto;
	display: block;
}

.kv-header__title {
	grid-area: title;
	justify-self: center;
	text-align: center;
	color: inherit;
}
.kv-header__title .kv-brand__title {
	font-size: clamp(calc(16px * var(--kv-fs)), calc(1.5vw * var(--kv-fs)), calc(22px * var(--kv-fs)));
	font-weight: 800;
	line-height: 1.14;
	letter-spacing: -.01em;
}
.kv-header__title:hover .kv-brand__title { color: var(--kv-accent); }
.kv-header__title .kv-brand__subtitle { margin-top: 5px; }

.kv-header__search {
	grid-area: search;
	justify-self: end;
	width: min(300px, 38vw);
}
.kv-header__search .kv-search-form {
	margin: 0;
	width: 100%;
	max-width: none;
	gap: 8px;
}
.kv-header__search .kv-search-form__field {
	padding: 10px 14px;
	font-size: calc(14px * var(--kv-fs));
}
.kv-header__search .kv-search-form__submit {
	padding: 10px 16px;
	font-size: calc(14px * var(--kv-fs));
}

/* Меню — под названием учреждения, по центру во всю ширину */
.kv-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	border-top: 1px solid var(--kv-line);
	padding-top: 12px;
}

.kv-nav__menu {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	justify-content: center;
	list-style: none;
	margin: 0;
	padding: 0;
}

.kv-nav__menu li { position: relative; }

.kv-nav__menu a {
	display: inline-block;
	padding: 9px 17px;
	border-radius: 999px;
	color: #4b3a2d;
	font-size: calc(15px * var(--kv-fs));
	font-weight: 700;
	background: rgba(255,255,255,.6);
	box-shadow: inset 0 0 0 1px var(--kv-line);
	transition: transform .18s ease, background .18s ease, color .18s ease, box-shadow .18s ease;
}

.kv-nav__menu a:hover {
	background: #fff7ec;
	color: var(--kv-accent);
	transform: translateY(-2px);
	box-shadow: 0 10px 20px rgba(156,63,47,.14), inset 0 0 0 1px rgba(156,63,47,.18);
}

.kv-nav__menu .current-menu-item > a,
.kv-nav__menu .current_page_item > a,
.kv-nav__menu .current-menu-parent > a,
.kv-nav__menu a.active {
	background: linear-gradient(135deg, var(--kv-accent), var(--kv-accent-2));
	color: #fff;
	box-shadow: 0 12px 24px rgba(156,63,47,.24);
}
.kv-nav__menu .current-menu-item > a:hover,
.kv-nav__menu .current_page_item > a:hover,
.kv-nav__menu a.active:hover {
	color: #fff;
}

/* Sub-menu */
.kv-nav__menu .sub-menu {
	position: absolute;
	left: 0;
	top: 100%;
	min-width: 220px;
	background: var(--kv-paper);
	border-radius: 18px;
	border: 1px solid var(--kv-line);
	box-shadow: var(--kv-shadow);
	padding: 8px;
	margin: 8px 0 0;
	list-style: none;
	display: none;
	z-index: 60;
}

.kv-nav__menu li:hover > .sub-menu,
.kv-nav__menu li:focus-within > .sub-menu {
	display: block;
}

.kv-nav__menu .sub-menu a {
	display: block;
	border-radius: 12px;
	padding: 8px 12px;
	font-size: calc(14px * var(--kv-fs));
	font-weight: 600;
	background: transparent;
	box-shadow: none;
}
.kv-nav__menu .sub-menu a:hover {
	background: #fff7ec;
	box-shadow: none;
	transform: none;
}

/* Mobile toggle (поведение прикручиваем в JS) */
.kv-nav__toggle {
	display: none;
	width: 44px;
	height: 44px;
	border-radius: 14px;
	border: 1px solid var(--kv-line);
	background: rgba(255,255,255,.55);
	cursor: pointer;
	position: relative;
}
.kv-nav__toggle-bar,
.kv-nav__toggle-bar::before,
.kv-nav__toggle-bar::after {
	content: "";
	position: absolute;
	left: 10px;
	right: 10px;
	height: 2px;
	background: var(--kv-text);
	border-radius: 2px;
	transition: .2s;
}
.kv-nav__toggle-bar { top: 50%; transform: translateY(-50%); }
.kv-nav__toggle-bar::before { top: -8px; }
.kv-nav__toggle-bar::after { top: 8px; }

/* ========================================================================
   Buttons
   ======================================================================== */
.kv-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 13px 18px;
	border-radius: 999px;
	font-weight: 700;
	font-size: calc(15px * var(--kv-fs));
	transition: .2s;
	border: 1px solid transparent;
	cursor: pointer;
}
.kv-btn--primary {
	background: var(--kv-accent-2);
	color: #fff;
	box-shadow: 0 14px 28px rgba(201,135,61,.25);
}
.kv-btn--ghost {
	background: rgba(255,255,255,.14);
	color: #fff;
	border-color: rgba(255,255,255,.28);
	backdrop-filter: blur(8px);
}
.kv-btn--light {
	background: #fff7ec;
	color: var(--kv-accent);
	border-color: var(--kv-line);
}
.kv-btn:hover { transform: translateY(-2px); }

/* ========================================================================
   Hero (front-page)
   ======================================================================== */
.kv-hero {
	width: min(var(--kv-max), calc(100% - 32px));
	margin: 34px auto 0;
	display: grid;
	grid-template-columns: 1.2fr .8fr;
	gap: 24px;
	align-items: stretch;
}

.kv-hero__main {
	min-height: 520px;
	border-radius: 34px;
	overflow: hidden;
	position: relative;
	box-shadow: var(--kv-shadow);
	background:
		linear-gradient(110deg, rgba(40,28,18,.88), rgba(40,28,18,.48) 52%, rgba(40,28,18,.12)),
		url("https://images.unsplash.com/photo-1503095396549-807759245b35?auto=format&fit=crop&w=1500&q=80") center/cover;
	color: #fff;
	padding: 44px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}

.kv-hero__main::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 170px;
	background: linear-gradient(transparent, rgba(0,0,0,.48));
	pointer-events: none;
}

.kv-eyebrow {
	display: inline-flex;
	width: fit-content;
	align-items: center;
	gap: 8px;
	padding: 8px 13px;
	border-radius: 999px;
	background: rgba(255,255,255,.16);
	border: 1px solid rgba(255,255,255,.22);
	backdrop-filter: blur(10px);
	font-size: calc(14px * var(--kv-fs));
	color: #fff;
}

.kv-hero__title {
	position: relative;
	z-index: 2;
	font-size: clamp(calc(38px * var(--kv-fs)), calc(5vw * var(--kv-fs)), calc(70px * var(--kv-fs)));
	line-height: .95;
	margin: 20px 0 18px;
	max-width: 720px;
	letter-spacing: -.05em;
}

.kv-hero__lead {
	position: relative;
	z-index: 2;
	margin: 0;
	max-width: 620px;
	color: rgba(255,255,255,.86);
	font-size: calc(18px * var(--kv-fs));
	line-height: 1.6;
}

.kv-hero__actions {
	position: relative;
	z-index: 2;
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 26px;
}

.kv-hero__side {
	display: grid;
	gap: 18px;
}

.kv-event-card,
.kv-notice-card {
	background: rgba(255,250,242,.82);
	border: 1px solid rgba(255,255,255,.65);
	border-radius: 28px;
	box-shadow: var(--kv-shadow);
	padding: 24px;
}

.kv-event-card h2,
.kv-notice-card h2 {
	margin: 0 0 14px;
	font-size: calc(24px * var(--kv-fs));
	letter-spacing: -.03em;
}

.kv-date-box {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 18px;
}

.kv-date-num {
	width: 72px;
	height: 72px;
	border-radius: 22px;
	background: var(--kv-accent);
	color: #fff;
	display: grid;
	place-items: center;
	font-size: calc(32px * var(--kv-fs));
	font-weight: 900;
	box-shadow: 0 14px 30px rgba(156,63,47,.18);
}

.kv-date-meta strong {
	display: block;
	font-size: calc(18px * var(--kv-fs));
}

.kv-date-meta span {
	color: var(--kv-muted);
	font-size: calc(14px * var(--kv-fs));
}

.kv-event-card__desc {
	color: var(--kv-muted);
	line-height: 1.55;
	margin: 0;
}

.kv-small-list {
	display: grid;
	gap: 10px;
	margin-top: 18px;
}

.kv-small-list a {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	padding: 13px 14px;
	border-radius: 16px;
	background: rgba(255,255,255,.58);
	border: 1px solid var(--kv-line);
}

.kv-small-list span {
	color: var(--kv-muted);
	white-space: nowrap;
}

/* ========================================================================
   Hero-слайдер на главной (вкладки Афиша / Новости)
   ======================================================================== */
.kv-hero-slider {
	margin-top: 28px;
}

.kv-hero-tabs {
	display: flex;
	gap: 8px;
	margin-bottom: 16px;
}

.kv-hero-tab {
	border: 0;
	cursor: pointer;
	background: rgba(255,255,255,.6);
	color: #4b3a2d;
	font-weight: 800;
	font-size: calc(16px * var(--kv-fs));
	padding: 12px 20px;
	border-radius: 999px;
	box-shadow: inset 0 0 0 1px var(--kv-line);
	transition: .2s;
}
.kv-hero-tab:hover { transform: translateY(-1px); }
.kv-hero-tab.is-active {
	background: var(--kv-accent);
	color: #fff;
	box-shadow: 0 12px 24px rgba(156,63,47,.2);
}

.kv-hero-panel {
	display: none;
	grid-template-columns: 1.55fr .85fr;
	gap: 18px;
	align-items: stretch;
}
.kv-hero-panel.is-active { display: grid; }
.kv-hero-panel--solo { grid-template-columns: 1fr; }

/* Сцена (крупный слайд) */
.kv-hero-stage {
	position: relative;
	border-radius: 32px;
	overflow: hidden;
	min-height: 480px;
	box-shadow: var(--kv-shadow);
	background: #2f2118;
}

.kv-hero-slide {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: 42px;
	color: #fff;
	opacity: 0;
	visibility: hidden;
	transition: opacity .5s ease;
	z-index: 1;
}
.kv-hero-slide.is-active {
	opacity: 1;
	visibility: visible;
	z-index: 2;
}

.kv-hero-slide__bg {
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(110deg, rgba(40,28,18,.92), rgba(40,28,18,.45) 60%, rgba(40,28,18,.15)),
		var(--kv-img, none);
	background-size: cover;
	background-position: center;
	z-index: -1;
}
.kv-hero-slide--noimg .kv-hero-slide__bg {
	background-image: linear-gradient(135deg, var(--kv-accent), var(--kv-accent-2) 70%, var(--kv-accent-3));
}

.kv-hero-slide__inner {
	position: relative;
	max-width: 640px;
}

.kv-hero-slide__date {
	margin: 14px 0 10px;
	font-weight: 800;
	font-size: calc(15px * var(--kv-fs));
	color: var(--kv-accent-2);
	background: rgba(255,250,242,.16);
	border: 1px solid rgba(255,255,255,.22);
	backdrop-filter: blur(8px);
	display: inline-block;
	padding: 6px 12px;
	border-radius: 999px;
	color: #fff;
}

.kv-hero-slide__title {
	margin: 6px 0 14px;
	font-size: clamp(calc(28px * var(--kv-fs)), calc(3.4vw * var(--kv-fs)), calc(50px * var(--kv-fs)));
	line-height: 1;
	letter-spacing: -.04em;
}
.kv-hero-slide__title a { color: #fff; }
.kv-hero-slide__title a:hover { color: var(--kv-accent-2); }

.kv-hero-slide__text {
	margin: 0 0 22px;
	font-size: calc(17px * var(--kv-fs));
	line-height: 1.55;
	color: rgba(255,255,255,.88);
}

/* Стрелки */
.kv-hero-nav {
	position: absolute;
	top: 24px;
	z-index: 3;
	width: 44px;
	height: 44px;
	border: 0;
	cursor: pointer;
	border-radius: 50%;
	background: rgba(255,250,242,.2);
	border: 1px solid rgba(255,255,255,.32);
	backdrop-filter: blur(8px);
	color: #fff;
	font-size: calc(24px * var(--kv-fs));
	line-height: 1;
	display: grid;
	place-items: center;
	transition: .2s;
}
.kv-hero-nav:hover { background: var(--kv-accent); border-color: var(--kv-accent); }
.kv-hero-nav--prev { right: 76px; }
.kv-hero-nav--next { right: 24px; }

/* Список элементов вкладки */
.kv-hero-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
	max-height: 480px;
	overflow-y: auto;
}
.kv-hero-list::-webkit-scrollbar { width: 6px; }
.kv-hero-list::-webkit-scrollbar-thumb { background: var(--kv-soft); border-radius: 999px; }

.kv-hero-item {
	display: flex;
	gap: 12px;
	width: 100%;
	text-align: left;
	background: var(--kv-paper);
	border: 1px solid var(--kv-line);
	border-radius: 18px;
	padding: 10px;
	cursor: pointer;
	transition: .15s;
}
.kv-hero-item:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(79,52,28,.1); }
.kv-hero-item.is-active {
	box-shadow: inset 0 0 0 2px var(--kv-accent);
	background: #fff;
}

.kv-hero-item__thumb {
	width: 72px;
	height: 72px;
	border-radius: 12px;
	background-size: cover;
	background-position: center;
	flex-shrink: 0;
}
.kv-hero-item__thumb--noimg {
	background: linear-gradient(135deg, var(--kv-accent), var(--kv-accent-2));
}

.kv-hero-item__text {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}
.kv-hero-item__label {
	display: inline-block;
	width: fit-content;
	background: #2f2118;
	color: #fff;
	font-size: calc(11px * var(--kv-fs));
	font-weight: 800;
	padding: 3px 8px;
	border-radius: 999px;
}
.kv-hero-item__title {
	font-weight: 800;
	font-size: calc(15px * var(--kv-fs));
	line-height: 1.25;
	color: var(--kv-text);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.kv-hero-item__date {
	color: var(--kv-accent);
	font-weight: 700;
	font-size: calc(13px * var(--kv-fs));
}

/* Тонкая полоса быстрых ссылок */
.kv-hero-quick {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 12px;
	margin-top: 16px;
}
.kv-hero-quick a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 14px 16px;
	border-radius: 16px;
	background: rgba(255,250,242,.7);
	border: 1px solid var(--kv-line);
	font-size: calc(14px * var(--kv-fs));
	transition: .2s;
}
.kv-hero-quick a:hover { transform: translateY(-2px); box-shadow: var(--kv-shadow); color: var(--kv-accent); }
.kv-hero-quick span { color: var(--kv-muted); white-space: nowrap; }

@media (prefers-reduced-motion: reduce) {
	.kv-hero-slide { transition: none; }
}

/* ========================================================================
   Произвольные блоки под слайдером (виджет-зона home-promo)
   ======================================================================== */
.kv-promo-grid {
	display: grid;
	gap: 18px;
	align-items: start;
	grid-template-columns: repeat(3, 1fr);
}
/* Раскладка по числу заполненных зон */
.kv-promo-grid--1 { grid-template-columns: 1fr; }
.kv-promo-grid--2 { grid-template-columns: 2fr 1fr; }
.kv-promo-grid--3 { grid-template-columns: repeat(3, 1fr); }

/* Колонка-зона: внутри может быть несколько виджетов, они стопкой */
.kv-promo-col {
	display: grid;
	gap: 18px;
	align-content: start;
	min-width: 0;
}

.kv-promo {
	min-width: 0; /* чтобы широкий контент (iframe/таблицы) не ломал сетку */
	background: var(--kv-paper);
	border: 1px solid rgba(255,255,255,.75);
	border-radius: 24px;
	padding: 22px;
	box-shadow: 0 12px 34px rgba(79,52,28,.08);
	overflow: hidden;
}

.kv-promo__title {
	margin: 0 0 14px;
	font-size: calc(19px * var(--kv-fs));
	letter-spacing: -.02em;
}

/* Любой медиа-контент подгоняется по ширине колонки */
.kv-promo img,
.kv-promo svg,
.kv-promo canvas,
.kv-promo video,
.kv-promo embed,
.kv-promo object {
	max-width: 100%;
	height: auto;
}
.kv-promo img {
	display: block;
	margin-left: auto;
	margin-right: auto;
	border-radius: 14px;
}
.kv-promo iframe {
	display: block;
	width: 100%;
	max-width: 100%;
	border: 0;
	border-radius: 14px;
}
.kv-promo table { width: 100%; }
.kv-promo > *:last-child { margin-bottom: 0; }

/* ========================================================================
   Sections
   ======================================================================== */
.kv-section { padding: 48px 0 0; }

.kv-section-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 22px;
	margin-bottom: 22px;
}

.kv-section-title {
	margin: 0;
	font-size: clamp(calc(28px * var(--kv-fs)), calc(4vw * var(--kv-fs)), calc(46px * var(--kv-fs)));
	letter-spacing: -.05em;
	line-height: 1;
}

.kv-section-note {
	max-width: 500px;
	color: var(--kv-muted);
	line-height: 1.55;
	margin: 0;
}

.kv-section-link {
	color: var(--kv-accent);
	font-weight: 800;
	white-space: nowrap;
}

/* ========================================================================
   Quick cards (Разделы портала)
   ======================================================================== */
.kv-quick-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}

.kv-quick-card {
	background: var(--kv-paper);
	border: 1px solid rgba(255,255,255,.72);
	border-radius: 24px;
	padding: 22px;
	min-height: 150px;
	box-shadow: 0 12px 34px rgba(79, 52, 28, .09);
	transition: .2s;
	display: block;
}

.kv-quick-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--kv-shadow);
}

.kv-quick-card__icon {
	width: 44px;
	height: 44px;
	border-radius: 16px;
	display: grid;
	place-items: center;
	color: #fff;
	background: var(--kv-accent-3);
	margin-bottom: 16px;
	font-size: calc(22px * var(--kv-fs));
}

.kv-quick-card:nth-child(2) .kv-quick-card__icon { background: var(--kv-accent); }
.kv-quick-card:nth-child(3) .kv-quick-card__icon { background: var(--kv-accent-2); }
.kv-quick-card:nth-child(4) .kv-quick-card__icon { background: #73523b; }

.kv-quick-card h3 {
	margin: 0 0 8px;
	font-size: calc(19px * var(--kv-fs));
}

.kv-quick-card p {
	margin: 0;
	color: var(--kv-muted);
	line-height: 1.45;
	font-size: calc(14px * var(--kv-fs));
}

/* ========================================================================
   Posters (Афиша на главной)
   ======================================================================== */
.kv-poster-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 18px;
}

.kv-poster {
	border-radius: 28px;
	overflow: hidden;
	background: var(--kv-paper);
	box-shadow: 0 12px 34px rgba(79, 52, 28, .10);
	border: 1px solid rgba(255,255,255,.75);
	transition: .2s;
}

.kv-poster:hover {
	transform: translateY(-5px);
	box-shadow: var(--kv-shadow);
}

.kv-poster__image {
	height: 230px;
	background-size: cover;
	background-position: center;
	position: relative;
}

.kv-poster__tag {
	position: absolute;
	left: 16px;
	top: 16px;
	background: rgba(255,250,242,.88);
	color: var(--kv-accent);
	padding: 8px 11px;
	border-radius: 999px;
	font-size: calc(13px * var(--kv-fs));
	font-weight: 800;
	backdrop-filter: blur(10px);
}

.kv-poster__body { padding: 20px; }

.kv-poster__date {
	color: var(--kv-accent-2);
	font-weight: 800;
	font-size: calc(14px * var(--kv-fs));
	margin-bottom: 10px;
}

.kv-poster h3 {
	margin: 0 0 10px;
	font-size: calc(22px * var(--kv-fs));
	letter-spacing: -.03em;
}

.kv-poster p {
	margin: 0;
	color: var(--kv-muted);
	line-height: 1.52;
}

/* ========================================================================
   Split (Культура · Новости)
   ======================================================================== */
.kv-split {
	display: grid;
	grid-template-columns: .9fr 1.1fr;
	gap: 22px;
	align-items: stretch;
}

.kv-culture-block {
	border-radius: 32px;
	overflow: hidden;
	background:
		linear-gradient(rgba(47,33,24,.14), rgba(47,33,24,.54)),
		var(--kv-culture-img, url("https://images.unsplash.com/photo-1514525253161-7a46d19cd819?auto=format&fit=crop&w=1200&q=80")) center/cover;
	min-height: 430px;
	color: #fff;
	display: flex;
	align-items: flex-end;
	padding: 30px;
	box-shadow: var(--kv-shadow);
}

.kv-culture-block h2 {
	margin: 0 0 12px;
	font-size: calc(38px * var(--kv-fs));
	letter-spacing: -.04em;
	line-height: 1;
}

.kv-culture-block p {
	margin: 0;
	color: rgba(255,255,255,.84);
	line-height: 1.55;
	max-width: 520px;
}

/* News list */
.kv-news-list { display: grid; gap: 14px; }

.kv-news-item {
	display: grid;
	grid-template-columns: 112px 1fr;
	gap: 18px;
	background: var(--kv-paper);
	border-radius: 24px;
	padding: 14px;
	border: 1px solid rgba(255,255,255,.75);
	box-shadow: 0 10px 28px rgba(79,52,28,.08);
}

.kv-news-date {
	border-radius: 20px;
	background: #efe0cd;
	display: grid;
	place-items: center;
	text-align: center;
	font-weight: 900;
	color: var(--kv-accent);
	min-height: 94px;
	font-size: calc(30px * var(--kv-fs));
	line-height: 1;
}

.kv-news-date span {
	display: block;
	color: var(--kv-muted);
	font-size: calc(13px * var(--kv-fs));
	font-weight: 700;
	margin-top: 4px;
	text-transform: lowercase;
}

.kv-news-item h3 {
	margin: 4px 0 8px;
	font-size: calc(20px * var(--kv-fs));
}

.kv-news-item h3 a:hover { color: var(--kv-accent); }

.kv-news-item p {
	margin: 0;
	color: var(--kv-muted);
	line-height: 1.45;
}

.kv-news-item__meta {
	color: var(--kv-muted);
	font-size: calc(13px * var(--kv-fs));
	margin-top: 10px;
}

/* ========================================================================
   Official block
   ======================================================================== */
.kv-official {
	background: rgba(255,250,242,.72);
	border-top: 1px solid var(--kv-line);
	border-bottom: 1px solid var(--kv-line);
	margin-top: 54px;
	padding: 42px 0;
}

.kv-official-grid {
	width: min(var(--kv-max), calc(100% - 32px));
	margin: 0 auto;
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: 16px;
}

.kv-official-card {
	border-radius: 22px;
	background: #fffaf2;
	padding: 20px;
	border: 1px solid var(--kv-line);
	display: block;
	transition: .2s;
}

.kv-official-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--kv-shadow);
}

.kv-official-card h3 {
	margin: 0 0 8px;
	font-size: calc(18px * var(--kv-fs));
}

.kv-official-card p {
	margin: 0;
	color: var(--kv-muted);
	line-height: 1.5;
	font-size: calc(14px * var(--kv-fs));
}

/* ========================================================================
   Section hint (под афишей-демо и подобными)
   ======================================================================== */
.kv-section-hint {
	margin: 16px 4px 0;
	font-size: calc(13px * var(--kv-fs));
	color: var(--kv-muted);
	font-style: italic;
}

/* Постер-карточка: ссылка на всю карточку */
.kv-poster__link {
	display: block;
	color: inherit;
}
.kv-poster__link:hover h3 {
	color: var(--kv-accent);
}

/* Постер без featured image — мягкий градиентный плейсхолдер с иконкой */
.kv-poster__image--placeholder {
	background:
		radial-gradient(circle at 20% 18%, rgba(255,255,255,.32), transparent 38%),
		linear-gradient(135deg, var(--kv-accent), var(--kv-accent-2));
	display: grid;
	place-items: center;
	position: relative;
	overflow: hidden;
}
.kv-poster__image--placeholder[data-category="vystavka"]      { background: radial-gradient(circle at 20% 18%, rgba(255,255,255,.32), transparent 38%), linear-gradient(135deg, #2f5d50, #6f9b6c); }
.kv-poster__image--placeholder[data-category="spektakl"]       { background: radial-gradient(circle at 20% 18%, rgba(255,255,255,.32), transparent 38%), linear-gradient(135deg, #73523b, #c9873d); }
.kv-poster__image--placeholder[data-category="master-klass"]   { background: radial-gradient(circle at 20% 18%, rgba(255,255,255,.32), transparent 38%), linear-gradient(135deg, #9c3f2f, #d76a45); }
.kv-poster__image--placeholder[data-category="detiam"],
.kv-poster__image--placeholder[data-category="detyam"]         { background: radial-gradient(circle at 20% 18%, rgba(255,255,255,.32), transparent 38%), linear-gradient(135deg, #c9873d, #ead9c2); }
.kv-poster__image--placeholder[data-category="prazdnik"]       { background: radial-gradient(circle at 20% 18%, rgba(255,255,255,.32), transparent 38%), linear-gradient(135deg, #9c3f2f, #c9873d 60%, #2f5d50); }
.kv-poster__image--placeholder[data-category="besplatno"]      { background: radial-gradient(circle at 20% 18%, rgba(255,255,255,.32), transparent 38%), linear-gradient(135deg, #2f5d50, #c9873d); }

.kv-poster__placeholder-glyph {
	font-size: calc(110px * var(--kv-fs));
	color: rgba(255,255,255,.55);
	line-height: 1;
	text-shadow: 0 8px 22px rgba(0,0,0,.22);
	user-select: none;
}

/* ========================================================================
   Афиша (archive-kv_event): фильтры, календарь, event-list
   ======================================================================== */
.kv-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 24px;
	padding: 12px;
	border-radius: 24px;
	background: rgba(255,250,242,.65);
	border: 1px solid rgba(255,255,255,.7);
	box-shadow: 0 10px 28px rgba(79,52,28,.06);
}

.kv-filter-pill {
	border: 0;
	cursor: pointer;
	border-radius: 999px;
	padding: 11px 15px;
	color: #4b3a2d;
	background: rgba(255,255,255,.72);
	font-weight: 700;
	box-shadow: inset 0 0 0 1px var(--kv-line);
	font-size: calc(14px * var(--kv-fs));
	transition: .2s;
}
.kv-filter-pill:hover {
	transform: translateY(-1px);
}
.kv-filter-pill.is-active {
	background: var(--kv-accent);
	color: #fff;
	box-shadow: 0 12px 24px rgba(156,63,47,.18);
}

.kv-event-layout {
	display: grid;
	grid-template-columns: .78fr 1.22fr;
	gap: 24px;
	align-items: start;
}

.kv-calendar-card {
	position: sticky;
	top: 112px;
	background: rgba(255,250,242,.82);
	border-radius: 30px;
	padding: 24px;
	border: 1px solid rgba(255,255,255,.72);
	box-shadow: var(--kv-shadow);
}

.kv-calendar-card h2 {
	margin: 0 0 18px;
	font-size: calc(26px * var(--kv-fs));
	letter-spacing: -.04em;
}

.kv-month-line {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	color: var(--kv-muted);
	margin-bottom: 16px;
	font-weight: 700;
	text-transform: capitalize;
}

.kv-calendar-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 8px;
}

.kv-day-name,
.kv-day {
	min-height: 38px;
	display: grid;
	place-items: center;
	border-radius: 13px;
	font-size: calc(14px * var(--kv-fs));
}

.kv-day-name {
	color: var(--kv-muted);
	font-weight: 800;
}

.kv-day {
	background: rgba(255,255,255,.58);
	border: 1px solid rgba(45,36,28,.08);
	font-weight: 700;
	cursor: default;
	transition: .15s;
}

.kv-day.is-muted { opacity: .35; }
.kv-day.is-event {
	background: #f1d1bd;
	color: var(--kv-accent);
	box-shadow: inset 0 0 0 1px rgba(156,63,47,.14);
	cursor: pointer;
}
.kv-day.is-event:hover { transform: translateY(-1px); }
.kv-day.is-today {
	background: var(--kv-accent-3);
	color: #fff;
}
.kv-day.is-selected {
	outline: 2px solid var(--kv-accent);
	outline-offset: 2px;
}

.kv-calendar-note {
	margin-top: 18px;
	padding: 16px;
	border-radius: 20px;
	background: #fff5e6;
	color: var(--kv-muted);
	line-height: 1.5;
	font-size: calc(14px * var(--kv-fs));
}

/* Список событий */
.kv-event-list {
	display: grid;
	gap: 18px;
}

.kv-event-item {
	display: grid;
	grid-template-columns: 180px 1fr;
	gap: 18px;
	overflow: hidden;
	background: var(--kv-paper);
	border-radius: 28px;
	border: 1px solid rgba(255,255,255,.75);
	box-shadow: 0 12px 34px rgba(79,52,28,.09);
	transition: .2s;
}

.kv-event-item.is-hidden { display: none; }

.kv-event-item:hover {
	transform: translateY(-4px);
	box-shadow: var(--kv-shadow);
}

.kv-event-date {
	min-height: 178px;
	padding: 20px;
	background:
		linear-gradient(145deg, rgba(156,63,47,.94), rgba(201,135,61,.86)),
		radial-gradient(circle at top right, rgba(255,255,255,.22), transparent 40%);
	color: #fff;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}

.kv-event-date__num {
	font-size: calc(58px * var(--kv-fs));
	font-weight: 900;
	line-height: .86;
	letter-spacing: -.06em;
}

.kv-event-date__month {
	font-size: calc(18px * var(--kv-fs));
	font-weight: 800;
	text-transform: lowercase;
}

.kv-event-date__time {
	display: inline-flex;
	width: fit-content;
	border-radius: 999px;
	background: rgba(255,255,255,.16);
	border: 1px solid rgba(255,255,255,.22);
	padding: 7px 10px;
	font-size: calc(14px * var(--kv-fs));
	font-weight: 700;
}

.kv-event-content {
	padding: 22px 22px 22px 0;
	display: grid;
	align-content: center;
}

.kv-event-content h3 {
	margin: 0 0 10px;
	font-size: calc(26px * var(--kv-fs));
	letter-spacing: -.04em;
}
.kv-event-content h3 a:hover { color: var(--kv-accent); }

.kv-event-content p {
	margin: 0 0 14px;
	color: var(--kv-muted);
	line-height: 1.55;
}

.kv-event-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 12px;
}

.kv-tag {
	border-radius: 999px;
	padding: 7px 10px;
	background: #f1e2cf;
	color: #76513b;
	font-size: calc(13px * var(--kv-fs));
	font-weight: 800;
}
.kv-tag--age {
	background: var(--kv-accent-3);
	color: #fff;
}
.kv-tag--pushka {
	background: var(--kv-accent);
	color: #fff;
}

.kv-event-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	color: #5a4a3d;
	font-size: calc(14px * var(--kv-fs));
	font-weight: 700;
}

.kv-btn-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 16px;
}

/* Single event */
.kv-event-single {
	display: grid;
	grid-template-columns: 1.4fr .6fr;
	gap: 24px;
	align-items: start;
}

.kv-event-single__aside {
	position: sticky;
	top: 112px;
	display: grid;
	gap: 16px;
}

.kv-event-facts {
	list-style: none;
	margin: 0 0 18px;
	padding: 0;
	display: grid;
	gap: 10px;
}
.kv-event-facts li {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	padding: 11px 14px;
	background: rgba(255,255,255,.58);
	border: 1px solid var(--kv-line);
	border-radius: 14px;
	font-size: calc(14px * var(--kv-fs));
}
.kv-event-facts li span { color: var(--kv-muted); }
.kv-event-facts__cta { width: 100%; }

/* Карточка ближайшего события в hero — теперь ссылка */
.kv-event-card__link {
	display: block;
	color: inherit;
}
.kv-event-card__link:hover .kv-date-meta strong { color: var(--kv-accent); }

/* ========================================================================
   Достижения (archive-kv_achievement)
   ======================================================================== */

.kv-featured-achievement {
	display: grid;
	grid-template-columns: 1.05fr .95fr;
	gap: 24px;
	align-items: stretch;
	margin-bottom: 28px;
}

.kv-achievement-hero-card {
	min-height: 390px;
	border-radius: 34px;
	overflow: hidden;
	background:
		linear-gradient(110deg, rgba(47,33,24,.84), rgba(47,33,24,.18)),
		linear-gradient(135deg, var(--kv-accent), var(--kv-accent-2));
	color: #fff;
	padding: 34px;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	box-shadow: var(--kv-shadow);
	transition: .2s;
}
.kv-achievement-hero-card:hover {
	transform: translateY(-4px);
}

.kv-achievement-hero-card h2 {
	margin: 16px 0 12px;
	font-size: clamp(calc(32px * var(--kv-fs)), calc(4vw * var(--kv-fs)), calc(52px * var(--kv-fs)));
	letter-spacing: -.06em;
	line-height: .96;
	max-width: 640px;
	color: #fff;
}

.kv-achievement-hero-card p {
	margin: 0;
	color: rgba(255,255,255,.84);
	line-height: 1.55;
	max-width: 620px;
}

.kv-stats-panel {
	display: grid;
	gap: 14px;
}

.kv-stat-card {
	background: var(--kv-paper);
	border-radius: 26px;
	padding: 24px;
	border: 1px solid rgba(255,255,255,.75);
	box-shadow: 0 12px 34px rgba(79,52,28,.08);
}

.kv-stat-card strong {
	display: block;
	font-size: calc(42px * var(--kv-fs));
	letter-spacing: -.06em;
	color: var(--kv-accent);
	line-height: 1;
	margin-bottom: 8px;
	font-weight: 900;
}

.kv-stat-card span {
	color: var(--kv-muted);
	line-height: 1.4;
}

/* Витрина наград */
.kv-awards-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 18px;
}

.kv-award-card {
	background: var(--kv-paper);
	border-radius: 28px;
	overflow: hidden;
	border: 1px solid rgba(255,255,255,.75);
	box-shadow: 0 12px 34px rgba(79,52,28,.09);
	transition: .2s;
	position: relative;
}

.kv-award-card.is-hidden { display: none; }

.kv-award-card:hover {
	transform: translateY(-5px);
	box-shadow: var(--kv-shadow);
}

.kv-award-card__link {
	display: block;
	color: inherit;
}

.kv-award-preview {
	height: 250px;
	padding: 22px;
	background:
		radial-gradient(circle at 25% 15%, rgba(201,135,61,.32), transparent 34%),
		linear-gradient(145deg, #fff9ed, #ead3b4);
	display: grid;
	place-items: center;
	position: relative;
}

.kv-award-preview__image {
	width: 100%;
	height: 100%;
	background-size: cover;
	background-position: center;
	border-radius: 12px;
}

/* «Лист диплома» — CSS-fallback когда нет загруженного скана */
.kv-diploma-sheet {
	width: 78%;
	height: 100%;
	background: #fffdf7;
	border-radius: 12px;
	border: 8px solid #d8b46d;
	box-shadow: 0 18px 32px rgba(89,62,34,.18);
	display: grid;
	place-items: center;
	text-align: center;
	padding: 18px;
	position: relative;
	overflow: hidden;
}

.kv-diploma-sheet::before,
.kv-diploma-sheet::after {
	content: "";
	position: absolute;
	width: 86px;
	height: 86px;
	border-radius: 50%;
	border: 1px solid rgba(201,135,61,.22);
}
.kv-diploma-sheet::before { left: -34px; top: -34px; }
.kv-diploma-sheet::after  { right: -34px; bottom: -34px; }

.kv-diploma-title {
	font-family: Georgia, "Times New Roman", serif;
	font-size: calc(22px * var(--kv-fs));
	font-weight: 900;
	color: var(--kv-accent);
	line-height: 1.05;
	margin-bottom: 10px;
}

.kv-diploma-small {
	color: #7b634f;
	font-size: calc(13px * var(--kv-fs));
	line-height: 1.35;
}

.kv-award-body {
	padding: 20px;
}

.kv-award-year {
	display: inline-flex;
	border-radius: 999px;
	padding: 7px 10px;
	background: #f1e2cf;
	color: var(--kv-accent);
	font-weight: 900;
	font-size: calc(13px * var(--kv-fs));
	margin-bottom: 12px;
}

.kv-award-body h3 {
	margin: 0 0 10px;
	font-size: calc(22px * var(--kv-fs));
	letter-spacing: -.04em;
}

.kv-award-body p {
	margin: 0;
	color: var(--kv-muted);
	line-height: 1.5;
}

.kv-award-card__file {
	position: absolute;
	right: 16px;
	top: 16px;
	z-index: 2;
	padding: 8px 12px;
	background: rgba(47,33,24,.78);
	color: #fff;
	font-size: calc(12px * var(--kv-fs));
	font-weight: 800;
	border-radius: 999px;
	backdrop-filter: blur(8px);
}
.kv-award-card__file:hover {
	background: var(--kv-accent);
}

/* Галерея «Моменты побед» */
.kv-gallery-strip {
	display: grid;
	grid-template-columns: 1.2fr .8fr .8fr;
	gap: 16px;
}

.kv-gallery-photo {
	display: block;
	min-height: 230px;
	border-radius: 28px;
	overflow: hidden;
	background-size: cover;
	background-position: center;
	box-shadow: 0 12px 34px rgba(79,52,28,.1);
	position: relative;
	transition: .2s;
}
.kv-gallery-photo:hover {
	transform: translateY(-3px);
	box-shadow: var(--kv-shadow);
}

.kv-gallery-photo::after {
	content: attr(data-caption);
	position: absolute;
	left: 14px;
	right: 14px;
	bottom: 14px;
	padding: 10px 12px;
	border-radius: 16px;
	background: rgba(47,33,24,.72);
	color: #fff;
	font-weight: 800;
	backdrop-filter: blur(8px);
	font-size: calc(14px * var(--kv-fs));
}

/* Номинация в single */
.kv-achievement-nomination {
	background: var(--kv-paper-2);
	border-radius: 16px;
	padding: 14px 18px;
	margin: 0 0 18px;
	font-size: calc(15px * var(--kv-fs));
	border: 1px solid var(--kv-line);
}

/* ========================================================================
   Коллективы (archive-kv_collective + блок на главной)
   ======================================================================== */
.kv-collectives-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 18px;
}

.kv-collective-card {
	background: var(--kv-paper);
	border-radius: 28px;
	overflow: hidden;
	border: 1px solid rgba(255,255,255,.75);
	box-shadow: 0 12px 34px rgba(79,52,28,.09);
	transition: .2s;
}
.kv-collective-card.is-hidden { display: none; }
.kv-collective-card:hover {
	transform: translateY(-5px);
	box-shadow: var(--kv-shadow);
}

.kv-collective-card__link {
	display: block;
	color: inherit;
}

.kv-collective-card__media {
	height: 180px;
	background-size: cover;
	background-position: center;
	position: relative;
	display: grid;
	place-items: center;
}

.kv-collective-card__media--placeholder {
	background:
		radial-gradient(circle at 25% 18%, rgba(255,255,255,.28), transparent 40%),
		linear-gradient(135deg, var(--kv-accent-3), var(--kv-accent-2));
}

.kv-collective-card__glyph {
	font-size: calc(64px * var(--kv-fs));
	color: rgba(255,255,255,.6);
	line-height: 1;
}

.kv-collective-card__kind {
	position: absolute;
	left: 14px;
	top: 14px;
	background: rgba(255,250,242,.9);
	color: var(--kv-accent);
	padding: 6px 10px;
	border-radius: 999px;
	font-size: calc(12px * var(--kv-fs));
	font-weight: 800;
	backdrop-filter: blur(8px);
}

.kv-collective-card__enroll {
	position: absolute;
	right: 14px;
	top: 14px;
	background: var(--kv-accent-3);
	color: #fff;
	padding: 6px 10px;
	border-radius: 999px;
	font-size: calc(12px * var(--kv-fs));
	font-weight: 800;
}

.kv-collective-card__body {
	padding: 18px 20px 20px;
}

.kv-collective-card__body h3 {
	margin: 0 0 8px;
	font-size: calc(20px * var(--kv-fs));
	letter-spacing: -.03em;
}
.kv-collective-card__link:hover h3 { color: var(--kv-accent); }

.kv-collective-card__body p {
	margin: 0 0 12px;
	color: var(--kv-muted);
	line-height: 1.45;
	font-size: calc(14px * var(--kv-fs));
}

.kv-collective-card__meta {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 6px;
}
.kv-collective-card__meta li {
	color: #5a4a3d;
	font-size: calc(13px * var(--kv-fs));
	display: flex;
	gap: 8px;
	align-items: baseline;
}

/* Бейдж набора в single */
.kv-enroll-badge {
	display: inline-block;
	background: var(--kv-accent-3);
	color: #fff;
	font-weight: 800;
	font-size: calc(13px * var(--kv-fs));
	padding: 8px 12px;
	border-radius: 999px;
	margin: 0 0 16px;
}

/* ========================================================================
   Шаблон страницы «Документы (список карточек)»
   Списки в содержимом страницы превращаются в карточки документов.
   ======================================================================== */

/* Вступительный текст */
.kv-doc-page > p,
.kv-doc-page > h2,
.kv-doc-page > h3 {
	max-width: 760px;
	line-height: 1.6;
}
.kv-doc-page > p { color: var(--kv-muted); }
.kv-doc-page > h2,
.kv-doc-page > h3 { letter-spacing: -.02em; margin: 1.4em 0 .6em; }

/* Любой список на странице → сетка карточек */
.kv-doc-page ul,
.kv-doc-page ol {
	list-style: none;
	margin: 18px 0 0;
	padding: 0;
	display: grid;
	gap: 14px;
}

.kv-doc-page li {
	display: flex;
	align-items: center;
	gap: 16px;
	background: var(--kv-paper);
	border: 1px solid rgba(255,255,255,.8);
	border-radius: 20px;
	padding: 16px 20px;
	box-shadow: 0 10px 26px rgba(79,52,28,.07);
	transition: transform .18s ease, box-shadow .18s ease;
}
.kv-doc-page li:hover {
	transform: translateY(-3px);
	box-shadow: var(--kv-shadow);
}

/* Иконка документа — лист с загнутым уголком и строками текста */
.kv-doc-page li::before {
	content: "";
	flex-shrink: 0;
	width: 46px;
	height: 54px;
	background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'><path d='M6 2h8l4 4v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z' fill='%23fffdf7' stroke='%23e0cdb2' stroke-width='1.1'/><path d='M14 2l4 4h-3a1 1 0 0 1-1-1z' fill='%23ead9c2'/><rect x='7' y='12.4' width='9' height='1.7' rx='.85' fill='%239c3f2f'/><rect x='7' y='15.6' width='9' height='1.7' rx='.85' fill='%23c9873d'/><rect x='7' y='18.8' width='6' height='1.7' rx='.85' fill='%23c9873d'/></svg>") center / contain no-repeat;
	filter: drop-shadow(0 6px 12px rgba(79,52,28,.16));
	transition: transform .18s ease;
}
.kv-doc-page li:hover::before {
	transform: rotate(-4deg) scale(1.04);
}

/* Текст/ссылка документа */
.kv-doc-page li,
.kv-doc-page li a {
	font-size: calc(16px * var(--kv-fs));
	font-weight: 700;
	letter-spacing: -.01em;
}
.kv-doc-page li a {
	flex: 1;
	min-width: 0;
	color: var(--kv-text);
	text-decoration: none;
}
.kv-doc-page li a:hover { color: var(--kv-accent); }

/* Стрелка-скачивание справа */
.kv-doc-page li::after {
	content: "↓";
	margin-left: auto;
	flex-shrink: 0;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	background: #fff7ec;
	color: var(--kv-accent);
	border: 1px solid var(--kv-line);
	font-weight: 800;
}
.kv-doc-page li:hover::after {
	background: var(--kv-accent);
	color: #fff;
	border-color: var(--kv-accent);
}

/* ========================================================================
   Шаблон «Список разделов (карточки)»
   Список в содержимом страницы → карточки-категории (сетка 2 колонки).
   ======================================================================== */

/* Вступительный текст */
.kv-subpages-page > p,
.kv-subpages-page > h2,
.kv-subpages-page > h3 {
	max-width: 760px;
	line-height: 1.6;
}
.kv-subpages-page > p { color: var(--kv-muted); }
.kv-subpages-page > h2,
.kv-subpages-page > h3 { letter-spacing: -.02em; margin: 1.4em 0 .6em; }

/* Список → сетка карточек */
.kv-subpages-page ul,
.kv-subpages-page ol {
	list-style: none;
	margin: 18px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 18px;
}

.kv-subpages-page li {
	position: relative;
	display: flex;
	align-items: center;
	gap: 16px;
	overflow: hidden;
	background: var(--kv-paper);
	border: 1px solid rgba(255,255,255,.8);
	border-radius: 24px;
	padding: 22px 24px 22px 28px;
	box-shadow: inset 5px 0 0 0 var(--kv-accent), 0 12px 34px rgba(79,52,28,.08);
	transition: transform .2s ease, box-shadow .2s ease;
}
.kv-subpages-page li:hover {
	transform: translateY(-4px);
	box-shadow: inset 5px 0 0 0 var(--kv-accent), var(--kv-shadow);
}

/* Иконка-категория слева */
.kv-subpages-page li::before {
	content: "▦";
	flex-shrink: 0;
	width: 52px;
	height: 52px;
	border-radius: 14px;
	display: grid;
	place-items: center;
	font-size: calc(22px * var(--kv-fs));
	color: #fff;
	background: linear-gradient(135deg, var(--kv-accent-3), var(--kv-accent-2));
}

/* Название раздела (ссылка) */
.kv-subpages-page li,
.kv-subpages-page li a {
	font-size: calc(19px * var(--kv-fs));
	font-weight: 800;
	letter-spacing: -.02em;
}
.kv-subpages-page li a {
	flex: 1;
	min-width: 0;
	color: var(--kv-text);
	text-decoration: none;
	line-height: 1.2;
}
.kv-subpages-page li a:hover { color: var(--kv-accent); }

/* Стрелка «перейти» справа */
.kv-subpages-page li::after {
	content: "→";
	margin-left: auto;
	flex-shrink: 0;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	background: #fff7ec;
	color: var(--kv-accent);
	border: 1px solid var(--kv-line);
	font-weight: 800;
	transition: .2s;
}
.kv-subpages-page li:hover::after {
	background: var(--kv-accent);
	color: #fff;
	border-color: var(--kv-accent);
	transform: translateX(3px);
}

/* ========================================================================
   Inner page hero
   ======================================================================== */
.kv-page-hero {
	margin: 34px auto 0;
	border-radius: 34px;
	overflow: hidden;
	min-height: 360px;
	color: #fff;
	position: relative;
	box-shadow: var(--kv-shadow);
	display: grid;
	align-items: end;
	padding: 42px;
	background:
		linear-gradient(110deg, rgba(40,28,18,.92), rgba(40,28,18,.42) 60%, rgba(40,28,18,.12)),
		var(--hero-img, linear-gradient(135deg, #2f5d50, #9c3f2f)) center/cover;
}

.kv-page-hero__title {
	margin: 16px 0 16px;
	max-width: 780px;
	font-size: clamp(calc(42px * var(--kv-fs)), calc(6vw * var(--kv-fs)), calc(76px * var(--kv-fs)));
	line-height: .94;
	letter-spacing: -.06em;
}

.kv-page-hero__lead {
	margin: 0;
	max-width: 680px;
	color: rgba(255,255,255,.86);
	font-size: calc(18px * var(--kv-fs));
	line-height: 1.6;
}

/* ========================================================================
   Page header (no thumbnail fallback)
   ======================================================================== */
.kv-page-header {
	padding-top: 42px;
}

.kv-breadcrumbs {
	margin-bottom: 16px;
	font-size: calc(14px * var(--kv-fs));
}
.kv-breadcrumbs__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 0;
}
.kv-breadcrumbs__item {
	display: inline-flex;
	align-items: center;
	color: var(--kv-muted);
}
.kv-breadcrumbs__item:not(:first-child)::before {
	content: "›";
	margin: 0 10px;
	color: var(--kv-muted);
	opacity: .55;
}
.kv-breadcrumbs__item a {
	color: var(--kv-muted);
	border-bottom: 1px solid transparent;
	padding-bottom: 1px;
	transition: color .15s ease, border-color .15s ease;
}
.kv-breadcrumbs__item a:hover {
	color: var(--kv-accent);
	border-bottom-color: currentColor;
}
.kv-breadcrumbs__item[aria-current="page"] {
	color: var(--kv-text);
	font-weight: 700;
}

/* ========================================================================
   Мета одиночной записи: дата и автор в виде «пилюль» с иконками
   ======================================================================== */
.kv-post-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin-top: 18px;
}

.kv-post-meta .kv-meta__date,
.kv-post-meta .kv-meta__author {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 9px 16px;
	border-radius: 999px;
	background: var(--kv-paper);
	border: 1px solid var(--kv-line);
	box-shadow: 0 4px 14px rgba(79,52,28,.06);
	font-size: calc(14px * var(--kv-fs));
	font-weight: 600;
	color: var(--kv-muted);
	line-height: 1;
	margin: 0;
}

.kv-post-meta .kv-meta__date::before,
.kv-post-meta .kv-meta__author::before {
	content: "";
	width: 15px;
	height: 15px;
	flex-shrink: 0;
	background-color: var(--kv-accent);
	-webkit-mask: var(--kv-meta-icon) center / contain no-repeat;
	mask: var(--kv-meta-icon) center / contain no-repeat;
}

.kv-post-meta .kv-meta__date {
	--kv-meta-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='3'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
}

.kv-post-meta .kv-meta__author {
	--kv-meta-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
}

.kv-post-meta .kv-meta__author a {
	color: var(--kv-accent);
	font-weight: 700;
}
.kv-post-meta .kv-meta__author a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Вариант на тёмной подложке hero */
.kv-post-meta--hero .kv-meta__date,
.kv-post-meta--hero .kv-meta__author {
	background: rgba(255,255,255,.14);
	border-color: rgba(255,255,255,.24);
	color: rgba(255,255,255,.92);
	backdrop-filter: blur(10px);
	box-shadow: none;
}
.kv-post-meta--hero .kv-meta__date::before,
.kv-post-meta--hero .kv-meta__author::before {
	background-color: var(--kv-accent-2);
}
.kv-post-meta--hero .kv-meta__author a {
	color: #fff;
}

/* Гасим декоративную полоску, которую плагин доступности навешивает
   на свой .kv-section-title — у нас класс совпадает, и она «затекает». */
.kv-section-head .kv-section-title::before,
.kv-page-header .kv-section-title::before {
	content: none;
}

/* ========================================================================
   Prose (стандартный контент страницы / записи)
   ======================================================================== */
.kv-prose {
	background: var(--kv-paper);
	border-radius: 24px;
	padding: 32px;
	border: 1px solid rgba(255,255,255,.75);
	box-shadow: 0 10px 28px rgba(79,52,28,.08);
	line-height: 1.65;
}

.kv-prose h1,
.kv-prose h2,
.kv-prose h3,
.kv-prose h4 {
	letter-spacing: -.03em;
	margin-top: 1.4em;
}

.kv-prose a {
	color: var(--kv-accent);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.kv-prose img {
	max-width: 100%;
	height: auto;
	border-radius: 18px;
}

/* --- Выравнивание изображений из редактора (классический и блочный) --- */
.kv-prose figure {
	margin: 1.4em 0;
	max-width: 100%;
}
.kv-prose::after {
	content: "";
	display: block;
	clear: both;
}
.kv-prose .aligncenter,
.kv-prose img.aligncenter,
.kv-prose figure.aligncenter,
.kv-prose .wp-caption.aligncenter {
	display: block;
	margin-left: auto;
	margin-right: auto;
	text-align: center;
}
.kv-prose .wp-block-image.aligncenter img,
.kv-prose figure.aligncenter img {
	margin-left: auto;
	margin-right: auto;
}
.kv-prose .alignleft,
.kv-prose .wp-block-image .alignleft {
	float: left;
	margin: 6px 26px 14px 0;
	max-width: 50%;
}
.kv-prose .alignright,
.kv-prose .wp-block-image .alignright {
	float: right;
	margin: 6px 0 14px 26px;
	max-width: 50%;
}
.kv-prose .wp-caption {
	max-width: 100%;
}
.kv-prose .wp-caption-text,
.kv-prose figcaption {
	font-size: calc(14px * var(--kv-fs));
	color: var(--kv-muted);
	text-align: center;
	margin-top: 8px;
}

/* Фото в контенте открываются в лайтбоксе */
.kv-prose a.kv-lightbox,
.kv-prose a.kv-lightbox img {
	cursor: zoom-in;
}

.kv-prose blockquote {
	border-left: 4px solid var(--kv-accent-2);
	margin: 1.2em 0;
	padding: 6px 18px;
	color: var(--kv-muted);
	background: var(--kv-paper-2);
	border-radius: 12px;
}

/* ========================================================================
   Pagination
   ======================================================================== */
.pagination,
.nav-links {
	margin-top: 32px;
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: center;
}

.pagination .page-numbers,
.nav-links a,
.nav-links span {
	display: inline-grid;
	place-items: center;
	min-width: 42px;
	height: 42px;
	padding: 0 14px;
	border-radius: 999px;
	background: var(--kv-paper);
	border: 1px solid var(--kv-line);
	color: var(--kv-text);
	font-weight: 700;
}

.pagination .current,
.nav-links .current {
	background: var(--kv-accent);
	color: #fff;
	border-color: var(--kv-accent);
}

/* ========================================================================
   Search
   ======================================================================== */
.kv-search-form {
	display: flex;
	gap: 10px;
	max-width: 500px;
	margin-top: 14px;
}
.kv-search-form__field {
	flex: 1;
	min-width: 0;
	padding: 12px 16px;
	border-radius: 999px;
	border: 1px solid var(--kv-line);
	background: var(--kv-paper);
	font-size: calc(15px * var(--kv-fs));
	color: var(--kv-text);
}
.kv-search-form__field:focus {
	outline: none;
	box-shadow: 0 0 0 3px rgba(156,63,47,.16);
}

/* ========================================================================
   404
   ======================================================================== */
.kv-404 { text-align: left; padding: 80px 0; }
.kv-404__actions {
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
	align-items: center;
	margin-top: 16px;
}

/* ========================================================================
   Footer
   ======================================================================== */
.kv-footer {
	background: #2f2118;
	color: rgba(255,255,255,.78);
	margin-top: 64px;
	padding: 34px 0 0;
}

.kv-footer__inner {
	display: grid;
	grid-template-columns: 1.2fr .8fr .8fr;
	gap: 28px;
	text-align: center;
}

.kv-footer__col .kv-footer__menu {
	display: inline-block;
	text-align: center;
}

.kv-footer h3 { color: #fff; margin: 0 0 12px; font-size: calc(18px * var(--kv-fs)); }
.kv-footer p,
.kv-footer a {
	color: rgba(255,255,255,.72);
	line-height: 1.55;
	margin: 0 0 8px;
	display: block;
}
.kv-footer a:hover { color: #fff; }

.kv-footer__menu,
.kv-footer__nav-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.kv-footer__bottom {
	margin-top: 28px;
	border-top: 1px solid rgba(255,255,255,.08);
	padding: 18px 0;
	font-size: calc(13px * var(--kv-fs));
	color: rgba(255,255,255,.55);
}
.kv-footer__bottom-inner {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
}

.kv-footer__meta {
	width: min(var(--kv-max), calc(100% - 32px));
	margin: 0 auto;
	padding: 0 0 20px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	text-align: center;
}
.kv-footer__legal {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px 20px;
}
.kv-footer__legal a {
	color: rgba(255,255,255,.62);
	font-size: calc(13px * var(--kv-fs));
	text-decoration: underline;
	text-underline-offset: 3px;
}
.kv-footer__legal a:hover {
	color: #fff;
}
.kv-footer__counters {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 16px 24px;
}
.kv-footer__counter {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 0;
}
.kv-footer__counter img,
.kv-footer__counter iframe {
	max-width: 100%;
	height: auto;
}

/*
 * Счётчики вроде Яндекс.Метрики визуально ничего не выводят (только скрипт),
 * поэтому их пустые обёртки схлопываем — иначе в подвале остаётся пустой
 * промежуток из-за gap между блоками.
 */
.kv-footer__counter:not(:has(img, iframe, a, embed, object, video)) {
	display: none;
}
.kv-footer__counters:not(:has(img, iframe, a, embed, object, video)) {
	display: none;
}
.kv-footer__meta:not(:has(a, img, iframe)) {
	display: none;
}

/* ========================================================================
   No-results / utility
   ======================================================================== */
.kv-no-results {
	background: var(--kv-paper);
	border-radius: 24px;
	padding: 32px;
	border: 1px solid var(--kv-line);
}
.kv-no-results h2 { margin-top: 0; }

.kv-search-item {
	background: var(--kv-paper);
	border-radius: 20px;
	padding: 18px 20px;
	border: 1px solid var(--kv-line);
}
.kv-search-item h3 { margin: 0 0 6px; }
.kv-search-item h3 a:hover { color: var(--kv-accent); }
.kv-search-item__meta {
	display: flex;
	gap: 12px;
	font-size: calc(13px * var(--kv-fs));
	color: var(--kv-muted);
	margin-bottom: 8px;
}
.kv-search-item__type {
	padding: 2px 8px;
	border-radius: 999px;
	background: var(--kv-paper-2);
}

/* ========================================================================
   Responsive
   ======================================================================== */
@media (max-width: 980px) {
	.kv-hero,
	.kv-split,
	.kv-footer__inner,
	.kv-event-layout,
	.kv-event-single,
	.kv-featured-achievement {
		grid-template-columns: 1fr;
	}
	.kv-quick-grid,
	.kv-poster-grid,
	.kv-official-grid,
	.kv-awards-grid,
	.kv-gallery-strip,
	.kv-collectives-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	/* На планшете 2-х и 3-х зонные раскладки — в два столбца. */
	.kv-promo-grid--2,
	.kv-promo-grid--3 { grid-template-columns: repeat(2, 1fr); }
	.kv-header { align-items: flex-start; flex-direction: column; }
	.kv-nav { width: 100%; justify-content: flex-start; }
	.kv-nav__menu { justify-content: flex-start; }
	.kv-calendar-card,
	.kv-event-single__aside { position: static; }

	.kv-hero-panel.is-active { grid-template-columns: 1fr; }
	.kv-hero-list {
		flex-direction: row;
		max-height: none;
		overflow-x: auto;
		padding-bottom: 6px;
	}
	.kv-hero-list li { flex: 0 0 80%; }
}

@media (max-width: 720px) {
	.kv-top-strip__inner,
	.kv-section-head {
		flex-direction: column;
		align-items: flex-start;
	}

	.kv-header__bar {
		grid-template-columns: auto 1fr;
		grid-template-areas:
			"logo title"
			"search search";
		gap: 12px 14px;
	}
	.kv-header__title {
		justify-self: start;
		text-align: left;
	}
	.kv-header__search {
		width: 100%;
		justify-self: stretch;
	}
	.kv-hero__main { min-height: 470px; padding: 28px; }
	.kv-page-hero { padding: 28px; min-height: 320px; }
	.kv-quick-grid,
	.kv-poster-grid,
	.kv-official-grid {
		grid-template-columns: 1fr;
	}
	.kv-news-item {
		grid-template-columns: 1fr;
	}
	.kv-news-date {
		min-height: 64px;
		font-size: calc(24px * var(--kv-fs));
	}

	.kv-event-item { grid-template-columns: 1fr; }
	.kv-event-content { padding: 20px; }
	.kv-event-date { min-height: 130px; }

	.kv-doc-page li { flex-wrap: wrap; }
	.kv-doc-page li a { flex: 1 1 100%; order: 2; }
	.kv-doc-page li::after { order: 3; margin-left: 0; }
	.kv-calendar-grid { gap: 5px; }
	.kv-day-name, .kv-day { min-height: 34px; font-size: calc(12px * var(--kv-fs)); }

	.kv-awards-grid,
	.kv-gallery-strip,
	.kv-collectives-grid { grid-template-columns: 1fr; }
	.kv-subpages-page ul,
	.kv-subpages-page ol { grid-template-columns: 1fr; }
	/* На телефоне все раскладки — в один столбец. */
	.kv-promo-grid--1,
	.kv-promo-grid--2,
	.kv-promo-grid--3 { grid-template-columns: 1fr; }

	.kv-hero-quick { grid-template-columns: 1fr 1fr; }
	.kv-hero-stage { min-height: 380px; }
	.kv-hero-slide { padding: 26px; }
	.kv-hero-list li { flex: 0 0 88%; }

	.kv-nav__toggle { display: inline-grid; place-items: center; }
	.kv-nav__menu {
		display: none;
		flex-direction: column;
		width: 100%;
		gap: 4px;
		margin-top: 12px;
	}
	.kv-nav.is-open .kv-nav__menu {
		display: flex;
	}
	.kv-nav__menu a {
		padding: 12px 16px;
		background: rgba(255,255,255,.55);
		box-shadow: inset 0 0 0 1px var(--kv-line);
	}
}
