/*
Theme Name: Jack Yu
Author: Jack Yu
Description: Jack Yu 个人博客主题，支持「笔记」与「周刊」两种风格切换。默认「笔记」（从车间到书桌）：牛皮纸、工程网格与钉在桌上的索引卡；「周刊」（纸本周刊）：报头双线、印章与衬线排版。字体全部本地托管，无任何外部请求。
Version: 0.1.0
Requires at least: 6.5
Text Domain: jackyu
*/

/* =========================================================
   1. TOKENS — workshop is the default skin (also in theme.json)
   ========================================================= */
:root {
	--jy-line: rgba(34, 32, 28, 0.18);
	--jy-line-strong: rgba(34, 32, 28, 0.62);
	--jy-grid-minor: rgba(30, 59, 47, 0.07);
	--jy-grid-major: rgba(30, 59, 47, 0.12);
	--jy-ink-soft: #3F3A34;
	--jy-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
	--jy-ease-stamp: cubic-bezier(0.34, 1.4, 0.5, 1);
	--jy-radius: 3px;
	--jy-shadow-card: 0 1px 0 rgba(34, 32, 28, 0.08), 0 10px 24px -12px rgba(34, 32, 28, 0.35);
	--jy-shadow-lift: 0 2px 0 rgba(34, 32, 28, 0.08), 0 22px 36px -14px rgba(34, 32, 28, 0.45);
	--jy-font-label: var(--wp--preset--font-family--mono);
	--jy-font-serif: var(--wp--preset--font-family--serif);
	--jy-header-h: 77px;
}

/* Paper skin: re-point the theme.json presets */
html[data-style="paper"] {
	--wp--preset--color--base: #F5EFE4;
	--wp--preset--color--surface: #EBE3D3;
	--wp--preset--color--primary: #2F4A3A;
	--wp--preset--color--primary-deep: #22372B;
	--wp--preset--color--accent: #B5532A;
	--wp--preset--color--accent-text: #9A4320;
	--wp--preset--color--accent-soft: #EDB892;
	--wp--preset--color--contrast: #1F1B16;
	--wp--preset--color--muted: #5E5448;
	--wp--preset--color--on-primary: #F5EFE4;
	--wp--preset--font-family--heading: "Playfair Display", "JY Serif", "Songti SC", "STSong", "SimSun", serif;

	--jy-line: rgba(31, 27, 22, 0.18);
	--jy-line-strong: rgba(31, 27, 22, 0.62);
	--jy-ink-soft: #4A4239;
	--jy-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
	--jy-radius: 0;
	--jy-font-label: "Playfair Display", "JY Serif", Georgia, serif;
	--jy-header-h: 0px;
}

/* =========================================================
   2. BASE
   ========================================================= */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	margin: 0;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}

.wp-site-blocks > main,
.wp-site-blocks > .jy-main,
.wp-site-blocks > footer {
	margin-block-start: 0;
}

/* full-bleed sections butt together; each carries its own padding */
.jy-main > .alignfull {
	margin-block-start: 0 !important;
	margin-block-end: 0 !important;
}

:focus-visible {
	outline: 2px dashed var(--wp--preset--color--accent-text);
	outline-offset: 3px;
}

html[data-style="paper"] :focus-visible {
	outline-style: solid;
	outline-offset: 4px;
}

::selection {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
}

/* Skin-only elements. In the block editor both variants stay visible. */
html:not([data-style="paper"]) body:not(.editor-styles-wrapper) .jy-only-paper,
html[data-style="paper"] .jy-only-workshop {
	display: none !important;
}

/* Paper skin: warm page light + drifting paper grain */
html[data-style="paper"] body {
	background-image:
		radial-gradient(ellipse at 50% 0%, rgba(255, 252, 245, 0.75) 0%, rgba(245, 239, 228, 0) 60%),
		radial-gradient(ellipse at 50% 120%, rgba(181, 83, 42, 0.07) 0%, rgba(245, 239, 228, 0) 55%);
	background-attachment: fixed;
}

html[data-style="paper"] body::before {
	content: "";
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 50;
	opacity: 0.32;
	mix-blend-mode: multiply;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .36 0 0 0 0 .27 0 0 0 0 .17 0 0 0 .5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
	animation: jy-paper-grain 9s steps(6) infinite;
}

/* Shared small label */
.jy-kicker {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	margin: 0 0 0.5rem;
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.12em;
	line-height: 1.5;
	text-transform: uppercase;
	color: var(--wp--preset--color--primary);
}

.jy-kicker::before {
	content: "";
	flex: 0 0 28px;
	height: 1.5px;
	background: currentColor;
}

html[data-style="paper"] .jy-kicker {
	font-size: 0.9375rem;
	font-style: italic;
	font-weight: 400;
	letter-spacing: 0.06em;
	text-transform: none;
	color: var(--wp--preset--color--accent-text);
}

html[data-style="paper"] .jy-kicker::before {
	flex-basis: 2.5rem;
	height: 1px;
	background: var(--jy-line-strong);
}

/* =========================================================
   3. HEADER — workshop (engineering notebook)
   ========================================================= */
.jy-header {
	position: relative;
	z-index: 20;
	margin-bottom: 6px;
	background-color: var(--wp--preset--color--base);
	border-bottom: 1px solid var(--jy-line);
}

.jy-header::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -6px;
	height: 1px;
	background: var(--jy-line);
}

body .jy-header__inner {
	min-height: 76px;
	gap: 1rem 1.5rem;
	align-items: center;
	justify-content: space-between;
}

.jy-header__inner > * {
	margin: 0;
}

.jy-issue-line {
	margin: 0;
}

body .jy-brand {
	gap: 0.75rem;
	flex-wrap: nowrap;
	flex-shrink: 0;
}

.jy-brand__mark {
	display: grid;
	place-items: center;
	flex: 0 0 40px;
	width: 40px;
	height: 40px;
	margin: 0;
	background-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--on-primary);
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 500;
	font-size: 0.9rem;
	line-height: 1;
	letter-spacing: 0.02em;
	border-radius: var(--jy-radius);
	box-shadow: 3px 3px 0 var(--wp--preset--color--accent);
	transition: transform 0.3s var(--jy-ease), box-shadow 0.3s var(--jy-ease);
	user-select: none;
}

.jy-brand:hover .jy-brand__mark {
	transform: translate(-1px, -1px) rotate(-4deg);
	box-shadow: 5px 5px 0 var(--wp--preset--color--accent);
}

.jy-brand__text {
	gap: 0 !important;
}

.jy-brand__text > * {
	margin: 0 !important;
}

.jy-brand__name {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 900;
	font-size: 1.3rem;
	line-height: 1.15;
	letter-spacing: 0.01em;
}

.jy-brand__name a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.jy-brand__tagline {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	line-height: 1.4;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--accent-text);
}

/* Navigation */
.jy-nav {
	font-size: 0.975rem;
}

body .jy-nav .wp-block-navigation__container {
	gap: 0.15rem;
	counter-reset: jy-nav;
}

.jy-nav .wp-block-navigation-item {
	counter-increment: jy-nav;
}

.jy-nav .wp-block-navigation-item__content {
	position: relative;
	display: inline-flex;
	align-items: baseline;
	gap: 0.3rem;
	padding: 0.5rem 0.7rem;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	white-space: nowrap;
	transition: color 0.25s ease, letter-spacing 0.45s var(--jy-ease);
}

.jy-nav .wp-block-navigation-item__content::before {
	content: counter(jy-nav, decimal-leading-zero);
	font-family: var(--jy-font-label);
	font-size: 0.6875rem;
	font-weight: 500;
	color: var(--wp--preset--color--accent-text);
}

.jy-nav .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0.7rem;
	right: 0.7rem;
	bottom: 0.2rem;
	height: 3px;
	background-color: var(--wp--preset--color--accent);
	border-radius: 2px;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 0.35s var(--jy-ease);
}

.jy-nav .wp-block-navigation-item__content:hover,
.jy-nav .wp-block-navigation-item__content:focus-visible,
.jy-nav .wp-block-navigation-item__content[aria-current="page"] {
	color: var(--wp--preset--color--primary);
}

.jy-nav .wp-block-navigation-item__content:hover::after,
.jy-nav .wp-block-navigation-item__content:focus-visible::after,
.jy-nav .wp-block-navigation-item__content[aria-current="page"]::after {
	transform: scaleX(1);
}

/* Mobile overlay toggle + overlay */
.jy-nav .wp-block-navigation__responsive-container-open {
	display: none;
	align-items: center;
	gap: 0.4rem;
	padding: 0.4rem 0.6rem;
	border: 1.5px solid var(--wp--preset--color--contrast);
	border-radius: var(--jy-radius);
	color: var(--wp--preset--color--contrast);
	background: transparent;
	transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.jy-nav .wp-block-navigation__responsive-container-open svg {
	width: 18px;
	height: 18px;
}

.jy-nav .wp-block-navigation__responsive-container-open::after {
	content: "目录";
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
}

.jy-nav .wp-block-navigation__responsive-container-open:hover {
	background-color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--on-primary);
}

@media (max-width: 599px) {
	.jy-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: inline-flex;
	}
}

.jy-nav .wp-block-navigation__responsive-container.is-menu-open {
	background-color: var(--wp--preset--color--surface) !important;
	color: var(--wp--preset--color--contrast) !important;
	padding: 1.25rem 1rem 2rem;
}

.jy-nav .is-menu-open .wp-block-navigation__responsive-container-content {
	padding-top: 3rem;
	align-items: stretch !important;
}

.jy-nav .is-menu-open .wp-block-navigation__container {
	width: 100%;
	gap: 0 !important;
	align-items: stretch !important;
}

.jy-nav .is-menu-open .wp-block-navigation-item {
	width: 100%;
}

.jy-nav .is-menu-open .wp-block-navigation-item__content {
	display: flex;
	width: 100%;
	padding: 0.85rem 0.25rem !important;
	font-size: 1.125rem;
	border-bottom: 1px dashed var(--jy-line);
}

.jy-nav .is-menu-open .wp-block-navigation-item__content::after {
	left: 0.25rem;
	right: auto;
	width: 2.5rem;
	bottom: 0.45rem;
}

/* Style switch */
.jy-style-switch {
	gap: 0.5rem !important;
	align-items: center;
	flex-wrap: nowrap !important;
	flex-shrink: 0;
}

.jy-style-switch > * {
	margin: 0 !important;
}

.jy-style-switch__label {
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	line-height: 1;
	color: var(--wp--preset--color--muted);
	white-space: nowrap;
}

.jy-style-switch__options {
	gap: 2px !important;
	flex-wrap: nowrap !important;
	padding: 2px;
	border: 1.5px solid var(--wp--preset--color--contrast);
	border-radius: var(--jy-radius);
	background-color: var(--wp--preset--color--surface);
}

.jy-style-switch__option {
	margin: 0 !important;
}

.jy-style-switch__option .wp-block-button__link {
	display: block;
	padding: 0.3rem 0.62rem;
	border: 0;
	border-radius: 2px;
	background-color: transparent;
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.8125rem;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: 0.04em;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
}

.jy-style-switch__option .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--primary);
}

html:not([data-style="paper"]) .jy-style-switch__option.is-workshop .wp-block-button__link,
html[data-style="paper"] .jy-style-switch__option.is-paper .wp-block-button__link {
	background-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--on-primary);
	cursor: default;
}

html:not(.jy-js) body:not(.editor-styles-wrapper) .jy-style-switch {
	display: none !important;
}

/* =========================================================
   4. HEADER — paper (masthead + category strip)
   ========================================================= */
html[data-style="paper"] .jy-header {
	margin-bottom: 0;
	padding-top: clamp(1rem, 2.5vw, 1.75rem);
	background-color: transparent;
	border-bottom: 0;
}

html[data-style="paper"] .jy-header::after {
	display: none;
}

html[data-style="paper"] .jy-header__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	grid-template-areas:
		". issue switch"
		"brand brand brand"
		"nav nav nav";
	gap: 0.9rem 1rem;
	min-height: 0;
	text-align: center;
}

html[data-style="paper"] .jy-issue-line {
	grid-area: issue;
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.8125rem;
	letter-spacing: 0.32em;
	color: var(--wp--preset--color--muted);
	white-space: nowrap;
}

.jy-issue-line::before,
.jy-issue-line::after {
	content: "";
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}

html[data-style="paper"] .jy-style-switch {
	grid-area: switch;
	justify-self: end;
}

