:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--green:#2e7d32;--green-text:#2e7d32;--bg:#f4f6f4;--surface:#fff;--text:#1c1f1c;--muted:#5c645c;--border:#dfe4df;--hover:#0000000d;--danger:#c62828;--error-bg:#fdecea;--notice-bg:#e8f5e9;--shadow:0 1px 3px #0000001f;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.4}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--green-text:#81c784;--bg:#121512;--surface:#1e221e;--text:#e8ece8;--muted:#a3ada3;--border:#343a34;--hover:#ffffff12;--danger:#ef9a9a;--error-bg:#4a1f1c;--notice-bg:#1f3a22;--shadow:0 1px 3px #00000080}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}h1,h2,p,ul{margin:0}ul{padding:0;list-style:none}button,input,select,textarea,a.text{font:inherit}button{cursor:pointer;color:inherit;background:0 0;border:none;border-radius:8px}button:disabled{cursor:default;opacity:.5}:focus-visible{outline:2px solid var(--green-text);outline-offset:2px}input:not([type=checkbox]),select,textarea{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:8px;padding:11px 12px}input:not([type=checkbox]):focus,select:focus,textarea:focus{outline:2px solid var(--green-text);outline-offset:-1px}textarea{resize:vertical;line-height:1.4}select{appearance:auto}input[type=checkbox]{width:20px;height:20px;accent-color:var(--green);flex:none;margin:0 6px 0 10px}button.primary{background:var(--green);color:#fff;padding:11px 18px;font-weight:600}button.primary:hover:not(:disabled){filter:brightness(1.1)}button.outlined{border:1px solid var(--border);color:var(--green-text);background:var(--surface);padding:10px 16px;font-weight:600}button.outlined:hover:not(:disabled),button.text:hover:not(:disabled),a.text:hover,button.icon:hover:not(:disabled){background:var(--hover)}button.text,a.text{color:var(--green-text);border-radius:8px;padding:8px 10px;font-weight:600;text-decoration:none}button.icon{flex:none;width:40px;height:40px;font-size:20px}.danger,button.text.danger,button.outlined.danger{color:var(--danger)}.muted{color:var(--muted);font-size:14px}.center{text-align:center}.grow{flex:1;min-width:0}.push-left{margin-right:auto}.push-right{margin-left:auto}.row{align-items:center;gap:10px;display:flex}.row.wrap{flex-wrap:wrap;gap:4px}.big-emoji{text-align:center;font-size:56px}.form-page{justify-content:center;align-items:center;min-height:100%;padding:24px 16px;display:flex}.form-card{flex-direction:column;gap:12px;width:100%;max-width:400px;display:flex}.form-card form{flex-direction:column;gap:12px;display:flex}.form-card h1{text-align:center;font-size:26px}.form-card h1.brand{font-size:34px}.tagline{text-align:center;color:var(--muted);margin-bottom:12px}.form-card hr{border:none;border-top:1px solid var(--border);width:100%;margin:8px 0}.banner{border-radius:8px;padding:10px 12px;font-size:14px}.banner.error{background:var(--error-bg);color:var(--danger)}.banner.notice{background:var(--notice-bg)}.shell{height:100%;display:flex}.sidebar{background:var(--bg);flex-direction:column;min-height:0;display:flex;position:relative}.shell.wide .sidebar{border-right:1px solid var(--border);flex:none;width:340px}.shell.narrow .sidebar{flex:1}.main{flex-direction:column;flex:1;min-width:0;display:flex}.pane{flex-direction:column;flex:1;width:100%;max-width:760px;min-height:0;margin:0 auto;display:flex}.shell.wide .pane{border-left:1px solid var(--border);border-right:1px solid var(--border);background:var(--bg)}.scroll{flex:1;min-height:0;padding-bottom:96px;overflow-y:auto}.toolbar{background:var(--green);color:#fff;flex:none;align-items:center;gap:4px;min-height:56px;padding:6px 8px 6px 16px;display:flex}.toolbar-title{flex:1;min-width:0}.toolbar h1{white-space:nowrap;text-overflow:ellipsis;font-size:19px;font-weight:600;overflow:hidden}.toolbar .icon:hover:not(:disabled){background:#ffffff26}.toolbar :focus-visible{outline-color:#fff}.sync{opacity:.8;font-size:12px}.sync.syncing,.sync.offline{opacity:1}.menu-anchor{flex:none;position:relative}.menu{z-index:20;background:var(--surface);min-width:200px;color:var(--text);border:1px solid var(--border);border-radius:10px;padding:6px 0;position:absolute;top:100%;right:0;box-shadow:0 6px 20px #0003}.menu button{text-align:left;border-radius:0;width:100%;padding:10px 16px}.menu button:hover{background:var(--hover)}.menu-note{color:var(--muted);padding:8px 16px;font-size:14px}.cards{flex-direction:column;gap:10px;padding:12px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px}.list-card{align-items:center;padding-right:6px;display:flex}.list-card.selected{border-color:var(--green-text);box-shadow:inset 3px 0 0 var(--green-text)}.card-main{text-align:left;border-radius:12px;flex-direction:column;flex:1;gap:4px;min-width:0;padding:14px 8px 14px 16px;display:flex}.card-main>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card-title{font-size:18px;font-weight:600}.fab{border-radius:28px;padding:14px 22px;position:absolute;bottom:20px;right:20px;box-shadow:0 3px 10px #0000004d}.empty{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:10px;padding:48px 24px;display:flex}.empty h2{color:var(--text);font-size:20px}.empty.placeholder{flex:1;justify-content:center}.add-bar{background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow);z-index:5;flex-direction:column;flex:none;gap:6px;padding:12px 12px 8px;display:flex;position:relative}.add-row{gap:8px;display:flex}.add-field{flex:1;min-width:0;position:relative}.add-options{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.add-options select.compact{width:auto;max-width:70%;padding:4px 8px;font-size:14px}.suggestions{z-index:10;background:var(--surface);border:1px solid var(--border);border-radius:8px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 6px 20px #0003}.suggestions li{cursor:pointer;align-items:baseline;gap:10px;padding:12px;display:flex}.suggestion-category{flex:none;font-size:12px}.suggestions li:hover,.suggestions li.highlighted{background:var(--hover)}.section{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:16px 16px 6px;font-size:13px;font-weight:600}.checked-header{justify-content:space-between;align-items:center;padding-right:8px;display:flex}.section-toggle{font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit;margin-left:-6px;padding:4px 6px}.entry{border-bottom:1px solid var(--border);align-items:center;min-height:52px;padding-right:8px;display:flex}.entry.pending{opacity:.6}.entry-main{text-align:left;flex-direction:column;flex:1;gap:2px;min-width:0;padding:8px 6px;display:flex}.entry-main:hover:not(:disabled){background:var(--hover)}.entry-main:disabled{opacity:1}.entry-name,.entry-details{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.entry-details{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.entry-note{text-overflow:ellipsis;overflow:hidden}.size-chip{border:1px solid var(--border);color:var(--text);background:var(--bg);border-radius:10px;flex:none;padding:0 7px;font-size:12px;line-height:18px}.stepper{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex:none;align-items:center;margin:0 4px;display:flex}.stepper .step{width:36px;height:36px;color:var(--green-text);border-radius:9px;font-size:20px;font-weight:600;line-height:1}.stepper .step:hover:not(:disabled){background:var(--hover)}.stepper .step:disabled{opacity:.3}.count{flex-direction:column;align-items:center;min-width:30px;padding:0 2px;line-height:1.1;display:flex}.count-number{font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.count-unit{color:var(--muted);font-size:10px}.count-badge{color:var(--muted);flex:none;margin:0 8px;font-size:14px;font-weight:700}.grip{width:28px;color:var(--muted);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;opacity:.55;flex:none;justify-content:center;align-self:stretch;align-items:center;font-size:16px;display:flex}.grip:hover{opacity:1}.entry .grip+input[type=checkbox]{margin-left:2px}.entry.lifted{opacity:.35}.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.drag-ghost{z-index:50;pointer-events:none;background:var(--surface);color:var(--text);border:2px solid var(--green-text);white-space:nowrap;border-radius:10px;padding:10px 16px;font-weight:600;position:fixed;transform:translate(-20%,-50%);box-shadow:0 8px 24px #0000004d}.section-block{transition:background .1s}.section-block.drop-target{background:var(--notice-bg);box-shadow:inset 3px 0 0 var(--green-text)}.drop-tray{padding-bottom:8px}.drop-chips{flex-wrap:wrap;gap:8px;padding:0 16px;display:flex}.drop-chip{border:2px dashed var(--border);color:var(--muted);border-radius:10px;padding:12px 14px;font-size:14px}.drop-chip.drop-target{border-color:var(--green-text);color:var(--text);background:var(--notice-bg);border-style:solid}.section.subsection{text-transform:none;letter-spacing:0;padding-top:8px;padding-left:28px;font-size:13px}.depth-1 .entry{padding-left:12px}.drag-hint{padding:12px 16px 0;font-size:12px}.entry.checked .entry-name{opacity:.6;text-decoration:line-through}.entry .remove{opacity:0;font-size:15px}.entry:hover .remove,.entry .remove:focus-visible{opacity:.7}@media (hover:none){.entry .remove{opacity:.5}}.avatar{background:var(--green);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:26px;height:26px;font-size:11px;font-weight:600;display:inline-flex}.settings{padding:0 12px 96px}.settings .section{padding-left:4px}.settings .card{margin-bottom:8px;padding:10px 14px}.settings .people li{padding:8px 0}.settings .people li+li{border-top:1px solid var(--border)}.settings .hint{padding:0 4px 8px}.invite{flex-direction:column;gap:6px;display:flex}.code{letter-spacing:.08em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:18px}input.code{text-transform:uppercase}.modal{background:var(--surface);width:min(100vw - 32px,440px);color:var(--text);border:none;border-radius:14px;padding:20px;box-shadow:0 12px 40px #00000059}.modal::backdrop{background:#00000073}.modal h2{margin-bottom:14px;font-size:20px}.modal form{flex-direction:column;gap:10px;display:flex}.modal-actions{justify-content:flex-end;align-items:center;gap:6px;margin-top:12px;display:flex}.field-row{gap:8px;display:flex}.field-row .narrow{flex:none;width:110px}.field-label{color:var(--muted);margin-bottom:-6px;font-size:12px}.field-grid{grid-template-columns:.7fr 1fr 1fr;gap:10px 8px;display:grid}.field-grid .field-label{margin-bottom:-6px}button.icon.small{width:32px;height:32px;font-size:15px}button.primary.small{padding:6px 12px;font-size:14px}.category-manager{max-height:55vh;margin:10px -4px 0;overflow-y:auto}.category-row{border-bottom:1px solid var(--border);align-items:center;gap:2px;padding:4px;display:flex}.category-row.sub{padding-left:20px}.category-row .grow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.recipe-list{max-height:55vh;margin-top:10px;overflow-y:auto}.recipe{border-bottom:1px solid var(--border);flex-direction:column;gap:6px;padding:10px 0;display:flex}.recipe-name{font-weight:600}.recipe-items{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.recipe-actions{margin-left:-10px}.ingredient-preview{border:1px solid var(--border);border-radius:8px;max-height:30vh;overflow-y:auto}.ingredient-preview li{align-items:center;gap:8px;padding:6px 10px;font-size:14px;display:flex}.ingredient-preview li+li{border-top:1px solid var(--border)}.amount-chip{border:1px solid var(--border);border-radius:10px;flex:none;padding:0 8px;font-size:12px;line-height:20px}.copy-field{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px}.countdown{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.join-status{min-height:1.4em}.invite-banner b{font-weight:700}.snackbar{z-index:100;color:#fff;background:#323232;border-radius:8px;align-items:center;gap:12px;width:min(100vw - 32px,480px);padding:12px 16px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #00000059}.snackbar span{flex:1}.snackbar button{color:#a5d6a7;padding:4px 8px;font-weight:600}.spinner{border:4px solid var(--border);border-top-color:var(--green-text);border-radius:50%;width:36px;height:36px;margin:48px auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}
