/*
 * main.css —— Base 主题主样式
 *
 * 原则：
 * - 所有颜色、间距、圆角、阴影、过渡均通过 var(--...) 引用 tokens.css；
 *   本文件不硬编码任何色值或间距值。
 * - 移动端优先，响应式断点固定为 768px 与 1024px（CSS 变量不能用于 media query）。
 * - 语义化、结构清晰、注释充分，便于 AI 装修与人工维护。
 */

/* ============================================================
 * 1. 基础重置与排版
 * ============================================================ */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
}

body {
	margin: 0;
	background-color: var(--color-bg);
	color: var(--color-text);
	font-family: var(--font-sans);
	font-size: var(--font-size-base);
	line-height: var(--line-height-base);
	-webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 0 0 var(--space-4);
	font-family: var(--font-heading);
	line-height: var(--line-height-heading);
	color: var(--color-text);
	font-weight: var(--font-weight-bold);
}

h1 { font-size: var(--fs-3xl); }
h2 { font-size: var(--fs-2xl); }
h3 { font-size: var(--fs-xl); }
h4 { font-size: var(--fs-lg); }
h5,
h6 { font-size: var(--fs-base); }

p {
	margin: 0 0 var(--space-4);
}

a {
	color: var(--color-link);
	text-decoration: none;
	transition: color var(--transition);
}

a:hover,
a:focus {
	color: var(--color-primary-hover);
	text-decoration: underline;
}

img {
	max-width: 100%;
	height: auto;
	display: block;
}

ul,
ol {
	margin: 0 0 var(--space-4);
	padding-left: var(--space-5);
}

blockquote {
	margin: 0 0 var(--space-5);
	padding: var(--space-4) var(--space-5);
	border-left: var(--space-1) solid var(--color-primary);
	background-color: var(--color-surface);
	color: var(--color-text-muted);
}

code,
pre {
	font-family: var(--font-mono);
	font-size: var(--fs-sm);
}

pre {
	padding: var(--space-5);
	background-color: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md);
	overflow-x: auto;
}

hr {
	border: 0;
	border-top: 1px solid var(--color-border);
	margin: var(--space-6) 0;
}

table {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: var(--space-5);
}

th,
td {
	padding: var(--space-3);
	border: 1px solid var(--color-border);
	text-align: left;
}

/* ============================================================
 * 2. 布局工具类
 * ============================================================ */
.container {
	width: 100%;
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: var(--space-4);
}

/* 无障碍：仅供屏幕阅读器 */
.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	padding: var(--space-2) var(--space-4);
	background-color: var(--color-primary);
	color: var(--color-primary-contrast);
}

.skip-link:focus {
	left: var(--space-4);
	top: var(--space-2);
}

/* ============================================================
 * 3. 页头
 * ============================================================ */
.site-header {
	background-color: var(--color-bg);
	border-bottom: 1px solid var(--color-border);
}

.site-header__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-4);
	min-height: var(--header-height);
}

.site-branding {
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.site-title {
	margin: 0;
	font-size: var(--fs-xl);
	line-height: var(--line-height-heading);
}

.site-title a {
	color: var(--color-text);
}

.site-title a:hover {
	color: var(--color-primary);
	text-decoration: none;
}

.site-description {
	margin: 0;
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.custom-logo {
	max-height: var(--space-8);
	width: auto;
}

/* 主导航 */
.main-navigation {
	margin-left: auto;
}

.main-navigation ul {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-4);
	margin: 0;
	padding: 0;
	list-style: none;
}

.main-navigation a {
	display: block;
	padding: var(--space-2) 0;
	color: var(--color-text);
	font-weight: var(--font-weight-medium);
}

.main-navigation a:hover,
.main-navigation .current-menu-item > a {
	color: var(--color-primary);
	text-decoration: none;
}

/* 下拉子菜单 */
.main-navigation .sub-menu {
	display: none;
	position: absolute;
	min-width: 200px;
	padding: var(--space-2) 0;
	margin: 0;
	background-color: var(--color-bg);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-md);
	z-index: 50;
}

.main-navigation li {
	position: relative;
}

.main-navigation li:hover > .sub-menu,
.main-navigation li:focus-within > .sub-menu {
	display: block;
}

.main-navigation .sub-menu a {
	padding: var(--space-2) var(--space-4);
}