html[data-style="paper"] .jy-style-switch__label {
	font-style: italic;
	font-size: 0.875rem;
	letter-spacing: 0.04em;
}

html[data-style="paper"] .jy-style-switch__options {
	border-width: 1px;
	background-color: transparent;
}

html[data-style="paper"] .jy-style-switch__option .wp-block-button__link {
	border-radius: 0;
	font-family: var(--wp--preset--font-family--serif);
	letter-spacing: 0.12em;
}

html[data-style="paper"] .jy-brand {
	grid-area: brand;
	position: relative;
	justify-content: center;
	padding: 0.85rem 0 0.75rem;
	border-top: 1px solid var(--jy-line-strong);
	border-bottom: 1px solid var(--jy-line-strong);
}

html[data-style="paper"] .jy-brand::before,
html[data-style="paper"] .jy-brand::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	height: 1px;
	background: var(--jy-line-strong);
}

html[data-style="paper"] .jy-brand::before { top: 3px; }
html[data-style="paper"] .jy-brand::after { bottom: 3px; }

html[data-style="paper"] .jy-brand__text {
	align-items: center;
}

html[data-style="paper"] .jy-brand__name {
	font-family: var(--wp--preset--font-family--serif);
	font-size: clamp(2.4rem, 6vw, 3.75rem);
	font-weight: 900;
	line-height: 1;
	letter-spacing: -0.015em;
}

html[data-style="paper"] .jy-brand__tagline {
	margin-top: 0.55rem !important;
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.875rem;
	letter-spacing: 0.3em;
	color: var(--jy-ink-soft);
}

html[data-style="paper"] .jy-nav {
	grid-area: nav;
	position: relative;
	justify-content: center;
	border-top: 1px solid var(--jy-line-strong);
	border-bottom: 1px solid var(--jy-line-strong);
	margin-bottom: 4px !important;
}

html[data-style="paper"] .jy-nav::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -5px;
	border-bottom: 1px solid var(--jy-line);
}

html[data-style="paper"] .jy-nav .wp-block-navigation__container {
	justify-content: center;
	gap: 0;
}

html[data-style="paper"] .jy-nav .wp-block-navigation-item + .wp-block-navigation-item::before {
	content: "";
	align-self: center;
	width: 1px;
	height: 0.9em;
	background: var(--jy-line);
}

html[data-style="paper"] .jy-nav .wp-block-navigation-item__content {
	align-items: center;
	gap: 0.45rem;
	padding: 0.85rem clamp(0.8rem, 1.6vw, 1.5rem);
	font-family: var(--wp--preset--font-family--serif);
	font-weight: 700;
	letter-spacing: 0.18em;
}

html[data-style="paper"] .jy-nav .wp-block-navigation-item__content::before {
	font-style: italic;
	font-weight: 400;
	font-size: 0.8125rem;
	letter-spacing: 0;
	color: var(--wp--preset--color--muted);
}

html[data-style="paper"] .jy-nav .wp-block-navigation-item__content::after {
	left: 22%;
	right: 22%;
	bottom: 0.45rem;
	height: 1px;
	border-radius: 0;
	transform-origin: center;
}

html[data-style="paper"] .jy-nav .wp-block-navigation-item__content:hover,
html[data-style="paper"] .jy-nav .wp-block-navigation-item__content:focus-visible,
html[data-style="paper"] .jy-nav .wp-block-navigation-item__content[aria-current="page"] {
	color: var(--wp--preset--color--accent-text);
	letter-spacing: 0.24em;
}

html[data-style="paper"] .jy-nav .wp-block-navigation-item__content[aria-current="page"]::after {
	height: 2px;
}

html[data-style="paper"] .jy-nav .wp-block-navigation__responsive-container-open {
	margin: 0.35rem auto;
	border: 0;
}

html[data-style="paper"] .jy-nav .wp-block-navigation__responsive-container-open::after {
	content: "栏目目录";
	font-family: var(--wp--preset--font-family--serif);
	font-size: 0.9375rem;
	font-weight: 700;
	letter-spacing: 0.35em;
}

html[data-style="paper"] .jy-nav .wp-block-navigation__responsive-container.is-menu-open {
	background-color: var(--wp--preset--color--base) !important;
}

html[data-style="paper"] .jy-nav .is-menu-open .wp-block-navigation-item + .wp-block-navigation-item::before {
	display: none;
}

html[data-style="paper"] .jy-nav .is-menu-open .wp-block-navigation-item__content {
	letter-spacing: 0.14em;
	border-bottom-style: solid;
}

/* On the paper homepage the hero carries the big masthead */
html[data-style="paper"] .home .jy-header .jy-issue-line,
html[data-style="paper"] .home .jy-header .jy-brand {
	display: none !important;
}

/* =========================================================
   5. BUTTONS
   ========================================================= */
.jy-btn-primary .wp-block-button__link,
.jy-btn-outline .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	border: 2px solid transparent;
	transition: transform 0.25s var(--jy-ease), box-shadow 0.25s var(--jy-ease),
		background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.jy-btn-primary .wp-block-button__link {
	border-color: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 var(--wp--preset--color--accent);
}

.jy-btn-primary .wp-block-button__link:hover,
.jy-btn-primary .wp-block-button__link:focus-visible {
	background-color: var(--wp--preset--color--primary-deep);
	transform: translate(-3px, -3px);
	box-shadow: 5px 5px 0 var(--wp--preset--color--accent);
}

.jy-btn-outline .wp-block-button__link {
	background-color: transparent;
	border-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--contrast);
}

.jy-btn-outline .wp-block-button__link:hover,
.jy-btn-outline .wp-block-button__link:focus-visible {
	background-color: var(--wp--preset--color--surface);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--primary);
	transform: translateY(-2px);
}

.jy-btn-primary .wp-block-button__link::after,
.jy-btn-outline .wp-block-button__link::after {
	content: "→";
	font-family: var(--wp--preset--font-family--mono);
	transition: transform 0.25s var(--jy-ease);
}

.jy-btn-outline .wp-block-button__link::after {
	content: "↗";
}

.jy-btn-primary .wp-block-button__link:hover::after,
.jy-btn-outline .wp-block-button__link:hover::after {
	transform: translateX(4px);
}

/* =========================================================
   6. SECTIONS (shared)
   ========================================================= */
.jy-section {
	padding-top: var(--wp--preset--spacing--60);
	padding-bottom: var(--wp--preset--spacing--60);
}

body .jy-section-head {
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem 2rem;
	flex-wrap: wrap;
	margin-bottom: 2.25rem !important;
	padding-bottom: 1rem;
	border-bottom: 1px dashed var(--jy-line-strong);
}

.jy-section-head > * {
	margin: 0 !important;
}

.jy-section-head__main {
	gap: 0 !important;
}

.jy-section-title {
	margin: 0 !important;
	font-size: clamp(1.75rem, 3.2vw, 2.5rem);
	line-height: 1.2;
}

.jy-section-head__aside {
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--muted);
}

html[data-style="paper"] .jy-section-head {
	position: relative;
	padding-top: 1.1rem;
	padding-bottom: 0;
	border-bottom: 0;
	border-top: 1px solid var(--jy-line-strong);
}

html[data-style="paper"] .jy-section-head::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 3px;
	height: 1px;
	background: var(--jy-line-strong);
}

html[data-style="paper"] .jy-section-title {
	font-weight: 700;
	letter-spacing: 0.06em;
}

html[data-style="paper"] .jy-section-head__aside {
	font-style: italic;
	font-size: 0.9375rem;
}

/* =========================================================
   7. HOMEPAGE HERO — workshop (从车间到书桌)
   ========================================================= */
.jy-hero {
	position: relative;
	display: grid;
	align-content: center;
	min-height: calc(100vh - var(--jy-header-h) - 6px);
	padding-top: 3.5rem;
	padding-bottom: 4.5rem;
	overflow: hidden;
	isolation: isolate;
	background-color: var(--wp--preset--color--base);
	background-image:
		radial-gradient(ellipse 60% 70% at 78% 45%, rgba(244, 237, 224, 0.85), transparent 70%),
		radial-gradient(ellipse 50% 60% at 10% 100%, rgba(200, 137, 46, 0.10), transparent 70%),
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.35 0 0 0 0 0.25 0 0 0 0 0.12 0 0 0 0.09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* faint engineering grid paper, drifting slowly */
.jy-hero::before {
	content: "";
	position: absolute;
	inset: -120px;
	z-index: -1;
	pointer-events: none;
	background-image:
		linear-gradient(var(--jy-grid-major) 1px, transparent 1px),
		linear-gradient(90deg, var(--jy-grid-major) 1px, transparent 1px),
		linear-gradient(var(--jy-grid-minor) 1px, transparent 1px),
		linear-gradient(90deg, var(--jy-grid-minor) 1px, transparent 1px);
	background-size: 120px 120px, 120px 120px, 24px 24px, 24px 24px;
	animation: jy-grid-drift 60s linear infinite;
}

/* ruler along the bottom edge of the bench */
.jy-hero::after,
.jy-ruler-edge::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 22px;
	border-top: 1px solid var(--jy-line);
	background-image:
		repeating-linear-gradient(90deg, rgba(34, 32, 28, 0.45) 0 1px, transparent 1px 60px),
		repeating-linear-gradient(90deg, rgba(34, 32, 28, 0.3) 0 1px, transparent 1px 30px),
		repeating-linear-gradient(90deg, rgba(34, 32, 28, 0.18) 0 1px, transparent 1px 6px);
	background-size: 100% 14px, 100% 9px, 100% 5px;
	background-repeat: repeat-x;
	pointer-events: none;
}

.jy-hero__inner {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 58fr) minmax(0, 42fr);
	gap: clamp(2rem, 4vw, 3.5rem);
	align-items: center;
	width: 100%;
}

.jy-hero__inner > *,
.jy-hero__content > *,
.jy-hero__latest > * {
	margin-top: 0;
	margin-bottom: 0;
}

.jy-hero__content {
	position: relative;
	min-width: 0;
}

body .jy-hero__annotation {
	gap: 0.75rem;
	flex-wrap: wrap;
	align-items: center;
	margin-bottom: 1.75rem !important;
	animation: jy-fade-in 0.6s var(--jy-ease) both;
}

.jy-hero__annotation > * {
	margin: 0 !important;
}

.jy-hero__note {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--primary);
}

.jy-hero__note::before {
	content: "";
	width: 28px;
	height: 1.5px;
	background: currentColor;
}

.jy-hero__note::after {
	content: "";
	display: inline-block;
	width: 0.55em;
	height: 1.1em;
	margin-left: -0.3rem;
	background-color: var(--wp--preset--color--accent);
	animation: jy-cursor-blink 1.1s steps(1) infinite;
}

.jy-hero__rev {
	padding: 0.1rem 0.45rem;
	border: 1.5px solid var(--wp--preset--color--accent-text);
	border-radius: var(--jy-radius);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	line-height: 1.5;
	color: var(--wp--preset--color--accent-text);
}

.jy-hero__headline {
	width: fit-content;
	max-width: 100%;
}

.jy-hero__headline > * {
	margin: 0 !important;
}

/* dimension line measuring the headline: |<—— label ——>| */
.jy-hero__dimension {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	height: 18px;
	margin-bottom: 0.9rem !important;
	border-left: 1.5px solid var(--wp--preset--color--muted);
	border-right: 1.5px solid var(--wp--preset--color--muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	line-height: 1;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--muted);
	white-space: nowrap;
	animation: jy-fade-in 0.8s 0.9s var(--jy-ease) both;
}

.jy-hero__dimension::before,
.jy-hero__dimension::after {
	content: "";
	flex: 1 1 auto;
	min-width: 12px;
	height: 8px;
	background: var(--wp--preset--color--muted);
}

.jy-hero__dimension::before {
	clip-path: polygon(0 50%, 9px 0, 9px calc(50% - 0.5px), 100% calc(50% - 0.5px), 100% calc(50% + 0.5px), 9px calc(50% + 0.5px), 9px 100%);
}

.jy-hero__dimension::after {
	clip-path: polygon(100% 50%, calc(100% - 9px) 0, calc(100% - 9px) calc(50% - 0.5px), 0 calc(50% - 0.5px), 0 calc(50% + 0.5px), calc(100% - 9px) calc(50% + 0.5px), calc(100% - 9px) 100%);
}

.jy-hero__title {
	font-size: clamp(2.1rem, 5.1vw, 4.25rem);
	font-weight: 900;
	line-height: 1.18;
	letter-spacing: -0.01em;
	animation: jy-slide-up 0.8s 0.15s var(--jy-ease) both;
}

