:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--ink:#3b2f4a;--soft:#7a6a86;--sun:#ffd166;--coral:#ff7b54;--pink:#ff6f91;--mint:#7bd8b4;--sky:#8ecbff;--grape:#6c4ce0;--paper:#fffdf7;color:var(--ink);background:#fff3d6;font-size:16px;line-height:1.5;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:#fff3d6;background-image:radial-gradient(#f5dfa6 1.2px,transparent 1.3px);background-size:22px 22px;min-height:100vh}main{max-width:560px;margin:auto;padding:14px 16px 40px}
h2{font-size:1.1rem;margin:0}button,input,select,textarea{font:inherit}button{border:1px solid #e3d6c3;background:white;color:#4d3a66;border-radius:12px;padding:11px 15px;min-height:44px;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus,select:focus,textarea:focus{outline:3px solid #c3b1f5;outline-offset:2px}.sr{position:absolute;left:-9999px}
.top{display:flex;align-items:center;gap:8px}.brand{font-size:1.05rem;font-weight:850;letter-spacing:.02em;flex:1}#sync{font-size:.74rem;color:var(--soft);cursor:pointer}.iconbtn{min-height:36px;width:40px;padding:0;border-radius:50%;font-size:1.05rem;background:#fff8e8}
.week{display:flex;align-items:center;gap:4px;margin:10px 0 14px}.arrow{border:0;background:transparent;min-height:40px;width:26px;padding:0;font-size:1.4rem;color:var(--soft)}.days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;flex:1;min-width:0}.day{display:flex;flex-direction:column;align-items:center;gap:0;padding:5px 0 4px;min-height:0;border-radius:14px;border:0;background:#fffaf0;color:var(--ink);box-shadow:0 2px 0 #f0dfbd}.day small{font-size:.66rem;color:var(--soft);line-height:1.2}.day b{font-size:.95rem;line-height:1.3}.day span{font-size:.95rem;line-height:1.2;min-height:1.2em;color:#d7c6a8}.day.today small{color:var(--coral);font-weight:700}.day.sel{background:var(--ink);color:white;box-shadow:0 3px 0 #1f1829}.day.sel small{color:#ffd9a8}.datepick{position:relative;display:flex;align-items:center;justify-content:center;font-size:.72rem;color:var(--soft);width:34px;height:40px;margin:0;overflow:hidden}.datepick input{position:absolute;inset:0;opacity:0;margin:0;padding:0;border:0;width:100%;height:100%;cursor:pointer}
.page{position:relative;background:var(--paper);border-radius:6px 6px 22px 22px;padding:26px 14px 12px;box-shadow:0 1px 0 #ecdcb8,0 10px 24px -12px #b58b3a55;background-image:linear-gradient(#f3ead4 1px,transparent 1px);background-size:100% 30px;background-position:0 16px;margin-bottom:18px}
.tape{position:absolute;top:-11px;left:50%;transform:translateX(-50%) rotate(-2deg);background:repeating-linear-gradient(135deg,#ffb3c6cc 0 10px,#ffc9d6cc 10px 20px);padding:4px 16px;font-size:.82rem;font-weight:750;color:#6b2d45;border-radius:2px;white-space:nowrap;box-shadow:0 1px 2px #0001}
.buddy{display:flex;align-items:center;gap:8px;margin-bottom:6px}.bowl{width:66px;height:56px;flex-shrink:0;overflow:visible}.bowl .joy{display:none}.bowl.glad .joy{display:inline}.bowl.glad .eyes{display:none}.bubble{position:relative;margin:0;background:white;border:2px solid var(--ink);border-radius:16px;padding:6px 12px;font-size:.9rem;font-weight:600;box-shadow:3px 3px 0 var(--sun);max-width:100%}.bubble::before{content:"";position:absolute;left:-8px;top:50%;width:12px;height:12px;background:white;border-left:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:translateY(-50%) rotate(45deg)}
.daybar{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;background:#fff7e3;border:1.5px solid #f3dea6;border-radius:14px;padding:8px 10px;margin:4px 0 8px}.dayk{display:flex;align-items:baseline;gap:4px;font-size:.8rem;color:var(--soft)}.dayk b{font-size:1.5rem;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.daymacro{font-size:.74rem;color:var(--soft);flex:1;min-width:10em}.groups{display:flex;gap:4px;width:100%}.grp{flex:1;display:flex;flex-direction:column;align-items:center;font-size:1.1rem;line-height:1.2;padding:3px 0 2px;border-radius:10px;background:#f1ebe0;filter:grayscale(1);opacity:.45;transition:all .3s}.grp small{font-size:.62rem;color:var(--ink)}.grp.on{filter:none;opacity:1;background:white;box-shadow:0 2px 0 #f0d99a}
.sticker .sk{font-size:.62rem;color:#a4661f;line-height:1.2;font-weight:650;font-variant-numeric:tabular-nums}.sticker.want .sk{color:#8f7fc4}.sticker.pending .sk{color:var(--grape)}.sticker.pending .se{animation:think 1s ease-in-out infinite}@keyframes think{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.tsub{font-size:.8rem;color:#e2d8ee;margin-top:2px}.nums{background:#fff1c6;border-radius:12px;padding:10px 12px;font-weight:600;margin:0 0 10px}.scaler{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.scaler>span{font-size:.85rem;color:var(--soft)}.scaler button{width:40px;min-height:36px;padding:0;border-radius:50%;font-size:1.2rem}.scaler b{min-width:2.6em;text-align:center;font-variant-numeric:tabular-nums}.scaler small{font-size:.76rem}.retry{display:flex;gap:6px;margin-top:6px}.retry input{margin:0;flex:1}.retry button{flex-shrink:0;min-height:42px;padding:0 14px}
.stickers{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 6px;min-height:90px;padding:6px 0 4px}.blank{width:100%;text-align:center;color:#b6a58c;font-size:.88rem;margin:22px 0}
.mealtape{align-self:center;font-size:.72rem;font-weight:700;color:#5a4a1c;background:#ffe08acc;padding:2px 8px;transform:rotate(-3deg);border-radius:2px;white-space:nowrap}
.sticker,.bk{position:relative;display:flex;flex-direction:column;align-items:center;width:76px;padding:8px 4px 6px;min-height:0;border:0;border-radius:18px;background:white;box-shadow:0 0 0 3px white,0 0 0 4px #eadfcb,0 5px 10px -3px #7a5a2044;transform:rotate(var(--r,0deg));color:var(--ink)}.sticker .se,.bk .se{font-size:2rem;line-height:1.15}.sticker .sn,.bk .sn{font-size:.72rem;line-height:1.25;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.sticker .st{font-size:.6rem;color:#b1a08a;line-height:1.1}.sticker .sb{position:absolute;right:-6px;top:-8px;font-size:1.05rem;background:white;border-radius:50%;width:26px;height:26px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #0002}.sticker .sw{position:absolute;left:-6px;top:-8px;font-size:1rem}
.sticker.want{background:#f7f3ff;box-shadow:0 0 0 3px #f7f3ff,0 0 0 4.5px #b9a6ee;opacity:.9}.sticker.want::after{content:"";position:absolute;inset:3px;border:2px dashed #b9a6ee;border-radius:15px;pointer-events:none}.sticker.want .se{filter:saturate(.6)}
.r0{--r:-5deg}.r1{--r:-3.5deg}.r2{--r:-2deg}.r3{--r:-.8deg}.r4{--r:.4deg}.r5{--r:1.6deg}.r6{--r:2.8deg}.r7{--r:4deg}.r8{--r:5.5deg}
.hidden-fly{visibility:hidden}.ghost{position:fixed;left:0;top:0;font-size:2rem;line-height:1;pointer-events:none;z-index:50;filter:drop-shadow(0 6px 6px #0003)}
.pagefoot{display:flex;justify-content:space-between;align-items:center;margin-top:8px;border-top:1.5px dashed #eadcc0;padding-top:8px}.pill{min-height:32px;padding:3px 12px;border-radius:999px;font-size:.8rem;background:#fff6dc;border:1px solid #f0d99a;color:#6a5217}.pill b{font-variant-numeric:tabular-nums}
.composer{background:white;border-radius:22px;padding:12px;border:2px solid var(--ink);box-shadow:5px 6px 0 var(--sun);margin-bottom:22px;transition:box-shadow .2s}.composer.wanting{box-shadow:5px 6px 0 #c9b6ff}
.mode{display:grid;grid-template-columns:1fr 1fr;background:#f5efe4;border-radius:14px;padding:4px;gap:4px;margin-bottom:10px}.mode button{border:0;background:transparent;min-height:38px;padding:4px;font-size:.9rem;font-weight:600;color:var(--soft);border-radius:11px}.mode button.on{background:white;color:var(--ink);box-shadow:0 2px 0 #e2d4bd}.wanting .mode button.on{background:var(--grape);color:white;box-shadow:0 2px 0 #4a2fb0}
.palette{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.pal{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:8px 2px 6px;min-height:72px;border-radius:16px;border:0;background:#fff7e6;box-shadow:0 3px 0 #f1dfbb;color:var(--ink)}.pal:nth-child(4n+2){background:#ffeef2;box-shadow:0 3px 0 #f6d2dc}.pal:nth-child(4n+3){background:#eaf8f1;box-shadow:0 3px 0 #cdebdc}.pal:nth-child(4n){background:#eef4ff;box-shadow:0 3px 0 #d3e0f7}.pal span{font-size:1.75rem;line-height:1.15}.pal small{font-size:.72rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 3px}.wanting .pal{background:#f5f1ff;box-shadow:0 3px 0 #ddd2fb}.wanting .pal span{filter:saturate(.7)}
.quick{display:flex;gap:6px;align-items:center;margin-top:12px;background:#faf6ee;border-radius:16px;padding:4px 4px 4px 10px}.qemoji{font-size:1.3rem;min-width:1.6em;text-align:center;white-space:nowrap}.quick input{flex:1;min-width:0;border:0;background:transparent;padding:10px 2px;font-size:1rem;margin:0}.quick input:focus{outline:none}.quick:focus-within{outline:3px solid #c3b1f5}.quick .primary{flex-shrink:0;padding:0 18px;min-height:42px;border-radius:13px}.hint{font-size:.74rem;color:#a39580;margin:8px 4px 0}
.primary{background:var(--grape);border-color:var(--grape);color:white;font-weight:650;box-shadow:0 4px 0 #4826b1}.full{width:100%}.muted,small{font-size:.85rem;color:var(--soft)}
@media(prefers-reduced-motion:reduce){.sticker.pending .se{animation:none}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s,transform .1s}button:active{transform:scale(.95)}.sticker:active,.pal:active{transform:rotate(var(--r,0deg)) scale(.93)}.slap{animation:slap .42s cubic-bezier(.3,1.6,.5,1)}.bowl.hop{animation:hop .6s ease}.bowl .eyes{animation:blink 4.5s infinite;transform-origin:40px 39px}}
@keyframes slap{0%{transform:rotate(var(--r,0deg)) scale(1.45)}55%{transform:rotate(var(--r,0deg)) scale(.9)}100%{transform:rotate(var(--r,0deg)) scale(1)}}@keyframes hop{0%,100%{transform:translateY(0)}30%{transform:translateY(-10px) rotate(-6deg)}60%{transform:translateY(0) rotate(4deg)}80%{transform:translateY(-3px)}}@keyframes blink{0%,94%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
#toast{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:10px 12px 10px 16px;border-radius:18px;width:min(92%,440px);z-index:40;box-shadow:0 12px 30px #2a1a5055}.trow{display:flex;align-items:center;justify-content:space-between;gap:10px;font-weight:600}.trow button{min-height:34px;padding:2px 12px;background:transparent;border:1.5px solid #ffffff66;color:#ffe3a3;font-size:.85rem}.tfeel{display:flex;align-items:center;gap:4px;margin-top:8px;overflow-x:auto}.tfeel>span{font-size:.75rem;color:#d8cde6;flex-shrink:0;margin-right:2px}.tfeel button{display:flex;flex-direction:column;align-items:center;min-height:0;padding:4px 6px;border:0;background:#ffffff14;color:white;font-size:1.25rem;line-height:1.1;border-radius:12px;flex:1;min-width:48px}.tfeel button small{font-size:.62rem;color:#e6dcf2;margin-top:2px;white-space:nowrap}.tfeel button.on{background:var(--sun);color:var(--ink)}.tfeel button.on small{color:var(--ink)}
.sheettitle{display:flex;align-items:center;gap:12px;min-width:0}.sheettitle h2{overflow-wrap:anywhere}.bigemoji{font-size:2.6rem;line-height:1;background:white;border-radius:18px;padding:8px;box-shadow:0 0 0 3px white,0 0 0 4px #eadfcb,0 4px 10px -3px #7a5a2044}#sheetAte{margin-bottom:6px}.sheetbtns{display:flex;gap:8px;margin-top:14px}.sheetbtns button{flex:1}.danger{color:#b23a4f;border-color:#f1c9d1;background:#fff5f7}
.book{display:flex;flex-wrap:wrap;gap:12px 8px;justify-content:center;padding:8px 0}.bk b{position:absolute;right:-6px;top:-8px;font-size:.7rem;background:var(--coral);color:white;border-radius:999px;padding:1px 6px}
.feel{margin-top:12px;display:grid;gap:8px}.feelrow{display:flex;align-items:flex-start;gap:8px}.feelrow>span{font-size:.8rem;color:var(--soft);width:2.4em;flex-shrink:0;padding-top:6px}.feelrow .chips{margin:0;gap:6px}.chip{min-height:34px;padding:3px 10px;font-size:.82rem;border-radius:999px;background:#fbf7f0}.chip.on{background:var(--ink);border-color:var(--ink);color:white;font-weight:600}
.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:6px 0 10px}.sectiontools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}button.small{min-height:34px;padding:4px 11px;font-size:.8rem;border-radius:9px}
.meal{background:#fffdf8;border-radius:15px;padding:12px;margin-bottom:10px;border:1px solid #eee2cc}.mealhead{display:flex;justify-content:space-between;align-items:center}.mealemoji{font-size:1.1rem}.mealhead button{min-height:34px;padding:3px 12px;background:#f5efe4;border:0;color:#6a5217}.empty{color:#b1a08a;font-size:.82rem;margin-top:6px}.entry{display:flex;gap:10px;border-top:1px solid #f1e8d8;padding-top:10px;margin-top:10px;align-items:center}.entry .edit{flex:1;text-align:left;border:0;padding:0;min-width:0;overflow-wrap:anywhere;background:transparent;min-height:0}.entry .edit small{display:block}.tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.tags em{font-style:normal;font-size:.74rem;background:#f3ecff;color:#5b3fbf;border-radius:999px;padding:1px 8px}.tags i{font-style:normal;font-size:.78rem;color:var(--soft);width:100%}.entry .remove{padding:4px 9px;min-height:40px;border:0;font-size:.8rem;color:#a08f7a;background:transparent}
.summary{background:white;border:1px solid #eee2cc;border-radius:15px;padding:14px;margin:14px 0 4px}.sumrow{display:flex;justify-content:space-between;align-items:baseline;font-weight:600}.sumrow strong{font-size:1.15rem;font-variant-numeric:tabular-nums}.macros{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0 6px}.macros>div{font-size:.8rem;text-align:center;padding:9px 4px;border-radius:12px;font-weight:600}.macros>div:nth-child(1){background:#ffe0d6}.macros>div:nth-child(2){background:#e4f3b8}.macros>div:nth-child(3){background:#e6dcff}.macros strong{font-size:1.02rem;display:block;margin-top:2px;font-variant-numeric:tabular-nums}.summary small{display:block;font-size:.78rem}
.panel{background:#fffdf8;border:1px solid #eee2cc;border-radius:16px;margin:12px 0;padding:12px 14px}summary{cursor:pointer;min-height:32px;font-weight:650}summary .muted{float:right;font-weight:400;font-size:.8rem}.vitamins{display:grid;grid-template-columns:1fr 1fr;gap:10px}.vit{padding:12px;background:#f6f0ff;border-radius:10px}.vit strong{display:block}.vit small{display:block;font-size:.75rem}.grid2,.grid3{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{grid-template-columns:repeat(3,1fr)}label{display:block;font-size:.88rem;margin:10px 0}input,select,textarea{display:block;border:1px solid #d8c9b0;background:white;border-radius:10px;width:100%;min-width:0;padding:11px 10px;margin-top:6px;color:var(--ink)}textarea{min-height:90px;word-break:break-all}footer{font-size:.8rem;line-height:1.8;text-align:center;color:var(--soft);margin-top:26px}.subbutton{margin-top:12px}.refrow{display:flex;justify-content:space-between;border-bottom:1px solid #f1e8d8;padding:10px 0;gap:12px}.sources{font-size:.8rem}a{color:#5b3fbf}
dialog{border:0;border-radius:24px;padding:20px;width:calc(100% - 24px);max-width:520px;max-height:90dvh;overflow:auto;color:var(--ink);background:#fffdf8;box-shadow:0 30px 80px #2a1a5060}dialog.sheet{margin-bottom:0;border-radius:26px 26px 0 0;width:100%;max-width:560px;padding-bottom:calc(20px + env(safe-area-inset-bottom))}dialog::backdrop{background:#2a1a5066;backdrop-filter:blur(2px)}.dialoghead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.close{border:0;background:#f3ece0;border-radius:50%;font-size:1.3rem;padding:0;width:42px;min-height:42px;flex-shrink:0}.tabs{display:flex;gap:6px;margin:18px 0}.tabs button{flex:1;padding:8px 4px;font-size:.85rem}.tabs .active{background:#f0e9ff;border-color:#7454d6;color:#5b3fbf;font-weight:600}.chips{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.chips button{min-height:34px;font-size:.8rem;padding:5px 12px}.preview{background:#fff1c6;border-radius:10px;padding:12px;font-size:.85rem}.error{color:#9e3541}details details,dialog details{margin-top:18px}
.guidegrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.guide{border:1px solid #eadcc6;overflow:hidden;border-radius:16px}.guide img{width:100%;height:110px;object-fit:cover;display:block}.guide>div:last-child{padding:12px}.guide h3{display:inline;font-size:1rem;margin:0}.guide p{font-size:.9rem;margin:8px 0}.guide small{font-size:.82rem;color:#574264}.guideicon{margin-right:7px}.proteinGuide{background:#ffe0d6}.fatGuide{background:#e4f3b8}.carbGuide{background:#e6dcff}.vitaminGuide{background:#ffe6a6}.vitart{height:110px;display:flex;align-items:center;justify-content:center;gap:5px;background:#ffc861}.vitart span{font-size:2.4rem}
[hidden]{display:none!important}
@media(max-width:380px){main{padding:12px 12px 36px}.sticker,.bk{width:70px}.sticker .se{font-size:1.8rem}.pal{min-height:66px}.pal span{font-size:1.55rem}.grid3{gap:6px}.feelrow>span{width:2.2em}.day b{font-size:.88rem}}@media(max-width:340px){.guidegrid{grid-template-columns:1fr}.palette{grid-template-columns:repeat(3,minmax(0,1fr))}}
