/* ============ 设计变量 ============ */
:root {
	--red: #c01100;
	--red-2: #c01100;
	--red-deep: #c01100;
	--red-ink: #4a0406;
	--gold: #c01100;
	--gold-2: #f4e0b0;
	--ink: #1d1614;
	--ink-2: #5b514b;
	--paper: #f7f2e9;
	--paper-2: #fffdf9;
	--line: rgba(28, 22, 20, .12);
	--wrap: 1200px;
	--r: 14px;
	--shadow: 0 10px 30px rgba(70, 10, 10, .10);
	--shadow-lg: 0 22px 60px rgba(70, 10, 10, .20);
	--ease: cubic-bezier(.22, .61, .36, 1);
	--ease-out: cubic-bezier(.16, 1, .3, 1);
}

*,
*::before,
*::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0
}

html {
	-webkit-tap-highlight-color: transparent;
	scroll-behavior: smooth;
	scroll-padding-top: 20px
}

body {
	font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, -apple-system, "Segoe UI", sans-serif;
	background: var(--paper);
	color: var(--ink);
	line-height: 1.6;
	overflow-x: hidden;
}

img {
	display: block;
	max-width: 100%;
	border: 0
}

a {
	color: inherit;
	text-decoration: none
}

button {
	font: inherit;
	color: inherit;
	background: none;
	border: 0;
	cursor: pointer
}

ul,
ol {
	list-style: none
}

::selection {
	background: var(--red);
	color: #fff
}

/* 键盘焦点：浅底用红环，深底（导航/头图/图片卡）用金环 */
:focus-visible {
	outline: 3px solid var(--red-2);
	outline-offset: 3px;
	border-radius: 6px
}

.slider :focus-visible,
.foot :focus-visible,
.hcard:focus-visible,
.stage:focus-visible,
.vthumb:focus-visible,
.figure:focus-visible,
.bcard:focus-visible,
.totop:focus-visible {
	outline-color: var(--gold-2);
	outline-offset: 2px
}

/* 跳到主要内容（仅键盘聚焦时出现） */
.skip {
	position: fixed;
	left: 50%;
	top: -120px;
	translate: -50% 0;
	z-index: 200;
	padding: 12px 24px;
	border-radius: 0 0 12px 12px;
	font-weight: 700;
	letter-spacing: .08em;
	color: #fff;
	background: var(--red);
	box-shadow: 0 10px 26px rgba(70, 10, 10, .4);
	transition: top .3s var(--ease)
}

.skip:focus {
	top: 0
}

.wrap {
	width: min(var(--wrap), calc(100% - 40px));
	margin-inline: auto
}

/* ============ 滚动进度 ============ */
.progress {
	position: fixed;
	inset: 0 auto auto 0;
	height: 3px;
	width: 0;
	z-index: 120;
	background: linear-gradient(90deg, var(--red), var(--gold));
	box-shadow: 0 0 12px rgba(214, 34, 21, .6)
}

/* ============ 一 · 头图（原图直出，无任何叠加效果） ============ */
.hero {
	position: relative;
	background: var(--red-deep);
	font-size: 0;
	line-height: 0
}

.hero__img {
	display: block;
	width: 100%;
	height: auto
}

/* ============ 二 · 头条 ============ */
.headline {
	position: relative;
	margin: 0 auto
}

.headline__box {
	position: relative;
	padding: 46px 40px;
	text-align: center;
	border-radius: var(--r);
/* 	background:
		radial-gradient(120% 160% at 50% -30%, rgba(255, 214, 140, .22), transparent 60%),
		linear-gradient(135deg, #8f0d10, #c31d1a 45%, #8f0d10);
	box-shadow: var(--shadow-lg); */
	overflow: hidden
}

.headline__box::before,
.headline__box::after {
	content: "";
	position: absolute;
	width: 180px;
	height: 180px;
	border: 1px solid rgba(244, 224, 176, .35);
	border-radius: 6px;
	pointer-events: none
}

.headline__box::before {
	top: -90px;
	left: -60px;
	transform: rotate(18deg)
}

.headline__box::after {
	bottom: -90px;
	right: -60px;
	transform: rotate(18deg)
}