/* 移动端菜单按钮 */
.menu-toggle {
	display: none;
	margin-left: auto;
	width: 44px;
	height: 44px;
	padding: 0;
	background-color: transparent;
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	cursor: pointer;
}

.menu-toggle__bar,
.menu-toggle__bar::before,
.menu-toggle__bar::after {
	display: block;
	width: 22px;
	height: 2px;
	margin: 0 auto;
	background-color: var(--color-text);
	transition: transform var(--transition);
}

.menu-toggle__bar {
	position: relative;
}

.menu-toggle__bar::before,
.menu-toggle__bar::after {
	content: "";
	position: absolute;
	left: 0;
}

.menu-toggle__bar::before { top: -7px; }
.menu-toggle__bar::after { top: 7px; }

/* 展开态把三条线变成 X */
.menu-toggle[aria-expanded="true"] .menu-toggle__bar {
	background-color: transparent;
}

.menu-toggle[aria-expanded="true"] .menu-toggle__bar::before {
	transform: translateY(7px) rotate(45deg);
}

.menu-toggle[aria-expanded="true"] .menu-toggle__bar::after {
	transform: translateY(-7px) rotate(-45deg);
}

/* 页头搜索 */
.site-search {
	flex-basis: 240px;
	max-width: 100%;
}

/* ============================================================
 * 4. 内容区与侧边栏
 * ============================================================ */
.site-content {
	padding-block: var(--space-7);
}

.content-area {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--space-7);
}

.site-main {
	min-width: 0; /* 防止长内容撑破网格 */
}

/* 有侧边栏时两栏布局 */
.has-sidebar .content-area {
	grid-template-columns: minmax(0, 1fr) var(--sidebar-width);
}

/* ============================================================
 * 5. 页面标题与分页
 * ============================================================ */
.page-header {
	margin-bottom: var(--space-6);
	padding-bottom: var(--space-4);
	border-bottom: 1px solid var(--color-border);
}

.page-title {
	margin: 0;
	font-size: var(--fs-2xl);
}

.archive-description {
	margin: var(--space-2) 0 0;
	color: var(--color-text-muted);
}

.pagination,
.navigation.posts-navigation,
.navigation.comment-navigation {
	margin-top: var(--space-6);
}

.pagination .nav-links,
.posts-navigation .nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2);
	justify-content: center;
}

.page-numbers {
	display: inline-block;
	min-width: 40px;
	padding: var(--space-2) var(--space-3);
	text-align: center;
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	color: var(--color-text);
}

.page-numbers.current,
.page-numbers:hover {
	background-color: var(--color-primary);
	border-color: var(--color-primary);
	color: var(--color-primary-contrast);
	text-decoration: none;
}

/* ============================================================
 * 6. 文章卡片（列表）
 * ============================================================ */
.post-list {
	display: grid;
	gap: var(--space-6);
}

.post-card {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--space-4);
	background-color: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md);
	overflow: hidden;
	box-shadow: var(--shadow-sm);
	transition: box-shadow var(--transition), transform var(--transition);
}

.post-card:hover {
	box-shadow: var(--shadow-md);
	transform: translateY(-2px);
}

.post-card__thumb img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.post-card__body {
	padding: var(--space-5);
}

.entry-title {
	margin: 0 0 var(--space-3);
	font-size: var(--fs-xl);
}

.entry-title a {
	color: var(--color-text);
}

.entry-title a:hover {
	color: var(--color-primary);
	text-decoration: none;
}

.entry-meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-4);
	margin-bottom: var(--space-3);
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.entry-summary p:last-child {
	margin-bottom: 0;
}

.entry-more {
	display: inline-block;
	margin-top: var(--space-3);
	font-weight: var(--font-weight-medium);
	color: var(--color-primary);
}

/* ============================================================
 * 7. 单篇文章 / 页面正文
 * ============================================================ */
.entry-header {
	margin-bottom: var(--space-6);
}

.entry-thumbnail {
	margin-bottom: var(--space-6);
	border-radius: var(--radius-md);
	overflow: hidden;
}

.entry-content {
	max-width: var(--content-max);
}

.entry-content > * {
	margin-bottom: var(--space-4);
}

.entry-content a {
	text-decoration: underline;
}

.entry-content img {
	border-radius: var(--radius-sm);
}

/* 对齐选项 */
.entry-content .alignleft {
	float: left;
	margin: 0 var(--space-5) var(--space-4) 0;
}

