:root{--ink: #1a2e28;--ink-soft: #3d524a;--muted: #6b7f76;--line: rgba(26, 46, 40, .08);--surface: rgba(255, 255, 255, .78);--surface-solid: #fbfefc;--accent: #2f6f5e;--accent-soft: #d8ebe3;--accent-deep: #1e4d40;--peach: #e8b4a0;--peach-soft: #f8e6de;--sky: #7eb8c9;--sky-soft: #e3f2f6;--butter: #e6c96a;--butter-soft: #f7efd4;--lilac: #9a8ec4;--danger: #a63d3d;--radius: 1.25rem;--tab-h: 4rem;--font-display: "Fraunces", "Noto Serif SC", Georgia, serif;--font-body: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", sans-serif;--shadow-soft: 0 .625rem 2rem rgba(30, 77, 64, .08);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%;width:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}html{font-size:clamp(1.1875rem,.95rem + 2.2vw,1.375rem);height:auto;overflow-y:auto}body{font-family:var(--font-body);font-size:clamp(1rem,.95rem + .4vw,1.125rem);line-height:1.65;color:var(--ink);background:radial-gradient(ellipse 90% 55% at 85% 8%,rgba(232,180,160,.35) 0%,transparent 55%),radial-gradient(ellipse 70% 50% at 5% 20%,rgba(126,184,201,.28) 0%,transparent 50%),radial-gradient(ellipse 80% 45% at 50% 100%,rgba(47,111,94,.12) 0%,transparent 55%),linear-gradient(168deg,#e4f0eb,#f3f7f4 38%,#eef4f1 72%,#eaf0ec);background-attachment:scroll;-webkit-font-smoothing:antialiased;height:auto;min-height:100%;overflow-x:clip;overflow-y:visible;-webkit-overflow-scrolling:touch}@media(min-width:769px){html{font-size:clamp(1rem,.9rem + .35vw,1.125rem)}body{font-size:clamp(.95rem,.9rem + .2vw,1.05rem);line-height:1.6}}html.is-wechat{font-size:clamp(1rem,.92rem + .55vw,1.0625rem)}html.is-wechat body{font-size:clamp(.94rem,.9rem + .2vw,1rem);line-height:1.55}html.is-wechat .app-shell{--shell-pad: .85rem;--tab-h: 3.15rem;--radius: .95rem;padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + .6rem)}html.is-wechat .top-bar{padding:.55rem var(--shell-pad) .4rem;padding-top:calc(.45rem + env(safe-area-inset-top))}html.is-wechat .brand-mark{width:2.1rem;height:2.1rem;border-radius:.65rem}html.is-wechat .brand-mark svg{width:1.1rem;height:1.1rem}html.is-wechat .brand-text .name{font-size:clamp(1.05rem,.98rem + .4vw,1.2rem)}html.is-wechat .brand-text .tag{font-size:.72rem}html.is-wechat .theme-toggle button{font-size:.72rem;padding:.35rem .55rem;min-height:1.85rem}html.is-wechat .page{padding:.35rem var(--shell-pad) 1rem}html.is-wechat .stack,html.is-wechat .desktop-top,html.is-wechat .desktop-mid{gap:.7rem}html.is-wechat .panel{padding:.8rem .85rem .75rem;border-radius:var(--radius)}html.is-wechat .section-label{font-size:.72rem;margin-bottom:.55rem;letter-spacing:.08em}html.is-wechat .muted{font-size:.82rem;line-height:1.45}html.is-wechat .hero-week .num{font-size:clamp(2.2rem,14vw,2.85rem)}html.is-wechat .hero-week .unit{font-size:1rem}html.is-wechat .hero-week .plus{font-size:1.1rem}html.is-wechat .week-chip{font-size:.78rem;padding:.4rem .65rem;margin-top:.55rem}html.is-wechat .weather-temp strong{font-size:1.65rem}html.is-wechat .weather-emoji{font-size:1.85rem}html.is-wechat .weather-meta{font-size:.78rem!important}html.is-wechat .tip-list{gap:.45rem}html.is-wechat .tip-list li{padding:.6rem .7rem;border-radius:.7rem}html.is-wechat .tip-list li strong{font-size:.88rem}html.is-wechat .tip-list li span{font-size:.8rem;line-height:1.45}html.is-wechat .festive-banner{font-size:.82rem;padding:.6rem .75rem;line-height:1.4}html.is-wechat .focus-list{gap:.4rem}html.is-wechat .focus-list li{font-size:.86rem;line-height:1.45;padding:.6rem .7rem}html.is-wechat .progress-copy strong{font-size:.95rem}html.is-wechat .meal-log-item,html.is-wechat .snack-item{grid-template-columns:2.6rem 1fr;gap:.65rem;padding:.65rem .85rem .75rem}html.is-wechat .slot-icon{width:2.6rem;height:2.6rem}html.is-wechat .log-label,html.is-wechat .meal-slot-hint{font-size:.8rem}html.is-wechat .meal-slot-add,html.is-wechat .snack-add-btn{font-size:.9rem;font-weight:600;min-height:2.45rem;padding:.55rem .85rem;border-radius:.75rem}html.is-wechat .log-done-btn,html.is-wechat .log-cancel-btn{font-size:.85rem;min-height:2.35rem;padding:.5rem .95rem}html.is-wechat .log-edit-btn,html.is-wechat .log-delete-btn{font-size:.75rem;min-height:1.9rem;padding:.3rem .65rem}html.is-wechat .log-view-text,html.is-wechat .log-input,html.is-wechat .log-time-select{font-size:.9rem}html.is-wechat .log-input{min-height:3.2rem;padding:.6rem .75rem}html.is-wechat .tab-bar{height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding:.15rem .15rem env(safe-area-inset-bottom)}html.is-wechat .tab-bar a{font-size:.65rem;min-height:2.7rem;gap:.05rem}html.is-wechat .tab-bar a svg{width:1.25rem;height:1.25rem}html.is-wechat .mine-link{padding:.75rem .85rem;min-height:3.4rem}html.is-wechat .mine-link strong{font-size:.95rem}html.is-wechat .stat-cell strong{font-size:1.25rem}html.is-wechat .stat-cell span{font-size:.7rem}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");z-index:0}#app{position:relative;z-index:1}a{color:inherit}.app-shell{--shell-pad: 1rem;--tab-h: 3.5rem;min-height:100dvh;width:100%;max-width:100%;margin:0 auto;padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + .75rem);overflow-x:clip;overflow-y:visible;position:relative}.top-bar{position:sticky;top:0;z-index:30;padding:.75rem var(--shell-pad) .5rem;padding-top:calc(.625rem + env(safe-area-inset-top));background:linear-gradient(180deg,#f3f7f4f0,#f3f7f4d1 70%,#f3f7f400);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);animation:rise .55s ease both}.brand-row{display:flex;align-items:center;gap:.75rem}.brand-text{flex:1;min-width:0}.brand-mark{width:2.5rem;height:2.5rem;border-radius:.75rem;background:linear-gradient(145deg,#4a9f86,#1e4d40 70%),radial-gradient(circle at 30% 25%,rgba(255,255,255,.35),transparent 50%);box-shadow:0 .5rem 1.125rem #1e4d4047,inset 0 1px #ffffff40;display:grid;place-items:center;flex-shrink:0}.brand-mark svg{width:1.25rem;height:1.25rem;color:#f3faf7}.brand-text .name{margin:0;font-family:var(--font-display);font-size:clamp(1.15rem,1rem + .8vw,1.4rem);font-weight:650;letter-spacing:.02em;line-height:1.2;color:var(--ink)}.brand-text .tag{margin:.2rem 0 0;font-size:clamp(.78rem,.72rem + .3vw,.88rem);color:var(--muted);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.theme-toggle{margin-left:auto;flex-shrink:0}.nav-desktop{display:none;align-items:center;gap:.25rem;margin-left:auto;margin-right:.5rem}.nav-desktop a{text-decoration:none;padding:.5rem .875rem;border-radius:999rem;font-size:clamp(.85rem,.8rem + .25vw,.95rem);font-weight:550;color:var(--muted);transition:color .15s ease,background .15s ease}.nav-desktop a:hover{color:var(--accent-deep);background:#ffffff8c}.nav-desktop a.router-link-active{color:var(--accent-deep);background:var(--accent-soft);font-weight:650}.page{padding:.5rem var(--shell-pad) 1.25rem}.desktop-top,.desktop-mid{display:flex;flex-direction:column;gap:.875rem;width:100%}.tab-bar{position:fixed;left:0;right:0;bottom:0;width:100%;height:calc(var(--tab-h) + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:.25rem .25rem env(safe-area-inset-bottom);border-radius:0;background:#fbfefcf7;backdrop-filter:blur(1.25rem);-webkit-backdrop-filter:blur(1.25rem);border:none;border-top:1px solid rgba(26,46,40,.08);box-shadow:0 -.375rem 1.5rem #1e4d4014;z-index:20}.tab-bar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.125rem;text-decoration:none;color:var(--muted);font-size:clamp(.7rem,.65rem + .3vw,.78rem);font-weight:500;border-radius:.75rem;min-height:3rem;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.tab-bar a svg{width:1.5rem;height:1.5rem;opacity:.7}.tab-bar a.router-link-active{color:var(--accent-deep);font-weight:650}.tab-bar a.router-link-active svg{opacity:1}@media(min-width:769px){.app-shell{--shell-pad: 1.5rem;max-width:67.5rem;padding-bottom:2.5rem}.brand-text{flex:0 1 auto}.nav-desktop{display:flex}.theme-toggle{margin-left:0}.tab-bar{display:none}.page{padding:.5rem var(--shell-pad) 2rem}.stack{gap:1.125rem}.desktop-top,.desktop-mid{display:grid;grid-template-columns:1fr 1fr;gap:1.125rem;align-items:stretch}.desktop-top .hero,.desktop-top .weather-panel{height:100%;min-height:12.5rem}}.stack{display:flex;flex-direction:column;gap:.875rem;animation:rise .5s ease .06s both}.panel{background:var(--surface);backdrop-filter:blur(.75rem);-webkit-backdrop-filter:blur(.75rem);border:1px solid rgba(255,255,255,.9);border-radius:var(--radius);padding:1.125rem 1.125rem 1rem;box-shadow:0 .25rem 1.125rem #1e4d400d}.panel-flush{padding:0;overflow:hidden}.section-label{margin:0 0 .625rem;font-size:clamp(.75rem,.7rem + .2vw,.88rem);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.muted{color:var(--muted);font-size:clamp(.85rem,.8rem + .25vw,.95rem);line-height:1.55}.error{color:var(--danger);padding:1rem;text-align:center}.loading{padding:3rem 1rem;text-align:center;color:var(--muted);font-size:.9rem}.back{display:inline-flex;align-items:center;gap:.375rem;color:var(--accent);text-decoration:none;font-size:.88rem;font-weight:500;margin-bottom:.25rem}.hero{position:relative;padding:.75rem .375rem .5rem;overflow:hidden}.hero-blobs{position:absolute;inset:-20% -10% auto auto;width:10rem;height:10rem;pointer-events:none;z-index:0}.hero-blobs span{position:absolute;border-radius:50%;filter:blur(.125rem);animation:float 7s ease-in-out infinite}.hero-blobs .b1{width:5.5rem;height:5.5rem;right:.5rem;top:.625rem;background:#e8b4a073}.hero-blobs .b2{width:4rem;height:4rem;right:4.375rem;top:3rem;background:#7eb8c966;animation-delay:-2.5s}.hero-blobs .b3{width:2.625rem;height:2.625rem;right:1.75rem;top:4.875rem;background:#2f6f5e38;animation-delay:-4s}.hero-inner{position:relative;z-index:1}.hero-week{display:flex;align-items:baseline;gap:.375rem .625rem;flex-wrap:wrap}.hero-week .num{font-family:var(--font-display);font-size:clamp(3.4rem,15vw,4.2rem);font-weight:650;line-height:.92;letter-spacing:-.03em;background:linear-gradient(135deg,#1e4d40,#3d8f78 55%,#2a6a7a);-webkit-background-clip:text;background-clip:text;color:transparent}.hero-week .unit{font-family:var(--font-display);font-size:1.4rem;font-weight:500;color:var(--ink-soft)}.hero-week .plus{font-family:var(--font-display);font-size:1.6rem;font-weight:500;color:var(--muted);margin:0 .125rem;align-self:center}.hero-week .num.day{font-size:clamp(2.4rem,11vw,3rem)}.week-chip{display:inline-flex;align-items:center;gap:.375rem;margin-top:.625rem;padding:.375rem .75rem;border-radius:999rem;font-size:.75rem;font-weight:500;color:var(--accent-deep);background:#ffffffa6;border:1px solid rgba(47,111,94,.12)}.week-chip .dot{width:.4375rem;height:.4375rem;border-radius:50%;background:var(--accent);box-shadow:0 0 0 .1875rem #2f6f5e26}.hero-greeting{margin:.75rem 0 0;font-size:.95rem;color:var(--ink-soft);line-height:1.6;max-width:22em}.weather-panel{display:flex;flex-direction:column;gap:.875rem}.weather-main{display:flex;gap:.75rem;align-items:flex-start}.weather-emoji{font-size:2.4rem;line-height:1;flex-shrink:0;filter:drop-shadow(0 .25rem .5rem rgba(0,0,0,.08))}.weather-temp{margin:0;display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.weather-temp strong{font-family:var(--font-display);font-size:1.85rem;font-weight:650;letter-spacing:-.02em;color:var(--ink)}.weather-temp span{font-size:.95rem;font-weight:500;color:var(--ink-soft)}.weather-meta{margin:.25rem 0 0;font-size:clamp(.88rem,.82rem + .3vw,.98rem)!important}.tip-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.625rem}.tip-list li{display:flex;flex-direction:column;gap:.25rem;padding:.85rem .9rem;border-radius:.85rem;background:linear-gradient(90deg,#e3f2f6b3,#fff6);border:1px solid rgba(126,184,201,.18)}.tip-list li:nth-child(2n){background:linear-gradient(90deg,#f7efd4a6,#fff6);border-color:#e6c96a40}.tip-list li strong{font-size:clamp(.98rem,.92rem + .3vw,1.08rem);font-weight:650;color:var(--ink)}.tip-list li span{font-size:clamp(.92rem,.88rem + .25vw,1.02rem);line-height:1.55;color:var(--ink-soft)}.tip-disclaimer{margin:.5rem 0 0;font-size:.68rem;color:var(--muted);line-height:1.4}.log-head{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1rem .5rem}.log-filled{font-size:.72rem;font-weight:600;color:var(--accent-deep);background:var(--accent-soft);padding:.25rem .5625rem;border-radius:999rem}.meal-log-list{display:flex;flex-direction:column}.meal-log-item{display:grid;grid-template-columns:3rem 1fr;gap:.75rem;align-items:flex-start;padding:.75rem 1rem .875rem;border-top:1px solid var(--line)}.meal-log-item:first-child{border-top:none}.log-body{min-width:0}.log-label{display:block;font-size:.78rem;font-weight:600;color:var(--ink-soft);margin-bottom:.375rem}.log-view-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.25rem}.log-view-head .log-label{margin-bottom:0}.log-view-time{margin:0 0 .375rem;font-family:var(--font-display);font-size:1.05rem;font-weight:650;color:var(--accent-deep);letter-spacing:.02em}.log-view-text{margin:0;font-size:clamp(.92rem,.85rem + .35vw,1.05rem);line-height:1.55;color:var(--ink);white-space:pre-wrap}.log-edit-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:#ffffffbf;color:var(--accent);font-family:var(--font-body);font-size:clamp(.85rem,.8rem + .25vw,.95rem);font-weight:600;min-height:2.25rem;padding:.45rem .85rem;border-radius:999rem;cursor:pointer;touch-action:manipulation}.log-view-actions{display:flex;align-items:center;gap:.375rem}.log-delete-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid rgba(166,61,61,.2);background:#ffffffbf;color:var(--danger);font-family:var(--font-body);font-size:.72rem;font-weight:600;padding:.3125rem .625rem;border-radius:999rem;cursor:pointer}.confirm-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:1.5rem;background:#1a2e2859;backdrop-filter:blur(.25rem);-webkit-backdrop-filter:blur(.25rem)}.confirm-dialog{width:min(21.25rem,100%);padding:1.25rem 1.125rem 1rem;border-radius:1.125rem;background:var(--surface-solid);border:1px solid rgba(255,255,255,.9);box-shadow:0 1rem 2.5rem #1e4d402e}.confirm-title{margin:0 0 .5rem;font-family:var(--font-display);font-size:1.15rem;font-weight:650;color:var(--ink)}.confirm-message{margin:0 0 1.125rem;font-size:.88rem;line-height:1.5;color:var(--ink-soft)}.confirm-actions{display:flex;justify-content:flex-end;gap:.5rem}.confirm-delete-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:var(--danger);color:#fff;font-family:var(--font-body);font-size:.82rem;font-weight:600;padding:.5rem 1rem;border-radius:999rem;cursor:pointer}.confirm-delete-btn:disabled{opacity:.65;cursor:not-allowed}.snack-section .snack-empty{margin:0;padding:0 1rem .75rem;font-size:.84rem}.snack-list{display:flex;flex-direction:column}.snack-item{display:grid;grid-template-columns:3rem 1fr;gap:.75rem;align-items:flex-start;padding:.75rem 1rem .875rem;border-top:1px solid var(--line)}.snack-add-form{border-top:1px solid var(--line)}.snack-add-bar{padding:.75rem 1rem 1rem;border-top:1px solid var(--line)}.snack-add-btn{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid rgba(47,111,94,.22);background:linear-gradient(180deg,#e8f6ef,#d5ebe1);color:var(--accent-deep);font-family:var(--font-body);font-size:clamp(1rem,.95rem + .35vw,1.1rem);font-weight:650;min-height:3rem;padding:.85rem 1rem;border-radius:.9rem;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.meal-slot-empty{display:flex;flex-direction:column;gap:.5rem}.meal-slot-hint{margin:0;font-size:clamp(.9rem,.85rem + .3vw,1rem);line-height:1.5}.meal-slot-add{align-self:stretch;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid rgba(47,111,94,.22);background:linear-gradient(180deg,#e8f6ef,#d5ebe1);color:var(--accent-deep);font-family:var(--font-body);font-size:clamp(1rem,.95rem + .35vw,1.1rem);font-weight:650;min-height:3rem;padding:.85rem 1rem;border-radius:.9rem;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.snack-item.filled .slot-icon{box-shadow:0 .25rem .625rem #0000000f}.log-filled.snack-count{background:#f3e6debf;color:#8a4a38}.log-time-row{display:flex;align-items:center;gap:.625rem;margin-bottom:.5rem}.log-time-label{flex-shrink:0;font-size:.75rem;color:var(--muted)}.log-time-select{flex:1;min-width:0;border:1px solid var(--line);border-radius:.75rem;padding:.5625rem 2rem .5625rem .75rem;font-family:var(--font-body);font-size:.88rem;color:var(--ink);background:#ffffffd9;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7f76' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center}.log-time-select:focus{border-color:#2f6f5e59;box-shadow:0 0 0 .1875rem #2f6f5e1a}.log-actions{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.log-done-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:linear-gradient(180deg,#3d8f78,#2f6f5e);color:#f3faf7;font-family:var(--font-body);font-size:clamp(.95rem,.9rem + .3vw,1.05rem);font-weight:650;min-height:2.875rem;padding:.7rem 1.25rem;border-radius:999rem;cursor:pointer;touch-action:manipulation}.log-done-btn:disabled{opacity:.65;cursor:not-allowed}.log-cancel-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:transparent;color:var(--muted);font-family:var(--font-body);font-size:clamp(.88rem,.82rem + .25vw,.98rem);font-weight:500;min-height:2.875rem;padding:.65rem 1rem;border-radius:999rem;cursor:pointer;touch-action:manipulation}.log-status.error-text{color:var(--danger)}.log-input{width:100%;resize:vertical;min-height:3.25rem;max-height:7.5rem;border:1px solid var(--line);border-radius:.75rem;padding:.625rem .75rem;font-family:var(--font-body);font-size:.88rem;line-height:1.45;color:var(--ink);background:#ffffffb8;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.log-input:focus{border-color:#2f6f5e59;box-shadow:0 0 0 .1875rem #2f6f5e1a}.log-input::placeholder{color:#9aa89f}.meal-log-item.filled .log-input{background:#d8ebe359}.log-status{margin:.3125rem 0 0;font-size:.7rem;color:var(--muted)}.progress-row{display:flex;align-items:center;gap:.875rem}.ring{--p: 25;width:3.5rem;height:3.5rem;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--p) * 1%),rgba(47,111,94,.12) 0);display:grid;place-items:center;flex-shrink:0}.ring-inner{width:2.625rem;height:2.625rem;border-radius:50%;background:var(--surface-solid);display:grid;place-items:center;font-family:var(--font-display);font-size:.78rem;font-weight:650;color:var(--accent-deep)}.progress-copy{flex:1;min-width:0}.progress-copy strong{display:block;font-size:.92rem;font-weight:600;color:var(--ink);margin-bottom:.125rem}.focus-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.focus-list li{display:flex;gap:.625rem;align-items:flex-start;font-size:clamp(.95rem,.9rem + .3vw,1.05rem);line-height:1.55;color:var(--ink-soft);padding:.85rem .9rem;border-radius:.85rem;background:linear-gradient(90deg,#d8ebe38c,#ffffff59)}.focus-list li:nth-child(2n){background:linear-gradient(90deg,#f3e6de8c,#ffffff59)}.focus-list li:nth-child(3n){background:linear-gradient(90deg,#e3f2f6a6,#ffffff59)}.focus-list li:before{content:"";width:.5rem;height:.5rem;margin-top:.4em;border-radius:50%;background:var(--accent);flex-shrink:0}.focus-list li:nth-child(2n):before{background:var(--peach)}.focus-list li:nth-child(3n):before{background:var(--sky)}.meal-list{display:flex;flex-direction:column}.meal-item{display:grid;grid-template-columns:3rem 1fr auto;gap:.75rem;align-items:center;padding:.875rem 1rem;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line);transition:background .2s ease,transform .15s ease;animation:rise .45s ease both}.meal-item:nth-child(1){animation-delay:.05s}.meal-item:nth-child(2){animation-delay:.12s}.meal-item:nth-child(3){animation-delay:.19s}.meal-item:last-child{border-bottom:none}.meal-item:active{background:#d8ebe366}.slot-icon{width:3rem;height:3rem;border-radius:.875rem;display:grid;place-items:center;font-size:.68rem;font-weight:700;letter-spacing:.02em;color:var(--accent-deep)}.slot-icon.breakfast{background:linear-gradient(145deg,#f7efd4,#f0e0a8);color:#7a5c12}.slot-icon.lunch{background:linear-gradient(145deg,#d8ebe3,#b7d9cb);color:#1e4d40}.slot-icon.dinner{background:linear-gradient(145deg,#e3f2f6,#b9d9e4);color:#2a5a6a}.slot-icon.snack{background:linear-gradient(145deg,#f8e6de,#efcfc0);color:#8a4a38}.slot-icon.weight{background:linear-gradient(145deg,#e3f2f6,#b9d9e4);color:#2a5a6a}.meal-item .title{font-size:.95rem;font-weight:500;line-height:1.35}.meal-item .meta{display:block;margin-top:.1875rem;font-size:.72rem;color:var(--muted)}.meal-item .chev{color:var(--muted);opacity:.45}.day-block .day-head{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1rem .25rem;background:linear-gradient(90deg,rgba(216,235,227,.35),transparent 70%)}.day-block:nth-child(2n) .day-head{background:linear-gradient(90deg,rgba(243,230,222,.4),transparent 70%)}.day-block .day-head h2{margin:0;font-family:var(--font-display);font-size:1.2rem;font-weight:650;color:var(--ink)}.day-pill{font-size:.68rem;font-weight:600;padding:.25rem .5625rem;border-radius:999rem;background:#fffc;color:var(--muted);border:1px solid var(--line)}.day-block+.day-block{margin-top:.125rem}.dish-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#d8ebe3e6,#ffffffd9 55%),var(--surface)}.dish-hero h1{margin:0;font-family:var(--font-display);font-size:1.7rem;font-weight:650;line-height:1.25;color:var(--ink)}.dish-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.875rem}.badge{display:inline-flex;align-items:center;padding:.375rem .6875rem;border-radius:999rem;font-size:.75rem;font-weight:500;background:#ffffffbf;color:var(--accent-deep);border:1px solid rgba(47,111,94,.12)}.badge.warm{background:var(--peach-soft);color:#8a4a38;border-color:#e8b4a066}.recipe-block h3{margin:0 0 .625rem;font-size:.78rem;font-weight:600;letter-spacing:.12em;color:var(--muted)}.recipe-block ul,.recipe-block ol{margin:0;padding-left:1.15rem}.recipe-block li{margin:0 0 .5rem;line-height:1.5;color:var(--ink-soft);font-size:.92rem}.ing-grid{list-style:none;padding:0!important;display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ing-grid li{margin:0!important;padding:.625rem .75rem;border-radius:.75rem;background:#d8ebe359;font-size:.84rem!important;line-height:1.35!important}.ing-grid li:nth-child(3n){background:#f3e6de73}.ing-grid li:nth-child(3n+1){background:#e3f2f680}.steps-list{list-style:none;padding:0!important;counter-reset:step}.steps-list li{position:relative;margin:0 0 .75rem!important;padding:.75rem .75rem .75rem 2.75rem!important;border-radius:.875rem;background:#ffffff8c;border:1px solid var(--line);counter-increment:step}.steps-list li:before{content:counter(step);position:absolute;left:.75rem;top:.75rem;width:1.5rem;height:1.5rem;border-radius:.5rem;background:var(--accent-soft);color:var(--accent-deep);font-family:var(--font-display);font-size:.8rem;font-weight:650;display:grid;place-items:center}.coming{display:flex;gap:.875rem;align-items:flex-start}.coming-icon{width:3rem;height:3rem;border-radius:.9375rem;display:grid;place-items:center;flex-shrink:0}.coming:nth-child(2) .coming-icon{background:linear-gradient(145deg,#d8ebe3,#b7d9cb);color:#1e4d40}.coming:nth-child(3) .coming-icon{background:linear-gradient(145deg,#f7efd4,#efd99a);color:#7a5c12}.coming:nth-child(4) .coming-icon{background:linear-gradient(145deg,#e3f2f6,#b9d9e4);color:#2a5a6a}.coming-icon svg{width:1.375rem;height:1.375rem}.coming h2{margin:0 0 .25rem;font-size:1rem;font-weight:600}.coming p{margin:0}.footnote{margin:0;text-align:center;font-size:.75rem;color:var(--muted);padding:.25rem .5rem .5rem}.mine-hero{padding:.5rem .375rem .25rem}.mine-hero-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:1.75rem}.mine-hero-head .section-label{margin:0}.mine-edit-cancel{padding:.3125rem .625rem;font-size:.72rem}.mine-profile-meta{margin:.5rem 0 0;font-size:.84rem}.mine-saved-hint{margin:.5rem 0 0;font-size:.78rem;font-weight:600;color:var(--accent)}.mine-profile-edit{margin-top:.625rem}.mine-hero.is-editing{padding-bottom:.625rem}.profile-swap-enter-active,.profile-swap-leave-active{transition:opacity .18s ease,transform .18s ease}.profile-swap-enter-from,.profile-swap-leave-to{opacity:0;transform:translateY(.375rem)}.mine-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;text-align:center}.stat-cell{display:flex;flex-direction:column;gap:.25rem}.stat-cell strong{font-family:var(--font-display);font-size:1.35rem;color:var(--accent-deep)}.stat-cell span{font-size:.68rem;color:var(--muted);line-height:1.3}.mine-section-title{padding:.875rem 1rem 0;margin-bottom:0!important}.mine-link{display:grid;grid-template-columns:2.25rem 1fr auto;gap:.75rem;align-items:center;padding:.875rem 1rem;text-decoration:none;color:inherit;border-top:1px solid var(--line);background:transparent;width:100%;text-align:left;cursor:pointer}.mine-link.as-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-left:none;border-right:none;border-bottom:none;font:inherit}.mine-link.disabled{opacity:.55;cursor:default}.mine-link-icon{font-size:1.25rem;line-height:1}.mine-link strong{display:block;font-size:.92rem;font-weight:600}.mine-link p{margin:.1875rem 0 0;font-size:.76rem}.history-list{padding:0 1rem .75rem}.history-row{display:grid;grid-template-columns:3.25rem 3.25rem 1fr;gap:.5rem;align-items:start;padding:.625rem 0;border-bottom:1px solid var(--line);font-size:.84rem}.history-row:last-child{border-bottom:none}.history-time{font-family:var(--font-display);font-weight:600;color:var(--accent-deep);font-size:.8rem}.history-slot{color:var(--muted);font-size:.76rem}.history-text{line-height:1.45;white-space:pre-wrap}.weight-row .weight-kg{font-weight:600;color:var(--ink)}.chart-placeholder{padding:1rem 1.125rem}.mini-chart{display:flex;align-items:flex-end;gap:.375rem;height:5rem;margin-top:.75rem;padding:.5rem .25rem 0;border-top:1px solid var(--line)}.mini-bar{flex:1;min-height:.5rem;border-radius:.375rem .375rem .125rem .125rem;background:linear-gradient(180deg,var(--accent-soft),var(--accent));opacity:.85}.weight-form{display:flex;flex-direction:column;gap:.5rem}input.log-time-select{cursor:text}.unit-toggle-row{display:flex;align-items:center;gap:.625rem;padding:0 1rem .625rem}.weight-section .unit-toggle-row{padding:0 0 .625rem}.unit-toggle{display:inline-flex;padding:.1875rem;border-radius:999rem;background:#ffffffb3;border:1px solid var(--line)}.unit-toggle button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;padding:.375rem .75rem;border-radius:999rem;font-family:var(--font-body);font-size:.72rem;font-weight:600;color:var(--muted);cursor:pointer}.unit-toggle button.active{background:var(--accent-soft);color:var(--accent-deep)}.log-filled.weight-count{background:#e3f2f6d9;color:#2a5a6a}.weight-display{font-family:var(--font-display);font-size:1.1rem!important;font-weight:650;color:var(--accent-deep)}.profile-form{display:flex;flex-direction:column;gap:.625rem}.profile-row{display:grid;grid-template-columns:3rem 1fr auto;gap:.625rem;align-items:center}.profile-row.full{grid-template-columns:3rem 1fr}.profile-row label{font-size:.78rem;color:var(--muted)}.profile-suffix{font-size:.84rem;color:var(--ink-soft)}.profile-form .log-status:not(.error-text){color:var(--accent);font-size:.78rem;margin:0}@keyframes rise{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.625rem) scale(1.04)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}html[data-theme=festive]{--ink: #1f2419;--ink-soft: #3d4534;--muted: #6a735c;--line: rgba(31, 36, 25, .1);--surface: rgba(255, 252, 245, .9);--surface-solid: #fffdf8;--accent: #2d8a4e;--accent-soft: #d4f0c8;--accent-deep: #1a5c32;--peach: #ff8f6b;--peach-soft: #ffe4d8;--sky: #4db8d4;--sky-soft: #d4f3fb;--butter: #ffc94a;--butter-soft: #fff0c2;--lilac: #e85d8e;--danger: #c23b3b;--shadow-soft: 0 .75rem 2.25rem rgba(45, 138, 78, .14)}html[data-theme=festive] body{background:radial-gradient(ellipse 100% 60% at 100% 0%,rgba(255,143,107,.45) 0%,transparent 50%),radial-gradient(ellipse 80% 50% at 0% 15%,rgba(255,201,74,.4) 0%,transparent 48%),radial-gradient(ellipse 70% 45% at 80% 70%,rgba(77,184,212,.32) 0%,transparent 50%),radial-gradient(ellipse 90% 40% at 20% 100%,rgba(45,138,78,.2) 0%,transparent 50%),linear-gradient(165deg,#fff6e8,#e8f8ef 40%,#e5f6fb 75%,#fff0e6)}html[data-theme=festive] body:before{opacity:.25}html[data-theme=festive] body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:radial-gradient(circle at 12% 22%,rgba(255,143,107,.55) 0 .1875rem,transparent .25rem),radial-gradient(circle at 88% 18%,rgba(255,201,74,.65) 0 .25rem,transparent .3125rem),radial-gradient(circle at 72% 8%,rgba(77,184,212,.5) 0 .1562rem,transparent .2188rem),radial-gradient(circle at 28% 78%,rgba(45,138,78,.4) 0 .1875rem,transparent .25rem),radial-gradient(circle at 92% 62%,rgba(232,93,142,.4) 0 .1562rem,transparent .2188rem),radial-gradient(circle at 8% 55%,rgba(255,201,74,.45) 0 .125rem,transparent .1875rem),radial-gradient(circle at 55% 92%,rgba(255,143,107,.35) 0 .2188rem,transparent .2812rem);animation:confetti-drift 14s ease-in-out infinite alternate}html[data-theme=festive] .brand-mark{background:linear-gradient(145deg,#ffc94a,#2d8a4e 45%,#1a5c32),radial-gradient(circle at 30% 25%,rgba(255,255,255,.4),transparent 50%);box-shadow:0 .5rem 1.25rem #2d8a4e59,inset 0 1px #ffffff59;animation:brand-pop 3.5s ease-in-out infinite}html[data-theme=festive] .brand-text .name{background:linear-gradient(100deg,#1a5c32,#2d8a4e 40%,#d4652a);-webkit-background-clip:text;background-clip:text;color:transparent}html[data-theme=festive] .brand-text .tag{color:#8a5a3a;font-weight:500}html[data-theme=festive] .top-bar{background:linear-gradient(180deg,#fff6e8f0,#fff6e8c7 70%,#fff6e800)}html[data-theme=festive] .nav-desktop a.router-link-active{background:linear-gradient(90deg,#fff0c2,#d4f0c8);color:#1a5c32}html[data-theme=festive] .tab-bar{background:#fffdf8eb;border:1.5px solid rgba(45,138,78,.18);box-shadow:0 .875rem 2.5rem #2d8a4e29}html[data-theme=festive] .tab-bar a.router-link-active{color:#1a5c32;background:linear-gradient(180deg,#fff0c2,#d4f0c8);box-shadow:inset 0 0 0 1px #2d8a4e1f}html[data-theme=festive] .panel{border:1.5px solid rgba(255,255,255,.95);box-shadow:0 .375rem 1.375rem #2d8a4e14,0 1px #ffc94a40}html[data-theme=festive] .hero-week .num{background:linear-gradient(135deg,#1a5c32,#2d8a4e,#4db8d4 70%,#ff8f6b);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 .125rem 0 rgba(255,201,74,.35))}html[data-theme=festive] .week-chip{background:linear-gradient(90deg,#fff0c2,#ffe4d8);border-color:#ff8f6b59;color:#8a3d28;font-weight:600}html[data-theme=festive] .week-chip .dot{background:#ff8f6b;box-shadow:0 0 0 .1875rem #ff8f6b40;animation:pulse-dot 1.8s ease-in-out infinite}html[data-theme=festive] .hero-blobs .b1{background:#ff8f6b8c;width:6.25rem;height:6.25rem}html[data-theme=festive] .hero-blobs .b2{background:#ffc94a8c}html[data-theme=festive] .hero-blobs .b3{background:#4db8d473}html[data-theme=festive] .ring{background:conic-gradient(#ff8f6b 0,#ff8f6b calc(var(--p) * .35%),#ffc94a calc(var(--p) * .35%),#ffc94a calc(var(--p) * .7%),#2d8a4e calc(var(--p) * .7%),#2d8a4e calc(var(--p) * 1%),#2d8a4e1f 0);box-shadow:0 0 0 .25rem #ffc94a40}html[data-theme=festive] .focus-list li{background:linear-gradient(90deg,#d4f0c8bf,#ffffff80);border:1px solid rgba(45,138,78,.08)}html[data-theme=festive] .focus-list li:nth-child(2n){background:linear-gradient(90deg,#ffe4d8cc,#ffffff80)}html[data-theme=festive] .focus-list li:nth-child(3n){background:linear-gradient(90deg,#d4f3fbd9,#ffffff80)}html[data-theme=festive] .slot-icon{font-size:1.25rem;font-weight:400;letter-spacing:0;box-shadow:0 .25rem .625rem #0000000f}html[data-theme=festive] .slot-icon.breakfast{background:linear-gradient(145deg,#fff0c2,#ffc94a)}html[data-theme=festive] .slot-icon.lunch{background:linear-gradient(145deg,#d4f0c8,#6bcf7a)}html[data-theme=festive] .slot-icon.dinner{background:linear-gradient(145deg,#d4f3fb,#4db8d4)}html[data-theme=festive] .slot-icon.snack{background:linear-gradient(145deg,#ffe4d8,#ff8f6b)}html[data-theme=festive] .meal-item:hover,html[data-theme=festive] .meal-item:active{background:linear-gradient(90deg,rgba(255,240,194,.55),transparent)}html[data-theme=festive] .day-block .day-head{background:linear-gradient(90deg,rgba(212,240,200,.65),rgba(255,240,194,.3) 60%,transparent)}html[data-theme=festive] .day-block:nth-child(2n) .day-head{background:linear-gradient(90deg,rgba(255,228,216,.7),rgba(212,243,251,.35) 60%,transparent)}html[data-theme=festive] .day-block:nth-child(3n) .day-head{background:linear-gradient(90deg,rgba(212,243,251,.7),rgba(255,240,194,.35) 60%,transparent)}html[data-theme=festive] .day-pill{background:linear-gradient(135deg,#fff0c2,#ffe4d8);color:#8a3d28;border-color:#ff8f6b4d;font-weight:700}html[data-theme=festive] .dish-hero{background:linear-gradient(135deg,#d4f0c8f2,#fff0c2b3 45%,#ffe4d8d9),var(--surface)}html[data-theme=festive] .badge.warm{background:linear-gradient(90deg,#ffe4d8,#fff0c2);color:#8a3d28;border-color:#ff8f6b66}html[data-theme=festive] .steps-list li:before{background:linear-gradient(145deg,#ffc94a,#ff8f6b);color:#1f2419}html[data-theme=festive] .ing-grid li{background:#d4f0c88c;border:1px solid rgba(45,138,78,.08)}html[data-theme=festive] .ing-grid li:nth-child(3n){background:#ffe4d8a6}html[data-theme=festive] .ing-grid li:nth-child(3n+1){background:#d4f3fba6}html[data-theme=festive] .coming:nth-child(2) .coming-icon{background:linear-gradient(145deg,#d4f0c8,#6bcf7a);color:#1a5c32}html[data-theme=festive] .coming:nth-child(3) .coming-icon{background:linear-gradient(145deg,#fff0c2,#ffc94a);color:#7a5c12}html[data-theme=festive] .coming:nth-child(4) .coming-icon{background:linear-gradient(145deg,#d4f3fb,#4db8d4);color:#1a5a6a}.theme-toggle{display:inline-flex;align-items:center;gap:0;padding:.1875rem;border-radius:999rem;background:#ffffffb3;border:1px solid var(--line);flex-shrink:0}.theme-toggle button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;padding:.375rem .625rem;border-radius:999rem;font-family:var(--font-body);font-size:.68rem;font-weight:600;color:var(--muted);cursor:pointer;line-height:1;transition:background .2s ease,color .2s ease}.theme-toggle button.active{background:var(--accent-soft);color:var(--accent-deep)}html[data-theme=festive] .theme-toggle button.active{background:linear-gradient(90deg,#fff0c2,#d4f0c8);color:#1a5c32;box-shadow:0 .125rem .375rem #2d8a4e1f}.festive-only{display:none}html[data-theme=festive] .festive-only{display:inline}html[data-theme=festive] .calm-only{display:none}.slot-emoji{display:none;line-height:1}html[data-theme=festive] .slot-emoji{display:block}html[data-theme=festive] .slot-text,.festive-banner{display:none}html[data-theme=festive] .festive-banner{display:flex;align-items:center;gap:.5rem;padding:.625rem .875rem;border-radius:.875rem;background:linear-gradient(90deg,#fff0c2,#ffe4d8,#d4f3fb);border:1.5px solid rgba(255,143,107,.25);font-size:.82rem;font-weight:500;color:#5a3a28;line-height:1.4;animation:rise .5s ease .1s both}html[data-theme=festive] .festive-banner span.emoji{font-size:1.2rem;flex-shrink:0}html[data-theme=festive] .tip-list li{background:linear-gradient(90deg,#d4f3fbd9,#ffffff80);border-color:#4db8d440}html[data-theme=festive] .tip-list li:nth-child(2n){background:linear-gradient(90deg,#fff0c2d9,#ffffff80);border-color:#ffc94a4d}html[data-theme=festive] .weather-temp strong{background:linear-gradient(135deg,#1a5c32,#4db8d4);-webkit-background-clip:text;background-clip:text;color:transparent}html[data-theme=festive] .log-input:focus{border-color:#2d8a4e66;box-shadow:0 0 0 .1875rem #ffc94a40}html[data-theme=festive] .meal-log-item.filled .log-input{background:#fff0c273}html[data-theme=festive] .log-filled{background:linear-gradient(90deg,#fff0c2,#d4f0c8);color:#1a5c32}html[data-theme=festive] .log-done-btn{background:linear-gradient(135deg,#2d8a4e,#1a5c32)}html[data-theme=festive] .log-filled.snack-count{background:linear-gradient(90deg,#ffe4d8,#fff0c2);color:#8a3d28}html[data-theme=festive] .log-filled.weight-count{background:linear-gradient(90deg,#d4f3fb,#fff0c2);color:#1a5a6a}html[data-theme=festive] .meal-slot-add{border-color:#ff8f6b59;background:#fff0c273;color:#8a3d28}@keyframes confetti-drift{0%{transform:translateY(0)}to{transform:translateY(-.75rem)}}@keyframes brand-pop{0%,to{transform:scale(1) rotate(0)}50%{transform:scale(1.04) rotate(-2deg)}}@keyframes pulse-dot{0%,to{box-shadow:0 0 0 .1875rem #ff8f6b40}50%{box-shadow:0 0 0 .375rem #ff8f6b1f}}@media(prefers-reduced-motion:reduce){html[data-theme=festive] body:after,html[data-theme=festive] .brand-mark,html[data-theme=festive] .week-chip .dot{animation:none!important}}