.jy-hero__title em {
	display: block;
	font-style: normal;
	color: var(--wp--preset--color--primary);
	animation: jy-slide-up 0.8s 0.32s var(--jy-ease) both;
}

.jy-hero__title strong {
	position: relative;
	display: inline-block;
	font-weight: inherit;
	white-space: nowrap;
}

/* hand-drawn ochre stroke that draws itself */
.jy-hero__title strong::after {
	content: "";
	position: absolute;
	left: -6%;
	bottom: -0.16em;
	z-index: -1;
	width: 112%;
	height: 0.36em;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 20' preserveAspectRatio='none'%3E%3Cpath d='M3 13 C 32 6, 74 4, 116 9 S 178 15, 197 6' fill='none' stroke='%23C8892E' stroke-width='7' stroke-linecap='round' stroke-linejoin='round' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") no-repeat 0 0 / 100% 100%;
	clip-path: inset(-20% 100% -20% 0);
	animation: jy-draw-stroke 0.9s 0.95s var(--jy-ease) forwards;
	pointer-events: none;
}

/* numbered balloon (drawing callout) */
.jy-hero__title strong::before {
	content: "1";
	content: "1" / "";
	position: absolute;
	top: -0.55em;
	right: -0.95em;
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	border: 1.5px solid var(--wp--preset--color--accent-text);
	border-radius: 50%;
	background-color: var(--wp--preset--color--surface);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.8125rem;
	font-weight: 500;
	line-height: 1;
	letter-spacing: 0;
	color: var(--wp--preset--color--accent-text);
	animation: jy-pop-in 0.5s 1.6s var(--jy-ease) both, jy-callout-ring 3.2s 2.4s ease-out infinite;
}

.jy-hero__standfirst {
	max-width: 34em;
	margin-top: 1.9rem !important;
	font-size: 1.25rem;
	line-height: 1.75;
	color: var(--wp--preset--color--muted);
	animation: jy-slide-up 0.8s 0.5s var(--jy-ease) both;
}

.jy-hero__standfirst strong {
	color: var(--wp--preset--color--contrast);
	font-weight: 700;
}

body .jy-hero__actions {
	gap: 0.9rem;
	margin-top: 2rem !important;
	animation: jy-slide-up 0.8s 0.65s var(--jy-ease) both;
}

body .jy-hero__notes {
	gap: 0.4rem 1.5rem;
	flex-wrap: wrap;
	margin-top: 2.25rem !important;
	padding-top: 1rem;
	border-top: 1px dashed var(--jy-line-strong);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--muted);
	animation: jy-fade-in 0.8s 1.1s var(--jy-ease) both;
}

.jy-hero__notes > * {
	margin: 0 !important;
}

.jy-hero__notes strong {
	color: var(--wp--preset--color--accent-text);
	font-weight: 500;
}

.jy-hero__byline {
	color: var(--wp--preset--color--contrast);
	font-weight: 500;
}

/* right: pinned index cards */
.jy-hero__latest {
	position: relative;
	min-width: 0;
	padding-right: 0.5rem;
}

.jy-hero__latest-label {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	margin-bottom: 1.25rem !important;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--primary);
	animation: jy-fade-in 0.6s 0.4s var(--jy-ease) both;
}

.jy-hero__latest-label::after {
	content: "";
	flex: 1;
	height: 1px;
	background: repeating-linear-gradient(90deg, var(--wp--preset--color--muted) 0 6px, transparent 6px 10px);
	opacity: 0.6;
}

.jy-pinned .wp-block-post-template {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jy-pinned .wp-block-post-template > li {
	position: relative;
	margin: 0;
	animation: jy-deal-in 0.75s var(--jy-ease) both;
}

.jy-pinned .wp-block-post-template > li:nth-child(1) { animation-delay: 0.55s; z-index: 3; margin-right: 8%; }
.jy-pinned .wp-block-post-template > li:nth-child(2) { animation-delay: 0.75s; z-index: 2; margin: -14px 0 0 9%; }
.jy-pinned .wp-block-post-template > li:nth-child(3) { animation-delay: 0.95s; z-index: 1; margin: -14px 5% 0 3%; }

.jy-pinned .wp-block-post-template > li:hover,
.jy-pinned .wp-block-post-template > li:focus-within {
	z-index: 5;
}

.jy-pin-card {
	--jy-tilt: 0deg;
	position: relative;
	display: block;
	margin: 0;
	padding: 1.35rem 1.4rem 1.1rem 1.6rem;
	background-color: var(--wp--preset--color--surface);
	background-image:
		linear-gradient(90deg, transparent 0.85rem, rgba(200, 137, 46, 0.45) 0.85rem, rgba(200, 137, 46, 0.45) calc(0.85rem + 1px), transparent calc(0.85rem + 1px)),
		repeating-linear-gradient(transparent 0 27px, rgba(30, 59, 47, 0.08) 27px 28px);
	background-position: 0 0, 0 3.1rem;
	border: 1px solid rgba(34, 32, 28, 0.12);
	border-radius: 2px;
	box-shadow: var(--jy-shadow-card);
	transform: rotate(var(--jy-tilt));
	transition: transform 0.4s var(--jy-ease), box-shadow 0.4s var(--jy-ease);
}

.jy-pinned li:nth-child(1) .jy-pin-card { --jy-tilt: -2.4deg; }
.jy-pinned li:nth-child(2) .jy-pin-card { --jy-tilt: 1.8deg; }
.jy-pinned li:nth-child(3) .jy-pin-card { --jy-tilt: -1.1deg; }

/* push pin */
.jy-pin-card::before {
	content: "";
	position: absolute;
	top: -7px;
	left: 50%;
	width: 14px;
	height: 14px;
	margin-left: -7px;
	border-radius: 50%;
	background: radial-gradient(circle at 35% 35%, #e0a85a, #C8892E 45%, #8a5a17 100%);
	box-shadow: 0 2px 3px rgba(34, 32, 28, 0.35);
}

.jy-pin-card:hover,
.jy-pin-card:focus-within {
	transform: translateY(-8px) rotate(0deg);
	box-shadow: var(--jy-shadow-lift);
}

.jy-pin-card > * {
	margin: 0 !important;
}

.jy-pin-card__head {
	margin-bottom: 0.7rem !important;
}

.jy-pin-card__title {
	font-family: var(--wp--preset--font-family--body);
	font-size: 1.125rem;
	font-weight: 700;
	line-height: 1.55;
}

.jy-pin-card__title a,
.jy-entry__title a,
.jy-col-card__title a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	transition: color 0.25s ease;
}

/* whole card clickable through the title link */
.jy-pin-card__title a::after,
.jy-entry__title a::after,
.jy-col-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

.jy-pin-card:hover .jy-pin-card__title a,
.jy-entry:hover .jy-entry__title a,
.jy-col-card:hover .jy-col-card__title a {
	color: var(--wp--preset--color--primary);
}

body .jy-pin-card__meta {
	justify-content: space-between;
	align-items: center;
	margin-top: 0.8rem !important;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--muted);
}

.jy-pin-card__meta > * {
	margin: 0 !important;
}

.jy-pin-card__read {
	color: var(--wp--preset--color--primary);
	font-weight: 500;
	transition: transform 0.25s var(--jy-ease);
}

.jy-pin-card:hover .jy-pin-card__read {
	transform: translateX(4px);
}

/* Category tags (workshop) */
.jy-tag {
	position: relative;
	z-index: 2;
	font-size: 0.8125rem;
	line-height: 1.5;
}

.jy-tag a {
	display: inline-block;
	padding: calc(0.15rem - 1.5px) calc(0.6rem - 1.5px);
	border: 1.5px solid var(--wp--preset--color--accent-text);
	border-radius: 2px;
	color: var(--wp--preset--color--accent-text);
	font-weight: 700;
	text-decoration: none;
	transition: transform 0.2s var(--jy-ease);
}

.jy-tag a:hover {
	transform: translateY(-1px);
}

.jy-tag .wp-block-post-terms__separator {
	display: none;
}

.jy-tag a + .wp-block-post-terms__separator + a {
	margin-left: 0.35rem;
}

.category-management .jy-tag a[href*="/management/"] {
	background-color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--on-primary);
}

.category-ai .jy-tag a[href*="/ai/"] {
	background-color: var(--wp--preset--color--accent);
	border-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
}

.category-it .jy-tag a[href*="/it/"] {
	background-color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--on-primary);
}

.category-life .jy-tag a[href*="/life/"] {
	border-color: var(--wp--preset--color--muted);
	color: var(--wp--preset--color--muted);
}

/* engineering drawing title block */
.jy-title-block {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0 !important;
	margin-top: 1.9rem !important;
	border: 1.5px solid var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	color: var(--wp--preset--color--muted);
	background-color: rgba(244, 237, 224, 0.6);
	animation: jy-fade-in 0.8s 1.3s var(--jy-ease) both;
}

.jy-title-block > * {
	margin: 0 !important;
	padding: 0.45rem 0.65rem;
	border-right: 1px solid var(--jy-line);
}

.jy-title-block > *:last-child {
	border-right: 0;
}

.jy-title-block p {
	margin: 0 !important;
	line-height: 1.5;
}

.jy-title-block__key {
	font-size: 0.625rem;
	letter-spacing: 0.05em;
}

.jy-title-block__value {
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--wp--preset--color--contrast);
}

/* =========================================================
   8. HOMEPAGE HERO — paper (纸本周刊 / 本期头条)
   ========================================================= */
.jy-cover {
	position: relative;
	padding-top: clamp(1.25rem, 3vw, 2.25rem);
	padding-bottom: clamp(4rem, 7vw, 5.5rem);
}

.jy-cover > * {
	margin-top: 0;
}

.jy-masthead {
	text-align: center;
}

.jy-masthead > * {
	margin: 0 !important;
}

.jy-masthead__issue {
	display: flex;
	justify-content: center;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.35rem 0.75rem;
	margin-bottom: clamp(0.75rem, 2vw, 1.1rem) !important;
	font-size: 0.8125rem;
	letter-spacing: 0.32em;
	color: var(--wp--preset--color--muted);
	animation: jy-fade-up 1s var(--jy-ease) 0.1s both;
}

.jy-masthead__issue::before,
.jy-masthead__issue::after {
	content: "";
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}

.jy-masthead__row {
	position: relative;
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	align-items: center;
	gap: 1.5rem;
	padding: clamp(0.9rem, 2.2vw, 1.75rem) 0 clamp(0.6rem, 1.5vw, 1.15rem);
}

.jy-masthead__row > * {
	margin: 0 !important;
}

.jy-masthead__row::before,
.jy-masthead__row::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	height: 5px;
	border-top: 1px solid var(--jy-line-strong);
	border-bottom: 1px solid var(--jy-line-strong);
	transform-origin: center;
	animation: jy-rule-draw 1.4s var(--jy-ease) 0.25s both;
}

.jy-masthead__row::before { top: 0; }
.jy-masthead__row::after { bottom: 0; animation-delay: 0.45s; }

.jy-masthead__flank {
	font-size: 0.8125rem;
	line-height: 1.9;
	letter-spacing: 0.28em;
	color: var(--wp--preset--color--muted);
	animation: jy-fade-up 1.1s var(--jy-ease) 1s both;
}

.jy-masthead__flank em {
	display: block;
	font-family: var(--jy-font-serif);
	font-style: italic;
	font-size: 0.9375rem;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--contrast);
}

.jy-masthead__flank.is-left { text-align: left; }
.jy-masthead__flank.is-right { text-align: right; }

.jy-masthead__title-wrap {
	position: relative;
	display: inline-block;
}

.jy-masthead__title-wrap > * {
	margin: 0 !important;
}

.jy-masthead__title {
	font-family: var(--jy-font-serif);
	font-weight: 900;
	font-size: clamp(4.25rem, 15.5vw, 12rem);
	line-height: 0.92;
	letter-spacing: -0.015em;
	color: var(--wp--preset--color--contrast);
	white-space: nowrap;
	animation: jy-ink-rise 1.3s var(--jy-ease) 0.45s both;
}

.jy-masthead__tagline {
	margin: clamp(0.6rem, 1.5vw, 0.9rem) 0 0 !important;
	font-size: 0.9375rem;
	letter-spacing: 0.3em;
	color: var(--jy-ink-soft);
	animation: jy-fade-up 1s var(--jy-ease) 1.15s both;
}

.jy-masthead__tagline strong {
	font-weight: 400;
	color: var(--wp--preset--color--accent-text);
}

