/* ===== 耳机笔记 v0.2 — Desktop Shared CSS ===== */
/* Dark/Light themes + all component styles for PC landscape */

/* ----- Dark Theme (default) ----- */
:root {
	--bg: #0a0a0e;
	--bg-rgb: 10, 10, 14;
	--bg2: #111116;
	--card: #16161c;
	--card-hover: #1e1e28;
	--border: #22222c;
	--text: #e4e4ec;
	--text2: #90909e;
	--text3: #5a5a68;
	--accent: #7b8caa;
	--gold: #c0a870;
	--danger: #c06a7a;
	--success: #6a9a7a;
	--shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
	--shadow-hover: 0 8px 40px rgba(0, 0, 0, 0.6);
	--nav-bg: rgba(var(--bg-rgb), 0.88);
	--toolbar-bg: rgba(var(--bg-rgb), 0.88);
	--overlay: rgba(0, 0, 0, 0.5);
	--acoustic: #7a8faa;
	--frequency: #b8977e;
	--timbre: #7daa9a;
	--matching: #9a82aa;
	--acoustic-bg: rgba(122, 143, 170, 0.06);
	--frequency-bg: rgba(184, 151, 126, 0.06);
	--timbre-bg: rgba(125, 170, 154, 0.06);
	--matching-bg: rgba(154, 130, 170, 0.06);
	--acoustic-dark: #3a4a5a;
	--frequency-dark: #5a4a3a;
	--timbre-dark: #3a5a4a;
	--matching-dark: #4a3a5a;
	--border-strong: rgba(255, 255, 255, 0.18);
	--rc-tag-bg: rgba(255, 255, 255, 0.05);
	--rc-badge-bg: rgba(255, 255, 255, 0.08);
	--rc-tag-border: rgba(255, 255, 255, 0.1);
	--star-empty: #3a3a42;
	--warn: #d8a05a;
	/* Tag/Chip & review badge theming tokens for light mode */
	--chip-border-alpha: rgba(255, 255, 255, 0.12);
	--chip-hover-border-alpha: rgba(255, 255, 255, 0.18);
	--rc-badge-bg: rgba(255, 255, 255, 0.08);
	--prv-border-top: rgba(255, 255, 255, 0.06);
	--prv-label-want-bg: rgba(125,170,154,0.15);
	--prv-label-want-color: #9bc4ad;
	--prv-label-tried-bg: rgba(123,140,170,0.15);
	--prv-label-tried-color: #a0b0d0;
	--prv-label-owned-bg: rgba(184,151,126,0.15);
	--prv-label-owned-color: #d0b89a;
	--prv-label-keeper-bg: rgba(192,168,112,0.15);
	--prv-label-keeper-color: #ddd0a0;
}

/* ----- Light Theme ----- */
[data-theme="light"] {
	--bg: #f2f2f7;
	--bg-rgb: 242, 242, 247;
	--bg2: #fafafa;
	--card: #ffffff;
	--card-hover: #f5f5fa;
	--border: #e5e5ee;
	--text: #1a1a2e;
	--text2: #5a5a72;
	--text3: #9a9ab2;
	--accent: #6a7fa0;
	--gold: #b89740;
	--danger: #c05060;
	--success: #4a8a6a;
	--shadow: 0 2px 16px rgba(0, 0, 0, 0.06);
	--shadow-hover: 0 4px 24px rgba(0, 0, 0, 0.1);
	--nav-bg: rgba(242, 242, 247, 0.9);
	--toolbar-bg: rgba(242, 242, 247, 0.9);
	--overlay: rgba(0, 0, 0, 0.03);
	--acoustic: #6a7f96;
	--frequency: #a8886e;
	--timbre: #6a9a88;
	--matching: #8a729a;
	--acoustic-bg: rgba(106, 127, 150, 0.04);
	--frequency-bg: rgba(168, 136, 110, 0.04);
	--timbre-bg: rgba(106, 154, 136, 0.04);
	--matching-bg: rgba(138, 114, 154, 0.04);
	--acoustic-dark: #c0d0e0;
	--frequency-dark: #e0d0c0;
	--timbre-dark: #c0e0d0;
	--matching-dark: #d0c0e0;
	--border-strong: rgba(26, 26, 46, 0.2);
	--rc-tag-bg: rgba(26, 26, 46, 0.045);
	--rc-badge-bg: rgba(26, 26, 46, 0.06);
	--rc-tag-border: rgba(26, 26, 46, 0.12);
	--star-empty: #d0d0dc;
	--warn: #a0702e;
	--chip-border-alpha: rgba(0,0,0,0.15);
	--chip-hover-border-alpha: rgba(0,0,0,0.20);
	--rc-badge-bg: rgba(0,0,0,0.08);
	--prv-border-top: rgba(0,0,0,0.08);
	--prv-label-want-bg: rgba(125,170,154,0.08);
	--prv-label-tried-bg: rgba(123,140,170,0.08);
	--prv-label-owned-bg: rgba(184,151,126,0.08);
	--prv-label-keeper-bg: rgba(192,168,112,0.08);
}

/* ----- Reset & Base ----- */
* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}
html {
	scroll-behavior: smooth;
}
body {
	font-family:
		-apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC",
		"Segoe UI", sans-serif;
	background: var(--bg);
	color: var(--text);
	-webkit-font-smoothing: antialiased;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	align-items: center;
	transition:
		background 0.4s ease,
		color 0.4s ease;
	line-height: 1.6;
}

/* Scrollbar */
::-webkit-scrollbar {
	width: 8px;
	height: 8px;
}
::-webkit-scrollbar-track {
	background: transparent;
}
::-webkit-scrollbar-thumb {
	background: var(--border);
	border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
	background: var(--text3);
}

/* ----- Container ----- */
.app {
	max-width: 1280px;
	width: 100%;
	display: flex;
	flex-direction: column;
}

/* ----- Theme Toggle ----- */
.theme-toggle {
	position: fixed;
	bottom: 28px;
	right: 28px;
	z-index: 9999;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: var(--card);
	border: 1.5px solid var(--border);
	cursor: pointer;
	font-size: 22px;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: var(--shadow);
	transition: all 0.3s ease;
	color: var(--text);
}
.theme-toggle:hover {
	transform: scale(1.08);
	box-shadow: var(--shadow-hover);
	border-color: var(--text3);
}
.theme-toggle:active {
	transform: scale(0.95);
}
@keyframes themeSpin {
	0% {
		transform: rotate(0);
	}
	100% {
		transform: rotate(360deg);
	}
}
.theme-toggle.spin {
	animation: themeSpin 0.5s ease;
}

/* ----- Nav ----- */
.nav {
	position: sticky;
	top: 0;
	z-index: 1000;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 12px 32px;
	background: var(--nav-bg);
	backdrop-filter: blur(24px);
	-webkit-backdrop-filter: blur(24px);
	border-bottom: 1px solid var(--border);
	transition: all 0.3s ease;
}
.nav-brand {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-size: 20px;
	font-weight: 800;
	letter-spacing: 2px;
	background: linear-gradient(135deg, #b8c8d8, #8a9ab8);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	text-decoration: none;
	transition: opacity 0.2s;
}
.nav-brand:hover {
	opacity: 0.8;
}
.nav-brand-mark {
	width: 26px;
	height: 26px;
	flex-shrink: 0;
	filter: invert(1);
}
[data-theme="light"] .nav-brand-mark {
	filter: none;
}
.nav-links {
	display: flex;
	gap: 10px;
	align-items: center;
}
.nav-links a {
	color: var(--text2);
	text-decoration: none;
	font-size: 13px;
	font-weight: 500;
	padding: 7px 16px;
	border: 1px solid var(--border);
	border-radius: 22px;
	background: var(--card);
	transition: all 0.25s ease;
}
.nav-links a:hover {
	color: var(--text);
	border-color: rgba(255, 255, 255, 0.2);
	background: var(--card-hover);
	transform: translateY(-1px);
}
.nav-links a.active {
	color: var(--text);
	border-color: rgba(255, 255, 255, 0.2);
	background: var(--card-hover);
}
.nav-links a.avatar-btn {
	width: 38px;
	height: 38px;
	border-radius: 50%;
	padding: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	font-size: 14px;
	background: var(--card-hover);
	border-color: rgba(255, 255, 255, 0.15);
	color: var(--text);
	text-decoration: none;
}
.nav-links a.avatar-btn:hover {
	transform: scale(1.05);
}

/* Nav search */
.nav-search {
	flex: 1;
	max-width: 380px;
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 14px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 22px;
	transition: all 0.25s ease;
	margin: 0 16px;
}
.nav-search:focus-within {
	border-color: rgba(255, 255, 255, 0.2);
	box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.03);
}
.nav-search input {
	flex: 1;
	background: none;
	border: none;
	outline: none;
	color: var(--text);
	font-size: 13px;
	font-family: inherit;
	min-width: 0;
}
.nav-search input::placeholder {
	color: var(--text3);
}
.nav-search-icon {
	font-size: 13px;
	color: var(--text3);
	flex-shrink: 0;
}

