:root{--bg:#17191e;--sidebar:#131519;--surface:#1d2026;--surface2:#23272e;--surface3:#2b3038;--section:#191c22;--border:#2c3139;--border-hover:#3b424d;--text:#e2e4e8;--body:#c8cbd2;--muted:#8d93a0;--faint:#6a707c;--accent:#88b5a2;--accent-hover:#9cc3b2;--accent-bg:#88b5a221;--on-accent:#10201b;--danger:#d0908b;--danger-bg:#d0908b1a;--warn:#d6b47e;--radius:12px;--nav-h:64px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);-webkit-tap-highlight-color:transparent;font-family:Segoe UI Variable Text,Segoe UI,Roboto,Noto Sans,Inter,system-ui,sans-serif;font-size:14px;line-height:1.45}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;margin:0}body.no-scroll{overflow:hidden}h1,h2,h3,p{margin:0}h1{letter-spacing:-.01em;font-size:24px;font-weight:600}h2{font-size:15px;font-weight:600}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--muted)}.faint{color:var(--faint);font-size:12.5px}.body{color:var(--body);font-size:14.5px}.pre{white-space:pre-wrap}.ok{color:var(--accent)}.warn{color:var(--warn)}.danger{color:var(--danger)}.stack{flex-direction:column;gap:12px;display:flex}.grow{flex:1;min-width:0}.shell{min-height:100vh;display:flex}.sidebar{background:var(--sidebar);border-right:1px solid #1e2127;flex-direction:column;flex:none;gap:2px;width:228px;height:100vh;padding:24px 12px;display:none;position:sticky;top:0}.brand{flex-direction:column;padding:0 10px 6px;display:flex}.brand-title{font-size:16px;font-weight:600}.nav-section{color:var(--faint);padding:18px 10px 6px;font-size:12px;font-weight:600}.nav-btn{text-align:left;width:100%;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:9px 12px;display:block}.nav-btn:hover{background:var(--surface);color:var(--text)}.nav-btn.on{background:var(--accent-bg);color:var(--accent);font-weight:600}.main{flex-direction:column;flex:1;min-width:0;display:flex}.content{width:100%;max-width:1040px;padding:20px 16px calc(var(--nav-h) + 88px + env(safe-area-inset-bottom))}.bottom-nav{z-index:20;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#131519f5;border-top:1px solid #22262d;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{color:var(--faint);background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:11px;display:flex}.bottom-nav button.on{color:var(--accent)}.offline-banner{color:var(--warn);background:#d6b47e1a;border-bottom:1px solid #d6b47e33;align-items:center;gap:8px;padding:8px 16px;font-size:13px;display:flex}@media (width>=900px){.sidebar{display:flex}.bottom-nav{display:none}.content{padding:28px 36px 110px}}.page-header{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.back-link{color:var(--muted);background:0 0;border:0;align-self:flex-start;align-items:center;gap:4px;padding:4px 0;display:inline-flex}.back-link:hover{color:var(--accent)}.page-header-row{flex-wrap:wrap;align-items:flex-start;gap:12px 16px;display:flex}.page-titles{flex:260px;min-width:0}.page-titles h1{overflow-wrap:anywhere}.page-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--border);background:var(--surface3);min-height:38px;color:var(--text);white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 14px;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--border-hover);background:#323843}.btn:disabled{color:var(--faint);background:var(--surface2);cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface2);color:var(--text)}.btn.danger{color:var(--danger);background:0 0;border-color:#4a3739}.btn.danger:hover{background:var(--danger-bg)}.btn.full{width:100%}.btn.add{align-self:flex-start;margin-top:4px}.icon-btn{width:34px;height:34px;color:var(--muted);background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover:not(:disabled){background:var(--surface3);color:var(--text)}.icon-btn.danger:hover:not(:disabled){background:var(--danger-bg);color:var(--danger)}.icon-btn:disabled{opacity:.35;cursor:default}.icon-btn.big{width:38px;height:38px}.link{color:var(--accent);text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}.nav-group{align-items:center;gap:2px;display:flex}.segmented{background:var(--surface);border:1px solid var(--border);border-radius:9px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--muted);background:0 0;border:0;border-radius:6px;min-height:30px;padding:6px 14px}.segmented button:hover{color:var(--text)}.segmented button.on{background:var(--surface3);color:var(--text)}.segmented.full{display:flex}.segmented.full button{flex:1}.cook-btn{border:1px solid var(--border-hover);min-width:176px;min-height:36px;color:var(--muted);background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:6px 14px;display:inline-flex}.cook-btn:hover{border-color:var(--accent);color:var(--accent)}.cook-btn.on{background:var(--accent-bg);color:var(--accent);border-color:#0000;font-weight:600}.cook-btn.on:hover{border-color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:10px;padding:16px 18px 18px;display:flex}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.card-head.spaced{margin-top:8px}.card-actions{flex-wrap:wrap;gap:6px;display:flex}.card-sub{margin-top:-4px}.section-title{margin-top:6px}.row{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:12px;min-height:56px;padding:12px 14px;display:flex}.row.clickable{cursor:pointer}.row.clickable:hover{background:var(--surface2);border-color:var(--border-hover)}.row.current{border-color:var(--accent)}.row-main{flex:1;min-width:0}.row-title{overflow-wrap:anywhere;font-size:14.5px;font-weight:500}.row-title.done{color:var(--faint);text-decoration:line-through}.row-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chevron{color:var(--faint);display:flex}.recipe-link{white-space:nowrap;align-items:center;gap:2px;display:inline-flex}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{color:var(--muted);background:var(--surface2);border:1px solid var(--border);border-radius:11px;padding:3px 10px;font-size:12px;display:inline-block}.chip.accent{background:var(--accent-bg);color:var(--accent);border-color:#0000}.badge{color:var(--accent);background:var(--accent-bg);border-radius:11px;flex:none;padding:2px 9px;font-size:11px;font-weight:600}.status-line{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.amount{color:var(--accent);white-space:nowrap;font-weight:600}.progress{background:var(--surface3);border-radius:4px;height:8px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .25s}.progress-fill.over{background:var(--warn)}.counters{flex-wrap:wrap;gap:12px 44px;display:flex}.big{font-size:30px;font-weight:600;line-height:1.15}.big-muted{color:var(--muted);font-size:16px;font-weight:400}.status.muted{color:var(--muted)}.collapsible{flex-direction:column;gap:6px;display:flex}.section-toggle{color:var(--muted);background:0 0;border:0;align-self:flex-start;align-items:center;gap:8px;padding:6px 2px;font-weight:600;display:inline-flex}.section-toggle:hover{color:var(--text)}.caret{transition:transform .15s;display:inline-flex}.caret.open{transform:rotate(90deg)}.search{background:var(--surface2);border:1px solid var(--border);color:var(--faint);border-radius:8px;align-items:center;gap:8px;padding:0 12px;display:flex}.search:focus-within{border-color:var(--accent)}.search input{outline:none;flex:1;background:0 0!important;border:0!important;padding:10px 0!important}.week-item{flex-wrap:wrap}.week-item .row-main{flex-basis:220px}.period-row{flex-wrap:wrap}.period-status{flex-direction:column;flex:220px;gap:6px;display:flex}.year-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.month-tile{flex-direction:column;align-items:stretch;gap:6px;min-height:112px}@media (width>=700px){.year-grid{grid-template-columns:repeat(4,1fr);gap:12px}}@media (width<=560px){.week-item .cook-btn{flex:1}.recipe-link{display:none}.page-actions{width:100%}}.goal-row{flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex}.goal-total{margin-left:auto;font-weight:600}.edit-item{flex-wrap:wrap}.edit-item .row-main{flex-basis:200px}.edit-item-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.edit-item-controls .result{text-align:right;min-width:82px}.edit-item-controls .result.uncounted{color:var(--faint);text-decoration:line-through}.count-btn{border:1px solid var(--border);min-width:148px;min-height:36px;color:var(--muted);white-space:nowrap;background:0 0;border-radius:8px;padding:6px 12px;font-size:13px}.count-btn:hover{border-color:var(--border-hover);color:var(--text)}.count-btn.on{background:var(--surface3);border-color:var(--border-hover);color:var(--text)}input:not([type=checkbox]):not([type=radio]),textarea{background:var(--surface2);border:1px solid var(--border);border-radius:7px;outline:none;width:100%;min-height:38px;padding:9px 10px}input:focus,textarea:focus{border-color:var(--accent)}input.invalid{border-color:var(--danger)!important}textarea{resize:vertical;min-height:64px}::placeholder{color:var(--faint)}.form-grid{grid-template-columns:1fr;align-items:center;gap:8px 16px;display:grid}@media (width>=640px){.form-grid{grid-template-columns:160px 1fr}}.form-grid>.stepper{justify-self:start}.field{flex-direction:column;gap:5px;display:flex}.check,.radio{cursor:pointer;align-items:center;gap:10px;display:flex}input[type=checkbox],input[type=radio]{appearance:none;background:var(--surface2);cursor:pointer;border:1px solid #4a505c;border-radius:5px;flex:none;place-items:center;width:20px;height:20px;margin:0;display:grid}input[type=radio]{border-radius:50%}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";border:solid var(--on-accent);border-width:0 2.2px 2.2px 0;width:5px;height:10px;transform:translateY(-1px)rotate(45deg)}input[type=radio]:checked{border:6px solid var(--accent)}.radios{flex-wrap:wrap;gap:8px 20px;display:flex}.stepper{background:var(--surface2);border:1px solid var(--border);border-radius:8px;flex:none;align-items:center;padding:2px;display:inline-flex}.stepper:focus-within{border-color:var(--accent)}.step-btn{width:34px;height:34px;color:var(--muted);touch-action:manipulation;-webkit-user-select:none;user-select:none;background:0 0;border:0;border-radius:6px;font-size:18px;font-weight:600}.step-btn:hover{background:var(--surface3);color:var(--accent)}.step-btn:active{background:var(--accent-bg)}.stepper-field{min-width:56px;color:var(--muted);justify-content:center;align-items:center;gap:2px;padding:0 4px;display:flex}.stepper-field input{text-align:center;min-width:2ch;max-width:9ch;color:var(--text);background:0 0!important;border:0!important;width:auto!important;min-height:0!important;padding:6px 0!important}.affix{white-space:pre}.section-block{background:var(--section);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px 12px;display:flex}.section-head{align-items:center;gap:8px;display:flex}input.section-name{font-size:15px;font-weight:600;background:0 0!important;border-color:#0000!important}input.section-name:hover{border-color:var(--border)!important}input.section-name:focus{border-color:var(--accent)!important;background:var(--surface2)!important}.ing-edit{grid-template-columns:1fr 84px 110px auto;align-items:center;gap:8px;display:grid}.row-tools{display:flex}@media (width<=640px){.ing-edit{border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;padding-bottom:8px}.ing-edit .ing-name-field{grid-column:1/-1}.ing-edit .row-tools{grid-column:1/-1;justify-content:flex-end}}.step-edit{grid-template-columns:26px 1fr auto;align-items:start;gap:10px;display:grid}.step-side{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}@media (width<=640px){.step-edit{grid-template-columns:26px 1fr}.step-side{grid-column:2;justify-content:space-between}}.footer-bar{left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));z-index:15;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#17191ef2;justify-content:flex-end;gap:8px;padding:10px 16px;display:flex;position:fixed}@media (width>=900px){.footer-bar{padding:12px 36px;bottom:0;left:228px}}.suggest{flex:1;position:relative}.suggest-toggle{color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;width:32px;height:32px;display:grid;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.suggest-toggle:hover{background:var(--surface3)}.suggest:has(.suggest-toggle) input{padding-right:40px}.suggest-list{z-index:30;background:var(--surface2);border:1px solid var(--border-hover);border-radius:9px;max-height:336px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 12px 28px #00000059}.suggest-list li{cursor:pointer;border-radius:7px;align-items:center;gap:10px;min-height:48px;padding:8px 12px;display:flex}.suggest-list.compact li{min-height:40px;padding:6px 10px}.suggest-list li.hi{background:var(--surface3)}.suggest-list li.hi:not(.dim) .suggest-label{color:var(--accent)}.suggest-list li.dim .suggest-label,.suggest-list li.dim .suggest-meta{color:var(--faint)}.suggest-text{flex-direction:column;flex:1;min-width:0;display:flex}.suggest-label{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;overflow:hidden}.suggest-meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.suggest-list.compact .suggest-label{font-size:13.5px}.suggest-list.compact .suggest-meta{font-size:11.5px}.subsection{color:var(--accent);margin:4px 0 6px;font-size:13px;font-weight:600}.ing-group+.ing-group{margin-top:8px}.ing-list{grid-template-columns:minmax(84px,max-content) 1fr;gap:8px 16px;margin:0;padding:0;list-style:none;display:grid}.ing-list.scaled{grid-template-columns:minmax(84px,max-content) 1fr auto}.ing-list li{display:contents}.ing-list .amount,.ing-base{text-align:right}@media (width<=480px){.ing-list,.ing-list.scaled{grid-template-columns:minmax(72px,max-content) 1fr}.ing-base{display:none}}.steps{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.steps li{grid-template-columns:26px 1fr auto;align-items:start;gap:14px;display:grid}.stepnum{background:var(--accent-bg);width:26px;height:26px;color:var(--accent);border-radius:13px;place-items:center;font-size:12px;font-weight:600;display:grid}.step-min{white-space:nowrap;padding-top:2px}.shopping{gap:0;padding-top:4px;padding-bottom:4px}.shop-item{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;padding:12px 0;display:flex}.shop-item:last-child{border-bottom:0}.shop-item input{margin-top:1px}.shop-text{cursor:pointer;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.shop-item.inactive .shop-text{cursor:default}.shop-amount{text-align:right;padding-top:1px}.shop-lines{flex-direction:column;gap:3px;margin:4px 0 0;padding:0;list-style:none;display:flex}.shop-lines li{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.shop-item .note{font-style:italic}.shop-item.done .row-title{color:var(--faint);text-decoration:line-through}.shop-item.done .amount{color:var(--faint)}.shop-item.inactive .row-title{color:var(--muted)}.shop-item.inactive .amount{color:var(--muted);font-weight:500}.btn.small{min-height:30px;margin-top:-4px;padding:4px 10px;font-size:13px}.inline-amount{display:none}@media (width<=560px){.shop-amount{display:none}.inline-amount{display:block}.shop-item .btn.small{padding:4px 8px}}.menu-wrap{position:relative}.menu{z-index:30;background:var(--surface2);border:1px solid var(--border-hover);border-radius:9px;flex-direction:column;min-width:240px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 12px 28px #00000059}.menu button{text-align:left;background:0 0;border:0;border-radius:6px;padding:10px 12px}.menu button:hover{background:var(--accent-bg)}.invite-code{letter-spacing:.12em;color:var(--accent);background:var(--accent-bg);border-radius:8px;padding:4px 12px;font-size:22px;font-weight:600}input.code-input{letter-spacing:.1em;text-transform:uppercase;max-width:200px}.plain{color:var(--body);margin:0;padding-left:18px}.modal-backdrop{z-index:50;background:#08090ba8;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--bg);border:1px solid var(--border-hover);border-radius:14px;flex-direction:column;gap:14px;width:100%;max-width:520px;max-height:calc(100vh - 32px);padding:20px;display:flex}.modal.small{max-width:420px}.modal.wide{max-width:940px}.modal-body{flex-direction:column;gap:12px;display:flex;overflow-y:auto}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.diff-grid{grid-template-columns:110px 1fr 1fr;align-items:start;gap:8px 12px;display:grid}.col-head{color:var(--faint);font-size:12px;font-weight:600}.diff-cell{background:var(--surface2);border:1px solid var(--border);overflow-wrap:anywhere;border-radius:7px;padding:8px 10px;font-size:13px}.diff-cell .changed{color:var(--warn)}@media (width<=640px){.diff-grid{grid-template-columns:1fr 1fr}.diff-grid>span:first-child{display:none}.diff-label{grid-column:1/-1;margin-top:4px}}.toast{z-index:60;left:50%;bottom:calc(var(--nav-h) + 76px + env(safe-area-inset-bottom));background:#2a3038;border:1px solid #3a414c;border-radius:10px;max-width:calc(100vw - 32px);padding:11px 18px;animation:.18s ease-out toast-in;position:fixed;transform:translate(-50%);box-shadow:0 10px 24px #00000059}@media (width>=900px){.toast{margin-left:114px;bottom:84px}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,6px)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.auth,.splash{place-items:center;min-height:100vh;padding:20px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:14px;width:100%;max-width:380px;padding:28px 24px;display:flex}.auth-card .link{align-self:center}.auth-card img{border-radius:14px}
