:root{
  /* Apple 语义色 + Telegram 式安静 chrome：内容保持实色，仅导航层使用轻材质。 */
  --bg:#000000; --panel:#1c1c1e; --panel2:#2c2c2e; --line:rgba(84,84,88,.72);
  --ink:#f2f2f7; --mute:#c7c7cc; --dim:#aeaeb2;
  --cyan:#00dac3; --accentFill:#00dac3; --accentText:#54dfcb; --accentOn:#003b35; --accentTint:rgba(0,218,195,.10); --amber:#ff9230; --red:#ff4245; --green:#30d158; --blue:#0091ff; --purple:#db34f2; --indigo:#6d7cff; --chipInk:var(--accentOn);
  --macro-p:#64D2FF; --macro-f:#FF9F0A; --macro-c:#BF5AF2;
  --meal-breakfast:#00dac3; --meal-lunch:#0091ff; --meal-dinner:#6d7cff; --meal-snack:#db34f2;
  --solid-color:#AC8E68; --liquid-color:#64D2FF;
  --field:#1c1c1e; --fieldBd:rgba(84,84,88,.72); --hov:rgba(235,235,245,.07);
  --chromeSolid:#1c1c1e; --chromeGlass:rgba(28,28,30,.82); --chromeGroup:rgba(255,255,255,.045);
  --controlHover:rgba(235,235,245,.10); --controlPressed:rgba(235,235,245,.14);
  --nav-hover:rgba(235,235,245,.06); --nav-active:rgba(235,235,245,.12); --nav-icon-size:18px;
  --dockCardBg:rgba(235,235,245,.075); --dockLineBg:rgba(235,235,245,.045); --popoverGlass:rgba(28,28,30,.94); --hairline:rgba(235,235,245,.10);
  --topbar:var(--chromeSolid); --topTool:var(--chromeGroup); --dockCard:var(--dockCardBg); --glassLine:var(--hairline);
  --glassTop:var(--chromeGlass); --glassDock:var(--chromeGlass); --glassCard:var(--popoverGlass);
  --radius-card:16px; --radius-control:10px; --radius-small:8px;
  --text-body:15px; --text-control:14px; --text-caption:12px; --text-footnote:11px;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --ease-layer:cubic-bezier(.33,1,.68,1); --ease-slide:cubic-bezier(.25,1,.5,1);
  --dur-fast:0.16s; --dur:0.22s; --dur-slow:0.28s;
  /* 手机控件尺度（锁定，见 docs/UI_DESIGN.md §1.1）。视觉高度 ≠ 命中区。 */
  --ctrl-h:32px; --ctrl-compact:30px; --hit-icon:44px;
}
html.light{
  --bg:#f2f2f7; --panel:#ffffff; --panel2:#f2f2f7; --line:rgba(60,60,67,.18);
  --ink:#1c1c1e; --mute:#545458; --dim:#6e6e73;
  --cyan:#00c8b3; --accentFill:#00c8b3; --accentText:#007a6b; --accentOn:#003b35; --accentTint:rgba(0,200,179,.08); --amber:#c45f00; --red:#d70015; --green:#248a3d; --blue:#006edb; --purple:#9f22b0; --indigo:#4f46c8; --chipInk:var(--accentOn);
  --macro-p:#007AFF; --macro-f:#FF9500; --macro-c:#AF52DE;
  --meal-breakfast:#00c8b3; --meal-lunch:#0088ff; --meal-dinner:#6155f5; --meal-snack:#cb30e0;
  --solid-color:#A2845E; --liquid-color:#007AFF;
  --field:#f2f2f7; --fieldBd:rgba(60,60,67,.22); --hov:rgba(60,60,67,.06);
  --chromeSolid:#f8f8fa; --chromeGlass:rgba(248,248,251,.84); --chromeGroup:#ffffff;
  --controlHover:rgba(60,60,67,.085); --controlPressed:rgba(60,60,67,.12);
  --nav-hover:rgba(60,60,67,.05); --nav-active:rgba(60,60,67,.10); --nav-icon-size:18px;
  --dockCardBg:rgba(255,255,255,.68); --dockLineBg:rgba(60,60,67,.045); --popoverGlass:rgba(255,255,255,.94); --hairline:rgba(60,60,67,.13);
  --topbar:var(--chromeSolid); --topTool:var(--chromeGroup); --dockCard:var(--dockCardBg); --glassLine:var(--hairline);
  --glassTop:var(--chromeGlass); --glassDock:var(--chromeGlass); --glassCard:var(--popoverGlass);
}
@media(prefers-contrast:more){
  :root{--cyan:#54dfcb;--accentFill:#54dfcb;--accentText:#54dfcb;--line:#8e8e93;--fieldBd:#8e8e93;--hairline:rgba(235,235,245,.32);--chromeGroup:rgba(235,235,245,.13);--dockCardBg:rgba(235,235,245,.14);--dockLineBg:rgba(235,235,245,.10);--chromeGlass:var(--chromeSolid);--popoverGlass:var(--panel)}
  html.light{--cyan:#008575;--accentFill:#008575;--accentText:#006b5d;--accentOn:#ffffff;--line:#6c6c70;--fieldBd:#6c6c70;--hairline:rgba(60,60,67,.38);--chromeGroup:rgba(60,60,67,.11);--dockCardBg:#ffffff;--dockLineBg:rgba(60,60,67,.09);--chromeGlass:var(--chromeSolid);--popoverGlass:var(--panel)}
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
.srOnly{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
html{scrollbar-width:none;color-scheme:dark}
html.light{color-scheme:light}
html::-webkit-scrollbar{width:0;height:0;display:none}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--text-body);line-height:1.47;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
/* 顶栏高度 ~52px；顶距留出安全区（刘海/状态栏），否则手机上日期卡贴着顶栏像没排版 */
body{padding:calc(66px + env(safe-area-inset-top)) 10px calc(var(--dockh,158px) + 14px);max-width:720px;margin:0 auto}
body.dragging{user-select:none;-webkit-user-select:none;cursor:grabbing}
h1{font-size:15px;letter-spacing:.08em;font-weight:600;color:var(--mute);margin:0 0 2px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-card);padding:14px;margin-bottom:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
label.k{font-size:11px;color:var(--mute);letter-spacing:.08em;text-transform:uppercase}
input,select,button,textarea{font-family:var(--sans);font-size:var(--text-control);color:var(--ink);background:var(--field);border:1px solid var(--fieldBd);border-radius:var(--radius-control);padding:8px 10px;outline:none;
  transition:border-color .14s,background .14s,color .14s,transform .08s}
select{height:var(--ctrl-h);min-height:var(--ctrl-h);padding-top:0;padding-bottom:0;line-height:1.25;vertical-align:middle;box-sizing:border-box}
input:focus,select:focus,textarea:focus{border-color:var(--cyan);background:var(--panel);box-shadow:0 0 0 3px color-mix(in srgb,var(--cyan) 16%,transparent)}
input[type=number]{font-family:var(--mono);width:74px;text-align:right}
button{cursor:pointer}
button:active{transform:scale(.97)}
:where(button,[role="button"],input,select,textarea):focus-visible{outline:2px solid var(--accentText);outline-offset:2px}
@media(hover:hover){
  button:not([disabled]):hover{background:color-mix(in srgb,var(--ink) 4%,transparent);color:var(--ink)}
  .prim:not([disabled]):hover{background:color-mix(in srgb,var(--cyan) 8%,transparent);color:var(--cyan)}
  .del:not([disabled]):hover{background:transparent;color:var(--red)}
}
button[disabled]{opacity:.45;cursor:not-allowed}
button[disabled]:active{transform:none}
/* 带单位后缀的输入框：单位压在框内右侧，数字仍然右对齐 */
.fld{position:relative;display:inline-flex;align-items:center;flex:none}
.fld input{width:100%;font-family:var(--mono);text-align:right;padding:8px 22px 8px 8px}
.fld .fu{position:absolute;right:7px;font-style:normal;font-size:10px;line-height:1;color:var(--dim);font-family:var(--mono);pointer-events:none}
#km{width:88px;padding-right:30px}
.chip{cursor:pointer;padding:6px 12px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-family:var(--mono);font-size:13px;color:var(--mute);transition:background .15s,color .15s,border-color .15s,transform .08s}
.chip:active{transform:scale(.96)}
.chip.on{background:var(--cyan);color:var(--chipInk);border-color:var(--cyan);font-weight:700}
.chip.sm{font-size:12px;padding:5px 11px}
.datewrap{position:relative;display:inline-block}
.datebtn{display:inline-block;cursor:pointer;padding:8px 13px;border-radius:10px;background:var(--field);border:1px solid var(--fieldBd);font-family:var(--mono);font-size:14px;transition:border-color .14s}
.datebtn:hover{border-color:var(--cyan)}
.dateraw{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0;margin:0}
.dateraw::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;cursor:pointer}
.dateNav{display:inline-flex;align-items:center;gap:2px}
.dateNavBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--mute);cursor:pointer;transition:background .14s,color .14s,opacity .14s;flex:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
@media(hover:hover){.dateNavBtn:hover{background:var(--nav-hover);color:var(--ink)}}
.dateNavBtn:active{background:var(--nav-active)}
.dateNavBtn:disabled{opacity:.32;cursor:not-allowed}
@media(hover:hover){.dateNavBtn:disabled:hover{background:transparent;color:var(--dim)}}
.dateNavBtn svg{pointer-events:none}
.dateTodayBtn{height:28px;min-height:0;padding:4px 8px;border:0;border-radius:999px;background:transparent;color:var(--accentText);font-size:11px;white-space:nowrap}
.dateTodayBtn:disabled{opacity:.32}
.dateMileageRow{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}
.dateControl,.mileageControl{display:flex;align-items:center;gap:6px;min-width:0}
.mileageControl{justify-content:flex-end}
@media (max-width:899px){.dateNavBtn{width:36px;height:36px}}
body.viewing-history #fab{opacity:.32;pointer-events:none}
body.viewing-history #clear,body.viewing-history #syncBtn{display:none!important}
body.viewing-history #dtchips{pointer-events:none;opacity:.78}
body.viewing-history .li.readonly .lwrap{padding-left:4px}
body.viewing-history .li.readonly .zb{cursor:default;opacity:.5}
body.viewing-history .li.readonly .lname{cursor:pointer}
body.viewing-history .li.readonly .fld.fa{border-color:transparent;background:transparent}
body.viewing-history .li.readonly .fld.fa .fu{color:var(--mute);font-style:normal}
.readonlyMeasure{display:inline-flex;align-items:baseline;justify-content:flex-end;gap:3px;min-width:62px;color:var(--mute);font:12px var(--mono);white-space:nowrap}
.readonlyMeasure b{font-weight:500;color:var(--ink)}.readonlyMeasure i{font-style:normal;color:var(--dim);font-size:10px}
.tde{display:grid;justify-items:end;align-items:center;gap:2px;font-family:var(--mono);font-size:13px;line-height:1.05;color:var(--dim)}
.tde b{color:var(--accentText);font-weight:700}
.tde small{max-width:170px;color:var(--mute);font:9px/1.1 var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.results{margin-top:8px;max-height:230px;overflow:auto;border:1px solid var(--line);border-radius:8px;background:var(--panel);background-clip:padding-box;display:none}
.results.show{display:block;animation:slideDown .15s ease}
.fitem{padding:9px 11px;border-bottom:1px solid var(--line);cursor:pointer;display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.fitem:last-child{border-bottom:none}
.fitem:hover{background:var(--hov)}
.fitem:active{background:var(--panel2)}
.resultcap{padding:6px 10px 3px;color:var(--dim);font-size:10px;letter-spacing:.08em;background:var(--panel2)}
.results>.resultcap:first-child{border-radius:7px 7px 0 0}
.fitem>div:first-child{min-width:0}
.fname,.cat{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fname{font-size:14px}
.fbrand{font-size:11px;color:var(--dim)}
.fkcal{flex:none;font-family:var(--mono);font-size:12px;color:var(--mute);white-space:nowrap}
.cat{font-size:10px;color:var(--dim);letter-spacing:.05em}

.meal{margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:2px 10px 6px}
.meal.emptyMeal{padding-bottom:2px}
.mhead{font-size:11px;letter-spacing:.1em;color:var(--accentText);margin:5px 0 4px;padding-left:2px;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:32px}
.mhead .inc{color:var(--dim);letter-spacing:0}
.mhead b{font-weight:600}.mhead i{font-style:normal}
.mealSummary{min-width:0;padding:5px 2px;border:0;border-radius:5px;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;text-align:left;cursor:pointer}
.mealSummary:hover,.mealSummary:focus-visible{background:transparent!important;color:var(--ink);outline:none;text-decoration:none}
.mealSummary:active,.daySummary:active,.lname:active,.lk:active{transform:none}
.mealLabel{display:inline-flex;align-items:center;min-height:28px;padding:5px 2px;color:var(--dim)}
.mealAdd{width:28px;height:28px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--accentText);font-size:0;line-height:1;flex:none;display:grid;place-items:center}
.mealAdd::before{content:'+';font:500 20px/1 var(--sans);transform:translateY(-1px)}
.mealAdd:hover{background:color-mix(in srgb,var(--cyan) 7%,transparent)!important;color:var(--accentText)!important}
.li{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px solid var(--line);border-radius:8px;transition:background .14s}
.li:first-of-type{border-top:none}
.li:hover{background:var(--hov)}
.li.phold{opacity:.3}                                    /* 拖动时留在原位的占位符 */
.li.fly{background:var(--panel);border:1px solid var(--cyan);border-radius:10px;padding:7px 10px;
  box-shadow:0 14px 30px rgba(0,0,0,.28);cursor:grabbing}
.lwrap{flex:1;min-width:0;display:flex;align-items:center;gap:5px}
.lctl{flex:none;display:flex;align-items:center;gap:6px}
.lname{min-width:0;padding:2px 0;border:0;border-radius:4px;background:transparent;color:var(--ink);font-size:14px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.lname:hover,.lname:focus-visible{text-decoration:underline dotted var(--dim);text-underline-offset:3px;background:transparent!important}
.lname small{color:var(--dim);font-size:11px}
.lname.unmatched,.li.unmatched select.pick{color:var(--red)}
.pickWrap{display:grid;flex:1;min-width:0;gap:2px;align-self:flex-start}
.pickWrap .pickShell{width:100%}
.parsemeta{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dim);font:10px/1.25 var(--sans);padding:0 3px}
.pickShell{position:relative;display:flex;align-items:center;flex:1;min-width:0;min-height:var(--ctrl-h);height:var(--ctrl-h);border:1px solid color-mix(in srgb,var(--line) 78%,var(--panel));border-radius:9px;background:color-mix(in srgb,var(--panel2) 34%,var(--panel));transition:border-color .14s,background-color .14s,box-shadow .14s}
.pickShell::after{content:'';position:absolute;right:9px;top:50%;width:5px;height:5px;border-right:1.5px solid var(--dim);border-bottom:1.5px solid var(--dim);transform:translateY(-65%) rotate(45deg);pointer-events:none}
.pickShell:focus-within{border-color:color-mix(in srgb,var(--cyan) 46%,var(--line));background:var(--panel);box-shadow:0 0 0 2px color-mix(in srgb,var(--cyan) 8%,transparent)}
select.pick{appearance:none;-webkit-appearance:none;width:100%;max-width:100%;min-width:0;height:100%;min-height:0;border:0;border-radius:inherit;background:transparent;box-shadow:none;color:var(--ink);font-size:13px;line-height:1.25;padding:0 26px 0 8px;cursor:pointer;color-scheme:dark;display:flex;align-items:center}
html.light select.pick{color-scheme:light}
select.pick:focus{outline:none;box-shadow:none}
select.pick option{background:var(--panel);color:var(--ink)}
.pickShell.unmatched{border-color:color-mix(in srgb,var(--red) 55%,var(--line));background:color-mix(in srgb,var(--red) 4%,var(--panel))}
.pickShell.unmatched::after,select.pick.unmatched{color:var(--red);border-color:var(--red)}
@supports (appearance:base-select){
  select.pick,select.pick::picker(select){appearance:base-select;-webkit-appearance:base-select}
  select.pick::picker-icon{display:none}
  select.pick::picker(select){margin-block-start:4px;padding:4px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);box-shadow:0 12px 28px rgba(0,0,0,.24);max-block-size:min(300px,60vh);overflow:auto}
  select.pick option{padding:7px 9px;border-radius:7px;background:var(--panel);color:var(--ink);font-size:13px;cursor:pointer}
  select.pick option:hover,select.pick option:focus{background:var(--hov)}
  select.pick option:checked{background:color-mix(in srgb,var(--cyan) 10%,var(--panel));color:var(--ink)}
  select.pick option::checkmark{display:none}
}
.zb{display:inline-grid;place-items:center;font-size:9px;line-height:1;color:var(--dim);border:1px solid var(--line);border-radius:4px;padding:0 3px;flex:none;cursor:pointer}
.zb.on{color:var(--amber);border-color:var(--amber)}
.zdiv{font-size:10px;color:var(--dim);text-align:center;letter-spacing:.25em;padding:3px 0}
.modebtn{font-family:var(--mono);font-size:11px;padding:5px 7px;min-width:30px;cursor:pointer;flex:none}
.lctl .fld input{font-size:13px;padding:6px 20px 6px 7px;font-variant-numeric:tabular-nums}
.fld.fa{width:70px}                                      /* 数量 */
.fld.fe{width:58px}                                      /* 可食率；份模式下留同宽空位，热量/× 才永远对齐 */
.li .fld.fa input,.li .fld.fe input{border-color:color-mix(in srgb,var(--fieldBd) 48%,transparent);background:color-mix(in srgb,var(--field) 58%,var(--panel));color:var(--mute)}
.li .fld.fa .fu,.li .fld.fe .fu{color:color-mix(in srgb,var(--dim) 72%,transparent)}
.li .fld.fa input:focus,.li .fld.fe input:focus{border-color:var(--cyan);background:var(--panel);color:var(--ink)}
.lk{font-family:var(--mono);font-size:12.5px;color:var(--mute);width:46px;text-align:right;flex:none;background:none;border:0;padding:4px 3px;cursor:pointer;text-decoration:underline dotted transparent;text-underline-offset:3px;transition:color .14s,text-decoration-color .14s}
.lctl .lk:hover,.lctl .lk:focus-visible{color:var(--ink);text-decoration-color:var(--dim);outline:none}
.lk.nodata,.lctl .lk.nodata:hover,.lctl .lk.nodata:focus-visible{color:var(--red);text-decoration:none;cursor:default}
.del{background:none;border:none;color:var(--dim);font-size:18px;padding:2px 2px;cursor:pointer;line-height:1;flex:none;width:22px;text-align:center}
.del:active{color:var(--red)}
.empty{color:var(--dim);font-size:13px;text-align:center;padding:18px 0}
.empty>span,.empty>small{display:block}.empty>small{margin-top:6px;font-size:10px;color:var(--dim)}
.dh{width:28px;height:28px;min-height:0;padding:0;border:0;background:transparent;cursor:grab;color:var(--dim);font-size:14px;line-height:1;flex:none;touch-action:none;user-select:none;-webkit-user-select:none}
.dh:hover,.dh:focus-visible{background:var(--controlHover)!important;color:var(--mute)}
.dh:active{cursor:grabbing;color:var(--cyan)}
.dropz{color:var(--dim);font-size:11px;text-align:left;padding:0 2px 5px;margin:0}
.li.sync-added{position:relative;overflow:hidden;transform-origin:50% 0;animation:freshDrop .48s cubic-bezier(.18,.9,.3,1) both}
.li.sync-added::after{content:'';position:absolute;inset:-30% auto -30% -45%;width:24%;transform:skewX(-18deg);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--cyan) 28%,transparent),transparent);animation:freshSheen .9s .08s ease-out both;pointer-events:none}
.fld.fa.sync-qty{animation:qtyRise .52s cubic-bezier(.18,.9,.3,1)}
.fld.fa.sync-qty input{animation:qtyInk .72s ease-out}
.fld.fa.sync-qty.sync-down{animation-name:qtyDrop}
.fld.fa.sync-qty.sync-down input{animation-name:qtyInkDown}
.li.sync-focus{scroll-margin-top:78px;scroll-margin-bottom:calc(var(--dockh,150px) + 22px)}
@keyframes freshDrop{from{opacity:0;clip-path:inset(0 0 88% 0 round 8px);transform:translateY(-8px) scale(.97)}to{opacity:1;clip-path:inset(0 round 8px);transform:none}}
@keyframes freshSheen{from{left:-45%}to{left:125%}}
@keyframes qtyRise{0%{transform:scale(.88)}55%{transform:scale(1.07)}100%{transform:none}}
@keyframes qtyDrop{0%{transform:scale(1.08)}55%{transform:scale(.93)}100%{transform:none}}
@keyframes qtyInk{0%,65%{color:var(--cyan);border-color:var(--cyan);box-shadow:0 0 0 3px color-mix(in srgb,var(--cyan) 16%,transparent)}100%{color:var(--ink);border-color:var(--fieldBd);box-shadow:none}}
@keyframes qtyInkDown{0%,65%{color:var(--amber);border-color:var(--amber);box-shadow:0 0 0 3px color-mix(in srgb,var(--amber) 16%,transparent)}100%{color:var(--ink);border-color:var(--fieldBd);box-shadow:none}}