/* ----- Hero ----- */
.hero {
	padding: 60px 32px 48px;
	text-align: center;
}
.hero h1 {
	font-size: 48px;
	font-weight: 900;
	letter-spacing: 2px;
	margin-bottom: 12px;
	animation: fadeInUp 0.6s ease;
}
.hero h1 span {
	background: linear-gradient(135deg, #b8c8d8, #8a9ab8);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.hero p {
	font-size: 16px;
	color: var(--text2);
	line-height: 1.8;
	max-width: 640px;
	margin: 0 auto;
	animation: fadeInUp 0.6s ease 0.1s both;
}
.hero-stats {
	display: flex;
	gap: 40px;
	justify-content: center;
	margin-top: 32px;
	animation: fadeInUp 0.6s ease 0.2s both;
}
.hero-stat {
	text-align: center;
}
.hero-stat .num {
	font-size: 32px;
	font-weight: 900;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.hero-stat .lbl {
	font-size: 11px;
	color: var(--text3);
	margin-top: 4px;
	letter-spacing: 1px;
}

@keyframes fadeInUp {
	0% {
		opacity: 0;
		transform: translateY(20px);
	}
	100% {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ----- Section Header ----- */
.sec-header {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 20px;
	padding: 0 4px;
}
.sec-dot {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	flex-shrink: 0;
}
.sec-title {
	font-size: 20px;
	font-weight: 700;
}
.sec-count {
	font-size: 12px;
	color: var(--text3);
}

/* ----- Brand Card Grid ----- */
.brand-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
}
@media (max-width: 900px) {
	.brand-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 600px) {
	.brand-grid {
		grid-template-columns: 1fr;
	}
}

.brand-card {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 20px;
	padding: 20px;
	transition: all 0.3s ease;
	cursor: pointer;
	text-decoration: none;
	color: inherit;
	display: block;
}
.brand-card:hover {
	border-color: rgba(255, 255, 255, 0.15);
	background: var(--card-hover);
	transform: translateY(-4px);
	box-shadow: var(--shadow-hover);
}
.brand-card:active {
	transform: scale(0.985);
}
.bc-header {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 14px;
}
.bc-logo {
	width: 52px;
	height: 52px;
	border-radius: 14px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 800;
	font-size: 18px;
	color: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}
.brand-card:hover .bc-logo {
	transform: scale(1.05);
}
.bc-info {
	flex: 1;
	min-width: 0;
}
.bc-name {
	font-size: 16px;
	font-weight: 700;
}
.bc-en {
	font-size: 11px;
	color: var(--text3);
	margin-top: 2px;
}
.bc-badge {
	font-size: 10px;
	padding: 3px 10px;
	border-radius: 12px;
	font-weight: 600;
	flex-shrink: 0;
}
.bc-desc {
	font-size: 13px;
	color: var(--text2);
	line-height: 1.7;
	margin-bottom: 14px;
}
.bc-products {
	display: flex;
	gap: 8px;
	overflow-x: auto;
	padding-bottom: 4px;
}
.bc-products::-webkit-scrollbar {
	height: 4px;
}
.bc-products::-webkit-scrollbar-thumb {
	background: var(--border);
	border-radius: 2px;
}

/* Product Chip */
.prod-chip {
	flex-shrink: 0;
	padding: 10px 14px;
	border-radius: 12px;
	text-decoration: none;
	color: var(--text);
	font-size: 12px;
	font-weight: 600;
	display: flex;
	align-items: center;
	gap: 8px;
	transition: all 0.25s ease;
	border: 1px solid var(--border);
	background: var(--bg2);
	min-width: 140px;
}
.prod-chip:hover {
	border-color: rgba(255, 255, 255, 0.2);
	background: var(--card-hover);
	transform: translateY(-2px);
}
.prod-chip .pc-img {
	width: 36px;
	height: 36px;
	border-radius: 8px;
	object-fit: cover;
	background: var(--card);
	flex-shrink: 0;
}
.prod-chip .pc-img-placeholder {
	width: 36px;
	height: 36px;
	border-radius: 8px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 11px;
	font-weight: 700;
	color: #fff;
	flex-shrink: 0;
}
.prod-chip .pc-info {
	flex: 1;
	min-width: 0;
}
.prod-chip .pc-name {
	font-size: 12px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.prod-chip .pc-price {
	font-size: 10px;
	color: var(--gold);
	font-weight: 600;
}
.prod-chip .pc-arrow {
	color: var(--text3);
	font-size: 13px;
	transition: transform 0.2s;
}
.prod-chip:hover .pc-arrow {
	transform: translateX(2px);
}

/* ----- Section ----- */
.section {
	margin-top: 48px;
	padding: 0 32px;
}

/* ----- Main Content Area ----- */
.main {
	padding: 32px;
}

/* ----- Product Page Layout ----- */
.product-layout {
	display: grid;
	grid-template-columns: 420px 1fr;
	gap: 40px;
	align-items: start;
}
@media (max-width: 900px) {
	.product-layout {
		grid-template-columns: 1fr;
	}
}
.product-sidebar {
	position: sticky;
	top: 100px;
}
.product-content {
	min-width: 0;
}

/* Product Image */
.pimg-wrap {
	width: 100%;
	aspect-ratio: 1 / 1;
	border-radius: 24px;
	overflow: hidden;
	background: linear-gradient(145deg, var(--card), var(--card-hover));
	border: 1px solid var(--border);
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	box-shadow: var(--shadow);
}
.pimg-wrap img {
	width: 82%;
	height: 82%;
	object-fit: contain;
	filter: drop-shadow(0 16px 32px rgba(0, 0, 0, 0.5));
	transition: transform 0.4s ease;
}
.pimg-wrap:hover img {
	transform: scale(1.03);
}
.pimg-wrap .badge {
	position: absolute;
	top: 16px;
	right: 16px;
	background: var(--overlay);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	color: var(--text2);
	font-size: 11px;
	padding: 5px 12px;
	border-radius: 8px;
	border: 1px solid rgba(255, 255, 255, 0.08);
}

/* Multi-image thumbnail gallery (e-commerce style) */
.thumb-gallery {
	display: flex;
	gap: 8px;
	margin-top: 10px;
	padding: 0 4px;
	justify-content: center;
}
.thumb-item {
	width: 52px;
	height: 52px;
	object-fit: cover;
	border-radius: 8px;
	cursor: pointer;
	border: 2px solid transparent;
	opacity: 0.6;
	transition: all 0.2s ease;
	background: var(--card);
}
.thumb-item:hover {
	opacity: 0.9;
	border-color: var(--pc);
}
.thumb-item.active {
	opacity: 1;
	border-color: var(--pc);
	box-shadow: 0 0 0 2px var(--pc-rgb, 100,100,100);
}

/* GD-02 Hero */
.hero-wrap {
	position: relative;
	width: 100%;
	aspect-ratio: 4 / 3;
	border-radius: 24px;
	overflow: hidden;
	margin-bottom: 24px;
	background: linear-gradient(135deg, var(--card), var(--card-hover));
	border: 1px solid var(--border);
	display: flex;
	align-items: center;
	justify-content: center;
}
.hero-wrap img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.hero-wrap .brand-badge {
	position: absolute;
	top: 20px;
	left: 20px;
	padding: 8px 16px;
	border-radius: 10px;
	background: rgba(0, 0, 0, 0.6);
	backdrop-filter: blur(16px);
	-webkit-backdrop-filter: blur(16px);
	border: 1px solid rgba(255, 255, 255, 0.08);
	font-size: 12px;
	font-weight: 600;
	color: var(--text2);
}
.hero-wrap .price-tag {
	position: absolute;
	bottom: 20px;
	right: 20px;
	padding: 10px 20px;
	border-radius: 24px;
	background: rgba(0, 0, 0, 0.65);
	backdrop-filter: blur(16px);
	-webkit-backdrop-filter: blur(16px);
	border: 1px solid rgba(192, 168, 112, 0.2);
	font-size: 24px;
	font-weight: 700;
	color: var(--gold);
}

/* Product Info */
.pinfo {
	margin-top: 24px;
}
.pinfo .brand-row {
	font-size: 12px;
	color: var(--text3);
	letter-spacing: 1px;
	margin-bottom: 6px;
}
.pinfo .brand-row span {
	color: var(--pc2, var(--accent));
}
.pinfo h1 {
	font-size: 32px;
	font-weight: 800;
}
.pinfo .en {
	font-size: 14px;
	color: var(--text2);
	margin-top: 4px;
}
.pinfo .slogan {
	font-size: 14px;
	color: var(--text2);
	padding-left: 14px;
	border-left: 3px solid var(--pc, var(--accent));
	margin-top: 12px;
	line-height: 1.6;
}
.pinfo .price-row {
	display: flex;
	align-items: baseline;
	gap: 8px;
	margin-top: 16px;
}
.pinfo .price-num {
	font-size: 36px;
	font-weight: 900;
	letter-spacing: -1px;
}
.pinfo .price-unit {
	font-size: 14px;
	font-weight: 500;
	color: var(--text3);
}

/* Rating Block */
.rating-block {
	margin-top: 24px;
	padding: 20px 24px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	display: flex;
	align-items: center;
	gap: 20px;
	transition: all 0.3s ease;
}
.rating-block:hover {
	border-color: rgba(255, 255, 255, 0.1);
}
.rating-score {
	font-size: 36px;
	font-weight: 700;
	line-height: 1;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.rating-info {
	flex: 1;
}
.rating-stars {
	display: flex;
	gap: 3px;
	font-size: 22px;
	color: #3a3a42;
	margin-bottom: 6px;
	letter-spacing: -1px;
}
.rating-stars .filled {
	color: var(--gold);
}
.rating-label {
	font-size: 12px;
	color: var(--text3);
}

/* Section Label */
.sec-label {
	font-size: 11px;
	font-weight: 700;
	color: var(--text3);
	text-transform: uppercase;
	letter-spacing: 3px;
	margin-top: 32px;
	margin-bottom: 14px;
}

/* Description */
.desc-block {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 20px;
	margin-top: 8px;
	transition: all 0.3s ease;
}
.desc-block:hover {
	border-color: rgba(255, 255, 255, 0.08);
}
.desc-block p {
	font-size: 14px;
	line-height: 1.85;
	color: var(--text2);
}

/* Specs Grid */
.specs-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
	margin-top: 8px;
}
.spec-cell {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 14px;
	padding: 18px 12px;
	text-align: center;
	transition: all 0.3s ease;
	cursor: default;
}
.spec-cell:hover {
	border-color: rgba(255, 255, 255, 0.12);
	transform: translateY(-2px);
	box-shadow: var(--shadow);
}
.spec-cell .val {
	font-size: 14px;
	font-weight: 700;
	word-break: keep-all;
}
.spec-cell .lbl {
	font-size: 10px;
	color: var(--text3);
	margin-top: 6px;
}

/* Photos Grid */
.photos-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 10px;
	margin-top: 8px;
}
.photo-cell {
	aspect-ratio: 1 / 1;
	border-radius: 14px;
	background: var(--card);
	border: 1px solid var(--border);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--text3);
	font-size: 13px;
	text-align: center;
	overflow: hidden;
	transition: all 0.3s ease;
}
.photo-cell:hover {
	border-color: rgba(255, 255, 255, 0.12);
	transform: translateY(-2px);
}
.photo-cell img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Accordion */
.accordion{margin-top:8px}
.acc-item{
  background:var(--card);border:1px solid var(--border);
  border-radius:18px;margin-bottom:10px;overflow:hidden;
  transition:all .3s ease;
}
.acc-item:hover{border-color:rgba(255,255,255,.06)}
.acc-header{
  display:flex;align-items:center;gap:12px;padding:16px 20px;
  cursor:pointer;user-select:none;transition:background .25s;
}
.acc-header:hover{background:rgba(255,255,255,.02)}
.acc-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.acc-dot.acoustic{background:var(--acoustic)}.acc-dot.frequency{background:var(--frequency)}.acc-dot.timbre{background:var(--timbre)}.acc-dot.matching{background:var(--matching)}
.acc-label{font-size:15px;font-weight:600}
.acc-en{font-size:11px;color:var(--text3);margin-left:8px}
.acc-summary{font-size:12px;color:var(--text3);margin-left:auto}
.acc-arrow{font-size:13px;color:var(--text3);transition:transform .35s ease;flex-shrink:0}
.acc-item.open .acc-arrow{transform:rotate(180deg)}
.acc-body{max-height:0;overflow:hidden;transition:max-height .45s ease}
.acc-item.open .acc-body{max-height:800px}
.acc-body-inner{padding:0 20px 20px}

/* Sliders */
.slider-group{margin-bottom:16px}
.slider-group:last-child{margin-bottom:0}
.slider-label-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.slider-name{font-size:14px;font-weight:500}
.slider-zone-indicator{
  font-size:11px;font-weight:600;padding:3px 10px;border-radius:10px;
  transition:all .3s ease;
}
.zone-left{background:rgba(255,255,255,.03);color:var(--text3)}
.zone-mid{background:rgba(255,255,255,.05);color:var(--text2)}
.zone-right{background:rgba(255,255,255,.07);color:var(--text)}
.slider-track-wrapper{position:relative;padding:4px 0 10px}
.tick-marks{display:flex;justify-content:space-between;padding:0 1px;margin-bottom:3px}
.tick{width:2px;height:6px;border-radius:1px}
.tick.major{height:10px}.tick.minor{opacity:.35}
.acc-item.acoustic .tick{background:#5a6e84}.acc-item.frequency .tick{background:#8a705e}
.acc-item.timbre .tick{background:#5e8472}.acc-item.matching .tick{background:#725e84}
.zone-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--text3);margin-top:5px}
.zone-labels span{flex:1;text-align:center;transition:all .25s}
.zone-labels span:first-child{text-align:left}.zone-labels span:last-child{text-align:right}
.zone-labels span.active-zone{color:var(--text);font-weight:600}

input[type="range"]{
  -webkit-appearance:none;appearance:none;width:100%;
  height:6px;border-radius:3px;outline:none;cursor:pointer;margin:0;
  position:relative;z-index:1;
}
input[type="range"]::-webkit-slider-runnable-track{height:6px;border-radius:3px}
input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:24px;height:24px;
  border-radius:50%;border:2.5px solid rgba(255,255,255,.35);
  cursor:pointer;margin-top:-9px;box-shadow:0 3px 12px rgba(0,0,0,.4);
  transition:all .15s ease;
}
input[type="range"]::-webkit-slider-thumb:hover{transform:scale(1.15);border-color:rgba(255,255,255,.5)}
input[type="range"]::-webkit-slider-thumb:active{transform:scale(1.25);border-color:rgba(255,255,255,.6)}

.acc-item.acoustic input[type="range"]::-webkit-slider-runnable-track{background:linear-gradient(90deg,#3a4a5a 0%,#3a4a5a 25%,#4a5a6e 25%,#4a5a6e 33%,#5a6e84 33%,#5a6e84 66%,#6a7e96 66%,#6a7e96 75%,#7a8faa 75%,#7a8faa 100%)}
.acc-item.acoustic input[type="range"]::-webkit-slider-thumb{background:#7a8faa}
.acc-item.frequency input[type="range"]::-webkit-slider-runnable-track{background:linear-gradient(90deg,#5a4a3a 0%,#5a4a3a 25%,#6e5a4a 25%,#6e5a4a 33%,#846e5a 33%,#846e5a 66%,#967e6a 66%,#967e6a 75%,#a88e7a 75%,#a88e7a 100%)}
.acc-item.frequency input[type="range"]::-webkit-slider-thumb{background:#b8977e}
.acc-item.timbre input[type="range"]::-webkit-slider-runnable-track{background:linear-gradient(90deg,#3a5a4a 0%,#3a5a4a 25%,#4a6e5a 25%,#4a6e5a 33%,#5e846e 33%,#5e846e 66%,#6e967e 66%,#6e967e 75%,#7ea88e 75%,#7ea88e 100%)}
.acc-item.timbre input[type="range"]::-webkit-slider-thumb{background:#7daa9a}
.acc-item.matching input[type="range"]::-webkit-slider-runnable-track{background:linear-gradient(90deg,#4a3a5a 0%,#4a3a5a 25%,#5e4a6e 25%,#5e4a6e 33%,#725e84 33%,#725e84 66%,#7e6a96 66%,#7e6a96 75%,#8e7aa8 75%,#8e7aa8 100%)}
.acc-item.matching input[type="range"]::-webkit-slider-thumb{background:#9a82aa}

/* ===== Subjective Listening Perception Visualization (v0.5) ===== */
/* 2x2 compact card layout replacing accordion sliders on product pages */

.viz-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}

.dim-card {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 14px 20px;
	position: relative;
	overflow: hidden;
	transition: all 0.3s ease;
	animation: fadeInUp 0.6s ease backwards;
}

.dim-card:nth-child(1) { animation-delay: 0.05s; }
.dim-card:nth-child(2) { animation-delay: 0.1s; }
.dim-card:nth-child(3) { animation-delay: 0.15s; }
.dim-card:nth-child(4) { animation-delay: 0.2s; }

.dim-card:hover {
	border-color: rgba(255, 255, 255, 0.1);
	background: var(--card-hover);
	transform: translateY(-4px);
	box-shadow: var(--shadow-hover);
}

[data-theme="light"] .dim-card:hover {
	box-shadow: var(--shadow-hover);
}

.dim-card::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 3px;
	background: var(--dim-color);
	opacity: 0.8;
}

.dim-card.acoustic {
	background: linear-gradient(180deg, var(--acoustic-bg) 0%, var(--card) 100%);
}

.dim-card.frequency {
	background: linear-gradient(180deg, var(--frequency-bg) 0%, var(--card) 100%);
}

.dim-card.timbre {
	background: linear-gradient(180deg, var(--timbre-bg) 0%, var(--card) 100%);
}

.dim-card.matching {
	background: linear-gradient(180deg, var(--matching-bg) 0%, var(--card) 100%);
}

.dim-header {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 12px;
}

.dim-dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--dim-color);
	box-shadow: 0 0 8px var(--dim-color);
	flex-shrink: 0;
}

.dim-title {
	font-size: 15px;
	font-weight: 600;
}

.dim-en {
	font-size: 11px;
	color: var(--text3);
	font-weight: 400;
}

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

.metric-item {
	position: relative;
}

.metric-name {
	font-size: 14px;
	font-weight: 600;
	color: var(--text);
	margin-bottom: 8px;
	letter-spacing: 1px;
	text-align: center;
	padding: 3px 0;
	border-bottom: 1px solid var(--border);
	position: relative;
}

.metric-name::after {
	content: '';
	position: absolute;
	bottom: -1px;
	left: 50%;
	transform: translateX(-50%);
	width: 40px;
	height: 2px;
	background: var(--dim-color);
	opacity: 0.6;
	border-radius: 1px;
}

.perception-axis {
	position: relative;
	height: 28px;
	display: flex;
	align-items: center;
	margin: 2px 0;
}

.axis-track {
	width: 100%;
	height: 4px;
	background: rgba(128, 128, 128, 0.1);
	border-radius: 2px;
	position: relative;
}

.axis-track::before,
.axis-track::after {
	content: '';
	position: absolute;
	top: -4px;
	width: 1px;
	height: 12px;
	background: var(--text3);
	opacity: 0.5;
}

.axis-track::before {
	left: 33.33%;
}

.axis-track::after {
	left: 66.66%;
}

.axis-position {
	position: absolute;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: var(--dim-color);
	border: 2px solid var(--card);
	box-shadow: 0 0 0 2px var(--dim-color), 0 0 12px var(--dim-color);
	transition: left 1s cubic-bezier(0.22, 1, 0.36, 1);
	z-index: 2;
}

.axis-fill {
	position: absolute;
	left: 0;
	top: 0;
	height: 100%;
	background: linear-gradient(90deg, var(--dim-dark) 0%, var(--dim-color) 100%);
	border-radius: 2px;
	opacity: 0.3;
	transition: width 1s cubic-bezier(0.22, 1, 0.36, 1);
}

.axis-labels {
	display: flex;
	justify-content: space-between;
	margin-top: 6px;
	position: relative;
	gap: 4px;
}

.axis-label,
.axis-labels span {
	font-size: 11px;
	font-weight: 500;
	color: var(--text3);
	transition: all 0.3s ease;
	text-align: center;
	flex: 1;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	padding: 0 2px;
}

.axis-label:first-child,
.axis-labels span:first-child {
	text-align: left;
}

.axis-label:last-child,
.axis-labels span:last-child {
	text-align: right;
}

.axis-label.active,
.axis-labels span.active {
	color: var(--dim-color);
	font-weight: 700;
	text-shadow: 0 0 8px var(--dim-color);
}

.axis-label.mid,
.axis-labels span.mid {
	position: relative;
}

.axis-label.mid::before,
.axis-labels span.mid::before {
	content: '';
	position: absolute;
	top: -14px;
	left: 50%;
	transform: translateX(-50%);
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--text3);
	opacity: 0.3;
}

.axis-label.mid.active::before,
.axis-labels span.mid.active::before {
	background: var(--dim-color);
	opacity: 1;
	box-shadow: 0 0 6px var(--dim-color);
}

.metric-divider {
	height: 1px;
	background: linear-gradient(90deg, transparent 0%, var(--border) 50%, transparent 100%);
	margin: 0 8px;
	opacity: 0.5;
}

@media (max-width: 900px) {
	.viz-grid {
		grid-template-columns: 1fr;
	}
}

/* Reviews */
.reviews-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-top: 8px;
	margin-bottom: 14px;
}
.reviews-header .sec-label {
	margin-top: 0;
	margin-bottom: 0;
}
.btn-write-review {
	font-size: 13px;
	font-weight: 600;
	color: var(--accent);
	text-decoration: none;
	padding: 8px 18px;
	border: 1px solid var(--border);
	border-radius: 10px;
	transition: all 0.25s ease;
}
.btn-write-review:hover {
	border-color: rgba(255, 255, 255, 0.15);
	background: var(--card-hover);
	transform: translateY(-1px);
}

.review-card {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 20px;
	margin-bottom: 12px;
	transition: all 0.3s ease;
}
.review-card:hover {
	border-color: rgba(255, 255, 255, 0.1);
	transform: translateY(-2px);
	box-shadow: var(--shadow);
}
.review-header {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 12px;
}
.review-avatar {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--border);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 13px;
	font-weight: 600;
	color: var(--text2);
	flex-shrink: 0;
	overflow: hidden;
}
.review-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.review-user {
	font-size: 14px;
	font-weight: 600;
}
.review-user-badges {
	display: flex;
	gap: 4px;
	margin-left: 6px;
}
.review-user-badge {
	font-size: 9px;
	padding: 3px 8px;
	border-radius: 6px;
	background: rgba(255, 255, 255, 0.05);
	color: var(--text2);
}
.review-meta {
	font-size: 12px;
	color: var(--text3);
	margin-left: auto;
}
.review-rating {
	font-size: 13px;
	color: var(--gold);
	font-weight: 600;
	letter-spacing: -1px;
}
.review-body {
	font-size: 14px;
	line-height: 1.85;
	color: var(--text2);
}
.review-tags {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	margin-top: 12px;
}
.review-tag {
	font-size: 10px;
	padding: 4px 10px;
	border-radius: 6px;
	background: rgba(255, 255, 255, 0.04);
	color: var(--text3);
}
.reviews-empty {
	text-align: center;
	padding: 48px 16px;
	color: var(--text3);
	font-size: 14px;
}

/* Bottom Actions */
.bottom-actions {
	display: flex;
	gap: 12px;
	margin-top: 32px;
}
.btn-mark {
	flex: 1;
	padding: 14px;
	border-radius: 14px;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	font-family: inherit;
	transition: all 0.25s ease;
	text-align: center;
	border: 1px solid var(--border);
}
.btn-mark.unmarked {
	background: var(--card);
	color: var(--text2);
}
.btn-mark.unmarked:hover {
	border-color: var(--text2);
	color: var(--text);
	transform: translateY(-1px);
}
.btn-mark.marked {
	background: rgba(255, 255, 255, 0.05);
	border-color: rgba(255, 255, 255, 0.15);
	color: var(--text);
}
.btn-back {
	flex: 1;
	padding: 14px;
	border-radius: 14px;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	font-family: inherit;
	transition: all 0.25s ease;
	text-align: center;
	text-decoration: none;
	display: block;
	background: var(--card);
	border: 1px solid var(--border);
	color: var(--text2);
}
.btn-back:hover {
	border-color: rgba(255, 255, 255, 0.15);
	color: var(--text);
	transform: translateY(-1px);
}

/* ----- Brand Page ----- */
.brand-hero {
	text-align: center;
	padding: 40px 32px 32px;
}
.brand-logo {
	width: 96px;
	height: 96px;
	border-radius: 28px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 36px;
	font-weight: 900;
	color: #fff;
	margin: 0 auto 18px;
	box-shadow: var(--shadow);
	transition: transform 0.3s ease;
}
.brand-logo:hover {
	transform: scale(1.05);
}
.brand-name {
	font-size: 28px;
	font-weight: 800;
	margin-bottom: 6px;
}
.brand-en {
	font-size: 13px;
	color: var(--text3);
	letter-spacing: 2px;
	margin-bottom: 14px;
}
.brand-slogan {
	font-size: 14px;
	padding: 10px 20px;
	border-radius: 24px;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.06);
	display: inline-block;
	transition: all 0.3s ease;
}
.brand-stats {
	display: flex;
	gap: 40px;
	justify-content: center;
	margin-top: 28px;
}
.brand-stat {
	text-align: center;
}
.brand-stat .num {
	font-size: 24px;
	font-weight: 900;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.brand-stat .lbl {
	font-size: 11px;
	color: var(--text3);
	margin-top: 4px;
}
.brand-meta {
	display: flex;
	gap: 20px;
	justify-content: center;
	margin-top: 16px;
	font-size: 12px;
	color: var(--text3);
}
.brand-meta span {
	display: flex;
	align-items: center;
	gap: 6px;
}

/* Product List (brand page) */
.product-list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
	margin-top: 8px;
}
@media (max-width: 900px) {
	.product-list {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 600px) {
	.product-list {
		grid-template-columns: 1fr;
	}
}
.prod-card {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 16px;
	text-decoration: none;
	color: inherit;
	transition: all 0.3s ease;
}
.prod-card:hover {
	border-color: rgba(255, 255, 255, 0.12);
	background: var(--card-hover);
	transform: translateY(-3px);
	box-shadow: var(--shadow-hover);
}
.prod-card .pc-img {
	width: 52px;
	height: 52px;
	border-radius: 12px;
	object-fit: cover;
	background: var(--bg2);
	flex-shrink: 0;
}
.prod-card .pc-placeholder {
	width: 52px;
	height: 52px;
	border-radius: 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 14px;
	font-weight: 700;
	color: #fff;
	flex-shrink: 0;
}
.prod-card .pc-info {
	flex: 1;
	min-width: 0;
}
.prod-card .pc-name {
	font-size: 15px;
	font-weight: 600;
}
.prod-card .pc-tagline {
	font-size: 11px;
	color: var(--text3);
	margin-top: 3px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.prod-card .pc-price {
	font-size: 16px;
	font-weight: 700;
	color: var(--gold);
	flex-shrink: 0;
}
.prod-card .pc-arrow {
	color: var(--text3);
	font-size: 15px;
	flex-shrink: 0;
	transition: transform 0.2s;
}
.prod-card:hover .pc-arrow {
	transform: translateX(3px);
}

/* Brand Rating (interactive) */
.rating-big-num {
	font-size: 56px;
	font-weight: 900;
	line-height: 1;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	margin-bottom: 6px;
}
.rating-star-row {
	display: flex;
	gap: 6px;
	justify-content: center;
	font-size: 32px;
	margin-bottom: 10px;
}
.rating-star-row .star {
	cursor: pointer;
	color: #3a3a42;
	transition: all 0.15s ease;
	user-select: none;
}
.rating-star-row .star.active {
	color: var(--gold);
}
.rating-star-row .star:hover {
	transform: scale(1.2);
	color: var(--gold);
}
.rating-hint {
	font-size: 12px;
	color: var(--text3);
	margin-top: 8px;
}

/* Nozzle System */
.nozzle-section {
	margin-top: 32px;
}
.nozzle-cards {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
	margin-top: 14px;
}
@media (max-width: 700px) {
	.nozzle-cards {
		grid-template-columns: 1fr;
	}
}
.nozzle-card {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px;
	border-radius: 16px;
	border: 1px solid var(--border);
	background: var(--card);
	transition: all 0.3s ease;
}
.nozzle-card:hover {
	border-color: rgba(255, 255, 255, 0.1);
	transform: translateY(-3px);
	box-shadow: var(--shadow);
}
.nozzle-dot {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	font-weight: 700;
}
.nozzle-dot.black {
	background: linear-gradient(135deg, #2a2a2e, #1a1a1e);
	border: 1.5px solid #3a3a3e;
	color: var(--text3);
}
.nozzle-dot.blue {
	background: linear-gradient(135deg, #2a3a5a, #1a2a4a);
	border: 1.5px solid #4a6a9a;
	color: #7a9aca;
}
.nozzle-dot.red {
	background: linear-gradient(135deg, #4a2a2a, #3a1a1a);
	border: 1.5px solid #8a4a4a;
	color: #ca7a7a;
}
.nozzle-info {
	flex: 1;
	min-width: 0;
}
.nozzle-name {
	font-size: 15px;
	font-weight: 600;
	margin-bottom: 3px;
}
.nozzle-desc {
	font-size: 12px;
	color: var(--text3);
}
.nozzle-tag {
	font-size: 10px;
	padding: 4px 10px;
	border-radius: 6px;
	flex-shrink: 0;
	background: rgba(255, 255, 255, 0.03);
	color: var(--text2);
	border: 1px solid var(--border);
}

/* DAC Highlight */
.dac-highlight {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 18px;
	background: rgba(255, 255, 255, 0.02);
	border: 1px solid var(--border);
	border-radius: 14px;
	margin-top: 14px;
	transition: all 0.3s ease;
}
.dac-highlight:hover {
	border-color: rgba(255, 255, 255, 0.1);
}
.dac-icon {
	font-size: 24px;
	flex-shrink: 0;
}
.dac-info {
	flex: 1;
}
.dac-title {
	font-size: 14px;
	font-weight: 600;
	margin-bottom: 3px;
}
.dac-desc {
	font-size: 12px;
	color: var(--text3);
}
.dac-badge {
	font-size: 10px;
	font-weight: 600;
	padding: 5px 12px;
	border-radius: 10px;
	background: rgba(255, 255, 255, 0.04);
	color: var(--text2);
}

/* Rating Bars (TK-01) */
.rating-breakdown {
	margin-top: 8px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 24px;
}
.rb-row {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 14px;
}
.rb-row:last-child {
	margin-bottom: 0;
}
.rb-label {
	font-size: 14px;
	color: var(--text2);
	width: 70px;
	flex-shrink: 0;
	text-align: right;
}
.rb-bar-wrap {
	flex: 1;
	height: 10px;
	background: var(--border);
	border-radius: 5px;
	overflow: hidden;
}
.rb-bar-fill {
	height: 100%;
	border-radius: 5px;
	background: linear-gradient(90deg, #8a72a0, #9a82aa);
	transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
.rb-score {
	font-size: 13px;
	font-weight: 600;
	color: var(--text2);
	width: 28px;
	text-align: right;
	flex-shrink: 0;
}

/* ----- Forms ----- */
.form-card {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 20px;
	padding: 28px;
	margin-bottom: 20px;
	transition: all 0.3s ease;
}
.form-card:hover {
	border-color: rgba(255, 255, 255, 0.06);
}
.form-group {
	margin-bottom: 20px;
}
.form-group:last-child {
	margin-bottom: 0;
}
.form-label {
	display: block;
	font-size: 11px;
	font-weight: 700;
	color: var(--text2);
	margin-bottom: 8px;
	text-transform: uppercase;
	letter-spacing: 2px;
}
.form-input {
	width: 100%;
	padding: 14px 18px;
	background: var(--bg2);
	border: 1px solid var(--border);
	border-radius: 12px;
	color: var(--text);
	font-size: 15px;
	font-family: inherit;
	transition: all 0.25s ease;
	outline: none;
}
.form-input:focus {
	border-color: rgba(255, 255, 255, 0.25);
	box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.02);
}
.form-input::placeholder {
	color: var(--text3);
}
.form-hint {
	font-size: 11px;
	color: var(--text3);
	margin-top: 6px;
}
.form-error {
	font-size: 12px;
	color: var(--danger);
	margin-top: 6px;
	display: none;
}

/* Buttons */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 14px 28px;
	border-radius: 14px;
	font-size: 15px;
	font-weight: 700;
	cursor: pointer;
	font-family: inherit;
	transition: all 0.25s ease;
	border: none;
	text-decoration: none;
}
.btn-primary {
	background: var(--accent);
	color: #fff;
	width: 100%;
}
.btn-primary:hover {
	opacity: 0.85;
	transform: translateY(-1px);
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
.btn-primary:active {
	transform: scale(0.98);
}
.btn-outline {
	background: transparent;
	border: 1px solid var(--border);
	color: var(--text2);
	width: 100%;
}
.btn-outline:hover {
	color: var(--text);
	border-color: rgba(255, 255, 255, 0.2);
	transform: translateY(-1px);
}
.btn-ghost {
	background: transparent;
	color: var(--danger);
	font-size: 13px;
	font-weight: 500;
	padding: 10px;
	border: none;
	cursor: pointer;
}
.btn-ghost:hover {
	opacity: 0.8;
}

/* Tab Switch */
.tab-switch {
	display: flex;
	margin-bottom: 24px;
	background: var(--card);
	border-radius: 14px;
	padding: 5px;
	border: 1px solid var(--border);
}
.tab-btn {
	flex: 1;
	text-align: center;
	padding: 12px;
	font-size: 14px;
	font-weight: 600;
	border-radius: 10px;
	cursor: pointer;
	transition: all 0.25s ease;
	border: none;
	background: none;
	color: var(--text2);
	font-family: inherit;
}
.tab-btn.active {
	background: var(--card-hover);
	color: var(--text);
}

/* Login */
.login-hero {
	text-align: center;
	margin-bottom: 40px;
}
.login-hero .icon {
	width: 72px;
	height: 72px;
	border-radius: 50%;
	background: var(--card);
	border: 1px solid var(--border);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 32px;
	margin: 0 auto 20px;
}
.login-hero .icon .site-mark {
	width: 40px;
	height: 40px;
	filter: invert(1);
}
[data-theme="light"] .login-hero .icon .site-mark {
	filter: none;
}
.login-hero h2 {
	font-size: 24px;
	font-weight: 700;
	margin-bottom: 8px;
}
.login-hero p {
	font-size: 13px;
	color: var(--text3);
}

	font-size: 11px;
	color: var(--text3);
	text-align: center;
	margin-bottom: 14px;
	letter-spacing: 3px;
	text-transform: uppercase;
}
.quick-accounts {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
}
@media (max-width: 700px) {
	.quick-accounts {
		grid-template-columns: 1fr;
	}
}
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 18px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 14px;
	cursor: pointer;
	transition: all 0.3s ease;
}
	border-color: rgba(255, 255, 255, 0.15);
	background: var(--card-hover);
	transform: translateY(-2px);
	box-shadow: var(--shadow);
}
	width: 40px;
	height: 40px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	font-size: 15px;
	color: #fff;
	flex-shrink: 0;
}
	flex: 1;
	min-width: 0;
}
	font-size: 14px;
	font-weight: 600;
}
	font-size: 10px;
	color: var(--text3);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
	display: flex;
	gap: 4px;
	flex-wrap: wrap;
	margin-top: 4px;
}
	font-size: 9px;
	padding: 2px 7px;
	border-radius: 6px;
	background: rgba(255, 255, 255, 0.04);
	color: var(--text3);
}

/* Profile */
.profile-card {
	text-align: center;
	padding: 28px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 20px;
	margin-bottom: 20px;
}
.profile-card .pc-avatar {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 26px;
	font-weight: 900;
	color: #fff;
	margin: 0 auto 14px;
}
.profile-card .pc-name {
	font-size: 20px;
	font-weight: 700;
}
.profile-card .pc-bio {
	font-size: 13px;
	color: var(--text2);
	margin-top: 6px;
}
.profile-card .pc-badges {
	display: flex;
	gap: 8px;
	justify-content: center;
	margin-top: 12px;
	flex-wrap: wrap;
}

/* Chat Form Layout (centered) */
.centered-form {
	max-width: 640px;
	margin: 0 auto;
	padding: 32px;
}

/* Footer */
.footer {
	padding: 40px 32px;
	text-align: center;
	font-size: 12px;
	color: var(--text3);
	border-top: 1px solid var(--border);
}

/* Empty State */
.empty-state {
	text-align: center;
	padding: 60px 16px;
	color: var(--text3);
}
.empty-state .emoji,
.empty-state .icon {
	font-size: 48px;
	margin-bottom: 16px;
}
.empty-state p {
	font-size: 14px;
	line-height: 1.7;
}

/* Form Write Review */
.btn-write-wrap {
	margin-top: 16px;
}
.btn-write {
	width: 100%;
	padding: 14px;
	border-radius: 14px;
	font-size: 15px;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
	transition: all 0.25s ease;
	background: var(--card);
	border: 1px solid var(--border);
	color: var(--text2);
}
.btn-write:hover {
	border-color: rgba(255, 255, 255, 0.15);
	color: var(--text);
	background: var(--card-hover);
	transform: translateY(-1px);
}

.write-form {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 24px;
	margin-top: 16px;
	display: none;
}
.write-form.open {
	display: block;
	animation: fadeInUp 0.3s ease;
}
.write-form textarea {
	width: 100%;
	padding: 14px;
	background: var(--bg2);
	border: 1px solid var(--border);
	border-radius: 12px;
	color: var(--text);
	font-size: 14px;
	font-family: inherit;
	resize: vertical;
	min-height: 100px;
	line-height: 1.7;
	transition: border-color 0.25s;
}
.write-form textarea:focus {
	outline: none;
	border-color: rgba(255, 255, 255, 0.15);
}
.write-form textarea::placeholder {
	color: var(--text3);
}

/* Star Picker */
.star-picker {
	display: flex;
	gap: 6px;
	font-size: 30px;
}
.star-picker .sp {
	cursor: pointer;
	color: #3a3a42;
	transition: all 0.12s ease;
	user-select: none;
}
.star-picker .sp.active {
	color: var(--gold);
}
.star-picker .sp:hover {
	transform: scale(1.2);
}

/* Form actions */
.form-actions {
	display: flex;
	gap: 10px;
}
.form-actions button {
	flex: 1;
	padding: 12px;
	border-radius: 12px;
	font-size: 14px;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
	transition: all 0.2s ease;
}
.btn-submit {
	background: var(--accent);
	border: none;
	color: #fff;
}
.btn-submit:hover {
	opacity: 0.85;
	transform: translateY(-1px);
}
.btn-cancel {
	background: var(--card);
	border: 1px solid var(--border);
	color: var(--text2);
}
.btn-cancel:hover {
	border-color: rgba(255, 255, 255, 0.15);
	color: var(--text);
}

/* ----- Card hover animations ----- */
@keyframes cardGlow {
	0% {
		box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
	}
	50% {
		box-shadow: 0 0 20px 2px rgba(255, 255, 255, 0.02);
	}
	100% {
		box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
	}
}

/* Smooth page transitions */
.main {
	animation: fadeIn 0.4s ease;
}
@keyframes fadeIn {
	0% {
		opacity: 0;
	}
	100% {
		opacity: 1;
	}
}

/* ----- Responsive ----- */
@media (max-width: 1024px) {
	.product-layout {
		grid-template-columns: 1fr;
	}
	.product-sidebar {
		position: static;
		max-width: 400px;
		margin: 0 auto;
	}
	.hero h1 {
		font-size: 36px;
	}
	.brand-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 768px) {
	.nav {
		padding: 10px 16px;
	}
	.main {
		padding: 20px 16px 40px;
	}
	.hero {
		padding: 32px 16px 24px;
	}
	.hero h1 {
		font-size: 28px;
	}
	.hero-stats {
		gap: 24px;
	}
	.section {
		padding: 0 16px;
	}
	.brand-grid {
		grid-template-columns: 1fr;
	}
	.product-list {
		grid-template-columns: 1fr;
	}
	.specs-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.photos-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.nozzle-cards {
		grid-template-columns: 1fr;
	}
	.quick-accounts {
		grid-template-columns: 1fr;
	}
	.nav-search {
		max-width: 200px;
	}
	.theme-toggle {
		bottom: 20px;
		right: 20px;
		width: 42px;
		height: 42px;
		font-size: 18px;
	}
}

/* ----- Mobile (max-width: 480px) ----- */
@media (max-width: 480px) {
	/* Container */
	.app {
		max-width: 430px;
	}

	/* Nav */
	.nav {
		padding: 10px 14px;
	}
	.nav-brand {
		font-size: 17px;
		letter-spacing: 1px;
	}
	.nav-brand-mark {
		width: 22px;
		height: 22px;
	}
	.nav-links {
		gap: 8px;
	}
	.nav-links a {
		font-size: 11px;
		padding: 5px 12px;
	}
	.nav-links a.avatar-btn {
		width: 32px;
		height: 32px;
		font-size: 12px;
	}
	.nav-links a[href="product-add.html"] {
		display: none;
	}

	/* Hero */
	.hero {
		padding: 32px 14px 24px;
	}
	.hero h1 {
		font-size: 24px;
		letter-spacing: 0;
	}
	.hero p {
		font-size: 13px;
		max-width: 100%;
		padding: 0 4px;
	}
	.hero-stats {
		gap: 20px;
		margin-top: 22px;
	}
	.hero-stat .num {
		font-size: 20px;
	}
	.hero-stat .lbl {
		font-size: 9px;
	}

	/* Main / Section */
	.main {
		padding: 16px 14px 32px;
	}
	.section {
		padding: 0 14px;
	}

	/* Product layout → single column */
	.product-layout {
		grid-template-columns: 1fr;
		gap: 24px;
	}
	.product-sidebar {
		position: static;
		max-width: 100%;
		margin: 0;
	}
	.product-content {
		width: 100%;
	}
	.pimg-wrap {
		border-radius: 16px;
	}
	.pimg-wrap img {
		width: 78%;
		height: 78%;
	}
	.thumb-gallery {
		gap: 6px;
	}
	.thumb-item {
		width: 40px;
		height: 40px;
		border-radius: 6px;
	}
	.hero-wrap {
		border-radius: 16px;
		margin-bottom: 16px;
	}
	.hero-wrap .price-tag {
		font-size: 18px;
		padding: 8px 16px;
	}
	.hero-wrap .brand-badge {
		font-size: 10px;
		padding: 5px 10px;
	}

	/* Product info */
	.pinfo h1 {
		font-size: 22px;
	}
	.pinfo .en {
		font-size: 12px;
	}
	.pinfo .slogan {
		font-size: 13px;
	}
	.pinfo .price-num {
		font-size: 26px;
	}
	.pinfo .price-unit {
		font-size: 12px;
	}
	.pinfo .brand-row {
		font-size: 11px;
	}

	/* Rating block */
	.rating-score {
		font-size: 40px;
	}
	.rating-stars .star {
		font-size: 18px;
	}
	.rating-block {
		padding: 16px 14px;
		gap: 14px;
	}
	.rating-label {
		font-size: 10px;
	}

	/* Section labels */
	.sec-label {
		font-size: 10px;
		letter-spacing: 2px;
		margin-top: 24px;
		margin-bottom: 10px;
	}
	.sec-header {
		gap: 8px;
		margin-bottom: 14px;
	}
	.sec-title {
		font-size: 15px;
	}

	/* Description */
	.desc-block {
		padding: 16px;
		border-radius: 14px;
	}
	.desc-block p {
		font-size: 13px;
	}

	/* Specs grid → 2 columns */
	.specs-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 8px;
	}
	.spec-cell {
		padding: 14px 10px;
		border-radius: 12px;
	}
	.spec-cell .val {
		font-size: 13px;
	}
	.spec-cell .lbl {
		font-size: 10px;
	}

	/* Photos grid → 2 columns */
	.photos-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 8px;
	}
	.photo-cell {
		border-radius: 12px;
		font-size: 12px;
	}

	/* Nav (mobile) */
	.nav-search {
		max-width: 160px;
		margin: 0 8px;
		padding: 6px 10px;
	}
	.nav-search input {
		font-size: 11px;
	}

	/* Brand page */
	.brand-hero {
		padding: 28px 14px 24px;
	}
	.brand-logo {
		width: 80px;
		height: 80px;
		border-radius: 22px;
		font-size: 28px;
		margin-bottom: 14px;
	}
	.brand-name {
		font-size: 22px;
	}
	.brand-en {
		font-size: 11px;
	}
	.brand-slogan {
		margin-top: 10px;
		font-size: 12px;
		padding: 8px 14px;
	}
	.brand-stats {
		gap: 24px;
		margin-top: 20px;
	}
	.brand-stat .num {
		font-size: 20px;
	}
	.brand-stat .lbl {
		font-size: 10px;
	}
	.brand-meta {
		font-size: 11px;
		gap: 14px;
	}

	/* Product list → vertical stack */
	.product-list {
		grid-template-columns: 1fr;
		gap: 8px;
	}
	.prod-card {
		padding: 14px;
		gap: 12px;
	}
	.prod-card .pc-img {
		width: 48px;
		height: 48px;
		border-radius: 10px;
	}
	.prod-card .pc-placeholder {
		width: 48px;
		height: 48px;
		border-radius: 10px;
		font-size: 12px;
	}
	.prod-card .pc-name {
		font-size: 14px;
	}
	.prod-card .pc-tagline {
		font-size: 11px;
	}
	.prod-card .pc-price {
		font-size: 14px;
	}

	/* Brand grid → single column */
	.brand-grid {
		grid-template-columns: 1fr;
		gap: 10px;
	}
	.brand-card {
		padding: 16px;
		border-radius: 16px;
	}
	.bc-logo {
		width: 44px;
		height: 44px;
		border-radius: 12px;
		font-size: 15px;
	}
	.bc-name {
		font-size: 15px;
	}
	.bc-desc {
		font-size: 12px;
	}
	.prod-chip {
		min-width: 110px;
		padding: 6px 10px;
	}
	.prod-chip .pc-img {
		width: 30px;
		height: 30px;
	}
	.prod-chip .pc-placeholder {
		width: 30px;
		height: 30px;
		font-size: 10px;
	}
	.bc-products {
		gap: 4px;
	}

	/* Index brand tiles */
	.index-grid {
		grid-template-columns: 1fr;
		gap: 10px;
		padding: 0 14px 20px;
	}
	.brand-tile .bt-header {
		padding: 14px 16px 10px;
	}
	.bt-logo {
		width: 42px;
		height: 42px;
		border-radius: 12px;
		font-size: 15px;
	}
	.bt-name {
		font-size: 15px;
	}
	.bt-desc {
		font-size: 11px;
		padding: 0 16px 12px;
	}
	.bt-products {
		padding: 8px 12px 4px;
		gap: 0;
	}
	.bt-prod {
		padding: 6px 10px;
		font-size: 11px;
		gap: 8px;
	}
	.bt-prod-img {
		width: 28px;
		height: 28px;
		border-radius: 7px;
	}
	.bt-prod-placeholder {
		width: 28px;
		height: 28px;
		font-size: 10px;
	}

	/* Nozzle cards → single column */
	.nozzle-cards {
		grid-template-columns: 1fr;
		gap: 8px;
	}
	.nozzle-card {
		padding: 14px;
		gap: 12px;
	}
	.nozzle-card .nc-title {
		font-size: 14px;
	}
	.nozzle-dot {
		width: 32px;
		height: 32px;
	}

	/* Quick login → single column */
	.quick-accounts {
		grid-template-columns: 1fr;
	}
		padding: 14px 16px;
	}

	/* img-grid → 2 columns */
	.img-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 8px;
	}
	.img-slot {
		border-radius: 10px;
		font-size: 22px;
		min-height: 90px;
	}

	/* Reviewed images → 2 columns */
	.reviewed-images {
		grid-template-columns: repeat(2, 1fr);
		gap: 6px;
	}

	/* Compare wrap → single column */
	.compare-wrap.active {
		grid-template-columns: 1fr;
	}

	/* Stats row → 2 columns */
	.stats-row {
		grid-template-columns: repeat(2, 1fr);
		gap: 8px;
		padding: 0 14px;
	}

	/* Rating elements */
	.rating-big-num {
		font-size: 40px;
	}
	.rating-star-row {
		font-size: 26px;
		gap: 4px;
	}
	.rating-big-display {
		font-size: 36px;
		min-width: 60px;
	}
	.rating-breakdown {
		padding: 16px;
		border-radius: 14px;
	}
	.rb-label {
		width: 55px;
		font-size: 12px;
	}
	.rb-score {
		width: 24px;
		font-size: 12px;
	}
	.rb-bar-fill {
		height: 6px;
	}

	/* Star rating precise */
	.srp-stars .srp-star {
		font-size: 32px;
	}
	.srp-value {
		font-size: 28px;
		min-width: 56px;
	}
	.srp-fine button {
		width: 24px;
		height: 24px;
		font-size: 13px;
	}
	.rating-slider-row input[type="range"]::-webkit-slider-thumb {
		width: 22px;
		height: 22px;
	}

	/* Star picker */
	.star-picker {
		font-size: 26px;
	}
	.star-picker .sp.star {
		font-size: 26px;
	}

	/* Forms */
	.form-card {
		padding: 18px;
		border-radius: 16px;
	}
	.form-input {
		padding: 12px 14px;
		font-size: 14px;
	}
	.form-label {
		font-size: 10px;
		letter-spacing: 1px;
	}
	.form-group {
		margin-bottom: 14px;
	}
	.centered-form {
		max-width: 100%;
		padding: 16px 14px;
	}

	/* Login */
	.login-hero .icon {
		width: 56px;
		height: 56px;
		font-size: 24px;
	}
	.login-hero h2 {
		font-size: 20px;
	}
	.login-hero p {
		font-size: 13px;
	}

	/* Buttons */
	.btn {
		padding: 12px 20px;
		font-size: 14px;
	}
	.btn-primary {
		padding: 12px 20px;
		font-size: 14px;
	}
	.btn-outline {
		padding: 12px 20px;
		font-size: 14px;
	}
	.bottom-actions {
		gap: 8px;
		margin-top: 24px;
	}
	.btn-mark,
	.btn-back {
		padding: 12px;
		font-size: 14px;
		border-radius: 12px;
	}

	/* Review cards */
	.review-card {
		padding: 16px;
		border-radius: 14px;
		margin-bottom: 8px;
	}
	.review-header {
		gap: 10px;
	}
	.review-avatar {
		width: 30px;
		height: 30px;
		font-size: 11px;
		overflow: hidden;
	}
	.review-avatar img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}
	.review-user {
		font-size: 13px;
	}
	.review-date {
		font-size: 11px;
	}
	.review-body {
		font-size: 13px;
	}
	.review-tag {
		font-size: 10px;
		padding: 2px 8px;
	}
	.reviews-header {
		margin-bottom: 12px;
	}
	.reviews-header .rh-title {
		font-size: 14px;
	}
	.btn-write-review {
		font-size: 12px;
		padding: 7px 14px;
	}

	/* Write review form */
	.write-form {
		padding: 16px;
		border-radius: 14px;
	}
	.write-form textarea {
		font-size: 13px;
		padding: 12px;
	}
	.form-actions {
		gap: 8px;
	}
	.form-actions .btn {
		font-size: 13px;
		padding: 10px;
	}

	/* Profile */
	.profile-header {
		padding: 24px 14px;
	}
	.ph-avatar {
		width: 68px;
		height: 68px;
		font-size: 28px;
	}
	.ph-name {
		font-size: 20px;
	}
	.ph-bio {
		font-size: 13px;
		max-width: 100%;
	}
	.profile-card {
		padding: 18px;
	}
	.profile-card .pc-avatar {
		width: 52px;
		height: 52px;
		font-size: 22px;
	}
	.profile-card .pc-name {
		font-size: 18px;
	}
	.marked-card {
		padding: 14px;
		border-radius: 14px;
	}
	.marked-card .mc-img {
		width: 42px;
		height: 42px;
	}
	.marked-card .mc-img-placeholder {
		width: 42px;
		height: 42px;
	}
	.marked-card .mc-name {
		font-size: 13px;
	}
	.marked-card .mc-score {
		font-size: 16px;
	}
	.rc-header {
		gap: 8px;
	}
	.rc-avatar {
		width: 24px;
		height: 24px;
		font-size: 10px;
	}
	.rc-text {
		font-size: 12px;
	}

	/* Smart fill */
	.smart-fill {
		padding: 16px;
		border-radius: 16px;
		margin-bottom: 16px;
	}
	.smart-fill .sf-title {
		font-size: 14px;
	}
	.smart-fill textarea {
		font-size: 12px;
		height: 70px;
	}
	.smart-fill .sf-btn {
		font-size: 12px;
		padding: 8px;
	}
	.smart-fill .sf-url input {
		font-size: 11px;
		padding: 6px 10px;
	}
	.smart-fill .sf-url button {
		font-size: 11px;
		padding: 6px 12px;
	}

	/* Label picker */
	.label-picker {
		gap: 6px;
	}
	.label-picker-btn {
		min-width: 0;
		padding: 10px 6px;
		font-size: 11px;
	}
	.label-picker-btn .lp-icon {
		font-size: 16px;
	}
	.label-picker-btn .lp-count {
		font-size: 10px;
	}

	/* Review label badge */
	.review-label-badge {
		font-size: 9px;
		padding: 2px 7px;
	}

	/* DAC highlight */
	.dac-highlight {
		padding: 14px;
		gap: 10px;
		border-radius: 14px;
	}
	.dac-title {
		font-size: 13px;
	}
	.dac-desc {
		font-size: 12px;
	}

	/* Guide card */
	.guide-card {
		padding: 18px;
		border-radius: 14px;
	}
	.guide-card .gtitle {
		font-size: 15px;
	}
	.guide-card p {
		font-size: 12px;
	}

	/* Extra note */
	.extra-note {
		padding: 12px 16px;
		font-size: 12px;
		border-radius: 12px;
	}

	/* Radar */
	.radar-wrap {
		padding: 16px;
		border-radius: 16px;
	}
	.radar-header .score-big {
		font-size: 36px;
	}

	/* Mode tabs */
	.mode-tab {
		font-size: 13px;
		padding: 8px;
	}

	/* Tag chips */
	.tag-chip {
		padding: 7px 12px;
		font-size: 12px;
	}
	.tags-section {
		gap: 6px;
	}

	/* Product bar */
	.prod-bar {
		padding: 14px;
		gap: 12px;
		border-radius: 14px;
	}
	.prod-bar img {
		width: 42px;
		height: 42px;
	}
	.prod-bar .pn {
		font-size: 14px;
	}
	.prod-bar .ps {
		font-size: 12px;
	}

	/* submit */
	.submit-btn {
		padding: 14px;
		font-size: 15px;
		border-radius: 12px;
	}

	/* Slider card */
	.slider-card {
		padding: 16px;
		border-radius: 16px;
	}
	.slider-group-header {
		font-size: 14px;
	}
	.slider-row {
		gap: 8px;
	}
	.slider-row .sl-label {
		font-size: 12px;
		width: 50px;
	}

	/* Weight panel */
	.weight-toggle {
		font-size: 13px;
		padding: 10px 14px;
	}
	.weight-label {
		width: 65px;
		font-size: 11px;
	}
	.weight-input {
		width: 38px;
		font-size: 11px;
		padding: 4px;
	}

	/* Compare mode */
	.compare-col {
		padding: 16px;
		border-radius: 14px;
	}
	.compare-col .cc-name {
		font-size: 16px;
	}
	.compare-col .cc-score {
		font-size: 30px;
	}

	/* Sig badges */
	.sig-wrap {
		gap: 6px;
	}
	.sig-badge {
		font-size: 11px;
		padding: 6px 12px;
	}

	/* Footer */
	.footer {
		padding: 28px 14px;
		font-size: 11px;
	}

	/* Theme toggle */
	.theme-toggle {
		bottom: 14px;
		right: 14px;
		width: 38px;
		height: 38px;
		font-size: 17px;
	}

	/* Touch feedback — all clickable cards */
	.brand-card:active,
	.prod-card:active,
	.review-card:active,
	.spec-cell:active,
	.nozzle-card:active,
	.marked-card:active,
	.guide-card:active,
	.form-card:active,
	.prod-chip:active,
	.bt-prod:active {
		transform: scale(0.985);
	}

	/* Product info row */
	.product-info-row {
		grid-template-columns: 1fr;
		gap: 10px;
	}

	/* New brand form row */
	.new-brand-form .row {
		grid-template-columns: 1fr;
		gap: 10px;
	}

	/* Hero image upload */
	.hero-img-upload {
		aspect-ratio: 16 / 9;
		border-radius: 14px;
	}
	.hero-img-upload .hiu-placeholder {
		font-size: 28px;
	}

	/* login prompt */
	.login-prompt {
		padding: 20px 16px;
	}
	.login-prompt .lp-icon {
		font-size: 28px;
	}
	.login-prompt .lp-title {
		font-size: 16px;
	}

	/* reviewed state */
	.reviewed-card {
		padding: 16px;
		border-radius: 14px;
	}
	.reviewed-card-header {
		gap: 10px;
	}
	.reviewed-body {
		font-size: 13px;
	}

	/* empty state */
	.empty-state {
		padding: 28px 16px;
	}
	.empty-state .es-icon {
		font-size: 32px;
	}

	/* More brands */
	.more-brands {
		padding: 8px 14px 32px;
	}

	/* Cleanup */
	.cleanup-grid {
		grid-template-columns: 1fr;
	}
	.cleanup-card {
		padding: 16px;
		border-radius: 14px;
	}

	/* Actions row */
	.actions {
		gap: 8px;
	}
	.actions .btn {
		font-size: 12px;
		padding: 10px 16px;
	}

	/* Tab switch */
	.tab-switch {
		gap: 4px;
	}
	.tab-btn {
		font-size: 13px;
		padding: 8px 16px;
	}

	/* Checkbox / toggle helpers */
	.form-check label {
		font-size: 13px;
	}

	/* rating hint */
	.rating-hint {
		font-size: 11px;
	}

	/* reviewed badge */
	.review-type-badge {
		font-size: 10px;
		padding: 2px 8px;
	}

	/* brand card extra */
	.brand-card .bc-products {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}

	/* specs cell hover on mobile — disable scale */
	.spec-cell:hover {
		transform: none;
	}

	/* signed-in state adjustments */
	#reviewed-state .sound-snapshot {
		font-size: 11px;
	}
}

