:root{--bg:#f4f6fb;--card:#fff;--ink:#1e2433;--ink2:#5b6478;--line:#e5e9f2;--pri:#4361ee;--pri-d:#3450c9;--add:#16a34a;--add-bg:#e7f8ee;--neg:#e95486;--neg-bg:#fdeef3;--warn:#f59e0b;--r:12px;--shadow:0 2px 10px rgba(30,40,70,.06)}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{background:var(--bg);color:var(--ink);font-family:-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;font-size:15px}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select{font-family:inherit;font-size:15px}
.hidden{display:none!important}
.grow{flex:1}
.neg{color:var(--neg)}

/* ---------- 登录 ---------- */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#eef2ff 0%,#fdf2f8 100%)}
.login-card{background:var(--card);border-radius:20px;box-shadow:0 12px 40px rgba(40,60,120,.12);padding:34px 28px;width:100%;max-width:360px;text-align:center}
.login-logo{font-size:52px}
.login-title{font-size:20px;margin:8px 0 2px}
.login-sub{color:var(--ink2);font-size:13px;margin-bottom:20px}
.login-foot{display:flex;justify-content:space-between;margin-top:16px;font-size:13px}
.login-foot a{color:var(--pri);text-decoration:none}
/* 学段分段选择 + 学号前缀（v7） */
.seg{display:flex;gap:0;background:#eef1f8;border-radius:12px;padding:4px;margin-bottom:10px}
.seg button{flex:1;padding:8px 0;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--ink2);background:transparent;transition:background .15s,color .15s}
.seg button.on{background:#fff;color:var(--pri);box-shadow:0 1px 5px rgba(30,40,70,.14)}
.no-row{display:flex;gap:0;align-items:stretch;margin-bottom:10px}
.no-pfx{display:flex;align-items:center;justify-content:center;width:52px;border:1.5px solid var(--line);border-right:0;border-radius:12px 0 0 12px;background:#eef2ff;color:var(--pri);font-size:19px;font-weight:800;flex-shrink:0}
.no-row .inp{border-radius:0 12px 12px 0;margin-bottom:0;text-align:left}

/* ---------- 通用组件 ---------- */
.inp{width:100%;padding:11px 14px;border:1.5px solid var(--line);border-radius:var(--r);background:#fff;margin-bottom:10px;outline:none}
.inp:focus{border-color:var(--pri)}
.sel{appearance:none;-webkit-appearance:none;padding:10px 34px 10px 12px;border:1.5px solid var(--line);border-radius:12px;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%239aa5bd' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center;outline:none;margin-bottom:10px;color:var(--ink);font-weight:500;box-shadow:0 1px 4px rgba(20,30,60,.05);transition:border-color .15s,box-shadow .15s}
.sel:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(67,97,238,.12)}
.toolbar .sel{box-shadow:0 2px 10px rgba(20,30,60,.07)}
.block-sel{width:100%}
.btn{padding:11px 16px;border-radius:var(--r);font-size:15px;font-weight:600;background:#eef1f8;color:var(--ink);transition:.15s}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--pri);color:#fff}
.btn.primary:disabled{opacity:.6}
.btn.danger{background:var(--neg-bg);color:var(--neg)}
.btn.add{background:var(--add-bg);color:var(--add)}
.btn.minus{background:var(--neg-bg);color:var(--neg)}
.btn.ghost{background:transparent;border:1.5px solid var(--line)}
.btn.small{padding:6px 12px;font-size:13px;border-radius:9px}
.btn.block{width:100%;margin-bottom:10px}
.empty{text-align:center;color:var(--ink2);padding:30px 0;font-size:14px}
.hint{color:var(--ink2);font-size:12.5px;margin:4px 0 8px}
.form-label{font-size:13px;color:var(--ink2);margin:10px 0 6px}
.badge{font-size:12px;padding:4px 10px;border-radius:99px;background:#eef1f8;color:var(--ink2);white-space:nowrap}
.badge.ok{background:var(--add-bg);color:var(--add)}
.badge.no{background:var(--neg-bg);color:var(--neg)}

/* ---------- 布局 ---------- */
.boot{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--ink2)}
.boot-logo{font-size:44px}
.app{display:flex;flex-direction:column;height:100vh}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--card);box-shadow:var(--shadow);position:relative;z-index:5}
.top-title{display:flex;align-items:center;gap:8px}
.top-title b{font-size:16px}
.who{font-size:12px;color:var(--ink2)}
.icon-btn{padding:6px;border-radius:10px;color:var(--ink2);display:flex}
.icon-btn:active{background:#eef1f8}
.toast{position:fixed;left:50%;top:18px;transform:translateX(-50%);z-index:99;max-width:86vw;background:rgba(23,32,54,.92);color:#fff;font-size:14px;font-weight:500;padding:11px 20px;border-radius:99px;box-shadow:0 6px 24px rgba(10,20,50,.35);pointer-events:none;animation:toastIn .22s cubic-bezier(.2,.8,.2,1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@keyframes toastIn{from{opacity:0;transform:translateX(-50%) translateY(-14px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
.main{flex:1;overflow-y:auto;padding:14px 16px 80px}
.tab-page{max-width:640px;margin:0 auto}
@media(min-width:900px){
  .tab-page{max-width:1200px}
  .stat-row{grid-template-columns:repeat(4,1fr)}
  #stuGrid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
}

/* ---------- 底部导航 ---------- */
.tabbar{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--card);box-shadow:0 -2px 14px rgba(30,40,70,.08);padding:6px 8px calc(6px + env(safe-area-inset-bottom));z-index:6}
.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 0;border-radius:12px;color:var(--ink2);font-size:11px}
.tabbar em{font-style:normal;font-size:20px}
.tabbar button.on{color:var(--pri);background:#eef2ff}

/* ---------- 统计 ---------- */
.stat-row{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}
@media(min-width:900px){.stat-row{grid-template-columns:repeat(4,1fr)}}

/* ---------- 工具条 ---------- */
.toolbar{display:flex;gap:8px;margin-bottom:10px;align-items:center}
.toolbar .sel{width:auto;min-width:110px;margin-bottom:0;flex-shrink:0}
.inp.search{margin-bottom:0;flex:1}
.view-toggle{display:flex;gap:2px;background:#eef1f8;border-radius:10px;padding:3px;flex-shrink:0}
.vbtn{padding:6px 9px;border-radius:8px;color:var(--ink2);display:flex}
.vbtn.on{background:#fff;color:var(--pri);box-shadow:0 1px 4px rgba(30,40,70,.12)}
.batch-bar{display:flex;align-items:center;gap:8px;background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:8px 10px;margin-bottom:10px}
.chk{display:flex;align-items:center;gap:5px;font-size:14px}
.row.line{display:flex;gap:8px;align-items:center}
.row.line .inp,.row.line .sel{margin-bottom:0}

/* ---------- 学生卡片 ---------- */
.stu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.stu-grid.as-list{grid-template-columns:1fr}
.stu-item{position:relative;display:flex;align-items:center;gap:10px;background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:12px;cursor:pointer;border:2px solid transparent}
.stu-grid.as-list .stu-item{padding:10px 12px}
.stu-item.picked{border-color:var(--pri);background:#f5f8ff}
.stu-item .pick{position:absolute;top:6px;left:6px}
.stu-info{flex:1;min-width:0}
.stu-info b{display:block;font-size:15px}
.stu-info small{color:var(--ink2);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.pts{font-size:18px;font-weight:700;color:var(--add)}
.pts.neg{color:var(--neg)}
.av{border-radius:50%;background:#eef1f8;object-fit:cover;flex-shrink:0}

/* ---------- 列表行 ---------- */
.list{display:flex;flex-direction:column;gap:8px}
.row{display:flex;align-items:center;gap:10px;background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:10px 12px}
.r-emoji{font-size:22px}
.r-info{flex:1;min-width:0}
.r-info b{display:block;font-size:14.5px}
.r-info small{color:var(--ink2);font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.log-row{cursor:pointer}
.rank-no{width:26px;text-align:center;font-size:15px;font-weight:700;color:var(--ink2)}

/* ---------- 兑换 ---------- */
.prize-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:16px}
.prize-card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:14px;text-align:center;cursor:pointer}
.prize-card b{display:block;font-size:14px;margin-top:4px}
.prize-card small{color:var(--ink2);font-size:12px}
.prize-card .p-emoji{font-size:30px}
.prize-card.out,.prize-card.lock{opacity:.45}
.sec-title{font-size:14px;color:var(--ink2);margin:6px 0 10px}

/* ---------- 排行 / 管理切换 ---------- */
.rank-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:10px}
.rank-tabs button{flex-shrink:0;padding:7px 14px;border-radius:99px;background:#eef1f8;color:var(--ink2);font-size:13px;font-weight:600}
.rank-tabs button.on{background:var(--pri);color:#fff}

/* ---------- 弹窗 ---------- */
.modal{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;justify-content:center}
.modal-mask{position:absolute;inset:0;background:rgba(15,23,42,.45)}
.modal-card{position:relative;background:var(--card);border-radius:20px 20px 0 0;width:100%;max-width:560px;max-height:88vh;overflow-y:auto;padding:16px 18px calc(18px + env(safe-area-inset-bottom));animation:up .22s cubic-bezier(.2,.8,.2,1)}
@keyframes up{from{transform:translateY(40px);opacity:.5}to{transform:none;opacity:1}}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.modal-head b{font-size:16px}
.modal-x{font-size:16px;color:var(--ink2);padding:4px 8px;border-radius:8px}
.modal-x:active{background:#eef1f8}
@media(min-width:600px){.modal{align-items:center}.modal-card{border-radius:16px}}

/* ---------- 面板 / 标签 ---------- */
.panel-av{display:flex;align-items:center;gap:14px;margin-bottom:12px}
.panel-pts{font-size:14px;color:var(--ink2)}
.panel-pts b{font-size:22px;color:var(--pri)}
.delta-val{font-size:20px;font-weight:800;color:var(--add);min-width:52px;text-align:center}
.delta-val.neg{color:var(--neg)}
.tag-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.chip{padding:7px 14px;border-radius:99px;background:#eef1f8;font-size:14px;border:1.5px solid transparent}
.chip.on{background:#e8edff;border-color:var(--pri);color:var(--pri);font-weight:600}
.tag-editor{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.tag-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:99px;background:#eef1f8;font-size:13px}
.tag-pill button{color:var(--ink2);font-size:12px}
.av-tabs{display:flex;gap:6px;margin:10px 0}
.av-tabs button{flex:1;padding:8px;border-radius:10px;background:#eef1f8;font-size:13px;font-weight:600;color:var(--ink2)}
.av-tabs button.on{background:var(--pri);color:#fff}
.av-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:8px;margin-bottom:12px;max-height:180px;overflow-y:auto}
.av-cell{display:flex;align-items:center;justify-content:center;font-size:26px;background:#f4f6fb;border-radius:12px;aspect-ratio:1;border:2px solid transparent;flex-direction:column;gap:2px}
.av-cell small{font-size:10px;color:var(--ink2)}
.av-cell.on{border-color:var(--pri);background:#e8edff}
.av-cell img{width:80%;height:80%;border-radius:50%;object-fit:cover}
.pick-list{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.pick-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;background:#f7f8fc;cursor:pointer}
.pick-item b{font-size:14px}
.pick-item small{color:var(--ink2);font-size:12px;margin-left:auto}
.log-detail p{margin-bottom:8px;font-size:14.5px;line-height:1.5}

/* ---------- 学生端 ---------- */
.mine-hero{background:linear-gradient(135deg,#4361ee,#7c5cf0);border-radius:18px;padding:18px;color:#fff;display:flex;align-items:center;gap:14px;margin-bottom:12px}
.mine-hero .av{background:rgba(255,255,255,.25)}
.mine-info b{font-size:18px;display:block}
.mine-info small{opacity:.85;font-size:12.5px}
.big-pts{font-size:32px;font-weight:800;margin-top:2px}
.big-pts span{font-size:13px;font-weight:400;margin-left:2px;opacity:.85}
.mine-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.mstat{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);text-align:center;padding:10px 4px}
.mstat span{font-size:20px;font-weight:700;color:var(--pri);display:block}
.mstat label{font-size:11.5px;color:var(--ink2)}

/* ---------- 设置卡片 ---------- */
.set-card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:14px;margin-bottom:12px}
.set-card>b{display:block;font-size:14.5px;margin-bottom:10px}
.chk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin-bottom:8px}

/* ---------- 第四轮：确认弹窗 ---------- */
.confirm-box{text-align:center;padding:4px 0 2px}
.confirm-icon{font-size:46px;line-height:1;margin-bottom:10px}
.confirm-icon.danger{filter:hue-rotate(-12deg) saturate(1.2)}
.confirm-text{font-size:15px;line-height:1.6;color:var(--ink);margin-bottom:16px}
.confirm-text small{color:var(--ink2);font-size:12.5px}
.confirm-text .neg-text{color:var(--neg);font-weight:700}
.confirm-btns{display:flex;gap:10px}
.confirm-btns .btn{flex:1}

/* ---------- 停课态 ---------- */
.suspended{opacity:.5;filter:grayscale(.5)}
.stu-item.suspended .pts{opacity:.6}
.susp-row{background:#fafafa;border-radius:10px}
.badge.warn{background:#fef3c7;color:#b45309}

/* ---------- 批量选择态 ---------- */
.stu-item.picked{outline:2.5px solid var(--pri);background:#eef2ff;border-radius:var(--r)}
.pick{display:flex;align-items:center;flex-shrink:0}
.pick input{width:20px;height:20px;accent-color:var(--pri)}

/* ---------- ±分面板两栏布局 ---------- */
.panel2col{display:flex;gap:14px;align-items:center;margin-bottom:12px}
.p2-left{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0}
.p2-left .av{width:72px;height:72px;font-size:40px;line-height:72px}
.p2-right{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
/* 快捷分值按钮（v9）：每行 3 个，扣分/加分各 6 个 */
.delta-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.delta-btn{padding:10px 4px;border-radius:10px;background:#eef1f8;font-weight:700;font-size:15px;min-width:0;text-align:center}
.delta-btn:active{transform:scale(.96)}
.delta-row.neg .delta-btn{background:var(--neg-bg);color:var(--neg)}
.delta-row.neg .delta-btn.on{background:var(--neg);color:#fff}
.delta-row.pos .delta-btn{background:var(--add-bg);color:var(--add)}
.delta-row.pos .delta-btn.on{background:var(--add);color:#fff}

/* ===== 顶部品牌区（v5） ===== */
.brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.brand-logo{width:34px;height:34px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:19px;border-radius:11px;background:linear-gradient(135deg,#F97316,#EC4899);box-shadow:0 3px 10px rgba(249,115,22,.32)}
.brand-txt{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.brand-txt b{font-size:16px;font-weight:700;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px;background:linear-gradient(90deg,#F97316,#EC4899);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.brand-txt .who{font-size:11px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}
.topbar #openBigScreen{flex-shrink:0;background:linear-gradient(135deg,#4361ee,#0ea5e9);color:#fff;border:none;box-shadow:0 2px 8px rgba(67,97,238,.3)}

/* ===== 统计卡片（v5） ===== */
.stat-row{gap:10px}
.stat{position:relative;display:flex;align-items:center;gap:9px;padding:12px 12px;border-radius:16px;background:#fff;box-shadow:0 2px 10px rgba(20,30,60,.07);overflow:hidden;transition:transform .16s,box-shadow .16s}
.stat:active{transform:scale(.97)}
.stat::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px}
.stat .stat-ic{width:30px;height:30px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:15px;border-radius:10px}
.stat .stat-tx{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.stat .stat-tx span{font-size:19px;font-weight:800;letter-spacing:-.3px}
.stat .stat-tx label{font-size:10.5px;color:var(--ink2);margin-top:2px;white-space:nowrap}
.stat.s1::before{background:#F97316}.stat.s1 .stat-ic{background:#FFF1E6}
.stat.s1 .stat-tx span{color:#EA6A0B}
.stat.s2::before{background:#4361ee}.stat.s2 .stat-ic{background:#EAEEFE}
.stat.s2 .stat-tx span{color:#3550d8}
.stat.s3::before{background:#10b981}.stat.s3 .stat-ic{background:#E4F8F0}
.stat.s3 .stat-tx span{color:#0a9c6d}
.stat.s4::before{background:#EC4899}.stat.s4 .stat-ic{background:#FDEBF3}
.stat.s4 .stat-tx span{color:#d63384}

/* ===== 积分页工具行（v5） ===== */
.toolbar.tb-line1{gap:8px;margin-bottom:8px}
.toolbar.tb-line1 .search{flex:1 1 auto;min-width:0}
@media(max-width:899px){.toolbar.tb-line1{flex-wrap:wrap}.toolbar.tb-line1 .search{flex:1 1 100%;order:3;margin-bottom:0}.toolbar.tb-line1 .sel{flex:1;min-width:0}}
.toolbar.tb-line2{gap:8px;margin-bottom:12px}
.btn-batch{display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:1;height:38px;padding:0 14px;border-radius:12px;font-size:13.5px;font-weight:700;color:#fff;background:linear-gradient(135deg,#F97316,#EC4899);box-shadow:0 4px 12px rgba(236,72,153,.28);transition:transform .14s,box-shadow .14s}
.btn-batch:active{transform:scale(.98);box-shadow:0 2px 6px rgba(236,72,153,.24)}
.btn-batch.on{background:linear-gradient(135deg,#4361ee,#7aa2ff);box-shadow:0 4px 12px rgba(67,97,238,.3)}
.btn-susp{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 14px;border-radius:12px;font-size:13px;font-weight:600;color:var(--ink2);background:#eef1f8;border:1.5px solid transparent;transition:all .14s}
.btn-susp.on{color:#fff;background:linear-gradient(135deg,#64748b,#94a3b8);box-shadow:0 4px 12px rgba(100,116,139,.28)}

/* ===== 自定义分值（v9）：数值输入框，正数加分 / 负数减分 ===== */
.delta-custom{display:flex;flex-direction:column;gap:6px;margin-top:2px}
.delta-side{font-size:11.5px;font-weight:700;color:var(--ink2);text-align:left;letter-spacing:.3px}
.num-row{display:flex;gap:8px;align-items:stretch}
.num-inp{flex:1;min-width:0;height:46px;border:1.5px solid var(--line);border-radius:12px;background:#f7f9fe;text-align:center;font-size:20px;font-weight:800;color:var(--ink);outline:none;transition:border-color .15s,background .15s;-moz-appearance:textfield}
.num-inp:focus{border-color:var(--pri);background:#fff}
.num-inp::placeholder{font-size:13px;font-weight:500;color:#9aa5bd}
.num-inp::-webkit-outer-spin-button,.num-inp::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.num-tag{flex-shrink:0;min-width:58px;display:flex;align-items:center;justify-content:center;border-radius:12px;background:#f2f5fc;font-size:17px;font-weight:800;color:#b6c0d4}
.num-tag.pos{background:var(--add-bg);color:var(--add)}
.num-tag.neg{background:var(--neg-bg);color:var(--neg)}

/* ===== 头像库管理 ===== */
.av-lib{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:8px;margin-bottom:10px}
.av-lib-item{position:relative;aspect-ratio:1;border-radius:12px;background:#f4f6fb;overflow:hidden}
.av-lib-item img{width:100%;height:100%;object-fit:cover}
.av-lib-del{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center}

/* ===== v9：管理-学生列表两行布局 ===== */
.row.mng-stu{flex-direction:column;align-items:stretch;gap:0;padding:12px}
.ms-top{display:flex;align-items:center;gap:10px;min-width:0}
.ms-top .r-info{flex:1;min-width:0}
.ms-top .r-info b{display:block;font-size:15px}
.ms-top .r-info small{display:block;font-size:11.5px;color:var(--ink2);margin-top:2px}
.ms-acts{display:flex;gap:7px;margin-top:9px;padding-top:9px;border-top:1px solid #f0f2f8}
.ms-acts .btn{flex:1;min-width:0;font-size:12.5px;padding:7px 4px}

/* ===== v9：两等分切换条（兑换页） ===== */
.seg2{display:flex;gap:5px;background:#eef1f8;border-radius:12px;padding:4px;margin-bottom:12px}
.seg2 button{flex:1;padding:9px 6px;border-radius:9px;font-size:13.5px;font-weight:700;color:var(--ink2);transition:background .15s,color .15s,box-shadow .15s}
.seg2 button.on{background:#fff;color:var(--pri);box-shadow:0 2px 8px rgba(20,30,60,.10)}
.seg2 .cnt{display:inline-block;min-width:18px;height:18px;line-height:18px;padding:0 5px;margin-left:4px;border-radius:99px;background:var(--neg);color:#fff;font-size:11px;font-weight:700;vertical-align:1px}

/* ===== v9：学生档案（全屏子视图） ===== */
.archive{position:fixed;inset:0;z-index:70;background:#f4f6fb;display:flex;flex-direction:column}
.archive-hd{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#fff;box-shadow:0 2px 10px rgba(20,30,60,.06);flex-shrink:0}
.archive-hd b{font-size:15px;flex:1}
.archive-hd .back{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:var(--pri)}
.archive-body{flex:1;overflow-y:auto;padding:14px 14px 40px;-webkit-overflow-scrolling:touch}
.arc-hero{background:linear-gradient(135deg,#4361ee,#7c5cf0);border-radius:18px;padding:16px;color:#fff;display:flex;align-items:center;gap:14px;margin-bottom:12px}
.arc-hero .av{background:rgba(255,255,255,.25)}
.arc-hero b{font-size:18px;display:block}
.arc-hero small{opacity:.88;font-size:12.5px}
.arc-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.arc-stats div{background:#fff;border-radius:14px;box-shadow:0 2px 10px rgba(20,30,60,.07);text-align:center;padding:10px 4px}
.arc-stats span{display:block;font-size:20px;font-weight:800;color:var(--pri);letter-spacing:-.3px}
.arc-stats label{font-size:11.5px;color:var(--ink2)}
.arc-item{display:flex;align-items:center;gap:10px;background:#fff;border-radius:14px;box-shadow:0 2px 10px rgba(20,30,60,.06);padding:10px 12px;margin-bottom:8px}
.arc-item.rev{opacity:.48}
.arc-item.rev .arc-d b{text-decoration:line-through}
.arc-d{flex:1;min-width:0}
.arc-d b{font-size:14px;display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arc-d small{font-size:11.5px;color:var(--ink2)}
.arc-v{font-size:16.5px;font-weight:800;flex-shrink:0}
.arc-v.pos{color:var(--add)}
.arc-v.neg{color:var(--neg)}

/* ===== v9：大屏访问密码遮罩 ===== */
.screen-lock{position:fixed;inset:0;z-index:99;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:rgba(9,15,32,.96);color:#e8eefc}
.screen-lock .lock-ic{font-size:44px}
.screen-lock h2{font-size:20px;font-weight:700;letter-spacing:1px}
.screen-lock p{font-size:13px;color:#93a3c4}
.screen-lock input{width:260px;max-width:72vw;height:48px;border-radius:12px;border:1.5px solid rgba(255,255,255,.18);background:rgba(255,255,255,.07);color:#fff;text-align:center;font-size:18px;letter-spacing:4px;outline:none}
.screen-lock input:focus{border-color:#5b7cff;background:rgba(255,255,255,.12)}
.screen-lock button{width:260px;max-width:72vw;height:46px;border-radius:12px;background:linear-gradient(135deg,#4361ee,#0ea5e9);color:#fff;font-size:15px;font-weight:700}
.screen-lock .err{font-size:13px;color:#ff8080;min-height:18px}