#pv{position:fixed;z-index:82;min-width:188px;max-width:260px;background:var(--panel);border:1px solid var(--hairline);border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,.22);padding:0;font-size:12px;display:none;pointer-events:none;user-select:none;-webkit-user-select:none;overflow:hidden}
#pv.show{display:block;pointer-events:auto;animation:fadeIn .12s ease}
#pv.pinned{z-index:84;pointer-events:auto;user-select:text;-webkit-user-select:text}
#pv .pvBody{max-height:calc(100dvh - 16px);padding:12px 14px;overflow:auto;overscroll-behavior:contain;scrollbar-width:none}
#pv .pvBody::-webkit-scrollbar{display:none}
#pv .pvClose{position:absolute;z-index:3;top:0;right:0;width:44px;height:44px;min-height:0;padding:0;border:0;border-radius:50%;background:radial-gradient(circle,var(--panel2) 0 14px,transparent 14.5px);opacity:0;visibility:hidden;pointer-events:none;transform:scale(.9);transition:opacity .1s ease,transform .1s ease,visibility 0s linear .1s}
#pv .pvClose::before,#pv .pvClose::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:1.5px;border-radius:1px;background:var(--mute);transform:translate(-50%,-50%) rotate(45deg)}
#pv .pvClose::after{transform:translate(-50%,-50%) rotate(-45deg)}
#pv.pinned .pvClose{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition-delay:0s}
#pv .pvClose:hover,#pv .pvClose:focus-visible{background:radial-gradient(circle,var(--controlHover) 0 14px,transparent 14.5px);outline:none}
#pv .pvClose:hover::before,#pv .pvClose:hover::after,#pv .pvClose:focus-visible::before,#pv .pvClose:focus-visible::after{background:var(--ink)}
#pv .pvt{font-weight:700;color:var(--ink);font-size:13px;margin-bottom:1px;padding-right:32px}
#pv .pvbr{color:var(--dim);font-weight:400;font-size:11px}
#pv .pvb{color:var(--dim);font-size:11px;margin-bottom:6px;font-family:var(--mono)}
#pv .pvsrc{margin:2px 0 6px;padding:3px 5px;border:1px solid color-mix(in srgb,var(--cyan) 42%,var(--line));border-radius:5px;color:var(--accentText);font-size:10px;letter-spacing:.03em}
#pv .pvr{display:flex;justify-content:space-between;gap:14px;line-height:1.75}
#pv .pvr span:first-child{color:var(--mute)}
#pv .pvr span:last-child{font-family:var(--mono);color:var(--ink)}
#pv .pvr.child{padding-left:12px;font-size:11px}
#pv .pvr.child span:first-child{color:var(--dim)}
#pv.pvstats{width:330px;max-width:calc(100vw - 16px)}
#pv .pvsection{margin:8px 0 6px;padding-top:7px;border-top:1px solid var(--line);color:var(--dim);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
#pv .shareChart{display:block}
#pv .shareEmpty{padding:8px 0;color:var(--dim);font-size:11px;text-align:center}
#pv .shareQuality{margin-top:7px;padding-top:6px;border-top:1px solid var(--line);color:var(--dim);font-size:11px;line-height:1.45}
#pv .solidLiquidQuality{border-top-style:dashed}
#pv .structureRows{display:grid;gap:7px}
#pv .structureRow{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:8px}
#pv .structureRow>span{color:var(--dim);font-size:11px;font-weight:600}
#pv .structureBar{position:relative;height:6px;overflow:visible}
#pv .structureTrack{position:absolute;inset:0;display:flex;border-radius:999px;background:var(--line);overflow:hidden;isolation:isolate}
#pv .structureFill{display:block;height:100%;min-width:1px;flex-shrink:1;pointer-events:none;transition:filter .12s ease}
#pv .structureFill.active{filter:brightness(.86)}
#pv .structureHit{position:absolute;z-index:2;inset:-8px 0;display:flex}
#pv .structureSeg{position:relative;display:block;height:100%;min-width:1px;border:0;background:transparent;cursor:pointer;outline:none}
#pv .structureLegend{grid-column:2;display:flex;min-width:0;flex-wrap:wrap;gap:4px 10px;margin-top:-3px;color:var(--dim);font:10px var(--mono)}
#pv .structureLegend span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
#pv .structureLegend i{width:6px;height:6px;border-radius:50%;background:var(--legend-color);flex:none}
#pv .structureTip{position:absolute;top:calc(100% + 7px);left:0;z-index:4;display:none;min-width:132px;max-width:210px;padding:7px 9px;border:1px solid var(--hairline);border-radius:8px;background:var(--panel);box-shadow:0 8px 20px rgba(0,0,0,.16);pointer-events:none}
#pv .structureTip.show{display:block}
#pv .structureTip b{display:block;color:var(--ink);font-size:11px}
#pv .structureTip span{display:block;margin-top:2px;color:var(--mute);font:10px var(--mono)}

