:root{--ground:#f2f0ea;--ground-2:#e2e4dd;--surface:#fbfaf7;--ink:#24211d;--ink-2:#55504a;--ink-3:#69635b;--line:#dcd7cc;--warp:#24211d29;--birch:#e5ab34;--lichen:#6fa05a;--lichen-ink:#3f7a3a;--madder:#d0613f;--indigo:#3c6fa3;--heather:#a86c9e;--moss:#2e5e47;--moss-ink:#f1f4ec;--radius:14px;--display:"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--ui:"Hanken Grotesk", ui-sans-serif, system-ui, sans-serif;--tabbar:calc(70px + env(safe-area-inset-bottom));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;margin:0}html{background:var(--ground-2);-webkit-tap-highlight-color:transparent}body{font-family:var(--ui);color:var(--ink);background:var(--ground-2);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;font-size:15px;line-height:1.45}::selection{background:var(--birch);color:var(--ink)}:focus-visible{outline:2px solid var(--indigo);outline-offset:2px;border-radius:6px}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}input{font:inherit;color:inherit}.num{font-variant-numeric:tabular-nums}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{background:var(--ground);max-width:480px;min-height:100dvh;margin:0 auto;position:relative}@media (width>=520px){.app{box-shadow:0 0 0 1px var(--line), 0 30px 60px -40px #24211d66}}.screen{padding:calc(20px + env(safe-area-inset-top)) 20px calc(var(--tabbar) + 32px)}.date{color:var(--ink-2);font-size:13px}.h-day{font-family:var(--display);letter-spacing:-.03em;margin:2px 0 18px;font-size:30px;font-weight:700;line-height:1.05}.tabs{z-index:20;width:100%;max-width:480px;height:var(--tabbar);padding:8px 18px env(safe-area-inset-bottom);background:var(--moss);color:var(--moss-ink);grid-template-columns:repeat(5,1fr);align-items:center;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{opacity:.8;flex-direction:column;align-items:center;gap:3px;font-size:11px;transition:opacity .2s;display:flex}.tab[aria-current=page]{opacity:1;font-weight:600}.tab svg{width:22px;height:22px}.cam{background:var(--surface);width:56px;height:56px;color:var(--moss);box-shadow:inset 0 0 0 2px #2e5e4729, 0 0 0 5px var(--moss), 0 8px 18px -6px #00000073;border-radius:50%;place-items:center;margin:-30px auto 0;transition:transform .15s;display:grid}.cam:active{transform:scale(.95)}.cam svg{width:26px;height:26px}.weave{background:repeating-linear-gradient(90deg, var(--warp) 0 1px, transparent 1px 5px), var(--surface);border-radius:6px;height:84px;display:flex;position:relative;overflow:hidden}.band{background:repeating-linear-gradient(90deg, #00000012 0 1px, transparent 1px 5px), repeating-linear-gradient(0deg, #ffffff24 0 2px, #0000000f 2px 3px, transparent 3px 4px), var(--c);flex:none;height:100%;transition:width .5s cubic-bezier(.16,1,.3,1)}.band+.band{box-shadow:-1px 0 #24211d40}.band.pending{opacity:.6}.weave.animate .band{animation:1.1s cubic-bezier(.16,1,.3,1) both weave-in;animation-delay:calc(var(--i) * .12s)}@keyframes weave-in{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}.selvage{color:var(--ink-3);justify-content:space-between;margin-top:6px;font-size:11px;display:flex}.tally{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.tally .big{font-family:var(--display);letter-spacing:-.03em;font-size:40px;font-weight:600;line-height:1}.tally .big small{font-family:var(--ui);color:var(--ink-2);letter-spacing:0;margin-left:4px;font-size:14px;font-weight:500}.tally .left{text-align:right;color:var(--ink-2);font-size:13px}.tally .left b{color:var(--ink);font-size:17px;font-weight:600;display:block}.threads{grid-template-columns:repeat(3,1fr);gap:14px;margin:20px 0 26px;display:grid}.thread .lbl{color:var(--ink-2);justify-content:space-between;font-size:12px;display:flex}.thread .lbl b{color:var(--ink);font-weight:600}.thread .track{background:var(--ground-2);border-radius:2px;height:4px;margin-top:6px;overflow:hidden}.thread .track span{background:var(--ink-2);border-radius:2px;height:100%;transition:width .5s;display:block}.meal{border-top:1px solid var(--line);padding:14px 0}.meal-h{align-items:center;gap:10px;display:flex}.chip{background:repeating-linear-gradient(0deg, #ffffff2e 0 2px, #0000001f 2px 3px, transparent 3px 4px), var(--c);border-radius:3px;flex:none;width:14px;height:14px}.meal-h h3{flex:1;font-size:15px;font-weight:600}.meal-h .k{color:var(--ink-2);font-size:14px}.meal.empty .meal-h h3{color:var(--ink-2);font-weight:500}.meal.empty .chip{opacity:.35}.items{padding:6px 0 0 24px;list-style:none}.item{color:var(--ink-2);align-items:center;gap:8px;padding:3px 0;font-size:14px;display:flex}.item .name{flex:1;min-width:0}.item .name small{color:var(--ink-3);margin-left:6px}.item .kc{color:var(--ink-3)}.item .rm{width:28px;height:28px;color:var(--ink-3);border-radius:8px;place-items:center;margin-right:-6px;display:grid}.item .rm:hover{background:var(--ground-2);color:var(--ink)}.item .rm svg{width:15px;height:15px}.add{color:var(--ink-2);align-items:center;gap:6px;padding:6px 0 0 24px;font-size:14px;display:flex}.add:hover{color:var(--ink)}.add svg{width:16px;height:16px}.hint{color:var(--ink-2);background:var(--surface);border-radius:var(--radius);margin-bottom:18px;padding:14px 16px;font-size:14px;line-height:1.5}.layer{z-index:40;background:var(--ground);flex-direction:column;max-width:480px;margin:0 auto;animation:.35s cubic-bezier(.16,1,.3,1) layer-in;display:flex;position:fixed;inset:0}@keyframes layer-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.round{-webkit-backdrop-filter:blur(8px);color:#f3f0e9;background:#f3f0e929;border-radius:50%;place-items:center;width:40px;height:40px;display:grid}.round svg{width:20px;height:20px}.scan{color:#f3f0e9;background:#1a1c18}.scan video,.scan .still{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.scan .shade{pointer-events:none;background:linear-gradient(#14110e8c,#0000 26% 58%,#14110ed9);position:absolute;inset:0}.scan-top{z-index:2;padding:calc(12px + env(safe-area-inset-top)) 20px 0;justify-content:space-between;align-items:center;display:flex;position:relative}.scan-top .title{font-size:14px;font-weight:600}.frame{z-index:2;pointer-events:none;height:36%;position:absolute;top:24%;left:12%;right:12%}.frame i{border:2.5px solid #f3f0e9;border-radius:4px;width:30px;height:30px;position:absolute}.frame i:first-child{border-bottom:0;border-right:0;top:0;left:0}.frame i:nth-child(2){border-bottom:0;border-left:0;top:0;right:0}.frame i:nth-child(3){border-top:0;border-right:0;bottom:0;left:0}.frame i:nth-child(4){border-top:0;border-left:0;bottom:0;right:0}.scan-mid{z-index:3;text-align:center;place-items:center;padding:0 32px;display:grid;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.pill{background:var(--surface);color:var(--ink);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:8px 14px 8px 10px;font-size:13px;font-weight:600;display:inline-flex;box-shadow:0 8px 20px -8px #00000080}.pill svg{width:18px;height:18px}.search-field input::-webkit-search-cancel-button{-webkit-appearance:none}.pill .dot{background:var(--lichen);border-radius:50%;width:8px;height:8px;animation:1.6s ease-in-out infinite breathe;box-shadow:0 0 0 4px #6fa05a4d}@keyframes breathe{50%{box-shadow:0 0 0 7px #6fa05a1f}}.nocam{opacity:.9;justify-items:center;gap:14px;max-width:30ch;font-size:14px;display:grid}.scan-bottom{z-index:2;padding:0 24px calc(28px + env(safe-area-inset-bottom));text-align:center;position:absolute;bottom:0;left:0;right:0}.scan-bottom p{opacity:.85;margin-bottom:18px;font-size:13px}.shutter-row{justify-content:space-between;align-items:center;padding:0 12px;display:flex}.shutter{border:4px solid #f3f0e9;border-radius:50%;place-items:center;width:74px;height:74px;display:grid}.shutter span{background:#f3f0e9;border-radius:50%;width:58px;height:58px;transition:transform .15s}.shutter:active span{transform:scale(.9)}.shutter:disabled{opacity:.5}.photo{background:var(--ground-2) center/cover;flex:none;height:34vh;min-height:180px;max-height:280px;position:relative}.photo .round{left:16px;top:calc(14px + env(safe-area-inset-top));background:#24211d59;position:absolute}.sheet{background:var(--ground);padding:22px 20px calc(20px + env(safe-area-inset-bottom));flex-direction:column;flex:1;display:flex;position:relative;overflow:auto}.photo+.sheet{border-radius:22px 22px 0 0;margin-top:-22px}.sheet-top{align-items:center;gap:10px;margin-bottom:8px;display:flex}.sheet-top .round{background:var(--ground-2);color:var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none}.guess{color:var(--ink-2);align-items:center;gap:6px;font-size:12px;display:flex}.guess .dot{background:var(--lichen);border-radius:50%;width:7px;height:7px}.sheet h2{font-family:var(--display);letter-spacing:-.03em;margin:6px 0 4px;font-size:26px;font-weight:700;line-height:1.05}.alt{color:var(--ink-2);font-size:13px}.link{color:var(--ink);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line)}.chips{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.chips button{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px}.label{color:var(--ink-2);justify-content:space-between;margin:22px 0 8px;font-size:12px;font-weight:600;display:flex}.label span{font-weight:500}.sizes{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.size{background:var(--surface);text-align:center;text-wrap:balance;border:1.5px solid #0000;border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:12px 6px 10px;font-size:13px;line-height:1.25;transition:border-color .2s,background .2s;display:flex}.size small{color:var(--ink-3);font-size:11px}.size svg{width:auto;height:30px;color:var(--ink-2)}.size[aria-pressed=true]{border-color:var(--ink);background:#fff}.size[aria-pressed=true] svg{color:var(--ink)}.slider{appearance:none;background:0 0;width:100%;height:28px;margin-top:6px}.slider::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--ink-2) var(--p,50%), var(--ground-2) var(--p,50%));border-radius:3px;height:6px}.slider::-moz-range-track{background:var(--ground-2);border-radius:3px;height:6px}.slider::-moz-range-progress{background:var(--ink-2);border-radius:3px;height:6px}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--surface);border:2px solid var(--ink);border-radius:50%;width:24px;height:24px;margin-top:-9px;box-shadow:0 2px 6px #24211d33}.slider::-moz-range-thumb{background:var(--surface);border:2px solid var(--ink);border-radius:50%;width:20px;height:20px}.seg{background:var(--ground-2);border-radius:10px;grid-auto-columns:1fr;grid-auto-flow:column;padding:3px;display:grid}.seg button{color:var(--ink-2);border-radius:8px;padding:8px 0;font-size:12.5px}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 3px #24211d26}.nutr{background:var(--surface);border-radius:12px;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:4px;margin-top:22px;padding:12px 14px;display:grid}.nutr div{color:var(--ink-2);font-size:11px}.nutr b{color:var(--ink);font-size:17px;font-weight:600;display:block}.nutr div:first-child b{font-family:var(--display);letter-spacing:-.02em;font-size:22px}.preview{color:var(--ink-2);margin-top:14px;font-size:12px}.preview .weave{border-radius:3px;height:16px;margin-top:6px}.cta{margin-top:auto;padding-top:18px}.btn{background:var(--moss);width:100%;height:52px;color:var(--moss-ink);border-radius:14px;justify-content:center;align-items:center;gap:8px;font-size:15px;font-weight:600;transition:transform .15s;display:flex}.btn:active{transform:scale(.98)}.btn svg{width:18px;height:18px}.btn.quiet{background:var(--surface);color:var(--ink);border:1px solid var(--line)}.loading-line{background:linear-gradient(90deg, var(--ground-2), var(--surface), var(--ground-2));background-size:200% 100%;border-radius:6px;height:18px;animation:1.4s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.note{color:var(--ink-2);margin-top:14px;font-size:13px;line-height:1.5}.search-field{background:var(--surface);border:1px solid var(--line);border-radius:12px;align-items:center;gap:10px;height:48px;padding:0 14px;display:flex}.search-field svg{width:18px;height:18px;color:var(--ink-3);flex:none}.search-field input{background:0 0;border:0;outline:none;flex:1;min-width:0;font-size:16px}.results{margin-top:12px;padding:0;list-style:none}.results li+li{border-top:1px solid var(--line)}.results button{text-align:left;justify-content:space-between;align-items:baseline;gap:12px;width:100%;padding:13px 2px;font-size:15px;display:flex}.results button span:last-child{color:var(--ink-3);white-space:nowrap;font-size:13px}.results button:hover span:first-child{text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px}.loom{flex-direction:column;gap:5px;margin:18px 0 8px;display:flex;position:relative}.row{color:var(--ink-2);grid-template-columns:28px 1fr 46px;align-items:center;gap:8px;font-size:12px;display:grid}.row .weave{background:0 0;border-radius:3px;height:30px}.row .rest{background:repeating-linear-gradient(90deg, var(--warp) 0 1px, transparent 1px 5px), var(--surface);flex:none;height:100%}.row .v{text-align:right}.row.today{color:var(--ink);font-weight:600}.budget-mark{border-left:1.5px dashed var(--ink-3);pointer-events:none;position:absolute;top:-6px;bottom:-6px}.legend{color:var(--ink-2);flex-wrap:wrap;gap:6px 12px;margin-top:10px;font-size:11px;display:flex}.legend span{align-items:center;gap:5px;display:flex}.legend i{background:var(--c);border-radius:2px;width:10px;height:10px}.card{background:var(--surface);border-radius:var(--radius);margin-top:22px;padding:16px}.card h3{justify-content:space-between;font-size:14px;font-weight:600;display:flex}.card h3 span{color:var(--ink-2);font-size:13px;font-weight:500}.card .stat{font-family:var(--display);letter-spacing:-.03em;margin:6px 0 2px;font-size:30px;font-weight:600}.card .stat small{font-family:var(--ui);color:var(--lichen-ink);letter-spacing:0;margin-left:6px;font-size:13px;font-weight:500}.card svg.chart{width:100%;height:90px;margin-top:8px;display:block;overflow:visible}.card .empty-text{color:var(--ink-2);margin-top:6px;font-size:14px}.field{gap:6px;margin-top:18px;display:grid}.field label{color:var(--ink-2);font-size:12px;font-weight:600}.input-row{align-items:center;gap:10px;display:flex}.input{border:1px solid var(--line);background:var(--surface);border-radius:12px;outline:none;flex:1;min-width:0;height:48px;padding:0 14px;font-size:16px}.input:focus{border-color:var(--ink-2)}.input-row .unit{color:var(--ink-2);width:34px;font-size:14px}.input-row .btn{width:auto;height:48px;padding:0 18px}.saved{color:var(--lichen-ink);min-height:18px;margin-top:6px;font-size:13px}.meal-toggles{margin-top:4px;padding:0;list-style:none}.meal-toggles li+li{border-top:1px solid var(--line)}.meal-toggles label{cursor:pointer;align-items:center;gap:12px;padding:12px 0;font-size:15px;display:flex}.meal-toggles input{appearance:none;background:var(--ground-2);cursor:pointer;border-radius:13px;flex:none;width:42px;height:26px;margin-left:auto;transition:background .2s;position:relative}.meal-toggles input:after{content:"";background:var(--surface);border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #24211d40}.meal-toggles input:checked{background:var(--moss)}.meal-toggles input:checked:after{transform:translate(16px)}.meal-page{padding-top:calc(16px + env(safe-area-inset-top))}.meal-title{align-items:center;gap:12px;margin-top:10px;display:flex}.meal-title .chip{border-radius:5px;width:22px;height:22px}.meal-band{background:repeating-linear-gradient(90deg, var(--warp) 0 1px, transparent 1px 5px), var(--surface);border-radius:4px;height:18px;display:flex;overflow:hidden}.macro-line{color:var(--ink-2);margin-top:10px;font-size:13px}.add-actions{grid-template-columns:repeat(3,1fr);gap:8px;margin:22px 0 8px;display:grid}.add-actions button{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;align-items:center;gap:8px;padding:16px 6px 14px;font-size:14px;font-weight:500;transition:transform .15s,border-color .2s;display:flex}.add-actions button:first-child{background:var(--moss);color:var(--moss-ink);border-color:var(--moss)}.add-actions button:active{transform:scale(.97)}.add-actions svg{width:24px;height:24px}.meal-items{margin-top:10px;padding-left:0}.meal-items .item{border-top:1px solid var(--line);color:var(--ink);padding:10px 0;font-size:15px}.meal-items .item .kc{color:var(--ink-2);font-size:14px}.meal-h-btn{text-align:left;align-items:center;gap:10px;width:100%;display:flex}.meal-h-btn .chev{width:16px;height:16px;color:var(--ink-3);flex:none;transform:rotate(180deg)}.textarea{resize:vertical;width:100%;height:auto;min-height:96px;margin-top:4px;padding:12px 14px;line-height:1.45}.sheet .input{width:100%}.write-row{background:var(--surface);border:1px solid var(--line);text-align:left;border-radius:12px;align-items:center;gap:12px;width:100%;margin-top:12px;padding:14px 16px;font-size:15px;display:flex}.write-row svg{width:20px;height:20px;color:var(--moss);flex:none}.write-row small{color:var(--ink-3);font-size:12px;display:block}.described{margin-top:4px;padding:0;list-style:none}.described li{border-top:1px solid var(--line);gap:10px;padding:14px 0;display:grid}.described-h{align-items:baseline;gap:10px;display:flex}.described-h b{flex:1;font-weight:600}.described-h span{color:var(--ink-2);white-space:nowrap;font-size:14px}.described .rm{width:28px;height:28px;color:var(--ink-3);border-radius:8px;align-self:center;place-items:center;margin-right:-6px;display:grid}.described .rm svg{width:15px;height:15px}.mini-sizes{flex-wrap:wrap;gap:6px;display:flex}.mini-sizes button{background:var(--surface);border:1.5px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:6px 10px 6px 8px;font-size:13px;display:inline-flex}.mini-sizes button svg{width:22px;height:14px;color:var(--ink-2)}.mini-sizes button[aria-pressed=true]{border-color:var(--ink);background:#fff}.mini-slider{align-items:center;gap:12px;display:flex}.mini-slider .slider{flex:1;margin:0}.mini-slider span{color:var(--ink-2);text-align:right;width:58px;font-size:13px}.login{padding-top:calc(56px + env(safe-area-inset-top));min-height:100dvh;padding-bottom:48px}.login-weave{border-radius:6px;width:168px;height:56px;margin-bottom:28px;display:flex;overflow:hidden}.login-weave span{flex:1;background-image:repeating-linear-gradient(0deg,#ffffff24 0 2px,#0000000f 2px 3px,#0000 3px 4px)!important}.login .lead{color:var(--ink-2);max-width:34ch;margin-bottom:12px;font-size:16px}.login .field{gap:10px}.login .field .btn{margin-top:4px}.code-input{letter-spacing:.3em;text-align:center;font-size:24px;font-weight:600}.error{color:var(--madder);min-height:20px;margin-top:12px;font-size:14px}.btn:disabled{opacity:.55}.sync-note{color:var(--ink-2);background:var(--surface);border-radius:10px;margin-bottom:14px;padding:10px 12px;font-size:13px}.section-title{font-family:var(--display);letter-spacing:-.02em;margin:34px 0 6px;font-size:20px;font-weight:700}.users{padding:0;list-style:none}.users li{border-top:1px solid var(--line);gap:8px;padding:12px 0;display:grid}.users .who{justify-content:space-between;gap:10px;font-size:14px;display:flex}.users .who span:first-child{overflow-wrap:anywhere;font-weight:600}.users .status{color:var(--ink-2);white-space:nowrap;font-size:12px}.users .status.pending{color:#8a5a00}.users .status.blocked{color:var(--madder)}.users .acts{gap:8px;display:flex}.users .acts button{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:7px 12px;font-size:13px}.users .acts button.primary{background:var(--moss);color:var(--moss-ink);border-color:var(--moss)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
