:root{
  --bg:#f3f4f8; --card:#ffffff; --text:#15181d; --muted:#8b91a0;
  --border:#eceef4; --shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.06);
  --thead:#f8f9fc; --hover:#f6f7fb;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#0c0e12; --card:#14171d; --text:#eceef2; --muted:#98a0ae;
    --border:#23272f; --shadow:0 8px 24px rgba(0,0,0,.45);
    --thead:#181c23; --hover:#1a1e26; }
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  -webkit-font-smoothing:antialiased;font-feature-settings:'tnum'}
.wrap{max-width:780px;margin:0 auto;padding:20px 14px 56px}
.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  background:var(--card);border:1px solid var(--border);border-radius:22px;
  padding:22px 24px;box-shadow:var(--shadow)}
.topbar h1{margin:0;font-size:23px;font-weight:800;letter-spacing:1px}
.topbar .en{font-size:10.5px;letter-spacing:3px;color:var(--muted);margin-top:6px}
.topbar .dates{font-size:12px;color:var(--muted);margin-top:8px}
.live{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:#16a34a;
  background:#eafbef;padding:7px 14px;border-radius:20px;white-space:nowrap;flex-shrink:0}
@media (prefers-color-scheme: dark){.live{background:#12291a}}
.live .pulse{width:8px;height:8px;border-radius:50%;background:#22c55e;position:relative}
.live .pulse::after{content:'';position:absolute;inset:-4px;border-radius:50%;
  border:2px solid #22c55e;opacity:.5;animation:ping 1.8s ease-out infinite}
@keyframes ping{0%{transform:scale(.5);opacity:.7}100%{transform:scale(1.2);opacity:0}}
.today{background:var(--card);border:1px solid var(--border);border-radius:22px;
  margin-top:12px;box-shadow:var(--shadow);overflow:hidden}
.today-head{display:flex;align-items:baseline;gap:10px;padding:16px 22px 4px}
.today-head h2{margin:0;font-size:15px;font-weight:800}
.today-head span{font-size:12px;color:var(--muted)}
.t-grid{display:grid;grid-template-columns:repeat(4,1fr);padding:10px 10px 16px}
@media (max-width:640px){.t-grid{grid-template-columns:repeat(2,1fr)}}
.t-item{padding:10px 12px;border-radius:14px}
.t-item + .t-item{border-left:1px solid var(--border)}
@media (max-width:640px){.t-item + .t-item{border-left:none}}
.t-label{display:block;font-size:11.5px;color:var(--muted);font-weight:600;letter-spacing:.5px}
.t-val{display:block;font-size:34px;font-weight:800;letter-spacing:-1px;margin-top:6px}
.t-val em{font-style:normal;font-size:12px;color:var(--muted);font-weight:500;margin-left:4px;letter-spacing:0}
.t-sub{display:block;font-size:11.5px;color:var(--muted);margin-top:6px}
.t-delta{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;
  padding:4px 10px;border-radius:20px;margin-top:8px}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0 2px}
@media (max-width:640px){.kpis{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--card);border-radius:20px;padding:16px 14px 10px;box-shadow:var(--shadow);
  border:1px solid var(--border)}
.kpi-head{display:flex;align-items:center;gap:8px}
.kpi-label{font-size:12px;color:var(--muted);font-weight:500}
.kpi-val{font-size:30px;font-weight:800;margin-top:10px;letter-spacing:-1px}
.kpi-val .unit{font-size:12px;color:var(--muted);font-weight:500;margin-left:4px;letter-spacing:0}
.kpi-foot{display:flex;align-items:center;justify-content:space-between;margin-top:4px;min-height:38px}
.kpi-spark{flex:1}
.spark{width:100%;max-width:130px;height:38px;display:block}
.pill2,.kpi-foot .pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;
  padding:4px 10px;border-radius:20px;white-space:nowrap}
.card{background:var(--card);border-radius:22px;padding:22px 20px;margin-top:14px;
  box-shadow:var(--shadow);border:1px solid var(--border)}
.card-head{display:flex;align-items:center;gap:13px;margin-bottom:16px}
.card-head h2{margin:0;font-size:16.5px;font-weight:700;letter-spacing:.3px}
.card-head p{margin:3px 0 0;font-size:12px;color:var(--muted)}
.ic{display:inline-flex;align-items:center;justify-content:center;border-radius:13px;flex-shrink:0;
  color:var(--tint);background:var(--soft)}
.sub{font-size:13px;font-weight:700;margin:18px 0 8px}
.sub .muted{font-weight:400}
.chart{width:100%;display:block}
.chart .grid{stroke:var(--border);stroke-width:1}
.chart .glabel{font-size:9.5px;fill:var(--muted);text-anchor:end}
.chart .xlabel{font-size:10px;fill:var(--muted);text-anchor:middle}
.chart .dot-pt{fill:var(--card);stroke-width:2.6}
.chart .callout{font-size:11px;fill:#fff;text-anchor:middle;font-weight:700}
.chart .hot{fill:transparent;pointer-events:all;cursor:pointer}
#tip{position:fixed;display:none;z-index:99;pointer-events:none;
  background:rgba(20,22,28,.92);color:#fff;font-size:12px;font-weight:600;
  padding:7px 12px;border-radius:12px;white-space:nowrap;
  box-shadow:0 4px 16px rgba(0,0,0,.25);transform:translate(-50%,-100%)}
.legend{font-size:12px;color:var(--muted);margin-bottom:10px;display:flex;gap:16px}
.legend-item{display:flex;align-items:center}
.swatch{display:inline-block;width:11px;height:11px;border-radius:4px;margin-right:6px}
.gap{height:20px}
.day-div{display:flex;justify-content:space-between;align-items:center;margin:18px 2px 8px;
  font-size:12.5px;font-weight:700;color:var(--muted)}
.day-div span:last-child{font-weight:500}
.meal{display:flex;gap:12px;align-items:flex-start;padding:13px 14px;border:1px solid var(--border);
  border-radius:16px;margin-bottom:8px;background:var(--card)}
.badge{font-size:11.5px;font-weight:700;padding:4px 11px;border-radius:20px;flex-shrink:0;margin-top:1px}
.meal-main{flex:1;min-width:0}
.meal-desc{font-size:13.5px;font-weight:600;line-height:1.55}
.meal-note{font-size:11.5px;color:var(--muted);margin-top:4px}
.meal-chips{display:flex;flex-direction:column;gap:6px;flex-shrink:0;align-items:flex-end}
.chip{font-size:11.5px;color:var(--muted);background:var(--thead);padding:4px 10px;border-radius:12px;white-space:nowrap}
.chip b{color:var(--text);font-size:13px}
.chip.prot{color:#7c3aed;background:#f1eaff}
@media (prefers-color-scheme: dark){.chip.prot{color:#c4b5fd;background:#2a2140}}
.wrow{display:flex;align-items:baseline;gap:10px;padding:11px 4px;border-top:1px solid var(--border);font-size:13px}
.wrow:first-of-type{border-top:none}
.wdate{color:var(--muted);font-size:12px;min-width:52px}
.wval{font-weight:700;font-size:14px}
.wval em{font-style:normal;font-size:11px;color:var(--muted);font-weight:500}
.wnote{margin-left:auto;color:var(--muted);font-size:12px;text-align:right}
.wbadge{font-size:13px;font-weight:800;color:#fff;background:#10b981;padding:5px 14px;border-radius:14px}
.sub2{font-size:12.5px;font-weight:700;margin:14px 0 6px;color:var(--muted)}
.wtabs{display:flex;gap:8px;margin:4px 0 8px;flex-wrap:wrap}
.wtab{font-size:12px;font-weight:700;color:var(--muted);background:none;
  border:1px solid var(--border);border-radius:12px;padding:7px 14px;cursor:pointer}
.wtab.on{color:#fff;background:#10b981;border-color:#10b981}
.wrow2{display:flex;align-items:center;gap:10px;padding:13px 4px;
  border-top:1px solid var(--border);font-size:13px;cursor:pointer}
.wbadge.sm{font-size:11px;padding:4px 10px;border-radius:10px}
.wmain{font-weight:700;white-space:nowrap}
.wrow2 .wnote{margin-left:auto;color:var(--muted);font-size:12px;text-align:right}
.chev{color:var(--muted);font-size:18px;line-height:1;transition:transform .2s}
.wrow2.open .chev{transform:rotate(90deg)}
.wdetail{display:none;background:var(--thead);border-radius:16px;padding:16px;margin:0 0 10px}
.wdetail.open{display:block}
.wdetail .stat-grid{margin-top:0}
.wdetail .stat{background:var(--card)}
.wrow2.hide,.wdetail.hide{display:none!important}
.drow{padding:14px 4px;border-top:1px solid var(--border)}
.drow:first-child{border-top:none}
.drow.today{background:var(--thead);border-radius:16px;padding:14px 16px;border-top:none}
.drow.today + .drow{border-top:none}
.dhead{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}
.ddate{font-size:14px;font-weight:800}
.dweek{font-size:12px;color:var(--muted)}
.dtoday{margin-left:auto;font-size:11px;font-weight:700;color:#fff;background:#6366f1;
  padding:3px 10px;border-radius:10px}
.dgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
@media (max-width:640px){.dgrid{grid-template-columns:repeat(3,1fr);row-gap:12px}}
.dl{display:block;font-size:11px;color:var(--muted)}
.dv{display:block;font-size:15px;font-weight:700;margin-top:3px;font-variant-numeric:tabular-nums}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:16px}
@media (max-width:640px){.stat-grid{grid-template-columns:repeat(2,1fr)}}
.stat{background:var(--thead);border-radius:14px;padding:12px;text-align:center}
.stat-l{display:block;font-size:11px;color:var(--muted)}
.stat-v{display:block;font-size:17px;font-weight:800;margin-top:4px}
.slist{margin-top:12px}
.srow{display:flex;align-items:center;gap:12px;padding:12px 4px;border-top:1px solid var(--border)}
.srow:first-child{border-top:none}
.s-left{min-width:96px}
.s-date{font-size:13px;font-weight:700}
.s-time{font-size:11.5px;color:var(--muted);margin-top:2px}
.s-total{font-size:22px;font-weight:800;min-width:64px}
.s-total em{font-style:normal;font-size:11px;color:var(--muted);font-weight:500}
.s-chips{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.muted{color:var(--muted)}
.empty{color:var(--muted);font-size:13px;padding:10px 0}
.note{color:var(--muted);font-size:11.5px;margin:12px 2px 0;line-height:1.7}
.foot{text-align:center;color:var(--muted);font-size:11px;margin-top:22px;letter-spacing:.5px}
