/* ============================================================
   Ellan 艾尔岚 · 电影化体系(cinematic key-art)
   黑底 + 巨标排版 + MC 三原色(金/草绿/钻石青),全幅艺术卡驱动
   ============================================================ */

/* 缝合像素字体 Fusion Pixel(OFL-1.1 开源,含简中)
   https://github.com/TakWolf/fusion-pixel-font · 许可见 font/OFL-fusion-pixel.txt */
@font-face {
	font-family: "Fusion Pixel";
	src: url("../font/fusion-pixel-12px-proportional.woff2") format("woff2");
	font-display: swap;
}

/* 霞鹜文楷 GB(OFL-1.1 开源,GB 字形全集;正文与引文)
   https://github.com/lxgw/LxgwWenkaiGB · 许可见 font/OFL-lxgw-wenkai-gb.txt */
@font-face {
	font-family: "LXGW WenKai GB";
	src: url("../font/lxgw-wenkai-gb-regular.woff2") format("woff2");
	font-weight: 400;
	font-display: swap;
}

:root {
	--bg: #0b0d09;
	--bg-2: #11150d;
	--card: rgba(255, 255, 255, 0.045);
	--text: #f4f2e6;
	--text-dim: rgba(244, 242, 230, 0.62);
	--text-faint: rgba(244, 242, 230, 0.4);
	--line: rgba(244, 242, 230, 0.14);
	--line-strong: rgba(244, 242, 230, 0.3);
	--gold: #f5be4f;
	--leaf: #8fdd55;
	--aqua: #5ed6c4;
	--danger: #e05a4d;
	--grad: linear-gradient(100deg, var(--gold) 0%, var(--leaf) 48%, var(--aqua) 100%);
	--container: 1220px;
	--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--font-display: "Fusion Pixel", "Courier New", monospace;
	--font-serif: "LXGW WenKai GB", "Noto Serif SC", "Source Han Serif SC", "Songti SC", STSong, serif;
	--font-body: "LXGW WenKai GB", "Noto Sans SC", "Source Han Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
	color-scheme: dark;
}

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

html {
	/* 跨页面带锚点时先直接落位；同页平滑滚动由 main.js 处理。 */
	scroll-behavior: auto;
	scroll-padding-top: 84px;
	background: var(--bg);
}

/* ---------- 跨页面过渡：首页 ↔ 玩法百科 ---------- */
@view-transition {
	navigation: auto;
}

::view-transition {
	background: var(--bg);
}

@keyframes pageViewOut {
	to { opacity: 0; transform: translate3d(0, -5px, 0); }
}

@keyframes pageViewIn {
	from { opacity: 0; transform: translate3d(0, 8px, 0); }
}

::view-transition-old(root) {
	animation: pageViewOut 0.14s ease-in both;
}

::view-transition-new(root) {
	animation: pageViewIn 0.3s var(--ease-out) 0.08s both;
}

::view-transition-image-pair(root) {
	background: var(--bg);
}

/* 不支持跨文档 View Transition 时，用同色遮罩消除整页跳转闪烁。
   遮罩覆盖页头，避免两个页面的导航状态在换页瞬间互相叠加。 */
html::after {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 3900;
	pointer-events: none;
	background:
		radial-gradient(circle at 50% 8%, rgba(143, 221, 85, 0.07), transparent 42%),
		var(--bg);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.32s ease, visibility 0s linear 0.32s;
}

html.page-leaving::after,
html.page-arriving::after {
	opacity: 1;
	visibility: visible;
	transition: opacity 0.18s ease-in;
}

html.page-arriving.page-arrived::after {
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.34s var(--ease-out), visibility 0s linear 0.34s;
}

body {
	min-width: 320px;
	font-family: var(--font-body);
	background: var(--bg);
	color: var(--text);
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}

a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button { border: 0; background: none; color: inherit; font: inherit; cursor: pointer; }
[hidden] { display: none !important; }

::selection {
	background: rgba(143, 221, 85, 0.35);
	color: var(--text);
}

