:root{--accent:#2f7d4f;--accent-soft:#e3f1e8;--bg:#f4f6f3;--surface:#fff;--surface-2:#f8faf7;--text:#1c2b1f;--muted:#66756a;--border:#e1e7e1;--danger:#b3261e;--shadow:0 1px 3px #1428190f, 0 4px 16px #1428190d;--radius:14px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--accent:#5dbb83;--accent-soft:#1d3326;--bg:#111613;--surface:#1a201c;--surface-2:#202722;--text:#e6ede7;--muted:#93a297;--border:#2b342e;--danger:#ff8a80;--shadow:0 1px 3px #0006}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,Segoe UI,Roboto,sans-serif;font-size:16px}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.5}a{color:inherit;text-decoration:none}input,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;outline:none;width:100%;padding:10px 12px}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}label{color:var(--muted);margin-bottom:12px;font-size:13px;font-weight:500;display:block}label input,label select{margin-top:4px}h1,h2,h3{margin:0}code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px}.muted{color:var(--muted)}.small-text{font-size:13px}.hint{color:var(--muted);margin:-2px 0 12px;font-size:13px}.error{color:var(--danger);margin-bottom:10px;font-size:14px}.spacer{flex:1}.empty{text-align:center;color:var(--muted);padding:48px 16px}.empty.small{padding:28px 16px}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.btn{border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:10px;padding:10px 16px;font-weight:600}.btn:hover:not(:disabled){background:var(--surface-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){filter:brightness(1.07);background:var(--accent)}.btn.danger{color:var(--danger)}.btn.small{padding:6px 12px;font-size:14px}.link-btn{color:var(--accent);background:0 0;border:0;padding:6px 0;font-weight:500}.icon-btn{color:var(--muted);background:0 0;border:0;border-radius:8px;padding:8px;line-height:1}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.icon-btn.small{padding:6px 8px;font-size:14px}.auth{justify-content:center;align-items:center;min-height:100%;padding:20px;display:flex}.auth-wrap{width:min(400px,100%)}.auth-card{flex-direction:column;width:100%;padding:28px;display:flex}.auth-card .logo{font-size:40px}.auth-card h1{margin:6px 0 4px;font-size:24px}.auth-card p.muted{margin:0 0 20px}.auth-card input{margin-bottom:10px}.auth-card .btn.primary{margin-top:6px;padding:12px}.auth-card .link-btn{margin-top:10px}.app{height:100%;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);width:260px;padding:16px 12px calc(16px + env(safe-area-inset-bottom));flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.sidebar-head{justify-content:space-between;align-items:center;padding:4px 8px 16px;display:flex}.brand{font-size:17px;font-weight:700}.close-btn{display:none}.list-nav{flex:1}.nav-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 8px 6px;font-size:12px;font-weight:600}.nav-item{border-radius:10px;align-items:center;margin-bottom:2px;display:flex}.nav-item>a,.nav-item>span:first-child{flex:1;align-items:center;gap:8px;min-width:0;padding:10px;display:flex}.nav-item.settings-link{padding:10px}.nav-item:hover{background:var(--surface-2)}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.badge{background:var(--accent);color:#fff;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:600}.nav-actions{padding-right:4px;display:none}.nav-item:hover .nav-actions,.nav-item.active .nav-actions{display:flex}.nav-edit{padding:4px}.nav-edit input{padding:8px 10px}.nav-add{color:var(--accent);text-align:left;background:0 0;border:0;width:100%;padding:10px;font-weight:500}.scrim{display:none}.main{flex:1;min-width:0;overflow-y:auto}.topbar{z-index:5;padding:16px 24px 12px;padding-top:calc(16px + env(safe-area-inset-top));background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);align-items:center;gap:8px;display:flex;position:sticky;top:0}.topbar h1{text-overflow:ellipsis;white-space:nowrap;font-size:26px;font-weight:700;overflow:hidden}.menu-btn{margin-left:-8px;font-size:22px;display:none}.list-layout{padding:0 24px calc(40px + env(safe-area-inset-bottom));align-items:flex-start;gap:24px;display:flex}.list-col{flex:1;min-width:0;max-width:680px}.memory-col{flex-direction:column;flex-shrink:0;gap:16px;width:280px;display:flex;position:sticky;top:76px}.panel-toggle{display:none}.quick-add{margin-bottom:20px;position:relative}.quick-add form{gap:8px;display:flex}.quick-add input{box-shadow:var(--shadow);border-color:#0000;border-radius:12px;padding:12px 14px}.quick-add .btn{border-radius:12px}.suggestions{z-index:10;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0}.suggestions button{text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;width:100%;padding:10px;display:flex}.suggestions button span:nth-last-child(2){flex:1}.suggestions button:hover,.suggestions button.active{background:var(--accent-soft)}.group{margin-bottom:18px}.group-title{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin:0 0 6px 4px;font-size:13px;font-weight:600}.items{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin:0;padding:0;list-style:none;overflow:hidden}.item{border-bottom:1px solid var(--border);align-items:center;gap:4px;padding:0 6px 0 12px;display:flex}.item:last-child{border-bottom:0}.check{border:2px solid var(--border);color:#fff;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;font-size:14px;font-weight:700;transition:background .15s,border-color .15s;display:flex}.check:hover{border-color:var(--accent)}.item.done .check{background:var(--accent);border-color:var(--accent)}.item-body{text-align:left;background:0 0;border:0;flex-direction:column;flex:1;gap:2px;min-width:0;padding:12px 8px;display:flex}.item-name{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.qty{color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:1px 7px;font-size:13px;font-weight:600}.note{color:var(--muted);font-size:13px}.item.done .item-name{color:var(--muted);text-decoration:line-through}.item.done .qty{color:var(--muted);background:0 0}.item .edit{font-size:18px}.checked-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.checked-group .items{opacity:.85}.memory h3{margin-bottom:8px;font-size:15px}.memory ul{margin:0;padding:0;list-style:none}.memory li{align-items:center;gap:6px;padding:3px 0;display:flex}.memory-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.memory .add{color:var(--accent);font-size:16px;font-weight:700}.star{color:var(--muted);background:0 0;border:0;padding:4px;font-size:16px;line-height:1}.star.on{color:#e0a100}.star.big{font-size:24px}.modal-backdrop{z-index:50;background:#00000059;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{width:min(440px,100%);padding:22px}.modal-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.modal-head h2{font-size:19px}.row{gap:12px;display:flex}.row label{flex:1;min-width:0}.modal-actions{align-items:center;gap:8px;margin-top:8px;display:flex}.settings{flex-direction:column;gap:16px;max-width:680px;padding:0 24px 40px;display:flex}.settings h2{margin-bottom:14px;font-size:18px}.settings h3{margin:18px 0 8px;font-size:15px}.members{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.member{align-items:center;gap:10px;display:flex}.avatar{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.code-row{align-items:center;gap:8px;margin:8px 0;display:flex}.code-row input{flex:1}.code-row code{background:var(--surface-2);border:1px solid var(--border);white-space:nowrap;border-radius:8px;flex:1;min-width:0;padding:9px 10px;overflow-x:auto}code.invite{letter-spacing:.12em;flex:0 auto;font-size:18px;font-weight:700}.steps{margin:0;padding-left:20px;font-size:14px;line-height:1.5}.steps li{margin-bottom:10px}.tokens{margin:0;padding:0;list-style:none}.tokens li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.tokens li:last-child{border-bottom:0}.tag{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);border-radius:6px;margin-left:8px;padding:1px 6px;font-size:11px;font-weight:600}@media (width<=1000px){.memory-col{width:100%;display:none;position:static}.memory-col.show{display:flex}.list-layout{flex-direction:column}.list-col{width:100%;max-width:none}.panel-toggle{width:100%;margin-top:4px;display:block}}@media (width<=760px){.sidebar{z-index:40;width:min(300px,85vw);padding-top:calc(16px + env(safe-area-inset-top));transition:transform .22s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.menu-open .sidebar{transform:none;box-shadow:0 0 40px #0003}.menu-open .scrim{z-index:30;background:#0000004d;display:block;position:fixed;inset:0}.close-btn,.menu-btn{display:inline-flex}.nav-actions{display:flex}.topbar{padding-left:16px;padding-right:16px}.topbar h1{font-size:22px}.list-layout,.settings{padding-left:12px;padding-right:12px}.item-body{padding:14px 8px}.row{flex-direction:column;gap:0}.modal-backdrop{align-items:flex-end;padding:0}.modal{padding-bottom:calc(22px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0}}.modal-message{margin-bottom:14px;font-size:15px;line-height:1.5}.modal-message p{margin:0 0 10px}.btn.danger-solid{background:var(--danger);border-color:var(--danger);color:#fff}.btn.danger-solid:hover:not(:disabled){filter:brightness(1.07);background:var(--danger)}.choice{background:var(--surface-2);border-radius:10px;gap:6px;margin:4px 0 10px;padding:4px;display:flex}.choice button{color:var(--muted);background:0 0;border:0;border-radius:8px;flex:1;padding:8px 6px;font-size:14px;font-weight:600}.choice button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.section-label{color:var(--muted);margin:6px 0 4px;font-size:13px;font-weight:600}.danger-zone{border:1px solid color-mix(in srgb, var(--danger) 35%, transparent)}.danger-zone h2{color:var(--danger)}.btn-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.legal-links{text-align:center;color:var(--muted);margin:16px 0 0;font-size:13px}.legal-links a{color:var(--muted)}.legal-links a:hover{color:var(--accent)}.stack{flex-direction:column;gap:10px;display:flex}.stack input{margin:0}textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);resize:vertical;border-radius:10px;outline:none;width:100%;padding:10px 12px}textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}label textarea{margin-top:4px}.nav-label-gap{margin-top:18px}.recipes{padding:0 24px calc(40px + env(safe-area-inset-bottom));max-width:960px}.recipe-toolbar{gap:8px;margin-bottom:12px;display:flex}.recipe-toolbar input{box-shadow:var(--shadow);border-color:#0000;border-radius:12px;padding:11px 14px}.recipe-toolbar .btn{border-radius:12px;align-items:center;display:inline-flex}.chips{flex-wrap:wrap;gap:6px;margin-bottom:18px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:6px 12px;font-size:14px;font-weight:500}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.chip-count{opacity:.65;margin-left:2px;font-size:12px}.recipe-cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.recipe-card{background:var(--surface);border-radius:var(--radius);height:100%;box-shadow:var(--shadow);border:1px solid #0000;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.recipe-card:hover{border-color:var(--accent)}.recipe-card-title{font-weight:600}.recipe-meta{color:var(--muted);margin:0;font-size:13px}.recipe-tags{flex-wrap:wrap;gap:4px;margin:4px 0 0;display:flex}.recipe-tag{background:var(--accent-soft);color:var(--accent);border-radius:6px;padding:1px 7px;font-size:12px}.recipe-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.recipe-head .btn{align-items:center;display:inline-flex}.back-link{padding:0}.recipe-title{margin:4px 0 6px;font-size:24px}.recipe-description{color:var(--muted);margin:10px 0 0;line-height:1.5}.recipe-columns{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:start;gap:20px;margin-top:18px;display:grid}.recipe-view h3,.recipe-editor h3{margin:4px 0 10px;font-size:15px}.recipe-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.stepper{align-items:center;gap:4px;display:flex}.stepper .icon-btn{border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;padding:0;font-size:18px;display:inline-flex}.stepper strong{text-align:center;min-width:26px}.stepper .muted{margin-right:6px}.units-choice{flex:0 auto;margin:0}.units-choice button{padding:6px 10px;font-size:13px}.ingredient-list{margin:0 0 14px;padding:0;list-style:none}.ingredient-list li{border-bottom:1px solid var(--border)}.ingredient-list li:last-child{border-bottom:0}.ingredient-list li.off{opacity:.45}.ingredient-row{color:var(--text);cursor:pointer;align-items:baseline;gap:10px;margin:0;padding:9px 2px;font-size:15px;font-weight:400;display:flex}.ingredient-row input{width:auto;accent-color:var(--accent);margin:0;transform:translateY(2px)}.ingredient-qty{min-width:86px;color:var(--accent);font-weight:600}.ingredient-name{flex:1;min-width:0}.add-to-list{align-items:center;gap:8px;display:flex}.add-to-list select{flex:1;width:auto;min-width:0}.added-note{color:var(--accent);margin:10px 0 0;font-size:14px}.steps-list,.step-editor{margin:0 0 18px;padding:0;list-style:none}.steps-list li{gap:12px;margin-bottom:14px;display:flex}.steps-list p{margin:3px 0 0;line-height:1.55}.step-num{background:var(--accent-soft);width:26px;height:26px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:inline-flex}.recipe-notes{white-space:pre-wrap;margin:0 0 14px;line-height:1.5}.recipe-editor .card{margin-bottom:14px}.recipe-editor label.narrow{flex:0 0 110px}.ingredient-editor{flex-direction:column;gap:6px;margin-bottom:6px;display:flex}.ingredient-edit-row{grid-template-columns:80px 90px minmax(0,1.6fr) minmax(0,1fr) auto;align-items:center;gap:6px;display:grid}.ingredient-edit-row input{padding:8px 10px}.ingredient-edit-row.head span{color:var(--muted);font-size:12px;font-weight:600}.row-actions{display:flex}.quick-paste{margin-top:10px}.quick-paste summary{cursor:pointer;color:var(--accent);font-size:14px;font-weight:500}.quick-paste textarea{margin:0 0 8px}.step-editor li{align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.step-editor .step-num{margin-top:8px}.editor-actions{margin-bottom:20px}@media (width<=860px){.recipe-columns{grid-template-columns:1fr}}@media (width<=760px){.recipes{padding-left:12px;padding-right:12px}.recipe-toolbar .btn{padding:10px 12px}.ingredient-edit-row{grid-template-columns:64px 70px minmax(0,1fr) auto}.ingredient-edit-row input[aria-label=Notes]{grid-column:1/4}.ingredient-edit-row.head span:nth-child(4){display:none}.recipe-editor label.narrow{flex:1}}.made-count{margin-top:-4px}.made-badge{color:var(--accent);font-size:12px;font-weight:500}.sort-select{width:auto;box-shadow:var(--shadow);border-color:#0000;border-radius:12px;flex:none}.cooked-actions{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.cooked-buttons{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.cooked-btn{border-color:var(--accent);color:var(--accent);font-weight:600}.form-row{grid-template-columns:1.4fr 1fr .8fr;gap:10px;display:grid}.form-row label,.stack label{margin-bottom:0}.calendar-head{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;display:flex}.calendar-head h2{text-align:center;min-width:9em;margin:0 4px;font-size:20px}.calendar-head .icon-btn{padding:4px 10px;font-size:22px}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.cal-weekday{color:var(--muted);text-align:center;padding:2px 0;font-size:12px;font-weight:600}.cal-day{background:var(--surface);min-height:104px;box-shadow:var(--shadow);text-align:left;color:var(--text);border:1px solid #0000;border-radius:10px;flex-direction:column;align-items:stretch;gap:3px;padding:6px;display:flex;overflow:hidden}.cal-day:hover{border-color:var(--accent)}.cal-day.other{opacity:.45}.cal-day.today{border-color:var(--accent)}.cal-day.today .cal-num{background:var(--accent);color:#fff}.cal-num{text-align:center;border-radius:11px;align-self:flex-start;min-width:22px;height:22px;padding:0 4px;font-size:13px;font-weight:600;line-height:22px}.cal-chip{background:var(--accent-soft);color:var(--text);white-space:nowrap;text-overflow:ellipsis;border-radius:6px;padding:2px 6px;font-size:12px;overflow:hidden}.cal-chip.linked:hover{text-decoration:underline}.cal-more{color:var(--muted);padding-left:4px;font-size:11px}.cal-agenda{flex-direction:column;gap:10px;display:none}.agenda-day{padding:12px 14px}.agenda-date{width:100%;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:0;display:flex}.agenda-entry{align-items:baseline;gap:8px;margin-top:8px;font-size:15px;display:flex}.agenda-entry a{color:var(--text)}.day-entries{flex-direction:column;gap:10px;margin:0 0 8px;padding:0;list-style:none;display:flex}.day-entries li{align-items:center;gap:8px;display:flex}.day-entry-emoji{text-align:center;width:28px;font-size:20px}.day-entry-body{flex-direction:column;flex:1;min-width:0;display:flex}.day-entry-body a{color:var(--accent);font-weight:600}.day-entry-body .note{color:var(--muted);font-size:13px}@media (width<=760px){.cal-grid{display:none}.cal-agenda{display:flex}.calendar-head h2{min-width:0;font-size:18px}.form-row{grid-template-columns:1fr 1fr}.form-row label:first-child{grid-column:1/-1}}
