/* ============================================================
   会员工作台 · 极简样式（参考「记一笔」）
   白底 · 黑字 · 蓝色点缀
   ============================================================ */

:root{
  --bg:#f5f6f8;
  --card:#ffffff;
  --ink:#16181d;
  --ink2:#5b6270;
  --ink3:#9aa1ad;
  --ink4:#c2c7d0;
  --line:#eef0f3;
  --line2:#e5e8ec;
  --blue:#2f6bff;
  --blue-soft:#eef3ff;
  --green:#17b26a;
  --green-soft:#e9f8f1;
  --orange:#f79009;
  --orange-soft:#fff6e9;
  --purple:#8b5cf6;
  --purple-soft:#f3f0ff;
  --pink:#e0629b;
  --pink-soft:#fdeef5;
  --red:#f04438;
  --r:14px;
  --r-sm:10px;
  --shadow:0 1px 2px rgba(16,24,40,.04);
  --shadow-lg:0 8px 32px rgba(16,24,40,.10);
  --tab-h:58px;
  --num:"DIN Alternate","SF Pro Display",-apple-system,"PingFang SC",sans-serif;
}

*{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","Helvetica Neue","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--ink);
  font-size:14px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;border:none;background:none;outline:none}
button{cursor:pointer}
ul{list-style:none}
.num{font-family:var(--num);font-variant-numeric:tabular-nums;letter-spacing:-.01em}

/* ---------- 布局骨架 ---------- */
#app{
  max-width:520px;margin:0 auto;min-height:100vh;
  background:var(--bg);position:relative;
  padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 12px);
}
@media(min-width:900px){
  body{background:#eceef1}
  #app{
    max-width:1120px;
    box-shadow:0 0 0 1px var(--line2);
    background:var(--bg);
  }
}

