:root{
  /* iOS 系统色 */
  --bg:#F2F2F7;
  --card:#FFFFFF;
  --ink:#1C1C1E;
  --muted:#8E8E93;
  --line:#E5E5EA;
  --blue:#007AFF;
  --indigo:#5E5CE6;
  --feed:#FF9500;
  --diaper:#30B0C7;
  --sleep:#5E5CE6;
  --growth:#AF52DE;
  --tip:#FF9500;
  --green:#34C759;
  --red:#FF3B30;
  --radius:16px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Helvetica Neue",sans-serif;
  background:var(--bg);color:var(--ink);
  font-size:16px;line-height:1.45;
  -webkit-font-smoothing:antialiased;
  overscroll-behavior-y:none;
}
.hidden{display:none!important}
button{font-family:inherit;border:none;background:none;color:inherit;cursor:pointer}
input,select{font-family:inherit;font-size:16px;color:var(--ink)}
.view{padding:calc(12px + env(safe-area-inset-top)) 16px calc(86px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto}

/* ===== 引导页（iOS 分组表单风） ===== */
.onboard{min-height:100vh;min-height:100dvh;background:var(--bg)}
.ob-scroll{max-width:440px;margin:0 auto;padding:calc(26px + env(safe-area-inset-top)) 20px 30px}
.cover{
  width:100%;height:auto;display:block;
  border-radius:20px;background:#E5E5EA;
}
.ob-scroll h1{text-align:center;font-size:27px;font-weight:700;letter-spacing:.3px;margin:18px 0 5px}
.ob-sub{text-align:center;color:var(--muted);font-size:14px;line-height:1.6;margin-bottom:22px}
.ob-group{background:#fff;border-radius:14px;overflow:hidden;margin-bottom:10px}
.ob-row{display:flex;align-items:center;gap:10px;padding:11px 15px;min-height:48px;border-bottom:.5px solid var(--line)}
.ob-row:last-child{border-bottom:none}
.ob-row>span{flex:none;width:78px;font-size:16px;color:var(--ink)}
.ob-row input,.ob-row select{flex:1;border:none;outline:none;background:none;text-align:right;min-width:0}
.ob-row input::placeholder{color:#C0C0C6}
.ob-row select{text-align-last:right}
.ob-row.two{gap:12px;padding:11px 15px}
.ob-sub-cell{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:6px;font-size:16px}
.ob-sub-cell span{color:var(--ink)}
.ob-sub-cell input{width:74px;border:none;outline:none;text-align:right;background:none}
.check-field{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink);padding:6px 4px 16px}
.check-field input{width:21px;height:21px;accent-color:var(--blue)}
.ob-save{width:100%;background:var(--blue);color:#fff;font-size:17px;font-weight:600;padding:15px;border-radius:14px}
.ob-save:active{opacity:.85}

/* ===== 头部 ===== */
.page-head{display:flex;align-items:center;justify-content:space-between;margin:6px 2px 14px}
.page-head h2{font-size:28px;font-weight:700;letter-spacing:.2px}
.icon-btn{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--muted);background:transparent}
.icon-btn:active{background:#E5E5EA}
.icon-btn svg{width:21px;height:21px}
.hello-card{background:var(--card);border-radius:var(--radius);padding:18px;margin-bottom:12px}
.hello-card .baby-name{font-size:22px;font-weight:700}
.hello-card .baby-age{font-size:14px;color:var(--muted);margin-top:3px}
.hello-card .stage-chip{display:inline-block;margin-top:12px;background:#F2F2F7;color:var(--ink);padding:6px 12px;border-radius:99px;font-size:13px}

/* 通知授权提示条 */
.notify-perm{width:100%;margin-bottom:12px;padding:13px 16px;border-radius:var(--radius);background:#FFF8E1;color:#9A6700;font-size:14px;font-weight:500;text-align:left}

/* ===== 卡片通用 ===== */
.card{background:var(--card);border-radius:var(--radius);padding:16px;margin-bottom:12px}
.card-title{font-size:13px;color:var(--muted);font-weight:600;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;text-transform:none}

/* 进行中计时卡（纯色，无渐变） */
.active-card{display:flex;align-items:center;gap:14px;border-radius:var(--radius);padding:16px;margin-bottom:12px;color:#fff}
.active-card.feeding{background:var(--feed)}
.active-card.sleeping{background:var(--sleep)}
.active-card .a-icon{width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;font-size:23px;flex:none}
.active-card .a-main{flex:1}
.active-card .a-label{font-size:13px;opacity:.92}
.active-card .a-time{font-size:28px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.15;letter-spacing:.4px}
.active-card .a-btn{background:#fff;color:var(--ink);padding:9px 16px;border-radius:99px;font-size:14px;font-weight:600;flex:none}

/* 快捷操作 */
.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.quick-btn{background:var(--card);border-radius:var(--radius);padding:15px 6px;text-align:center}
.quick-btn:active{background:#F7F7FA}
.quick-btn .q-emoji{font-size:26px}
.quick-btn .q-label{font-size:13px;margin-top:5px;color:var(--ink)}
.quick-btn .q-sub{font-size:11px;color:var(--muted);margin-top:2px}
.quick-btn.on .q-label{color:var(--sleep);font-weight:600}

/* 今日概览 */
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stat-box{background:var(--card);border-radius:14px;padding:12px 8px;text-align:center}
.stat-box .s-num{font-size:19px;font-weight:600;font-variant-numeric:tabular-nums}
.stat-box .s-label{font-size:11.5px;color:var(--muted);margin-top:2px}
.stat-box.c-feed .s-num{color:var(--feed)}
.stat-box.c-diaper .s-num{color:var(--diaper)}
.stat-box.c-sleep .s-num{color:var(--sleep)}

/* 时间线 */
.tl-item{display:flex;gap:12px;padding:11px 0;border-bottom:.5px solid var(--line)}
.tl-item:last-child{border-bottom:none}
.tl-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;flex:none}
.tl-icon.feed{background:rgba(255,149,0,.13)}
.tl-icon.diaper{background:rgba(48,176,199,.13)}
.tl-icon.sleep{background:rgba(94,92,230,.12)}
.tl-main{flex:1;min-width:0}
.tl-desc{font-size:15px}
.tl-time{font-size:12.5px;color:var(--muted)}
.tl-del{color:#C7C7CC;font-size:15px;padding:0 4px;align-self:flex-start}
.tl-del:active{color:var(--red)}
.day-label{font-size:13px;font-weight:600;color:var(--muted);margin:8px 0 2px}

/* ===== 喂奶页 ===== */
.seg{display:flex;background:rgba(120,120,128,.12);border-radius:9px;padding:2px;margin-bottom:14px}
.seg button{flex:1;padding:7px;border-radius:7px;font-size:13.5px;color:var(--ink)}
.seg button.on{background:#fff;font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.side-row{display:flex;gap:10px;margin-bottom:14px}
.side-btn{flex:1;padding:13px;border:1px solid var(--line);border-radius:12px;background:#fff;font-size:14px;color:var(--ink)}
.side-btn.on{border-color:var(--feed);background:rgba(255,149,0,.1);color:var(--feed);font-weight:600}
.timer-big{text-align:center;padding:16px 0 10px}
.timer-big .t-num{font-size:52px;font-weight:300;font-variant-numeric:tabular-nums;letter-spacing:1px}
.timer-big .t-hint{font-size:13px;color:var(--muted);margin-top:4px}
.btn-big{width:100%;padding:16px;border-radius:14px;font-size:16px;font-weight:600}
.btn-feed{background:var(--feed);color:#fff}
.btn-feed:active{opacity:.85}
.btn-feed.end{background:#fff;color:var(--feed);border:1px solid var(--feed)}
.btn-feed:disabled{opacity:.4}
.amount-row{display:flex;gap:10px;align-items:center;margin-bottom:14px}
.amount-row input{flex:1;border:1px solid var(--line);border-radius:12px;padding:13px;background:#fff;outline:none}
.amount-row input:focus{border-color:var(--feed)}
.amount-row .unit{color:var(--muted);font-size:14px}
.hint-box{border-radius:12px;padding:11px 13px;font-size:13px;line-height:1.55;margin-bottom:12px}
.hint-box.warn{background:rgba(255,149,0,.12);color:#8A5400}
.hint-box.info{background:rgba(94,92,230,.1);color:#3D3C8C}
.hint-box.ok{background:rgba(52,199,89,.13);color:#1D7A38}

/* ===== 尿布 ===== */
.diaper-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:6px}
.diaper-btn{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px 4px;text-align:center}
.diaper-btn:active{background:#F7F7FA}
.diaper-btn .d-emoji{font-size:25px}
.diaper-btn .d-label{font-size:13px;margin-top:4px;color:var(--ink)}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.chip{padding:7px 13px;border-radius:99px;background:#F2F2F7;font-size:13px;color:var(--ink);border:1px solid transparent}
.chip.on{background:rgba(48,176,199,.12);color:var(--diaper);border-color:var(--diaper)}
.tag{display:inline-block;font-size:11px;padding:1px 8px;border-radius:99px;margin-left:6px;background:#F2F2F7;color:var(--muted)}

/* ===== 成长 ===== */
.metric-row{display:flex;gap:8px;margin-bottom:14px}
.metric-pill{flex:1;text-align:center;padding:10px 4px;border-radius:10px;background:rgba(120,120,128,.12);font-size:13.5px;color:var(--ink)}
.metric-pill.on{background:var(--growth);color:#fff;font-weight:600}
.chart-wrap{background:#fff;border-radius:var(--radius);padding:10px 8px 6px;margin-bottom:12px}
.chart-wrap svg{width:100%;height:auto;display:block}
.legend{display:flex;gap:14px;justify-content:center;font-size:11.5px;color:var(--muted);padding:6px 0 2px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}

/* ===== 提醒/疫苗 ===== */
.vax-group-title{font-size:13px;font-weight:600;color:var(--muted);margin:14px 2px 8px}
.vax-item{display:flex;gap:12px;align-items:center;background:#fff;border-radius:14px;padding:13px 14px;margin-bottom:9px}
.vax-item:active{background:#F7F7FA}
.vax-dot{width:10px;height:10px;border-radius:50%;flex:none}
.vax-dot.done{background:var(--green)}
.vax-dot.soon{background:var(--tip)}
.vax-dot.overdue{background:var(--red)}
.vax-dot.future{background:#C7C7CC}
.vax-main{flex:1;min-width:0}
.vax-name{font-size:15px}
.vax-date{font-size:12.5px;color:var(--muted)}
.vax-badge{font-size:11px;padding:2px 8px;border-radius:99px;flex:none}
.vax-badge.done{background:rgba(52,199,89,.13);color:var(--green)}
.vax-badge.soon{background:rgba(255,149,0,.13);color:#B06A00}
.vax-badge.overdue{background:rgba(255,59,48,.12);color:var(--red)}
.vax-badge.future{background:#F2F2F7;color:var(--muted)}
.stage-card{border-radius:var(--radius);padding:17px;margin-bottom:12px;background:#fff}
.stage-card h4{font-size:16px;margin-bottom:10px}
.stage-card ul{list-style:none}
.stage-card li{font-size:14px;line-height:1.55;padding-left:17px;position:relative;margin-bottom:8px;color:#3A3A3C}
.stage-card li::before{content:"";position:absolute;left:2px;top:8px;width:6px;height:6px;border-radius:50%;background:var(--tip)}
.stage-pick{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:12px;scrollbar-width:none}
.stage-pick::-webkit-scrollbar{display:none}
.stage-pick button{flex:none;padding:8px 15px;border-radius:99px;background:#fff;font-size:13.5px;color:var(--ink)}
.stage-pick button.on{background:var(--ink);color:#fff;font-weight:600}
.opt-vax{background:#fff;border-radius:14px;padding:13px 14px;margin-bottom:9px}
.opt-vax b{font-size:14.5px}
.opt-vax p{font-size:13px;color:var(--muted);margin-top:3px;line-height:1.55}

/* ===== 底部弹层 ===== */
.sheet-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:50}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:51;background:#fff;border-radius:20px 20px 0 0;padding:8px 18px calc(22px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto;animation:slideUp .28s cubic-bezier(.32,.72,0,1)}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet-bar{display:flex;justify-content:center;padding:6px 0 2px}
.sheet-bar span{width:38px;height:5px;border-radius:99px;background:#D1D1D6}
.sheet-title{font-size:17px;font-weight:600;margin:6px 0 14px;text-align:center}
.sheet-body .field{margin-bottom:12px}
.sheet-body .field>span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.sheet-body .field input,.sheet-body .field select{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;outline:none}
.sheet-body .btn-primary{margin-top:6px;width:100%;background:var(--blue);color:#fff;font-size:17px;font-weight:600;padding:15px;border-radius:14px}
.sheet-actions{display:flex;gap:10px;margin-top:8px}
.sheet-actions button{flex:1;padding:14px;border-radius:13px;font-size:15px;font-weight:600}
.sheet-actions .s-cancel{background:#F2F2F7;color:var(--ink)}
.sheet-actions .s-ok{background:var(--blue);color:#fff}
.sheet-actions .danger{background:rgba(255,59,48,.12);color:var(--red)}

/* Toast */
.toast{position:fixed;left:50%;bottom:120px;transform:translateX(-50%);background:rgba(0,0,0,.78);color:#fff;font-size:14px;padding:10px 20px;border-radius:99px;z-index:60;animation:fadeIn .2s}
@keyframes fadeIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}

/* ===== 底部导航（iOS 风） ===== */
.tabbar{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:.5px solid var(--line);display:flex;z-index:40;padding-bottom:env(safe-area-inset-bottom);max-width:560px;margin:0 auto;transform:translateZ(0);-webkit-transform:translateZ(0)}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 7px;color:#8E8E93;text-decoration:none;font-size:10.5px}
.tab svg{width:25px;height:25px}
.tab.on{color:var(--blue)}