h1, h2, h3, .kicker, .btn {
	-webkit-user-select: none;
	user-select: none;
}

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #0b0d09; }
::-webkit-scrollbar-thumb {
	background: #29301f;
	border: 2px solid #0b0d09;
	border-radius: 6px;
}
::-webkit-scrollbar-thumb:hover { background: #3f4a2e; }

:focus-visible {
	outline: 2px solid var(--leaf);
	outline-offset: 3px;
}

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

.skip-link {
	position: fixed;
	top: -70px;
	left: 20px;
	z-index: 5000;
	padding: 10px 18px;
	background: var(--text);
	color: var(--bg);
	font-weight: 700;
	border-radius: 999px;
	transition: top 0.2s ease;
}
.skip-link:focus { top: 18px; }

/* ---------- 渐变文字 ---------- */
.grad-text {
	background: var(--grad);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.grad-anim {
	background-size: 220% 100%;
	animation: gradShift 9s ease-in-out infinite;
}
@keyframes gradShift {
	0%, 100% { background-position: 0% 50%; }
	50% { background-position: 100% 50%; }
}

/* ---------- 标签 ---------- */
.kicker {
	font-family: var(--font-display);
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.22em;
	color: var(--gold);
}

/* ---------- 按钮 ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 50px;
	gap: 9px;
	padding: 13px 28px;
	border-radius: 999px;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.02em;
	transition: transform 0.22s var(--ease-out), filter 0.18s ease, background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
	user-select: none;
}
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0); }

.btn-rune {
	background: var(--grad);
	background-size: 160% 100%;
	color: #16240e;
	-webkit-text-fill-color: #16240e;
	box-shadow: 0 12px 32px rgba(143, 221, 85, 0.26);
}
.btn-rune:hover { filter: brightness(1.1); background-position: 80% 0; }

.btn-ghost {
	color: var(--text);
	box-shadow: inset 0 0 0 1.5px var(--line-strong);
}
.btn-ghost:hover { background: rgba(244, 240, 232, 0.08); box-shadow: inset 0 0 0 1.5px var(--text); }

/* 夜景上的次级入口：接近 iOS Clear Liquid Glass 的清透凸透镜。 */
.btn-sm { min-height: 38px; padding: 8px 16px; font-size: 12px; }
.btn-quiet { color: var(--text-dim); box-shadow: inset 0 0 0 1.5px var(--line); }
.btn-copy strong { font-family: var(--font-display); font-size: 13px; letter-spacing: 0.06em; color: inherit; }

/* ---------- 页头 ---------- */
#site-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	transition: background-color 0.3s ease, border-color 0.3s ease, backdrop-filter 0.3s ease;
	border-bottom: 1px solid transparent;
}
#site-header::before {
	content: "";
	position: absolute;
	inset: 0;
	background: transparent;
	pointer-events: none;
	transition: opacity 0.3s ease;
}
#site-header.scrolled::before { opacity: 0; }
#site-header .nav { position: relative; }
#site-header .nav-brand-copy strong, #site-header .nav-link { text-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); }
#site-header.scrolled {
	background: transparent;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
	border-bottom-color: transparent;
}

.nav {
	height: 72px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 28px;
}

.nav-brand {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	flex: 0 0 auto;
}
.nav-brand img { width: 34px; height: 34px; border-radius: 9px; }
.nav-brand-copy strong { color: var(--text); font-family: var(--font-display); font-size: 14px; letter-spacing: 0.12em; }

.nav-links { display: flex; align-items: stretch; height: 100%; }
.nav-link {
	position: relative;
	display: inline-flex;
	align-items: center;
	padding: 0 16px;
	color: var(--text-dim);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.03em;
	transition: color 0.2s ease;
}
.nav-link::after {
	content: "";
	position: absolute;
	left: 16px;
	right: 16px;
	bottom: 18px;
	height: 2px;
	border-radius: 2px;
	background: var(--grad);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.28s var(--ease-out);
}
.nav-link:hover, .nav-link.active { color: var(--text); }
.nav-link:hover::after, .nav-link.active::after { transform: scaleX(1); }

.nav-actions { display: flex; align-items: center; gap: 16px; flex: 0 0 auto; }
.nav-live { display: inline-flex; align-items: center; gap: 8px; color: var(--text-dim); font-size: 11px; }
.nav-live b { font-weight: 600; }
.nav-live i {
	display: inline-block;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--gold);
}
.nav-live.is-online i { background: var(--leaf); animation: pulseDot 2.4s ease infinite; }
.nav-live.is-offline i { background: var(--danger); }

@keyframes pulseDot {
	0%, 100% { box-shadow: 0 0 0 0 rgba(143, 221, 85, 0.4); }
	50% { box-shadow: 0 0 0 6px rgba(143, 221, 85, 0); }
}

/* ---------- 首屏:全幅主视觉 ---------- */
.hero {
	position: relative;
	display: grid;
	min-height: 100svh;
	overflow: hidden;
}
.hero-art {
	position: absolute;
	inset: 0;
	z-index: 0;
	animation: heroZoom 2.6s var(--ease-out) both;
	will-change: transform;
}
.hero-art img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	will-change: transform;
}
@keyframes heroZoom {
	from { transform: scale(1.12); }
	to { transform: scale(1); }
}
.hero-art::before {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg, rgba(7, 10, 13, 0.68) 0%, rgba(7, 10, 13, 0.28) 30%, rgba(7, 10, 13, 0.34) 54%, rgba(7, 10, 13, 0.72) 80%, var(--bg) 100%);
}
.hero-art::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		radial-gradient(ellipse 44% 48% at 50% 49%, rgba(5, 9, 13, 0.44) 0%, rgba(5, 9, 13, 0.15) 58%, transparent 80%),
		radial-gradient(ellipse 90% 64% at 50% 46%, transparent 54%, rgba(7, 10, 13, 0.44) 100%);
}