/* Extra note */
.extra-note {
	margin-top: 10px;
	padding: 16px 20px;
	background: rgba(255, 255, 255, 0.02);
	border: 1px solid var(--border);
	border-radius: 14px;
	font-size: 13px;
	color: var(--text2);
	line-height: 1.7;
	display: flex;
	align-items: flex-start;
	gap: 10px;
}
.extra-note .icon {
	font-size: 16px;
	flex-shrink: 0;
	color: var(--text2);
}

/* Rating hint */
.rating-hint .rated-text {
	color: var(--text);
	font-weight: 600;
}
.rating-current {
	font-size: 12px;
	color: var(--text3);
	margin-bottom: 10px;
}

/* Guide card */
.guide-card {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 24px;
	margin-bottom: 32px;
}
.guide-card .gtitle {
	font-size: 16px;
	font-weight: 600;
	margin-bottom: 14px;
}
.guide-card .sec-label {
	margin-top: 16px;
	margin-bottom: 8px;
}
.guide-card p {
	font-size: 13px;
	color: var(--text2);
	line-height: 1.8;
	margin-bottom: 16px;
}
.guide-card p:last-child {
	margin-bottom: 0;
}

/* Tags */
.tags-section {
	margin-bottom: 28px;
}
.tags-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}
.tag-chip {
	padding: 9px 18px;
	border-radius: 10px;
	border: 1px solid var(--border);
	background: var(--card);
	color: var(--text2);
	font-size: 13px;
	cursor: pointer;
	transition: all 0.25s ease;
	font-family: inherit;
}
.tag-chip:hover {
	border-color: rgba(255, 255, 255, 0.15);
	transform: translateY(-1px);
}
.tag-chip.selected {
	background: rgba(255, 255, 255, 0.06);
	border-color: rgba(255, 255, 255, 0.2);
	color: var(--text);
}

