:root{
  --navy:#0d2b4e; --navy2:#123a63; --navy3:#1b4d80;
  --orange:#ff7a1a; --orange2:#ff9544;
  --bg:#eef3fb; --card:#ffffff; --line:#e3e9f1;
  --text:#1c2b3a; --sub:#64748b; --green:#16a34a; --red:#dc2626; --gold:#d97706;
  --glass:rgba(255,255,255,.72); --glass-strong:rgba(255,255,255,.86);
  --glass-line:rgba(255,255,255,.6);
  --glass-deep:rgba(244,248,253,.55);
  --shadow:0 8px 28px rgba(30,60,110,.08);
  --shadow-lg:0 16px 48px rgba(30,60,110,.13);
  --blur:16px;
  --bg-grad:radial-gradient(1100px 560px at 88% -12%, rgba(255,122,26,.10), transparent 62%), radial-gradient(900px 520px at -12% 22%, rgba(27,77,128,.13), transparent 56%), radial-gradient(860px 520px at 50% 112%, rgba(27,77,128,.09), transparent 60%);
}
html.dark{
  --navy:#0a1a33; --navy2:#12294d; --navy3:#1f4a80;
  --orange:#ff8a2b; --orange2:#ffa04d;
  --bg:#0b1220; --card:#141c2c; --line:rgba(255,255,255,.12);
  --text:#f0f5fc; --sub:#a8b9d1;
  --green:#3dd479; --red:#f56b6b; --gold:#f0a63a;
  --glass:rgba(23,33,52,.80); --glass-strong:rgba(20,29,46,.92);
  --glass-line:rgba(255,255,255,.12);
  --glass-deep:rgba(32,44,66,.70);
  --shadow:0 8px 28px rgba(0,0,0,.35);
  --shadow-lg:0 16px 48px rgba(0,0,0,.55);
  --blur:16px;
  --bg-grad:radial-gradient(1100px 560px at 88% -12%, rgba(255,138,43,.045), transparent 62%), radial-gradient(900px 520px at -12% 22%, rgba(31,74,128,.11), transparent 56%), radial-gradient(860px 520px at 50% 112%, rgba(31,74,128,.08), transparent 60%);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--text);font-size:15px;line-height:1.6;transition:background .4s,color .3s}
