/*
Theme Name: LightFact Comic Gazette
Theme URI: https://lightfact.ru
Author: LightFact
Author URI: https://lightfact.ru
Description: A black and white 1970s comic newspaper inspired block theme, based on Twenty Twenty-Five.
Requires at least: 6.7
Tested up to: 6.8
Requires PHP: 7.2
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: lightfact-comic-gazette
Tags: blog, news, full-site-editing, block-patterns, block-styles, accessibility-ready
*/

/* Base behavior */
a {
	text-decoration-thickness: 2px !important;
	text-underline-offset: 0.1em;
}

:where(.wp-site-blocks *:focus) {
	outline-width: 2px;
	outline-style: dashed;
}

h1, h2, h3, h4, h5, h6, blockquote, caption, figcaption, p {
	text-wrap: pretty;
}

.more-link {
	display: block;
}

/* Monochrome comic-newspaper palette overrides */
:root {
	--wp--preset--color--base: #f4f4f1;
	--wp--preset--color--contrast: #0a0a0a;
	--wp--preset--color--accent-1: #111111;
	--wp--preset--color--accent-2: #2a2a2a;
	--wp--preset--color--accent-3: #444444;
	--wp--preset--color--accent-4: #6f6f6f;
	--wp--preset--color--accent-5: #d5d5d5;
	--wp--preset--color--accent-6: rgba(0, 0, 0, 0.2);
	--lf-page-gutter: clamp(14px, 2.6vw, 28px);
	--lf-mobile-side-gap: 14px;
	--lf-mobile-rhythm-1: 8px;
	--lf-mobile-rhythm-2: 12px;
	--lf-mobile-rhythm-3: 16px;
	--lf-mobile-rhythm-4: 20px;
	--lf-mobile-rhythm-5: 24px;
	--lf-panel-border: 1.5px solid #111;
	--lf-panel-shadow: 3px 3px 0 rgba(17, 17, 17, 0.85);
}

body {
	background: #f4f4f1;
	color: #0a0a0a;
	font-family: "Literata", "Times New Roman", serif;
	letter-spacing: 0.01em;
	font-kerning: normal;
	text-rendering: optimizeLegibility;
	font-variant-numeric: oldstyle-nums proportional-nums;
	overflow-x: hidden;
}

/* Vintage paper texture */
body::before {
	content: "";
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 0;
	background-image:
		radial-gradient(circle at 20% 15%, rgba(0, 0, 0, 0.05) 0, rgba(0, 0, 0, 0.01) 35%, transparent 60%),
		radial-gradient(circle at 80% 85%, rgba(0, 0, 0, 0.04) 0, rgba(0, 0, 0, 0.01) 45%, transparent 65%),
		linear-gradient(transparent 97%, rgba(0, 0, 0, 0.08) 100%);
	background-size: auto, auto, 100% 4px;
	opacity: 0.6;
}

.wp-site-blocks {
	position: relative;
	z-index: 1;
	overflow-x: clip;
}

html,
body,
.wp-site-blocks,
main,
.wp-block-group {
	max-width: 100%;
}

/* Balanced panel system: fewer borders, cleaner rhythm */
.wp-block-query-pagination,
.wp-block-comments,
.lf-news-card,
.lf-topic-slider .wp-block-post {
	border: var(--lf-panel-border);
	box-shadow: var(--lf-panel-shadow);
	padding: clamp(14px, 1.8vw, 22px);
	background: #fff;
}

.wp-block-group.alignwide,
.wp-block-query.alignwide,
.wp-block-columns.alignwide,
.wp-block-post-template.is-layout-flow > .wp-block-group.alignfull,
main.wp-block-group {
	padding-inline: var(--lf-page-gutter);
}

.wp-block-post-template > .wp-block-post {
	margin-bottom: clamp(20px, 2.6vw, 32px);
}

