/* ============================================================
   SJ丨教练工作台 · V0.4 设计系统
   深色 + 品牌橙 · 大圆角卡片 · 毛玻璃顶栏 · 抽屉侧边栏
   ============================================================ */
:root {
  --bg: #0d0f14; --panel: #161a22; --panel2: #1b202b;
  --border: rgba(255,255,255,.06); --border2: rgba(255,255,255,.12);
  --orange: #ff9d2e; --orange2: #ff7a00; --amber: #ffb347;
  --cyan: #38bdf8; --green: #3ddc84; --purple: #a78bfa;
  --pink: #fb7185; --teal: #2dd4bf; --gold: #e8c268;
  --text: #e8e6e0; --muted: #9aa3b2; --red: #ff7d3c;
  --radius: 18px; --radius-sm: 12px;
  --shadow: 0 10px 30px rgba(0,0,0,.35);
  --glow: 0 6px 24px rgba(255,157,46,.18);
  /* v114：新增可换肤变量（硬编码深色统一收口到这里） */
  --input-bg: #10131a;
  --sidebar-bg: rgba(15,18,25,.92);
  --topbar-bg: rgba(13,15,20,.72);
  --overlay: rgba(0,0,0,.55);
  --scrollbar: #2c3444;
  --body-grad: radial-gradient(900px 500px at 85% -10%, rgba(255,157,46,.07), transparent 60%),
    radial-gradient(700px 420px at -10% 110%, rgba(56,189,248,.05), transparent 55%),
    linear-gradient(165deg,#0e1117 0%, #0a0c10 55%, #0f0b07 100%);
  --auth-grad: radial-gradient(700px 460px at 50% -12%, rgba(255,157,46,.1), transparent 60%),
    var(--auth-grad);
}
* { margin:0; padding:0; box-sizing:border-box; }
html, body { height:100%; }
body {
  font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;
  background:var(--body-grad);
  color:var(--text); display:flex; overflow:hidden;
  height:100vh; height:100dvh; -webkit-overflow-scrolling:touch;
  -webkit-touch-callout:none; overscroll-behavior:none;
}
::-webkit-scrollbar { width:8px; height:8px; }
::-webkit-scrollbar-thumb { background:var(--scrollbar); border-radius:4px; }
::-webkit-scrollbar-track { background:transparent; }

/* ===== 侧边栏 ===== */
.sidebar { width:236px; flex:none; height:100%; background:var(--sidebar-bg);
  border-right:1px solid var(--border); display:flex; flex-direction:column;
  backdrop-filter:blur(8px); }
.brand { padding:24px 20px 18px; border-bottom:1px solid var(--border); text-align:center; }
.brand .logo-img { width:54px; height:54px; border-radius:16px; margin:0 auto 12px;
  background:linear-gradient(135deg, rgba(255,157,46,.15), rgba(255,122,0,.06));
  border:1.5px solid rgba(255,157,46,.35); object-fit:cover;
  box-shadow:0 8px 24px rgba(255,157,46,.25); }
.brand .logo { font-size:14px; color:var(--orange); letter-spacing:4px; font-weight:800; }
.brand .name { font-size:21px; font-weight:900; color:var(--text); margin-top:3px; letter-spacing:1px; }
.brand .ver { font-size:10px; color:var(--muted); margin-top:5px; letter-spacing:2px;
  background:var(--border); border:1px solid var(--border); border-radius:20px;
  display:inline-block; padding:3px 12px; }
.nav { flex:1; overflow-y:auto; padding:12px 10px; }
.nav-group { font-size:10px; color:#5b6472; letter-spacing:3px; margin:16px 12px 8px; font-weight:700; }
.nav-item { display:flex; align-items:center; gap:12px; padding:11px 14px;
  border-radius:12px; margin-bottom:3px; color:var(--muted); cursor:pointer;
  transition:.15s; border:1px solid transparent; font-weight:600; font-size:14px; }
.nav-item:hover { background:var(--border); color:var(--text); }
.nav-item.active { background:linear-gradient(90deg, rgba(255,157,46,.14), transparent);
  color:var(--text); border-color:rgba(255,157,46,.22);
  box-shadow:inset 3px 0 0 var(--orange); }
.nav-item .ico { width:20px; height:20px; flex:none; opacity:.9; }
.nav-item .lbl { font-size:14px; }
.nav-item .dot { margin-left:auto; font-size:11px; color:var(--orange); font-weight:800;
  background:rgba(255,157,46,.12); border-radius:10px; padding:2px 8px; }
/* v37：侧边栏退出登录（红色调，与其他导航区分） */
.nav-item.nav-logout { color:var(--pink); border-color:rgba(251,113,133,.25); margin-top:10px; }
.nav-item.nav-logout:hover { background:rgba(251,113,133,.08); color:var(--pink); border-color:rgba(251,113,133,.4); }
.nav-item.nav-logout .ico { opacity:1; }
.side-foot { padding:16px 20px; border-top:1px solid var(--border); font-size:11px; color:#5b6472;
  display:flex; align-items:center; gap:10px; }
.side-foot .coach-av { width:34px; height:34px; border-radius:50%; flex:none;
  background:linear-gradient(135deg,var(--orange),var(--orange2));
  display:flex; align-items:center; justify-content:center;
  font-size:13px; font-weight:900; color:#0d0f14; box-shadow:0 4px 12px rgba(255,157,46,.3); }
.side-foot .coach { color:var(--amber); font-weight:800; font-size:13px; line-height:1.3; }
.side-foot .foot-sub { color:#5b6472; font-size:10px; letter-spacing:1.5px; }

/* ===== 主区 ===== */
.main { flex:1; height:100%; display:flex; flex-direction:column; overflow:hidden; }
.topbar { height:52px; flex:none; background:var(--topbar-bg);
  border-bottom:1px solid var(--border); display:flex; align-items:center;
  padding:0 18px; gap:12px; backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); }
.topbar .crumb { font-size:15px; font-weight:800; color:var(--text); letter-spacing:.5px; }
.topbar .crumb span { color:var(--orange); }
.topbar .spacer { flex:1; }
.install-btn { background:linear-gradient(135deg,var(--orange),var(--orange2));
  color:#0d0f14; border:none; padding:7px 14px; border-radius:9px; font-size:13px;
  font-weight:800; cursor:pointer; box-shadow:var(--glow); transition:.15s; }
.install-btn:active { transform:scale(.96); }
.content { flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain; padding:18px; touch-action:pan-y; }
.menu-toggle { display:none; }

/* ===== 通用 ===== */
.card { background:var(--border); border:1px solid var(--border); border-radius:var(--radius);
  padding:16px 20px; margin-bottom:14px; box-shadow:var(--shadow);
  backdrop-filter:blur(6px); }
.card-title { font-size:15px; font-weight:800; color:var(--text); margin-bottom:12px;
  display:flex; align-items:center; gap:8px; letter-spacing:.3px; }
.card-title .tag { font-size:10px; background:rgba(255,157,46,.14); color:var(--amber);
  padding:2px 9px; border-radius:5px; font-weight:800; letter-spacing:1px; }
.card-title small { font-size:11px; color:var(--muted); font-weight:500; }
.muted { color:var(--muted); }
.empty { text-align:center; color:var(--muted); padding:40px 0; font-size:14px; }
.section-hint { display:flex; align-items:center; gap:10px;
  background:rgba(255,157,46,.06); border:1px solid rgba(255,157,46,.16);
  border-left:3px solid var(--orange); border-radius:10px;
  padding:8px 14px; font-size:12.5px; color:#b9c0cc; line-height:1.55; margin-bottom:12px; }

/* 色彩工具 */
.c-cyan { --sc: var(--cyan); } .c-green { --sc: var(--green); }
.c-orange { --sc: var(--orange); } .c-purple { --sc: var(--purple); }
.c-pink { --sc: var(--pink); } .c-teal { --sc: var(--teal); }
.c-gold { --sc: var(--gold); }

/* ===== 看板统计卡 ===== */
.stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:12px; }
.stat-card { background:var(--border); border:1px solid var(--border);
  border-radius:14px; padding:13px 16px; position:relative; overflow:hidden;
  box-shadow:0 6px 18px rgba(0,0,0,.22); transition:.15s; }
.stat-card:hover { transform:translateY(-2px); border-color:color-mix(in srgb, var(--sc,var(--orange)) 45%, transparent); }
.stat-card::before { content:""; position:absolute; top:0; left:0; right:0; height:2.5px;
  background:linear-gradient(90deg, var(--sc,var(--orange)), transparent); opacity:.95; }
.stat-card .s-ico { width:30px; height:30px; border-radius:9px; display:flex;
  align-items:center; justify-content:center; font-size:15px; margin-bottom:8px;
  background:color-mix(in srgb, var(--sc,var(--orange)) 15%, transparent);
  border:1px solid color-mix(in srgb, var(--sc,var(--orange)) 30%, transparent); }
.stat-card .s-label { font-size:10.5px; color:var(--muted); letter-spacing:.5px; font-weight:600; }
.stat-card .s-value { font-size:24px; font-weight:900; color:var(--text); margin-top:3px;
  font-variant-numeric:tabular-nums; letter-spacing:-.5px; line-height:1.1; }
.stat-card .s-value small { font-size:12px; color:var(--muted); font-weight:600; margin-left:2px; }
.stat-card .s-delta { font-size:10.5px; margin-top:3px; font-weight:700; }
.s-delta.up { color:var(--green); } .s-delta.down { color:var(--cyan); }
.s-delta.flat { color:#5f6a7a; }

/* 条形图 */
.bars { display:flex; align-items:flex-end; gap:8px; height:88px; padding-top:6px; }
.bar-col { flex:1; display:flex; flex-direction:column; align-items:center; gap:4px; }
.bar { width:100%; max-width:24px; border-radius:6px 6px 2px 2px;
  background:linear-gradient(180deg, var(--orange), rgba(255,157,46,.22)); min-height:4px;
  transition:height .4s ease; }
.bar-label { font-size:9.5px; color:#6b7585; }
.bar-val { font-size:9.5px; color:var(--amber); font-weight:800; }

/* ===== 首页步骤卡 ===== */
.steps { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:6px; }
.step-card { background:var(--border); border:1px solid var(--border); border-radius:12px;
  padding:13px 14px; cursor:pointer; transition:.16s; }
.step-card:hover { transform:translateY(-3px); border-color:var(--sc); box-shadow:0 10px 26px rgba(0,0,0,.3); }
.step-card:active { transform:translateY(-1px) scale(.98); }
.step-card .num { width:24px; height:24px; border-radius:7px;
  background:color-mix(in srgb, var(--sc) 18%, transparent); color:var(--sc);
  font-weight:900; display:flex; align-items:center; justify-content:center;
  font-size:12px; margin-bottom:8px; }
.step-card .t { font-size:14px; font-weight:800; color:var(--text); }
.step-card .d { font-size:11px; color:var(--muted); margin-top:4px; line-height:1.5; }
.step-card .go { font-size:11px; color:var(--sc); margin-top:7px; font-weight:800; }

/* ===== 训练 STEP ===== */
.step-block { background:var(--border); border:1px solid var(--border); border-radius:var(--radius);
  margin-bottom:10px; overflow:hidden; --sc: var(--orange); box-shadow:var(--shadow); }
.step-head { display:flex; align-items:center; gap:12px; padding:13px 18px;
  background:linear-gradient(90deg, color-mix(in srgb, var(--sc) 10%, transparent), transparent);
  border-bottom:1px solid var(--border); cursor:pointer; transition:.15s; }
.step-head:hover { background:linear-gradient(90deg, color-mix(in srgb, var(--sc) 16%, transparent), transparent); }
.step-head .st { font-size:10.5px; color:var(--sc); font-weight:800; letter-spacing:2px;
  background:color-mix(in srgb, var(--sc) 14%, transparent); padding:2px 9px; border-radius:5px; }
.step-head .ph { font-size:11.5px; color:var(--sc); font-weight:700; opacity:.85; }
.step-head .tl { font-size:15px; font-weight:800; color:var(--text); }
.step-head .prog { margin-left:auto; font-size:11.5px; color:var(--muted); font-weight:700; }
.step-head .chev { color:var(--muted); transition:.2s; }
.step-block.closed .step-body { display:none; }
.step-block.closed .chev { transform:rotate(-90deg); }
.step-bar { height:2.5px; background:linear-gradient(90deg,var(--sc),color-mix(in srgb,var(--sc) 30%,transparent));
  width:0%; transition:.35s; border-radius:0 3px 3px 0; }
.step-body { padding:14px 18px; }
.ex-card { background:var(--border); border:1px solid var(--border);
  border-left:3px solid var(--sc); border-radius:12px; padding:13px 16px; margin-bottom:10px;
  display:flex; gap:14px; align-items:flex-start; transition:.15s; }
.ex-card:hover { border-color:color-mix(in srgb, var(--sc) 35%, transparent); }
.ex-card:last-child { margin-bottom:0; }
.ex-check input { width:18px; height:18px; accent-color:var(--orange); cursor:pointer; margin-top:3px; }
.ex-label { font-size:10px; color:var(--sc); font-weight:800; margin-bottom:4px; letter-spacing:1.5px; }
.ex-name { font-size:15px; font-weight:800; color:var(--text); line-height:1.35; }
.ex-name .en { color:var(--muted); font-weight:500; font-size:12px; }
.ex-spec { font-size:12.5px; color:var(--muted); margin-top:6px; line-height:1.65; white-space:pre-line; }
.ex-spec b { color:var(--amber); }
.ex-video { display:inline-flex; align-items:center; gap:6px; margin-top:10px; font-size:12.5px;
  font-weight:700; color:var(--sc); background:color-mix(in srgb, var(--sc) 10%, transparent);
  border:1px solid color-mix(in srgb, var(--sc) 25%, transparent);
  padding:6px 12px; border-radius:8px; text-decoration:none; transition:.15s; }
.ex-video:hover { background:color-mix(in srgb, var(--sc) 18%, transparent); }
.ex-video.placeholder { opacity:.75; }
.ex-video em { font-style:normal; font-weight:500; color:var(--muted); font-size:11.5px; }
.ex-done { opacity:.45; } .ex-done .ex-name { text-decoration:line-through; }

/* ===== 表单 ===== */
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px 18px; }
.field label { display:block; font-size:11.5px; color:var(--muted); margin-bottom:6px; font-weight:600; }
.field label b { color:var(--text); }
.field select,.field input,.field textarea { width:100%; background:var(--input-bg);
  border:1px solid var(--border2); border-radius:11px; padding:10px 13px;
  color:var(--text); font-size:13.5px; outline:none; font-family:inherit; transition:.15s; }
.field select:focus,.field input:focus,.field textarea:focus {
  border-color:var(--orange); box-shadow:0 0 0 3px rgba(255,157,46,.12); }
.field select option { background:var(--panel); }

/* ===== 会员 ===== */
.member-row { display:flex; align-items:center; gap:14px; background:var(--border);
  border:1px solid var(--border); border-radius:13px; padding:14px 18px; margin-bottom:10px;
  cursor:pointer; transition:.15s; box-shadow:0 5px 14px rgba(0,0,0,.18); }
.member-row:hover { border-color:var(--mc, var(--orange)); transform:translateX(3px); }
.member-row.active { border-color:var(--mc, var(--orange));
  background:linear-gradient(90deg, color-mix(in srgb, var(--mc, var(--orange)) 10%, transparent), transparent);
  box-shadow:inset 3px 0 0 var(--mc, var(--orange)); }
.avatar { width:42px; height:42px; border-radius:12px; flex:none;
  background:linear-gradient(135deg, color-mix(in srgb, var(--mc, var(--orange)) 26%, #1b202b), #1b202b);
  border:1.5px solid var(--mc, var(--orange)); display:flex; align-items:center;
  justify-content:center; font-size:18px; font-weight:900; color:var(--mc, var(--amber)); }
.member-row .m-name { font-size:16px; font-weight:800; color:var(--text); }
.member-row .m-name .muted { font-size:10.5px; }
.member-row .m-meta { font-size:11.5px; color:var(--muted); margin-top:3px; }
.member-row .m-stage { margin-left:auto; font-size:11.5px; padding:4px 12px; border-radius:18px;
  color:var(--sc); background:color-mix(in srgb, var(--sc) 14%, transparent);
  border:1px solid color-mix(in srgb, var(--sc) 25%, transparent); font-weight:800; letter-spacing:.5px; }

/* ===== 历史 ===== */
.hist-item { background:var(--border); border:1px solid var(--border); border-radius:13px;
  padding:14px 18px; margin-bottom:10px; display:flex; gap:16px; align-items:center;
  box-shadow:0 5px 14px rgba(0,0,0,.18); transition:.15s; }
.hist-item:hover { transform:translateY(-2px); }
.hist-date { flex:none; width:78px; text-align:center; border-right:1px solid var(--border); padding-right:14px; }
.hist-date .d { font-size:19px; font-weight:900; color:var(--text); font-variant-numeric:tabular-nums; }
.hist-date .m { font-size:9.5px; color:var(--muted); letter-spacing:1px; }
.hist-main { flex:1; }
.hist-type { font-size:14px; font-weight:800; color:var(--text); }
.hist-meta { font-size:11.5px; color:var(--muted); margin-top:4px; line-height:1.55; }
.hist-meta b { color:var(--amber); font-weight:600; }
.hist-badges { display:flex; gap:6px; flex-direction:column; align-items:flex-end; }
.badge { font-size:10.5px; font-weight:800; padding:4px 10px; border-radius:12px; letter-spacing:.5px; }
.badge.rpe { color:var(--orange); background:rgba(255,157,46,.12); border:1px solid rgba(255,157,46,.25); }
.badge.cal { color:var(--red); background:rgba(255,125,60,.1); border:1px solid rgba(255,125,60,.25); }
.badge.done { color:var(--green); background:rgba(61,220,132,.1); border:1px solid rgba(61,220,132,.22); }
.badge.warn { color:var(--pink); background:rgba(251,113,133,.1); border:1px solid rgba(251,113,133,.22); }

/* ===== 报告 ===== */
.report-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px; }
.report-tile { background:var(--border); border:1px solid var(--border); border-radius:13px;
  padding:12px 14px; cursor:pointer; transition:.16s; border-top:2.5px solid var(--sc); box-shadow:0 4px 12px rgba(0,0,0,.18);
  display:flex; flex-direction:column; gap:5px; min-height:120px; position:relative; }
.report-tile:hover { transform:translateY(-2px); border-color:var(--sc); box-shadow:0 8px 22px rgba(0,0,0,.3); }
.report-tile:active { transform:scale(.98); }
.report-tile .rt-name { font-size:15px; font-weight:800; color:var(--text); display:flex; align-items:center;
  justify-content:space-between; gap:6px; line-height:1.2; }
.report-tile .rt-arrow { font-size:13px; color:var(--sc); opacity:.55; transition:.15s; }
.report-tile:hover .rt-arrow { opacity:1; transform:translateX(3px); }
.report-tile .rt-when { font-size:10.5px; color:var(--sc); font-weight:700; letter-spacing:.3px;
  background:color-mix(in srgb, var(--sc) 12%, transparent); padding:2px 8px; border-radius:5px; align-self:flex-start; }
.report-tile .rt-desc { font-size:11.5px; color:var(--muted); line-height:1.5; margin-top:auto; }

/* 报告预览（黑金风） */
.report-view { max-width:820px; margin:0 auto; background:#ffffff;
  border:1px solid #e5e8ef; border-radius:20px; overflow:hidden;
  box-shadow:0 20px 50px rgba(0,0,0,.18); }
.rv-head { padding:24px 30px; background:
  radial-gradient(ellipse at top right, rgba(232,194,104,.16), transparent 60%),
  linear-gradient(135deg,#faf9f5,#f1efe8); border-bottom:1px solid #e8e6df; }
.rv-brand { font-size:11px; letter-spacing:5px; color:#b8860b; font-weight:800; }
.rv-title { font-size:26px; font-weight:900; color:#1a1d24; margin-top:8px; letter-spacing:1px; }
.rv-sub { font-size:12.5px; color:#6b7280; margin-top:5px; }
.rv-body { padding:22px 30px; }
.rv-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:18px; }
.rv-stat { background:#f4f6fa; border:1px solid #e5e8ef; border-radius:11px; padding:12px; text-align:center; }
.rv-stat .v { font-size:19px; font-weight:900; color:#b8860b; font-variant-numeric:tabular-nums; }
.rv-stat .l { font-size:10.5px; color:#6b7280; margin-top:4px; letter-spacing:1px; }
.rv-sec-title { font-size:12.5px; color:#b8860b; font-weight:800; letter-spacing:2px;
  margin:18px 0 8px; }
.rv-text { font-size:13.5px; color:#333842; line-height:1.8; }
.rv-tri { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:12px; }
.rv-tri .cell { background:#f4f6fa; border:1px solid #e5e8ef; border-radius:11px; padding:13px; }
.rv-tri .h { font-size:11.5px; font-weight:800; margin-bottom:6px; color:#1a1d24; }
.rv-tri .b { font-size:12.5px; color:#333842; line-height:1.55; }
.rv-sign { margin-top:22px; padding-top:16px; border-top:1px solid #e5e8ef;
  display:flex; justify-content:space-between; align-items:center; }
.rv-sign .msg { font-size:13px; color:#b8860b; font-style:italic; line-height:1.65; }
.rv-sign .who { text-align:right; }
.rv-sign .who .n { font-size:15px; font-weight:800; color:#1a1d24; }
.rv-sign .who .s { font-size:10.5px; color:#6b7280; margin-top:2px; letter-spacing:2px; }
.rv-slogan { text-align:center; font-size:10.5px; letter-spacing:4px; color:#9aa0aa;
  padding:12px 0 6px; border-top:1px solid #eceef2; margin-top:18px; }
.rv-actions { display:flex; gap:10px; margin-top:16px; justify-content:center; }

/* ===== 按钮 ===== */
.btn { background:linear-gradient(135deg,var(--orange),var(--orange2)); color:#0d0f14;
  border:none; padding:10px 22px; border-radius:10px; font-size:14px; font-weight:800; cursor:pointer;
  box-shadow:0 5px 16px rgba(255,157,46,.22); transition:.15s; }
.btn:hover { filter:brightness(1.08); transform:translateY(-1px); }
.btn:active { transform:scale(.97); box-shadow:0 2px 8px rgba(255,157,46,.18); }
.btn.ghost { background:var(--border); border:1px solid var(--border2); color:var(--text);
  box-shadow:none; }
.btn.ghost:hover { background:var(--border2); border-color:var(--orange); }
.btn.ghost:active { transform:scale(.97); }

/* Toast */
.toast { position:fixed; bottom:30px; left:50%; transform:translateX(-50%) translateY(20px);
  background:rgba(27,32,43,.95); border:1px solid var(--orange); color:var(--text);
  padding:14px 26px; border-radius:12px; font-size:14px; font-weight:600;
  opacity:0; pointer-events:none; transition:.25s; z-index:99;
  box-shadow:0 10px 34px var(--overlay); backdrop-filter:blur(8px); }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

.cols { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
/* v152 会员管理页（renderMembers） */
.mbr-top-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:14px; }
.mbr-stat { background:linear-gradient(160deg, rgba(56,189,248,.08), var(--border));
  border:1px solid rgba(56,189,248,.15); border-radius:12px; padding:12px 8px; text-align:center;
  box-shadow:0 2px 10px rgba(0,0,0,.15); transition:.13s; }
.mbr-stat:hover { border-color:rgba(56,189,248,.35); transform:translateY(-1px); }
.mbr-stat.warn { background:linear-gradient(160deg, rgba(251,113,133,.1), var(--border));
  border-color:rgba(251,113,133,.3); }
.mbr-stat .mbr-v { font-size:22px; font-weight:900; color:var(--cyan); font-variant-numeric:tabular-nums; line-height:1.2; }
.mbr-stat.warn .mbr-v { color:var(--pink); }
.mbr-stat .mbr-l { font-size:10.5px; color:var(--muted); margin-top:3px; }
.mbr-stat .mbr-s { font-size:9.5px; color:var(--muted); margin-top:1px; }

.mgrid-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:10px; }
.mgrid-card { background:var(--border); border:1px solid var(--border2); border-radius:12px; padding:10px 8px;
  text-align:center; cursor:pointer; transition:.13s; }
.mgrid-card:hover { border-color:var(--orange); background:rgba(255,107,26,.06); transform:translateY(-1px); }
.mgrid-card.on { border-color:var(--orange); background:rgba(255,107,26,.12); box-shadow:0 2px 12px rgba(255,107,26,.15); }
.mgrid-av { width:42px; height:42px; border-radius:50%; margin:0 auto 6px;
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg, var(--c, var(--orange)), #ff8c3a); color:#fff; font-weight:900; font-size:16px; overflow:hidden; }
.mgrid-name { font-size:13px; font-weight:800; color:var(--text); }
.mgrid-meta { font-size:10px; color:var(--muted); margin-top:1px; }
.mgrid-stat { font-size:10.5px; color:var(--muted); margin-top:4px; }

.mbr-detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:12px; }
@media (max-width:640px){ .mbr-detail-grid{grid-template-columns:1fr;} .mbr-top-grid{grid-template-columns:repeat(2,1fr);} }
.mbr-act-row { display:flex; gap:8px; margin-top:12px; }
.mbr-act-row .btn { flex:1; font-size:12px; padding:8px 4px; min-width:0; }
.mbr-act-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.mbr-act-btn { background:linear-gradient(160deg, var(--border), rgba(255,255,255,.01));
  border:1px solid var(--border2); border-radius:12px; padding:14px 6px;
  font-size:11px; color:var(--text); font-weight:700; cursor:pointer; transition:.13s;
  box-shadow:0 2px 8px rgba(0,0,0,.12); line-height:1.5; }
.mbr-act-btn:hover { border-color:var(--orange); background:rgba(255,107,26,.06); transform:translateY(-1px); }
.mbr-status-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.mbr-status-btn { background:var(--border); border:1.5px solid var(--border2); color:var(--muted);
  border-radius:10px; padding:10px 4px; font-size:12.5px; font-weight:700; cursor:pointer; transition:.13s; }
.mbr-status-btn:hover { border-color:var(--orange); color:var(--amber); }
.brand-line { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; font-size:12px;
  color:var(--muted); padding:4px 0 2px; }
.brand-line .muted { display:block; font-size:10.5px; color:#7a8392; letter-spacing:.5px; margin-bottom:2px; }
.brand-line b { color:var(--text); font-weight:700; font-size:13px; }
@media (max-width:640px){
  .brand-line{grid-template-columns:1fr 1fr 1fr; gap:8px;}
  .brand-line b{font-size:11px;}
  .brand-line .muted{font-size:9px; margin-bottom:1px;}
}

/* 成果中心：会员先看进步，教练先做交付 */
.result-hero { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:22px;
  margin-bottom:12px; border:1px solid rgba(61,220,132,.25); border-radius:16px;
  background:linear-gradient(135deg,rgba(61,220,132,.12),rgba(56,189,248,.06)); }
.result-hero.coach { border-color:rgba(255,157,46,.28); background:linear-gradient(135deg,rgba(255,157,46,.13),rgba(255,107,26,.05)); }
.result-eyebrow { color:var(--green); font-size:10px; letter-spacing:1.8px; font-weight:900; margin-bottom:7px; }
.result-hero.coach .result-eyebrow { color:var(--amber); }
.result-title { color:var(--text); font-size:22px; font-weight:900; line-height:1.25; }
.result-sub { color:var(--muted); font-size:12px; margin-top:7px; line-height:1.55; }
.result-score { flex:none; display:flex; align-items:flex-end; gap:3px; color:var(--green); }
.result-hero.coach .result-score { color:var(--amber); }
.result-score b { font-size:42px; line-height:.9; font-variant-numeric:tabular-nums; }
.result-score > span { font-size:13px; font-weight:900; }
.result-score small { display:block; color:var(--muted); font-size:9px; font-weight:700; margin-top:4px; white-space:nowrap; }
.result-stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-bottom:12px; }
.result-stat-grid > div { min-width:0; padding:13px 10px; border-radius:12px; border:1px solid var(--border2); background:var(--card); }
.result-stat-grid b { display:block; color:var(--text); font-size:19px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.result-stat-grid span { display:block; color:var(--muted); font-size:10.5px; margin-top:3px; }
.result-primary-actions { display:grid; grid-template-columns:2fr 1fr 1fr; gap:8px; margin-bottom:22px; }
.result-primary-actions button { min-height:44px; border:1px solid var(--border2); border-radius:11px; background:var(--card); color:var(--text); font-weight:800; cursor:pointer; }
.result-primary-actions .result-primary { display:flex; align-items:center; justify-content:space-between; padding:0 15px; border-color:rgba(61,220,132,.35); color:var(--green); background:rgba(61,220,132,.09); }
.result-primary-actions.coach .result-primary { border-color:rgba(255,157,46,.4); color:var(--amber); background:rgba(255,157,46,.1); }
.training-rewards { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:-2px 0 12px; padding:11px 13px; border:1px solid rgba(255,157,46,.2); border-radius:12px; background:rgba(255,157,46,.055); }
.training-rewards > div:first-child b,.training-rewards > div:first-child span { display:block; }
.training-rewards > div:first-child b { color:var(--text); font-size:12px; }.training-rewards > div:first-child span { color:var(--muted); font-size:9.5px; margin-top:2px; }
.training-rewards > div:last-child { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:5px; }
.training-rewards > div:last-child span { padding:4px 8px; border:1px solid var(--border2); border-radius:12px; color:var(--muted); font-size:9.5px; }
.training-rewards > div:last-child span.on { border-color:rgba(255,157,46,.35); color:var(--amber); background:rgba(255,157,46,.1); }
.result-section-title { display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin:3px 2px 10px; }
.result-section-title b { color:var(--text); font-size:15px; }
.result-section-title span { color:var(--muted); font-size:10.5px; }
.result-trend-card { margin:0 0 20px; padding:15px 15px 12px; border:1px solid var(--border2); border-radius:14px; background:var(--card); }
.result-trend { height:138px; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; align-items:end; }
.result-trend-col { height:100%; min-width:0; display:grid; grid-template-rows:18px 1fr 17px; gap:4px; text-align:center; }
.result-trend-col > b { color:var(--muted); font-size:9.5px; overflow:hidden; }
.result-trend-col > div { min-height:58px; position:relative; overflow:hidden; display:flex; align-items:flex-end; justify-content:center;
  border-radius:7px; background:rgba(255,255,255,.035); }
.result-trend-col i { display:block; width:65%; min-height:8px; border-radius:6px 6px 2px 2px;
  background:linear-gradient(180deg,var(--green),rgba(56,189,248,.72)); }
.result-trend-col > span { color:var(--muted); font-size:9.5px; white-space:nowrap; }
.result-trend-empty { padding:22px 10px; text-align:center; color:var(--muted); font-size:12px; }
.stage-goal-empty { display:flex; align-items:center; gap:10px; color:var(--muted); font-size:12px; }
.stage-goal-empty > span { font-size:24px; }
.stage-goal-empty > div { flex:1; }
.stage-goal-empty b,.stage-goal-empty small { display:block; }
.stage-goal-empty b { color:var(--text); font-size:13px; margin-bottom:3px; }
.stage-goal { padding:3px 0; }
.stage-goal-head { display:flex; align-items:flex-end; justify-content:space-between; gap:10px; }
.stage-goal-head small,.stage-goal-head b { display:block; }
.stage-goal-head small { color:var(--muted); font-size:10px; margin-bottom:3px; }
.stage-goal-head b { color:var(--text); font-size:15px; }
.stage-goal-head strong { color:var(--green); font-size:22px; }
.stage-goal-bar { height:8px; overflow:hidden; border-radius:5px; background:var(--border2); margin:10px 0 7px; }
.stage-goal-bar i { display:block; height:100%; border-radius:5px; background:linear-gradient(90deg,var(--green),var(--cyan)); }
.stage-goal-meta { display:flex; justify-content:space-between; gap:8px; color:var(--muted); font-size:10.5px; }
.stage-goal-body { color:var(--text); font-size:11px; margin-top:7px; }
.stage-goal-edit { margin-top:8px; padding:0; border:0; background:none; color:var(--cyan); font-size:11px; cursor:pointer; }
.stage-goal-sheet { position:fixed; inset:0; z-index:1400; display:flex; align-items:flex-end; justify-content:center; background:var(--overlay); }
.stage-goal-dialog { width:100%; max-width:480px; max-height:90vh; overflow:auto; box-sizing:border-box; padding:20px; border-radius:20px 20px 0 0; background:var(--bg); }
.body-trend-grid { display:grid; gap:7px; }
.body-trend-row { display:grid; grid-template-columns:130px 1fr; gap:10px; align-items:center; padding:7px 9px; border:1px solid var(--border2); border-radius:9px; background:rgba(255,255,255,.025); }
.body-trend-row > div b,.body-trend-row > div span { display:block; }
.body-trend-row > div b { color:var(--text); font-size:11px; }
.body-trend-row > div span { color:var(--muted); font-size:10px; margin-top:2px; }
.body-trend-row em { font-style:normal; }.body-trend-row em.down { color:var(--green); }.body-trend-row em.up { color:var(--amber); }
.body-trend-row svg { width:100%; height:38px; overflow:visible; }
.body-trend-row polyline { fill:none; stroke:var(--cyan); stroke-width:2.5; vector-effect:non-scaling-stroke; }
.body-trend-dates { display:flex; justify-content:space-between; padding:4px 4px 0 144px; color:var(--muted); font-size:9px; }
.body-trend-empty { padding:14px; border:1px dashed var(--border2); border-radius:9px; text-align:center; color:var(--muted); font-size:11.5px; }
.coach-diet-supervision { border-color:rgba(56,189,248,.28); background:linear-gradient(135deg,rgba(56,189,248,.07),rgba(61,220,132,.025)); }
.coach-diet-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.coach-diet-stats > div { padding:10px; border:1px solid var(--border2); border-radius:10px; background:var(--border); }
.coach-diet-stats b,.coach-diet-stats span { display:block; }.coach-diet-stats b { color:var(--text); font-size:17px; }.coach-diet-stats span { color:var(--muted); font-size:10px; margin-top:2px; }
.coach-diet-tip { margin-top:9px; padding:9px 11px; border-radius:9px; background:rgba(255,157,46,.055); color:var(--muted); font-size:11px; line-height:1.65; }
.nutrition-trend { margin-bottom:12px; padding:15px; border:1px solid var(--border2); border-radius:14px; background:var(--card); }
.nutrition-trend-head { display:flex; align-items:flex-start; justify-content:space-between; }.nutrition-trend-head b,.nutrition-trend-head span { display:block; }
.nutrition-trend-head b { color:var(--text); font-size:14px; }.nutrition-trend-head span { color:var(--muted); font-size:10px; margin-top:2px; }.nutrition-trend-head strong { color:var(--green); font-size:22px; }.nutrition-trend-head small { font-size:10px; margin-left:2px; }
.nutrition-bars { height:116px; display:grid; grid-template-columns:repeat(7,1fr); gap:7px; align-items:end; margin-top:10px; }
.nutrition-bars > div { height:100%; display:grid; grid-template-rows:16px 1fr 16px; gap:3px; text-align:center; }.nutrition-bars b,.nutrition-bars small { color:var(--muted); font-size:8.5px; }
.nutrition-bars > div > span { position:relative; overflow:hidden; display:flex; align-items:flex-end; justify-content:center; gap:2px; border-radius:7px; background:rgba(255,255,255,.025); }
.nutrition-bars i,.nutrition-bars em { display:block; width:30%; min-height:3px; border-radius:4px 4px 1px 1px; }.nutrition-bars i { background:var(--amber); }.nutrition-bars em { background:var(--green); }
.nutrition-legend { display:flex; align-items:center; gap:10px; margin-top:8px; color:var(--muted); font-size:9.5px; }.nutrition-legend span:first-child { color:var(--amber); }.nutrition-legend span:nth-child(2) { color:var(--green); }.nutrition-legend b { margin-left:auto; color:var(--muted); font-weight:500; }
@media (max-width:560px){
  .result-hero { padding:17px 15px; }
  .result-title { font-size:18px; }
  .result-score b { font-size:34px; }
  .result-stat-grid { grid-template-columns:1fr 1fr; }
  .result-primary-actions { grid-template-columns:1fr 1fr; }
  .result-primary-actions .result-primary { grid-column:1/-1; }
  .training-rewards { align-items:flex-start; flex-direction:column; }.training-rewards > div:last-child { justify-content:flex-start; }
  .result-section-title { align-items:flex-start; flex-direction:column; gap:3px; }
  .result-trend { gap:5px; height:125px; }
  .result-trend-col > b, .result-trend-col > span { font-size:8.5px; }
  .body-trend-row { grid-template-columns:105px 1fr; }
  .body-trend-dates { padding-left:119px; }
  .coach-diet-stats { grid-template-columns:1fr 1fr; }
  .nutrition-bars { gap:4px; }
  .nutrition-legend { align-items:flex-start; flex-wrap:wrap; }.nutrition-legend b { width:100%; margin-left:0; }
}

/* ===== 响应式 ===== */
@media (max-width:900px){
  .steps,.stat-grid,.form-grid,.cols { grid-template-columns:1fr 1fr; }
  .rv-stats,.rv-tri { grid-template-columns:1fr 1fr; }
  .sidebar{width:200px;}
  .report-grid{grid-template-columns:1fr 1fr; gap:9px;}
}
@media (max-width:640px){
  .sidebar{position:fixed; left:-280px; top:0; bottom:0; width:280px; z-index:120;
    border-radius:0 22px 22px 0; transition:transform .26s cubic-bezier(.32,.72,.28,1);
    box-shadow:none; background:rgba(13,16,23,.97);}
  .sidebar.open{transform:translateX(280px); box-shadow:24px 0 60px var(--overlay);}
  .main{width:100%;}
  .content{padding:14px;}
  .steps,.stat-grid,.form-grid,.cols,.rv-stats,.rv-tri{grid-template-columns:1fr;}
  .stat-grid{grid-template-columns:1fr 1fr; gap:8px;}
  .steps{grid-template-columns:1fr 1fr; gap:8px;}
  .report-grid{grid-template-columns:1fr 1fr; gap:9px;}
  .report-tile{padding:12px 14px; min-height:120px;}
  .report-tile .rt-name{font-size:14.5px;}
  .report-tile .rt-when{font-size:10px;}
  .report-tile .rt-desc{font-size:11px; line-height:1.5;}
  .menu-toggle{display:flex; width:36px; height:36px; align-items:center; justify-content:center;
    font-size:17px; color:var(--text); background:var(--border);
    border:1px solid var(--border2); border-radius:11px; cursor:pointer; transition:.15s; }
  .menu-toggle:active{transform:scale(.92);}
  .topbar{padding:0 12px; gap:8px; height:52px;}
  .topbar .crumb{font-size:14px;}
  .stat-card{padding:12px 13px;}
  .stat-card .s-value{font-size:22px;}
  .stat-card .s-ico{width:28px;height:28px;font-size:14px;margin-bottom:7px;}
  .stat-card .s-label{font-size:10px;}
  .stat-card .s-delta{font-size:10px;}
  .card{padding:14px 14px; margin-bottom:10px;}
  .card-title{font-size:14px; margin-bottom:10px;}
  .section-hint{padding:7px 12px; font-size:12px; margin-bottom:10px;}
  .hist-item{flex-wrap:wrap; padding:12px 14px;}
  .hist-badges{flex-direction:row; align-items:center;}
  .hist-date{width:64px; padding-right:10px;}
  .hist-date .d{font-size:17px;}
  .step-head{padding:12px 14px; flex-wrap:wrap; gap:8px;}
  .step-body{padding:12px 14px;}
  .ex-card{padding:12px 14px; gap:12px;}
  .ex-name{font-size:14px;}
  .member-row{padding:12px 14px; gap:12px;}
  .avatar{width:38px; height:38px; font-size:16px;}
  .member-row .m-name{font-size:15px;}
  .btn{padding:9px 18px; font-size:13px;}
}
/* 抽屉遮罩 */
.drawer-mask{position:fixed; inset:0; background:var(--overlay);
  backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px);
  z-index:110; display:none; opacity:0; transition:opacity .25s; }
.drawer-mask.show{display:block; opacity:1; }

/* ===== 登录/激活/踢下线 全屏页 ===== */
.auth-screen{ position:fixed; inset:0; z-index:200; overflow-y:auto;
  background:
    radial-gradient(600px 400px at 50% -5%, rgba(255,157,46,.1), transparent 60%),
    radial-gradient(500px 380px at 90% 110%, rgba(56,189,248,.06), transparent 55%),
    var(--auth-grad);
  display:flex; align-items:center; justify-content:center; padding:20px; }
.auth-box{ width:100%; max-width:380px; padding:20px 0; }
.auth-box .auth-logo{ width:80px; height:80px; border-radius:22px; margin:0 auto 22px;
  display:block; background:rgba(255,157,46,.08); border:1.5px solid rgba(255,157,46,.4);
  box-shadow:0 0 40px rgba(255,157,46,.28), 0 12px 34px rgba(0,0,0,.45); object-fit:cover; }
.auth-box h1{ text-align:center; font-size:26px; font-weight:900; color:var(--text); margin-bottom:6px;
  letter-spacing:1.5px; }
.auth-box .sub{ text-align:center; font-size:13px; color:var(--muted); margin-bottom:26px; line-height:1.6; }
.auth-box .field{ margin-bottom:16px; }
.auth-box .field label{ font-size:12px; color:var(--muted); margin-bottom:8px; display:block; font-weight:600; }
.auth-box .field input{ width:100%; background:var(--input-bg); border:1px solid var(--border2);
  border-radius:13px; padding:15px 16px; color:var(--text); font-size:16px; outline:none;
  transition:.15s; -webkit-text-fill-color:var(--text); }
.auth-box .field input::placeholder{ color:var(--muted); opacity:.7; }
.auth-box .field input:focus{ border-color:var(--orange); box-shadow:0 0 0 3px rgba(255,157,46,.13); }
.auth-box .btn{ width:100%; padding:16px; font-size:16px; margin-top:8px; border-radius:13px;
  box-shadow:0 8px 24px rgba(255,157,46,.25); }
.auth-error{ background:rgba(251,113,133,.08); border:1px solid rgba(251,113,133,.35);
  color:var(--pink); padding:12px 16px; border-radius:11px; font-size:13px;
  margin-bottom:16px; display:none; }
.auth-error.show{ display:block; }
.auth-info{ background:var(--border); border:1px solid var(--border2);
  color:var(--text); padding:12px 16px; border-radius:11px; font-size:13px;
  margin-bottom:16px; text-align:center; line-height:1.6; }
.auth-info b{ color:var(--orange); font-weight:900; }
.auth-box .divider{ text-align:center; color:#5b6472; font-size:11px; margin:24px 0;
  letter-spacing:2px; display:flex; align-items:center; gap:12px; }
.auth-box .divider::before,.auth-box .divider::after{ content:''; flex:1; height:1px; background:var(--border); }
.phone-pick{ background:var(--border); border:1px solid var(--border); border-radius:14px;
  padding:16px; margin-bottom:12px; cursor:pointer; transition:.15s; display:flex; align-items:center; gap:14px; }
.phone-pick:hover{ border-color:var(--orange); transform:translateX(3px); }
.phone-pick.selected{ border-color:var(--orange); background:rgba(255,157,46,.08);
  box-shadow:0 0 0 2px rgba(255,157,46,.18); }
.phone-pick .pp-icon{ width:44px; height:44px; border-radius:12px; background:var(--border);
  border:1px solid var(--border2); display:flex; align-items:center; justify-content:center; font-size:20px; }
.phone-pick .pp-num{ font-size:16px; font-weight:800; color:var(--text); font-variant-numeric:tabular-nums; }
.phone-pick .pp-label{ font-size:12px; color:var(--muted); margin-top:3px; }
.code-display{ text-align:center; font-size:36px; font-weight:900; color:var(--orange);
  letter-spacing:10px; padding:24px; background:rgba(255,157,46,.07); border-radius:14px;
  margin-bottom:16px; border:1px dashed rgba(255,157,46,.4);
  font-variant-numeric:tabular-nums; }
.kicked-icon{ text-align:center; font-size:72px; margin-bottom:20px; }
.auth-badge{ display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:800;
  padding:5px 14px; border-radius:20px; background:rgba(61,220,132,.1); color:var(--green);
  border:1px solid rgba(61,220,132,.22); margin-bottom:20px; }
@media (max-width:640px){
  .auth-box{ max-width:100%; }
}

/* ===== 导出图片预览弹窗 ===== */
.export-modal{position:fixed; inset:0; z-index:300; display:none; align-items:center; justify-content:center; padding:14px;}
.export-modal.show{display:flex;}
.export-mask{position:absolute; inset:0; background:rgba(0,0,0,.78); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); animation:emFade .22s;}
.export-box{position:relative; z-index:1; max-width:520px; width:100%; max-height:92vh; display:flex; flex-direction:column; gap:10px; animation:emPop .25s cubic-bezier(.32,.72,.28,1);}
.export-img-wrap{flex:1; min-height:0; overflow:hidden; border-radius:16px; border:1px solid var(--border); background:rgba(0,0,0,.4); display:flex; align-items:center; justify-content:center; padding:8px; box-shadow:0 20px 60px rgba(0,0,0,.5);}
.export-img-wrap img{max-width:100%; max-height:calc(92vh - 130px); object-fit:contain; border-radius:10px; display:block;}
.export-hint{text-align:center; font-size:12px; color:var(--muted); padding:2px 0;}
.export-hint strong{color:var(--amber);}
.export-actions{display:flex; gap:8px; justify-content:center; flex-wrap:wrap;}
.export-actions .btn{padding:12px 18px; font-size:14px; flex:1 1 110px; min-width:0;}
@keyframes emFade{from{opacity:0;} to{opacity:1;}}
@keyframes emPop{from{transform:scale(.92); opacity:0;} to{transform:scale(1); opacity:1;}}
@media (max-width:480px){
  .export-actions .btn{font-size:13px; padding:11px 12px;}
  .export-img-wrap img{max-height:calc(92vh - 150px);}
}

/* ===== V18 饮食规划 ===== */
.diet-hero { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:14px; }
.diet-hero-item { background:linear-gradient(160deg, rgba(255,107,26,.10), var(--border));
  border:1px solid rgba(255,107,26,.25); border-radius:14px; padding:14px 16px; }
.diet-hero-item .dh-l { font-size:11px; color:var(--muted); font-weight:600; letter-spacing:.5px; }
.diet-hero-item .dh-v { font-size:26px; font-weight:900; color:var(--text); margin-top:6px; font-variant-numeric:tabular-nums; }
.diet-hero-item .dh-v small { font-size:12px; color:var(--muted); font-weight:600; }
.diet-hero-item .dh-s { font-size:10.5px; color:#5f6a7a; margin-top:5px; line-height:1.5; }
.diet-methods { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.diet-method { background:var(--border); border:1px solid var(--border); border-radius:14px;
  padding:14px 16px; cursor:pointer; transition:.16s; position:relative; }
.diet-method:hover { border-color:rgba(255,107,26,.4); transform:translateY(-2px); }
.diet-method.sel { border-color:var(--orange); background:rgba(255,107,26,.07);
  box-shadow:0 0 0 1px rgba(255,107,26,.3), 0 8px 22px rgba(0,0,0,.25); }
.dm-head { display:flex; gap:10px; align-items:center; }
.dm-icon { font-size:20px; width:36px; height:36px; border-radius:10px; display:flex; align-items:center;
  justify-content:center; background:rgba(255,107,26,.12); border:1px solid rgba(255,107,26,.25); }
.dm-name { font-size:15px; font-weight:800; color:var(--text); }
.dm-name .tag.new { background:var(--orange); color:#0d0f14; margin-left:6px; }
.dm-en { font-size:10px; color:var(--muted); letter-spacing:.8px; margin-top:2px; }
.dm-check { margin-left:auto; font-size:16px; color:var(--orange); font-weight:900; }
.dm-desc { font-size:12px; color:#b9c0cc; line-height:1.6; margin-top:10px; }
.dm-suitable { font-size:11px; color:var(--muted); margin-top:7px; }
.dm-ev { font-size:10.5px; color:var(--green); margin-top:5px; }
.dm-risk { font-size:11px; color:var(--pink); background:rgba(251,113,133,.08);
  border:1px solid rgba(251,113,133,.2); border-radius:8px; padding:7px 10px; margin-top:8px; line-height:1.5; }
.diet-week { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:10px; }
.diet-day { background:var(--border); border:1px solid var(--border); border-radius:13px; padding:13px 15px; }
.diet-day.train { border-color:rgba(255,107,26,.3); background:linear-gradient(160deg, rgba(255,107,26,.06), var(--border)); }
.diet-day.rest { border-color:rgba(61,220,132,.22); }
.dd-head { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.dd-head b { font-size:14px; color:var(--text); }
.dd-type { font-size:10.5px; font-weight:800; padding:2px 8px; border-radius:10px; }
.diet-day.train .dd-type { color:var(--orange); background:rgba(255,107,26,.12); }
.diet-day.rest .dd-type { color:var(--green); background:rgba(61,220,132,.1); }
.dd-carb { margin-left:auto; font-size:10.5px; color:var(--muted); font-weight:700; }
.dd-cal { font-size:10.5px; color:#5f6a7a; margin-bottom:8px; }
.dd-meal { font-size:12px; color:var(--text); line-height:1.6; padding:3px 0; display:flex; gap:8px; }
.dd-meal .dm-t { flex:none; width:22px; height:22px; border-radius:7px; background:rgba(255,107,26,.14);
  color:var(--orange); font-size:10.5px; font-weight:800; display:flex; align-items:center; justify-content:center; }
.dd-meal.snack .dm-t { background:rgba(61,220,132,.12); color:var(--green); }
.sup-tip { background:rgba(255,157,46,.06); border:1px solid rgba(255,157,46,.16);
  border-radius:10px; padding:10px 14px; margin-bottom:8px; font-size:12.5px; color:#b9c0cc; line-height:1.6; }
.sup-tip b { color:var(--amber); }
@media (max-width:640px){
  .diet-hero{grid-template-columns:1fr 1fr;}
  .diet-methods{grid-template-columns:1fr;}
  .diet-hero-item .dh-v{font-size:22px;}
}

/* ===== V19 康复注入 ===== */
.rehab-banner { background:rgba(255,107,26,.08); border:1px solid rgba(255,107,26,.3);
  border-left:4px solid var(--orange); border-radius:12px; padding:11px 16px;
  font-size:13px; color:#e8d5c0; line-height:1.7; margin-bottom:12px; }
.rehab-banner.warn { background:rgba(251,113,133,.07); border-color:rgba(251,113,133,.3);
  border-left-color:var(--pink); color:#f3d5d9; }
.rehab-banner b { color:var(--text); }
.ex-rehab { border-left-color:var(--green); background:rgba(61,220,132,.05); }
.rehab-zone { margin-bottom:10px; }
.rz-name { font-size:12px; font-weight:800; color:var(--amber); margin-bottom:7px; letter-spacing:1px; }
.rz-options { display:flex; flex-wrap:wrap; gap:8px; }
.rz-options .ck { display:inline-flex; align-items:center; gap:6px; font-size:12.5px; color:#b9c0cc;
  background:var(--border); border:1px solid var(--border2); border-radius:9px;
  padding:6px 11px; cursor:pointer; transition:.13s; user-select:none; }
.rz-options .ck:hover { border-color:var(--orange); }
.rz-options .ck.on { background:rgba(255,107,26,.1); border-color:var(--orange); color:var(--text); }
.rz-options .ck input { display:none; }
/* 会员详情伤病标签 */
.mt-tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.mt-tags .mt { font-size:11px; font-weight:700; padding:3px 10px; border-radius:12px;
  background:rgba(255,107,26,.1); border:1px solid rgba(255,107,26,.25); color:var(--amber); }
.mt-tags .mt.g { background:rgba(61,220,132,.08); border-color:rgba(61,220,132,.2); color:var(--green); }

/* ===== V20 排课 ===== */
.sched-nav { display:flex; align-items:center; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
.sched-week-title { font-size:13px; font-weight:800; color:var(--text); }
.sched-week { display:grid; grid-template-columns:repeat(7,1fr); gap:8px; }
.sched-day { background:var(--border); border:1px solid var(--border); border-radius:12px;
  padding:9px; min-height:130px; }
.sched-day.today { border-color:var(--orange); background:rgba(255,107,26,.05); }
.sd-head { display:flex; align-items:center; gap:6px; font-size:11.5px; font-weight:800; color:var(--text);
  padding-bottom:7px; border-bottom:1px solid var(--border); margin-bottom:7px; }
.sd-date { font-size:10px; color:var(--muted); font-weight:600; }
.sd-count { margin-left:auto; background:var(--orange); color:#0d0f14; font-size:9.5px; font-weight:900;
  min-width:16px; height:16px; border-radius:8px; display:flex; align-items:center; justify-content:center; padding:0 4px; }
.sd-empty { font-size:10.5px; color:#4a5462; text-align:center; padding:18px 0; }
.sched-card { background:var(--border); border:1px solid rgba(255,107,26,.25); border-radius:9px;
  padding:7px 8px; margin-bottom:6px; cursor:pointer; transition:.13s; }
.sched-card:hover { border-color:var(--orange); }
.sched-card.st-done { border-color:rgba(61,220,132,.3); background:rgba(61,220,132,.05); opacity:.7; }
.sc-time { font-size:10px; font-weight:900; color:var(--amber); }
.sc-name { font-size:12px; font-weight:800; color:var(--text); }
.sc-type { font-size:9.5px; color:var(--muted); }
.sc-note { font-size:9px; color:#5f6a7a; margin-top:2px; }
.sc-actions { display:flex; gap:5px; margin-top:6px; }
.sc-btn { width:20px; height:20px; border-radius:6px; border:none; font-size:11px; font-weight:900;
  display:flex; align-items:center; justify-content:center; cursor:pointer; }
.sc-btn.ok { background:rgba(61,220,132,.15); color:var(--green); }
.sc-btn.x { background:rgba(251,113,133,.12); color:var(--pink); }
.sc-done { font-size:9px; color:var(--green); font-weight:800; }
.sched-form { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.sched-form select,.sched-form input { background:var(--input-bg); border:1px solid var(--border2); color:var(--text);
  border-radius:10px; padding:9px 11px; font-size:13px; font-family:inherit; }
.today-lesson { display:flex; align-items:center; gap:12px; padding:9px 0; border-bottom:1px dashed var(--border); }
.today-lesson:last-child { border-bottom:none; }
.tl-time { font-size:13px; font-weight:900; color:var(--amber); width:44px; flex:none; }
.tl-main { flex:1; font-size:13px; color:var(--text); }

/* ===== V20 康复页 ===== */
.rehab-item { background:var(--border); border:1px solid var(--border); border-radius:12px;
  padding:12px 14px; margin-bottom:10px; }
.ri-head { font-size:14px; color:var(--text); margin-bottom:6px; display:flex; align-items:center; gap:8px; }
.ri-test { font-size:12.5px; color:#e8d5c0; background:rgba(255,157,46,.06); border-radius:8px;
  padding:7px 10px; margin:6px 0; line-height:1.6; }
.ri-sub { font-size:11px; color:var(--amber); font-weight:800; margin:8px 0 5px; letter-spacing:1px; }
.ri-move { font-size:12.5px; color:var(--text); line-height:1.8; }
.ri-move em { font-style:normal; color:var(--muted); font-size:11.5px; margin-left:6px; }
.ri-avoid { font-size:12px; color:var(--pink); margin-top:6px; }
.ri-note { font-size:11.5px; color:var(--muted); margin-top:4px; }
.ri-ev { font-size:10.5px; color:var(--green); margin-top:5px; }

/* ===== V20 全局搜索 ===== */
.search-modal { position:fixed; inset:0; background:rgba(5,7,11,.85); backdrop-filter:blur(6px);
  z-index:300; display:none; align-items:flex-start; justify-content:center; padding:7vh 16px 20px; }
.search-modal.show { display:flex; animation:emFade .18s; }
.search-box { width:100%; max-width:680px; background:var(--input-bg); border:1px solid var(--border2);
  border-radius:18px; overflow:hidden; box-shadow:0 30px 70px rgba(0,0,0,.6); max-height:82vh; display:flex; flex-direction:column; }
.search-head { display:flex; align-items:center; gap:10px; padding:14px 16px;
  border-bottom:1px solid var(--border); }
.search-head input { flex:1; background:transparent; border:none; outline:none; color:var(--text);
  font-size:15px; font-family:inherit; }
.search-body { overflow-y:auto; padding:12px 16px; }
.search-hot { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:12px; align-items:center; }
.sh-item { font-size:11.5px; color:var(--amber); background:rgba(255,157,46,.08);
  border:1px solid rgba(255,157,46,.2); border-radius:12px; padding:4px 11px; cursor:pointer; transition:.12s; }
.sh-item:hover { background:rgba(255,157,46,.16); }
.se-empty { text-align:center; color:#5f6a7a; font-size:13px; padding:30px 0; }
.se-item { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:10px;
  cursor:pointer; transition:.13s; border:1px solid transparent; margin-bottom:4px; }
.se-item:hover { background:rgba(255,107,26,.07); border-color:rgba(255,107,26,.25); }
.se-cat { flex:none; font-size:9.5px; font-weight:900; letter-spacing:.5px; color:var(--orange);
  background:rgba(255,107,26,.1); border-radius:5px; padding:3px 7px; }
.se-title { font-size:13.5px; font-weight:800; color:var(--text); }
.se-sub { font-size:11px; color:var(--muted); margin-left:auto; text-align:right; max-width:50%; overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap; }

/* ===== V20 快速入口/我的 ===== */
.quick-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:10px; margin-top:12px; }
.quick-item { background:linear-gradient(160deg, var(--border), rgba(255,255,255,.01));
  border:1px solid var(--border2); border-radius:14px;
  padding:14px 6px; text-align:center; cursor:pointer; transition:.14s; font-size:11.5px; color:var(--text); font-weight:700;
  box-shadow:0 2px 10px rgba(0,0,0,.15); }
.quick-item:hover { border-color:var(--orange); transform:translateY(-2px); background:rgba(255,107,26,.06); box-shadow:0 4px 14px rgba(255,107,26,.18); }
.qi-ico { display:flex; align-items:center; justify-content:center; width:38px; height:38px; margin:0 auto 6px;
  font-size:18px; border-radius:12px; background:rgba(255,107,26,.1); border:1px solid rgba(255,107,26,.16); }
.my-hero { display:flex; align-items:center; gap:14px; background:linear-gradient(150deg, rgba(255,107,26,.1), var(--border));
  border:1px solid rgba(255,107,26,.22); border-radius:16px; padding:16px 18px; margin-bottom:12px; }
.my-av { width:52px; height:52px; border-radius:16px; background:linear-gradient(135deg, var(--orange), #ff8c3a);
  display:flex; align-items:center; justify-content:center; font-size:24px; font-weight:900; color:#0d0f14; }
.my-name { font-size:18px; font-weight:900; color:var(--text); }
.my-sub { font-size:12px; color:var(--muted); margin-top:3px; }
.my-goal { margin-left:auto; text-align:right; }
.my-action { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.my-btn { padding:14px; font-size:14px; border-radius:13px; }

/* ===== V20 侧栏搜索/角色 ===== */
.side-search { display:flex; align-items:center; gap:8px; margin:0 14px 14px; padding:9px 12px;
  background:var(--border); border:1px solid var(--border2); border-radius:11px; }
.side-search .ico { width:15px; height:15px; color:var(--muted); flex:none; }
.side-search input { flex:1; background:transparent; border:none; outline:none; color:var(--text);
  font-size:12.5px; font-family:inherit; }
.side-search input::placeholder { color:#4a5462; }
.role-switch { flex:none; width:34px; height:34px; border-radius:10px; border:1px solid var(--border2);
  background:var(--border); color:var(--amber); font-size:16px; font-weight:900; cursor:pointer; transition:.15s; }
.role-switch:hover { border-color:var(--orange); background:rgba(255,107,26,.12); }
.mchip { flex:none; }

@media (max-width:900px){
  .sched-week{grid-template-columns:1fr 1fr;}
  .quick-grid{grid-template-columns:repeat(3,1fr);}
}
@media (max-width:640px){
  .sched-week{grid-template-columns:1fr;}
  .sched-day{min-height:auto;}
  .quick-grid{grid-template-columns:repeat(3,1fr); gap:8px;}
  .my-action{grid-template-columns:1fr;}
}

/* ===== V20.1 排课视图切换 + 列表 ===== */
.sched-top { display:flex; align-items:center; gap:6px; margin-bottom:10px; }
.view-toggle { background:var(--border); border:1.5px solid var(--border2); color:var(--muted);
  border-radius:9px; padding:7px 14px; font-size:12.5px; font-weight:800; cursor:pointer; transition:.13s; }
.view-toggle.on { background:rgba(255,107,26,.12); border-color:var(--orange); color:var(--amber); }
.view-toggle:hover { border-color:var(--orange); }
.sd-empty { font-size:11.5px; color:#5f6a7a; text-align:center; padding:18px 0; cursor:pointer;
  border:1.5px dashed var(--border2); border-radius:8px; transition:.13s; }
.sd-empty:hover { color:var(--amber); border-color:var(--orange); background:rgba(255,107,26,.05); }
.sched-list { display:flex; flex-direction:column; gap:8px; }
.sl-row { display:flex; align-items:center; gap:12px; background:var(--border);
  border:1px solid var(--border); border-left:3px solid var(--orange); border-radius:11px;
  padding:11px 13px; transition:.13s; }
.sl-row.st-done { border-left-color:var(--green); opacity:.7; }
.sl-row.past { border-left-color:#5b6472; opacity:.6; }
.sl-date { flex:none; min-width:64px; text-align:center; }
.sl-day { font-size:18px; font-weight:900; color:var(--text); line-height:1; }
.sl-day small { display:block; font-size:10px; color:var(--muted); font-weight:600; margin-top:3px; }
.sl-time { font-size:11px; font-weight:800; color:var(--amber); margin-top:3px; }
.sl-main { flex:1; min-width:0; }
.sl-name { font-size:14px; font-weight:800; color:var(--text); }
.sl-meta { font-size:11.5px; color:var(--muted); margin-top:3px; line-height:1.5; }
.sl-status { display:inline-block; font-size:10px; font-weight:800; padding:2px 8px; border-radius:8px; margin-top:4px; letter-spacing:.5px; }
.sl-status.s-today { background:rgba(255,107,26,.16); color:var(--amber); }
.sl-status.s-past { background:rgba(91,100,114,.15); color:#7b8595; }
.sl-status.s-wait { background:rgba(61,220,132,.1); color:var(--green); }
.sl-status.s-done { background:rgba(61,220,132,.1); color:var(--green); }
.sl-actions { display:flex; gap:5px; flex:none; }
@media (max-width:640px){
  .sl-row{flex-wrap:wrap;}
  .sl-actions{width:100%; justify-content:flex-end;}
  .view-toggle{padding:7px 10px; font-size:12px;}
}

/* ===== V20.2 会员删除按钮 ===== */
.mem-del { flex:none; width:32px; height:32px; border-radius:9px; border:1px solid var(--border2);
  background:rgba(251,113,133,.06); color:#8a5a64; font-size:13px; cursor:pointer; transition:.13s;
  display:flex; align-items:center; justify-content:center; }
.mem-del:hover { border-color:var(--pink); color:var(--pink); background:rgba(251,113,133,.14); }

/* ===== V22 教练统筹工作台 ===== */
/* v151 教练端首页（重设计：4 大统计 + 下一节课 + 团队 + 快捷入口） */
.coach-top { display:flex; align-items:flex-start; gap:18px; margin-bottom:18px; flex-wrap:wrap; }
.ct-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; flex:1; min-width:280px; }
.ct-greet { font-size:22px; font-weight:900; color:var(--text); letter-spacing:.3px; }
.ct-date { font-size:12.5px; color:var(--muted); margin-top:6px; white-space:nowrap; display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.ct-quote { width:100%; margin-top:8px; }
.ct-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; flex:1; min-width:280px; }
.cts { background:linear-gradient(160deg, rgba(255,107,26,.13), rgba(255,107,26,.04) 60%, var(--border));
  border:1px solid rgba(255,107,26,.2); border-radius:14px; padding:12px 10px; text-align:center;
  box-shadow:0 3px 12px rgba(0,0,0,.18); transition:.13s; }
.cts:hover { border-color:var(--orange); transform:translateY(-1px); }
.cts b { display:block; font-size:20px; font-weight:900; color:var(--amber); font-variant-numeric:tabular-nums; line-height:1.2; }
.cts span { font-size:10.5px; color:var(--muted); margin-top:4px; display:block; }
.next-lesson { display:flex; align-items:center; gap:14px; padding:14px 16px; background:linear-gradient(135deg, rgba(255,107,26,.08), rgba(255,107,26,.02));
  border-radius:12px; border:1px solid rgba(255,107,26,.15); margin-top:8px; }
.nl-time { font-size:24px; font-weight:900; color:var(--orange); width:62px; flex:none; font-variant-numeric:tabular-nums; }
.nl-main { flex:1; min-width:0; }
.nl-name { font-size:15px; font-weight:800; color:var(--text); }
.nl-meta { font-size:12px; color:var(--muted); margin-top:3px; }
.nl-count { font-size:12.5px; color:var(--amber); font-weight:800; margin-top:4px; }
.todo-item { display:flex; align-items:center; gap:10px; padding:11px 12px; border-bottom:1px dashed var(--border);
  cursor:pointer; transition:.13s; border-radius:8px; }
.todo-item:last-child { border-bottom:none; }
.todo-item:hover { background:rgba(255,107,26,.05); }
.todo-ico { font-size:18px; width:32px; height:32px; border-radius:10px; background:rgba(255,107,26,.1); border:1px solid rgba(255,107,26,.18);
  display:flex; align-items:center; justify-content:center; flex:none; }
.todo-ico { font-size:16px; }
.todo-text { flex:1; font-size:13px; color:var(--text); }
.todo-go { font-size:12px; color:var(--orange); font-weight:800; }
.mq-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px; }
/* v36：教练工作台会员操作按钮自适应列 */
.home-act-bar { display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; margin-top:12px; }
.home-act-bar .btn { font-size:12.5px; padding:9px 4px; min-width:0; }
@media (max-width:420px){ .home-act-bar{grid-template-columns:1fr 1fr 1fr; gap:6px;} .home-act-bar .btn{font-size:11.5px;padding:8px 2px;} }
.mq-card { background:var(--border); border:1px solid var(--border); border-radius:13px;
  padding:13px 15px; cursor:pointer; transition:.14s; }
.mq-card:hover { border-color:var(--orange); transform:translateY(-2px); background:rgba(255,107,26,.05); }
.mq-top { display:flex; align-items:center; gap:10px; }
.mq-av { width:38px; height:38px; border-radius:12px; display:flex; align-items:center;
  justify-content:center; font-size:17px; font-weight:900; color:#0d0f14; flex:none; }
.mq-info { flex:1; min-width:0; }
.mq-name { font-size:14px; font-weight:800; color:var(--text); }
.mq-stage { font-size:10.5px; color:var(--muted); margin-top:2px; }
.mq-status { font-size:10px; font-weight:800; padding:3px 9px; border-radius:10px; flex:none; }
.mq-status.ok { background:rgba(61,220,132,.12); color:var(--green); }
.mq-status.class { background:rgba(255,107,26,.12); color:var(--amber); }
.mq-status.idle { background:rgba(91,100,114,.14); color:#7b8595; }
.mq-metrics { display:flex; gap:14px; margin-top:9px; font-size:11px; color:var(--muted); }
.mq-metrics b { color:var(--text); }
.team-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; }
.tg-item { background:linear-gradient(160deg, rgba(56,189,248,.06), rgba(56,189,248,.01));
  border:1px solid rgba(56,189,248,.15); border-radius:12px; padding:12px 6px; text-align:center;
  box-shadow:0 2px 10px rgba(0,0,0,.15); transition:.13s; }
.tg-item:hover { border-color:rgba(56,189,248,.35); transform:translateY(-1px); }
.tg-item b { display:block; font-size:18px; font-weight:900; color:var(--text); font-variant-numeric:tabular-nums; line-height:1.2; }
.tg-item span { font-size:10px; color:var(--muted); margin-top:3px; display:block; }
@media (max-width:640px){
  .ct-stats{width:100%; margin-left:0; display:grid; grid-template-columns:1fr 1fr; gap:6px;}
  .cts{flex:1; min-width:0;}
  .team-grid{grid-template-columns:repeat(3,1fr);}
  .mq-grid{grid-template-columns:1fr; gap:10px;}
  .next-lesson{flex-wrap:wrap;}
  .mq-name{font-size:13.5px;}
  .nl-time{font-size:18px; width:48px;}
  .todo-text{font-size:12.5px;}
  .content{padding:14px 12px;}
  .ct-greet{font-size:16px;} /* v36：窄屏字号收紧避免溢出 */
}
/* v36：教练工作台窄屏排版强化 */
@media (max-width:380px){
  .ct-head{flex-direction:column;align-items:flex-start;gap:4px;}
  .ct-greet{font-size:15px;}
  .ct-date{font-size:11px;}
}

/* ===== V22 登录身份选择 ===== */
.role-pick { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:14px; }
.rp-card { background:var(--border); border:1.5px solid var(--border2); border-radius:16px;
  padding:22px 12px; text-align:center; cursor:pointer; transition:.15s; }
.rp-card:hover { border-color:var(--orange); background:rgba(255,107,26,.08); transform:translateY(-2px); }
.rp-card.selected { border-color:rgba(61,220,132,.55); background:rgba(61,220,132,.08); cursor:default; }
.rp-card.selected:hover { transform:none; }
.rp-card-switch { display:flex; flex-direction:column; justify-content:center; align-items:center; gap:6px; }
.rp-card-switch .rp-ico { color:var(--orange); }
.rp-card.selected .rp-tag { font-size:10px; font-weight:800; color:var(--green); margin-top:6px; letter-spacing:1px; }
/* V43 一行式身份模块：左 3/4 + 右 1/4，grid 强制 3:1 */
.login-role-row { display:grid; grid-template-columns:3fr 1fr; gap:8px; margin-bottom:18px; align-items:stretch; }
.role-current { display:flex; align-items:center; gap:10px; padding:14px 16px;
  background:rgba(61,220,132,.12); border:1.5px solid rgba(61,220,132,.5); border-radius:14px;
  color:var(--text); white-space:nowrap; min-width:0; min-height:52px; overflow:hidden; }
.role-current .rc-ico { font-size:24px; flex:none; }
.role-current .rc-name { font-size:15px; font-weight:900; flex:none; }
.role-current .rc-tag { font-size:10px; font-weight:800; color:var(--green);
  padding:3px 8px; border-radius:6px; background:rgba(61,220,132,.22); flex:none; }
.role-switch { font-size:10px; padding:0 8px; min-height:52px; border-radius:14px;
  display:flex; align-items:center; justify-content:center; gap:4px;
  white-space:nowrap; line-height:1; overflow:hidden; }
.role-switch .sw-ico { font-size:11px; }
.rp-ico { font-size:34px; }
.rp-name { font-size:16px; font-weight:900; color:var(--text); margin-top:9px; }
.rp-desc { font-size:11px; color:var(--muted); margin-top:5px; line-height:1.5; }
@media (max-width:420px){
  .role-pick{grid-template-columns:1fr;}
}

/* ===== V23 动作工具条 ===== */
.ex-tools { display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; align-items:center; }
/* v36：动作缩略图（左侧 SVG） */
.ex-thumb { width:72px; height:50px; flex:none; margin-right:8px; border-radius:8px; transition:.14s; }
.ex-card:hover .ex-thumb{ transform:scale(1.05); }
/* 小屏：拇指缩到 56×40 */
@media (max-width:420px){ .ex-thumb{width:54px;height:38px;margin-right:6px;} }
.ex-tag { font-size:11px; font-weight:700; padding:4px 10px; border-radius:8px; }
.ex-tag.rec { color:var(--amber); background:rgba(255,157,46,.1); border:1px solid rgba(255,157,46,.25); }
.ex-tag.last { color:#8fa0b5; background:rgba(143,160,181,.1); border:1px solid rgba(143,160,181,.2); }
.ex-tag.log-btn { color:var(--text); background:var(--border); border:1px solid var(--border2);
  cursor:pointer; font-family:inherit; transition:.13s; }
.ex-tag.log-btn:hover { border-color:var(--orange); color:var(--text); }
.rest-btn { font-size:11px; font-weight:800; padding:4px 10px; border-radius:8px; cursor:pointer;
  color:var(--cyan); background:rgba(61,180,220,.1); border:1px solid rgba(61,180,220,.3); transition:.13s; font-family:inherit; }
.rest-btn:hover { background:rgba(61,180,220,.2); }
.rest-btn.run { color:#0d0f14; background:var(--cyan); border-color:var(--cyan); animation:emFade .2s; }
.log-form { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; align-items:center;
  background:var(--border); border:1px solid var(--border2); border-radius:10px; padding:9px 10px; }
.log-form input,.log-form select { background:var(--input-bg); border:1px solid var(--border2); color:var(--text);
  border-radius:8px; padding:7px 8px; font-size:12.5px; font-family:inherit; }

/* ===== V24 阶段/进阶 ===== */
.ex-tag.stage { color:var(--text); background:var(--border); border:1px solid var(--border2); }
.ex-tag.prog { color:var(--green); background:rgba(61,220,132,.1); border:1px solid rgba(61,220,132,.25); }

/* ===== V26 每日励志语 ===== */
.ct-quote { font-size:12px; color:var(--amber); font-style:italic; margin-top:6px; opacity:.92;
  display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.ct-quote em { font-style:normal; font-size:9.5px; color:var(--muted); letter-spacing:1.5px; }
.my-quote { font-size:12.5px; color:var(--amber); font-style:italic; margin:0 0 12px; opacity:.95;
  display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; padding:9px 12px 9px 14px;
  background:linear-gradient(90deg,rgba(255,157,46,.08),rgba(255,157,46,.015));
  border-left:3px solid var(--orange); border-radius:0 12px 12px 0; }
.my-quote em { font-style:normal; font-size:9.5px; color:var(--muted); letter-spacing:1.5px; }

/* ===== V29 一键定制计划 ===== */
.custom-sheet { color: var(--text); }
.cs-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
.cs-chip { transition: all .15s; }
.cs-chip.on { border-color: var(--orange) !important; background: rgba(255,157,46,.14) !important; color: var(--amber) !important; }
.cs-min.on { border-color: var(--orange) !important; background: rgba(255,157,46,.14) !important; color: var(--amber) !important; }
.tpl-card { transition: all .15s; }
.tpl-card:hover { border-color: var(--orange) !important; background: rgba(255,157,46,.1) !important; transform: translateY(-1px); }
.tpl-card:active { transform: scale(.98); }

/* ===== V33 上课模式（训记风格推进式） ===== */
.cm-wrap { display:flex; flex-direction:column; gap:12px; }
.cm-top { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.cm-meta { font-size:13px; font-weight:800; color:var(--text); }
.cm-timer-wrap { display:flex; align-items:center; gap:8px; background:var(--border);
  border:1px solid var(--border); border-radius:20px; padding:5px 8px 5px 14px; }
.cm-timer { font-size:15px; font-weight:900; color:var(--amber); font-variant-numeric:tabular-nums; }
.cm-tbtn { background:var(--border); border:none; color:var(--text); border-radius:50%;
  width:26px; height:26px; font-size:11px; cursor:pointer; }
.cm-progress { position:relative; height:22px; background:var(--border); border-radius:11px; overflow:hidden;
  display:flex; align-items:center; justify-content:center; }
.cm-bar { position:absolute; left:0; top:0; bottom:0; background:linear-gradient(90deg,rgba(255,107,26,.75),rgba(255,157,46,.75));
  transition:width .3s; border-radius:11px; }
.cm-progress span { position:relative; font-size:11px; color:var(--text); font-weight:700; text-shadow:0 1px 2px rgba(0,0,0,.5); }
.cm-flows { display:flex; gap:6px; flex-wrap:wrap; }
.cm-flow { width:26px; height:26px; border-radius:8px; display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:800; background:var(--border); color:var(--muted); border:1px solid var(--border); cursor:pointer; }
.cm-flow.cur { background:rgba(255,107,26,.18); color:var(--amber); border-color:var(--orange); }
.cm-flow.ok { background:rgba(61,220,132,.15); color:var(--green); border-color:rgba(61,220,132,.4); }
.cm-card { background:linear-gradient(160deg, rgba(255,107,26,.08), var(--border));
  border:1px solid var(--border2); border-radius:16px; padding:16px; }
.cm-label { font-size:11px; color:var(--muted); font-weight:700; letter-spacing:.5px; margin-bottom:6px; }
.cm-name { font-size:18px; font-weight:900; color:var(--text); line-height:1.35; margin-bottom:8px; }
.cm-spec { font-size:12.5px; color:var(--muted); line-height:1.7; white-space:pre-line; margin-bottom:12px; }
.cm-set { font-size:13px; color:var(--text); margin-bottom:12px; }
.cm-set b { color:var(--amber); font-size:16px; }
.cm-inputs { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:12px; }
.cm-inp { display:flex; align-items:center; gap:6px; }
.cm-step { background:var(--border); border:1px solid var(--border2); color:var(--text);
  border-radius:8px; padding:9px 8px; font-size:12px; cursor:pointer; white-space:nowrap; }
.cm-rpe { display:flex; gap:8px; justify-content:center; margin-bottom:14px; }
.cm-rpechip { width:38px; height:38px; border-radius:50%; border:1.5px solid var(--border2);
  background:var(--border); color:var(--muted); font-weight:800; font-size:13px; cursor:pointer; }
.cm-rpechip.on { background:rgba(255,107,26,.2); color:var(--amber); border-color:var(--orange); }
.cm-finish { width:100%; font-size:16px; padding:14px; }
.cm-rest { background:rgba(61,220,132,.08); border:1px solid rgba(61,220,132,.35); border-radius:16px;
  padding:14px; text-align:center; animation:cmPop .2s; }
.cm-rest-t { font-size:12px; color:var(--green); font-weight:700; letter-spacing:2px; }
.cm-rest-n { font-size:34px; font-weight:900; color:var(--green); font-variant-numeric:tabular-nums; margin:4px 0 2px; }
.cm-nav { display:flex; gap:10px; }
.cm-nav .btn { flex:1; }
.cm-nav .btn[disabled] { opacity:.4; pointer-events:none; }
@keyframes cmPop { from { transform:scale(.94); opacity:0; } to { transform:scale(1); opacity:1; } }

/* ===== V41 上课模式训记高保真版 ===== */
.cm-top { position:sticky; top:0; z-index:5; display:flex; align-items:center; justify-content:space-between;
  padding:14px 16px; background:linear-gradient(180deg, rgba(0,0,0,.6), transparent); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); margin-bottom:6px; }
.cm-clock { display:flex; align-items:baseline; gap:8px; }
.cm-timer-big { font-size:42px; font-weight:900; color:var(--amber); font-variant-numeric:tabular-nums; line-height:1; letter-spacing:1px; }
.cm-btn-top { padding:10px 22px; border-radius:999px; background:var(--orange); color:var(--text); font-size:14px; font-weight:900; border:none; cursor:pointer; box-shadow:0 4px 14px rgba(255,107,26,.35); }
.cm-btn-top:active { transform:scale(.96); }
.cm-meta { padding:0 16px 10px; }
.cm-meta-name { font-size:16px; font-weight:900; color:var(--text); display:flex; align-items:center; gap:6px; }
.cm-edit { color:var(--muted); font-size:13px; }
.cm-meta-stats { font-size:11.5px; color:var(--muted); margin-top:4px; }
.cm-progress { height:4px; background:var(--border); border-radius:2px; margin:0 16px 14px; overflow:hidden; }
.cm-bar { height:100%; background:linear-gradient(90deg,var(--orange),#ffb347); transition:width .3s; }

.cm-acts { display:flex; flex-direction:column; gap:10px; padding:0 12px; }
.cm-act { background:var(--border); border:1px solid var(--border); border-radius:14px; overflow:hidden; transition:.15s; }
.cm-act.active { border-color:rgba(255,157,46,.45); background:rgba(255,157,46,.05); }
.cm-act.done { opacity:.7; }
.cm-act-head { display:flex; align-items:center; gap:12px; padding:12px 14px; cursor:pointer; }
.cm-act-head:active { background:var(--border); }
.cm-act.cm-dragging { opacity:.72; transform:scale(.985); border-color:var(--orange); box-shadow:0 10px 30px rgba(0,0,0,.35); }
.cm-act.cm-dragging .cm-act-head { cursor:grabbing; touch-action:none; }

@media (max-width:600px){
  .report-dark [style*="grid-template-columns:1fr 1.35fr"],
  .report-dark [style*="grid-template-columns:1fr 1fr"] { grid-template-columns:1fr !important; }
  .report-dark [style*="grid-column:1/-1"] { grid-column:auto !important; }
  .report-dark [style*="grid-template-columns:repeat(4,1fr)"] { grid-template-columns:repeat(2,1fr) !important; }
  .report-dark [style*="padding:24px 28px"] { padding:18px 16px !important; }
  .report-dark [style*="font-size:38px"] { font-size:25px !important; letter-spacing:2px !important; }
}
.cm-act-ico { font-size:24px; flex:none; width:36px; height:36px; display:flex; align-items:center; justify-content:center; background:var(--border); border-radius:10px; }
.cm-act.active .cm-act-ico { background:rgba(255,107,26,.18); }
.cm-act.done .cm-act-ico { background:rgba(61,220,132,.15); }
.cm-act-main { flex:1; min-width:0; }
.cm-act-name { font-size:14.5px; font-weight:900; color:var(--text); line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cm-act-meta { font-size:11px; color:var(--muted); margin-top:3px; }
.cm-act-points { display:flex; gap:4px; margin-top:5px; }
.cm-pt { width:7px; height:7px; border-radius:50%; background:var(--border2); display:inline-block; }
.cm-pt.done { background:var(--green); }
.cm-act-arr { font-size:14px; color:var(--muted); flex:none; }

.cm-act-body { padding:0 14px 12px; border-top:1px solid var(--border); background:var(--panel2); }
.cm-set-grid { display:flex; flex-direction:column; gap:5px; padding:10px 0; }
.cm-set-row { display:grid; grid-template-columns:22px 0.9fr 0.7fr 1.2fr 28px 44px; gap:5px; align-items:center; padding:6px 4px; border-radius:8px; transition:.1s; }
.cm-set-row.current { background:rgba(255,107,26,.1); box-shadow:inset 0 0 0 1px rgba(255,107,26,.35); }
.cm-set-row.done { opacity:.55; }
.cm-set-num { font-size:12px; color:var(--muted); text-align:center; font-weight:800; }
.cm-set-row.current .cm-set-num { color:var(--amber); }
.cm-set-row.done .cm-set-num { color:var(--green); }
.cm-set-w, .cm-set-r { background:var(--input-bg); border:1px solid var(--border2); color:var(--text); border-radius:7px; padding:6px 4px; font-size:13.5px; font-weight:700; text-align:center; font-family:inherit; min-width:0; }
.cm-set-w:focus, .cm-set-r:focus { outline:none; border-color:var(--orange); }
.cm-set-ok { background:var(--border); border:1.5px solid var(--border2); color:var(--muted); border-radius:50%; width:30px; height:30px; font-size:14px; font-weight:900; cursor:pointer; padding:0; display:flex; align-items:center; justify-content:center; }
.cm-set-ok.done { background:var(--green); border-color:var(--green); color:#0; }
.cm-set-time { font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; text-align:right; font-weight:700; }
.cm-set-row.current .cm-set-time { color:var(--amber); }

.cm-feel { display:flex; align-items:center; gap:8px; padding:8px 0 4px; font-size:12px; color:var(--muted); }
.cm-feel-l { font-weight:700; }
.cm-feel-chip { padding:5px 14px; border-radius:16px; background:var(--border); border:1px solid var(--border2); color:var(--muted); font-size:12px; cursor:pointer; }
.cm-feel-chip.on { background:rgba(255,107,26,.2); color:var(--amber); border-color:var(--orange); font-weight:800; }

.cm-rest { background:rgba(61,220,132,.08); border:1px solid rgba(61,220,132,.35); border-radius:14px; padding:14px; text-align:center; margin:12px 16px; animation:cmPop .2s; }
.cm-rest-t { font-size:11px; color:var(--green); font-weight:700; letter-spacing:2px; }
.cm-rest-n { font-size:32px; font-weight:900; color:var(--green); font-variant-numeric:tabular-nums; margin:4px 0 2px; }

.cm-bottom { position:sticky; bottom:0; padding:10px 14px 14px; display:flex; gap:10px; background:linear-gradient(0deg, rgba(0,0,0,.85), transparent); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); margin-top:12px; }
.cm-btn-primary { flex:2; padding:13px; border-radius:12px; background:var(--orange); color:var(--text); font-size:15px; font-weight:900; border:none; cursor:pointer; }
.cm-btn-primary:active { transform:scale(.98); }
.cm-btn-ghost { flex:1; padding:13px; border-radius:12px; background:var(--border); color:var(--text); font-size:14px; font-weight:800; border:1px solid var(--border2); cursor:pointer; }
/* V59 训记式底部 5 键 */
.cm-bottom.cm5 { gap:8px; align-items:center; justify-content:center; padding:10px 12px 14px; }
.cm-ico { flex:none; width:44px; height:44px; border-radius:50%; background:var(--border); border:1px solid var(--border2); color:var(--text); font-size:18px; font-weight:800; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:.12s; }
.cm-ico:active { transform:scale(.94); background:var(--border2); }
.cm-ico.cm-done { background:var(--orange); border-color:var(--orange); color:#0d0f14; font-size:20px; }
.cm-add { flex:none; width:60px; height:60px; border-radius:50%; background:linear-gradient(135deg,#38bdf8,#0ea5e9); border:none; color:var(--text); font-size:30px; font-weight:300; cursor:pointer; box-shadow:0 4px 18px rgba(56,189,248,.35); display:flex; align-items:center; justify-content:center; transition:.12s; }
.cm-add:active { transform:scale(.92); }
.cm-video { font-size:10.5px; color:var(--cyan); font-weight:800; text-decoration:none; margin-left:8px; padding:3px 8px; border:1px solid rgba(56,189,248,.4); border-radius:7px; vertical-align:middle; }
.cm-video:active { background:rgba(56,189,248,.15); }
/* V60 本动作整体备注（每动作一条，不再每组一条） */
.cm-act-note { margin-top:10px; padding:0 4px; }
.cm-act-note input { width:100%; background:var(--border); border:1px solid var(--border2); color:var(--text); border-radius:9px; padding:9px 11px; font-size:12.5px; font-family:inherit; box-sizing:border-box; }
.cm-act-note input::placeholder { color:var(--muted); }
.cm-act-note input:focus { border-color:var(--cyan); outline:none; }
.add-ex-row { display:flex; align-items:center; gap:10px; padding:9px 8px; border-bottom:1px solid var(--border); cursor:pointer; border-radius:8px; }
.add-ex-row:active { background:var(--border); }
.add-ex-row b { font-size:13px; color:var(--text); }
/* V59 训练者端训练页头部 */
.train-head { display:flex; align-items:center; gap:10px; margin-bottom:12px; padding:12px 14px; border-radius:13px; background:var(--border); border:1px solid var(--border); }
.train-head-l { flex:1; min-width:0; }
.train-head-name { font-size:16px; font-weight:900; color:var(--text); letter-spacing:.3px; }
.train-head-sub { font-size:11.5px; color:var(--muted); margin-top:3px; }
@keyframes cmPop { from { transform:scale(.94); opacity:0; } to { transform:scale(1); opacity:1; } }

/* ===== V42 动作库 + 一键更换 ===== */
.ex-lib-card { background:var(--border); border:1px solid var(--border); border-radius:12px; padding:10px; }
.ex-lib-card.custom { border-color:rgba(255,157,46,.35); background:rgba(255,157,46,.05); }
.elc-name { font-size:12.5px; font-weight:800; color:var(--text); line-height:1.5; display:flex; align-items:baseline; gap:5px; min-width:0; }
.elc-name b { flex:none; }
.elc-name em { font-style:normal; font-size:9.5px; color:var(--muted); font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.elc-spec { font-size:10.5px; color:var(--muted); margin-top:4px; line-height:1.5; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.elc-btn { width:26px; height:26px; border-radius:7px; display:inline-flex; align-items:center; justify-content:center;
  background:var(--border); border:1px solid var(--border2); color:var(--text); font-size:11px; text-decoration:none; cursor:pointer; }
.elc-btn:hover { color:var(--amber); border-color:var(--orange); }
.elc-swapped { font-size:9.5px; color:var(--amber); font-weight:800; margin-left:auto; }
.swap-item { display:flex; flex-direction:column; gap:2px; text-align:left; padding:11px 12px; border-radius:10px;
  background:var(--border); border:1px solid var(--border2); color:var(--text); cursor:pointer; }
.swap-item:hover { border-color:var(--orange); background:rgba(255,107,26,.08); }
.swap-item b { font-size:13px; }
.swap-item em { font-style:normal; font-size:10.5px; color:var(--muted); }
.cm-swap { background:var(--border); border:1px solid var(--border2); border-radius:7px; color:var(--muted);
  font-size:12px; padding:2px 6px; cursor:pointer; margin-left:6px; }
.cm-swap:hover { color:var(--amber); border-color:var(--orange); }
.cm-set-n { background:var(--input-bg); border:1px solid var(--border2); color:var(--text); border-radius:7px; padding:6px 4px; font-size:11.5px; text-align:left; font-family:inherit; min-width:0; }
.cm-set-n:focus { outline:none; border-color:var(--orange); }
.cm-set-n::placeholder { color:var(--muted); font-size:10.5px; }

/* ===== V47 动作库训记式（搜索 + 部位/器械 chips + 列表行） ===== */
.lib-search { display:flex; align-items:center; gap:8px; background:var(--border);
  border:1px solid var(--border2); border-radius:12px; padding:10px 12px; margin-bottom:10px; }
.ls-ico { font-size:14px; color:var(--muted); }
.ls-input { flex:1; background:none; border:none; color:var(--text); font-size:14px; font-family:inherit; outline:none; }
.ls-input::placeholder { color:var(--muted); }
.lib-chip-row { display:flex; gap:6px; align-items:center; margin-bottom:8px; overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:4px; }
.lib-chip-label { font-size:11px; color:var(--muted); font-weight:800; flex:none; }
.lib-chip { flex:none; display:inline-flex; align-items:center; gap:4px; padding:7px 12px; border-radius:999px;
  background:var(--border); border:1px solid var(--border2); color:var(--text); font-size:12.5px; font-weight:700; cursor:pointer; transition:.12s; }
.lib-chip em { font-style:normal; font-size:10px; color:var(--muted); font-weight:600; }
.lib-chip.on { background:rgba(255,107,26,.16); border-color:var(--orange); color:var(--amber); }
.lib-chip.on em { color:var(--amber); }
.lib-group { margin-top:14px; }
.lib-group-title { font-size:13px; font-weight:900; color:var(--text); display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.lib-group-title .tag { font-size:10px; }
.ex-row { display:flex; align-items:center; gap:10px; padding:11px 12px; background:var(--border);
  border:1px solid var(--border); border-radius:12px; margin-bottom:6px; transition:.12s; }
.ex-row:active { background:var(--border); }
.ex-row.custom { border-color:rgba(255,157,46,.35); background:rgba(255,157,46,.05); }
.ex-row-main { flex:1; min-width:0; }
.ex-row-meta { display:flex; align-items:center; gap:6px; margin-top:4px; flex-wrap:wrap; }
.er-tag { font-size:9.5px; font-weight:800; color:var(--muted); background:var(--border);
  border:1px solid var(--border2); border-radius:5px; padding:1.5px 6px; }
.er-tag.eq { color:#9fb6d8; }
.er-tag.custom { color:var(--amber); border-color:rgba(255,157,46,.4); }
.er-tag.shared { color:var(--cyan); border-color:rgba(56,189,248,.45); background:rgba(56,189,248,.08); }
.er-spec { font-size:11px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:180px; }
.ex-row-acts { display:flex; gap:6px; align-items:center; flex:none; }

/* ===== V48 今日饮食推荐 + 打卡 + 回顾 ===== */
.dm-meal { background:var(--border); border:1px solid var(--border); border-radius:12px; padding:10px; }
.dm-meal.checked { border-color:rgba(61,220,132,.4); background:rgba(61,220,132,.06); }
.dm-meal-h { display:flex; align-items:center; justify-content:space-between; gap:6px; margin-bottom:6px; }
.dm-meal-t { font-size:12.5px; font-weight:900; color:var(--text); display:flex; align-items:center; gap:6px; }
.dm-meal-h b { font-size:11px; color:var(--muted); white-space:nowrap; }
.dm-foods { display:flex; flex-wrap:wrap; gap:5px; }
.df-chip { font-size:11px; color:var(--text); background:var(--border); border:1px solid var(--border2);
  border-radius:8px; padding:4px 8px; }
.dm-meal-acts { display:flex; align-items:center; gap:8px; margin-top:8px; }
.dm-photo { width:44px; height:44px; object-fit:cover; border-radius:9px; border:1px solid var(--border2); }
.dm-summary { margin-top:12px; padding-top:10px; border-top:1px dashed var(--border2); display:flex; flex-direction:column; gap:7px; }
.dms-row { display:flex; align-items:center; gap:8px; font-size:11.5px; color:var(--muted); }
.dms-row b { color:var(--text); white-space:nowrap; font-size:11.5px; }
.dms-bar { flex:1; height:6px; background:var(--border); border-radius:3px; overflow:hidden; }
.dms-fill { height:100%; background:linear-gradient(90deg,var(--orange),#ffb347); border-radius:3px; transition:width .3s; }
.dms-fill.over { background:linear-gradient(90deg,#ff5b5b,#ff8f8f); }
.dm-mini { display:flex; gap:8px; padding:5px 0; border-bottom:1px dashed var(--border); font-size:12px; }
.dm-mini:last-of-type { border-bottom:none; }
.dm-mini-t { flex:none; font-weight:800; color:var(--text); width:52px; }
.dm-mini-f { color:var(--muted); line-height:1.5; }
/* 打卡面板 */
.dp-photo { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.dp-photo-img { width:64px; height:64px; object-fit:cover; border-radius:10px; border:1px solid var(--border2); }
.dp-photo-empty { font-size:11.5px; color:var(--muted); background:var(--border); border:1px dashed var(--border2); border-radius:10px; padding:20px 14px; }
.dp-items { display:flex; flex-direction:column; gap:5px; margin-bottom:10px; }
.dp-item { display:flex; align-items:center; gap:8px; background:var(--border); border:1px solid var(--border); border-radius:9px; padding:7px 10px; font-size:12.5px; color:var(--text); }
.dp-item > span:first-child { flex:1; }
.dp-cnt { display:flex; align-items:center; gap:7px; }
.dp-cnt button { width:24px; height:24px; border-radius:7px; background:var(--border); border:1px solid var(--border2); color:var(--text); font-size:14px; cursor:pointer; }
.dp-cnt b { min-width:14px; text-align:center; }
.dp-kcal { font-size:11px; color:var(--muted); width:62px; text-align:right; }
.dp-del { background:none; border:none; color:var(--pink); font-size:13px; cursor:pointer; }
.dp-group { margin-bottom:8px; }
.dp-group-t { font-size:11px; font-weight:800; color:var(--muted); margin-bottom:5px; }
.dp-foods { display:flex; flex-wrap:wrap; gap:6px; }
.df-btn { font-size:12px; color:var(--text); background:var(--border); border:1px solid var(--border2);
  border-radius:9px; padding:7px 10px; cursor:pointer; transition:.12s; }
.df-btn.on { background:rgba(255,107,26,.16); border-color:var(--orange); color:var(--amber); }
.dp-total { text-align:center; font-size:13px; color:var(--muted); margin:10px 0; }
/* 回顾 */
.dr-ring { width:74px; height:74px; border-radius:50%; display:flex; align-items:center; justify-content:center; flex:none; }
.dr-ring-in { width:58px; height:58px; border-radius:50%; background:var(--panel2); display:flex; align-items:center; justify-content:center; gap:2px; }
.dr-ring-in b { font-size:22px; color:var(--amber); }
.dr-ring-in span { font-size:10px; color:var(--muted); }
.dr-chart { display:flex; gap:5px; align-items:flex-end; height:64px; padding-top:6px; }
.dr-day { flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; height:100%; justify-content:flex-end; }
.dr-bar { width:100%; max-width:22px; background:rgba(255,157,46,.55); border-radius:4px 4px 0 0; transition:height .3s; }
.dr-bar.over { background:rgba(255,91,91,.6); }
.dr-day span { font-size:8.5px; color:var(--muted); }

/* ===== V49 套餐系统 ===== */
.plan-card { margin:8px 10px 4px; padding:9px 11px; border-radius:11px;
  background:var(--border); border:1px solid var(--border2); cursor:pointer; transition:.12s; }
.plan-card:active { background:rgba(255,157,46,.08); }
.pc-top { display:flex; align-items:center; justify-content:space-between; }
.pc-badge { font-size:11.5px; font-weight:900; color:var(--muted); }
.pc-up { font-size:10px; font-weight:800; color:var(--amber); }
.pc-meta { font-size:10px; color:var(--muted); margin-top:3px; }
.pt-card { background:var(--border); border:1px solid var(--border2); border-radius:12px; padding:10px; text-align:center; }
.pt-card.cur { border-color:var(--orange); background:rgba(255,107,26,.08); }
.pt-name { font-size:12px; font-weight:900; color:var(--text); }
.pt-price { font-size:15px; font-weight:900; color:var(--amber); margin:5px 0 3px; }
.pt-desc { font-size:10px; color:var(--muted); line-height:1.4; }
.pt-card { transition:.12s; }
.pt-card[style*="cursor:pointer"]:active { background:rgba(255,107,26,.1); transform:scale(.98); }
.pt-act { font-size:10.5px; color:var(--amber); font-weight:800; margin-top:6px; }
.pc-serve { font-size:9.5px; color:var(--amber); margin-top:4px; font-weight:700; }

/* ===== V54 会员 Pro 订阅 ===== */
.pro-banner { display:flex; align-items:center; gap:10px; padding:12px 15px; border-radius:14px; margin-bottom:12px;
  background:linear-gradient(135deg,rgba(255,157,46,.14),rgba(255,107,26,.07));
  border:1px solid rgba(255,157,46,.35); box-shadow:0 4px 16px rgba(0,0,0,.22); cursor:pointer; transition:.12s; }
.pro-banner:active { transform:scale(.99); }
.pro-banner.on { background:linear-gradient(135deg,rgba(61,220,132,.12),rgba(61,220,132,.05));
  border-color:rgba(61,220,132,.35); box-shadow:0 4px 16px rgba(61,220,132,.06); }
.pro-banner b { font-size:13.5px; color:var(--text); display:block; }
.pro-banner-sub { font-size:11px; color:var(--muted); display:block; margin-top:2px; }

/* ===== P1 会员状态条（v148 会员身份卡重设计 · v151 挤压修复） ===== */
.member-bar { display:flex; align-items:center; gap:12px; padding:14px 16px; border-radius:18px; margin-bottom:12px;
  background:linear-gradient(135deg, rgba(255,107,26,.13), rgba(255,107,26,.02) 60%, var(--border));
  border:1px solid rgba(255,107,26,.25); box-shadow:0 4px 18px rgba(0,0,0,.28);
  flex-wrap:wrap; cursor:pointer; transition:.15s; }
.member-bar.on { background:linear-gradient(135deg, rgba(255,192,76,.13), rgba(61,220,132,.05) 65%, var(--border));
  border-color:rgba(232,194,104,.32); box-shadow:0 5px 20px rgba(232,194,104,.07); }
.member-bar.guest { border-style:dashed; border-color:var(--border2); background:var(--border); box-shadow:none; }
.member-bar:active { transform:scale(.99); }
.mb-av { width:48px; height:48px; border-radius:14px; flex:none; overflow:hidden;
  background:linear-gradient(135deg,#ffb347,#ff7a00); display:flex; align-items:center; justify-content:center;
  font-size:20px; font-weight:900; color:#14181f; box-shadow:0 4px 12px rgba(255,122,0,.35); }
.mb-name { font-size:15.5px; font-weight:900; color:var(--text); display:flex; align-items:center; gap:6px; line-height:1.35; flex-wrap:wrap; min-width:0; }
.mb-name > .mb-badge { margin-left:0; }
.mb-badge { font-size:9.5px; font-weight:800; padding:2px 9px; border-radius:20px; flex:none; white-space:nowrap; }
.mb-badge.gold { background:linear-gradient(135deg,rgba(232,194,104,.22),rgba(232,194,104,.08)); color:var(--gold); border:1px solid rgba(232,194,104,.38); }
.mb-badge.cyan { background:rgba(56,189,248,.12); color:var(--cyan); border:1px solid rgba(56,189,248,.32); }
.mb-badge.gray { background:rgba(255,255,255,.06); color:var(--muted); border:1px solid var(--border2); }
.mb-sub { font-size:11.5px; color:var(--muted); margin-top:4px; display:flex; align-items:center; gap:5px; line-height:1.5; word-break:break-all; min-width:0; }
.mb-ops { display:flex; gap:6px; margin-left:auto; flex:none; flex-wrap:wrap; justify-content:flex-end; }
.mb-op { width:28px; height:28px; border-radius:50%; background:var(--panel2); border:1px solid var(--border2);
  display:flex; align-items:center; justify-content:center; font-size:12.5px; color:var(--muted); cursor:pointer; transition:.13s; }
.mb-op:hover { color:var(--amber); border-color:var(--orange); background:rgba(255,107,26,.12); }
.mb-op.danger:hover { color:var(--pink); border-color:rgba(251,113,133,.5); background:rgba(251,113,133,.1); }
.sup-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-top:10px; }
.sup-cell { background:var(--border); border:1px solid var(--border2); border-radius:9px;
  padding:6px 2px; text-align:center; }
.sup-cell.done { background:rgba(61,220,132,.1); border-color:rgba(61,220,132,.35); }
.sup-wd { font-size:10px; color:var(--muted); font-weight:800; }
.sup-cell.done .sup-wd { color:var(--green); }
.sup-meals { font-size:12px; font-weight:900; color:var(--text); margin-top:2px; }
.sup-kcal { font-size:8.5px; color:var(--muted); margin-top:1px; }

/* ===== V55 激活码管理 ===== */
.code-row { display:flex; align-items:center; gap:10px; padding:10px 4px; border-bottom:1px solid var(--border); }
.code-row:last-child { border-bottom:none; }
.code-main { flex:1; min-width:0; font-size:13px; }
.code-main b { font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:12.5px; letter-spacing:.5px; color:var(--text); word-break:break-all; }
.code-meta { font-size:11px; color:var(--muted); margin-top:3px; }

/* ===== V63 体态评估 ===== */
.assess-step { font-size:12.5px; font-weight:800; color:var(--muted); padding:8px 18px; border-radius:10px; border:1.5px solid var(--border2); background:var(--border); }
.assess-step.on { color:var(--amber); border-color:var(--orange); background:rgba(255,157,46,.12); }
.ap-slot { width:100%; height:150px; border-radius:12px; border:1.5px dashed var(--border2); background:var(--border); display:flex; align-items:center; justify-content:center; cursor:pointer; overflow:hidden; }
.ap-slot:active { border-color:var(--orange); }
.assess-item { border:1px solid var(--border2); border-radius:12px; margin-bottom:8px; overflow:hidden; background:var(--border); }
.assess-item.has { border-color:rgba(255,157,46,.4); }
.ai-head { display:flex; align-items:center; gap:10px; padding:11px 14px; cursor:pointer; }
.ai-name { font-size:13.5px; font-weight:800; color:var(--text); flex:none; }
.ai-test { font-size:11.5px; color:var(--muted); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ai-chev { flex:none; font-size:13px; color:var(--amber); font-weight:900; }
.ai-body { padding:0 14px 12px; }
.ai-levels { display:flex; gap:8px; flex-wrap:wrap; }
.ai-lv { font-size:12px; font-weight:800; color:var(--muted); background:var(--border); border:1.5px solid var(--border2); border-radius:20px; padding:6px 16px; cursor:pointer; }
.ai-lv.on { color:var(--text); border-color:var(--orange); background:rgba(255,157,46,.15); }

/* ===== v105：iOS PWA 独立窗口 select 失效兜底（自定义下拉） ===== */
.cs-dropdown { position:relative; width:100%; margin-bottom:10px; }
.cs-dropdown-btn { width:100%; background:var(--input-bg); border:1px solid var(--border2); color:var(--text); border-radius:9px; padding:10px 12px; font-size:13px; font-family:inherit; cursor:pointer; text-align:left; -webkit-user-select:none; user-select:none; -webkit-tap-highlight-color:transparent; }
.cs-dropdown-btn::after { content:' ⇅'; color:var(--muted); float:right; }
.cs-dropdown.open .cs-dropdown-btn { border-color:var(--orange); }
.cs-dropdown-list { display:none; position:absolute; left:0; right:0; top:calc(100% - 8px); background:var(--panel); border:1px solid var(--border2); border-radius:9px; padding:6px; z-index:100; max-height:300px; overflow-y:auto; box-shadow:0 8px 24px rgba(0,0,0,.4); }
.cs-dropdown.open .cs-dropdown-list { display:block; }
.cs-dropdown-item { padding:9px 12px; border-radius:6px; cursor:pointer; font-size:13px; color:var(--text); -webkit-tap-highlight-color:transparent; }
.cs-dropdown-item:hover, .cs-dropdown-item.on { background:rgba(255,157,46,.12); color:var(--orange); }

/* ===== v108：动作卡片内嵌操作行（换/组数/删除/加组） ===== */
.cm-act-ops { display:flex; gap:6px; flex-wrap:wrap; margin:10px 0 4px; }
.cm-op { font-size:11px; font-weight:800; padding:6px 10px; border-radius:8px; border:1.5px solid var(--border2); background:var(--border); color:var(--muted); cursor:pointer; -webkit-tap-highlight-color:transparent; }
.cm-op:active { background:var(--border2); }
.cm-op[title="换动作"] { border-color:rgba(56,189,248,.45); color:var(--cyan); }
.cm-op[title="改组数"] { border-color:rgba(255,157,46,.45); color:var(--amber); }
.cm-op[title="加一组"] { border-color:rgba(61,220,132,.4); color:var(--green); }
.cm-op[title="删一组"] { border-color:rgba(255,107,107,.45); color:#ff8a8a; }
/* v108：开始训练大按钮 */
.cm-start-btn { background:var(--orange)!important; color:#fff!important; font-size:15px!important; padding:10px 22px!important; border-radius:24px!important; box-shadow:0 4px 16px rgba(255,157,46,.35); }
/* v109：下拉 item 头像圆圈 */
.cs-item-av { display:inline-block; width:24px; height:24px; border-radius:50%; background:linear-gradient(135deg,var(--orange),#ff8c3a); color:var(--text); font-size:11px; font-weight:900; text-align:center; line-height:24px; margin-right:8px; vertical-align:middle; flex:none; background-color:var(--bg2); }
/* v109：下拉按钮布局（flex 让头像在左、⇅ 箭头在右） */
.cs-dropdown-btn { display:flex; align-items:center; gap:8px; }
.cs-dropdown-btn::after { content:'⇅'; color:var(--muted); margin-left:auto; flex:none; }

/* v114：浅色主题下的细节微调 */

/* ===== v115：手动自编计划 ===== */
.mp-chip { font-size:11.5px; font-weight:800; padding:6px 12px; border-radius:18px; border:1.5px solid var(--border2); background:var(--border); color:var(--muted); cursor:pointer; -webkit-tap-highlight-color:transparent; }
.mp-chip.on { border-color:var(--orange); background:rgba(255,157,46,.12); color:var(--amber); }

/* v116：浅色主题下登录页细节微调（白底白框一致 + 减少跳色） */

/* ===== v119 启动品牌区动效（废话少说 / 开练） ===== */
.splash-wrap { position:relative; text-align:center; padding:38px 0 10px; overflow:hidden; }
.splash-glow { position:absolute; left:50%; top:42%; width:210px; height:210px; transform:translate(-50%,-50%);
  background:radial-gradient(circle, rgba(255,157,46,.20) 0%, rgba(255,157,46,.05) 45%, transparent 68%);
  border-radius:50%; pointer-events:none; z-index:0; animation:splashBreath 3.4s ease-in-out infinite; }
.splash-line1 { position:relative; z-index:1; font-size:13px; font-weight:800; letter-spacing:8px; color:var(--muted);
  margin-bottom:4px; animation:splashIn .9s ease-out both; }
.splash-title { position:relative; z-index:1; font-size:54px; font-weight:900; line-height:1.12; letter-spacing:4px;
  background:linear-gradient(100deg, #ff9d2e 0%, #ffd166 28%, #ff9d2e 55%, #fd6e6e 82%, #ff9d2e 100%);
  background-size:240% 100%;
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 20px rgba(255,157,46,.30));
  animation:splashGrad 4.5s linear infinite, splashUp .8s .12s ease-out both; }
.splash-sub { position:relative; z-index:1; font-size:10.5px; letter-spacing:3px; color:var(--muted);
  margin-top:10px; animation:splashIn 1s .4s ease-out both; }
@keyframes splashUp { from{ opacity:0; transform:translateY(16px) scale(.98); } to{ opacity:1; transform:translateY(0) scale(1); } }
@keyframes splashIn { from{ opacity:0; letter-spacing:14px; } to{ opacity:1; letter-spacing:inherit; } }
@keyframes splashGrad { 0%{ background-position:0% 50%; } 100%{ background-position:240% 50%; } }
@keyframes splashBreath { 0%,100%{ opacity:.4; transform:translate(-50%,-50%) scale(1); } 50%{ opacity:1; transform:translate(-50%,-50%) scale(1.22); } }

/* v122：#4 动作卡目标组数可点击编辑 */
.cm-target-btn { background:rgba(56,189,248,.12); border:1px solid rgba(56,189,248,.35); color:var(--cyan);
  border-radius:8px; padding:2px 9px; font-size:12px; font-weight:900; cursor:pointer; font-family:inherit; }
.cm-target-btn:active { opacity:.7; }

/* v122：#6 训练历史卡片重排（横向紧凑） */
.hist2 { background:var(--border); border:1px solid var(--border); border-radius:13px; padding:12px 14px; margin-bottom:10px; }
.hist2-top { display:flex; align-items:center; gap:10px; }
.hist2-date { flex:none; font-size:12px; font-weight:800; color:var(--muted); font-variant-numeric:tabular-nums;
  padding:3px 9px; background:rgba(255,255,255,.05); border-radius:7px; }
.hist2-type { flex:1; min-width:0; font-size:14px; font-weight:800; color:var(--text);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.hist2-badges { display:flex; gap:6px; flex:none; }
.hist2-badges .b { font-size:10px; font-weight:800; padding:3px 9px; border-radius:20px;
  background:rgba(255,255,255,.06); color:var(--muted); white-space:nowrap; }
.hist2-badges .b.rpe { color:var(--orange); background:rgba(255,157,46,.1); }
.hist2-badges .b.cal { color:var(--amber); background:rgba(255,157,46,.08); }
.hist2-badges .b.st.ok { color:var(--green); background:rgba(61,220,132,.1); }
.hist2-meta { font-size:11.5px; color:var(--muted); margin-top:8px; line-height:1.5; }
.hist2-meta b { color:var(--amber); }
.hist2-next { font-size:11.5px; color:#8a93a5; margin-top:3px; }

/* v124：排课页美化（空状态 + 排新课卡片 grid 分行） */
.sched-empty { text-align:center; padding:36px 18px; color:var(--muted); }
.sched-empty-icon { font-size:52px; opacity:.3; margin-bottom:8px; line-height:1; }
.sched-empty-title { font-size:15px; color:var(--text); font-weight:900; margin-bottom:6px; }
.sched-empty-sub { font-size:12.5px; line-height:1.7; }
.sched-add-card { margin-top:14px; }
.sched-card-head { display:flex; align-items:flex-start; gap:10px; margin-bottom:4px; }
.sched-card-sub { font-size:12px; color:var(--muted); margin-top:4px; line-height:1.5; }
.sched-form-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px 14px; margin:14px 0; }
.sched-form-grid > label { display:flex; flex-direction:column; gap:5px; }
.sched-form-grid > label > span { font-size:11.5px; color:var(--muted); font-weight:800; letter-spacing:.3px; }
.sched-form-grid > label > input,
.sched-form-grid > label > select { background:var(--input-bg); border:1px solid var(--border2); color:var(--text);
  border-radius:8px; padding:9px 11px; font-size:13.5px; font-family:inherit; transition:border-color .15s; }
.sched-form-grid > label > input:focus,
.sched-form-grid > label > select:focus { border-color:var(--orange); outline:none; }
.sched-form-grid > label.sf-note { grid-column:1 / -1; }
.sched-form-grid > label > input[type="number"] { font-variant-numeric:tabular-nums; }
@media (max-width:400px){
  .sched-form-grid { grid-template-columns:1fr 1fr; }
}
@media (max-width:300px){
  .sched-form-grid { grid-template-columns:1fr; }
  .sched-form-grid > label.sf-note { grid-column:auto; }
}
.sched-submit { width:100%; margin-top:6px; font-size:14px; padding:13px;
  background:linear-gradient(135deg,#ff9d2e,#ff6b1a); border:none; font-weight:900; box-shadow:0 4px 14px rgba(255,157,46,.28); }

/* v124：智能推荐小标识（每组首行显示 ✨） */
.cm-ai-tip { display:inline-flex; align-items:center; gap:3px; font-size:10px; font-weight:800; color:var(--cyan);
  background:rgba(56,189,248,.12); border:1px solid rgba(56,189,248,.35); border-radius:6px;
  padding:2px 7px; margin-left:6px; letter-spacing:.3px; white-space:nowrap; }

/* v126：#2 排课表单用 div+select 替代 label+select（避免 iOS PWA label 事件冒泡拦截） */
.sched-form-grid .sf-item { display:flex; flex-direction:column; gap:5px; min-width:0; }
.sched-form-grid .sf-label { font-size:11.5px; color:var(--muted); font-weight:800; letter-spacing:.3px; }
.sched-form-grid .sf-item > input,
.sched-form-grid .sf-item > select { background:var(--input-bg); border:1px solid var(--border2); color:var(--text);
  border-radius:8px; padding:9px 11px; font-size:13.5px; font-family:inherit; transition:border-color .15s; min-width:0; width:100%; }
.sched-form-grid .sf-item > input:focus,
.sched-form-grid .sf-item > select:focus { border-color:var(--orange); outline:none; }
.sched-form-grid .sf-item > input[type="number"] { font-variant-numeric:tabular-nums; }

/* v130：排课页美化（精简课程卡片 + 表单控件） */
.sched-list { display:flex; flex-direction:column; gap:8px; }
.sl-row { display:flex; align-items:center; gap:10px; background:rgba(255,255,255,.025);
  border:1px solid var(--border2); border-left:3px solid var(--orange); border-radius:10px;
  padding:10px 12px; transition:.13s; }
.sl-row:hover { background:rgba(255,255,255,.05); }
.sl-row.st-done { border-left-color:var(--green); opacity:.65; }
.sl-row.past { border-left-color:#5b6472; opacity:.55; }
.sl-date { flex:none; min-width:50px; text-align:center; }
.sl-day { font-size:15px; font-weight:900; color:var(--text); line-height:1.1; }
.sl-day small { display:block; font-size:9.5px; color:var(--muted); font-weight:700; margin-top:2px; }
.sl-time { font-size:11px; font-weight:800; color:var(--amber); margin-top:3px; font-variant-numeric:tabular-nums; }
.sl-main { flex:1; min-width:0; }
.sl-name { font-size:13.5px; font-weight:800; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sl-meta { font-size:11px; color:var(--muted); margin-top:2px; line-height:1.45; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sl-status { display:inline-block; font-size:9.5px; font-weight:800; padding:1px 6px; border-radius:6px; margin-top:4px; letter-spacing:.3px; }
.sl-status.s-today { background:rgba(255,107,26,.18); color:var(--amber); }
.sl-status.s-past { background:rgba(91,100,114,.15); color:#7b8595; }
.sl-status.s-wait { background:rgba(61,220,132,.1); color:var(--green); }
.sl-status.s-done { background:rgba(61,220,132,.1); color:var(--green); }
.sl-actions { display:flex; gap:4px; flex:none; }
.sc-btn { width:24px; height:24px; border-radius:7px; border:1px solid var(--border2); font-size:12px; font-weight:800;
  background:rgba(255,255,255,.05); color:var(--muted); display:flex; align-items:center; justify-content:center; cursor:pointer; transition:.13s; }
.sc-btn:hover { background:rgba(255,157,46,.12); color:var(--orange); border-color:rgba(255,157,46,.3); }
.sc-btn.ok { background:rgba(61,220,132,.1); color:var(--green); border-color:rgba(61,220,132,.3); }
.sc-btn.x { background:rgba(251,113,133,.1); color:var(--pink); border-color:rgba(251,113,133,.3); }
.sl-day-today { color:var(--orange) !important; }
/* 空态：更小 */
.sched-empty { text-align:center; padding:18px 14px; color:var(--muted); border:1.5px dashed var(--border2); border-radius:10px; background:rgba(255,255,255,.015); margin-bottom:10px; }
.sched-empty-icon { font-size:28px; opacity:.4; margin-bottom:4px; }
.sched-empty-title { font-size:13px; color:var(--text); font-weight:800; margin-bottom:3px; }
.sched-empty-sub { font-size:11.5px; line-height:1.55; }
/* 排课表单：输入框更高更清晰 */
.sched-form-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px 12px; margin:12px 0; }
.sched-form-grid .sf-item { display:flex; flex-direction:column; gap:5px; min-width:0; }
.sched-form-grid .sf-label { font-size:11px; color:var(--muted); font-weight:800; letter-spacing:.3px; }
.sched-form-grid .sf-item > input,
.sched-form-grid .sf-item > select { background:var(--input-bg); border:1px solid var(--border2); color:var(--text);
  border-radius:8px; padding:9px 10px; font-size:14px; font-family:inherit; transition:border-color .15s; min-width:0; width:100%; }
.sched-form-grid .sf-item > input:focus,
.sched-form-grid .sf-item > select:focus { border-color:var(--orange); outline:none; }
.sched-form-grid .sf-item > input[type="number"] { font-variant-numeric:tabular-nums; }
.sched-form-grid .sf-item.sf-note { grid-column:1 / -1; }
.sched-submit { width:100%; margin-top:8px; font-size:14px; padding:13px;
  background:linear-gradient(135deg,#ff9d2e,#ff6b1a); border:none; font-weight:900; box-shadow:0 4px 14px rgba(255,157,46,.28); }
@media (max-width:400px){ .sched-form-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:300px){ .sched-form-grid { grid-template-columns:1fr; } .sched-form-grid .sf-item.sf-note { grid-column:auto; } }

/* v131：排课页排版修复（窄屏 3 列挤，按 2 列 + 减小 input 字号） */
.sched-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px 12px; margin:12px 0; }
.sched-form-grid .sf-item { display:flex; flex-direction:column; gap:5px; min-width:0; }
.sched-form-grid .sf-label { font-size:11px; color:var(--muted); font-weight:800; letter-spacing:.3px; }
.sched-form-grid .sf-item > input,
.sched-form-grid .sf-item > select { background:var(--input-bg); border:1px solid var(--border2); color:var(--text);
  border-radius:8px; padding:9px 10px; font-size:13.5px; font-family:inherit; transition:border-color .15s; min-width:0; width:100%; }
.sched-form-grid .sf-item > input:focus,
.sched-form-grid .sf-item > select:focus { border-color:var(--orange); outline:none; }
.sched-form-grid .sf-item > input[type="number"] { font-variant-numeric:tabular-nums; }
.sched-form-grid .sf-item.sf-note { grid-column:1 / -1; }
.sched-form-grid .sf-item > input[type="date"] { font-size:12.5px; }
.sched-form-grid .sf-item > select { font-size:13px; }
@media (min-width:540px){ .sched-form-grid { grid-template-columns:1fr 1fr 1fr; } }

/* v131：select 文字截断（避免窄屏换行） */
.sched-form-grid .sf-item > select { text-overflow:ellipsis; white-space:nowrap; overflow:hidden; padding-right:24px; }
.sched-form-grid .sf-item > select option { white-space:normal; }

/* 成果报告：动作明细改为短卡片，窄屏不再把两栏挤成竖排碎字 */
.dr-move-grid { display:grid; grid-template-columns:1fr 1fr; gap:7px; padding-top:9px; }
.dr-move-item { min-width:0; display:flex; align-items:center; gap:8px; border:1px solid rgba(255,90,31,.18);
  background:#fff; border-radius:8px; padding:8px 9px; color:#1a1d24; }
.dr-move-item > span { width:19px; height:19px; flex:none; display:flex; align-items:center; justify-content:center;
  border-radius:6px; background:rgba(255,90,31,.12); color:#ff5a1f; font-size:10px; font-weight:900; }
.dr-move-item > b { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11.5px; }
@media (max-width:640px){
  .dr-assess-top, .dr-daily-top, .dr-daily-detail, .dr-two-col { grid-template-columns:1fr !important; }
  .dr-stat-grid { grid-template-columns:1fr 1fr !important; }
  .dr-move-grid { grid-template-columns:1fr !important; }
  .dr-assess-top, .dr-daily-top { padding:14px !important; }
  .dr-daily-detail { padding:0 14px !important; }
}

/* 备案号底栏（合规）：常驻内容区底部，不随内容滚动 */
.site-footer { flex:none; display:flex; align-items:center; justify-content:center; gap:8px;
  min-height:26px; padding:5px 12px; border-top:1px solid var(--border);
  background:rgba(255,255,255,.02); }
.site-footer .f-link { font-size:10.5px; color:var(--muted); text-decoration:none;
  letter-spacing:.5px; transition:color .15s; }
.site-footer .f-link:hover { color:var(--orange); }
.site-footer .f-sep { font-size:10px; color:var(--border2); }
