:root{--bg: #f6f3ec;--card: #ffffff;--ink: #26302c;--muted: #6d7772;--line: #e3ded2;--brand: #2f6f5e;--brand-ink: #ffffff;--brand-soft: #e2efe9;--red: #c8452f;--red-soft: #fbe5df;--amber: #b97a12;--amber-soft: #fbefd3;--green: #2f8a5c;--radius: 18px;--tap: 48px;--shadow: 0 1px 2px rgba(40, 40, 30, .06), 0 6px 20px rgba(40, 40, 30, .05);color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #151a18;--card: #1f2623;--ink: #edf1ee;--muted: #9aa6a0;--line: #2f3835;--brand: #5fb89d;--brand-ink: #10201a;--brand-soft: #233932;--red: #f08570;--red-soft: #3d2420;--amber: #e8b455;--amber-soft: #3a2f18;--green: #6cc797;--shadow: none}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none}h1,h2,h3,p{margin:0}h1{font-size:1.7rem;letter-spacing:-.02em}h2{font-size:1.25rem}h3{font-size:1.05rem}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--brand)}.app{display:flex;flex-direction:column-reverse;height:100dvh}main{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.nav{display:flex;background:var(--card);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom));position:relative}.nav-btn{flex:1;min-width:0;min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:0;border-radius:14px;color:var(--muted)}.nav-btn.on{background:var(--brand-soft);color:var(--brand);font-weight:600}.nav-icon{font-size:1.35rem;position:relative;line-height:1}.nav-label{font-size:.68rem;white-space:nowrap}.badge{position:absolute;top:-6px;right:-12px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red);color:#fff;font-size:.68rem;font-weight:700;display:grid;place-items:center;font-family:system-ui,sans-serif}.nav-sync{position:absolute;top:-14px;right:10px;background:none;border:0;padding:4px;display:none}.dot{display:block;width:10px;height:10px;border-radius:50%;background:var(--muted)}.sync-ok .dot{background:var(--green)}.sync-syncing .dot{background:var(--amber)}.sync-error .dot,.sync-signed-out .dot{background:var(--red)}.sync-offline .dot{background:var(--amber)}.page{max-width:1100px;margin:0 auto;padding:18px 16px 110px;display:flex;flex-direction:column;gap:14px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}@media(min-width:860px){body{font-size:18px}.app{flex-direction:row}.nav{flex-direction:column;width:104px;border-top:0;border-right:1px solid var(--line);padding:14px 8px;gap:6px}.nav-btn{flex:0 0 auto;min-height:76px}.nav-icon{font-size:1.7rem}.nav-label{font-size:.8rem}.nav-sync{display:block;position:static;margin-top:auto;align-self:center;padding:12px}.page{padding:28px 28px 110px;gap:18px}}.card{background:var(--card);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);border:1px solid var(--line)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.stack{display:flex;flex-direction:column;gap:14px}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.plain{list-style:none;margin:0;padding:0}.row{display:flex;align-items:center;gap:12px;padding:8px 0;min-height:var(--tap);border-top:1px solid var(--line)}.row:first-child{border-top:0}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.small{font-size:.85rem}.error{color:var(--red)}.text-left{text-align:left}.bare{background:none;border:0;padding:0}.when{width:5.2rem;flex:none;font-weight:600}.btn{min-height:var(--tap);padding:0 18px;border-radius:14px;border:1px solid var(--line);background:var(--card);font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.btn.danger{color:var(--red)}.btn.big{min-height:56px;width:100%}.btn:disabled{opacity:.45;cursor:default}.btn:active:not(:disabled),.chip:active,.slot:active,.tile:active{transform:scale(.98)}.icon-btn{width:var(--tap);height:var(--tap);flex:none;border-radius:50%;border:0;background:none;font-size:1.2rem;display:inline-grid;place-items:center;text-decoration:none;color:var(--muted)}.link{background:none;border:0;color:var(--brand);font-weight:600;padding:8px 4px;min-height:40px}.input{width:100%;min-height:var(--tap);padding:10px 14px;border-radius:14px;border:1px solid var(--line);background:var(--card);min-width:0}textarea.input{resize:vertical}.input:focus-visible,.btn:focus-visible,.chip:focus-visible,.nav-btn:focus-visible,.check:focus-visible{outline:3px solid var(--brand);outline-offset:2px}.field{display:flex;flex-direction:column;gap:6px}.field>span,.field-label{font-size:.85rem;color:var(--muted);font-weight:600;margin-bottom:4px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.toolbar .grow{flex:1 1 160px}.toggle{display:flex;align-items:center;gap:10px;min-height:var(--tap)}.toggle.small{min-height:0;font-size:.85rem;color:var(--muted)}.toggle input{width:22px;height:22px;accent-color:var(--brand)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips.scroll{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}.chip{min-height:40px;padding:0 14px;border-radius:20px;border:1.5px solid var(--line);background:var(--card);white-space:nowrap;display:inline-flex;align-items:center;text-decoration:none;color:inherit;font-size:.92rem}.chip.on{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.segmented{display:inline-flex;background:var(--line);border-radius:14px;padding:3px}.segmented button{border:0;background:none;min-height:42px;padding:0 16px;border-radius:11px;font-weight:600;color:var(--muted)}.segmented button.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.swatch{width:40px;height:40px;border-radius:50%;border:3px solid transparent}.swatch.small{width:30px;height:30px}.swatch.on{border-color:var(--ink)}.check{width:34px;height:34px;flex:none;border-radius:50%;border:2.5px solid var(--muted);background:none;display:grid;place-items:center;color:#fff;font-weight:700;position:relative}.check:after{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px}.check.on{background:var(--green);border-color:var(--green)}.row.done span{text-decoration:line-through;color:var(--muted)}.member-dot{display:inline-grid;place-items:center;border-radius:50%;color:#fff;font-weight:700;flex:none}.hero{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}.hero-greet{color:var(--muted);font-weight:600}.hero-date{font-size:1.6rem;font-weight:700;letter-spacing:-.02em}.hero-clock{font-size:3.2rem;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.meal-today{display:flex;flex-direction:column;padding:4px 0}.meal-today strong{font-size:1.25rem}.big-number{font-size:2.6rem;font-weight:700;line-height:1}.notes-mini{display:flex;flex-direction:column;gap:8px}.note-mini{padding:10px 12px;border-radius:12px;color:#2b2a26}.empty{text-align:center;color:var(--muted);padding:14px 8px}.empty-icon{font-size:2rem}@media(min-width:860px){.hero-clock{font-size:4.6rem}.hero-date{font-size:2.1rem}}.status-overdue .check{border-color:var(--red)}.status-today .check{border-color:var(--amber)}.bar{height:5px;border-radius:3px;background:var(--line);margin-top:6px;overflow:hidden}.bar span{display:block;height:100%;background:var(--green);border-radius:3px}.status-soon .bar span,.status-today .bar span{background:var(--amber)}.status-overdue .bar span{background:var(--red)}.week-nav{display:flex;align-items:center;justify-content:center;gap:8px}.week{display:grid;gap:10px;grid-template-columns:1fr}@media(min-width:700px){.week{grid-template-columns:repeat(2,1fr)}}@media(min-width:1000px){.week{grid-template-columns:repeat(4,1fr)}}.day{padding:12px;display:flex;flex-direction:column;gap:8px}.day.is-today{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}.day-name{font-weight:700}.slot{display:flex;align-items:center;gap:10px;min-height:var(--tap);padding:6px 12px;border-radius:12px;border:1.5px dashed var(--line);background:none;text-align:left;color:var(--muted)}.slot.filled{border-style:solid;background:var(--brand-soft);border-color:transparent;color:var(--ink)}.slot.event{border-left:5px solid var(--muted)}.slot-label{font-size:.75rem;width:3.6rem;flex:none;color:var(--muted)}.slot-name{flex:1;font-weight:600}.sticky-action{position:sticky;bottom:12px;display:flex;justify-content:center}.sticky-action .btn{box-shadow:0 6px 20px #00000026}.tiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.tile{text-align:left;display:flex;flex-direction:column;gap:6px;min-height:100px}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{font-size:.75rem;background:var(--brand-soft);color:var(--brand);padding:2px 8px;border-radius:8px;font-weight:600}.ing-row{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap;align-items:center}.ing-amount,.ing-unit{width:4.6rem;flex:none}.ing-row .grow{flex:1 1 140px}.ing-cat{width:auto;flex:1 1 140px}.list{display:flex;flex-direction:column}.list-btn{text-align:left;min-height:var(--tap);padding:8px 4px;background:none;border:0;border-top:1px solid var(--line)}.list-btn:first-child{border-top:0}.list-btn:disabled{color:var(--muted)}.shop-row{align-items:flex-start}.shop-row .check{margin-top:6px}.shop-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:4px 0 12px}.shop-row .tag{margin-left:6px}.swipe{position:relative;overflow:hidden;list-style:none}.swipe+.swipe{border-top:1px solid var(--line)}.swipe>.row{border-top:0;background:var(--card);position:relative;touch-action:pan-y;transition:transform .15s ease-out}.swipe-hint{position:absolute;top:0;right:0;bottom:0;left:0;visibility:hidden;display:flex;align-items:center;padding-left:18px;background:var(--line);color:var(--muted);font-weight:700;font-size:1.3rem}.swipe.dragging .swipe-hint{visibility:visible}.swipe.ready .swipe-hint{background:var(--green);color:#fff}.toast{display:flex;align-items:center;gap:14px}.toast-undo{background:none;border:0;color:inherit;text-decoration:underline;font-weight:700;min-height:40px;padding:0 4px}.offer-note{font-size:.85rem;color:var(--amber);margin-top:2px}.sync-pill{font-weight:600}.sync-pill.sync-ok{color:var(--green)}.sync-pill.sync-error,.sync-pill.sync-signed-out{color:var(--red)}.notes{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.note{border:0;border-radius:6px 6px 18px;padding:16px;min-height:130px;text-align:left;color:#2b2a26;box-shadow:0 4px 12px #0000001f;white-space:pre-wrap;font-size:1.05rem;position:relative;display:block}.pin{position:absolute;top:-8px;right:8px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:20}.sheet{background:var(--bg);width:100%;max-width:640px;max-height:92dvh;border-radius:22px 22px 0 0;display:flex;flex-direction:column;animation:up .18s ease-out}.sheet-head{display:flex;justify-content:space-between;align-items:center;padding:14px 10px 6px 20px}.sheet-body{padding:10px 20px 20px;overflow-y:auto}.sheet-foot{display:flex;gap:10px;padding:12px 20px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);flex-wrap:wrap}@media(min-width:700px){.sheet-backdrop{align-items:center}.sheet{border-radius:22px}}@keyframes up{0%{transform:translateY(24px);opacity:0}}.toast{position:fixed;left:50%;bottom:90px;transform:translate(-50%);background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:14px;z-index:30;max-width:calc(100vw - 32px);text-align:center;font-weight:600}@media(min-width:860px){.toast{bottom:28px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.scan-view{position:relative;border-radius:var(--radius);overflow:hidden;background:#000;aspect-ratio:4 / 3}.scan-view video{width:100%;height:100%;object-fit:cover;display:block}.scan-frame{position:absolute;top:30%;right:12%;bottom:30%;left:12%;border:3px solid rgba(255,255,255,.85);border-radius:10px;box-shadow:0 0 0 999px #00000040}.nutrition{width:100%;border-collapse:collapse}.nutrition caption{text-align:left;padding-bottom:4px}.nutrition th,.nutrition td{padding:6px 0;border-bottom:1px solid var(--line);font-weight:400}.nutrition th{text-align:left}.nutrition td{text-align:right;white-space:nowrap}.nutrition tr.sub th{padding-left:14px;color:var(--muted)}.nutri{align-self:flex-start;padding:4px 12px;border-radius:999px;font-weight:600;color:#fff}.nutri-a{background:#038141}.nutri-b{background:#85bb2f;color:#111}.nutri-c{background:#fecb02;color:#111}.nutri-d{background:#ee8100;color:#111}.nutri-e{background:#e63e11}