.hero-content {
	position: relative;
	z-index: 1;
	place-self: center;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding-top: 60px;
}
.hero-kicker {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 9px 18px;
	font-family: var(--font-display);
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 0.2em;
	color: var(--text-dim);
	border: 1px solid transparent;
	border-radius: 999px;
	background: transparent;
	backdrop-filter: none;
	animation: heroRise 0.9s var(--ease-out) 0.15s both;
}
.hero-kicker .dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--leaf);
	animation: pulseDot 2.4s ease infinite;
}

.hero-logo {
	margin-top: 26px;
	font-family: var(--font-display);
	font-size: clamp(92px, 17vw, 218px);
	font-weight: 800;
	line-height: 0.95;
	letter-spacing: 0.02em;
	animation: heroRise 1s var(--ease-out) 0.3s both;
	filter: drop-shadow(0 10px 40px rgba(0, 0, 0, 0.6));
}
.hero-logo .grad-text { background-size: 200% 100%; animation: gradShift 10s ease-in-out infinite; }

.hero-chips {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	margin-top: 30px;
	animation: heroRise 1s var(--ease-out) 0.58s both;
}
.chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 17px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.05em;
	color: rgba(244, 240, 232, 0.85);
	border: 1px solid transparent;
	border-radius: 999px;
	background: transparent;
	backdrop-filter: none;
}
.chip-live i {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--leaf);
	animation: pulseDot 2.4s ease infinite;
}
.chip-live b { font-weight: 700; }

.hero-actions {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 34px;
	animation: heroRise 1s var(--ease-out) 0.7s both;
}
.hero-text-action {
	padding: 8px 2px;
	color: var(--text-dim);
	font-size: 13px;
	font-weight: 600;
	border-bottom: 1px solid var(--line-strong);
	transition: color 0.2s ease, border-color 0.2s ease;
}
.hero-text-action:hover { color: var(--text); border-color: var(--text); }

@keyframes heroRise {
	from { opacity: 0; transform: translateY(26px); }
	to { opacity: 1; transform: none; }
}

.scroll-hint {
	position: absolute;
	left: 50%;
	bottom: 26px;
	z-index: 1;
	transform: translateX(-50%);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	animation: heroRise 1s var(--ease-out) 1s both;
}
.scroll-hint span {
	font-family: var(--font-display);
	font-size: 9px;
	letter-spacing: 0.3em;
	color: var(--text-faint);
}
.scroll-hint i {
	width: 1px;
	height: 44px;
	background: linear-gradient(180deg, var(--text-faint), transparent);
	position: relative;
	overflow: hidden;
}
.scroll-hint i::after {
	content: "";
	position: absolute;
	left: 0;
	top: -50%;
	width: 100%;
	height: 50%;
	background: var(--text);
	animation: scrollDrop 1.8s var(--ease-out) infinite;
}
@keyframes scrollDrop {
	to { top: 110%; }
}

/* ---------- 宣言巨标 ---------- */
.statement { padding: 130px 0 64px; }
.statement-inner { text-align: center; }
.statement-big {
	margin-top: 26px;
	font-family: var(--font-display);
	font-size: clamp(56px, 9.5vw, 138px);
	font-weight: 800;
	letter-spacing: 0.02em;
	line-height: 1.1;
}
.statement-sub {
	margin-top: 26px;
	font-size: clamp(16px, 1.6vw, 20px);
	color: var(--text-dim);
	letter-spacing: 0.04em;
}

/* ---------- 故事引文 ---------- */
.story { padding: 10px 0 110px; }
.story-inner { max-width: 780px; margin-inline: auto; text-align: center; }
.story-inner blockquote {
	font-family: var(--font-serif);
	font-size: clamp(24px, 3vw, 36px);
	font-weight: 700;
	line-height: 1.6;
	letter-spacing: 0.04em;
}
.story-inner > p {
	margin-top: 30px;
	color: var(--text-dim);
	font-size: 15px;
	line-height: 2;
}

/* ---------- 区块标题 ---------- */
.section { position: relative; padding: 110px 0; }
.section-heading {
	max-width: 720px;
	margin: 0 auto 64px;
	text-align: center;
}
.section-heading h2 {
	margin-top: 20px;
	font-size: clamp(34px, 4.4vw, 58px);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
}
.section-lead {
	margin-top: 18px;
	color: var(--text-dim);
	font-size: 15px;
	line-height: 1.95;
}