/* Textarea */
.textarea-wrapper {
	position: relative;
}
textarea.wide {
	width: 100%;
	height: 200px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 20px;
	color: var(--text);
	font-size: 15px;
	line-height: 1.8;
	resize: vertical;
	outline: none;
	font-family: inherit;
	transition: border-color 0.3s ease;
}
textarea.wide:focus {
	border-color: rgba(255, 255, 255, 0.15);
}
textarea.wide::placeholder {
	color: var(--text3);
}
.char-counter {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 10px;
	margin-top: 10px;
}
.char-count {
	font-size: 13px;
	color: var(--text3);
}
.char-count.over {
	color: var(--accent);
}
.review-type-badge {
	font-size: 11px;
	font-weight: 600;
	padding: 4px 12px;
	border-radius: 8px;
}
.review-type-badge.short {
	background: rgba(125, 170, 154, 0.15);
	color: #7daa9a;
}
.review-type-badge.long {
	background: rgba(154, 130, 170, 0.15);
	color: #9a82aa;
}

/* Image Upload */
.img-section {
	margin-bottom: 28px;
}
.img-label {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 14px;
	font-weight: 500;
	margin-bottom: 12px;
}
.img-limit {
	font-size: 12px;
	color: var(--text3);
}
.img-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
}
.img-slot {
	aspect-ratio: 1;
	border-radius: 12px;
	border: 2px dashed var(--border);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: all 0.25s ease;
	color: var(--text3);
	font-size: 28px;
	gap: 6px;
	overflow: hidden;
	position: relative;
}
.img-slot:hover {
	border-color: rgba(255, 255, 255, 0.2);
	color: var(--text2);
	background: var(--card);
}
.img-slot .add-text {
	font-size: 11px;
}
.img-slot.filled {
	border-style: solid;
}
.img-slot.filled img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.remove-btn {
	position: absolute;
	top: 6px;
	right: 6px;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.75);
	color: #f88;
	border: none;
	cursor: pointer;
	font-size: 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 0.2s;
}
.remove-btn:hover {
	background: rgba(200, 60, 60, 0.8);
	color: #fff;
}

