:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f4f2fb;--surface:#fff;--surface-2:#faf9fe;--fg:#221f2e;--muted:#82809a;--line:#e9e6f3;--shadow:0 1px 2px #2314460a, 0 12px 28px -16px #2314462e;--accent:#6d5ce8;--accent-soft:#eae6fc;--add:#0e8f68;--add-soft:#d9f5e9;--warn:#a15c00;--warn-soft:#fdead0;--danger:#c23a63;--danger-soft:#fbe1ea}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#161320;--surface:#211e2c;--surface-2:#272332;--fg:#f1eefa;--muted:#a6a1c4;--line:#332f45;--shadow:0 1px 2px #00000059, 0 14px 32px -16px #0009;--accent:#b3a2ff;--accent-soft:#332a52;--add:#7be6bd;--add-soft:#173a2c;--warn:#ffc978;--warn-soft:#3c2c10;--danger:#ff9fbd;--danger-soft:#3c1f2c}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);margin:0;font:15px/1.6 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1,h2,h3{letter-spacing:-.01em;margin:0;line-height:1.25}a{color:inherit}.card{background:var(--surface);box-shadow:var(--shadow);border-radius:18px}.field{text-align:left;flex-direction:column;gap:6px;display:flex}.field label{color:var(--muted);font-size:.82rem;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--surface-2);color:var(--fg);border-radius:14px;padding:12px 16px;font-family:inherit;font-size:1rem}.field select{cursor:pointer}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.field input:disabled{color:var(--muted);cursor:not-allowed}.field input[type=color]{cursor:pointer;width:68px;height:44px;padding:4px}.field-hint{color:var(--muted);margin:0;font-size:.85rem}.chip-group{flex-wrap:wrap;gap:8px;display:flex}.checkbox-field{color:var(--fg);cursor:pointer;align-items:center;gap:10px;font-size:.92rem;font-weight:600;display:flex}.checkbox-field input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.tag-chip{color:#fff;text-shadow:0 1px 1px #0003;border-radius:999px;align-items:center;padding:4px 12px;font-size:.82rem;font-weight:700;display:inline-flex}.pill{white-space:nowrap;border:1px solid var(--line);color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:12px 20px;font-family:inherit;font-size:.9rem;font-weight:600;line-height:1;text-decoration:none;transition:background-color .15s,border-color .15s,filter .15s;display:inline-flex}.pill.accent{background:var(--accent-soft);color:var(--accent);border:none}.pill.danger{background:var(--danger-soft);color:var(--danger);border:none}.pill.solid{color:#fff;box-shadow:var(--shadow);border:none}.pill.solid.accent{background:var(--accent)}.pill.solid.danger{background:var(--danger)}.pill:hover:not(:disabled):not(.accent):not(.danger):not(.solid){background:var(--surface-2);border-color:var(--muted)}.pill.accent:hover:not(:disabled),.pill.danger:hover:not(:disabled),.pill.solid:hover:not(:disabled){filter:brightness(.92)}.pill:disabled{opacity:.5;cursor:not-allowed}.pill.block{width:100%}.pill.icon-only{gap:0;padding:12px}.error-note{background:var(--danger-soft);color:var(--danger);border-radius:12px;padding:10px 14px;font-size:.85rem}.app-shell{flex-direction:column;min-height:100vh;display:flex}@media (width>=769px){.app-shell{height:100dvh;overflow:hidden}}.app-header{background:var(--surface);border-bottom:1px solid var(--line);z-index:20;flex:none;justify-content:space-between;align-items:center;gap:16px;height:64px;padding:0 24px;display:flex;position:sticky;top:0}.app-header-left,.app-header-right{align-items:center;gap:12px;min-width:0;display:flex}.app-header-title{letter-spacing:-.01em;color:var(--accent);font-size:1.15rem;font-weight:700;text-decoration:none}.burger-btn{width:36px;height:36px;color:var(--fg);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;display:none}.burger-btn:hover{background:var(--surface-2)}.app-body{flex:1;min-height:0;display:flex}.app-sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex:none;width:260px;display:flex}.sidebar-nav{flex:1;min-height:0;padding:16px 0;overflow:hidden auto}.sidebar-action{padding:0 16px 20px;position:relative}.sidebar-new-menu{min-width:220px;top:52px;left:16px;right:auto}.nav-badge{background:var(--accent);color:#fff;text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:22px;margin-left:auto;padding:2px 7px;font-size:.72rem;font-weight:700;line-height:1.4}.nav-group-label .nav-badge{margin-right:8px}.sidebar-status{border-top:1px solid var(--line);color:var(--muted);flex:none;align-items:center;gap:8px;padding:12px 20px;font-size:.78rem;display:flex}.status-dot{background:var(--muted);border-radius:50%;flex:none;width:9px;height:9px}.status-dot.online{background:var(--add);animation:1.4s ease-in-out infinite status-blink}@keyframes status-blink{0%,to{opacity:1}50%{opacity:.25}}.status-text{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.status-version{color:var(--muted);flex:none;font-weight:700;text-decoration:none}.status-version:hover{color:var(--accent);text-decoration:underline}.app-content{flex:1;padding:24px;overflow:hidden auto}.sidebar-overlay{display:none}@media (width<=768px){.burger-btn{display:flex}.app-sidebar{z-index:40;width:75vw;max-width:75vw;box-shadow:var(--shadow);transition:transform .2s;position:fixed;top:64px;bottom:0;left:0;transform:translate(-100%)}.app-sidebar.open{transform:translate(0)}.sidebar-overlay.open{z-index:30;background:#00000059;display:block;position:fixed;inset:64px 0 0}.app-header{gap:10px;padding:0 16px}.app-header-right{gap:8px}.household-switcher-name{max-width:96px}.app-content{padding:16px}}.nav-group{margin-bottom:12px}.nav-group-label{text-align:left;text-transform:uppercase;letter-spacing:.04em;width:100%;color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;margin:0;padding:8px 20px 6px;font-family:inherit;font-size:.72rem;font-weight:700;display:flex}.nav-group-label:hover{color:var(--fg)}.nav-group-chevron{flex:none;transition:transform .18s;display:inline-flex}.nav-group-chevron.collapsed{transform:rotate(-90deg)}.nav-group ul{margin:0;padding:0;list-style:none}.nav-item{color:var(--fg);border-radius:0 999px 999px 0;align-items:center;gap:10px;margin-right:14px;padding:10px 20px;font-size:.92rem;font-weight:600;text-decoration:none;display:flex}.nav-item svg{color:var(--muted);flex:none}.nav-item.active svg{color:var(--accent)}.nav-item:hover{background:var(--surface-2)}.nav-item.active{background:var(--accent-soft);color:var(--accent)}.user-menu{flex:none;position:relative}.user-avatar{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:36px;height:36px;font-family:inherit;font-size:.95rem;font-weight:700;display:flex}.user-menu-dropdown{flex-direction:column;gap:10px;min-width:260px;max-width:320px;padding:16px;display:flex;position:absolute;top:calc(100% + 10px);right:0}.user-menu-identity{flex-direction:column;gap:2px;margin-bottom:4px;display:flex}.user-menu-name{color:var(--fg);margin:0;font-size:.95rem;font-weight:700}.user-menu-email{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.85rem;overflow:hidden}.theme-switcher{flex-direction:column;gap:8px;display:flex}.theme-switcher-label{color:var(--muted);font-size:.78rem;font-weight:600}.theme-switcher-options{background:var(--surface-2);border:1px solid var(--line);border-radius:999px;gap:4px;padding:4px;display:flex}.theme-switcher-option{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:1;padding:7px 10px;font-family:inherit;font-size:.82rem;font-weight:600;line-height:1;transition:background-color .15s,color .15s}.theme-switcher-option:hover:not(.active){color:var(--fg)}.theme-switcher-option.active{background:var(--accent-soft);color:var(--accent)}.household-switcher{min-width:0;position:relative}.household-switcher-trigger{border:1px solid var(--line);max-width:100%;color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-family:inherit;font-size:.88rem;font-weight:600;transition:background-color .15s;display:inline-flex}.household-switcher-trigger:hover{background:var(--surface-2)}.household-switcher-name{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.household-switcher-trigger svg{flex:none}.household-switcher-dropdown{z-index:20;flex-direction:column;gap:10px;min-width:260px;max-width:320px;padding:16px;display:flex;position:absolute;top:calc(100% + 10px);right:0}.household-switcher-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.household-switcher-item{width:100%;color:var(--fg);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:space-between;align-items:center;padding:10px 12px;font-family:inherit;font-size:.9rem;font-weight:600;display:flex}.household-switcher-item:hover{background:var(--surface-2)}.household-switcher-item.active{background:var(--accent-soft);color:var(--accent)}.household-switcher-owner-badge{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.7rem;font-weight:700}.household-switcher-create-form{gap:8px;display:flex}.household-switcher-create-form input{border:1px solid var(--line);background:var(--surface-2);min-width:0;color:var(--fg);border-radius:10px;flex:1;padding:10px 12px;font-family:inherit;font-size:.9rem}.bottom-banner{inset-inline:0;z-index:50;background:var(--surface);border-top:1px solid var(--line);box-shadow:var(--shadow);flex-direction:column;gap:14px;padding:16px 24px;display:flex;position:fixed;bottom:0}.bottom-banner-text{color:var(--fg);max-width:720px;margin:0;font-size:.88rem;line-height:1.5}.bottom-banner-actions{flex-wrap:wrap;gap:10px;display:flex}@media (width>=640px){.bottom-banner{flex-direction:row;justify-content:space-between;align-items:center}}@media (width>=769px){.bottom-banner{border:1px solid var(--line);border-bottom:none;border-radius:20px 20px 0 0;width:min(720px,100% - 48px);margin-inline:auto;inset-inline:0}}.install-prompt-row{align-items:center;gap:12px;display:flex}.install-prompt-icon{border-radius:12px;flex:none;width:44px;height:44px}.update-banner-icon{background:var(--accent-soft);width:44px;height:44px;color:var(--accent);border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex}.install-prompt-text{flex:auto;min-width:0}.install-prompt-title{margin:0;font-size:.92rem;font-weight:700}.install-prompt-subtitle{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.8rem;overflow:hidden}.install-prompt-close{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;font-size:1.3rem;line-height:1}.install-prompt-close:hover{background:var(--surface-2)}.install-ios-overlay{z-index:60;background:#00000080;justify-content:center;align-items:flex-end;padding:20px;display:flex;position:fixed;inset:0}.install-ios-sheet{width:100%;max-width:360px;padding:24px}.install-ios-steps{color:var(--fg);margin:0;padding-left:20px;font-size:.9rem;line-height:1.6}.install-ios-steps li{margin-bottom:8px}.slide-over-overlay{z-index:70;opacity:0;pointer-events:none;background:#00000059;transition:opacity .2s;position:fixed;inset:0}.slide-over-overlay.open{opacity:1;pointer-events:auto}.slide-over-panel{background:var(--surface);width:420px;max-width:90vw;box-shadow:var(--shadow);flex-direction:column;transition:transform .25s;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.slide-over-panel.wide{width:840px}.slide-over-panel.open{transform:translate(0)}.slide-over-header{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:12px;padding:20px 24px;display:flex}.slide-over-title{font-size:1.1rem}.slide-over-close{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;font-size:1.3rem;line-height:1}.slide-over-close:hover{background:var(--surface-2)}.slide-over-body{flex-direction:column;flex:1;gap:16px;padding:24px;display:flex;overflow:hidden auto}.slide-over-footer{gap:10px;margin-top:8px;display:flex}.slide-over-footer .pill{flex:1}.page-footer{justify-content:flex-end}.page-footer .pill{flex:none}.confirm-overlay{z-index:80;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.confirm-card{text-align:center;width:100%;max-width:360px;padding:28px}.confirm-icon{background:var(--danger-soft);width:48px;height:48px;color:var(--danger);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 16px;font-size:1.4rem;font-weight:700;display:flex}.confirm-title{margin-bottom:8px;font-size:1.1rem}.confirm-message{color:var(--muted);margin:0 0 20px;font-size:.9rem;line-height:1.5}.confirm-actions{gap:10px;display:flex}.confirm-actions .pill{flex:1}.confirm-card .install-ios-steps{text-align:left;margin-bottom:20px}.qr-card{width:100%;max-width:340px;padding:20px}.qr-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.qr-title{overflow-wrap:anywhere;min-width:0;margin:0;font-size:1.05rem}.qr-surface{background:#fff;border-radius:12px;padding:12px}.qr-image{width:100%;height:auto;display:block}.qr-value{text-align:center;color:var(--muted);overflow-wrap:anywhere;margin:14px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem}.qr-scanner-card{width:100%;max-width:380px;padding:20px}.qr-scanner-stage{aspect-ratio:1;background:#000;border-radius:12px;position:relative;overflow:hidden}.qr-scanner-video{object-fit:cover;width:100%;height:100%;display:block}.qr-scanner-frame{pointer-events:none;border:3px solid #ffffffe6;border-radius:12px;position:absolute;inset:15%;box-shadow:0 0 0 100vmax #00000059}.qr-scanner-hint{inset-inline:0;text-align:center;color:#fff;margin:0;font-size:.85rem;position:absolute;bottom:12px}.qr-scanner-note{text-align:center;color:var(--muted);margin:14px 0 0;font-size:.85rem;line-height:1.4}.qr-scanner-error{color:var(--danger);margin:0;font-size:.9rem;line-height:1.5}.table-toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.table-toolbar h1{font-size:1.25rem}.data-table{border-collapse:collapse;width:100%}.table-card>.data-table thead tr:first-child th:first-child{border-top-left-radius:18px}.table-card>.data-table thead tr:first-child th:last-child{border-top-right-radius:18px}.table-card>.data-table tbody tr:last-child td:first-child{border-bottom-left-radius:18px}.table-card>.data-table tbody tr:last-child td:last-child{border-bottom-right-radius:18px}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);padding:12px 20px;font-size:.72rem;font-weight:700}.data-table td{border-bottom:1px solid var(--line);padding:14px 20px;font-size:.92rem}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--surface-2)}.data-table tr.row-enter{animation:.25s row-fade-in}.data-table tr.row-exit{animation:.22s forwards row-fade-out}.data-table tr.row-flash td{animation:.9s row-flash}@keyframes row-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes row-fade-out{0%{opacity:1}to{opacity:0;transform:scale(.98)}}@keyframes row-flash{0%{background:var(--accent-soft)}to{background:0 0}}.data-table .actions-cell{justify-content:flex-end;gap:6px;display:flex}.pagination{justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.pagination .pill{flex:none;padding:10px 16px}.pagination-status{color:var(--muted);text-align:center;font-size:.85rem;font-weight:600}@media (width<=768px){.pagination{gap:8px}.pagination .pill{padding:8px 12px;font-size:.85rem}.pagination-status{white-space:nowrap;font-size:.8rem}.data-table,.data-table tbody,.data-table tr,.data-table td{width:100%;display:block}.data-table thead{display:none}.data-table tr{border-bottom:1px solid var(--line);padding:12px 16px;position:relative}.data-table tr:last-child{border-bottom:none}.data-table tbody tr:first-child{border-radius:18px 18px 0 0}.data-table tbody tr:last-child{border-radius:0 0 18px 18px}.data-table td{border:none;padding:0}.data-table td:first-child{align-items:center;gap:6px;min-height:32px;font-weight:600;display:flex}.data-table tr:has(.actions-cell) td:first-child{padding-right:76px}.data-table td[data-label]{color:var(--muted);justify-content:space-between;align-items:baseline;gap:12px;margin-top:4px;font-size:.86rem;display:flex}.data-table td[data-label]:before{content:attr(data-label);font-weight:600}.data-table td:has(>.actions-cell){width:auto;position:absolute;top:10px;right:12px}.data-table tr:hover td,.data-table tr.row-flash td{background:0 0;animation:none}.data-table tr:hover{background:var(--surface-2)}.data-table tr.row-flash{animation:.9s row-flash}}.tooltip-wrapper{vertical-align:middle;display:inline-flex;position:relative}.tooltip-bubble{background:var(--fg);width:max-content;max-width:min(280px,70vw);color:var(--bg);box-shadow:var(--shadow);opacity:0;pointer-events:none;z-index:15;border-radius:8px;padding:6px 10px;font-size:.75rem;font-weight:600;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px)}.tooltip-bubble:after{content:"";border:5px solid #0000;border-top-color:var(--fg);position:absolute;top:100%;left:50%;transform:translate(-50%)}.tooltip-wrapper:hover .tooltip-bubble,.tooltip-wrapper:focus-within .tooltip-bubble{opacity:1;transform:translate(-50%)translateY(0)}.tooltip-bubble.tooltip-bubble-start{left:0;transform:translateY(4px)}.tooltip-bubble.tooltip-bubble-start:after{left:12px;transform:none}.tooltip-wrapper:hover .tooltip-bubble.tooltip-bubble-start,.tooltip-wrapper:focus-within .tooltip-bubble.tooltip-bubble-start{transform:translateY(0)}.tooltip-bubble.tooltip-bubble-end{left:auto;right:0;transform:translateY(4px)}.tooltip-bubble.tooltip-bubble-end:after{left:auto;right:12px;transform:none}.tooltip-wrapper:hover .tooltip-bubble.tooltip-bubble-end,.tooltip-wrapper:focus-within .tooltip-bubble.tooltip-bubble-end{transform:translateY(0)}.editing-indicator{background:var(--warn-soft);width:20px;height:20px;color:var(--warn);cursor:default;border-radius:50%;justify-content:center;align-items:center;margin-left:10px;display:inline-flex}.excluded-indicator{background:var(--surface-2);width:20px;height:20px;color:var(--muted);cursor:default;border-radius:50%;justify-content:center;align-items:center;margin-left:10px;display:inline-flex}.icon-btn{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;transition:background-color .15s,color .15s;display:inline-flex}.icon-btn:hover{background:var(--line);color:var(--fg)}.icon-btn.danger:hover{background:var(--danger-soft);color:var(--danger)}.icon-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.empty-state{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:14px;padding:56px 16px;display:flex}.empty-state-icon{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.empty-state-icon svg{width:26px;height:26px}.skeleton{background:linear-gradient(90deg, var(--surface-2) 25%, var(--line) 37%, var(--surface-2) 63%);background-size:400% 100%;border-radius:6px;animation:1.4s infinite skeleton-shimmer;display:inline-block}@keyframes skeleton-shimmer{0%{background-position:100%}to{background-position:0}}.toast-stack{z-index:90;flex-direction:column-reverse;gap:10px;max-width:calc(100vw - 32px);display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--surface);box-shadow:var(--shadow);border-left:4px solid var(--add);color:var(--fg);border-radius:14px;align-items:center;gap:10px;padding:12px 10px 12px 16px;font-size:.88rem;font-weight:600;animation:.2s toast-in;display:flex}.toast-error{border-left-color:var(--danger)}.toast-icon{background:var(--add-soft);width:20px;height:20px;color:var(--add);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:inline-flex}.toast-error .toast-icon{background:var(--danger-soft);color:var(--danger)}.toast-message{flex:1}.toast-close{width:22px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;font-family:inherit;font-size:1rem;line-height:1;transition:background-color .15s,color .15s;display:inline-flex}.toast-close:hover{background:var(--surface-2);color:var(--fg)}@keyframes toast-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.recipe-form{flex-direction:column;gap:16px;display:flex}.field textarea{resize:vertical;min-height:72px}.field-row{flex-wrap:wrap;gap:12px;display:flex}.field-row>.field{flex:140px;min-width:0}.chip-dot{border-radius:50%;flex:none;width:9px;height:9px}.image-preview{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.image-preview img{object-fit:cover;border:1px solid var(--line);border-radius:14px;width:120px;height:120px}.image-preview-actions{flex-direction:column;gap:8px;display:flex}.image-drop{border:2px dashed var(--line);background:var(--surface-2);width:100%;color:var(--muted);cursor:pointer;text-align:center;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:26px 16px;font-family:inherit;transition:border-color .15s,background-color .15s,color .15s;display:flex}.image-drop:hover:not(:disabled),.image-drop.dragover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.image-drop:disabled{cursor:progress}.image-drop-title{color:inherit;font-size:.92rem;font-weight:600}.image-drop-hint{font-size:.8rem}.ingredient-row{grid-template-columns:90px 100px minmax(0,2fr) minmax(0,1.5fr) auto;align-items:center;gap:8px;margin-bottom:8px;display:grid}.ingredient-row select,.ingredient-row input{border:1px solid var(--line);background:var(--surface-2);color:var(--fg);border-radius:12px;min-width:0;padding:10px 12px;font-family:inherit;font-size:.92rem}.section-row{border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:8px;margin-bottom:10px;padding:12px;display:flex}.section-row-head{align-items:center;gap:6px;display:flex}.section-row-head input{border:1px solid var(--line);background:var(--surface-2);min-width:0;color:var(--fg);border-radius:12px;flex:1;padding:10px 12px;font-family:inherit}.section-row textarea{border:1px solid var(--line);background:var(--surface-2);color:var(--fg);resize:vertical;border-radius:12px;padding:10px 12px;font-family:inherit;font-size:.95rem}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-auto-rows:1fr;gap:18px;display:grid}.recipe-card-slot{display:flex}.recipe-card{background:var(--surface);width:100%;box-shadow:var(--shadow);text-align:left;cursor:pointer;color:inherit;border:none;border-radius:18px;flex-direction:column;padding:0;font-family:inherit;transition:transform .15s,box-shadow .15s;display:flex;position:relative;overflow:hidden}.recipe-card:hover{transform:translateY(-2px)}.recipe-card-image{aspect-ratio:4/3;object-fit:cover;background:var(--surface-2);width:100%;display:block}.recipe-card-image.placeholder{color:var(--muted);justify-content:center;align-items:center;display:flex}.recipe-card-body{flex-direction:column;flex:1;gap:8px;padding:14px 16px 16px;display:flex}.recipe-card-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:1rem;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.recipe-card-meta{justify-content:space-between;align-items:center;gap:8px;margin-top:auto;display:flex}.recipe-card-menu{z-index:2;position:absolute;top:10px;right:10px}.recipe-card-fav{color:var(--muted);opacity:.55;flex:none;align-items:center;display:inline-flex}.recipe-card-fav.active{color:var(--danger);opacity:1}.star-rating{color:var(--warn);align-items:center;gap:2px;display:inline-flex}.star-rating .star-empty{color:var(--muted);opacity:.55}.star-rating-count{color:var(--muted);margin-left:4px;font-size:.8rem}.star-rating button{cursor:pointer;color:inherit;background:0 0;border:none;padding:0;display:inline-flex}.card-menu-btn{color:#221f2e;cursor:pointer;width:32px;height:32px;box-shadow:var(--shadow);background:#ffffffeb;border:none;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.card-menu-btn:hover{background:#fff}.dropdown-menu{background:var(--surface);border:1px solid var(--line);min-width:180px;box-shadow:var(--shadow);z-index:30;border-radius:14px;padding:6px;position:absolute;top:38px;right:0}.dropdown-menu button{text-align:left;width:100%;color:var(--fg);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:.9rem;display:flex}.dropdown-menu button svg{color:var(--muted);flex:none}.dropdown-menu button:hover{background:var(--surface-2)}.dropdown-menu button.danger,.dropdown-menu button.danger svg{color:var(--danger)}.dropdown-menu button.danger:hover{background:var(--danger-soft)}.filter-bar{flex-direction:column;gap:14px;margin-bottom:18px;padding:16px;display:flex}.filter-top{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.filter-search{border:1px solid var(--line);background:var(--surface-2);min-width:0;color:var(--fg);border-radius:999px;flex:220px;padding:12px 16px;font-family:inherit;font-size:.95rem}.filter-select{appearance:none;border:1px solid var(--line);background-color:var(--surface-2);color:var(--fg);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2382809a' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;border-radius:999px;padding:11px 38px 11px 16px;font-family:inherit;font-size:.9rem}:root[data-theme=dark] .filter-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a6a1c4' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}.filter-select:focus{outline:2px solid var(--accent);outline-offset:1px}.filter-group{flex-direction:column;gap:8px;display:flex}.filter-group-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.filter-group-label{color:var(--muted);font-size:.82rem;font-weight:700}.mode-toggle{border:1px solid var(--line);border-radius:999px;display:inline-flex;overflow:hidden}.mode-toggle button{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:5px 12px;font-family:inherit;font-size:.78rem;font-weight:700}.mode-toggle button.active{background:var(--accent);color:#fff}.filter-summary{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;font-size:.88rem;display:flex}.recipe-detail{flex-direction:column;gap:18px;display:flex}.recipe-hero{object-fit:cover;border-radius:18px;width:100%;max-height:380px;display:block}.recipe-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.recipe-facts{flex-wrap:wrap;gap:10px;display:flex}.fact{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:10px 14px;font-size:.88rem}.fact strong{color:var(--muted);font-size:.75rem;font-weight:700;display:block}.recipe-columns{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);align-items:start;gap:18px;display:grid}.recipe-panel{padding:18px}.recipe-panel h2{margin-bottom:12px;font-size:1rem}.ingredient-list,.section-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.ingredient-list li{border-bottom:1px solid var(--line);align-items:baseline;gap:8px;padding-bottom:8px;display:flex}.ingredient-amount{white-space:nowrap;font-weight:700}.ingredient-comment{color:var(--muted);font-size:.85rem}.section-list li h3{margin-bottom:4px;font-size:.95rem}.section-list li p{white-space:pre-wrap;margin:0}.rating-box{flex-wrap:wrap;align-items:center;gap:12px;display:flex}@media (width<=900px){.recipe-columns{grid-template-columns:minmax(0,1fr)}}@media (width<=640px){.ingredient-row{grid-template-columns:minmax(0,1fr) auto}.ingredient-row select[aria-label=Lebensmittel],.ingredient-row input[aria-label=Kommentar]{grid-column:1/-1}.recipe-grid{grid-template-columns:1fr;gap:12px}}.results.refreshing{opacity:.5;pointer-events:none;transition:opacity .15s}.recipe-note{white-space:pre-wrap;margin:0}.nutrition-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;display:grid}.nutrition-field{flex-direction:column;gap:4px;display:flex}.nutrition-field label{color:var(--muted);font-size:.78rem;font-weight:600}.nutrition-field label span{opacity:.8;font-weight:500}.nutrition-field input{border:1px solid var(--line);background:var(--surface-2);color:var(--fg);border-radius:12px;min-width:0;padding:10px 12px;font-family:inherit;font-size:.92rem}.nutrition-field input:focus{outline:2px solid var(--accent);outline-offset:1px}.nutrition-list{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 18px;display:grid}.nutrition-item{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:10px;padding-bottom:8px;display:flex}.nutrition-label{color:var(--muted);font-size:.88rem}.nutrition-value{white-space:nowrap;font-weight:700}.fact{align-items:center;gap:10px;display:flex}.fact-icon{color:var(--accent);flex:none;display:inline-flex}.fact-text{flex-direction:column;min-width:0;display:flex}@media (width>=901px){.recipe-ingredients{max-height:calc(100dvh - 112px);position:sticky;top:0;overflow-y:auto}}.import-review{flex-direction:column;gap:18px;display:flex}.import-summary{align-items:flex-start;gap:16px;display:flex}.import-summary-text{flex:1;min-width:0}.import-summary img{object-fit:cover;border-radius:14px;flex:none;width:110px;height:110px}.import-summary h2{margin-bottom:4px}.import-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1.4fr) 80px 130px minmax(0,1.4fr) minmax(0,1fr);align-items:center;gap:8px;padding:10px 0;display:grid}.import-row input,.import-row select{border:1px solid var(--line);background:var(--surface-2);color:var(--fg);border-radius:12px;min-width:0;padding:9px 11px;font-family:inherit;font-size:.9rem}.import-raw{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;overflow:hidden}.import-hint{color:var(--warn);grid-column:1/-1;margin:0;font-size:.82rem}.import-confident{margin-top:14px}.import-tags{flex-direction:column;gap:8px;display:flex}.import-tag{align-items:center;gap:10px;display:flex}.import-tag input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex:none}.import-tag-text{text-overflow:ellipsis;flex:1;min-width:0;font-weight:600;overflow:hidden}.import-tag select{border:1px solid var(--line);background:var(--surface-2);color:var(--fg);border-radius:12px;max-width:220px;padding:8px 11px;font-family:inherit;font-size:.88rem}@media (width<=760px){.import-row{grid-template-columns:90px minmax(0,1fr)}.import-raw,.import-row select[aria-label=Lebensmittel],.import-row input[aria-label=Kommentar]{grid-column:1/-1}.import-raw{white-space:normal}.import-summary{flex-direction:column}}.pill.match-word{gap:8px;padding:8px 14px;font-weight:500}.pill.match-word span{color:var(--muted);font-weight:700}.pill.match-word:hover{border-color:var(--danger);color:var(--danger)}.pill.match-word:hover span{color:var(--danger)}.inline-create{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;margin-top:6px;display:flex}.inline-create-label{color:var(--muted);flex:none;font-size:.8rem;font-weight:600}.inline-create input{flex:160px;min-width:0}.inline-create input.inline-create-short{flex:0 150px}.recipe-note a{color:var(--accent);overflow-wrap:anywhere;font-weight:600}.sortable-list{flex-direction:column;gap:8px;margin:0 0 10px;padding:0;list-style:none;display:flex}.sortable-row{align-items:center;gap:8px;display:flex}.sortable-row input{border:1px solid var(--line);background:var(--surface-2);min-width:0;color:var(--fg);border-radius:12px;flex:1;padding:10px 12px;font-family:inherit}.sortable-row.dragging{opacity:.6}.drag-handle{width:32px;height:32px;color:var(--muted);cursor:grab;touch-action:none;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.drag-handle:active{cursor:grabbing;background:var(--surface-2)}.page-fade{opacity:1;transition:opacity .14s}.page-fade.out{opacity:0}@media (prefers-reduced-motion:reduce){.page-fade{transition:none}}.sheet-overlay{z-index:85;background:#00000073;align-items:flex-end;animation:.2s both sheet-fade-in;display:flex;position:fixed;inset:0}.sheet-overlay.closing{animation:.2s both sheet-fade-out}.sheet{overscroll-behavior:contain;background:var(--surface);width:100%;max-height:85dvh;padding:8px 12px calc(14px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;animation:.24s cubic-bezier(.2,.8,.2,1) both sheet-slide-in;overflow-y:auto;box-shadow:0 -8px 30px #0000002e}.sheet-overlay.closing .sheet{animation:.2s ease-in both sheet-slide-out}.sheet-handle{background:var(--line);border-radius:999px;width:40px;height:4px;margin:2px auto 10px}.sheet-title{overflow-wrap:anywhere;padding:0 12px 8px;font-size:.95rem}.sheet .sheet-content{width:100%;min-width:0;max-width:none;box-shadow:none;z-index:auto;background:0 0;border:none;border-radius:0;position:static}.sheet .dropdown-menu{padding:0}.sheet .dropdown-menu button{white-space:normal;padding:14px 12px;font-size:1rem}.sheet .user-menu-dropdown,.sheet .household-switcher-dropdown{padding:4px 8px 0}html.sheet-open,html.sheet-open body{overflow:hidden}@keyframes sheet-slide-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheet-slide-out{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes sheet-fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-fade-out{0%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.sheet-overlay,.sheet-overlay .sheet{animation-duration:1ms}}.plan-toolbar-actions{align-items:center;gap:10px;display:flex}.plan-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;margin-bottom:18px;padding:12px 16px;display:flex}.week-nav{align-items:center;gap:8px;display:flex}.week-nav-label{text-align:center;font-variant-numeric:tabular-nums;min-width:11.5rem;font-weight:700}.plan-week-start{color:var(--muted);align-items:center;gap:8px;font-size:.85rem;display:flex}.plan-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-items:start;gap:14px;display:grid}@media (width>=2100px){.plan-grid{grid-template-columns:repeat(7,minmax(0,1fr))}}.plan-day{flex-direction:column;gap:10px;min-height:118px;padding:14px;display:flex}.plan-week-slot{background:var(--accent-soft);min-height:0;box-shadow:none;grid-column:1/-1}.plan-day header{align-items:baseline;gap:8px;display:flex}.plan-day h2{font-size:.95rem}.plan-day header span{color:var(--muted);font-size:.8rem}.plan-day.today{outline:2px solid var(--accent);outline-offset:-2px}.plan-day.today h2{color:var(--accent)}.plan-entries{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.plan-week-slot .plan-entries{flex-flow:wrap}.plan-week-slot .plan-entry{flex:230px;max-width:340px}.plan-entry{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;align-items:center;gap:2px;padding:4px 4px 4px 6px;display:flex}.plan-week-slot .plan-entry{background:var(--surface)}.plan-entry-link{min-width:0;color:inherit;flex:1;align-items:center;gap:10px;font-size:.9rem;font-weight:600;text-decoration:none;display:flex}.plan-entry-link img,.picker-row img,.picker-thumb-placeholder{object-fit:cover;border-radius:9px;flex:none;width:36px;height:36px}.picker-thumb-placeholder{background:var(--surface);border:1px solid var(--line);color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.plan-entry-grip{width:20px;height:32px;color:var(--muted);opacity:.55;cursor:grab;touch-action:none;flex:none;justify-content:center;align-items:center;display:inline-flex}@media (hover:hover){.plan-entry.draggable{cursor:grab}}.plan-entry.dragging{opacity:.35}.plan-day.drop-target{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--accent-soft)}.plan-drag-ghost{z-index:90;background:var(--accent);color:#fff;white-space:nowrap;text-overflow:ellipsis;max-width:240px;box-shadow:var(--shadow);pointer-events:none;border-radius:12px;padding:8px 14px;font-size:.88rem;font-weight:700;position:fixed;overflow:hidden;transform:translate(12px,-50%)}html.is-dragging,html.is-dragging *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.plan-entry .icon-btn{flex:none;width:28px;height:28px}.plan-entry-name{-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25;display:-webkit-box;overflow:hidden}.plan-entry-link:hover .plan-entry-name{text-decoration:underline}.plan-add{border:1px dashed var(--line);color:var(--muted);font:inherit;cursor:pointer;background:0 0;border-radius:999px;align-self:flex-start;align-items:center;gap:6px;margin-top:auto;padding:6px 12px;font-size:.8rem;font-weight:600;transition:color .15s,border-color .15s;display:inline-flex}.plan-add:hover{color:var(--accent);border-color:var(--accent)}.plan-week{flex-direction:column;gap:12px;padding:16px;display:flex}.plan-week header{align-items:baseline;gap:8px;display:flex}.plan-week h2{font-size:.95rem}.plan-week header span{color:var(--muted);font-size:.8rem}.plan-week .plan-entries{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;display:grid}.plan-shop-list{border:1px solid var(--line);border-radius:12px;max-height:40vh;margin:12px 0 16px;padding:0;list-style:none;overflow-y:auto}.plan-shop-list li{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:9px 12px;font-size:.9rem;display:flex}.plan-shop-list li:last-child{border-bottom:0}.picker-card,.plan-target-card{flex-direction:column;width:100%;max-width:420px;max-height:min(640px,100dvh - 40px);padding:20px;display:flex}.picker-search{flex:none;width:100%;margin-bottom:12px}.picker-list,.plan-target-list{flex-direction:column;gap:6px;min-height:0;display:flex;overflow-y:auto}.picker-row,.plan-target{text-align:left;border:1px solid var(--line);background:var(--surface-2);width:100%;color:var(--fg);font:inherit;cursor:pointer;border-radius:12px;align-items:center;gap:12px;padding:8px 12px;font-size:.9rem;font-weight:600;transition:border-color .15s,background-color .15s;display:flex}.picker-row:hover,.plan-target:hover{border-color:var(--accent);background:var(--accent-soft)}.plan-target{justify-content:space-between;padding:11px 14px}.plan-target span{white-space:nowrap;color:var(--muted);font-size:.82rem;font-weight:500}.plan-target.current{border-color:var(--accent);background:var(--accent-soft)}.plan-target-card .week-nav{justify-content:space-between;margin-bottom:12px}@media (width<=640px){.plan-grid{grid-template-columns:1fr;gap:10px}.plan-day{min-height:0}.plan-bar{flex-direction:column;align-items:stretch}.plan-bar .week-nav{justify-content:space-between}.week-nav-label{flex:1;min-width:0}.plan-week-start{justify-content:space-between}.plan-week .plan-entries{grid-template-columns:1fr}}.row-link{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0}.row-link:hover{color:var(--accent);text-decoration:underline}.shop-toolbar-actions{gap:8px;display:flex}.shop-card{flex-direction:column;gap:10px;margin-bottom:14px;padding:16px;display:flex}.shop-card h2{font-size:1rem}.shop-section h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:6px 0 4px;font-size:.75rem;font-weight:700}.shop-entries{margin:0;padding:0;list-style:none}.shop-entry{border-bottom:1px solid var(--line);align-items:center;gap:4px;display:flex}.shop-entries .shop-entry:last-child{border-bottom:0}.shop-check{cursor:pointer;flex:none;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.shop-check input{width:22px;height:22px;accent-color:var(--accent);cursor:pointer}.shop-entry-text{min-width:0;font:inherit;color:var(--fg);text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:baseline;gap:10px;padding:10px 0;display:flex}.shop-entry-text:disabled{cursor:default}.shop-amount{font-variant-numeric:tabular-nums;flex:none;min-width:4.5rem;font-weight:700}.shop-name{overflow-wrap:anywhere}.shop-entry.checked .shop-entry-text{color:var(--muted);text-decoration:line-through}.shop-offline{background:var(--surface-2);border:1px dashed var(--line);color:var(--muted);border-radius:12px;margin:0 0 14px;padding:10px 14px;font-size:.85rem;line-height:1.4}.shop-done{box-shadow:none;border:1px dashed var(--line);background:0 0}.shop-done-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.shop-done-header .pill{padding:8px 14px;font-size:.82rem}@media (width<=640px){.shop-toolbar-actions .pill{padding:10px 14px}}.amount-card{width:100%;max-width:380px;padding:20px}.amount-form{flex-direction:column;gap:16px;display:flex}.amount-stepper{align-items:center;gap:8px;display:flex}.amount-stepper input{text-align:center;font-variant-numeric:tabular-nums;flex:1;min-width:0;font-size:1.2rem;font-weight:700}.amount-single-unit{margin:0;font-weight:600}.picker-row-tag{color:var(--muted);border:1px solid var(--line);border-radius:999px;margin-left:auto;padding:2px 8px;font-size:.72rem;font-weight:600}.recipe-header h1{overflow-wrap:anywhere;font-size:1.6rem}.recipe-actions{flex-wrap:wrap;gap:8px;display:flex}@media (width<=640px){.recipe-header{flex-direction:column;align-items:stretch;gap:14px}.recipe-header h1{font-size:1.35rem}.recipe-hero{max-height:240px}.recipe-actions{flex-wrap:nowrap}.recipe-actions .pill:first-child{flex:1}.recipe-actions .pill.collapses{gap:0;padding:12px}.recipe-actions .pill.collapses .pill-label{display:none}.recipe-facts{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.ingredient-list li:last-child,.nutrition-item:last-child{border-bottom:0;padding-bottom:0}.filter-top{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.filter-search{grid-column:1/-1}.filter-top .filter-select,.filter-top .pill{width:100%}.filter-top .filter-select{text-overflow:ellipsis;background-position:right 10px center;padding:11px 30px 11px 12px;font-size:.85rem}.recipe-card-image{aspect-ratio:16/10}.nutrition-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ingredient-row{border:1px solid var(--line);border-radius:14px;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;margin-bottom:10px;padding:10px}.ingredient-row>.icon-btn{grid-area:1/3}.slide-over-footer{flex-wrap:wrap-reverse}.page-footer .pill{flex:auto}.nutrition-field{justify-content:flex-end}}
