/* ============ 设计变量（方案 D 黑红大卡 · A×C 混搭） ============ */
:root{
  --bg:#F5F6F8;
  --surface:#FFFFFF;
  --surface-2:#F4F4F5;
  --border:#E7E8EB;
  --border-strong:#D4D4D8;
  --line-2:#F0F0F3;
  --text:#1B1B20;
  --text-2:#52525B;
  --text-3:#909099;
  --primary:#C8102E;         /* 红为主操作色：购买 / 强调 */
  --primary-hover:#A50D24;
  --primary-bright:#E5314C;
  --red-deep:#9E0C22;
  --red-bg:#FDF1F3;
  --red-border:#F5D3DA;
  --grad-red:linear-gradient(180deg,#E5314C 0%,#C8102E 55%,#B00E28 100%);
  --ink:#131317;             /* 黑为骨架：导航 / 表头 / 页脚 */
  --ink-2:#1F1F26;
  --ink-line:#3F3F46;
  --success:#16A34A;
  --success-bg:#F0FDF4;
  --success-border:#BBF7D0;
  --warning:#B45309;
  --warning-bg:#FFFBEB;
  --warning-border:#FDE68A;
  --radius:8px;
  --radius-lg:12px;
  --mono:ui-monospace,"SF Mono","Cascadia Code",Consolas,"Courier New",monospace;
  --shadow:0 1px 3px rgba(24,24,27,.07);
  --shadow-1:0 1px 2px rgba(19,19,23,.05), 0 10px 24px -14px rgba(19,19,23,.14);
  --shadow-2:0 2px 4px rgba(19,19,23,.06), 0 20px 40px -16px rgba(200,16,46,.20);
}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html,body{height:100%}
body{
  font-family:"PingFang SC","HarmonyOS Sans SC","Noto Sans CJK SC","Microsoft YaHei UI","Microsoft YaHei",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;
  font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);
  -webkit-font-smoothing:antialiased;
}
body.modal-open{overflow:hidden}
.mono{font-family:ui-monospace,"SF Mono","Cascadia Code",Consolas,"Courier New",monospace}
button{font:inherit;cursor:pointer;background:none;border:none;color:inherit}
input,select{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}
svg.ic{width:18px;height:18px;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;fill:none;flex-shrink:0}
.d-none{display:none!important}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