/* Reviewed State */
#reviewed-state {
	display: none;
}
.success-banner {
	text-align: center;
	margin-bottom: 28px;
}
.success-banner .check {
	font-size: 48px;
	animation: popIn 0.5s ease;
}
.success-banner h3 {
	font-size: 22px;
	margin-top: 12px;
}
.success-banner p {
	font-size: 14px;
	color: var(--text2);
	margin-top: 6px;
}
@keyframes popIn {
	0% {
		transform: scale(0.7);
		opacity: 0;
	}
	60% {
		transform: scale(1.05);
	}
	100% {
		transform: scale(1);
		opacity: 1;
	}
}
.reviewed-card {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 20px;
	padding: 24px;
	margin-bottom: 24px;
}
.reviewed-card-header {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px;
}
.reviewed-avatar {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--border);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 18px;
	flex-shrink: 0;
}
.reviewed-user {
	font-size: 16px;
	font-weight: 600;
}
.reviewed-meta {
	font-size: 12px;
	color: var(--text3);
}
.reviewed-stars {
	font-size: 14px;
	color: var(--gold);
	margin-left: auto;
}
.sound-snapshot {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 16px;
}
.sound-tag {
	font-size: 10px;
	padding: 4px 10px;
	border-radius: 6px;
	background: rgba(255, 255, 255, 0.04);
	color: var(--text2);
}
.reviewed-images {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 8px;
	margin-bottom: 16px;
}
.reviewed-images img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 10px;
}
.reviewed-body {
	font-size: 14px;
	line-height: 1.85;
	margin-bottom: 10px;
}
.reviewed-body.collapsed-long {
	max-height: 180px;
	overflow: hidden;
	position: relative;
}
.reviewed-body.collapsed-long::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 50px;
	background: linear-gradient(transparent, var(--card));
}
.reviewed-expand-btn {
	display: block;
	width: 100%;
	text-align: center;
	padding: 8px;
	font-size: 13px;
	color: var(--accent);
	background: none;
	border: none;
	cursor: pointer;
	font-family: inherit;
}
.reviewed-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 10px;
}
.reviewed-tag {
	font-size: 10px;
	padding: 4px 10px;
	border-radius: 6px;
	background: rgba(255, 255, 255, 0.04);
	color: var(--text3);
}
.reviewed-footer {
	display: flex;
	gap: 20px;
	margin-top: 16px;
	font-size: 12px;
	color: var(--text3);
}
.reviewed-actions {
	display: flex;
	gap: 12px;
	margin-top: 24px;
}

/* Compare Mode */
.compare-wrap {
	display: none;
	gap: 14px;
}
.compare-wrap.active {
	display: grid;
	grid-template-columns: 1fr 1fr;
}
.compare-col {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 20px;
	cursor: pointer;
	transition: all 0.3s ease;
}
.compare-col:hover {
	border-color: rgba(255, 255, 255, 0.1);
}
.compare-col.active {
	border-color: rgba(255, 255, 255, 0.2);
	box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.03);
}
.compare-col .cc-title {
	font-size: 12px;
	color: var(--text3);
	margin-bottom: 10px;
	text-align: center;
}
.compare-col .cc-score {
	font-size: 40px;
	font-weight: 900;
	text-align: center;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.compare-col .cc-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	justify-content: center;
	margin-top: 8px;
}
.compare-col .cc-badge {
	font-size: 10px;
	padding: 3px 8px;
	border-radius: 6px;
	background: rgba(255, 255, 255, 0.03);
	color: var(--text3);
}
.compare-diff {
	text-align: center;
	font-size: 12px;
	color: var(--text3);
	margin-top: 16px;
	padding: 12px;
	background: var(--card);
	border-radius: 14px;
	border: 1px solid var(--border);
}
.compare-diff .diff-val {
	font-weight: 700;
}
.compare-diff .diff-val.ahead {
	color: #7ec89a;
}
.compare-diff .diff-val.behind {
	color: #c87a7a;
}

/* Weight Panel */
.weight-toggle {
	font-size: 12px;
	color: var(--accent);
	cursor: pointer;
	text-align: center;
	padding: 10px;
	margin-bottom: 20px;
	font-weight: 600;
	transition: opacity 0.2s;
}
.weight-toggle:hover {
	opacity: 0.8;
}
.weight-panel {
	display: none;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 20px;
	margin-bottom: 20px;
}
.weight-panel.open {
	display: block;
	animation: fadeInUp 0.3s ease;
}
.weight-row {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 12px;
}
.weight-row:last-child {
	margin-bottom: 0;
}
.weight-label {
	font-size: 13px;
	width: 80px;
	flex-shrink: 0;
}
.weight-bar {
	flex: 1;
	height: 8px;
	background: var(--border);
	border-radius: 4px;
	position: relative;
	overflow: hidden;
}
.weight-fill {
	height: 100%;
	border-radius: 4px;
	position: relative;
	transition: width 0.3s ease;
}
.weight-fill.acoustic {
	background: var(--acoustic);
}
.weight-fill.frequency {
	background: var(--frequency);
}
.weight-fill.timbre {
	background: var(--timbre);
}
.weight-fill.matching {
	background: var(--matching);
}
.weight-input {
	width: 44px;
	text-align: center;
	background: transparent;
	border: 1px solid var(--border);
	border-radius: 8px;
	color: var(--text);
	font-size: 12px;
	padding: 5px;
	font-family: inherit;
}

/* Mode Tabs */
.mode-tabs {
	display: flex;
	gap: 0;
	background: var(--card);
	border-radius: 14px;
	padding: 5px;
	border: 1px solid var(--border);
	margin-bottom: 24px;
}
.mode-tab {
	flex: 1;
	text-align: center;
	padding: 12px;
	font-size: 14px;
	font-weight: 600;
	color: var(--text2);
	border-radius: 10px;
	cursor: pointer;
	transition: all 0.25s ease;
	border: none;
	background: none;
	font-family: inherit;
}
.mode-tab.active {
	background: var(--card-hover);
	color: var(--text);
}

/* Radar */
.radar-wrap {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 20px;
	padding: 24px;
	margin-bottom: 24px;
	display: flex;
	flex-direction: column;
	align-items: center;
}
.radar-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	width: 100%;
	margin-bottom: 12px;
}
.radar-header .rl {
	font-size: 12px;
	font-weight: 600;
	color: var(--text3);
	letter-spacing: 3px;
	text-transform: uppercase;
}
.radar-header .score-big {
	font-size: 48px;
	font-weight: 900;
	line-height: 1;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

/* Sig Badges */
.sig-wrap {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	justify-content: center;
	margin-bottom: 24px;
}
.sig-badge {
	font-size: 12px;
	font-weight: 600;
	padding: 6px 14px;
	border-radius: 24px;
	border: 1px solid rgba(255, 255, 255, 0.08);
	background: rgba(255, 255, 255, 0.03);
	color: var(--text2);
	transition: all 0.3s ease;
}
.sig-badge.prominent {
	background: rgba(192, 168, 112, 0.1);
	border-color: rgba(192, 168, 112, 0.2);
	color: var(--gold);
}

/* Slider Card */
.slider-card {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 24px;
	margin-bottom: 20px;
	transition: border-color 0.3s ease;
}
.slider-card.highlight {
	border-color: rgba(255, 255, 255, 0.15);
}
.slider-card:hover {
	border-color: rgba(255, 255, 255, 0.08);
}
.slider-group-header {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 14px;
	padding: 0 4px;
}
.slider-dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	flex-shrink: 0;
}
.slider-dot.acoustic {
	background: var(--acoustic);
}
.slider-dot.frequency {
	background: var(--frequency);
}
.slider-dot.timbre {
	background: var(--timbre);
}
.slider-dot.matching {
	background: var(--matching);
}
.slider-group-name {
	font-size: 16px;
	font-weight: 600;
}
.slider-group-avg {
	font-size: 12px;
	color: var(--text3);
	margin-left: auto;
}
.slider-group-avg span {
	font-weight: 700;
	color: var(--text2);
}
.slider-row {
	margin-bottom: 14px;
}
.slider-row:last-child {
	margin-bottom: 0;
}
.slider-value {
	font-size: 11px;
	font-weight: 600;
	padding: 3px 10px;
	border-radius: 10px;
	transition: all 0.3s ease;
}
.val-left {
	background: rgba(255, 255, 255, 0.03);
	color: var(--text3);
}
.val-mid {
	background: rgba(255, 255, 255, 0.05);
	color: var(--text2);
}
.val-right {
	background: rgba(255, 255, 255, 0.07);
	color: var(--text);
}
.slider-linked {
	font-size: 10px;
	color: var(--accent);
	margin-left: 8px;
	opacity: 0;
	transition: opacity 0.4s ease;
}
.slider-linked.show {
	opacity: 1;
}