/* ---------- 玩法艺术卡 ---------- */
.play-cards {
	display: grid;
	gap: 28px;
}
.play-card {
	position: relative;
	border-radius: 28px;
	overflow: hidden;
	background: var(--bg-2);
}
.play-card img {
	width: 100%;
	aspect-ratio: 21 / 9;
	object-fit: cover;
	transition: transform 1s var(--ease-out);
}
.play-card:hover img { transform: scale(1.03); }
.play-card::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(8, 8, 10, 0.12) 0%, transparent 30%, rgba(8, 8, 10, 0.55) 60%, rgba(8, 8, 10, 0.95) 100%);
	pointer-events: none;
}
.play-card-overlay {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 1;
	padding: 40px 46px 42px;
}
.play-card-overlay h3 {
	margin-top: 14px;
	font-size: clamp(26px, 3vw, 40px);
	font-weight: 800;
	line-height: 1.25;
	letter-spacing: -0.01em;
	max-width: 640px;
}
.play-card-overlay > p:not(.kicker):not(.play-steps) {
	margin-top: 12px;
	max-width: 560px;
	color: var(--text-dim);
	font-size: 14px;
	line-height: 1.85;
}
.play-steps {
	margin-top: 20px;
	font-family: var(--font-display);
	font-size: 11px;
	letter-spacing: 0.1em;
	color: rgba(244, 240, 232, 0.75);
}
.play-steps i {
	font-style: normal;
	margin: 0 12px;
	color: var(--leaf);
}

.utility-strip {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0;
	margin-top: 40px;
	border-top: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
}
.utility-strip span {
	padding: 20px 34px;
	font-size: 13px;
	font-weight: 600;
	color: var(--text-dim);
}
.utility-strip span + span { border-left: 1px solid var(--line); }
.utility-strip b {
	margin-right: 12px;
	font-family: var(--font-display);
	font-size: 11px;
}
.utility-strip span:nth-child(1) b { color: var(--gold); }
.utility-strip span:nth-child(2) b { color: var(--leaf); }
.utility-strip span:nth-child(3) b { color: var(--aqua); }
.utility-strip span:nth-child(4) b { color: var(--text); }

/* 完整玩法百科是“核心玩法”的深入阅读入口，不占用一级栏目导航。 */
.playbook-entry {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: 30px;
	margin-top: 38px;
	padding: 30px 34px 30px 38px;
	border: 1px solid var(--line);
	border-radius: 20px;
	background: linear-gradient(110deg, rgba(245, 190, 79, 0.07), rgba(143, 221, 85, 0.045) 55%, rgba(94, 214, 196, 0.055));
	overflow: hidden;
	transition: transform 0.28s var(--ease-out), border-color 0.22s ease, background-color 0.22s ease;
}
.playbook-entry::before {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 3px;
	background: var(--grad);
}
.playbook-entry:hover {
	transform: translateY(-3px);
	border-color: var(--line-strong);
}
.playbook-entry-copy { display: flex; flex-direction: column; align-items: flex-start; }
.playbook-entry-copy strong { margin-top: 8px; font-size: 23px; line-height: 1.35; }
.playbook-entry-copy small { margin-top: 7px; color: var(--text-dim); font-size: 12px; line-height: 1.8; }
.playbook-entry-action {
	padding: 10px 17px;
	border: 1px solid var(--line-strong);
	border-radius: 999px;
	color: var(--text);
	font-size: 12px;
	font-weight: 700;
	white-space: nowrap;
}

/* 冒险服专题入口：延续官网品牌色，以黄铜和余烬建立独立叙事感。 */
.thirteen-entry {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: 30px;
	min-height: 300px;
	margin-top: 18px;
	padding: 48px 42px;
	border: 1px solid rgba(240, 211, 141, 0.32);
	border-radius: 8px;
	background:
		linear-gradient(90deg, rgba(9, 9, 8, 0.94), rgba(9, 9, 8, 0.7) 56%, rgba(9, 9, 8, 0.14)),
		url("../img/thirteen-bells-hero.webp") center 52% / cover no-repeat;
	overflow: hidden;
	transition: transform 0.28s var(--ease-out), border-color 0.22s ease;
}
.thirteen-entry::after {
	content: "XIII";
	position: absolute;
	right: 28px;
	top: 5px;
	color: rgba(240, 211, 141, 0.14);
	font-family: var(--font-serif);
	font-size: 112px;
	line-height: 1;
	pointer-events: none;
}
.thirteen-entry:hover { transform: translateY(-3px); border-color: rgba(240, 211, 141, 0.62); }
.thirteen-entry-copy { position: relative; z-index: 1; display: flex; max-width: 680px; flex-direction: column; align-items: flex-start; }
.thirteen-entry-copy .kicker { color: #f0d38d; }
.thirteen-entry-copy strong { margin-top: 10px; font-family: var(--font-serif); font-size: 38px; font-weight: 400; }
.thirteen-entry-copy small { margin-top: 10px; color: rgba(244, 242, 230, 0.75); font-size: 13px; line-height: 1.9; }
.thirteen-entry-action { position: relative; z-index: 1; padding: 11px 18px; border: 1px solid rgba(240, 211, 141, 0.55); color: #f0d38d; font-size: 12px; font-weight: 700; white-space: nowrap; }

/* ---------- 大陆图鉴 ---------- */
.world-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 26px;
}
.world-card {
	position: relative;
	border-radius: 24px;
	overflow: hidden;
}
.world-card-wide { grid-column: 1 / -1; }
.world-card img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1s var(--ease-out);
}
.world-card-wide img { aspect-ratio: 8 / 5; }
.world-card:not(.world-card-wide) img { aspect-ratio: 1280 / 747; }
.world-card:hover img { transform: scale(1.03); }
.world-card figcaption {
	position: absolute;
	left: 18px;
	bottom: 16px;
	padding: 8px 14px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--text);
	background: rgba(8, 8, 10, 0.55);
	backdrop-filter: blur(8px);
	border: 1px solid var(--line);
	border-radius: 999px;
}