.dock{position:fixed;left:0;right:0;bottom:0;transform:none;width:auto;padding:8px 12px calc(8px + env(safe-area-inset-bottom));
  background:var(--topbar);border-top:1px solid var(--hairline);box-shadow:0 -2px 12px rgba(0,0,0,.045);pointer-events:auto;transition:transform .2s cubic-bezier(.2,.8,.2,1),opacity .15s ease}
.dockin{max-width:1120px;margin:0 auto;background:transparent;border:0;border-radius:0;padding:0;box-shadow:none}
.dockline{font-family:var(--mono);font-size:12px;background:var(--dockLineBg);border:1px solid var(--hairline);border-radius:var(--radius-control);padding:6px 7px 6px 10px;display:flex;align-items:center;gap:10px}
.docklineText{min-width:0;flex:1;overflow:hidden}
.dockline b{color:var(--accentText)}
.dockline .warn{color:var(--red)}
.copy{font-size:11px;padding:5px 10px;white-space:nowrap;cursor:pointer}.dock .copy{flex:none;align-self:center;background:var(--chromeGroup);border-color:var(--hairline)}
.copy:active{background:var(--cyan);color:var(--chipInk)}
.flags{display:block;line-height:1.45;max-height:2.9em;overflow:hidden;font-size:12px;color:var(--amber);font-family:var(--sans)}
.flags .flg{display:inline}
.flags .flg:not(:first-child)::before{content:' · ';color:var(--dim)}
.flags .ok{color:var(--mute)}
.flags .r{color:var(--red)}

