:root{--bd-base: #f6f3ee;--bd-cream: #fbf8f3;--bd-peach: #f3dccb;--bd-sage: #e3e9df;--bd-sand: #ead9c6;--glass: rgba(255, 255, 255, .72);--glass-strong: rgba(255, 255, 255, .88);--glass-inner: rgba(255, 255, 255, .55);--glass-border: rgba(255, 255, 255, .9);--glass-edge: rgba(28, 26, 23, .06);--glass-shadow: 0 8px 24px rgba(60, 45, 30, .08);--blur: blur(16px) saturate(140%);--ink: #1c1a17;--muted: #6b655d;--faint: #9a938a;--text: var(--ink);--accent: #1c1a17;--accent-text: #ffffff;--positive: #1f9d55;--warn: #d97706;--danger: #b4423a;--brand: #ef6c1f;--positive-soft: rgba(31, 157, 85, .14);--warn-soft: rgba(217, 119, 6, .16);--danger-soft: rgba(180, 66, 58, .14);--good: var(--positive);--bad: var(--danger);--sep: rgba(28, 26, 23, .07);--track: rgba(28, 26, 23, .09);--border: rgba(28, 26, 23, .12);--ring: rgba(28, 26, 23, .3);--r-card: 22px;--r-tile: 16px;--r-input: 12px;--gutter: 16px;--pad: 20px;--tab-h: 64px;--font: "Manrope", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light}:root[data-theme=dark]{--bd-base: #1b1917;--bd-cream: #262320;--bd-peach: #3a2c22;--bd-sage: #242a24;--bd-sand: #302722;--glass: rgba(34, 31, 28, .78);--glass-strong: rgba(40, 37, 34, .92);--glass-inner: rgba(255, 255, 255, .06);--glass-border: rgba(255, 255, 255, .1);--glass-edge: rgba(0, 0, 0, .3);--glass-shadow: 0 8px 24px rgba(0, 0, 0, .35);--ink: #f2ede6;--muted: #b3aba0;--faint: #7f7870;--text: var(--ink);--accent: #f2ede6;--accent-text: #1c1a17;--positive: #4fc47f;--warn: #f0a33a;--danger: #ef7a70;--brand: #ff8a45;--positive-soft: rgba(79, 196, 127, .18);--warn-soft: rgba(240, 163, 58, .18);--danger-soft: rgba(239, 122, 112, .18);--sep: rgba(255, 255, 255, .08);--track: rgba(255, 255, 255, .12);--border: rgba(255, 255, 255, .14);--ring: rgba(242, 237, 230, .35);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bd-base);color:var(--ink);font:14px/1.45 var(--font);-webkit-font-smoothing:antialiased;overflow-x:hidden;font-variant-numeric:tabular-nums}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;line-height:1.2;font-weight:600}h1{font-size:24px;font-weight:500;letter-spacing:-.02em}h2{font-size:15px}h3{font-size:14px}p{margin:0}small,.muted{color:var(--muted)}.muted{font-size:13px}.faint{color:var(--faint)}ul,ol{margin:0;padding-left:1.25rem}code{font-size:12px;background:var(--glass-inner);padding:2px 6px;border-radius:6px}b,strong{font-weight:600;color:var(--ink)}@media(min-width:900px){h1{font-size:30px}:root{--gutter: 32px;--pad: 24px}}.bg{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:radial-gradient(70% 60% at 0% 0%,var(--bd-cream) 0%,rgba(251,248,243,0) 70%),radial-gradient(60% 55% at 100% 10%,var(--bd-peach) 0%,rgba(243,220,203,0) 70%),radial-gradient(65% 55% at 5% 100%,var(--bd-sage) 0%,rgba(227,233,223,0) 70%),radial-gradient(70% 65% at 100% 100%,var(--bd-sand) 0%,rgba(234,217,198,0) 72%),var(--bd-base)}.bg .blob{position:absolute;border-radius:50%;opacity:.55}.bg .b1{width:70vw;height:70vw;left:-20vw;top:-10vh;background:radial-gradient(circle,var(--bd-cream) 0%,rgba(251,248,243,0) 70%)}.bg .b2{width:60vw;height:60vw;right:-15vw;top:15vh;background:radial-gradient(circle,var(--bd-peach) 0%,rgba(243,220,203,0) 70%)}.bg .b3{width:65vw;height:65vw;left:15vw;bottom:-25vh;background:radial-gradient(circle,var(--bd-sage) 0%,rgba(227,233,223,0) 70%)}.bg img{position:absolute;inset:-4%;width:108%;height:108%;object-fit:cover;filter:blur(16px);transform:translateZ(0);contain:strict;display:none}.bg.has-photo img{display:block}.bg.has-photo .blob{display:none}.bg.has-photo:after{content:"";position:absolute;inset:0;background:#fffaf540}:root[data-theme=dark] .bg.has-photo:after{background:#14100c73}.card,.tile,.glass{background:var(--glass);border:1px solid var(--glass-border);box-shadow:0 0 0 1px var(--glass-edge)}.card{border-radius:var(--r-card);padding:var(--pad);box-shadow:0 0 0 1px var(--glass-edge),var(--glass-shadow)}.tile{border-radius:var(--r-tile);padding:14px 16px;background:var(--glass-inner)}.tile.dashed{border-style:dashed;background:transparent}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}.card-head h2,.card-head h3{flex:1;min-width:0}.card-head .muted{font-size:12px}.card-sub{color:var(--muted);font-size:12px;margin-top:-8px;margin-bottom:12px}.shell{min-height:100vh;display:flex;flex-direction:column}.main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:12px var(--gutter) calc(var(--tab-h) + 40px + env(safe-area-inset-bottom))}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.stack{display:flex;flex-direction:column;gap:16px}.stack.tight{gap:10px}.grid-2{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}@media(min-width:900px){.grid-2{grid-template-columns:1fr 1fr}}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row.between{justify-content:space-between}.row.nowrap{flex-wrap:nowrap}.spacer{flex:1}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:8px 0 18px;flex-wrap:wrap}.page-head .titles{flex:1;min-width:0}.page-head .subtitle{color:var(--muted);font-size:13px;margin-top:4px}.page-head .actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sep-top{border-top:1px solid var(--sep)}.topnav{position:sticky;top:0;z-index:30;padding:calc(10px + env(safe-area-inset-top)) var(--gutter) 10px;display:flex;align-items:center;justify-content:space-between;gap:12px}.topnav .brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:14px;padding:0 14px 0 10px;height:40px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);box-shadow:var(--glass-shadow)}.topnav .brand svg{width:18px;height:18px}.topnav .tabs{display:none}.topnav .right{display:flex;align-items:center;gap:8px}.pillchip{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 14px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);font-size:13px;color:var(--muted);white-space:nowrap;box-shadow:var(--glass-shadow)}.avatar{width:40px;height:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;background:var(--glass-strong);border:1px solid var(--glass-border);color:var(--ink);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);box-shadow:var(--glass-shadow)}@media(min-width:900px){.topnav{padding-top:16px;padding-bottom:8px}.topnav .tabs{display:inline-flex;gap:2px;padding:4px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);box-shadow:var(--glass-shadow)}.topnav .tabs a{display:inline-flex;align-items:center;height:34px;padding:0 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--muted);transition:background-color .12s,color .12s}.topnav .tabs a:hover{color:var(--ink);text-decoration:none}.topnav .tabs a.active{background:var(--accent);color:var(--accent-text)}.tabbar{display:none}.main{padding-bottom:48px;padding-top:8px}}.tabbar{position:fixed;left:16px;right:16px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:30;height:var(--tab-h);border-radius:999px;padding:6px;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--glass-strong);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);box-shadow:0 16px 40px #32231438}.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:999px;font-size:11px;font-weight:600;color:var(--muted);min-height:44px;transition:background-color .12s,color .12s}.tabbar a svg{width:20px;height:20px}.tabbar a.active{background:var(--accent);color:var(--accent-text)}.tabbar a:hover{text-decoration:none}@media(min-width:900px){.tabbar{display:none}}button,.btn{font:inherit;font-weight:600;font-size:14px;cursor:pointer;white-space:nowrap;border:1px solid var(--glass-border);background:var(--glass-strong);color:var(--ink);border-radius:999px;padding:0 16px;min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;transition:background-color .12s,color .12s,opacity .12s;touch-action:manipulation}a{touch-action:manipulation}button:hover,.btn:hover{text-decoration:none;background:#ffffffe6}:root[data-theme=dark] button:hover,:root[data-theme=dark] .btn:hover{background:#3c3834f2}button:active{background:#fff}:root[data-theme=dark] button:active{background:#46423e}button.primary:active,.btn.primary:active{background:var(--accent);opacity:.85}button:disabled{opacity:.45;cursor:default}button:focus-visible,.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.btn-primary,button.primary,.btn.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);box-shadow:0 6px 16px #1c1a172e}.btn-primary:hover,button.primary:hover,.btn.primary:hover{background:var(--accent);opacity:.92}button.danger{color:var(--danger)}button.ghost{border-color:transparent;background:transparent;box-shadow:none}button.ghost:hover{background:var(--glass-inner)}button.sm,.btn.sm{min-height:34px;padding:0 12px;font-size:13px}button.icon{width:44px;min-height:44px;padding:0;border-radius:50%}button.icon.sm{width:36px;min-height:36px}button.icon svg,button svg{width:18px;height:18px;flex-shrink:0}button.link{border:none;background:none;color:var(--ink);padding:0 2px;min-height:40px;font-size:13px;font-weight:600;text-decoration:underline;text-decoration-color:var(--faint);text-underline-offset:3px}button.link:active{background:none}button.link:hover{background:none;text-decoration-color:var(--ink)}button.link.danger{color:var(--danger)}.chips{display:flex;gap:8px;flex-wrap:wrap}.chips.scroll{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.chips.scroll::-webkit-scrollbar{display:none}.chip{border:1px solid var(--glass-border);background:var(--glass-strong);border-radius:999px;padding:0 12px;min-height:32px;font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap}.chip.big{min-height:44px;padding:0 16px;color:var(--ink)}.chip.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.seg{display:inline-flex;padding:3px;gap:2px;border:1px solid var(--glass-border);background:var(--glass-strong);border-radius:999px}.seg button{border:none;background:transparent;min-height:32px;padding:0 12px;font-size:13px;color:var(--muted);border-radius:999px}.seg button.on{background:var(--accent);color:var(--accent-text)}input,select,textarea{font:inherit;color:var(--ink);background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--r-input);padding:10px 12px;min-height:44px;width:100%;transition:border-color .12s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ring);box-shadow:0 0 0 2px var(--ring)}input::placeholder,textarea::placeholder{color:var(--faint)}textarea{min-height:90px;resize:vertical}select{appearance:none;-webkit-appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%236b655d' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}input[type=checkbox]{appearance:none;-webkit-appearance:none;width:22px;height:22px;min-height:0;margin:0;padding:0;border-radius:7px;border:1.5px solid var(--border);background:var(--glass-strong);display:inline-grid;place-content:center;flex-shrink:0;cursor:pointer}input[type=checkbox]:before{content:"";width:12px;height:12px;opacity:0;background:var(--accent-text);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:before{opacity:1}input[type=number]{-moz-appearance:textfield}input[type=date]{min-width:0}label.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}label.field>span{font-weight:600}label.check{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;font-size:14px;color:var(--ink)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .full{grid-column:1 / -1}@media(min-width:700px){.form-grid{grid-template-columns:repeat(3,1fr)}}.form-grid.cols-2{grid-template-columns:1fr 1fr}.field-row{display:flex;gap:8px;align-items:center}.inline-input{width:90px;text-align:right}.search{position:relative}.search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--faint);pointer-events:none}.search input{padding-left:40px;border-radius:999px}.bar{height:6px;background:var(--track);border-radius:999px;overflow:hidden}.bar>span{display:block;height:100%;background:var(--accent);border-radius:999px}.bar.protein>span{background:var(--accent)}.bar.ok>span{background:var(--positive)}.bar.over>span{background:var(--warn)}.bar.thin{height:4px}.bar.thick{height:8px}.bar-row{display:flex;align-items:center;gap:10px}.bar-row .bar{flex:1}.bar-row .pct{font-size:12px;color:var(--muted);min-width:34px;text-align:right;font-weight:600}.stat{display:flex;flex-direction:column;gap:2px;min-width:0}.stat .big{font-size:28px;font-weight:600;line-height:1.1;letter-spacing:-.01em}.stat .big small{font-size:13px;font-weight:500;color:var(--muted);letter-spacing:0}.stat>.muted{font-size:12px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(min-width:600px){.stats{grid-template-columns:repeat(4,1fr)}}.stat-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(min-width:900px){.stat-row{grid-template-columns:repeat(4,1fr);gap:16px}}.stat-tile{display:flex;flex-direction:column;gap:6px;min-width:0}.stat-tile .label{font-size:12px;color:var(--muted);font-weight:600}.stat-tile .value{font-size:28px;font-weight:600;line-height:1.1;letter-spacing:-.01em;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.stat-tile .value small{font-size:13px;color:var(--muted);font-weight:500}.stat-tile .value.pos{color:var(--positive)}.stat-tile .value.warn{color:var(--warn)}.stat-tile .sub{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px}.stat-tile .sub svg{width:14px;height:14px}.stat-tile .sub.pos{color:var(--positive);font-weight:600}@media(min-width:900px){.stat-tile .value{font-size:32px}}.tag{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--glass-inner);border:1px solid var(--glass-border);color:var(--muted);margin-right:4px}.tag.accent{color:var(--ink)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:3px 10px;border-radius:999px;background:var(--glass-inner);border:1px solid var(--glass-border);color:var(--ink);font-weight:600;white-space:nowrap}.badge svg{width:14px;height:14px}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.badge.good{background:var(--positive-soft);color:var(--positive);border-color:transparent}.badge.dark{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.badge.brand{background:var(--brand);color:#fff;border-color:transparent}.list{display:flex;flex-direction:column}.list>.item{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--sep);white-space:normal}.list>.item:first-child{border-top:none;padding-top:0}.list>.item:last-child{padding-bottom:0}.item .grow{flex:1;min-width:0}.item .title{font-weight:600}.item .sub{font-size:12px;color:var(--muted);margin-top:2px}.item.done .title{text-decoration:line-through;color:var(--muted)}.menu-list{display:flex;flex-direction:column}.menu-link{display:flex;align-items:center;gap:14px;padding:14px 4px;border-top:1px solid var(--sep);color:var(--ink);min-height:64px}.menu-link:first-child{border-top:none}.menu-link:hover{text-decoration:none}.menu-link .ico{width:40px;height:40px;border-radius:50%;background:var(--glass-inner);border:1px solid var(--glass-border);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.menu-link .ico svg{width:20px;height:20px}.menu-link .grow{flex:1;min-width:0;display:flex;flex-direction:column}.menu-link .title{font-weight:600}.menu-link .sub{font-size:12px;color:var(--muted)}.chev{color:var(--faint);display:inline-flex}.chev svg{width:18px;height:18px}.step-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.step-head h2{flex:1;min-width:0}.stepnum{width:26px;height:26px;border-radius:50%;background:var(--accent);color:var(--accent-text);font-weight:700;display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0}.meal-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid var(--sep)}.meal-row:first-of-type{border-top:none;padding-top:0}.meal-row .grow{flex:1;min-width:0}.meal-row .name{font-weight:600;font-size:15px;line-height:1.3}.meal-row .name a:hover{text-decoration:underline}.meal-row.eaten .name{text-decoration:line-through;color:var(--muted);font-weight:500}.meal-row .sub{font-size:12px;color:var(--muted);margin-top:2px}.slot-label{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:600;color:var(--muted);margin-top:14px}.slot-label:first-child{margin-top:0}.quick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.quick{border-radius:var(--r-tile);padding:12px 12px 10px;display:flex;flex-direction:column;gap:8px;background:var(--glass-inner);border:1px solid var(--glass-border)}.quick .name{font-weight:600;font-size:13px;display:flex;gap:6px;align-items:center;min-height:20px}.quick .ctrl{display:flex;align-items:center;justify-content:space-between;gap:6px}.quick .ctrl button.icon{width:36px;min-height:36px}.quick .count{font-size:20px;font-weight:600;min-width:24px;text-align:center}.quick.has{box-shadow:inset 0 0 0 1.5px var(--ink)}.quick small{font-size:11px}.habit{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--sep)}.habit:first-child{border-top:none;padding-top:0}.habit .check{width:40px;height:40px;min-height:40px;border-radius:50%;border:1.5px solid var(--border);display:inline-flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;background:var(--glass-inner);padding:0;box-shadow:none}.habit .check.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.habit .check svg{width:18px;height:18px}.habit .grow{flex:1;min-width:0}.habit .hname{font-weight:600}.streak{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;color:var(--brand)}.streak svg{width:14px;height:14px}.photo-block{margin-top:12px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.photo-thumb{height:96px;width:72px;object-fit:cover;border-radius:14px;border:1px solid var(--glass-border);background:var(--glass-inner);cursor:pointer}.pots{display:grid;grid-template-columns:1fr;gap:10px}@media(min-width:700px){.pots.two{grid-template-columns:1fr 1fr}}.pot{border:1px solid var(--glass-border);border-radius:var(--r-tile);background:var(--glass-inner);overflow:hidden}.pot.empty{border-style:dashed;background:transparent}.pot-when{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:10px 14px 0}.pot-main{display:flex;flex-direction:row;align-items:center;gap:12px;width:100%;text-align:left;border:none;border-radius:0;background:transparent;padding:14px;min-height:64px;white-space:normal;position:relative;box-shadow:none}.pot-main .pot-text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.pot-main:hover{background:#ffffff59}.pot-name{font-weight:600;font-size:15px;line-height:1.3;padding-right:70px}.pot-sub{font-size:12px;color:var(--muted);font-weight:400}.pot-change{position:absolute;right:14px;top:14px;color:var(--ink);font-weight:600;font-size:12px;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--faint)}.pot-foot{display:flex;align-items:center;gap:8px;padding:8px 14px 12px;border-top:1px solid var(--sep);font-size:12px}.pot-pick{display:flex;gap:8px;padding:14px;flex-wrap:wrap}.pick-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:none;border-top:1px solid var(--sep);border-radius:0;background:transparent;padding:10px 2px;min-height:56px;white-space:normal;box-shadow:none;font-weight:400}.pick-row:first-child{border-top:none}.pick-row:hover{background:var(--glass-inner)}.pick-row .grow{flex:1;min-width:0}.pick-row .title{font-weight:600;display:block}.pick-row .sub{font-size:12px;color:var(--muted);display:block}.pick-go{font-weight:600;font-size:12px;padding:6px 12px;border-radius:999px;background:var(--accent);color:var(--accent-text)}.dayrow{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:none;border-top:1px solid var(--sep);border-radius:0;background:transparent;padding:10px 2px;min-height:52px;white-space:normal;font-size:13px;font-weight:400;box-shadow:none}.dayrow:first-child{border-top:none}.dayrow:hover{background:var(--glass-inner)}.dayrow .dot{width:9px;height:9px;border-radius:50%;background:var(--track);flex-shrink:0}.dayrow .dot.ok{background:var(--positive)}.dayrow .dot.warn{background:var(--warn)}.dayrow .dayname{width:52px;font-weight:600;flex-shrink:0}.dayrow .grow{flex:1;min-width:0}.dayrow .hint{color:var(--warn);font-weight:600}.dots-wrap{position:relative}.dots-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--glass-strong);border:1px solid var(--glass-border);border-radius:16px;box-shadow:0 0 0 1px var(--glass-edge),var(--glass-shadow);padding:6px;display:flex;flex-direction:column;min-width:200px;z-index:40}.dots-menu button{border:none;background:transparent;justify-content:flex-start;border-radius:10px;box-shadow:none}.dots-menu button:hover{background:var(--glass-inner)}.grocery-item{display:flex;align-items:center;gap:12px;min-height:44px;padding:6px 0;border-top:1px solid var(--sep);cursor:pointer}.grocery-item:first-of-type{border-top:none}.grocery-item.checked span.txt{text-decoration:line-through;color:var(--muted)}.grocery-item .txt{flex:1}.grocery-item .from{font-size:11px;color:var(--faint)}.aisle{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 4px}.recipe-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(min-width:700px){.recipe-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:1100px){.recipe-grid{grid-template-columns:repeat(4,1fr);gap:16px}}.recipe-card-wrap{position:relative}.recipe-card-wrap>.fav{position:absolute;right:10px;top:10px;z-index:1;width:36px;min-height:36px;background:#ffffffd1;border:1px solid var(--glass-border)}:root[data-theme=dark] .recipe-card-wrap>.fav{background:#282522d9}.recipe-card{display:flex;flex-direction:column;gap:8px;padding:0 14px 14px;border-radius:var(--r-card);background:var(--glass);border:1px solid var(--glass-border);box-shadow:0 0 0 1px var(--glass-edge),var(--glass-shadow);cursor:pointer;text-align:left;min-height:150px;height:100%;color:inherit;overflow:hidden;transition:background-color .12s}.recipe-card:hover{text-decoration:none;background:var(--glass-strong)}.recipe-card .rc-img{aspect-ratio:4 / 3;width:calc(100% + 28px);margin:0 -14px 6px;object-fit:cover;display:block;background:var(--glass-inner)}.recipe-card .rc-ph{aspect-ratio:4 / 3;width:calc(100% + 28px);margin:0 -14px 6px;display:flex;align-items:center;justify-content:center;color:var(--faint);background:linear-gradient(135deg,#f3dccb8c,#e3e9df8c)}:root[data-theme=dark] .recipe-card .rc-ph{background:linear-gradient(135deg,#3a2c2299,#242a2499)}.recipe-card .rc-ph svg{width:34px;height:34px;opacity:.6}.recipe-card .name{font-weight:600;font-size:14px;line-height:1.3;padding-right:8px}@media(min-width:700px){.recipe-card .name{font-size:15px}}.recipe-card .meta{font-size:12px;color:var(--muted);display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}.recipe-card .meta .n{font-weight:600;color:var(--ink)}.recipe-card .tags{display:flex;flex-wrap:wrap;gap:4px}.ingredient{display:flex;gap:8px;padding:6px 0;border-top:1px solid var(--sep)}.ingredient:first-child{border-top:none}.ingredient .qty{width:90px;flex-shrink:0;color:var(--muted)}.ing-row{display:grid;grid-template-columns:1fr 70px 90px;gap:6px;align-items:center;margin-bottom:6px}.ing-row-2{display:grid;grid-template-columns:1fr auto auto;gap:6px;align-items:center;margin-bottom:10px}.slot-row{display:grid;grid-template-columns:1fr 108px 96px;gap:6px;align-items:center;margin-bottom:6px}.slot-row-2{display:flex;gap:6px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.slot-tile{border-radius:var(--r-tile);background:var(--glass-inner);border:1px solid var(--glass-border);padding:12px 14px;margin-bottom:10px}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:600;text-align:right}.steps li{margin-bottom:10px}.cook-mode{font-size:16px}.cook-mode .muted{font-size:14px}.checklist{list-style:none;padding:0;margin:0}.checklist li{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--sep);cursor:pointer;min-height:48px}.checklist li:first-child{border-top:none}.checklist li input{margin-top:2px}.checklist li.done span{text-decoration:line-through;color:var(--muted)}.checklist li .num{font-weight:700;min-width:1.6em}.ing-line{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--sep);min-height:48px}.ing-line:first-child{border-top:none}.ing-line .grow{flex:1;min-width:0}.ing-line .per{font-size:12px;color:var(--muted);display:block}.ing-line.skipped .txt{text-decoration:line-through;color:var(--muted)}.cook-mode .ing-line .per{font-size:13px}.unknown-note{background:var(--warn-soft);border-radius:12px;padding:10px 12px;font-size:13px}.preview-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;text-align:center}.preview-stats b{display:block;font-size:16px}.preview-stats span{font-size:11px;color:var(--muted)}button.fav{padding:0;border:none;background:transparent;line-height:1;color:var(--faint);border-radius:50%;flex-shrink:0;box-shadow:none}button.fav svg{width:20px;height:20px}button.fav:hover{background:var(--glass-inner)}button.fav.on{color:var(--brand)}.ex-table{width:100%;border-collapse:collapse;font-size:13px}.ex-table th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding:4px 4px 6px}.ex-table th.n{text-align:right}.ex-table td{padding:8px 4px;border-top:1px solid var(--sep);vertical-align:top}.ex-table td.n{white-space:nowrap;color:var(--muted);text-align:right;font-weight:600}.ex-more{font-size:12px;color:var(--muted);margin-top:2px}.ex-more summary{cursor:pointer}.ex-more b{color:var(--ink);font-weight:600}.pday{position:relative}.pday.today{box-shadow:inset 0 3px 0 var(--brand),var(--glass-shadow)}.pday .dhead{cursor:pointer;display:flex;align-items:center;gap:10px}.pday .dhead h3{flex:1;min-width:0}.day-grid{display:grid;grid-template-columns:1fr;gap:12px;align-items:start}@media(min-width:700px){.day-grid{grid-template-columns:1fr 1fr}}@media(min-width:1100px){.day-grid{grid-template-columns:repeat(3,1fr)}}.habit-grid{display:flex;gap:3px;flex-wrap:wrap}.habit-grid span{width:10px;height:10px;border-radius:3px;background:var(--track)}.habit-grid span.on{background:var(--positive)}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:520px}.photo-pair figure{margin:0;display:flex;flex-direction:column;gap:6px}.photo-pair img{width:100%;aspect-ratio:3 / 4;object-fit:cover;border-radius:var(--r-tile);border:1px solid var(--glass-border);background:var(--glass-inner);cursor:pointer}.photo-pair figcaption{font-size:12px;color:var(--muted)}.photo-pair figcaption b{color:var(--ink)}.photo-strip{display:flex;gap:6px;overflow-x:auto;padding:4px 0 6px;scroll-snap-type:x proximity;scrollbar-width:none}.photo-strip::-webkit-scrollbar{display:none}.photo-strip button{flex:0 0 auto;padding:0;border:none;background:none;min-height:0;border-radius:10px;scroll-snap-align:end;box-shadow:none}.photo-strip img{height:72px;width:54px;object-fit:cover;border-radius:10px;border:1px solid var(--glass-border);display:block;background:var(--glass-inner)}.photo-strip button:focus-visible img{outline:2px solid var(--ring)}.photo-empty{width:100%;aspect-ratio:3 / 4;border:1px dashed var(--border);border-radius:var(--r-tile);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;text-align:center;padding:8px}.viewer{position:fixed;inset:0;background:#0c0a08f0;z-index:60;display:flex;flex-direction:column;color:#fff}.viewer-top,.viewer-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px}.viewer-bottom{padding:10px 14px calc(12px + env(safe-area-inset-bottom))}.viewer-cap{font-weight:600}.viewer-cap .muted{color:#bbb}.viewer-img{flex:1;min-height:0;width:100%;object-fit:contain}.viewer-btn{background:#ffffff1f;border-color:#fff3;color:#fff}.viewer-btn:hover{background:#fff3}.viewer-btn.danger{color:#ff9b9b}.legend{display:flex;flex-direction:column;gap:8px;font-size:13px}.legend .lrow{display:flex;align-items:center;gap:8px}.legend .ldot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.legend .lname{flex:1;color:var(--muted)}.legend .lval{font-weight:600}.donut-wrap{display:grid;grid-template-columns:150px minmax(0,1fr);gap:20px;align-items:center;max-width:460px}.donut-center{font-size:22px;font-weight:600;fill:var(--ink)}.donut-centersub{font-size:11px;fill:var(--muted)}details.table>summary{cursor:pointer;min-height:36px;display:flex;align-items:center;color:var(--muted);font-size:13px}table.data{width:100%;font-size:13px;border-collapse:collapse}table.data th{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:4px}table.data td{padding:6px 4px;border-top:1px solid var(--sep)}.r{text-align:right}.toast-wrap{position:fixed;left:50%;bottom:calc(var(--tab-h) + 24px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:100;display:flex;flex-direction:column;gap:8px;width:min(92vw,420px);align-items:center}@media(min-width:900px){.toast-wrap{bottom:24px}}.toast{background:#1c1a17;color:#fff;padding:10px 14px 10px 18px;border-radius:999px;box-shadow:0 12px 32px #0000004d;display:flex;align-items:center;gap:10px;font-weight:600;font-size:13px;max-width:100%}.toast.error{background:var(--danger)}.toast button{color:inherit;background:transparent;border-color:transparent;min-height:32px;width:32px;padding:0;border-radius:50%;box-shadow:none}.toast button svg{width:16px;height:16px}.modal-back{position:fixed;inset:0;background:#1c1a1759;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:50;display:flex;align-items:flex-end;justify-content:center}@media(min-width:600px){.modal-back{align-items:center;padding:20px}}.modal{background:var(--glass-strong);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:24px 24px 0 0;padding:10px var(--gutter) calc(16px + env(safe-area-inset-bottom));box-shadow:0 -10px 40px #32231440}.modal .grab{width:40px;height:5px;border-radius:999px;background:var(--track);margin:0 auto 12px}@media(min-width:600px){.modal{border-radius:24px;padding:20px 24px 24px;box-shadow:var(--glass-shadow)}.modal .grab{display:none}}.modal h2{font-size:17px}.banner{background:var(--glass);border:1px solid var(--glass-border);color:var(--ink);padding:12px 16px;border-radius:var(--r-tile);margin-bottom:4px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.empty{text-align:center;padding:28px 12px;color:var(--muted)}.empty h3{color:var(--ink);margin-bottom:6px}.loading{color:var(--muted);padding:24px 0;text-align:center}.date-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}.date-nav .label{flex:1;text-align:center;font-weight:600}.date-nav .label small{display:block;font-weight:400;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.wrap{overflow-wrap:anywhere}pre.plain{white-space:pre-wrap;font:inherit;margin:0}.faded{opacity:.7}.chart{width:100%;height:auto;display:block}.progress-big{height:8px}.spin{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid var(--track);border-top-color:var(--ink);vertical-align:-2px;margin-right:6px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.logbox{margin:12px 0 0;padding:12px 14px;border-radius:var(--r-tile);background:var(--glass-inner);border:1px solid var(--glass-border);font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink);max-height:180px;overflow:auto}.thumb{width:44px;height:44px;border-radius:12px;object-fit:cover;flex-shrink:0;background:var(--glass-inner);border:1px solid var(--glass-border)}.thumb.sm{width:40px;height:40px;border-radius:10px}.cover{width:100%;aspect-ratio:16 / 10;object-fit:cover;border-radius:var(--r-tile);display:block;background:var(--glass-inner);border:1px solid var(--glass-border)}.cover-wrap{margin-bottom:14px}.photo-strip .r-thumb{height:64px;width:84px;object-fit:cover;border-radius:10px;border:1px solid var(--glass-border);display:block;background:var(--glass-inner)}.photo-strip .r-thumb.is-cover{outline:2px solid var(--ink);outline-offset:1px}.photo-strip .r-item{position:relative;flex:0 0 auto}.photo-strip .r-item .del{position:absolute;right:-4px;top:-4px;width:24px;min-height:24px;padding:0;border-radius:50%;background:var(--glass-strong);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.photo-strip .r-item .del svg{width:12px;height:12px}.cook-item{display:flex;align-items:center;gap:12px}.cook-item .rc-mini{width:56px;height:42px;border-radius:10px;object-fit:cover;flex-shrink:0;background:var(--glass-inner);border:1px solid var(--glass-border)}.cook-item .rc-mini.ph{display:flex;align-items:center;justify-content:center;color:var(--faint)}.cook-item .rc-mini.ph svg{width:20px;height:20px}.login{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:calc(24px + env(safe-area-inset-top)) var(--gutter) 40px}.login .brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:14px;padding:0 14px 0 10px;height:40px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--glass-border);box-shadow:0 0 0 1px var(--glass-edge),var(--glass-shadow)}.login .brand svg{width:18px;height:18px}.login-card{width:100%;max-width:400px}.login-error{margin-top:12px;color:var(--danger);font-weight:600;font-size:13px}
