:root{color-scheme:light;--ink:#18332d;--sub:#64766f;--paper:#f7f6f1;--card:#fffefb;--line:#e6e8df;--sun:#f1c76e;--green:#4e735d;--orange:#d37454;--shadow:0 14px 38px rgba(24,51,45,.07);font-family:'Noto Sans TC',-apple-system,BlinkMacSystemFont,'PingFang TC',sans-serif}
*{box-sizing:border-box}html{background:var(--paper)}body{margin:0;color:var(--ink);background:var(--paper);font-size:15px;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}input,select,textarea{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);outline:none;font-size:16px}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #4e735d19}textarea{resize:vertical}label{display:block;color:var(--ink);font-size:14px;font-weight:700}label small{font-size:12px;font-weight:400;color:var(--sub)}label input,label select,label textarea{margin-top:8px;font-weight:400}.app-shell{max-width:620px;min-height:100svh;margin:auto;padding-bottom:calc(104px + env(safe-area-inset-bottom));background:var(--paper)}.masthead{position:sticky;top:0;z-index:4;background:rgba(247,246,241,.94);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:space-between;padding:calc(13px + env(safe-area-inset-top)) 22px 14px;min-height:75px}.brand{display:flex;align-items:center;gap:10px}.brand img{border-radius:12px}.brand strong{display:block;font-size:21px;line-height:1.15;letter-spacing:.06em}.brand span{font-size:10px;color:var(--sub);font-weight:600;letter-spacing:.04em}.network-badge{font-size:11px;font-weight:700;border:1px solid #d9e4d6;border-radius:40px;color:#587360;padding:6px 10px;white-space:nowrap}main{padding:8px 20px 24px}.eyebrow{color:var(--green);font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.hero-title{font-size:30px;line-height:1.3;letter-spacing:-.04em;margin:7px 0 14px}.date-strip{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 0 19px}.date-strip strong{font-size:15px}.date-pill{background:#ecefe7;border:0;border-radius:11px;color:var(--ink);padding:8px 12px;font-size:13px;font-weight:800}.date-controls{display:flex;gap:7px}.round-control{width:38px;height:38px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font-size:21px;line-height:1}.round-control:disabled{opacity:.3}.summary{border-radius:26px;background:var(--ink);color:#fff;padding:23px 23px 19px;box-shadow:var(--shadow);overflow:hidden;position:relative}.summary:after{content:"";position:absolute;width:190px;height:190px;border:32px solid #ffffff08;border-radius:50%;right:-85px;top:-92px}.summary-head{color:#c6d6cc;font-size:13px;font-weight:600}.big-total{font-size:49px;line-height:1.16;font-weight:800;letter-spacing:-.07em;margin:8px 0 2px;font-variant-numeric:tabular-nums}.big-total small{font-size:18px;font-weight:500;letter-spacing:0}.summary-meta{color:#c6d6cc;font-size:12px}.summary-bar{height:9px;background:#416157;border-radius:100px;overflow:hidden;margin:21px 0 9px}.summary-bar span{display:block;height:100%;background:var(--sun);border-radius:100px;transition:width .25s}.summary-foot{display:flex;justify-content:space-between;color:#d2ded4;font-size:12px}.summary-no-goal{margin-top:20px;display:inline-flex;border:1px solid #789589;border-radius:12px;background:none;color:#fff;padding:9px 12px;font-size:12px}.insight{display:flex;gap:12px;align-items:flex-start;background:#e9eee6;border-radius:18px;margin:14px 0 25px;padding:13px 15px}.insight-icon{font-size:19px}.insight p{font-size:12px;line-height:1.65;margin:0;color:#476459}.section-heading{display:flex;align-items:center;justify-content:space-between;margin:23px 1px 12px}.section-heading h2{font-size:18px;letter-spacing:-.02em;margin:0}.section-heading span{font-size:12px;color:var(--sub)}.meal-group{background:var(--card);border:1px solid var(--line);border-radius:20px;margin:0 0 10px;padding:16px 16px 13px}.meal-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.meal-name{display:flex;align-items:center;gap:10px;font-weight:800}.meal-emoji{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:#f3f0e5;font-size:18px}.meal-kcal{font-variant-numeric:tabular-nums;font-size:13px;font-weight:800}.meal-kcal small{color:var(--sub);font-weight:400}.meal-list{margin:11px 0 0 46px}.meal-entry{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border-top:1px solid #eef0e9;padding:12px 0}.meal-entry strong{display:block;font-size:13px;line-height:1.4}.meal-entry small{display:block;color:var(--sub);font-size:11px;margin-top:4px}.meal-entry button{border:0;background:#eef2eb;border-radius:9px;padding:7px 10px;color:var(--green);font-size:11px;font-weight:700;white-space:nowrap}.empty-meal{margin:10px 0 2px 46px;color:#9aa9a0;font-size:12px}.meal-add{border:0;color:var(--green);background:none;padding:12px 0 1px 46px;font-size:12px;font-weight:700}.activity-card{border:1px dashed #bac9bd;background:#f4f7f0;border-radius:17px;padding:15px;margin-top:10px}.activity-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.activity-top strong{font-size:14px}.activity-top button,.text-button{border:0;background:none;color:var(--green);font-weight:800;font-size:12px}.activity-list{margin:10px 0 0;padding:0;list-style:none}.activity-list li{display:flex;justify-content:space-between;align-items:center;font-size:12px;border-top:1px solid #e1eade;padding:9px 0}.activity-list li button{border:0;background:none;color:#ab6d54;font-size:12px}.activity-empty{font-size:12px;color:var(--sub);margin:8px 0 0}.muted{color:var(--sub)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:5;width:min(620px,100%);display:flex;align-items:center;justify-content:space-around;background:rgba(255,254,251,.97);border-top:1px solid var(--line);padding:8px 12px calc(8px + env(safe-area-inset-bottom));box-shadow:0 -9px 30px #18332d0b}.nav-item{border:0;background:none;color:#91a39a;display:flex;align-items:center;flex-direction:column;gap:2px;width:64px;font-size:10px;font-weight:800}.nav-item.active{color:var(--ink)}.nav-icon{font-size:25px;height:28px;line-height:27px}.nav-add{width:55px;height:55px;border:0;border-radius:18px;background:var(--sun);color:var(--ink);font-size:34px;line-height:1;box-shadow:0 6px 17px #d8a94a45;transform:translateY(-13px)}.nav-add span{display:inline-block;transform:translateY(-2px)}.history-day{display:block;width:100%;text-align:left;border:1px solid var(--line);background:var(--card);border-radius:17px;margin:10px 0;padding:17px}.history-day strong{font-size:15px}.history-day small{display:block;color:var(--sub);margin-top:6px;font-size:11px}.history-day b{float:right;font-size:18px;letter-spacing:-.03em}.history-day b span{font-size:11px;font-weight:400}.empty-state{text-align:center;border:1px dashed #ced9cc;background:#fffefb;border-radius:21px;padding:30px 25px;margin:18px 0}.empty-state b{display:block;font-size:17px}.empty-state p{color:var(--sub);font-size:13px;line-height:1.65}.empty-state button{border:0;background:var(--ink);color:#fff;border-radius:12px;padding:11px 15px;font-weight:700}.settings-card{border:1px solid var(--line);border-radius:20px;background:var(--card);padding:19px;margin:13px 0}.settings-card h2{margin:0 0 14px;font-size:17px}.settings-card p{font-size:12px;line-height:1.6;color:var(--sub)}.settings-card label{margin:13px 0}.settings-card .row-fields{margin-bottom:0}.row-fields{display:grid;grid-template-columns:1fr 1fr;gap:11px}.settings-card button.secondary,.secondary-btn{background:#e9eee8;color:var(--ink);border:0;border-radius:12px;padding:11px 14px;font-size:13px;font-weight:800}.settings-card button.danger{background:#fff0ec;color:#a04c32}.settings-actions{display:flex;gap:8px;flex-wrap:wrap}.settings-card button.primary-btn{padding:12px 16px}.settings-card button{margin-top:4px}.fine-print{font-size:11px;color:var(--sub);line-height:1.6}.sheet{position:fixed;inset:auto 0 0;max-width:620px;width:100%;height:min(92svh,980px);max-height:92svh;border:0;border-radius:26px 26px 0 0;padding:0;margin:auto auto 0;background:#fbfbf7;color:var(--ink);box-shadow:0 -16px 45px #12282030}.sheet::backdrop{background:#0e2a2480}.sheet form{height:100%;display:flex;flex-direction:column}.sheet-handle{flex:none;width:42px;height:5px;border-radius:20px;background:#cbd4cb;margin:11px auto 0}.sheet-head{flex:none;display:flex;justify-content:space-between;align-items:flex-start;padding:15px 21px 12px}.sheet-head small{font-size:11px;color:var(--green);font-weight:800}.sheet-head h2{font-size:24px;margin:1px 0 0;letter-spacing:-.04em}.icon-button{border:0;background:#ebeee9;border-radius:100%;height:32px;width:32px;font-size:24px;color:var(--sub);line-height:25px}.sheet-body{overflow-y:auto;overscroll-behavior:contain;flex:1;padding:0 21px 26px;display:flex;flex-direction:column;gap:17px}.sheet-body .row-fields{flex:none}.sheet-footer{flex:none;padding:12px 20px calc(12px + env(safe-area-inset-bottom));background:#fbfbf7;border-top:1px solid var(--line)}.primary-btn{width:100%;border:0;background:var(--ink);color:#fff;padding:15px;border-radius:14px;font-weight:800}.label-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px;font-weight:800}.label-row small{font-size:11px;color:var(--sub);font-weight:400}.label-row .muted{font-size:11px;font-weight:400}.photo-preview{display:flex;gap:9px;flex-wrap:wrap;min-height:18px}.photo-tile{position:relative;width:74px;height:74px}.photo-tile img{width:74px;height:74px;object-fit:cover;border-radius:12px}.photo-tile button{position:absolute;right:-5px;top:-5px;border:0;border-radius:100%;background:#18332d;color:#fff;width:22px;height:22px}.photo-actions{display:flex;gap:8px;margin-top:-6px}.photo-pick{padding:11px 14px;border:1px solid var(--ink);border-radius:12px;font-weight:800;color:var(--ink);font-size:12px}.photo-pick.subtle{border-color:var(--line);background:#fff}.analyze-btn{border:0;border-radius:13px;background:#f4e3b8;color:#574728;padding:13px;font-size:13px;font-weight:800}.helper{font-size:11px;line-height:1.5;color:var(--sub);margin:-9px 0 0}.helper.error{color:#b84d38}.items-heading{display:flex;justify-content:space-between;align-items:center;margin-top:6px}.items-heading strong{display:block;font-size:15px}.estimate-label{font-size:10px;color:var(--sub)}.item-rows{display:flex;flex-direction:column;gap:10px}.item-row{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px}.item-head{display:flex;gap:8px}.item-head input{flex:1;min-width:0}.item-remove{width:39px;flex:none;border:0;background:#fff1ec;color:#b65f42;border-radius:10px;font-size:19px}.item-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:8px;margin-top:10px}.item-grid label{font-size:10px;color:var(--sub)}.item-grid input{padding:9px 8px;margin-top:5px;font-size:14px}.estimate-note{font-size:12px;line-height:1.6;color:#725d3d;background:#f7eedc;padding:11px 13px;border-radius:12px}.sheet-total{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:17px 2px 6px}.sheet-total strong{font-size:25px}.sheet-total small{font-size:12px}.toast{position:fixed;left:50%;bottom:calc(95px + env(safe-area-inset-bottom));transform:translate(-50%,14px);width:max-content;max-width:calc(100% - 32px);background:var(--ink);color:#fff;border-radius:12px;padding:12px 16px;font-size:13px;opacity:0;pointer-events:none;z-index:20;transition:opacity .15s,transform .15s}.toast.show{opacity:1;transform:translate(-50%,0)}.small-sheet{height:auto;max-height:80svh}
@media(min-width:700px){.app-shell{border-left:1px solid var(--line);border-right:1px solid var(--line)}.sheet{border-radius:26px 26px 0 0}}@media(max-width:350px){main{padding-left:14px;padding-right:14px}.masthead{padding-left:16px;padding-right:16px}.big-total{font-size:43px}.item-grid{gap:5px}}
.delete-meal{display:block;border:0;background:none;color:#a65339;font-size:12px;font-weight:700;margin:10px auto 0;padding:5px}.delete-meal[hidden]{display:none}
.photo-pick{position:relative;overflow:hidden}.file-input{position:absolute;width:1px;height:1px;opacity:0;left:1px;bottom:1px;padding:0;border:0;pointer-events:none}