.showcase-browser {
	margin-top: 78px;
	padding-top: 58px;
	border-top: 1px solid var(--line);
}
.showcase-browser-head {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(280px, 420px);
	align-items: end;
	gap: 44px;
}
.showcase-browser-head h3 {
	margin-top: 10px;
	font-size: clamp(30px, 3.6vw, 48px);
	line-height: 1.15;
}
.showcase-browser-head > p {
	color: var(--text-dim);
	font-size: 13px;
	line-height: 1.9;
}
.showcase-category-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
	margin-top: 32px;
}
.showcase-category-card {
	position: relative;
	min-width: 0;
	aspect-ratio: 16 / 10;
	padding: 0;
	overflow: hidden;
	border: 1px solid var(--line);
	border-radius: 22px;
	background: #11140f;
	color: var(--text);
	font: inherit;
	text-align: left;
	cursor: pointer;
	box-shadow: 0 18px 50px rgba(0, 0, 0, 0.18);
	transition: transform .35s var(--ease-out), border-color .25s ease, box-shadow .35s ease;
}
.showcase-category-card::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 34%, rgba(5, 7, 5, .88) 100%);
	pointer-events: none;
}
.showcase-category-card img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .75s var(--ease-out), filter .35s ease;
}
.showcase-category-card > span {
	position: absolute;
	z-index: 1;
	left: 20px;
	right: 20px;
	bottom: 18px;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: 3px 16px;
}
.showcase-category-card small {
	grid-column: 1 / -1;
	font-family: var(--font-display);
	font-size: 8px;
	letter-spacing: .14em;
	color: var(--aqua);
}
.showcase-category-card strong {
	font-size: 25px;
	line-height: 1.15;
}
.showcase-category-card em {
	padding-bottom: 2px;
	color: var(--text-dim);
	font-size: 11px;
	font-style: normal;
}
.showcase-category-card:hover,
.showcase-category-card:focus-visible {
	transform: translateY(-5px);
	border-color: rgba(143, 221, 85, .48);
	box-shadow: 0 26px 70px rgba(0, 0, 0, 0.28);
}
.showcase-category-card:hover img,
.showcase-category-card:focus-visible img { transform: scale(1.045); filter: saturate(1.06); }
.showcase-category-card:focus-visible { outline: 2px solid var(--leaf); outline-offset: 4px; }

.showcase-lightbox {
	position: fixed;
	inset: 0;
	z-index: 5000;
	display: grid;
	place-items: center;
	padding: 22px;
	opacity: 0;
	pointer-events: none;
	transition: opacity .24s ease;
}
.showcase-lightbox[hidden] { display: none; }
.showcase-lightbox.is-open { opacity: 1; pointer-events: auto; }
.showcase-lightbox-backdrop {
	position: absolute;
	inset: 0;
	background: rgba(4, 6, 4, .78);
	backdrop-filter: blur(12px) saturate(120%);
	-webkit-backdrop-filter: blur(12px) saturate(120%);
}
.showcase-lightbox-panel {
	position: relative;
	width: min(1120px, calc(100vw - 44px));
	max-height: calc(100svh - 44px);
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	gap: 16px;
	padding: 22px;
	border: 1px solid var(--line-strong);
	border-radius: 28px;
	background: rgba(11, 14, 10, .96);
	box-shadow: 0 40px 120px rgba(0, 0, 0, .62);
	overflow: hidden;
	transform: translateY(14px) scale(.985);
	transition: transform .3s var(--ease-out);
}
.showcase-lightbox.is-open .showcase-lightbox-panel { transform: none; }
.showcase-lightbox-panel > header,
.showcase-lightbox-panel > footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
}
.showcase-lightbox-panel > header h3 { margin-top: 5px; font-size: 25px; }
.showcase-lightbox-figure {
	position: relative;
	min-height: 0;
	margin: 0;
	display: grid;
	place-items: center;
	overflow: hidden;
	border: 1px solid var(--line);
	border-radius: 20px;
	background: #050605;
}
.showcase-lightbox-figure img {
	width: 100%;
	height: 100%;
	max-height: calc(100svh - 220px);
	object-fit: contain;
	opacity: 1;
	transition: opacity .18s ease;
}
.showcase-lightbox-figure.is-loading img { opacity: .28; }
.showcase-lightbox-figure figcaption {
	position: absolute;
	left: 16px;
	bottom: 14px;
	max-width: calc(100% - 32px);
	padding: 8px 13px;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: rgba(7, 9, 7, .68);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	color: var(--text);
	font-size: 11px;
}
.showcase-lightbox-panel > footer { justify-content: center; }
#showcase-counter {
	min-width: 72px;
	text-align: center;
	font-family: var(--font-display);
	font-size: 10px;
	letter-spacing: .1em;
	color: var(--text-dim);
}
.showcase-lightbox .btn:disabled { opacity: .34; cursor: default; }

