/* ============ 点名考勤 · 液态玻璃（Light Liquid Glass） ============
   方向：浅色液态玻璃 + 中性灰白光晕 + 墨黑文字 + 绿/红/蓝状态色
   间距 4px 网格；圆角 12/16/20/24/999；触控目标 ≥44px；对比度 ≥4.5:1
   ============================================ */
:root{
  /* 中性纸底 + 玻璃 */
  --paper:#f2f0e9; --paper-2:#e9e7df;
  --glass-a:.55; --card:rgba(255,255,255,var(--glass-a));
  --line:#e3e0d7; --glass-line:rgba(255,255,255,.75);
  --hi:inset 0 1px 0 rgba(255,255,255,.9);

  --ink:#23211c; --ink-2:#57513f; --ink-3:#6f6857;

  --in:#1f6b4e; --in-soft:rgba(31,107,78,.12); --in-line:rgba(31,107,78,.28);
  --out:#a83a28; --out-soft:rgba(168,58,40,.10); --out-line:rgba(168,58,40,.28);
  --leave:#2c5a85; --leave-soft:rgba(44,90,133,.12); --leave-line:rgba(44,90,133,.28);

  --accent:#23211c;
  --fs-13:13px; --fs-15:15px; --fs-17:17px; --fs-20:20px; --fs-26:26px; --fs-34:34px;
  --r-sm:12px; --r-md:16px; --r-lg:20px;
  --shadow-sm:0 1px 2px rgba(32,30,25,.05),0 2px 10px rgba(32,30,25,.06);
  --shadow:0 2px 4px rgba(32,30,25,.04),0 14px 36px rgba(32,30,25,.10);
}
body[data-theme="dark"]{
  --paper:#161513; --paper-2:#201f1b;
  --card:rgba(48,47,42,var(--glass-a));
  --line:#3a382f; --glass-line:rgba(255,255,255,.14);
  --hi:inset 0 1px 0 rgba(255,255,255,.08);
  --ink:#f1ede0; --ink-2:#c2bba8; --ink-3:#8a8270;
  --in:#66c49b; --in-soft:rgba(102,196,155,.14); --in-line:rgba(102,196,155,.32);
  --out:#e5876f; --out-soft:rgba(229,135,111,.14); --out-line:rgba(229,135,111,.32);
  --leave:#83b4e4; --leave-soft:rgba(131,180,228,.14); --leave-line:rgba(131,180,228,.32);
  --accent:#f1ede0;
  --shadow-sm:0 1px 2px rgba(0,0,0,.35),0 2px 10px rgba(0,0,0,.3);
  --shadow:0 2px 4px rgba(0,0,0,.35),0 14px 36px rgba(0,0,0,.45);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  margin:0;color:var(--ink);
  /* 中性灰白光晕：给玻璃提供折射层次 */
  background:
    radial-gradient(50% 42% at 18% 6%, rgba(255,255,255,.9), transparent 60%),
    radial-gradient(44% 38% at 84% 12%, rgba(216,213,203,.5), transparent 62%),
    radial-gradient(64% 46% at 50% 104%, rgba(202,198,188,.45), transparent 62%),
    var(--paper);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:var(--fs-15);line-height:1.5;
  -webkit-font-smoothing:antialiased;
  touch-action:manipulation;
  transition:background .2s ease,color .2s ease;
}
body[data-theme="dark"]{
  background:
    radial-gradient(50% 42% at 18% 6%, rgba(70,68,60,.5), transparent 60%),
    radial-gradient(44% 38% at 84% 12%, rgba(50,49,44,.45), transparent 62%),
    radial-gradient(64% 46% at 50% 104%, rgba(38,37,33,.5), transparent 62%),
    var(--paper);
}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
input,select,textarea{font:inherit;color:inherit}
input[type="range"]{accent-color:var(--ink)}
:focus{outline:none}
:focus-visible{outline:2px solid var(--ink-2);outline-offset:2px;border-radius:4px}
.app{display:flex;flex-direction:column;height:100vh;height:100dvh;width:100%;max-width:720px;margin:0 auto}