.entry-content .alignright {
	float: right;
	margin: 0 0 var(--space-4) var(--space-5);
}

.entry-content .aligncenter {
	margin-inline: auto;
}

.entry-content .alignwide {
	max-width: 100%;
}

.entry-content .wp-caption-text,
.entry-content figcaption {
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
	text-align: center;
}

.entry-footer {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-4);
	align-items: center;
	margin-top: var(--space-6);
	padding-top: var(--space-5);
	border-top: 1px solid var(--color-border);
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.entry-tags a {
	display: inline-block;
	margin-right: var(--space-2);
	padding: var(--space-1) var(--space-3);
	background-color: var(--color-surface-alt);
	border-radius: var(--radius-full);
	color: var(--color-text-muted);
	font-size: var(--fs-sm);
}

.entry-tags a:hover {
	background-color: var(--color-primary);
	color: var(--color-primary-contrast);
	text-decoration: none;
}

/* 作者简介 */
.author-bio {
	margin-top: var(--space-6);
	padding: var(--space-5);
	background-color: var(--color-surface);
	border-radius: var(--radius-md);
}

.author-bio .author-name {
	margin: 0 0 var(--space-2);
	font-size: var(--fs-lg);
}

/* 文章间导航 */
.post-navigation {
	margin-top: var(--space-6);
	border-top: 1px solid var(--color-border);
	border-bottom: 1px solid var(--color-border);
}

.post-navigation .nav-links {
	display: flex;
	justify-content: space-between;
	gap: var(--space-4);
}

.post-navigation .nav-previous,
.post-navigation .nav-next {
	padding: var(--space-5) 0;
	max-width: 48%;
}

.post-navigation a {
	display: block;
	color: var(--color-text);
}

.post-navigation .meta-nav {
	display: block;
	margin-bottom: var(--space-1);
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

/* ============================================================
 * 8. 侧边栏 / 小工具
 * ============================================================ */
.widget-area {
	font-size: var(--fs-base);
}

.widget {
	margin-bottom: var(--space-6);
	padding: var(--space-5);
	background-color: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md);
}

.widget__title,
.widget .widget-title {
	margin: 0 0 var(--space-4);
	padding-bottom: var(--space-3);
	border-bottom: 1px solid var(--color-border);
	font-size: var(--fs-lg);
}

.widget ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.widget li {
	padding: var(--space-2) 0;
	border-bottom: 1px dashed var(--color-border);
}

.widget li:last-child {
	border-bottom: 0;
}

.widget a {
	color: var(--color-text);
}

.widget a:hover {
	color: var(--color-primary);
}

/* ============================================================
 * 9. 表单与搜索
 * ============================================================ */
input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
textarea,
select {
	width: 100%;
	padding: var(--space-3) var(--space-4);
	background-color: var(--color-bg);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	color: var(--color-text);
	font-family: inherit;
	font-size: var(--fs-base);
	transition: border-color var(--transition), box-shadow var(--transition);
}

input:focus,
textarea:focus,
select:focus {
	outline: none;
	border-color: var(--color-primary);
	box-shadow: 0 0 0 3px var(--color-focus-ring);
}

button,
input[type="submit"],
input[type="button"],
.wp-block-button__link {
	display: inline-block;
	padding: var(--space-3) var(--space-5);
	background-color: var(--color-primary);
	border: 1px solid var(--color-primary);
	border-radius: var(--radius-sm);
	color: var(--color-primary-contrast);
	font-family: inherit;
	font-size: var(--fs-base);
	font-weight: var(--font-weight-medium);
	cursor: pointer;
	transition: background-color var(--transition), border-color var(--transition);
}

button:hover,
input[type="submit"]:hover,
input[type="button"]:hover,
.wp-block-button__link:hover {
	background-color: var(--color-primary-hover);
	border-color: var(--color-primary-hover);
	color: var(--color-primary-contrast);
}

/* 搜索表单 */
.search-form {
	display: flex;
	gap: var(--space-2);
}

.search-form__field {
	flex: 1 1 auto;
}

.search-form__submit {
	flex: 0 0 auto;
}

/* ============================================================
 * 10. 评论
 * ============================================================ */
.comments-area {
	margin-top: var(--space-7);
}

.comments-title,
.comment-reply-title {
	font-size: var(--fs-xl);
}

.comment-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.comment-list .children {
	margin: 0;
	padding-left: var(--space-5);
	list-style: none;
}