/* ---------- 团队 ---------- */
.team-row {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 40px;
	max-width: 980px;
	margin-inline: auto;
}
.member { text-align: center; }
.member img {
	width: 108px;
	height: 108px;
	object-fit: cover;
	border-radius: 50%;
	margin-inline: auto;
	border: 1px solid var(--line);
	transition: transform 0.3s var(--ease-out), border-color 0.3s ease;
}
.member:hover img { transform: translateY(-4px); border-color: var(--leaf); }
.member span {
	display: block;
	margin-top: 20px;
	font-family: var(--font-display);
	font-size: 9px;
	letter-spacing: 0.16em;
	color: var(--aqua);
}
.member:nth-child(1) span { color: var(--gold); }
.member:nth-child(2) span { color: var(--leaf); }
.member h3 { margin-top: 8px; font-size: 21px; font-weight: 800; letter-spacing: 0.01em; }
.member p { margin-top: 10px; color: var(--text-dim); font-size: 12px; line-height: 1.85; }

/* ---------- 新手指南 ---------- */
.guide-rows {
	max-width: 860px;
	margin-inline: auto;
	border-top: 1px solid var(--line);
}
.guide-link {
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr) auto;
	align-items: center;
	gap: 22px;
	padding: 26px 8px;
	border-bottom: 1px solid var(--line);
	transition: background-color 0.2s ease, padding 0.25s var(--ease-out);
}
.guide-link:hover { background: rgba(244, 240, 232, 0.03); padding-left: 16px; }
.guide-link b {
	font-family: var(--font-display);
	font-size: 20px;
	font-weight: 400;
	color: var(--text-faint);
	transition: color 0.2s ease;
}
.guide-link:nth-child(1):hover b { color: var(--gold); }
.guide-link:nth-child(2):hover b { color: var(--leaf); }
.guide-link:nth-child(3):hover b { color: var(--aqua); }
.guide-link span { display: flex; flex-direction: column; gap: 3px; }
.guide-link strong { font-size: 17px; font-weight: 700; }
.guide-link small { color: var(--text-faint); font-size: 12px; }
.guide-arrow {
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	font-style: normal;
	font-size: 18px;
	color: var(--text);
	border: 1.5px solid var(--line-strong);
	border-radius: 50%;
	transition: transform 0.35s var(--ease-out), background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}
.guide-link:hover .guide-arrow {
	transform: rotate(-45deg);
	background: var(--text);
	border-color: var(--text);
	color: var(--bg);
}

/* ---------- 加入 ---------- */
.join-section { padding: 110px 0 120px; }
.join-inner { text-align: center; }
.join-inner h2 {
	margin-top: 20px;
	font-size: clamp(38px, 5.4vw, 72px);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
}
.join-inner .section-lead { max-width: 560px; margin-inline: auto; }
.join-actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px;
	margin-top: 36px;
}

/* 实时状态卡 */
.server-card {
	display: grid;
	grid-template-columns: 48px minmax(0, 1fr) auto;
	align-items: center;
	gap: 16px;
	max-width: 640px;
	margin: 48px auto 0;
	padding: 18px 22px;
	text-align: left;
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: 20px;
	backdrop-filter: blur(10px);
}
.server-card > img {
	width: 48px;
	height: 48px;
	image-rendering: pixelated;
	border-radius: 12px;
	background: #000;
}
.server-info { min-width: 0; }
.server-name {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 9px;
	font-size: 14px;
	font-weight: 700;
}
.server-version {
	padding: 3px 10px;
	font-family: var(--font-display);
	font-size: 9px;
	letter-spacing: 0.08em;
	color: var(--gold);
	border: 1px solid rgba(245, 190, 79, 0.35);
	border-radius: 999px;
}
.server-motd {
	margin-top: 5px;
	color: var(--text-dim);
	font-size: 12.5px;
	line-height: 1.5;
	white-space: pre-line;
}
.server-right {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 5px;
}
.server-players { font-family: var(--font-display); font-size: 15px; color: var(--text); }
.server-ping { font-size: 10px; color: var(--text-faint); }

.player-strip {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 5px;
	margin-top: 10px;
}
.player-strip-label { margin-right: 3px; color: var(--text-faint); font-size: 10px; }
.player-strip img {
	width: 22px;
	height: 22px;
	image-rendering: pixelated;
	border-radius: 50%;
	background: #000;
	border: 1px solid var(--line);
}
.player-strip-more { color: var(--text-faint); font-size: 10px; }