/* Avoid accidental double outlines when nested blocks already have borders */
.wp-block-post .wp-block-query-pagination,
.wp-block-post .wp-block-comments,
.lf-news-feed-loop .wp-block-post,
.lf-more-posts-list .wp-block-post {
	border: 0;
	box-shadow: none;
	padding: 0;
	background: transparent;
}

.wp-block-post-title,
h1, h2, h3, h4 {
	font-family: "Roboto Slab", "Georgia", serif;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	line-height: 1.1;
}

.wp-block-post-title a {
	text-decoration: none;
}

.wp-block-post-title a:hover {
	text-decoration: underline;
	text-decoration-thickness: 3px !important;
}

.wp-block-post-excerpt p,
.single-post .wp-block-post-content > p:first-of-type {
	font-size: clamp(1.1rem, 1.35vw, 1.28rem);
	line-height: 1.64;
	letter-spacing: 0.012em;
}

.single-post .wp-block-post-content > p:first-of-type::first-letter {
	float: left;
	font-family: "Roboto Slab", "Georgia", serif;
	font-size: 3.2em;
	line-height: 0.86;
	padding-right: 0.08em;
	padding-top: 0.04em;
}

.single-post .wp-block-post-content > p {
	max-width: 66ch;
	margin-inline: auto;
}

.single-post .wp-block-post-content > p + p {
	text-indent: 1.15em;
}

.single-post .wp-block-post-content > h2,
.single-post .wp-block-post-content > h3 {
	letter-spacing: 0.06em;
}

.wp-block-button__link,
button,
input[type="submit"] {
	border: 2px solid #0a0a0a !important;
	background: #fff !important;
	color: #000 !important;
	font-family: "Fira Sans", Arial, sans-serif;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	transition: transform 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease;
	box-shadow: 4px 4px 0 #111;
}

.wp-block-button__link:hover,
button:hover,
input[type="submit"]:hover {
	transform: translate(-2px, -2px);
	box-shadow: 7px 7px 0 #111;
	background: #e9e9e9 !important;
}

.wp-block-image img {
	filter: grayscale(100%) contrast(1.2);
	border: 1.5px solid #101010;
	box-shadow: 3px 3px 0 #111;
}

.lf-news-feed-loop .wp-block-post-featured-image img,
.lf-topic-slider .wp-block-post-featured-image img {
	box-shadow: 2px 2px 0 #111;
}

.wp-block-quote {
	border-left: 5px solid #111 !important;
	font-style: italic;
	background: #f9f9f9;
	padding: 1.2rem 1.4rem;
}