/* Seal stamp (印章) */
.jy-seal {
	position: absolute !important;
	top: -22%;
	right: -9%;
	width: clamp(76px, 10vw, 128px);
	aspect-ratio: 1;
	pointer-events: none;
	mix-blend-mode: multiply;
	animation: jy-seal-stamp 0.75s var(--jy-ease-stamp) 1.45s both;
}

.jy-seal::before {
	content: "";
	position: absolute;
	inset: 0;
	background: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 120 120%22%3E%3Cdefs%3E%3Cpath id=%22r%22 d=%22M60,60 m-52,0 a52,52 0 1,1 104,0 a52,52 0 1,1 -104,0%22/%3E%3C/defs%3E%3Ctext font-family=%22Songti SC, STSong, SimSun, serif%22 font-size=%229%22 font-weight=%22700%22 letter-spacing=%221.2%22 fill=%22%239A4320%22%3E%3CtextPath href=%22%23r%22 textLength=%22322%22%3EJACK YU %C2%B7 %E4%B8%AA%E4%BA%BA%E5%88%8A%E7%89%A9 %C2%B7 %E5%86%99%E7%BB%99%E5%90%8C%E8%A1%8C%E4%B8%8E%E8%87%AA%E5%B7%B1 %C2%B7 %E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0 %C2%B7%3C/textPath%3E%3C/text%3E%3C/svg%3E") center / 100% 100% no-repeat;
	animation: jy-seal-turn 60s linear infinite;
}

.jy-seal__stamp {
	position: absolute;
	inset: 19%;
	display: grid;
	place-content: center;
	margin: 0 !important;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	box-shadow:
		inset 0 0 0 2px var(--wp--preset--color--accent),
		inset 0 0 0 4px rgba(255, 255, 255, 0.8);
	transform: rotate(-10deg);
	color: #FFFFFF;
	font-family: var(--wp--preset--font-family--serif);
	font-weight: 700;
	font-size: clamp(0.95rem, 1.4vw, 1.3rem);
	line-height: 1.05;
	text-align: center;
	overflow: hidden;
}

.jy-seal__stamp::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		radial-gradient(circle at 22% 30%, rgba(245, 239, 228, 0.55) 0 1.5px, transparent 2px),
		radial-gradient(circle at 74% 68%, rgba(245, 239, 228, 0.5) 0 2px, transparent 2.5px),
		radial-gradient(circle at 60% 18%, rgba(245, 239, 228, 0.4) 0 1px, transparent 1.5px),
		radial-gradient(circle at 34% 82%, rgba(245, 239, 228, 0.45) 0 1.2px, transparent 1.8px);
}

/* Cover story */
.jy-cover__story {
	display: grid !important;
	grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
	gap: clamp(2rem, 5vw, 4.5rem);
	align-items: center;
	margin-top: clamp(2rem, 5vw, 3.5rem) !important;
}

.jy-cover__story > * {
	margin: 0 !important;
	min-width: 0;
}

.jy-cover__query .wp-block-post-template {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jy-cover__text {
	position: relative;
	padding-left: clamp(0rem, 2vw, 1.75rem);
	border-left: 1px solid var(--jy-line);
}

.jy-cover__text > * {
	margin: 0;
	animation: jy-fade-up 1.1s var(--jy-ease) both;
}

.jy-cover__text > *:nth-child(1) { animation-delay: 1.4s; }
.jy-cover__text > *:nth-child(2) { animation-delay: 1.52s; }
.jy-cover__text > *:nth-child(3) { animation-delay: 1.64s; }
.jy-cover__text > *:nth-child(4) { animation-delay: 1.76s; }
.jy-cover__text > *:nth-child(5) { animation-delay: 1.88s; }

body .jy-cover__eyebrow {
	align-items: center;
	gap: 0.9rem;
	margin-bottom: 1.4rem !important;
	font-size: 0.8125rem;
	letter-spacing: 0.38em;
	color: var(--wp--preset--color--muted);
}

.jy-cover__eyebrow > * {
	margin: 0 !important;
}

.jy-cover__eyebrow-label {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
}

.jy-cover__eyebrow-label::after {
	content: "";
	width: clamp(2rem, 6vw, 4.5rem);
	height: 1px;
	background: var(--jy-line-strong);
}

.jy-cover__eyebrow-no {
	font-family: var(--jy-font-serif);
	font-style: italic;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--accent-text);
}

.jy-cover__category {
	margin-bottom: 0.9rem !important;
	font-size: 1.25rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	color: var(--wp--preset--color--accent-text);
}

.jy-cover__category a {
	color: inherit;
	text-decoration: none;
	transition: color 0.3s var(--jy-ease);
}

.jy-cover__category a:hover {
	color: var(--wp--preset--color--primary);
}

.jy-cover__title {
	margin-bottom: 1.4rem !important;
	font-family: var(--wp--preset--font-family--serif);
	font-weight: 700;
	font-size: clamp(1.7rem, 3vw, 2.75rem);
	line-height: 1.32;
	letter-spacing: 0.01em;
	text-wrap: pretty;
}

.jy-cover__title a,
html[data-style="paper"] .jy-entry__title a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	background-image: linear-gradient(var(--wp--preset--color--accent), var(--wp--preset--color--accent));
	background-size: 0% 2px;
	background-repeat: no-repeat;
	background-position: 0 92%;
	transition: background-size 0.6s var(--jy-ease), color 0.3s ease;
}

.jy-cover__title a:hover,
.jy-cover__title a:focus-visible {
	background-size: 100% 2px;
}

.jy-cover__deck {
	max-width: 34em;
	font-size: clamp(1rem, 1.35vw, 1.125rem);
	line-height: 1.95;
	color: var(--jy-ink-soft);
}

.jy-cover__deck .wp-block-post-excerpt__excerpt {
	margin: 0;
}

.jy-cover__deck .wp-block-post-excerpt__more-text {
	margin: 1.6rem 0 0;
}

.wp-block-post-excerpt__more-link {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.7rem 1.35rem;
	border: 1px solid var(--wp--preset--color--primary);
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.3em;
	text-decoration: none;
	color: var(--wp--preset--color--primary);
	background: linear-gradient(var(--wp--preset--color--primary), var(--wp--preset--color--primary)) no-repeat left center / 0% 100%;
	transition: background-size 0.5s var(--jy-ease), color 0.35s var(--jy-ease);
}

.wp-block-post-excerpt__more-link::after {
	content: "→";
	font-family: var(--jy-font-serif);
	font-size: 1.15em;
	letter-spacing: 0;
	transition: transform 0.45s var(--jy-ease);
}

.wp-block-post-excerpt__more-link:hover,
.wp-block-post-excerpt__more-link:focus-visible {
	background-size: 100% 100%;
	color: var(--wp--preset--color--base);
}

.wp-block-post-excerpt__more-link:hover::after {
	transform: translateX(6px);
}

body .jy-cover__meta {
	gap: 0.25rem 0.9rem;
	flex-wrap: wrap;
	margin-top: 1.4rem !important;
	font-size: 0.9375rem;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--muted);
}

.jy-cover__meta > * {
	margin: 0 !important;
}

.jy-cover__meta em,
.jy-cover__meta .wp-block-post-date {
	font-family: var(--jy-font-serif);
	font-style: italic;
	color: var(--wp--preset--color--contrast);
}

/* CSS-only cover illustration: 先立尺，再讲理 */
.jy-illus {
	position: relative;
	animation: jy-panel-reveal 1.5s var(--jy-ease) 1.7s both;
}

.jy-illus > * {
	margin: 0 !important;
}

.jy-illus__frame {
	position: relative;
	aspect-ratio: 4 / 4.6;
	background-color: var(--wp--preset--color--surface);
	background-image:
		radial-gradient(circle at 81% 17%, var(--wp--preset--color--contrast) 0 3%, transparent 3.2% 8.2%, var(--wp--preset--color--contrast) 8.3% 8.6%, transparent 8.8%),
		repeating-linear-gradient(0deg, rgba(31, 27, 22, 0.05) 0 1px, transparent 1px 28px),
		repeating-linear-gradient(90deg, rgba(31, 27, 22, 0.035) 0 1px, transparent 1px 28px);
	border: 1px solid var(--jy-line-strong);
	outline: 1px solid var(--jy-line);
	outline-offset: 7px;
	overflow: hidden;
	transition: transform 0.6s var(--jy-ease), box-shadow 0.6s var(--jy-ease);
}

.jy-illus:hover .jy-illus__frame {
	transform: translateY(-4px);
	box-shadow: 0 18px 36px -22px rgba(31, 27, 22, 0.45);
}

.jy-illus__frame > * {
	position: absolute !important;
	margin: 0 !important;
}

.jy-illus__frame::before,
.jy-illus__frame::after {
	content: "";
	position: absolute;
}

.jy-illus__frame::before {
	top: 9%;
	left: 8%;
	width: 52%;
	height: 40%;
	background:
		repeating-linear-gradient(115deg, rgba(255, 255, 255, 0.07) 0 2px, transparent 2px 9px),
		var(--wp--preset--color--accent);
	transform: rotate(-4deg);
}

.jy-illus__frame::after {
	right: 7%;
	bottom: 11%;
	width: 54%;
	height: 42%;
	background:
		repeating-linear-gradient(65deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 10px),
		var(--wp--preset--color--primary);
	transform: rotate(3deg);
}

.jy-illus__memo {
	z-index: 1;
	width: 40%;
	height: 26% !important;
	padding: 7% 6%;
	background-color: var(--wp--preset--color--base);
	background-image: repeating-linear-gradient(180deg, transparent 0 13px, rgba(31, 27, 22, 0.32) 13px 14px);
	background-clip: content-box;
	box-shadow: 0 10px 20px -14px rgba(31, 27, 22, 0.55);
}

.jy-illus__memo::before {
	content: "";
	position: absolute;
	top: 12%;
	left: 6%;
	width: 34%;
	height: 4px;
	background: var(--wp--preset--color--contrast);
}

.jy-illus__memo.is-left {
	top: 24%;
	left: 15%;
	transform: rotate(-7deg);
}

.jy-illus__memo.is-right {
	bottom: 22%;
	right: 13%;
	transform: rotate(6deg);
}

.jy-illus__memo.is-right::before {
	background: var(--wp--preset--color--accent);
}

