:root{--bg:#f4f1ea;--card:#fffdf9;--surface-2:#ece8df;--surface-3:#e1dcd0;--input-bg:#efece3;--ink:#221f1a;--muted:#777269;--line:#e4dfd3;--accent:#1f6b3a;--accent-strong:#175430;--accent-soft:#dcefe2;--on-accent:#fff;--feeding:#d96c8b;--feeding-ink:#b23a5c;--feeding-soft:#fbe7ec;--sleep:#3aa57c;--sleep-ink:#1e6b4f;--sleep-soft:#ddf2e8;--growth:#8a857b;--growth-ink:#5c5850;--growth-soft:#efece5;--danger:#b23a5c;--danger-soft:#fbe7ec;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius:16px;--radius-pill:999px;--font-sans:system-ui, -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--text-xs:12px;--text-sm:13px;--text-base:15px;--text-md:17px;--text-lg:20px;--text-xl:26px;--text-display:34px}*{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);margin:0;line-height:1.55}#app{max-width:760px;margin:0 auto;padding:20px 20px 48px}::selection{background:var(--accent-soft)}.topbar{margin-bottom:var(--space-5)}.brand{margin-bottom:var(--space-3);align-items:center;gap:8px;display:flex}.brand-dot{background:var(--accent);border-radius:50%;width:12px;height:12px}.brand-name{letter-spacing:.01em;font-size:16px;font-weight:800}.profile-card{background:var(--card);border-radius:var(--radius);align-items:center;gap:14px;padding:14px 16px;animation:.24s ease-out backwards rise;display:flex}.avatar{background:var(--accent-soft);width:50px;height:50px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:22px;font-weight:800;display:flex}.profile-info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.profile-name{letter-spacing:-.01em;overflow-wrap:anywhere;font-size:19px;font-weight:800}.profile-meta{color:var(--muted);font-size:13px}.profile-age{flex-shrink:0;align-items:baseline;gap:4px;display:flex}.age-main{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:34px;font-weight:800;line-height:1}.age-unit{color:var(--muted);font-size:14px;font-weight:600}.profile-edit{flex-shrink:0}.banner{border-radius:var(--radius);margin-bottom:var(--space-4);align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;display:flex}.banner-info{background:var(--sleep-soft);color:var(--sleep-ink)}.banner-warn{background:var(--feeding-soft);color:var(--feeding-ink)}.banner>span{flex:1}.banner-close{cursor:pointer;color:inherit;background:0 0;border:none;padding:0 2px;font-size:18px;line-height:1}.panel,.entry-form{background:var(--card);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4);animation:.24s ease-out backwards rise}.panel.compact{margin-bottom:var(--space-3)}.entry-form{gap:var(--space-3);flex-direction:column;display:flex}.panel h2,.entry-form h2{letter-spacing:-.01em;margin:0;font-size:18px;font-weight:800}.panel h2:before,.entry-form h2:before{content:"";background:var(--accent);vertical-align:1px;border-radius:50%;width:8px;height:8px;margin-right:9px;display:inline-block}.panel-head{margin-bottom:var(--space-3);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.entry-form .panel-head{margin-bottom:0}.panel-head h2{margin:0}.hint{color:var(--muted);margin:0;font-size:13px}input,select{color:var(--ink);border-radius:var(--radius-pill);background-color:var(--input-bg);border:1px solid #0000;padding:9px 14px;font-family:inherit;font-size:15px;transition:border-color .15s,background-color .15s}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23777269' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:14px;padding-right:34px}.entry-form input,.entry-form select,.panel input,.panel select{width:100%}input:focus,select:focus{border-color:var(--accent);background-color:var(--card);outline:none}input:focus-visible,select:focus-visible,button:focus-visible,.chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field-label{color:var(--muted);font-size:13px;font-weight:600}.form-grid,.fields{grid-template-columns:1fr 1fr;gap:10px;display:grid}.form-actions{flex-wrap:wrap;gap:8px;display:flex}button.primary,button.secondary{border-radius:var(--radius-pill);cursor:pointer;border:none;padding:10px 20px;font-family:inherit;font-size:15px;font-weight:600;transition:background-color .15s,transform .1s}button.primary{background:var(--accent);color:var(--on-accent)}button.primary:hover{background:var(--accent-strong)}button.secondary{background:var(--surface-2);color:var(--ink)}button.secondary:hover{background:var(--surface-3)}button.secondary.danger-btn{background:var(--danger-soft);color:var(--danger)}button.secondary.danger-btn:hover{background:#f6d6de}button.primary:active,button.secondary:active{transform:scale(.97)}button:disabled{opacity:.6;cursor:wait;transform:none}.errors{color:var(--danger);margin:0;font-size:14px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.filters{margin:var(--space-2) 0 var(--space-4);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chip{border-radius:var(--radius-pill);background:var(--surface-2);color:var(--ink);cursor:pointer;border:none;padding:7px 16px;font-family:inherit;font-size:14px;font-weight:600;transition:background-color .15s,color .15s,transform .1s}.chip:hover{background:var(--surface-3)}.chip:active{transform:scale(.96)}.chip.active{background:var(--ink);color:#fff}.month-select,.mini-select{width:auto;font-size:14px;font-weight:500}.panel select.mini-select{width:auto}.filter-count{color:var(--muted);margin-left:auto;font-size:13px}.stat-list{flex-direction:column;gap:8px;display:flex}.stat-row{justify-content:space-between;align-items:baseline;gap:12px;font-size:14px;display:flex}.stat-label{color:var(--muted);flex-shrink:0}.stat-value{text-align:right;overflow-wrap:anywhere;font-weight:700}.stats-grid{margin-bottom:var(--space-4);grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.stat-tile{border-radius:var(--radius);flex-direction:column;gap:3px;min-width:0;padding:12px 14px;display:flex}.stat-tile.kind-feeding{background:var(--feeding-soft)}.stat-tile.kind-sleep{background:var(--sleep-soft)}.stat-tile.kind-growth{background:var(--growth-soft)}.stat-tile .stat-label{font-size:13px;font-weight:700}.stat-tile.kind-feeding .stat-label{color:var(--feeding-ink)}.stat-tile.kind-sleep .stat-label{color:var(--sleep-ink)}.stat-tile.kind-growth .stat-label{color:var(--growth-ink)}.stat-tile .stat-value{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;font-size:16px;font-weight:800;line-height:1.35}.bar-list{flex-direction:column;gap:8px;display:flex}.bar-row{grid-template-columns:84px 1fr 36px;align-items:center;gap:10px;font-size:13px;display:grid}.bar-label{color:var(--muted);font-weight:600}.bar-track{border-radius:var(--radius-pill);background:var(--surface-2);height:10px;overflow:hidden}.bar-fill{border-radius:var(--radius-pill);background:var(--accent);height:100%;transition:width .3s ease-out;display:block}.bar-row.kind-feeding .bar-fill{background:var(--feeding)}.bar-row.kind-sleep .bar-fill{background:var(--sleep)}.bar-row.kind-growth .bar-fill{background:var(--growth)}.bar-count{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.trend-chart{height:140px;margin-top:var(--space-2);align-items:flex-end;gap:3px;display:flex}.trend-col{flex-direction:column;flex:1 1 0;align-items:center;min-width:0;height:100%;display:flex}.trend-track{background:var(--surface-2);border-radius:8px;flex:1;align-items:flex-end;width:100%;display:flex}.trend-bar{background:var(--surface-3);transform-origin:bottom;border-radius:6px 6px 0 0;width:100%;animation:.4s ease-out backwards grow}.trend-bar.has-data{background:var(--accent)}#trend-chart[data-kind=feeding] .trend-bar.has-data{background:var(--feeding)}#trend-chart[data-kind=sleep] .trend-bar.has-data{background:var(--sleep)}#trend-chart[data-kind=growth] .trend-bar.has-data{background:var(--growth)}.trend-x{color:var(--muted);white-space:nowrap;height:16px;font-size:10px;line-height:16px}.trend-meta{margin-top:var(--space-2);color:var(--muted);font-size:13px}.table-wrap{-webkit-overflow-scrolling:touch;margin:0 -4px;overflow-x:auto}.growth-table{border-collapse:collapse;width:100%;min-width:480px;font-size:13px}.growth-table th,.growth-table td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 10px}.growth-table th{color:var(--muted);font-size:12px;font-weight:700}.growth-table tbody tr:last-child td{border-bottom:none}.growth-table .rate{color:var(--sleep-ink);font-weight:700}.timeline{margin-bottom:var(--space-4);flex-direction:column;gap:10px;padding-left:24px;display:flex;position:relative}.timeline-empty{padding-left:0}.timeline-empty:before{display:none}.timeline:before{content:"";border-radius:var(--radius-pill);background:var(--surface-3);width:2px;position:absolute;top:12px;bottom:12px;left:8px}.card{background:var(--card);border-radius:var(--radius);align-items:center;gap:12px;padding:12px 14px;animation:.22s ease-out backwards rise;display:flex;position:relative}.card:before{content:"";background:var(--kind-color,var(--accent));border:3px solid var(--bg);border-radius:50%;width:12px;height:12px;position:absolute;top:50%;left:-24px;transform:translateY(-50%)}.card.kind-feeding{--kind-color:var(--feeding);--kind-soft:var(--feeding-soft)}.card.kind-sleep{--kind-color:var(--sleep);--kind-soft:var(--sleep-soft)}.card.kind-growth{--kind-color:var(--growth);--kind-soft:var(--growth-soft)}.card-icon{background:var(--kind-soft,var(--accent-soft));width:42px;height:42px;color:var(--kind-color,var(--accent));border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.card-icon svg{width:21px;height:21px}.card-body{flex:1;min-width:0}.card-top{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.badge{border-radius:var(--radius-pill);background:var(--kind-soft,var(--accent-soft));color:var(--kind-color,var(--accent));padding:3px 10px;font-size:12px;font-weight:700}.card-date{color:var(--muted);font-size:13px}.card-value{overflow-wrap:anywhere;letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin-top:2px;font-size:18px;font-weight:800}.card-note{color:var(--muted);overflow-wrap:anywhere;margin-top:2px;font-size:13px}.actions{flex-direction:column;flex-shrink:0;gap:4px;display:flex}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 4px;font-family:inherit;font-size:13px;font-weight:600}.link-btn:hover{text-decoration:underline}.link-btn.danger{color:var(--danger)}.empty{text-align:center;color:var(--muted);padding:var(--space-4);background:var(--card);border-radius:var(--radius);font-size:14px}.panel .empty,.entry-form .empty{background:0 0;padding:10px 0}.empty button{margin-top:var(--space-2)}.empty-card{text-align:center;background:var(--card);border-radius:var(--radius);padding:28px 20px;animation:.24s ease-out backwards rise}.empty-icon{background:var(--accent-soft);width:72px;height:72px;color:var(--accent);margin-bottom:var(--space-3);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.empty-icon svg{width:32px;height:32px}.empty-title{margin:0 0 4px;font-size:17px;font-weight:800}.empty-hint{color:var(--muted);max-width:360px;margin:0 auto 14px;font-size:14px}.empty-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.empty-actions .chip.quick-feeding{background:var(--feeding-soft);color:var(--feeding-ink)}.empty-actions .chip.quick-sleep{background:var(--sleep-soft);color:var(--sleep-ink)}.empty-actions .chip.quick-growth{background:var(--growth-soft);color:var(--growth-ink)}.empty-actions .chip:hover{filter:brightness(.97)}.month-panel{background:var(--surface-2)}.month-panel .stat-list{flex-flow:wrap;gap:10px 16px;display:flex}.month-panel .stat-row{flex-direction:column;flex:160px;align-items:flex-start;gap:2px;display:flex}.month-panel .stat-label{color:var(--muted);font-size:13px;font-weight:600}.month-panel .stat-value{overflow-wrap:anywhere;font-size:15px;font-weight:800}.data-panel .hint{margin-bottom:var(--space-3)}.toast-host{z-index:50;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(94vw,420px);display:flex;position:fixed;bottom:18px;left:50%;transform:translate(-50%)}.toast{pointer-events:auto;background:var(--ink);color:#fff;border-radius:var(--radius-pill);align-items:center;gap:12px;width:100%;padding:10px 16px;font-size:14px;animation:.2s ease-out toast-in;display:flex}.toast-msg{overflow-wrap:anywhere;flex:1}.toast-action{color:#9fe0c0;cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-family:inherit;font-size:14px;font-weight:700}.toast-out{opacity:0;pointer-events:none;transition:opacity .25s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes grow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.foot{color:var(--muted);text-align:center;margin-top:var(--space-5);font-size:12px}@media (width<=560px){#app{padding:12px 12px 40px}.brand{margin-bottom:var(--space-2)}.brand-name{font-size:15px}.profile-card{flex-wrap:wrap;gap:12px}.avatar{width:44px;height:44px;font-size:19px}.profile-name{font-size:17px}.profile-age{margin-left:56px}.age-main{font-size:28px}.form-grid,.fields,.stats-grid{grid-template-columns:1fr}.bar-row{grid-template-columns:64px 1fr 32px;gap:8px}.trend-chart{height:110px}.growth-table{min-width:0}.growth-table .rate{white-space:normal}.timeline{padding-left:20px}.timeline:before{left:7px}.card:before{left:-20px}.month-panel .stat-list{flex-direction:column}.month-panel .stat-row{flex:none}.panel,.entry-form{padding:14px}}
