/* ==========================================================================
   ZНЯТА — тема форума фотографов (forum.znyata.com)
   Надстройка над Bootstrap 5.3 и Font Awesome 6 для шаблонов subsilver2.
   Разделы: шрифты · токены · основа · шапка · меню · контент · списки форумов
   и тем · сообщения · формы и кнопки · совместимость со старой разметкой ·
   подвал · адаптивность · печать
   ========================================================================== */

/* ---------- Шрифты (Inter Variable, кириллица + латиница) ---------- */
@font-face {
	font-family: "Inter var";
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url(fonts/inter-cyrillic-ext-wght-normal.woff2) format("woff2-variations"), url(fonts/inter-cyrillic-ext-wght-normal.woff2) format("woff2");
	unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
	font-family: "Inter var";
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url(fonts/inter-cyrillic-wght-normal.woff2) format("woff2-variations"), url(fonts/inter-cyrillic-wght-normal.woff2) format("woff2");
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
	font-family: "Inter var";
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url(fonts/inter-latin-ext-wght-normal.woff2) format("woff2-variations"), url(fonts/inter-latin-ext-wght-normal.woff2) format("woff2");
	unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: "Inter var";
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url(fonts/inter-latin-wght-normal.woff2) format("woff2-variations"), url(fonts/inter-latin-wght-normal.woff2) format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---------- Токены ---------- */
:root {
	--zn-ink: #0b1422;
	--zn-ink-2: #13233b;
	--zn-blue: #2f7be6;
	--zn-blue-600: #2468cc;
	--zn-blue-700: #1b52a6;
	--zn-blue-300: #8db8f3;
	--zn-blue-200: #bcd5f8;
	--zn-blue-100: #dce9fc;
	--zn-blue-50: #eef5fe;
	--zn-red: #e3343b;
	--zn-red-600: #c9242c;
	--zn-red-50: #fdeeee;
	--zn-amber: #ffb020;
	--zn-green: #1f9d6b;
	--zn-bg: #f2f5fa;
	--zn-surface: #ffffff;
	--zn-surface-2: #f8fafd;
	--zn-surface-3: #f1f5fb;
	--zn-line: #e3e9f2;
	--zn-line-2: #d3dce9;
	--zn-text: #172131;
	--zn-text-2: #364457;
	--zn-muted: #66758a;
	--zn-muted-2: #8b97a8;
	--zn-radius: 16px;
	--zn-radius-sm: 10px;
	--zn-shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);
	--zn-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 10px 28px -14px rgba(15, 35, 70, .16);
	--zn-shadow-lg: 0 30px 60px -28px rgba(10, 25, 50, .45);
	--zn-head-grad: linear-gradient(120deg, #3c8ef2 0%, #2b6fd6 55%, #2459b9 100%);
	--zn-red-grad: linear-gradient(180deg, #f04a48 0%, #d92a31 100%);
	--zn-ease: cubic-bezier(.2, .7, .2, 1);

	--bs-body-font-family: "Inter var", Inter, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--bs-body-font-size: .9375rem;
	--bs-body-line-height: 1.55;
	--bs-body-color: var(--zn-text);
	--bs-body-color-rgb: 23, 33, 49;
	--bs-body-bg: var(--zn-bg);
	--bs-emphasis-color: var(--zn-text);
	--bs-secondary-color: var(--zn-muted);
	--bs-link-color: #1d63c9;
	--bs-link-color-rgb: 29, 99, 201;
	--bs-link-hover-color: #134a9b;
	--bs-link-hover-color-rgb: 19, 74, 155;
	--bs-link-decoration: none;
	--bs-primary: #2f7be6;
	--bs-primary-rgb: 47, 123, 230;
	--bs-border-color: var(--zn-line);
	--bs-border-radius: .625rem;
	--bs-focus-ring-color: rgba(47, 123, 230, .28);
	--bs-highlight-bg: #fff1c2;
}

/* ---------- Основа ---------- */
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 76px; }
body.zn {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	background:
		radial-gradient(1100px 520px at 100% 0, rgba(47, 123, 230, .06), transparent 70%),
		var(--zn-bg);
	font-feature-settings: "cv11", "ss01";
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
}
body.zn > main { flex: 1 0 auto; }
a { text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: .18em; text-decoration-thickness: 1px; }
p { margin-bottom: 0; }
img { max-width: 100%; }
img[height] { height: auto; }
b, strong { font-weight: 650; }
hr { border-color: var(--zn-line-2); opacity: 1; margin: .75rem 0; }
::selection { background: rgba(47, 123, 230, .2); }
h1, h2, h3, h4, h5, h6 { color: var(--zn-text); font-weight: 700; letter-spacing: -.012em; line-height: 1.25; margin-bottom: 0; }
h1 { font-size: clamp(1.35rem, 1.05rem + 1.1vw, 1.85rem); }
h2 { font-size: clamp(1.2rem, 1.05rem + .6vw, 1.45rem); }
h3 { font-size: 1.125rem; }
h4 { font-size: 1rem; }
h5, h6 { font-size: .9375rem; }
:focus-visible { outline: 2px solid var(--zn-blue); outline-offset: 2px; border-radius: 4px; }
.zn-container { width: 100%; max-width: 1400px; margin-inline: auto; padding-inline: 24px; }
.zn-muted { color: var(--zn-muted) !important; }
.zn-nums { font-variant-numeric: tabular-nums; }
noindex { display: contents; }

/* Bootstrap и старый phpBB используют одинаковые имена классов — возвращаем старым их поведение */
.nav, .pagination { display: revert; flex-wrap: revert; padding-left: revert; margin-bottom: revert; list-style: revert; }
.nav { font-weight: 600; }

/* ---------- Шапка ---------- */
.zn-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	color: #c4cfdf;
	background:
		radial-gradient(900px 340px at 82% -30%, rgba(60, 142, 242, .42), transparent 62%),
		radial-gradient(620px 260px at 0% 130%, rgba(227, 52, 59, .16), transparent 62%),
		linear-gradient(180deg, #0a1320 0%, #11203a 100%);
}
.zn-hero::before {
	/* боке — мягкие круги света, как размытый фон на снимке */
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background:
		radial-gradient(circle at 64% 36%, rgba(255, 255, 255, .02) 0, rgba(255, 255, 255, .07) 30px, rgba(255, 255, 255, .11) 34px, transparent 35.5px),
		radial-gradient(circle at 72% 82%, rgba(120, 175, 255, .03) 0, rgba(120, 175, 255, .09) 52px, rgba(150, 195, 255, .14) 58px, transparent 59.5px),
		radial-gradient(circle at 80% 22%, rgba(255, 196, 120, .03) 0, rgba(255, 196, 120, .10) 18px, rgba(255, 210, 150, .16) 21px, transparent 22.5px),
		radial-gradient(circle at 87% 64%, rgba(255, 255, 255, .015) 0, rgba(255, 255, 255, .05) 70px, rgba(255, 255, 255, .08) 78px, transparent 79.5px),
		radial-gradient(circle at 93% 28%, rgba(140, 190, 255, .03) 0, rgba(140, 190, 255, .09) 37px, rgba(160, 205, 255, .14) 42px, transparent 43.5px),
		radial-gradient(circle at 57% 94%, rgba(255, 120, 110, .02) 0, rgba(255, 120, 110, .07) 40px, rgba(255, 140, 130, .11) 46px, transparent 47.5px),
		radial-gradient(circle at 98% 90%, rgba(255, 210, 140, .03) 0, rgba(255, 210, 140, .08) 23px, rgba(255, 220, 160, .13) 27px, transparent 28.5px),
		radial-gradient(circle at 76% 50%, rgba(255, 255, 255, .02) 0, rgba(255, 255, 255, .05) 11px, rgba(255, 255, 255, .09) 13px, transparent 14.5px);
	filter: blur(.8px);
	-webkit-mask-image: linear-gradient(90deg, transparent 36%, #000 76%);
	mask-image: linear-gradient(90deg, transparent 36%, #000 76%);
}
.zn-hero::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 1px;
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .14), transparent);
}
.zn-hero a { color: #ffffff; }
.zn-hero a:hover { color: #ffffff; }
.zn-hero-top {
	display: flex;
	justify-content: flex-end;
	padding-top: 10px;
	font-size: .75rem;
	letter-spacing: .04em;
	color: #8ea0b9;
}
.zn-hero-main {
	display: flex;
	align-items: center;
	gap: 28px;
	padding: 8px 0 26px;
}
.zn-logo { display: inline-flex; flex-direction: column; gap: 6px; flex-shrink: 0; }
.zn-logo img { width: 168px; height: auto; display: block; filter: drop-shadow(0 6px 18px rgba(0, 0, 0, .35)); transition: transform .35s var(--zn-ease); }
.zn-logo:hover img { transform: translateY(-1px) scale(1.015); }
.zn-logo-badge {
	align-self: flex-start;
	font-size: .6875rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: #ffd3d4;
	padding: 2px 8px;
	border-radius: 999px;
	background: rgba(227, 52, 59, .22);
	border: 1px solid rgba(255, 120, 120, .28);
}
.zn-hero-text {
	font-size: .875rem;
	line-height: 1.55;
	padding-left: 28px;
	border-left: 1px solid rgba(255, 255, 255, .12);
}
.zn-hero-text a { font-weight: 600; border-bottom: 1px solid rgba(255, 255, 255, .25); }
.zn-hero-text a:hover { text-decoration: none; border-bottom-color: #fff; }
.zn-hero-search { margin-left: auto; width: min(340px, 34vw); position: relative; }
.zn-hero-search .form-control {
	height: 44px;
	padding: 0 48px 0 42px;
	border-radius: 999px;
	color: #fff;
	background: rgba(255, 255, 255, .08);
	border: 1px solid rgba(255, 255, 255, .16);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .06);
	transition: background .25s, border-color .25s, box-shadow .25s;
}
.zn-hero-search .form-control::placeholder { color: #93a3ba; }
.zn-hero-search .form-control:focus { background: rgba(255, 255, 255, .14); border-color: rgba(141, 184, 243, .7); box-shadow: 0 0 0 4px rgba(47, 123, 230, .25); }
.zn-hero-search > .fa-magnifying-glass { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); color: #93a3ba; pointer-events: none; }
.zn-hero-search button {
	position: absolute; right: 5px; top: 5px;
	width: 34px; height: 34px;
	border: 0; border-radius: 50%;
	color: #fff;
	background: var(--zn-head-grad);
	box-shadow: 0 6px 14px -6px rgba(47, 123, 230, .9);
}

/* ---------- Главное меню ---------- */
.zn-navbar {
	position: sticky;
	top: 0;
	z-index: 1030;
	background: rgba(255, 255, 255, .86);
	-webkit-backdrop-filter: saturate(180%) blur(14px);
	backdrop-filter: saturate(180%) blur(14px);
	border-bottom: 1px solid var(--zn-line);
	transition: box-shadow .3s;
}
.zn-navbar.is-stuck { box-shadow: 0 10px 30px -18px rgba(15, 35, 70, .35); }
.zn-navbar-inner { display: flex; align-items: center; gap: 6px; min-height: 58px; flex-wrap: wrap; }
.zn-userbar { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; min-width: 0; }
.zn-nav-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 12px;
	border-radius: 999px;
	color: var(--zn-text-2);
	font-weight: 550;
	font-size: .875rem;
	white-space: nowrap;
	transition: background .2s, color .2s;
}
.zn-nav-link i { color: var(--zn-muted-2); font-size: .95em; transition: color .2s, transform .25s var(--zn-ease); }
.zn-nav-link:hover { text-decoration: none; color: var(--zn-blue-600); background: var(--zn-blue-50); }
.zn-nav-link:hover i { color: var(--zn-blue); transform: translateY(-1px); }
.zn-nav-link.is-accent { color: #fff; background: var(--zn-red-grad); box-shadow: 0 8px 18px -10px rgba(217, 42, 49, .9); }
.zn-nav-link.is-accent i { color: #fff; }
.zn-nav-link.is-accent:hover { color: #fff; filter: brightness(1.05); }
.zn-user {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	padding: 4px 12px 4px 4px;
	border-radius: 999px;
	color: var(--zn-text);
	font-weight: 650;
	font-size: .875rem;
	background: var(--zn-surface-3);
	border: 1px solid var(--zn-line);
	max-width: 240px;
}
.zn-user span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.zn-user:hover { text-decoration: none; color: var(--zn-blue-600); border-color: var(--zn-blue-200); }
.zn-user-ava {
	width: 30px; height: 30px; flex-shrink: 0;
	display: grid; place-items: center;
	border-radius: 50%;
	color: #fff;
	font-size: .8rem;
	background: var(--zn-head-grad);
}
.zn-pm-badge {
	display: inline-grid;
	place-items: center;
	min-width: 20px;
	height: 20px;
	padding: 0 6px;
	border-radius: 999px;
	font-size: .6875rem;
	font-weight: 700;
	color: var(--zn-muted);
	background: var(--zn-surface-3);
	border: 1px solid var(--zn-line);
}
.zn-pm-badge.is-new { color: #fff; background: var(--zn-red); border-color: var(--zn-red); animation: zn-pulse 2.2s infinite; }
@keyframes zn-pulse { 0% { box-shadow: 0 0 0 0 rgba(227, 52, 59, .45); } 70% { box-shadow: 0 0 0 8px rgba(227, 52, 59, 0); } 100% { box-shadow: 0 0 0 0 rgba(227, 52, 59, 0); } }
.zn-mainnav { margin-left: auto; }
.zn-mainnav .navbar-nav { flex-direction: row; align-items: center; gap: 2px; }
.zn-navbar .navbar-toggler {
	margin-left: auto;
	display: none;
	align-items: center;
	gap: 8px;
	padding: 8px 14px;
	border-radius: 999px;
	border: 1px solid var(--zn-line-2);
	font-size: .875rem;
	font-weight: 600;
	color: var(--zn-text-2);
	box-shadow: none;
}
.zn-navbar .navbar-toggler:focus { box-shadow: 0 0 0 4px var(--bs-focus-ring-color); }
.zn-alert-inline { color: var(--zn-red); font-weight: 600; font-size: .8125rem; }

/* ---------- Быстрые ссылки ---------- */
.zn-quick { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 20px 0 14px; }
.zn-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.zn-chips.is-end { margin-left: auto; }
.zn-chip {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 6px 13px;
	border-radius: 999px;
	font-size: .8125rem;
	font-weight: 550;
	color: var(--zn-text-2);
	background: var(--zn-surface);
	border: 1px solid var(--zn-line);
	box-shadow: var(--zn-shadow-sm);
	white-space: nowrap;
	transition: transform .2s var(--zn-ease), border-color .2s, color .2s, box-shadow .2s;
}
.zn-chip i { color: var(--zn-blue); font-size: .9em; }
.zn-chip:hover { text-decoration: none; color: var(--zn-blue-600); border-color: var(--zn-blue-200); transform: translateY(-1px); box-shadow: 0 8px 18px -12px rgba(47, 123, 230, .55); }
.zn-chip.is-hot i { color: var(--zn-red); }

/* ---------- Хлебные крошки ---------- */
.zn-crumbs {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	padding: 10px 16px;
	margin: 18px 0;
	background: var(--zn-surface);
	border: 1px solid var(--zn-line);
	border-radius: 14px;
	box-shadow: var(--zn-shadow-sm);
	font-size: .875rem;
}
.zn-crumbs .breadcrumb { margin: 0; flex-wrap: wrap; --bs-breadcrumb-divider: "›"; --bs-breadcrumb-divider-color: var(--zn-muted-2); --bs-breadcrumb-item-padding-x: .55rem; }
.zn-crumbs .breadcrumb-item a { color: var(--zn-text-2); font-weight: 600; }
.zn-crumbs .breadcrumb-item a:hover { color: var(--zn-blue-600); }
.zn-crumbs .breadcrumb-item:first-child a i { color: var(--zn-blue); margin-right: 4px; }
.zn-crumbs .breadcrumb-item:last-child a { color: var(--zn-blue-700); }
.zn-crumbs-action { margin-left: auto; font-size: .8125rem; color: var(--zn-muted); white-space: nowrap; }
.zn-crumbs-action i { margin-right: 5px; }
.zn-crumbs-action:hover { color: var(--zn-blue-600); }
.zn-actionbar.is-bottom + .zn-crumbs, .zn-layout + .zn-crumbs, .zn-layout + noindex .zn-crumbs { margin-top: 20px; }

/* ---------- Заголовок страницы ---------- */
.zn-pagehead { display: flex; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin: 4px 0 18px; }
.zn-pagehead-main { min-width: 0; flex: 1 1 420px; }
.zn-pagehead h1, .zn-pagehead h2 { word-wrap: break-word; }
.zn-pagehead h1 a, .zn-pagehead h2 a { color: inherit; }
.zn-pagehead h1 a:hover, .zn-pagehead h2 a:hover { color: var(--zn-blue-700); text-decoration: none; }
.zn-pagehead-sub { margin-top: 6px; font-size: .8125rem; color: var(--zn-muted); }
.zn-pagehead-sub a { font-weight: 550; }
.zn-pagehead-tools { display: flex; gap: 8px; flex-wrap: wrap; margin-left: auto; }
.zn-eyebrow { font-size: .75rem; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; color: var(--zn-blue); margin-bottom: 4px; }

/* ---------- Карточки ---------- */
.zn-card {
	background: var(--zn-surface);
	border: 1px solid var(--zn-line);
	border-radius: var(--zn-radius);
	box-shadow: var(--zn-shadow);
	overflow: hidden;
}
.zn-card + .zn-card { margin-top: 18px; }
.zn-card-head {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 13px 18px;
	color: #fff;
	background: var(--zn-head-grad);
	font-weight: 650;
	font-size: .9375rem;
	position: relative;
}
.zn-card-head::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(255, 255, 255, .12), transparent 55%); pointer-events: none; }
.zn-card-head a { color: #fff; }
.zn-card-head a:hover { color: #fff; }
.zn-card-head.is-light { color: var(--zn-text); background: var(--zn-surface-2); border-bottom: 1px solid var(--zn-line); }
.zn-card-head.is-light::after { display: none; }
.zn-card-head.is-light i { color: var(--zn-blue); }
.zn-card-head.is-light a { color: var(--zn-text); }
.zn-card-head.is-light a:hover { color: var(--zn-blue-600); }
.zn-card-body { padding: 18px; }
.zn-card-foot { padding: 12px 18px; background: var(--zn-surface-2); border-top: 1px solid var(--zn-line); }

/* ---------- Список форумов ---------- */
.zn-flist .zn-card + .zn-card { margin-top: 20px; }
.zn-fgrid {
	display: grid;
	grid-template-columns: 46px minmax(0, 1fr) 84px 104px 250px;
	column-gap: 16px;
	align-items: center;
}
.zn-fhead { padding: 14px 20px; }
.zn-fhead .zn-fhead-title { grid-column: 1 / 3; font-size: 1.0625rem; font-weight: 700; letter-spacing: -.01em; display: flex; align-items: center; gap: 10px; }
.zn-fhead .zn-fhead-title i { opacity: .85; }
.zn-fhead .zn-col-label { font-size: .6875rem; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; opacity: .85; text-align: center; }
.zn-fhead .zn-col-label.is-last { text-align: left; }
.zn-frow {
	padding: 16px 20px;
	border-top: 1px solid var(--zn-line);
	transition: background .2s;
	position: relative;
}
.zn-frow:first-of-type { border-top: 0; }
.zn-frow:hover { background: #f8fbff; }
.zn-ficon {
	width: 46px; height: 46px;
	display: grid; place-items: center;
	border-radius: 14px;
	font-size: 1.15rem;
	color: var(--zn-blue-300);
	background: var(--zn-blue-50);
	border: 1px solid var(--zn-blue-100);
	transition: transform .3s var(--zn-ease);
}
.zn-frow:hover .zn-ficon { transform: rotate(-4deg) scale(1.04); }
.is-unread > .zn-ficon, .is-unread .zn-ficon {
	color: #fff;
	background: var(--zn-red-grad);
	border-color: transparent;
	box-shadow: 0 10px 20px -10px rgba(217, 42, 49, .85);
}
.is-locked .zn-ficon { color: var(--zn-muted-2); background: var(--zn-surface-3); border-color: var(--zn-line); }
.zn-ftitle { font-size: 1.0625rem; font-weight: 650; color: var(--zn-text); letter-spacing: -.01em; }
.zn-ftitle:hover { color: var(--zn-blue-600); text-decoration: none; }
.is-unread .zn-ftitle { color: var(--zn-text); }
.zn-fdesc { margin-top: 3px; font-size: .8125rem; color: var(--zn-muted); line-height: 1.45; }
.zn-fsub { margin-top: 6px; font-size: .8125rem; color: var(--zn-muted); }
.zn-fsub a { font-weight: 550; }
.zn-fimg { float: left; margin-right: 12px; }
.zn-fstats { display: contents; }
.zn-fstat { text-align: center; line-height: 1.2; }
.zn-fstat b { display: block; font-weight: 650; font-size: .9375rem; color: var(--zn-text-2); font-variant-numeric: tabular-nums; }
.zn-fstat span { display: none; }
.zn-flast { font-size: .8125rem; line-height: 1.45; min-width: 0; }
.zn-flast-subj { display: block; font-weight: 600; color: var(--zn-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.zn-flast-subj:hover { color: var(--zn-blue-600); }
.zn-flast-meta { display: flex; align-items: center; gap: 6px; color: var(--zn-muted); white-space: nowrap; min-width: 0; }
.zn-flast-meta a { font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.zn-flast-time { color: var(--zn-muted); }
.zn-golast {
	display: inline-grid;
	place-items: center;
	width: 24px; height: 24px;
	flex-shrink: 0;
	border-radius: 50%;
	font-size: .7rem;
	color: var(--zn-blue);
	background: var(--zn-blue-50);
	transition: background .2s, color .2s, transform .2s var(--zn-ease);
}
.zn-golast:hover { color: #fff; background: var(--zn-blue); transform: translateX(2px); text-decoration: none; }
.zn-frow-link .zn-fstats { display: none; }

/* ---------- Список тем ---------- */
.zn-tgrid {
	display: grid;
	grid-template-columns: 40px minmax(0, 1fr) 150px 78px 92px 196px;
	column-gap: 16px;
	align-items: center;
}
.zn-thead { padding: 12px 18px; }
.zn-thead .zn-col-label { font-size: .6875rem; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; opacity: .9; text-align: center; }
.zn-thead .zn-col-label.is-topic { grid-column: 1 / 3; text-align: left; }
.zn-thead .zn-col-label.is-last { text-align: left; }
.zn-trow { padding: 13px 18px; border-top: 1px solid var(--zn-line); transition: background .2s; }
.zn-trow:first-child { border-top: 0; }
.zn-trow:hover { background: #f8fbff; }
.zn-trow .zn-ficon { width: 40px; height: 40px; border-radius: 12px; font-size: 1rem; }
.zn-trow.is-sticky .zn-ficon { color: var(--zn-blue); background: #fff7e6; border-color: #ffe2a8; }
.zn-trow.is-announce .zn-ficon { color: #b26b00; background: #fff4dc; border-color: #ffdf9c; }
.zn-trow.is-unread .zn-ficon { color: #fff; }
.zn-trow.is-moved { opacity: .78; }
.zn-tsection {
	padding: 9px 18px;
	font-size: .6875rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--zn-blue-700);
	background: var(--zn-surface-3);
	border-top: 1px solid var(--zn-line);
	border-bottom: 1px solid var(--zn-line);
}
.zn-tsection + .zn-trow { border-top: 0; }
.zn-ttitle-wrap { min-width: 0; }
.zn-ttitle { font-weight: 600; font-size: .96875rem; color: var(--zn-text); word-wrap: break-word; }
.zn-ttitle:visited { color: #3f4b5e; }
.zn-ttitle:hover { color: var(--zn-blue-600); text-decoration: none; }
.is-unread .zn-ttitle { font-weight: 700; color: var(--zn-text); }
.zn-tbadges { display: inline-flex; gap: 5px; align-items: center; vertical-align: 2px; margin-right: 4px; }
.zn-tag {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 1px 8px;
	border-radius: 999px;
	font-size: .6875rem;
	font-weight: 650;
	letter-spacing: .02em;
	color: var(--zn-blue-700);
	background: var(--zn-blue-50);
	border: 1px solid var(--zn-blue-100);
	white-space: nowrap;
}
.zn-tag.is-new { color: #fff; background: var(--zn-red); border-color: var(--zn-red); text-transform: uppercase; letter-spacing: .06em; }
.zn-tag.is-new:hover { text-decoration: none; background: var(--zn-red-600); }
.zn-tag.is-warn { color: #9a4b00; background: #fff4e0; border-color: #ffd9a1; }
.zn-tag.is-hot { color: #c2410c; background: #fff1e8; border-color: #ffd2b8; }
.zn-tag.is-muted { color: var(--zn-muted); background: var(--zn-surface-3); border-color: var(--zn-line); }
.zn-ticon { color: var(--zn-muted-2); font-size: .8rem; }
.zn-tmeta { margin-top: 3px; font-size: .78rem; color: var(--zn-muted); display: flex; gap: 6px 12px; flex-wrap: wrap; align-items: center; }
.zn-tmeta a { font-weight: 550; }
.zn-tpages { display: inline-flex; flex-wrap: wrap; gap: 3px; align-items: center; }
.zn-tpages .page-sep { display: none; }
.zn-tpages a, .zn-tpages strong {
	display: inline-grid;
	place-items: center;
	min-width: 22px;
	height: 20px;
	padding: 0 5px;
	border-radius: 6px;
	font-size: .6875rem;
	font-weight: 650;
	color: var(--zn-text-2);
	background: var(--zn-surface-3);
	border: 1px solid var(--zn-line);
}
.zn-tpages a:hover { color: #fff; background: var(--zn-blue); border-color: var(--zn-blue); text-decoration: none; }
.zn-tauthor { text-align: center; font-size: .8125rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.zn-tauthor a { font-weight: 600; }
.zn-tnum { text-align: center; font-weight: 650; font-size: .875rem; color: var(--zn-text-2); font-variant-numeric: tabular-nums; }
.zn-tnum span { display: none; }
.zn-tnum.is-views { color: var(--zn-muted); font-weight: 550; }
.zn-tlast { font-size: .8125rem; line-height: 1.45; min-width: 0; }
.zn-tlast-time { color: var(--zn-muted); white-space: nowrap; }
.zn-tlast .zn-flast-meta { gap: 6px; }
.zn-empty { padding: 34px 18px; text-align: center; color: var(--zn-muted); }
.zn-empty i { display: block; font-size: 1.8rem; color: var(--zn-blue-200); margin-bottom: 10px; }

/* ---------- Панели действий ---------- */
.zn-actionbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0 0 14px; }
.zn-actionbar.is-bottom { margin: 14px 0 0; }
.zn-actionbar .zn-spacer { flex: 1 1 auto; }
.zn-toollinks { display: flex; gap: 4px; flex-wrap: wrap; }
.zn-toollink {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 7px 12px;
	border-radius: 999px;
	font-size: .8125rem;
	font-weight: 550;
	color: var(--zn-text-2);
	background: var(--zn-surface);
	border: 1px solid var(--zn-line);
	white-space: nowrap;
	transition: border-color .2s, color .2s, background .2s;
}
.zn-toollink i { color: var(--zn-muted-2); }
.zn-toollink:hover { text-decoration: none; color: var(--zn-blue-600); border-color: var(--zn-blue-200); }
.zn-toollink:hover i { color: var(--zn-blue); }
.zn-sortbar {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px 10px;
	flex-wrap: wrap;
	padding: 12px 18px;
	font-size: .8125rem;
	color: var(--zn-muted);
	background: var(--zn-surface-2);
	border-top: 1px solid var(--zn-line);
}
.zn-sortbar select { width: auto; max-width: 100%; }

/* ---------- Пагинация ---------- */
.zn-pager { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; font-size: .8125rem; font-weight: 600; color: var(--zn-muted); }
.zn-pager .page-sep { display: none; }
.zn-pager a, .zn-pager strong, .zn-pager-jump {
	display: inline-grid;
	place-items: center;
	min-width: 34px;
	height: 34px;
	padding: 0 10px;
	border-radius: 10px;
	color: var(--zn-text-2);
	background: var(--zn-surface);
	border: 1px solid var(--zn-line);
	font-variant-numeric: tabular-nums;
	transition: background .2s, color .2s, border-color .2s, transform .2s var(--zn-ease);
}
.zn-pager a:hover { text-decoration: none; color: var(--zn-blue-600); border-color: var(--zn-blue-200); transform: translateY(-1px); }
.zn-pager strong { color: #fff; background: var(--zn-head-grad); border-color: transparent; box-shadow: 0 8px 16px -10px rgba(47, 123, 230, .9); }
.zn-pager .zn-pager-jump { display: inline-flex; gap: 6px; color: var(--zn-muted) !important; }
.zn-pager-jump:hover { color: var(--zn-blue-600) !important; }
.zn-pager .zn-pager-arrow { font-size: .75rem; }

/* ---------- Кнопки ---------- */
.btn { --bs-btn-font-weight: 600; --bs-btn-border-radius: 999px; --bs-btn-padding-x: 1.05rem; --bs-btn-padding-y: .5rem; --bs-btn-font-size: .875rem; letter-spacing: .005em; }
.btn-sm { --bs-btn-padding-x: .8rem; --bs-btn-padding-y: .32rem; --bs-btn-font-size: .8125rem; }
.btn-lg { --bs-btn-padding-x: 1.4rem; --bs-btn-padding-y: .7rem; --bs-btn-font-size: 1rem; }
.btn i { margin-right: 2px; }
.btn-zn {
	--bs-btn-color: #fff;
	--bs-btn-hover-color: #fff;
	--bs-btn-active-color: #fff;
	--bs-btn-border-color: transparent;
	--bs-btn-hover-border-color: transparent;
	--bs-btn-active-border-color: transparent;
	background: var(--zn-head-grad);
	box-shadow: 0 10px 20px -12px rgba(36, 89, 185, .95), inset 0 1px 0 rgba(255, 255, 255, .2);
	transition: transform .2s var(--zn-ease), box-shadow .2s, filter .2s;
}
.btn-zn:hover { filter: brightness(1.06); transform: translateY(-1px); box-shadow: 0 14px 24px -12px rgba(36, 89, 185, .95), inset 0 1px 0 rgba(255, 255, 255, .2); }
.btn-zn-red {
	--bs-btn-color: #fff;
	--bs-btn-hover-color: #fff;
	--bs-btn-active-color: #fff;
	--bs-btn-border-color: transparent;
	--bs-btn-hover-border-color: transparent;
	--bs-btn-active-border-color: transparent;
	background: var(--zn-red-grad);
	box-shadow: 0 10px 20px -12px rgba(201, 36, 44, .95), inset 0 1px 0 rgba(255, 255, 255, .22);
	transition: transform .2s var(--zn-ease), box-shadow .2s, filter .2s;
}
.btn-zn-red:hover { filter: brightness(1.06); transform: translateY(-1px); box-shadow: 0 14px 24px -12px rgba(201, 36, 44, .95), inset 0 1px 0 rgba(255, 255, 255, .22); }
.btn-zn-ghost {
	--bs-btn-color: var(--zn-text-2);
	--bs-btn-bg: var(--zn-surface);
	--bs-btn-border-color: var(--zn-line-2);
	--bs-btn-hover-color: var(--zn-blue-600);
	--bs-btn-hover-bg: var(--zn-blue-50);
	--bs-btn-hover-border-color: var(--zn-blue-200);
	--bs-btn-active-color: var(--zn-blue-700);
	--bs-btn-active-bg: var(--zn-blue-100);
	--bs-btn-active-border-color: var(--zn-blue-200);
}
.btn-zn-ghost i { color: var(--zn-blue); }
.btn-zn-locked {
	--bs-btn-color: var(--zn-muted);
	--bs-btn-bg: var(--zn-surface-3);
	--bs-btn-border-color: var(--zn-line-2);
	--bs-btn-hover-color: var(--zn-muted);
	--bs-btn-hover-bg: var(--zn-surface-3);
	--bs-btn-hover-border-color: var(--zn-line-2);
	cursor: default;
}

/* ---------- Сообщения темы ---------- */
.zn-post {
	display: grid;
	grid-template-columns: 210px minmax(0, 1fr);
	background: var(--zn-surface);
	border: 1px solid var(--zn-line);
	border-radius: var(--zn-radius);
	box-shadow: var(--zn-shadow);
	overflow: hidden;
	margin-bottom: 16px;
	position: relative;
}
.zn-post.is-unread::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--zn-red-grad); z-index: 1; }
.zn-post-author {
	padding: 20px 16px;
	text-align: center;
	background: linear-gradient(180deg, var(--zn-surface-2), var(--zn-surface) 80%);
	border-right: 1px solid var(--zn-line);
	font-size: .8125rem;
	color: var(--zn-muted);
}
.zn-post-name { font-weight: 700; font-size: .9375rem; color: var(--zn-text); word-wrap: break-word; }
.zn-post-name a { color: inherit; }
.zn-post-rank { margin-top: 4px; display: inline-flex; align-items: center; gap: 6px; font-size: .75rem; color: var(--zn-muted); }
.zn-online-dot { width: 8px; height: 8px; border-radius: 50%; background: #c3ccd8; display: inline-block; flex-shrink: 0; }
.zn-online-dot.is-online { background: #22c55e; box-shadow: 0 0 0 3px rgba(34, 197, 94, .18); }
.zn-post-rankimg { margin-top: 6px; }
.zn-post-ava { margin: 14px auto 0; display: inline-block; position: relative; }
.zn-post-ava img { border-radius: 16px; box-shadow: 0 10px 24px -14px rgba(15, 35, 70, .6); max-width: 140px; height: auto; display: block; }
.zn-post-facts { margin: 14px 0 0; padding: 0; list-style: none; display: grid; gap: 3px; line-height: 1.4; word-wrap: break-word; }
.zn-post-facts b { color: var(--zn-text-2); font-weight: 600; }
.zn-post-contacts { margin-top: 14px; display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; }
.zn-post-contacts a {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 5px 9px;
	border-radius: 999px;
	font-size: .75rem;
	font-weight: 600;
	color: var(--zn-text-2);
	background: var(--zn-surface);
	border: 1px solid var(--zn-line-2);
	transition: color .2s, border-color .2s, background .2s;
}
.zn-post-contacts a i { color: var(--zn-blue); }
.zn-post-contacts a:hover { text-decoration: none; color: var(--zn-blue-600); border-color: var(--zn-blue-200); background: var(--zn-blue-50); }
.zn-post-main { display: flex; flex-direction: column; min-width: 0; }
.zn-post-head { display: flex; align-items: center; gap: 10px; padding: 12px 20px; border-bottom: 1px solid var(--zn-line); }
.zn-post-subject { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 8px; font-size: .8125rem; color: var(--zn-muted); }
.zn-post-subject a { color: var(--zn-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.zn-post-subject a:hover { color: var(--zn-blue-600); }
.zn-post-subject img { vertical-align: middle; }
.zn-post-anchor { color: var(--zn-blue-300) !important; flex-shrink: 0; }
.zn-post-actions { display: flex; gap: 4px; flex-shrink: 0; }
.zn-iconbtn {
	display: inline-grid;
	place-items: center;
	height: 32px;
	min-width: 32px;
	padding: 0 10px;
	border-radius: 999px;
	font-size: .8125rem;
	font-weight: 600;
	color: var(--zn-muted);
	background: transparent;
	border: 1px solid transparent;
	transition: background .2s, color .2s, border-color .2s;
}
.zn-iconbtn > span { display: inline-flex; align-items: center; gap: 6px; }
.zn-iconbtn:hover { text-decoration: none; color: var(--zn-blue-600); background: var(--zn-blue-50); border-color: var(--zn-blue-100); }
.zn-iconbtn.is-labeled { color: var(--zn-text-2); border-color: var(--zn-line); background: var(--zn-surface); }
.zn-iconbtn.is-labeled i { color: var(--zn-blue); }
.zn-iconbtn.is-danger:hover { color: var(--zn-red-600); background: var(--zn-red-50); border-color: #f8c9cb; }
.zn-post-body { padding: 18px 22px 8px; flex: 1 1 auto; }
.zn-post-foot { display: flex; align-items: center; gap: 12px; padding: 10px 22px 14px; font-size: .78rem; color: var(--zn-muted-2); }
.zn-post-foot i { margin-right: 5px; }
.zn-post-foot .zn-totop-link { margin-left: auto; color: var(--zn-muted-2); }
.zn-post-foot .zn-totop-link:hover { color: var(--zn-blue); }
.zn-post-flags { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.zn-post-flags a, .zn-post-flags span { font-size: .8125rem; font-weight: 600; }
.zn-post-notice { margin-top: 14px; padding: 9px 13px; border-radius: 10px; font-size: .8125rem; color: var(--zn-muted); background: var(--zn-surface-3); }
.zn-post-notice.is-reason { border-left: 3px solid var(--zn-blue-200); border-radius: 0 10px 10px 0; }
.zn-post-sig {
	margin-top: 18px;
	padding-top: 12px;
	border-top: 1px dashed var(--zn-line-2);
	font-size: .8125rem;
	line-height: 1.55;
	color: var(--zn-muted);
}
.zn-post-sig img { max-height: 160px; width: auto; }
.zn-post-attachments { margin-top: 16px; display: flex; flex-direction: column; gap: 12px; }
.zn-attach { display: block; }
.zn-attach-cap { display: block; margin-top: 4px; font-size: .75rem; color: var(--zn-muted); }
.zn-attach-cap i { margin-right: 4px; color: var(--zn-muted-2); }
.zn-attach-thumb { display: inline-block; border-radius: 12px; overflow: hidden; box-shadow: 0 12px 26px -16px rgba(15, 35, 70, .55); transition: transform .3s var(--zn-ease), box-shadow .3s; }
.zn-attach-thumb:hover { transform: translateY(-2px); box-shadow: 0 18px 34px -16px rgba(15, 35, 70, .6); }
.zn-attach-thumb img { display: block; }
.zn-attach-img { border-radius: 10px; }
.zn-attach-file { display: inline-flex; align-items: center; gap: 10px; padding: 9px 14px; border-radius: 12px; border: 1px solid var(--zn-line); background: var(--zn-surface-2); font-size: .875rem; }
.zn-attach-file i { color: var(--zn-blue); font-size: 1.1rem; }
.zn-attach-denied { font-size: .8125rem; color: var(--zn-muted); }

/* Текст сообщений */
.postbody {
	font-size: 1rem;
	line-height: 1.7;
	color: #1d2736;
	overflow-wrap: anywhere;
	word-wrap: break-word;
}
.postbody img { max-width: 100%; height: auto; vertical-align: middle; }
.postbody a.postlink, .postbody a.postlink-local { color: var(--bs-link-color); text-decoration: underline; text-decoration-color: rgba(29, 99, 201, .35); text-underline-offset: .18em; }
.postbody a.postlink:hover { text-decoration-color: currentColor; }
.postbody ul, .postbody ol { margin: .4rem 0 .6rem; padding-left: 1.6rem; }
.postbody object, .postbody embed, .postbody iframe, .postbody video { max-width: 100%; }
.zn-post-body .postbody > img:only-child { border-radius: 10px; }
.quotetitle {
	margin: 14px 0 0;
	padding: 8px 14px 0;
	font-size: .8125rem;
	font-weight: 650;
	color: var(--zn-blue-700);
	background: var(--zn-blue-50);
	border-left: 3px solid var(--zn-blue-300);
	border-radius: 0 12px 0 0;
}
.quotetitle::before { content: "\f10d"; font-family: "Font Awesome 6 Free"; font-weight: 900; margin-right: 8px; color: var(--zn-blue-300); }
.quotetitle b { font-weight: 650; }
.quotecontent {
	margin: 0 0 12px;
	padding: 6px 14px 12px;
	font-size: .9375rem;
	line-height: 1.6;
	color: var(--zn-text-2);
	background: var(--zn-blue-50);
	border-left: 3px solid var(--zn-blue-300);
	border-radius: 0 0 12px 0;
}
.quotecontent .quotetitle, .quotecontent .quotecontent { background: rgba(255, 255, 255, .7); }
.codetitle {
	margin: 14px 0 0;
	padding: 7px 14px;
	font-size: .75rem;
	font-weight: 650;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: #9fb3cf;
	background: #16243a;
	border-radius: 12px 12px 0 0;
}
.codecontent {
	direction: ltr;
	margin: 0 0 12px;
	padding: 12px 14px;
	max-height: 420px;
	overflow: auto;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
	font-size: .8125rem;
	line-height: 1.6;
	color: #d9e4f3;
	background: #0e1a2c;
	border-radius: 0 0 12px 12px;
	white-space: pre-wrap;
}
.attachtitle { margin: 12px 0 0; padding: 6px 12px; font-size: .75rem; font-weight: 650; color: var(--zn-muted); background: var(--zn-surface-3); border-radius: 10px 10px 0 0; }
.attachcontent { margin: 0 0 10px; padding: 10px 12px; font-size: .875rem; background: var(--zn-surface-2); border: 1px solid var(--zn-line); border-radius: 0 0 10px 10px; }
.postbody .attachcontent { border-radius: 10px; margin-top: 10px; }
.posthilit { background: #ffe58a; color: inherit; padding: 0 2px; border-radius: 3px; }
.syntaxbg { color: #fff; } .syntaxcomment { color: #8aa0bd; } .syntaxdefault { color: #9cd2ff; } .syntaxhtml { color: #d9e4f3; } .syntaxkeyword { color: #7fe0b8; } .syntaxstring { color: #ffb4a1; }

/* ---------- Опрос ---------- */
.zn-poll { padding: 20px 22px; }
.zn-poll-q { font-size: 1.0625rem; font-weight: 700; }
.zn-poll-len { margin-top: 2px; font-size: .8125rem; color: var(--zn-muted); }
.zn-poll-options { margin: 16px 0 0; display: grid; gap: 10px; }
.zn-poll-opt { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 10px; align-items: center; }
.zn-poll-opt.has-results { grid-template-columns: auto minmax(0, 1fr) auto; }
.zn-poll-caption { font-weight: 550; }
.zn-poll-bar { grid-column: 2 / -1; height: 8px; border-radius: 999px; background: var(--zn-surface-3); overflow: hidden; }
.zn-poll-bar > span { display: block; height: 100%; border-radius: inherit; background: var(--zn-head-grad); }
.zn-poll-opt.is-voted .zn-poll-bar > span { background: var(--zn-red-grad); }
.zn-poll-pct { font-size: .8125rem; font-weight: 650; color: var(--zn-text-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.zn-poll-foot { margin-top: 16px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: .8125rem; color: var(--zn-muted); }

/* ---------- Правила форума и уведомления ---------- */
.forumrules, .zn-rules {
	display: flex;
	gap: 14px;
	padding: 14px 18px;
	margin-bottom: 18px;
	border-radius: 14px;
	font-size: .875rem;
	color: #6b4a07;
	background: linear-gradient(180deg, #fff8e8, #fff3d6);
	border: 1px solid #f6dfa6;
}
.zn-rules > i { font-size: 1.2rem; color: #d99a14; margin-top: 2px; }
.forumrules h3, .zn-rules h3 { font-size: .9375rem; color: #5a3d05; margin-bottom: 4px; }
.zn-message { max-width: 760px; margin: 10px auto 0; text-align: center; padding: 30px 26px; }
.zn-message-icon { width: 58px; height: 58px; margin: 0 auto 14px; display: grid; place-items: center; border-radius: 18px; font-size: 1.4rem; color: #fff; background: var(--zn-head-grad); box-shadow: 0 16px 30px -16px rgba(36, 89, 185, .95); }
.zn-message h2 { margin-bottom: 10px; }
.zn-message .gen { font-size: 1rem; color: var(--zn-text-2); line-height: 1.6; }

/* ---------- Статистика на главной ---------- */
.zn-stats { margin-top: 4px; }
.zn-stat-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.zn-stat-pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 7px 13px;
	border-radius: 12px;
	font-size: .8125rem;
	color: var(--zn-text-2);
	background: var(--zn-surface-2);
	border: 1px solid var(--zn-line);
}
.zn-stat-pill i { color: var(--zn-blue); }
.zn-stat-pill strong { color: var(--zn-text); }
.zn-online-text { font-size: .8125rem; color: var(--zn-muted); line-height: 1.6; }
.zn-online-users { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--zn-line-2); font-size: .8125rem; line-height: 1.7; }
.zn-online-users a { font-weight: 600; }
.zn-bday { font-size: .875rem; line-height: 1.6; }
.zn-bday-icon { font-size: 1.6rem; color: #f59e0b; }
.zn-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 18px; margin: 22px 0 6px; font-size: .78rem; color: var(--zn-muted); }
.zn-legend span { display: inline-flex; align-items: center; gap: 8px; }
.zn-legend .zn-ficon { width: 26px; height: 26px; border-radius: 8px; font-size: .7rem; box-shadow: none; }
.zn-ficon.is-sticky { color: var(--zn-blue); background: #fff7e6; border-color: #ffe2a8; }
.zn-ficon.is-announce { color: #b26b00; background: #fff4dc; border-color: #ffdf9c; }
.zn-ficon.is-locked { color: var(--zn-muted-2); background: var(--zn-surface-3); border-color: var(--zn-line); }
.zn-bottom-tools .zn-legend { justify-content: flex-start; margin: 0; flex: 1 1 560px; }
.zn-bottom-tools .zn-permissions { flex: 0 1 auto; }
.zn-datebar { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; font-size: .78rem; color: var(--zn-muted-2); margin-top: 10px; }
.zn-subtle-links { margin: 14px 0 0; font-size: .78rem; color: var(--zn-muted-2); }
.zn-subtle-links a { color: var(--zn-muted); }
.zn-loginbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.zn-loginbar .form-control { width: 190px; }
.zn-permissions { font-size: .78rem; line-height: 1.7; color: var(--zn-muted); }
.zn-permissions strong, .zn-permissions b { color: var(--zn-text-2); }

/* ---------- Раскладка с колонкой баннеров ---------- */
.zn-layout { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; }
.zn-layout-side > * { margin-left: 18px; }
.zn-banner-slot { font-size: .75rem; color: var(--zn-muted-2); }

/* ---------- Формы ---------- */
.form-control, .form-select { border-color: var(--zn-line-2); border-radius: 10px; font-size: .9375rem; }
.form-control:focus, .form-select:focus { border-color: var(--zn-blue-300); box-shadow: 0 0 0 4px rgba(47, 123, 230, .15); }
.form-check-input:checked { background-color: var(--zn-blue); border-color: var(--zn-blue); }
.form-label { font-weight: 600; font-size: .875rem; color: var(--zn-text-2); margin-bottom: 6px; }
.form-text { font-size: .78rem; color: var(--zn-muted); }
.zn-form-row { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 8px 24px; padding: 16px 20px; border-top: 1px solid var(--zn-line); align-items: start; }
.zn-form-row:first-child { border-top: 0; }
.zn-form-row > .zn-form-label { padding-top: 7px; font-weight: 650; font-size: .875rem; color: var(--zn-text-2); }
.zn-form-row > .zn-form-label .gensmall, .zn-form-row > .zn-form-label .form-text { display: block; margin-top: 3px; font-weight: 400; color: var(--zn-muted); font-size: .78rem; line-height: 1.45; }
.zn-form-row.is-full { grid-template-columns: minmax(0, 1fr); }
.zn-form-actions { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; padding: 16px 20px; background: var(--zn-surface-2); border-top: 1px solid var(--zn-line); }
.zn-form-section { padding: 12px 20px; font-weight: 700; font-size: .9375rem; color: var(--zn-text); background: var(--zn-surface-3); border-top: 1px solid var(--zn-line); border-bottom: 1px solid var(--zn-line); display: flex; align-items: center; gap: 10px; }
.zn-form-section i { color: var(--zn-blue); }
.zn-error {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	padding: 12px 16px;
	margin: 0;
	font-size: .875rem;
	font-weight: 550;
	color: #9b1c22;
	background: var(--zn-red-50);
	border-bottom: 1px solid #f8c9cb;
}
.zn-checks { display: grid; gap: 8px; }
.zn-check { display: flex; align-items: flex-start; gap: 10px; font-size: .875rem; color: var(--zn-text-2); cursor: pointer; }
.zn-check input { margin-top: 3px; }

/* Редактор сообщений */
.zn-editor { border: 1px solid var(--zn-line-2); border-radius: 14px; overflow: hidden; background: var(--zn-surface); transition: border-color .2s, box-shadow .2s; }
.zn-editor:focus-within { border-color: var(--zn-blue-300); box-shadow: 0 0 0 4px rgba(47, 123, 230, .12); }
.zn-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding: 8px; background: var(--zn-surface-2); border-bottom: 1px solid var(--zn-line); }
.zn-toolbar .btnbbcode, .zn-tb {
	height: 34px;
	min-width: 34px;
	padding: 0 9px;
	border-radius: 9px;
	border: 1px solid transparent;
	background: transparent;
	color: var(--zn-text-2);
	font-size: .8125rem;
	font-weight: 600;
	transition: background .15s, border-color .15s, color .15s;
}
.zn-toolbar .btnbbcode:hover, .zn-tb:hover { background: var(--zn-surface); border-color: var(--zn-line-2); color: var(--zn-blue-600); }
.zn-toolbar .zn-tb-sep { width: 1px; height: 22px; margin: 0 4px; background: var(--zn-line-2); }
.zn-toolbar select { height: 34px; width: auto; padding-top: 0; padding-bottom: 0; font-size: .8125rem; border-radius: 9px; }
.zn-toolbar .zn-tb-size { display: inline-flex; align-items: center; gap: 6px; font-size: .78rem; color: var(--zn-muted); margin-left: auto; }
.zn-editor textarea {
	display: block;
	width: 100%;
	min-height: 300px;
	padding: 14px 16px;
	border: 0;
	border-radius: 0;
	resize: vertical;
	font-family: inherit;
	font-size: .9375rem;
	line-height: 1.6;
	color: var(--zn-text);
	background: var(--zn-surface);
	outline: none;
}
.zn-helpline { display: flex; align-items: center; gap: 8px; padding: 7px 12px; font-size: .75rem; color: var(--zn-muted); background: var(--zn-surface-2); border-top: 1px solid var(--zn-line); }
.zn-helpline i { color: var(--zn-blue-300); }
.zn-helpline input.helpline { flex: 1 1 auto; border: 0; background: transparent; color: var(--zn-muted); font-size: .75rem; padding: 0; width: 100%; outline: none; box-shadow: none; }
.zn-editor-wrap { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; align-items: start; }
.zn-palette { padding: 8px; border: 1px solid var(--zn-line); border-radius: 12px; background: var(--zn-surface-2); }
.zn-palette-title { font-size: .6875rem; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; color: var(--zn-muted); text-align: center; margin-bottom: 6px; }
.zn-palette table { border-collapse: separate; border-spacing: 2px; }
.zn-palette td { padding: 0 !important; }
.zn-palette a { display: block; border-radius: 3px; transition: transform .15s; }
.zn-palette a:hover { transform: scale(1.35); position: relative; z-index: 2; box-shadow: 0 2px 8px rgba(0, 0, 0, .3); }
.zn-palette img { display: block; }
.zn-smilies { display: flex; flex-wrap: wrap; gap: 2px; align-items: center; }
.zn-smilies a { display: inline-grid; place-items: center; padding: 3px; border-radius: 8px; transition: background .15s, transform .15s; }
.zn-smilies a:hover { background: var(--zn-blue-50); transform: scale(1.15); }
.zn-smilies img { margin: 0 !important; }
.zn-side-title { font-size: .75rem; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; color: var(--zn-muted); margin-bottom: 8px; }
.zn-bbstatus { margin-top: 10px; display: grid; gap: 2px; font-size: .75rem; color: var(--zn-muted); }
.zn-bbstatus a { font-weight: 600; }

/* ---------- Личный раздел и модерация ---------- */
.zn-panel { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 20px; align-items: start; }
.zn-panel-side { display: grid; gap: 16px; position: sticky; top: 76px; }
.zn-panel-main { min-width: 0; }
.zn-sidenav { padding: 8px; }
.zn-sidenav-group + .zn-sidenav-group { margin-top: 2px; }
.zn-sidenav-link {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 9px 12px;
	border-radius: 10px;
	font-size: .875rem;
	font-weight: 600;
	color: var(--zn-text-2);
	transition: background .2s, color .2s;
}
.zn-sidenav-link i { width: 18px; text-align: center; color: var(--zn-muted-2); }
.zn-sidenav-link:hover { text-decoration: none; background: var(--zn-blue-50); color: var(--zn-blue-600); }
.zn-sidenav-link.is-active { color: var(--zn-blue-700); background: var(--zn-blue-50); }
.zn-sidenav-link.is-active i { color: var(--zn-blue); }
.zn-sidenav-sub { list-style: none; margin: 2px 0 6px; padding: 0 0 0 22px; border-left: 2px solid var(--zn-blue-100); margin-left: 20px; }
.zn-sidenav-sub li a, .zn-sidenav-sub li b { display: block; padding: 6px 10px; border-radius: 8px; font-size: .8125rem; font-weight: 550; color: var(--zn-text-2); }
.zn-sidenav-sub li b { color: var(--zn-blue-700); font-weight: 700; background: var(--zn-surface-3); }
.zn-sidenav-sub li a:hover { text-decoration: none; color: var(--zn-blue-600); background: var(--zn-blue-50); }
.zn-sidenav-sub .is-folder { display: flex; justify-content: space-between; }
.zn-sidenav hr { margin: 6px 10px; }
.zn-side-card .zn-card-body { padding: 14px 16px; font-size: .8125rem; }
.zn-side-card ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 4px; }
.zn-pm-legend { display: grid; gap: 6px; }
.zn-pm-legend > div { display: flex; align-items: center; gap: 8px; font-size: .8125rem; }
.zn-pm-legend .zn-swatch { width: 12px; height: 12px; border-radius: 4px; flex-shrink: 0; }

/* ---------- Профиль ---------- */
.zn-profile-hero { display: flex; gap: 20px; align-items: center; padding: 22px; flex-wrap: wrap; }
.zn-profile-hero .zn-post-ava { margin: 0; }
.zn-profile-name { font-size: 1.5rem; font-weight: 750; letter-spacing: -.02em; }
.zn-profile-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 0; }
.zn-profile-fact { padding: 12px 20px; border-top: 1px solid var(--zn-line); font-size: .875rem; }
.zn-profile-fact dt { font-size: .75rem; font-weight: 600; color: var(--zn-muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 2px; }
.zn-profile-fact dd { margin: 0; color: var(--zn-text); font-weight: 550; word-wrap: break-word; }

/* ---------- Вход ---------- */
.zn-auth { max-width: 980px; margin: 6px auto 0; display: grid; grid-template-columns: 1.1fr 1fr; }
.zn-auth-info {
	padding: 32px;
	color: #c9d5e6;
	background:
		radial-gradient(500px 240px at 100% 0, rgba(60, 142, 242, .35), transparent 65%),
		linear-gradient(160deg, #0d1a2d, #16294a);
	position: relative;
	overflow: hidden;
}
.zn-auth-info h2 { color: #fff; font-size: 1.35rem; margin-bottom: 12px; }
.zn-auth-info p, .zn-auth-info .genmed { font-size: .875rem; line-height: 1.65; }
.zn-auth-info a { color: #fff; font-weight: 600; }
.zn-auth-info::after { content: "\f030"; font-family: "Font Awesome 6 Free"; font-weight: 900; position: absolute; right: -14px; bottom: -38px; font-size: 9rem; color: rgba(255, 255, 255, .045); transform: rotate(-12deg); }
.zn-auth-form { padding: 32px; }
.zn-auth-form h2 { margin-bottom: 18px; }
.zn-input-icon { position: relative; }
.zn-input-icon > i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--zn-muted-2); pointer-events: none; }
.zn-input-icon > .form-control { padding-left: 40px; height: 46px; }
.zn-auth-links { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; font-size: .8125rem; }

/* ---------- FAQ ---------- */
.zn-faq-index { columns: 2 320px; column-gap: 28px; }
.zn-faq-index section { break-inside: avoid; margin-bottom: 18px; }
.zn-faq-index h3 { font-size: .9375rem; margin-bottom: 8px; color: var(--zn-blue-700); }
.zn-faq-index ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 4px; font-size: .875rem; }
.zn-faq-item { padding: 18px 22px; border-top: 1px solid var(--zn-line); }
.zn-faq-item:first-child { border-top: 0; }
.zn-faq-item h3 { font-size: 1rem; margin-bottom: 8px; }
.zn-faq-item .postbody { font-size: .9375rem; }

/* ==========================================================================
   Совместимость со старой разметкой subsilver2 (таблицы ЛС, модерации и т. д.)
   ========================================================================== */
.gen { font-size: .9375rem; }
.genmed { font-size: .875rem; }
.gensmall { font-size: .8125rem; }
.postdetails { font-size: .8125rem; color: var(--zn-muted); }
.postauthor { color: var(--zn-text); font-weight: 650; }
.topicauthor, .topicdetails { font-size: .8125rem; margin: 1px 0; }
.forumdesc { font-size: .8125rem; color: var(--zn-muted); }
.titles { font-size: 1.125rem; font-weight: 700; color: var(--zn-text); }
a.titles:hover { color: var(--zn-blue-700); }
.copyright { color: var(--zn-muted); }
.error, .errorbox { color: var(--zn-red-600); font-weight: 550; }
.nowrap { white-space: nowrap; }
.username-coloured { font-weight: 650; }
.sep { color: var(--zn-blue-700); font-weight: 650; }
a.forumlink, a.forumname { font-weight: 650; font-size: 1rem; color: var(--zn-text); }
a.topictitle, p.topictitle { font-weight: 600; font-size: .9375rem; color: var(--zn-text); }
a.forumlink:hover, a.forumname:hover, a.topictitle:hover { color: var(--zn-blue-600); }
p.moderators { font-size: .8125rem; color: var(--zn-muted); }
p.linkmcp { font-size: .8125rem; }
p.breadcrumbs { font-weight: 600; }
.postreported, .postreported a { color: var(--zn-red-600); font-weight: 650; }
.postapprove, .postapprove a { color: var(--zn-green); font-weight: 650; }
.legend { margin: 0 auto; }
#pageheader:not(.zn-pagehead) { margin-bottom: 14px; display: flow-root; }
#pageheader h2 { margin-bottom: 4px; }
#pagecontent { min-width: 0; }

table.tablebg, table.tablebgw, table.tablebgg {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	background: var(--zn-surface);
	border: 1px solid var(--zn-line);
	border-radius: 14px;
	box-shadow: var(--zn-shadow);
	overflow: hidden;
	margin-bottom: 4px;
}
table.tablebg table.tablebg { box-shadow: none; border-radius: 10px; }
.tablebg th, .tablebgw th, .tablebgg th, .zn-legacy th {
	padding: 11px 14px;
	color: #fff;
	font-size: .8125rem;
	font-weight: 650;
	letter-spacing: .01em;
	background: #2c6fd6;
	background-image: linear-gradient(180deg, rgba(255, 255, 255, .1), transparent);
	white-space: nowrap;
	border: 0;
}
.tablebg th a, .tablebg th a:visited { color: #fff; text-decoration: underline; text-decoration-color: rgba(255, 255, 255, .4); }
.tablebg td, .tablebgw td, .tablebgg td { padding: 9px 12px; vertical-align: middle; border-top: 1px solid var(--zn-line); }
.tablebg tr:first-child > td, .tablebgw tr:first-child > td, .tablebgg tr:first-child > td { border-top: 0; }
.tablebg td table td, .tablebgw td table td { border-top: 0; padding: 3px 5px; }
.tablebg td table, .tablebgw td table { background: transparent; }
td { padding: 2px; }
.row1, td.row1 { background-color: var(--zn-surface); }
.row2, td.row2 { background-color: var(--zn-surface-2); }
.row3, td.row3 { background-color: var(--zn-surface-3); }
td.row1, td.row2, td.row3 { padding: 9px 12px; }
td.cat, .cat, td.catdiv, .catdiv {
	padding: 10px 14px;
	background: var(--zn-blue-50);
	border-top: 1px solid var(--zn-blue-100) !important;
	color: var(--zn-text-2);
	text-indent: 0;
	height: auto;
}
td.cat h4, .cat h4 { font-size: .9375rem; margin: 0; }
td.cat h4 a, .cat h4 a { color: var(--zn-blue-700); }
td.spacer, .spacer { padding: 0 !important; height: 1px; background: var(--zn-line); }
td.spacer img { display: none; }
td.profile { padding: 8px; }
.msg_header, .msg_body, .msg_bottom { padding: 10px 14px !important; }
.zn-table-wrap { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: 14px; }
.zn-table-wrap > table.tablebg { margin-bottom: 0; }

/* Поля и кнопки старой разметки */
input.post, input[type="text"], input[type="password"], input[type="email"], input[type="number"], input[type="search"], input[type="url"], input[type="file"], textarea, select {
	max-width: 100%;
	font-family: inherit;
	font-size: .875rem;
	color: var(--zn-text);
	background-color: var(--zn-surface);
	border: 1px solid var(--zn-line-2);
	border-radius: 10px;
	padding: 6px 10px;
	transition: border-color .2s, box-shadow .2s;
}
select { padding-right: 28px; }
select[multiple], select[size] { padding: 4px; }
input.post:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus, input[type="number"]:focus, textarea:focus, select:focus { outline: none; border-color: var(--zn-blue-300); box-shadow: 0 0 0 4px rgba(47, 123, 230, .15); }
input[type="checkbox"], input[type="radio"], input.radio { width: 16px; height: 16px; accent-color: var(--zn-blue); vertical-align: -3px; margin: 0 4px 0 0; cursor: pointer; }
option.disabled-option { color: var(--zn-muted-2); }
input.btnmain, input.btnlite, input.btnfile, button.btnmain, button.btnlite, input[type="submit"].post, input[type="button"].post, a.button1, a.button2 {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 7px 16px;
	font-family: inherit;
	font-size: .8125rem;
	font-weight: 650;
	line-height: 1.4;
	border-radius: 999px;
	cursor: pointer;
	transition: transform .2s var(--zn-ease), filter .2s, box-shadow .2s, background .2s, border-color .2s, color .2s;
	white-space: nowrap;
}
input.btnmain, button.btnmain {
	color: #fff;
	border: 1px solid transparent;
	background: var(--zn-head-grad);
	box-shadow: 0 10px 20px -12px rgba(36, 89, 185, .95), inset 0 1px 0 rgba(255, 255, 255, .2);
}
input.btnmain:hover, button.btnmain:hover { filter: brightness(1.06); transform: translateY(-1px); }
input.btnlite, button.btnlite, input.btnfile, input[type="submit"].post, input[type="button"].post {
	color: var(--zn-text-2);
	border: 1px solid var(--zn-line-2);
	background: var(--zn-surface);
}
input.btnlite:hover, button.btnlite:hover, input.btnfile:hover, input[type="submit"].post:hover, input[type="button"].post:hover { color: var(--zn-blue-600); border-color: var(--zn-blue-200); background: var(--zn-blue-50); }
input.btnbbcode { font-family: inherit; }
input.helpline { border: 0; background: transparent; }
input[name="post"].btnmain, input[name="submit"].btnmain { padding-inline: 22px; }
table.colortable td { padding: 0; }

/* ЛС: цветовые метки */
.pm_marked_colour { background-color: #f3c64e; }
.pm_replied_colour { background-color: #9bb4d4; }
.pm_friend_colour { background-color: #34b27b; }
.pm_foe_colour { background-color: #e3343b; }
td.pm_marked_colour, td.pm_replied_colour, td.pm_friend_colour, td.pm_foe_colour { width: 5px; padding: 0 !important; }

/* ---------- Подвал ---------- */
.zn-footer {
	margin-top: 40px;
	color: #95a5bb;
	background:
		radial-gradient(700px 240px at 100% 0, rgba(60, 142, 242, .18), transparent 65%),
		linear-gradient(180deg, #0f1c31, #0a1320);
	font-size: .8125rem;
}
.zn-footer a { color: #dbe6f5; }
.zn-footer a:hover { color: #fff; }
.zn-footer-grid { display: flex; align-items: flex-end; gap: 24px; flex-wrap: wrap; padding: 34px 0 30px; }
.zn-footer-brand { display: flex; flex-direction: column; gap: 10px; }
.zn-footer-brand img { width: 118px; opacity: .92; }
.zn-footer-brand b { color: #e6eef9; font-weight: 650; font-size: .875rem; }
.zn-footer-end { margin-left: auto; text-align: right; display: flex; flex-direction: column; gap: 8px; align-items: flex-end; }
.zn-footer-acp { padding: 14px 0 0; }
.zn-footer-acp a { display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px; border-radius: 999px; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .12); font-weight: 600; }
.zn-footer-bar { border-top: 1px solid rgba(255, 255, 255, .07); padding: 14px 0; font-size: .75rem; color: #6f8099; display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.zn-totop {
	position: fixed;
	right: 22px;
	bottom: 22px;
	z-index: 1040;
	width: 46px;
	height: 46px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	color: #fff;
	background: var(--zn-head-grad);
	box-shadow: 0 16px 30px -14px rgba(36, 89, 185, .95);
	opacity: 0;
	transform: translateY(14px) scale(.9);
	pointer-events: none;
	transition: opacity .3s, transform .3s var(--zn-ease);
}
.zn-totop.is-visible { opacity: 1; transform: none; pointer-events: auto; }
.zn-totop:hover { color: #fff; text-decoration: none; filter: brightness(1.08); }

/* ---------- Просмотр изображений ---------- */
.zn-lightbox {
	position: fixed;
	inset: 0;
	z-index: 2000;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	background: rgba(6, 11, 19, .94);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	opacity: 0;
	transition: opacity .25s;
	touch-action: pan-y;
}
.zn-lightbox.is-open { opacity: 1; }
.zn-lb-top { display: flex; align-items: center; gap: 12px; padding: 14px 18px; color: #c5d1e2; font-size: .8125rem; }
.zn-lb-count { font-variant-numeric: tabular-nums; color: #8ea0b9; }
.zn-lb-title { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.zn-lb-btn {
	width: 44px;
	height: 44px;
	display: grid;
	place-items: center;
	flex-shrink: 0;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, .14);
	color: #fff;
	background: rgba(255, 255, 255, .06);
	transition: background .2s, transform .2s var(--zn-ease);
}
.zn-lb-btn:hover { background: rgba(255, 255, 255, .16); color: #fff; text-decoration: none; }
.zn-lb-stage { position: relative; display: grid; place-items: center; padding: 0 74px; min-height: 0; overflow: hidden; }
.zn-lb-stage img { max-width: 100%; max-height: calc(100vh - 150px); max-height: calc(100dvh - 150px); object-fit: contain; border-radius: 6px; box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .8); transition: opacity .25s, transform .35s var(--zn-ease); }
.zn-lb-stage img.is-loading { opacity: 0; transform: scale(.98); }
.zn-lb-prev, .zn-lb-next { position: absolute; top: 50%; transform: translateY(-50%); }
.zn-lb-prev { left: 16px; }
.zn-lb-next { right: 16px; }
.zn-lb-prev:hover { transform: translateY(-50%) translateX(-2px); }
.zn-lb-next:hover { transform: translateY(-50%) translateX(2px); }
.zn-lb-spinner { position: absolute; width: 38px; height: 38px; border-radius: 50%; border: 3px solid rgba(255, 255, 255, .15); border-top-color: #fff; animation: zn-spin .8s linear infinite; }
@keyframes zn-spin { to { transform: rotate(360deg); } }
.zn-lb-foot { height: 18px; }
body.zn-noscroll { overflow: hidden; }

/* ---------- Адаптивность ---------- */
@media (max-width: 1199.98px) {
	.zn-fgrid { grid-template-columns: 46px minmax(0, 1fr) 76px 92px 220px; }
	.zn-tgrid { grid-template-columns: 40px minmax(0, 1fr) 130px 70px 80px 180px; }
}
@media (max-width: 991.98px) {
	.zn-container { padding-inline: 16px; }
	.zn-hero-text { display: none; }
	.zn-hero-main { padding-bottom: 18px; gap: 16px; }
	.zn-hero-search { width: min(320px, 46vw); }
	.zn-navbar .navbar-toggler { display: inline-flex; }
	.zn-mainnav { flex-basis: 100%; margin-left: 0; }
	.zn-mainnav .navbar-nav { flex-direction: column; align-items: stretch; padding: 6px 0 12px; gap: 2px; }
	.zn-mainnav .zn-nav-link { padding: 11px 14px; border-radius: 12px; font-size: .9375rem; }
	.zn-mainnav .zn-nav-link i { width: 20px; text-align: center; }
	.zn-panel { grid-template-columns: minmax(0, 1fr); }
	.zn-panel-side { position: static; }
	.zn-auth { grid-template-columns: minmax(0, 1fr); }
	.zn-auth-info { padding: 24px; }

	/* форумы — компактная раскладка */
	.zn-fhead .zn-col-label { display: none; }
	.zn-fgrid { grid-template-columns: 42px minmax(0, 1fr); row-gap: 8px; align-items: start; }
	.zn-tgrid { align-items: start; }
	.zn-ficon { width: 42px; height: 42px; border-radius: 13px; font-size: 1.05rem; }
	.zn-fstats { display: flex; grid-column: 2; gap: 14px; font-size: .78rem; color: var(--zn-muted); }
	.zn-fstat { display: inline-flex; gap: 4px; align-items: baseline; text-align: left; }
	.zn-fstat b { display: inline; font-size: .8125rem; }
	.zn-fstat span { display: inline; }
	.zn-flast { grid-column: 2; padding: 8px 10px; border-radius: 10px; background: var(--zn-surface-2); border: 1px solid var(--zn-line); }
	.zn-frow:hover .zn-flast { background: var(--zn-surface); }

	/* темы — компактная раскладка */
	.zn-thead { display: none; }
	.zn-tgrid { grid-template-columns: 36px minmax(0, 1fr); row-gap: 6px; }
	.zn-trow .zn-ficon { width: 36px; height: 36px; border-radius: 11px; font-size: .9rem; }
	.zn-tcounts { grid-column: 2; display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: .78rem; color: var(--zn-muted); align-items: center; }
	.zn-tauthor { text-align: left; }
	.zn-tauthor::before { content: "\f007"; font-family: "Font Awesome 6 Free"; font-weight: 400; margin-right: 6px; color: var(--zn-muted-2); }
	.zn-tnum { text-align: left; font-size: .78rem; font-weight: 600; }
	.zn-tnum span { display: inline; color: var(--zn-muted); font-weight: 450; }
	.zn-tlast { grid-column: 2; display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: center; color: var(--zn-muted); }
}
@media (min-width: 992px) {
	.zn-tcounts { display: contents; }
	.zn-mainnav.collapse:not(.show) { display: block; }
}
@media (max-width: 767.98px) {
	html { scroll-padding-top: 64px; }
	.zn-hero-top { display: none; }
	.zn-hero-main { padding: 14px 0; }
	.zn-logo img { width: 124px; }
	.zn-logo-badge { font-size: .625rem; }
	.zn-hero-search { display: none; }
	.zn-navbar-inner { min-height: 54px; }
	.zn-nav-link .zn-hide-sm { display: none; }
	.zn-user { max-width: 160px; }
	.zn-quick { margin: 14px 0 10px; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent); mask-image: linear-gradient(90deg, #000 88%, transparent); padding-bottom: 2px; margin-right: -16px; padding-right: 24px; }
	.zn-quick::-webkit-scrollbar { display: none; }
	.zn-chips { flex-wrap: nowrap; }
	.zn-chips.is-end { margin-left: 0; }
	.zn-crumbs { padding: 9px 12px; font-size: .8125rem; border-radius: 12px; }
	.zn-crumbs-action { margin-left: 0; }
	.zn-card { border-radius: 14px; }
	.zn-fhead { padding: 12px 14px; }
	.zn-frow { padding: 14px; }
	.zn-trow { padding: 12px 14px; }
	.zn-layout { grid-template-columns: minmax(0, 1fr); }
	.zn-layout-side > * { margin: 14px 0 0; }

	/* сообщение: автор сверху горизонтальной полосой */
	.zn-post { grid-template-columns: minmax(0, 1fr); border-radius: 14px; margin-bottom: 12px; }
	.zn-post-author {
		display: grid;
		grid-template-columns: auto minmax(0, 1fr);
		grid-template-areas: "ava name" "ava facts";
		gap: 2px 12px;
		align-items: center;
		text-align: left;
		padding: 12px 14px;
		border-right: 0;
		border-bottom: 1px solid var(--zn-line);
		background: var(--zn-surface-2);
	}
	.zn-post-author > .zn-post-who { grid-area: name; min-width: 0; display: flex; align-items: baseline; gap: 4px 10px; flex-wrap: wrap; }
	.zn-post-rank { margin: 0; }
	.zn-post-rankimg { display: none; }
	.zn-post-ava { grid-area: ava; margin: 0; }
	.zn-post-ava img { width: 46px; height: 46px; object-fit: cover; border-radius: 13px; }
	.zn-post-noava { grid-area: ava; width: 46px; height: 46px; border-radius: 13px; }
	.zn-post-facts { grid-area: facts; margin: 0; display: flex; flex-wrap: wrap; gap: 0 12px; font-size: .75rem; }
	.zn-post-facts .zn-hide-sm { display: none; }
	.zn-post-contacts { display: none; }
	.zn-post-head { padding: 10px 14px; }
	.zn-post-subject { display: none; }
	.zn-post-actions { width: 100%; justify-content: flex-end; flex-wrap: wrap; }
	.zn-post-body { padding: 14px 14px 6px; }
	.zn-post-foot { padding: 8px 14px 12px; }
	.postbody { font-size: .96875rem; line-height: 1.65; }
	.zn-iconbtn.is-labeled > span > span { display: none; }

	.zn-form-row { grid-template-columns: minmax(0, 1fr); padding: 14px; gap: 6px; }
	.zn-form-row > .zn-form-label { padding-top: 0; }
	.zn-editor-wrap { grid-template-columns: minmax(0, 1fr); }
	.zn-palette { display: none; }
	.zn-editor textarea { min-height: 220px; }
	.zn-toolbar .zn-tb-size { margin-left: 0; }
	.zn-form-actions { padding: 14px; }
	.zn-form-actions .btn, .zn-form-actions input { flex: 1 1 calc(50% - 10px); }

	.zn-actionbar { gap: 10px; }
	.zn-pager a, .zn-pager strong, .zn-pager-jump { min-width: 32px; height: 32px; padding: 0 8px; }
	.zn-pager-label { display: none; }
	.zn-sortbar { justify-content: flex-start; }
	.zn-sortbar select { flex: 1 1 140px; }
	.zn-loginbar .form-control { width: 100%; }
	.zn-lb-stage { padding: 0 8px; overflow: visible; }
	.zn-lb-stage img { max-height: calc(100vh - 200px); max-height: calc(100dvh - 200px); }
	.zn-lb-prev, .zn-lb-next { top: auto; bottom: -58px; transform: none; }
	.zn-lb-prev:hover, .zn-lb-next:hover { transform: none; }
	.zn-lb-foot { height: 72px; }
	.zn-lb-prev { left: calc(50% - 56px); }
	.zn-lb-next { right: calc(50% - 56px); }
	.zn-totop { right: 14px; bottom: 14px; width: 42px; height: 42px; }
	.zn-footer-end { margin-left: 0; text-align: left; align-items: flex-start; }
	.zn-auth-form, .zn-auth-info { padding: 22px 18px; }
	.zn-panel-side { gap: 12px; }

	/* широкие старые таблицы прокручиваются внутри своей рамки */
	table.tablebg td, table.tablebg th { padding: 8px 10px; }
}
@media (max-width: 420px) {
	.zn-nav-link { padding: 8px 10px; }
	.zn-user span { max-width: 92px; }
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* ---------- Печать ---------- */
@media print {
	.zn-hero, .zn-navbar, .zn-quick, .zn-crumbs, .zn-footer, .zn-totop, .zn-post-actions, .zn-actionbar { display: none !important; }
	body.zn { background: #fff; }
	.zn-card, .zn-post { box-shadow: none; border-color: #ccc; }
}

/* ---------- Дополнения ---------- */
.zn-ficon.is-unread { color: #fff; background: var(--zn-red-grad); border-color: transparent; box-shadow: 0 10px 20px -10px rgba(217, 42, 49, .85); }
.zn-jumpbox { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.zn-jumpbox select { max-width: 280px; }
.zn-bottom-tools { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; flex-wrap: wrap; margin-top: 16px; }
.zn-form-message { grid-template-areas: "label field" "smilies field"; grid-template-rows: auto 1fr; }
.zn-form-message > .zn-form-label { grid-area: label; }
.zn-form-message > .zn-form-field { grid-area: field; min-width: 0; }
.zn-form-message > .zn-form-smilies { grid-area: smilies; align-self: start; }
.zn-topic-review-scroll { max-height: 520px; overflow: auto; }
.zn-review-item { padding: 16px 20px; border-top: 1px solid var(--zn-line); }
.zn-review-item:first-child { border-top: 0; }
.zn-review-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; }
.zn-review-head .zn-spacer { flex: 1 1 auto; }
.zn-review-subject { margin-bottom: 8px; }
.zn-review-item .postbody { font-size: .9375rem; }
.zn-post-preview { border-color: var(--zn-blue-200); box-shadow: 0 0 0 4px rgba(47, 123, 230, .08), var(--zn-shadow); }
@media (max-width: 767.98px) {
	.zn-form-message { grid-template-areas: "label" "field" "smilies"; grid-template-rows: none; }
	.zn-review-item { padding: 14px; }
}
.zn-auth.is-single { grid-template-columns: minmax(0, 1fr); max-width: 520px; }
.zn-panel-toggle { justify-content: flex-start; }
.zn-sidenav .zn-pm-badge { margin-left: auto; }
.zn-pm-legend .zn-swatch { display: inline-block; }
@media (min-width: 992px) {
	.zn-sidenav.collapse:not(.show) { display: block; }
}
.zn-profile-noava { width: 96px; height: 96px; border-radius: 22px; display: grid; place-items: center; font-size: 2.2rem; color: #fff; background: var(--zn-head-grad); box-shadow: 0 16px 30px -16px rgba(36, 89, 185, .9); }
.zn-profile-fact { margin: 0; }
.zn-recent { display: grid; }
.zn-recent-item { display: flex; justify-content: space-between; gap: 12px; padding: 11px 18px; border-top: 1px solid var(--zn-line); color: var(--zn-text-2); font-size: .875rem; }
.zn-recent-item:first-child { border-top: 0; }
.zn-recent-item i { color: var(--zn-muted-2); margin-right: 6px; }
.zn-recent-item:hover { text-decoration: none; background: #f8fbff; color: var(--zn-blue-600); }
.zn-form-row-compact { grid-template-columns: 200px minmax(0, 1fr); }
.zn-search-where { gap: 6px; }
.zn-search-where a { color: var(--zn-text-2); }
.zn-faq-item:target { background: #fffbea; }
.zn-faq-item { scroll-margin-top: 80px; }
@media (max-width: 991.98px) { .zn-form-row-compact { grid-template-columns: minmax(0, 1fr); } }

.zn-profile-info { flex: 1 1 320px; min-width: 0; }
.zn-panel-side > .zn-card + .zn-card { margin-top: 0; }
@media (max-width: 991.98px) {
	.zn-panel-side { display: contents; }
	.zn-panel-side > * { margin-bottom: 14px; }
	.zn-panel-main { order: 1; }
	.zn-panel-side > .zn-side-card { order: 2; margin: 14px 0 0; }
	.zn-panel-side > .zn-pm-to { order: 0; margin: 0 0 14px; }
	.zn-panel { gap: 0; }
}
.zn-members td { padding-top: 7px !important; padding-bottom: 7px !important; }
.zn-members th a { text-decoration: none !important; }
@media (max-width: 767.98px) { .zn-hide-md { display: none !important; } }
body.zn-simple { min-height: 0; display: block; }
.zn-simple-wrap { padding: 16px; }
.zn-simple-foot { padding: 8px 16px 16px; text-align: center; font-size: .75rem; color: var(--zn-muted-2); }
.zn-narrow { max-width: 980px; margin-inline: auto; }
.zn-terms { line-height: 1.7; color: var(--zn-text-2); padding: 22px 26px; }
.zn-terms span[style*="color"] { display: inline-block; padding: 10px 14px; border-radius: 10px; background: var(--zn-red-50); }
.zn-input-icon > .form-control { width: 100%; }

.zn-tnum-ic { display: none; margin-right: 5px; color: var(--zn-muted-2); font-size: .85em; }
@media (max-width: 991.98px) { .zn-tnum-ic { display: inline; } }
.zn-pm-meta { margin-bottom: 14px; }
.zn-pm-meta td:first-child { width: 160px; color: var(--zn-muted); }
.zn-pm-message { margin-top: 0; }
.zn-pm-foot { flex-wrap: wrap; gap: 6px; border-top: 1px solid var(--zn-line); padding-top: 12px; }
.zn-check.align-items-center { gap: 4px; margin-right: 10px; }
/* старая панель BB-кодов (если где-то осталась) */
input.btnbbcode { height: 30px; padding: 0 9px; border-radius: 8px; border: 1px solid var(--zn-line-2); background: var(--zn-surface); color: var(--zn-text-2); font-size: .8125rem; font-weight: 600; width: auto !important; }
input.btnbbcode:hover { border-color: var(--zn-blue-200); color: var(--zn-blue-600); background: var(--zn-blue-50); }
.zn-editor textarea[name="signature"] { min-height: 160px; }
/* формы «подпись — поле» в личном разделе и модерации на телефоне складываются в столбик */
@media (max-width: 767.98px) {
	.zn-panel-main table.tablebg tr:has(> td.row1:first-child + td.row2:last-child) > td { display: block; width: auto !important; border-top: 0; }
	.zn-panel-main table.tablebg tr:has(> td.row1:first-child + td.row2:last-child) > td.row1 { border-top: 1px solid var(--zn-line); padding-bottom: 2px; background: var(--zn-surface); }
	.zn-panel-main table.tablebg tr:has(> td.row1:first-child + td.row2:last-child) > td.row2 { background: var(--zn-surface); padding-top: 4px; }
	.zn-panel-main table.tablebg:has(tr > td.row1:first-child + td.row2:last-child) { display: block; }
	.zn-panel-main table.tablebg:has(tr > td.row1:first-child + td.row2:last-child) > tbody { display: block; }
	.zn-panel-main table.tablebg:has(tr > td.row1:first-child + td.row2:last-child) > tbody > tr { display: block; }
	.zn-panel-main table.tablebg:has(tr > td.row1:first-child + td.row2:last-child) th { display: block; }
}
.zn-pm-bar { display: flex; align-items: center; gap: 10px 14px; flex-wrap: wrap; padding: 12px 16px; }
.zn-pm-bar .zn-spacer { flex: 1 1 auto; }
.zn-pm-bar select { max-width: 100%; }
@media (max-width: 767.98px) {
	.zn-panel-main table.tablebg:has(tr > td.row1:first-child + td.row2:last-child) tr > td.cat:only-child { display: block; }
}
@media (max-width: 767.98px) {
	/* гостям на телефоне не показываем пустую полосу без кнопок */
	.zn-post-head:not(:has(.zn-post-actions > a)) { display: none; }
}