.jy-illus__ruler {
	z-index: 2;
	top: 50%;
	left: 50%;
	width: 88%;
	height: 11%;
	background-color: #F8F2E6;
	background-image:
		repeating-linear-gradient(90deg, #1F1B16 0 1px, transparent 1px 40px),
		repeating-linear-gradient(90deg, #1F1B16 0 1px, transparent 1px 8px);
	background-size: 100% 46%, 100% 24%;
	background-position: 6px 0, 6px 0;
	background-repeat: no-repeat;
	border: 1px solid #1F1B16;
	box-shadow: 0 14px 22px -16px rgba(31, 27, 22, 0.7);
	transform: translate(-50%, -50%) rotate(-2deg);
	animation: jy-ruler-settle 7s ease-in-out 2.6s infinite;
}

.jy-illus__ruler > * {
	position: absolute;
	margin: 0 !important;
}

.jy-illus__scale {
	left: 3%;
	bottom: 10%;
	font-family: var(--jy-font-serif);
	font-style: italic;
	font-size: clamp(0.65rem, 0.9vw, 0.78rem);
	line-height: 1.2;
	letter-spacing: 0.4em;
	color: #1F1B16;
	white-space: nowrap;
}

.jy-illus__mark {
	right: 4%;
	bottom: 12%;
	display: grid;
	place-items: center;
	width: 1.75em;
	height: 1.75em;
	font-family: var(--wp--preset--font-family--serif);
	font-weight: 700;
	font-size: clamp(0.8rem, 1.2vw, 1rem);
	line-height: 1;
	color: #FFFFFF;
	background: #B5532A;
}

.jy-illus__label {
	z-index: 3;
	left: 3.5%;
	bottom: 5%;
	writing-mode: vertical-rl;
	padding: 0.4rem 0.15rem;
	font-family: var(--jy-font-serif);
	font-size: 0.72rem;
	line-height: 1.2;
	letter-spacing: 0.4em;
	color: var(--wp--preset--color--contrast);
	background: var(--wp--preset--color--surface);
}

body .jy-illus__caption {
	justify-content: space-between;
	gap: 0.25rem 1rem;
	flex-wrap: wrap;
	margin-top: 1.1rem !important;
	font-size: 0.8125rem;
	letter-spacing: 0.2em;
	color: var(--wp--preset--color--muted);
}

.jy-illus__caption > * {
	margin: 0 !important;
}

.jy-illus__caption em {
	font-family: var(--jy-font-serif);
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--accent-text);
}

/* Scroll cue — ambient ink drip */
.jy-cover__cue {
	position: absolute;
	left: 50%;
	bottom: 0.4rem;
	margin: 0 !important;
	transform: translateX(-50%);
	animation: jy-fade-in 1.2s var(--jy-ease) 2.6s both;
}

.jy-cover__cue a {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.4rem;
	padding-left: 0.4em;
	font-size: 0.8125rem;
	letter-spacing: 0.4em;
	color: var(--wp--preset--color--muted);
	text-decoration: none;
	white-space: nowrap;
}

.jy-cover__cue a::after {
	content: "";
	width: 1px;
	height: 2.2rem;
	background:
		linear-gradient(var(--wp--preset--color--accent), var(--wp--preset--color--accent)) no-repeat 0 -16px / 1px 16px,
		var(--jy-line);
	animation: jy-ink-drip 2.8s var(--jy-ease) 3s infinite;
}

/* =========================================================
   9. POST GRID — 最新动态 / archives / search / 继续阅读
   ========================================================= */
.jy-post-grid .wp-block-post-template {
	gap: 2.25rem 1.75rem;
	margin-top: 0;
	margin-bottom: 0;
	padding: 0;
	counter-reset: jy-entry;
}

.jy-post-grid .wp-block-post-template > li {
	display: flex;
	min-width: 0;
	margin: 0;
	counter-increment: jy-entry;
}

.jy-entry {
	--jy-tilt: 0deg;
	position: relative;
	display: flex !important;
	flex-direction: column;
	gap: 0.65rem;
	width: 100%;
	margin: 0;
	padding: 1.45rem 1.4rem 1.2rem 1.65rem;
	background-color: var(--wp--preset--color--surface);
	background-image:
		linear-gradient(90deg, transparent 0.85rem, rgba(200, 137, 46, 0.42) 0.85rem, rgba(200, 137, 46, 0.42) calc(0.85rem + 1px), transparent calc(0.85rem + 1px));
	border: 1px solid rgba(34, 32, 28, 0.12);
	border-radius: 2px;
	box-shadow: var(--jy-shadow-card);
	transform: rotate(var(--jy-tilt));
	transition: transform 0.4s var(--jy-ease), box-shadow 0.4s var(--jy-ease);
}

.jy-post-grid li:nth-child(3n+1) .jy-entry { --jy-tilt: -0.7deg; }
.jy-post-grid li:nth-child(3n+2) .jy-entry { --jy-tilt: 0.5deg; }
.jy-post-grid li:nth-child(3n) .jy-entry { --jy-tilt: -0.35deg; }

/* masking-tape strip */
.jy-entry::before {
	content: "";
	position: absolute;
	top: -9px;
	left: 50%;
	width: 74px;
	height: 18px;
	background: rgba(200, 137, 46, 0.3);
	border-left: 1px dashed rgba(126, 80, 17, 0.25);
	border-right: 1px dashed rgba(126, 80, 17, 0.25);
	transform: translateX(-50%) rotate(-2deg);
}

.jy-entry:hover,
.jy-entry:focus-within {
	transform: translateY(-6px) rotate(0deg);
	box-shadow: var(--jy-shadow-lift);
}

.jy-entry > * {
	margin: 0 !important;
}

.jy-entry__title {
	font-family: var(--wp--preset--font-family--body);
	font-size: 1.1875rem;
	font-weight: 700;
	line-height: 1.55;
}

.jy-entry__excerpt {
	font-size: 0.9375rem;
	line-height: 1.8;
	color: var(--wp--preset--color--muted);
}

.jy-entry__excerpt .wp-block-post-excerpt__excerpt {
	margin: 0;
}

.jy-entry__date {
	margin-top: auto !important;
	align-self: flex-start;
	padding: 0.1rem 0.5rem;
	border: 1.5px solid var(--wp--preset--color--accent-text);
	border-radius: 2px;
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	line-height: 1.5;
	color: var(--wp--preset--color--accent-text);
}

.jy-entry__date::before {
	content: "DATE ";
	opacity: 0.75;
}

.jy-post-grid .wp-block-query-no-results p,
.jy-empty {
	padding: 2rem 1.5rem;
	border: 1.5px dashed var(--jy-line-strong);
	text-align: center;
	color: var(--wp--preset--color--muted);
}

/* Paper: editorial list with hairline rules */
html[data-style="paper"] .jy-post-grid .wp-block-post-template {
	gap: 2.75rem 2.5rem;
}

html[data-style="paper"] .jy-entry {
	gap: 0.55rem;
	padding: 1.15rem 0 0;
	background: none;
	border: 0;
	border-top: 3px double var(--jy-line-strong);
	border-radius: 0;
	box-shadow: none;
	transform: none;
}

html[data-style="paper"] .jy-entry::before {
	content: counter(jy-entry, decimal-leading-zero);
	position: static;
	width: auto;
	height: auto;
	background: none;
	border: 0;
	transform: none;
	font-family: var(--jy-font-serif);
	font-style: italic;
	font-size: 1.75rem;
	line-height: 1;
	color: var(--wp--preset--color--accent);
}

html[data-style="paper"] .jy-entry:hover,
html[data-style="paper"] .jy-entry:focus-within {
	transform: none;
	box-shadow: none;
}

html[data-style="paper"] .jy-entry:hover .jy-entry__title a {
	color: var(--wp--preset--color--contrast);
	background-size: 100% 2px;
}

html[data-style="paper"] .jy-tag a {
	padding: 0;
	border: 0;
	background: none !important;
	color: var(--wp--preset--color--accent-text) !important;
	font-size: 0.8125rem;
	letter-spacing: 0.24em;
}

html[data-style="paper"] .jy-entry__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.375rem;
	font-weight: 700;
	line-height: 1.45;
}

html[data-style="paper"] .jy-entry__excerpt {
	color: var(--jy-ink-soft);
}

html[data-style="paper"] .jy-entry__date {
	padding: 0;
	border: 0;
	font-style: italic;
	font-size: 0.9375rem;
	font-weight: 400;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--muted);
}

html[data-style="paper"] .jy-entry__date::before {
	content: "— ";
}

/* Pagination */
body .jy-pagination {
	gap: 0.6rem;
	margin-top: 3rem !important;
	font-family: var(--jy-font-label);
	font-size: 0.875rem;
}

.jy-pagination a,
.jy-pagination .page-numbers {
	display: inline-grid;
	place-items: center;
	min-width: 2.6rem;
	height: 2.6rem;
	margin: 0;
	padding: 0 0.85rem;
	border: 1.5px solid var(--wp--preset--color--contrast);
	border-radius: var(--jy-radius);
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	white-space: nowrap;
	transition: transform 0.25s var(--jy-ease), box-shadow 0.25s var(--jy-ease), background-color 0.25s ease;
}

.jy-pagination .wp-block-query-pagination-previous,
.jy-pagination .wp-block-query-pagination-next {
	display: inline-flex;
	gap: 0.45rem;
}

.jy-pagination [class*="pagination-previous-arrow"],
.jy-pagination [class*="pagination-next-arrow"] {
	margin: 0;
}

.jy-pagination .wp-block-query-pagination-numbers {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}

.jy-pagination a:hover {
	background-color: var(--wp--preset--color--surface);
	transform: translate(-2px, -2px);
	box-shadow: 3px 3px 0 var(--wp--preset--color--accent);
}

.jy-pagination .current {
	background-color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--on-primary);
}

.jy-pagination .dots {
	border-color: transparent;
}

html[data-style="paper"] .jy-pagination a,
html[data-style="paper"] .jy-pagination .page-numbers {
	border-width: 0 0 1px;
	border-color: var(--jy-line);
	font-style: italic;
	font-size: 1rem;
}

html[data-style="paper"] .jy-pagination a:hover {
	background: none;
	transform: none;
	box-shadow: none;
	color: var(--wp--preset--color--accent-text);
	border-color: var(--wp--preset--color--accent);
}

html[data-style="paper"] .jy-pagination .current {
	background: none;
	color: var(--wp--preset--color--accent-text);
	border-bottom: 2px solid var(--wp--preset--color--accent);
}

/* =========================================================
   10. 栏目 — five column cards
   ========================================================= */
.jy-columns-sec {
	background-color: var(--wp--preset--color--surface);
	border-top: 1px solid var(--jy-line);
	border-bottom: 1px solid var(--jy-line);
}

.jy-col-grid {
	display: grid !important;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 1.25rem;
}

.jy-col-grid > * {
	margin: 0 !important;
}

.jy-col-card {
	position: relative;
	display: flex !important;
	flex-direction: column;
	gap: 0.6rem;
	min-width: 0;
	padding: 1.4rem 1.25rem 1.2rem;
	background-color: var(--wp--preset--color--base);
	border: 1.5px solid var(--wp--preset--color--contrast);
	border-radius: var(--jy-radius);
	box-shadow: 0 0 0 var(--wp--preset--color--accent);
	transition: transform 0.25s var(--jy-ease), box-shadow 0.25s var(--jy-ease);
}

.jy-col-card > * {
	margin: 0 !important;
}

.jy-col-card:hover,
.jy-col-card:focus-within {
	transform: translate(-3px, -3px);
	box-shadow: 5px 5px 0 var(--wp--preset--color--accent);
}

.jy-col-card::after {
	content: "进入栏目 →";
	margin-top: auto;
	padding-top: 0.75rem;
	border-top: 1px dashed var(--jy-line-strong);
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--primary);
}

.jy-col-card__no {
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--accent-text);
}

.jy-col-card__title {
	font-size: 1.5rem;
	line-height: 1.25;
}

.jy-col-card__desc {
	font-size: 0.9375rem;
	line-height: 1.75;
	color: var(--wp--preset--color--muted);
}

html[data-style="paper"] .jy-columns-sec {
	background-color: transparent;
	border: 0;
}

html[data-style="paper"] .jy-col-grid {
	gap: 0;
	border-top: 1px solid var(--jy-line-strong);
	border-bottom: 1px solid var(--jy-line-strong);
}

html[data-style="paper"] .jy-col-card {
	padding: 1.4rem 1.25rem 1.3rem;
	background: none;
	border: 0;
	border-left: 1px solid var(--jy-line);
	box-shadow: none;
}

html[data-style="paper"] .jy-col-card:first-child {
	border-left: 0;
}

html[data-style="paper"] .jy-col-card:hover,
html[data-style="paper"] .jy-col-card:focus-within {
	transform: none;
	box-shadow: none;
	background-color: var(--wp--preset--color--surface);
}

html[data-style="paper"] .jy-col-card::after {
	content: "阅读本栏 →";
	border-top: 0;
	padding-top: 0.4rem;
	font-style: italic;
	font-size: 0.9375rem;
	font-weight: 400;
	color: var(--wp--preset--color--accent-text);
}

html[data-style="paper"] .jy-col-card__no {
	font-style: italic;
	font-size: 2rem;
	font-weight: 400;
	line-height: 1;
	letter-spacing: 0;
	color: var(--wp--preset--color--accent);
}

html[data-style="paper"] .jy-col-card__title {
	font-weight: 700;
	letter-spacing: 0.08em;
}

html[data-style="paper"] .jy-col-card:hover .jy-col-card__title a {
	color: var(--wp--preset--color--accent-text);
}

/* =========================================================
   11. 关于我 teaser
   ========================================================= */
.jy-about-teaser {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	background-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--on-primary);
	background-image:
		linear-gradient(rgba(244, 237, 224, 0.06) 1px, transparent 1px),
		linear-gradient(90deg, rgba(244, 237, 224, 0.06) 1px, transparent 1px);
	background-size: 24px 24px;
}

.jy-about-teaser::after {
	content: "JY";
	position: absolute;
	right: -0.04em;
	bottom: -0.32em;
	z-index: -1;
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 500;
	font-size: clamp(9rem, 22vw, 18rem);
	line-height: 1;
	color: rgba(244, 237, 224, 0.06);
	pointer-events: none;
}

.jy-about-teaser__inner {
	display: grid !important;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: clamp(1.5rem, 5vw, 4.5rem);
	align-items: start;
}

.jy-about-teaser__inner > *,
.jy-about-teaser__head > *,
.jy-about-teaser__body > * {
	margin: 0 !important;
}

.jy-about-teaser .jy-kicker {
	color: var(--wp--preset--color--accent-soft);
	margin-bottom: 0.6rem !important;
}