.headline__shine {
	position: absolute;
	top: 0;
	bottom: 0;
	width: 120px;
	pointer-events: none;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .22), transparent);
	filter: blur(6px);
	animation: shine 6s 1s var(--ease) infinite
}

@keyframes shine {
	0% {
		left: -20%
	}

	55%,
	100% {
		left: 120%
	}
}

.headline__tag {
	display: inline-block;
	padding: 5px 16px;
	border-radius: 999px;
	font-size: 13px;
	letter-spacing: .24em;
	color: #5c0508;
	background: linear-gradient(180deg, var(--gold-2), var(--gold));
	font-weight: 700;
	margin-bottom: 20px
}

.headline__box a {
	display: block;
	font-size: clamp(22px, 3.2vw, 42px);
	font-weight: 900;
	line-height: 1.42;
	color: #ffeec4;
	letter-spacing: .02em;
	text-shadow: 0 3px 16px rgba(60, 0, 0, .45);
	transition: color .35s
}

.headline__box a:hover {
	color: #fff
}

.headline__box a u {
	color:#c01100;
	text-decoration: none;
	    background: linear-gradient(90deg, #c01100, #c01100) 0 100% / 0 2px no-repeat;
	transition: background-size .5s var(--ease)
}

.headline__box a:hover u {
	background-size: 100% 2px
}

/* ============ 通用 · 栏目标题 ============ */
.sec {
	padding: 10px 0 66px
}

.sec-head {
	text-align: center;
	margin-bottom: 42px
}

.sec-head .zh {
	display: inline-flex;
	align-items: center;
	gap: 20px;
	font-size: clamp(28px, 4vw, 44px);
	font-weight: 900;
	letter-spacing: .14em;
	text-indent: .14em;
	background: linear-gradient(180deg, #c9231d 0%, #8a0d10 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent
}

.sec-head .zh i {
	display: block;
	width: clamp(40px, 9vw, 120px);
	height: 2px;
	flex: none;
	background: linear-gradient(90deg, transparent, var(--red));
	border-radius: 2px
}

.sec-head .zh i:last-child {
	background: linear-gradient(90deg, var(--red), transparent)
}

.sec-head .en {
	margin-top: 10px;
	font-size: 12px;
	letter-spacing: .4em;
	text-indent: .4em;
	color: #8c6259;
	text-transform: uppercase
}

/* 进入动画 */
.rv {
	opacity: 0;
	transform: translateY(34px);
	transition: opacity .8s var(--ease-out), transform .8s var(--ease-out)
}

.rv.in {
	opacity: 1;
	transform: none
}

.rv[data-d="1"] {
	transition-delay: .09s
}

.rv[data-d="2"] {
	transition-delay: .18s
}

.rv[data-d="3"] {
	transition-delay: .27s
}

.rv[data-d="4"] {
	transition-delay: .36s
}

/* ============ 三 · 焦点轮播 + 要闻列表 ============ */
.focus {
	display: grid;
	grid-template-columns: minmax(0, 790fr) minmax(0, 390fr);
	gap: 20px;
	align-items: stretch
}

.slider {
	position: relative;
	border-radius: var(--r);
	overflow: hidden;
	background: #2a0203;
	box-shadow: var(--shadow-lg);
	aspect-ratio: 790/445;
	cursor: grab;
	touch-action: pan-y
}

.slider.dragging {
	cursor: grabbing
}

.slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	visibility: hidden;
	transition: opacity .9s var(--ease), transform .9s var(--ease);
	transform: scale(1.04)
}

.slide.on {
	opacity: 1;
	visibility: visible;
	transform: scale(1)
}

.slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1);
	transition: transform 6s linear
}

.slide.on img {
	transform: scale(1.09)
}

.slide__mask {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 45%, rgba(30, 0, 0, .82))
}

.slide__cap {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 26px 190px 26px 26px;
	color: #fff
}

.slide__cap b {
	display: block;
	font-size: clamp(16px, 1.7vw, 22px);
	font-weight: 700;
	line-height: 1.5;
	transform: translateY(16px);
	opacity: 0;
	transition: .7s .18s var(--ease-out)
}

.slide.on .slide__cap b {
	transform: none;
	opacity: 1
}