.macros{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.mac{flex:1 1 96px;min-width:90px;background:var(--dockCardBg);border:1px solid var(--hairline);border-radius:var(--radius-control);padding:7px 9px;position:relative;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--ink) 3%,transparent),0 1px 2px rgba(0,0,0,.035)}
.mac .lab{font-size:11px;color:var(--mute);letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mac .val{font-family:var(--mono);font-size:16px;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s}
.mac .val .unit{font-size:11px;color:var(--dim);margin-left:3px}
.mac .tgt{font-size:11px;color:var(--dim);font-family:var(--mono);white-space:nowrap;display:flex;justify-content:space-between;align-items:center;gap:4px;overflow:hidden}
.mac .tgt .tg{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mac .sub{display:flex;flex-direction:column;gap:1px;font:11px var(--mono);color:var(--dim);white-space:nowrap;flex:none;position:absolute;bottom:13px;right:8px}
.mac .sub b{font-weight:500;color:var(--dim)}
.mac .sub .hi{color:var(--red)}
.mac .miss{color:var(--mute)}
.miss{color:var(--amber)}
.bar{height:3px;background:var(--line);border-radius:2px;margin-top:5px;overflow:hidden}
.bar span{display:block;height:100%;background:var(--cyan);transition:width .32s cubic-bezier(.3,.9,.3,1),background-color .24s ease}
.val.lo{color:var(--amber)} .val.hi{color:var(--red)} .val.ok{color:var(--green)}

.ghost{background:none;font-size:12px;color:var(--mute);cursor:pointer;padding:7px 11px}
.ghost:active{color:var(--ink)}
details{margin-top:10px}
summary{cursor:pointer;font-size:12px;color:var(--dim);letter-spacing:.05em}
.sourcepanel{padding:10px 12px}
.sourcemgr,.pasteMgr{margin-top:0}
.sourcemgr>summary,.pasteMgr>summary{list-style:none;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--mute);letter-spacing:.04em}
.sourcemgr>summary::-webkit-details-marker,.pasteMgr>summary::-webkit-details-marker{display:none}
.sourcemgr>summary::before,.pasteMgr>summary::before{content:'▸';color:var(--dim);font-size:10px;transition:transform .15s}
.sourcemgr[open]>summary::before,.pasteMgr[open]>summary::before{transform:rotate(90deg)}
.sourcemgr>summary small,.pasteMgr>summary small{margin-left:auto;color:var(--dim);font:10px var(--mono);letter-spacing:0;font-weight:400}
.pasteMgr{margin:0}
.pasteBody{padding-top:2px}
.sourceBlock{margin-top:7px;padding:7px 8px 6px;border:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:10px;background:color-mix(in srgb,var(--panel2) 18%,transparent)}
.sourceBlock.sourcePrimary{border-color:color-mix(in srgb,var(--line) 92%,transparent);background:color-mix(in srgb,var(--panel2) 28%,transparent)}
.sourceBlock.sourcePrimary .sourceBlockHead b{color:var(--ink)}
.sourceBlock+.sourceBlock{margin-top:6px}
.sourcemgr[open]>.sourceBlock{animation:layerIn .24s var(--ease-layer) both}.sourcemgr[open]>.sourceBlock:nth-of-type(2){animation-delay:.025s}
.sourceBlockHead{display:flex;align-items:center;justify-content:space-between;gap:8px}.sourceBlockHead>span{min-width:0;display:flex;align-items:baseline;gap:7px}.sourceBlockHead b{font-size:11px;color:var(--mute);letter-spacing:.05em;white-space:nowrap}.sourceBlockHead small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dim);font:9px var(--mono)}.sourceBlockHead>.sourceBlockTools{width:auto;display:flex;align-items:center;justify-content:flex-end;gap:4px;flex:none}.sourceBlockTools .dbbtn{width:auto;min-width:0;padding:4px 7px;font-size:10px;white-space:nowrap}
.sourceRow{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:6px;align-items:center;margin-top:6px}
.sourceRow label{font-size:10px;color:var(--dim);letter-spacing:.04em}
.sourceRow input{min-width:0;width:100%;font-size:12px;padding:6px 8px}
.sourceRow .dbbtn{width:auto;min-width:0;font-size:10px;padding:6px 8px;white-space:nowrap}
.sourceActions{width:auto;display:flex;align-items:center;justify-content:flex-end;gap:4px;justify-self:end}
.sourceRow input[readonly]{opacity:.72;border-style:dashed;color:var(--dim);cursor:default}
.sourceClear{color:var(--red)}
.sourceClear[hidden]{display:none}
.sourceState{margin:2px 0 0 48px;color:var(--dim);font:10px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sourceFallback{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin:5px 0 0 48px;padding-top:5px;border-top:1px dashed var(--line);font-size:10px;color:var(--dim)}.sourceFallback>span:first-child{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sourceFallback small{font-size:8px;color:var(--dim)}.sourceFallback>span:last-child{width:auto;display:flex;align-items:center;justify-content:flex-end;gap:4px}.sourceFallback .dbbtn{width:auto;min-width:0;padding:4px 7px;font-size:9px;white-space:nowrap}.localSourceState{margin-top:2px}
.note{font-size:11px;color:var(--dim);margin-top:6px;line-height:1.5}
.note b{color:var(--mute)}
.dbline{font-size:11px;color:var(--dim);font-family:var(--mono)}
.dbline b{color:var(--mute)}
.dbctx{margin-top:6px;font-size:11px;color:var(--dim);font-family:var(--mono);min-height:16px;line-height:1.5}
.dbCats{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.dbCats .chip{padding:4px 9px;font-size:11px;min-height:28px}
.dbctx b{font-weight:700;color:var(--cyan);font-size:11px}
.dbbtn{border:1px solid var(--line);border-radius:8px}
.toolMinor{margin:9px 0 0;padding-top:7px;border-top:1px solid var(--line)}
.toolMinor>summary{list-style:none;font-size:10px}.toolMinor>summary::-webkit-details-marker{display:none}
.toolMinor>summary::before{content:'＋';display:inline-block;width:14px;color:var(--dim)}.toolMinor[open]>summary::before{content:'−'}
.prim{border-color:var(--cyan);color:var(--cyan)}

.modal{position:fixed;inset:0;z-index:70;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.34);padding:16px}
.modal.show{display:flex;animation:fadeIn .18s ease-out}
.modal.show .mcard{animation:enter .22s var(--ease-layer) both}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideDown{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
@keyframes layerIn{from{opacity:0;transform:translate3d(0,-7px,0)}to{opacity:1;transform:none}}
/* 统一弹窗/卡片进场：淡入 + 轻微上移 + 轻微缩小归位；只动 transform/opacity */
@keyframes enter{from{opacity:0;transform:translate3d(0,-10px,0) scale(.97)}to{opacity:1;transform:none}}
@keyframes sheetEnter{from{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:none}}
.mcard{width:min(420px,94vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.3)}
.mtop{flex:none;display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line);font-weight:700}
.mhd{flex:none;padding:10px 16px 0}
.mbody{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:10px 16px 14px;scrollbar-width:none}
.mbody::-webkit-scrollbar{display:none}
.mfoot{flex:none;display:flex;justify-content:flex-end;gap:6px;padding:10px 16px;border-top:1px solid var(--line)}
.mclose{background:none;border:0;color:var(--mute);font-size:17px;line-height:1;padding:4px 6px;cursor:pointer;user-select:none;-webkit-user-select:none}
.mclose:active{color:var(--ink)}
.mgrid{display:grid;grid-template-columns:80px 1fr;gap:8px 10px;align-items:center;margin-top:10px}
.mgrid label{font-size:12px;color:var(--mute)}
.mgrid label small{color:var(--dim);font-size:9px;margin-left:1px}
.mgrid input,.mgrid select{width:100%;height:var(--ctrl-h);min-height:var(--ctrl-h);padding-top:0;padding-bottom:0;line-height:1.25;box-sizing:border-box}
.tcAgePair{min-width:0;display:grid;grid-template-columns:minmax(68px,.62fr) minmax(132px,1.38fr);gap:6px;align-items:center}.tcBirthField{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px;align-items:center}.tcBirthField span{font-size:10px;color:var(--dim);white-space:nowrap}.tcBirthField input{min-width:0}.tcAgePair>input[readonly]{color:var(--mute);background:var(--panel2)}
.tcActNote{margin-top:7px;padding:6px 8px;border:1px dashed var(--line);border-radius:8px;color:var(--dim);font-size:9px;line-height:1.45;background:var(--panel2)}
.tdeeModalCard{width:min(540px,94vw)}
.tcWeightHistory{margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.tcWeightWindows{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:8px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.tcWeightWindows button{min-width:0;border:0;border-radius:7px;padding:6px 4px;background:transparent;color:var(--dim);font-size:10px;cursor:pointer;transition:background .16s,color .16s,box-shadow .16s}
.tcWeightWindows button.on{color:var(--accentText);background:color-mix(in srgb,var(--cyan) 9%,var(--panel));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cyan) 25%,var(--line))}
.tcWeightPager{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:6px;margin-top:7px}.tcWeightPager b{text-align:center;color:var(--mute);font:10px var(--mono);white-space:nowrap}.tcWeightPager .dbbtn{padding:5px 7px;font-size:9px}.tcWeightAdd{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:6px;margin-top:8px}
.tcWeightList{display:grid;gap:4px;margin-top:7px;max-height:210px;overflow:auto;overscroll-behavior:contain;scrollbar-width:none}.tcWeightList::-webkit-scrollbar{display:none}.tcWeightItem{display:grid;grid-template-columns:minmax(0,1fr) 72px 24px;align-items:center;gap:7px;min-width:0;padding:5px 6px 5px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font:9px var(--mono);line-height:1.3;color:var(--mute)}.tcWeightItem>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcWeightItem b{color:var(--cyan);font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.tcWeightItem button{width:24px;height:22px;border:0;border-radius:6px;background:transparent;color:var(--dim);padding:0;cursor:pointer}.tcWeightItem button:hover{background:var(--hov);color:var(--red)}.tcWeightEmpty{font-size:10px;color:var(--dim);padding:3px 0}
.tcScaleImport{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}.tcScaleImport span{min-width:0;color:var(--dim);font:9px var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tcScaleImport .dbbtn{flex:none;padding:6px 8px;font-size:10px}
.fatPlanModal{width:min(720px,94vw)}
.fatPlanSliders{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.fatPlanSlider{display:grid;grid-template-columns:1fr auto;gap:5px 10px;padding:10px 11px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);transition:border-color .16s,background .16s,box-shadow .16s}.fatPlanSlider[hidden]{display:none}.fatPlanSlider>span:first-child{font-size:11px;color:var(--mute)}.fatPlanValue{display:flex;align-items:center;border:1px solid var(--fieldBd);border-radius:8px;background:var(--field);overflow:hidden}.fatPlanValue input{width:72px;padding:5px 3px 5px 7px;border:0;border-radius:0;background:transparent;text-align:right;color:var(--ink);font:12px var(--mono);box-shadow:none}.fatPlanValue input[type=number]{appearance:textfield;-moz-appearance:textfield}.fatPlanValue input::-webkit-inner-spin-button,.fatPlanValue input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fatPlanValue i{padding-right:7px;font-style:normal;color:var(--dim);font:8px var(--mono);white-space:nowrap}.fatPlanRange{grid-column:1/-1;display:block;min-width:0;line-height:1}.fatPlanRange[hidden]{display:none}.fatPlanSlider input[type=range]{display:block;width:100%;height:20px;margin:0;padding:0;border:0;background:transparent;appearance:none;-webkit-appearance:none;cursor:ew-resize}.fatPlanSlider input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:99px;background:linear-gradient(90deg,var(--cyan) 0 var(--range-p,50%),var(--line) var(--range-p,50%) 100%)}.fatPlanSlider input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:17px;height:17px;margin-top:-6px;border:3px solid var(--panel);border-radius:50%;background:var(--cyan);box-shadow:0 1px 5px rgba(0,0,0,.2)}.fatPlanSlider input[type=range]::-moz-range-track{height:5px;border-radius:99px;background:var(--line)}.fatPlanSlider input[type=range]::-moz-range-progress{height:5px;border-radius:99px;background:var(--cyan)}.fatPlanSlider input[type=range]::-moz-range-thumb{width:12px;height:12px;border:3px solid var(--panel);border-radius:50%;background:var(--cyan)}.fatPlanScale{position:relative;display:block;width:100%;height:14px;margin:0;color:var(--dim);font:7px/14px var(--mono)}.fatPlanScale i{position:absolute;top:0;font-style:normal;white-space:nowrap}.fatPlanScale i:first-child{left:0;text-align:left}.fatPlanScale i:nth-child(2){left:var(--scale-mid,50%);transform:translateX(-50%);text-align:center}.fatPlanScale i:last-child{right:0;text-align:right}.fatPlanSlider.driver{border-color:color-mix(in srgb,var(--cyan) 42%,var(--line));background:var(--panel2);box-shadow:0 4px 12px rgba(0,0,0,.05)}.fatPlanSlider.driver .fatPlanValue{border-color:color-mix(in srgb,var(--cyan) 55%,var(--fieldBd))}.fatPlanSlider.driver .fatPlanValue input{color:var(--cyan)}.fatPlanDriverNote{margin-top:6px;color:var(--dim);font-size:9px;text-align:right}
.fatPlanScale i[hidden]{display:none}
.fatPlanResult{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}.fatPlanSummary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.fatPlanKpi{min-width:0}.fatPlanKpi small{display:block;color:var(--dim);font-size:9px}.fatPlanKpi b{display:block;margin-top:3px;color:var(--cyan);font:14px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fatPlanKpi span{display:block;margin-top:2px;color:var(--mute);font-size:9px}.fatPlanEnergy{margin-top:11px}.fatPlanEnergy>div{display:flex;justify-content:space-between;color:var(--dim);font:8px var(--mono)}.fatPlanEnergy>i{display:block;height:6px;margin-top:5px;border-radius:99px;background:color-mix(in srgb,var(--amber) 25%,var(--line));overflow:hidden}.fatPlanEnergy>i>b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--cyan) 65%,white),var(--cyan));transition:width .22s var(--ease-layer)}.fatPlanMacros{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:8px}.fatPlanMacro{padding:9px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}.fatPlanMacro small{display:block;color:var(--dim);font-size:9px}.fatPlanMacro b{display:block;margin-top:3px;font:13px var(--mono);color:var(--ink)}.fatPlanWarn{margin-top:9px;color:var(--amber);font-size:10px}
.mres{margin-top:12px;padding:10px 12px;border:1px dashed var(--line);border-radius:10px;font-family:var(--mono);font-size:12.5px;line-height:1.8;color:var(--mute)}
.mres b{color:var(--cyan);font-size:15px}
.msec{margin-top:14px;font-size:11px;color:var(--dim);letter-spacing:.06em}
.gPaste{margin-top:10px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.gPaste>summary{display:flex;align-items:center;gap:7px;color:var(--mute);font-size:11px;cursor:pointer;list-style-position:inside}.gPaste>summary small{margin-left:auto;color:var(--dim);font-size:9px;font-weight:400}.gPaste>summary::marker{color:var(--cyan)}
.gPaste textarea{display:block;width:100%;min-height:116px;margin-top:8px;padding:8px 9px;resize:vertical;border:1px solid var(--fieldBd);border-radius:8px;background:var(--field);color:var(--ink);font:11px/1.55 var(--mono);outline:none}.gPaste textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 2px color-mix(in srgb,var(--cyan) 13%,transparent)}
.gPasteActions{display:flex;justify-content:flex-end;gap:5px;margin-top:7px;flex-wrap:wrap}.gPasteActions .dbbtn{padding:6px 9px;font-size:9px}.gPasteActions #gPasteRead{margin-right:auto}
.gPasteResult{display:grid;gap:5px;max-height:270px;margin-top:7px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.gParseSummary{color:var(--dim);font:9px var(--mono)}
.gParseRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.gParseRow.ready{border-color:color-mix(in srgb,var(--cyan) 32%,var(--line))}.gParseRow.incomplete{border-color:color-mix(in srgb,var(--amber) 36%,var(--line))}.gParseRow.added{opacity:.62}
.gParseMain{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;min-width:0}.gParseMain b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:11px}.gParseMain>span{color:var(--accentText);font:8px var(--mono);white-space:nowrap}.gParseRow.incomplete .gParseMain>span{color:var(--amber)}.gParseMain small,.gParseMain em{grid-column:1/-1;display:block;min-width:0;color:var(--dim);font:8px/1.35 var(--mono);font-style:normal;white-space:normal;overflow-wrap:anywhere}.gParseMain em{color:var(--amber)}
.gParseRowActions{display:flex;gap:4px}.gParseRowActions .dbbtn{padding:5px 7px;font-size:8px;white-space:nowrap}
.g2{display:grid;grid-template-columns:76px 54px 1fr;gap:6px}
.g2 input,.g2 select{width:100%;min-width:0}
.gBasis{display:grid;grid-template-columns:auto 76px 56px 1fr;gap:5px;align-items:center;color:var(--mute);font-size:11px}.gBasis input,.gBasis select{width:100%;min-width:0}.gBasis span:last-child{white-space:nowrap}
.g3{display:grid;grid-template-columns:1fr auto auto 1fr auto;gap:5px;align-items:center}
.g3 input{width:100%;min-width:0}
.gu{font-size:10px;color:var(--dim);font-family:var(--mono)}
.geq{display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:12px}
.ghint{font-size:10px;color:var(--dim);margin:-3px 0 2px}
.gname{flex:1;min-width:0;font-size:13px;line-height:1.4;white-space:normal;overflow-wrap:anywhere}
.gname small{color:var(--dim);font-size:11px}
.grow{display:flex;align-items:center;gap:7px;margin-top:5px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}.grow .lk{flex:0 1 auto;width:auto;min-width:max-content;padding:0;white-space:nowrap}.grow .gname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}.grow.deleted{opacity:.58}.grow.deleted .gname{text-decoration:line-through}.grow .restore{color:var(--cyan);font-size:16px}.genFootStart{display:flex;gap:5px;margin-right:auto}.mfoot #gCopyServ,.mfoot #gCopy100{white-space:nowrap}

#fitModal .mcard{width:min(540px,96vw)}
#fitModal .mfoot{justify-content:space-between;flex-wrap:wrap}
#fitCopy{white-space:nowrap}
.fitkm{margin-top:6px;font-family:var(--mono);font-size:12px}
.fkh,.fkr{display:grid;grid-template-columns:36px 1fr 56px 56px;gap:8px;padding:3px 2px}
.fkh{color:var(--dim);font-size:10px;border-bottom:1px solid var(--line)}
.fkr{border-bottom:1px dashed var(--line);color:var(--mute)}
.fkr span:first-child{color:var(--ink)}
.metrics{margin-top:6px}
.mrow{display:grid;grid-template-columns:72px minmax(70px,auto) 1fr;gap:8px;align-items:baseline;padding:5px 0;border-bottom:1px solid var(--line)}
.zbar{display:flex;height:7px;border-radius:99px;overflow:hidden;margin-top:8px;background:var(--line)}
.zbar i{display:block;height:100%;min-width:0}
.aeNote{margin-top:6px;font-size:10px;color:var(--dim);line-height:1.5}
.aeAlgo{margin-top:6px;padding:7px 9px;border:1px dashed var(--line);border-radius:8px;background:var(--panel2)}
.aeAlgo b{display:block;font-size:11px;color:var(--ink);font-weight:700}
.aeAlgo p{margin:3px 0 0;font-size:10px;color:var(--dim);line-height:1.5}
.mrow:last-child{border-bottom:none}
.ml{font-size:11px;color:var(--mute)}
.mv{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--ink)}
.mh{font-size:10px;color:var(--dim);text-align:right}