.jy-about-teaser .jy-section-title {
	color: var(--wp--preset--color--on-primary);
	font-size: clamp(2rem, 4vw, 3rem);
}

.jy-about-teaser__byline {
	margin-bottom: 1rem !important;
	font-family: var(--jy-font-label);
	font-size: 0.875rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--accent-soft);
}

.jy-about-teaser__text {
	max-width: 32em;
	margin-bottom: 1.75rem !important;
	font-size: 1.25rem;
	line-height: 1.85;
}

.jy-about-teaser__more a {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	padding-bottom: 0.25rem;
	border-bottom: 2px solid var(--wp--preset--color--accent);
	color: var(--wp--preset--color--on-primary);
	font-weight: 700;
	text-decoration: none;
}

.jy-about-teaser__more a::after {
	content: "→";
	font-family: var(--wp--preset--font-family--mono);
	transition: transform 0.25s var(--jy-ease);
}

.jy-about-teaser__more a:hover {
	color: var(--wp--preset--color--accent-soft);
}

.jy-about-teaser__more a:hover::after {
	transform: translateX(5px);
}

html[data-style="paper"] .jy-about-teaser {
	background-color: var(--wp--preset--color--surface);
	background-image: none;
	color: var(--wp--preset--color--contrast);
	border-top: 1px solid var(--jy-line-strong);
	border-bottom: 1px solid var(--jy-line-strong);
}

html[data-style="paper"] .jy-about-teaser::after {
	content: "Jack Yu";
	right: 0.1em;
	bottom: -0.2em;
	font-family: var(--jy-font-serif);
	font-style: italic;
	font-weight: 900;
	font-size: clamp(5rem, 14vw, 11rem);
	color: rgba(31, 27, 22, 0.05);
}

html[data-style="paper"] .jy-about-teaser .jy-kicker {
	color: var(--wp--preset--color--accent-text);
}

html[data-style="paper"] .jy-about-teaser .jy-section-title {
	color: var(--wp--preset--color--contrast);
}

html[data-style="paper"] .jy-about-teaser__byline {
	font-style: italic;
	font-size: 1.0625rem;
	font-weight: 400;
	color: var(--wp--preset--color--contrast);
}

html[data-style="paper"] .jy-about-teaser__text {
	color: var(--jy-ink-soft);
}

html[data-style="paper"] .jy-about-teaser__more a {
	color: var(--wp--preset--color--primary);
	border-bottom-width: 1px;
	letter-spacing: 0.2em;
}

/* =========================================================
   12. TITLE AREAS — archive / search / 404 / page / single
   ========================================================= */
.jy-page-head {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	padding-top: clamp(3rem, 7vw, 5rem);
	padding-bottom: calc(clamp(2.5rem, 5vw, 3.5rem) + 22px);
	border-bottom: 1px solid var(--jy-line);
}

.jy-page-head::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image:
		linear-gradient(var(--jy-grid-major) 1px, transparent 1px),
		linear-gradient(90deg, var(--jy-grid-major) 1px, transparent 1px),
		linear-gradient(var(--jy-grid-minor) 1px, transparent 1px),
		linear-gradient(90deg, var(--jy-grid-minor) 1px, transparent 1px);
	background-size: 120px 120px, 120px 120px, 24px 24px, 24px 24px;
	-webkit-mask-image: linear-gradient(90deg, #000 30%, transparent 95%);
	mask-image: linear-gradient(90deg, #000 30%, transparent 95%);
}

.jy-page-head__inner > * {
	margin-top: 0;
	margin-bottom: 0;
}

.jy-page-head__title {
	margin-top: 0.25rem !important;
	font-size: clamp(2.1rem, 5vw, 3.6rem);
	line-height: 1.18;
	animation: jy-slide-up 0.8s 0.1s var(--jy-ease) both;
}

.jy-page-head__desc,
.jy-page-head__desc p {
	max-width: 40em;
	font-size: 1.125rem;
	line-height: 1.8;
	color: var(--wp--preset--color--muted);
}

.jy-page-head__desc {
	margin-top: 1rem !important;
	animation: jy-slide-up 0.8s 0.25s var(--jy-ease) both;
}

.jy-page-head__desc p {
	margin: 0;
}

.jy-page-head .jy-kicker {
	animation: jy-fade-in 0.6s var(--jy-ease) both;
}

html[data-style="paper"] .jy-page-head {
	padding-bottom: clamp(2.5rem, 5vw, 3.5rem);
	border-bottom: 0;
	text-align: center;
}

html[data-style="paper"] .jy-page-head::before {
	inset: auto 0 0 0;
	height: 5px;
	z-index: 0;
	background: none;
	border-top: 1px solid var(--jy-line-strong);
	border-bottom: 1px solid var(--jy-line-strong);
	-webkit-mask-image: none;
	mask-image: none;
}

html[data-style="paper"] .jy-page-head::after {
	display: none;
}

html[data-style="paper"] .jy-page-head .jy-kicker {
	justify-content: center;
}

html[data-style="paper"] .jy-page-head .jy-kicker::after {
	content: "";
	flex: 0 0 2.5rem;
	height: 1px;
	background: var(--jy-line-strong);
}

html[data-style="paper"] .jy-page-head__title {
	font-weight: 700;
	letter-spacing: 0.04em;
}

html[data-style="paper"] .jy-page-head__desc,
html[data-style="paper"] .jy-page-head__desc p {
	margin-left: auto;
	margin-right: auto;
	color: var(--jy-ink-soft);
}

/* Single post head */
.jy-article-head .jy-article-cat {
	margin-bottom: 0.4rem !important;
}

body .jy-article-meta {
	gap: 0.4rem 0.9rem;
	flex-wrap: wrap;
	align-items: center;
	margin-top: 1.25rem !important;
	font-family: var(--jy-font-label);
	font-size: 0.8125rem;
	letter-spacing: 0.05em;
	color: var(--wp--preset--color--muted);
	animation: jy-fade-in 0.8s 0.35s var(--jy-ease) both;
}

.jy-article-meta > * {
	margin: 0 !important;
}

.jy-article-meta .wp-block-post-date {
	padding: 0.1rem 0.5rem;
	border: 1.5px solid var(--wp--preset--color--accent-text);
	border-radius: 2px;
	color: var(--wp--preset--color--accent-text);
	font-weight: 500;
}

body .jy-article-meta__read {
	display: inline-flex;
	gap: 0.35em;
}

.jy-article-meta__author {
	color: var(--wp--preset--color--contrast);
	font-weight: 500;
}

html[data-style="paper"] .jy-article-head .jy-article-cat {
	display: flex;
	justify-content: center;
}

html[data-style="paper"] .jy-article-head .jy-tag a {
	font-size: 0.9375rem;
	letter-spacing: 0.3em;
}

html[data-style="paper"] .jy-article-meta {
	justify-content: center;
	font-style: italic;
	font-size: 0.9375rem;
}

html[data-style="paper"] .jy-article-meta .wp-block-post-date {
	padding: 0;
	border: 0;
	color: var(--wp--preset--color--contrast);
	font-weight: 400;
}

/* 404 */
.jy-404 {
	min-height: 60vh;
	display: grid;
	align-content: center;
}

.jy-404__code {
	margin: 0 0 0.5rem !important;
	font-family: var(--jy-font-label);
	font-size: clamp(4rem, 14vw, 8rem);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--accent);
}

html[data-style="paper"] .jy-404__code {
	font-style: italic;
	font-weight: 900;
}

.jy-404 .wp-block-search,
.jy-search-head .wp-block-search {
	max-width: 560px;
	margin-top: 1.75rem !important;
}

html[data-style="paper"] .jy-404 .wp-block-search,
html[data-style="paper"] .jy-search-head .wp-block-search {
	margin-left: auto !important;
	margin-right: auto !important;
}

.jy-404 .wp-block-buttons {
	margin-top: 1.5rem !important;
}

html[data-style="paper"] .jy-404 .wp-block-buttons {
	justify-content: center;
}

/* Search form */
.wp-block-search__inside-wrapper {
	gap: 0.5rem;
	padding: 0 !important;
	border: 0 !important;
}

.wp-block-search__input {
	min-width: 0;
	padding: 0.8rem 1rem;
	border: 1.5px solid var(--wp--preset--color--contrast);
	border-radius: var(--jy-radius);
	background-color: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--contrast);
	font-family: inherit;
	font-size: 1rem;
}

.wp-block-search__input::placeholder {
	color: var(--wp--preset--color--muted);
	opacity: 1;
}

.wp-block-search__input:focus {
	outline: 2px dashed var(--wp--preset--color--accent-text);
	outline-offset: 2px;
}

.wp-block-search__button {
	margin-left: 0 !important;
	flex-shrink: 0;
	border: 2px solid var(--wp--preset--color--primary) !important;
}

html[data-style="paper"] .wp-block-search__input {
	border-width: 0 0 1px;
	background: transparent;
	font-size: 1.0625rem;
}

html[data-style="paper"] .wp-block-search__button {
	letter-spacing: 0.2em;
}

/* =========================================================
   13. ARTICLE BODY — Chinese reading rhythm
   ========================================================= */
.jy-article {
	padding-top: var(--wp--preset--spacing--50);
	padding-bottom: var(--wp--preset--spacing--40);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) {
	font-size: 1.0938rem;
	line-height: 1.9;
	letter-spacing: 0.01em;
	word-break: break-word;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) > * + * {
	margin-block-start: 1.3em;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h2,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h3,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h4 {
	margin-block-start: 2.2em;
	margin-block-end: 0;
	line-height: 1.4;
	scroll-margin-top: 1.5rem;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h2 {
	position: relative;
	padding-left: 0.95rem;
	font-size: 1.625rem;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h2::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.22em;
	bottom: 0.22em;
	width: 5px;
	border-radius: 1px;
	background: var(--wp--preset--color--accent);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h3 {
	font-size: 1.3rem;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h2 + *,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h3 + *,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h4 + * {
	margin-block-start: 0.8em;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) a {
	color: var(--wp--preset--color--primary);
	text-decoration-thickness: 1.5px;
	text-decoration-color: var(--wp--preset--color--accent);
	text-underline-offset: 0.22em;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) a:hover {
	color: var(--wp--preset--color--accent-text);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) strong {
	color: var(--wp--preset--color--contrast);
	background: linear-gradient(transparent 62%, rgba(200, 137, 46, 0.28) 62%);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) ul,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) ol {
	padding-left: 1.5em;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) li + li {
	margin-top: 0.45em;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) li::marker {
	color: var(--wp--preset--color--accent-text);
	font-family: var(--jy-font-label);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .wp-block-quote,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) blockquote {
	position: relative;
	margin-left: 0;
	margin-right: 0;
	padding: 1.3rem 1.5rem 1.3rem 1.75rem;
	background-color: var(--wp--preset--color--surface);
	border-left: 4px solid var(--wp--preset--color--primary);
	border-radius: 0 var(--jy-radius) var(--jy-radius) 0;
	box-shadow: var(--jy-shadow-card);
	font-size: 1.125rem;
	line-height: 1.85;
	color: var(--wp--preset--color--contrast);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) blockquote::before {
	content: "NOTE";
	position: absolute;
	top: -0.7rem;
	right: 1rem;
	padding: 0 0.45rem;
	background: var(--wp--preset--color--base);
	border: 1.5px solid var(--wp--preset--color--accent-text);
	border-radius: 2px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--accent-text);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) blockquote > *:first-child { margin-top: 0; }
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) blockquote > *:last-child { margin-bottom: 0; }

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) blockquote cite {
	display: block;
	margin-top: 0.6rem;
	font-size: 0.875rem;
	font-style: normal;
	color: var(--wp--preset--color--muted);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) code,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) kbd {
	padding: 0.1em 0.38em;
	border-radius: 3px;
	background: var(--wp--preset--color--surface);
	border: 1px solid var(--jy-line);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.875em;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) pre {
	max-width: 100%;
	overflow-x: auto;
	padding: 1.15rem 1.25rem;
	border-radius: var(--jy-radius);
	background: #22201C;
	color: #F4EDE0;
	font-size: 0.875rem;
	line-height: 1.7;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) pre code {
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) img,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) video,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) iframe {
	max-width: 100%;
	height: auto;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) figcaption {
	font-size: 0.875rem;
	color: var(--wp--preset--color--muted);
	text-align: center;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) hr,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .wp-block-separator {
	border: 0;
	border-top: 1px dashed var(--jy-line-strong);
	margin-block: 2.5em;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.9375rem;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) th,
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) td {
	padding: 0.55rem 0.75rem;
	border: 1px solid var(--jy-line-strong);
	text-align: left;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .wp-block-table {
	overflow-x: auto;
}

/* Paper article body */
html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h2 {
	padding-left: 0;
	font-weight: 700;
	letter-spacing: 0.04em;
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h2::before {
	position: static;
	display: block;
	width: 2.5rem;
	height: 2px;
	margin-bottom: 0.8rem;
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) h3 {
	font-weight: 700;
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) > p:first-child::first-letter {
	float: left;
	margin: 0.1em 0.14em 0 0;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: 3.3em;
	line-height: 0.9;
	color: var(--wp--preset--color--accent);
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) > :not(p) {
	clear: both;
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) strong {
	background: none;
	color: var(--wp--preset--color--accent-text);
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .wp-block-quote,
html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) blockquote {
	padding: 1.5rem 0 1.5rem 3.25rem;
	background: none;
	border-left: 0;
	border-top: 1px solid var(--jy-line-strong);
	border-bottom: 1px solid var(--jy-line-strong);
	border-radius: 0;
	box-shadow: none;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.75;
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) blockquote::before {
	content: "“";
	top: 0.6rem;
	left: 0;
	right: auto;
	padding: 0;
	background: none;
	border: 0;
	font-family: var(--jy-font-serif);
	font-size: 4rem;
	font-weight: 900;
	line-height: 1;
	letter-spacing: 0;
	color: var(--wp--preset--color--accent);
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) li::marker {
	font-style: italic;
}

html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) hr,
html[data-style="paper"] :is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .wp-block-separator {
	border-top: 1px solid var(--jy-line-strong);
	width: 6rem;
	margin-left: auto;
	margin-right: auto;
}

/* Tags + prev/next */
.jy-article-foot > * {
	margin-top: 0;
	margin-bottom: 0;
}

.jy-tags {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--jy-font-label);
	font-size: 0.8125rem;
	color: var(--wp--preset--color--muted);
}