/* Halftone background helper class for optional manual use */
.is-style-halftone-panel {
	background-image: radial-gradient(#111 0.7px, transparent 0.7px);
	background-size: 6px 6px;
}

/* Navigation and mobile polish */
.lf-main-navigation .wp-block-navigation__responsive-container-open {
	border: 2px solid #111;
	background: #fff;
	color: #111;
	padding: 6px;
	box-shadow: 3px 3px 0 #111;
	transition: transform 0.16s ease, box-shadow 0.16s ease;
}

.lf-main-navigation .wp-block-navigation__responsive-container-open:hover {
	transform: translate(-1px, -1px);
	box-shadow: 5px 5px 0 #111;
}

.lf-main-navigation .wp-block-navigation__responsive-container {
	background: #f4f4f1;
	color: #0a0a0a;
}

.lf-main-navigation .wp-block-navigation__responsive-container-content {
	gap: 20px;
}

body.lf-menu-open {
	overflow: hidden;
}

.lf-editorial-strip {
	background: color-mix(in srgb, #fff 82%, #e9e9e9 18%);
}

.lf-editorial-meta {
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	font-family: "Fira Sans", Arial, sans-serif;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.lf-editorial-meta-item {
	white-space: nowrap;
}

.lf-editorial-meta-sep {
	opacity: 0.52;
}

.lf-site-kicker {
	margin: 0;
	font-family: "Fira Sans", Arial, sans-serif;
	font-size: 0.74rem;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	opacity: 0.8;
}

.lf-main-navigation .wp-block-navigation-item__content {
	position: relative;
	padding: 0.22rem 0.35rem;
	text-decoration: none;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.lf-main-navigation .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -3px;
	height: 2px;
	background: #111;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 0.2s ease;
}

.lf-mobile-menu-button,
.lf-mobile-drawer,
.lf-mobile-drawer-overlay {
	display: none;
}

.lf-topic-slider-indicator {
	display: none;
}

.lf-mobile-menu-list[hidden] {
	display: none !important;
}

.lf-main-navigation .wp-block-navigation-item__content:hover::after,
.lf-main-navigation .wp-block-navigation-item__content:focus-visible::after,
.lf-main-navigation .current-menu-item > .wp-block-navigation-item__content::after,
.lf-main-navigation .current_page_item > .wp-block-navigation-item__content::after {
	transform: scaleX(1);
}

/* Home page: news-portal sections */
.lf-home-news-main {
	gap: clamp(22px, 2.4vw, 36px);
}

.lf-news-hero .wp-block-post-title {
	font-size: clamp(1.8rem, 3vw, 2.7rem);
}

.lf-section-title {
	display: inline-block;
	margin-bottom: 12px;
	padding: 3px 10px;
	border: 1.5px solid #111;
	background: #111;
	color: #fff;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.lf-section-title::before,
.lf-section-title::after {
	content: "✶";
	display: inline-block;
	margin-inline: 0.45ch;
	font-size: 0.72em;
	opacity: 0.72;
}

.lf-topic-slider .wp-block-post-template {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 18px;
	overflow: visible;
	padding: 2px 2px 12px;
	width: 100%;
}

.lf-topic-slider {
	width: 100%;
	max-width: 100%;
}

.lf-topic-slider .wp-block-post {
	scroll-snap-align: start;
	margin: 0;
	display: grid;
	align-content: start;
	height: 100%;
}

.lf-topic-slider .wp-block-post-title {
	font-size: clamp(0.95rem, 1.05vw, 1.08rem) !important;
	line-height: 1.24;
	letter-spacing: 0.01em;
	margin-top: 2px;
	text-transform: none;
	font-family: "Literata", "Times New Roman", serif;
}

.lf-topic-slider .wp-block-post-title a {
	display: -webkit-box;
	-webkit-line-clamp: 4;
	-webkit-box-orient: vertical;
	overflow: hidden;
	word-break: break-word;
}

.lf-topic-slider .wp-block-post-featured-image {
	margin-bottom: 10px;
}

.lf-topic-slider .wp-block-post-featured-image img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.lf-topic-slider .wp-block-post-terms,
.lf-topic-slider .wp-block-post-excerpt {
	font-size: 0.9rem;
}

.lf-news-feed-card .wp-block-post-featured-image {
	margin-bottom: 14px;
}

.lf-news-feed-card .wp-block-post-title {
	font-size: clamp(1.28rem, 2vw, 1.9rem) !important;
}

.lf-news-feed-card .wp-block-post-title a,
.lf-news-feed-card .wp-block-post-featured-image a {
	display: block;
}

.lf-news-feed-card .wp-block-post-title a {
	word-break: break-word;
}

.lf-news-feed-card .wp-block-post-title a,
.lf-news-feed-card .wp-block-post-excerpt p {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.lf-news-feed-card .wp-block-post-title a {
	-webkit-line-clamp: 3;
	min-height: calc(1.22em * 3);
}

.lf-news-feed-card .wp-block-post-excerpt p {
	-webkit-line-clamp: 4;
	min-height: calc(1.5em * 4);
	line-height: 1.5;
}

.lf-more-posts-query .wp-block-post-title {
	margin: 0;
}

.lf-more-posts-query .wp-block-post-title a {
	letter-spacing: 0.012em;
	line-height: 1.06;
	animation: headline-slam 0.42s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.lf-more-posts-query .wp-block-post-title {
	text-transform: none;
}

.lf-more-posts-query .wp-block-post-date {
	font-size: 0.9rem;
	opacity: 0.72;
}

.lf-news-feed-loop {
	padding-inline: clamp(14px, 2.2vw, 24px);
	box-sizing: border-box;
}

.lf-written-by-meta {
	max-width: min(100%, var(--wp--style--global--content-size));
	margin-left: auto;
	margin-right: auto;
	padding-inline: 0;
}

.lf-rubric-grid .wp-block-post-template {
	gap: clamp(16px, 1.7vw, 24px) !important;
	align-items: stretch;
}

.lf-rubric-grid .lf-news-card {
	height: 100%;
	display: flex;
	flex-direction: column;
}

.lf-rubric-grid .wp-block-post-featured-image img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.lf-rubric-grid .wp-block-post-title a {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
	min-height: calc(1.15em * 3);
}

.lf-rubric-grid .wp-block-post-excerpt p {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 5;
	overflow: hidden;
	min-height: calc(1.45em * 5);
	line-height: 1.45;
	margin-bottom: 0;
}

.lf-more-posts-list .wp-block-query > .wp-block-post-template > .wp-block-group {
	content-visibility: auto;
	contain-intrinsic-size: auto 88px;
}

/* Keep long feeds smooth, especially on mobile */
.lf-news-feed-loop .wp-block-columns,
.lf-more-posts-list .wp-block-group {
	content-visibility: auto;
	contain-intrinsic-size: auto 260px;
}

@media (min-width: 783px) {
	.lf-topic-slider .wp-block-post-template::-webkit-scrollbar {
		height: 9px;
	}

	.lf-topic-slider .wp-block-post-template::-webkit-scrollbar-thumb {
		background: #111;
	}
}

@media (max-width: 1024px) {
	.wp-block-post,
	.wp-block-query-pagination,
	.wp-block-comments {
		padding: clamp(14px, 2.8vw, 20px);
		box-shadow: 2px 2px 0 #111;
	}

	.wp-block-columns {
		gap: 18px !important;
	}

	/* Планшет: чуть плотнее колонки в ленте новостей */
	.lf-news-feed-loop .wp-block-columns {
		gap: 14px 20px !important;
	}

	.lf-topic-slider .wp-block-post-template {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 782px) {
	body {
		font-size: 16px;
		line-height: 1.62;
	}

	.wp-block-site-title {
		font-size: clamp(34px, 12vw, 56px) !important;
		line-height: 1.02 !important;
		letter-spacing: 0.02em;
		overflow-wrap: anywhere;
	}

	.wp-block-group.alignwide,
	.wp-block-query.alignwide,
	.wp-block-columns.alignwide,
	.wp-block-group.alignfull,
	.wp-block-query.alignfull,
	.wp-block-columns.alignfull {
		padding-left: var(--lf-mobile-side-gap) !important;
		padding-right: var(--lf-mobile-side-gap) !important;
		box-sizing: border-box;
	}

	body.home .wp-block-group.alignwide,
	body.home .wp-block-query.alignwide,
	body.home .wp-block-columns.alignwide,
	body.home .wp-block-group.alignfull,
	body.home .wp-block-query.alignfull,
	body.home .wp-block-columns.alignfull {
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		padding-left: 16px !important;
		padding-right: 16px !important;
		box-sizing: border-box;
	}

	body.home .lf-home-news-main {
		padding-left: 16px !important;
		padding-right: 16px !important;
	}

	body.home .lf-news-card,
	body.home .lf-news-feed-card {
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	.wp-block-site-main > * {
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	.single-post .wp-block-post-content,
	.single-post .wp-block-post-content.alignfull,
	.single-post .wp-block-post-content.alignwide {
		padding-left: max(var(--lf-mobile-side-gap), 16px) !important;
		padding-right: max(var(--lf-mobile-side-gap), 16px) !important;
		box-sizing: border-box;
		overflow-x: clip;
	}

	.single-post .wp-block-post-title {
		font-size: clamp(1.85rem, 9vw, 2.35rem) !important;
		line-height: 1.05;
		letter-spacing: 0.02em;
		margin-bottom: var(--lf-mobile-rhythm-3);
		overflow-wrap: anywhere;
	}

	.single-post .wp-block-post-content > p,
	.single-post .wp-block-post-content > h2,
	.single-post .wp-block-post-content > h3,
	.single-post .wp-block-post-content > ul,
	.single-post .wp-block-post-content > ol,
	.single-post .wp-block-post-content > blockquote {
		margin-left: 0 !important;
		margin-right: 0 !important;
		max-width: 100%;
		overflow-wrap: break-word;
		word-break: normal;
		hyphens: auto;
	}

	.single-post .wp-block-post-content .alignwide,
	.single-post .wp-block-post-content .alignfull {
		margin-left: 0 !important;
		margin-right: 0 !important;
		width: 100% !important;
		max-width: 100% !important;
	}

	.single-post .wp-block-post-content > * {
		max-width: 100%;
		box-sizing: border-box;
	}

	.single-post .wp-block-post-content > p + p {
		text-indent: 0.7em;
	}

	.single-post .wp-block-post-content > h2 {
		font-size: clamp(1.25rem, 6vw, 1.6rem) !important;
		line-height: 1.2;
		margin-top: var(--lf-mobile-rhythm-5);
		margin-bottom: var(--lf-mobile-rhythm-2);
		text-transform: none;
		letter-spacing: 0.01em;
		padding-left: 0;
		margin-left: 0 !important;
	}

	.single-post .wp-block-post-content > h3 {
		font-size: clamp(1.08rem, 5.2vw, 1.32rem) !important;
		line-height: 1.28;
		margin-top: var(--lf-mobile-rhythm-4);
		margin-bottom: var(--lf-mobile-rhythm-2);
		text-transform: none;
		letter-spacing: 0.008em;
		padding-left: 0;
		margin-left: 0 !important;
	}

	.single-post .wp-block-post-content > p {
		font-size: clamp(1rem, 4.25vw, 1.08rem);
		line-height: 1.72;
		margin-top: 0;
		margin-bottom: var(--lf-mobile-rhythm-3);
	}

	.single-post .wp-block-post-content * {
		max-width: 100% !important;
	}

	.single-post .wp-block-post-content > blockquote {
		padding: var(--lf-mobile-rhythm-3);
		margin-top: var(--lf-mobile-rhythm-4);
		margin-bottom: var(--lf-mobile-rhythm-4);
	}

	.wp-block-image img {
		filter: none;
		box-shadow: 1px 1px 0 #111;
	}

	.wp-block-query-pagination,
	.wp-block-comments,
	.lf-news-card,
	.lf-topic-slider .wp-block-post {
		box-shadow: 1px 1px 0 #111;
	}

	.lf-section-title {
		font-size: 0.78rem;
		padding: 3px 8px;
		margin-bottom: var(--lf-mobile-rhythm-2);
		letter-spacing: 0.06em;
	}

	.lf-topic-slider .wp-block-post-template {
		grid-auto-columns: calc(100vw - (var(--lf-mobile-side-gap) * 2) - 2px);
		grid-template-columns: none;
		grid-auto-flow: column;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		padding-inline: var(--lf-mobile-side-gap);
		padding-bottom: 10px;
		margin-inline: calc(-1 * var(--lf-mobile-side-gap));
		gap: 12px;
		scroll-padding-inline: var(--lf-mobile-side-gap);
		overscroll-behavior-x: contain;
	}

	.lf-topic-slider .wp-block-post-title {
		font-size: 0.88rem !important;
		line-height: 1.26;
	}

	.lf-news-feed-loop {
		padding-left: var(--lf-mobile-side-gap) !important;
		padding-right: var(--lf-mobile-side-gap) !important;
	}

	.lf-written-by-meta {
		padding-left: 16px;
		padding-right: 16px;
	}

	.lf-news-feed-card {
		padding-top: var(--lf-mobile-rhythm-3) !important;
		padding-bottom: var(--lf-mobile-rhythm-4) !important;
	}

	.lf-news-feed-card .wp-block-post-title {
		margin-top: var(--lf-mobile-rhythm-2);
		margin-bottom: var(--lf-mobile-rhythm-2);
	}

	.lf-news-feed-card .wp-block-post-title a {
		font-size: clamp(1.18rem, 6.1vw, 1.44rem);
		line-height: 1.15;
		-webkit-line-clamp: 2;
		min-height: calc(1.15em * 2);
	}

	.lf-news-feed-card .wp-block-post-excerpt p {
		font-size: 1rem;
		line-height: 1.62;
		-webkit-line-clamp: 3;
		min-height: calc(1.62em * 3);
	}

	.lf-more-posts-query .wp-block-post-template > .wp-block-group {
		display: block !important;
		padding-top: var(--lf-mobile-rhythm-3) !important;
		padding-bottom: var(--lf-mobile-rhythm-3) !important;
	}

	.lf-more-posts-query .wp-block-post-title {
		margin: 0 !important;
	}

	.lf-more-posts-query .wp-block-post-title a {
		font-size: clamp(1.05rem, 5.6vw, 1.34rem) !important;
		line-height: 1.12;
		letter-spacing: 0.01em;
		overflow-wrap: normal;
		word-break: normal;
		-webkit-line-clamp: 3;
		min-height: calc(1.12em * 3);
	}

	.lf-more-posts-query .wp-block-post-date {
		display: block;
		text-align: left !important;
		margin-top: 8px;
		opacity: 0.72;
		font-size: 0.82rem;
	}

	.lf-editorial-strip {
		display: none;
	}

	.lf-site-kicker {
		letter-spacing: 0.12em;
	}
}

/* Custom mobile drawer: stable across devices */
@keyframes lf-menu-pulse {
	0%, 100% {
		box-shadow: 2px 2px 0 #111, 0 0 0 0 rgba(17, 17, 17, 0.36);
	}
	50% {
		box-shadow: 2px 2px 0 #111, 0 0 0 8px rgba(17, 17, 17, 0);
	}
}

@keyframes lf-menu-bob {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-3px); }
}

@media (max-width: 782px) {
	.lf-main-navigation .wp-block-navigation__responsive-container-open,
	.lf-main-navigation .wp-block-navigation__responsive-container-close,
	.lf-main-navigation .wp-block-navigation__responsive-container {
		display: none !important;
	}

	.lf-mobile-menu-button {
		display: block;
		position: fixed;
		right: 12px;
		bottom: calc(16px + env(safe-area-inset-bottom, 0px));
		z-index: 10030;
		border: 1.5px solid #111;
		background: #fff;
		color: #111;
		box-shadow: 2px 2px 0 #111;
		padding: 10px 14px;
		font-family: "Fira Sans", Arial, sans-serif;
		font-size: 0.86rem;
		font-weight: 700;
		letter-spacing: 0.08em;
		text-transform: uppercase;
		animation: none;
		touch-action: manipulation;
	}

	.lf-mobile-menu-button.is-hint {
		animation: lf-menu-pulse 1.4s ease-in-out infinite, lf-menu-bob 1.1s ease-in-out infinite;
	}

	.lf-mobile-drawer-overlay {
		display: block;
		position: fixed;
		inset: 0;
		z-index: 10020;
		background: rgba(10, 10, 10, 0.62);
		backdrop-filter: blur(1.5px);
		opacity: 0;
		pointer-events: none;
		transition: opacity 180ms ease;
	}

	.lf-mobile-drawer {
		display: flex;
		position: fixed;
		top: 0;
		right: 0;
		height: 100vh;
		height: 100dvh;
		width: min(90vw, 360px);
		z-index: 10025;
		background: #f4f4f1;
		border-left: 2px solid #111;
		box-shadow: -10px 0 0 rgba(17, 17, 17, 0.12);
		transform: translateX(102%);
		transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1);
		flex-direction: column;
	}

	body.lf-mobile-menu-open {
		overflow: hidden;
	}

	body.lf-mobile-menu-open .lf-mobile-drawer-overlay {
		opacity: 1;
		pointer-events: auto;
	}

	body.lf-mobile-menu-open .lf-mobile-drawer {
		transform: translateX(0);
	}

	body.lf-mobile-menu-open .lf-mobile-menu-button {
		opacity: 0;
		pointer-events: none;
		animation: none;
	}

	.lf-mobile-drawer-head {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: calc(10px + env(safe-area-inset-top, 0px)) 12px 10px;
		border-bottom: 1px solid rgba(17, 17, 17, 0.2);
	}

	.lf-mobile-drawer-title {
		margin: 0;
		font-family: "Fira Sans", Arial, sans-serif;
		font-size: 0.8rem;
		font-weight: 700;
		letter-spacing: 0.1em;
		text-transform: uppercase;
	}

	.lf-mobile-drawer-close {
		border: 1.5px solid #111;
		background: #fff;
		color: #111;
		padding: 7px 10px;
		font-family: "Fira Sans", Arial, sans-serif;
		font-size: 0.75rem;
		font-weight: 700;
		text-transform: uppercase;
		letter-spacing: 0.07em;
	}

	.lf-mobile-drawer-nav {
		flex: 1;
		overflow-y: auto;
		padding: 10px 10px 16px;
	}

	.lf-mobile-menu-list {
		list-style: none;
		margin: 0;
		padding: 0;
		display: grid;
		gap: 7px;
	}

	.lf-mobile-menu-item {
		border: 1.5px solid #111;
		background: #fff;
		box-shadow: 2px 2px 0 #111;
	}

	.lf-mobile-menu-row {
		display: flex;
		align-items: stretch;
		justify-content: flex-end;
		min-height: 44px;
	}

	.lf-mobile-menu-link {
		flex: 1;
		display: flex;
		align-items: center;
		justify-content: flex-end;
		text-align: right;
		padding: 11px 12px;
		color: #111;
		text-decoration: none;
		font-family: "Fira Sans", Arial, sans-serif;
		font-size: 0.9rem;
		font-weight: 700;
		letter-spacing: 0.03em;
		text-transform: uppercase;
		word-break: break-word;
		position: relative;
		z-index: 1;
		min-height: 44px;
	}

	.lf-mobile-menu-toggle-child {
		flex: 0 0 38px;
		border: 0;
		border-right: 1px solid rgba(17, 17, 17, 0.18);
		background: transparent;
		color: #111;
		font-size: 0.94rem;
		font-weight: 700;
		cursor: pointer;
		position: relative;
		z-index: 2;
		touch-action: manipulation;
		transition: transform 220ms ease, background-color 160ms ease;
	}

	.lf-mobile-menu-item.is-open > .lf-mobile-menu-row .lf-mobile-menu-toggle-child {
		transform: rotate(180deg);
		background: rgba(17, 17, 17, 0.06);
	}

	.lf-mobile-menu-item > .lf-mobile-menu-list {
		padding: 0 0 8px 0;
		margin: 0 8px 8px;
		border-right: 1px dashed #111;
		opacity: 0;
		transform: translateY(-4px);
		max-height: 0;
		overflow: hidden;
	}

	.lf-mobile-menu-item[data-depth="1"] > .lf-mobile-menu-row .lf-mobile-menu-link {
		padding-right: 20px;
		font-size: 0.86rem;
		letter-spacing: 0.02em;
	}

	.lf-mobile-menu-item[data-depth="2"] > .lf-mobile-menu-row .lf-mobile-menu-link {
		padding-right: 28px;
		font-size: 0.83rem;
		letter-spacing: 0.01em;
	}

	.lf-mobile-menu-item[data-depth="3"] > .lf-mobile-menu-row .lf-mobile-menu-link,
	.lf-mobile-menu-item[data-depth="4"] > .lf-mobile-menu-row .lf-mobile-menu-link,
	.lf-mobile-menu-item[data-depth="5"] > .lf-mobile-menu-row .lf-mobile-menu-link {
		padding-right: 34px;
		font-size: 0.81rem;
		letter-spacing: 0.01em;
	}

	.single-post .wp-block-post-terms {
		line-height: 1.55;
	}

	.single-post .wp-block-post-terms a {
		display: inline-flex;
		align-items: center;
		min-height: 34px;
		padding: 4px 11px;
		margin: 3px 4px 3px 0;
		line-height: 1.5;
		font-size: 0.98rem;
		text-decoration: none;
	}

	.wp-block-post-date,
	.wp-block-post-author-name,
	.wp-block-post-terms {
		line-height: 1.5;
	}

	.wp-block-post-date a,
	.wp-block-post-author-name a,
	.wp-block-post-terms a {
		padding-block: 2px;
	}

	.wp-block-button__link:active,
	.lf-mobile-menu-button:active,
	.lf-mobile-menu-link:active,
	.lf-mobile-menu-toggle-child:active,
	.lf-news-card:active,
	.lf-news-feed-card:active,
	.lf-topic-slider .wp-block-post:active {
		transform: translateY(1px);
		filter: brightness(0.98);
	}
}

@media (max-width: 359px) {
	.lf-topic-slider .wp-block-post-template {
		grid-auto-columns: calc(100vw - (var(--lf-mobile-side-gap) * 2) - 2px);
		gap: 8px;
		scroll-snap-type: x mandatory;
	}

	.lf-topic-slider .wp-block-post {
		scroll-snap-stop: always;
	}

	.single-post .wp-block-post-content,
	.single-post .wp-block-post-content.alignfull,
	.single-post .wp-block-post-content.alignwide,
	.lf-news-feed-loop {
		padding-left: 14px !important;
		padding-right: 14px !important;
	}

	body.home .wp-block-group.alignwide,
	body.home .wp-block-query.alignwide,
	body.home .wp-block-columns.alignwide,
	body.home .wp-block-group.alignfull,
	body.home .wp-block-query.alignfull,
	body.home .wp-block-columns.alignfull {
		padding-left: 14px !important;
		padding-right: 14px !important;
	}

	.lf-topic-slider-indicator {
		display: grid;
		grid-template-columns: auto auto 1fr;
		align-items: center;
		gap: 8px;
		padding: 4px var(--lf-mobile-side-gap) 0;
		font-family: "Fira Sans", Arial, sans-serif;
		font-size: 0.73rem;
		letter-spacing: 0.05em;
		text-transform: uppercase;
	}

	.lf-topic-slider-hint {
		opacity: 0.78;
	}

	.lf-topic-slider-counter {
		font-weight: 700;
	}

	.lf-topic-slider-progress {
		position: relative;
		height: 4px;
		background: rgba(17, 17, 17, 0.16);
		overflow: hidden;
	}

	.lf-topic-slider-progress-bar {
		position: absolute;
		left: 0;
		top: 0;
		bottom: 0;
		background: #111;
		transition: width 200ms ease;
	}
}

/* Last-resort mobile safety net for article text flow */
@media (max-width: 782px) {
	.single-post .wp-block-post-content,
	.single-post .wp-block-post-content.alignfull,
	.single-post .wp-block-post-content.alignwide {
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		padding-left: 16px !important;
		padding-right: 16px !important;
		box-sizing: border-box;
	}

	.single-post .wp-block-post-content > * {
		max-width: 100% !important;
		width: auto !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		padding-left: 0 !important;
		padding-right: 0 !important;
		overflow-wrap: anywhere;
		word-break: normal;
	}

	.lf-more-posts-query .wp-block-post-title a {
		font-size: clamp(1rem, 5.1vw, 1.2rem) !important;
		line-height: 1.15 !important;
		-webkit-line-clamp: 3;
		min-height: calc(1.15em * 3);
	}
}