/* ---------- 通用 ---------- */
.hd{
  display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px 14px;
  background:var(--card);
  -webkit-backdrop-filter:blur(16px) saturate(160%);
  backdrop-filter:blur(16px) saturate(160%);
  border-bottom:1px solid var(--glass-line);
}
.hd .hdt{min-width:0}
.hd h1{margin:0;font-size:var(--fs-20);font-weight:700;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hd .sub{font-size:var(--fs-13);color:var(--ink-3);letter-spacing:.04em;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hdacts{display:flex;gap:8px;flex:none}
.iconbtn{
  width:44px;height:44px;border-radius:14px;border:1px solid var(--glass-line);
  background:var(--card);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  display:flex;align-items:center;justify-content:center;color:var(--ink-2);flex:none;
  box-shadow:var(--hi);
  transition:background .15s ease,transform .1s ease;
}
.iconbtn:active{background:var(--paper-2);transform:scale(.96)}
.iconbtn:disabled{opacity:.35;pointer-events:none}
.iconbtn.back{border:0;background:transparent;box-shadow:none;width:44px;height:44px;color:var(--ink-2)}
.iconbtn.back:active{background:var(--paper-2)}
.btn{
  border-radius:var(--r-md);min-height:52px;font-size:var(--fs-17);font-weight:600;letter-spacing:.01em;
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:transform .1s ease,opacity .15s ease,background .15s ease;
  line-height:1.25;
}
.btn:active{transform:scale(.98)}
.btn-main{background:var(--accent);color:var(--paper);box-shadow:var(--shadow-sm)}
.btn-line{border:1px solid var(--glass-line);background:var(--card);color:var(--ink);box-shadow:var(--hi)}
.btn-in{background:var(--in);color:#fff}
.btn-out{background:var(--out-soft);color:var(--out);border:1px solid var(--out-line)}
.btn-leave{background:var(--leave-soft);color:var(--leave);border:1px solid var(--leave-line)}
.tip{font-size:var(--fs-13);line-height:1.6;color:var(--ink-3);padding:0 20px}
.wrap{padding:0 20px calc(20px + env(safe-area-inset-bottom));overflow-y:auto;flex:1;min-height:0}
.bottom{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;
  padding:12px 20px calc(16px + env(safe-area-inset-bottom));
  border-top:1px solid var(--glass-line);background:var(--card);
  -webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);
}
.row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.muted{color:var(--ink-3);font-size:var(--fs-13);line-height:1.55}

/* ---------- 首页 ---------- */
.homecenter{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px 28px;overflow-y:auto}
.emptycard{text-align:center;background:var(--card);border:1px solid var(--glass-line);border-radius:var(--r-lg);padding:28px 24px;box-shadow:var(--hi),var(--shadow);width:100%;max-width:360px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
.emptycard .k{font-size:var(--fs-13);letter-spacing:.2em;color:var(--ink-3)}
.emptycard .n{font-size:var(--fs-26);font-weight:700;margin:12px 0 4px}
.emptycard .meta{font-size:var(--fs-15);color:var(--ink-2)}
.homeacts{display:grid;gap:12px;margin-top:20px;width:100%;max-width:360px}
.listlabel{font-size:var(--fs-13);letter-spacing:.22em;color:var(--ink-3)}
.listnamewrap{display:flex;align-items:center;gap:12px;max-width:100%}
.listname{font-size:var(--fs-34);font-weight:800;letter-spacing:-.01em;word-break:break-all;text-align:center;line-height:1.15;color:var(--ink)}
.swapbtn{width:44px;height:44px;border-radius:var(--r-sm);border:1px solid var(--glass-line);background:var(--card);color:var(--ink-2);display:flex;align-items:center;justify-content:center;flex:none;box-shadow:var(--hi);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.swapbtn:active{background:var(--paper-2)}
.listmeta{font-size:var(--fs-15);color:var(--ink-2)}
.resume{margin:16px 0 0;width:100%;max-width:420px;border:1px solid var(--glass-line);border-radius:var(--r-md);padding:16px;background:var(--card);box-shadow:var(--hi);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.resume p{margin:0 0 12px;font-size:var(--fs-13);color:var(--ink-2)}
.resume .row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.roundbtn{
  position:relative;margin-top:28px;width:210px;height:210px;border-radius:999px;
  background:linear-gradient(160deg, rgba(255,255,255,.78), rgba(255,255,255,.30) 55%, rgba(255,255,255,.5));
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  backdrop-filter:blur(20px) saturate(180%);
  border:1px solid var(--glass-line);
  color:var(--ink);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
  box-shadow:0 22px 48px rgba(32,30,25,.16),inset 0 1px 0 rgba(255,255,255,.95),inset 0 -10px 24px rgba(32,30,25,.05);
  transition:transform .12s ease;
  overflow:hidden;
}
.roundbtn::before{content:'';position:absolute;left:16%;top:10%;width:40%;height:30%;border-radius:50%;background:radial-gradient(closest-side, rgba(255,255,255,.95), transparent);pointer-events:none}
.roundbtn:active{transform:scale(.95)}
.roundbtn .rbt{font-size:var(--fs-26);font-weight:700;letter-spacing:.06em;color:var(--ink)}
.roundbtn .rbs{font-size:var(--fs-13);color:var(--ink-2);letter-spacing:.02em}
.homebottom{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px 20px calc(20px + env(safe-area-inset-bottom))}
.hbtn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:54px;border-radius:var(--r-md);border:1px solid var(--glass-line);background:var(--card);color:var(--ink);font-size:var(--fs-15);font-weight:600;box-shadow:var(--hi)}
.hbtn:active{background:var(--paper-2)}

/* ---------- 点名 ---------- */
.track{height:4px;margin:0 20px;background:var(--paper-2);border-radius:4px;overflow:hidden}
.track i{display:block;height:100%;width:0;background:var(--in);transition:width .25s ease}
.rollq{position:relative;margin:12px 20px 0}
.rollq input{width:100%;padding:12px 16px;border:1px solid var(--glass-line);border-radius:var(--r-sm);background:var(--card);color:var(--ink);font-size:var(--fs-15);box-shadow:inset 0 1px 3px rgba(32,30,25,.05);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.rollhits{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:10;background:var(--card);border:1px solid var(--glass-line);border-radius:var(--r-md);box-shadow:var(--shadow);overflow:hidden;max-height:300px;overflow-y:auto;-webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%)}
.hit{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;border-bottom:1px solid var(--line);text-align:left}
.hit:last-child{border-bottom:0}
.hit:active{background:var(--paper-2)}
.hit .hn{font-size:var(--fs-15);font-weight:600;color:var(--ink)}
.hit .hs{font-size:var(--fs-13);color:var(--ink-3);font-variant-numeric:tabular-nums}
.hit .hi{margin-left:auto;font-size:var(--fs-13);color:var(--ink-3)}
.deck{position:relative;flex:1;min-height:0;display:flex;align-items:stretch;padding:16px 20px 8px}
.ghost{position:absolute;left:50%;top:16px;width:calc(100% - 40px);max-width:520px;height:calc(100% - 40px);transform:translateX(-50%);border-radius:24px;background:var(--card);border:1px solid var(--glass-line);pointer-events:none}
.ghost.g1{transform:translateX(-50%) translateY(8px) scale(.975);opacity:.5}
.ghost.g2{transform:translateX(-50%) translateY(16px) scale(.95);opacity:.24}
.card3d{
  position:relative;z-index:1;flex:1;width:100%;max-width:520px;margin:0 auto;min-height:210px;
  background:linear-gradient(160deg, rgba(255,255,255,.8), rgba(255,255,255,.5));
  -webkit-backdrop-filter:blur(20px) saturate(170%);
  backdrop-filter:blur(20px) saturate(170%);
  border:1px solid var(--glass-line);border-radius:24px;box-shadow:var(--hi),var(--shadow);
  display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;
  touch-action:none;user-select:none;-webkit-user-select:none;will-change:transform,opacity;
  transition:transform .18s cubic-bezier(.2,.7,.3,1),opacity .18s ease,border-color .15s ease,background .15s ease,box-shadow .18s ease;
}
.card3d .no{position:absolute;top:16px;left:20px;font-size:var(--fs-13);color:var(--ink-3);font-variant-numeric:tabular-nums}
.card3d .sid{position:absolute;top:16px;right:20px;font-size:var(--fs-13);color:var(--ink-3);font-family:ui-monospace,Menlo,monospace}
.card3d .nm{font-size:clamp(40px,12vw,76px);font-weight:800;letter-spacing:.05em;text-align:center;line-height:1.1;padding:0 16px;word-break:break-all;color:var(--ink)}
.card3d .nt{font-size:var(--fs-15);color:var(--leave);max-width:86%;text-align:center}
.card3d .ft{position:absolute;bottom:16px;left:20px;right:20px;display:flex;justify-content:space-between;font-size:var(--fs-13);color:var(--ink-3)}
.card3d[data-tint="in"]{background:var(--in-soft);border-color:var(--in-line);box-shadow:0 22px 52px rgba(31,107,78,.20)}
.card3d[data-tint="out"]{background:var(--out-soft);border-color:var(--out-line);box-shadow:0 22px 52px rgba(168,58,40,.20)}
.card3d[data-tint="leave"]{background:var(--leave-soft);border-color:var(--leave-line);box-shadow:0 22px 52px rgba(44,90,133,.20)}
.card3d.fly{transition:transform .19s cubic-bezier(.35,.8,.4,1),opacity .19s ease}
.card3d.enter{animation:enter .18s ease both}
@keyframes enter{from{transform:scale(.94);opacity:.4}to{transform:scale(1);opacity:1}}
.gesturehint{text-align:center;font-size:var(--fs-13);color:var(--ink-3);padding:8px 20px 0;letter-spacing:.02em}
.acts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;padding:12px 20px calc(16px + env(safe-area-inset-bottom))}

/* ---------- 结算 ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0 0}
.stat{background:var(--card);border:1px solid var(--glass-line);border-radius:var(--r-md);padding:16px 12px;box-shadow:var(--hi),var(--shadow-sm)}
.stat b{display:block;font-size:var(--fs-34);line-height:1.05;font-weight:800;font-variant-numeric:tabular-nums}
.stat span{font-size:var(--fs-13);color:var(--ink-2)}
.stat.in b{color:var(--in)} .stat.out b{color:var(--out)} .stat.leave b{color:var(--leave)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chip{font-size:var(--fs-13);padding:8px 12px;border-radius:999px;border:1px solid var(--out-line);background:var(--out-soft);color:var(--out)}
.chip.leave{border-color:var(--leave-line);background:var(--leave-soft);color:var(--leave)}
.chip.gray{border-color:var(--line);background:var(--paper-2);color:var(--ink-2)}
.sec{margin:20px 0 0}
.sec .t{display:flex;justify-content:space-between;font-size:var(--fs-13);color:var(--ink-3)}

/* ---------- 分段切换 ---------- */
.segwrap{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:var(--paper-2);border-radius:var(--r-sm);padding:4px}
.seg{font-size:var(--fs-15);font-weight:600;padding:12px;border-radius:10px;color:var(--ink-2);transition:background .15s,color .15s}
.seg.on{background:var(--card);color:var(--ink);box-shadow:var(--hi),var(--shadow-sm)}

/* ---------- 列表 ---------- */
.lrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;background:var(--card);border:1px solid var(--glass-line);border-radius:var(--r-md);margin-top:12px;box-shadow:var(--hi)}
.lrow .main{min-width:0}
.lrow .t1{font-size:var(--fs-15);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.lrow .t2{font-size:var(--fs-13);color:var(--ink-3);margin-top:4px}
.lrow .ops{display:flex;gap:8px;flex:none}
.tagcur{font-size:var(--fs-13);color:var(--in);background:var(--in-soft);border:1px solid var(--in-line);padding:1px 8px;border-radius:999px;vertical-align:2px}
.mini{font-size:var(--fs-13);padding:8px 12px;border-radius:10px;border:1px solid var(--glass-line);background:var(--card);color:var(--ink-2);white-space:nowrap;box-shadow:var(--hi)}
.mini:active{background:var(--paper-2)}
.mini.danger{color:var(--out);border-color:var(--out-line)}
.mini.primary{background:var(--accent);color:var(--paper);border-color:var(--accent)}

/* ---------- 名单成员编辑 ---------- */
.mrow{display:grid;grid-template-columns:24px 1fr;gap:12px;align-items:center;padding:12px 16px;background:var(--card);border:1px solid var(--glass-line);border-radius:var(--r-md);margin-top:8px;box-shadow:var(--hi)}
.mrow .idx{font-size:var(--fs-13);color:var(--ink-3);font-variant-numeric:tabular-nums}
.mrow .f{min-width:0}
.mrow input{border:1px solid transparent;background:transparent;border-radius:8px;padding:4px 8px;min-width:0;color:var(--ink)}
.mrow input:focus{border-color:var(--line);background:var(--paper)}
.mrow .nm-i{font-size:var(--fs-15);font-weight:600;width:100%}
.mrow .sid-i{font-size:var(--fs-13);color:var(--ink-3);width:100%;font-variant-numeric:tabular-nums}
.mrow .note-i{font-size:var(--fs-13);color:var(--leave);width:100%}
.mrow.sel{grid-template-columns:28px 24px 1fr}
.mcheck{display:flex;align-items:center;justify-content:center}
.mcheck input{width:20px;height:20px;accent-color:var(--out);margin:0}
.selbar{display:flex;gap:8px;margin-top:12px}
.selbar .mini{flex:1}
.selhint{font-size:var(--fs-13);color:var(--out);margin-top:12px;font-weight:600}
.addbox{background:var(--card);border:1px solid var(--glass-line);border-radius:var(--r-md);padding:16px;margin-top:12px;box-shadow:var(--hi)}
.addbox .fields{display:grid;gap:8px}
.addbox input{padding:12px;border:1px solid var(--glass-line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font-size:var(--fs-15);box-shadow:inset 0 1px 3px rgba(32,30,25,.05)}
.addbox input:focus{border-color:var(--ink-3)}
.addbox .btn{margin-top:12px;min-height:44px;font-size:var(--fs-15)}

/* ---------- 弹窗 ---------- */
.mask{position:fixed;inset:0;background:rgba(20,18,14,.35);z-index:20;animation:fade .15s ease;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
@keyframes fade{from{opacity:0}to{opacity:1}}
.dlg{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--card);border-top:1px solid var(--glass-line);border-radius:22px 22px 0 0;padding:20px 20px calc(20px + env(safe-area-inset-bottom));max-width:720px;margin:0 auto;box-shadow:0 -12px 40px rgba(0,0,0,.20);-webkit-backdrop-filter:blur(24px) saturate(170%);backdrop-filter:blur(24px) saturate(170%);animation:up .2s ease}
@keyframes up{from{transform:translateY(20px);opacity:.6}to{transform:translateY(0);opacity:1}}
.dlg h3{margin:0 0 12px;font-size:var(--fs-20);font-weight:700;color:var(--ink)}
.dlg input,.dlg textarea{width:100%;padding:12px 16px;border:1px solid var(--glass-line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font-size:var(--fs-17);box-shadow:inset 0 1px 3px rgba(32,30,25,.05)}
.dlg textarea{resize:vertical;font-size:var(--fs-15);line-height:1.5}
.dlg input:focus,.dlg textarea:focus{border-color:var(--ink-3)}
.dlg .btns{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.dlg .btns.three{grid-template-columns:1fr 1fr 1fr}
.dlg .btns .btn{min-height:48px;font-size:var(--fs-15)}

/* 预设请假 */
.preleave{margin-top:16px;border:1px solid var(--glass-line);border-radius:var(--r-md);padding:16px;background:var(--card);box-shadow:var(--hi)}
.pl-head{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-15);font-weight:600;margin-bottom:12px;color:var(--ink)}
.plc{font-size:var(--fs-13);color:var(--leave);font-weight:500}
.preleave #plSearch{padding:12px;font-size:var(--fs-15)}
.pl-list{margin-top:12px;max-height:240px;overflow-y:auto;display:grid;gap:4px}
.pl-item{display:flex;align-items:center;gap:12px;padding:8px;border-radius:10px}
.pl-item:active{background:var(--paper-2)}
.pl-n{font-size:var(--fs-15);font-weight:500;flex:none;color:var(--ink)}
.pl-s{font-size:var(--fs-13);color:var(--ink-3);flex:1;text-align:right;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-item input[type="checkbox"]{width:20px;height:20px;flex:none;accent-color:var(--leave)}

/* 切换名单 */
.swapwrap{display:grid;gap:8px;max-height:340px;overflow-y:auto}
.swapitem{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--glass-line);border-radius:var(--r-sm);background:var(--card);text-align:left;box-shadow:var(--hi)}
.swapitem.cur{border-color:var(--in-line);background:var(--in-soft)}
.si-n{font-size:var(--fs-15);font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.si-m{font-size:var(--fs-13);color:var(--ink-3)}
.si-tag{font-size:var(--fs-13);color:var(--in);background:var(--card);border:1px solid var(--in-line);padding:1px 8px;border-radius:999px}

/* ---------- 状态选择（批次详情 / 逐条改） ---------- */
.srow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--card);border:1px solid var(--glass-line);border-left-width:5px;border-radius:var(--r-md);margin-top:8px;box-shadow:var(--hi)}
.srow[data-st="in"]{border-left-color:var(--in)}
.srow[data-st="out"]{border-left-color:var(--out)}
.srow[data-st="leave"]{border-left-color:var(--leave)}
.srow[data-st=""]{border-left-color:var(--ink-3)}
.srow .nm{font-size:var(--fs-15);font-weight:600;color:var(--ink)}
.srow .meta{font-size:var(--fs-13);color:var(--ink-3)}
.seg3{display:flex;gap:4px;flex:none}
.seg3 button{font-size:var(--fs-13);padding:12px 12px;border-radius:10px;border:1px solid var(--glass-line);color:var(--ink-3);background:var(--card);box-shadow:var(--hi)}
.seg3 button.on[data-v="in"]{background:var(--in);color:#fff;border-color:var(--in)}
.seg3 button.on[data-v="out"]{background:var(--out);color:#fff;border-color:var(--out)}
.seg3 button.on[data-v="leave"]{background:var(--leave);color:#fff;border-color:var(--leave)}

/* ---------- 拖拽改（调整结果） ---------- */
.dropzone{border:2px dashed var(--line);border-radius:var(--r-md);margin-top:12px;background:var(--card);transition:border-color .15s,background .15s}
.dropzone.z-in{border-color:var(--in-line)}
.dropzone.z-out{border-color:var(--out-line)}
.dropzone.z-leave{border-color:var(--leave-line)}
.dropzone.z-none{border-color:var(--line)}
.dropzone.over{background:var(--paper-2);border-style:solid}
.dz-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;font-size:var(--fs-15)}
.dz-n{font-weight:700;color:var(--ink)}
.dz-c{font-size:var(--fs-13);color:var(--ink-3);font-variant-numeric:tabular-nums}
.z-in .dz-n{color:var(--in)} .z-out .dz-n{color:var(--out)} .z-leave .dz-n{color:var(--leave)} .z-none .dz-n{color:var(--ink-3)}
.dz-body{display:flex;flex-wrap:wrap;gap:8px;padding:8px 16px 16px;min-height:48px}
.dz-empty{font-size:var(--fs-13);color:var(--ink-3);padding:8px 0}
.dchip{display:inline-flex;align-items:center;padding:8px 16px;border-radius:999px;font-size:var(--fs-15);background:var(--card);border:1px solid var(--glass-line);color:var(--ink);box-shadow:var(--hi);touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.dchip:active{cursor:grabbing}
.z-in .dchip{background:var(--in-soft);border-color:var(--in-line);color:var(--in)}
.z-out .dchip{background:var(--out-soft);border-color:var(--out-line);color:var(--out)}
.z-leave .dchip{background:var(--leave-soft);border-color:var(--leave-line);color:var(--leave)}
.z-none .dchip{background:var(--paper-2);border-color:var(--line);color:var(--ink-2)}
.dragging{position:fixed;z-index:60;pointer-events:none;transform:scale(1.12) rotate(2deg);box-shadow:0 14px 30px rgba(0,0,0,.24);margin:0}

/* ---------- 累计台账 ---------- */
.ledhead{display:flex;align-items:center;gap:8px;margin-top:12px;padding:0 4px;font-size:var(--fs-13);color:var(--ink-3)}
.ledhead .th{border:0;background:none;padding:8px 4px;font-size:var(--fs-13);color:var(--ink-3);white-space:nowrap}
.ledhead .th.on{color:var(--ink);font-weight:700}
.lrow.led{background:var(--card)}
.lednums{display:flex;gap:8px;flex:none;align-items:center}
.lednums span{min-width:40px;text-align:center;font-size:var(--fs-15);font-weight:600;padding:4px 0;border-radius:8px;font-variant-numeric:tabular-nums}
.lednums .lo{color:var(--out);background:var(--out-soft)}
.lednums .ll{color:var(--leave);background:var(--leave-soft)}
.lednums .lt{color:var(--ink-2);background:var(--paper-2)}
.lednums .lt.zero{color:var(--ink-3);opacity:.6}

/* ---------- 设置 ---------- */
.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;background:var(--card);border:1px solid var(--glass-line);border-radius:var(--r-md);margin-top:12px;box-shadow:var(--hi)}
.setting-row .lb{font-size:var(--fs-15);font-weight:500;color:var(--ink)}
.setting-row .lb small{display:block;font-size:var(--fs-13);color:var(--ink-3);margin-top:4px;font-weight:400}
.themes{display:flex;gap:8px;flex:none}
.themes button{font-size:var(--fs-13);padding:12px 12px;border-radius:10px;border:1px solid var(--glass-line);color:var(--ink-2);background:var(--card);box-shadow:var(--hi)}
.themes button.on{background:var(--accent);color:var(--paper);border-color:var(--accent)}

.toast{position:fixed;left:50%;bottom:calc(32px + env(safe-area-inset-bottom));transform:translate(-50%,12px);background:rgba(32,30,25,.94);color:#fff;font-size:var(--fs-15);padding:12px 20px;border-radius:var(--r-sm);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:40;max-width:86vw;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

@media (min-width:760px){
  .app{max-width:820px}
  .deck{padding:16px 44px}
  .acts{padding:16px 44px 24px}
  .roundbtn{width:224px;height:224px}
}

/* 无障碍：减少动态 */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