.jy-tags a {
	padding: 0.1rem 0.6rem;
	border: 1px solid var(--jy-line-strong);
	border-radius: 2px;
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.jy-tags a:hover {
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--primary);
}

.jy-tags .wp-block-post-terms__separator {
	display: none;
}

.jy-post-nav {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	margin-top: 2.5rem !important;
	padding-top: 1.75rem;
	border-top: 1px dashed var(--jy-line-strong);
}

.jy-post-nav > * {
	margin: 0 !important;
	min-width: 0;
}

.jy-post-nav .post-navigation-link-next {
	grid-column: 2;
	text-align: right;
}

.jy-post-nav a {
	display: block;
	height: 100%;
	padding: 1rem 1.2rem;
	background-color: var(--wp--preset--color--surface);
	border: 1px solid var(--jy-line);
	border-radius: var(--jy-radius);
	box-shadow: var(--jy-shadow-card);
	color: var(--wp--preset--color--contrast);
	font-weight: 700;
	line-height: 1.6;
	text-decoration: none;
	transition: transform 0.3s var(--jy-ease), box-shadow 0.3s var(--jy-ease);
}

.jy-post-nav a:hover {
	transform: translateY(-4px);
	box-shadow: var(--jy-shadow-lift);
	color: var(--wp--preset--color--primary);
}

.jy-post-nav .wp-block-post-navigation-link__label,
.jy-post-nav .post-navigation-link__label {
	display: block;
	margin-bottom: 0.25rem;
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--accent-text);
}

html[data-style="paper"] .jy-post-nav {
	border-top: 3px double var(--jy-line-strong);
}

html[data-style="paper"] .jy-post-nav a {
	background: none;
	border: 0;
	box-shadow: none;
	padding: 0.5rem 0;
	font-family: var(--wp--preset--font-family--heading);
}

html[data-style="paper"] .jy-post-nav a:hover {
	transform: none;
	color: var(--wp--preset--color--accent-text);
}

html[data-style="paper"] .jy-post-nav .wp-block-post-navigation-link__label,
html[data-style="paper"] .jy-post-nav .post-navigation-link__label {
	font-style: italic;
	font-size: 0.9375rem;
	font-weight: 400;
}

.jy-more {
	background-color: var(--wp--preset--color--surface);
	border-top: 1px solid var(--jy-line);
}

html[data-style="paper"] .jy-more {
	background-color: transparent;
}

/* =========================================================
   14. FOOTER
   ========================================================= */
.jy-footer {
	position: relative;
	padding-top: calc(22px + clamp(2.5rem, 5vw, 3.5rem));
	padding-bottom: 2rem;
	background-color: var(--wp--preset--color--surface);
	border-top: 1.5px solid var(--wp--preset--color--contrast);
}

.jy-footer::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 22px;
	border-bottom: 1px solid var(--jy-line);
	background-image:
		repeating-linear-gradient(90deg, rgba(34, 32, 28, 0.45) 0 1px, transparent 1px 60px),
		repeating-linear-gradient(90deg, rgba(34, 32, 28, 0.3) 0 1px, transparent 1px 30px),
		repeating-linear-gradient(90deg, rgba(34, 32, 28, 0.18) 0 1px, transparent 1px 6px);
	background-size: 100% 14px, 100% 9px, 100% 5px;
	background-repeat: repeat-x;
}

.jy-footer > * {
	margin-top: 0;
}

.jy-footer__inner {
	display: grid !important;
	grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 0.7fr);
	gap: 0 !important;
	border: 1.5px solid var(--wp--preset--color--contrast);
	background-color: rgba(233, 223, 204, 0.45);
}

.jy-footer__inner > * {
	margin: 0 !important;
	padding: 1.4rem 1.5rem;
	border-right: 1px solid var(--jy-line-strong);
}

.jy-footer__inner > *:last-child {
	border-right: 0;
}

.jy-footer__inner > * > * {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

.jy-footer__label {
	margin-bottom: 0.75rem !important;
	font-family: var(--jy-font-label);
	font-size: 0.6875rem;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}

.jy-footer__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.6rem;
	font-weight: 900;
	line-height: 1.2;
}

.jy-footer__title a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.jy-footer__desc {
	margin-top: 0.6rem !important;
	max-width: 26em;
	font-size: 0.9375rem;
	line-height: 1.75;
	color: var(--wp--preset--color--muted);
}

.jy-footer__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem 1.15rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.jy-footer__list li {
	margin: 0;
}

.jy-footer__list a,
.jy-footer__rss a {
	color: var(--wp--preset--color--contrast);
	font-weight: 700;
	text-decoration: none;
	background-image: linear-gradient(var(--wp--preset--color--accent), var(--wp--preset--color--accent));
	background-size: 0% 2px;
	background-repeat: no-repeat;
	background-position: 0 100%;
	transition: background-size 0.35s var(--jy-ease), color 0.25s ease;
}

.jy-footer__list a:hover,
.jy-footer__rss a:hover {
	color: var(--wp--preset--color--primary);
	background-size: 100% 2px;
}

.jy-footer__rss a::after {
	content: " ↗";
	font-family: var(--wp--preset--font-family--mono);
}

body .jy-footer__bottom {
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 0.4rem 1rem;
	margin-top: 1.25rem !important;
	font-family: var(--jy-font-label);
	font-size: 0.75rem;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--muted);
}

.jy-footer__bottom > * {
	margin: 0 !important;
}

html[data-style="paper"] .jy-footer {
	padding-top: clamp(3rem, 6vw, 4.5rem);
	background-color: var(--wp--preset--color--surface);
	border-top: 1px solid var(--jy-line-strong);
	text-align: center;
}

html[data-style="paper"] .jy-footer::before {
	top: 4px;
	height: 0;
	border-bottom: 1px solid var(--jy-line-strong);
	background: none;
}

html[data-style="paper"] .jy-footer__inner {
	grid-template-columns: minmax(0, 1fr);
	border: 0;
	background: none;
}

html[data-style="paper"] .jy-footer__inner > * {
	padding: 1rem 0;
	border-right: 0;
	border-top: 1px solid var(--jy-line);
}

html[data-style="paper"] .jy-footer__inner > *:first-child {
	border-top: 0;
}

html[data-style="paper"] .jy-footer__title {
	font-family: var(--jy-font-serif);
	font-size: clamp(2.4rem, 6vw, 3.5rem);
	letter-spacing: -0.015em;
}

html[data-style="paper"] .jy-footer__desc {
	max-width: 40em;
	margin-left: auto;
	margin-right: auto;
	letter-spacing: 0.12em;
	color: var(--jy-ink-soft);
}

html[data-style="paper"] .jy-footer__label {
	font-style: italic;
	font-size: 0.9375rem;
	font-weight: 400;
	letter-spacing: 0.06em;
	text-transform: none;
	color: var(--wp--preset--color--accent-text);
}

html[data-style="paper"] .jy-footer__list {
	justify-content: center;
	gap: 0.35rem 0;
}

html[data-style="paper"] .jy-footer__list li + li::before {
	content: "·";
	margin: 0 0.75rem;
	color: var(--wp--preset--color--accent);
}

html[data-style="paper"] .jy-footer__list a,
html[data-style="paper"] .jy-footer__rss a {
	font-family: var(--wp--preset--font-family--serif);
	letter-spacing: 0.14em;
}

html[data-style="paper"] .jy-footer__bottom {
	justify-content: center;
	gap: 0.3rem 1.5rem;
	font-style: italic;
	font-size: 0.875rem;
}

/* Paper: the CJK serif has no italic, so keep mixed Chinese labels upright
   (Latin-only bits such as dates and numerals stay italic). */
html[data-style="paper"] .jy-kicker,
html[data-style="paper"] .jy-section-head__aside,
html[data-style="paper"] .jy-style-switch__label,
html[data-style="paper"] .jy-about-teaser__byline,
html[data-style="paper"] .jy-article-meta,
html[data-style="paper"] .jy-footer__label,
html[data-style="paper"] .jy-footer__bottom,
html[data-style="paper"] .jy-col-card::after,
html[data-style="paper"] .jy-post-nav .post-navigation-link__label,
html[data-style="paper"] .jy-post-nav .wp-block-post-navigation-link__label,
html[data-style="paper"] .jy-pagination .wp-block-query-pagination-previous,
html[data-style="paper"] .jy-pagination .wp-block-query-pagination-next {
	font-style: normal;
}

html[data-style="paper"] .jy-article-meta .wp-block-post-date {
	font-style: italic;
}

/* =========================================================
   15. SCROLL REVEAL
   ========================================================= */
.jy-js .jy-reveal {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity 0.8s var(--jy-ease), transform 0.8s var(--jy-ease);
}

.jy-js .jy-reveal.is-visible {
	opacity: 1;
	transform: none;
}

/* =========================================================
   16. KEYFRAMES
   ========================================================= */
@keyframes jy-slide-up {
	from { opacity: 0; transform: translateY(28px); }
	to { opacity: 1; transform: translateY(0); }
}

@keyframes jy-fade-in {
	from { opacity: 0; }
	to { opacity: 1; }
}

@keyframes jy-fade-up {
	from { opacity: 0; transform: translateY(16px); }
	to { opacity: 1; transform: none; }
}

@keyframes jy-draw-stroke {
	to { clip-path: inset(-20% -2% -20% 0); }
}

@keyframes jy-pop-in {
	0% { opacity: 0; transform: scale(0.4); }
	70% { opacity: 1; transform: scale(1.12); }
	100% { opacity: 1; transform: scale(1); }
}

@keyframes jy-callout-ring {
	0% { box-shadow: 0 0 0 0 rgba(200, 137, 46, 0.6); }
	70% { box-shadow: 0 0 0 9px rgba(200, 137, 46, 0); }
	100% { box-shadow: 0 0 0 9px rgba(200, 137, 46, 0); }
}

@keyframes jy-deal-in {
	from { opacity: 0; transform: translateX(140px) rotate(9deg); }
	to { opacity: 1; transform: translateX(0) rotate(0deg); }
}

@keyframes jy-cursor-blink {
	0%, 55% { opacity: 1; }
	56%, 100% { opacity: 0; }
}

@keyframes jy-grid-drift {
	from { transform: translate3d(0, 0, 0); }
	to { transform: translate3d(120px, 120px, 0); }
}

@keyframes jy-rule-draw {
	from { transform: scaleX(0); opacity: 0.2; }
	to { transform: scaleX(1); opacity: 1; }
}

