/* ==========================================================================
   开心的饭量本 · 装订表格册（母子健康手册世系）
   世界：印刷宋体表格 + 楷体手写记录 + 朱红印章 + 双线表格规
   规矩：没有圆角、没有投影、没有渐变装饰；字号只有四档 0.75 / 0.95 / 1.2 / 2.9rem；
        层级来自双线、反白、印刷小字与线形（虚线=观察中 / 实线=已结 / 双线=缺记）。
   ========================================================================== */
:root{
  --paper:#e9ece1;      /* 表格纸：淡青表格纸 */
  --paper-2:#f2f4ec;    /* 表内白格 / 表头块 */
  --paper-3:#fbfcf7;    /* 填写格 */
  --print:#3d4a3c;      /* 印刷墨（墨绿灰） */
  --print-2:#57634f;    /* 印刷小字（对比度 5.2:1） */
  --rule:#a9b4a1;       /* 表格细线 */
  --rule-2:#c7cfc0;
  --rule-dot:#d8dfd0;
  --pen:#1e3a5f;        /* 爸爸：蓝黑墨水 */
  --pen-2:#22543d;      /* 妈妈：墨绿墨水 / 达标 */
  --seal:#b8232a;       /* 印章朱红 */
  --song:"Songti SC","STSong","Source Han Serif SC","Noto Serif SC",SimSun,"宋体",serif;
  --kai:"Kaiti SC","STKaiti",KaiTi,"楷体","Kaiti TC",STKaiti,serif;
  --hei:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",SimHei,sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; background:var(--paper)}  /* html 自己上色，body 的装订孔才不会漫到整个画布 */
html,body{overflow-x:clip}
body{
  margin:0 auto; max-width:560px; padding:12px 12px 104px;
  padding-left:max(12px,env(safe-area-inset-left)); padding-right:max(12px,env(safe-area-inset-right));
  padding-bottom:max(104px,env(safe-area-inset-bottom));
  background:var(--paper); color:var(--print);
  font-family:var(--song); font-size:.95rem; line-height:1.62;
  font-variant-numeric:tabular-nums;
}
body::before{ /* 纸纤维 */
  content:""; position:fixed; inset:0; pointer-events:none; opacity:.10; mix-blend-mode:multiply; z-index:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}
main,header,nav,footer{position:relative; z-index:1}
::selection{background:var(--print); color:var(--paper-2)}
:focus-visible{outline:2px solid var(--print); outline-offset:2px}
input,select,textarea{caret-color:var(--pen)}
h1,h2,h3{margin:0; font-weight:700}

/* ---------- 表头块 ---------- */
.topbar{
  display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  padding:11px 14px 10px; background:var(--paper-2); border:1px solid var(--rule);
  position:sticky; top:0; z-index:6;
}
.brand{display:flex; align-items:center; gap:10px; min-width:0}
.paw{width:34px; height:34px; flex:none; display:grid; place-content:center;
  border:1.5px solid var(--print); color:var(--print); font-family:var(--song); font-size:1.2rem; line-height:1}
/* 表头猫头：放开玩的一块，纸上唯一的彩色 */
.brand-cat{
  position:relative; width:42px; height:42px; flex:none; cursor:pointer;
  border:1.5px solid var(--print); background:var(--paper-3); padding:0;
  display:grid; place-content:center;
}
.brand-cat svg{width:34px; height:34px; display:block}
.brand-cat .ear{fill:var(--cat-fill,#F2B84B); stroke:var(--print); stroke-width:2; stroke-linejoin:round}
.brand-cat .face{fill:var(--cat-fill,#F2B84B); stroke:var(--print); stroke-width:2}
.brand-cat[data-cat="波妞"]{--cat-fill:#9FB6C9}
.brand-cat[data-cat="开心"]{--cat-fill:#F2B84B}
.brand-cat .eye{fill:var(--print)}
.brand-cat .mouth{fill:none; stroke:var(--print); stroke-width:1.8; stroke-linecap:round}
.brand-cat .wh{stroke:var(--print-2); stroke-width:1.2; stroke-linecap:round}
.brand-cat .blush{fill:var(--seal); opacity:.45}
.brand-cat .paw-dot{
  position:absolute; right:-9px; bottom:-9px; font-style:normal; font-size:14px; line-height:1;
  background:var(--paper-2); border:1px solid var(--rule); width:20px; height:20px;
  display:grid; place-content:center;
}
.brand-cat.wiggle{animation:wiggle .45s ease}
@keyframes wiggle{0%{transform:rotate(0)}25%{transform:rotate(-10deg) scale(1.06)}50%{transform:rotate(8deg)}75%{transform:rotate(-4deg)}100%{transform:rotate(0)}}
.brand strong{display:block; font-size:1.2rem; letter-spacing:.04em; line-height:1.2}
#dateLine{display:block; margin-top:3px; font-size:.75rem; color:var(--print-2); letter-spacing:.02em}
.who{display:flex; border:1px solid var(--rule); flex:none}
.who-btn{
  border:0; border-right:1px solid var(--rule); background:transparent; cursor:pointer;
  font-family:var(--song); font-size:.75rem; letter-spacing:.04em; color:var(--print-2);
  padding:8px 11px;
}
.who-btn:last-child{border-right:0}
.who-btn.on{background:var(--print); color:var(--paper-2)}

/* ---------- 目录条（页签 = 当前页反白） ---------- */
.tabs{
  display:grid; grid-template-columns:repeat(4,1fr); gap:0;
  margin:12px 0 0; border:1px solid var(--print); border-bottom:0;
  position:sticky; top:62px; z-index:5;
}
.tabs button{
  border:0; border-right:1px solid var(--rule); background:var(--paper-2); cursor:pointer;
  font-family:var(--song); font-size:.95rem; letter-spacing:.04em; color:var(--print-2);
  padding:9px 0;
}
.tabs button:last-child{border-right:0}
.tabs button.on{background:var(--print); color:var(--paper-2)}

/* ---------- 表格块 ---------- */
.block{background:var(--paper-2); border:1px solid var(--rule); margin-top:12px}
.block-h{
  display:flex; align-items:baseline; justify-content:space-between; gap:10px;
  padding:7px 12px 6px; border-bottom:1px solid var(--print); background:var(--paper);
}
.block-h h2{font-size:.95rem; letter-spacing:.04em}
.block-h .no{font-size:.75rem; color:var(--print-2); letter-spacing:.02em}
.block-b{padding:0}
.sub{color:var(--print-2); font-size:.75rem; margin:0}

/* 全出血色场承担状态：异常页整条朱红 = 这一页就是报警登记 */
.band{
  display:flex; align-items:baseline; justify-content:space-between; gap:10px;
  margin-top:12px; padding:11px 14px; background:var(--seal); color:#f7ece5; border:1px solid var(--seal);
}
.band h2{font-size:1.2rem; letter-spacing:.04em}
.band .n{font-size:.75rem; color:#f2d9d3}

/* 汇总表头：日期范围与总数 */
.report-head{padding:11px 12px; border-bottom:1px solid var(--rule)}
#repTitle{display:block; font-size:1.2rem; letter-spacing:.02em}
.report-head .sub{display:block; margin-top:4px}
#wReadout{font-size:1.2rem; font-weight:700; color:var(--print)}
#wReadout.dim{font-size:.95rem; font-weight:400; color:var(--print-2)}

/* 抬升线：真实排版规——双线、括号、格位按真实布局盒量出来画（1 设备像素） */
.rules{position:absolute; top:0; left:0; width:100%; height:100%; pointer-events:none; z-index:2; overflow:visible}
/* ---------- 合计格 ---------- */
.total{position:relative; padding:12px 14px 14px; border-top:1px solid var(--print)}
.duet{display:flex; gap:10px}
.duet-one{flex:1; min-width:0}
.duet-one strong{display:block; font-size:2.9rem; line-height:1; font-weight:700; color:var(--print); letter-spacing:-.01em}
.duet-one strong em{font-style:normal; font-size:.95rem; letter-spacing:.08em; margin-left:6px; color:var(--print-2)}
#totalLine{display:block; font-size:.75rem; line-height:1.6; color:var(--print-2); letter-spacing:.02em; margin-top:6px}
/* 记一碗：碗/吃者单选手势区（手机单手点） */
.pick{display:flex; gap:0; margin-top:5px; border:1px solid var(--rule); background:var(--paper-3)}
.pick button{flex:1; border:0; border-right:1px solid var(--rule); background:transparent; cursor:pointer;
  font-family:var(--song); font-size:.95rem; letter-spacing:.06em; color:var(--print-2); padding:11px 0}
.pick button:last-child{border-right:0}
.pick button.on{background:var(--print); color:var(--paper-2)}
.eat-preview{margin:10px 14px 0; font-size:.95rem; color:var(--pen-2); font-family:var(--song)}
.eat-cat{margin:10px 14px 0; font-size:.95rem; color:var(--print); font-family:var(--song)}
.seal{
  position:absolute; right:12px; top:12px; text-align:center; pointer-events:none;
  font-family:var(--song); font-size:.75rem; line-height:1.32; letter-spacing:.16em; color:var(--seal);
  border:2px solid var(--seal); border-radius:3px; padding:5px 8px 6px;
  transform:rotate(-3.2deg); mix-blend-mode:multiply; opacity:.9;
}
.seal i{font-style:normal; display:block; font-size:.75rem; letter-spacing:.04em; margin-top:2px}
.seal[hidden]{display:none}
.total .tail{display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-top:6px}

/* ---------- 日期行（表格里的日期栏） ---------- */
.dayrow{display:flex; align-items:stretch; gap:0; border-bottom:1px solid var(--rule)}
.dayrow button{
  border:0; border-right:1px solid var(--rule); background:var(--paper-2); cursor:pointer;
  font-family:var(--song); font-size:.95rem; color:var(--print); padding:9px 13px;
}
.dayrow input{
  flex:1; min-width:0; border:0; border-right:1px solid var(--rule); background:var(--paper-3);
  font-family:var(--song); font-size:.95rem; color:var(--pen); padding:9px 12px;
  appearance:none; -webkit-appearance:none;
}
input::-webkit-calendar-picker-indicator{opacity:.45; cursor:pointer}
input::-webkit-datetime-edit{color:var(--pen); font-family:var(--kai)}
dialog input::-webkit-datetime-edit{color:var(--pen); font-family:var(--kai)}
.dayrow button.ghost{border-right:0; color:var(--print-2); font-size:.75rem; letter-spacing:.04em}

/* ---------- 台账（li = 表格一行） ---------- */
.feed{list-style:none; margin:0; padding:0; background:var(--paper-2)}
.feed:empty{display:none}
.feed li{padding:9px 12px; border-bottom:1px dotted var(--rule-2)}
.feed li:last-child{border-bottom:0}
.feed .row1{display:flex; align-items:baseline; gap:10px}
.feed .row1 strong{font-family:var(--song); font-weight:700; letter-spacing:.02em}
.feed .row1 .ty{flex:1; min-width:0; font-family:var(--song); color:var(--print-2)}
.feed .g{font-family:var(--song); font-size:1.2rem; font-weight:700; color:var(--print); margin-left:auto}
.feed .meta{font-family:var(--kai); font-size:.95rem; color:var(--pen); margin-top:3px}
.feed .meta .by{font-family:var(--song); font-size:.75rem; color:var(--print-2); letter-spacing:.02em; margin-right:5px}
.feed .meta .by.mom{color:var(--pen-2)}
.feed .k-ab{color:var(--seal); font-weight:700}
.feed .del{
  border:1px solid var(--rule); background:var(--paper-2); cursor:pointer;
  font-family:var(--song); font-size:.75rem; letter-spacing:.04em; color:var(--print-2);
  padding:5px 9px; flex:none;
}
.feed .del:hover{border-color:var(--seal); color:var(--seal)}
.feed img{display:block; width:100%; margin-top:8px; border:1px dashed var(--rule); padding:3px; background:var(--paper-3)}
.blur{filter:blur(16px); cursor:pointer}
.tapshow{font-family:var(--song); font-size:.75rem; color:var(--seal); margin-top:4px}

/* ---------- 打印框按钮 ---------- */
.actions{display:flex; gap:10px; padding:10px 12px; flex-wrap:wrap; border-top:1px solid var(--rule)}
/* 台账顶部操作条：不用翻到底就能记，列表再长也吸在上面 */
.actions-top{border-top:0; border-bottom:1px solid var(--rule); position:sticky; top:104px; z-index:4; background:var(--paper-2)}
.primary,.ghost{
  font-family:var(--song); font-size:.95rem; letter-spacing:.1em; cursor:pointer;
  padding:12px 18px; border:1px solid var(--print); background:var(--paper-2); color:var(--print);
}
.primary{background:var(--print); color:var(--paper-2)}
.primary:active,.ghost:active{transform:translateY(1px)}
.primary[disabled],.ghost[disabled]{border-style:dashed; color:var(--print-2); background:var(--paper)}

/* ---------- 印刷勾选框（筛选 = 表格方框 + 手写打勾） ---------- */
.chips{display:flex; gap:8px 12px; flex-wrap:wrap; padding:10px 12px; border-bottom:1px solid var(--rule); background:var(--paper-2)}
.chips button{
  display:inline-flex; align-items:center; gap:6px; cursor:pointer;
  border:0; background:transparent; padding:2px 0;
  font-family:var(--song); font-size:.75rem; letter-spacing:.02em; color:var(--print-2);
}
.chips button::before{
  content:""; width:13px; height:13px; flex:none; border:1px solid var(--print); background:var(--paper-3);
}
.chips button.on{color:var(--print)}
.chips button.on::before{
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M3 10l4 4L15 4' fill='none' stroke='%231e3a5f' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/13px 13px no-repeat, var(--paper-3);
}

/* ---------- 读数格（体重） ---------- */
.readout{
  display:flex; align-items:baseline; justify-content:space-between; gap:10px;
  padding:11px 12px; border-bottom:1px solid var(--rule);
}
.readout b{font-family:var(--song); font-size:1.2rem; font-weight:700}
.readout.dim b{color:var(--print-2); font-weight:400; font-size:.95rem}
.chart{display:block; width:100%; height:auto; background:var(--paper-3)}

/* ---------- 汇总：统计条与登记 ---------- */
.kstat{
  display:inline-block; border:1px solid var(--print); background:var(--paper-3);
  font-family:var(--song); font-size:.75rem; color:var(--print); padding:4px 9px;
}
#kindTotal{display:flex; gap:8px; flex-wrap:wrap; padding:10px 12px; border-bottom:1px solid var(--rule)}
.ev-reg{display:grid; gap:0; font-size:.95rem}
.ev-reg strong{display:block; font-size:.75rem; letter-spacing:.04em; color:var(--print-2); font-weight:400; padding:9px 12px 0}
.ev-reg div{padding:7px 12px; border-bottom:1px dotted var(--rule-2); font-family:var(--kai); color:var(--pen)}
.ev-reg div:last-child{border-bottom:0}
.ev-reg .k-ab{color:var(--seal); font-family:var(--song); font-weight:700}

/* 医生意见：留白手写区（打印出来给医生写字） */
.vet{padding:12px}
.vet .lines{height:66px; background-image:repeating-linear-gradient(to bottom,transparent 0 32px,var(--rule-2) 32px 33px)}
.vet .sign{display:flex; justify-content:space-between; font-size:.75rem; color:var(--print-2); margin-top:8px; letter-spacing:.04em}

/* ---------- 免登链接行（截图发医生，链接贴在这里） ---------- */
#shareLine{font-size:.75rem; color:var(--print-2); word-break:break-all; padding:8px 12px; border-bottom:1px solid var(--rule)}
#shareLine[hidden]{display:none}

/* ---------- 封面（登录） ---------- */
.veil{position:fixed; inset:0; z-index:30; background:rgba(61,74,60,.72); display:grid; place-items:center; padding:18px}
.veil[hidden]{display:none}
.cover{
  position:relative; width:100%; max-width:380px; background:var(--paper-2);
  border:1px solid var(--print); padding:26px 22px 20px;
}
.cover::before{ /* 装订孔 */
  content:""; position:absolute; left:14px; top:22px; bottom:22px; width:9px;
  background-image:radial-gradient(circle at 50% 50%, var(--paper) 0 4px, var(--rule) 4px 5px, transparent 5px);
  background-size:9px 26px; background-repeat:repeat-y;
}
.cover .no{font-size:.75rem; color:var(--print-2); letter-spacing:.04em}
.cover h1{font-size:1.2rem; margin:8px 0 0; letter-spacing:.1em}
.cover .sub{margin:6px 0 18px; font-size:.75rem; color:var(--print-2); padding-bottom:10px; border-bottom:1px solid var(--print)}
.cover label{display:block; font-size:.75rem; color:var(--print-2); letter-spacing:.04em}
.cover input{
  width:100%; margin-top:5px; padding:10px 12px; background:var(--paper-3);
  border:1px solid var(--rule); border-bottom-color:var(--print);
  font-family:var(--kai); font-size:.95rem; color:var(--pen);
}
.cover button{
  width:100%; margin-top:16px; padding:14px; cursor:pointer;
  border:1px solid var(--print); background:var(--print); color:var(--paper-2);
  font-family:var(--song); font-size:.95rem; letter-spacing:.14em;
}
.err{color:var(--seal); font-size:.75rem; margin:8px 0 0}
.cover button:hover{background:#2f3a2e}

/* ---------- 填写栏（弹窗） ---------- */
dialog{
  border:1px solid var(--print); border-radius:0; padding:0; width:min(460px,94vw);
  background:var(--paper-2); color:var(--print);
}
dialog::backdrop{background:rgba(61,74,60,.55)}
dialog form{padding:0 0 14px; display:grid; gap:0; background:var(--paper-2); min-width:0; grid-template-columns:minmax(0,1fr)}
dialog h2{padding:12px 14px 10px; border-bottom:1px solid var(--print); font-size:1.2rem; letter-spacing:.04em; background:var(--paper)}
dialog label{display:grid; gap:4px; padding:10px 14px 0; font-size:.75rem; color:var(--print-2); letter-spacing:.04em; min-width:0}
dialog .row{display:flex; gap:0}
dialog .row label{flex:1; min-width:0}
dialog .row label+label{border-left:1px dotted var(--rule-2)}
dialog input,dialog select,dialog textarea{
  width:100%; min-width:0; max-width:100%; font-family:var(--kai); font-size:.95rem; color:var(--pen);
  padding:8px 10px; background:var(--paper-3); border:1px solid var(--rule); border-bottom-color:var(--print);
}
dialog textarea{font-family:var(--kai); resize:vertical}
dialog button{
  font-family:var(--song); font-size:.95rem; letter-spacing:.1em; cursor:pointer;
  padding:12px 16px; border:1px solid var(--print); background:var(--paper-2); color:var(--print);
}
dialog button.primary{background:var(--print); color:var(--paper-2)}
/* 日期/时间一格：平时读作“今天 · 10/07”，右边一个朱红“改”；点它才亮出系统控件 */
.when{
  position:relative; display:block; width:100%; text-align:left; cursor:pointer;
  font-family:var(--kai); font-size:.95rem; color:var(--pen);
  padding:8px 42px 8px 10px; background:var(--paper-3);
  border:1px solid var(--rule); border-bottom-color:var(--print);
}
.when::after{
  content:"改"; position:absolute; right:11px; top:50%; transform:translateY(-50%);
  font-family:var(--song); font-size:.75rem; letter-spacing:.06em; color:var(--seal);
}
.when[hidden],dialog input[hidden]{display:none}
/* 整碗倒掉：朱红虚线 = 作废倒掉，和禁用态一个语义 */
#dumpBtn{border-style:dashed; border-color:var(--seal); color:var(--seal)}
/* 保存/算了 收在底部一条：桌面居中弹窗里就是原来那两行按钮 */
dialog form > button{width:calc(100% - 28px); margin:14px 14px 0}
.sheet-foot{display:grid; gap:8px; padding:14px 14px 0}
.sheet-foot button{width:100%}
.calc-preview{display:block; min-height:1.2em; font-size:.75rem; color:var(--pen-2); font-family:var(--song)}

/* ---------- 提示条 ---------- */
#toast{
  position:fixed; left:50%; bottom:20px; transform:translateX(-50%); z-index:40;
  background:var(--print); color:var(--paper-2); font-family:var(--song); font-size:.95rem;
  padding:10px 18px; opacity:0; transition:opacity .28s; pointer-events:none; max-width:92vw;
}

/* ---------- 桌面：书页与装订孔（贴在纸上，不是贴屏幕） ---------- */
@media (min-width:760px){
  body{
    max-width:648px; padding-left:56px; padding-right:38px;
    border-left:1px solid var(--rule); border-right:1px solid var(--rule);
    background-image:radial-gradient(circle at 50% 50%, var(--paper-3) 0 4px, var(--rule) 4px 5px, transparent 5.5px);
    background-size:9px 26px; background-position:8px 14px; background-repeat:repeat-y;
  }
}
@media (max-width:340px){
  .duet-one strong{font-size:2.3rem}
  .seal{position:static; display:inline-block; margin-top:10px; transform:rotate(-2deg)}
}

/* ---------- 打印：这一页本来就是给医生的一张纸 ---------- */
@media print{
  body{max-width:none; padding:0; background:#fff}
  body::before,body::after{display:none}
  .topbar,.tabs,.actions,.chips,#toast,.seal{display:none}
  .block{break-inside:avoid; border-color:#000}
  .rules{display:none}
}

/* ==========================================================================
   手机端适配 · adapt 一批修完（今天/体重/异常/汇总/分享/弹窗共用）
   病根：吸顶偏移写死 / 触点不足 44px / 输入字号 <16px 致 iOS 缩放 /
          合计大数字与印章重叠 / 台账一行挤爆 / 弹窗双列过窄
   ========================================================================== */
/* 标题行与色场允许换行，不挤出视口 */
.block-h{flex-wrap:wrap; row-gap:2px}
.block-h .no{margin-left:auto; text-align:right}
.band{flex-wrap:wrap; row-gap:4px}
.readout{flex-wrap:wrap; row-gap:4px}
.report-head{overflow-wrap:anywhere; min-width:0}
.brand{min-width:0; flex:1}
.brand strong{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.feed .row1{flex-wrap:wrap; row-gap:6px}
.feed .ty{min-width:0; overflow-wrap:anywhere}
/* 触屏给按下去的反馈（无 hover 的设备靠这个确认点中了） */
.primary:active,.ghost:active,.who-btn:active,.tabs button:active,.pick button:active,.chips button:active,.dayrow button:active,.feed .del:active{transform:translateY(1px); filter:brightness(.96)}
#toast{
  bottom:max(20px,env(safe-area-inset-bottom));
  width:max-content; text-align:center;
}

/* 粗指针（手机/平板触屏）：输入字号提到 16px，iOS 聚焦不再乱缩放 */
@media (pointer:coarse){
  input,select,textarea{font-size:16px}
  .dayrow input{font-size:16px; min-height:48px}
  dialog input,dialog select,dialog textarea{font-size:16px}
  .cover input{font-size:16px}
  .who-btn{min-height:44px; min-width:52px}
  .tabs button{min-height:48px}
  .pick button{min-height:52px}
  .feed .del{min-height:44px; padding:10px 14px}
  .primary,.ghost{min-height:48px}
}

@media (max-width:760px){
  body{padding:10px 10px 96px; padding-left:max(10px,env(safe-area-inset-left)); padding-right:max(10px,env(safe-area-inset-right)); padding-bottom:max(96px,env(safe-area-inset-bottom))}
  /* 顶栏：三件套不换行挤爆，猫名省略 */
  .topbar{gap:8px; padding:9px 10px; align-items:center}
  .brand{gap:8px}
  .brand strong{font-size:1.05rem}
  .who{flex:none}
  .who-btn{padding:10px 13px; font-size:.85rem; min-height:44px}
  /* 目录条：三层吸顶对齐顶栏实高（顶栏约 62px），按键给到 48px */
  .tabs{top:61px}
  .tabs button{padding:12px 0; font-size:.9rem; min-height:48px}
  /* 日期行：左右键 48px 正方，日期框 16px 不缩放 */
  .dayrow button{min-width:48px; min-height:48px; font-size:1.15rem; padding:9px 12px}
  .dayrow input{min-height:48px; font-size:16px}
  .dayrow button.ghost{font-size:.8rem}
  /* 台账顶部操作条：三层吸顶之和（62+48），背景不透 */
  .actions-top{top:109px}
  .actions{gap:8px}
  .actions .primary,.actions .ghost{flex:1 1 140px; min-height:48px}
  /* 合计：大数字随屏收，不顶出印章 */
  .duet-one strong{font-size:clamp(2rem,12.5vw,2.6rem)}
  /* 筛选勾选：整颗 44px 好点，框放大到 18px */
  .chips{gap:4px 14px; padding:6px 12px 8px}
  .chips button{min-height:44px; padding:8px 2px; font-size:.85rem}
  .chips button::before{width:18px; height:18px}
  .chips button.on::before{background-size:18px 18px}
  /* 记一碗手势区：52px 高，单手点得中 */
  .pick button{padding:14px 0; font-size:1rem; min-height:52px}
  /* 台账行：删除键独占一行右对齐，不再挤时间 */
  .feed li{padding:10px 12px}
  .feed .g{font-size:1.15rem}
  .feed .del{margin-left:auto}
  /* 弹窗改底部抽屉：贴底整宽、只上下滚、保存钉在底部；横向一律锁死，iOS 上也不会滑 */
  dialog#sheet{
    width:100%; max-width:100%; margin:0; inset:auto 0 0 0;
    max-height:88vh; max-height:88svh;
    border:0; border-top:3px double var(--print);
    overflow-x:hidden; overflow-x:clip; overflow-y:auto;
    overscroll-behavior:contain; touch-action:pan-y pinch-zoom;
    animation:sheet-in .18s ease-out;
  }
  dialog#sheet h2{position:sticky; top:0; z-index:3}
  dialog#sheet form{padding-bottom:0}
  dialog#sheet input[type=date],dialog#sheet input[type=time]{min-width:0; max-width:100%}
  .sheet-foot{
    position:sticky; bottom:0; z-index:3;
    padding:10px 14px max(10px,env(safe-area-inset-bottom));
    background:var(--paper-2); border-top:1px solid var(--print);
  }
  dialog#sheet input,dialog#sheet select,dialog#sheet textarea{font-size:16px; padding:11px 10px}
  dialog#sheet .when{font-size:16px; min-height:48px; padding:11px 42px 11px 10px}
  /* 汇总：统计条与操作按钮竖排，图表不溢出 */
  .chart{max-width:100%}
  .vet{padding:10px}
}

@media (max-width:480px){
  /* 窄屏：印章让位到数字下方，不再压字 */
  .seal{position:static; display:inline-block; margin-top:10px; transform:rotate(-2deg)}
  .total{padding:12px 12px 14px}
  /* 弹窗双列改单列：时间/种类、投放/剩上下排 */
  dialog .row{flex-direction:column}
  dialog .row label+label{border-left:0; border-top:1px dotted var(--rule-2)}
  /* 操作条竖排全宽：记一碗永远一指到 */
  .actions-top .primary{flex:1 1 100%}
  .actions-top .ghost{flex:1 1 100%}
  .block .actions .primary{flex:1 1 100%}
  .block .actions .ghost{flex:1 1 100%}
  /* 分享头与汇总头换行 */
  .report-head{padding:10px 12px}
  #repTitle{font-size:1.05rem}
  .band h2{font-size:1.05rem}
}

/* 手机抽屉从下往上冒（系统设了“减弱动效”就不做过渡） */
@keyframes sheet-in{from{transform:translateY(16px); opacity:.55} to{transform:none; opacity:1}}
@media (prefers-reduced-motion:reduce){
  dialog#sheet{animation:none}
  .brand-cat.wiggle{animation:none}
}