/* ---------- 扫码加群(隐藏式弹出层) ---------- */
.join-qr-wrap {
	position: relative;
	display: flex;
	justify-content: center;
	margin-top: 26px;
}
.qr-popover {
	position: absolute;
	bottom: calc(100% + 14px);
	left: 50%;
	width: 172px;
	padding: 12px 12px 10px;
	border-radius: 16px;
	border: 1px solid var(--line-strong);
	background: #131810;
	box-shadow: 0 18px 48px rgba(0, 0, 0, 0.55);
	transform: translateX(-50%) translateY(8px) scale(0.96);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.24s var(--ease-out), transform 0.24s var(--ease-out);
	z-index: 40;
}
.qr-popover.is-open {
	opacity: 1;
	pointer-events: auto;
	transform: translateX(-50%) translateY(0) scale(1);
}
.qr-popover::after {
	content: "";
	position: absolute;
	top: 100%;
	left: 50%;
	width: 12px;
	height: 12px;
	background: inherit;
	border-right: 1px solid var(--line-strong);
	border-bottom: 1px solid var(--line-strong);
	transform: translateX(-50%) translateY(-6px) rotate(45deg);
}
.qr-popover img {
	display: block;
	width: 100%;
	aspect-ratio: 1;
	border-radius: 10px;
}
.qr-popover small {
	display: block;
	margin-top: 8px;
	text-align: center;
	color: var(--text-faint);
	font-size: 10px;
}

/* ---------- 页脚 ---------- */
footer { border-top: 1px solid var(--line); }
.footer-inner {
	min-height: 128px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 34px 0;
	text-align: center;
}
.footer-inner strong {
	font-family: var(--font-display);
	font-size: 13px;
	letter-spacing: 0.16em;
}
.footer-inner span { color: var(--text-faint); font-size: 11px; }
.footer-inner .btn { margin-top: 8px; }
.footer-legal {
	max-width: 620px;
	margin-top: 16px;
	color: var(--text-faint);
	font-size: 10px;
	line-height: 1.9;
	opacity: 0.75;
}

/* ---------- 弹层 ---------- */
.modal { position: fixed; inset: 0; z-index: 4000; display: grid; place-items: center; padding: 24px; }
.modal-backdrop { position: absolute; inset: 0; background: rgba(6, 6, 8, 0.72); backdrop-filter: blur(6px); }
.modal-dialog {
	position: relative;
	z-index: 1;
	width: min(500px, 100%);
	padding: 40px;
	background: var(--bg-2);
	border: 1px solid var(--line);
	border-radius: 24px;
}
.modal-dialog .kicker { display: block; }
.modal-dialog h3 { margin-top: 12px; font-size: 28px; font-weight: 800; letter-spacing: -0.01em; }
.modal-dialog > p:not(.kicker) { margin-top: 10px; color: var(--text-dim); font-size: 13px; }
.modal-buttons { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }

#toast-root { position: fixed; right: 24px; bottom: 24px; z-index: 5000; display: grid; gap: 10px; }
.toast {
	min-width: 250px;
	max-width: min(390px, calc(100vw - 48px));
	padding: 14px 18px;
	color: var(--text);
	background: rgba(16, 16, 20, 0.92);
	backdrop-filter: blur(10px);
	border: 1px solid var(--line);
	border-left: 3px solid var(--leaf);
	border-radius: 14px;
	box-shadow: 0 18px 40px rgba(0, 0, 0, 0.5);
	opacity: 0;
	transform: translateY(14px);
	transition: opacity 0.26s ease, transform 0.26s var(--ease-out);
	font-size: 12px;
	font-weight: 600;
}
.toast.show { opacity: 1; transform: none; }

/* ---------- 入场 ---------- */
.reveal {
	opacity: 0;
	transform: translateY(34px);
	transition: opacity 0.85s ease, transform 0.85s var(--ease-out);
}
.reveal.visible { opacity: 1; transform: none; }

/* ---------- 响应式 ---------- */
@media (max-width: 1120px) {
	.nav-links { display: none; }
}

@media (max-width: 860px) {
	/* 移动端关闭首屏视差合成层,降低滚动卡顿 */
	.hero-art, .hero-art img { will-change: auto; }
	.container { width: min(100% - 32px, var(--container)); }
	.nav { height: 64px; }
	.nav-live { display: none; }
	.section { padding: 84px 0; }
	.section-heading { margin-bottom: 44px; }
	.statement { padding: 110px 0 90px; }
	.story { padding: 20px 0 96px; }
	.play-card-overlay { padding: 28px 26px 30px; }
	.play-card img { aspect-ratio: 16 / 10; }
	.world-grid { grid-template-columns: 1fr; }
	.world-card-wide img { aspect-ratio: 16 / 10; }
	.showcase-browser { margin-top: 60px; padding-top: 48px; }
	.showcase-browser-head { grid-template-columns: 1fr; align-items: start; gap: 16px; }
	.showcase-category-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.team-row { grid-template-columns: 1fr; gap: 48px; }
	.utility-strip span { padding: 16px 20px; }
}