.slide__cap em {
	display: inline-block;
	font-style: normal;
	font-size: 12px;
	letter-spacing: .2em;
	color: var(--gold-2);
	margin-bottom: 10px;
	padding: 3px 10px;
	border: 1px solid rgba(217, 180, 106, .5);
	border-radius: 4px;
	transform: translateY(16px);
	opacity: 0;
	transition: .7s .08s var(--ease-out)
}

.slide.on .slide__cap em {
	transform: none;
	opacity: 1
}

.slider__dots {
	position: absolute;
	right: 22px;
	bottom: 26px;
	display: flex;
	gap: 10px;
	z-index: 4
}

.slider__dots button {
	position: relative;
	width: 34px;
	height: 4px;
	border-radius: 4px;
	background: rgba(255, 255, 255, .35);
	overflow: hidden;
	transition: width .4s var(--ease), background .3s
}

.slider__dots button::after {
	content: "";
	position: absolute;
	inset: 0;
	width: 0;
	background: linear-gradient(90deg, var(--gold), #fff)
}

.slider__dots button.on {
	width: 64px;
	background: rgba(255, 255, 255, .25)
}

.slider__dots button.on::after {
	animation: fill var(--dur, 5s) linear forwards
}

.slider.paused .slider__dots button.on::after {
	animation-play-state: paused
}

@keyframes fill {
	to {
		width: 100%
	}
}

.slider__arrow {
	position: absolute;
	top: 50%;
	translate: 0 -50%;
	z-index: 5;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	color: #fff;
	background: rgba(20, 0, 0, .35);
	backdrop-filter: blur(6px);
	border: 1px solid rgba(255, 255, 255, .22);
	opacity: 0;
	transition: .35s var(--ease)
}

.slider__arrow.prev {
	left: 18px;
	transform: translateX(-12px)
}

.slider__arrow.next {
	right: 18px;
	transform: translateX(12px)
}

.slider:hover .slider__arrow {
	opacity: 1;
	transform: none
}

.slider__arrow:hover {
	background: var(--red-2);
	border-color: transparent;
	scale: 1.08
}

.slider__arrow svg {
	width: 20px;
	height: 20px
}

.newslist {
	display: flex;
	flex-direction: column;
	gap: 14px
}

.newslist a {
	position: relative;
	flex: 1;
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 16px 18px 16px 20px;
	background: var(--paper-2);
	border-radius: 10px;
	border: 1px solid var(--line);
	overflow: hidden;
	font-size: 17px;
	line-height: 1.55;
	font-weight: 500;
	transition: transform .45s var(--ease), box-shadow .45s var(--ease), color .35s, border-color .35s
}

.newslist a::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 4px;
	background: var(--red-2);
	transform: scaleY(.35);
	transform-origin: center;
	transition: transform .45s var(--ease)
}

.newslist a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	background: linear-gradient(90deg, rgba(214, 34, 21, .14), rgba(244, 224, 176, .16) 55%, transparent);
	opacity: 0;
	transition: opacity .45s var(--ease)
}

.newslist a span {
	position: relative;
	z-index: 1;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden
}

.newslist a .idx {
	position: relative;
	z-index: 1;
	flex: none;
	font-family: Georgia, serif;
	font-size: 22px;
	font-weight: 700;
	color: #e0cfae;
	transition: color .35s
}

.newslist a:hover {
	transform: translateX(6px);
	box-shadow: var(--shadow);
	color: var(--red);
	border-color: rgba(182, 22, 26, .28)
}

.newslist a:hover::before {
	transform: scaleY(1)
}

.newslist a:hover::after {
	opacity: 1
}

.newslist a:hover .idx {
	color: var(--red-2)
}

/* ============ 四 · 缅怀先烈 ============ */
.memo {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 30px 40px
}

.memo__col {
	display: flex;
	flex-direction: column;
	gap: 22px
}

.memo__top {
	display: grid;
	grid-template-columns: minmax(0, 250fr) minmax(0, 320fr);
	gap: 22px;
	align-items: start
}

.memo__thumb {
	position: relative;
	border-radius: 12px;
	overflow: hidden;
	aspect-ratio: 250/148;
	background: #eee;
	box-shadow: var(--shadow)
}

.memo__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .8s var(--ease)
}