.mwhead,.mwrow{display:grid;grid-template-columns:60px 1fr 1fr 1.2fr;gap:6px;align-items:center}
.mwhead{font-size:10px;color:var(--dim);letter-spacing:.06em;margin-top:10px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.mwrow{padding:5px 0;border-bottom:1px solid var(--line)}
.mwrow input{width:100%;font-family:var(--mono);font-size:12px;padding:6px 2px;text-align:center}
.mwn{font-size:12px;color:var(--ink)}
.mwz{font-size:10px;color:var(--dim);font-family:var(--mono);text-align:right}

.rsec{margin-top:16px;font-size:11px;color:var(--cyan);letter-spacing:.1em;font-weight:700;border-bottom:1px solid var(--line);padding-bottom:5px}
.kpis{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
/* 三行都必须自截断：值与副标题是动态文本（日期区间、TDEE 说明），撑破卡片才是错的显示 */
.kpi{flex:1 1 116px;min-width:100px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:7px 9px;overflow:hidden}
.kpi .kl,.kpi .kv,.kpi .ks{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .kl{font-size:10px;color:var(--mute);letter-spacing:.04em}
.kpi .kv{font-family:var(--mono);font-size:16px;color:var(--ink);margin-top:1px;font-variant-numeric:tabular-nums}
.kpi .ks{font-size:10px;color:var(--dim);font-family:var(--mono)}
.rt{width:100%;margin-top:8px;font-size:12px;border-collapse:collapse}
.rt th{font-size:10px;color:var(--dim);text-align:left;font-weight:400;padding:4px 6px;border-bottom:1px solid var(--line)}
.rt td{padding:5px 6px;border-bottom:1px solid var(--line);font-family:var(--mono);color:var(--mute)}
.rt td:first-child{font-family:var(--sans);color:var(--ink)}
.rt td.num,.rt th.num{text-align:right}
.bar2{height:6px;border-radius:99px;background:color-mix(in srgb,var(--cyan) 5%,var(--line));overflow:hidden;margin-top:5px}
.bar2 i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--cyan) 62%,white),var(--cyan));box-shadow:inset 0 1px 0 color-mix(in srgb,white 25%,transparent);transition:width .28s var(--ease-layer)}
#logRange select,#logRange input{border-color:color-mix(in srgb,var(--cyan) 20%,var(--line));background-color:color-mix(in srgb,var(--cyan) 3%,var(--panel));color:var(--mute)}
.warnbox{margin-top:10px;padding:8px 10px;border:1px dashed var(--amber);border-radius:8px;font-size:11px;color:var(--amber);line-height:1.6}
.okc{color:var(--green)} .amc{color:var(--amber)} .rdc{color:var(--red)}