.comment-body {
	padding: var(--space-5);
	margin-bottom: var(--space-4);
	background-color: var(--color-surface);
	border-radius: var(--radius-md);
}

.comment-meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-3);
	align-items: center;
	margin-bottom: var(--space-3);
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.comment-author img {
	border-radius: var(--radius-full);
}

.comment-content {
	margin-bottom: var(--space-3);
}

.comment-reply-link,
.comment-edit-link {
	font-size: var(--fs-sm);
}

.comment-respond {
	margin-top: var(--space-6);
}

.comment-form p {
	margin-bottom: var(--space-4);
}

.comment-form label {
	display: block;
	margin-bottom: var(--space-2);
	font-size: var(--fs-sm);
	color: var(--color-text-muted);
}

.comment-form-cookies-consent {
	display: flex;
	align-items: center;
	gap: var(--space-2);
}

.comment-form-cookies-consent input {
	width: auto;
}

.comment-form-cookies-consent label {
	margin: 0;
}

/* ============================================================
 * 11. 404 与空状态
 * ============================================================ */
.error-404,
.no-results,
.search-empty {
	max-width: var(--content-max);
	padding: var(--space-6);
	background-color: var(--color-surface);
	border-radius: var(--radius-md);
	text-align: center;
}

.error-404 .page-title {
	font-size: calc(var(--fs-3xl) * 1.6);
	color: var(--color-primary);
}

/* ============================================================
 * 12. 页脚
 * ============================================================ */
.site-footer {
	background-color: var(--color-surface-alt);
	border-top: 1px solid var(--color-border);
	color: var(--color-text-muted);
}

.site-footer__inner {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-4);
	justify-content: space-between;
	align-items: center;
	padding-block: var(--space-6);
}

.footer-menu {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-4);
	margin: 0;
	padding: 0;
	list-style: none;
}

.footer-menu a {
	color: var(--color-text-muted);
}

.footer-menu a:hover {
	color: var(--color-primary);
}

.site-info {
	margin: 0;
	font-size: var(--fs-sm);
}

/* ============================================================
 * 13. WooCommerce（轻量适配，仅覆盖必要部分）
 * ============================================================ */
.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--space-5);
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce ul.products li.product {
	margin: 0;
	padding: var(--space-4);
	background-color: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md);
	text-align: center;
}

.woocommerce ul.products li.product img {
	border-radius: var(--radius-sm);
	margin-bottom: var(--space-3);
}

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-size: var(--fs-lg);
	padding: 0;
}

.woocommerce .price {
	color: var(--color-primary);
	font-weight: var(--font-weight-bold);
}

.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	background-color: var(--color-primary);
	color: var(--color-primary-contrast);
	border-radius: var(--radius-sm);
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover {
	background-color: var(--color-primary-hover);
	color: var(--color-primary-contrast);
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	background-color: var(--color-surface);
	border-top-color: var(--color-primary);
}

.woocommerce-error {
	border-top-color: var(--color-danger);
}

.woocommerce-message.success,
.woocommerce-message {
	border-top-color: var(--color-success);
}

/* ============================================================
 * 14. 响应式
 * ============================================================ */
/* 平板及以上 */
@media (min-width: 768px) {
	.post-card {
		grid-template-columns: 320px 1fr;
	}

	.post-card__thumb img {
		height: 100%;
		aspect-ratio: auto;
	}

	.post-card__body {
		padding: var(--space-6);
	}
}

/* 桌面 */
@media (min-width: 1024px) {
	.container {
		padding-inline: var(--space-5);
	}
}

/* 移动端：折叠导航 */
@media (max-width: 767px) {
	.menu-toggle {
		display: block;
	}

	.main-navigation {
		flex-basis: 100%;
		margin-left: 0;
		display: none;
	}

	.main-navigation.is-open {
		display: block;
	}

	.main-navigation ul {
		flex-direction: column;
		gap: 0;
		border-top: 1px solid var(--color-border);
	}

	.main-navigation li {
		border-bottom: 1px solid var(--color-border);
	}

	.main-navigation .sub-menu {
		position: static;
		display: block;
		border: 0;
		box-shadow: none;
		padding-left: var(--space-4);
	}

	.site-search {
		flex-basis: 100%;
	}

	.site-footer__inner {
		flex-direction: column;
		text-align: center;
	}
}