/* ============ 页面骨架 ============ */
.page{min-height:100vh;display:flex;flex-direction:column}
.topbar{background:var(--ink);border-bottom:1px solid var(--ink-line);position:sticky;top:0;z-index:50}
.topbar-in{max-width:1200px;margin:0 auto;height:60px;padding:0 24px;display:flex;align-items:center;gap:20px}
.brand{display:flex;align-items:center;gap:10px;font-size:15.5px;font-weight:700;color:#FAFAFA;letter-spacing:.02em}
.brand .mark{
  width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 34% 30%,#2E2230,#17121A 68%);
  border:1.5px solid rgba(243,201,104,.5);
  box-shadow:0 0 0 3px rgba(243,201,104,.08),0 6px 14px -6px rgba(0,0,0,.6);
}
.brand .mark svg{width:20px;height:20px}
.nav-cur{font-size:14px;font-weight:500;color:#FAFAFA;display:flex;align-items:center;gap:6px}
.nav-cur .dot{width:5px;height:5px;border-radius:50%;background:var(--primary-bright)}
.topbar-search{margin-left:auto;display:flex;align-items:center;gap:8px;background:var(--ink-2);border:1px solid var(--ink-line);border-radius:var(--radius);height:34px;padding:0 12px;width:280px;color:#A1A1AA}
.topbar-search:focus-within{border-color:#52525B}
.topbar-search input{border:none;outline:none;background:none;width:100%;font-size:13px;color:#FAFAFA}
.topbar-search input::placeholder{color:#71717A}
.btn-mydl{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;border:1px solid var(--ink-line);border-radius:var(--radius);height:34px;padding:0 14px;background:var(--ink-2);color:#FAFAFA;white-space:nowrap}
.btn-mydl:hover{border-color:#52525B;background:#3F3F46}
.btn-login{font-size:13px;font-weight:500;border:1px solid var(--ink-line);border-radius:var(--radius);height:34px;padding:0 16px;background:var(--ink-2);color:#FAFAFA;white-space:nowrap}
.btn-login:hover{border-color:#52525B;background:#3F3F46}

/* ============ 首页标题行 + 统计条 ============ */
.hero{max-width:1200px;width:100%;margin:0 auto;padding:26px 24px 8px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.hero h1{font-size:27px;font-weight:800;line-height:1.35;letter-spacing:.01em;color:var(--ink)}
.hero h1 .hl{color:var(--primary);background:linear-gradient(180deg,transparent 68%, rgba(200,16,46,.16) 68%);padding:0 2px}
.hero .sub{font-size:13.5px;color:var(--text-3);margin-top:6px}
.hero .hint{
  font-size:12.5px;color:var(--text-3);display:flex;align-items:center;gap:6px;padding:9px 15px;
  border:1px solid var(--border);border-radius:999px;background:var(--surface);white-space:nowrap;box-shadow:var(--shadow-1);
}
.hero .hint svg{color:var(--primary)}

/* 统计条：真实数据概览 */
.stats-strip{max-width:1200px;width:100%;margin:0 auto;padding:12px 24px 4px;display:flex;gap:10px;flex-wrap:wrap}
.stat-chip{
  display:flex;align-items:baseline;gap:7px;background:var(--surface);border:1px solid var(--border);
  border-radius:10px;padding:8px 14px;box-shadow:var(--shadow-1);font-size:12px;color:var(--text-2);
}
.stat-chip b{font-size:17px;font-weight:800;color:var(--primary);font-family:var(--mono);letter-spacing:-.02em}
.stat-chip i{font-style:normal;font-weight:700;color:var(--text);font-size:12.5px}

/* ============ 全套打包横幅（红渐变立体） ============ */
.bundle-wrap{max-width:1200px;width:100%;margin:0 auto;padding:14px 24px 8px}
.bundle{
  position:relative;overflow:hidden;display:flex;align-items:center;gap:16px;border-radius:16px;padding:18px 22px;
  background:linear-gradient(135deg,#C8102E 0%,#A50D24 58%,#7E0A1B 100%);color:#fff;
  box-shadow:0 4px 0 #7E0A1B, 0 20px 40px -18px rgba(200,16,46,.55), inset 0 1px 0 rgba(255,255,255,.15);
}
.bundle::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(115deg, rgba(255,255,255,.045) 0 1px, transparent 1px 16px);
}
.bundle .b-icon{
  width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff;
}
.bundle .b-icon svg{width:22px;height:22px}
.bundle .b-text{min-width:0;flex:1;position:relative}
.bundle .b-t{font-size:15px;font-weight:800;color:#fff}
.bundle .b-d{font-size:12.5px;color:rgba(255,255,255,.82);margin-top:3px}
.bundle .b-d s{color:rgba(255,255,255,.55);margin-right:2px}
.bundle .b-d b{color:#fff;font-weight:800;text-decoration:underline;text-decoration-color:rgba(255,255,255,.5);text-underline-offset:3px;margin:0 2px}
.bundle .btn-pay-big{
  position:relative;flex-shrink:0;height:46px;padding:0 26px;border-radius:12px;background:#fff;color:var(--red-deep);
  font-size:15px;font-weight:800;letter-spacing:.02em;box-shadow:0 3px 0 rgba(0,0,0,.28);
  transition:transform .12s, box-shadow .12s;
}
.bundle .btn-pay-big:hover{transform:translateY(-1px)}
.bundle .btn-pay-big:active{transform:translateY(3px);box-shadow:0 0 0 rgba(0,0,0,.28)}

/* ============ 数据表卡片（一行四列 · 紧凑五段式：编号+价格/名称/迷你表/元信息/操作） ============ */
.cards-wrap{flex:1;min-height:0;max-width:1200px;width:100%;margin:0 auto;padding:16px 24px 0}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media (max-width:1120px){.cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:700px){.cards{grid-template-columns:1fr}}
.tcard{
  position:relative;display:flex;flex-direction:column;background:var(--surface);
  border:1px solid var(--border);border-radius:16px;padding:13px 13px 12px;overflow:hidden;cursor:pointer;
  box-shadow:var(--shadow-1);
  transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
  animation:cardIn .25s ease-out backwards;
}
.tcard::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--primary) 0%,#E86A7E 55%,transparent 100%);
  opacity:0;transition:opacity .2s;
}
.tcard:hover{
  transform:translateY(-4px);border-color:var(--red-border);
  box-shadow:var(--shadow-2);
}
.tcard:hover::before{opacity:1}

/* 第一段：编号 …… 价格（紧凑头部，名称独占一行） */
.bc-top{display:flex;align-items:center;gap:7px;margin-bottom:8px}
.bc-top .num{
  font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--red-deep);background:var(--red-bg);
  border:1px solid var(--red-border);border-radius:7px;padding:2px 7px;letter-spacing:.04em;flex-shrink:0;
}
.src-badge{
  display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;color:var(--success);
  background:var(--success-bg);border:1px solid var(--success-border);border-radius:999px;padding:2px 7px;flex-shrink:0;
}
.src-badge svg{width:9px;height:9px;stroke-width:3}
.owned-chip{
  display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;color:var(--success);
  background:var(--success-bg);border:1px solid var(--success-border);border-radius:999px;padding:2px 9px;flex-shrink:0;margin-left:auto;
}
.owned-chip svg{width:10px;height:10px;stroke-width:3}
.bc-price{display:flex;align-items:baseline;gap:2px;flex-shrink:0;margin-left:auto}
.bc-price em{font-style:normal;font-size:11px;color:var(--primary);font-weight:800}
.bc-price b{font-size:19px;font-weight:800;color:var(--primary);letter-spacing:-.02em;font-family:var(--mono)}
.bc-price i{font-style:normal;font-size:10px;color:var(--text-3);margin-left:3px;background:#FAFAFB;border:1px solid var(--line-2);border-radius:5px;padding:1px 5px}
.tname{
  font-size:14px;font-weight:800;color:var(--ink);line-height:1.35;margin-bottom:10px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* 第二段：卡内迷你表（紧凑 3 行，红调表头） */
.mini-table{
  border:1px solid var(--line-2);border-radius:10px;overflow:hidden;font-size:11px;background:var(--surface);
  box-shadow:inset 0 1px 2px rgba(19,19,23,.03);margin-bottom:10px;
}
.mini-table .mrow{display:grid;padding:4px 8px;border-bottom:1px solid var(--line-2);align-items:center}
.mini-table .mrow:last-child{border-bottom:none}
.mini-table .mhead-row{background:linear-gradient(180deg,#FDF1F3,#FBE7EB);font-weight:700;color:var(--red-deep)}
.mini-table .mrow:not(.mhead-row):nth-child(even){background:#FAFAFB}
.mini-table .mcell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:6px;color:var(--text-2)}
.mini-table .mcell.mhead{color:var(--red-deep)}
.mini-table .mnum{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;padding-right:0}

/* 第三段：元信息（单行收纳） */
.bc-meta{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px}
.mchip{
  font-size:10px;color:var(--text-2);background:#FAFAFB;border:1px solid var(--line-2);
  border-radius:6px;padding:1px 6px;
}
.mchip b{color:var(--ink);font-weight:700}
.mchip.mup{color:var(--red-deep);background:var(--red-bg);border-color:var(--red-border);font-weight:700}

/* 第四段：操作按钮（紧凑立体） */
.bc-actions{display:flex;gap:8px}
.btn-view{
  display:flex;align-items:center;justify-content:center;gap:5px;height:36px;flex:0 0 33%;
  border-radius:10px;background:var(--surface);border:1.5px solid var(--red-border);color:var(--red-deep);
  font-size:12px;font-weight:700;box-shadow:0 2px 0 var(--line-2);transition:transform .12s, box-shadow .12s, background .15s;
}
.btn-view:hover{background:var(--red-bg)}
.btn-view:active{transform:translateY(2px);box-shadow:none}
.btn-view svg{width:13px;height:13px}
.btn-solid{
  display:flex;align-items:center;justify-content:center;gap:6px;height:36px;flex:1;border-radius:10px;
  background:var(--grad-red);color:#fff;
  font-size:12.5px;font-weight:800;letter-spacing:.02em;
  box-shadow:0 3px 0 var(--red-deep), 0 10px 18px -10px rgba(200,16,46,.55);
  transition:transform .12s, box-shadow .12s, filter .15s;
}
.btn-solid:hover{filter:brightness(1.08)}
.btn-solid:active{transform:translateY(3px);box-shadow:0 0 0 var(--red-deep)}
.btn-solid svg{width:12px;height:12px}

/* ============ 数据说明横卡（后台可编辑） ============ */
.dn-wrap{max-width:1200px;width:100%;margin:0 auto;padding:26px 24px 48px}
.dn-card{
  background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:20px 22px 18px;
  box-shadow:var(--shadow-1);position:relative;
}
.dn-card::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;border-radius:18px 18px 0 0;
  background:linear-gradient(90deg,#131317 0%,var(--primary) 45%,#E86A7E 100%);
}
.dn-head{display:flex;align-items:center;gap:11px;margin-bottom:15px;flex-wrap:wrap}
.dn-ic{
  width:36px;height:36px;border-radius:11px;background:var(--red-bg);color:var(--primary);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid var(--red-border);
}
.dn-ic svg{width:17px;height:17px}
.dn-title{font-size:15.5px;font-weight:800;color:var(--ink)}
.dn-sub{font-size:12px;color:var(--text-3);margin-top:2px}
.dn-date{
  margin-left:auto;font-size:11px;color:var(--text-3);border:1px solid var(--line-2);background:#FAFAFB;
  border-radius:999px;padding:3px 10px;flex-shrink:0;
}
.dn-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media (max-width:840px){.dn-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:540px){.dn-grid{grid-template-columns:1fr}}
.dn-item{background:#FAFAFB;border:1px solid var(--line-2);border-radius:12px;padding:12px 14px}
.dn-item .k{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--text-2);margin-bottom:5px}
.dn-item .k svg{width:13px;height:13px;color:var(--primary)}
.dn-item .v{font-size:12.5px;color:var(--text);line-height:1.6}
.dn-full{
  margin-top:15px;padding-top:14px;border-top:1px dashed var(--border);
  font-size:12.5px;color:var(--text-2);line-height:1.8;
}

/* 搜索无结果空状态 */
.empty-cards{padding:70px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text-3)}
.empty-cards .et{font-size:15px;font-weight:600;color:var(--text-2)}
.btn-ghost{font-size:13px;border:1px solid var(--border);border-radius:var(--radius);height:32px;padding:0 14px;background:var(--surface);display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn-ghost:hover{background:var(--surface-2)}

/* ============ 页脚 ============ */
.footer{border-top:1px solid var(--border);background:var(--surface);margin-top:6px}
.footer-in{max-width:1200px;margin:0 auto;padding:18px 24px;display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:12.5px;color:var(--text-3);flex-wrap:wrap}
.footer .links{display:flex;gap:16px}
.footer .links button{font-size:12.5px;color:var(--text-2)}
.footer .links button:hover{color:var(--primary)}

/* ============ 弹窗通用 ============ */
.backdrop{position:fixed;inset:0;background:rgba(19,19,23,.5);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:100;padding:24px}
.backdrop.open{display:flex}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:0 8px 40px rgba(24,24,27,.18);display:flex;flex-direction:column;overflow:hidden}
.icon-btn{
  width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:10px;color:var(--text-2);
  border:1px solid var(--border);background:var(--surface);box-shadow:0 2px 0 var(--line-2);transition:all .15s;flex-shrink:0;
}
.icon-btn:hover{border-color:var(--red-border);color:var(--red-deep);background:var(--red-bg)}
.icon-btn:active{transform:translateY(2px);box-shadow:none}
.icon-btn:disabled{opacity:.35;cursor:default}

/* ============ 表格预览浮窗 ============ */
.pv-panel{width:min(1280px,100%);height:100%;max-height:calc(100vh - 48px)}
.pv-head{min-height:60px;padding:8px 20px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);flex-shrink:0}
.pv-head .mark{
  width:36px;height:36px;border-radius:11px;background:var(--grad-red);color:#fff;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  box-shadow:0 3px 0 var(--red-deep), 0 8px 14px -6px rgba(200,16,46,.5);
}
.pv-head .mark svg{width:15px;height:15px;stroke-width:2}
.pv-title{min-width:0;flex:1}
.pv-name{font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-meta{font-size:12px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-nav{display:flex;align-items:center;gap:4px;flex-shrink:0}
.owned-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--success);margin:0 4px}

/* 「数据说明」可折叠条（位于标题与工作表标签之间，后台可编辑） */
.pv-note{border-bottom:1px solid var(--line-2);background:var(--surface);flex-shrink:0}
.pn-row{display:flex;align-items:flex-start;gap:10px;padding:10px 18px 9px}
.pn-chip{
  flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;color:var(--red-deep);
  background:var(--red-bg);border:1px solid var(--red-border);border-radius:7px;padding:2px 8px;margin-top:1px;
}
.pn-chip svg{width:11px;height:11px}
.pn-text{
  flex:1;min-width:0;font-size:12px;color:var(--text-2);line-height:1.65;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
.pn-toggle{flex-shrink:0;font-size:12px;font-weight:700;color:var(--primary);white-space:nowrap;margin-top:1px;padding:1px 4px}
.pn-toggle:hover{text-decoration:underline;text-underline-offset:3px}
.pn-body{display:none;padding:2px 18px 13px}
.pv-note.open .pn-body{display:block}
.pv-note.open .pn-row .pn-text{display:none}
.pn-full{font-size:12.5px;color:var(--text-2);line-height:1.75;white-space:pre-line}
.pn-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:11px}
@media (max-width:640px){.pn-fields{grid-template-columns:1fr}}
.pf{display:flex;gap:8px;font-size:11.5px;background:#FAFAFB;border:1px solid var(--line-2);border-radius:9px;padding:7px 10px;line-height:1.55}
.pf b{color:var(--red-deep);font-weight:800;white-space:nowrap;flex-shrink:0}
.pf span{color:var(--text-2)}
.pv-sheet-tabs{padding:11px 18px;border-bottom:1px solid var(--line-2);background:#FAFAFB}
.sheet-tabs{display:flex;align-items:center;gap:8px;overflow-x:auto}
.stab{
  font-size:12.5px;font-weight:600;color:var(--text-2);border:1px solid var(--border);border-radius:999px;
  padding:6px 15px;white-space:nowrap;background:var(--surface);display:inline-flex;align-items:center;flex-shrink:0;transition:all .15s;
}
.stab:hover{border-color:var(--red-border);color:var(--red-deep)}
.stab.cur{background:var(--grad-red);border-color:var(--primary);color:#fff;font-weight:800;box-shadow:0 2px 0 var(--red-deep)}

/* Excel 1:1 试看区：视口（相对定位放水印层）+ 滚动容器 */
.xls-viewport{flex:1;min-height:0;position:relative;background:#F4F4F5;display:flex;flex-direction:column}
.xls-scroll{flex:1;min-height:0;overflow:auto;background:#FFFFFF;padding:10px 12px 16px}
.xls-watermark{position:absolute;inset:0;z-index:5;pointer-events:none;background-repeat:repeat}
.xls-loading{padding:70px 20px;display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-3);font-size:13px;min-width:100%}

/* Excel 快照表：还原单元格样式（内联），基础外观在此 */
table.xls{border-collapse:collapse;background:#fff;table-layout:fixed}
table.xls td{
  border:1px solid #E7E7EA;font-size:13px;line-height:1.45;padding:3px 7px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;
  max-width:420px;background-clip:padding-box;
}
table.xls td.xl-num{text-align:right;font-variant-numeric:tabular-nums}

/* 浮窗内锁定横幅（独立块，位于表格区与购买条之间） */
.pv-panel .locked-banner{margin:0;border-top:1px solid var(--red-border);border-radius:0;
  background:var(--red-bg);padding:16px 20px;flex-shrink:0}
.pv-panel .locked-banner .lt{font-size:14px;font-weight:600;color:var(--primary)}
.pv-panel .locked-banner .ld{font-size:12.5px;color:var(--text-2)}
.pv-panel .locked-banner svg{color:var(--primary)}

/* 空状态 / 加载 */
.tbl-empty{padding:70px 20px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--text-3);text-align:center}
.tbl-empty .et{font-size:15px;font-weight:600;color:var(--text-2)}
.load-more{display:flex;align-items:center;justify-content:center;gap:8px;padding:18px 0 26px;color:var(--text-3);font-size:13px}
.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(24,24,27,.15);border-top-color:#18181B;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.load-fail{font-size:13px;color:var(--text-2);display:flex;align-items:center;gap:10px}

/* 浮窗底部购买条（固定在浮窗内，不随表格滚动） */
.pv-buybar{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}
.buybar-in{padding:10px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.bi{display:flex;align-items:baseline;gap:12px;min-width:0;flex-wrap:wrap}
.bi-name{font-weight:600;font-size:14px}
.bi-meta{font-size:12px;color:var(--text-3)}
.bi-right{display:flex;align-items:center;gap:12px}
.bi-price{font-size:20px;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums}
.bi-price .rmb{font-size:13px;font-weight:600;margin-right:1px}
.btn-pay-big{background:var(--primary);color:#fff;font-size:14px;font-weight:600;border-radius:var(--radius);height:40px;padding:0 24px;display:inline-flex;align-items:center;gap:8px;transition:background .12s;white-space:nowrap}
.btn-pay-big:hover{background:var(--primary-hover)}
.btn-dl-big{background:var(--ink);color:#fff;font-size:14px;font-weight:600;border-radius:var(--radius);height:40px;padding:0 20px;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.btn-dl-big:hover{background:var(--ink-2)}

/* ============ 购买弹窗（横版双栏） ============ */
#buyBackdrop{z-index:200}
#buyPanel{width:780px;max-width:calc(100vw - 40px);max-height:calc(100vh - 48px)}
.buy-head{padding:16px 20px 0;display:flex;align-items:center;justify-content:space-between}
.buy-head .bt{font-size:15px;font-weight:600}
.buy-body{padding:16px 20px 20px;display:flex;flex-direction:column;gap:14px;overflow:auto}
/* 横版骨架：左订单摘要（深色）+ 右表单 */
.buy-grid{display:grid;grid-template-columns:292px 1fr;gap:18px}
@media (max-width:760px){.buy-grid{grid-template-columns:1fr}}
.bsum{background:var(--ink);border-radius:14px;color:#D4D4D8;padding:20px 20px 18px;display:flex;flex-direction:column;gap:10px}
.bsum-ob{display:flex;align-items:flex-start;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--ink-line)}
.bsum-ob .num{font-family:var(--mono);font-size:11px;font-weight:700;color:#FF8A9B;background:rgba(200,16,46,.22);border:1px solid rgba(229,49,76,.45);border-radius:7px;padding:2px 8px;flex-shrink:0;letter-spacing:.04em}
.bsum-ob .on{font-size:14px;font-weight:700;color:#fff;line-height:1.45;word-break:break-all}
.bsum .kv{color:#D4D4D8}
.bsum .kv .k{color:#71717A}
.bsum .kv.coupon-ok .k,.bsum .kv.coupon-ok .v{color:#FF8A9B}
.bsum-total{margin-top:auto;padding-top:12px;border-top:1px solid var(--ink-line);display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap}
.bsum-total .k{font-size:13px;color:#A1A1AA}
.bsum-total .amt{color:#fff;font-variant-numeric:tabular-nums}
.bsum-total .amt em{font-style:normal;font-size:14px;font-weight:700;margin-right:2px}
.bsum-total .amt b{font-size:26px;font-weight:800;letter-spacing:-.02em;font-family:var(--mono)}
.bsum-total .save{width:100%;font-size:12px;color:#FF8A9B}
.bform{display:flex;flex-direction:column;gap:16px;min-width:0}
.bf-sec{display:flex;flex-direction:column;gap:9px}
.pay-opt .pi{width:34px;height:34px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-2);flex-shrink:0}
.pay-opt .pi svg{width:18px;height:18px}
.pay-opt .pt{min-width:0;flex:1}
.bform-phone label{font-size:13px;font-weight:600;display:block;margin-bottom:8px}
.bform-phone label span{font-weight:400;color:var(--text-3);font-size:12px}
.bform-phone input{width:100%;border:1px solid var(--border);border-radius:var(--radius);height:40px;padding:0 12px;font-size:14px}
.bform-phone input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(200,16,46,.10)}
.kv{display:flex;justify-content:space-between;font-size:13px;color:var(--text-2)}
.kv .k{color:var(--text-3)}
.kv.total{border-top:1px solid var(--border);padding-top:8px;margin-top:2px}
.kv.total .v{font-size:16px;font-weight:700;color:var(--text)}
.kv.coupon-ok{color:var(--primary)}
.kv.coupon-ok .k{color:var(--primary)}
.coupon-row{display:flex;gap:8px}
.coupon-row input{flex:1;border:1px solid var(--border);border-radius:var(--radius);height:36px;padding:0 12px;font-size:13px;letter-spacing:.05em}
.coupon-row input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(200,16,46,.10)}
.coupon-err{font-size:12px;color:var(--primary);margin-top:-8px}
.sec-label{font-size:13px;font-weight:600}
.pay-opts{display:flex;flex-direction:column;gap:8px}
.pay-opt{border:1px solid var(--border);border-radius:10px;padding:10px 14px;display:flex;align-items:center;gap:10px;background:var(--surface);text-align:left;width:100%}
.pay-opt:hover{border-color:var(--border-strong)}
.pay-opt.sel{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset}
.radio{width:16px;height:16px;border-radius:50%;border:1.5px solid #A1A1AA;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.pay-opt.sel .radio{border-color:var(--primary)}
.pay-opt.sel .radio::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--primary)}
.pay-opt .pn{font-size:13px;font-weight:500}
.pay-opt .pd{font-size:12px;color:var(--text-3)}
.terms-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}
.terms-row .lnk{color:var(--text);text-decoration:underline;text-underline-offset:3px}
.terms-row .lnk:hover{color:var(--text-3)}
.chk{width:15px;height:15px;border-radius:4px;border:1.5px solid #A1A1AA;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--surface)}
.chk.on{background:var(--primary);border-color:var(--primary)}
.chk.on svg{width:10px;height:10px;stroke-width:3;stroke:#fff}
.btn-pay{background:var(--primary);color:#fff;font-size:14px;font-weight:600;border-radius:var(--radius);height:44px;width:100%;display:flex;align-items:center;justify-content:center;gap:10px;transition:background .12s}
.btn-pay:hover{background:var(--primary-hover)}
.btn-pay:disabled{opacity:.6;cursor:default}
.buy-note{text-align:center;font-size:12px;color:#A1A1AA}
.buy-success{display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0 4px;text-align:center}
.ok-circle{width:48px;height:48px;border-radius:50%;background:var(--success-bg);border:1px solid var(--success-border);display:flex;align-items:center;justify-content:center;color:var(--success);margin-bottom:4px}
.buy-success .st{font-size:16px;font-weight:600}
.buy-success .so{font-size:13px;color:var(--text-3)}
.buy-success .sd{font-size:13px;color:var(--text-2)}
.ok-circle.err{background:var(--red-bg);border-color:var(--red-border);color:var(--primary)}
/* 支付结果（横版：状态图标 + 明细 + 操作） */
.buy-success-h{display:flex;align-items:center;gap:18px;padding:16px 6px 10px}
.buy-success-h .ok-circle{margin-bottom:0;flex-shrink:0}
.bs-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.bs-main .st{font-size:16px;font-weight:700}
.bs-main .so{font-size:12.5px;color:var(--text-3)}
.bs-main .sd{font-size:13px;color:var(--text-2);line-height:1.6}
.bs-btns{display:flex;gap:10px;flex-shrink:0}
@media (max-width:640px){
  .buy-success-h{flex-direction:column;text-align:center;padding-top:10px}
  .bs-btns{width:100%;flex-direction:column}
}
.btn-row{display:flex;gap:10px;width:100%;margin-top:8px}
.btn-outline{flex:1;border:1px solid var(--border);border-radius:var(--radius);height:40px;font-size:13px;font-weight:500;background:var(--surface)}
.btn-outline:hover{background:var(--surface-2)}
.btn-solid{flex:1;background:var(--primary);color:#fff;border-radius:var(--radius);height:40px;font-size:13px;font-weight:600}
.btn-solid:hover{background:var(--primary-hover)}

/* ============ 我的下载中心 ============ */
#dlBackdrop{z-index:220}
#dlPanel{width:520px;max-width:calc(100vw - 40px);max-height:calc(100vh - 48px)}
.dl-item{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.dl-item+.dl-item{margin-top:10px}
.dl-info{min-width:0;flex:1}
.dl-name{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dl-meta{font-size:12px;color:var(--text-3);margin-top:3px}
.badge-upd{display:inline-flex;align-items:center;font-size:11px;font-weight:600;color:var(--warning);background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:999px;padding:1px 8px}
.dl-actions{flex-shrink:0}

/* ============ 信息弹窗 ============ */
#infoBackdrop{z-index:300}
#infoPanel{width:420px;max-width:calc(100vw - 40px);max-height:calc(100vh - 48px)}
.info-body{padding:4px 20px 20px;font-size:13px;color:var(--text-2);line-height:1.7;overflow:auto}
.info-body .placeholder-note{margin-top:10px;font-size:12px;color:#A1A1AA}

/* ============ 轻提示 ============ */
.toast-wrap{position:fixed;right:20px;bottom:20px;z-index:400;display:flex;flex-direction:column;gap:8px}
.toast{background:var(--primary);color:#fff;font-size:13px;border-radius:var(--radius);padding:10px 14px;box-shadow:0 4px 16px rgba(24,24,27,.25);animation:toastIn .18s ease-out;max-width:320px}
@keyframes toastIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes cardIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ============ 收银台（横版：左二维码 / 右金额明细） ============ */
.cashier-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:center;padding:8px 0}
@media (max-width:700px){.cashier-grid{grid-template-columns:1fr;justify-items:center}}
.cash-qr-side{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;justify-self:center}
.cash-method{font-size:14px;font-weight:700;color:var(--text)}
.cash-wait{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--text-2)}
.cash-info{display:flex;flex-direction:column;gap:10px;justify-self:start;width:100%}
.cash-no{font-size:12px;color:var(--text-3)}
.cash-tip{font-size:12.5px;color:var(--text-3);line-height:1.7;background:var(--surface-2);border:1px solid var(--line-2);border-radius:10px;padding:10px 12px}
.cash-btns{display:flex;gap:10px;margin-top:4px}
.cash-btns .btn-outline{flex:0 0 auto;padding:0 22px}
.cashier-amt{font-size:32px;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums}
.cashier-name{font-size:13px;color:var(--text-3);max-width:100%;word-break:break-all}
.cashier-qr{padding:12px;border:1px solid var(--border);border-radius:12px;background:#fff;line-height:0}
.cashier-qr svg{width:184px;height:184px}
.cashier-demo{padding:26px 0}
.dot-pulse{width:9px;height:9px;border-radius:50%;background:var(--primary);animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.3;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}

/* 下载中心骨架屏 */
.dl-skel .dl-item.skel{height:66px;background:linear-gradient(90deg,#F4F4F5 25%,#ECECEF 50%,#F4F4F5 75%);background-size:200% 100%;animation:skel 1.2s linear infinite;border-radius:10px}
@keyframes skel{to{background-position:-200% 0}}

/* 订单查询页已移除；.lk-note / .lk-err 保留（收银台二维码回退文案在用） */
.lk-note{font-size:12px;color:#A1A1AA;margin-top:12px;line-height:1.6}
.lk-err{background:var(--red-bg);border:1px solid var(--red-border);color:var(--primary);border-radius:10px;padding:10px 14px;font-size:13px}

/* ============ 会员登录/注册浮窗（V8：加宽加大版） ============ */
#authBackdrop{z-index:240}
.auth-panel{width:560px;max-width:calc(100vw - 40px);max-height:calc(100vh - 48px)}
.auth-head{display:flex;align-items:center;gap:14px;padding:24px 28px 16px}
.auth-head .mark{
  width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;
  background:var(--grad-red);box-shadow:0 6px 16px -6px rgba(200,16,46,.55), inset 0 1px 0 rgba(255,255,255,.28);
}
.auth-head .mark svg{width:22px;height:22px;stroke-width:2}
.auth-head-t{flex:1;min-width:0}
.auth-head-t h2{font-size:19px;font-weight:900;color:var(--ink);letter-spacing:-.01em}
.auth-head-t p{font-size:13px;color:var(--text-3);margin-top:4px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 登录门槛提示条（试看/购买/下载被拦截时显示） */
.auth-prompt{
  margin:0 28px 4px;display:flex;align-items:center;gap:9px;
  background:var(--red-bg);border:1px solid var(--red-border);border-radius:10px;
  padding:10px 14px;font-size:13.5px;font-weight:700;color:var(--red-deep);line-height:1.6;
}
.auth-prompt::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--primary);flex-shrink:0}
.auth-body{padding:18px 28px 0;overflow:auto}
.auth-tabs{display:flex;border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-bottom:18px}
.auth-tab{flex:1;height:46px;font-size:15px;font-weight:800;color:var(--text-2);background:var(--surface-2)}
.auth-tab.cur{background:var(--ink);color:#fff}
.auth-pane .field{display:flex;flex-direction:column;gap:7px;margin-bottom:15px}
.auth-pane .field label{font-size:13.5px;font-weight:800}
.auth-pane input{border:1.5px solid var(--border);border-radius:12px;height:50px;padding:0 16px;font-size:15px;width:100%}
.auth-pane input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(200,16,46,.10)}
.code-row{display:flex;gap:12px}
.code-row input{flex:1}
.btn-code{flex:0 0 132px;height:50px;border:1.5px solid var(--primary);background:var(--red-bg);color:var(--primary);border-radius:12px;font-size:14px;font-weight:800;white-space:nowrap}
.btn-code:hover{background:#FDE3E7}
.btn-code:disabled{opacity:.6;cursor:default}
.code-hint{font-size:12px;color:var(--warning);background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:8px;padding:6px 10px}
/* 密码框 + 眼睛切换 */
.pw-wrap{position:relative}
.pw-wrap input{padding-right:42px}
.pw-eye{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:34px;height:34px;border-radius:8px;color:var(--text-3);display:flex;align-items:center;justify-content:center}
.pw-eye:hover{color:var(--text);background:var(--surface-2)}
.pw-eye svg{width:17px;height:17px;stroke-width:1.75}
/* 「密码 + 忘记密码」同行 */
.field-row{display:flex;align-items:center;justify-content:space-between}
.mini-link{font-size:12px;font-weight:600;color:var(--primary);padding:2px 4px;border-radius:4px}
.mini-link:hover{background:var(--red-bg)}
/* 主操作按钮（浮窗内通栏） */
.auth-go{width:100%;height:52px;justify-content:center;margin-top:2px;font-size:16px;font-weight:800;letter-spacing:.2em}
.auth-go:disabled{opacity:.55;cursor:default;background:var(--primary)}
/* 注册协议勾选行 */
.terms-mini{display:flex;align-items:flex-start;gap:9px;font-size:13px;color:var(--text-2);line-height:1.5;cursor:pointer;margin:2px 0 6px;user-select:none}
.terms-mini .chk{margin-top:2px;cursor:pointer}
.terms-mini .chk svg{width:10px;height:10px;stroke-width:3;stroke:#fff;opacity:0;transition:opacity .12s}

/* ============ 我的订单浮窗（§2：登录门槛 + 手风琴 + 交付详情） ============ */
#moBackdrop{z-index:230}
.mo-panel{width:600px;max-width:calc(100vw - 40px);max-height:calc(100vh - 48px);display:flex;flex-direction:column}
.mo-body{overflow:auto;padding-bottom:8px}
/* 登录引导视图（图 M1） */
.mo-gate{padding:64px 32px 48px;display:flex;flex-direction:column;align-items:center;text-align:center}
.mo-gate-ic{width:64px;height:64px;border-radius:18px;background:var(--surface-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-3);margin-bottom:18px}
.mo-gate-ic svg{width:28px;height:28px}
.mo-gate-t{font-size:17px;font-weight:700;color:var(--ink)}
.mo-gate-d{font-size:13px;color:var(--text-3);margin:8px 0 22px;line-height:1.7;max-width:340px}
/* 骨架屏 */
.mo-skel .mo-row.skel{height:72px;background:linear-gradient(90deg,#F4F4F5 25%,#ECECEF 50%,#F4F4F5 75%);background-size:200% 100%;animation:skel 1.2s linear infinite;border-radius:10px;margin-bottom:10px}
/* 手风琴订单行（图 M2） */
.mo-acc{border:1px solid var(--border);border-radius:12px;background:var(--surface);margin-bottom:10px;overflow:hidden;transition:border-color .15s,box-shadow .15s}
.mo-acc.open{border-color:var(--border-strong);box-shadow:var(--shadow-1)}
.mo-acc.hl{border-color:var(--red-border);box-shadow:0 0 0 3px rgba(200,16,46,.10)}
.mo-acc>.mo-row{width:100%;display:flex;align-items:center;gap:14px;padding:14px 16px;text-align:left}
.mo-acc>.mo-row:hover{background:var(--surface-2)}
.mo-l{flex:1;min-width:0}
.mo-name{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mo-sub{font-size:12px;color:var(--text-3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mo-r{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}
.mo-amt{font-size:15px;font-weight:700;color:var(--ink)}
.mo-st{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:2px 8px;border-radius:99px;line-height:1.5}
.mo-st-pending{background:var(--warning-bg);color:var(--warning)}
.mo-st-verify{background:#EEF2FF;color:#4F46E5}
.mo-st-paid{background:var(--success-bg);color:var(--success)}
.mo-st-refund{background:var(--red-bg);color:var(--primary)}
.mo-st-expired{background:var(--surface-2);color:var(--text-3)}
.mo-arrow{width:16px;height:16px;color:var(--text-3);flex-shrink:0;transition:transform .18s}
.mo-acc.open .mo-arrow{transform:rotate(180deg)}
/* 展开详情（图 M3） */
.mo-detail{display:none;border-top:1px solid var(--line-2);padding:14px 16px 16px;background:#FCFCFD}
.mo-acc.open .mo-detail{display:block;animation:moFade .18s ease}
@keyframes moFade{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.mo-loading{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-3);padding:16px 0}
.mo-spin{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:moSpin .7s linear infinite;flex-shrink:0}
@keyframes moSpin{to{transform:rotate(360deg)}}
/* 交付分区 */
.mo-sec{margin-bottom:14px}
.mo-sec:last-child{margin-bottom:0}
.mo-sec-t{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.mo-sec-t .ic{width:15px;height:15px;color:var(--primary)}
.mo-bind{margin-left:auto;font-size:11.5px;font-weight:500;color:var(--text-3)}
/* 卡密行（完整明文 + 复制） */
.mo-key-wrap{display:flex;align-items:center;gap:8px;background:var(--ink);border-radius:10px;padding:12px 14px}
.mo-key{flex:1;min-width:0;font-size:14.5px;font-weight:600;color:#FAFAFA;letter-spacing:.02em;word-break:break-all;line-height:1.5}
.mo-copy{flex-shrink:0;height:30px;padding:0 12px;border-radius:8px;background:var(--primary);color:#fff;font-size:12px;font-weight:600;display:inline-flex;align-items:center;gap:5px}
.mo-copy:hover{background:var(--primary-hover)}
.mo-copy.sm{height:24px;padding:0 9px;font-size:11px;background:var(--surface-2);color:var(--text-2);border:1px solid var(--border)}
.mo-copy.sm:hover{background:#EBEBEF}
.mo-key-meta{font-size:12px;color:var(--text-3);margin-top:7px;line-height:1.6}
.mo-pending{font-size:13px;color:var(--warning);background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:10px;padding:10px 14px;line-height:1.7}
/* 网盘渠道行 */
.mo-channel{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);margin-bottom:8px}
.mo-channel:last-child{margin-bottom:0}
.mo-ch-dot{width:26px;height:26px;border-radius:50%;flex-shrink:0}
.mo-ch-name{font-size:13.5px;font-weight:600;color:var(--ink);flex-shrink:0}
.mo-ch-code{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-3);margin-left:2px}
.mo-ch-code b{color:var(--text);font-size:12.5px}
.mo-ch-go{margin-left:auto;flex-shrink:0;height:30px;padding:0 12px;border-radius:8px;border:1px solid var(--border);font-size:12px;font-weight:600;color:var(--text-2);display:inline-flex;align-items:center}
.mo-ch-go:hover{border-color:var(--red-border);color:var(--primary);background:var(--red-bg)}
/* 激活说明（后台富文本） */
.mo-note{font-size:13px;color:var(--text-2);line-height:1.8;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.mo-note a{color:var(--primary);font-weight:600}
.mo-note b{color:var(--ink)}
/* 订单回执 */
.mo-receipt{border-top:1px dashed var(--border-strong);padding-top:12px;margin-top:14px}
.mo-rc-row{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;padding:3px 0}
.mo-rc-row span{color:var(--text-3)}
.mo-rc-row b{color:var(--text-2);font-weight:600}
/* 待支付 / 待核实提示 */
.mo-paytip{padding:8px 0 4px}
.mo-pt-t{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:6px}
.mo-pt-d{font-size:13px;color:var(--text-2);line-height:1.7;margin-bottom:12px}
.terms-mini .chk.on svg{opacity:1}
.terms-mini .lnk{color:var(--text);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.terms-mini .lnk:hover{color:var(--primary)}
/* 底部登录/注册互切 */
.auth-foot{padding:14px 28px 20px;margin-top:16px;border-top:1px solid var(--line-2);font-size:13.5px}
.auth-switch{width:100%;text-align:center;font-size:13px;color:var(--text-2);padding:8px 10px;border-radius:10px;cursor:pointer}
.auth-switch b{color:var(--primary);font-weight:700}
.auth-switch:hover{background:var(--red-bg)}

/* 顶栏登录态 */
.topbar-user{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:#FAFAFA;border:1px solid var(--ink-line);border-radius:var(--radius);height:34px;padding:0 12px;background:var(--ink-2)}
.topbar-logout{font-size:12px;color:#A1A1AA;padding:2px 6px;border-radius:4px}
.topbar-logout:hover{color:#fff;background:var(--ink-line)}

/* ============ 响应式 ============ */
@media (max-width:720px){
  .topbar-in,.hero,.cards-wrap,.footer-in,.bundle-wrap,.stats-strip,.dn-wrap{padding-left:16px;padding-right:16px}
  .topbar-search{display:none}
  .hero .hint{display:none}
  .hero h1{font-size:22px}
  .bc-price b{font-size:20px}
  .bc-actions{flex-direction:column}
  .btn-view{flex:1}
  #pvBackdrop,#buyBackdrop,#dlBackdrop,#infoBackdrop,#authBackdrop{padding:10px}
  .pv-panel{max-height:calc(100vh - 20px)}
  .bundle{flex-wrap:wrap}
  .bundle .btn-pay-big{width:100%;justify-content:center}
  .dl-item{flex-direction:column;align-items:stretch}
}

/* ============================================================
   全屏一屏布局改版（方案 D · 80vw 一屏自适应）
   - 内容区宽度 = 屏幕宽度 × 80%（顶栏/页脚背景通栏，内容对齐 80vw）
   - 整页锁定 100vh：首页一屏完整呈现，桌面端无页面滚动条
   - 区块高度弹性分配（标题+统计合并一行 / 打包细条 / 卡片 4 列等分 /
     数据说明两段式大字号横卡）；字号与间距按视口 clamp 自适应
   - 本节位于文件末尾：同名选择器按级联顺序覆盖上文规则
   ============================================================ */
:root{
  --fs-xs:clamp(10px,1.05vh + .08vw,13px);
  --fs-sm:clamp(11px,1.25vh + .1vw,14px);
  --fs-md:clamp(12.5px,1.5vh + .12vw,16px);
  --fs-lg:clamp(16px,2.4vh + .18vw,24px);
  --fs-xl:clamp(19px,3.2vh + .26vw,32px);
}
html,body{height:100%}
body{overflow:hidden}                       /* 一屏锁定（小屏回退见文末媒体查询） */
.page{height:100vh;height:100dvh;min-height:0}
.topbar{flex-shrink:0}
.footer{flex-shrink:0;margin-top:0}

/* ---- 顶栏：内容 80vw ---- */
.topbar-in{width:80vw;max-width:none;height:clamp(44px,6vh,60px)}

/* ---- 标题 + 统计（合并一行） ---- */
.hero{
  width:80vw;max-width:none;margin:0 auto;padding:clamp(8px,1.4vh,18px) 0 0;
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0;min-width:0;
}
.hero-l{min-width:0}
.hero h1{font-size:var(--fs-xl);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero .sub{font-size:var(--fs-xs);margin-top:3px}
.hero-right{display:flex;align-items:center;gap:clamp(6px,.7vw,12px);flex-shrink:0}
.hero .hint{flex-shrink:0;font-size:var(--fs-xs);padding:6px clamp(10px,1vw,16px)}
.stat-chip{
  display:flex;align-items:baseline;gap:6px;background:var(--surface);border:1px solid var(--border);
  border-radius:10px;padding:clamp(4px,.9vh,10px) clamp(8px,.9vw,16px);box-shadow:var(--shadow-1);
  font-size:var(--fs-xs);color:var(--text-2);white-space:nowrap;flex-shrink:0;
}
.stat-chip b{font-size:var(--fs-md);font-weight:800;color:var(--primary);font-family:var(--mono);letter-spacing:-.02em}
.stat-chip i{font-style:normal;font-weight:700;color:var(--text);font-size:var(--fs-xs)}

/* ---- 打包横条（细条） ---- */
.bundle-wrap{width:80vw;max-width:none;margin:0 auto;padding:clamp(6px,1.2vh,14px) 0 0;flex-shrink:0}
.bundle{
  padding:clamp(5px,1vh,12px) clamp(12px,1.2vw,20px);border-radius:clamp(8px,1.4vh,14px);
  gap:clamp(8px,1vw,16px);
}
.bundle .b-icon{display:none}
.bundle .b-t{font-size:var(--fs-sm)}
.bundle .b-d{font-size:var(--fs-xs)}
.bundle .btn-pay-big{
  height:clamp(28px,4.2vh,40px);padding:0 clamp(14px,1.4vw,26px);border-radius:10px;
  font-size:var(--fs-sm);font-weight:800;background:#fff;color:var(--red-deep);
  box-shadow:0 3px 0 rgba(0,0,0,.28);
}
.bundle .btn-pay-big:hover{background:#fff;filter:brightness(.96)}

/* ---- 卡片区：4 列等分剩余高度 ---- */
.cards-wrap{
  width:80vw;max-width:none;margin:0 auto;padding:clamp(8px,1.4vh,18px) 0 0;
  flex:1;min-height:0;display:flex;flex-direction:column;
}
.cards{
  flex:1;min-height:0;
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-auto-rows:minmax(0,1fr);  /* 8 卡一屏：两行均分可用高度，无需下拉 */
  gap:clamp(8px,1.3vh,18px);
  overflow:auto;               /* 表数量多于 8 张时的安全阀：仅内部滚动 */
  padding:3px 3px 6px;         /* 悬停上浮预留 */
}
.tcard{padding:clamp(8px,1.5vh,18px) clamp(10px,1vw,18px);border-radius:clamp(10px,1.8vh,18px);min-height:0}
.tcard::before{height:3px}
.tcard:hover{transform:translateY(-3px)}
.bc-top{margin-bottom:clamp(3px,.6vh,8px);gap:8px}
.bc-top .num{font-size:var(--fs-xs);padding:1px 7px;border-radius:6px}
.src-badge{font-size:var(--fs-xs)}
.owned-chip{font-size:var(--fs-xs)}
.bc-price em{font-size:var(--fs-xs)}
.bc-price b{font-size:var(--fs-lg)}
.bc-price i{font-size:var(--fs-xs)}
.tname{font-size:var(--fs-md);margin-bottom:clamp(4px,.8vh,10px)}
.mini-table{
  flex:1;min-height:0;display:flex;flex-direction:column;
  font-size:var(--fs-xs);margin-bottom:clamp(4px,.8vh,10px);
}
.mini-table .mrow{flex:1;min-height:0;padding:2px 8px;overflow:hidden}
.mini-table .mcell{line-height:1.35}
.mini-table .mhead-row{flex:0 0 auto}
.bc-meta{margin-bottom:clamp(4px,.8vh,10px);gap:6px;flex-wrap:nowrap;overflow:hidden}
.mchip{font-size:var(--fs-xs);padding:1px 9px;border-radius:999px;white-space:nowrap}
.bc-actions{gap:8px}
.bc-actions .btn-view{
  height:clamp(26px,4.4vh,42px);flex:0 0 38%;font-size:var(--fs-xs);
  border-color:var(--primary);color:var(--primary);border-radius:10px;
}
.bc-actions .btn-solid{height:clamp(26px,4.4vh,42px);font-size:var(--fs-xs);border-radius:10px}
.empty-cards{padding:40px 20px}

/* ---- 数据说明横卡（两段式：标题行 + 要点行 · 大字号） ---- */
.dn-wrap{
  width:80vw;max-width:none;margin:0 auto;
  padding:clamp(8px,1.4vh,16px) 0 clamp(6px,1.2vh,14px);flex-shrink:0;
}
.dn-card{
  display:flex;flex-direction:column;gap:clamp(7px,1.6vh,18px);
  padding:clamp(9px,1.8vh,22px) clamp(12px,1.4vw,24px);
  min-height:clamp(96px,17vh,176px);
  border-radius:clamp(10px,1.8vh,18px);
}
.dn-card::before{height:3px;border-radius:0}
.dn-top{display:flex;align-items:center;gap:12px;flex-shrink:0}
.dn-head{display:flex;align-items:center;gap:10px;margin-bottom:0;flex-wrap:nowrap;flex:1 1 auto;min-width:0}
.dn-ic{width:clamp(24px,3.8vh,36px);height:clamp(24px,3.8vh,36px);border-radius:9px}
.dn-ic svg{width:var(--fs-md);height:var(--fs-md)}
.dn-title{font-size:var(--fs-lg);font-weight:900;white-space:nowrap;flex-shrink:0}
.dn-sub{font-size:var(--fs-sm);color:var(--text-2);font-weight:600;margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}
.dn-date{font-size:var(--fs-xs);margin-left:0;flex-shrink:0}
.dn-grid{display:flex;gap:clamp(8px,1vw,16px);flex:1;min-height:0}
.dn-item{
  flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:5px;
  border-radius:12px;padding:clamp(6px,1.5vh,16px) clamp(11px,1.1vw,20px);
  background:var(--surface-2);
}
.dn-item .k{font-size:var(--fs-md);font-weight:800;color:var(--text);gap:9px;margin-bottom:0;white-space:nowrap}
.dn-item .k svg{width:var(--fs-lg);height:var(--fs-lg)}
.dn-item .v{
  font-size:var(--fs-sm);font-weight:600;color:var(--text);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  padding-left:calc(var(--fs-lg) + 9px);
}
.dn-full{margin-top:0;padding-top:0;border-top:none;font-size:var(--fs-xs);line-height:1.6;max-height:3.4em;overflow:auto}

/* ---- 页脚：内容 80vw ---- */
.footer-in{width:80vw;max-width:none;padding:0;height:clamp(34px,4.6vh,46px)}

/* ---- 试看浮窗：与整页同一比例语言（80vw × 84vh） ---- */
#pvBackdrop{padding:0}
.pv-panel{width:80vw;height:84vh;max-height:none;border-radius:18px}

/* ---- 矮视口（≤830px 高，如笔记本小窗）：数据说明收缩一档 + 迷你表只留 2 行数据，保一屏不挤 ---- */
@media (max-height:830px){
  .dn-card{min-height:0;gap:clamp(4px,.9vh,10px);padding:clamp(6px,1.2vh,14px) clamp(10px,1.2vw,20px)}
  .dn-title{font-size:var(--fs-md)}
  .dn-sub{font-size:var(--fs-xs)}
  .dn-item{padding:clamp(4px,.9vh,10px) clamp(9px,.9vw,14px);border-radius:10px}
  .dn-item .k{font-size:var(--fs-sm)}
  .dn-item .k svg{width:var(--fs-md);height:var(--fs-md)}
  .dn-item .v{font-size:var(--fs-xs);-webkit-line-clamp:1;padding-left:calc(var(--fs-md) + 9px)}
  /* 迷你表矮视口只保留表头 + 前 2 行数据，行高足够阅读不重叠 */
  .mini-table .mrow:not(.mhead-row):nth-child(n+3){display:none}
  .mini-table .mrow{padding:1px 8px}
}

/* ---- 小屏回退（窄屏 / 极矮视口）：恢复页面滚动 + 两列卡片，保可用性 ---- */
@media (max-width:960px),(max-height:600px){
  body{overflow:auto}
  .page{height:auto;min-height:100vh}
  .hero{flex-wrap:wrap}
  .hero-right{flex-wrap:wrap}
  .hero h1{white-space:normal}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);overflow:visible}
  .tcard{min-height:280px}
  .mini-table{flex:none}
  .mini-table .mrow{flex:none;padding:4px 8px}
  .dn-grid{flex-wrap:wrap}
  .dn-item{flex:1 1 40%}
  .dn-item .v{white-space:normal}
  .pv-panel{width:100%;height:92vh}
}

/* ============================================================
   我的订单浮窗改版（60vw 宽 · 高度对齐 打包条顶→数据说明底）
   顶栏登录/注册按钮文字垂直居中修复；整框/整行复制交互样式
   ============================================================ */
.btn-login{display:inline-flex;align-items:center;justify-content:center}
.btn-mydl{display:inline-flex;align-items:center;justify-content:center}
.mo-panel{position:fixed;width:60vw;left:20vw;top:16vh;height:70vh;max-height:none}
.mo-detail .mo-key-wrap{cursor:pointer;transition:box-shadow .15s}
.mo-detail .mo-key-wrap:hover{box-shadow:0 0 0 2px var(--primary-bright) inset}
.mo-detail .mo-key-wrap:active{transform:scale(.995)}
.mo-detail .mo-key{user-select:all}
.mo-detail .mo-channel{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.mo-detail .mo-channel:hover{border-color:var(--primary);box-shadow:0 0 0 2px rgba(200,16,46,.08)}
.mo-detail .mo-direct{
  height:52px;border-radius:11px;background:var(--grad-red);color:#fff;
  font-size:15px;font-weight:800;letter-spacing:.02em;
  box-shadow:0 3px 0 var(--red-deep),0 10px 20px -10px rgba(200,16,46,.6);
  transition:transform .1s,box-shadow .1s,filter .15s;
}
.mo-detail .mo-direct:hover{filter:brightness(1.05)}
.mo-detail .mo-direct:active{transform:translateY(3px);box-shadow:0 0 0 var(--red-deep)}
@media (max-width:960px),(max-height:600px){
  .mo-panel{width:94vw;left:3vw;top:4vh;height:90vh}
}

@media (max-width:960px),(max-height:600px){
  .mo-panel{width:94vw;left:3vw;top:4vh;height:90vh}
}

/* ============================================================
   数据卡片轻量缩略版（V2）：站点风格渲染的真实数据预览
   - 上传/快照生成时截取前 8 列 × 表头+4 行（每格 12 字符）存 thumb JSON
   - 首页内联渲染：winbar(工作表名) + 表头 + 数据行 + 列/行渐隐角标
   - 行高弹性均分，永远恰好布满缩略区；悬停卡片数据轻移示意更多行
   - >8 张表时卡片保底高度，卡片区内部滚动（不再压扁裁切）
   ============================================================ */
/* 卡片高度改由封面固定 3:2 决定（V9 版本A + 零裁切），此处的弹性行高规则废止 */
.tcard .thumb{
  flex:1;min-height:0;position:relative;overflow:hidden;
  display:flex;flex-direction:column;
  border:1px solid var(--line-2);border-radius:10px;background:#fff;
  margin-bottom:clamp(4px,.8vh,10px);
}
.tcard .thumb .winbar{
  display:flex;align-items:center;gap:5px;padding:4px 8px;flex-shrink:0;
  background:linear-gradient(180deg,#FAFAFB,#F4F4F5);border-bottom:1px solid var(--line-2);
}
.tcard .thumb .winbar .wdot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.tcard .thumb .winbar .sheet{
  margin-left:4px;font-size:10px;color:var(--text-3);font-family:var(--mono);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tcard .thumb .tgrid{flex:1;min-height:0;display:flex;flex-direction:column;transition:transform .5s ease}
.tcard:hover .thumb .tgrid{transform:translateY(-10px)}
.tcard .thumb .trow{
  flex:1;min-height:0;display:grid;align-items:center;overflow:hidden;
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.tcard .thumb .trow span{
  font-size:10.5px;color:var(--text-2);padding:0 7px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tcard .thumb .trow.thead{flex:0 0 auto;background:linear-gradient(180deg,#FDF1F3,#FBE7EB)}
.tcard .thumb .trow.thead span{font-weight:700;color:var(--red-deep)}
.tcard .thumb .trow:not(.thead):nth-child(even) span{background:#FAFAFB}
.tcard .thumb .trow span.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
.tcard .thumb .col-fade{position:absolute;top:0;right:0;bottom:0;width:56px;background:linear-gradient(90deg,rgba(255,255,255,0),#fff 78%);pointer-events:none}
.tcard .thumb .col-more{position:absolute;top:6px;right:6px;font-size:10px;font-weight:700;color:var(--red-deep);background:var(--red-bg);border:1px solid var(--red-border);border-radius:999px;padding:1px 7px;pointer-events:none}
.tcard .thumb .row-fade{position:absolute;left:0;right:0;bottom:0;height:30px;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 82%);pointer-events:none}
.tcard .thumb .row-more{position:absolute;right:6px;bottom:5px;font-size:10px;font-weight:700;color:var(--text-2);background:rgba(255,255,255,.95);border:1px solid var(--line-2);border-radius:999px;padding:1px 8px;pointer-events:none}
.tcard .thumb .row-more b{color:var(--primary)}

/* ============================================================
   我的订单：全局刷新 + 待发卡内联刷新
   ============================================================ */
.mo-head-r{margin-left:auto;display:flex;align-items:center;gap:8px}
.mo-refresh{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:30px;padding:0 12px;border:1px solid var(--border);border-radius:8px;
  font-size:12px;font-weight:600;color:var(--text-2);background:var(--surface);transition:all .15s;
}
.mo-refresh:hover{border-color:var(--red-border);color:var(--red-deep);background:var(--red-bg)}
.mo-refresh:disabled{opacity:.6;cursor:default}
.mo-refresh svg{width:13px;height:13px}
.mo-refresh.spinning svg{animation:moSpin .7s linear infinite}
@keyframes moSpin{to{transform:rotate(360deg)}}
.mo-refreshed{font-size:11px;color:var(--text-3);padding:8px 20px 0;flex-shrink:0}
.mo-refreshed b{color:var(--success);font-weight:600}
.mo-pending{
  display:flex;align-items:center;gap:12px;
  font-size:13px;color:var(--warning);background:var(--warning-bg);
  border:1px solid var(--warning-border);border-radius:10px;padding:10px 14px;
}
.mo-pending .txt{flex:1;min-width:0;line-height:1.6}
.mo-pending .btn-refresh{
  flex-shrink:0;display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 12px;
  border:1px solid var(--warning-border);border-radius:8px;background:#fff;color:var(--warning);
  font-size:12px;font-weight:600;transition:all .15s;white-space:nowrap;
}
.mo-pending .btn-refresh:hover{border-color:var(--warning);background:#fffbeb}
.mo-pending .btn-refresh:disabled{opacity:.6;cursor:default}
.mo-pending .btn-refresh svg{width:12px;height:12px}
.mo-pending .btn-refresh.spinning svg{animation:moSpin .7s linear infinite}

/* ============================================================
   试看浮窗底部购买区（V3 图六版式）：三档大选择 + 大「购买」按钮
   未购买 = 档位选择区（点选联动，购买按钮自动带上所选档位）
   已购买 = 下载栏（.pv-buybar，见通用样式）
   ============================================================ */
.pv-merged{
  flex-shrink:0;display:block;
  background:linear-gradient(180deg,#FDF1F3,#FBE9EC);
  border-top:1px solid var(--red-border);
  padding:13px 22px 15px;
}
.pv-merged .pbz-head{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:800;color:var(--red-deep);margin-bottom:11px;min-width:0}
.pv-merged .pbz-head .sheet-tag{font-family:var(--mono);font-size:12px;color:var(--primary);background:#fff;border:1px solid var(--red-border);border-radius:6px;padding:1px 7px;flex-shrink:0}
.pv-merged .pbz-head .sub{color:var(--text-2);font-weight:500;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.pv-merged .pbz-tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
.pv-merged .pbz-tier{
  position:relative;border:1.5px solid var(--border);border-radius:14px;padding:13px 16px;cursor:pointer;
  background:#fff;display:flex;align-items:center;gap:13px;min-height:84px;
  transition:border-color .15s,box-shadow .15s,background .15s;
}
.pv-merged .pbz-tier:hover{border-color:var(--red-border)}
.pv-merged .pbz-tier.sel{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),0 6px 18px -8px rgba(200,16,46,.35);background:var(--red-bg)}
.pv-merged .pbz-tier .radio{width:19px;height:19px;border-radius:50%;border:1.5px solid #A1A1AA;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.pv-merged .pbz-tier.sel .radio{border-color:var(--primary)}
.pv-merged .pbz-tier.sel .radio::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--primary)}
.pv-merged .pbz-tier .badge{position:absolute;top:-10px;right:12px;font-size:11px;font-weight:800;color:#fff;background:var(--grad-red);border-radius:999px;padding:2px 10px;box-shadow:0 2px 6px rgba(200,16,46,.35);z-index:1}
.pv-merged .pbz-tier .ti{flex:1;min-width:0}
.pv-merged .pbz-tier .tn{font-size:17px;font-weight:800;color:var(--ink);white-space:nowrap}
.pv-merged .pbz-tier .tn .en{font-size:12px;color:var(--text-3);font-weight:500;margin-left:6px}
.pv-merged .pbz-tier .td{font-size:12px;color:var(--text-3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-merged .pbz-tier .tp{flex-shrink:0;text-align:right}
.pv-merged .pbz-tier .tp b{font-size:24px;font-weight:800;font-family:var(--mono);color:var(--primary)}
.pv-merged .pbz-tier .tp em{font-style:normal;font-size:12px;font-weight:700;margin-right:2px}
.pv-merged .pbz-tier .tp .orig{font-size:12px;color:var(--text-3);text-decoration:line-through;display:block;margin-top:1px}
.pv-merged .pbz-tier .tp .save{font-size:11px;font-weight:700;color:var(--success)}
.pv-merged .pbz-buy{display:flex;align-items:center;gap:14px}
.pv-merged .pbz-buy .note{flex:1;min-width:0;font-size:12.5px;color:var(--text-2)}
.pv-merged .pbz-buy .note b{color:var(--red-deep)}
.btn-purchase{
  flex-shrink:0;height:56px;min-width:280px;padding:0 30px;border-radius:14px;
  background:var(--grad-red);color:#fff;font-size:17px;font-weight:800;letter-spacing:.02em;
  box-shadow:0 4px 0 var(--red-deep),0 14px 28px -12px rgba(200,16,46,.6);
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  transition:transform .1s,box-shadow .1s,filter .15s;
}
.btn-purchase:hover{filter:brightness(1.05)}
.btn-purchase:active{transform:translateY(4px);box-shadow:0 0 0 var(--red-deep)}
@media (max-width:1100px){
  .pv-merged .pbz-tier .td{display:none}
  .pv-merged .pbz-tier{min-height:64px}
}
@media (max-width:860px){
  .pv-merged .pbz-tiers{grid-template-columns:1fr}
  .pv-merged .pbz-buy{flex-wrap:wrap}
  .btn-purchase{width:100%;min-width:0}
}

/* ============================================================
   首页图片卡片（封面图 + 三档迷你价 · 无描述行）
   ============================================================ */
.tcard-cover{padding:0;gap:0}
.tcard-cover .cover{position:relative;flex:1;min-height:0;overflow:hidden;background:var(--surface-2)}
/* 图片铺满封面区（cover）：大小随一屏布局自适应 */
.tcard-cover .cover img,.tcard-cover .cover .ph{width:100%;height:100%;object-fit:cover;display:block;position:absolute;inset:0}
.tcard-cover .ph1{background:linear-gradient(135deg,#0E2A47 0%,#14508C 55%,#1E88C9 100%)}
.tcard-cover .ph2{background:linear-gradient(135deg,#1A1F2E 0%,#3D2C52 55%,#8C3A6B 100%)}
.tcard-cover .ph3{background:linear-gradient(135deg,#0B3D2E 0%,#14684C 55%,#2FAE7C 100%)}
.tcard-cover .ph4{background:linear-gradient(135deg,#3D1F0B 0%,#8C4A14 55%,#D98A2B 100%)}
.tcard-cover .cover .ph{position:relative}
.tcard-cover .cover .ph span{display:none}
.tcard-cover .badge-up{position:absolute;top:8px;left:8px;font-size:11px;font-weight:800;color:#fff;background:rgba(19,19,23,.62);backdrop-filter:blur(4px);border-radius:7px;padding:2px 8px;font-family:var(--mono)}
.tcard-cover .badge-src{position:absolute;top:8px;right:8px;font-size:10px;font-weight:700;color:#DCFCE7;background:rgba(22,101,52,.85);border-radius:999px;padding:2px 8px}
.tcard-cover .owned-chip{font-size:11px}
.tcard-cover .price-f{position:absolute;right:8px;bottom:8px;text-align:right;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.5)}
.tcard-cover .price-f .from{display:block;font-size:10.5px;opacity:.9}
.tcard-cover .price-f b{font-size:20px;font-weight:800;font-family:var(--mono)}
.tcard-cover .price-f .per{font-size:12px;font-weight:700}
.tcard-cover .body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:12px;flex:0 0 auto}
.tcard-cover .tname{font-size:14.5px;font-weight:800;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.tcard-cover .tiers-mini{display:flex;gap:6px;flex-shrink:0}
.tcard-cover .tm{flex:1;text-align:center;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:5px 2px;cursor:pointer;transition:border-color .15s,background .15s}
.tcard-cover .tm:hover{border-color:var(--primary);background:var(--red-bg)}
.tcard-cover .tm i{display:block;font-style:normal;font-size:10px;color:var(--text-3)}
.tcard-cover .tm b{font-size:13px;font-weight:800;font-family:var(--mono);color:var(--primary)}
.tcard-cover .acts{display:flex;gap:8px;margin-top:auto;flex-shrink:0}
.tcard-cover .btn-view{flex:0 0 38%;display:flex;align-items:center;justify-content:center;gap:5px;height:34px;border:1.5px solid var(--primary);border-radius:9px;color:var(--primary);font-size:12px;font-weight:700;background:#fff}
.tcard-cover .btn-view:hover{background:var(--red-bg)}
.tcard-cover .btn-solid{flex:1;display:flex;align-items:center;justify-content:center;height:34px;border-radius:9px;color:#fff;font-size:12px;font-weight:800;background:var(--grad-red);box-shadow:0 2px 0 var(--red-deep)}
.tcard-cover .btn-solid:active{transform:translateY(2px);box-shadow:none}

/* ============================================================
   购买弹窗 · 样式 B（红金质感）：左红金摘要 + 档位 pills + 到期
   ============================================================ */
.cob-grid{display:grid;grid-template-columns:400px 1fr;gap:0;min-height:480px}
@media (max-width:860px){.cob-grid{grid-template-columns:1fr}}
.cob{
  background:linear-gradient(160deg,#C8102E 0%,#8E0C20 60%,#5E0816 100%);
  color:#F7D9DE;padding:28px 26px;display:flex;flex-direction:column;gap:14px;border-radius:14px 0 0 14px;
}
.cob-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:14.5px;color:#fff}
.cob-brand .mark{width:28px;height:28px;border-radius:8px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);display:flex;align-items:center;justify-content:center;color:#fff}
.cob-brand .mark svg{width:14px;height:14px;stroke-width:2}
.cob-item{display:flex;align-items:flex-start;gap:12px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:14px}
.cob-item .num{font-family:var(--mono);font-size:12px;font-weight:700;color:#FFD98A;background:rgba(212,175,55,.18);border:1px solid rgba(212,175,55,.45);border-radius:7px;padding:2px 8px;flex-shrink:0}
.cob-item .nm{font-weight:800;font-size:15px;color:#fff}
.cob-item .sub{font-size:12px;color:rgba(255,255,255,.65);margin-top:2px}
.tier-line{display:flex;align-items:center;gap:7px;margin-top:9px;flex-wrap:wrap}
.tier-pill{font-size:11px;font-weight:700;border-radius:999px;padding:3px 10px;border:1px solid transparent;cursor:pointer;color:rgba(255,255,255,.6);background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);white-space:nowrap;transition:all .15s}
.tier-pill:hover{color:#fff}
.tier-pill.on{color:#5E0816;background:linear-gradient(180deg,#F3D98A,#D4AF37);border-color:transparent;font-weight:800}
/* 红底租用栏内的 pills（浅色变体） */
.pv-merged .tier-pill{color:var(--red-deep);background:#fff;border-color:var(--red-border)}
.pv-merged .tier-pill:hover{border-color:var(--primary)}
.pv-merged .tier-pill.on{color:#fff;background:var(--grad-red);border-color:transparent}
.cob-kvs{display:flex;flex-direction:column;gap:2px}
.cob .kv{display:flex;justify-content:space-between;font-size:13px;color:rgba(255,255,255,.65);padding:3px 0}
.cob .kv .v{color:#fff;font-weight:600}
.cob .kv.coupon-ok .k,.cob .kv.coupon-ok .v{color:#FFD98A}
.cob-exp{font-size:12px;background:rgba(255,255,255,.07);border:1px dashed rgba(255,255,255,.25);border-radius:10px;padding:10px 12px;color:rgba(255,255,255,.85);line-height:1.8}
.cob-exp b{color:#FFD98A}
.cob-total{margin-top:auto;border-top:1px solid rgba(255,255,255,.2);padding-top:14px;display:flex;align-items:baseline;justify-content:space-between}
.cob-total .k{font-size:13px;color:rgba(255,255,255,.7)}
.cob-total .amt{font-size:30px;font-weight:800;font-family:var(--mono);color:#FFD98A;letter-spacing:-.02em}
.cob-total .amt em{font-style:normal;font-size:15px;margin-right:2px}
@media (max-width:860px){.cob{border-radius:14px 14px 0 0}}

/* ============================================================
   V4 改版：可信度横卡 / 购买前确认框 / 单表警示 / 已开通条 /
   固定三网盘卡片 / 数据说明常开大字 / 条款整行勾选
   ============================================================ */

/* ---- ⑦ 首页可信度横卡（替代右上统计 chips；数字 = 设置 trust_users） ---- */
/* ---- ⑦ hero 连续整卡 V7：黑金红 · 开放式排版（大数字直接落底，不再嵌浮块） ---- */
.hero-card{
  width:80vw;margin:0 auto;margin-top:18px;display:flex;align-items:stretch;
  background:linear-gradient(112deg,#1B1218 0%,#15131A 52%,#221017 100%);
  border:1px solid #332028;border-radius:18px;
  box-shadow:0 22px 48px -20px rgba(0,0,0,.55);
  position:relative;overflow:hidden;flex-shrink:0;
}
.hero-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#F3C968,#A50D24)}
.hero-card::after{content:"";position:absolute;right:-70px;top:-90px;width:280px;height:280px;border-radius:50%;background:radial-gradient(circle,rgba(200,16,46,.16) 0%,transparent 66%);pointer-events:none}
.hero-l{flex:1;min-width:0;padding:24px 34px 22px 32px;display:flex;flex-direction:column;justify-content:center;gap:8px}
.hero-l h1{font-size:26px;font-weight:800;line-height:1.35;letter-spacing:.02em;color:#FAFAFA;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero-l h1 .hl{color:#E5484D;background:linear-gradient(180deg,transparent 72%,rgba(229,72,77,.24) 72%);padding:0 2px}
.hero-l .sub{font-size:13px;color:#98909B;font-weight:400;letter-spacing:.02em;margin:0}
.hero-sep{flex:0 0 1px;background:linear-gradient(180deg,transparent,rgba(243,201,104,.35) 30%,rgba(243,201,104,.35) 70%,transparent);margin:22px 0}
.hero-r{flex:0 0 auto;min-width:0;padding:20px 34px 18px 32px;display:flex;flex-direction:column;justify-content:center;gap:10px}
/* 开放式大数字：无浮块，直接落在黑底上 */
.trust-num-row{display:flex;align-items:baseline;gap:10px;white-space:nowrap}
.trust-num-row svg{width:22px;height:22px;color:#F3C968;align-self:center;flex-shrink:0}
.trust-num{font-size:36px;font-weight:800;font-family:var(--mono);color:#F3C968;letter-spacing:-.01em;line-height:1}
.trust-num-plus{font-size:18px;font-weight:800;color:#F3C968;font-family:var(--mono)}
.trust-num-label{font-size:15px;font-weight:700;color:#EDE7EA;letter-spacing:.06em}
.trust-feats{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;color:#98909B;letter-spacing:.04em;white-space:nowrap}
.trust-feats i{font-style:normal;color:#5E5259}
.hero-tip{display:inline-flex;align-items:center;gap:7px;align-self:flex-end;font-size:12px;font-weight:700;color:#F3C968;border:1px solid rgba(243,201,104,.38);border-radius:999px;padding:5px 14px;letter-spacing:.03em}
.hero-tip svg{width:13px;height:13px}
@media (max-width:1320px){.hero-l h1{font-size:22px}.hero-r{padding:18px 26px 16px 24px}.trust-num{font-size:32px}}
@media (max-width:960px),(max-height:600px){
  .hero-card{flex-direction:column}
  .hero-sep{display:none}
  .hero-l{padding:16px 22px 12px}
  .hero-r{padding:4px 22px 16px}
}

/* ---- ⑤ 购买前确认对话框 ---- */
.cd-panel{width:600px;max-width:calc(100vw - 40px)}
.cd-body{padding:22px 26px 24px}
.cd-title{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:900;color:var(--warn-ink,#7A4A00)}
.cd-title .ic-warn{width:38px;height:38px;border-radius:11px;background:#FFF7E6;border:1.5px solid #F5C542;display:flex;align-items:center;justify-content:center;color:#D97706;flex-shrink:0}
.cd-title .ic-warn svg{width:20px;height:20px}
.cd-main{margin-top:16px;background:#FFF7E6;border:1.5px solid #F5C542;border-radius:14px;padding:16px 18px;font-size:15px;line-height:2;color:#7A4A00}
.cd-main .big{font-size:16.5px;font-weight:900}
.cd-main b{color:var(--primary);font-weight:900}
.cd-main ul{list-style:none;margin-top:8px}
.cd-main li{font-size:13.5px;font-weight:700;display:flex;gap:8px;line-height:1.9}
.cd-main li::before{content:"·";font-weight:900}
.cd-acts{display:flex;gap:12px;margin-top:18px}
.cd-acts .btn-back{flex:1;height:48px;border-radius:12px;border:1.5px solid var(--border);font-size:14.5px;font-weight:700;background:var(--surface)}
.cd-acts .btn-back:hover{background:var(--surface-2)}
.cd-acts .btn-go{flex:1.6;height:48px;border-radius:12px;background:var(--grad-red);color:#fff;font-size:15px;font-weight:800;box-shadow:0 3px 0 var(--red-deep)}
.cd-acts .btn-go:hover{filter:brightness(1.05)}
.cd-acts .btn-go:active{transform:translateY(3px);box-shadow:none}

/* ---- ⑤ 详情购买区：单表范围警示条（未购/已购都显示） ---- */
.pbz-warn{display:flex;align-items:flex-start;gap:10px;background:#FFF7E6;border:1.5px solid #F5C542;border-radius:12px;padding:10px 14px;font-size:14px;font-weight:800;color:#7A4A00;margin-bottom:12px}
.pbz-warn svg{width:17px;height:17px;margin-top:2px;flex-shrink:0}
.pbz-warn b{color:var(--primary)}
.pv-merged .pbz-warn{margin-bottom:12px}

/* ---- ② 已购详情：绿色已开通条 + 下载按钮 ---- */
.pv-opened{display:flex;align-items:center;gap:12px;background:var(--success-bg);border:1.5px solid var(--success-border);border-radius:12px;padding:10px 14px;margin-bottom:12px}
.pv-opened .ok-ic{width:30px;height:30px;border-radius:50%;background:#DCFCE7;display:flex;align-items:center;justify-content:center;color:var(--success);flex-shrink:0}
.pv-opened .ok-ic svg{width:16px;height:16px;stroke-width:3}
.pv-opened .txt{flex:1;min-width:0;font-size:14px;font-weight:800;color:#065F46}
.pv-opened .txt .sub{font-size:12.5px;color:#15803D;font-weight:600;margin-top:1px}
.btn-dlbar{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 20px;border-radius:11px;background:var(--ink);color:#fff;font-size:14px;font-weight:800;box-shadow:0 3px 0 #000;flex-shrink:0;transition:transform .1s,box-shadow .1s}
.btn-dlbar:hover{filter:brightness(1.15)}
.btn-dlbar:active{transform:translateY(3px);box-shadow:none}
.btn-dlbar svg{width:15px;height:15px}

/* ---- ⑤ 订单确认左栏：单表高亮警示框 ---- */
.cob-warn{background:#FFE9B8;border:1.5px solid #F5C542;color:#7A4A00;border-radius:12px;padding:12px 14px;font-size:13.5px;font-weight:900;line-height:1.75}
.cob-warn .rw{display:flex;gap:9px;align-items:flex-start}
.cob-warn svg{width:16px;height:16px;margin-top:3px;flex-shrink:0}
.cob-warn .sm{display:block;font-size:12px;font-weight:700;color:#8A5A00;margin-top:3px}

/* ---- ⑤ 我的订单详情：单表授权高亮条 ---- */
.mo-warn{display:flex;gap:10px;background:#FFF7E6;border:1.5px solid #F5C542;border-radius:12px;padding:11px 14px;font-size:13.5px;font-weight:900;color:#7A4A00;margin-bottom:14px}
.mo-warn svg{width:16px;height:16px;margin-top:2px;flex-shrink:0}
.mo-warn b{color:var(--primary)}

/* ---- ③ 我的订单：固定三网盘卡片（未配置置灰） ---- */
.drive-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.drive-card{border:1.5px solid var(--border);border-radius:12px;padding:13px 15px;background:#fff;display:flex;flex-direction:column;gap:7px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.drive-card:hover{border-color:var(--primary);box-shadow:0 0 0 2px rgba(200,16,46,.08)}
.drive-card .d-top{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:800}
.drive-card .d-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.drive-card .d-code{font-size:12.5px;color:var(--text-2)}
.drive-card .d-code b{font-family:var(--mono);color:var(--text)}
.drive-card .d-go{font-size:12.5px;font-weight:800;color:var(--primary)}
.drive-card.off{background:var(--surface-2);border-style:dashed;cursor:default;box-shadow:none}
.drive-card.off:hover{border-color:var(--border)}
.drive-card.off .d-top,.drive-card.off .d-code{color:var(--text-3)}
@media (max-width:720px){.drive-grid{grid-template-columns:1fr}}

/* ---- ④ 详情数据说明：常开大字（首行高亮） ---- */
.pv-note{flex-shrink:0;border-bottom:1px solid var(--line-2);background:#FFFDF6;padding:12px 22px}
.pv-note .pn-head{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}
.pv-note .pn-head svg.ic{width:20px;height:20px;align-self:center;color:var(--red-deep);flex-shrink:0}
.pv-note .pn-t{font-size:21px;font-weight:900;color:var(--red-deep)}
.pv-note .pn-sub{font-size:15px;font-weight:700;color:var(--warn-ink,#7A4A00)}
.pv-note .pn-first{font-size:16.5px;font-weight:900;color:var(--text);line-height:1.7}
.pv-note .pn-first .pn-mark{background:linear-gradient(180deg,transparent 62%,#FFE28A 62%);padding:0 2px}
.pv-note .pn-rest{font-size:14.5px;font-weight:600;color:var(--text-2);line-height:1.95;margin-top:6px;white-space:pre-line;max-height:120px;overflow:auto}

/* ---- ⑥ 条款整行勾选 ---- */
.terms-row{cursor:pointer;user-select:none;border-radius:10px;padding:4px 6px;transition:background .12s}
.terms-row:hover{background:var(--surface-2)}
.terms-row .chk{pointer-events:none}
.terms-row .lnk{color:var(--primary);font-weight:700}

/* ---- 信息弹窗条款排版（h4 + 高亮免责框） ---- */
.info-body h4{font-size:14.5px;font-weight:900;color:var(--text);margin:14px 0 4px}
.info-body h4:first-child{margin-top:0}
.info-body .warn-para{background:#FFF7E6;border:1px solid #F5C542;border-radius:10px;padding:10px 14px;color:#7A4A00;font-weight:700;margin:10px 0;line-height:1.9}
.info-body b{color:var(--text)}

/* ============ 信息弹窗 · 长文模式（数据说明 / 购买须知）============
   触发条件：内容纯文本 > 1500 字（site.js openInfo 自动判定）
   面板与「我的订单」同规格：60vw × 70vh 居中；排版含目录/章节/表格/提示框/FAQ */
#infoPanel.doc-mode{width:60vw;max-width:96vw;height:70vh;max-height:none}
#infoPanel.doc-mode .info-body{padding:24px 34px 40px;overflow-y:auto}
.info-body.rich{font-size:13.8px;color:var(--text-2)}
.info-body.rich .doc-meta{display:flex;gap:10px;align-items:center;margin-bottom:18px;flex-wrap:wrap}
.info-body.rich .doc-meta .chip{font-size:12px;font-weight:800;color:var(--red-deep);background:var(--red-bg);border:1px solid var(--red-border);border-radius:7px;padding:2px 10px}
.info-body.rich .doc-meta .ver{font-size:12px;color:var(--text-3)}
.info-body.rich .toc{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:14px 18px;margin-bottom:22px;font-size:13px;line-height:2}
.info-body.rich .toc b{display:block;font-size:13.5px;margin-bottom:4px;color:var(--text)}
.info-body.rich .toc a{color:var(--text-2);text-decoration:none;margin-right:14px;white-space:nowrap}
.info-body.rich .toc a:hover{color:var(--primary)}
.info-body.rich h3{font-size:17px;font-weight:900;color:var(--ink);margin:24px 0 10px;padding-left:10px;border-left:4px solid var(--primary);line-height:1.4}
.info-body.rich h4{font-size:14.5px;font-weight:800;color:var(--text);margin:16px 0 6px}
.info-body.rich p{font-size:13.8px;line-height:2.05;margin:8px 0;text-align:justify}
.info-body.rich p b{color:var(--text)}
.info-body.rich ul{margin:8px 0 8px 4px;list-style:none}
.info-body.rich ul li{line-height:2.05;padding-left:16px;position:relative;text-align:justify}
.info-body.rich ul li::before{content:"·";position:absolute;left:2px;font-weight:900;color:var(--primary)}
.info-body.rich ol{margin:8px 0 8px 6px;padding-left:18px}
.info-body.rich ol li{line-height:2.05;margin:4px 0;text-align:justify}
.info-body.rich table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px}
.info-body.rich table th,.info-body.rich table td{border:1px solid var(--border);padding:8px 12px;text-align:left;line-height:1.7;color:var(--text-2)}
.info-body.rich table th{background:var(--surface-2);font-weight:800;color:var(--text);white-space:nowrap}
.info-body.rich .warn{background:#FFF7E6;border:1px solid #F5C542;border-radius:10px;padding:12px 16px;color:#7A4A00;font-weight:600;line-height:1.9;margin:12px 0;text-align:justify}
.info-body.rich .danger{background:var(--red-bg);border:1px solid var(--red-border);border-radius:10px;padding:12px 16px;color:var(--red-deep);font-weight:700;line-height:1.9;margin:12px 0;text-align:justify}
.info-body.rich .qa{margin:10px 0}
.info-body.rich .qa .q{font-weight:800;color:var(--text);margin-bottom:4px;line-height:1.8}
.info-body.rich .qa .q::before{content:"Q";display:inline-block;width:20px;height:20px;border-radius:6px;background:var(--red-bg);color:var(--red-deep);font-size:12px;text-align:center;line-height:20px;margin-right:8px}
.info-body.rich .qa .a{line-height:2.05;text-align:justify}
.info-body.rich .qa .a::before{content:"A";display:inline-block;width:20px;height:20px;border-radius:6px;background:var(--surface-2);color:var(--text-2);font-size:12px;text-align:center;line-height:20px;margin-right:8px}
.info-body.rich .end{margin-top:28px;padding-top:14px;border-top:1px dashed var(--border);font-size:12.5px;color:var(--text-3);text-align:center}
@media (max-width:1100px){#infoPanel.doc-mode{width:96vw;height:88vh}}

/* ---- 矮视口收缩 ---- */
@media (max-height:830px){
  .trust-box .tc-num{font-size:24px}
  .trust-box{padding:9px 14px}
  .hero-card{margin-top:10px}
  .hero-l{padding:14px 22px 12px 24px}
  .hero-l h1{font-size:20px}
  .hero-r{padding:10px 18px 12px 22px}
  /* 扁封面下简化价格浮层（隐藏"月卡"小字） */
  .tcard-cover .price-f .from{display:none}
  .tcard-cover .price-f b{font-size:20px}
  .tcard-cover .price-f .per{font-size:12px}
  .tcard-cover .badge-src{display:none}
}
  .pv-note .pn-first{font-size:15px}
  .pv-note .pn-rest{max-height:88px}
  .pbz-warn{padding:8px 12px;font-size:13px;margin-bottom:10px}
  .pv-opened{padding:8px 12px;margin-bottom:10px}
  .btn-dlbar{height:40px;font-size:13px}
  .cd-main{padding:12px 14px}
}

/* ============================================================
   V3 购买链路改版（第三段）：卡片大按钮 / 确认页三档大卡 / 收银台·成功页档位信息
   ============================================================ */

/* ---- 首页卡片：单「购买」大按钮 + 大价格浮层（无三档迷你价） ---- */
.tcard-cover .tiers-mini,.tcard-cover .tm{display:none}
.tcard-cover .body{padding:14px 16px 16px;gap:12px}   /* V9 版本A：flex:0 0 auto（见上），剩余高度全部给封面 */
.tcard-cover .tname{font-size:16px}
.tcard-cover .acts{gap:10px}
.tcard-cover .btn-view{
  flex:0 0 40%;display:flex;align-items:center;justify-content:center;gap:6px;height:46px;
  border:1.5px solid var(--primary);border-radius:11px;color:var(--primary);
  font-size:14.5px;font-weight:700;background:#fff;box-shadow:0 2px 0 var(--red-border);
  transition:background .15s;
}
.tcard-cover .btn-view:hover{background:var(--red-bg)}
.tcard-cover .btn-view:active{transform:translateY(2px);box-shadow:none}
.tcard-cover .btn-view svg{width:16px;height:16px}
.tcard-cover .btn-solid{
  height:46px;border-radius:11px;color:#fff;font-size:15px;font-weight:800;letter-spacing:.08em;
  background:var(--grad-red);box-shadow:0 3px 0 var(--red-deep),0 10px 20px -10px rgba(200,16,46,.6);
  transition:transform .1s,box-shadow .1s,filter .15s;
}
.tcard-cover .btn-solid:hover{filter:brightness(1.05)}
.tcard-cover .btn-solid:active{transform:translateY(3px);box-shadow:0 0 0 var(--red-deep)}
.tcard-cover .price-f b{font-size:26px}
.tcard-cover .price-f .from{font-size:12px}
.tcard-cover .price-f .per{font-size:14px}
.tcard-cover .badge-up{font-size:13px;border-radius:8px;padding:3px 10px}
.tcard-cover .badge-src{font-size:11px;border-radius:999px;padding:3px 10px}
.tcard-cover .cover .owned-chip{
  position:absolute;left:10px;bottom:10px;margin-left:0;
  font-size:13px;font-weight:800;gap:6px;padding:4px 12px;
}
.tcard-cover .cover .owned-chip svg{width:13px;height:13px}

/* ---- 订单确认（图三）右栏：三档时长大卡 ---- */
#buyPanel{width:1176px;max-width:96vw}
.cob-grid{grid-template-columns:420px 1fr}
.bform{padding:2px 10px 2px 28px}
.sec-label{font-size:13.5px;font-weight:800}
.pay-opts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pay-opt{border:1.5px solid var(--border);border-radius:12px;padding:14px 16px}
.buy-note{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tier-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.tier-card{
  position:relative;border:1.5px solid var(--border);border-radius:14px;padding:16px 14px;cursor:pointer;
  background:var(--surface);text-align:center;transition:border-color .15s,box-shadow .15s,background .15s;
}
.tier-card:hover{border-color:var(--red-border)}
.tier-card.sel{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset,0 8px 20px -10px rgba(200,16,46,.4);background:var(--red-bg)}
.tier-card .badge{position:absolute;top:-11px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:800;color:#fff;background:var(--grad-red);border-radius:999px;padding:2px 10px;white-space:nowrap;box-shadow:0 2px 6px rgba(200,16,46,.35);z-index:1}
.tier-card .dot{position:absolute;top:10px;right:10px;width:14px;height:14px;border-radius:50%;border:1.5px solid #A1A1AA}
.tier-card.sel .dot{border-color:var(--primary);background:var(--primary);box-shadow:inset 0 0 0 3px #fff}
.tier-card .tn{font-size:16px;font-weight:800}
.tier-card .td{font-size:12px;color:var(--text-3);margin-top:2px}
.tier-card .tp{margin-top:10px;font-size:22px;font-weight:800;font-family:var(--mono)}
.tier-card .tp em{font-style:normal;font-size:13px;margin-right:1px}
.tier-card .save{font-size:12px;font-weight:700;color:var(--success);margin-top:3px}
/* 右栏有效期说明条 */
.exp-note{display:flex;align-items:flex-start;gap:10px;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px 16px;font-size:13px;color:var(--text-2);line-height:1.8}
.exp-note svg{width:16px;height:16px;color:var(--text-3);margin-top:4px;flex-shrink:0}
.exp-note b{color:var(--red-deep)}
/* 左栏（红金摘要）：已选时长大框 + 保障点 + 订单保留 */
.cob-sel{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);border-radius:12px;padding:12px 16px}
.cob-sel .bolt{width:34px;height:34px;border-radius:9px;background:rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cob-sel .bolt svg{width:17px;height:17px}
.cob-sel .k{font-size:11px;font-weight:600;color:rgba(255,255,255,.72)}
.cob-sel .t{font-size:16px;font-weight:800;color:#fff}
.cob-benefits{display:flex;flex-direction:column;gap:8px}
.cob-benefit{display:flex;align-items:flex-start;gap:9px;font-size:12.5px;color:rgba(255,255,255,.92);line-height:1.55}
.cob-benefit svg{width:14px;height:14px;color:#FFD98A;margin-top:2px;flex-shrink:0}
.co-hold{display:flex;align-items:center;justify-content:flex-end;gap:6px;font-size:11.5px;color:rgba(255,255,255,.7);margin-top:-6px}
/* 去支付大按钮（图三） */
.btn-pay{
  height:54px;font-size:16.5px;font-weight:800;border-radius:13px;
  background:var(--grad-red);box-shadow:0 4px 0 var(--red-deep);
  transition:transform .1s,box-shadow .1s,filter .15s;
}
.btn-pay:hover{background:var(--grad-red);filter:brightness(1.05)}
.btn-pay:active{transform:translateY(4px);box-shadow:0 0 0 var(--red-deep)}
.btn-pay:disabled{opacity:.55;transform:none;filter:none;box-shadow:0 4px 0 var(--red-deep);cursor:default}

/* ---- 收银台：所选档位 chip；支付成功：有效期 exp-box ---- */
.cash-chip{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px 14px;font-size:13px;font-weight:600;color:var(--text)}
.cash-chip svg.ic{width:15px;height:15px;color:var(--primary);flex-shrink:0}
.cash-chip b{color:var(--primary)}
.exp-box{margin-top:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px 16px;font-size:13.5px;color:var(--text-2);display:flex;align-items:center;gap:10px}
.exp-box svg.ic{width:17px;height:17px;color:var(--primary);flex-shrink:0}
.exp-box b{color:var(--primary)}
/* 支付成功页操作按钮：不被 flex 压缩换行 */
.bs-btns .btn-solid,.bs-btns .btn-outline{flex:0 0 auto;white-space:nowrap;min-width:132px;height:46px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:11px;font-size:14px}

/* ---- 矮视口（≤830px 高）：购买区与大按钮收缩一档，保一屏不挤 ---- */
@media (max-height:830px){
  .tcard-cover .btn-view,.tcard-cover .btn-solid{height:40px;font-size:13.5px}
  .tcard-cover .btn-view svg{width:14px;height:14px}
  .pv-merged{padding:10px 22px 12px}
  .pv-merged .pbz-tier{min-height:68px;padding:10px 14px}
  .pv-merged .pbz-tier .tp b{font-size:21px}
  .btn-purchase{height:50px}
  .btn-pay{height:50px}
}
@media (max-width:860px){
  .tier-cards{grid-template-columns:repeat(3,1fr)}
  .cob-grid{grid-template-columns:1fr}
}

/* ============================================================
   V8：顶栏用户下拉菜单 + 个人中心浮窗
   ============================================================ */
.topbar-user{position:relative;cursor:pointer}.topbar-user .caret{transition:transform .15s}
.topbar-user.open .caret{transform:rotate(180deg)}
.topbar-user.open{border-color:var(--primary-bright)}
.user-menu{
  position:absolute;right:0;top:calc(100% + 10px);width:280px;z-index:90;
  background:var(--surface);border:1px solid var(--border);border-radius:14px;
  box-shadow:var(--shadow-2);display:none;overflow:hidden;
}
.user-menu.open{display:block}
.um-head{display:flex;align-items:center;gap:12px;padding:16px 18px;background:linear-gradient(120deg,#1B1218,#221017);color:#fff}
.um-head .avatar{width:44px;height:44px;border-radius:50%;background:var(--grad-red);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:900;flex-shrink:0}
.um-head .un{font-size:15px;font-weight:800}
.um-head .up{font-size:12.5px;color:rgba(255,255,255,.7);margin-top:2px;font-family:var(--mono)}
.um-items{padding:8px}
.um-item{display:flex;align-items:center;gap:10px;width:100%;height:44px;padding:0 12px;border-radius:10px;font-size:14px;font-weight:600;color:var(--text);text-align:left}
.um-item:hover{background:var(--surface-2)}
.um-item svg{width:16px;height:16px;color:var(--text-2)}
.um-item.out{color:var(--primary);font-weight:700}
.um-item.out svg{color:var(--primary)}

/* 个人中心浮窗 */
#pcBackdrop{z-index:235}
.pc-panel{width:min(920px,96vw);max-height:90vh}
.pc-body{flex:1;min-height:0;overflow:auto;padding:20px 26px 24px;display:grid;grid-template-columns:330px 1fr;gap:20px}
@media (max-width:860px){.pc-body{grid-template-columns:1fr}}
.pc-left{display:flex;flex-direction:column;gap:14px;min-width:0}
.pc-card{border:1px solid var(--border);border-radius:14px;padding:16px 18px}
.pc-card .t{font-size:14px;font-weight:800;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.pc-card .t svg{width:15px;height:15px;color:var(--primary)}
.pc-me{display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,#1B1218,#221017);border-radius:14px;padding:16px 18px;color:#fff}
.pc-me .avatar{width:52px;height:52px;border-radius:50%;background:var(--grad-red);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:900;flex-shrink:0}
.pc-me .un{font-size:16px;font-weight:800}
.pc-me .up{font-size:12.5px;color:rgba(255,255,255,.72);margin-top:2px;font-family:var(--mono)}
.pc-field{margin-bottom:12px}
.pc-field label{display:block;font-size:12.5px;font-weight:700;color:var(--text-2);margin-bottom:6px}
.pc-field input{width:100%;height:44px;border:1px solid var(--border);border-radius:10px;padding:0 14px;font-size:14px;outline:none}
.pc-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(200,16,46,.10)}
.pc-field input[readonly]{background:var(--surface-2);color:var(--text-3)}
.pc-code-row{display:flex;gap:10px}
.pc-code-row input{flex:1;min-width:0}
.btn-sm{height:42px;padding:0 18px;border-radius:10px;background:var(--grad-red);color:#fff;font-size:13.5px;font-weight:800;box-shadow:0 2px 0 var(--red-deep)}
.btn-sm:hover{filter:brightness(1.05)}
.btn-sm:active{transform:translateY(2px);box-shadow:none}
.btn-sm:disabled{opacity:.55;cursor:default}
.btn-sm.out{background:var(--surface);color:var(--primary);border:1.5px solid var(--primary);box-shadow:none}
.pc-right{display:flex;flex-direction:column;gap:12px;min-width:0}
.pc-right .pc-card{flex:1;min-height:0;display:flex;flex-direction:column}
.pc-own-list{display:flex;flex-direction:column;gap:10px;overflow:auto;flex:1;min-height:0;padding-right:2px}
.own-item{display:flex;align-items:center;gap:12px;border:1px solid var(--border);border-radius:12px;padding:12px 14px;background:var(--surface)}
.own-item .oi{flex:1;min-width:0}
.own-item .on{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.own-item .om{font-size:12px;color:var(--text-3);margin-top:2px}
.own-item .om b{color:var(--red-deep)}
.tier-tag{font-size:11px;font-weight:800;color:var(--red-deep);background:var(--red-bg);border:1px solid var(--red-border);border-radius:999px;padding:2px 9px;margin-right:6px}
.own-item .btn-sm{flex-shrink:0}
.pc-loading{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-3);padding:18px 0}
.pc-loading .mo-spin{width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:moSpin .7s linear infinite}