.memo__thumb::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 40%, rgba(120, 10, 10, .45));
	opacity: 0;
	transition: opacity .5s
}

.memo__item:hover .memo__thumb img {
	transform: scale(1.09)
}

.memo__item:hover .memo__thumb::after {
	opacity: 1
}

.memo__item h3 {
	font-size: 19px;
	font-weight: 800;
	line-height: 1.5;
	margin-bottom: 10px;
	transition: color .35s;
	color: var(--red-2)
}

.memo__item:hover h3 {
	color: var(--gold)
}

.memo__item p {
	font-size: 14.5px;
	color: var(--ink-2);
	line-height: 1.85;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden
}

.memo__more {
	color: var(--red-2);
	font-weight: 700;
	white-space: nowrap
}

.memo__more:hover {
	text-decoration: underline
}

.memo__bottom {
	padding-top: 22px;
	border-top: 1px dashed rgba(28, 22, 20, .22);
	position: relative
}

.memo__bottom::before {
	content: "";
	position: absolute;
	top: -1px;
	left: 0;
	width: 0;
	height: 1px;
	background: var(--red-2);
	transition: width .6s var(--ease)
}

.memo__bottom:hover::before {
	width: 100%
}

.memo__bottom p {
	-webkit-line-clamp: 4
}

/* ============ 五 · 抗日英雄谱（横向卡片轮播） ============ */
.heroes {
	position: relative
}

.heroes__view {
	overflow: hidden;
	/* padding: 6px 0 10px; */
	cursor: grab;
	touch-action: pan-y
}

.heroes__view.dragging {
	cursor: grabbing
}

.heroes__track {
	display: flex;
	gap: 24px;
	transition: transform .75s var(--ease-out);
	will-change: transform
}

.hcard {
	position: relative;
	flex: none;
	width: var(--cw, 270px);
	aspect-ratio: 270/490;
	border-radius: 16px;
	overflow: hidden;
	background: #2b0405;
	box-shadow: var(--shadow);
	transition: transform .6s var(--ease), box-shadow .6s var(--ease)
}

.hcard img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1s var(--ease), filter .6s
}

.hcard::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 32%, rgba(150, 12, 12, .72) 78%, rgba(120, 6, 8, .94));
	transition: opacity .5s
}

.hcard__txt {
	position: absolute;
	inset: auto 0 0;
	padding: 22px 20px;
	z-index: 2;
	color: #fff3d8
}

.hcard__txt em {
	display: block;
	font-style: normal;
	font-family: Georgia, serif;
	font-size: 13px;
	letter-spacing: .22em;
	color: var(--gold);
	margin-bottom: 8px
}

.hcard__txt b {
	display: block;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.6;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	transition: -webkit-line-clamp .3s
}

.hcard__line {
	position: absolute;
	left: 20px;
	bottom: 14px;
	width: 0;
	height: 2px;
	background: var(--gold);
	transition: width .6s var(--ease);
	z-index: 3
}

.hcard:hover {
	transform: translateY(-12px);
	box-shadow: var(--shadow-lg)
}

.hcard:hover img {
	transform: scale(1.08)
}

.hcard:hover .hcard__line {
	width: 64px
}

.hcard:hover .hcard__txt b {
	-webkit-line-clamp: 5
}

