@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-full-normal-7BpKI3vF.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-full-normal-YHFkNujK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-full-normal-CFFu7zhK.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--fire-ember:#e76f2c;--fire-amber:#f4a340;--fire-ember-deep:#b23a1e;--dusk-twilight:#1f2a3a;--dusk-surface:#2a3b4f;--dusk:#3d5a73;--neutral-firelight:#faf3e8;--neutral-sand:#ede0cc;--neutral-bark:#5c4033;--accent-moss:#7a8b6f}:root,[data-theme=dark]{--color-background:var(--dusk-twilight);--color-surface:var(--dusk-surface);--color-text-primary:var(--neutral-firelight);--color-text-secondary:color-mix(in srgb, var(--neutral-firelight) 62%, var(--dusk-surface));--color-accent:var(--fire-ember);--color-accent-pressed:var(--fire-ember-deep);--color-border:var(--neutral-bark);--color-success:var(--accent-moss);--color-slot-breakfast:var(--fire-amber);--color-slot-lunch:var(--accent-moss);--color-slot-snack:var(--dusk);--color-slot-dinner:var(--fire-ember);--color-surface-raised:color-mix(in srgb, var(--dusk-surface) 87%, var(--neutral-firelight) 13%);--color-ash:color-mix(in srgb, var(--dusk) 60%, var(--neutral-bark) 40%);--color-kindling:color-mix(in srgb, var(--dusk-surface) 80%, var(--dusk) 20%);--font-display:"Fraunces Variable", Georgia, "Times New Roman", serif;--font-body:ui-rounded, "SF Pro Rounded", system-ui, -apple-system, sans-serif}[data-theme=light]{--color-background:var(--neutral-firelight);--color-surface:var(--neutral-sand);--color-text-primary:var(--dusk-twilight);--color-text-secondary:var(--neutral-bark);--color-accent:var(--fire-ember);--color-accent-pressed:var(--fire-ember-deep);--color-border:var(--neutral-bark);--color-success:var(--accent-moss)}:root{font:17px/1.5 var(--font-body);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--color-text-primary);background:var(--color-background);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:radial-gradient(130% 55% at 50% -8%, color-mix(in srgb, var(--color-accent) 24%, transparent), transparent 62%), var(--color-background);background-attachment:fixed;min-height:100svh;margin:0}#root{min-height:100svh}.splash{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100svh;display:flex}.splash h1{color:var(--color-accent);margin:0;font-size:48px}.splash p{opacity:.8;margin:0}.app{max-width:600px;padding:30px 18px calc(92px + env(safe-area-inset-bottom));margin:0 auto}.app__head{flex-direction:column;gap:20px;margin-bottom:26px;display:flex}.app__topbar{justify-content:space-between;align-items:center;display:flex}.app__title{margin:0;line-height:0}.app__logo{width:auto;height:38px;display:block}.langtoggle{letter-spacing:.06em;border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-surface) 80%, transparent);color:var(--color-text-primary);cursor:pointer;border-radius:999px;padding:7px 13px;font-size:12px;font-weight:700}.langtoggle:active{background:var(--color-accent-pressed)}.weeknav{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.weeknav button{border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-surface) 80%, transparent);width:46px;height:40px;color:var(--color-text-primary);cursor:pointer;border-radius:13px;font-size:18px;line-height:1}.weeknav button:active{background:var(--color-accent-pressed)}.weeknav__label{font-size:16px;font-weight:700}.week{flex-direction:column;gap:11px;display:flex}.week .day-card{animation:.5s cubic-bezier(.22,.61,.36,1) both kindle;animation-delay:calc(var(--i,0) * 55ms)}.day-card{cursor:pointer;transition:transform .12s,border-color .2s}.day-card--compact:hover{border-color:color-mix(in srgb, var(--color-accent) 35%, transparent)}.day-card--today .day-card__weekday{color:var(--color-accent)}.day-card__weekday{font-family:var(--font-display);line-height:1}.day-card__date{color:var(--color-text-secondary);font-size:13px}.day-card--active{background:var(--color-surface-raised);border:1px solid color-mix(in srgb, var(--color-accent) 48%, transparent);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--color-accent) 26%, transparent), 0 0 0 1px color-mix(in srgb, var(--color-accent) 28%, transparent), 0 12px 52px color-mix(in srgb, var(--color-accent) 26%, transparent), 0 6px 20px #0000006b;border-radius:22px;padding:19px 20px 16px}.day-card__head{border-bottom:1px solid color-mix(in srgb, var(--color-accent) 22%, transparent);justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:4px;padding-bottom:13px;display:flex}.day-card__when{align-items:baseline;gap:10px;display:flex}.day-card--active .day-card__weekday{font-variation-settings:"opsz" 40, "wght" 470, "SOFT" 60, "WONK" 1;text-transform:capitalize;font-size:30px}.day-card__badge{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 18%, transparent);border-radius:999px;padding:4px 10px;font-size:11px;font-weight:700}.day-card__meals{grid-template-columns:1fr 1fr;gap:10px;margin-top:13px;display:grid}.meal-tile{background:color-mix(in srgb, var(--color-surface) 66%, var(--color-background));border:1px solid color-mix(in srgb, var(--color-border) 28%, transparent);border-radius:14px;flex-direction:column;gap:8px;min-height:88px;padding:13px 14px;display:flex}.meal-tile__slot{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.07em;align-items:center;gap:8px;font-size:11.5px;display:inline-flex}.meal-tile__name{font-size:16px;font-weight:500;line-height:1.25}.meal-tile__mark{font-size:12px}.meal-tile--empty{background:color-mix(in srgb, var(--color-surface) 40%, var(--color-background))}.meal-tile__empty{opacity:.3;font-size:18px}.meal-tile--tappable{font:inherit;color:inherit;text-align:left;cursor:pointer;width:100%;transition:border-color .15s,transform .1s}.meal-tile--tappable:hover{border-color:color-mix(in srgb, var(--color-accent) 45%, transparent)}.meal-tile--tappable:active{transform:scale(.98)}.day-card__empty{opacity:.45;margin:4px 0 0;font-style:italic}.day-card--compact{border:1px solid color-mix(in srgb, var(--color-border) 28%, transparent);color:color-mix(in srgb, var(--color-text-primary) calc(46% + var(--heat) * 54%), var(--color-background));border-radius:15px;align-items:baseline;gap:16px;padding:12px 16px;display:flex}.day-card--past{background:color-mix(in srgb, var(--color-ash) calc(var(--heat) * 50%), var(--color-background))}.day-card--future{background:color-mix(in srgb, var(--color-kindling) calc(var(--heat) * 42%), var(--color-background))}.day-card--unlit{border-style:dashed}.day-card--compact .day-card__label{flex-direction:column;flex:none;gap:1px;min-width:92px;display:flex}.day-card--compact .day-card__weekday{font-variation-settings:"opsz" 24, "wght" 450, "SOFT" 50, "WONK" 1;text-transform:capitalize;font-size:19px}.day-card--compact .day-card__date{color:inherit;opacity:.65}.glance{flex-wrap:wrap;flex:1;justify-content:flex-end;gap:4px 13px;margin:0;padding:0;list-style:none;display:flex}.glance__item{align-items:center;gap:7px;font-size:14px;display:inline-flex}.day-card__unlit{text-align:right;opacity:.7;flex:1;font-size:14px;font-style:italic}.slot-icon{flex:none;width:15px;height:15px}.glance__item .slot-icon{width:13px;height:13px}.slot-icon--breakfast{color:var(--color-slot-breakfast);filter:drop-shadow(0 0 3px color-mix(in srgb, var(--color-slot-breakfast) 45%, transparent))}.slot-icon--lunch{color:var(--color-slot-lunch);filter:drop-shadow(0 0 3px color-mix(in srgb, var(--color-slot-lunch) 45%, transparent))}.slot-icon--snack{color:var(--color-slot-snack);filter:drop-shadow(0 0 3px color-mix(in srgb, var(--color-slot-snack) 45%, transparent))}.slot-icon--dinner{color:var(--color-slot-dinner);filter:drop-shadow(0 0 3px color-mix(in srgb, var(--color-slot-dinner) 45%, transparent))}.sheet-backdrop{z-index:50;background:color-mix(in srgb, var(--color-background) 72%, transparent);justify-content:center;align-items:flex-end;animation:.2s both sheet-fade;display:flex;position:fixed;inset:0}.sheet{background:var(--color-surface-raised);border-top:1px solid color-mix(in srgb, var(--color-accent) 40%, transparent);width:100%;max-width:600px;max-height:86vh;box-shadow:inset 0 1px 0 color-mix(in srgb, var(--color-accent) 24%, transparent), 0 -16px 60px color-mix(in srgb, var(--color-accent) 18%, transparent), 0 -8px 30px #00000080;border-radius:26px 26px 0 0;flex-direction:column;padding:0 22px;animation:.32s cubic-bezier(.22,.61,.36,1) both sheet-rise;display:flex;position:relative;overflow:hidden}.sheet__grab{cursor:grab;touch-action:none;justify-content:center;padding:6px 0 14px;display:flex}.sheet__grab:active{cursor:grabbing}.sheet__handle{background:color-mix(in srgb, var(--color-text-secondary) 55%, transparent);border-radius:999px;width:40px;height:4px}.sheet__msg{text-align:center;color:var(--color-text-secondary);padding:36px 0}.sheet__head{border-bottom:1px solid color-mix(in srgb, var(--color-border) 24%, transparent);flex:none;padding-bottom:14px}.sheet__scroll{min-height:0;padding:20px 0 calc(26px + env(safe-area-inset-bottom));flex-direction:column;flex:1;gap:24px;display:flex;overflow-y:auto}.sheet__title{font-family:var(--font-display);font-variation-settings:"opsz" 40, "wght" 480, "SOFT" 60, "WONK" 1;color:var(--color-text-primary);margin:0;font-size:27px;line-height:1.12}.sheet__badge{text-transform:uppercase;letter-spacing:.07em;color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 16%, transparent);border-radius:999px;margin-top:9px;padding:4px 11px;font-size:11px;font-weight:700;display:inline-block}.sheet__meta{color:var(--color-text-secondary);margin:8px 0 0;font-size:13px}.sheet__thermomix{color:var(--color-text-secondary);margin:0;font-size:14.5px;line-height:1.5}.sheet__label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);margin:0 0 11px;font-size:11.5px;font-weight:700}.ing-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ing{justify-content:space-between;align-items:baseline;gap:16px;padding:5px 0;display:flex}.ing+.ing{border-top:1px solid color-mix(in srgb, var(--color-border) 24%, transparent)}.ing__name{font-size:15px}.ing__qty{color:var(--color-text-secondary);font-variant-numeric:tabular-nums;flex:none;font-size:14px}.step-list{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.step{align-items:baseline;gap:13px;display:flex}.step__n{width:24px;height:24px;color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 16%, transparent);border-radius:999px;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:inline-flex;transform:translateY(3px)}.step__text{font-size:15px;line-height:1.45}.sheet__notes{color:var(--color-text-secondary);margin:0;font-size:14px;font-style:italic;line-height:1.5}.weather--tappable{cursor:pointer}.wxd__head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.wxd__head .sheet__title{font-size:40px}.wxd__date{text-transform:capitalize}.wxd__headicon{color:var(--color-accent);filter:drop-shadow(0 0 9px color-mix(in srgb, var(--color-accent) 38%, transparent))}.wxd__headicon .wx-icon{width:48px;height:48px}.wxd__stats{justify-content:space-between;gap:10px;display:flex}.wxd__stat{flex-direction:column;gap:3px;display:flex}.wxd__statval{color:var(--color-text-primary);font-size:18px;font-weight:600}.wxd__statlabel{color:var(--color-text-secondary);font-size:11.5px}.wxd__sun{color:var(--color-text-secondary);gap:20px;margin-top:16px;font-size:13px;display:flex}.wxd__hours{gap:18px;margin:0;padding:0 0 4px;list-style:none;display:flex;overflow-x:auto}.wxd__hour{flex-direction:column;flex:none;align-items:center;gap:7px;display:flex}.wxd__hourtime{color:var(--color-text-secondary);font-size:12px}.wxd__houricon{color:var(--color-text-secondary)}.wxd__hour .wx-icon{width:22px;height:22px}.wxd__hourtemp{font-size:14px;font-weight:600}.wxd__hourrain{color:var(--color-slot-snack);font-size:11px}.wxd__days{margin:0;padding:0;list-style:none}.wxd__day{grid-template-columns:1fr 24px 44px auto;align-items:center;gap:14px;padding:9px 0;display:grid}.wxd__day+.wxd__day{border-top:1px solid color-mix(in srgb, var(--color-border) 24%, transparent)}.wxd__dayname{text-transform:capitalize;font-size:14px}.wxd__dayicon{color:var(--color-text-secondary)}.wxd__day .wx-icon{width:22px;height:22px}.wxd__dayrain{color:var(--color-slot-snack);text-align:right;font-size:12px}.wxd__dayrange{color:var(--color-text-secondary);text-align:right;font-size:14px}.wxd__dayrange b{color:var(--color-text-primary);font-weight:600}.planfab__scrim{z-index:44;position:fixed;inset:0}.planfab{right:calc(18px + max(0px,50vw - 300px));bottom:calc(16px + env(safe-area-inset-bottom));z-index:45;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed}.planfab__menu{background:color-mix(in srgb, var(--color-surface-raised) 88%, transparent);-webkit-backdrop-filter:blur(14px);border:1px solid color-mix(in srgb, var(--color-border) 45%, transparent);transform-origin:100% 100%;border-radius:16px;flex-direction:column;min-width:168px;padding:6px;animation:.16s both planfab-pop;display:flex;box-shadow:0 14px 38px #00000080}.planfab__item{color:var(--color-text-primary);font:inherit;text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:11px;padding:12px 16px;font-weight:600}.planfab__item:active{background:var(--color-accent-pressed)}.planfab__item:disabled{opacity:.6}.planfab__btn{background:linear-gradient(135deg, var(--color-accent), var(--color-accent-pressed));width:54px;height:54px;color:var(--color-text-primary);box-shadow:0 8px 26px color-mix(in srgb, var(--color-accent) 45%, transparent), 0 2px 8px #0006;cursor:pointer;border:none;border-radius:50%;place-items:center;transition:transform .15s;display:grid}.planfab__btn:active{transform:scale(.94)}.planfab__btn svg{width:24px;height:24px}.app__error{background:var(--color-accent-pressed);word-break:break-word;border-radius:14px;margin:0 0 14px;padding:11px 15px;font-size:14px}@keyframes kindle{0%{opacity:0;transform:translateY(11px)}to{opacity:1;transform:translateY(0)}}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}@keyframes sheet-rise{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes planfab-pop{0%{opacity:0;transform:scale(.9)translateY(6px)}to{opacity:1;transform:scale(1)translateY(0)}}@media (prefers-reduced-motion:reduce){.week .day-card,.sheet-backdrop,.sheet,.planfab__menu{animation:none}}.today{flex-direction:column;gap:14px;display:flex}.dash-card{background:var(--color-surface);border:1px solid color-mix(in srgb, var(--color-border) 40%, transparent);border-radius:18px;padding:16px 18px}.dash-card__label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-secondary);margin-bottom:12px;font-size:11.5px;font-weight:700;display:block}.dash-card__empty{opacity:.5;margin:0;font-style:italic}.dash-card .day-card__meals{margin-top:0}.weather--msg{color:var(--color-text-secondary);text-align:center;padding:22px 0}.weather__date{text-transform:capitalize;color:var(--color-text-secondary);margin-bottom:14px;font-size:13px;display:block}.weather__now{align-items:center;gap:16px;display:flex}.weather__icon{color:var(--color-accent);filter:drop-shadow(0 0 9px color-mix(in srgb, var(--color-accent) 38%, transparent))}.wx-icon{width:46px;height:46px;display:block}.weather__main{flex-direction:column;gap:2px;display:flex}.weather__temp{font-family:var(--font-display);font-variation-settings:"opsz" 40, "wght" 500, "SOFT" 60, "WONK" 1;color:var(--color-text-primary);font-size:34px;line-height:1}.weather__cond{font-size:15px;font-weight:500}.weather__sub{color:var(--color-text-secondary);font-size:12.5px}.weather__strip{border-top:1px solid color-mix(in srgb, var(--color-border) 28%, transparent);justify-content:space-between;margin:16px 0 0;padding:14px 0 0;list-style:none;display:flex}.wx-day{flex-direction:column;flex:1;align-items:center;gap:6px;display:flex}.wx-day__name{text-transform:capitalize;color:var(--color-text-secondary);font-size:12px}.wx-day__icon{color:var(--color-text-secondary)}.wx-day .wx-icon{width:24px;height:24px}.wx-day__range{color:var(--color-text-secondary);font-size:12.5px}.wx-day__range b{color:var(--color-text-primary);font-weight:600}.placeholder{opacity:.72;border-style:dashed}.placeholder__hint{color:var(--color-text-secondary);font-size:14px;font-style:italic}.tabbar{left:50%;bottom:calc(16px + env(safe-area-inset-bottom));z-index:40;background:color-mix(in srgb, var(--color-surface) 85%, transparent);-webkit-backdrop-filter:blur(18px)saturate(1.3);border:1px solid color-mix(in srgb, var(--color-text-primary) 12%, transparent);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--color-text-primary) 14%, transparent), 0 0 22px color-mix(in srgb, var(--color-accent) 20%, transparent),  0 14px 36px #00000080;border-radius:999px;gap:4px;padding:7px;display:inline-flex;position:fixed;transform:translate(-50%)}.tab{font:inherit;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;transition:color .18s,background .18s;display:inline-flex}.tab__icon{width:22px;height:22px}.tab__label{font-size:13px;font-weight:600;display:none}.tab--active{color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 16%, transparent);padding-right:17px}.tab--active .tab__icon{filter:drop-shadow(0 0 6px color-mix(in srgb, var(--color-accent) 50%, transparent))}.tab--active .tab__label{display:inline}