#app{max-width:720px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;background:transparent}
/* 顶栏 */
.header{position:sticky;top:0;z-index:50;background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 10px rgba(13,43,78,.25)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;letter-spacing:.5px}
.brand .logo{background:var(--orange);color:#fff;font-weight:800;padding:3px 8px;border-radius:6px;font-size:15px;letter-spacing:1px}
.header .sub{font-size:12px;opacity:.85}
.header-right{font-size:12px;opacity:.9;text-align:right;line-height:1.4}
/* 底部导航 */
.tabbar{position:sticky;bottom:0;z-index:50;background:#fff;border-top:1px solid var(--line);display:flex;box-shadow:0 -2px 10px rgba(13,43,78,.08)}
.tabbar button{flex:1;border:0;background:none;padding:10px 0 12px;font-size:12px;color:var(--sub);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font-family:inherit}
.tabbar button.active{color:var(--navy2);font-weight:700}
.tabbar .ico{font-size:18px;line-height:1}
main{flex:1;padding:16px 14px 24px}
.card{background:var(--card);border-radius:14px;padding:16px;box-shadow:0 1px 4px rgba(13,43,78,.06);border:1px solid var(--line);margin-bottom:12px}
.card h3{font-size:15px;color:var(--navy2);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.card h3 .bar{width:4px;height:15px;background:var(--orange);border-radius:2px;display:inline-block}
.muted{color:var(--sub);font-size:13px}
.row{display:flex;gap:10px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:10px;padding:12px 18px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;transition:transform .05s,box-shadow .15s,background .15s;background:#e8eef6;color:var(--navy2)}
.btn:active{transform:scale(.97)}
.btn.primary{background:linear-gradient(135deg,var(--orange),var(--orange2));color:#fff;box-shadow:0 4px 14px rgba(255,122,26,.35)}
.btn.navy{background:linear-gradient(135deg,var(--navy2),var(--navy3));color:#fff;box-shadow:0 4px 14px rgba(18,58,99,.3)}
.btn.block{width:100%}
.btn.sm{padding:8px 12px;font-size:13px;border-radius:8px}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--sub)}
.btn.danger{background:#fdeaea;color:var(--red)}
.btn[disabled]{opacity:.5;cursor:not-allowed;box-shadow:none}
/* 首页 */
.hero{background:linear-gradient(135deg,var(--navy),var(--navy3));border-radius:16px;color:#fff;padding:20px 18px;margin-bottom:14px;position:relative;overflow:hidden}
.hero .hi{font-size:20px;font-weight:800;margin-bottom:4px}
.hero .desc{font-size:13px;opacity:.85}
.hero .streak{position:absolute;right:16px;top:16px;text-align:center;background:rgba(255,255,255,.14);border-radius:12px;padding:8px 12px}
.hero .streak b{font-size:24px;color:var(--orange2)}
.hero .streak span{display:block;font-size:11px;opacity:.9}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}
.stat-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 6px;text-align:center}
.stat-box b{display:block;font-size:19px;color:var(--navy2)}
.stat-box span{font-size:11px;color:var(--sub)}
.menu-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.menu-item{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 14px;cursor:pointer;display:flex;align-items:center;gap:12px;transition:box-shadow .15s}
.menu-item:active{box-shadow:inset 0 2px 6px rgba(13,43,78,.08)}
.menu-item .mi-ico{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.menu-item .mi-t{font-weight:700;font-size:14.5px;color:var(--text)}
.menu-item .mi-d{font-size:11.5px;color:var(--sub);margin-top:2px}
.c-orange{background:#fff1e4;color:var(--orange)} .c-navy{background:#e5eef9;color:var(--navy3)} .c-green{background:#e7f7ee;color:var(--green)} .c-red{background:#fdeaea;color:var(--red)} .c-gold{background:#fdf3e0;color:var(--gold)}
/* 练习模式选择 */
.cat-chip{display:inline-flex;align-items:center;gap:5px;padding:8px 13px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:13px;cursor:pointer;margin:0 8px 8px 0;color:var(--text)}
.cat-chip.active{background:var(--navy2);color:#fff;border-color:var(--navy2);font-weight:600}
/* 答题区 */
.q-meta{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:var(--sub);margin-bottom:10px}
.q-progress{height:6px;background:#e3e9f1;border-radius:3px;overflow:hidden;margin-bottom:12px}
.q-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--orange),var(--orange2));transition:width .3s}
.q-cat{background:#e5eef9;color:var(--navy3);padding:2px 9px;border-radius:999px;font-weight:600}
.q-type{background:#f0f3f8;color:var(--sub);padding:2px 9px;border-radius:999px}
.q-title{font-size:16.5px;font-weight:700;line-height:1.55;margin-bottom:14px}
.opt{display:flex;align-items:flex-start;gap:10px;border:1.5px solid var(--line);border-radius:11px;padding:12px 13px;margin-bottom:9px;cursor:pointer;background:#fff;transition:border-color .12s,background .12s;font-size:14.5px}
.opt .mark{width:22px;height:22px;border-radius:50%;border:2px solid #c3cede;display:flex;align-items:center;justify-content:center;font-size:12px;color:transparent;flex-shrink:0;margin-top:1px}
.opt.sel{border-color:var(--navy3);background:#f2f7fd}
.opt.sel .mark{border-color:var(--navy3);background:var(--navy3);color:#fff}
.opt.correct{border-color:var(--green);background:#f0fbf4}
.opt.correct .mark{border-color:var(--green);background:var(--green);color:#fff}
.opt.wrong{border-color:var(--red);background:#fdf1f1}
.opt.wrong .mark{border-color:var(--red);background:var(--red);color:#fff}
.opt.disabled{pointer-events:none}
.fill-input{width:100%;border:1.5px solid var(--line);border-radius:11px;padding:13px;font-size:16px;font-family:inherit;outline:none}
.fill-input:focus{border-color:var(--navy3)}
.fill-input.correct{border-color:var(--green);background:#f0fbf4}
.fill-input.wrong{border-color:var(--red);background:#fdf1f1}
.explain{margin-top:12px;background:#f8fafc;border-left:4px solid var(--orange);border-radius:8px;padding:11px 13px;font-size:13.5px;color:#33455a}
.explain b{color:var(--navy2)}
.feedback-ok{color:var(--green);font-weight:700;font-size:15px;margin-bottom:4px}
.feedback-no{color:var(--red);font-weight:700;font-size:15px;margin-bottom:4px}
.quiz-foot{display:flex;gap:10px;margin-top:16px}
/* 结果页 */
.result-hero{text-align:center;padding:26px 16px}
.result-score{font-size:52px;font-weight:900;color:var(--navy2);line-height:1.1}
.result-score small{font-size:16px;color:var(--sub);font-weight:600}
.grade{display:inline-block;margin-top:8px;padding:4px 16px;border-radius:999px;font-weight:700;font-size:14px;color:#fff;background:var(--navy3)}
.result-items{margin-top:14px}
.r-item{border:1px solid var(--line);border-radius:11px;padding:12px;margin-bottom:9px;background:#fff}
.r-item .r-q{font-size:13.5px;font-weight:600;margin-bottom:6px}
.r-item .r-a{font-size:13px}
.r-item .tag-ok{color:var(--green);font-weight:700}
.r-item .tag-no{color:var(--red);font-weight:700}
/* 统计 */
.stat-bar{height:12px;background:#e8eef6;border-radius:6px;overflow:hidden}
.stat-bar i{display:block;height:100%;border-radius:6px}
.legend{display:flex;gap:8px;font-size:12px;color:var(--sub);margin-bottom:6px}
.dot{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:3px;vertical-align:-1px}
table.mini{width:100%;border-collapse:collapse;font-size:13px}
table.mini th,table.mini td{padding:7px 6px;border-bottom:1px solid var(--line);text-align:left}
table.mini th{color:var(--sub);font-weight:600;font-size:12px;background:#f8fafc}
/* 知识图谱 */
.kv-box{border:1px solid var(--line);border-radius:12px;padding:10px;margin-bottom:12px;background:#fff;overflow-x:auto}
.kv-box .kv-title{font-size:13.5px;font-weight:700;color:var(--navy2);margin-bottom:8px;padding-left:2px}
.kv-note{font-size:11px;color:var(--sub);text-align:right;padding:0 4px 4px}
.kv-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 14px;margin-bottom:10px}
.kv-card h4{font-size:14px;color:var(--navy2);margin-bottom:5px}
.kv-card p{font-size:13px;color:#33455a}
.kv-card .tag-row{margin-top:6px}
/* 题库管理 */
.bank-filter{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.bank-filter button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 11px;font-size:12px;cursor:pointer;color:var(--sub);font-family:inherit}
.bank-filter button.active{background:var(--navy2);color:#fff;border-color:var(--navy2)}
.form label{display:block;font-size:13px;font-weight:600;color:var(--navy2);margin:10px 0 4px}
.form select,.form input,.form textarea{width:100%;border:1.5px solid var(--line);border-radius:9px;padding:10px;font-size:14px;font-family:inherit;background:#fff}
.form textarea{resize:vertical;min-height:60px}
.empty{padding:34px 12px;text-align:center;color:var(--sub);font-size:14px}
.back-link{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--navy3);cursor:pointer;margin-bottom:10px;font-weight:600}
.timer{font-weight:800;color:var(--red);font-size:15px}
.timer.ok{color:var(--green)}
.divider{height:1px;background:var(--line);margin:12px 0}
.pill{display:inline-block;background:#e5eef9;color:var(--navy3);font-size:11.5px;padding:2px 8px;border-radius:999px;margin-right:4px;font-weight:600}
@media (max-width:380px){ .stats-grid{grid-template-columns:repeat(2,1fr)} .menu-grid{grid-template-columns:1fr} }

/* ===== 登录/注册 ===== */
.login-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 20px;min-height:70vh}
.login-card{width:100%;max-width:420px;background:var(--card);border-radius:16px;box-shadow:0 10px 30px rgba(13,43,78,.10);padding:28px 24px}
.login-card .lg-title{font-size:20px;font-weight:800;color:var(--navy);text-align:center}
.login-card .lg-sub{font-size:13px;color:var(--sub);text-align:center;margin:6px 0 20px}
.lg-tabs{display:flex;background:var(--bg);border-radius:10px;padding:4px;margin-bottom:18px}
.lg-tabs button{flex:1;border:0;background:none;padding:9px 0;font-size:14px;font-weight:600;color:var(--sub);border-radius:8px;cursor:pointer;font-family:inherit}
.lg-tabs button.on{background:#fff;color:var(--navy);box-shadow:0 2px 6px rgba(13,43,78,.12)}
.lg-field{margin-bottom:14px}
.lg-field label{display:block;font-size:13px;color:var(--sub);margin-bottom:6px}
.lg-field input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font-size:15px;outline:none;background:#fff;font-family:inherit}
.lg-field input:focus{border-color:var(--navy3)}
.lg-msg{font-size:13px;min-height:20px;margin-bottom:10px}
.lg-msg.ok{color:var(--green)} .lg-msg.err{color:var(--red)}
.lg-hint{font-size:12px;color:var(--sub);text-align:center;margin-top:14px;line-height:1.7}
#authStr{cursor:pointer;font-size:12px;opacity:.95;line-height:1.5}
#authStr b{color:#ffd27a}

/* ===== 资料库 ===== */
.lib-search{position:sticky;top:52px;z-index:40;background:var(--bg);padding:10px 0 6px}
.lib-search input{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:12px;font-size:15px;outline:none;background:#fff;font-family:inherit;box-shadow:0 2px 6px rgba(13,43,78,.05)}
.lib-search input:focus{border-color:var(--navy3)}
.lib-chips{display:flex;gap:8px;overflow-x:auto;padding:10px 0 4px;-webkit-overflow-scrolling:touch}
.lib-chips button{flex-shrink:0;border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;font-size:13px;color:var(--sub);cursor:pointer;font-family:inherit}
.lib-chips button.on{background:var(--navy3);border-color:var(--navy3);color:#fff;font-weight:600}
.lib-count{font-size:12px;color:var(--sub);margin:4px 2px 8px}
.lib-series{margin-top:14px}
.lib-series-title{font-size:15px;font-weight:800;color:var(--navy);display:flex;align-items:center;gap:8px;margin-bottom:8px}
.lib-series-title .cnt{font-size:12px;font-weight:600;color:var(--sub);background:var(--bg);border-radius:999px;padding:2px 8px}
.lib-card{background:var(--card);border-radius:12px;padding:13px 14px;margin-bottom:10px;box-shadow:0 2px 8px rgba(13,43,78,.05);border-left:4px solid var(--orange2)}
.lib-card h4{font-size:15px;font-weight:800;color:var(--navy);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lib-tag{font-size:11px;background:#eef4fb;color:var(--navy3);border-radius:6px;padding:1px 7px;font-weight:600}
.lib-price-tag{font-size:11px;background:#fff3e0;color:var(--gold);border-radius:6px;padding:1px 7px;font-weight:700}
.lib-row{font-size:13px;color:var(--text);margin-top:5px;line-height:1.65}
.lib-row b{color:var(--navy3)}
.lib-empty{color:var(--sub);text-align:center;padding:40px 0}
.lib-empty b{color:var(--navy2);font-size:16px;display:block;margin-bottom:6px}
mark{background:#ffe9a8;color:#7a5b00;border-radius:3px;padding:0 2px}
.lib-tech{background:linear-gradient(135deg,#eef4fb,#fdf3e7);border-radius:12px;padding:13px 14px;margin-bottom:10px;border-left:4px solid var(--navy3)}
.lib-tech h4{font-size:14px;font-weight:800;color:var(--navy);margin-bottom:4px}
.lib-tech p{font-size:13px;color:var(--text);line-height:1.7}
.faq-item{background:#fff;border:1px solid #e8ecf2;border-radius:10px;padding:10px 12px;margin-bottom:8px;cursor:pointer;transition:all .2s}
.faq-item:hover{border-color:#9db8f0}
.faq-q{font-size:14px;font-weight:600;color:#1f2a44;line-height:1.5}
.faq-q:before{content:"Q";display:inline-block;background:#4a7dff;color:#fff;border-radius:4px;font-size:11px;padding:1px 5px;margin-right:6px;vertical-align:2px}
.faq-a{display:none;margin-top:8px;padding-top:8px;border-top:1px dashed #dfe5ef;font-size:13px;color:#555;line-height:1.8;white-space:normal}
.faq-item.open .faq-a{display:block}
.faq-item.open .faq-q:before{content:"A";background:#22a06b}

/* ===== 型号专项 ===== */
.model-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.model-item{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:.15s}
.model-item:active{transform:scale(.97)}
.model-item .m-ico{font-size:20px}
.model-item b{font-size:13.5px;color:var(--navy);font-weight:800;flex:1;line-height:1.3}
.model-item i{font-style:normal;font-size:11px;color:var(--orange2);background:#fff3e0;border-radius:999px;padding:2px 7px;font-weight:700}
.model-item small{display:block;font-size:11px;color:var(--sub);font-weight:400;margin-top:1px}

/* ===== 主推系列 ===== */
.hot-grid{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.hot-item{background:linear-gradient(135deg,#fff,#fdf8f0);border:1px solid #f0e2c8;border-radius:14px;padding:12px 14px;box-shadow:0 2px 8px rgba(13,43,78,.06)}
.hot-info{display:flex;align-items:center;gap:10px;cursor:pointer}
.hot-info .m-ico{font-size:22px}
.hot-info b{font-size:15px;color:var(--navy);font-weight:800}
.hot-info small{display:block;font-size:11.5px;color:var(--sub);margin-top:1px}
.hot-actions{display:flex;gap:8px;margin-top:10px}
.btn-exam{background:linear-gradient(135deg,var(--gold),#e0a63a);color:#fff;box-shadow:0 3px 10px rgba(211,158,51,.3)}
.btn-exam:hover{filter:brightness(1.04)}

/* ===== 个人中心 ===== */
.me-profile{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:10px 0 4px;font-size:12.5px;color:var(--sub)}
.me-pro-tag{display:inline-block;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:600}
.me-pro-tag.ok{background:#e6f7ef;color:#0d8a4d}
.me-pro-tag.tr{background:#fff3e6;color:#d97706}
.me-head{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,var(--navy),var(--navy3));color:#fff;border-radius:16px;padding:18px 16px;margin-bottom:14px;box-shadow:0 6px 18px rgba(18,58,99,.25)}
.me-avatar{width:54px;height:54px;border-radius:50%;background:linear-gradient(135deg,var(--orange),var(--orange2));display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;color:#fff;flex-shrink:0;box-shadow:0 3px 10px rgba(255,122,26,.4)}
.me-info b{font-size:17px;display:block}
.me-info span{font-size:11.5px;opacity:.85}
.score-card{background:linear-gradient(160deg,#fff,#f6f9fd);border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:14px;display:flex;gap:16px;align-items:center;box-shadow:0 3px 12px rgba(13,43,78,.07)}
.score-ring{flex-shrink:0}
.rank-badge{background:linear-gradient(135deg,var(--orange),var(--orange2));color:#fff;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700;margin-left:6px}
.score-num{font-size:20px;font-weight:800;color:var(--navy)}
.score-right{flex:1;min-width:0}
.score-sub{font-size:11px;color:var(--sub);margin:2px 0 8px}
.part-row{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--sub);margin-top:5px}
.part-row .lbl{width:44px;flex-shrink:0}
.part-row .pb{flex:1;height:7px;background:#e8eef6;border-radius:99px;overflow:hidden}
.part-row .pb i{display:block;height:100%;background:linear-gradient(90deg,var(--navy3),var(--navy2));border-radius:99px}
.part-row .vl{width:26px;text-align:right;flex-shrink:0}
.me-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}
.me-stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 4px;text-align:center;box-shadow:0 2px 6px rgba(13,43,78,.05)}
.me-stat b{font-size:17px;color:var(--navy);display:block}
.me-stat span{font-size:10.5px;color:var(--sub)}
.time-big{font-size:15px;font-weight:800;color:var(--navy);margin:8px 0 10px}
.time-dist{display:flex;height:10px;border-radius:99px;overflow:hidden;margin-bottom:8px}
.time-dist i{display:block;height:100%}
.time-sub{font-size:12px;color:var(--sub)}
.btn-out{width:100%;margin-top:14px}

/* ===== 最新价格一览 ===== */
.price-banner{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#fff7ec,#fffdf6);border:1.5px solid #ffd9a0;border-radius:14px;padding:12px 14px;margin:10px 0 6px;cursor:pointer;box-shadow:0 3px 10px rgba(255,122,26,.08)}
.price-banner b{font-size:14.5px;color:#a35c00;display:flex;align-items:center;gap:6px}
.price-banner span{font-size:11.5px;color:#b97f2e}
.price-banner .go{color:var(--orange);font-weight:800;font-size:16px}
.pb-title{background:linear-gradient(135deg,var(--navy),var(--navy3));color:#fff;border-radius:14px;padding:14px 16px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}
.pb-title h3{margin:0;font-size:16px}
.pb-title .sub{font-size:11px;opacity:.85}
.pb-series{margin-bottom:14px}
.pb-series-title{font-size:14px;font-weight:800;color:var(--navy);margin:10px 2px 6px;display:flex;align-items:center;gap:6px}
.pb-series-title .tag{font-size:10px;background:var(--orange2);color:#fff;border-radius:999px;padding:1px 8px;font-weight:700}
.pb-table{width:100%;border-collapse:collapse;font-size:12px;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 8px rgba(13,43,78,.05)}
.pb-table th{background:#f2f6fb;color:var(--navy);font-weight:700;padding:7px 6px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line)}
.pb-table td{padding:6px;border-bottom:1px solid #eef2f8;white-space:nowrap}
.pb-table .num{font-weight:800;color:#c2410c}
.pb-table .num2{font-weight:700;color:var(--navy)}
.pb-table tr.hot td{background:#fff8ef}
.pb-flag{font-size:10px;color:#b97f2e;border:1px solid #f0c98a;border-radius:4px;padding:0 4px;margin-left:4px}
/* ===== 最新价格一览 v2：卡片式 + 折叠展开（PC 双列 / 手机单列） ===== */
.pb-model-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:6px}
@media (min-width:760px){ .pb-model-grid{grid-template-columns:repeat(2,1fr)} }
.pb-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:0 2px 8px rgba(13,43,78,.05);display:flex;flex-direction:column}
.pb-card.hot{border-color:#f0c98a;background:linear-gradient(180deg,#fffdf5,#fff)}
.pb-card-top{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.pb-model-name{font-size:14px;font-weight:800;color:var(--navy)}
.pb-model-spec{font-size:12px;color:var(--sub)}
.pb-price-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-bottom:6px}
@media (min-width:760px){ .pb-price-grid{grid-template-columns:repeat(4,1fr)} }
.pb-price{background:#f6f9fd;border-radius:8px;padding:7px 6px;text-align:center;min-width:0}
.pb-price b{display:block;font-size:14px;font-weight:800;color:#c2410c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb-price b.shop{color:#b45309}
.pb-price b.guok{color:#0f766e}
.pb-price span{display:block;font-size:10px;color:var(--sub);margin-top:2px}
.pb-free{font-size:11px;color:#b97f2e;background:#fff8ef;border:1px solid #f5dfb8;border-radius:6px;padding:2px 8px;margin-left:auto;white-space:nowrap}
.pb-exp-btn{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:8px;width:100%;padding:7px 0;border:1px dashed #d7e0ee;background:#fafcff;color:var(--navy);font-size:12px;font-weight:600;border-radius:8px;cursor:pointer;font-family:inherit}
.pb-exp-btn:hover{background:#f0f6ff}
.pb-exp-body{display:none;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.pb-exp-body.show{display:block}
.pb-gift{font-size:12px;line-height:1.75;color:#4a3b1d;background:#fff8ef;border-radius:8px;padding:8px 10px;white-space:pre-line}
.pb-note{margin-top:6px;font-size:12px;line-height:1.7;color:#6b7a90;background:#f4f7fb;border-radius:8px;padding:8px 10px;white-space:pre-line}
.pb-none{font-size:12px;color:#aab6c6}
/* ===== 直播间排班 ===== */
.sch-roombar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:10px}
.sch-roombar .btn{padding:4px 14px;font-size:13px;border-radius:8px}
.sch-datebar{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#eef3fa;border-radius:12px;padding:8px 12px;margin-top:10px}
.sch-datebar .sch-datepick{position:relative;display:inline-block;cursor:pointer;vertical-align:middle}
.sch-datepick input[type=date]{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;z-index:0}
.sch-datepick b{position:relative;z-index:1;display:inline-block;font-size:14px;color:var(--navy2);padding:4px 10px;background:#fff;border-radius:14px;border:1px dashed #b9cbde;cursor:pointer}
.sch-datebar b{font-size:15px;color:var(--navy2)}
.sch-legend{font-size:12px;color:var(--sub);margin-bottom:6px}
.sch-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-bottom:1px solid var(--line)}
.sch-row:last-child{border-bottom:0}
.sch-row.on{background:#fff8ef}
.sch-time{width:52px;font-weight:700;color:var(--navy2);font-size:12.5px;flex-shrink:0}
.sch-cells{flex:1;display:flex;flex-wrap:wrap;gap:5px;min-height:26px}
.sch-chip{background:var(--navy2);color:#fff;font-size:11.5px;padding:2px 8px;border-radius:12px;white-space:nowrap}
.sch-chip.mine{background:var(--gold)}
.sch-empty{color:#b6c2d4;font-size:12px}
.sch-head{display:flex;align-items:center;gap:8px;padding:4px 6px;font-size:12px;color:var(--sub);background:#eef3fa;border-radius:8px;margin:4px 0 2px}
.sch-head b{flex:1;text-align:center;font-size:12.5px}
.sch-head b:first-of-type{color:var(--navy2)}
.sch-head b:last-of-type{color:#c07d1d}
.sch-head span{width:52px;flex-shrink:0}
.sch-cells.host{flex:1}
.sch-cells.co{flex:1}
.sch-cells.co .sch-chip{background:#e8a13a}
.sch-cells.co .sch-chip.mine{background:var(--gold)}
.sch-stats{background:#fff8ef;border:1px solid #ffe0b8;border-radius:10px;padding:8px 10px;margin-bottom:6px;font-size:12.5px;color:var(--sub);display:flex;flex-wrap:wrap;gap:6px}
.sch-stats b{color:#c07d1d;width:100%;font-size:12.5px}
.sch-stat{background:#fff;border:1px solid #ffe0b8;border-radius:12px;padding:3px 9px;font-weight:600;color:#8a5a0e}
.sch-edit-cur{background:#f7fafd;border:1px solid #e3ebf5;border-radius:10px;padding:8px 10px;margin-bottom:10px}
.sch-edit-cur b{display:block;font-size:12px;color:var(--sub);margin:2px 0 4px}
.sch-edit-cur b:not(:first-child){margin-top:8px}
.sch-edit-cur .sch-chip{margin:2px 3px 2px 0}
.sch-edit-cur .sch-chip.co{background:#e8a13a}
.sch-x{font-style:normal;color:#fff;margin-left:5px;cursor:pointer;font-weight:700;opacity:.9}
.sch-x:hover{opacity:1;color:#ffe08a}
.sch-ops{display:flex;gap:5px;flex-shrink:0}
.sch-row{cursor:default}
.sch-row.gap{cursor:pointer}
.sch-row.gap:hover{background:#f3f8ff}
.sch-row.sel{background:#e8f0ff !important;outline:1px solid #4a7fd8}
.sch-row.sel .sch-time{color:#2e6fd8;font-weight:700}
.sch-multibar{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line);padding:8px 10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;box-shadow:0 -2px 8px rgba(0,0,0,.06);z-index:5}
.sch-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.sch-quick-grid .stu{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;cursor:pointer;background:#fff;font-size:13px}
.sch-quick-grid .stu.on{border-color:#2e6fd8;background:#e8f0ff}
.sch-quick-grid .stu i{width:12px;height:12px;border-radius:50%;flex-shrink:0}
.sch-lenrow{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.sch-lenrow button{border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 14px;font-size:12.5px;cursor:pointer;font-family:inherit}
.sch-lenrow button.on{border-color:#2e6fd8;background:#2e6fd8;color:#fff}
.sch-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.sch-fields label{font-size:12.5px;color:var(--sub);display:flex;flex-direction:column;gap:4px}
.sch-fields input,.sch-fields select{border:1px solid var(--line);border-radius:8px;padding:7px 8px;font-size:13px;font-family:inherit}
.sch-perm-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.sch-perm-row{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#f6f9fd;border-radius:10px;padding:8px 10px}
.sch-perm-row span{font-size:13.5px;font-weight:600;color:var(--navy2)}
/* ===== 排班 v2（调研改进版） ===== */
.sch-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.sch-viewbar{display:inline-flex;gap:4px;margin:0 4px}
.sch-viewbar .btn.on{background:var(--navy2);color:#fff;border-color:var(--navy2)}
.sch-title-ops{display:flex;gap:6px;align-items:center}
.sch-chip{position:relative;transition:transform .12s}
.sch-chip[draggable]{cursor:grab}
.sch-chip[draggable]:active{cursor:grabbing}
.sch-chip.mine::after{content:'\2605';margin-left:4px}
.sch-row.conflict{outline:2px solid #e74c3c;background:#fff5f5}
.sch-row.gap{background:#fff0f0}
.sch-row.gap .sch-empty{color:#d48a8a}
.sch-conflict-tip{color:#e74c3c;font-size:11px;font-weight:700;margin-left:2px}
.sch-summary{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;font-size:12px}
.sch-sum-item{padding:3px 10px;border-radius:12px;font-weight:600}
.sch-sum-ok{background:#eafaf2;color:#1e8449;border:1px solid #bfe8d2}
.sch-sum-warn{background:#fff3e0;color:#b9770e;border:1px solid #ffe0b8}
.sch-sum-bad{background:#fdecea;color:#c0392b;border:1px solid #f5c6c6}
.sch-legend-row{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0;align-items:center}
.sch-legend-chip{font-size:11px;padding:1px 8px;border-radius:10px;cursor:pointer;font-weight:600}
.sch-legend-chip.dim{opacity:.25}
/* 周视图 */
.sch-week-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:10px}
.sch-week{display:grid;grid-template-columns:56px repeat(7,1fr);min-width:820px}
.sch-week .wk-head{font-size:11.5px;text-align:center;padding:6px 2px;background:#eef3fa;font-weight:700;color:var(--navy2);border-bottom:1px solid var(--line)}
.sch-week .wk-head.today{background:var(--gold);color:#fff}
.sch-week .wk-time{font-size:11px;color:var(--navy2);font-weight:600;text-align:right;padding:4px 6px;border-bottom:1px solid var(--line);background:#fafbfd}
.sch-week .wk-cell{min-height:38px;border-bottom:1px solid var(--line);border-left:1px solid #f0f3f8;padding:2px;display:flex;flex-direction:column;gap:2px}
.sch-week .wk-cell.gap{background:#fff0f0}
.sch-week .wk-cell.droppable{outline:2px dashed var(--gold);outline-offset:-2px;background:#fffdf5}
.sch-week .wk-cell .wk-chip{display:inline-block;font-size:10px;padding:1px 5px;border-radius:5px;margin:1px;white-space:nowrap;color:#fff;font-weight:600}
.sch-week .wk-add{font-size:10px;color:#b6c2d4;text-align:center;cursor:pointer;padding:1px 0}
.sch-week .wk-add:hover{color:var(--navy2)}
/* 意愿网格 */
.sch-pref-grid{display:grid;grid-template-columns:56px repeat(7,1fr);min-width:780px;overflow-x:auto}
.sch-pref-cell{height:22px;border:1px solid #f0f3f8;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}
.sch-pref-cell.none{background:#fff}
.sch-pref-cell.P{background:#2ecc71;color:#fff}
.sch-pref-cell.A{background:#f1c40f;color:#fff}
.sch-pref-cell.B{background:#e74c3c;color:#fff}
.sch-pref-legend{display:flex;gap:12px;font-size:12px;color:var(--sub);margin:6px 0}
.sch-pref-legend span{display:inline-flex;align-items:center;gap:4px}
.sch-pref-legend i{width:14px;height:14px;border-radius:4px;display:inline-block}
/* 通知 */
.sch-notice-item{display:flex;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);font-size:12.5px;align-items:flex-start}
.sch-notice-item.unread{background:#fff8ef}
.sch-notice-item .nt{flex:1;color:var(--sub)}
.sch-notice-item .nread{cursor:pointer;color:var(--navy2);font-size:12px;white-space:nowrap;border:1px solid var(--line);border-radius:10px;padding:1px 8px}
.sch-notice-item .nread.done{color:#b6c2d4;cursor:default}
.sch-notice-item .nts{font-size:11px;color:#b6c2d4;white-space:nowrap}
/* 换班列表 */
.sw-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);font-size:12.5px;flex-wrap:wrap}
.sw-status{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:700}
.sw-pending{background:#fff3e0;color:#b9770e}
.sw-confirmed{background:#eafaf2;color:#1e8449}
.sw-done{background:#eef3fa;color:var(--navy2)}
.sw-rejected,.sw-cancelled{background:#fdecea;color:#c0392b}
.chk{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--sub);cursor:pointer}
.chk i{color:var(--gold);font-style:normal;font-size:11px}
.chk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin:8px 0}
.bank-mini{border:1px solid var(--line);background:#fff;border-radius:14px;padding:6px 12px;font-size:12.5px;color:var(--sub);cursor:pointer}
.bank-mini.on{background:var(--navy2);color:#fff;border-color:var(--navy2);font-weight:700}
/* 手机端排班：主播/助播左右两列并排，只留一个编辑按钮 */
@media (max-width:760px){
  .sch-datepick input[type=date]{z-index:1}
  .sch-datepick b{pointer-events:none}
  .sch-row{gap:5px;padding:4px 6px}
  .sch-head{gap:5px;padding:4px 6px}
  .sch-time{width:46px;font-size:12px}
  .sch-head span{width:46px}
  .sch-chip{font-size:11px;padding:2px 7px}
  .sch-cells{gap:4px}
  .sch-ops .btn:nth-of-type(n+2){display:none}
  .sch-toolbar{gap:5px}
  .sch-toolbar .btn{font-size:12.5px;padding:4px 9px}
  .sch-title-ops .btn{font-size:12px;padding:3px 9px}
  .sch-week{grid-template-columns:42px repeat(7,1fr);min-width:0}
  .sch-week .wk-head{font-size:10px;padding:5px 1px}
  .sch-week .wk-time{font-size:10px;padding:4px 3px}
  .sch-week .wk-cell{min-height:34px;padding:1px}
  .sch-week .wk-chip{font-size:9.5px;padding:1px 3px}
  .sch-pref-grid{grid-template-columns:42px repeat(7,1fr);min-width:0}
  .sch-pref-cell{height:20px}
  .sch-viewbar .btn{font-size:12px;padding:3px 10px}
}
@media(min-width:900px){
  .sch-row{padding:9px 12px}
  .sch-time{width:70px;font-size:14px}
  .sch-chip{font-size:13px;padding:4px 11px}
}

/* ===== 价格一览 v3：系列紧凑对比表（手机一屏一个系列 / 电脑全览） ===== */
.pb-tabs{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.pb-tabs::-webkit-scrollbar{display:none}
.pb-tab{flex-shrink:0;padding:6px 12px;font-size:12px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--navy);font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap}
.pb-tab.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.pb-cmp-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.pb-cmp{width:100%;min-width:0;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;font-size:12px;box-shadow:0 2px 8px rgba(13,43,78,.05)}
.pb-cmp td:nth-child(7){word-break:break-word}
.pb-limit{font-size:9px;background:#e11d48;color:#fff;border-radius:4px;padding:0 4px;margin-left:4px;font-weight:700;vertical-align:middle}
.pb-tab.sp{border-color:#e11d48;color:#e11d48}
.pb-cmp .pb-sp{font-size:11px;color:#b45309;font-weight:700;white-space:nowrap;line-height:1.5}
.pb-cmp .pb-sp b{color:#0f766e;font-weight:800}
.pb-cmp tr.sp-row td{background:#fff1f2}
.pb-cmp thead th{background:linear-gradient(180deg,#f4f8fd,#eef4fb);color:var(--navy);font-weight:700;padding:7px 5px;text-align:center;border-bottom:1px solid var(--line);font-size:11px;white-space:nowrap;position:sticky;top:0}
.pb-cmp tbody td{padding:8px 5px;border-bottom:1px solid #eef2f8;text-align:center;vertical-align:middle}
.pb-cmp .pb-m{font-weight:800;color:var(--navy);font-size:12.5px;text-align:left;white-space:nowrap}
.pb-cmp .pb-meta{font-size:10px;color:var(--sub);font-weight:400;margin-top:2px;white-space:nowrap}
.pb-cmp .pb-num{font-weight:700;color:var(--text);white-space:nowrap}
.pb-cmp .pb-c{font-weight:800;color:#b45309}
.pb-cmp .pb-b{font-weight:800;color:#0f766e}
.pb-cmp .pb-gift{font-size:11px;color:#b45309;text-align:left;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.pb-cmp .pb-gift-note{display:none}
.pb-cmp tr.pb-detail{display:none}
.pb-cmp tr.pb-detail.show{display:table-row}
.pb-cmp tr.pb-cmp-r{cursor:pointer;transition:background .12s}
.pb-cmp tr.pb-cmp-r.hot td{background:#fffdf5}
.pb-cmp tr.pb-cmp-r.on td{background:#fff4e2}
.pb-cmp tr.pb-cmp-r:active{background:#f2f6fb}
.pb-cmp tr.pb-detail td{background:#fffdf6;text-align:left;padding:9px 10px;font-size:12px;line-height:1.75;color:#4a3b1d;border-bottom:1px solid #f5e6c8}
.pb-gift-line{color:#b45309;margin-bottom:2px}
.pb-note-line{color:#6b7a90}
.pb-tip{font-size:11px;color:#9aa8ba;margin:6px 2px 0}
@media (min-width:1024px){
  .pb-cmp{min-width:0;font-size:13px}
  .pb-cmp thead th,.pb-cmp tbody td{padding:9px 12px}
  .pb-cmp .pb-gift{display:block;-webkit-line-clamp:unset;overflow:visible;font-size:12px}
  .pb-cmp .pb-gift-note{display:block;margin-top:4px;color:#6b7a90;font-size:11.5px;line-height:1.5}
  .pb-cmp tr.pb-detail{display:none !important}
  .pb-tip{display:none}
  .pb-tabs{flex-wrap:wrap;overflow-x:visible}
  .pb-tab{font-size:13px;padding:7px 16px}
}

/* ================= 统一登录 / 绑定手机号 / 管理面板（v2） ================= */
.lg-tabs{display:flex;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:16px}
.lg-tabs button{flex:1;padding:10px 4px;border:0;background:#fff;color:var(--sub);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}
.lg-tabs button.on{background:var(--navy);color:#fff}
.lg-msg{font-size:13px;min-height:20px;margin-bottom:10px}
.lg-msg.err{color:var(--red)} .lg-msg.ok{color:var(--green)}
.lg-hint{font-size:12px;color:var(--sub);text-align:center;margin-top:14px;line-height:1.7}
.lg-field{margin-bottom:14px}
.lg-field label{display:block;font-size:13px;color:var(--sub);margin-bottom:6px}
.lg-field input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font-size:15px;outline:none;font-family:inherit;box-sizing:border-box}
.lg-field input:focus{border-color:var(--navy3)}
.lg-code-row{display:flex;gap:8px}
.lg-code-row input{flex:1}
.lg-code-row button{flex-shrink:0;white-space:nowrap}
/* 绑定手机号弹窗 */
.bind-mask{position:fixed;inset:0;background:rgba(13,43,78,.45);z-index:99;display:flex;align-items:center;justify-content:center;padding:20px}
.bind-box{width:100%;max-width:380px;background:#fff;border-radius:16px;padding:26px 22px;box-shadow:0 10px 30px rgba(13,43,78,.2)}
.bind-box h3{font-size:17px;color:var(--navy);margin-bottom:6px}
.bind-box p{font-size:13px;color:var(--sub);margin-bottom:14px;line-height:1.7}
/* 管理面板 */
.adm-wrap{max-width:960px;margin:0 auto;padding:0 14px 30px}
.adm-header{position:sticky;top:0;z-index:40;background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;padding:12px 16px;border-radius:0 0 14px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.adm-header .adm-title{font-weight:700;font-size:16px}
.adm-header .adm-user{font-size:12px;color:#ffd27a}
.adm-nav{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}
.adm-nav button{border:0;border-radius:999px;padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer;background:#fff;color:var(--navy);font-family:inherit;border:1px solid var(--line)}
.adm-nav button.on{background:var(--orange);color:#fff;border-color:var(--orange)}
.adm-card{background:var(--card);border-radius:14px;box-shadow:0 2px 10px rgba(13,43,78,.06);padding:16px;margin-bottom:12px}
.adm-card h3{font-size:15px;color:var(--navy);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.adm-card h3 .bar{display:inline-block;width:4px;height:16px;background:var(--orange);border-radius:2px}
.adm-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:12px}
.adm-stat{background:var(--card);border-radius:12px;padding:12px;text-align:center;box-shadow:0 2px 8px rgba(13,43,78,.05)}
.adm-stat b{display:block;font-size:20px;color:var(--navy)}
.adm-stat span{font-size:12px;color:var(--sub)}
.adm-table{width:100%;border-collapse:collapse;font-size:13px}
.adm-table th,.adm-table td{padding:8px 6px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
.adm-table th{color:var(--sub);font-weight:600;font-size:12px}
.adm-table tr.user-row{cursor:pointer}
.adm-table tr.user-row:hover td{background:#f7fafd}
.adm-acc-good{color:var(--green);font-weight:600}
.adm-acc-mid{color:var(--gold);font-weight:600}
.adm-acc-low{color:var(--red);font-weight:600}
.adm-chip{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;margin:1px}
.adm-chip.role-super{background:#fff1e8;color:#c2410c}
.adm-chip.role-admin{background:#e8f0fb;color:var(--navy3)}
.adm-chip.role-teacher{background:#eef7ec;color:#2e7d32}
.adm-chip.role-student{background:var(--bg);color:var(--sub)}
.adm-chip.unbind{background:#fdeeee;color:#a03030}
.adm-minibox{flex:1;min-width:70px;background:#f4f7fb;border:1px solid #e3e9f1;border-radius:10px;padding:8px 6px;text-align:center}
.adm-minibox b{font-size:15px;color:#1c3f6e;display:block}
.adm-minibox span{font-size:10.5px;color:#6b7a90}
.score-grid{display:flex;flex-wrap:wrap;gap:8px}
.usage-grid{display:flex;gap:10px}
.score-grid .adm-minibox,.usage-grid .adm-minibox{min-width:0}
.adm-bar-row{display:flex;align-items:center;gap:10px;margin:7px 0}
.adm-bar-label{width:110px;font-size:13px;color:var(--sub);flex-shrink:0}
.adm-bar-track{flex:1;height:14px;background:var(--bg);border-radius:7px;overflow:hidden}
.adm-bar-fill{height:100%;background:linear-gradient(90deg,var(--navy3),var(--orange));border-radius:7px}
.adm-bar-val{width:120px;font-size:12.5px;color:var(--sub);flex-shrink:0;text-align:right}
.adm-back{display:inline-block;color:var(--navy3);font-size:14px;margin:12px 2px;cursor:pointer}
.adm-back:hover{text-decoration:underline}
.adm-empty{color:var(--sub);text-align:center;padding:24px 0}
.adm-sync-box{border:1.5px dashed #c7d4e5;border-radius:12px;padding:14px;background:#fafcff}
.adm-sync-box textarea{width:100%;min-height:200px;border:1px solid #dde6f0;border-radius:10px;padding:10px;font-size:12.5px;font-family:Menlo,Consolas,monospace;resize:vertical;box-sizing:border-box;line-height:1.7}
.adm-sync-tip{font-size:12.5px;color:#6b7a90;background:#f0f5fb;border-left:3px solid #2e6fd8;padding:8px 12px;border-radius:6px;margin-bottom:10px;line-height:1.7}
.adm-sync-ok{background:#e8f7ee;border:1px solid #bfe8cf;border-radius:10px;padding:12px;font-size:13px;color:#1c6b3a;margin-top:10px}
.adm-sync-err{background:#fdeeee;border:1px solid #f5c2c2;border-radius:10px;padding:12px;font-size:13px;color:#a03030;margin-top:10px}
.adm-sync-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.adm-sync-tags span{background:#eef4fb;border:1px solid #dbe6f2;border-radius:999px;padding:2px 10px;font-size:11.5px;color:#33557e}
.adm-actions{display:flex;gap:8px;flex-wrap:wrap}
.adm-actions .btn{padding:6px 12px;font-size:12.5px}
.adm-search input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;outline:none;font-family:inherit;box-sizing:border-box}
.adm-rec-list{max-height:400px;overflow:auto}
.adm-tag{font-size:11px;color:var(--sub);background:var(--bg);border-radius:999px;padding:1px 8px;display:inline-block;margin-left:6px}

/* ================= 电脑端适配（≥1024px 宽屏：加宽容器 + 更多列；手机端不受影响） ================= */
@media (min-width:1024px){
  #app{max-width:1400px;box-shadow:0 0 40px rgba(13,43,78,.05)}
  body{background:linear-gradient(180deg,#e9eff8 0px,#f2f5f9 260px)}
  main{padding:22px 28px 36px}
  .header{padding:16px 28px}
  .stats-grid{grid-template-columns:repeat(4,1fr);gap:12px}
  .menu-grid{grid-template-columns:repeat(4,1fr);gap:12px}
  .model-grid{grid-template-columns:repeat(3,1fr);gap:12px}
  .pb-model-grid{grid-template-columns:repeat(3,1fr);gap:12px}
  .pb-price-grid{grid-template-columns:repeat(4,1fr);gap:8px}
  .adm-wrap{max-width:1400px}
  .adm-table th,.adm-table td{padding:9px 12px}
  .card{padding:18px}
  .tabbar button{padding:12px 0 14px;font-size:13px}
  .btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(13,43,78,.14)}
  .menu-item:hover{box-shadow:0 4px 16px rgba(13,43,78,.10);border-color:#c9d8ea;cursor:pointer}
  .stat-box:hover{box-shadow:0 3px 12px rgba(13,43,78,.08)}
  .pb-card:hover{box-shadow:0 4px 16px rgba(13,43,78,.09)}
  .pb-exp-btn:hover{border-color:var(--navy3);color:var(--navy3)}
  .tabbar .ico{font-size:20px}
}
@media (min-width:1600px){
  .pb-model-grid{grid-template-columns:repeat(4,1fr)}
  .model-grid{grid-template-columns:repeat(4,1fr)}
}
/* ===== 学生详情页手机端紧凑布局（放在最后，确保覆盖基础样式） ===== */
@media (max-width:760px){
  .score-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
  .usage-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .usage-grid .adm-minibox{padding:7px 3px}
  .adm-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
  .adm-actions .btn{width:100%;text-align:center;padding:9px 4px;margin:0;white-space:normal}
}
/* ============ 主题系统 v3：磨砂玻璃 + 日夜切换（覆盖式追加，类名不变） ============ */

/* 页面转场动画 */
.view-enter{animation:viewIn .3s cubic-bezier(.2,.8,.3,1)}
@keyframes viewIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ---- 毛玻璃核心组件（日间夜间通用） ---- */
.card{background:var(--glass);backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur));border:1px solid var(--glass-line);box-shadow:var(--shadow);transition:background .35s,border-color .35s,box-shadow .35s}
.tabbar{background:var(--glass-strong);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-top:1px solid var(--glass-line);box-shadow:0 -6px 24px rgba(30,60,110,.07);transition:background .35s}
.header{background:linear-gradient(135deg,rgba(13,43,78,.88),rgba(18,58,99,.86));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:background .35s}
.stat-box,.menu-item,.kv-box,.kv-card,.r-item,.me-stat,.model-item,.faq-item,.lib-card,.pb-card,.adm-card,.adm-stat,.score-card,.hot-item{background:var(--glass);backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur));border-color:var(--glass-line);box-shadow:var(--shadow);transition:background .35s,border-color .35s,box-shadow .35s,transform .18s}
.login-card,.bind-box{background:var(--glass-strong);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border:1px solid var(--glass-line);box-shadow:var(--shadow-lg)}
.btn{background:var(--glass-deep);border:1px solid var(--glass-line);box-shadow:0 2px 8px rgba(30,60,110,.06);transition:transform .1s,box-shadow .2s,background .2s}
.btn.primary{background:linear-gradient(135deg,var(--orange),var(--orange2));border-color:transparent}
.btn.navy{background:linear-gradient(135deg,var(--navy2),var(--navy3));border-color:transparent}
.btn.ghost{background:transparent}
.btn.danger{background:rgba(252,165,165,.18);border-color:transparent}
.btn:hover{box-shadow:0 6px 20px rgba(30,60,110,.16)}
.btn:active{transform:scale(.96)}
.menu-item:active{transform:scale(.975)}
.opt,.fill-input,.lg-field input,.lib-search input,.form select,.form input,.form textarea,.adm-search input,.sch-fields input,.sch-fields select{background:var(--glass-deep);border-color:var(--line)}
.sch-datebar,.sch-head,.lib-chips button,.bank-filter button,.cat-chip{background:var(--glass-deep);border-color:var(--line)}
.sch-chip,.sw-status,.adm-chip,.me-pro-tag,.lib-tag,.pill,.q-cat,.q-type{box-shadow:0 2px 6px rgba(0,0,0,.08)}
.pb-exp-btn{background:var(--glass-deep);border-color:var(--line)}

/* 深色模式：组件底色统一换深色半透明 */
html.dark body{background-image:var(--bg-grad)}
html.dark .header{background:linear-gradient(135deg,rgba(10,26,51,.88),rgba(18,41,77,.86))}
html.dark .btn{background:rgba(255,255,255,.10);border-color:var(--glass-line);color:#e8eef6}
html.dark .btn.ghost{background:transparent;color:var(--sub)}
html.dark .btn.danger{background:rgba(242,85,85,.16);color:#f59a9a}
html.dark .btn-exam{background:linear-gradient(135deg,#b8860b,#d99a2b);color:#fff}
html.dark .btn[disabled]{opacity:.4}
html.dark .card h3,html.dark .card h4,html.dark .me-info b,html.dark .score-num,html.dark .time-big{color:var(--text)}
html.dark .stat-box b,html.dark .me-stat b,html.dark .model-item b,html.dark .pb-model-name,html.dark .pb-m,html.dark .mi-t{color:var(--text)}
html.dark .muted,html.dark .sub,html.dark .lib-count{color:var(--sub)}
html.dark .opt{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);color:var(--text)}
html.dark .opt.sel{background:rgba(30,74,128,.35);border-color:var(--navy3)}
html.dark .opt.correct{background:rgba(53,196,111,.16);border-color:var(--green)}
html.dark .opt.wrong{background:rgba(242,85,85,.16);border-color:var(--red)}
html.dark .opt .mark{border-color:rgba(255,255,255,.35)}
html.dark .fill-input{background:rgba(255,255,255,.07);color:var(--text)}
html.dark .explain{background:rgba(255,255,255,.05);color:#c3cfdf}
html.dark .explain b{color:#9ec5f0}
html.dark .q-progress{background:rgba(255,255,255,.10)}
html.dark .q-cat{background:rgba(31,74,128,.4);color:#a8cdf2}
html.dark .q-type{background:rgba(255,255,255,.08);color:var(--sub)}
html.dark .stat-bar{background:rgba(255,255,255,.10)}
html.dark table.mini th,html.dark .adm-table th{background:rgba(255,255,255,.06);color:var(--sub)}
html.dark table.mini td,html.dark .adm-table td{border-color:rgba(255,255,255,.08)}
html.dark .kv-note,html.dark .kv-card p{color:#b9c7da}
html.dark .kv-card h4{color:#9ec5f0}
html.dark .bank-filter button,html.dark .cat-chip,html.dark .lib-chips button{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.12);color:var(--sub)}
html.dark .cat-chip.active{background:var(--navy3);color:#fff}
html.dark .form select,html.dark .form input,html.dark .form textarea{background:rgba(255,255,255,.07);color:var(--text);border-color:rgba(255,255,255,.12)}
html.dark .form label{color:#bcd3ef}
html.dark .lg-tabs{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.12)}
html.dark .lg-tabs button{background:transparent;color:var(--sub)}
html.dark .lg-tabs button.on{background:var(--navy3);color:#fff}
html.dark .lib-search input,.lg-field input,.adm-search input,.sch-fields input,.sch-fields select{background:rgba(255,255,255,.07);color:var(--text);border-color:rgba(255,255,255,.12)}
html.dark .lib-card h4,html.dark .lib-series-title,html.dark .pb-series-title,html.dark .pb-tab{color:#d5e6ff}
html.dark .lib-tag{background:rgba(31,74,128,.4);color:#a8cdf2}
html.dark .lib-price-tag{background:rgba(240,166,58,.18);color:#f0b95a}
html.dark .lib-tech{background:linear-gradient(135deg,rgba(31,74,128,.25),rgba(240,166,58,.12));border-left-color:var(--navy3)}
html.dark .faq-item{border-color:rgba(255,255,255,.10)}
html.dark .faq-q{color:var(--text)}
html.dark mark{background:#6b4d00;color:#ffd970}
html.dark .model-item i{background:rgba(240,166,58,.16);color:#f0b95a}
html.dark .hot-item{background:linear-gradient(135deg,rgba(255,255,255,.06),rgba(240,166,58,.10));border-color:rgba(240,166,58,.25)}
html.dark .me-head{background:linear-gradient(135deg,rgba(10,26,51,.9),rgba(31,74,128,.85))}
html.dark .me-avatar{background:linear-gradient(135deg,var(--orange),var(--orange2))}
html.dark .score-ring circle{stroke:#1f4a80}
html.dark .part-row .pb{background:rgba(255,255,255,.10)}
html.dark .time-dist{background:rgba(255,255,255,.08)}
html.dark .price-banner{background:linear-gradient(135deg,rgba(240,166,58,.14),rgba(240,166,58,.06));border-color:rgba(240,166,58,.35)}
html.dark .price-banner b{color:#ffce7a}
html.dark .price-banner span{color:#c9a86a}
html.dark .pb-title{background:linear-gradient(135deg,rgba(10,26,51,.9),rgba(31,74,128,.88))}
html.dark .pb-card.hot{background:linear-gradient(180deg,rgba(240,166,58,.10),rgba(255,255,255,.05))}
html.dark .pb-price{background:rgba(255,255,255,.06)}
html.dark .pb-price b{color:#ff9d5c}
html.dark .pb-price b.shop{color:#f0b95a}
html.dark .pb-price b.guok{color:#5eead4}
html.dark .pb-free,.pb-gift{background:rgba(240,166,58,.12);border-color:rgba(240,166,58,.3)}
html.dark .pb-gift{color:#ffce9e;background:rgba(240,166,58,.10)}
html.dark .pb-note{color:#b9c7da;background:rgba(255,255,255,.05)}
html.dark .pb-table,.pb-cmp{background:rgba(255,255,255,.04)}
html.dark .pb-table th{background:rgba(255,255,255,.07);color:#d5e6ff}
html.dark .pb-table td{border-color:rgba(255,255,255,.07)}
html.dark .pb-table tr.hot td,html.dark .pb-cmp tr.pb-cmp-r.hot td{background:rgba(240,166,58,.08)}
html.dark .pb-cmp thead th{background:linear-gradient(180deg,rgba(31,74,128,.3),rgba(31,74,128,.18));color:#d5e6ff}
html.dark .pb-cmp tbody td{border-color:rgba(255,255,255,.06)}
html.dark .pb-cmp .pb-num{color:#c9d6e8}
html.dark .pb-cmp tr.pb-cmp-r.on td{background:rgba(240,166,58,.14)}
html.dark .pb-cmp tr.pb-detail td{background:rgba(240,166,58,.08);color:#ffce9e;border-color:rgba(240,166,58,.2)}
html.dark .pb-cmp tr.sp-row td{background:rgba(225,29,72,.12)}
html.dark .pb-cmp .pb-gift{color:#ffce9e}
html.dark .sch-datebar,html.dark .sch-head{background:rgba(255,255,255,.07)}
html.dark .sch-datepick b{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#cfe2ff}
html.dark .sch-row{border-color:rgba(255,255,255,.07)}
html.dark .sch-row.on{background:rgba(240,166,58,.10)}
html.dark .sch-row.gap{background:rgba(242,85,85,.10)}
html.dark .sch-stats{background:rgba(240,166,58,.10);border-color:rgba(240,166,58,.25)}
html.dark .sch-stat{background:rgba(255,255,255,.08);border-color:rgba(240,166,58,.25);color:#ffce9e}
html.dark .sch-edit-cur{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.10)}
html.dark .sch-multibar{background:var(--glass-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top-color:rgba(255,255,255,.08)}
html.dark .sch-quick-grid .stu{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);color:var(--text)}
html.dark .sch-quick-grid .stu.on{border-color:#4a7fd8;background:rgba(74,127,216,.2)}
html.dark .sch-lenrow button{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14);color:var(--text)}
html.dark .sch-lenrow button.on{background:#2e6fd8;border-color:#2e6fd8;color:#fff}
html.dark .sch-perm-row{background:rgba(255,255,255,.06)}
html.dark .sch-week-wrap{border-color:rgba(255,255,255,.10)}
html.dark .sch-week .wk-head{background:rgba(255,255,255,.07);color:#cfe2ff;border-color:rgba(255,255,255,.08)}
html.dark .sch-week .wk-head.today{background:var(--gold);color:#222}
html.dark .sch-week .wk-time{background:rgba(255,255,255,.04);color:#cfe2ff}
html.dark .sch-week .wk-cell{border-color:rgba(255,255,255,.07)}
html.dark .sch-week .wk-cell.gap{background:rgba(242,85,85,.10)}
html.dark .sch-week .wk-cell.droppable{background:rgba(240,166,58,.12)}
html.dark .sch-pref-cell{border-color:rgba(255,255,255,.08)}
html.dark .sch-notice-item{border-color:rgba(255,255,255,.07)}
html.dark .sch-notice-item.unread{background:rgba(240,166,58,.10)}
html.dark .sw-row{border-color:rgba(255,255,255,.07)}
html.dark .chk{color:var(--sub)}
html.dark .bank-mini{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.12);color:var(--sub)}
html.dark .bank-mini.on{background:var(--navy3);color:#fff}
html.dark .adm-nav button{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.14);color:#d5e6ff}
html.dark .adm-nav button.on{background:var(--orange);color:#fff;border-color:var(--orange)}
html.dark .adm-minibox{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.10)}
html.dark .adm-minibox b{color:#cfe2ff}
html.dark .adm-minibox span{color:var(--sub)}
html.dark .adm-bar-track{background:rgba(255,255,255,.08)}
html.dark .adm-sync-box{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.16)}
html.dark .adm-sync-box textarea{background:rgba(255,255,255,.06);color:var(--text);border-color:rgba(255,255,255,.12)}
html.dark .adm-sync-tip{background:rgba(255,255,255,.05);color:#b9c7da}
html.dark .adm-chip.role-student{background:rgba(255,255,255,.08);color:var(--sub)}
html.dark .adm-chip.role-admin{background:rgba(31,74,128,.4);color:#a8cdf2}
html.dark .adm-chip.role-super{background:rgba(255,138,43,.18);color:#ffb273}
html.dark .adm-chip.role-teacher{background:rgba(53,196,111,.16);color:#7fdc9f}
html.dark .adm-chip.unbind{background:rgba(242,85,85,.16);color:#f59a9a}
html.dark .r-item .r-a{color:#b9c7da}
html.dark .result-score{color:#9ec5f0}
html.dark .back-link{color:#9ec5f0}
html.dark .pb-tab{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14)}
html.dark .pb-tab.on{background:var(--navy3);color:#fff;border-color:var(--navy3)}
html.dark .pb-exp-btn{background:rgba(255,255,255,.05);color:#cfe2ff}
html.dark .pb-flag{color:#e0b070;border-color:rgba(240,166,58,.4)}
html.dark .pb-none{color:#6c7c94}
html.dark .price-banner .go{color:#ff9d5c}
html.dark .divider{background:rgba(255,255,255,.08)}
html.dark .timer{color:#ff8a8a}
html.dark .feedback-ok{color:#5eead4}
html.dark .feedback-no{color:#ff8a8a}
html.dark .sch-conflict-tip{color:#ff8a8a}
html.dark .sch-sum-ok{background:rgba(53,196,111,.14);color:#7fdc9f;border-color:rgba(53,196,111,.3)}
html.dark .sch-sum-warn{background:rgba(240,166,58,.14);color:#f0b95a;border-color:rgba(240,166,58,.3)}
html.dark .sch-sum-bad{background:rgba(242,85,85,.14);color:#ff8a8a;border-color:rgba(242,85,85,.3)}
html.dark .sw-pending{background:rgba(240,166,58,.16);color:#f0b95a}
html.dark .sw-confirmed{background:rgba(53,196,111,.16);color:#7fdc9f}
html.dark .sw-done{background:rgba(255,255,255,.08);color:#cfe2ff}
html.dark .sw-rejected,.sw-cancelled{background:rgba(242,85,85,.16);color:#ff8a8a}
html.dark .adm-sync-ok{background:rgba(53,196,111,.14);border-color:rgba(53,196,111,.3);color:#7fdc9f}
html.dark .adm-sync-err{background:rgba(242,85,85,.14);border-color:rgba(242,85,85,.3);color:#ff8a8a}
html.dark .lg-hint{color:var(--sub)}
html.dark .lg-msg{color:var(--sub)}
html.dark #authStr{color:var(--sub)}

/* 深色模式滚动条与日期控件 */
html.dark ::-webkit-scrollbar{width:8px;height:8px}
html.dark ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:8px}
html.dark ::-webkit-scrollbar-track{background:transparent}
html.dark input[type=date]{color-scheme:dark}

/* 深色下 emoji 图标微调透明感 */
html.dark .mi-ico{box-shadow:0 2px 10px rgba(0,0,0,.2)}

/* 电脑端宽屏微调（适配新主题） */
@media (min-width:1024px){
  body{background-image:var(--bg-grad)}
  .card,.adm-card{padding:20px}
  .btn:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(30,60,110,.18)}
  html.dark .btn:hover{box-shadow:0 8px 24px rgba(0,0,0,.45)}
  .menu-item:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(30,60,110,.12)}
  html.dark .menu-item:hover{box-shadow:0 8px 24px rgba(0,0,0,.4)}
}

/* ---- 深色模式对比度加强（兜底） ---- */
html.dark .card,html.dark .adm-card,html.dark .pb-card,html.dark .stat-box,html.dark .me-stat,html.dark .model-item,html.dark .faq-item,html.dark .lib-card,html.dark .kv-card,html.dark .score-card,html.dark .hot-item,html.dark .r-item,html.dark .login-card,html.dark .bind-box{color:var(--text)}
html.dark .card h3,html.dark .card h4,html.dark .stat-box b,html.dark .me-stat b,html.dark .model-item b,html.dark .pb-model-name,html.dark .mi-t,html.dark .pb-m{color:var(--text);font-weight:600}
html.dark .pb-price b{color:#ffa75e;font-weight:700}
html.dark .pb-price b.shop{color:#ffc970;font-weight:700}
html.dark .pb-price b.guok{color:#6ff0dd;font-weight:700}
html.dark .pb-table td,html.dark .pb-cmp td,html.dark .tbl td,html.dark .adm-table td{color:#d7e3f2}
html.dark .pb-table th,html.dark .pb-cmp th,html.dark .tbl th,html.dark .adm-table th{color:#f0f5fc}
html.dark .opt{color:var(--text)}
html.dark .sch-chip b{color:var(--text)}
html.dark .faq-q b,html.dark .faq-a b,html.dark .lib-card b,html.dark .kv-card b{color:#bcd7ff}
html.dark .lg-title,.bind-title{color:var(--text)}
html.dark .me-name{color:var(--text)}
html.dark .pg-sub{color:var(--sub)}
html.dark .pb-note{color:#c3d0e3}
html.dark .bar-title{color:#d7e3f2}
html.dark .adm-role-line,html.dark .adm-info-line{color:#c3d0e3}
html.dark .dy-goods{color:#d7e3f2}
html.dark .sch-quick-grid .stu b{color:var(--text)}
html.dark .sch-week .wk-name{color:#d7e3f2}

/* 价格变动横幅 */
.pb-chg{background:linear-gradient(135deg,rgba(255,122,26,.10),rgba(240,166,58,.06));border:1px solid rgba(240,166,58,.35);border-radius:12px;padding:10px 14px;margin:8px 0 10px;font-size:13px;color:#8a5a10;line-height:1.7}
html.dark .pb-chg{background:linear-gradient(135deg,rgba(240,166,58,.12),rgba(240,166,58,.05));border-color:rgba(240,166,58,.4);color:#ffce9e}
.pb-chg b{color:#d97706}
html.dark .pb-chg b{color:#ffb273}

/* 周排行榜 */
.rank-row{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--line)}
.rank-row.on{background:rgba(240,166,58,.10);border-radius:8px;padding:9px 8px;margin:0 -4px}
.rank-no{width:30px;text-align:center;font-size:15px;font-weight:700;color:var(--sub)}
.rank-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-acc{width:64px;text-align:right;color:var(--sub);font-size:13px}
.rank-num{width:56px;text-align:right;color:var(--navy3);font-size:14px}
html.dark .rank-num{color:#8fc3ff}
.rank-my{margin-top:12px;padding:10px 12px;background:var(--glass-deep);border:1px solid var(--line);border-radius:10px;font-size:13px}
.rank-my b{color:var(--orange)}

/* ---- 跟单 v6 大间距改版 ---- */
.follow-form{border:1px solid var(--line);background:var(--glass);border-radius:18px;padding:20px 18px;margin-bottom:16px;box-shadow:0 2px 12px rgba(0,0,0,.03)}
.ff-grid{display:grid;grid-template-columns:1fr;gap:16px 18px}
.follow-form .frow{display:flex;flex-direction:column;gap:7px}
.follow-form .frow label{font-size:14px;color:var(--sub);font-weight:600;padding-left:2px;display:flex;align-items:center;gap:5px}
.follow-form .frow label::after{content:'';flex:1;height:1px;background:var(--line);opacity:.5}
.follow-form .frow input,.follow-form .frow select{width:100%;box-sizing:border-box;padding:13px 15px;border:1px solid var(--line);border-radius:13px;background:var(--bg);color:var(--text);font-size:15.5px;line-height:1.4;transition:border-color .15s,box-shadow .15s}
.follow-form .frow input:focus,.follow-form .frow select:focus{outline:none;border-color:var(--navy3);box-shadow:0 0 0 3px rgba(37,99,235,.10)}
.follow-form .frow select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--sub) 50%),linear-gradient(135deg,var(--sub) 50%,transparent 50%);background-position:calc(100% - 19px) 50%,calc(100% - 14px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
.follow-cards{display:block}
.follow-card{border:1px solid var(--line);background:var(--glass);border-radius:16px;padding:16px;margin-bottom:12px;box-shadow:0 1px 6px rgba(0,0,0,.02)}
.follow-card .fgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px 16px;font-size:14px;line-height:1.5}
.follow-card .fgrid div{overflow-wrap:break-word}
.follow-form-btns{display:flex;gap:10px;margin-top:18px}
.follow-form-btns .btn{flex:1;padding:12px 0;font-size:15.5px;border-radius:12px}
.follow-table-wrap{display:none}
.follow-list-pad{padding-top:2px}
@media (min-width:760px){
  .ff-grid{grid-template-columns:repeat(2,1fr);gap:18px 22px}
  .follow-cards{display:none}
  .follow-table-wrap{display:block;overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--glass)}
  .follow-table{width:100%;border-collapse:collapse;font-size:13.5px}
  .follow-table th{text-align:left;padding:10px 12px;background:var(--glass-deep);color:var(--sub);font-size:13px;border-bottom:1px solid var(--line);white-space:nowrap}
  .follow-table td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
  .follow-table tr:hover td{background:var(--glass-deep)}
}

/* ---- 上播打卡 ---- */
.punch-today{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--glass-deep);border:1px solid var(--line);border-radius:14px;padding:14px}
.punch-today.live{border-color:rgba(46,158,91,.45);background:linear-gradient(135deg,rgba(46,158,91,.10),rgba(46,158,91,.02))}
.punch-dot{width:12px;height:12px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(46,158,91,.15);flex-shrink:0}
.punch-dot.idle{background:#b6c2d4;box-shadow:none}
.punch-now{font-size:16px;font-weight:700}
.punch-sub{font-size:12.5px;color:var(--sub);margin-top:3px}
.punch-rooms{display:flex;gap:6px;margin-left:auto}
.punch-mini{margin-top:10px;font-size:13px;color:var(--sub)}
.punch-mini b{color:var(--text)}
.punch-month{display:inline-flex;align-items:center;gap:8px;font-size:14px}
.punch-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}
.punch-stat{background:var(--glass-deep);border:1px solid var(--line);border-radius:13px;padding:14px 10px;text-align:center}
.punch-stat b{display:block;font-size:19px;color:var(--navy3)}
.punch-stat span{font-size:12px;color:var(--sub)}
.punch-detail td{background:var(--glass-deep)}

/* ===== 网页内弹窗（替代原生 alert/confirm/prompt） ===== */
.tclq-mask{position:absolute;inset:0;background:rgba(10,20,35,.45);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.tclq-modal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(92vw,420px);background:#ffffff;border:1px solid rgba(80,110,160,.22);border-radius:18px;box-shadow:0 18px 60px rgba(15,35,70,.3);padding:22px 20px;box-sizing:border-box;max-height:80vh;overflow:auto}
.tclq-msg{font-size:15px;line-height:1.65;color:#1b2c4a;white-space:pre-line;word-break:break-word}
.tclq-input{background:#fff;border:1px solid #d4dde9;color:#1b2c4a}