@media (max-width: 600px) {
	.hero-logo { font-size: clamp(56px, 15.5vw, 92px); }
	.hero-actions .btn { flex: 1 1 200px; }
	.hero-text-action { flex-basis: 100%; }
	.statement-big { font-size: clamp(28px, 8.4vw, 44px); }
	.story-inner blockquote { font-size: 20px; padding-inline: 10px; }
	.server-card { grid-template-columns: 40px minmax(0, 1fr); padding: 16px; }
	.server-card > img { width: 40px; height: 40px; }
	.server-right { grid-column: 1 / -1; flex-direction: row; justify-content: space-between; align-items: center; }
	.guide-link { grid-template-columns: 40px 1fr auto; gap: 14px; padding: 22px 4px; }
	.utility-strip { display: grid; grid-template-columns: 1fr 1fr; }
	.utility-strip span + span { border-left: 0; }
	.utility-strip span:nth-child(even) { border-left: 1px solid var(--line); }
	.utility-strip span:nth-child(n + 3) { border-top: 1px solid var(--line); }
	.playbook-entry { grid-template-columns: 1fr; gap: 20px; padding: 26px 24px 26px 28px; }
	.playbook-entry-action { justify-self: start; }
	.thirteen-entry { grid-template-columns: 1fr; min-height: 340px; padding: 34px 26px; align-content: end; }
	.thirteen-entry-action { justify-self: start; }
	.thirteen-entry-copy strong { font-size: 30px; }
	.showcase-category-grid { grid-template-columns: 1fr; gap: 16px; }
	.showcase-category-card > span { left: 17px; right: 17px; bottom: 15px; }
	.showcase-lightbox { padding: 10px; }
	.showcase-lightbox-panel { width: calc(100vw - 20px); max-height: calc(100svh - 20px); padding: 14px; border-radius: 22px; }
	.showcase-lightbox-panel > header h3 { font-size: 21px; }
	.showcase-lightbox-figure img { max-height: calc(100svh - 188px); }
	.showcase-lightbox-figure figcaption { left: 10px; bottom: 9px; max-width: calc(100% - 20px); }
	.scroll-hint { display: none; }
}

/* QA 截图模式:?shot=1 时首屏固定高度,便于整页捕获 */
/* ---------- Liquid Glass ----------
 * Material values mirror archisvaze/liquid-glass. The SVG refraction map is
 * supplied by js/liquid-glass.js; the CSS fallback is only used off Chromium.
 */
.liquid-glass {
	--liquid-glass-tint: rgba(255, 255, 255, 0.018);
	--liquid-glass-fallback: blur(3px) saturate(140%);
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background: transparent !important;
	backdrop-filter: none !important;
	-webkit-backdrop-filter: none !important;
	border-color: transparent !important;
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.14);
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.55);
}
.liquid-glass::before,
.liquid-glass::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	pointer-events: none;
}
.liquid-glass::before {
	z-index: -1;
	background: var(--liquid-glass-tint);
	box-shadow: inset 0 0 20px -5px rgba(255, 255, 255, 0.34);
}
.liquid-glass::after {
	z-index: -2;
	backdrop-filter: var(--liquid-glass-filter, var(--liquid-glass-fallback));
	-webkit-backdrop-filter: var(--liquid-glass-filter, var(--liquid-glass-fallback));
	isolation: isolate;
}
.liquid-glass.btn-ghost:hover,
.liquid-glass.btn-quiet:hover,
.liquid-glass.btn-rune:hover {
	background: transparent !important;
	box-shadow: 0 8px 28px rgba(0, 0, 0, 0.24);
}
.liquid-glass.btn-rune {
	--liquid-glass-tint: linear-gradient(
		100deg,
		rgba(245, 190, 79, 0.74) 0%,
		rgba(143, 221, 85, 0.72) 52%,
		rgba(94, 214, 196, 0.70) 100%
	);
	color: #16240e;
	-webkit-text-fill-color: #16240e;
	text-shadow: 0 1px 1px rgba(255, 255, 255, 0.25);
}
.liquid-glass.btn-rune::before {
	background-size: 160% 100%;
	transition: background-position 0.25s ease, filter 0.2s ease;
}
.liquid-glass.btn-rune:hover::before { background-position: 80% 0; filter: brightness(1.08); }
.guide-link:hover .guide-arrow.liquid-glass {
	background: transparent !important;
	color: var(--bg);
}
.guide-link:hover .guide-arrow.liquid-glass::before {
	background: rgba(244, 240, 232, 0.78);
}

.qa-shot .hero { min-height: 940px; }
.qa-shot .hero-art img { animation: none; }
.qa-shot .hero-content > *, .qa-shot .scroll-hint { animation: none; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
	::view-transition-old(root),
	::view-transition-new(root) { animation-duration: 0.01ms !important; }
	html::after { display: none !important; }
	.reveal { opacity: 1; transform: none; }
}