.cbtn {
	width: 50px;
	height: 50px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	color: #fff;
	background: linear-gradient(135deg, #bc192a, #ff4a3d);
	box-shadow: 0 8px 22px rgba(182, 22, 26, .36);
	transition: transform .35s var(--ease), box-shadow .35s, opacity .3s
}

.cbtn:hover {
	transform: scale(1.1) rotate(4deg);
	box-shadow: 0 12px 30px rgba(182, 22, 26, .5)
}

.cbtn:active {
	transform: scale(.94)
}

.cbtn[disabled] {
	opacity: .3;
	pointer-events: none
}

.cbtn svg {
	width: 20px;
	height: 20px
}

.heroes__nav {
	position: absolute;
	top: 50%;
	translate: 0 -50%;
	z-index: 6
}

.heroes__nav.prev {
	left: -26px
}

.heroes__nav.next {
	right: -26px
}

.heroes__bar {
	margin: 26px auto 0;
	width: min(420px, 60%);
	height: 3px;
	border-radius: 3px;
	background: rgba(28, 22, 20, .10);
	overflow: hidden
}

.heroes__bar i {
	display: block;
	height: 100%;
	width: 30%;
	border-radius: 3px;
	background: linear-gradient(90deg, var(--red-2), var(--gold));
	transition: transform .7s var(--ease-out), width .7s var(--ease-out);
	transform-origin: left
}

/* ============ 六 · 这片土地记得你 ============ */
.land {
	position: relative;
	padding-bottom: 90px;
	background: bottom center/1920px auto no-repeat;
	background-image: url("../images/land-bg.jpg")
}

.land__top {
	display: grid;
	grid-template-columns: minmax(0, 585fr) minmax(0, 580fr);
	gap: 35px;
	margin-bottom: 30px
}

.linklist {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	min-width: 0
}

.linklist a {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 0 10px 0 26px;
	height: 65px;
	min-width: 0;
	font-size: 17px;
	border-bottom: 1px solid rgba(28, 22, 20, .14);
	overflow: hidden;
	transition: color .35s, padding .4s var(--ease), font-weight .2s
}

.linklist a::before {
	content: "";
	position: absolute;
	left: 6px;
	top: 50%;
	translate: 0 -50%;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--red-2);
	transition: transform .4s var(--ease), box-shadow .4s
}

.linklist a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -1px;
	width: 0;
	height: 2px;
	background: linear-gradient(90deg, var(--red-2), var(--gold));
	transition: width .55s var(--ease)
}

.linklist a span {
	display: block;
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis
}

.linklist a:hover {
	color: var(--red);
	font-weight: 700;
	padding-left: 34px
}

.linklist a:hover::before {
	transform: translateY(-50%) scale(1.5);
	box-shadow: 0 0 0 5px rgba(214, 34, 21, .14)
}

.linklist a:hover::after {
	width: 100%
}

.figure {
	position: relative;
	min-width: 0;
	border-radius: var(--r);
	overflow: hidden;
	box-shadow: var(--shadow-lg);
	background: #2b0405
}

.figure img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .9s var(--ease)
}

.figure:hover img {
	transform: scale(1.06)
}

.figure .figcap {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 16px 20px;
	color: #fff;
	font-size: 17px;
	background: linear-gradient(180deg, transparent, rgba(150, 12, 12, .55) 40%, rgba(140, 10, 12, .9));
	display: flex;
	align-items: center;
	gap: 10px
}

.figure .figcap span {
	display: block;
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis
}

.figure__big {
	aspect-ratio: 580/327
}

.land__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 30px
}

.lcard {
	display: flex;
	flex-direction: column;
	height: 100%;
	border-radius: 14px;
	overflow: hidden;
	background: var(--paper-2);
	box-shadow: var(--shadow);
	transition: transform .5s var(--ease), box-shadow .5s var(--ease)
}

.lcard__img {
	position: relative;
	aspect-ratio: 270/160;
	overflow: hidden
}

.lcard__img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .9s var(--ease)
}

.lcard__img::after {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(182, 22, 26, .0);
	transition: background .5s
}

.lcard__cap {
	flex: 1 0 auto;
	display: flex;
	align-items: center;
	min-height: 84px;
	padding: 14px 16px;
	background: linear-gradient(135deg, #c2201a, #8f0d10);
	color: #fff;
	font-size: 14.5px;
	line-height: 1.55
}

.lcard__cap span {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden
}

.lcard:hover {
	transform: translateY(-10px);
	box-shadow: var(--shadow-lg)
}

.lcard:hover .lcard__img img {
	transform: scale(1.1)
}

.lcard:hover .lcard__img::after {
	background: rgba(182, 22, 26, .18)
}

/* ============ 七 · 战火中的旋律（左大图 + 右竖向轮播） ============ */
.melody {
	display: grid;
	grid-template-columns: minmax(0, 873fr) minmax(0, 268fr);
	gap: 30px;
	align-items: start
}

.stage {
	position: relative;
	min-width: 0;
	aspect-ratio: 873/494;
	border-radius: var(--r);
	overflow: hidden;
	background: #200203;
	box-shadow: var(--shadow-lg)
}

.stage__img {
	position: absolute;
	inset: 0;
	opacity: 0;
	transform: scale(1.06);
	transition: opacity .8s var(--ease), transform 1.2s var(--ease)
}

.stage__img.on {
	opacity: 1;
	transform: scale(1)
}

.stage__img img {
	width: 100%;
	height: 100%;
	object-fit: cover
}

.stage__cap {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 3;
	padding: 24px 26px;
	color: #fff;
	font-size: 21px;
	font-weight: 600;
	background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .72));
	display: flex;
	align-items: center;
	gap: 14px
}