.dbrow{display:grid;grid-template-columns:1fr 62px 46px 46px 46px 54px;gap:6px;padding:6px 2px;border-bottom:1px solid var(--line);font-size:12px;align-items:baseline}
.dbrow.h{color:var(--dim);font-size:10px;position:sticky;top:0;background:var(--glassCard);z-index:2;padding-top:10px}
.dbrow b{font-weight:400;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.dbname{max-width:100%;padding:0;border:0;border-radius:4px;background:transparent;color:inherit;font:inherit;font-weight:400;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dbname:hover,.dbname:focus-visible{color:var(--accentText);outline:none}
.dbrow i{font-style:normal;font-family:var(--mono);color:var(--mute);text-align:right}
.dbrow small{color:var(--dim);font-size:10px}
.dbrow:hover{background:var(--hov)}
.dbrow.h:hover{background:var(--glassCard)}
.dbcat{display:block;width:100%;margin:10px -2px 4px;padding:6px 4px 4px;border:0;border-bottom:1px solid var(--line);background:var(--glassCard);color:var(--accentText);font-size:10px;font-weight:700;letter-spacing:.12em;text-align:left;cursor:pointer}
.dbcat:hover,.dbcat:focus-visible{color:var(--ink);outline:none}
.dbsub{color:var(--accentText)!important}
.rankModalCard{position:relative;width:min(720px,96vw);height:min(760px,88vh)}
.rankToolbar{display:grid;grid-template-columns:minmax(124px,.7fr) minmax(148px,1fr) auto auto;gap:7px;align-items:center}
.rankToolbar>label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px;align-items:center;color:var(--dim);font-size:10px}
.rankToolbar>label select{width:100%;min-width:0;height:var(--ctrl-h);padding-top:0;padding-bottom:0}
.rankForms{display:flex;align-items:center;gap:4px;white-space:nowrap}
.rankDir{white-space:nowrap}
.rankNote{margin-top:7px;line-height:1.5}
#rankInfo{margin:7px 0 6px}
.rankrow{display:grid;grid-template-columns:42px minmax(0,1fr) 150px;gap:8px;align-items:stretch;min-height:44px;padding:5px 3px;border-bottom:1px solid var(--line);font-size:12px;box-sizing:border-box}
.rankrow>i,.rankrow>strong{display:flex;align-items:center}
.rankrow>i{justify-content:center;color:var(--dim);font:13px/1.15 var(--mono);text-align:center}
.rankrow>b{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-width:0;font-weight:400}
.rankname{appearance:none;-webkit-appearance:none;display:block;align-self:flex-start;width:fit-content;min-width:0;max-width:100%;min-height:20px;padding:0;border:0;border-radius:4px;background:transparent;color:var(--ink);font:inherit;font-size:13px;line-height:1.15;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rankname:hover,.rankname:focus-visible{color:var(--accentText);outline:none}
.rankrow b small{margin-top:2px;color:var(--dim);font-size:9px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rankrow>strong{justify-content:flex-end;color:var(--ink);font:13px/1.15 var(--mono);text-align:right;white-space:nowrap}
.rankrow>strong small{color:var(--dim);font-size:9px;font-weight:400}
.rankrow:hover{background:var(--hov)}
.rankrow.h{position:sticky;z-index:2;top:0;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 3px;background:var(--glassCard);color:var(--dim);font-size:10px}
.rankrow.h:hover{background:var(--glassCard)}
.rankrow.h>b{font-weight:400}.rankrow.h>i,.rankrow.h>strong{color:var(--dim);font-size:10px}
.rankEmpty{padding:18px 2px;text-align:center}
.rankTop{position:absolute;right:16px;bottom:16px;z-index:4;border-color:color-mix(in srgb,var(--cyan) 45%,var(--line));background:var(--panel);box-shadow:0 6px 18px rgba(0,0,0,.2);color:var(--accentText)}
.tdeeDayTypes{padding:0;overflow:hidden;background:var(--panel2)}.tdeeDayTypes>summary{display:flex;align-items:center;gap:7px;padding:10px 11px;list-style:none;cursor:pointer;color:var(--mute);font-size:11px}.tdeeDayTypes>summary::-webkit-details-marker{display:none}.tdeeDayTypes>summary::before{content:'▸';color:var(--dim);transition:transform .16s var(--ease-layer)}.tdeeDayTypes[open]>summary::before{transform:rotate(90deg)}.tdeeDayTypes>summary small{margin-left:auto;color:var(--dim);font:9px var(--mono)}.tdeeDayTypes>.note,.tdeeDayTypes>#dtlist{margin-left:11px;margin-right:11px}.tdeeDayTypes>#dtlist{display:grid;gap:7px;padding-bottom:11px}
.dtNote{margin-top:0;padding:8px 9px;border:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:9px;background:color-mix(in srgb,var(--panel) 62%,transparent);line-height:1.55}
.dtrow{padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.dtrowMain{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,.8fr);gap:10px;align-items:end}.dtname{min-width:0;display:flex;flex-direction:column;gap:3px}.dtname>span{display:flex;align-items:center;gap:6px;min-width:0}.dtname b{min-width:0;font-size:11px;color:var(--mute);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dtname small{font-size:9px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dtSource{flex:none;padding:2px 5px;border:1px solid var(--line);border-radius:99px;color:var(--dim);font:8px var(--mono);font-style:normal}.dtSource.auto{border-color:color-mix(in srgb,var(--cyan) 36%,var(--line));color:var(--accentText)}.dtSource.manual{border-color:color-mix(in srgb,var(--amber) 44%,var(--line));color:var(--amber)}
.dtTypeField{display:grid;gap:4px;color:var(--dim);font-size:9px}.dtrow select{min-width:0;width:100%;height:var(--ctrl-h)}
.dtactivity{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:9px;padding-top:9px;border-top:1px dashed var(--line)}
.dtactivity label{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:8px;align-items:center;padding:7px 8px;border:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:9px;background:var(--panel2);color:var(--dim);font-size:10px}.dtFieldLabel{display:grid;gap:1px;min-width:0}.dtFieldLabel small{color:var(--dim);font-size:8px;line-height:1.3}.dtactivity .fld{width:112px}.dtactivity .fld input{width:100%;padding-right:30px}
.dtdrag{color:var(--dim);cursor:grab;touch-action:none;user-select:none;text-align:center}.dtdrag:active{cursor:grabbing;color:var(--cyan)}
.dtrow.dragging{opacity:.62;background:var(--panel2);border-radius:7px}
.ord{display:flex;flex-direction:column;gap:2px}
.ord .ob{width:100%;height:15px;padding:0;line-height:1;font-size:8px;color:var(--mute);
  background:var(--field);border:1px solid var(--fieldBd);border-radius:4px;cursor:pointer}
.ord .ob:active{background:var(--cyan);color:var(--chipInk)}
.ord .ob[disabled]{opacity:.28}
.dtb{width:26px;text-align:center;font-size:14px;padding:2px 0}
.dtrun{color:var(--dim);font-size:10px}

.logtools{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;margin:0 -12px 9px;padding:0 12px 9px;border-bottom:1px solid var(--line)}
.ltL{display:flex;gap:6px;flex-wrap:wrap}
.ltR{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.ltR .dbbtn{min-width:56px}
.ltitle{font-size:13px;font-weight:600;color:var(--mute);letter-spacing:.06em;text-align:center}
.daySummary{padding:3px 5px;border:0;border-radius:5px;background:transparent;cursor:pointer}
.daySummary:hover,.daySummary:focus-visible{background:transparent!important;color:var(--ink);outline:none;text-decoration:none}
#pasteBox{width:100%;max-width:100%;min-height:110px;font-family:var(--mono);font-size:12px;margin-top:8px;white-space:pre;overflow-x:auto;resize:vertical;tab-size:8}

.topbar{position:fixed;top:0;left:0;right:0;z-index:30;background:var(--topbar);border-bottom:1px solid var(--hairline);padding-top:env(safe-area-inset-top);box-shadow:0 2px 10px rgba(0,0,0,.035)}
.topin{max-width:720px;margin:0 auto;padding:9px 12px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.topttl h1{display:block;margin:0;line-height:1}
/* 标题与指示器共用一条基线，简单的 chevron 不再套醒目的圆框。 */
.topttl{cursor:pointer;user-select:none;-webkit-user-select:none;display:flex;align-items:center;height:var(--ctrl-h);gap:6px;flex:none;white-space:nowrap}
.topttl:active h1{color:var(--ink)}
.dchev{position:relative;width:14px;height:14px;display:block;flex:none;border-radius:4px;transition:background .18s}
.dchev::after{content:'';position:absolute;left:4px;top:3px;width:5px;height:5px;border-right:1.5px solid var(--mute);border-bottom:1.5px solid var(--mute);
  transform:rotate(45deg);transition:transform .28s cubic-bezier(.2,.8,.2,1),top .28s}
.topttl:hover .dchev{background:var(--hov)}
.topttl.folded .dchev::after{top:6px;transform:rotate(-135deg)}
/* 收起时只留下最核心的宏量卡。 */
.dock.flags-collapsed .dockline{display:none}
.topacts{display:flex;gap:7px;align-items:center;flex-wrap:nowrap;min-width:0}
.topmain,.topglance,.toptools,.themeSlot{display:flex;gap:1px;align-items:center;flex:none;padding:2px;border:1px solid var(--hairline);border-radius:999px;background:var(--chromeGroup)}
.tbtn{appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;justify-content:center;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 9px;border:1px solid transparent;border-radius:999px;white-space:nowrap;background:transparent;color:color-mix(in srgb,var(--ink) 72%,transparent);font:500 11px/1 var(--sans);box-sizing:border-box;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
@media(hover:hover){.tbtn:hover{background:var(--nav-active)!important;color:var(--ink)}}
.tbtn:focus-visible,.tbtn[aria-expanded="true"],.tbtn.active{background:var(--nav-active)!important;color:var(--ink)}
.tbtn:active{background:var(--controlPressed)!important}
.tsep{width:1px;height:16px;background:var(--line);flex:none}

/* standard material 只承载导航 / 控件层；内容卡保持实色，避免嵌套模糊。 */
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .topbar,.dock{background:var(--chromeGlass);-webkit-backdrop-filter:saturate(1.12) blur(16px);backdrop-filter:saturate(1.12) blur(16px)}
  #pv{background:var(--popoverGlass);-webkit-backdrop-filter:saturate(1.08) blur(18px);backdrop-filter:saturate(1.08) blur(18px)}
}
@media (prefers-contrast:more),(prefers-reduced-transparency:reduce){
  .topbar,.dock{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:var(--chromeSolid)!important}
  #pv{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:var(--panel)!important}
}
@media (prefers-reduced-transparency:reduce){
  :root,html.light{--glassTop:var(--chromeSolid);--glassDock:var(--chromeSolid);--glassCard:var(--panel)}
}

/* 餐次搜索：手机用底部层，桌面用餐次旁浮层，不挤占宏量底栏。 */
.fab{position:fixed;right:14px;bottom:calc(var(--dockh,158px) + 16px + env(safe-area-inset-bottom));z-index:78;display:none;
  padding:11px 16px;border-radius:999px;background:var(--cyan);color:var(--chipInk);border:none;font-weight:700;font-size:13px;
  font-family:var(--sans);box-shadow:0 6px 18px rgba(0,0,0,.28)}
.fab:active{transform:scale(.96)}
.qadd{position:fixed;left:0;right:0;bottom:var(--dockh,158px);z-index:79;padding:8px 12px 10px;
  display:none;flex-direction:column;gap:8px;background:var(--glassDock);border-top:1px solid var(--line);box-shadow:0 -4px 16px rgba(0,0,0,.065)}
.qadd.open{display:flex}
.qadd.meal-pop{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--glassCard);box-shadow:0 16px 38px rgba(0,0,0,.25);max-height:420px}
.qadd.meal-pop .results{max-height:285px;background:var(--panel)}
.qaddhead{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:720px;margin:0 auto;color:var(--mute);font-size:12px;font-weight:700}
.qaddbar{display:flex;gap:6px;align-items:center;width:100%;max-width:720px;margin:0 auto;background:transparent;border:0;padding:0}
.qaddbar input{flex:1;min-width:0;width:100%;padding:10px 12px;border-radius:10px;background:var(--field)}
.qadd .results{width:100%;max-width:720px;margin:0 auto;max-height:44vh;background:var(--glassTop);border-color:color-mix(in srgb,var(--line) 70%,transparent);box-shadow:0 8px 22px rgba(0,0,0,.16)}
@media(max-width:899px){ .fab{display:none!important} }
body.qadd-open .fab{display:none}
body.modal-open .fab,body.modal-open .qadd{display:none!important}

.toast{position:fixed;left:50%;bottom:calc(var(--dockh,158px) + 14px + env(safe-area-inset-bottom));transform:translate(-50%,10px);z-index:90;
  max-width:min(460px,92vw);padding:10px 14px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font-size:12.5px;line-height:1.5;box-shadow:0 10px 30px rgba(0,0,0,.25);
  opacity:0;pointer-events:none;transition:opacity .18s,transform .18s}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.act{cursor:pointer;pointer-events:auto;border-color:var(--cyan);color:var(--cyan)}

/* HIG 的层级用实色承载面、分隔线和阴影表达；此主题明确不使用 Liquid Glass 或背景模糊。 */
/* 主题只做短促的颜色渐变；不模糊、不从按钮向外扫。 */
html.theme-soft body,html.theme-soft .panel,html.theme-soft .topbar,html.theme-soft .dock,
html.theme-soft input,html.theme-soft select,html.theme-soft textarea,html.theme-soft button,
html.theme-soft .mcard,html.theme-soft .dockline,html.theme-soft .mac{transition:background-color .24s ease,color .2s ease,border-color .24s ease}

.netSearch{display:grid;grid-template-columns:minmax(150px,1.5fr) minmax(100px,1fr) minmax(100px,1fr) auto;gap:6px}
.netSearch input,.netSearch select{min-width:0;width:100%}
.netSearchActions{display:flex;gap:5px;align-items:center;white-space:nowrap}
.netFoodCard{width:min(900px,96vw);height:min(780px,90vh);transition:width .24s cubic-bezier(.2,.8,.2,1),height .24s cubic-bezier(.2,.8,.2,1)}
.netHistory{display:flex;align-items:center;gap:5px;overflow-x:auto;scrollbar-width:none;min-height:30px;padding-top:6px}.netHistory::-webkit-scrollbar{display:none}.netHistory>small{color:var(--dim);font-size:9px;flex:none}.histChip,.histClear{flex:none;border:1px solid var(--line);border-radius:999px;background:var(--panel2);color:var(--mute);font-size:10px;padding:4px 8px}.histClear{border:0;background:transparent;color:var(--dim)}
.netcard{border:1px solid var(--line);border-radius:10px;padding:9px 10px;margin-top:8px}
.nethead{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.netcheck{display:flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none}.netcheck input{width:18px;height:18px;margin:0;accent-color:var(--cyan)}
.netname{font-weight:600;font-size:13px}.netname>span{display:block}.nettrans{display:block;margin-top:1px;color:var(--cyan);font-size:11px;font-weight:500}.netmeta{font-size:10px;color:var(--dim);margin-top:2px}
.netnut{display:grid;grid-template-columns:repeat(5,minmax(54px,1fr));gap:4px;margin-top:8px;font:10px var(--mono);color:var(--mute)}
.netnut span,.netnut label{display:grid;grid-template-columns:1fr auto;align-items:baseline;padding:5px 6px;background:var(--panel2);border-radius:6px;text-align:left}.netnut small{grid-column:1/-1;color:var(--dim);font:9px var(--sans)}.netnut b{font-size:11px;color:var(--ink)}.netnut i{font-style:normal;font-size:8px;color:var(--dim);margin-left:2px}.netnut input{min-width:0;width:100%;height:auto;padding:0;border:0;border-radius:0;background:transparent;color:var(--ink);font:11px var(--mono);box-shadow:none}.netnut input:focus{outline:0;border-bottom:1px solid var(--cyan)}
.netlayers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:8px}.netlayers span{min-width:0;padding:6px 7px;border:1px solid var(--line);border-radius:7px;background:color-mix(in srgb,var(--panel2) 68%,transparent)}.netlayers small,.netlayers b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.netlayers small{font-size:8px;color:var(--dim)}.netlayers b{margin-top:2px;font:9px var(--mono);font-weight:500;color:var(--mute)}
.netedit{display:grid;grid-template-columns:minmax(92px,1fr) minmax(92px,1fr) minmax(250px,1.65fr) minmax(130px,1fr);gap:6px;margin-top:8px}.netedit input{width:100%;min-width:0}
.netfield,.netmeasure{display:flex;flex-direction:column;gap:3px;min-width:0}.netfield small,.netmeasure small{font-size:9px;color:var(--dim)}.netfield input,.netmeasure input,.netmeasure select{height:var(--ctrl-h)}
.netmeasure>span{display:grid;grid-template-columns:1fr 30px;gap:4px;align-items:center}.netmeasure .unitEcho{display:flex;align-items:center;justify-content:center;height:36px;border:1px solid var(--fieldBd);border-radius:8px;background:var(--field);font:11px var(--mono);color:var(--dim)}
.netbasis>span{grid-template-columns:auto 68px 52px auto;justify-content:start;white-space:nowrap;color:var(--mute);font-size:10px}.netbasis>span>input{width:68px;text-align:right}.netbasis select{width:52px}.netbasis em{font-style:normal}
.netcardActions{display:flex;justify-content:flex-end;gap:5px;margin-top:8px;padding-top:7px;border-top:1px dashed var(--line)}.netcardActions .dbbtn{font-size:10px;padding:5px 8px}
.netFoodCard .mbody{scroll-behavior:smooth}.netFoodCard #netFoodRes.data-fill{animation:dataFill .28s cubic-bezier(.2,.8,.2,1)}
@keyframes dataFill{from{opacity:.35;transform:translateY(-5px)}to{opacity:1;transform:none}}
.netload{display:flex;align-items:center;justify-content:center;gap:8px;padding:20px;color:var(--dim);font-size:11px}.netload i{width:13px;height:13px;border:2px solid var(--line);border-top-color:var(--cyan);border-radius:50%;animation:netspin .7s linear infinite}@keyframes netspin{to{transform:rotate(360deg)}}
.netcand{flex:none;padding:5px 7px;border-color:color-mix(in srgb,var(--cyan) 45%,var(--line));color:var(--cyan);font-size:10px}.netbadge{display:inline-block;margin-left:4px;padding:0 4px;border:1px solid color-mix(in srgb,var(--cyan) 45%,var(--line));border-radius:4px;color:var(--cyan);font-size:8px;font-style:normal;vertical-align:1px}
.netcandload{flex:none;color:var(--dim);font-size:9px;white-space:nowrap}
.netbasket{flex:none;display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;padding:8px 16px;border-top:1px solid var(--line);font-size:10px;color:var(--dim)}
.netbasket>span{padding-top:4px;letter-spacing:.06em}.netbasket>div{display:flex;flex-wrap:wrap;gap:5px}
.netpick{display:inline-flex;align-items:center;gap:5px;max-width:180px;padding:4px 7px;border:1px solid var(--line);border-radius:999px;color:var(--mute);background:var(--panel2)}
.netpick b{font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.netpick button{border:0;background:none;padding:0;color:var(--dim);line-height:1}
.settingsModal{width:min(620px,94vw)}
.settingsCard{display:block;margin-top:10px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--hov)}
.settingHead{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.settingHead b{font-size:12px;color:var(--mute);letter-spacing:.04em}.settingHead span{font:10px var(--mono);color:var(--dim)}
.settingAction{display:flex;align-items:center;justify-content:space-between;gap:14px}.settingAction>div{min-width:0}.settingBtns{display:flex;gap:6px;flex:none;align-items:center}.settingAction .dbbtn,.settingBtns .dbbtn{flex:none;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 12px;display:inline-flex;align-items:center;justify-content:center;line-height:1;box-sizing:border-box}
.macroOrder{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-top:8px}.macroOrderRow{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:4px;padding:6px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font-size:10px;color:var(--mute);transition:transform .18s cubic-bezier(.2,.8,.2,1),border-color .15s,box-shadow .15s,opacity .15s}.macroOrderRow>span:not(.dtdrag){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.macroOrderRow.is-hidden{opacity:.58}.macroOrderRow.dragging{z-index:2;opacity:.78;border-color:var(--cyan);box-shadow:0 8px 18px rgba(0,0,0,.16);transform:scale(1.02)}.macroVisible{min-height:26px;padding:3px 6px;border-color:var(--hairline);background:var(--chromeGroup);color:var(--mute);font-size:10px}.macroVisible[aria-pressed="true"]{color:var(--accentText)}
.trendBox{margin:12px 0 4px;padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}.trendHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.trendHead>div{min-width:0}.trendHead b{display:block;font-size:11px;color:var(--mute)}.trendHead small{display:block;margin-top:2px;font:8px var(--mono);color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trendCompare{flex:none;width:68px;padding:5px 23px 5px 8px;border-color:var(--line);border-radius:8px;background-color:var(--panel);color:var(--mute);font:10px var(--mono)}.trendChart{display:grid;grid-template-columns:repeat(var(--trend-n),minmax(40px,1fr));align-items:end;gap:6px;height:158px;padding:13px 6px 5px;border:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:9px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 49px,color-mix(in srgb,var(--line) 58%,transparent) 50px);overflow-x:auto;scrollbar-width:none}.trendChart::-webkit-scrollbar{display:none}.trendPeriod{height:100%;display:grid;grid-template-rows:1fr auto auto auto;gap:3px;text-align:center;min-width:0}.trendPlot{height:100%;display:flex;align-items:flex-end;justify-content:center;position:relative}.trendBar{width:min(30px,70%);min-height:2px;border-radius:7px 7px 3px 3px;background:linear-gradient(180deg,color-mix(in srgb,var(--cyan) 58%,white),var(--cyan));box-shadow:inset 0 1px 0 color-mix(in srgb,white 28%,transparent);transition:height .3s cubic-bezier(.2,.8,.2,1)}.trendBar.current{box-shadow:0 0 0 2px color-mix(in srgb,var(--cyan) 18%,transparent),0 5px 16px color-mix(in srgb,var(--cyan) 16%,transparent)}.trendTarget{position:absolute;left:4px;right:4px;border-top:1px dashed color-mix(in srgb,var(--amber) 72%,var(--line))}.trendVal{font:9px var(--mono);color:var(--mute)}.trendLabel{font-size:8px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trendWeight{font:8px var(--mono);color:var(--cyan)}.trendStats{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px;color:var(--dim);font:8px var(--mono)}.trendStats>span{padding:4px 6px;border:1px solid var(--line);border-radius:7px;background:var(--panel)}.trendStats b{color:var(--mute);font-weight:500}
.trendHead{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.trendCompareWrap{display:grid;grid-template-columns:auto 74px;align-items:center;gap:5px;color:var(--dim);font:8px var(--mono);white-space:nowrap}.trendCompare{box-sizing:border-box;width:74px;min-height:var(--ctrl-h);height:var(--ctrl-h);padding:0 24px 0 8px;font:10px/1.25 var(--mono)}
.backupCard{margin-top:14px!important;background:transparent!important}.backupCard>summary{display:flex;justify-content:space-between;align-items:center;list-style:none;color:var(--dim);font-size:11px}.backupCard>summary::-webkit-details-marker{display:none}.backupCard>summary::before{content:'▸';margin-right:6px}.backupCard[open]>summary::before{transform:rotate(90deg)}.backupCard>summary span{margin-right:auto}.backupCard>summary small{font:9px var(--mono);color:var(--dim)}.backupCard .settingAction{margin-top:8px}
.updateCard{margin-top:14px!important;background:transparent!important}.updateCard .settingAction{margin-top:8px}.updateCard .settingAction .note{max-width:48ch}.updateCard .dbbtn{flex:none;height:var(--ctrl-h);min-height:var(--ctrl-h)}
.settingsFoot{justify-content:flex-end;align-items:center}
.settingsVer{flex:none;margin-left:auto;text-align:right;font:10px var(--mono);color:var(--dim);letter-spacing:.04em}
.kjResult{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--cyan) 38%,var(--line));border-radius:11px;background:color-mix(in srgb,var(--cyan) 7%,var(--panel2));color:var(--mute)}
.kjResult>span{font-size:11px;letter-spacing:.08em}.kjResult strong{display:flex;align-items:baseline;gap:5px;white-space:nowrap}.kjResult output{color:var(--accentText);font:700 30px/1 var(--mono);font-variant-numeric:tabular-nums}.kjResult small{color:var(--mute);font:10px var(--mono)}
.kjInputs{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.kjInputs>label{display:grid;gap:5px;color:var(--mute);font-size:10px}.kjField{position:relative;display:block}.kjField input{width:100%;height:var(--ctrl-h);min-height:var(--ctrl-h);padding-right:34px;box-sizing:border-box}.kjField i{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--dim);font:10px var(--mono);font-style:normal;pointer-events:none}

.cols{display:block}
@media(max-width:899px){
  body{max-width:none;padding:calc(58px + env(safe-area-inset-top)) 8px calc(var(--dockh,158px) + 28px + env(safe-area-inset-bottom));scroll-padding-bottom:calc(var(--dockh,158px) + 34px)}
  .topin{padding:6px 44px 6px 6px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px;align-items:center}
  .topttl{gap:2px}.topttl h1{font-size:14px;letter-spacing:.04em}.topttl .dchev{width:10px}
  .topacts{min-width:0;gap:5px;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;touch-action:pan-x pan-y;scrollbar-width:none;-webkit-overflow-scrolling:touch;align-items:center}
  .topacts::-webkit-scrollbar{display:none}
  .topmain,.topglance,.toptools,.themeSlot{gap:1px;align-items:center}
  .topGroupSep,.themeGroupSep{display:none}
  .tbtn{position:relative;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 8px;font-size:11px;background:transparent}
  .tbtn:active{transform:none}
  .tbtn::after{content:'';position:absolute;inset:-6px 0}
  .chip{height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 10px;display:inline-flex;align-items:center;line-height:1;box-sizing:border-box}
  .ghost:not(.tbtn),.dbbtn,.prim,.copy{height:var(--ctrl-h);min-height:var(--ctrl-h);padding-top:0;padding-bottom:0;line-height:1;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}
  .backupCard .settingAction{flex-direction:column;align-items:stretch;gap:8px}
  .backupCard .settingBtns{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .backupCard .settingBtns .dbbtn{width:100%}
  .themeSlot{position:fixed;right:4px;top:calc(6px + env(safe-area-inset-top));z-index:32}
  .cols{display:flex;flex-direction:column}
  .colL{display:contents}
  .colL>.panel:first-child{order:1}
  .colR{order:2}
  .colL>.sourcepanel{order:3}
  .colLscroll{order:4}
  .colR>.panel{margin-bottom:12px}
  body.input-active .dock{opacity:0;transform:translateY(100%);pointer-events:none;transition:none;animation:dockHide .18s var(--ease-slide) forwards}
  body.input-return .dock{transition:none;animation:dockReturn .24s var(--ease-slide) both}
  body.qadd-open .dock{opacity:0;transform:translateY(100%);pointer-events:none;transition:transform .2s var(--ease-slide),opacity .14s ease}
  .qadd{left:8px;right:8px;bottom:0;max-height:min(76dvh,620px);padding:10px 12px calc(12px + env(safe-area-inset-bottom));border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0;box-shadow:0 -16px 40px rgba(0,0,0,.24);background:var(--glassCard)}
  .qadd.open{animation:sheetEnter .24s var(--ease-layer) both}
  .qadd .results{order:3;max-height:calc(76dvh - 116px);margin-top:0;background:var(--panel);min-height:0;overflow:auto}
  .qaddbar{order:2}.qaddhead{order:1}
  .qadd.kb{left:8px;right:8px;bottom:auto;border-radius:16px;border-bottom:1px solid var(--line);padding-bottom:10px;box-shadow:0 12px 36px rgba(0,0,0,.28)}
  .qadd.kb .results{flex:1;max-height:none}
  #qf{scroll-margin-top:calc(68px + env(safe-area-inset-top));scroll-margin-bottom:42vh}
  .macros{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
  .macros::-webkit-scrollbar{display:none}
  .macros .mac{flex:0 0 auto;min-width:100px;scroll-snap-align:start}
  .macros .mac .sub{font-size:9px}
  #pasteBox{font-size:11.5px}
  .meal.initial-drop{display:block}
  .meal{scroll-margin-bottom:calc(var(--dockh,158px) + 24px)}
  .li{flex-wrap:wrap;row-gap:4px}
  .lwrap{order:1;flex:1 1 calc(100% - 52px)}
  .dh{order:2;margin-left:auto}
  .lctl{order:3;flex:1 1 100%;justify-content:flex-end;margin-left:0}
  .logtools{grid-template-columns:1fr auto 1fr;grid-template-areas:"left title right";gap:4px;margin-bottom:6px;padding-bottom:6px}
  .ltitle{grid-area:title;justify-self:center;white-space:nowrap}.ltL{grid-area:left}.ltR{grid-area:right}
  .ltL,.ltR{flex-wrap:nowrap;gap:3px}
  .logtools .dbbtn{position:relative;flex:1;min-width:0;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 8px;font-size:12px}
  .logtools .dbbtn::after{content:'';position:absolute;inset:-6px -2px}
  .empty{display:none}
  .netSearch{grid-template-columns:1fr 1fr}.netSearch #netFoodQ{grid-column:1/-1}.netSearchActions{grid-column:1/-1;justify-content:flex-end}
  .netnut{grid-template-columns:repeat(4,1fr)}
  .netedit{grid-template-columns:1fr 1fr}
  .netbasis{grid-column:1/-1}
  .netFoodCard{width:calc(100vw - 12px);height:calc(100dvh - 20px);max-height:none;border-radius:16px}
  .modal{padding:6px}
  .modal.viewport-kb{align-items:flex-start;padding:env(safe-area-inset-top) 6px 6px}
  .modal.viewport-kb .mcard{max-height:100%}
  #kjModal.viewport-kb .mcard{border-top:0;border-radius:0 0 14px 14px}
  .macroOrder{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@keyframes dockHide{from{opacity:1;transform:none}to{opacity:0;transform:translateY(100%)}}
@keyframes dockReturn{from{opacity:0;transform:translateY(100%)}to{opacity:1;transform:none}}
@media(max-width:599px){
  /* 条目拆两行：名称一行，控件一整行靠右 —— 热量与 × 在所有行上垂直对齐 */
  .panel{padding:10px;margin-bottom:9px}
  .macroOrder{grid-template-columns:repeat(2,minmax(0,1fr))}
  .kjInputs{grid-template-columns:1fr}
  .updateCard .settingAction{align-items:stretch;flex-direction:column}.updateCard .settingBtns,.updateCard .dbbtn{width:100%}
  .settingsFoot{display:flex;justify-content:flex-end}.settingsVer{margin-left:auto}
  .logtools{margin-left:-8px;margin-right:-8px}
  .dateMileageRow{gap:7px}
  .dateControl,.mileageControl{gap:3px}
  .dateNav{gap:0}
  .dateNavBtn{width:28px;min-width:28px!important;height:30px;min-height:30px!important}
  .datebtn{display:inline-flex;align-items:center;height:30px;padding:4px 6px;font-size:12px;line-height:1}
  .dateTodayBtn{min-width:0!important;height:30px;min-height:30px!important;padding:4px 6px;font-size:10px}
  .mileageControl .fld{height:30px}
  #km{width:62px;height:30px;min-height:30px!important;padding:4px 23px 4px 7px;font-size:12px}
  .meal{margin-top:7px;padding:1px 8px 4px}
  .meal.emptyMeal{margin-top:5px;padding-bottom:1px}
  .mhead{min-height:34px;margin:2px 0}
  .dropz{display:none}
  .li{padding:2px 0;gap:5px;row-gap:2px}
  .lwrap{min-height:26px;flex-basis:calc(100% - 38px)}
  .pickShell{height:30px;min-height:30px}
  .parsemeta{font-size:9.5px;line-height:1.2}
  select.pick.unmatched{font-size:11px;padding-left:7px;padding-right:22px}
  .flags{font-size:10px;line-height:1.35;max-height:2.7em}
  .lname{font-size:13px;line-height:1.25}
  .lctl{gap:4px}
  .lctl .modebtn,.lctl .lk,.lctl .del,.dh,.zb{min-height:30px!important;height:30px}
  .lctl .modebtn{padding:4px 6px}
  .lctl .fld input{min-height:30px!important;height:30px;padding-top:4px;padding-bottom:4px;font-size:12px;letter-spacing:0}
  .lctl.num-compact .fld input{font-size:10.5px;letter-spacing:-.01em}
  .lctl.num-tight .fld input{font-size:9px;letter-spacing:-.02em}
  .fld.fa{width:68px}.fld.fa input{padding-right:18px}.fld.fe{width:58px}.fld.fe input{padding-right:15px}.fld.fe .fu{right:6px}.lk{width:42px}.del{width:28px;min-width:28px!important}.dh{width:32px;min-width:32px!important}
  .lwrap .zb{position:relative;width:22px;min-width:22px!important;height:22px!important;min-height:22px!important;padding:0;border-radius:4px;font-size:8.5px!important;font-weight:500}
  .lwrap .zb::after{content:'';position:absolute;inset:-5px}
  /* 往期条目没有编辑控件：名称、份量和热量保持单行，避免沿用编辑态的两行占位。 */
  .li.readonly{flex-wrap:nowrap;padding:1px 0;gap:4px;row-gap:0}
  .li.readonly .lwrap{order:1;flex:1 1 auto;min-width:0;min-height:24px;gap:4px;padding-left:2px}
  .li.readonly .lctl{order:2;flex:0 0 auto;gap:2px;margin-left:auto}
  .li.readonly .lname{min-height:24px!important;padding:1px 0}
  .li.readonly .readonlyMeasure{min-width:0;gap:2px;font-size:11px}
  .li.readonly .lwrap .zb{width:20px;min-width:20px!important;height:20px!important;min-height:20px!important}
  .li.readonly .lk{width:38px;min-width:38px!important;height:24px;min-height:24px!important;padding:2px;font-size:11.5px}
  .mealSummary,.mealLabel,.lname,.lk,.daySummary{min-height:30px!important}
  .mgrid{grid-template-columns:84px 1fr}
  .tcAgePair{grid-template-columns:70px minmax(0,1fr);gap:5px}.tcBirthField{gap:4px}.tcBirthField span{font-size:9px}
  .tcWeightWindows{grid-template-columns:1fr 1fr}.tcWeightAdd{grid-template-columns:minmax(0,1fr) auto}.tcWeightAdd .fld,.tcWeightAdd button{width:100%}
  .fatPlanSliders{grid-template-columns:1fr}.fatPlanSummary{grid-template-columns:repeat(2,minmax(0,1fr))}.fatPlanMacros{grid-template-columns:1fr}.fatPlanKpi b{font-size:13px}.fatPlanDriverNote{text-align:left}
  .gPaste{padding:8px}.gPaste>summary small{display:none}.gPaste textarea{min-height:132px;font-size:10px}.gPasteActions{display:grid;grid-template-columns:1fr 1fr}.gPasteActions #gPasteRead{margin:0}.gPasteActions #gParseAddAll{grid-column:1/-1}.gParseRow{grid-template-columns:1fr}.gParseRowActions{justify-content:flex-end}.gParseRowActions .dbbtn{flex:1;max-width:96px}
  #genModal .mfoot{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"start merge" "serv std";gap:5px;padding:8px}.genFootStart{grid-area:start;margin:0}.genFootStart .dbbtn{min-width:0;flex:1}#gCopyServ{grid-area:serv}#gCopy100{grid-area:std}#gMergeExport{grid-area:merge}#genModal .mfoot>.dbbtn{width:100%;min-width:0;padding:7px 4px;font-size:9px}
  #fitModal .mfoot .dbbtn{flex:1;min-width:0}
  .rankModalCard{width:calc(100vw - 12px);height:calc(100dvh - 20px);max-height:none;border-radius:16px}
  .rankToolbar{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"metric direction" "category category" "forms forms";gap:6px}
  .rankToolbar>label[for="rankMetric"]{grid-area:metric}
  .rankToolbar>label[for="rankCat"]{grid-area:category}
  .rankForms{grid-area:forms;min-width:0}.rankForms .chip{flex:1;padding:0 9px}
  .rankDir{grid-area:direction;padding-left:8px;padding-right:8px;font-size:10px}
  .rankNote{font-size:9px}
  .rankrow{grid-template-columns:30px minmax(0,1fr) 98px;gap:6px;padding:7px 1px}
  .rankrow>i,.rankrow>strong{font-size:12px}.rankname{font-size:12px}.rankrow>strong small{display:block;margin-top:2px;font-size:8px}
  .dtrowMain{grid-template-columns:1fr;align-items:stretch}.dtactivity{grid-template-columns:1fr}.dtTypeField select{width:100%}
  /* 食品库预览：名称独占一行，数值列平分第二行（原本 1fr 被数值列挤没了） */
  .dbrow{grid-template-columns:repeat(5,1fr);row-gap:3px}
  .dbrow b{grid-column:1/-1;white-space:normal;line-height:1.4}
  .dbname{white-space:normal;max-width:none}
  .dbrow i{text-align:center;font-size:11px}
  .dbrow.h i{font-size:10px}
  .sourcemgr>summary small{max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sourceBlock{padding:8px}
  .sourceBlockHead{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px}
  .sourceBlockHead>span:not(.sourceBlockTools){display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:6px}
  .sourceBlockHead>.sourceBlockTools{width:auto;display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:max-content;gap:4px}
  .sourceBlockTools .dbbtn{width:auto;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 7px;line-height:1}
  .sourceRow{grid-template-columns:minmax(0,1fr);gap:6px}
  .sourceRow label{display:none}
  .sourceRow input{grid-column:1;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 10px;line-height:1}
  .sourceRow .sourceActions{grid-column:1;width:100%;display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:5px}
  .sourceRow .sourceActions .dbbtn{width:100%;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 6px;font-size:10px;line-height:1}
  .sourceState{margin:4px 0 0;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.45}
  .sourceFallback{margin-left:0;display:grid;grid-template-columns:1fr;align-items:start;gap:6px}
  .sourceFallback>span:last-child{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:5px}
  .sourceFallback .dbbtn{width:100%;height:var(--ctrl-h);min-height:var(--ctrl-h);padding:0 5px;line-height:1}
}
@media(min-width:900px){
  body{max-width:1120px}
  .cols{display:block}
  .colR{margin-left:442px}
  /* 真正固定在视口：右栏滚动、内容增减和滚动锚定都不会再带动左栏。 */
  .colL{position:fixed;z-index:10;left:max(10px,calc(50vw - 560px));top:64px;bottom:calc(var(--dockh,150px) + 4px);width:430px;height:auto;display:block;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;contain:layout paint}
  .colL::-webkit-scrollbar{display:none}
  .colLscroll{overflow:visible;min-height:0}
  .colL .results{max-height:none;overflow:visible}
  .dockin{max-width:1120px}
  .topin{max-width:1120px}
}
@media(pointer:coarse){
  /* 视觉高度走 --ctrl-h / --ctrl-compact。禁止再给全部 button 套 44。孤立图标才用 --hit-icon。 */
  input[type="range"]{height:var(--hit-icon)!important}
  input[type="checkbox"],input[type="radio"]{min-width:28px;min-height:28px}
  /* 今日饮食行内数量/热量/删除走 599px 的 30px，这里禁止再用 !important 盖掉。 */
  .mealAdd,.pvClose,.mclose,.dtrow .del,.tcWeightItem button{min-width:var(--hit-icon)!important;min-height:var(--hit-icon)!important}
  .mealSummary,.lname,.lk,.daySummary{min-height:var(--hit-icon)}
  .tcWeightItem{grid-template-columns:minmax(0,1fr) 72px var(--hit-icon)}
  .macroOrderRow{grid-template-columns:var(--hit-icon) minmax(0,1fr) auto}
  .ord .ob{min-width:var(--hit-icon);min-height:28px}
  .zb,.dh,.dtdrag{display:inline-flex;align-items:center;justify-content:center;min-width:var(--hit-icon);min-height:var(--hit-icon)}
  #pv .structureSeg{touch-action:manipulation}
}
/* 功能性说明与图表标签不低于可读下限；只压缩纯装饰，不压缩可操作信息。 */
:is(.sourceBlockHead small,.sourceBlockHead>.dbbtn,.sourceBlockTools .dbbtn,.sourceFallback,.sourceFallback small,.sourceFallback .dbbtn,
  .mgrid label small,.tcActNote,.tcWeightPager b,.tcWeightPager .dbbtn,.tcWeightItem,.tcWeightItem b,.tcWeightEmpty,.tcScaleImport span,
  .fatPlanValue i,.fatPlanScale,.fatPlanDriverNote,.fatPlanKpi small,.fatPlanKpi span,.fatPlanEnergy>div,.fatPlanMacro small,.ord .ob,
  .netHistory>small,.histChip,.histClear,.netnut small,.netnut i,.netlayers small,.netlayers b,.netfield small,.netmeasure small,
  .netcand,.netbadge,.netcandload,.trendHead small,.trendVal,.trendLabel,.trendWeight,.trendStats,.trendCompareWrap,
  .backupCard>summary small,.tcBirthField span,#genModal .mfoot>.dbbtn){font-size:11px!important}
/* Mint 的鲜艳值用于填充与图形；承载在浅色表面上的强调文字使用更深的语义色。 */
.prim,.dbctx b,.tcWeightItem b,.fatPlanSlider.driver .fatPlanValue input,.fatPlanKpi b,.mres b,.grow .restore,.rsec,.dbsub,.toast.act,.nettrans,.netcand,.netbadge,.trendWeight{color:var(--accentText)}
@media(hover:hover){.prim:not([disabled]):hover{color:var(--accentText)}}
/* 降低动态效果：全站唯一入口。把时长压到 0 而不是 animation:none，
   否则 both/forwards 的关键帧终态（如 dockHide 的收起位）会一并失效。 */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
}

/* ---------- Dashboard（P2-C）---------- */
.dashGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.dashCard{min-width:0;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:11px 12px;display:grid;grid-template-rows:auto auto minmax(40px,1fr);gap:5px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.dashLabel,.dashValue,.dashHint{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashLabel{font-size:12px;color:var(--mute)}
.dashValue{font-size:15px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.dashHint{margin-top:-2px;font-size:10px;color:var(--dim);font-family:var(--mono)}
.dashSpark{align-self:end;margin-top:4px;min-height:40px}
.dashSpark svg{display:block;width:100%;height:40px}
@media(max-width:899px){
  .dashGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .dashCard{padding:9px;gap:4px;grid-template-rows:auto auto minmax(34px,1fr)}
  .dashLabel{font-size:11px}
  .dashValue{font-size:13px}
  .dashHint{font-size:9px}
  .dashSpark{min-height:34px}
  .dashSpark svg{height:34px}
}
@media(max-width:360px){.macroOrder{grid-template-columns:repeat(2,minmax(0,1fr))}}
