/* ==========================================================================
   Ningbo Match 甬城良缘 —— 主样式表
   面向宁波地区的相亲交友主题
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. 变量与基础
   -------------------------------------------------------------------------- */
:root {
	--nb-primary: #d6336c;
	--nb-primary-dark: #b02a58;
	--nb-primary-light: #fdeef3;
	--nb-accent: #c9a227;
	--nb-accent-light: #fbf3dc;

	--nb-ink: #221c26;
	--nb-ink-2: #4a4250;
	--nb-ink-3: #7a7285;
	--nb-line: #efe7ec;
	--nb-bg: #ffffff;
	--nb-bg-soft: #fdf8fa;
	--nb-bg-mute: #f7f2f5;

	--nb-radius: 16px;
	--nb-radius-sm: 10px;
	--nb-radius-lg: 24px;
	--nb-shadow: 0 4px 20px rgba(120, 60, 90, .07);
	--nb-shadow-hover: 0 14px 40px rgba(120, 60, 90, .16);
	--nb-shadow-lg: 0 24px 60px rgba(120, 60, 90, .18);

	--nb-max: 1200px;
	--nb-nav-h: 68px;

	--nb-font: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
}

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

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

body {
	margin: 0;
	font-family: var(--nb-font);
	font-size: 15px;
	line-height: 1.75;
	color: var(--nb-ink-2);
	background: var(--nb-bg);
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

h1, h2, h3, h4, h5 {
	margin: 0 0 .6em;
	color: var(--nb-ink);
	line-height: 1.35;
	font-weight: 700;
}
h1 { font-size: 34px; }
h2 { font-size: 26px; }
h3 { font-size: 19px; }
p { margin: 0 0 1em; }
a { color: var(--nb-primary); text-decoration: none; transition: color .2s; }
a:hover { color: var(--nb-primary-dark); }
img { max-width: 100%; height: auto; display: block; }
ul, ol { margin: 0 0 1em; padding-left: 1.2em; }
button { font-family: inherit; cursor: pointer; }
input, select, textarea { font-family: inherit; font-size: 15px; }

.nb-container {
	width: 100%;
	max-width: var(--nb-max);
	margin: 0 auto;
	padding: 0 20px;
}
.nb-container--narrow { max-width: 880px; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}
.nb-skip-link:focus {
	position: fixed; top: 8px; left: 8px;
	width: auto; height: auto; clip: auto;
	background: #fff; padding: 10px 16px; z-index: 9999;
	border-radius: 8px;
}

/* --------------------------------------------------------------------------
   2. 通用组件：按钮 / 徽章 / 标签 / 网格
   -------------------------------------------------------------------------- */
.nb-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 11px 26px;
	border: 1px solid transparent;
	border-radius: 999px;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	white-space: nowrap;
	transition: all .22s ease;
	cursor: pointer;
}
.nb-btn--primary {
	background: linear-gradient(135deg, var(--nb-primary), #e8578b);
	color: #fff;
	box-shadow: 0 6px 18px rgba(214, 51, 108, .28);
}
.nb-btn--primary:hover {
	color: #fff;
	transform: translateY(-2px);
	box-shadow: 0 12px 26px rgba(214, 51, 108, .38);
}
.nb-btn--outline {
	background: #fff;
	color: var(--nb-primary);
	border-color: rgba(214, 51, 108, .35);
}
.nb-btn--outline:hover {
	background: var(--nb-primary-light);
	color: var(--nb-primary-dark);
	border-color: var(--nb-primary);
}
.nb-btn--ghost {
	background: var(--nb-bg-mute);
	color: var(--nb-ink-2);
}
.nb-btn--ghost:hover { background: #efe6ec; color: var(--nb-ink); }
.nb-btn--ghost-light {
	background: rgba(255, 255, 255, .16);
	color: #fff;
	border-color: rgba(255, 255, 255, .5);
	backdrop-filter: blur(6px);
}
.nb-btn--ghost-light:hover { background: rgba(255, 255, 255, .28); color: #fff; }
.nb-btn--lg { padding: 15px 38px; font-size: 16px; }
.nb-btn--sm { padding: 8px 18px; font-size: 13.5px; }
.nb-btn--block { width: 100%; }
.nb-btn:disabled, .nb-btn.is-disabled { opacity: .5; cursor: not-allowed; transform: none; box-shadow: none; }
.nb-btn__icon { font-size: 16px; }

.nb-badge {
	display: inline-block;
	padding: 3px 11px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.6;
}
.nb-badge--soft { background: var(--nb-primary-light); color: var(--nb-primary-dark); }
.nb-badge--verified { background: #e7f6ee; color: #1f7a4d; }
.nb-badge--vip { background: linear-gradient(135deg, #f6e6b8, #e3c56a); color: #7a5c0a; }

.nb-tag {
	display: inline-block;
	padding: 3px 10px;
	background: var(--nb-bg-mute);
	color: var(--nb-ink-3);
	border-radius: 6px;
	font-size: 12px;
}
.nb-tag--warn { background: #fdf0e3; color: #a4641a; }

.nb-dot {
	display: inline-block;
	width: 7px; height: 7px;
	border-radius: 50%;
	background: #28c76f;
	box-shadow: 0 0 0 3px rgba(40, 199, 111, .18);
	margin-right: 7px;
	vertical-align: middle;
}

.nb-grid { display: grid; gap: 22px; }
.nb-grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
.nb-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }

.nb-link-arrow { font-weight: 600; font-size: 14px; }

.nb-empty {
	text-align: center;
	padding: 60px 20px;
	background: var(--nb-bg-soft);
	border: 1px dashed var(--nb-line);
	border-radius: var(--nb-radius);
}
.nb-empty__icon { font-size: 44px; margin-bottom: 10px; }
.nb-empty h3 { margin-bottom: 6px; }
.nb-empty p { color: var(--nb-ink-3); }

/* --------------------------------------------------------------------------
   3. 顶部信息条 / 导航
   -------------------------------------------------------------------------- */
.nb-topbar {
	background: linear-gradient(90deg, #2c1f2a, #4a2c3d);
	color: rgba(255, 255, 255, .82);
	font-size: 13px;
}
.nb-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 38px;
}
.nb-topbar__slogan { margin: 0; }
.nb-topbar__contact { display: flex; gap: 20px; }
.nb-topbar__phone { color: #ffd9e5; font-weight: 600; }
.nb-topbar .nb-dot { width: 6px; height: 6px; box-shadow: none; }

.nb-header {
	position: sticky;
	top: 0;
	z-index: 900;
	background: rgba(255, 255, 255, .95);
	backdrop-filter: saturate(180%) blur(12px);
	border-bottom: 1px solid var(--nb-line);
}
.nb-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: var(--nb-nav-h);
	gap: 20px;
}

.nb-brand { display: flex; align-items: center; gap: 11px; }
.nb-brand__mark {
	display: grid;
	place-items: center;
	width: 42px; height: 42px;
	border-radius: 13px;
	background: linear-gradient(135deg, var(--nb-primary), #f0739f);
	color: #fff;
	font-size: 22px;
	font-weight: 700;
	box-shadow: 0 6px 16px rgba(214, 51, 108, .3);
	flex: none;
}
.nb-brand__text { display: flex; flex-direction: column; line-height: 1.2; }
.nb-brand__text strong { font-size: 19px; color: var(--nb-ink); letter-spacing: .5px; }
.nb-brand__text em { font-style: normal; font-size: 11.5px; color: var(--nb-ink-3); letter-spacing: .5px; }

.nb-nav { display: flex; align-items: center; gap: 26px; margin-left: auto; }
.nb-nav__list { display: flex; align-items: center; gap: 4px; margin: 0; padding: 0; list-style: none; }
.nb-nav__list li { position: relative; }
.nb-nav__link {
	display: block;
	padding: 9px 14px;
	border-radius: 10px;
	color: var(--nb-ink-2);
	font-weight: 500;
	font-size: 15px;
}
.nb-nav__link:hover { background: var(--nb-primary-light); color: var(--nb-primary-dark); }
.nb-nav .current-menu-item > .nb-nav__link,
.nb-nav .current_page_item > .nb-nav__link { color: var(--nb-primary); background: var(--nb-primary-light); }

/* 子菜单 */
.nb-nav__list .sub-menu {
	position: absolute;
	top: 100%; left: 0;
	min-width: 190px;
	padding: 8px;
	margin: 0;
	list-style: none;
	background: #fff;
	border-radius: var(--nb-radius-sm);
	box-shadow: var(--nb-shadow-hover);
	opacity: 0; visibility: hidden; transform: translateY(8px);
	transition: all .2s;
}
.nb-nav__list li:hover > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.nb-nav__list .sub-menu a { display: block; padding: 8px 12px; border-radius: 8px; color: var(--nb-ink-2); font-size: 14px; }
.nb-nav__list .sub-menu a:hover { background: var(--nb-primary-light); color: var(--nb-primary); }

.nb-nav-toggle {
	display: none;
	flex-direction: column;
	gap: 5px;
	width: 44px; height: 44px;
	align-items: center;
	justify-content: center;
	background: var(--nb-bg-mute);
	border: none;
	border-radius: 12px;
}
.nb-nav-toggle span { display: block; width: 20px; height: 2px; background: var(--nb-ink-2); border-radius: 2px; transition: .25s; }

/* --------------------------------------------------------------------------
   4. 首屏
   -------------------------------------------------------------------------- */
.nb-hero {
	position: relative;
	background: linear-gradient(135deg, #3a2130 0%, #6d2c4a 45%, #a83a5e 100%);
	color: #fff;
	overflow: hidden;
}
.nb-hero--has-image { background-size: cover; background-position: center; }
.nb-hero::before,
.nb-hero::after {
	content: "";
	position: absolute;
	border-radius: 50%;
	filter: blur(10px);
	opacity: .35;
}
.nb-hero::before { width: 460px; height: 460px; background: radial-gradient(circle, #ff8fb2, transparent 70%); top: -160px; right: -100px; }
.nb-hero::after { width: 380px; height: 380px; background: radial-gradient(circle, #c9a227, transparent 70%); bottom: -170px; left: -80px; }
.nb-hero__overlay { position: absolute; inset: 0; background: rgba(30, 12, 22, .55); display: none; }
.nb-hero--has-image .nb-hero__overlay { display: block; }

.nb-hero__inner {
	position: relative;
	z-index: 2;
	display: grid;
	grid-template-columns: 1.05fr .95fr;
	gap: 56px;
	align-items: center;
	padding: 78px 20px 86px;
}
.nb-hero__tag {
	display: inline-flex;
	align-items: center;
	padding: 7px 16px;
	background: rgba(255, 255, 255, .14);
	border: 1px solid rgba(255, 255, 255, .25);
	border-radius: 999px;
	font-size: 13px;
	margin-bottom: 20px;
	backdrop-filter: blur(6px);
}
.nb-hero__title {
	font-size: 46px;
	line-height: 1.25;
	color: #fff;
	margin-bottom: 18px;
	letter-spacing: 1px;
}
.nb-hero__subtitle {
	font-size: 16px;
	color: rgba(255, 255, 255, .82);
	max-width: 540px;
	margin-bottom: 30px;
}
.nb-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 40px; }
.nb-hero__trust {
	display: flex;
	gap: 38px;
	margin: 0; padding: 0; list-style: none;
}
.nb-hero__trust li { display: flex; flex-direction: column; }
.nb-hero__trust strong { font-size: 24px; color: #ffd9e5; }
.nb-hero__trust span { font-size: 12.5px; color: rgba(255, 255, 255, .68); }

/* --------------------------------------------------------------------------
   5. 匹配表单
   -------------------------------------------------------------------------- */
.nb-hero__panel { position: relative; }
.nb-match-form {
	background: #fff;
	color: var(--nb-ink-2);
	border-radius: var(--nb-radius-lg);
	padding: 26px 24px;
	box-shadow: var(--nb-shadow-lg);
}
.nb-match-form__head { margin-bottom: 18px; }
.nb-match-form__title { font-size: 20px; margin-bottom: 4px; }
.nb-match-form__desc { font-size: 13px; color: var(--nb-ink-3); margin: 0; }
.nb-match-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.nb-field--full { grid-column: 1 / -1; }
.nb-field { display: flex; flex-direction: column; gap: 6px; }
.nb-field__label { font-size: 13px; font-weight: 600; color: var(--nb-ink-2); }
.nb-field input[type="text"],
.nb-field input[type="tel"],
.nb-field input[type="search"],
.nb-field select,
.nb-field textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--nb-line);
	border-radius: var(--nb-radius-sm);
	background: var(--nb-bg-soft);
	color: var(--nb-ink);
	outline: none;
	transition: .2s;
	appearance: none;
}
.nb-field select {
	background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%237a7285' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	padding-right: 30px;
}
.nb-field input:focus, .nb-field select:focus, .nb-field textarea:focus {
	border-color: var(--nb-primary);
	background: #fff;
	box-shadow: 0 0 0 3px rgba(214, 51, 108, .1);
}

.nb-range { display: flex; align-items: center; gap: 8px; }
.nb-range select { flex: 1; }
.nb-range__sep { color: var(--nb-ink-3); }

.nb-segment { display: flex; gap: 8px; }
.nb-segment__item {
	flex: 1;
	padding: 9px 0;
	background: var(--nb-bg-soft);
	border: 1px solid var(--nb-line);
	border-radius: var(--nb-radius-sm);
	color: var(--nb-ink-3);
	font-size: 14px;
	transition: .2s;
}
.nb-segment__item.is-active {
	background: var(--nb-primary-light);
	border-color: var(--nb-primary);
	color: var(--nb-primary-dark);
	font-weight: 600;
}

.nb-match-form__actions { margin-top: 20px; }
.nb-match-form__reset {
	display: block;
	margin: 10px auto 0;
	background: none;
	border: none;
	color: var(--nb-ink-3);
	font-size: 13px;
	text-decoration: underline;
}
.nb-match-form__reset:hover { color: var(--nb-primary); }

/* --------------------------------------------------------------------------
   6. 数据墙
   -------------------------------------------------------------------------- */
.nb-stats { background: var(--nb-bg-soft); border-bottom: 1px solid var(--nb-line); }
.nb-stats__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
	padding: 42px 0;
	text-align: center;
}
.nb-stat__icon { font-size: 26px; }
.nb-stat__num { font-size: 36px; font-weight: 800; color: var(--nb-primary); line-height: 1.2; }
.nb-stat__num em { font-size: 15px; font-style: normal; font-weight: 600; margin-left: 3px; color: var(--nb-ink-3); }
.nb-stat__label { margin: 0; font-size: 13.5px; color: var(--nb-ink-3); }

/* --------------------------------------------------------------------------
   7. 区块通用
   -------------------------------------------------------------------------- */
.nb-section { padding: 76px 0; }
.nb-section--featured { background: #fff; }
.nb-section--soft { background: var(--nb-bg-soft); }
.nb-section--howto { background: var(--nb-bg-soft); }
.nb-section--events { background: #fff; }
.nb-section--advisors { background: var(--nb-bg-soft); }
.nb-section--stories { background: #fff; }

.nb-section__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	margin-bottom: 38px;
}
.nb-section__head--center {
	flex-direction: column;
	align-items: center;
	text-align: center;
}
.nb-section__eyebrow {
	display: inline-block;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 2px;
	color: var(--nb-primary);
	margin-bottom: 10px;
}
.nb-section__title { font-size: 30px; margin-bottom: 8px; }
.nb-section__title--sm { font-size: 22px; margin: 38px 0 20px; }
.nb-section__desc { color: var(--nb-ink-3); margin: 0; max-width: 620px; }
.nb-section__actions { text-align: center; margin-top: 40px; }

/* --------------------------------------------------------------------------
   8. 嘉宾卡片
   -------------------------------------------------------------------------- */
.nb-card {
	background: #fff;
	border: 1px solid var(--nb-line);
	border-radius: var(--nb-radius);
	overflow: hidden;
	transition: all .28s ease;
	display: flex;
	flex-direction: column;
}
.nb-card:hover { transform: translateY(-6px); box-shadow: var(--nb-shadow-hover); border-color: transparent; }

.nb-card__media { position: relative; display: block; aspect-ratio: 4 / 5; overflow: hidden; background: var(--nb-bg-mute); }
.nb-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.nb-card:hover .nb-card__media img { transform: scale(1.06); }
.nb-card__media::after {
	content: "";
	position: absolute; inset: auto 0 0 0;
	height: 45%;
	background: linear-gradient(to top, rgba(28, 12, 20, .62), transparent);
}
.nb-card__sex {
	position: absolute; top: 12px; left: 12px;
	z-index: 2;
	display: grid; place-items: center;
	width: 28px; height: 28px;
	border-radius: 50%;
	background: rgba(255, 255, 255, .92);
	font-size: 15px;
	font-weight: 700;
	color: #e0559b;
}
.nb-card.is-male .nb-card__sex { color: #3f8ce8; }
.nb-card__vip {
	position: absolute; top: 12px; right: 12px;
	z-index: 2;
	padding: 3px 10px;
	border-radius: 999px;
	background: linear-gradient(135deg, #f6e6b8, #dcb84f);
	color: #6d500a;
	font-size: 11px;
	font-weight: 700;
}
.nb-card__verified {
	position: absolute; top: 46px; right: 12px;
	z-index: 2;
	padding: 2px 9px;
	border-radius: 999px;
	background: rgba(30, 140, 90, .92);
	color: #fff;
	font-size: 10.5px;
	font-weight: 600;
}
.nb-card__zoom {
	position: absolute; left: 0; right: 0; bottom: 14px;
	z-index: 2;
	text-align: center;
	color: #fff;
	font-size: 13.5px;
	font-weight: 600;
	opacity: 0;
	transform: translateY(8px);
	transition: .28s;
}
.nb-card:hover .nb-card__zoom { opacity: 1; transform: translateY(0); }

.nb-card__body { padding: 16px 18px 18px; display: flex; flex-direction: column; flex: 1; }
.nb-card__name { font-size: 17px; margin-bottom: 6px; }
.nb-card__name a { color: var(--nb-ink); }
.nb-card__name a:hover { color: var(--nb-primary); }
.nb-card__meta { font-size: 13px; color: var(--nb-ink-3); margin-bottom: 8px; }
.nb-card__job { font-size: 13px; color: var(--nb-ink-2); margin-bottom: 10px; }
.nb-card__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.nb-card__actions { display: flex; gap: 8px; margin-top: auto; }
.nb-card__actions .nb-btn { flex: 1; }

/* --------------------------------------------------------------------------
   9. 选项卡
   -------------------------------------------------------------------------- */
.nb-tabs__nav { display: flex; gap: 10px; margin-bottom: 26px; }
.nb-tabs__btn {
	padding: 10px 26px;
	background: var(--nb-bg-soft);
	border: 1px solid var(--nb-line);
	border-radius: 999px;
	color: var(--nb-ink-2);
	font-weight: 600;
	transition: .2s;
}
.nb-tabs__btn.is-active { background: var(--nb-primary); border-color: var(--nb-primary); color: #fff; box-shadow: 0 6px 16px rgba(214, 51, 108, .26); }
.nb-tabs__panel { display: none; }
.nb-tabs__panel.is-active { display: block; animation: nbFade .35s ease; }
@keyframes nbFade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* --------------------------------------------------------------------------
   10. 服务流程
   -------------------------------------------------------------------------- */
.nb-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.nb-step {
	position: relative;
	background: #fff;
	border-radius: var(--nb-radius);
	padding: 32px 24px 26px;
	box-shadow: var(--nb-shadow);
	text-align: center;
}
.nb-step__no {
	position: absolute; top: 14px; right: 18px;
	font-size: 30px;
	font-weight: 800;
	color: var(--nb-primary-light);
}
.nb-step__icon { font-size: 34px; display: block; margin-bottom: 12px; }
.nb-step__title { font-size: 17px; margin-bottom: 8px; }
.nb-step__desc { font-size: 13.5px; color: var(--nb-ink-3); margin: 0; }

/* --------------------------------------------------------------------------
   11. 活动
   -------------------------------------------------------------------------- */
.nb-events { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.nb-events--grid { margin-bottom: 40px; }
.nb-event-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--nb-line);
	border-radius: var(--nb-radius);
	overflow: hidden;
	transition: .28s;
}
.nb-event-card:hover { transform: translateY(-5px); box-shadow: var(--nb-shadow-hover); border-color: transparent; }
.nb-event-card__media {
	position: relative;
	height: 160px;
	background: linear-gradient(135deg, #f7dbe6, #f0c6d8);
	background-size: cover;
	background-position: center;
	display: grid;
	place-items: center;
}
.nb-event-card__emoji { font-size: 46px; }
.nb-event-card__status {
	position: absolute; top: 12px; left: 12px;
	padding: 4px 12px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 600;
	color: #fff;
	background: #6c757d;
}
.nb-event-card__status.is-open { background: #28a76f; }
.nb-event-card__status.is-hot { background: #e8873a; }
.nb-event-card__status.is-full { background: #d64545; }
.nb-event-card__status.is-closed { background: #8b8592; }

.nb-event-card__body { padding: 18px; display: flex; flex-direction: column; flex: 1; }
.nb-event-card__cat {
	align-self: flex-start;
	padding: 3px 11px;
	background: var(--nb-primary-light);
	color: var(--nb-primary-dark);
	border-radius: 999px;
	font-size: 12px;
	margin-bottom: 10px;
}
.nb-event-card__title { font-size: 17px; margin-bottom: 12px; }
.nb-event-card__title a { color: var(--nb-ink); }
.nb-event-card__title a:hover { color: var(--nb-primary); }
.nb-event-card__info { list-style: none; padding: 0; margin: 0 0 14px; display: grid; gap: 6px; font-size: 13px; color: var(--nb-ink-3); }
.nb-event-card__info li { display: flex; gap: 8px; align-items: baseline; }
.nb-event-card__info span { flex: none; }
.nb-event-card__actions { display: flex; gap: 8px; margin-top: auto; }
.nb-event-card__actions .nb-btn { flex: 1; }

.nb-progress { height: 7px; background: var(--nb-bg-mute); border-radius: 999px; overflow: hidden; margin-bottom: 7px; }
.nb-progress--lg { height: 10px; margin-top: 16px; }
.nb-progress__bar { height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--nb-primary), #f0739f); }
.nb-progress__text { font-size: 12.5px; color: var(--nb-ink-3); margin: 0 0 14px; }

/* --------------------------------------------------------------------------
   12. 红娘团队
   -------------------------------------------------------------------------- */
.nb-advisors { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.nb-advisor {
	background: #fff;
	border-radius: var(--nb-radius);
	padding: 26px 20px 22px;
	text-align: center;
	box-shadow: var(--nb-shadow);
	transition: .28s;
}
.nb-advisor:hover { transform: translateY(-5px); box-shadow: var(--nb-shadow-hover); }
.nb-advisor__photo { width: 96px; height: 96px; margin: 0 auto 14px; border-radius: 50%; overflow: hidden; border: 3px solid var(--nb-primary-light); }
.nb-advisor__photo img { width: 100%; height: 100%; object-fit: cover; }
.nb-advisor__name { font-size: 17px; margin-bottom: 3px; }
.nb-advisor__title { font-size: 12.5px; color: var(--nb-primary); margin-bottom: 12px; }
.nb-advisor__stats { list-style: none; padding: 0; margin: 0 0 10px; display: flex; justify-content: center; gap: 20px; font-size: 12.5px; color: var(--nb-ink-3); }
.nb-advisor__stats strong { display: block; font-size: 18px; color: var(--nb-ink); }
.nb-advisor__area { font-size: 12px; color: var(--nb-ink-3); margin: 0; }

/* --------------------------------------------------------------------------
   13. 成功案例
   -------------------------------------------------------------------------- */
.nb-stories { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.nb-stories--grid { margin-bottom: 40px; }
.nb-story-card {
	background: #fff;
	border: 1px solid var(--nb-line);
	border-radius: var(--nb-radius);
	overflow: hidden;
	transition: .28s;
}
.nb-story-card:hover { transform: translateY(-5px); box-shadow: var(--nb-shadow-hover); border-color: transparent; }
.nb-story-card__thumb { display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.nb-story-card__thumb img { width: 100%; height: 100%; object-fit: cover; transition: .5s; }
.nb-story-card:hover .nb-story-card__thumb img { transform: scale(1.05); }
.nb-story-card__body { padding: 22px 20px; position: relative; }
.nb-story-card__quote { position: absolute; top: 10px; right: 16px; font-size: 40px; color: var(--nb-primary-light); line-height: 1; }
.nb-story-card__title { font-size: 17px; margin-bottom: 10px; }
.nb-story-card__title a { color: var(--nb-ink); }
.nb-story-card__title a:hover { color: var(--nb-primary); }
.nb-story-card__couple { font-size: 13.5px; color: var(--nb-ink-2); margin-bottom: 12px; }
.nb-heart { color: var(--nb-primary); margin: 0 7px; }
.nb-story-card__excerpt { font-size: 13.5px; color: var(--nb-ink-3); margin-bottom: 14px; }
.nb-story-card__meta { list-style: none; padding: 12px 0 0; margin: 0; border-top: 1px dashed var(--nb-line); display: flex; flex-wrap: wrap; gap: 14px; font-size: 12.5px; color: var(--nb-ink-3); }
.nb-story-card__advisor { font-size: 12px; color: var(--nb-primary); margin: 8px 0 0; }
.nb-stories-cta { text-align: center; padding: 50px 20px; background: var(--nb-bg-soft); border-radius: var(--nb-radius); margin-top: 30px; }

/* --------------------------------------------------------------------------
   14. 底部招募
   -------------------------------------------------------------------------- */
.nb-cta {
	background: linear-gradient(120deg, #3a2130, #7d2f52 55%, #b8406a);
	color: #fff;
	padding: 64px 0;
}
.nb-cta__inner { display: grid; grid-template-columns: 1.2fr 1fr; gap: 44px; align-items: center; }
.nb-cta__text h2 { color: #fff; font-size: 30px; margin-bottom: 14px; }
.nb-cta__text p { color: rgba(255, 255, 255, .8); margin: 0; }
.nb-cta__actions { display: flex; flex-wrap: wrap; gap: 14px; }
.nb-cta__wechat { flex-basis: 100%; margin: 4px 0 0; font-size: 13px; color: rgba(255, 255, 255, .7); }
.nb-cta__wechat strong { color: #ffd9e5; }

/* --------------------------------------------------------------------------
   15. 页脚
   -------------------------------------------------------------------------- */
.nb-footer { background: #241a22; color: rgba(255, 255, 255, .68); font-size: 13.5px; }
.nb-footer__top { display: grid; grid-template-columns: 1.6fr 1fr 1.4fr 1.3fr; gap: 40px; padding: 56px 20px 40px; }
.nb-footer__logo { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.nb-footer__logo strong { color: #fff; font-size: 18px; }
.nb-footer__about { margin-bottom: 16px; line-height: 1.8; }
.nb-footer__badges { display: flex; flex-wrap: wrap; gap: 8px; }
.nb-footer .nb-badge--soft { background: rgba(255, 255, 255, .1); color: rgba(255, 255, 255, .8); }
.nb-footer__title { color: #fff; font-size: 15px; margin-bottom: 16px; }
.nb-footer__links { list-style: none; padding: 0; margin: 0; display: grid; gap: 9px; }
.nb-footer__links--grid { grid-template-columns: 1fr 1fr; }
.nb-footer__links a { color: rgba(255, 255, 255, .68); }
.nb-footer__links a:hover { color: #ffd9e5; }
.nb-footer__contact { list-style: none; padding: 0; margin: 0 0 16px; display: grid; gap: 10px; }
.nb-footer__contact li { display: flex; gap: 9px; align-items: flex-start; }
.nb-footer__contact span { flex: none; }
.nb-footer__qr { display: flex; align-items: center; gap: 12px; }
.nb-footer__qr img { width: 84px; height: 84px; border-radius: 8px; background: #fff; padding: 4px; }
.nb-footer__qr span { font-size: 12px; }
.nb-footer__nav { list-style: none; display: flex; flex-wrap: wrap; gap: 20px; padding: 0; margin: 0; border-top: 1px solid rgba(255, 255, 255, .08); padding-top: 20px; }
.nb-footer__nav a { color: rgba(255, 255, 255, .6); }
.nb-footer__bottom { border-top: 1px solid rgba(255, 255, 255, .08); margin-top: 20px; }
.nb-footer__bottom-inner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; padding: 20px; font-size: 12.5px; color: rgba(255, 255, 255, .45); }
.nb-footer__bottom a { color: rgba(255, 255, 255, .45); }
.nb-legal { display: flex; flex-wrap: wrap; gap: 16px; margin: 0; }

/* --------------------------------------------------------------------------
   16. 移动端底栏
   -------------------------------------------------------------------------- */
.nb-mobile-bar {
	display: none;
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 950;
	background: rgba(255, 255, 255, .97);
	backdrop-filter: blur(12px);
	border-top: 1px solid var(--nb-line);
	padding: 6px 0 calc(6px + env(safe-area-inset-bottom));
}
.nb-mobile-bar a {
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	font-size: 11px;
	color: var(--nb-ink-3);
	padding: 4px 0;
}
.nb-mobile-bar a span { font-size: 19px; }
.nb-mobile-bar a.is-primary { color: var(--nb-primary); font-weight: 600; }

/* --------------------------------------------------------------------------
   17. 弹窗
   -------------------------------------------------------------------------- */
.nb-modal { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: 20px; }
.nb-modal[hidden] { display: none; }
.nb-modal__mask { position: absolute; inset: 0; background: rgba(28, 14, 22, .55); backdrop-filter: blur(3px); animation: nbFade .2s; }
.nb-modal__dialog {
	position: relative;
	width: 100%;
	max-width: 420px;
	background: #fff;
	border-radius: var(--nb-radius-lg);
	padding: 30px 26px 26px;
	box-shadow: var(--nb-shadow-lg);
	animation: nbPop .28s ease;
}
@keyframes nbPop { from { opacity: 0; transform: scale(.94) translateY(12px); } to { opacity: 1; transform: none; } }
.nb-modal__close {
	position: absolute; top: 12px; right: 14px;
	width: 32px; height: 32px;
	border: none; border-radius: 50%;
	background: var(--nb-bg-mute);
	color: var(--nb-ink-3);
	font-size: 20px; line-height: 1;
}
.nb-modal__close:hover { background: var(--nb-primary-light); color: var(--nb-primary); }
.nb-modal__title { font-size: 19px; margin-bottom: 16px; }
.nb-modal__body { font-size: 14px; }
.nb-contact-box { background: var(--nb-bg-soft); border: 1px solid var(--nb-line); border-radius: var(--nb-radius-sm); padding: 14px 16px; margin-bottom: 14px; }
.nb-contact-box__row { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; }
.nb-contact-box__row + .nb-contact-box__row { border-top: 1px dashed var(--nb-line); }
.nb-contact-box__row span { color: var(--nb-ink-3); font-size: 13px; }
.nb-contact-box__row strong { font-size: 15px; color: var(--nb-ink); letter-spacing: .5px; }
.nb-copy-btn { background: var(--nb-primary-light); color: var(--nb-primary-dark); border: none; border-radius: 6px; padding: 4px 12px; font-size: 12px; font-weight: 600; }
.nb-modal__note { font-size: 12.5px; color: var(--nb-ink-3); margin: 0; }

/* --------------------------------------------------------------------------
   18. 页面头 / 面包屑
   -------------------------------------------------------------------------- */
.nb-page-header { background: var(--nb-bg-soft); border-bottom: 1px solid var(--nb-line); padding: 34px 0; }
.nb-page-header__title { font-size: 30px; margin: 8px 0 8px; }
.nb-page-header__desc { color: var(--nb-ink-3); margin: 0; max-width: 760px; }
.nb-page-header__search { max-width: 420px; margin-top: 18px; }

.nb-breadcrumb { font-size: 12.5px; color: var(--nb-ink-3); display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.nb-breadcrumb a { color: var(--nb-ink-3); }
.nb-breadcrumb a:hover { color: var(--nb-primary); }
.nb-breadcrumb .current { color: var(--nb-ink-2); }

.nb-quick-filter { margin-top: 22px; display: grid; gap: 12px; }
.nb-quick-filter__group { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.nb-quick-filter__label { font-size: 13px; color: var(--nb-ink-3); margin-right: 4px; }
.nb-chip {
	padding: 6px 15px;
	background: #fff;
	border: 1px solid var(--nb-line);
	border-radius: 999px;
	font-size: 13px;
	color: var(--nb-ink-2);
	transition: .2s;
}
.nb-chip:hover { border-color: var(--nb-primary); color: var(--nb-primary); }
.nb-chip.is-active { background: var(--nb-primary); border-color: var(--nb-primary); color: #fff; }

/* ---- 嘉宾筛选栏：性别 / 学历 / 婚姻 / 身高 / 年龄 / 地区 ---- */
.nb-filterbar {
	margin-top: 24px;
	background: #fff;
	border: 1px solid var(--nb-line);
	border-radius: var(--nb-radius);
	padding: 4px 22px 16px;
	box-shadow: var(--nb-shadow);
}
.nb-filterbar__row {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	padding: 12px 0;
	border-bottom: 1px dashed var(--nb-line);
}
.nb-filterbar__row:last-child { border-bottom: none; }
.nb-filterbar__label {
	flex: none;
	width: 46px;
	padding-top: 6px;
	font-size: 13px;
	font-weight: 600;
	color: var(--nb-ink-3);
	letter-spacing: 1px;
}
.nb-filterbar__chips { display: flex; flex-wrap: wrap; gap: 8px; flex: 1; min-width: 0; }
.nb-filterbar__chips .nb-chip { background: var(--nb-bg-soft); }
.nb-filterbar__chips .nb-chip:hover { background: #fff; border-color: var(--nb-primary); }
.nb-filterbar__chips .nb-chip.is-active { background: var(--nb-primary); border-color: var(--nb-primary); }

.nb-filterbar__footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding-top: 14px;
	border-top: 1px solid var(--nb-line);
}
.nb-filterbar__active { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; flex: 1; min-width: 0; }
.nb-chip--x {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	background: var(--nb-primary-light);
	border-color: #f2cfdd;
	color: var(--nb-primary-dark);
	font-weight: 600;
}
.nb-chip--x i { font-style: normal; font-size: 15px; line-height: 1; opacity: .6; }
.nb-chip--x:hover { background: #fbdde8; border-color: var(--nb-primary); color: var(--nb-primary-dark); }
.nb-filterbar__clear { font-size: 13px; color: var(--nb-ink-3); text-decoration: underline; flex: none; }
.nb-filterbar__clear:hover { color: var(--nb-primary); }

.nb-empty__actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 18px; }

/* --------------------------------------------------------------------------
   19. 布局
   -------------------------------------------------------------------------- */
.nb-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 36px; padding: 46px 20px 70px; align-items: start; }
.nb-layout__main { min-width: 0; }
.nb-layout__side { display: grid; gap: 22px; position: sticky; top: calc(var(--nb-nav-h) + 20px); }
.nb-layout--profile { grid-template-columns: minmax(0, 1fr) 330px; }

.nb-widget { background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius); padding: 22px; }
.nb-widget__title { font-size: 16px; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid var(--nb-line); position: relative; }
.nb-widget__title::after { content: ""; position: absolute; left: 0; bottom: -1px; width: 42px; height: 2px; background: var(--nb-primary); }
.nb-widget--cta { background: linear-gradient(150deg, #fff5f8, #fdeef3); border-color: #f7dbe4; }
.nb-widget--cta p { font-size: 13.5px; color: var(--nb-ink-2); }
.nb-widget--hot .nb-hot-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.nb-hot-list a { display: flex; gap: 12px; align-items: center; }
.nb-hot-list img { width: 52px; height: 62px; border-radius: 9px; object-fit: cover; flex: none; background: var(--nb-bg-mute); }
.nb-hot-list strong { display: block; font-size: 14px; color: var(--nb-ink); }
.nb-hot-list em { font-style: normal; font-size: 12px; color: var(--nb-ink-3); }
.nb-hot-list a:hover strong { color: var(--nb-primary); }

.nb-tag-cloud { display: flex; flex-wrap: wrap; gap: 8px; }
.nb-tag-cloud a { padding: 5px 12px; background: var(--nb-bg-mute); border-radius: 999px; font-size: 12.5px; color: var(--nb-ink-2); }
.nb-tag-cloud a:hover { background: var(--nb-primary-light); color: var(--nb-primary-dark); }

.nb-mini-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.nb-mini-list a { display: block; }
.nb-mini-list strong { display: block; font-size: 14px; color: var(--nb-ink); line-height: 1.5; }
.nb-mini-list em { font-style: normal; font-size: 12px; color: var(--nb-ink-3); }
.nb-mini-list a:hover strong { color: var(--nb-primary); }

/* --------------------------------------------------------------------------
   20. 列表页 / 文章
   -------------------------------------------------------------------------- */
.nb-posts { display: grid; gap: 22px; }
.nb-post-card { display: grid; grid-template-columns: 260px 1fr; gap: 22px; background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius); overflow: hidden; transition: .25s; }
.nb-post-card:hover { box-shadow: var(--nb-shadow-hover); border-color: transparent; }
.nb-post-card__thumb { display: block; aspect-ratio: 4 / 3; overflow: hidden; }
.nb-post-card__thumb img { width: 100%; height: 100%; object-fit: cover; }
.nb-post-card__body { padding: 20px 22px 20px 0; }
.nb-post-card:not(:has(.nb-post-card__thumb)) .nb-post-card__body { padding-left: 22px; }
.nb-post-card__meta { display: flex; gap: 12px; font-size: 12.5px; color: var(--nb-ink-3); margin-bottom: 8px; }
.nb-post-card__title { font-size: 19px; margin-bottom: 8px; }
.nb-post-card__title a { color: var(--nb-ink); }
.nb-post-card__title a:hover { color: var(--nb-primary); }
.nb-post-card__excerpt { font-size: 14px; color: var(--nb-ink-3); margin-bottom: 12px; }

.nb-entry { background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius); overflow: hidden; }
.nb-entry__thumb { margin: 0; }
.nb-entry__thumb img { width: 100%; }
.nb-entry__content { padding: 30px; font-size: 15.5px; line-height: 1.9; }
.nb-entry__content > *:first-child { margin-top: 0; }
.nb-entry__content h2 { margin-top: 1.4em; font-size: 22px; }
.nb-entry__content h3 { margin-top: 1.2em; }
.nb-entry__content img { border-radius: var(--nb-radius-sm); }
.nb-entry__content blockquote { margin: 1.2em 0; padding: 14px 20px; background: var(--nb-bg-soft); border-left: 3px solid var(--nb-primary); border-radius: 0 var(--nb-radius-sm) var(--nb-radius-sm) 0; color: var(--nb-ink-2); }
.nb-entry__content table { width: 100%; border-collapse: collapse; }
.nb-entry__content th, .nb-entry__content td { border: 1px solid var(--nb-line); padding: 10px 12px; }
.nb-entry__content th { background: var(--nb-bg-soft); }
.nb-entry__footer { padding: 20px 30px; border-top: 1px solid var(--nb-line); display: flex; flex-wrap: wrap; gap: 14px; justify-content: space-between; align-items: center; font-size: 13px; }
.nb-entry__share { display: flex; gap: 12px; align-items: center; color: var(--nb-ink-3); }

.nb-post-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 24px; }
.nb-post-nav__item { display: flex; flex-direction: column; gap: 4px; padding: 16px 20px; background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius-sm); }
.nb-post-nav__item span { font-size: 12px; color: var(--nb-ink-3); }
.nb-post-nav__item strong { font-size: 14px; color: var(--nb-ink); font-weight: 600; }
.nb-post-nav__item--next { text-align: right; }
.nb-post-nav__item:hover { border-color: var(--nb-primary); }

.nb-pagination { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; align-items: center; margin-top: 36px; }
.nb-pagination .page-numbers {
	display: grid; place-items: center;
	min-width: 40px; height: 40px;
	padding: 0 12px;
	background: #fff;
	border: 1px solid var(--nb-line);
	border-radius: var(--nb-radius-sm);
	color: var(--nb-ink-2);
	font-size: 14px;
}
.nb-pagination .page-numbers:hover { border-color: var(--nb-primary); color: var(--nb-primary); }
.nb-pagination .page-numbers.current { background: var(--nb-primary); border-color: var(--nb-primary); color: #fff; }
.nb-pagination__info { font-size: 13px; color: var(--nb-ink-3); }

/* --------------------------------------------------------------------------
   21. 嘉宾详情页
   -------------------------------------------------------------------------- */
.nb-page-header--members, .nb-page-header--event, .nb-page-header--story { padding-bottom: 40px; }
.nb-profile-hero { background: linear-gradient(135deg, #fdeef3, #fbf3dc); }
.nb-profile-hero.is-male { background: linear-gradient(135deg, #eaf3fd, #fbf3dc); }
.nb-profile-hero .nb-container { padding-top: 22px; padding-bottom: 6px; }

.nb-profile { background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius); padding: 26px; display: grid; grid-template-columns: 340px 1fr; gap: 32px; }
.nb-profile__main-photo { position: relative; border-radius: var(--nb-radius); overflow: hidden; aspect-ratio: 4 / 5; background: var(--nb-bg-mute); }
.nb-profile__main-photo img { width: 100%; height: 100%; object-fit: cover; }
.nb-profile__vip { position: absolute; top: 14px; right: 14px; padding: 4px 13px; border-radius: 999px; background: linear-gradient(135deg, #f6e6b8, #dcb84f); color: #6d500a; font-size: 12px; font-weight: 700; }
.nb-profile__count { position: absolute; bottom: 14px; right: 14px; padding: 3px 11px; border-radius: 999px; background: rgba(28, 14, 22, .6); color: #fff; font-size: 12px; }
.nb-profile__thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 10px; }
.nb-profile__thumb { padding: 0; border: 2px solid transparent; border-radius: 8px; overflow: hidden; aspect-ratio: 1; background: var(--nb-bg-mute); transition: .2s; }
.nb-profile__thumb img { width: 100%; height: 100%; object-fit: cover; }
.nb-profile__thumb.is-active { border-color: var(--nb-primary); }
.nb-profile__head { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-bottom: 10px; }
.nb-profile__name { font-size: 28px; margin: 0; display: flex; align-items: center; gap: 10px; }
.nb-profile__sex { color: var(--nb-primary); font-size: 22px; }
.nb-profile.is-male .nb-profile__sex { color: #3f8ce8; }
.nb-profile__badges { display: flex; flex-wrap: wrap; gap: 8px; }
.nb-profile__glance { font-size: 15px; color: var(--nb-ink-2); margin-bottom: 14px; }
.nb-profile__tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; }
.nb-profile__contact-box { background: var(--nb-bg-soft); border: 1px dashed #f0cfdd; border-radius: var(--nb-radius); padding: 20px; text-align: center; }
.nb-profile__hint { font-size: 12.5px; color: var(--nb-ink-3); margin: 10px 0 0; }
.nb-locked { display: grid; gap: 12px; justify-items: center; }
.nb-locked__blur { filter: blur(5px); user-select: none; font-size: 17px; letter-spacing: 2px; color: var(--nb-ink-3); }

.nb-panel { background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius); padding: 26px; margin-top: 24px; }
.nb-panel--flat { box-shadow: none; }
.nb-panel__title { font-size: 18px; margin-bottom: 18px; display: flex; align-items: center; gap: 9px; }
.nb-panel__title span { font-size: 19px; }
.nb-panel__content { font-size: 15px; line-height: 1.9; }
.nb-panel--expect { background: linear-gradient(150deg, #fff8fb, #fdeef3); border-color: #f7dbe4; }

.nb-spec-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 30px; }
.nb-spec { display: flex; justify-content: space-between; gap: 12px; padding: 12px 0; border-bottom: 1px dashed var(--nb-line); font-size: 14px; }
.nb-spec__label { color: var(--nb-ink-3); flex: none; }
.nb-spec__value { color: var(--nb-ink); font-weight: 600; text-align: right; }

.nb-event-meta-top { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; font-size: 14px; color: var(--nb-ink-2); margin-top: 6px; }

.nb-timeline { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 30px; }
.nb-timeline li { display: flex; flex-direction: column; gap: 2px; position: relative; padding-left: 18px; }
.nb-timeline__dot { position: absolute; left: 0; top: 8px; width: 9px; height: 9px; border-radius: 50%; background: var(--nb-primary); box-shadow: 0 0 0 4px var(--nb-primary-light); }
.nb-timeline strong { font-size: 14px; color: var(--nb-ink); }
.nb-timeline em { font-style: normal; font-size: 12.5px; color: var(--nb-ink-3); }
.nb-timeline__advisor { margin: 20px 0 0; font-size: 13.5px; color: var(--nb-ink-3); }
.nb-story-couple { display: flex; align-items: center; gap: 12px; font-size: 16px; color: var(--nb-ink-2); margin: 8px 0 0; }

/* --------------------------------------------------------------------------
   22. 智能匹配页
   -------------------------------------------------------------------------- */
.nb-page-header--match { padding-bottom: 30px; }
.nb-match-intro { margin: 30px 0 0; font-size: 15px; }
.nb-match-layout { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 32px; padding: 34px 0 70px; align-items: start; }
.nb-match-side { position: sticky; top: calc(var(--nb-nav-h) + 20px); }
.nb-match-side .nb-match-form { box-shadow: var(--nb-shadow); }
.nb-match-results__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 20px; padding-bottom: 14px; border-bottom: 1px solid var(--nb-line); }
.nb-match-results__title { font-size: 19px; margin: 0; }
.nb-match-results__controls { display: flex; align-items: center; gap: 14px; }
.nb-match-results__count { font-size: 13.5px; color: var(--nb-ink-3); }
.nb-match-results__count strong { color: var(--nb-primary); }
.nb-match-results__controls select { padding: 8px 30px 8px 12px; border: 1px solid var(--nb-line); border-radius: var(--nb-radius-sm); background: #fff; appearance: none;
	background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%237a7285' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 11px center; font-size: 13.5px; }
.nb-match-results__body { min-height: 300px; transition: opacity .2s; }
.nb-match-results__body.is-loading { opacity: .45; pointer-events: none; }

/* --------------------------------------------------------------------------
   23. 表单 / 报名
   -------------------------------------------------------------------------- */
.nb-signup-form { display: grid; gap: 12px; }
.nb-widget--booking { border-color: #f7dbe4; }
.nb-widget__closed { font-size: 13.5px; color: var(--nb-ink-3); }
.nb-signup-form__note { font-size: 12px; color: var(--nb-ink-3); margin: 0; }

.nb-searchform { position: relative; display: flex; }
.nb-searchform__input { flex: 1; padding: 11px 46px 11px 16px; border: 1px solid var(--nb-line); border-radius: 999px; background: #fff; outline: none; }
.nb-searchform__input:focus { border-color: var(--nb-primary); box-shadow: 0 0 0 3px rgba(214, 51, 108, .1); }
.nb-searchform__btn { position: absolute; right: 5px; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; border: none; border-radius: 50%; background: var(--nb-primary); color: #fff; font-size: 15px; }

/* --------------------------------------------------------------------------
   24. 评论
   -------------------------------------------------------------------------- */
.nb-comments { background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius); padding: 26px; margin-top: 24px; }
.nb-comments__title { font-size: 17px; }
.nb-comments__list { list-style: none; padding: 0; }
.nb-comments__list li { padding: 16px 0; border-bottom: 1px dashed var(--nb-line); }
.nb-comments__list .children { list-style: none; padding-left: 26px; }
.nb-comments .comment-meta { font-size: 12.5px; color: var(--nb-ink-3); margin-bottom: 6px; }
.nb-comments .comment-author img { border-radius: 50%; margin-right: 8px; }
.comment-form textarea, .comment-form input { width: 100%; padding: 11px 14px; border: 1px solid var(--nb-line); border-radius: var(--nb-radius-sm); background: var(--nb-bg-soft); }
.comment-form textarea:focus, .comment-form input:focus { border-color: var(--nb-primary); background: #fff; outline: none; }
.comment-form label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; }
.comment-form p { margin-bottom: 14px; }

/* --------------------------------------------------------------------------
   25. 404
   -------------------------------------------------------------------------- */
.nb-404 { padding: 90px 0 110px; text-align: center; }
.nb-404__code { font-size: 110px; font-weight: 800; line-height: 1; background: linear-gradient(135deg, var(--nb-primary), #f0739f); -webkit-background-clip: text; background-clip: text; color: transparent; }
.nb-404__title { font-size: 26px; }
.nb-404__desc { color: var(--nb-ink-3); }
.nb-404__search { max-width: 420px; margin: 24px auto; }
.nb-404__links { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }

/* --------------------------------------------------------------------------
   26. 响应式
   -------------------------------------------------------------------------- */
@media (max-width: 1100px) {
	.nb-grid--cols-4 { grid-template-columns: repeat(3, 1fr); }
	.nb-events, .nb-stories, .nb-steps, .nb-advisors { grid-template-columns: repeat(2, 1fr); }
	.nb-footer__top { grid-template-columns: 1.4fr 1fr 1fr; }
	.nb-footer__col--contact { grid-column: 1 / -1; }
}

@media (max-width: 980px) {
	.nb-hero__inner { grid-template-columns: 1fr; gap: 40px; padding: 56px 20px 62px; }
	.nb-hero__title { font-size: 36px; }
	.nb-layout, .nb-layout--profile, .nb-match-layout { grid-template-columns: 1fr; }
	.nb-layout__side, .nb-match-side { position: static; }
	.nb-profile { grid-template-columns: 1fr; }
	.nb-profile__main-photo { max-width: 360px; }
	.nb-stats__grid { grid-template-columns: repeat(2, 1fr); gap: 26px; padding: 34px 0; }
	.nb-section { padding: 56px 0; }
	.nb-cta__inner { grid-template-columns: 1fr; gap: 26px; }
	.nb-match-side { order: 2; }
	.nb-match-results { order: 1; }
}

@media (max-width: 860px) {
	.nb-topbar__slogan { display: none; }
	.nb-topbar__inner { justify-content: center; }
	.nb-topbar__contact { gap: 14px; font-size: 12px; }

	.nb-nav-toggle { display: flex; }
	.nb-nav {
		position: fixed;
		top: calc(var(--nb-nav-h) + 38px); left: 0; right: 0;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		background: #fff;
		padding: 14px 20px 22px;
		box-shadow: var(--nb-shadow-hover);
		border-bottom: 1px solid var(--nb-line);
		max-height: calc(100vh - var(--nb-nav-h) - 38px);
		overflow-y: auto;
		transform: translateY(-12px);
		opacity: 0; visibility: hidden;
		transition: .25s;
	}
	.nb-nav.is-open { transform: none; opacity: 1; visibility: visible; }
	.nb-nav__list { flex-direction: column; align-items: stretch; gap: 0; }
	.nb-nav__link { padding: 13px 10px; border-bottom: 1px solid var(--nb-line); border-radius: 0; }
	.nb-nav__list .sub-menu { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; padding-left: 14px; display: none; }
	.nb-nav__list li.is-open > .sub-menu { display: block; }
	.nb-nav__cta { margin-top: 16px; }
	.nb-nav__cta .nb-btn { width: 100%; }

	.nb-mobile-bar { display: flex; }
	body { padding-bottom: 62px; }

	.nb-post-card { grid-template-columns: 1fr; }
	.nb-post-card__body, .nb-post-card:not(:has(.nb-post-card__thumb)) .nb-post-card__body { padding: 18px 20px; }
	.nb-post-card__thumb { aspect-ratio: 16 / 9; }
}

@media (max-width: 720px) {
	body { font-size: 14.5px; }

	/* 筛选栏在手机端改为上下堆叠 */
	.nb-filterbar { padding: 2px 16px 14px; }
	.nb-filterbar__row { flex-direction: column; gap: 9px; padding: 13px 0; }
	.nb-filterbar__label { width: auto; padding-top: 0; }
	.nb-filterbar__chips { width: 100%; }
	.nb-filterbar__footer { flex-direction: column; align-items: flex-start; }
	.nb-filterbar__active { width: 100%; }
	h1 { font-size: 26px; }
	.nb-hero__title { font-size: 30px; }
	.nb-section__title { font-size: 24px; }
	.nb-page-header__title { font-size: 24px; }
	.nb-gradient, .nb-404__code { font-size: 84px; }

	.nb-grid--cols-4, .nb-grid--cols-3 { grid-template-columns: repeat(2, 1fr); }
	.nb-grid { gap: 16px; }
	.nb-events, .nb-stories, .nb-steps, .nb-advisors { grid-template-columns: 1fr; }
	.nb-footer__top { grid-template-columns: 1fr; gap: 30px; padding: 40px 20px 30px; }
	.nb-spec-list { grid-template-columns: 1fr; }
	.nb-hero__trust { gap: 24px; }
	.nb-hero__trust strong { font-size: 20px; }
	.nb-section__head { flex-direction: column; align-items: flex-start; }
	.nb-profile { padding: 18px; }
	.nb-entry__content { padding: 20px; }
	.nb-panel { padding: 20px; }
	.nb-timeline { flex-direction: column; gap: 16px; }
	.nb-post-nav { grid-template-columns: 1fr; }
	.nb-topbar__contact span:nth-child(3) { display: none; }
}

@media (max-width: 480px) {
	.nb-grid--cols-4, .nb-grid--cols-3 { grid-template-columns: 1fr; }
	.nb-stats__grid { grid-template-columns: 1fr 1fr; }
	.nb-match-form__grid { grid-template-columns: 1fr; }
	.nb-card__media { aspect-ratio: 1 / 1; }
	.nb-hero__actions .nb-btn { width: 100%; }
	.nb-quick-filter__group { gap: 6px; }
	.nb-chip { padding: 5px 12px; font-size: 12.5px; }
}

/* --------------------------------------------------------------------------
   27. 打印
   -------------------------------------------------------------------------- */
@media print {
	.nb-topbar, .nb-header, .nb-footer, .nb-mobile-bar, .nb-modal, .nb-match-side, .nb-layout__side { display: none !important; }
	body { padding: 0; }
	.nb-layout, .nb-match-layout { display: block; padding: 0; }
}

/* --------------------------------------------------------------------------
   28. 导航用户区
   -------------------------------------------------------------------------- */
.nb-nav__user { display: inline-flex; align-items: center; gap: 8px; padding: 4px 12px 4px 4px; border-radius: 999px; background: var(--nb-bg-soft); border: 1px solid var(--nb-line); text-decoration: none; transition: all .2s; position: relative; }
.nb-nav__user:hover { border-color: var(--nb-primary); background: #fff; }
.nb-nav__avatar { width: 30px; height: 30px; border-radius: 50%; background: linear-gradient(135deg, #f4a6c0, var(--nb-primary)); color: #fff; display: grid; place-items: center; font-size: 14px; font-weight: 700; flex: none; }
.nb-nav__avatar.is-verified { background: linear-gradient(135deg, #f5d98a, var(--nb-accent)); }
.nb-nav__uname { font-size: 13.5px; font-weight: 600; color: var(--nb-ink); max-width: 84px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nb-nav__dot { position: absolute; top: 3px; right: 6px; width: 8px; height: 8px; border-radius: 50%; background: #f59f00; box-shadow: 0 0 0 2px #fff; }
.nb-nav__login { font-size: 14px; font-weight: 600; color: var(--nb-ink-2); text-decoration: none; padding: 6px 4px; }
.nb-nav__login:hover { color: var(--nb-primary); }
.nb-nav__exit { font-size: 13px; color: var(--nb-ink-3); text-decoration: none; }
.nb-nav__exit:hover { color: var(--nb-primary); }

/* --------------------------------------------------------------------------
   29. 注册 / 登录
   -------------------------------------------------------------------------- */
.nb-auth { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 32px; align-items: start; padding: 40px 0 64px; }
.nb-auth--narrow { grid-template-columns: minmax(0, 520px); justify-content: center; }
.nb-auth__intro { margin-bottom: 18px; color: var(--nb-ink-2); }
.nb-authcard { background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius-lg); padding: 30px; box-shadow: var(--nb-shadow); }
.nb-authcard__title { font-size: 20px; margin-bottom: 8px; }
.nb-authcard__desc { color: var(--nb-ink-3); font-size: 14px; margin-bottom: 20px; }
.nb-authcard__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.nb-auth__side { position: sticky; top: 90px; }
.nb-auth__help { margin-top: 20px; text-align: center; font-size: 13.5px; color: var(--nb-ink-3); }
.nb-auth__contact { display: flex; gap: 16px; justify-content: center; font-weight: 600; color: var(--nb-primary); }

.nb-authside { background: var(--nb-bg-soft); border: 1px solid var(--nb-line); border-radius: var(--nb-radius); padding: 24px; }
.nb-authside + .nb-authside { margin-top: 16px; }
.nb-authside--warn { background: #fffaf0; border-color: #f5e3bd; }
.nb-authside__title { font-size: 16px; margin-bottom: 14px; }
.nb-authside__list { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; }
.nb-authside__list li { display: grid; gap: 3px; }
.nb-authside__list strong { font-size: 14px; color: var(--nb-ink); display: flex; align-items: center; gap: 6px; }
.nb-authside__list strong::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--nb-primary); flex: none; }
.nb-authside__list span { font-size: 13px; color: var(--nb-ink-3); line-height: 1.7; }
.nb-authside__list--dots li { font-size: 13.5px; color: var(--nb-ink-2); padding-left: 16px; position: relative; }
.nb-authside__list--dots li::before { content: "·"; position: absolute; left: 4px; color: var(--nb-primary); font-weight: 700; }
.nb-authside__steps { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; counter-reset: nbstep; }
.nb-authside__steps li { display: flex; gap: 10px; align-items: flex-start; font-size: 13.5px; color: var(--nb-ink-2); }
.nb-authside__steps li span { flex: none; width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 1px solid var(--nb-primary); color: var(--nb-primary); font-size: 12px; font-weight: 700; display: grid; place-items: center; }
.nb-authside__foot { margin-top: 20px; padding-top: 16px; border-top: 1px dashed var(--nb-line); display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 13.5px; color: var(--nb-ink-3); }

/* --------------------------------------------------------------------------
   30. 表单控件
   -------------------------------------------------------------------------- */
.nb-form { display: grid; gap: 20px; }
.nb-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.nb-form__section { display: grid; gap: 14px; }
.nb-form__section + .nb-form__section { margin-top: 6px; padding-top: 22px; border-top: 1px dashed var(--nb-line); }
.nb-form__section-title { font-size: 15.5px; margin: 0; display: flex; align-items: center; gap: 8px; }
.nb-form__section-title::before { content: ""; width: 3px; height: 15px; border-radius: 2px; background: var(--nb-primary); }
.nb-form__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.nb-form__link { font-size: 13.5px; color: var(--nb-ink-3); }
.nb-form__link:hover { color: var(--nb-primary); }
.nb-form__foot { text-align: center; font-size: 14px; color: var(--nb-ink-3); margin: 0; }
.nb-form__foot a { color: var(--nb-primary); font-weight: 600; }
.nb-form__tip { font-size: 12.5px; color: var(--nb-ink-3); text-align: center; margin: 0; line-height: 1.7; }
.nb-form__note { display: flex; gap: 10px; align-items: flex-start; margin: 0; padding: 12px 16px; border-radius: var(--nb-radius-sm); background: var(--nb-bg-soft); border: 1px dashed var(--nb-line); font-size: 13px; color: var(--nb-ink-2); line-height: 1.7; }
.nb-form__note .nb-shield { flex: none; }
.nb-form--register { gap: 24px; }
.nb-form__submit { display: grid; gap: 12px; justify-items: center; padding-top: 8px; }
.nb-form__submit-note { font-size: 13px; color: var(--nb-ink-3); text-align: center; margin: 0; max-width: 520px; line-height: 1.7; }
.nb-shield { color: var(--nb-primary); }

.nb-field { display: grid; gap: 7px; align-content: start; }
.nb-field--full { grid-column: 1 / -1; }
.nb-field--half { grid-column: span 1; }
.nb-field__label { font-size: 13.5px; font-weight: 600; color: var(--nb-ink); }
.nb-field--radio .nb-field__label, .nb-field--checkbox .nb-field__label { margin-bottom: 2px; }
.nb-req { color: var(--nb-primary); font-style: normal; }
.nb-field__desc { font-size: 12.5px; color: var(--nb-ink-3); margin: 0; line-height: 1.6; }
.nb-field__error { font-size: 12.5px; color: #c5293f; margin: 0; }

.nb-form input[type="text"],
.nb-form input[type="tel"],
.nb-form input[type="email"],
.nb-form input[type="number"],
.nb-form input[type="password"],
.nb-form input[type="url"],
.nb-form select,
.nb-form textarea {
	width: 100%;
	padding: 11px 14px;
	font-family: inherit;
	font-size: 14.5px;
	color: var(--nb-ink);
	background: var(--nb-bg-soft);
	border: 1px solid var(--nb-line);
	border-radius: var(--nb-radius-sm);
	outline: none;
	transition: border-color .18s, background .18s, box-shadow .18s;
}
.nb-form textarea { resize: vertical; line-height: 1.7; }
.nb-form input:focus, .nb-form select:focus, .nb-form textarea:focus { border-color: var(--nb-primary); background: #fff; box-shadow: 0 0 0 3px rgba(214, 51, 108, .1); }
.nb-form input.is-invalid, .nb-form select.is-invalid, .nb-form textarea.is-invalid { border-color: #e04c60; background: #fff6f7; }
.nb-form input::placeholder, .nb-form textarea::placeholder { color: #b6aeb9; }

.nb-input-wrap { position: relative; display: block; }
.nb-input-wrap__suffix { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); font-size: 13px; font-style: normal; color: var(--nb-ink-3); }
.nb-input-wrap input { padding-right: 52px; }

.nb-radios { display: flex; flex-wrap: wrap; gap: 10px; }
.nb-radios.is-invalid .nb-radio { border-color: #e04c60; background: #fff6f7; }
.nb-radio { display: inline-flex; align-items: center; gap: 8px; padding: 9px 18px; border: 1px solid var(--nb-line); border-radius: 999px; background: var(--nb-bg-soft); font-size: 14px; cursor: pointer; transition: all .18s; }
.nb-radio:hover { border-color: var(--nb-primary); background: #fff; }
.nb-radio input { position: absolute; opacity: 0; width: 0; height: 0; }
.nb-radio span { line-height: 1; }
.nb-radio:has(input:checked) { border-color: var(--nb-primary); background: var(--nb-primary); color: #fff; box-shadow: 0 4px 14px rgba(214, 51, 108, .25); }

.nb-agree { display: flex; gap: 10px; align-items: flex-start; font-size: 13.5px; color: var(--nb-ink-2); line-height: 1.7; cursor: pointer; }
.nb-agree input { margin-top: 3px; flex: none; width: 16px; height: 16px; accent-color: var(--nb-primary); }
.nb-agree a { color: var(--nb-primary); }
.nb-agree--inline { align-items: center; }
.nb-agree--inline input { margin-top: 0; }

.nb-file { padding: 10px 12px !important; background: #fff !important; font-size: 13.5px !important; }
.nb-upload-preview { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.nb-upload-preview img { width: 72px; height: 72px; object-fit: cover; border-radius: 10px; border: 1px solid var(--nb-line); }
.nb-upload-preview--multi img { width: 62px; height: 62px; }

/* 隐藏蜜罐字段 */
.nb-hp { position: absolute !important; left: -9999px !important; opacity: 0; height: 0; overflow: hidden; }

/* --------------------------------------------------------------------------
   31. 提示条 / 审核状态
   -------------------------------------------------------------------------- */
.nb-notice { padding: 13px 18px; border-radius: var(--nb-radius-sm); font-size: 14px; line-height: 1.7; border: 1px solid transparent; }
.nb-notice--success { background: #eef9f1; border-color: #bfe6cb; color: #1a7f37; }
.nb-notice--error { background: #fdeef0; border-color: #f5c2ca; color: #b32d3c; }
.nb-notice--info { background: #eef4fd; border-color: #c7dbf7; color: #1b5fae; }
.nb-notice a { font-weight: 600; }

.nb-toast { position: fixed; left: 50%; bottom: 90px; transform: translate(-50%, 16px); z-index: 1200; max-width: min(90vw, 420px); padding: 12px 22px; border-radius: 999px; background: rgba(34, 28, 38, .92); color: #fff; font-size: 13.5px; line-height: 1.6; text-align: center; box-shadow: 0 12px 34px rgba(30, 16, 24, .28); opacity: 0; transition: opacity .28s, transform .28s; pointer-events: none; }
.nb-toast.is-show { opacity: 1; transform: translate(-50%, 0); }

.nb-statusbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 16px 20px; border-radius: var(--nb-radius); border: 1px solid var(--nb-line); background: var(--nb-bg-soft); margin-bottom: 22px; }
.nb-statusbar__text { display: grid; gap: 4px; }
.nb-statusbar__text strong { font-size: 15px; }
.nb-statusbar__text span { font-size: 13.5px; color: var(--nb-ink-3); }
.nb-statusbar__note { color: #b32d3c !important; }
.nb-statusbar__time { font-size: 12.5px !important; }
.nb-statusbar__regno { font-size: 13.5px !important; color: var(--nb-ink-2) !important; }
.nb-statusbar__regno b { font-family: Menlo, Consolas, monospace; letter-spacing: .5px; color: var(--nb-primary); }
.nb-statusbar.is-draft { background: #f6f7fb; border-color: #d9dced; }
.nb-statusbar.is-draft strong { color: #4a5578; }
.nb-statusbar.is-approved { background: #eef9f1; border-color: #bfe6cb; }
.nb-statusbar.is-approved strong { color: #1a7f37; }
.nb-statusbar.is-pending { background: #fffaf0; border-color: #f5e3bd; }
.nb-statusbar.is-pending strong { color: #a1680a; }
.nb-statusbar.is-rejected { background: #fdeef0; border-color: #f5c2ca; }
.nb-statusbar.is-rejected strong { color: #b32d3c; }

.nb-preview-banner { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 13px 18px; border-radius: var(--nb-radius-sm); font-size: 13.5px; background: #fffaf0; border: 1px dashed #f5e3bd; color: #a1680a; margin-bottom: 20px; }
.nb-preview-banner span { color: var(--nb-ink-2); }
.nb-preview-banner a { font-weight: 600; }

/* --------------------------------------------------------------------------
   32. 会员中心
   -------------------------------------------------------------------------- */
.nb-account { padding: 28px 0 64px; display: grid; gap: 22px; }
.nb-account__head { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; padding: 22px; background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius); box-shadow: var(--nb-shadow); }
.nb-account__avatar { width: 66px; height: 66px; border-radius: 50%; overflow: hidden; flex: none; background: linear-gradient(135deg, #f4a6c0, var(--nb-primary)); display: grid; place-items: center; }
.nb-account__avatar img { width: 100%; height: 100%; object-fit: cover; }
.nb-account__avatar-mark { color: #fff; font-size: 26px; font-weight: 700; }
.nb-account__id { flex: 1; min-width: 180px; }
.nb-account__name { font-size: 19px; margin: 0 0 4px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.nb-account__meta { font-size: 13.5px; color: var(--nb-ink-3); margin: 0; }
.nb-sep { margin: 0 6px; opacity: .5; }
.nb-account__ops { display: flex; gap: 8px; flex-wrap: wrap; }
.nb-account__grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 22px; align-items: start; }
.nb-account__panel { background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius); padding: 24px; }
.nb-account__panel-title { font-size: 16px; margin-bottom: 18px; display: flex; align-items: center; gap: 8px; }
.nb-account__panel-title::before { content: ""; width: 3px; height: 15px; border-radius: 2px; background: var(--nb-primary); }
.nb-account__facts { list-style: none; padding: 0; margin: 18px 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
.nb-account__facts li { display: grid; gap: 2px; padding: 12px 14px; background: var(--nb-bg-soft); border-radius: var(--nb-radius-sm); }
.nb-account__facts em { font-size: 12px; color: var(--nb-ink-3); font-style: normal; }
.nb-account__facts span { font-size: 14.5px; font-weight: 600; color: var(--nb-ink); }

.nb-steps { list-style: none; padding: 0; margin: 20px 0 0; display: grid; gap: 0; }
.nb-steps li { display: flex; align-items: center; gap: 10px; font-size: 13.5px; color: var(--nb-ink-3); padding: 9px 0; position: relative; }
.nb-steps li span { width: 24px; height: 24px; flex: none; border-radius: 50%; border: 1px solid var(--nb-line); background: #fff; display: grid; place-items: center; font-size: 12px; font-weight: 700; color: var(--nb-ink-3); }
.nb-steps li.is-done { color: var(--nb-ink-2); }
.nb-steps li.is-done span { background: #eef9f1; border-color: #bfe6cb; color: #1a7f37; }
.nb-steps li.is-active { color: var(--nb-ink); font-weight: 600; }
.nb-steps li.is-active span { background: var(--nb-primary); border-color: var(--nb-primary); color: #fff; }

.nb-empty--sm { text-align: center; padding: 24px 16px; }
.nb-empty--sm p { color: var(--nb-ink-3); margin-bottom: 14px; }

/* --------------------------------------------------------------------------
   33. 资料登记页
   -------------------------------------------------------------------------- */
.nb-publish { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 30px; align-items: start; padding: 34px 0 64px; }
.nb-publish__main { background: #fff; border: 1px solid var(--nb-line); border-radius: var(--nb-radius-lg); padding: 30px; box-shadow: var(--nb-shadow); }
.nb-publish__side { position: sticky; top: 90px; }
.nb-publish__intro { margin-bottom: 20px; color: var(--nb-ink-2); }

/* --------------------------------------------------------------------------
   34. 徽章补充
   -------------------------------------------------------------------------- */
.nb-badge--ok { background: #eef9f1; color: #1a7f37; border: 1px solid #bfe6cb; }

/* --------------------------------------------------------------------------
   35. 账号相关响应式
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
	.nb-auth { grid-template-columns: minmax(0, 1fr); }
	.nb-auth__side, .nb-publish__side { position: static; }
	.nb-publish { grid-template-columns: minmax(0, 1fr); }
	.nb-account__grid { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 720px) {
	.nb-nav__uname, .nb-nav__exit { display: none; }
	.nb-nav__user { padding: 4px; }
	.nb-authcard, .nb-publish__main { padding: 20px; border-radius: var(--nb-radius); }
	.nb-form__grid { grid-template-columns: minmax(0, 1fr); }
	.nb-field--half { grid-column: 1 / -1; }
	.nb-auth { padding: 24px 0 44px; }
	.nb-account { padding: 18px 0 44px; }
	.nb-account__head { padding: 18px; }
	.nb-account__ops { width: 100%; }
	.nb-account__ops .nb-btn { flex: 1; text-align: center; }
	.nb-statusbar { padding: 14px 16px; }
	.nb-account__panel { padding: 18px; }
	.nb-upload-preview img { width: 60px; height: 60px; }
	.nb-radios { gap: 8px; }
	.nb-radio { padding: 8px 14px; font-size: 13.5px; }
}


/* --------------------------------------------------------------------------
   28. 会员编号徽章（男生 A 段 / 女生 B 段）
   -------------------------------------------------------------------------- */
.nb-regno { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 999px; font-size: 12.5px; font-weight: 700; letter-spacing: .6px; font-family: Menlo, Consolas, monospace; }
.nb-regno.is-male { background: #eaf2fb; color: #1d5c96; }
.nb-regno.is-female { background: #fdeef3; color: #b02a58; }
.nb-regno.is-lg { font-size: 14px; padding: 5px 14px; }
.nb-account__regno { font-weight: 700; color: var(--nb-primary); }


/* --------------------------------------------------------------------------
   30. 私信入口（嘉宾页 / 会员中心 / 短代码）
   -------------------------------------------------------------------------- */
.nb-profile__chatbox { margin-top: 14px; text-align: center; }
.nb-profile__chatbox .nb-btn { width: 100%; }

.nb-account__chat-stat { font-size: 13.5px; color: var(--nb-ink-2); margin: 0 0 12px; }
.nb-account__chat-list { list-style: none; padding: 0; margin: 0 0 16px; display: grid; gap: 8px; }
.nb-account__chat-list li a { display: flex; align-items: center; gap: 10px; padding: 9px 11px; border: 1px solid var(--nb-line); border-radius: var(--nb-radius-sm); background: var(--nb-bg-soft); text-decoration: none; transition: all .2s; }
.nb-account__chat-list li a:hover { border-color: var(--nb-primary); background: #fff; }
.nb-account__chat-list img { width: 38px; height: 38px; border-radius: 50%; object-fit: cover; flex: none; }
.nb-account__chat-brief { flex: 1; min-width: 0; display: grid; gap: 2px; }
.nb-account__chat-brief strong { font-size: 13.5px; color: var(--nb-ink); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.nb-account__chat-brief em { font-style: normal; font-size: 12px; color: var(--nb-ink-3); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.nb-account__chat-list time { font-size: 11.5px; color: var(--nb-ink-3); flex: none; }
.nb-account__chat-badge { flex: none; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--nb-primary); color: #fff; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; }
.nb-account__chat-ops { display: flex; flex-wrap: wrap; gap: 10px; }

.nb-unread { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; text-decoration: none; }
.nb-unread--badge { padding: 5px 12px; border-radius: 999px; background: var(--nb-primary-light); color: var(--nb-primary-dark); font-weight: 600; }