.stage__cap b {
	display: block;
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	transition: opacity .5s, transform .5s var(--ease)
}

.stage__cap.swap b {
	opacity: 0;
	transform: translateY(12px)
}

.playicon {
	flex: none;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	background: rgba(214, 34, 21, .9);
	box-shadow: 0 0 0 0 rgba(214, 34, 21, .55);
	animation: pulse 2.6s infinite
}

.playicon svg {
	width: 20px;
	height: 20px;
	margin-left: 3px
}

@keyframes pulse {
	70% {
		box-shadow: 0 0 0 20px rgba(214, 34, 21, 0)
	}

	100% {
		box-shadow: 0 0 0 0 rgba(214, 34, 21, 0)
	}
}

.vlist {
	position: relative;
	height: auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px
}

.vlist__view {
	position: relative;
	width: 100%;
	overflow: hidden;
	flex: 1;
	min-width: 0;
	min-height: 0;
	touch-action: pan-x
}

.vlist__track {
	display: flex;
	flex-direction: column;
	gap: 12px;
	transition: transform .7s var(--ease-out);
	will-change: transform
}

.vthumb {
	position: relative;
	flex: none;
	border-radius: 10px;
	overflow: hidden;
	aspect-ratio: 237/134;
	/* border: 2px solid transparent; */
	transition: border-color .4s, transform .45s var(--ease), box-shadow .45s
}

.vthumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale(.45) brightness(.82);
	transition: filter .5s, transform .8s var(--ease)
}

.vthumb::after {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(60, 0, 0, .28);
	transition: opacity .4s
}

.vthumb:hover img,
.vthumb.on img {
	filter: none;
	transform: scale(1.06)
}

.vthumb:hover::after,
.vthumb.on::after {
	opacity: 0
}

.vthumb.on {
	border-color: var(--red-2);
	box-shadow: 0 8px 22px rgba(182, 22, 26, .34);
	transform: translateX(-6px)
}

.vthumb .num {
	position: absolute;
	top: 8px;
	left: 10px;
	z-index: 2;
	font-family: Georgia, serif;
	font-size: 13px;
	color: #fff;
	opacity: .85;
	text-shadow: 0 2px 8px rgba(0, 0, 0, .6)
}

.vlist .cbtn {
	width: 44px;
	height: 44px
}

.vlist .cbtn svg {
	transform: rotate(90deg)
}

/* ============ 八 · 抗联经典战役 ============ */
.battle {
	display: grid;
	grid-template-columns: minmax(0, 597fr) minmax(0, 590fr);
	gap: 26px
}

.bcard {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	border-radius: 14px;
	overflow: hidden;
	background: #2b0405;
	box-shadow: var(--shadow);
	transition: transform .5s var(--ease), box-shadow .5s var(--ease)
}

.bcard__img {
	position: relative;
	flex: 1;
	overflow: hidden
}

.bcard__img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .9s var(--ease)
}

.bcard__img::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(20, 0, 0, .35), transparent 45%);
	pointer-events: none
}

.bcard .flag {
	position: absolute;
	top: 16px;
	left: 16px;
	z-index: 3;
	width: 34px;
	height: 34px;
	border-radius: 8px;
	display: grid;
	place-items: center;
	background: rgba(214, 34, 21, .92);
	color: #ffe9b8;
	transition: transform .5s var(--ease), background .4s
}

.bcard .flag svg {
	width: 18px;
	height: 18px
}

