:root{--ink: #17251c;--paper: #f4f2e7;--surface: #ffffff;--sunken: #ecefe0;--line: #dfe3d2;--quiet: #5a6b5e;--urgent: #b3261e;--soon: #8a5a06;--calm: #1e6b45;--brand: #0f3d2e;--on-brand: #f6fbf4;--urgent-wash: #fbefea;--urgent-deep: #7e2418;--soon-wash: #faf1e2;--soon-deep: #6b4500;--calm-wash: #eaf4e7;--calm-deep: #175437;--grad-leaf: linear-gradient(150deg, #2e9d59 0%, #0e7c4a 78%);--on-grad: #ffffff;--leaf: #2e9d59;--count-bg: #0e7c4a;--count-ink: #ffffff;--dash: #6f7d68;--shadow-card: 0 1px 2px rgb(23 37 28 / 5%);--shadow-float: 0 8px 24px rgb(15 61 46 / 22%), 0 2px 6px rgb(15 61 46 / 14%);--focus: #146c43;--toast-bg: #123f30;--toast-glass: rgb(18 63 48 / 90%);--toast-ink: #f6fbf4;--toast-act: #7be3a4;--display: ui-rounded, -apple-system, system-ui, sans-serif;--tap: 48px;--gap: 12px;--floor: clamp(12px, env(safe-area-inset-bottom, 0px), 34px);--field-text: 17px;--chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%235a6b5e' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--ink: #e9f0e7;--paper: #0d1613;--surface: #152019;--sunken: #1c2a21;--line: #2a3a30;--quiet: #9fb2a2;--urgent: #ff8a76;--soon: #efb35c;--calm: #6fd69c;--brand: #6fd69c;--on-brand: #0d1613;--urgent-wash: #2a1a16;--urgent-deep: #ffad9d;--soon-wash: #28200f;--soon-deep: #f5c88a;--calm-wash: #12251a;--calm-deep: #9fe7be;--grad-leaf: linear-gradient(150deg, #7be3a4 0%, #35b168 78%);--on-grad: #04150c;--leaf: #6fd69c;--count-bg: #6fd69c;--count-ink: #0d1613;--dash: #6b8574;--shadow-card: 0 1px 2px rgb(0 0 0 / 40%);--shadow-float: 0 8px 24px rgb(0 0 0 / 50%), 0 2px 6px rgb(0 0 0 / 35%);--focus: #7be3a4;--toast-bg: #24352c;--toast-glass: rgb(36 53 44 / 90%);--toast-ink: #e9f0e7;--toast-act: #7be3a4;--chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%239fb2a2' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E")}}*{box-sizing:border-box}html{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.45 -apple-system,system-ui,sans-serif;padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left);height:100%;overflow:hidden}#app{height:100%;overflow-y:auto}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;min-height:var(--tap);border-radius:12px;transition:transform .12s ease-out}button:not(:disabled):active{transform:scale(.96)}.grocery:not(:disabled):active,.check:not(:disabled):active,.suggestions button:not(:disabled):active{transform:none}:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}.primary:focus-visible,.bar nav button.on:focus-visible{outline-color:var(--on-brand)}.add:focus-visible{outline-color:var(--on-grad)}.undo button:focus-visible{outline-color:var(--toast-act)}button:disabled{cursor:default;opacity:55%}input,select,textarea{font-family:inherit;font-size:var(--field-text);color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:0 12px;min-height:var(--tap);width:100%}select{appearance:none;padding-right:36px;background-image:var(--chevron);background-repeat:no-repeat;background-position:right 12px center;background-size:12px 8px}.primary{background:var(--brand);color:var(--on-brand);width:100%;border-radius:14px;font-weight:700}.empty{max-width:30ch;margin:0 auto;padding:48px 20px;font-size:16px;line-height:1.55;color:var(--quiet);text-align:center}.app{position:relative;display:flex;flex-direction:column;height:100%}.bar{flex:none;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:var(--gap);padding:8px 12px;background:var(--paper);border-bottom:1px solid var(--line)}.bar nav{display:flex;gap:2px}.bar nav button{padding:0 9px;border-radius:999px;color:var(--quiet);font-family:var(--display);font-size:15px;font-weight:700;white-space:nowrap;transition:transform .12s ease-out,background-color .15s,color .15s}.bar nav button.on{background:var(--brand);color:var(--on-brand)}.count{margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--count-bg);color:var(--count-ink);font-family:var(--display);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.on .count{background:var(--on-brand);color:var(--brand)}.status{display:flex;align-items:center;padding:0 12px;min-height:36px;border-radius:999px;background:var(--soon-wash);color:var(--soon-deep);font-size:14px;font-weight:700}.status:before{content:"";display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:999px;background:currentcolor}.app main{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-bottom:calc(var(--floor) + 76px)}.groups{padding:0 0 8px}.group{margin:12px 12px 0;border-radius:20px;overflow:hidden;background:var(--row-bg, var(--surface));box-shadow:var(--shadow-card)}.group-overdue{--row-bg: var(--urgent-wash)}.group-soon{--row-bg: var(--soon-wash)}.group-out{--row-bg: var(--sunken)}.group h2{margin:0;padding:14px 16px 4px;font-family:var(--display);font-size:22px;font-weight:800;letter-spacing:-.01em}.group-overdue h2{color:var(--urgent)}.group-soon h2{color:var(--soon)}.group-out h2{color:var(--quiet)}.group ul,.list{margin:0;padding:0;list-style:none}.row-track{position:relative;overflow:hidden;border-bottom:1px solid var(--line);background:var(--urgent)}.group li:last-child{border-bottom:none}.row-verdict{position:absolute;inset:0 0 0 auto;display:flex;align-items:center;padding-right:20px;color:var(--paper);font-weight:700;font-size:15px}.row{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap);padding:12px 16px;background:var(--row-bg, var(--surface));touch-action:pan-y}.offscreen{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.offscreen:focus{position:static;width:auto;height:auto;padding:0 12px;clip-path:none}.row-name{flex:1;min-width:0}.row .name{display:block;font-weight:600;overflow-wrap:anywhere}.row .due{font-size:14px;font-weight:500;color:var(--quiet)}.group-overdue .due{color:var(--urgent);font-weight:600}.group-soon .due{color:var(--soon)}.level{min-width:92px;padding:0 14px;border:1.5px solid transparent;border-radius:999px;background:var(--surface);font-family:var(--display);font-size:15px;font-weight:700;letter-spacing:.01em;font-variant-numeric:tabular-nums;transition:transform .12s ease-out,background-color .15s,color .15s,border-color .15s}.level-plenty{background:var(--calm-wash);color:var(--calm-deep)}.level-low{background:var(--soon-wash);color:var(--soon-deep);border-color:var(--soon)}.level-out{background:transparent;color:var(--quiet);border:1.5px dashed var(--dash)}.asking{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 0 2px;font-size:15px;color:var(--quiet)}.asking button{padding:0 14px;min-height:40px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:600}.groceries>form{display:flex;gap:8px;padding:12px 12px 4px}.groceries>form button{padding:0 16px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:600;white-space:nowrap}.list{margin:12px 12px 0;border-radius:20px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow-card)}.list li:last-child .grocery,.list li:last-child .check,.list li:last-child .editor{border-bottom:none}.grocery{display:flex;align-items:baseline;gap:var(--gap);width:100%;padding:0 16px;text-align:left;border-bottom:1px solid var(--line);border-radius:0}.grocery .name{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grocery .where,.grocery .keeps{font-size:14px;color:var(--quiet);white-space:nowrap}.grocery .where{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.grocery .keeps{flex:none}.grocery.unplaceable .name{font-weight:700}.grocery .unsure{flex:none;align-self:center;padding:2px 10px;border-radius:999px;background:var(--soon-wash);color:var(--soon-deep);font-size:13px;font-weight:700}.note.asking{margin:8px 16px 0;padding:10px 14px;border-radius:12px;background:var(--soon-wash);color:var(--soon-deep)}.editor{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;padding:16px 16px 18px;background:var(--sunken);border-bottom:1px solid var(--line)}.editor label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;align-items:center;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--quiet)}.editor label input,.editor label select{grid-column:1;min-width:0}.editor .unit{grid-column:2;font-size:14px;font-weight:400;text-transform:none;letter-spacing:normal}.editor-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:2px}.editor-actions button{border:1px solid var(--line);border-radius:999px;padding:0 12px;background:var(--surface);font-weight:600}.editor-actions .primary{grid-column:1 / -1;border-color:transparent;border-radius:14px;background:var(--brand)}.editor-actions .remove{color:var(--urgent);border-color:transparent;background:none}.shopping form{display:flex;gap:8px;padding:12px 12px 4px}.shopping form button{padding:0 16px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:600;white-space:nowrap}.check{display:flex;align-items:center;gap:var(--gap);width:100%;padding:4px 16px;min-height:56px;text-align:left;border-bottom:1px solid var(--line);border-radius:0}.check .box{flex:none;width:28px;height:28px;border:2px solid var(--leaf);border-radius:50%;background:var(--surface);transition:background-color .12s}.check:active .box{background:var(--calm-wash)}.check .name{flex:1;font-weight:500}.check .why,.familiar{font-size:13px;color:var(--quiet)}.add{position:absolute;right:20px;bottom:var(--floor);width:60px;height:60px;border-radius:30px;background:var(--grad-leaf);color:var(--on-grad);font-family:var(--display);font-size:32px;font-weight:600;line-height:1;box-shadow:var(--shadow-float),inset 0 1px #ffffff40}.add:not(:disabled):active{transform:scale(.92)}.sheet{position:fixed;inset:0;z-index:10;display:flex;flex-direction:column;background:var(--paper);padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left);animation:rise .24s cubic-bezier(.2,.8,.25,1)}@keyframes rise{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--gap);padding:8px 12px 8px 20px;border-bottom:1px solid var(--line)}.sheet h2{margin:0;font-family:var(--display);font-size:24px;font-weight:800;letter-spacing:-.01em}.sheet .close{flex:none;width:var(--tap);height:var(--tap);border-radius:999px;background:var(--sunken);font-size:20px;line-height:1}.sheet-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:12px 16px calc(20px + var(--floor))}.sheet form{display:grid;gap:var(--gap);padding:8px 0 16px}.sheet label{display:grid;gap:4px;font-size:14px;color:var(--quiet)}.suggestions{display:grid;gap:6px;margin:0;padding:2px 0;list-style:none}.suggestions button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0 16px;text-align:left;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-weight:600;box-shadow:var(--shadow-card)}.offered-head{margin:0;padding:4px 0 6px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--quiet)}.landed{margin:0;min-height:26px;padding:2px 0;font-size:15px;font-weight:700;color:var(--calm)}.landed:not(:empty):before{content:"✓ " / ""}.already{display:grid;gap:8px;margin:4px 0 12px;padding:14px 16px;border-radius:16px;background:var(--calm-wash)}.already .note{margin:0;color:var(--calm-deep)}.looking{display:flex;align-items:center;gap:10px;margin:4px 0;min-height:var(--tap);color:var(--quiet)}.spinner{flex:none;width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--calm);border-radius:999px;animation:turn .7s linear infinite}@keyframes turn{to{transform:rotate(1turn)}}.undo{position:absolute;left:20px;right:20px;bottom:calc(var(--floor) + 72px);z-index:4;display:flex;align-items:center;justify-content:space-between;gap:var(--gap);padding:4px 8px 4px 16px;border-radius:16px;background:var(--toast-bg);color:var(--toast-ink);box-shadow:var(--shadow-float);animation:settle .2s cubic-bezier(.2,.8,.25,1)}@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))){.undo{background:var(--toast-glass);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}@keyframes settle{0%{transform:translateY(12px);opacity:0}}.undo button{padding:0 14px;color:var(--toast-act);font-weight:700}.signin{max-width:420px;margin:0 auto;padding:48px 24px}.signin h1{display:flex;align-items:center;gap:10px;margin:0 0 24px;font-family:var(--display);font-size:34px;font-weight:800;letter-spacing:-.02em}.signin h1 .aware{color:var(--calm)}.signin form{display:grid;gap:var(--gap)}.signin label{display:grid;gap:4px;font-size:14px;color:var(--quiet)}.refusal{margin:0;color:var(--urgent)}.aside{margin-top:24px;font-size:14px;color:var(--quiet)}.install{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--gap);margin:12px 12px 0;padding:14px 16px;border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card)}.install p{margin:4px 0 0;font-size:14px;color:var(--quiet)}.install-actions{display:flex;gap:8px;margin-left:auto}.install-actions button{padding:0 16px;border-radius:999px;white-space:nowrap}.install-actions .primary{width:auto}.reminders{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin:12px 12px 0;padding:6px 8px 6px 16px;border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card);font-size:15px;color:var(--quiet)}.reminders button{padding:0 14px;min-height:40px;border:1px solid var(--line);border-radius:999px;color:var(--ink);font-weight:600}.settings{max-width:460px;margin:0 auto;padding:4px 12px}.settings section{margin:12px 0;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card)}.settings h2{margin:0 0 4px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--quiet)}.settings label{display:grid;gap:4px;margin-top:var(--gap);font-size:14px;color:var(--quiet)}.settings form{display:grid;gap:var(--gap)}.settings form button{margin-top:4px}.settings section>button{padding:0 20px;border:1px solid var(--line);border-radius:999px;font-weight:600}.note{margin:4px 0 0;font-size:14px;color:var(--quiet)}.readings{margin:var(--gap) 0;font-family:ui-monospace,monospace;font-size:12px}.readings div{display:flex;gap:8px;justify-content:space-between;padding:3px 0;border-bottom:1px solid var(--line)}.readings dt{color:var(--quiet)}.readings dd{margin:0;overflow-wrap:anywhere;text-align:right}.setting{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--gap);margin-top:4px}.setting button{padding:0 16px;min-height:40px;border:1px solid var(--line);border-radius:999px;font-weight:600;white-space:nowrap}.setting .note{max-width:32ch}@media(prefers-reduced-motion:reduce){.sheet,.undo,.spinner{animation:none}button:not(:disabled):active,.add:not(:disabled):active{transform:none}}