@keyframes jy-ink-rise {
	0% { opacity: 0; transform: translateY(0.18em); filter: blur(10px); }
	60% { opacity: 0.85; filter: blur(1.5px); }
	100% { opacity: 1; transform: none; filter: blur(0); }
}

@keyframes jy-seal-stamp {
	0% { opacity: 0; transform: scale(1.9); }
	55% { opacity: 1; transform: scale(0.92); }
	100% { opacity: 1; transform: none; }
}

@keyframes jy-seal-turn {
	to { transform: rotate(360deg); }
}

@keyframes jy-panel-reveal {
	from { opacity: 0; transform: translateY(24px); clip-path: inset(0 0 100% 0); }
	to { opacity: 1; transform: none; clip-path: inset(-20px -20px -60px -20px); }
}

@keyframes jy-ruler-settle {
	0%, 100% { transform: translate(-50%, -50%) rotate(-2deg); }
	50% { transform: translate(-50%, calc(-50% - 4px)) rotate(-1.2deg); }
}

@keyframes jy-ink-drip {
	0% { background-position: 0 -16px, 0 0; }
	100% { background-position: 0 52px, 0 0; }
}

@keyframes jy-paper-grain {
	0% { background-position: 0 0; }
	20% { background-position: -18px 12px; }
	40% { background-position: 14px -20px; }
	60% { background-position: -8px -6px; }
	80% { background-position: 20px 16px; }
	100% { background-position: 0 0; }
}

/* =========================================================
   17. RESPONSIVE
   ========================================================= */
@media (max-width: 1180px) {
	body .jy-header__inner {
		flex-wrap: wrap !important;
		padding-top: 0.75rem;
		padding-bottom: 0.25rem;
	}

	body .jy-brand { order: 1; }
	.jy-style-switch { order: 2; }

	.jy-nav {
		order: 3;
		flex-basis: 100%;
		margin-left: -0.7rem !important;
	}

	.jy-brand__tagline { display: none; }

	html[data-style="paper"] .jy-header__inner {
		padding-top: 0;
		padding-bottom: 0;
	}

	html[data-style="paper"] .jy-nav {
		margin-left: 0 !important;
	}

	html[data-style="paper"] .jy-brand__tagline.jy-only-paper { display: block; }

	.jy-col-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }

	html[data-style="paper"] .jy-col-grid { gap: 0; }
	html[data-style="paper"] .jy-col-card { border-bottom: 1px solid var(--jy-line); }
	html[data-style="paper"] .jy-col-card:nth-child(3n+1) { border-left: 0; }
}

@media (max-width: 960px) {
	.jy-hero {
		align-content: start;
		min-height: 0;
		padding-top: 2.5rem;
		padding-bottom: 4rem;
	}

	.jy-hero__inner {
		grid-template-columns: minmax(0, 1fr);
		gap: 3rem;
	}

	.jy-hero__latest {
		max-width: 560px;
		padding-right: 0;
	}

	.jy-masthead__row {
		grid-template-columns: minmax(0, 1fr);
		justify-items: center;
	}

	.jy-masthead__flank { display: none; }

	.jy-cover__story {
		grid-template-columns: minmax(0, 1fr);
	}

	.jy-illus {
		width: 100%;
		max-width: 560px;
		margin-left: auto !important;
		margin-right: auto !important;
	}

	.jy-illus__frame { aspect-ratio: 4 / 3; }

	.jy-post-grid .wp-block-post-template.is-layout-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}

	.jy-about-teaser__inner,
	.jy-footer__inner {
		grid-template-columns: minmax(0, 1fr) !important;
	}

	.jy-footer__inner > * {
		border-right: 0;
		border-bottom: 1px solid var(--jy-line-strong);
	}

	.jy-footer__inner > *:last-child {
		border-bottom: 0;
	}

	html[data-style="paper"] .jy-footer__inner > * {
		border-bottom: 0;
	}
}

@media (max-width: 782px) {
	.jy-col-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jy-col-grid > :last-child:nth-child(odd) { grid-column: 1 / -1; }

	html[data-style="paper"] .jy-col-card { border-left: 0; }
	html[data-style="paper"] .jy-col-card:nth-child(even) { border-left: 1px solid var(--jy-line); }
	html[data-style="paper"] .jy-col-grid > :last-child:nth-child(odd) { border-left: 0; border-bottom: 0; }

	.jy-masthead__issue { letter-spacing: 0.18em; }
	.jy-masthead__tagline { letter-spacing: 0.16em; }

	.jy-seal {
		top: -30%;
		right: -14%;
	}

	.jy-cover { padding-bottom: 5rem; }

	.jy-cover__text {
		padding-left: 0;
		border-left: 0;
	}

	body .jy-cover__eyebrow { letter-spacing: 0.24em; }

	.wp-block-post-excerpt__more-link { letter-spacing: 0.22em; }

	body .jy-illus__caption { flex-direction: column; }
}

@media (max-width: 640px) {
	.jy-post-grid .wp-block-post-template.is-layout-grid {
		grid-template-columns: minmax(0, 1fr) !important;
	}
}

@media (max-width: 599px) {
	body .jy-header__inner {
		flex-wrap: nowrap !important;
		gap: 0.6rem;
		min-height: 64px;
		padding-top: 0;
		padding-bottom: 0;
	}

	body .jy-brand { order: 1; margin-right: auto !important; }
	.jy-style-switch { order: 2; }

	.jy-nav {
		order: 3;
		flex-basis: auto;
		margin-left: 0 !important;
	}

	.jy-nav .wp-block-navigation__responsive-container-open::after {
		display: none;
	}

	html[data-style="paper"] .jy-header__inner {
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas:
			"switch"
			"issue"
			"brand"
			"nav";
		gap: 0.75rem;
	}

	html[data-style="paper"] .jy-style-switch {
		justify-self: center;
	}

	html[data-style="paper"] .jy-issue-line {
		letter-spacing: 0.16em;
		white-space: normal;
	}

	html[data-style="paper"] .jy-nav .wp-block-navigation__responsive-container-open::after {
		display: inline;
	}
}

@media (max-width: 480px) {
	.jy-brand__mark {
		flex-basis: 36px;
		width: 36px;
		height: 36px;
		font-size: 0.8rem;
	}

	.jy-brand__name { font-size: 1.15rem; }

	.jy-style-switch { gap: 0.35rem !important; }
	.jy-style-switch__option .wp-block-button__link { padding: 0.28rem 0.5rem; }

	.jy-hero__standfirst { font-size: 1.0625rem; }

	.jy-hero__actions > .wp-block-button { flex: 1 1 auto; }
	.jy-hero__actions .wp-block-button__link { width: 100%; justify-content: center; }

	.jy-hero__title strong::before {
		width: 26px;
		height: 26px;
		font-size: 0.75rem;
		right: -0.8em;
	}

	.jy-pinned .wp-block-post-template > li:nth-child(1) { margin-right: 4%; }
	.jy-pinned .wp-block-post-template > li:nth-child(2) { margin-left: 5%; }
	.jy-pinned .wp-block-post-template > li:nth-child(3) { margin-left: 1%; margin-right: 3%; }

	.jy-pin-card { padding: 1.2rem 1.1rem 1rem 1.45rem; }
	.jy-pin-card__title { font-size: 1.0625rem; }

	.jy-title-block { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jy-title-block > :nth-child(2) { border-right: 0; }
	.jy-title-block > :nth-child(3) {
		grid-column: 1 / -1;
		border-top: 1px solid var(--jy-line);
	}

	.jy-col-grid { grid-template-columns: minmax(0, 1fr); }
	html[data-style="paper"] .jy-col-card:nth-child(even) { border-left: 0; }

	.jy-masthead__title { font-size: 3.9rem; }
	.jy-seal { width: 68px; right: -16%; }

	.jy-post-nav { grid-template-columns: minmax(0, 1fr); }
	.jy-post-nav .post-navigation-link-next { grid-column: auto; }

	.wp-block-search__inside-wrapper { flex-wrap: wrap; }
	.wp-block-search__button { flex: 1 1 100%; }
}

/* =========================================================
   18. REDUCED MOTION
   ========================================================= */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-delay: 0ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}

	.jy-hero::before,
	.jy-seal::before,
	.jy-illus__ruler,
	.jy-cover__cue a::after,
	html[data-style="paper"] body::before {
		animation: none !important;
	}

	.jy-hero__note::after { animation: none !important; opacity: 1; }

	.jy-hero__title strong::after {
		animation: none !important;
		clip-path: none;
	}

	.jy-masthead__title { filter: none !important; }

	.jy-js .jy-reveal {
		opacity: 1 !important;
		transform: none !important;
	}
}

/* =========================================================
   19. EDITOR — keep animated content visible while editing
   ========================================================= */
.editor-styles-wrapper .jy-reveal,
.editor-styles-wrapper .jy-hero__annotation,
.editor-styles-wrapper .jy-hero__dimension,
.editor-styles-wrapper .jy-hero__title,
.editor-styles-wrapper .jy-hero__title em,
.editor-styles-wrapper .jy-hero__title strong::before,
.editor-styles-wrapper .jy-hero__standfirst,
.editor-styles-wrapper .jy-hero__actions,
.editor-styles-wrapper .jy-hero__notes,
.editor-styles-wrapper .jy-hero__latest-label,
.editor-styles-wrapper .jy-pinned .wp-block-post-template > li,
.editor-styles-wrapper .jy-title-block,
.editor-styles-wrapper .jy-masthead__issue,
.editor-styles-wrapper .jy-masthead__row::before,
.editor-styles-wrapper .jy-masthead__row::after,
.editor-styles-wrapper .jy-masthead__flank,
.editor-styles-wrapper .jy-masthead__title,
.editor-styles-wrapper .jy-masthead__tagline,
.editor-styles-wrapper .jy-seal,
.editor-styles-wrapper .jy-cover__text > *,
.editor-styles-wrapper .jy-illus,
.editor-styles-wrapper .jy-cover__cue,
.editor-styles-wrapper .jy-page-head__title,
.editor-styles-wrapper .jy-page-head__desc,
.editor-styles-wrapper .jy-page-head .jy-kicker,
.editor-styles-wrapper .jy-article-meta {
	opacity: 1 !important;
	transform: none !important;
	filter: none !important;
	clip-path: none !important;
	animation: none !important;
	transition: none !important;
}

.editor-styles-wrapper .jy-seal__stamp {
	transform: rotate(-10deg) !important;
}

.editor-styles-wrapper .jy-hero__title strong::after {
	clip-path: none !important;
	animation: none !important;
}

/* Paged homepage (/page/2/ …): skip the hero, go straight to the list */
.home.paged .jy-hero,
.home.paged .jy-cover {
	display: none !important;
}

/* =========================================================
   ARTICLE STARTER BLOCKS — lead / key point / callout
   (used by patterns/post-*.php; shared by front end + editor)
   ========================================================= */
:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .jy-lead {
	font-size: 1.1875rem;
	line-height: 1.85;
	color: var(--wp--preset--color--muted);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .jy-keypoint {
	margin-block: 1.8em;
	padding: 1.1rem 1.4rem;
	border: 2px solid var(--wp--preset--color--primary);
	border-radius: var(--jy-radius);
	background: var(--wp--preset--color--surface);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.25rem;
	line-height: 1.6;
	color: var(--wp--preset--color--contrast);
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .jy-callout {
	margin-block: 1.8em;
	padding: 1.1rem 1.4rem;
	border: 1.5px dashed var(--wp--preset--color--accent-text);
	border-radius: var(--jy-radius);
	background: color-mix(in srgb, var(--wp--preset--color--accent-soft) 26%, var(--wp--preset--color--surface));
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .jy-callout > * {
	margin-block: 0;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .jy-callout > * + * {
	margin-block-start: 0.5em;
}

:is(.jy-content, :is(.post-type-post, .post-type-page) .is-root-container) .jy-callout__label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.8125rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--accent-text);
}

html[data-style="paper"] .jy-content .jy-keypoint {
	border: 0;
	border-top: 2px solid var(--wp--preset--color--contrast);
	border-bottom: 1px solid var(--jy-line-strong);
	border-radius: 0;
	background: none;
	padding-inline: 0;
	text-align: center;
}

html[data-style="paper"] .jy-content .jy-callout {
	border: 1px solid var(--jy-line-strong);
	border-left: 3px solid var(--wp--preset--color--accent);
	border-radius: 0;
	background: none;
}

html[data-style="paper"] .jy-content .jy-callout__label {
	font-family: var(--wp--preset--font-family--serif-cjk);
	font-weight: 700;
	letter-spacing: 0.2em;
}