.view{display:none;animation:fade .22s ease}
.view.on{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ---------- 顶栏 ---------- */
.top{
  position:sticky;top:0;z-index:40;
  background:rgba(245,246,248,.88);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  padding:14px 18px 10px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.top h1{font-size:21px;font-weight:650;letter-spacing:-.02em}
.top .sub{font-size:12px;color:var(--ink3);margin-top:2px;font-weight:400}
.top-act{display:flex;gap:8px;align-items:center}
.icon-btn{
  width:34px;height:34px;border-radius:10px;background:var(--card);
  display:grid;place-items:center;box-shadow:var(--shadow);
  transition:.15s;color:var(--ink2);
}
.icon-btn:active{transform:scale(.93)}
.icon-btn svg{width:17px;height:17px}

.wrap{padding:0 18px}

/* ---------- 卡片 ---------- */
.card{
  background:var(--card);border-radius:var(--r);
  box-shadow:var(--shadow);margin-bottom:12px;overflow:hidden;
}
.card-pad{padding:16px}
.card-h{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px 0;
}
.card-h h3{font-size:14.5px;font-weight:620;letter-spacing:-.01em}
.card-h .more{font-size:12.5px;color:var(--ink3)}

.sec-t{
  font-size:12px;color:var(--ink3);font-weight:500;
  margin:18px 2px 9px;letter-spacing:.02em;
}

/* ---------- 业绩主卡 ---------- */
.hero{
  background:linear-gradient(160deg,#1f2937 0%,#111827 100%);
  color:#fff;border-radius:16px;padding:20px;margin-bottom:12px;
  position:relative;overflow:hidden;
}
.hero::after{
  content:'';position:absolute;right:-40px;top:-40px;
  width:160px;height:160px;border-radius:50%;
  background:radial-gradient(circle,rgba(47,107,255,.35),transparent 70%);
}
.hero .lbl{font-size:12px;opacity:.62;letter-spacing:.03em}
.hero .big{font-size:38px;font-weight:600;margin:6px 0 2px;letter-spacing:-.03em}
.hero .big small{font-size:16px;opacity:.6;margin-left:3px;font-weight:400}
.hero-sub{display:flex;gap:18px;margin-top:14px;position:relative;z-index:1}
.hero-sub div{flex:1}
.hero-sub .k{font-size:11px;opacity:.55}
.hero-sub .v{font-size:16px;font-weight:600;margin-top:3px}
.bar{height:4px;background:rgba(255,255,255,.15);border-radius:4px;margin-top:14px;overflow:hidden;position:relative;z-index:1}
.bar i{display:block;height:100%;background:linear-gradient(90deg,#4d84ff,#7aa2ff);border-radius:4px;transition:width .6s cubic-bezier(.4,0,.2,1)}
.hero-foot{display:flex;justify-content:space-between;font-size:11px;opacity:.55;margin-top:7px;position:relative;z-index:1}

/* ---------- 四宫格 ---------- */
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.g-item{
  background:var(--card);border-radius:12px;padding:13px 8px;
  text-align:center;box-shadow:var(--shadow);transition:.15s;
}
.g-item:active{transform:scale(.97)}
.g-item .v{font-size:20px;font-weight:620;letter-spacing:-.02em}
.g-item .k{font-size:11px;color:var(--ink3);margin-top:3px}
.g-item.warn .v{color:var(--orange)}
.g-item.danger .v{color:var(--red)}
.g-item.good .v{color:var(--green)}

/* ---------- 首页六大指标网格 ---------- */
.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.metric-grid .g-item .v{font-size:21px}
.metric-grid .g-item .k{font-size:11px}
@media(max-width:380px){
  .metric-grid{gap:6px}
  .metric-grid .g-item{padding:11px 4px}
  .metric-grid .g-item .v{font-size:18px}
  .metric-grid .g-item .k{font-size:10px}
}

/* 行内文字链接（生成明日预约等） */
.link{float:right;color:var(--blue);font-weight:500;cursor:pointer;font-size:12px}
.link:active{opacity:.6}

/* 预约行可点 */
.bk-row{cursor:pointer}
.bk-row:active{background:#fafbfc}

/* ---------- 列表行 ---------- */
.row{
  display:flex;align-items:center;gap:12px;
  padding:13px 16px;border-bottom:1px solid var(--line);
  transition:.12s;
}
.row:last-child{border-bottom:none}
.row:active{background:#fafbfc}
.av{
  width:38px;height:38px;border-radius:11px;flex-shrink:0;
  display:grid;place-items:center;font-size:15px;font-weight:600;
  background:var(--blue-soft);color:var(--blue);
}
.row-main{flex:1;min-width:0}
.row-t{font-size:14.5px;font-weight:550;display:flex;align-items:center;gap:6px}
.row-s{font-size:12px;color:var(--ink3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row-r{text-align:right;flex-shrink:0}
.row-v{font-size:15px;font-weight:600;letter-spacing:-.01em}
.row-vs{font-size:11px;color:var(--ink3);margin-top:2px}

/* ---------- 标签 ---------- */
.tag{
  display:inline-flex;align-items:center;
  padding:1px 6px;border-radius:5px;
  font-size:10.5px;font-weight:600;line-height:1.5;
  flex-shrink:0;
}
.dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0}

/* ---------- 筛选 chips ---------- */
.chips{display:flex;gap:7px;overflow-x:auto;padding:2px 18px 12px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{
  padding:6px 13px;border-radius:18px;background:var(--card);
  font-size:12.5px;color:var(--ink2);white-space:nowrap;
  box-shadow:var(--shadow);transition:.15s;font-weight:500;
}
.chip.on{background:var(--ink);color:#fff}
.chip:active{transform:scale(.95)}

/* ---------- 搜索 ---------- */
.search{
  display:flex;align-items:center;gap:8px;margin:0 18px 12px;
  background:var(--card);border-radius:11px;padding:9px 13px;
  box-shadow:var(--shadow);
}
.search svg{width:15px;height:15px;color:var(--ink4);flex-shrink:0}
.search input{flex:1;font-size:16px}
.search input::placeholder{color:var(--ink4);font-size:14px}

/* ---------- 底部 Tab ---------- */
.tabbar{
  position:fixed;bottom:0;left:0;right:0;z-index:60;
  max-width:520px;margin:0 auto;
  height:calc(var(--tab-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);
  background:rgba(255,255,255,.94);
  backdrop-filter:saturate(180%) blur(16px);
  -webkit-backdrop-filter:saturate(180%) blur(16px);
  border-top:1px solid var(--line);
  display:flex;
}
@media(min-width:900px){.tabbar{max-width:1120px}}
.tab{
  flex:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;color:var(--ink4);font-size:10.5px;transition:.15s;font-weight:500;
}
.tab svg{width:21px;height:21px}
.tab.on{color:var(--blue)}
.tab:active{transform:scale(.94)}
.tab.fab{position:relative}
.tab.fab .fab-btn{
  width:46px;height:46px;border-radius:15px;
  background:var(--blue);color:#fff;
  display:grid;place-items:center;
  box-shadow:0 5px 16px rgba(47,107,255,.34);
  margin-top:-16px;transition:.15s;
}
.tab.fab .fab-btn svg{width:23px;height:23px}
.tab.fab:active .fab-btn{transform:scale(.9)}
.tab.fab span{margin-top:1px}

/* ---------- 抽屉 / 弹层 ---------- */
.mask{
  position:fixed;inset:0;background:rgba(16,24,40,.42);z-index:100;
  opacity:0;pointer-events:none;transition:.24s;
  backdrop-filter:blur(2px);
}
.mask.on{opacity:1;pointer-events:auto}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:110;
  max-width:520px;margin:0 auto;
  background:var(--bg);border-radius:20px 20px 0 0;
  transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,0,1);
  max-height:92vh;display:flex;flex-direction:column;
}
@media(min-width:900px){.sheet{max-width:560px}}
.sheet.on{transform:none}
.sheet-h{
  padding:16px 18px 12px;display:flex;align-items:center;justify-content:space-between;
  border-bottom:1px solid var(--line);background:var(--card);
  border-radius:20px 20px 0 0;flex-shrink:0;
}
.sheet-h h2{font-size:16.5px;font-weight:620;letter-spacing:-.01em}
.sheet-body{overflow-y:auto;padding:14px 18px 30px;-webkit-overflow-scrolling:touch;flex:1}
.grab{width:34px;height:4px;background:var(--line2);border-radius:4px;margin:8px auto 0}

/* ---------- 表单 ---------- */
.field{margin-bottom:12px}
.field label{display:block;font-size:12px;color:var(--ink3);margin-bottom:5px;font-weight:500}
.field input,.field select,.field textarea{
  width:100%;background:var(--card);border-radius:10px;
  padding:10px 13px;
  /* 16px 是 iOS Safari 不触发聚焦缩放的最小字号，勿调小 */
  font-size:16px;
  border:1px solid transparent;transition:.15s;
  -webkit-appearance:none;appearance:none;
}
.field select{
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa1ad' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center;background-size:15px;
  padding-right:34px;
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);background:#fff}
.field textarea{resize:vertical;min-height:62px;line-height:1.55}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.field-row3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}

.btn{
  width:100%;padding:13px;border-radius:12px;background:var(--blue);color:#fff;
  font-size:15px;font-weight:600;transition:.15s;letter-spacing:.01em;
}
.btn:active{transform:scale(.985);opacity:.9}
.btn.ghost{background:var(--card);color:var(--ink2);box-shadow:var(--shadow)}
.btn.danger{background:#fff;color:var(--red);box-shadow:var(--shadow)}
.btn-row{display:flex;gap:10px;margin-top:16px}

/* ---------- 记一下 ---------- */
.type-pick{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-bottom:16px}
.type-pick button{
  padding:11px 4px;border-radius:11px;background:var(--card);
  font-size:12px;color:var(--ink2);text-align:center;transition:.15s;
  box-shadow:var(--shadow);font-weight:500;
}
.type-pick button.on{background:var(--ink);color:#fff}
.amt-box{
  background:var(--card);border-radius:14px;padding:18px;margin-bottom:14px;
  text-align:center;box-shadow:var(--shadow);
}
.amt-box .lbl{font-size:11.5px;color:var(--ink3)}
.amt-box .val{
  font-size:42px;font-weight:600;margin-top:4px;letter-spacing:-.03em;
  min-height:50px;display:flex;align-items:center;justify-content:center;gap:2px;
}
.amt-box .val .cur{font-size:22px;color:var(--ink3);font-weight:400}
.amt-box .val.empty{color:var(--ink4)}
.keys{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.keys button{
  padding:15px;border-radius:12px;background:var(--card);
  font-size:21px;font-weight:500;box-shadow:var(--shadow);transition:.1s;
  font-family:var(--num);
}
.keys button:active{background:var(--line);transform:scale(.96)}
.keys button.fn{font-size:16px;color:var(--ink3)}

/* ---------- 会员详情 ---------- */
.m-hero{
  background:var(--card);border-radius:var(--r);padding:18px;
  margin-bottom:12px;box-shadow:var(--shadow);
}
.m-hero-top{display:flex;gap:13px;align-items:center;margin-bottom:16px}
.m-hero .av{width:52px;height:52px;border-radius:15px;font-size:20px}
.m-hero .nm{font-size:18px;font-weight:620;display:flex;align-items:center;gap:7px;letter-spacing:-.01em}
.m-hero .meta{font-size:12px;color:var(--ink3);margin-top:3px}
.asset3{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border-radius:11px;overflow:hidden}
.asset3 div{background:var(--card);padding:12px 6px;text-align:center}
.asset3 .v{font-size:17px;font-weight:620;letter-spacing:-.02em}
.asset3 .k{font-size:10.5px;color:var(--ink3);margin-top:3px}

.dl{display:flex;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--line);font-size:13.5px;gap:14px}
.dl:last-child{border-bottom:none}
.dl dt{color:var(--ink3);flex-shrink:0}
.dl dd{font-weight:550;text-align:right;word-break:break-all}

/* ---------- 跟踪日历 ---------- */
.cal-nav{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 8px}
.cal-nav b{font-size:14px;font-weight:600}
.cal-nav button{
  width:26px;height:26px;border-radius:8px;background:var(--bg);
  display:grid;place-items:center;color:var(--ink2);font-size:13px;
}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:4px 14px 14px}
.cal .wd{text-align:center;font-size:10.5px;color:var(--ink4);padding:3px 0;font-weight:500}
.cal .d{
  aspect-ratio:1;border-radius:9px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;font-size:12px;
  color:var(--ink2);transition:.12s;position:relative;
  font-family:var(--num);
}
.cal .d.pad{visibility:hidden}
.cal .d.we{color:var(--blue)}
.cal .d:active{transform:scale(.9)}
.cal .d .mk{font-size:9px;line-height:1;margin-top:1px;font-weight:700;font-family:inherit}
.cal .d.has{font-weight:600}
.cal-legend{display:flex;flex-wrap:wrap;gap:10px;padding:0 16px 14px;font-size:11px;color:var(--ink3)}
.cal-legend span{display:flex;align-items:center;gap:4px}
.cal-legend b{font-size:11px}

/* ---------- 项目卡 ---------- */
.proj{
  background:var(--card);border-radius:var(--r);padding:15px;
  margin-bottom:10px;box-shadow:var(--shadow);
  display:flex;align-items:center;gap:13px;
}
.proj-ic{
  width:42px;height:42px;border-radius:12px;flex-shrink:0;
  display:grid;place-items:center;font-size:15px;font-weight:650;color:#fff;
}
.proj-main{flex:1;min-width:0}
.proj-main .t{font-size:15px;font-weight:600;display:flex;align-items:center;gap:7px}
.proj-main .d{font-size:11.5px;color:var(--ink3);margin-top:2px}
.proj-r{text-align:right;flex-shrink:0}
.proj-r .p{font-size:16px;font-weight:650;letter-spacing:-.01em}
.proj-r .r{font-size:11px;color:var(--ink3);margin-top:2px}

/* ---------- 测算器 ---------- */
.calc-head{
  background:linear-gradient(160deg,#2f6bff,#1d4ed8);color:#fff;
  border-radius:16px;padding:20px;margin-bottom:12px;
}
.calc-head .lbl{font-size:12px;opacity:.75}
.calc-head .big{font-size:36px;font-weight:600;margin:5px 0;letter-spacing:-.03em}
.calc-head .big small{font-size:15px;opacity:.7;margin-left:3px;font-weight:400}
.slider-box{margin-top:16px}
.slider-box .sl-top{display:flex;justify-content:space-between;font-size:12px;opacity:.8;margin-bottom:9px}
.slider-box .sl-top b{font-size:15px;opacity:1;font-weight:650}
input[type=range]{
  -webkit-appearance:none;width:100%;height:4px;border-radius:4px;
  background:rgba(255,255,255,.25);outline:none;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:20px;height:20px;border-radius:50%;
  background:#fff;box-shadow:0 2px 7px rgba(0,0,0,.22);cursor:pointer;
}
.step-btns{display:flex;gap:7px;margin-top:12px}
.step-btns button{
  flex:1;padding:7px;border-radius:9px;background:rgba(255,255,255,.16);
  color:#fff;font-size:12.5px;font-weight:550;transition:.15s;
}
.step-btns button:active{background:rgba(255,255,255,.3)}

.brk{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}
.brk:last-child{border-bottom:none}
.brk-l{display:flex;align-items:center;gap:9px}
.brk-l .sq{width:8px;height:8px;border-radius:3px;flex-shrink:0}
.brk-l .n{font-size:13.5px;font-weight:550}
.brk-l .s{font-size:11px;color:var(--ink3);margin-top:1px}
.brk-r{font-size:14.5px;font-weight:620;letter-spacing:-.01em}
.brk.total{background:#fafbfc}
.brk.total .brk-r{color:var(--blue);font-size:17px}

/* ---------- 复盘问答 ---------- */
.qa{
  background:var(--card);border-radius:12px;padding:14px 16px;
  margin-bottom:9px;box-shadow:var(--shadow);
}
.qa .q{font-size:13.5px;font-weight:550;margin-bottom:3px}
.qa .h{font-size:11px;color:var(--ink4);margin-bottom:9px}
.qa-in{display:flex;align-items:center;gap:9px}
.qa-in input{
  flex:1;background:var(--bg);border-radius:9px;padding:8px 12px;font-size:16px;
  font-family:var(--num);font-weight:600;-webkit-appearance:none;appearance:none;
}
.qa-in input::placeholder{font-size:13px;font-family:-apple-system,"PingFang SC",sans-serif;font-weight:400}
.qa-in .auto{
  font-size:11.5px;color:var(--blue);background:var(--blue-soft);
  padding:5px 9px;border-radius:7px;white-space:nowrap;font-weight:550;
}

/* ---------- 漏斗 / 分布 ---------- */
.fun-row{padding:11px 16px;border-bottom:1px solid var(--line)}
.fun-row:last-child{border-bottom:none}
.fun-top{display:flex;justify-content:space-between;font-size:13px;margin-bottom:7px;align-items:center}
.fun-top .n{font-weight:550;display:flex;align-items:center;gap:7px}
.fun-top .v{font-weight:620;font-family:var(--num)}
.fun-bar{height:6px;background:var(--line);border-radius:6px;overflow:hidden}
.fun-bar i{display:block;height:100%;border-radius:6px;transition:width .5s cubic-bezier(.4,0,.2,1)}

/* ---------- 权益 / 说明 ---------- */
.ben{display:flex;gap:11px;padding:12px 16px;border-bottom:1px solid var(--line);align-items:flex-start}
.ben:last-child{border-bottom:none}
.ben .no{
  width:22px;height:22px;border-radius:7px;background:var(--purple-soft);color:var(--purple);
  display:grid;place-items:center;font-size:11px;font-weight:700;flex-shrink:0;margin-top:1px;
  font-family:var(--num);
}
.ben .tx{font-size:13.5px;line-height:1.5}

.path{display:flex;align-items:stretch;gap:8px;padding:16px}
.path-i{flex:1;text-align:center}
.path-i .n{
  width:30px;height:30px;border-radius:10px;background:var(--blue-soft);color:var(--blue);
  display:grid;place-items:center;font-size:12px;font-weight:700;margin:0 auto 8px;
  font-family:var(--num);
}
.path-i .t{font-size:12.5px;font-weight:600}
.path-i .d{font-size:10.5px;color:var(--ink3);margin-top:3px;line-height:1.45}

/* ---------- 空态 ---------- */
.empty{text-align:center;padding:54px 20px;color:var(--ink4)}
.empty .ic{font-size:34px;margin-bottom:10px;opacity:.5}
.empty .t{font-size:13.5px}

/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;top:44%;transform:translate(-50%,-50%) scale(.9);
  background:rgba(22,24,29,.92);color:#fff;padding:11px 20px;border-radius:11px;
  font-size:13.5px;z-index:300;opacity:0;pointer-events:none;transition:.22s;
  backdrop-filter:blur(8px);font-weight:500;
}
.toast.on{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* ---------- 桌面双栏 ---------- */
@media(min-width:900px){
  .cols{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;align-items:start}
  .cols>*{grid-column:auto}
  .span2{grid-column:1/-1}
  .grid4{grid-template-columns:repeat(4,1fr)}
}

/* ---------- 小屏适配（iPhone SE / 360 安卓机） ---------- */
@media(max-width:380px){
  .wrap{padding:0 14px}
  .chips,.search{margin-left:14px;margin-right:14px}
  .chips{padding-left:14px;padding-right:14px}
  .top{padding:12px 14px 9px}
  .top h1{font-size:19px}
  .hero .big{font-size:33px}
  .g-item{padding:11px 4px}
  .g-item .v{font-size:18px}
  .g-item .k{font-size:10px}
  .type-pick{gap:5px}
  .type-pick button{padding:10px 2px;font-size:11px}
  .amt-box .val{font-size:36px}
  .keys button{padding:13px;font-size:19px}
  .field-row3{gap:6px}
  .asset3 .v{font-size:15px}
  .cal{gap:3px;padding:4px 11px 12px}
  .row{padding:12px 14px;gap:10px}
  .path{padding:14px 10px;gap:5px}
  .path-i .t{font-size:11.5px}
  .path-i .d{font-size:10px}
}

/* 抽屉打开时锁定背景滚动，避免 iOS 滚动穿透 */
body.lock{position:fixed;width:100%;overflow:hidden}

/* 横屏时收紧竖向留白 */
@media(max-height:480px) and (orientation:landscape){
  .hero{padding:15px}
  .hero .big{font-size:29px}
  .sheet{max-height:96vh}
}

/* 打印：导出纸质表用 */
@media print{
  .tabbar,.top-act,.mask,.sheet,.toast,.chips,.search,#login{display:none!important}
  body,#app{background:#fff}
  .card{box-shadow:none;border:1px solid #e5e8ec;break-inside:avoid}
  .hero{background:#1f2937!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ---------- 登录 / 授权 ---------- */
body.logged-out #app, body.logged-out .tabbar { display:none; }

#login{
  position:fixed;inset:0;z-index:400;
  display:none;align-items:center;justify-content:center;
  background:linear-gradient(170deg,#eef3ff 0%,#f5f6f8 60%);
  padding:24px;
}
#login.on{display:flex;animation:fade .25s ease}
.login-card{
  width:100%;max-width:340px;background:var(--card);border-radius:20px;
  box-shadow:var(--shadow-lg);padding:26px 22px 18px;text-align:center;
}
.login-store{font-size:15px;font-weight:600;color:var(--ink2)}
.login-t{font-size:12px;color:var(--ink4);margin:4px 0 18px}
.acc-list{display:flex;flex-wrap:wrap;gap:9px;justify-content:center;margin-bottom:16px}
.acc-pill{
  display:flex;align-items:center;gap:7px;padding:9px 14px;border-radius:14px;
  background:var(--bg);box-shadow:var(--shadow);transition:.15s;font-weight:500;
}
.acc-pill:active{transform:scale(.96)}
.acc-pill.on{background:var(--blue);color:#fff;box-shadow:0 5px 16px rgba(47,107,255,.3)}
.acc-pill.on .rl{color:rgba(255,255,255,.85)}
.acc-pill .rl{font-size:11px;color:var(--ink3)}
.pin-dots{display:flex;gap:12px;justify-content:center;margin:6px 0 4px}
.pin-dots i{width:11px;height:11px;border-radius:50%;background:var(--line2);transition:.15s}
.pin-dots i.on{background:var(--blue);transform:scale(1.12)}
.pin-msg{font-size:12px;color:var(--red);min-height:18px;margin:6px 0 10px;font-weight:500}
.login-keys{margin-top:4px}
.login-keys button{font-size:22px}
.login-hint{font-size:11px;color:var(--ink4);margin-top:14px;line-height:1.5}

/* 登录方式切换 Tabs */
.login-tabs{display:flex;gap:6px;background:var(--bg);border-radius:12px;padding:4px;margin:0 0 16px}
.ltab{
  flex:1;padding:9px 4px;border-radius:9px;background:transparent;
  font-size:13px;font-weight:550;color:var(--ink3);transition:.15s;
}
.ltab.on{background:var(--card);color:var(--blue);box-shadow:var(--shadow)}
.ltab:active{transform:scale(.97)}
.login-panel{min-height:236px;display:flex;flex-direction:column}

/* 微信二维码 */
.qr-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;padding:6px 0 4px}
#qr-canvas{width:200px;height:200px;border-radius:12px;background:#fff;box-shadow:var(--shadow);border:1px solid var(--line)}
.qr-state{font-size:12.5px;color:var(--ink3)}
.qr-wrap.qr-hint{padding:18px 0}
.qr-phone{font-size:54px;line-height:1}
.login-empty{font-size:12.5px;color:var(--ink3);padding:14px 0;text-align:center}

/* 手机号表单 */
.ph-field{text-align:left;margin-bottom:11px}
.ph-field input{font-size:16px}
.ph-code-row{display:flex;gap:8px;align-items:stretch}
.ph-code-row input{flex:1}
.ph-send{width:auto;padding:0 14px;white-space:nowrap;flex-shrink:0;font-size:13.5px}
.ph-send:disabled{opacity:.55;cursor:default}

#login.shake{animation:shake .4s}

@keyframes shake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-9px)}40%{transform:translateX(9px)}
  60%{transform:translateX(-6px)}80%{transform:translateX(6px)}
}

/* 顶栏用户位 */
.user-btn{display:flex;align-items:center;gap:6px;padding:5px 9px 5px 5px;border-radius:20px;background:var(--card);box-shadow:var(--shadow);transition:.15s}
.user-btn:active{transform:scale(.95)}
.u-av{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12px;font-weight:650;flex-shrink:0}
.u-name{font-size:13px;font-weight:600;max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-role{font-size:10px;color:var(--ink3);background:var(--bg);padding:1px 6px;border-radius:5px}

/* 授权管理 · 账号行 */
.acc-row{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line)}
.acc-row:last-child{border-bottom:none}
.acc-row .row-r{display:flex;gap:7px;align-items:center}
.mini{padding:5px 11px;border-radius:8px;background:var(--bg);font-size:12px;font-weight:550;color:var(--ink2);transition:.15s}
.mini:active{background:var(--line)}
.mini.danger{color:var(--red);background:#fff6e9}
.hint-line{font-size:11px;color:var(--ink4);line-height:1.6;margin-top:10px;padding:0 2px}

/* 权限勾选 */
.check{display:flex;align-items:center;gap:9px;padding:11px 14px;background:var(--card);border-radius:11px;margin-bottom:8px;box-shadow:var(--shadow);font-size:13.5px;font-weight:500;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--blue);flex-shrink:0}

/* 用户菜单 */
.u-card{text-align:center;padding:8px 0 16px}
.u-card .u-av.big{width:60px;height:60px;border-radius:50%;font-size:24px;margin:0 auto 12px}
.u-card .u-name{font-size:17px;font-weight:650}
.u-card .u-role{font-size:12px;color:var(--ink3);margin-top:4px}