.bcard__cap {
	flex: none;
	display: flex;
	align-items: center;
	padding: 0 18px;
	color: #fff;
	background: linear-gradient(135deg, #c11100, #990f01)
}

.bcard__cap span {
	display: block;
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis
}

.bcard:hover {
	transform: translateY(-8px);
	box-shadow: var(--shadow-lg)
}

.bcard:hover .bcard__img img {
	transform: scale(1.09)
}

.bcard:hover .flag {
	transform: rotate(-8deg) scale(1.1);
	background: var(--gold);
	color: #7a0e12
}

.battle__main {
	display: flex;
	flex-direction: column
}

.battle__main .bcard__img {
	flex: 1;
	aspect-ratio: 597/350
}

.battle__main .bcard__cap {
	height: 56px;
	font-size: 18px;
}

.battle__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 16px
}

.battle__grid .bcard__img {
	aspect-ratio: 290/152
}

.battle__grid .bcard__cap {
	height: 44px;
	font-size: 15px
}

/* ============ 九 · 页脚 ============ */
.foot {
	position: relative;
	margin-top: 20px;
	padding: 44px 0;
	text-align: center;
	color: #fff;
	font-size: 18px;
	background: linear-gradient(135deg, #b3130f, #d51e11 50%, #a30f0c);
	overflow: hidden
}

.foot::before {
	content: "";
	position: absolute;
	inset: 0;
	opacity: .16;
	pointer-events: none;
	background: repeating-linear-gradient(135deg, rgba(255, 255, 255, .5) 0 1px, transparent 1px 14px)
}

.foot p {
	position: relative;
	letter-spacing: .06em
}

.foot p+p {
	margin-top: 8px;
	color: rgba(255, 235, 205, .72);
	font-size: 13px
}

.totop {
	position: fixed;
	right: 26px;
	bottom: 26px;
	z-index: 100;
	width: 48px;
	height: 48px;
	border-radius: 14px;
	display: grid;
	place-items: center;
	color: #fff;
	background: linear-gradient(135deg, #bc192a, #ff4a3d);
	box-shadow: 0 10px 26px rgba(182, 22, 26, .4);
	opacity: 0;
	transform: translateY(16px) scale(.9);
	pointer-events: none;
	transition: .45s var(--ease)
}

.totop.show {
	opacity: 1;
	transform: none;
	pointer-events: auto
}

.totop:hover {
	transform: translateY(-4px)
}

.totop svg {
	width: 20px;
	height: 20px
}

/* ============ 响应式 ============ */
@media (max-width:1100px) {
	.focus {
		grid-template-columns: 1fr
	}

	.newslist {
		flex-direction: row;
		flex-wrap: wrap
	}

	.newslist a {
		flex: 1 1 calc(50% - 7px)
	}

	.melody {
		grid-template-columns: 1fr
	}

	.vlist {
		flex-direction: row;
		height: auto
	}

	.vlist__view {
		height: 120px
	}

	.vlist__track {
		flex-direction: row;
		height: 100%
	}

	.vthumb {
		width: 200px;
		height: 100%;
		aspect-ratio: auto
	}

	.vthumb.on {
		transform: translateY(-4px)
	}

	.vlist .cbtn svg {
		transform: none
	}

	.land__grid {
		grid-template-columns: repeat(2, 1fr)
	}

	.heroes__nav.prev {
		left: 6px
	}

	.heroes__nav.next {
		right: 6px
	}
}

@media (max-width:880px) {
	.memo {
		grid-template-columns: 1fr
	}

	.land__top {
		grid-template-columns: 1fr
	}

	.battle {
		grid-template-columns: 1fr
	}

	.slide__cap {
		padding-right: 26px;
		padding-bottom: 44px
	}
}

@media (max-width:600px) {

	.newslist a {
		flex: 1 1 100%
	}

	.linklist a {
		height: auto;
		min-height: 64px;
		padding: 13px 4px 13px 26px;
		line-height: 1.5
	}

	.linklist a span {
		white-space: normal;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical
	}

	.linklist a:hover {
		padding-left: 30px
	}

	.memo__top {
		grid-template-columns: 1fr
	}

	.land__grid {
		grid-template-columns: 1fr
	}

	.battle__grid {
		grid-template-columns: 1fr
	}

	.headline__box {
		padding: 32px 20px
	}

	.slider__dots {
		right: 14px;
		bottom: 14px
	}
}

@media (prefers-reduced-motion:reduce) {

	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .15s !important
	}

	html {
		scroll-behavior: auto
	}
}