.slider-card.acoustic input[type="range"]::-webkit-slider-runnable-track {
	background: linear-gradient(
		90deg,
		#3a4a5a 0%,
		#3a4a5a 25%,
		#5a6e84 25%,
		#5a6e84 50%,
		#7a8faa 50%,
		#7a8faa 75%,
		#9ab0cc 75%,
		#9ab0cc 100%
	);
}
.slider-card.acoustic input[type="range"]::-webkit-slider-thumb {
	background: var(--acoustic);
}
.slider-card.frequency input[type="range"]::-webkit-slider-runnable-track {
	background: linear-gradient(
		90deg,
		#5a4a3a 0%,
		#5a4a3a 25%,
		#846e5a 25%,
		#846e5a 50%,
		#a88e7a 50%,
		#a88e7a 75%,
		#c0a88a 75%,
		#c0a88a 100%
	);
}
.slider-card.frequency input[type="range"]::-webkit-slider-thumb {
	background: var(--frequency);
}
.slider-card.timbre input[type="range"]::-webkit-slider-runnable-track {
	background: linear-gradient(
		90deg,
		#3a5a4a 0%,
		#3a5a4a 25%,
		#5e846e 25%,
		#5e846e 50%,
		#7ea88e 50%,
		#7ea88e 75%,
		#9ec8ae 75%,
		#9ec8ae 100%
	);
}
.slider-card.timbre input[type="range"]::-webkit-slider-thumb {
	background: var(--timbre);
}
.slider-card.matching input[type="range"]::-webkit-slider-runnable-track {
	background: linear-gradient(
		90deg,
		#4a3a5a 0%,
		#4a3a5a 25%,
		#725e84 25%,
		#725e84 50%,
		#9a82aa 50%,
		#9a82aa 75%,
		#b8a0c8 75%,
		#b8a0c8 100%
	);
}
.slider-card.matching input[type="range"]::-webkit-slider-thumb {
	background: var(--matching);
}

/* Actions */
.actions {
	display: flex;
	gap: 10px;
	margin-top: 12px;
}
.actions .btn {
	flex: 1;
	padding: 14px;
	border-radius: 14px;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	font-family: inherit;
	transition: all 0.25s ease;
	text-align: center;
	border: 1px solid var(--border);
	background: var(--card);
	color: var(--text2);
}
.actions .btn:hover {
	background: var(--card-hover);
	color: var(--text);
	transform: translateY(-1px);
}
.actions .btn.primary {
	background: var(--accent);
	border-color: var(--accent);
	color: #fff;
}
.actions .btn.primary:hover {
	opacity: 0.85;
}

/* ----- Profile Page ----- */
.profile-header {
	padding: 34px 32px 30px;
	text-align: center;
	background: linear-gradient(145deg, var(--card), var(--bg2));
	border: 1px solid var(--border);
	border-radius: 22px;
	box-shadow: var(--shadow);
	margin-bottom: 18px;
}
.ph-avatar {
	width: 88px;
	height: 88px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 36px;
	font-weight: 900;
	color: #fff;
	margin: 0 auto 16px;
	border: 3px solid var(--accent);
	box-shadow: var(--shadow);
}
.ph-name {
	font-size: 24px;
	font-weight: 800;
}
.ph-bio {
	font-size: 13px;
	color: var(--text2);
	margin-top: 6px;
	line-height: 1.6;
}
.ph-badges {
	display: flex;
	gap: 8px;
	justify-content: center;
	margin-top: 12px;
	flex-wrap: wrap;
}
.ph-badge {
	font-size: 11px;
	padding: 4px 12px;
	border-radius: 12px;
	background: var(--rc-tag-bg);
	color: var(--text2);
	border: 1px solid var(--rc-tag-border);
}

.stats-row {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
	margin-bottom: 32px;
	padding: 0 32px;
}
.stat-cell {
	text-align: center;
	padding: 18px 12px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 14px;
	transition: all 0.3s ease;
}
.stat-cell:hover {
	border-color: var(--border-strong);
	transform: translateY(-2px);
}
.stat-cell .num {
	font-size: 24px;
	font-weight: 900;
}
.stat-cell .lbl {
	font-size: 11px;
	color: var(--text3);
	margin-top: 4px;
}

.marked-card {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 16px 20px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 16px;
	margin-bottom: 10px;
	text-decoration: none;
	color: inherit;
	transition: all 0.3s ease;
}
.marked-card:hover {
	border-color: rgba(255, 255, 255, 0.15);
	background: var(--card-hover);
	transform: translateY(-2px);
	box-shadow: var(--shadow);
}
.mc-img {
	width: 48px;
	height: 48px;
	border-radius: 12px;
	object-fit: cover;
	background: var(--bg2);
	flex-shrink: 0;
}
.mc-img-placeholder {
	width: 48px;
	height: 48px;
	border-radius: 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 14px;
	font-weight: 700;
	color: #fff;
	flex-shrink: 0;
}
.mc-info {
	flex: 1;
	min-width: 0;
}
.mc-name {
	font-size: 14px;
	font-weight: 600;
}
.mc-brand {
	font-size: 11px;
	color: var(--text3);
	margin-top: 2px;
}
.mc-score {
	font-size: 20px;
	font-weight: 900;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.mc-arrow {
	color: var(--text3);
	font-size: 15px;
	transition: transform 0.2s;
}
.marked-card:hover .mc-arrow {
	transform: translateX(2px);
}

/* RC Cards (profile) */
.rc-header {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 12px;
}
.rc-avatar {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	font-size: 14px;
	color: #fff;
	flex-shrink: 0;
}
.rc-meta {
	flex: 1;
}
.rc-name {
	font-size: 14px;
	font-weight: 600;
}
.rc-product {
	font-size: 11px;
	color: var(--text3);
}
.rc-date {
	font-size: 11px;
	color: var(--text3);
	flex-shrink: 0;
}
.rc-stars {
	display: flex;
	gap: 2px;
	font-size: 14px;
	color: #3a3a42;
	margin-bottom: 10px;
}
.rc-stars .filled {
	color: var(--gold);
}
.rc-text {
	font-size: 13px;
	color: var(--text2);
	line-height: 1.7;
}
.rc-tags {
	display: flex;
	gap: 5px;
	flex-wrap: wrap;
	margin-top: 10px;
}
.rc-tag {
	font-size: 9px;
	padding: 3px 8px;
	border-radius: 6px;
	background: rgba(255, 255, 255, 0.03);
	color: var(--text3);
}

.login-prompt {
	text-align: center;
	padding: 80px 16px;
}
.login-prompt .icon {
	font-size: 56px;
	margin-bottom: 20px;
}
.login-prompt .icon .site-mark {
	width: 64px;
	height: 64px;
	filter: invert(1);
}
[data-theme="light"] .login-prompt .icon .site-mark {
	filter: none;
}
.login-prompt h3 {
	font-size: 20px;
	font-weight: 700;
	margin-bottom: 8px;
}
.login-prompt p {
	font-size: 13px;
	color: var(--text2);
	margin-bottom: 24px;
}

/* Prod Bar */
.prod-bar {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 16px;
	margin-bottom: 28px;
}
.prod-bar img {
	width: 52px;
	height: 52px;
	border-radius: 12px;
	object-fit: cover;
	background: var(--bg2);
}
.prod-bar .pn {
	font-size: 15px;
	font-weight: 600;
}
.prod-bar .pb {
	font-size: 12px;
	color: var(--text3);
}

/* Rating Row */
.rating-row {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 28px;
}
.rating-row .rl {
	font-size: 14px;
	font-weight: 500;
	color: var(--text2);
}
.stars {
	display: flex;
	gap: 4px;
	font-size: 28px;
	color: #3a3a42;
	cursor: pointer;
}
.stars .star {
	transition: all 0.15s ease;
}
.stars .star.active {
	color: var(--gold);
}
.stars .star:hover {
	transform: scale(1.18);
}
.rating-hint {
	font-size: 13px;
	color: var(--text3);
}

/* Submit */
.submit-section {
	margin-bottom: 36px;
}
.submit-btn {
	width: 100%;
	padding: 16px;
	border-radius: 16px;
	border: none;
	background: var(--card);
	color: var(--text3);
	font-size: 16px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.3s ease;
	font-family: inherit;
}
.submit-btn.ready {
	background: var(--accent);
	color: #fff;
	cursor: pointer;
}
.submit-btn.ready:hover {
	opacity: 0.85;
	transform: translateY(-1px);
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}

/* ----- Star Rating (click-based 0.1 precision) ----- */
.star-rating-precise {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 4px;
}
.srp-stars {
	display: flex;
	gap: 1px;
	position: relative;
	cursor: pointer;
	user-select: none;
}
.srp-stars .srp-star {
	position: relative;
	font-size: 42px;
	line-height: 1;
	color: #3a3a42;
	transition: all 0.12s ease;
	overflow: hidden;
}
.srp-stars .srp-star .srp-fill {
	position: absolute;
	top: 0;
	left: 0;
	height: 100%;
	overflow: hidden;
	color: var(--gold);
	transition: width 0.08s ease;
}
.srp-stars:hover .srp-star {
	color: #4a4a52;
}
.srp-stars .srp-star.hover-active {
	color: var(--gold);
}
.srp-value {
	font-size: 36px;
	font-weight: 700;
	min-width: 100px;
	white-space: nowrap;
	text-align: center;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	line-height: 1;
}
.srp-hint {
	font-size: 12px;
	color: var(--text3);
	margin-top: 2px;
}
.srp-fine {
	display: flex;
	gap: 6px;
	margin-top: 4px;
}
.srp-fine button {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1px solid var(--border);
	background: transparent;
	color: var(--text2);
	font-size: 15px;
	cursor: pointer;
	transition: all 0.15s;
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
}
.srp-fine button:hover {
	border-color: rgba(255, 255, 255, 0.2);
	color: var(--text);
	background: rgba(255, 255, 255, 0.03);
}
.srp-preview {
	position: absolute;
	top: -32px;
	font-size: 12px;
	font-weight: 700;
	color: var(--gold);
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.12s;
}
.srp-preview.show {
	opacity: 1;
}

/* ----- Rating with 0.1 precision ----- */
.rating-slider-row {
	display: flex;
	align-items: center;
	gap: 16px;
}
.rating-slider-row input[type="range"] {
	flex: 1;
	height: 6px;
	-webkit-appearance: none;
	appearance: none;
	border-radius: 3px;
	background: var(--border);
	outline: none;
	cursor: pointer;
}
.rating-slider-row input[type="range"]::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--gold);
	border: 2px solid rgba(255, 255, 255, 0.3);
	cursor: pointer;
	box-shadow: 0 3px 12px rgba(0, 0, 0, 0.4);
}
.rating-big-display {
	font-size: 48px;
	font-weight: 900;
	line-height: 1;
	min-width: 80px;
	text-align: center;
	background: linear-gradient(135deg, #d4c5a0, var(--gold));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.rating-adjust {
	display: flex;
	gap: 4px;
	align-items: center;
}
.rating-adjust button {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: 1px solid var(--border);
	background: var(--card);
	color: var(--text2);
	font-size: 18px;
	cursor: pointer;
	transition: all 0.2s;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: inherit;
	line-height: 1;
}
.rating-adjust button:hover {
	border-color: rgba(255, 255, 255, 0.2);
	color: var(--text);
	background: var(--card-hover);
}
.rating-stars-small {
	display: flex;
	gap: 2px;
	font-size: 18px;
	color: #3a3a42;
}
.rating-stars-small .filled {
	color: var(--gold);
}

/* ----- Write Note Button (Sidebar) ----- */
.btn-write-note {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 12px;
	padding: 14px 24px;
	background: rgba(var(--pc-rgb), 0.08);
	border: 1px solid rgba(var(--pc-rgb), 0.18);
	border-radius: 14px;
	color: var(--pc);
	font-size: 15px;
	font-weight: 700;
	text-decoration: none;
	cursor: pointer;
	transition: all 0.25s ease;
	font-family: inherit;
}
.btn-write-note:hover {
	background: rgba(var(--pc-rgb), 0.15);
	border-color: rgba(var(--pc-rgb), 0.35);
	transform: translateY(-1px);
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}
.btn-write-note .wn-icon {
	font-size: 18px;
}

/* ----- Label Picker (四标签) ----- */
.label-picker {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	margin-bottom: 28px;
}
.label-picker-btn {
	flex: 1;
	min-width: 80px;
	padding: 12px 10px;
	border-radius: 12px;
	border: 1px solid var(--border);
	background: var(--card);
	color: var(--text2);
	font-size: 12px;
	cursor: pointer;
	text-align: center;
	transition: all 0.25s;
	font-family: inherit;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
}
.label-picker-btn .lp-icon {
	font-size: 20px;
}
.label-picker-btn .lp-label {
	font-weight: 600;
}
.label-picker-btn .lp-count {
	font-size: 10px;
	color: var(--text3);
}
.label-picker-btn:hover {
	border-color: rgba(255, 255, 255, 0.15);
	color: var(--text);
	background: var(--card-hover);
	transform: translateY(-1px);
}
.label-picker-btn.selected {
	border-color: rgba(255, 255, 255, 0.25);
	background: rgba(255, 255, 255, 0.06);
	color: var(--text);
	box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.06);
}
.label-picker-btn.want.selected {
	border-color: #7daa9a;
	background: rgba(125, 170, 154, 0.1);
}
.label-picker-btn.tried.selected {
	border-color: #7b8caa;
	background: rgba(123, 140, 170, 0.1);
}
.label-picker-btn.owned.selected {
	border-color: #b8977e;
	background: rgba(184, 151, 126, 0.1);
}
.label-picker-btn.keeper.selected {
	border-color: #c0a870;
	background: rgba(192, 168, 112, 0.1);
}

/* Review label badge */
.review-label-badge {
	font-size: 10px;
	padding: 3px 8px;
	border-radius: 6px;
	font-weight: 600;
	flex-shrink: 0;
}
.review-label-badge.want {
	background: rgba(125, 170, 154, 0.12);
	color: #7daa9a;
}
.review-label-badge.tried {
	background: rgba(123, 140, 170, 0.12);
	color: #7b8caa;
}
.review-label-badge.owned {
	background: rgba(184, 151, 126, 0.12);
	color: #b8977e;
}
.review-label-badge.keeper {
	background: rgba(192, 168, 112, 0.12);
	color: #c0a870;
}

