/* =====================================================================
 * NovaCart  —  简约精美购物车主题（浅色版 v2）
 * 仅作用于购物车链路（html.nova-cart），不影响会员中心其它页面
 * 1) 隐藏系统外壳：顶部工具条 / 左侧菜单 / 面包屑 / 页脚 / 浮窗侧边条
 * 2) 自有简约顶栏、步骤条、白卡片与克制微动效
 * ===================================================================== */

/* ---------- [0] 外壳剥离：不引用原导航栏与侧边条 ---------- */
html.nova-cart body{background:#f4f6fb !important;}
html.nova-cart #page-topbar,
html.nova-cart .vertical-menu,
html.nova-cart footer.footer,
html.nova-cart .page-title-box,
html.nova-cart .rightbar,
html.nova-cart .rightbar-overlay,
html.nova-cart .float-sidebar,
html.nova-cart #tip_bottom,
html.nova-cart .white_content,
html.nova-cart .modal-cover{display:none !important;}
html.nova-cart .main-content{
	margin-left:0 !important;
	margin-top:0 !important;
	padding:0 !important;
	min-height:100vh;
	width:100%;
	background:transparent !important;
}
html.nova-cart .page-content{padding:0 !important;background:transparent !important;}
html.nova-cart .page-content > .container-fluid{
	padding:0 !important;
	max-width:100% !important;
}
html.nova-cart body[data-sidebar]{overflow-x:hidden;}

/* ---------- [1] 设计令牌（浅色简约） ---------- */
.nv-app,
.nv-app *{box-sizing:border-box;}
.nv-app{
	--nv-cyan:#4f6ef7;
	--nv-violet:#7a5cff;
	--nv-blue:#4f6ef7;
	--nv-gold:#ff6f3d;
	--nv-green:#15ad7e;
	--nv-red:#ed5565;
	--nv-orange:#ff8a3c;
	--nv-ink:#232c3f;
	--nv-muted:#6b7790;
	--nv-faint:#a2adc2;
	--nv-line:#e8ecf4;
	--nv-line-strong:#d2daea;
	--nv-panel:#ffffff;
	--nv-panel-2:#f8fafd;
	--nv-soft:#f3f6fc;
	--nv-blur:blur(14px);
	--nv-grad:linear-gradient(135deg,#5b7bff 0%,#7a5cff 100%);
	--nv-grad-warm:linear-gradient(135deg,#ff9a5c 0%,#ff6f3d 100%);
	--nv-glow-cyan:0 10px 22px rgba(79,110,247,.22);
	--nv-shadow:0 10px 34px rgba(33,49,92,.07);
	--nv-shadow-hover:0 18px 44px rgba(33,49,92,.12);
	color:var(--nv-ink);
	font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Arial,sans-serif;
	font-size:14px;
	line-height:1.6;
	position:relative;
	min-height:100vh;
	padding-bottom:56px;
	background:
		radial-gradient(820px 420px at 6% -10%,rgba(91,123,255,.08),transparent 60%),
		radial-gradient(760px 420px at 98% -6%,rgba(122,92,255,.07),transparent 58%),
		#f4f6fb;
	overflow:hidden;
}
/* 极淡点阵纹理 */
.nv-app::before{
	content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.55;
	background-image:radial-gradient(rgba(80,100,160,.10) 1px,transparent 1px);
	background-size:26px 26px;
	mask-image:radial-gradient(circle at 50% 0%,#000 0%,transparent 72%);
}
.nv-app::after{
	content:"";position:fixed;z-index:0;pointer-events:none;
	top:-220px;left:50%;width:720px;height:520px;transform:translateX(-50%);
	background:radial-gradient(circle,rgba(122,140,255,.10),transparent 64%);
	filter:blur(8px);
}
.nv-app > *{position:relative;z-index:1;}
.nv-app a{text-decoration:none;color:inherit;}
.nv-app ::-webkit-scrollbar{width:8px;height:8px;}
.nv-app ::-webkit-scrollbar-track{background:transparent;}
.nv-app ::-webkit-scrollbar-thumb{background:#d4dcea;border-radius:99px;}
.nv-app ::-webkit-scrollbar-thumb:hover{background:#bcc8de;}
.nv-app input,.nv-app select,.nv-app textarea,.nv-app button{font-family:inherit;}

/* ---------- [2] 自有简约顶栏 ---------- */
.nv-topbar{
	position:sticky;top:0;z-index:60;
	display:flex;align-items:center;gap:18px;
	padding:13px clamp(16px,4vw,52px);
	background:rgba(255,255,255,.88);
	backdrop-filter:blur(14px);
	border-bottom:1px solid var(--nv-line);
}
.nv-logo{display:flex;align-items:center;gap:11px;color:var(--nv-ink);font-weight:800;font-size:16.5px;letter-spacing:.3px;white-space:nowrap;}
.nv-logo-mark{
	width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
	background:var(--nv-grad);box-shadow:0 8px 18px rgba(91,123,255,.32);
	color:#fff;font-size:17px;position:relative;overflow:hidden;
}
.nv-logo-mark::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-120%);animation:nvSheen 5s ease-in-out infinite;}
.nv-logo small{display:block;font-size:10px;font-weight:700;color:var(--nv-faint);letter-spacing:1.6px;}
.nv-topnav{display:flex;align-items:center;gap:4px;margin-left:6px;}
.nv-topnav a{
	color:var(--nv-muted);font-size:13.5px;font-weight:600;padding:8px 13px;border-radius:999px;
	border:1px solid transparent;transition:.22s ease;white-space:nowrap;
}
.nv-topnav a:hover{color:var(--nv-cyan);background:#eef2fe;transform:translateY(-1px);}
.nv-top-right{margin-left:auto;display:flex;align-items:center;gap:10px;}
.nv-chip{
	display:inline-flex;align-items:center;gap:8px;padding:8px 15px;border-radius:999px;font-size:13px;font-weight:650;
	color:var(--nv-ink);background:#fff;border:1px solid var(--nv-line);transition:.22s ease;
}
.nv-chip:hover{border-color:var(--nv-line-strong);box-shadow:0 8px 20px rgba(33,49,92,.08);color:var(--nv-ink);}
.nv-chip.primary{background:var(--nv-grad);color:#fff;border:0;font-weight:750;box-shadow:0 8px 20px rgba(91,123,255,.28);}
.nv-avatar{
	width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:12.5px;
	background:var(--nv-grad);color:#fff;
}

/* ---------- [3] 通用容器 / Hero / 步骤条 ---------- */
.nv-wrap{max-width:1440px;margin:0 auto;padding:clamp(18px,3vw,32px) clamp(14px,3vw,40px) 0;}
.nv-hero{
	position:relative;border-radius:22px;padding:clamp(24px,4vw,40px);overflow:hidden;
	border:1px solid var(--nv-line);
	background:
		radial-gradient(560px 240px at 96% -30%,rgba(122,92,255,.14),transparent 60%),
		radial-gradient(520px 240px at 2% 120%,rgba(91,123,255,.14),transparent 60%),
		linear-gradient(125deg,#f2f5ff 0%,#f7f3ff 55%,#eef6ff 100%);
	box-shadow:var(--nv-shadow);
}
.nv-hero::before{
	content:"";position:absolute;inset:0;opacity:.6;
	background-image:linear-gradient(rgba(91,123,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(91,123,255,.05) 1px,transparent 1px);
	background-size:38px 38px;
}
.nv-hero-inner{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap;}
.nv-hero-inner>div{min-width:260px;}
.nv-kicker{
	display:inline-flex;align-items:center;gap:7px;margin-bottom:12px;padding:5px 12px;border-radius:999px;font-size:11.5px;font-weight:750;letter-spacing:1.4px;
	color:var(--nv-cyan);background:rgba(91,123,255,.10);border:1px solid rgba(91,123,255,.18);text-transform:uppercase;
}
.nv-kicker .dot{width:6px;height:6px;border-radius:50%;background:var(--nv-cyan);box-shadow:0 0 0 4px rgba(91,123,255,.14);animation:nvPulse 2s ease-in-out infinite;}
.nv-hero h1{margin:0 0 8px;font-size:clamp(23px,3.2vw,34px);font-weight:850;letter-spacing:.3px;line-height:1.25;color:#1d2638;}
.nv-hero p{margin:0;color:var(--nv-muted);font-size:14px;max-width:560px;}
.nv-steps{display:flex;align-items:center;gap:12px;}
.nv-step{display:flex;flex-direction:column;align-items:center;gap:7px;color:var(--nv-faint);font-size:12px;font-weight:650;white-space:nowrap;}
.nv-step-num{
	width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-weight:800;font-size:15px;
	background:#fff;border:1px solid var(--nv-line);color:var(--nv-faint);position:relative;transition:.3s ease;box-shadow:0 4px 12px rgba(33,49,92,.05);
}
.nv-step.active .nv-step-num{
	background:var(--nv-grad);color:#fff;border-color:transparent;transform:scale(1.05);
	box-shadow:0 12px 24px rgba(91,123,255,.34);
}
.nv-step.done .nv-step-num{background:#e8f8f2;border-color:#bfe9da;color:var(--nv-green);}
.nv-step-line{width:clamp(30px,6vw,80px);height:2px;border-radius:2px;background:linear-gradient(90deg,#dfe5f0,#eef1f7);position:relative;overflow:hidden;}
.nv-step-line::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--nv-cyan),transparent);transform:translateX(-100%);animation:nvFlow 2.6s linear infinite;}

/* ---------- [4] 白卡片面板 ---------- */
.nv-panel{
	position:relative;border-radius:20px;border:1px solid var(--nv-line);
	background:var(--nv-panel);
	box-shadow:var(--nv-shadow);
}
.nv-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 22px;border-bottom:1px solid var(--nv-line);}
.nv-panel-title{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:800;margin:0;color:var(--nv-ink);}
.nv-panel-title i{color:var(--nv-cyan);}
.nv-panel-body{padding:20px 22px;}

/* 按钮 */
.nv-btn{
	display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;border:0;border-radius:12px;
	padding:11px 20px;font-size:14px;font-weight:750;letter-spacing:.2px;color:#fff;
	background:var(--nv-grad);position:relative;overflow:hidden;transition:transform .18s ease,box-shadow .24s ease,filter .2s ease;
	box-shadow:0 10px 22px rgba(91,123,255,.26);
}
.nv-btn::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 25%,rgba(255,255,255,.4) 50%,transparent 75%);transform:translateX(-130%);transition:.6s ease;}
.nv-btn:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgba(91,123,255,.34);color:#fff;}
.nv-btn:hover::after{transform:translateX(130%);}
.nv-btn:active{transform:translateY(0) scale(.98);}
.nv-btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none;}
.nv-btn.warm{background:var(--nv-grad-warm);box-shadow:0 10px 22px rgba(255,111,61,.26);color:#fff;}
.nv-btn.warm:hover{box-shadow:0 16px 32px rgba(255,111,61,.34);}
.nv-btn.ghost{background:#fff;color:var(--nv-ink);border:1px solid var(--nv-line);box-shadow:none;}
.nv-btn.ghost:hover{border-color:var(--nv-line-strong);background:var(--nv-soft);color:var(--nv-ink);}
.nv-btn.sm{padding:7px 13px;border-radius:10px;font-size:12.5px;}
.nv-textbtn{border:0;background:transparent;color:var(--nv-muted);cursor:pointer;font-size:13px;font-weight:650;padding:7px 9px;border-radius:9px;transition:.2s;}
.nv-textbtn:hover{color:var(--nv-cyan);background:#eef2fe;}
.nv-textbtn.danger:hover{color:var(--nv-red);background:#fdecee;}

/* 入场动画 */
@keyframes nvRise{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}
.nv-rise{animation:nvRise .5s cubic-bezier(.22,.9,.3,1) both;}
.nv-rise.d1{animation-delay:.05s}.nv-rise.d2{animation-delay:.10s}.nv-rise.d3{animation-delay:.15s}
.nv-rise.d4{animation-delay:.20s}.nv-rise.d5{animation-delay:.25s}.nv-rise.d6{animation-delay:.30s}

/* 轻量标签（柔和填充，不再使用生硬绿框） */
.nv-tag{font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px;background:#eef2fe;color:var(--nv-cyan);border:0;}
.nv-tag.green{background:#e8f8f2;color:var(--nv-green);}
.nv-tag.gold{background:#fff1e9;color:#ef6a34;}

/* ============================================================
 *  product.tpl  —— 产品商城（产品分类 / 核心配置 两级）
 * ============================================================ */
.nv-catbar{display:flex;flex-direction:column;gap:11px;margin-bottom:22px;}
.nv-cat-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.nv-cat-label{
	flex:0 0 auto;font-size:12px;font-weight:800;letter-spacing:.5px;color:#fff;
	padding:7px 13px;border-radius:10px;background:var(--nv-grad);
	box-shadow:0 8px 16px rgba(91,123,255,.26);
}
.nv-cat-label.b{background:linear-gradient(135deg,#8a7bff,#6a93ff);box-shadow:0 8px 16px rgba(122,92,255,.24);}
.nv-cat-chips{display:flex;gap:9px;flex-wrap:wrap;flex:1;}
.nv-chip-tab{
	position:relative;padding:8px 16px;border-radius:999px;font-size:13.5px;font-weight:650;color:var(--nv-muted);
	background:#fff;border:1px solid var(--nv-line);transition:.2s ease;white-space:nowrap;box-shadow:0 3px 10px rgba(33,49,92,.04);
}
.nv-chip-tab:hover{color:var(--nv-cyan);transform:translateY(-2px);border-color:#cdd8f6;box-shadow:0 8px 18px rgba(33,49,92,.09);}
.nv-chip-tab.active{color:#fff;background:var(--nv-grad);border-color:transparent;box-shadow:0 10px 20px rgba(91,123,255,.3);font-weight:750;}
.nv-chip-tab .tag{margin-left:7px;font-size:10.5px;padding:1px 7px;border-radius:99px;background:#ff5d73;color:#fff;font-weight:800;vertical-align:1px;}
.nv-search{position:relative;flex:0 1 360px;min-width:220px;}
.nv-search input{
	width:100%;height:44px;border-radius:12px;border:1px solid var(--nv-line);outline:0;
	background:#fff;color:var(--nv-ink);padding:0 46px 0 16px;font-size:14px;transition:.22s;box-shadow:0 3px 10px rgba(33,49,92,.04);
}
.nv-search input::placeholder{color:var(--nv-faint);}
.nv-search input:focus{border-color:var(--nv-cyan);box-shadow:0 0 0 4px rgba(91,123,255,.10);}
.nv-search i{position:absolute;right:15px;top:50%;transform:translateY(-50%);color:var(--nv-cyan);cursor:pointer;}
.nv-section-head{display:flex;align-items:center;gap:12px;margin:4px 2px 18px;}
.nv-section-head h2{margin:0;font-size:19px;font-weight:850;color:var(--nv-ink);}
.nv-section-head .line{flex:1;height:1px;background:linear-gradient(90deg,var(--nv-line),transparent);}
.nv-section-head .count{color:var(--nv-muted);font-size:13px;}
.nv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;}
.nv-goods{
	position:relative;display:flex;flex-direction:column;border-radius:18px;padding:22px;overflow:hidden;
	border:1px solid var(--nv-line);background:#fff;
	transition:transform .26s cubic-bezier(.22,.9,.3,1),box-shadow .26s,border-color .26s;
	box-shadow:var(--nv-shadow);
}
.nv-goods::before{content:"";position:absolute;inset:0;background:radial-gradient(420px 160px at var(--mx,50%) -40%,rgba(91,123,255,.08),transparent 70%);opacity:0;transition:.3s;}
.nv-goods:hover{transform:translateY(-5px);border-color:#cdd8f6;box-shadow:var(--nv-shadow-hover);}
.nv-goods:hover::before{opacity:1;}
.nv-goods-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px;}
.nv-goods-icon{
	width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:20px;flex:0 0 auto;
	background:#eef2fe;border:1px solid #e3e9fc;color:var(--nv-cyan);
}
.nv-stock{font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:999px;background:#e8f8f2;color:var(--nv-green);}
.nv-stock.empty{background:#fdecee;color:var(--nv-red);}
.nv-goods h3{margin:0 0 6px;font-size:16px;font-weight:800;color:var(--nv-ink);}
.nv-goods-desc{color:var(--nv-muted);font-size:13px;min-height:42px;margin:0 0 14px;word-break:break-word;}
.nv-goods-desc ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;}
.nv-goods-desc li{position:relative;padding-left:16px;line-height:1.5;}
.nv-goods-desc li::before{content:"";position:absolute;left:2px;top:9px;width:6px;height:6px;border-radius:50%;background:var(--nv-grad);}
/* 描述项自带图标（含兜底 svg）时不再显示圆点，避免重复 */
.nv-goods-desc li:has(img){padding-left:0;}
.nv-goods-desc li:has(img)::before{display:none;}
.nv-goods-desc img{width:15px;height:15px;object-fit:contain;vertical-align:-2px;margin-right:3px;}
.nv-price-row{margin-top:auto;display:flex;flex-direction:column;gap:3px;}
.nv-price-now{display:flex;align-items:baseline;gap:6px;color:var(--nv-gold);font-size:24px;font-weight:850;}
.nv-price-now .unit{font-size:12px;color:var(--nv-muted);font-weight:600;}
.nv-price-old{font-size:12px;color:var(--nv-faint);text-decoration:line-through;}
.nv-trial{font-size:12px;color:var(--nv-cyan);}
.nv-goods-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;}
.nv-buy{
	flex:1;height:42px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;
	font-weight:750;font-size:14px;color:#fff;background:var(--nv-grad);position:relative;overflow:hidden;transition:.22s;
	box-shadow:0 10px 20px rgba(91,123,255,.24);
}
.nv-buy:hover{color:#fff;transform:translateY(-2px);box-shadow:0 14px 26px rgba(91,123,255,.32);}
.nv-buy.disabled{background:#e6eaf2;color:var(--nv-faint);cursor:not-allowed;box-shadow:none;}
.nv-pager{display:flex;justify-content:center;margin-top:28px;}
.nv-pager ul.pagination{margin:0;gap:6px;}
.nv-pager .pagination .page-link{
	background:#fff;border:1px solid var(--nv-line);color:var(--nv-muted);border-radius:10px !important;margin:0;
}
.nv-pager .pagination .page-item.active .page-link,.nv-pager .pagination .page-link:hover{background:var(--nv-grad);border-color:transparent;color:#fff;font-weight:750;}
.nv-empty{text-align:center;padding:90px 20px;color:var(--nv-muted);}
.nv-empty i{font-size:56px;color:#c6d0e4;margin-bottom:18px;display:block;}
.nv-warn{
	margin-top:20px;border-radius:15px;padding:15px 18px;border:1px solid #ffe1c2;
	background:linear-gradient(135deg,#fff6ec,#fffaf4);color:#a85a1f;font-size:13.5px;
}
.nv-warn h4{margin:0 0 6px;color:var(--nv-orange);font-size:14.5px;font-weight:800;}
.nv-warn p{margin:0;}

/* ============================================================
 *  configureproduct.tpl —— 订购配置菜单
 * ============================================================ */
.nv-config-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:22px;align-items:start;}
.nv-config-head{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin-bottom:18px;}
.nv-back{
	display:inline-flex;align-items:center;gap:8px;color:var(--nv-muted);font-size:13px;font-weight:650;
	padding:9px 14px;border-radius:11px;border:1px solid var(--nv-line);background:#fff;transition:.22s;box-shadow:0 3px 10px rgba(33,49,92,.04);
}
.nv-back:hover{color:var(--nv-cyan);border-color:#cdd8f6;transform:translateX(-3px);}
.nv-config-head h1{margin:0;font-size:21px;font-weight:850;color:var(--nv-ink);}
.nv-field{
	display:grid;grid-template-columns:160px minmax(0,1fr);gap:16px;align-items:start;
	padding:19px 22px;border-bottom:1px solid var(--nv-line);animation:nvRise .45s ease both;
}
.nv-field:last-child{border-bottom:0;}
.nv-field-label{font-size:14px;font-weight:750;color:#44506a;display:flex;align-items:center;gap:6px;padding-top:8px;}
.nv-field-label .req{color:var(--nv-red);}
.nv-field-label .help{color:var(--nv-faint);cursor:help;transition:.2s;}
.nv-field-label .help:hover{color:var(--nv-cyan);}
.nv-field-body{min-width:0;}
.nv-hint{grid-column:2;font-size:12px;color:var(--nv-faint);margin-top:6px;}

/* 下拉选择（保留 selectpicker，仅换肤） */
.nv-app .bootstrap-select{width:100% !important;max-width:380px;}
.nv-app .bootstrap-select > .dropdown-toggle{
	background:#fff !important;color:var(--nv-ink) !important;
	border:1px solid var(--nv-line) !important;border-radius:11px !important;height:44px !important;
	padding:0 16px !important;box-shadow:0 3px 10px rgba(33,49,92,.04) !important;font-size:14px;
}
.nv-app .bootstrap-select > .dropdown-toggle:hover,.nv-app .bootstrap-select.open > .dropdown-toggle{border-color:var(--nv-cyan) !important;box-shadow:0 0 0 4px rgba(91,123,255,.08) !important;}
.nv-app .bootstrap-select .filter-option-inner-inner{color:var(--nv-ink) !important;}
.nv-app .bootstrap-select .caret{color:var(--nv-muted);}
.nv-app .dropdown-menu{background:#fff !important;border:1px solid var(--nv-line-strong) !important;border-radius:13px !important;overflow:hidden;box-shadow:0 20px 44px rgba(33,49,92,.16) !important;}
.nv-app .dropdown-menu li a,.nv-app .dropdown-menu .dropdown-item{color:var(--nv-muted) !important;}
.nv-app .dropdown-menu li a:hover,.nv-app .dropdown-menu li.selected a{background:#eef2fe !important;color:var(--nv-cyan) !important;}
.nv-app .form-control{
	background:#fff;border:1px solid var(--nv-line);color:var(--nv-ink);border-radius:11px;height:44px;
	padding:8px 15px;font-size:14px;box-shadow:none !important;transition:.2s;
}
.nv-app textarea.form-control{height:auto;min-height:74px;resize:vertical;}
.nv-app .form-control:focus{border-color:var(--nv-cyan);box-shadow:0 0 0 4px rgba(91,123,255,.09) !important;background:#fff;color:var(--nv-ink);}
.nv-app .form-control:disabled,.nv-app .form-control[readonly]{background:#f3f6fc;color:var(--nv-muted);}
.nv-app .form-control.is-invalid{border-color:var(--nv-red) !important;box-shadow:0 0 0 4px rgba(237,85,101,.08) !important;}
.nv-app .form-control::placeholder{color:var(--nv-faint);}

/* 分段选项 chip（保留 btn-group-toggle + label.btn>input 结构） */
.nv-app .btn-group-toggle{display:flex;flex-wrap:wrap;gap:9px;}
.nv-app .btn-group-toggle > label.btn{
	margin:0 !important;border-radius:11px !important;border:1px solid var(--nv-line) !important;
	background:var(--nv-soft);color:var(--nv-muted) !important;padding:9px 18px;font-size:13.5px;font-weight:650;
	transition:.2s ease;position:relative;overflow:hidden;box-shadow:none !important;
}
.nv-app .btn-group-toggle > label.btn:hover{transform:translateY(-2px);border-color:#cdd8f6 !important;color:var(--nv-cyan) !important;background:#eef2fe;}
.nv-app .btn-group-toggle > label.btn input{display:none;}
.nv-app .btn-group-toggle > label.btn.active,
.nv-app .btn-group-toggle > label.btn.focus{
	background:var(--nv-grad) !important;color:#fff !important;border-color:transparent !important;font-weight:750;
	box-shadow:0 9px 20px rgba(91,123,255,.28) !important;
}
/* 周期 chip 角标 */
.nv-cycle-wrap .btn-group-toggle > label.btn{padding:11px 20px;font-size:14px;}
.cycle-select-discount{
	display:inline-block;margin-left:6px;background:var(--nv-grad-warm);color:#fff;font-size:11px;font-weight:800;
	padding:1px 6px;border-radius:6px;box-shadow:0 4px 10px rgba(255,111,61,.3);
}
/* 单选 / 多选卡片（type20 / type3 原生控件自定义） */
.nv-radio-list{display:flex;flex-wrap:wrap;gap:9px;}
.nv-app .form-check{margin:0;padding-left:0;}
.nv-checkcard{position:relative;}
.nv-checkcard input{position:absolute;opacity:0;pointer-events:none;}
.nv-checkcard label{
	display:inline-flex;align-items:center;gap:7px;margin:0;cursor:pointer;padding:9px 16px;border-radius:11px;
	background:var(--nv-soft);border:1px solid var(--nv-line);color:var(--nv-muted);font-size:13.5px;font-weight:650;transition:.2s;
}
.nv-checkcard label:hover{color:var(--nv-cyan);border-color:#cdd8f6;transform:translateY(-2px);background:#eef2fe;}
.nv-checkcard input:checked + label,
.nv-checkcard label.checked{background:var(--nv-grad);color:#fff;border-color:transparent;font-weight:750;box-shadow:0 9px 20px rgba(91,123,255,.26);}
.nv-app .custom-checkbox,.nv-app .custom-control{padding-left:0;margin:0 18px 0 0;min-height:auto;}
.nv-app .custom-control-label{color:var(--nv-muted);font-size:13.5px;font-weight:600;cursor:pointer;padding-left:6px;line-height:30px;}
.nv-app .custom-control-input{position:absolute;opacity:0;}
.nv-app .custom-checkbox .custom-control-label::before,.nv-app .custom-checkbox .custom-control-label::after{display:none;}

/* 数量滑杆（type4/7/9/11/14-19） */
.nv-range{display:flex;align-items:center;gap:13px;flex-wrap:wrap;position:relative;width:100%;max-width:680px;}
.nv-range input[type=range]{
	-webkit-appearance:none;appearance:none;flex:1;min-width:200px;height:7px;border-radius:99px;outline:0;
	background:linear-gradient(90deg,var(--nv-cyan),var(--nv-violet)) no-repeat,#e8ecf4;
	background-size:var(--fill,50%) 100%;cursor:pointer;
}
.nv-range input[type=range]::-webkit-slider-thumb{
	-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;cursor:grab;
	border:3px solid var(--nv-cyan);box-shadow:0 2px 8px rgba(91,123,255,.3);transition:.15s;
}
.nv-range input[type=range]::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.12);}
.nv-range input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;cursor:grab;border:3px solid var(--nv-cyan);}
.nv-step-btn{
	width:38px;height:38px;border-radius:11px;border:1px solid var(--nv-line);background:#fff;
	color:var(--nv-ink);font-size:18px;font-weight:800;cursor:pointer;transition:.18s;display:grid;place-items:center;
}
.nv-step-btn:hover{border-color:var(--nv-cyan);color:var(--nv-cyan);transform:translateY(-1px);}
.nv-range-val{
	width:92px !important;height:40px !important;text-align:center;font-weight:800 !important;color:var(--nv-cyan) !important;
	border-radius:11px !important;flex:0 0 auto;background:var(--nv-soft) !important;
}
.nv-range-unit{color:var(--nv-muted);font-size:13px;font-weight:650;}
.range_none{position:absolute;height:7px;background:rgba(237,85,101,.22);border-radius:99px;z-index:0;cursor:not-allowed;}

/* 主机名 / 密码 */
.nv-inline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.nv-inline .form-control{max-width:300px;}
.nv-iconbtn{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;border:1px solid var(--nv-line);background:#fff;color:var(--nv-cyan);cursor:pointer;transition:.2s;}
.nv-iconbtn:hover{border-color:var(--nv-cyan);transform:translateY(-2px);box-shadow:0 8px 16px rgba(91,123,255,.14);}
.error-tip{color:var(--nv-red);margin:6px 0 0;font-size:12.5px;display:none;}

/* 配置摘要（ajax 注入 ordersummary.tpl）——关键：强制透明背景、深色字，杜绝白底白字 */
.nv-summary{position:sticky;top:88px;}
.nv-summary .nv-panel-body{padding:0;}
.configoption_total{padding:0;background:transparent !important;}
.configoption_total table,.configoption_total tbody,.configoption_total tr,.configoption_total td{background:transparent !important;}
.nv-alert{border-radius:12px;padding:12px 15px;font-size:13px;margin-bottom:14px;border:1px solid;}
.nv-alert.danger{background:#fdecee;border-color:#f8d3d8;color:#c23c4c;}
.nv-alert.success{background:#e8f8f2;border-color:#c4ecde;color:#0f8a63;}
.nv-alert .close{color:inherit;opacity:.7;text-shadow:none;}

/* ============================================================
 *  ordersummary.tpl —— 配置页右侧实时金额
 * ============================================================ */
.nv-oss{padding:4px 0;background:transparent !important;}
.nv-oss table{width:100%;border-collapse:collapse;margin:0 !important;background:transparent !important;}
.nv-oss td{border:0 !important;padding:9px 22px !important;color:var(--nv-muted);font-size:13px;vertical-align:top;background:transparent !important;}
.nv-oss td.text-right{text-align:right;color:#3a455e;font-weight:700;white-space:nowrap;}
.nv-oss img{display:inline-block;vertical-align:-3px;}
.nv-oss hr{border:0;border-top:1px dashed var(--nv-line);margin:10px 22px;}
.nv-oss-total{display:flex;align-items:flex-end;justify-content:space-between;padding:14px 22px 4px;}
.nv-oss-total .lbl{color:var(--nv-muted);font-size:13px;}
.nv-oss-total .val{color:var(--nv-gold);font-size:27px;font-weight:850;}
.nv-oss .nv-btn{width:calc(100% - 44px);margin:14px 22px 8px;height:48px;}
.mobile-bottom-total{display:none;}

/* ============================================================
 *  viewcart.tpl —— 购物车 / 结算
 * ============================================================ */
.nv-cart-grid{display:grid;grid-template-columns:minmax(0,1fr) 388px;gap:22px;align-items:start;}
.nv-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:15px 22px;border-bottom:1px solid var(--nv-line);}
.nv-toolbar-left{display:flex;align-items:center;gap:11px;}
.nv-check{position:relative;display:inline-block;width:21px;height:21px;flex:0 0 auto;}
.nv-check input{position:absolute;opacity:0;pointer-events:none;}
.nv-check .box{
	width:21px;height:21px;border-radius:7px;border:1.5px solid #c9d3e6;background:#fff;display:block;cursor:pointer;transition:.2s;
}
.nv-check input:checked + .box{background:var(--nv-grad);border-color:transparent;box-shadow:0 6px 14px rgba(91,123,255,.3);}
.nv-check input:checked + .box::after{content:"";display:block;width:10px;height:6px;border-left:2.5px solid #fff;border-bottom:2.5px solid #fff;transform:rotate(-45deg);margin:6px 0 0 5px;}
.nv-toolbar-title{font-size:14.5px;font-weight:750;color:var(--nv-ink);}
.nv-toolbar-title em{font-style:normal;color:var(--nv-cyan);}
.nv-items{padding:18px;max-height:74vh;overflow:auto;display:flex;flex-direction:column;gap:13px;}
.nv-item{
	position:relative;display:grid;grid-template-columns:26px 74px minmax(0,1fr) 150px;gap:15px;align-items:center;font-style:normal;
	padding:17px;border-radius:17px;border:1px solid var(--nv-line);
	background:#fff;transition:.24s cubic-bezier(.22,.9,.3,1),border-color .24s;box-shadow:0 4px 14px rgba(33,49,92,.04);
	animation:nvRise .45s ease both;
}
.nv-item:hover{transform:translateY(-3px);border-color:#cdd8f6;box-shadow:var(--nv-shadow-hover);}
.nv-item.picked{border-color:rgba(91,123,255,.55);box-shadow:0 12px 30px rgba(91,123,255,.12);}
.nv-item.picked::before{content:"";position:absolute;left:0;top:16px;bottom:16px;width:4px;border-radius:0 99px 99px 0;background:var(--nv-grad);}
.nv-good-ico{
	width:70px;height:70px;border-radius:18px;display:grid;place-items:center;
	background:linear-gradient(145deg,#eef2fe,#e7ecfd);
	border:1px solid #e3e9fc;
}
.nv-good-ico svg{width:52px;height:52px;}
.nv-item-main{min-width:0;}
.nv-item-name{font-size:16px;font-weight:800;margin-bottom:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--nv-ink);}
.nv-specs{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:1px;border:1px solid var(--nv-line);border-radius:12px;overflow:hidden;background:var(--nv-line);max-width:560px;}
.nv-spec{background:#fafbfe;padding:8px 11px;min-width:0;}
.nv-spec span{display:block;}
.nv-spec .k{font-size:11px;color:var(--nv-faint);margin-bottom:2px;}
.nv-spec .v{font-size:12.5px;font-weight:700;color:#46526d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.config-option{margin:9px 0 0;color:var(--nv-muted);font-size:12.5px;}
.nv-goods-info{margin-top:9px;}
.nv-detail-toggle{color:var(--nv-cyan);font-size:12.5px;font-weight:700;cursor:pointer;}
.nv-detail-toggle::after{content:"⌄";display:inline-block;margin-left:5px;transition:transform .25s;}
.goods_info.active .nv-detail-toggle::after{transform:rotate(180deg);}
.info-container{display:none;margin-top:10px;padding:11px 13px;border-radius:12px;border:1px dashed #cdd8f6;background:#f7f9fd;}
.info-container .info{display:inline-flex;margin:3px 7px 3px 0;padding:4px 10px;border-radius:99px;background:#fff;border:1px solid var(--nv-line);color:var(--nv-muted);font-size:12px;}
.nv-item-side{display:flex;flex-direction:column;align-items:flex-end;gap:10px;}
.nv-qty{display:inline-flex;align-items:center;height:36px;border-radius:11px;overflow:hidden;border:1px solid var(--nv-line);background:#fff;}
.nv-qty button{width:36px;height:36px;border:0;background:transparent;color:var(--nv-ink);font-size:17px;font-weight:800;cursor:pointer;transition:.18s;}
.nv-qty button:hover{background:#eef2fe;color:var(--nv-cyan);}
.nv-qty input.number{width:48px;height:36px;border:0;border-left:1px solid var(--nv-line);border-right:1px solid var(--nv-line);background:transparent;text-align:center;color:var(--nv-ink);font-weight:800;outline:0;}
.nv-item-actions{display:flex;gap:8px;}
.nv-icon-act{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;border:1px solid var(--nv-line);background:#fff;color:var(--nv-muted);transition:.2s;}
.nv-icon-act:hover{transform:translateY(-2px);}
.nv-icon-act.edit:hover{color:var(--nv-cyan);border-color:#cdd8f6;background:#eef2fe;}
.nv-icon-act.del:hover{color:var(--nv-red);border-color:#f3c9cf;background:#fdecee;}
.nv-item-price{text-align:right;}
.nv-item-price .now{color:var(--nv-gold);font-size:22px;font-weight:850;}
.nv-item-price .cycle{display:block;font-size:11.5px;color:var(--nv-faint);}
.nv-save{display:inline-block;margin-top:5px;font-size:11.5px;padding:2px 9px;border-radius:99px;background:#fff1e9;color:#ef6a34;}

/* 结算侧栏 */
.nv-summary-panel{position:sticky;top:88px;display:flex;flex-direction:column;}
.nv-sum-sec{padding:18px 20px;border-bottom:1px solid var(--nv-line);}
.nv-sum-sec:last-child{border-bottom:0;}
.nv-sum-title{margin:0 0 13px;font-size:14.5px;font-weight:800;display:flex;align-items:center;gap:8px;color:var(--nv-ink);}
.nv-sum-title i{color:var(--nv-cyan);}
.nv-remarks{width:100%;min-height:74px;resize:vertical;border-radius:11px;border:1px solid var(--nv-line);background:#fff;color:var(--nv-ink);padding:12px 14px;font-size:13px;outline:0;transition:.2s;}
.nv-remarks:focus{border-color:var(--nv-cyan);box-shadow:0 0 0 4px rgba(91,123,255,.09);}
/* 支付方式 */
.nv-pay-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.nv-pay{
	position:relative;min-height:60px;border-radius:13px;border:1.5px solid var(--nv-line);background:#f8fafd;
	display:flex;align-items:center;justify-content:center;gap:8px;padding:10px;text-align:center;cursor:pointer;overflow:hidden;
	color:#46526d;font-size:13px;font-weight:700;transition:.2s;
}
.nv-pay::before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(91,123,255,.08) 50%,transparent 70%);transform:translateX(-120%);transition:.55s;}
.nv-pay:hover{transform:translateY(-2px);border-color:#cdd8f6;background:#f2f5fd;}
.nv-pay:hover::before{transform:translateX(120%);}
.nv-pay.checkboxSelect,.nv-pay.active{border-color:var(--nv-cyan) !important;background:#eef2fe !important;box-shadow:0 8px 18px rgba(91,123,255,.14);}
.nv-pay.checkboxSelect::after,.nv-pay.active::after{content:"\f00c";font-family:"Font Awesome 5 Free";font-weight:900;position:absolute;top:7px;right:9px;width:17px;height:17px;border-radius:50%;background:var(--nv-grad);color:#fff;font-size:9px;display:grid;place-items:center;}
.nv-pay input{position:relative;z-index:1;}
.nv-pay img{max-width:88px;max-height:30px;object-fit:contain;position:relative;z-index:1;}
.nv-pay small{display:block;font-weight:600;color:var(--nv-faint);font-size:11px;}
.nv-pay .addfunds{padding:0;margin:0;}
.nv-coupon{display:flex;gap:9px;}
.nv-coupon .form-control{flex:1;height:44px;border-radius:11px;min-width:0;}
.nv-coupon .nv-btn{flex:0 0 auto;padding:0 18px;height:44px;}
.nv-promo-on{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;border-radius:11px;background:#e8f8f2;border:1px solid #c4ecde;color:#0f8a63;font-size:13px;}
.nv-promo-on a{color:var(--nv-red);font-weight:750;}
.nv-lines{display:flex;flex-direction:column;gap:9px;font-size:13.5px;}
.nv-line{display:flex;justify-content:space-between;color:var(--nv-muted);gap:12px;}
.nv-line span:last-child{color:#46526d;font-weight:650;}
.nv-line.off span:last-child{color:var(--nv-orange);}
.nv-grand{display:flex;align-items:flex-end;justify-content:space-between;padding-top:14px;margin-top:6px;border-top:1px dashed var(--nv-line);}
.nv-grand .lbl{color:var(--nv-muted);font-size:12.5px;}
.nv-grand .val{color:var(--nv-gold);font-size:31px;font-weight:850;line-height:1;}
.nv-terms{display:flex;align-items:flex-start;gap:9px;font-size:12px;color:var(--nv-muted);margin:15px 0;}
.nv-terms a{color:var(--nv-cyan);}
.nv-checkout{width:100%;height:52px;font-size:15.5px;}

/* 游客登录 / 注册 */
.nv-auth-tabs{display:inline-flex;padding:4px;border-radius:12px;background:var(--nv-soft);border:1px solid var(--nv-line);gap:4px;margin-bottom:16px;}
.nv-auth-tabs span{cursor:pointer;padding:8px 18px;border-radius:9px;font-size:13px;font-weight:700;color:var(--nv-muted);transition:.22s;}
.nv-auth-tabs span.old-user{background:var(--nv-grad);color:#fff;font-weight:750;box-shadow:0 6px 14px rgba(91,123,255,.24);}
.nv-auth-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.nv-auth-grid .full{grid-column:1/-1;}
.nv-auth-grid .form-control{max-width:none;width:100%;}
.nv-auth-sms{display:flex;gap:9px;}
.nv-auth-sms .form-control{flex:1;min-width:0;}
.nv-auth-sms .nv-btn{flex:0 0 auto;padding:0 14px;height:44px;font-size:12.5px;white-space:nowrap;}

/* 服务区 */
.nv-assure{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:22px;}
.nv-assure-item{display:flex;align-items:center;gap:12px;padding:15px 17px;border-radius:15px;border:1px solid var(--nv-line);background:#fff;transition:.22s;box-shadow:0 4px 14px rgba(33,49,92,.04);}
.nv-assure-item:hover{transform:translateY(-3px);border-color:#cdd8f6;box-shadow:var(--nv-shadow-hover);}
.nv-assure-ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto;background:#eef2fe;color:var(--nv-cyan);font-size:17px;}
.nv-assure-item strong{display:block;font-size:13.5px;color:var(--nv-ink);}
.nv-assure-item span{font-size:12px;color:var(--nv-faint);}

/* 模态框换肤 */
.nv-app .modal-content{background:#fff !important;border:1px solid var(--nv-line);border-radius:17px !important;color:var(--nv-ink);box-shadow:0 26px 60px rgba(33,49,92,.22) !important;}
.nv-app .modal-header{border-bottom:1px solid var(--nv-line);}
.nv-app .modal-footer{border-top:1px solid var(--nv-line);}
.nv-app .modal .close{color:var(--nv-muted);text-shadow:none;opacity:.9;}
.nv-backdrop-fix{background:rgba(28,38,66,.4) !important;backdrop-filter:blur(3px);}

/* ============================================================
 *  complete.tpl —— 下单完成
 * ============================================================ */
.nv-done{max-width:620px;margin:40px auto;text-align:center;padding:54px 34px;}
.nv-done-mark{position:relative;width:120px;height:120px;margin:0 auto 28px;}
.nv-done-ring{position:absolute;inset:0;border-radius:50%;border:2px solid #d8f2e8;}
.nv-done-ring.r2{inset:12px;border-color:#b9e8d6;animation:nvPulse 2.2s ease-in-out infinite;}
.nv-done-circle{
	width:96px;height:96px;border-radius:50%;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
	display:grid;place-items:center;background:linear-gradient(135deg,#22c491,#37d0c0);box-shadow:0 18px 40px rgba(34,196,145,.34);
}
.nv-done-circle svg{width:52px;height:52px;}
.nv-done-circle svg path{stroke:#fff;stroke-width:5;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:60;stroke-dashoffset:60;animation:nvDraw .7s .25s ease forwards;}
.nv-done h1{font-size:27px;font-weight:850;margin:0 0 10px;color:var(--nv-ink);}
.nv-done p{color:var(--nv-muted);margin:0 0 26px;}
.nv-done-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}

/* ---------- 关键帧 ---------- */
@keyframes nvSheen{0%,55%{transform:translateX(-130%);}80%,100%{transform:translateX(130%);}}
@keyframes nvPulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.65;transform:scale(1.07);}}
@keyframes nvFlow{to{transform:translateX(100%);}}
@keyframes nvDraw{to{stroke-dashoffset:0;}}
@keyframes nvSpin{to{transform:rotate(360deg);}}
.nv-fa-spin{animation:nvSpin 1s linear infinite;display:inline-block;}

/* ---------- 响应式 ---------- */
@media (max-width:1180px){
	.nv-cart-grid,.nv-config-grid{grid-template-columns:1fr;}
	.nv-summary-panel,.nv-summary{position:relative !important;top:0 !important;}
}
@media (max-width:860px){
	.nv-topnav{display:none;}
	.nv-hero-inner{display:block;}
	.nv-steps{margin-top:22px;justify-content:space-between;}
	.nv-step-line{flex:1;min-width:24px;}
	.nv-items{max-height:none;}
	.nv-item{grid-template-columns:24px 58px minmax(0,1fr);gap:12px;}
	.nv-good-ico{width:58px;height:58px;}
	.nv-good-ico svg{width:42px;height:42px;}
	.nv-item-side{grid-column:1/-1;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;}
	.nv-field{grid-template-columns:1fr;gap:10px;}
	.nv-hint{grid-column:1;}
	.nv-assure{grid-template-columns:1fr 1fr;}
	.nv-pay-grid{grid-template-columns:1fr;}
	.nv-auth-grid{grid-template-columns:1fr;}
	.mobile-bottom-total{
		display:none;position:fixed;left:0;right:0;bottom:0;z-index:80;
		background:rgba(255,255,255,.97);backdrop-filter:blur(14px);border-top:1px solid var(--nv-line);
		padding:10px 14px;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 -8px 24px rgba(33,49,92,.08);
	}
	.mobile-bottom-total.show{display:flex;}
	.mobile-bottom-total .total{color:var(--nv-gold);font-weight:850;font-size:16px;}
	.mobile-bottom-total .nv-btn{height:44px;flex:0 0 auto;}
}
@media (max-width:520px){
	.nv-assure{grid-template-columns:1fr;}
	.nv-specs{grid-template-columns:repeat(2,1fr);}
	.nv-grid{grid-template-columns:1fr;}
	.nv-grand .val{font-size:26px;}
}
@media (prefers-reduced-motion:reduce){
	.nv-app::before,.nv-app::after,.nv-step-line::after,.nv-logo-mark::after,.nv-done-ring.r2,.nv-kicker .dot{animation:none !important;}
	.nv-rise,.nv-item{animation:none !important;}
	* {transition-duration:.01ms !important;}
}

/* =====================================================================
 * v3：氛围层 / 特性条 / 卡片扫光 / CTA / 小贴士 / PJAX进度条 / 回顶
 * ===================================================================== */

/* ---------- 全局氛围光斑（由 nova.js 注入 .nv-ambient） ---------- */
.nv-ambient{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;}
.nv-ambient span{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;}
.nv-ambient span:nth-child(1){width:460px;height:460px;left:-140px;top:-160px;
	background:radial-gradient(circle,rgba(91,123,255,.20),transparent 70%);animation:nvFloat1 22s ease-in-out infinite;}
.nv-ambient span:nth-child(2){width:520px;height:520px;right:-180px;top:120px;
	background:radial-gradient(circle,rgba(122,92,255,.16),transparent 70%);animation:nvFloat2 26s ease-in-out infinite;}
.nv-ambient span:nth-child(3){width:420px;height:420px;left:38%;bottom:-220px;
	background:radial-gradient(circle,rgba(255,111,61,.10),transparent 70%);animation:nvFloat1 30s ease-in-out infinite reverse;}
@keyframes nvFloat1{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(60px,40px) scale(1.12);}}
@keyframes nvFloat2{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(-50px,60px) scale(.92);}}
.nv-topbar,.nv-wrap{position:relative;z-index:1;}

/* ---------- PJAX 顶部进度条 ---------- */
.nv-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:2000;opacity:0;transition:opacity .3s;pointer-events:none;}
.nv-progress.show{opacity:1;}
.nv-progress i{display:block;height:100%;width:0;border-radius:0 3px 3px 0;
	background:linear-gradient(90deg,#5b7bff,#7a5cff,#ff6f3d);
	box-shadow:0 0 10px rgba(122,92,255,.6);transition:width .25s ease;}

/* ---------- 页面切换过渡 ---------- */
.nv-app.nv-leave{opacity:0;transform:translateY(10px);transition:opacity .18s ease,transform .18s ease;}
.nv-enter{animation:nvPageIn .42s cubic-bezier(.22,.8,.32,1) both;}
@keyframes nvPageIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}

/* ---------- 服务特性条 ---------- */
.nv-perks{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px;}
.nv-perk{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid #e9edf7;
	border-radius:16px;padding:16px 18px;box-shadow:0 6px 18px rgba(35,44,63,.05);
	transition:transform .25s,box-shadow .25s,border-color .25s;}
.nv-perk:hover{transform:translateY(-3px);border-color:rgba(91,123,255,.35);box-shadow:0 14px 30px rgba(91,123,255,.13);}
.nv-perk-ic{flex:0 0 auto;width:46px;height:46px;border-radius:13px;display:grid;place-items:center;
	background:#eceffe;color:var(--nv-cyan);font-size:19px;}
.nv-perk b{display:block;font-size:14.5px;font-weight:800;color:var(--nv-ink);line-height:1.3;letter-spacing:.2px;}
.nv-perk small{display:block;font-size:12px;color:var(--nv-muted);margin-top:3px;}
.nv-perks.compact .nv-perk{padding:11px 14px;border-radius:12px;}
.nv-perks.compact .nv-perk-ic{width:34px;height:34px;font-size:15px;border-radius:10px;}
.nv-perks.compact b{font-size:13px;}
.nv-perks.compact small{display:none;}

/* ---------- 产品卡：顶部渐变发丝线 + 扫光 ---------- */
.nv-goods{position:relative;overflow:hidden;}
.nv-goods::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;
	background:linear-gradient(90deg,#5b7bff,#7a5cff,#ff6f3d);opacity:0;transition:opacity .3s;}
.nv-goods:hover::before{opacity:1;}
.nv-goods-shine{position:absolute;top:0;left:-80%;width:55%;height:100%;pointer-events:none;z-index:1;
	background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-18deg);}
.nv-goods:hover .nv-goods-shine{animation:nvShine .9s ease;}
@keyframes nvShine{from{left:-80%;}to{left:130%;}}
.nv-goods>*:not(.nv-goods-shine){position:relative;z-index:2;}

/* ---------- 主按钮扫光 ---------- */
.nv-buy,.nv-btn{position:relative;overflow:hidden;}
.nv-buy::after,.nv-btn:not(.ghost)::after{content:"";position:absolute;top:0;left:-90%;width:50%;height:100%;
	background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-18deg);pointer-events:none;}
.nv-buy:hover::after,.nv-btn:not(.ghost):hover::after{animation:nvShine .8s ease;}

/* ---------- 底部 CTA 渐变带 ---------- */
.nv-cta{margin:26px 0 8px;border-radius:18px;padding:24px 28px;display:flex;align-items:center;justify-content:space-between;gap:18px;
	background:linear-gradient(120deg,#4f6ef7 0%,#7a5cff 55%,#9b5cff 100%);
	box-shadow:0 16px 40px rgba(91,123,255,.28);position:relative;overflow:hidden;}
.nv-cta::before{content:"";position:absolute;inset:0;
	background:radial-gradient(circle at 88% 20%,rgba(255,255,255,.22),transparent 45%);pointer-events:none;}
.nv-cta-left b{display:block;color:#fff;font-size:17px;font-weight:800;letter-spacing:.5px;}
.nv-cta-left span{display:block;color:rgba(255,255,255,.85);font-size:13px;margin-top:5px;}
.nv-cta-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 24px;border-radius:22px;
	background:#fff;color:var(--nv-cyan);font-weight:800;font-size:14px;box-shadow:0 8px 20px rgba(30,40,90,.22);
	transition:transform .2s,box-shadow .2s;}
.nv-cta-btn:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(30,40,90,.3);color:var(--nv-violet);}
.nv-cta-btn i{transition:transform .2s;}
.nv-cta-btn:hover i{transform:translateX(4px);}

/* ---------- 配置小贴士 ---------- */
.nv-tips{background:#fff;border:1px solid var(--nv-line);border-radius:16px;padding:18px 20px;margin-top:16px;
	box-shadow:0 6px 20px rgba(35,44,63,.05);}
.nv-tips h4{font-size:14px;font-weight:800;color:var(--nv-ink);margin:0 0 12px;display:flex;align-items:center;}
.nv-tips h4 i{color:#f0ad4e;}
.nv-tips ul{list-style:none;margin:0;padding:0;}
.nv-tips li{position:relative;padding:6px 0 6px 24px;font-size:13px;color:var(--nv-muted);line-height:1.5;}
.nv-tips li i{position:absolute;left:0;top:9px;width:16px;height:16px;border-radius:50%;
	background:rgba(21,173,126,.12);color:var(--nv-green);font-size:9px;display:grid;place-items:center;}

/* ---------- 回到顶部 ---------- */
.nv-totop{position:fixed;right:26px;bottom:30px;z-index:90;width:46px;height:46px;border-radius:14px;
	background:#fff;border:1px solid var(--nv-line);color:var(--nv-cyan);font-size:16px;cursor:pointer;
	display:grid;place-items:center;box-shadow:0 10px 26px rgba(35,44,63,.12);
	opacity:0;transform:translateY(14px);pointer-events:none;transition:all .25s;}
.nv-totop.show{opacity:1;transform:translateY(0);pointer-events:auto;}
.nv-totop:hover{background:var(--nv-grad);color:#fff;border-color:transparent;transform:translateY(-3px);}

/* hero 去掉 kicker 后标题上间距收敛 */
.nv-hero h1{margin-top:0;}

@media (max-width:992px){.nv-perks{grid-template-columns:repeat(2,1fr);}.nv-cta{flex-direction:column;align-items:flex-start;}}
@media (max-width:520px){
	.nv-perks{grid-template-columns:1fr;}
	.nv-cta{padding:20px;}
	.nv-cta-left b{font-size:15px;}
	.nv-totop{right:16px;bottom:20px;width:42px;height:42px;}
}

/* ============================================================
 * v3.1 分产品/分类背景图层（配置：assets/js/nova-bg.config.js）
 * ============================================================ */
.nv-bgpage{position:fixed;inset:0;z-index:0;pointer-events:none;
	background-size:cover;background-position:center;
	opacity:0;transition:opacity .6s ease;}
.nv-bgpage.show{opacity:var(--nv-bg-op,.32);}
/* 白色柔化纱，保证卡片与文字在任何背景图上都清晰 */
.nv-bgpage::after{content:"";position:absolute;inset:0;
	background:linear-gradient(180deg,rgba(244,246,251,.86),rgba(244,246,251,.94));}
.nv-wrap{position:relative;z-index:1;}
