:root,:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#faf7f2;--surface:#fff;--surface-2:#f5f0e9;--surface-3:#ebe4da;--border:#e8e0d5;--border-strong:#d4c9ba;--text:#2a2622;--text-muted:#6b6258;--text-faint:#978d80;--accent:#e4572e;--accent-hover:#cc4722;--accent-contrast:#fff;--accent-soft:#fdece6;--success:#2d9a58;--success-hover:#258049;--success-soft:#e2f4e9;--danger:#d63a3a;--danger-hover:#b92f2f;--danger-soft:#fdeaea;--badge-easy:#2d9a58;--badge-medium:#e08a00;--badge-hard:#d63a3a;--badge-text:#fff;--cat-breakfast:#f2c14e;--cat-lunch:#5fb878;--cat-dinner:#5b9bd5;--cat-dessert:#e57fa3;--cat-snack:#ee9b4a;--cat-appetizer:#8fae5c;--cat-text:#2a2622;--shadow-sm:0 1px 2px #462d1412;--shadow-md:0 6px 18px #462d141a;--shadow-lg:0 24px 60px #28190a40;--overlay:#1e140a8c;--radius-sm:8px;--radius:12px;--radius-lg:18px;--radius-pill:999px;--font-body:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-heading:var(--font-body);--heading-weight:700;--focus-ring:0 0 0 3px #e4572e59;--page-bg:var(--bg);--auth-bg:radial-gradient(1200px 600px at 10% -10%, #ffe1d3 0%, transparent 60%), radial-gradient(900px 500px at 100% 110%, #ffeccc 0%, transparent 55%), var(--bg);--brand-gradient:linear-gradient(135deg, #e4572e, #f08a24)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#151210;--surface:#201c19;--surface-2:#29241f;--surface-3:#342d27;--border:#36302a;--border-strong:#4a4137;--text:#f3ede6;--text-muted:#b3a89b;--text-faint:#857b6f;--accent:#ff7a45;--accent-hover:#ff9163;--accent-contrast:#1a0f08;--accent-soft:#3a2218;--success:#46c079;--success-hover:#5fd08e;--success-soft:#1b3326;--danger:#ff6b6b;--danger-hover:#ff8a8a;--danger-soft:#3b1f1f;--badge-easy:#46c079;--badge-medium:#f2a63a;--badge-hard:#ff6b6b;--badge-text:#14100d;--cat-breakfast:#f2c14e;--cat-lunch:#6fcf8a;--cat-dinner:#6aa8e6;--cat-dessert:#ef8fb0;--cat-snack:#f2a65c;--cat-appetizer:#a3c46c;--cat-text:#14100d;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 22px #00000073;--shadow-lg:0 28px 70px #000000a6;--overlay:#000000b3;--focus-ring:0 0 0 3px #ff7a4566;--auth-bg:radial-gradient(1000px 600px at 10% -10%, #3a2013 0%, transparent 60%), radial-gradient(900px 500px at 100% 110%, #2c2410 0%, transparent 55%), var(--bg);--brand-gradient:linear-gradient(135deg, #ff7a45, #ffb347)}:root[data-theme=nineties]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#baf7dc;--surface:#fff;--surface-2:#e6fcf2;--surface-3:#baf7dc;--border:#1a0b2e;--border-strong:#1a0b2e;--text:#1a0b2e;--text-muted:#5a2a4f;--text-faint:#7a4a6f;--accent:#d6006f;--accent-hover:#b0005a;--accent-contrast:#fff;--accent-soft:#ffd6ec;--success:#00875a;--success-hover:#006b47;--success-soft:#baf7dc;--danger:#c1121f;--danger-hover:#9a0e18;--danger-soft:#ffe0e3;--badge-easy:#00d9a0;--badge-medium:#ffd23f;--badge-hard:#ff5a7a;--badge-text:#1a0b2e;--cat-breakfast:#ffd23f;--cat-lunch:#5ff2b4;--cat-dinner:#7ec8ff;--cat-dessert:#ff6ec7;--cat-snack:#ff9f43;--cat-appetizer:#c8a2ff;--cat-text:#1a0b2e;--shadow-sm:none;--shadow-md:4px 4px 0 #ff2d95;--shadow-lg:8px 8px 0 #ff2d95;--overlay:#1a0b2e99;--radius-sm:0;--radius:0;--radius-lg:0;--radius-pill:0;--font-body:"Trebuchet MS", "Comic Sans MS", system-ui, sans-serif;--font-heading:"Arial Black", Impact, sans-serif;--heading-weight:800;--focus-ring:0 0 0 3px #ffd23f, 0 0 0 5px #1a0b2e;--page-bg:#baf7dc;--auth-bg:transparent;--brand-gradient:none;--pink:#ff2d95;--pink-light:#ff6ec7;--green-dot:#00b894}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-body);color:var(--text);background:var(--page-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:16px;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:var(--heading-weight);letter-spacing:-.01em;margin:0;line-height:1.2}p{margin:0}a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}img{max-width:100%}:focus-visible{box-shadow:var(--focus-ring);outline:none}.cap{text-transform:capitalize}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.App{min-height:100vh}.btn{border-radius:var(--radius-sm);white-space:nowrap;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:9px 16px;font-size:.9rem;font-weight:600;line-height:1.2;text-decoration:none;transition:background .15s,border-color .15s,transform .1s,box-shadow .15s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-contrast)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-success{background:var(--success);color:#fff}.btn-success:hover:not(:disabled){background:var(--success-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-ghost{color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn-small{padding:6px 12px;font-size:.82rem}.btn-large{padding:12px 22px;font-size:1rem}.form-group{text-align:left;flex-direction:column;gap:6px;display:flex}.form-group label{color:var(--text-muted);font-size:.85rem;font-weight:600}input[type=text],input[type=email],input[type=password],input[type=url],input[type=number],input[type=search],select,textarea{background:var(--surface);width:100%;color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:10px 12px;transition:border-color .15s,box-shadow .15s}textarea{resize:vertical;line-height:1.45}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}input:disabled,select:disabled,textarea:disabled{opacity:.6}.error-message,.success-message{border-radius:var(--radius-sm);text-align:left;padding:10px 14px;font-size:.9rem}.error-message{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger)}.success-message{background:var(--success-soft);color:var(--success);border:1px solid var(--success)}.loading-container{min-height:50vh;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:60px 20px;display:flex}.loading-spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-container{flex-direction:column;align-items:center;gap:14px;padding:60px 20px;display:flex}.badge{border-radius:var(--radius-pill);letter-spacing:.03em;text-transform:capitalize;box-shadow:var(--shadow-sm);padding:3px 10px;font-size:.72rem;font-weight:700;line-height:1.4;display:inline-block}.badge[data-kind=difficulty]{color:var(--badge-text)}.badge[data-kind=difficulty][data-value=easy]{background:var(--badge-easy)}.badge[data-kind=difficulty][data-value=medium]{background:var(--badge-medium)}.badge[data-kind=difficulty][data-value=hard]{background:var(--badge-hard)}.badge[data-kind=category]{color:var(--cat-text)}.badge[data-kind=category][data-value=breakfast]{background:var(--cat-breakfast)}.badge[data-kind=category][data-value=lunch]{background:var(--cat-lunch)}.badge[data-kind=category][data-value=dinner]{background:var(--cat-dinner)}.badge[data-kind=category][data-value=dessert]{background:var(--cat-dessert)}.badge[data-kind=category][data-value=snack]{background:var(--cat-snack)}.badge[data-kind=category][data-value=appetizer]{background:var(--cat-appetizer)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}[data-theme=nineties] body{background-color:var(--bg);background-image:radial-gradient(circle, var(--pink-light) 3px, transparent 3.5px), radial-gradient(circle, var(--green-dot) 2px, transparent 2.5px);background-position:0 0,20px 20px;background-size:40px 40px;background-attachment:fixed}[data-theme=nineties] a{color:var(--accent);font-weight:700}[data-theme=nineties] ::selection{background:var(--pink);color:#fff}[data-theme=nineties] .recipe-card,[data-theme=nineties] .panel,[data-theme=nineties] .form-section,[data-theme=nineties] .auth-card,[data-theme=nineties] .modal-content,[data-theme=nineties] .delete-confirm-dialog,[data-theme=nineties] .empty-state,[data-theme=nineties] .no-recipes{background:var(--surface);border:3px solid var(--border);box-shadow:6px 6px 0 var(--pink);border-style:solid}[data-theme=nineties] .modal-content,[data-theme=nineties] .auth-card{box-shadow:8px 8px 0 var(--pink)}[data-theme=nineties] .recipe-card:hover{box-shadow:8px 8px 0 var(--pink);transform:translate(-2px,-2px)}[data-theme=nineties] .recipe-card.selected{box-shadow:6px 6px 0 var(--green-dot)}[data-theme=nineties] .recipe-card.selected:hover{box-shadow:8px 8px 0 var(--green-dot)}[data-theme=nineties] .recipe-image-container{border-bottom:3px solid var(--border)}[data-theme=nineties] .panel-title,[data-theme=nineties] .form-section h2,[data-theme=nineties] .ingredients-section h3,[data-theme=nineties] .instructions-section h3{background:var(--text);color:var(--bg);font-family:var(--font-heading);letter-spacing:.08em;text-transform:uppercase;border:0;align-self:flex-start;margin:8px 0 12px;padding:2px 10px;font-size:.8rem;display:inline-block}[data-theme=nineties] .panel-title{justify-content:space-between;align-self:auto;gap:12px;margin:8px 0 12px;display:flex}[data-theme=nineties] .panel-count{color:var(--pink-light);font-family:var(--font-body);letter-spacing:0}[data-theme=nineties] .ingredients-section .ingredients-heading h3{background:var(--text);margin:0;padding:2px 10px}[data-theme=nineties] .ingredients-heading{border-bottom:2px solid var(--border)}[data-theme=nineties] .shopping-list-header h2,[data-theme=nineties] .create-recipe-header h1,[data-theme=nineties] .auth-header h1,[data-theme=nineties] .modal-recipe-title{text-transform:uppercase;letter-spacing:.02em;color:var(--text);text-shadow:3px 3px 0 var(--pink-light)}[data-theme=nineties] .auth-header h1,[data-theme=nineties] .modal-recipe-title{text-shadow:2px 2px 0 var(--pink-light)}[data-theme=nineties] .results-count,[data-theme=nineties] .shopping-list-header p,[data-theme=nineties] .create-recipe-header p{color:var(--text);border:2px solid var(--border);background:#fff;align-self:flex-start;align-items:center;padding:3px 10px;display:inline-flex}[data-theme=nineties] .shopping-list-header>div,[data-theme=nineties] .create-recipe-header{flex-direction:column;align-items:flex-start;gap:8px;display:flex}[data-theme=nineties] .results-count{min-height:0;margin-bottom:18px}[data-theme=nineties] .app-header{background:var(--pink-light);-webkit-backdrop-filter:none;border-bottom:4px solid var(--border)}[data-theme=nineties] .brand{color:var(--text)}[data-theme=nineties] .brand-name{-webkit-text-fill-color:var(--text);color:var(--text);text-transform:uppercase;letter-spacing:.02em;background:0 0;font-weight:800}[data-theme=nineties] .brand-lg .brand-name{text-shadow:3px 3px 0 var(--pink-light)}[data-theme=nineties] .brand-mark{color:var(--text)}[data-theme=nineties] .tab-button{color:var(--text);border:2px solid #0000;border-radius:0;font-weight:700}[data-theme=nineties] .tab-button:hover{background:var(--bg);color:var(--text)}[data-theme=nineties] .tab-button.active{background:var(--bg);color:var(--text);border-color:var(--border)}[data-theme=nineties] .tab-badge{background:var(--text);color:var(--bg);border-radius:0}[data-theme=nineties] .user-menu{border-left:2px solid var(--border)}[data-theme=nineties] .user-name{color:var(--text)}[data-theme=nineties] .btn{border:2px solid var(--border);box-shadow:3px 3px 0 var(--border);border-radius:0;font-weight:700}[data-theme=nineties] .btn:hover:not(:disabled){box-shadow:4px 4px 0 var(--border);transform:translate(-1px,-1px)}[data-theme=nineties] .btn:active:not(:disabled){box-shadow:none;transform:translate(2px,2px)}[data-theme=nineties] .btn-primary{background:var(--pink);color:#fff}[data-theme=nineties] .btn-primary:hover:not(:disabled){background:var(--accent)}[data-theme=nineties] .btn-secondary{color:var(--text);background:#fff}[data-theme=nineties] .btn-secondary:hover:not(:disabled){background:var(--bg)}[data-theme=nineties] .btn-success{background:var(--success);color:#fff}[data-theme=nineties] .btn-danger{background:var(--danger);color:#fff}[data-theme=nineties] .btn-ghost{box-shadow:none;color:var(--text);background:0 0;border-color:#0000}[data-theme=nineties] .btn-ghost:hover:not(:disabled){background:var(--bg);border-color:var(--border);box-shadow:none;transform:none}[data-theme=nineties] .ingredient-row .btn-danger,[data-theme=nineties] .instruction-row .btn-danger{color:var(--danger);border-color:var(--border);background:#fff}[data-theme=nineties] input[type=text],[data-theme=nineties] input[type=email],[data-theme=nineties] input[type=password],[data-theme=nineties] input[type=url],[data-theme=nineties] input[type=number],[data-theme=nineties] input[type=search],[data-theme=nineties] select,[data-theme=nineties] textarea{border:2px solid var(--border);background:#fff;border-radius:0}[data-theme=nineties] input:focus,[data-theme=nineties] select:focus,[data-theme=nineties] textarea:focus{border-color:var(--pink);box-shadow:3px 3px 0 var(--pink)}[data-theme=nineties] .form-group label{color:var(--text);font-weight:700}[data-theme=nineties] .autocomplete-suggestions{border:3px solid var(--border);box-shadow:4px 4px 0 var(--pink);border-radius:0}[data-theme=nineties] .suggestions-header{background:var(--text);color:var(--bg)}[data-theme=nineties] .suggestion-item:hover,[data-theme=nineties] .suggestion-item.selected{background:var(--bg)}[data-theme=nineties] .theme-switcher{background:0 0;border:0;border-radius:0;gap:0;padding:0}[data-theme=nineties] .theme-option{border:2px solid var(--border);color:var(--text);background:#fff;border-radius:0}[data-theme=nineties] .theme-option+.theme-option{border-left:0}[data-theme=nineties] .theme-option.active{background:var(--pink);color:#fff;box-shadow:none}[data-theme=nineties] .view-toggle{background:0 0;border:0;border-radius:0;gap:0;padding:0}[data-theme=nineties] .view-toggle button{border:2px solid var(--bg);color:var(--bg);background:0 0;border-radius:0}[data-theme=nineties] .view-toggle button+button{border-left:0}[data-theme=nineties] .view-toggle button.active{background:var(--pink);border-color:var(--pink);color:#fff;box-shadow:none}[data-theme=nineties] .buy-pack{border:2px solid var(--border);background:var(--bg);color:var(--text);border-radius:0}[data-theme=nineties] .buy-unmatched{border-top:2px dashed var(--border)}[data-theme=nineties] .progress-bar{border:2px solid var(--border);background:#fff;border-radius:0;height:14px}[data-theme=nineties] .progress-bar>i{background:var(--pink);border-radius:0}[data-theme=nineties] .buy-check input[type=checkbox]{accent-color:var(--pink)}[data-theme=nineties] .badge{border:2px solid var(--border);box-shadow:2px 2px 0 var(--border);text-transform:uppercase;letter-spacing:.06em;border-radius:0;font-size:.66rem}[data-theme=nineties] .ingredient-total{border:2px solid var(--border);background:var(--bg);color:var(--text);border-radius:0}[data-theme=nineties] .ingredient-card,[data-theme=nineties] .selected-recipe-item,[data-theme=nineties] .ingredient-item{border-color:var(--border)}[data-theme=nineties] .recipe-meta{border-top:2px solid var(--border)}[data-theme=nineties] .meta-label{color:var(--text-muted)}[data-theme=nineties] .meta-card{background:var(--bg);border:2px solid var(--border);border-radius:0}[data-theme=nineties] .recipe-title-button{font-weight:800}[data-theme=nineties] .recipe-thumbnail{border:2px solid var(--border);border-radius:0}[data-theme=nineties] .stepper{border:2px solid var(--border);background:#fff;border-radius:0}[data-theme=nineties] .stepper-btn:hover:not(:disabled){background:var(--bg);color:var(--text)}[data-theme=nineties] .remove-btn{color:var(--text);border-radius:0}[data-theme=nineties] .remove-btn:hover:not(:disabled){background:var(--danger);color:#fff}[data-theme=nineties] .instruction-step,[data-theme=nineties] .instruction-number{border:2px solid var(--border);background:var(--pink);color:#fff;border-radius:0}[data-theme=nineties] .ingredient-amount{color:var(--accent)}[data-theme=nineties] .close-button{border:2px solid var(--border);background:var(--pink-light);color:var(--text);border-radius:0}[data-theme=nineties] .close-button:hover{background:var(--pink);color:#fff}[data-theme=nineties] .modal-footer{border-top:3px solid var(--border)}[data-theme=nineties] .form-actions{-webkit-backdrop-filter:none;border:3px solid var(--border);background:#fff;border-bottom:0}[data-theme=nineties] .auth-footer{border-top:2px solid var(--border);color:var(--text)}[data-theme=nineties] .auth-header p{color:var(--text-muted)}[data-theme=nineties] .loading-spinner{border:4px solid var(--border);border-top-color:var(--pink);border-radius:0;animation-timing-function:steps(8,end)}[data-theme=nineties] .error-message,[data-theme=nineties] .success-message,[data-theme=nineties] .error-banner{border:2px solid var(--border);border-radius:0}.brand{color:var(--accent);align-items:center;gap:10px;line-height:1;display:inline-flex}.brand-mark{flex:none;width:32px;height:32px}.brand-name{font-family:var(--font-heading);letter-spacing:-.02em;background:var(--brand-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.45rem;font-weight:800}.brand-lg .brand-mark{width:44px;height:44px}.brand-lg .brand-name{font-size:2rem}.avatar{color:#fff;-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex;overflow:hidden}.avatar-sm{width:28px;height:28px;font-size:.8rem}.avatar-md{width:36px;height:36px;font-size:1rem}.avatar-lg{width:96px;height:96px;font-size:2.6rem}.avatar-image{object-fit:cover;width:100%;height:100%}.avatar-brand{background:var(--surface);color:var(--accent)}.avatar-brand-mark{width:100%;height:100%}.owner-badge{background:var(--surface);box-shadow:var(--shadow-sm,0 1px 3px #00000040);border-radius:999px;align-items:center;gap:6px;padding:2px;display:inline-flex}.owner-badge-avatar{box-shadow:0 0 0 2px var(--surface)}.owner-badge-you{color:var(--text);padding-right:8px;font-size:.75rem;font-weight:700}.recipe-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;position:relative;overflow:hidden}.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}.recipe-card.selected{border-color:var(--success);box-shadow:0 0 0 1px var(--success), var(--shadow-sm)}.recipe-image-container{aspect-ratio:4/3;background:var(--surface-3);cursor:pointer;position:relative;overflow:hidden}.recipe-image{object-fit:cover;width:100%;height:100%;transition:transform .4s;display:block}.recipe-card:hover .recipe-image{transform:scale(1.04)}.recipe-badges{gap:6px;display:flex;position:absolute;top:10px;left:10px}.recipe-owner{position:absolute;bottom:10px;left:10px}.recipe-content{text-align:left;flex-direction:column;flex:1;gap:8px;padding:16px;display:flex}.recipe-title{font-size:1.15rem}.recipe-title-button{color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.recipe-title-button:hover{color:var(--accent)}.recipe-description{-webkit-line-clamp:2;color:var(--text-muted);-webkit-box-orient:vertical;font-size:.92rem;display:-webkit-box;overflow:hidden}.recipe-meta{border-top:1px solid var(--border);gap:18px;margin:4px 0 8px;padding:10px 0 0;display:flex}.meta-item{flex-direction:column;display:flex}.meta-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);font-size:.7rem;font-weight:600}.meta-value{margin:0;font-size:.95rem;font-weight:700}.recipe-actions{gap:8px;margin-top:auto;display:flex}.recipe-actions .btn{flex:1;padding-inline:10px}.recipe-actions .btn:first-child{flex:none}.stepper{border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);align-items:center;display:inline-flex;overflow:hidden}.stepper-btn{width:30px;height:30px;color:var(--text);cursor:pointer;background:0 0;border:0;font-size:1.1rem;line-height:1}.stepper-btn:hover:not(:disabled){background:var(--surface-2);color:var(--accent)}.stepper-btn:disabled{opacity:.35;cursor:not-allowed}.stepper-value{text-align:center;font-variant-numeric:tabular-nums;min-width:30px;font-size:.9rem;font-weight:700}.modal-backdrop{z-index:1000;background:var(--overlay);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);justify-content:center;align-items:center;padding:24px;animation:.18s fade-in;display:flex;position:fixed;inset:0}.modal-content{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:820px;max-height:calc(100vh - 48px);box-shadow:var(--shadow-lg);text-align:left;flex-direction:column;animation:.22s rise-in;display:flex;position:relative;overflow:hidden}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)scale(.98)}}.modal-header{z-index:2;position:absolute;top:12px;right:12px}.close-button{color:#fff;cursor:pointer;background:#0000008c;border:0;border-radius:50%;width:36px;height:36px;font-size:1.5rem;line-height:1;transition:background .15s}.close-button:hover{background:#000c}.modal-owner{position:absolute;top:14px;left:14px}.modal-body{flex:1;overflow-y:auto}.recipe-image-section{background:var(--surface-3);height:280px;position:relative}.modal-recipe-image{object-fit:cover;width:100%;height:100%;display:block}.modal-badges{gap:8px;display:flex;position:absolute;bottom:16px;left:20px}.modal-body .recipe-details{padding:24px 28px 8px}.modal-recipe-title{font-size:1.8rem}.modal-recipe-description{color:var(--text-muted);margin-top:8px}.modal-recipe-source{margin-top:4px;font-size:.9em}.recipe-meta-grid{grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0 6px;display:grid}.meta-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;padding:10px 14px;display:flex}.meta-card .meta-value{font-size:1.1rem}.ingredients-section,.instructions-section{margin-top:24px}.ingredients-heading{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;padding-bottom:8px;display:flex}.ingredients-section .ingredients-heading h3{border:0;margin:0;padding:0}.servings-scaler{align-items:center;gap:8px;display:flex}.servings-scaler-label{color:var(--text-muted);font-size:.8rem;font-weight:600}.ingredients-section h3,.instructions-section h3{border-bottom:1px solid var(--border);margin-bottom:10px;padding-bottom:8px;font-size:1.1rem}.ingredients-list{columns:2;column-gap:32px;margin:0;padding:0;list-style:none}.ingredient-item{border-bottom:1px dashed var(--border);break-inside:avoid;gap:10px;padding:7px 0;display:flex}.ingredient-name{text-transform:capitalize}.ingredient-amount{min-width:78px;color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}.instructions-list{flex-direction:column;gap:14px;margin:0 0 16px;padding:0;list-style:none;display:flex}.instruction-item{gap:14px;display:flex}.instruction-step{background:var(--accent);width:30px;height:30px;color:var(--accent-contrast);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex}.instruction-text{padding-top:3px}.modal-footer{background:var(--surface);border-top:1px solid var(--border);padding:14px 24px}.modal-footer-buttons{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal-action-buttons{gap:8px;display:flex}.delete-confirm-overlay{z-index:5;background:var(--overlay);justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0}.delete-confirm-dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:24px}.delete-confirm-dialog h3{margin-bottom:8px}.delete-warning{color:var(--danger);margin-top:6px;font-size:.88rem}.delete-confirm-buttons{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}@media (width<=640px){.modal-backdrop{align-items:flex-end;padding:0}.modal-content{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:94vh}.recipe-image-section{height:200px}.modal-body .recipe-details{padding:18px 18px 4px}.recipe-meta-grid{grid-template-columns:repeat(2,1fr)}.ingredients-list{columns:1}.modal-footer{padding:12px 16px}.modal-footer-buttons{flex-direction:column-reverse;align-items:stretch}.modal-action-buttons .btn{flex:1}}.filters-bar{flex-wrap:wrap;gap:10px;margin-bottom:14px;display:flex}.search-field{flex:260px;position:relative}.search-icon{width:18px;height:18px;color:var(--text-faint);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search-field .filter-input{padding-left:38px}.filter-select{cursor:pointer;flex:0 170px;width:auto}.results-count{min-height:32px;color:var(--text-muted);align-items:center;gap:8px;margin-bottom:14px;font-size:.9rem;display:flex}.recipes-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:22px;display:grid}.no-recipes{text-align:center;color:var(--text-muted);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);grid-column:1/-1;padding:60px 20px}@media (width<=560px){.filter-select{flex:140px}}.recipes-end{text-align:center;min-height:48px;margin-top:20px}.recipes-end-status{color:var(--text-muted)}.shopping-list-header{text-align:left;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.shopping-list-header h2{font-size:1.6rem}.shopping-list-header p{color:var(--text-muted);margin-top:2px;font-size:.92rem}.shopping-list-content{grid-template-columns:minmax(300px,5fr) minmax(320px,6fr);align-items:start;gap:24px;display:grid}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);text-align:left;padding:8px 20px 12px}.selected-recipes-section{position:sticky;top:84px}.panel-title{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;padding:14px 0 12px;font-size:1.05rem;display:flex}.panel-count{color:var(--text-muted);font-size:.8rem;font-weight:500}ul.selected-recipes-list,ul.ingredients-list-compact{margin:0;padding:0;list-style:none}.selected-recipe-item{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 0;display:flex}.selected-recipe-item:last-child{border-bottom:0}.recipe-thumbnail{object-fit:cover;border-radius:var(--radius-sm);background:var(--surface-3);flex:none;width:56px;height:56px}.selected-recipe-info{flex:1;min-width:0}.selected-recipe-info h4{text-overflow:ellipsis;white-space:nowrap;font-size:.98rem;overflow:hidden}.selected-recipe-meta{color:var(--text-muted);font-size:.8rem}.quantity-controls{align-items:center;gap:8px;display:flex}.servings-control{flex-direction:column;align-items:center;gap:2px;display:flex}.servings-caption{letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);font-size:.68rem}.remove-btn{width:30px;height:30px;color:var(--text-faint);cursor:pointer;background:0 0;border:0;border-radius:50%;font-size:1.3rem;line-height:1}.remove-btn:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.ingredient-card{border-bottom:1px solid var(--border);padding:11px 0}.ingredient-card:last-child{border-bottom:0}.ingredient-header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.ingredient-name{text-transform:capitalize;font-weight:600}.ingredient-total{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent);font-variant-numeric:tabular-nums;flex:none;padding:2px 10px;font-size:.88rem;font-weight:700}.ingredient-breakdown{color:var(--text-muted);flex-wrap:wrap;gap:2px 14px;margin-top:3px;font-size:.8rem;display:flex}.no-ingredients{color:var(--text-muted);padding:24px 0}.view-toggle{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);padding:2px;display:inline-flex}.view-toggle button{border-radius:var(--radius-pill);color:var(--text-muted);cursor:pointer;background:0 0;border:0;padding:3px 12px;font-size:.78rem;font-weight:600}.view-toggle button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.plan-progress{background:var(--surface);padding:10px 0 8px}@media (width>=901px){.plan-progress{z-index:5;border-bottom:1px solid var(--border);position:sticky;top:64px}}.plan-progress-text{min-height:30px;color:var(--text-muted);justify-content:space-between;align-items:center;font-size:.85rem;font-weight:600;display:flex}.progress-bar{background:var(--surface-3);border-radius:var(--radius-pill);height:8px;overflow:hidden}.progress-bar>i{background:var(--success);border-radius:inherit;height:100%;transition:width .25s;display:block}.buy-check{cursor:pointer;align-items:center;gap:10px;min-width:0;display:flex}.buy-check input[type=checkbox]{width:20px;height:20px;accent-color:var(--success);cursor:pointer;flex:none;margin:0}.buy-item.ticked .buy-name,.buy-unmatched li.ticked .ingredient-name{color:var(--text-faint);text-decoration:line-through}.buy-item.ticked .buy-pack,.buy-item.ticked .buy-detail,.buy-unmatched li.ticked .ingredient-total{opacity:.5}.buy-item .buy-detail{padding-left:30px}.plan-note{color:var(--text-muted);padding:10px 0 2px;font-size:.82rem}ul.buy-list{margin:0;padding:0;list-style:none}.buy-item{border-bottom:1px solid var(--border);padding:12px 0}.buy-item:last-child{border-bottom:0}.buy-main{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.buy-name{font-weight:600}.buy-packs{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.buy-pack{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent);white-space:nowrap;padding:2px 10px;font-size:.86rem;font-weight:700}.buy-detail{color:var(--text-muted);flex-wrap:wrap;gap:2px 14px;margin-top:3px;font-size:.8rem;display:flex}.buy-for{color:var(--text-faint);flex-basis:100%}.buy-unmatched{border-top:1px dashed var(--border-strong);margin-top:12px;padding-top:12px}.buy-unmatched h4{color:var(--text-muted);margin-bottom:6px;font-size:.85rem}.buy-unmatched ul{margin:0;padding:0;list-style:none}.buy-unmatched li{justify-content:space-between;align-items:baseline;gap:12px;padding:6px 0;display:flex}.empty-state{text-align:center;background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);flex-direction:column;align-items:center;gap:8px;padding:72px 20px;display:flex}.empty-icon{font-size:2.6rem}.empty-state p{color:var(--text-muted);margin-bottom:10px}.error-banner{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;margin-bottom:16px;padding:10px 14px;display:flex}.error-banner button{color:inherit;cursor:pointer;background:0 0;border:0;font-size:1.3rem}@media (width<=860px){.shopping-list-content{grid-template-columns:1fr}.selected-recipes-section{position:static}}@media (width<=480px){.selected-recipe-item{flex-wrap:wrap}.selected-recipe-info{flex:140px}.selected-recipe-info h4{white-space:normal}.quantity-controls{margin-left:68px}.shopping-list-header{flex-direction:column;align-items:flex-start}.panel{padding-inline:14px}}@media print{.app-header,.shopping-list-header .btn,.selected-recipes-section,.quantity-controls{display:none!important}.shopping-list-content{display:block}.panel{box-shadow:none;border:0}}.theme-switcher{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);gap:2px;padding:3px;display:inline-flex}.theme-option{border-radius:var(--radius-pill);color:var(--text-muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:5px 10px;font-size:.8rem;font-weight:600;transition:background .15s,color .15s;display:inline-flex}.theme-option:hover{color:var(--text)}.theme-option.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}@media (width<=640px){.theme-option-label{display:none}.theme-option{padding:6px 9px}}.avatar-dialog{gap:16px;max-width:420px;padding:24px}.avatar-dialog-title{margin:0;font-size:1.2rem}.avatar-dropzone{background:var(--surface-2);border:2px dashed var(--border-strong);border-radius:var(--radius);text-align:center;flex-direction:column;align-items:center;gap:8px;padding:20px;transition:border-color .15s,background .15s;display:flex}.avatar-dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}.avatar-dropzone.busy{opacity:.7}.avatar-dialog-hint,.avatar-dialog-note{color:var(--text-muted);margin:0}.avatar-dialog-note{color:var(--text-faint);font-size:.85rem}.avatar-dialog-actions{flex-wrap:wrap;gap:8px;display:flex}.avatar-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.dashboard{min-height:100vh}.app-header{z-index:100;background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0}.app-header-inner{align-items:center;gap:24px;max-width:1200px;margin:0 auto;padding:12px 24px;display:flex}.tab-navigation{gap:4px;margin-right:auto;display:flex}.tab-button{border-radius:var(--radius-pill);color:var(--text-muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:8px 14px;font-size:.95rem;font-weight:600;transition:background .15s,color .15s;display:inline-flex}.tab-button:hover{color:var(--text);background:var(--surface-2)}.tab-button.active{color:var(--accent);background:var(--accent-soft)}.tab-badge{border-radius:var(--radius-pill);background:var(--accent);min-width:20px;color:var(--accent-contrast);text-align:center;padding:1px 6px;font-size:.72rem;font-weight:700;line-height:1.5}.header-actions{align-items:center;gap:12px;display:flex}.user-menu{border-left:1px solid var(--border);align-items:center;gap:4px;padding-left:12px;display:flex}.user-button{cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:8px;padding:2px 6px 2px 2px;display:inline-flex}.user-button:hover .user-name{color:var(--text)}.user-name{text-overflow:ellipsis;white-space:nowrap;max-width:140px;color:var(--text-muted);font-size:.9rem;font-weight:600;overflow:hidden}.dashboard-content{max-width:1200px;margin:0 auto;padding:28px 24px 64px}@media (width<=900px){.app-header-inner{flex-wrap:wrap;gap:10px 16px;padding:10px 16px}.tab-navigation{order:3;width:100%;margin-right:0}.tab-button{flex:1;justify-content:center}.header-actions{margin-left:auto}}@media (width<=560px){.user-name,.header-action-label{display:none}.user-menu{padding-left:8px}.dashboard-content{padding:20px 16px 48px}}.auth-container{background:var(--auth-bg);justify-content:center;align-items:center;min-height:100vh;padding:72px 20px 32px;display:flex;position:relative}.auth-theme{position:absolute;top:16px;right:16px}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lg);padding:36px 32px 28px}.auth-header{text-align:center;flex-direction:column;align-items:center;gap:6px;margin-bottom:26px;display:flex}.auth-header .brand{margin-bottom:14px}.auth-header h1{font-size:1.5rem}.auth-header p{color:var(--text-muted);font-size:.95rem}.auth-form{flex-direction:column;gap:16px;display:flex}.auth-button{width:100%;margin-top:6px}.auth-footer{border-top:1px solid var(--border);text-align:center;color:var(--text-muted);margin-top:22px;padding-top:18px;font-size:.92rem}.auth-link{font-weight:600;text-decoration:none}.auth-link:hover{text-decoration:underline}@media (width<=480px){.auth-card{padding:28px 20px 22px}}.ingredient-autocomplete,.unit-autocomplete,.autocomplete-input-container{width:100%;position:relative}.autocomplete-loading{position:absolute;top:50%;right:10px;transform:translateY(-50%)}.loading-spinner-small{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}.autocomplete-suggestions{z-index:50;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);max-height:240px;box-shadow:var(--shadow-md);text-align:left;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.suggestions-header{background:var(--surface-2);border-bottom:1px solid var(--border);color:var(--text-muted);padding:8px 12px;font-size:.75rem;font-weight:600}.suggestion-item{cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.suggestion-item:hover,.suggestion-item.selected{background:var(--accent-soft)}.suggestion-main{flex:1;justify-content:space-between;align-items:center;gap:10px;display:flex}.suggestion-name,.suggestion-unit{font-weight:600}.suggestion-count,.suggestion-meta{color:var(--text-muted);font-size:.78rem}.avg-amount{margin-left:6px}.image-suggestions{flex-direction:column;gap:8px;display:flex}.suggestions-heading,.suggestions-status{color:var(--text-muted);margin:0;font-size:.9rem}.suggestions-heading a{color:inherit}.suggestions-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.suggestion-thumb{background:var(--surface-2);border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;width:100%;padding:0;display:block;overflow:hidden}.suggestion-thumb:hover,.suggestion-thumb:focus-visible{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}.suggestion-thumb img{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.suggestion-credit{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:.75rem;display:block;overflow:hidden}.image-upload{flex-direction:column;gap:8px;display:flex}.image-dropzone{background:var(--surface-2);border:2px dashed var(--border-strong);border-radius:var(--radius);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:18px;transition:border-color .15s,background .15s;display:flex}.image-dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}.image-dropzone.uploading{opacity:.7}.image-dropzone-hint{color:var(--text-muted);margin:0}.image-preview{border-radius:var(--radius-sm);object-fit:contain;max-width:100%;max-height:240px}.image-actions{gap:8px;display:flex}.image-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;overflow:hidden}.image-error{color:var(--danger);margin:0;font-size:.9rem}.image-url-option summary{cursor:pointer;color:var(--text-muted);font-size:.9rem}.image-url-option input{width:100%;margin-top:8px}.create-recipe-container{max-width:780px;margin:0 auto;padding:32px 20px 0}.create-recipe-header{text-align:left;margin-bottom:20px}.create-recipe-header h1{font-size:1.8rem}.create-recipe-header p{color:var(--text-muted);margin-top:4px}.create-recipe-form{flex-direction:column;gap:18px;display:flex}.form-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);text-align:left;flex-direction:column;gap:14px;padding:22px;display:flex}.form-section h2{border-bottom:1px solid var(--border);padding-bottom:10px;font-size:1.1rem}.form-row{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.ingredient-row{grid-template-columns:minmax(0,2fr) 90px minmax(0,1fr) auto;align-items:start;gap:10px;display:grid}.ingredient-row .btn-danger,.instruction-row .btn-danger{color:var(--danger);border-color:var(--border-strong);background:0 0}.ingredient-row .btn-danger:hover:not(:disabled),.instruction-row .btn-danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.ingredient-row .btn,.instruction-row .btn{align-self:start;height:40px}.instruction-row{grid-template-columns:30px minmax(0,1fr) auto;align-items:start;gap:10px;display:grid}.instruction-number{background:var(--accent);width:30px;height:30px;color:var(--accent-contrast);border-radius:50%;justify-content:center;align-items:center;margin-top:5px;font-size:.85rem;font-weight:700;display:flex}.create-recipe-form>.btn-secondary,.form-section>.btn-secondary{align-self:flex-start}.form-actions{z-index:10;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-bottom:0;justify-content:flex-end;gap:10px;padding:14px 18px;display:flex;position:sticky;bottom:0}@media (width<=640px){.create-recipe-container{padding-top:20px}.form-section{padding:16px}.form-row,.ingredient-row{grid-template-columns:1fr 1fr}.ingredient-row .ingredient-name-group{grid-column:1/-1}.ingredient-row .btn{grid-column:1/-1;justify-self:end;height:auto}}.update-prompt{z-index:1100;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);max-width:440px;box-shadow:var(--shadow-lg);align-items:center;gap:8px;margin:0 auto;padding:10px 12px 10px 16px;display:flex;position:fixed;bottom:16px;left:16px;right:16px}.update-prompt span{flex:1;font-size:.9rem}
