:root{
  --purple:#6c4ab6; --purple-d:#3a2d5c; --purple-l:#f3eefc;
  --ink:#2d2440; --muted:#7a6f95; --line:#e6e0f0;
  --green:#27ae60; --red:#c0392b; --amber:#e67e22; --bg:#faf9fc;
  --card:#ffffff; --shadow:0 2px 12px rgba(108,74,182,.08);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
body{font-family:-apple-system,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--ink);line-height:1.6;overflow:hidden;}
.hidden{display:none !important}
button{font-family:inherit;cursor:pointer}

/* ===== 登录 ===== */
.login-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--purple-d),var(--purple));z-index:50;}
.login-card{background:#fff;border-radius:20px;padding:32px 28px;width:min(360px,90vw);text-align:center;
  box-shadow:0 20px 60px rgba(0,0,0,.3);}
.login-logo{font-size:46px;}
.login-card h1{margin:8px 0 2px;font-size:22px;color:var(--purple-d);}
.login-sub{margin:0 0 22px;color:var(--muted);font-size:13px;}
.login-domain{display:inline-block;margin:2px 0 4px;padding:3px 12px;border-radius:20px;font-size:12px;font-weight:700;
  letter-spacing:.5px;color:#fff;background:linear-gradient(135deg,var(--purple),#7c5cff);box-shadow:0 4px 14px rgba(124,92,255,.3);}
.login-label{display:block;text-align:left;font-size:13px;color:var(--muted);margin-bottom:6px;}
#phone-input{width:100%;padding:13px 14px;border:1.5px solid var(--line);border-radius:12px;
  font-size:16px;outline:none;transition:border-color .2s;}
#phone-input:focus{border-color:var(--purple);}
.btn-primary{width:100%;margin-top:16px;padding:13px;border:none;border-radius:12px;
  background:var(--purple);color:#fff;font-size:16px;font-weight:700;letter-spacing:2px;transition:opacity .2s;}
.btn-primary:active{opacity:.8;}
.login-hint{margin:12px 0 0;font-size:13px;color:var(--red);min-height:18px;}
.login-foot{margin:18px 0 0;font-size:11px;color:var(--muted);}

/* ===== App 外壳 ===== */
.app-shell{display:flex;flex-direction:column;height:100%;}
.sub-tabs{display:flex;gap:6px;overflow-x:auto;padding:12px 14px 8px;background:var(--card);
  border-bottom:1px solid var(--line);scrollbar-width:none;-ms-overflow-style:none;}
.sub-tabs::-webkit-scrollbar{display:none;}
.sub-tab{flex:0 0 auto;padding:7px 16px;border-radius:20px;border:1.5px solid var(--line);
  background:#fff;color:var(--muted);font-size:14px;font-weight:600;white-space:nowrap;transition:all .15s;}
.sub-tab.active{background:var(--purple);color:#fff;border-color:var(--purple);}
.view{flex:1;overflow-y:auto;padding:16px 14px 90px;-webkit-overflow-scrolling:touch;}

.bottom-tabs{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--card);
  border-top:1px solid var(--line);padding:6px 0 calc(6px + env(safe-area-inset-bottom));z-index:40;}
.bottom-tab{flex:1;background:none;border:none;display:flex;flex-direction:column;align-items:center;gap:2px;
  color:var(--muted);padding:4px 0;font-size:11px;transition:color .15s;}
.bottom-tab .bt-ico{font-size:20px;line-height:1;}
.bottom-tab.active{color:var(--purple);font-weight:700;}

/* ===== 通用卡片/按钮 ===== */
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin:0 0 14px;box-shadow:var(--shadow);}
.card h3{margin:0 0 10px;font-size:16px;color:var(--purple-d);}
.muted{color:var(--muted);font-size:13px;}
.row{display:flex;gap:10px;flex-wrap:wrap;}
.pill{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:700;color:#fff;}
.p0{background:var(--red);} .p1{background:var(--amber);} .p2{background:var(--muted);}
.ok{color:var(--green);font-weight:700;} .no{color:var(--red);font-weight:700;}
.btn{display:inline-block;padding:9px 16px;border-radius:10px;border:1.5px solid var(--purple);
  background:#fff;color:var(--purple);font-size:14px;font-weight:600;}
.btn.primary{background:var(--purple);color:#fff;}
.btn.ai{background:linear-gradient(135deg,var(--purple),#7c5cff);color:#fff;border:none;box-shadow:0 4px 14px rgba(124,92,255,.3);}
.btn.ai:hover{filter:brightness(1.08);}
.btn:disabled{opacity:.4;cursor:not-allowed;}
.spin{animation:spin 1s linear infinite;display:inline-block;}
@keyframes spin{to{transform:rotate(360deg);}}
.empty{text-align:center;color:var(--muted);padding:40px 0;font-size:14px;}

/* 仪表盘指标卡 */
.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
.metric{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:var(--shadow);}
.metric .num{font-size:24px;font-weight:800;color:var(--purple-d);}
.metric .lbl{font-size:12px;color:var(--muted);margin-top:2px;}
.section-title{font-size:18px;font-weight:800;color:var(--purple-d);margin:8px 0 12px;padding-left:10px;border-left:4px solid var(--purple);}

/* ===== 启动错误兜底 ===== */
.boot-error{display:none;margin:14px auto 0;max-width:90%;white-space:pre-wrap;word-break:break-word;
  background:#fff3f2;color:#c0392b;border:1px solid #f3c2bd;border-radius:10px;padding:10px 12px;
  font-size:12px;line-height:1.5;text-align:left;}
.session-tip{font-size:12px;color:var(--muted);text-align:center;margin:8px 0 0;padding:0 12px;}