/* ----- Smart Fill (paste specs) ----- */
.smart-fill {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 18px;
	padding: 20px;
	margin-bottom: 20px;
	transition: all 0.3s ease;
}
.smart-fill .sf-header {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 14px;
}
.smart-fill .sf-icon {
	font-size: 20px;
}
.smart-fill .sf-title {
	font-size: 15px;
	font-weight: 600;
}
.smart-fill .sf-desc {
	font-size: 12px;
	color: var(--text3);
	margin-bottom: 14px;
}
.smart-fill textarea {
	width: 100%;
	height: 80px;
	padding: 12px 14px;
	background: var(--bg2);
	border: 1px solid var(--border);
	border-radius: 12px;
	color: var(--text);
	font-size: 13px;
	font-family: monospace;
	resize: vertical;
	outline: none;
	line-height: 1.6;
	transition: border-color 0.25s;
}
.smart-fill textarea:focus {
	border-color: rgba(255, 255, 255, 0.15);
}
.smart-fill textarea::placeholder {
	color: var(--text3);
}
.smart-fill .sf-actions {
	display: flex;
	gap: 8px;
	margin-top: 12px;
}
.smart-fill .sf-btn {
	flex: 1;
	padding: 10px;
	border-radius: 10px;
	border: 1px solid var(--border);
	background: var(--card);
	color: var(--text2);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.25s;
	font-family: inherit;
}
.smart-fill .sf-btn:hover {
	border-color: rgba(255, 255, 255, 0.15);
	color: var(--text);
	background: var(--card-hover);
}
.smart-fill .sf-btn.primary {
	background: var(--accent);
	border-color: var(--accent);
	color: #fff;
}
.smart-fill .sf-btn.primary:hover {
	opacity: 0.85;
}

/* ----- Crop Modal (square, for product images) ----- */
.crop-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:9999;display:flex;align-items:center;justify-content:center}
.crop-modal{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:24px;width:420px;max-width:90vw}
.crop-modal h3{margin:0 0 16px;font-size:17px;font-weight:700}
.crop-viewport{position:relative;width:340px;height:340px;margin:0 auto;overflow:hidden;border-radius:12px;background:var(--bg2);cursor:grab;user-select:none}
.crop-viewport.dragging{cursor:grabbing}
.crop-viewport img{position:absolute;top:0;left:0;display:block;pointer-events:none;image-rendering:auto}
.crop-square-frame{position:absolute;top:50%;left:50%;width:280px;height:280px;transform:translate(-50%,-50%);box-shadow:0 0 0 9999px rgba(0,0,0,.55);pointer-events:none;border:2px solid rgba(255,255,255,.6)}
.crop-zoom-row{display:flex;align-items:center;justify-content:center;gap:12px;margin:14px 0 18px}
.crop-zoom-row button{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg2);color:var(--text);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}
.crop-zoom-row button:hover{background:var(--card-hover);border-color:var(--accent)}
.crop-zoom-row .zoom-label{font-size:13px;color:var(--text2);min-width:44px;text-align:center}
.crop-actions{display:flex;gap:10px}
.crop-actions .btn{flex:1}

.smart-fill .sf-result {
	display: none;
	margin-top: 12px;
	padding: 12px;
	background: var(--bg2);
	border-radius: 10px;
	font-size: 12px;
	color: var(--text2);
	line-height: 1.7;
}
.smart-fill .sf-result .found {
	color: #7daa9a;
	font-weight: 600;
}
.smart-fill .sf-result .missing {
	color: var(--text3);
}
.smart-fill .sf-url {
	margin-bottom: 12px;
	display: flex;
	gap: 8px;
}
.smart-fill .sf-url input {
	flex: 1;
	padding: 8px 12px;
	background: var(--bg2);
	border: 1px solid var(--border);
	border-radius: 10px;
	color: var(--text);
	font-size: 12px;
	font-family: inherit;
	outline: none;
}
.smart-fill .sf-url input:focus {
	border-color: rgba(255, 255, 255, 0.15);
}
.smart-fill .sf-url button {
	padding: 8px 14px;
	border-radius: 10px;
	border: 1px solid var(--border);
	background: var(--card);
	color: var(--text2);
	font-size: 12px;
	cursor: pointer;
	font-family: inherit;
	white-space: nowrap;
	transition: all 0.2s;
}
.smart-fill .sf-url button:hover {
	border-color: rgba(255, 255, 255, 0.15);
	color: var(--text);
}

/* ===== 首页 Banner 轮播 ===== */
.banner {
	position: relative;
	width: 100%;
	max-width: 1280px;
	height: 420px;
	margin: 0 auto;
	overflow: hidden;
	background: var(--bg);
	user-select: none;
}
.banner-track {
	display: flex;
	height: 100%;
	transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
	will-change: transform;
}
.banner-slide {
	flex: 0 0 100%;
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.banner-slide-img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: brightness(0.45) saturate(1.1);
}
.banner-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 30%, rgba(0, 0, 0, 0.7) 100%);
}
.banner-info {
	position: relative;
	z-index: 2;
	text-align: center;
	padding: 0 40px;
}
.banner-info .bi-brand {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 3px;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
	margin-bottom: 10px;
}
.banner-info .bi-name {
	font-size: 36px;
	font-weight: 900;
	letter-spacing: 1px;
	color: #fff;
	margin-bottom: 6px;
	text-shadow: 0 2px 16px rgba(0, 0, 0, 0.5);
}
.banner-info .bi-slogan {
	font-size: 14px;
	color: rgba(255, 255, 255, 0.7);
	font-weight: 400;
	margin-bottom: 14px;
	line-height: 1.6;
}
.banner-info .bi-price {
	font-size: 20px;
	font-weight: 800;
	color: var(--gold);
	letter-spacing: 0.5px;
}
.banner-info .bi-link {
	display: inline-block;
	margin-top: 14px;
	padding: 8px 22px;
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: 24px;
	color: #fff;
	font-size: 12px;
	font-weight: 600;
	text-decoration: none;
	transition: all 0.3s;
	letter-spacing: 1px;
}
.banner-info .bi-link:hover {
	background: rgba(255, 255, 255, 0.1);
	border-color: rgba(255, 255, 255, 0.4);
}
.banner-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 10;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, 0.15);
	background: rgba(0, 0, 0, 0.4);
	color: #fff;
	font-size: 18px;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 0.3s;
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
}
.banner-arrow:hover {
	background: rgba(0, 0, 0, 0.6);
	border-color: rgba(255, 255, 255, 0.3);
}
.banner-arrow--left {
	left: 16px;
}
.banner-arrow--right {
	right: 16px;
}
.banner-dots {
	position: absolute;
	bottom: 20px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 10;
	display: flex;
	gap: 10px;
}
.banner-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.3);
	border: none;
	cursor: pointer;
	transition: all 0.3s;
	padding: 0;
}
.banner-dot.active {
	background: #fff;
	box-shadow: 0 0 8px rgba(255, 255, 255, 0.4);
}
@media (max-width: 768px) {
	.banner {
		height: 320px;
	}
	.banner-info .bi-name {
		font-size: 26px;
	}
	.banner-info .bi-slogan {
		font-size: 12px;
	}
	.banner-arrow {
		width: 36px;
		height: 36px;
		font-size: 14px;
	}
}

/* ===== 品牌文字列表 ===== */
.brand-list {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 14px 32px;
	flex-wrap: wrap;
	max-width: 1280px;
	margin: 0 auto;
}
.brand-list__chip {
	padding: 5px 14px;
	border-radius: 16px;
	font-size: 12px;
	font-weight: 500;
	text-decoration: none;
	transition: all 0.25s;
	white-space: nowrap;
	cursor: pointer;
	border: 1px solid transparent;
}
.brand-list__chip--active {
	background: rgba(255, 255, 255, 0.04);
	color: var(--text2);
	border-color: rgba(255, 255, 255, 0.08);
}
.brand-list__chip--active:hover {
	color: var(--text);
	border-color: rgba(255, 255, 255, 0.2);
	background: rgba(255, 255, 255, 0.06);
}
.brand-list__chip--upcoming {
	color: var(--text3);
	border: 1px dashed rgba(255, 255, 255, 0.06);
	background: transparent;
	cursor: default;
}
.brand-list__sep {
	width: 1px;
	height: 14px;
	background: var(--border);
	margin: 0 4px;
	flex-shrink: 0;
}
@media (max-width: 768px) {
	.brand-list {
		padding: 10px 16px;
		gap: 4px;
	}
	.brand-list__chip {
		font-size: 11px;
		padding: 4px 10px;
	}
}

/* ===== 筛选栏 — 下拉菜单 ===== */
.filter-bar {
	z-index: 900;
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 8px 32px;
	background: rgba(var(--bg-rgb), 0.85);
	backdrop-filter: blur(16px);
	-webkit-backdrop-filter: blur(16px);
	border-bottom: 1px solid var(--border);
	max-width: 1280px;
	margin: 0 auto;
	transition: background 0.3s;
}
.filter-dropdown {
	position: relative;
	flex-shrink: 0;
}
.filter-dropdown__trigger {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 7px 14px;
	border-radius: 10px;
	font-size: 12px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.2s;
	white-space: nowrap;
	font-family: inherit;
	color: var(--text2);
	background: transparent;
	border: 1px solid transparent;
	letter-spacing: 0.3px;
}
.filter-dropdown__trigger:hover {
	color: var(--text);
	background: var(--card);
	border-color: var(--border);
}
.filter-dropdown__trigger.has-active {
	color: var(--pc);
	background: rgba(var(--pc-rgb), 0.1);
	border-color: rgba(var(--pc-rgb), 0.2);
}
.filter-dropdown__trigger .fdr-arrow {
	font-size: 9px;
	transition: transform 0.2s;
	opacity: 0.5;
	margin-left: 1px;
}
.filter-dropdown:hover .fdr-arrow {
	transform: rotate(180deg);
}
.filter-dropdown__count {
	font-size: 10px;
	min-width: 18px;
	height: 18px;
	line-height: 18px;
	text-align: center;
	border-radius: 9px;
	background: rgba(var(--pc-rgb), 0.2);
	color: var(--pc);
	display: none;
}
.filter-dropdown__trigger.has-active .filter-dropdown__count {
	display: inline-block;
}
.filter-dropdown__menu {
	position: absolute;
	top: calc(100% + 4px);
	left: 0;
	min-width: 180px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 14px;
	padding: 8px;
	display: none;
	z-index: 910;
	box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4);
	max-height: 320px;
	overflow-y: auto;
	flex-direction: column;
	gap: 2px;
}
.filter-dropdown:hover .filter-dropdown__menu {
	display: flex;
}
.filter-dropdown__menu .filter-chip {
	display: block;
	width: 100%;
	text-align: left;
	padding: 8px 12px;
	border-radius: 8px;
	font-size: 12px;
	font-weight: 500;
	cursor: pointer;
	transition: all 0.15s;
	white-space: nowrap;
	font-family: inherit;
	color: var(--text2);
	background: transparent;
	border: none;
}
.filter-dropdown__menu .filter-chip:hover {
	color: var(--text);
	background: var(--bg);
}
.filter-dropdown__menu .filter-chip.active {
	color: var(--pc);
	background: rgba(var(--pc-rgb), 0.12);
}
.filter-dropdown__sep {
	width: 1px;
	height: 20px;
	background: var(--border);
	margin: 0 4px;
	flex-shrink: 0;
	opacity: 0.6;
}
.filter-bar__clear {
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 1px;
	color: var(--text3);
	cursor: pointer;
	padding: 6px 10px;
	border-radius: 8px;
	transition: all 0.2s;
	margin-left: auto;
	flex-shrink: 0;
	font-family: inherit;
	background: none;
	border: none;
}
.filter-bar__clear:hover {
	color: var(--text2);
	background: var(--card);
}
.filter-bar__clear.hidden {
	display: none;
}
.filter-bar__overlay {
	display: none;
	position: fixed;
	inset: 0;
	z-index: 905;
}
.filter-dropdown.open .filter-bar__overlay {
	display: block;
}
@media (max-width: 768px) {
	.filter-bar {
		top: 52px;
		padding: 6px 16px;
		gap: 4px;
	}
	.filter-dropdown__trigger {
		font-size: 11px;
		padding: 6px 10px;
	}
	.filter-dropdown__menu {
		min-width: 150px;
		max-height: 260px;
	}
}
@media (hover: none) {
	.filter-dropdown .filter-dropdown__menu {
		display: none;
	}
	.filter-dropdown.open .filter-dropdown__menu {
		display: flex;
	}
}

/* ===== 产品瀑布流 — CSS Grid 自适应 ===== */
.masonry {
	max-width: 1280px;
	margin: 0 auto;
	padding: 20px 32px 48px;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 14px;
}
@media (max-width: 768px) {
	.masonry {
		padding: 16px 16px 40px;
		gap: 10px;
		grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	}
}
@media (max-width: 480px) {
	.masonry {
		padding: 12px 12px 36px;
		grid-template-columns: 1fr;
	}
}
.masonry-item {
	opacity: 0;
	transform: translateY(16px) scale(0.95);
	animation: cardIn 0.5s ease forwards;
}
@keyframes cardIn {
	to {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
}
.masonry-item.exiting {
	animation: cardOut 0.25s ease forwards;
}
@keyframes cardOut {
	to {
		opacity: 0;
		transform: translateY(8px) scale(0.92);
/* Masonry loading indicator */
.masonry-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 240px;
  gap: 16px;
  color: var(--text2);
  font-size: 14px;
  letter-spacing: 0.5px;
}
.ml-spinner {
  width: 36px;
  height: 36px;
  border: 3px solid var(--border);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: mlSpin 0.8s linear infinite;
}
@keyframes mlSpin {
  to { transform: rotate(360deg); }
}
.ml-text {
  opacity: 0.7;
}

	}
}

/* ===== 产品卡片 ===== */
.product-card {
	display: block;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 14px;
	overflow: hidden;
	text-decoration: none;
	color: inherit;
	transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
	cursor: pointer;
	position: relative;
}
.product-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
	border-color: var(--border-strong);
}
.product-card__img {
	width: 100%;
	aspect-ratio: 1 / 1;
	display: block;
	background: var(--bg2);
	object-fit: contain;
	transition: transform 0.4s cubic-bezier(0.2, 0, 0, 1);
}
.product-card__img-placeholder {
	width: 100%;
	aspect-ratio: 1 / 1;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 32px;
	font-weight: 900;
	color: #fff;
}
.product-card__body {
	padding: 10px 14px 12px;
}
.product-card__brand {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: var(--text3);
	margin-bottom: 2px;
}
.product-card__name {
	font-size: 15px;
	font-weight: 700;
	color: var(--text);
	margin-bottom: 2px;
	line-height: 1.25;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.product-card__slogan {
	font-size: 11px;
	color: var(--text3);
	margin-bottom: 6px;
	line-height: 1.3;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.product-card__meta {
	 display: flex;
	 align-items: center;
	 justify-content: space-between;
	 padding-top: 4px;
	 border-top: 1px solid var(--chip-border-alpha);
}
.product-card__price {
	font-size: 16px;
	font-weight: 800;
	color: var(--gold);
}
.product-card__rating {
	display: flex;
	align-items: center;
	gap: 4px;
	font-size: 11px;
	color: var(--gold);
	font-weight: 600;
}

/* ===== 空状态 ===== */
.empty-state {
	display: none;
	text-align: center;
	padding: 60px 20px;
	max-width: 1280px;
	margin: 0 auto;
}
.empty-state.show {
	display: block;
}
.empty-state__icon {
	font-size: 40px;
	margin-bottom: 16px;
	opacity: 0.5;
}
.empty-state__text {
	font-size: 14px;
	color: var(--text3);
	margin-bottom: 12px;
}
.empty-state__clear {
	display: inline-block;
	padding: 8px 20px;
	border-radius: 20px;
	border: 1px solid var(--border);
	background: var(--card);
	color: var(--text2);
	font-size: 12px;
	font-weight: 600;
	cursor: pointer;
	transition: all 0.25s;
	font-family: inherit;
}
.empty-state__clear:hover {
    border-color: var(--chip-hover-border-alpha);
    color: var(--text);
}

/* ----- Profile Review Cards (product-centric) ----- */
.prv-card {
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 20px;
	padding: 24px;
	margin-bottom: 18px;
	transition: all 0.3s ease;
}
.prv-card:hover {
	border-color: var(--border-strong);
	transform: translateY(-2px);
	box-shadow: var(--shadow);
}
.prv-card-top { display: flex; gap: 18px; }
.prv-img {
	width: 88px; height: 88px;
	border-radius: 14px;
	object-fit: cover;
	background: var(--bg2);
	flex-shrink: 0;
}
.prv-img-placeholder {
	width: 88px; height: 88px;
	border-radius: 14px;
	display: flex; align-items: center; justify-content: center;
	font-size: 22px; font-weight: 800; color: #fff;
	flex-shrink: 0;
}
.prv-card-info { flex: 1; min-width: 0; }
.prv-product-name { font-size: 18px; font-weight: 800; color: var(--text); line-height: 1.3; }
.prv-product-name a { color: inherit; text-decoration: none; }
.prv-product-name a:hover { text-decoration: underline; }
.prv-product-sub { font-size: 13px; color: var(--text2); margin-top: 4px; }
.prv-product-meta { display: flex; align-items: center; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.prv-stars { display: flex; gap: 2px; font-size: 16px; color: #3a3a42; }
.prv-stars .filled { color: var(--gold); }
.prv-score { font-size: 14px; font-weight: 700; color: var(--gold); white-space: nowrap; }
.prv-label { font-size: 12px; padding: 3px 10px; border-radius: 8px; font-weight: 700; }
.prv-label.want { background: var(--prv-label-want-bg); color: var(--prv-label-want-color); }
.prv-label.tried { background: var(--prv-label-tried-bg); color: var(--prv-label-tried-color); }
.prv-label.owned { background: var(--prv-label-owned-bg); color: var(--prv-label-owned-color); }
.prv-label.keeper { background: var(--prv-label-keeper-bg); color: var(--prv-label-keeper-color); }
.prv-date { font-size: 12px; color: var(--text3); margin-left: auto; }
.prv-card-bottom { border-top: 1px solid var(--prv-border-top); margin-top: 16px; padding-top: 16px; display: flex; flex-direction: column; gap: 12px; }

/* ----- ReviewCard module (.rc-card inside .review-card / .prv-card) ----- */
.rc-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  position: relative;
  padding-bottom: 36px; /* reserve space for bottom-right like */
}
.rc-top {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.rc-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
  background: var(--bg2);
  display: flex;
  align-items: center;
  justify-content: center;
}
.rc-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.rc-avatar:not(:has(img)) {
  background: linear-gradient(135deg, var(--accent), var(--gold));
  color: #fff;
  font-size: 13px;
  font-weight: 700;
}
.rc-meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: 1;
  min-width: 0;
}
.rc-user {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text);
}
.rc-badges { display: inline-flex; gap: 4px; margin-left: 4px; }
.rc-badge {
  font-size: 10px;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--rc-badge-bg);
  color: var(--text2);
  font-weight: 500;
}
.rc-stars { font-size: 12px; color: var(--gold); letter-spacing: -1px; }
.rc-star.filled { color: var(--gold); }
.rc-star.half { color: var(--gold); opacity: 0.5; }
.rc-star.empty { color: var(--star-empty); }
.rc-date { font-size: 11px; color: var(--text3); }

/* Product row (only in profile page, showProduct: true) */
.rc-product {
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 10px;
  margin: 4px 0;
  background: var(--bg2);
  border-radius: 10px;
  border: 1px solid var(--border);
}
.rc-product-img {
  width: 52px;
  height: 52px;
  border-radius: 8px;
  overflow: hidden;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
  color: #fff;
}
.rc-product-img img { width: 100%; height: 100%; object-fit: cover; }
.rc-product-info { flex: 1; min-width: 0; }
.rc-product-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  text-decoration: none;
  display: block;
}
.rc-product-name:hover { color: var(--accent); }
.rc-product-sub { font-size: 12px; color: var(--text3); margin-top: 2px; }
.rc-product-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 6px;
}
.rc-product-meta .rc-stars { font-size: 11px; }
.rc-score {
  font-size: 13px;
  font-weight: 700;
  color: var(--gold);
}
.rc-label {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 4px;
}
.rc-label-want { background: var(--acoustic-bg); color: var(--acoustic); border: 1px solid var(--rc-tag-border); }
.rc-label-tried { background: var(--timbre-bg); color: var(--timbre); border: 1px solid var(--rc-tag-border); }
.rc-label-owned { background: var(--frequency-bg); color: var(--frequency); border: 1px solid var(--rc-tag-border); }
.rc-label-keeper { background: rgba(192,168,112,0.15); color: var(--gold); border: 1px solid var(--rc-tag-border); }

.rc-body {
  font-size: 14px;
  line-height: 1.85;
  color: var(--text2);
}
.rc-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.rc-tag {
  font-size: 11px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 5px;
  background: var(--rc-tag-bg);
  color: var(--text2);
	border: 1px solid var(--rc-tag-border);
}
.rc-spacer { flex: 1; min-height: 0; }

/* Like button — bottom-right corner, blends with card */
.rc-like {
  position: absolute;
  bottom: 8px;
  right: 10px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: 14px;
  background: var(--rc-tag-bg);
  border: 1px solid var(--rc-tag-border);
  cursor: pointer;
  user-select: none;
  transition: opacity 0.2s, background 0.2s;
  opacity: 0.6;
  font-size: 11px;
}
.rc-like:hover {
  opacity: 1;
  background: var(--card-hover);
  border-color: var(--border-strong);
}
.rc-like-icon {
  font-size: 12px;
  color: var(--text2);
  transition: color 0.2s;
  line-height: 1;
}
.rc-like.liked { opacity: 1; border-color: color-mix(in srgb, #e0584a 35%, transparent); }
.rc-like.liked .rc-like-icon { color: #e0584a; }
.rc-like-count {
  font-size: 11px;
  color: var(--text3);
  font-weight: 500;
  min-width: 6px;
  text-align: center;
  line-height: 1;
}
.rc-like.liked .rc-like-count { color: var(--text2); }

.rc-empty {
  text-align: center;
  color: var(--text3);
  font-size: 13px;
  padding: 30px 0;
}

/* Wrapper containers (.review-card / .prv-card) now host .rc-card */
.review-card { /* outer container on product view */ }
.prv-card { /* outer container on profile view */ }
.prv-like:hover {
	background: rgba(255,255,255,0.08);
	border-color: rgba(255,255,255,0.15);
}
.prv-like-icon {
	font-size: 14px;
	color: var(--text2);
	transition: color 0.2s, transform 0.2s;
}
.prv-like.liked .prv-like-icon {
	color: #e0584a;
}
.prv-like-count {
	font-size: 12px;
	color: var(--text3);
	font-weight: 500;
	min-width: 8px;
	text-align: center;
}
.prv-like.liked .prv-like-count {
	color: var(--text2);
}
.prv-text { font-size: 14.5px; font-weight: 500; color: var(--text); line-height: 1.85; }
.prv-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }
.prv-tag { font-size: 11px; font-weight: 600; padding: 4px 10px; border-radius: 6px; background: var(--rc-tag-bg); border: 1px solid var(--rc-tag-border); color: var(--text2); }

/* ----- Review collapse (>5) ----- */
.prv-collapse { overflow: hidden; max-height: 0; transition: max-height 0.5s ease; }
.prv-collapse.expanded { max-height: 99999px; }
.prv-collapse-btn {
	display: block; margin: 24px auto 0;
	padding: 10px 32px; font-size: 13px; font-weight: 600;
	border-radius: 10px; cursor: pointer;
	border: 1px solid var(--border); background: var(--card); color: var(--text2);
	transition: all 0.2s;
}
.prv-collapse-btn:hover { border-color: var(--accent); color: var(--accent); }

/* ============ PAGINATION BAR ============ */
.pagination-wrapper {
	width: 100%;
	display: flex;
	justify-content: center;
	align-items: center;
	margin: 56px auto 32px;
	padding: 0 16px;
	box-sizing: border-box;
	clear: both;
}
.pagination-bar {
	display: inline-flex;
	flex-direction: row;
	align-items: center;
	gap: 10px;
	padding: 8px 16px;
	background: var(--card);
	border: 1px solid var(--border);
	border-radius: 20px;
	backdrop-filter: blur(16px);
	-webkit-backdrop-filter: blur(16px);
	box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
	transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.pagination-bar:hover {
	border-color: rgba(255, 255, 255, 0.12);
	box-shadow: 0 12px 40px rgba(0, 0, 0, 0.45);
}
.pg-pages {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 6px;
}
.pg-btn {
	height: 38px;
	padding: 0 14px;
	border-radius: 12px;
	border: 1px solid transparent;
	background: transparent;
	color: var(--text2);
	font-size: 14px;
	font-weight: 500;
	cursor: pointer;
	white-space: nowrap;
	transition: all 0.22s cubic-bezier(0.2, 0, 0, 1);
	display: inline-flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	gap: 6px;
	user-select: none;
}
.pg-btn--num {
	min-width: 38px;
	padding: 0 8px;
	font-family: inherit;
}
.pg-btn:hover:not(.disabled):not(.active) {
	background: rgba(255, 255, 255, 0.08);
	color: var(--text);
	border-color: var(--border);
}
.pg-btn.active {
	background: linear-gradient(135deg, var(--accent) 0%, rgba(123, 140, 170, 0.85) 100%);
	color: #ffffff;
	font-weight: 600;
	border-color: var(--accent);
	box-shadow: 0 4px 16px rgba(123, 140, 170, 0.4);
	transform: translateY(-1px);
}
.pg-btn.disabled, .pg-btn[disabled] {
	opacity: 0.3;
	cursor: not-allowed;
	pointer-events: none;
}
.pg-btn--nav svg {
	width: 16px;
	height: 16px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2.2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.2s ease;
}
.pg-btn--nav:hover:not(.disabled) svg.svg-prev {
	transform: translateX(-3px);
}
.pg-btn--nav:hover:not(.disabled) svg.svg-next {
	transform: translateX(3px);
}



/* ============ SCROLL SENTINEL ============ */
.scroll-sentinel {
	height: 1px; width: 100%;
	margin: 8px 0;
	display: flex; align-items: center; justify-content: center;
}
.scroll-sentinel.loading::after {
	content: ""; width: 32px; height: 32px;
	border: 3px solid var(--border); border-top-color: var(--accent);
	border-radius: 50%; animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ============ SKELETON CARDS ============ */
.skeleton-card {
	background: var(--card); border-radius: 14px;
	overflow: hidden; animation: skeleton-pulse 1.5s infinite;
}
.skeleton-card .sk-img { width: 100%; aspect-ratio: 1; background: var(--border); }
.skeleton-card .sk-body { padding: 14px; display: flex; flex-direction: column; gap: 8px; }
.sk-line { height: 12px; border-radius: 6px; background: var(--border); }
.sk-line.short { width: 60%; }
@keyframes skeleton-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } }

/* ===== 用户系统 v0.5.0：登录/注册/安全 ===== */
.form-title { font-size: 18px; font-weight: 700; margin-bottom: 6px; }
.form-tip { font-size: 12px; color: var(--text3, #90909e); margin-bottom: 14px; line-height: 1.6; }
.remember-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 2px 0 12px;
  font-size: 12px;
}
.remember-label { display: flex; align-items: center; gap: 6px; color: var(--text2, #90909e); cursor: pointer; }
.remember-label input { width: 14px; height: 14px; accent-color: var(--accent); }
.auth-link { color: var(--accent); text-decoration: none; }
.auth-link:hover { text-decoration: underline; }
.pw-strength { margin-top: 6px; }
.pw-strength-bar {
  height: 4px;
  border-radius: 2px;
  background: var(--border, #22222c);
  width: 0;
  transition: width 0.2s ease, background 0.2s ease;
}
.pw-strength-label { font-size: 11px; color: var(--text3, #90909e); margin-top: 4px; }
.turnstile-wrap {
  min-height: 65px;
  margin: 10px 0 4px;
  display: flex;
  justify-content: center;
}
.agree-row {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin: 8px 0 12px;
  font-size: 12px;
  color: var(--text2, #90909e);
  line-height: 1.5;
}
.agree-row input { width: 14px; height: 14px; margin-top: 2px; accent-color: var(--accent); }
.agree-row a { color: var(--accent); }
.pw-row { display: flex; gap: 8px; align-items: center; }
.pw-row .form-input { flex: 1; min-width: 0; }
.pw-toggle {
  flex-shrink: 0;
  font-size: 12px;
  color: var(--text2, #90909e);
  background: var(--bg2, #111116);
  border: 1px solid var(--border, #22222c);
  border-radius: 8px;
  padding: 8px 12px;
  cursor: pointer;
}
.pw-toggle:hover { color: var(--text, #e4e4ec); border-color: var(--accent); }
.captcha-row {
  display: flex;
  gap: 8px;
  align-items: center;
  margin: 10px 0;
}
.captcha-row img {
  height: 44px;
  width: 132px;
  border-radius: 8px;
  border: 1px solid var(--border, #22222c);
  cursor: pointer;
  object-fit: cover;
  flex-shrink: 0;
}
.captcha-row .captcha-load-fail {
  flex: 1;
  min-width: 0;
  font-size: 12px;
  color: var(--text3, #8a8a96);
  cursor: pointer;
  text-decoration: underline;
  text-align: center;
  padding: 10px 4px;
}
.captcha-row .form-input { flex: 1; min-width: 0; }
.security-card {
  background: var(--card, #16161c);
  border: 1px solid var(--border, #22222c);
  border-radius: 12px;
  padding: 16px;
  margin: 18px 0;
}
.sec-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 7px 0;
  font-size: 13px;
}
.sec-key { color: var(--text2, #90909e); }
.sec-val { color: var(--text, #e4e4ec); }
.sec-badge {
  display: inline-block;
  font-size: 10px;
  padding: 2px 7px;
  border-radius: 10px;
  margin-left: 6px;
  vertical-align: middle;
}
.sec-badge.ok { background: color-mix(in srgb, var(--success) 15%, transparent); color: var(--success); border: 1px solid color-mix(in srgb, var(--success) 28%, transparent); }
.sec-badge.warn { background: color-mix(in srgb, var(--warn) 16%, transparent); color: var(--warn); border: 1px solid color-mix(in srgb, var(--warn) 30%, transparent); }
.edit-sec-title {
  font-size: 14px;
  font-weight: 700;
  margin: 22px 0 6px;
  padding-top: 16px;
  border-top: 1px solid var(--border, #22222c);
}
.edit-sec-note { font-size: 12px; color: var(--text3, #90909e); margin: 6px 0 10px; line-height: 1.6; }
.edit-sec-row { display: flex; gap: 8px; align-items: center; margin: 8px 0; }
.edit-sec-row .form-input { min-width: 0; }
.agreement-wrap {
  max-width: 720px;
  margin: 0 auto;
  padding: 30px 20px 60px;
  line-height: 1.9;
  font-size: 14px;
}

.profile-label-chip {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 1;
	padding: 3px 7px;
	border-radius: 7px;
	font-size: 10px;
	font-weight: 700;
	line-height: 1.3;
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	border: 1px solid var(--rc-tag-border);
}
.profile-label-chip.label-want { background: color-mix(in srgb, var(--acoustic) 18%, var(--card)); color: var(--acoustic); }
.profile-label-chip.label-tried { background: color-mix(in srgb, var(--timbre) 18%, var(--card)); color: var(--timbre); }
.profile-label-chip.label-owned { background: color-mix(in srgb, var(--frequency) 18%, var(--card)); color: var(--frequency); }
.profile-label-chip.label-keeper { background: color-mix(in srgb, var(--gold) 20%, var(--card)); color: var(--gold); }
.labeled-grid { margin-bottom: 8px; }
.prv-first-batch { display: flex; flex-direction: column; }

@media (max-width: 640px) {
	.profile-header { padding: 26px 18px 24px; border-radius: 18px; }
	.stats-row { padding: 0; }
	.profile-label-chip { left: 8px; top: 8px; }
}
.agreement-wrap h1 { font-size: 22px; margin-bottom: 4px; }
.agreement-wrap h2 { font-size: 16px; margin: 26px 0 8px; }
.agree-date { font-size: 12px; color: var(--text3, #90909e); }
