@font-face{font-family:Alte Haas Grotesk;src:url(/fonts/alte-haas-grotesk.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{color-scheme:light;--bg: #faf7f2;--surface: #ffffff;--text: #2b2320;--muted: #7a6f66;--primary: #d9772e;--primary-hover: #c2651f;--border: #e8e0d6}:root[data-theme=dark]{color-scheme:dark;--bg: #171717;--surface: #2e2e2e;--text: #ededed;--muted: #9a9a9a;--primary: #3f9c8a;--primary-hover: #59b6a3;--border: #333333}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}body{margin:0;padding-top:4.5rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.nav-ribbon{position:absolute;top:0;left:0;z-index:40;display:flex;gap:.3rem;padding:.15rem;background:var(--surface);border-bottom:1px solid var(--border);border-right:1px solid var(--border);border-radius:0 0 25px;box-shadow:0 4px 14px #2b23201f}.nav-ribbon-right{left:auto;right:0;border-right:none;border-left:1px solid var(--border);border-radius:0 0 0 25px}.nav-ribbon-item{position:relative;display:flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;margin:0;padding:0;border:none;border-radius:50%;background:none;font:inherit;font-size:1.2rem;line-height:1;text-decoration:none;color:var(--muted);cursor:pointer;transition:background .15s ease,color .15s ease,transform .05s ease}.nav-ribbon-item svg{width:1.35rem;height:1.35rem;display:block}.nav-badge{position:absolute;top:2px;right:2px;width:10px;height:10px;border-radius:50%;background:#d92d20;border:1.5px solid var(--surface);animation:nav-badge-pop .6s cubic-bezier(.34,1.56,.64,1)}@keyframes nav-badge-pop{0%{transform:scale(0)}45%{transform:scale(1.8)}65%{transform:scale(.85)}85%{transform:scale(1.4)}to{transform:scale(1)}}@media (prefers-reduced-motion: reduce){.nav-badge{animation:none}}.nav-ribbon-item:hover{background:var(--bg);color:var(--text)}.nav-ribbon-item:active{transform:scale(.94)}.nav-ribbon-item.disabled{opacity:.35;cursor:not-allowed}.nav-ribbon-item.disabled:hover{background:none;color:var(--muted)}.nav-ribbon-item-landing{animation:nav-ribbon-item-land .3s ease}@keyframes nav-ribbon-item-land{0%{transform:scale(1)}40%{transform:scale(1.35)}to{transform:scale(1)}}.fly-to-cart{position:fixed;z-index:300;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 8px 20px #2b23204d;pointer-events:none;transition:top .7s cubic-bezier(.55,.06,.68,.19),left .7s cubic-bezier(.55,.06,.68,.19),width .7s ease-in,height .7s ease-in,border-radius .7s ease-in,opacity .7s ease-in,transform .7s ease-in}.fly-to-cart img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.fly-to-cart .recipe-photo-placeholder{font-size:2.5rem;opacity:.5}@media (prefers-reduced-motion: reduce){.fly-to-cart,.nav-ribbon-item-landing{display:none;animation:none}}#app{max-width:960px;margin:0 auto;padding:1.5rem 1rem 3rem}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.login-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:2rem;display:flex;flex-direction:column;gap:1rem;box-shadow:0 8px 24px #2b232014}.login-card .brand-row{align-self:center;margin:0 0 1rem}.login-subtitle{margin:0 0 .5rem;color:var(--muted);font-size:.9rem;text-align:center}.login-card .btn{justify-content:center}.login-toggle-mode{border:none;background:none;padding:0;color:var(--primary);font-size:.85rem;font-weight:600;cursor:pointer;text-align:center}.login-toggle-mode:hover{text-decoration:underline}.hero{display:flex;flex-direction:column;gap:1rem;align-items:flex-start;padding:2rem 0 1.5rem;border-bottom:1px solid var(--border);margin-bottom:1rem}.hero h1{margin:0;font-size:2rem}.hero p{margin:0;color:var(--muted)}.brand-row{display:flex;align-items:center;gap:.9rem;margin:.5rem 0 2.5rem;width:fit-content;position:relative;padding-bottom:.9rem;--brand-gradient-span: 11rem;--brand-mark-offset: 3.9rem}.brand-row:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1.1rem;background:linear-gradient(to right,var(--primary) 0,var(--text) var(--brand-gradient-span));clip-path:polygon(0px 8px,1.2px 4px,2.7px 2.7px,4px 1.2px,8px 0px,100% 0%,100% 50%,80% 32%,65% 28%,45% 35%,30% 55%,20% 75%,2% 98%,0% 100%);-webkit-clip-path:polygon(0px 8px,1.2px 4px,2.7px 2.7px,4px 1.2px,8px 0px,100% 0%,100% 50%,80% 32%,65% 25%,60% 25%,45% 35%,30% 55%,20% 75%,2% 98%,0% 100%)}.brand-logo{display:block;width:3rem;height:2.5rem}.brand-mark{display:inline-block;margin:0;font-family:Alte Haas Grotesk,Helvetica,sans-serif;font-weight:700;font-size:3rem;line-height:1;letter-spacing:-.05em;background:linear-gradient(to right,var(--primary) calc(-1 * var(--brand-mark-offset)),var(--text) calc(var(--brand-gradient-span) - var(--brand-mark-offset)));-webkit-background-clip:text;background-clip:text;color:transparent}.notice-banner{margin:0;padding:.6rem .9rem;border-radius:8px;background:#ffd5d2;border:1px solid #d92d20;color:#8f2118;font-size:.85rem;font-weight:600}.status-active{margin:0;padding:.5rem .8rem;border-radius:8px;background:#dcf5e3;border:1px solid #1a7f37;color:#14532d;font-size:.85rem;font-weight:600}.actions{display:flex;flex-wrap:wrap;gap:.75rem}.account-section{max-width:480px;margin-bottom:2rem}.account-subsection{margin-top:2rem;padding-top:1.25rem;border-top:1px solid var(--border)}.account-subsection h3{margin:0 0 .75rem;font-size:1.1rem}.account-avatar-row{display:flex;align-items:center;gap:1.25rem;margin-bottom:1.5rem}.profile-identity{display:flex;flex-direction:column;gap:.4rem}.profile-username{margin:0;font-size:1.5rem;font-weight:700}.profile-handle{margin:0;color:var(--muted);font-size:.9rem}.profile-relationship{margin:0;color:var(--muted);font-size:.85rem}.nickname-row{display:flex;align-items:center;gap:.6rem}.avatar-wrap{position:relative;width:96px;height:96px;flex:0 0 auto;border-radius:50%;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;overflow:hidden;padding:0;cursor:pointer;transition:opacity .15s ease}.avatar-wrap:hover{opacity:.85}.avatar-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.avatar-placeholder{font-size:2.5rem;opacity:.35}.form-stack{display:flex;flex-direction:column;gap:.9rem}.tab-panel{margin-top:.9rem}.friends-list{list-style:none;margin:.9rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.friend-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .7rem;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.friend-avatar{width:36px;height:36px;flex:0 0 auto;border-radius:50%;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center}.friend-avatar img{width:100%;height:100%;object-fit:cover}.avatar-placeholder-small{font-size:1.2rem;opacity:.5}.friend-identity{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;text-decoration:none;color:inherit}.friend-identity:hover .friend-name{text-decoration:underline}.friend-name{flex:1;font-weight:600;font-size:.9rem}.friend-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem}.friend-actions .btn{padding:.4rem .8rem;font-size:.8rem}.filters{margin-bottom:2rem;background:radial-gradient(ellipse at center,var(--bg) 50%,var(--surface) 100%);border:1px solid var(--border);border-radius:10px;transition:border-color .15s ease}.filters:has(.filters-header:hover){border-color:var(--primary)}.filters h2{margin:0}.filters-header{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.3rem .4rem .3rem 1rem;cursor:pointer;border-radius:10px;transition:background .15s ease}.filters:has(.filters-body:not([hidden])) .filters-header{border-radius:10px 10px 0 0}.filters-header:hover{background:var(--bg)}.filters-toggle-btn{flex:0 0 auto;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:1px solid var(--primary);border-radius:8px;background:var(--primary);color:#fff;cursor:pointer;pointer-events:none;font-size:1.1rem}.filters-toggle-icon{display:inline-block;transition:transform .15s ease}.filters-toggle-btn[aria-expanded=false] .filters-toggle-icon{transform:rotate(-90deg)}.filters-body{display:flex;flex-wrap:wrap;gap:.6rem;padding:1rem;border-top:1px solid var(--border)}.search-input{flex-basis:100%;border:1px solid var(--border);border-radius:8px;padding:.6rem .8rem;font:inherit;font-size:.95rem;background:var(--bg);color:var(--text)}.sort-select{border:1px solid var(--border);border-radius:8px;padding:.5rem .7rem;font:inherit;font-size:.85rem;background:var(--surface);color:var(--text);cursor:pointer}.filter-group{display:flex;flex-direction:column;gap:.4rem}.filter-label{font-size:.8rem;font-weight:600;color:var(--muted)}.filter-label-row{display:flex;align-items:center;gap:.6rem}.filter-toggle-all{border:none;background:none;padding:0;color:var(--primary);font-size:.75rem;font-weight:600;cursor:pointer}.filter-toggle-all:hover{text-decoration:underline}.choice-btn.current-month{font-weight:700;outline:2px solid var(--text);outline-offset:1px}.btn{border:none;border-radius:8px;padding:.65rem 1.1rem;font-size:.95rem;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;transition:background .15s ease,transform .05s ease}.btn:active{transform:scale(.98)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}@media (max-width: 480px){.btn-label{display:none}#btn-add-to-shopping-list .icon-text,#btn-delete-recipe .icon-text{margin-right:0}}.btn-danger{background:#d92d20;color:#fff}.btn-danger:hover{background:#b3251a}section h2{font-size:1.25rem;margin-bottom:.75rem}.home-section+.home-section{margin-top:3rem}#todo-recipe-list,#recipe-list,#shared-list,#discover-list,#season-recipe-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem}.season-subsection+.season-subsection{margin-top:1.75rem}.season-subsection-title{font-size:1rem;font-weight:600;color:var(--muted);margin:0 0 .75rem}@media (max-width: 480px){#season-ingredient-list{grid-template-columns:repeat(3,1fr)}}@media (max-width: 480px){#todo-recipe-list,#recipe-list,#shared-list,#discover-list{grid-template-columns:repeat(2,1fr);gap:.6rem}}.recipe-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:visible;display:flex;flex-direction:column}.recipe-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.recipe-list-header h2{margin:0}.recipe-list-header-actions{display:flex;gap:.6rem}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.25rem}.pagination-indicator{color:var(--muted);font-size:.85rem;font-weight:600}.recipe-card a{display:flex;flex-direction:column;color:inherit;text-decoration:none;height:100%}.recipe-card.recipe-card-with-author>a:first-child{height:auto;flex:1}.recipe-card .recipe-card-author{display:flex;flex-direction:row;align-items:center;gap:.35rem;height:auto;padding:0 .75rem .65rem;font-size:.75rem;color:var(--muted)}.recipe-card .recipe-card-author:hover{color:var(--primary)}.recipe-card-author-avatar{width:16px;height:16px;flex:0 0 auto;border-radius:50%;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:.6rem}.recipe-card-author-avatar img{width:100%;height:100%;object-fit:cover}.recipe-card-shared-actions{display:flex;gap:.4rem;padding:0 .75rem .65rem}.recipe-card-shared-actions .btn{flex:1;padding:.35rem .5rem;font-size:.75rem;justify-content:center}.recipe-card-media{aspect-ratio:4 / 3;background:var(--bg);display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:12px 12px 0 0}.recipe-card-media img{width:100%;height:100%;object-fit:cover;-webkit-touch-callout:none;-webkit-user-drag:none;user-select:none}.recipe-card-placeholder{font-size:2.5rem;opacity:.5}.recipe-card-placeholder-pending{opacity:.4;filter:grayscale(1)}.pending-badge{display:block;font-size:.7rem;font-weight:500;color:var(--muted);font-style:italic}.recipe-card-title{margin:0;padding:.65rem .75rem;font-weight:600;font-size:.95rem}.recipe-card-servings{margin:0;padding:0 .75rem .65rem;font-size:.75rem;color:var(--muted)}.empty,.error{color:var(--muted);font-style:italic;grid-column:1 / -1}.error{color:#b3261e}.image-field{display:flex;flex-direction:column;gap:.5rem}.image-field-actions{display:flex;gap:.6rem}.image-hint{margin:0;font-size:.8rem;color:var(--muted)}#account-privacy-explainer{margin-top:.5rem;white-space:pre-line}.image-preview-wrap{position:relative;width:140px}.image-preview-wrap img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.image-preview-wrap button{position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:50%;border:none;background:#2b2320;color:#fff;cursor:pointer;font-size:.8rem;line-height:1}.modal-overlay{position:fixed;inset:0;z-index:100;background:#140f0a73;display:flex;align-items:center;justify-content:center;padding:1rem}#confirm-modal{z-index:200}.modal{background:var(--surface);border-radius:12px;padding:1.5rem;width:100%;max-width:480px;max-height:90vh;overflow-y:auto}.modal h2{margin-top:0}#confirm-modal-message{white-space:pre-line}.modal form{display:flex;flex-direction:column;gap:.9rem}.field{display:flex;flex-direction:column;gap:.3rem}.field label{font-size:.85rem;font-weight:600;color:var(--muted)}.field-inline{display:flex;align-items:center;gap:.5rem}.field-inline input,.field-inline p{flex:1;min-width:0}.field-inline p{margin:0}.autocomplete{position:relative}.autocomplete input{width:100%}.autocomplete-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:10;margin:0;padding:.3rem;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 12px #00000026;max-height:220px;overflow-y:auto}.autocomplete-suggestions li{padding:.5rem .6rem;border-radius:6px;cursor:pointer;font-size:.9rem}.autocomplete-suggestions li:hover,.autocomplete-suggestions li.active{background:var(--bg)}.autocomplete-suggestions strong{color:var(--primary)}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:8px;padding:.55rem .7rem;font:inherit;background:var(--bg);color:var(--text)}.field textarea{min-height:90px;resize:vertical}.field select{width:100%;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 5.5 7 9.5 11 5.5' fill='none' stroke='%237a6f66' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center;background-size:13px;padding-right:2.1rem}.field select:hover{border-color:var(--primary)}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:2px solid var(--primary);outline-offset:1px}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.number-field{position:relative;display:flex;max-width:120px}.number-field input[type=number]{width:100%;padding-right:1.8rem}.number-spin{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px}.number-spin button{width:1.15rem;height:.8rem;border:none;background:var(--border);color:var(--text);font-size:.5rem;line-height:1;cursor:pointer;border-radius:3px;display:flex;align-items:center;justify-content:center;padding:0}.number-spin button:hover{background:var(--primary);color:#fff}.field-row{display:flex;gap:.75rem}.field-row .field{flex:1}.choice-group{display:flex;flex-wrap:wrap;gap:.5rem}.choice-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:.45rem .9rem;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.choice-btn:hover{border-color:var(--primary)}.choice-btn.is-selected{background:var(--primary);border-color:var(--primary);color:#fff}.choice-btn.choice-btn-category.is-selected{background:var(--muted);border-color:var(--muted);color:#fff}.star-rating{display:flex;gap:.2rem}.star-btn{border:none;background:none;padding:0;font-size:1.5rem;line-height:1;color:var(--border);cursor:pointer}.star-btn:hover{color:var(--primary-hover)}.star-btn.filled{color:var(--primary)}.recipe-rating{color:var(--primary);letter-spacing:1px}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.5rem}.account-actions-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-top:.5rem}.form-error{color:#b3261e;font-size:.85rem;min-height:1.1em}.page-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:1rem;margin-bottom:1.5rem}.toolbar-actions{display:flex;align-items:center;gap:.6rem}.recipe-title{margin:0 0 1.5rem;font-size:2rem}.title-input{display:block;width:100%;font-size:2rem;font-weight:700;border:1px solid var(--border);border-radius:8px;padding:.3rem .6rem;margin-bottom:1.5rem;background:var(--surface);color:var(--text)}.recipe-main-grid{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:2rem;align-items:start;margin-bottom:2rem}@media (max-width: 640px){.recipe-main-grid{grid-template-columns:1fr}}.recipe-photo-wrap{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:14px;display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:.75rem}.recipe-photo-square{width:100%;max-width:300px;aspect-ratio:1 / 1}.recipe-photo-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.recipe-photo-placeholder{font-size:4rem;opacity:.35}.recipe-photo-wrap.photo-editable{cursor:pointer;transition:border-color .15s ease}.recipe-photo-wrap.photo-editable:hover{border-color:var(--primary)}.crop-viewport{position:relative;width:280px;height:280px;margin:0 auto 1rem;overflow:hidden;border-radius:12px;outline:2px solid var(--muted);background:var(--bg);cursor:grab;touch-action:none}.crop-viewport:active{cursor:grabbing}.crop-viewport--circle{border-radius:50%}.crop-viewport img{position:absolute;top:0;left:0;max-width:none;transform-origin:0 0;user-select:none}.crop-zoom-row{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem}.crop-zoom-row input[type=range]{flex:1}.info-list{margin:0}.info-row{display:flex;align-items:center;gap:.5rem;padding:.6rem 0;border-bottom:1px solid var(--border)}.info-row:first-child{padding-top:0}.info-row dt{flex:0 0 100px;font-weight:600;color:var(--muted)}.info-row dd{margin:0}.info-edit-btn{display:none;flex:0 0 auto;margin-left:auto;border:none;background:transparent;color:var(--muted);cursor:pointer;line-height:1;padding:.25rem;border-radius:4px}.info-edit-btn:hover,.info-edit-btn:focus-visible{background:var(--bg);color:var(--primary);outline:none}#info-view.is-editing .info-edit-btn{display:inline-flex;align-items:center;justify-content:center}#badge-author a{color:var(--primary);text-decoration:none;font-weight:600}#badge-author a:hover{text-decoration:underline}.joint-account-partner-link{color:var(--primary);text-decoration:none;font-weight:600}.joint-account-partner-link:hover{text-decoration:underline}.season-months{display:flex;flex-wrap:wrap;gap:.3rem}.month-box{width:1.4rem;height:1.4rem;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:.75rem;background:var(--bg);color:var(--muted);border:1px solid var(--border)}.month-box.in-season{background:var(--primary);color:#fff;border-color:var(--primary)}.month-box.current-month{font-weight:700;outline:2px solid var(--text);outline-offset:1px}#field-prompt-modal .choice-group{margin-top:.2rem}.servings-stepper{display:flex;align-items:center;margin-bottom:1rem}.stepper-btn{width:2.25rem;height:2.25rem;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:1.1rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease}.stepper-btn:hover{border-color:var(--primary)}.servings-label{font-weight:600;min-width:6rem;text-align:center}.add-section-bar{display:flex;align-items:center;justify-content:center;gap:.4rem;width:100%;padding:.6rem;margin-top:.5rem;border:2px dashed var(--border);border-radius:10px;background:var(--bg);color:var(--muted);font-size:.9rem;font-weight:600;line-height:1;cursor:pointer;transition:border-color .15s ease,color .15s ease}.add-section-bar:hover{border-color:var(--primary);color:var(--primary)}body.is-pointer-dragging{user-select:none;-webkit-user-select:none}.ingredient-section{margin-bottom:1.25rem}.ingredient-section.dragging{opacity:.4}.ingredient-section-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;padding:.3rem .4rem;border-radius:8px;cursor:grab;touch-action:none}.ingredient-section-header.drag-over{outline:2px dashed var(--primary);outline-offset:2px}.section-drag-handle{color:var(--muted);font-size:1rem;line-height:1}.section-name-input{flex:1;border:1px solid transparent;border-radius:6px;padding:.3rem .5rem;font:inherit;font-weight:600;background:transparent;color:var(--text)}.section-name-input:hover,.section-name-input:focus{border-color:var(--border);background:var(--surface)}.btn-delete-section{flex:0 0 auto;border:none;background:none;color:var(--muted);cursor:pointer;font-size:.9rem;padding:.2rem .4rem;border-radius:6px}.btn-delete-section:hover{background:var(--border);color:#d92d20}.section-title{margin:0 0 .5rem;font-size:1rem;font-weight:600}.section-title-empty{color:var(--muted);font-style:italic;font-weight:400}.recipe-ingredient-grid{list-style:none;margin:0 0 1rem;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100px,calc((100% - .6rem) / 3)),100px));gap:.3rem}.ingredient-card .recipe-card-media{aspect-ratio:1 / 1;position:relative}.ingredient-season-btn{position:absolute;bottom:4px;right:4px;width:22px;height:22px;border-radius:50%;border:none;background:#ffffff59;color:var(--text);font-size:.75rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.55;z-index:2}.ingredient-season-btn:hover{opacity:1;background:#ffffffe6}.ingredient-season-popover{position:absolute;bottom:100%;right:0;margin-bottom:6px;z-index:20;display:grid;grid-template-columns:repeat(6,1fr);justify-items:center;gap:3px;width:160px;padding:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 12px #0003}.ingredient-card .recipe-card-title{font-size:.85rem;text-align:center;padding:.4rem}.ingredient-qty{color:var(--primary)}.ingredient-card{position:relative;overflow:visible;cursor:pointer}#ingredient-sections.is-editing .ingredient-card{touch-action:none}.ingredient-card.out-of-season{border:solid 2px #d92d20;background:#ffd5d2;box-shadow:0 0 0 1px #d92d20}.ingredient-card.checked-off{filter:grayscale(.05) brightness(.7) opacity(.12)}.ingredient-card.checked-off .recipe-card-title{text-decoration:line-through}.ingredient-card.checked-off .ingredient-season-btn{pointer-events:none}.ingredient-delete-btn,.recipe-delete-btn{position:absolute;top:-8px;right:-8px;z-index:3;width:24px;height:24px;border-radius:50%;border:none;background:#fff;color:#d92d20;box-shadow:0 1px 3px #00000040;cursor:pointer;font-size:.75rem;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center}.ingredient-delete-btn:hover,.recipe-delete-btn:hover{background:#d92d20;color:#fff}.ingredient-card.dragging{opacity:.4}.ingredient-card.drag-over{outline:2px dashed var(--primary);outline-offset:2px}.ingredient-meta{margin:0;padding:0 .75rem .5rem;font-size:.75rem;color:var(--muted)}.ingredient-card-clickable{cursor:pointer}.ingredient-card-clickable:hover{border-color:var(--primary)}.ingredient-card-add{border-style:dashed;background:var(--bg);align-items:center;justify-content:center;min-height:100px;cursor:pointer;color:var(--muted);transition:border-color .15s ease,color .15s ease}.ingredient-card-add:hover{border-color:var(--primary);color:var(--primary)}.ingredient-add-plus{font-size:2.5rem;line-height:1}.request-actions{display:flex;flex-wrap:wrap;gap:.4rem;padding:0 .6rem .6rem}.request-actions .btn{flex:1;justify-content:center;padding:.4rem .5rem;font-size:.8rem}#requests-list{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.ingredient-category{border:1px solid var(--border);border-radius:10px;background:radial-gradient(ellipse at center,var(--bg) 50%,var(--surface) 100%);margin-bottom:.85rem}.ingredient-category>summary{padding:.85rem 1.1rem;font-size:1.05rem}.ingredient-subcategory{border:1px solid var(--border);border-radius:8px;margin:0 0 .6rem}.ingredient-subcategory:last-child{margin-bottom:0}.ingredient-subcategory>summary{padding:.55rem .8rem;font-size:.9rem}.ingredient-category>summary,.ingredient-subcategory>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.5rem;font-weight:600;user-select:none}.ingredient-category>summary::-webkit-details-marker,.ingredient-subcategory>summary::-webkit-details-marker{display:none}.ingredient-category>summary:before,.ingredient-subcategory>summary:before{content:"▸";display:inline-block;color:var(--muted);transition:transform .15s ease}.ingredient-category[open]>summary:before,.ingredient-subcategory[open]>summary:before{transform:rotate(90deg)}.ingredient-category .count,.ingredient-subcategory .count{color:var(--muted);font-weight:400;font-size:.85rem}.ingredient-category-body{padding:0 1.1rem 1.1rem}.ingredient-subcategory>.ingredient-category-body{padding:0 .8rem .8rem}.preparation-section{margin-bottom:1.25rem}.prep-steps-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.prep-step{display:flex;align-items:flex-start;gap:.65rem;padding:.6rem .7rem;border-radius:10px;border:1px solid var(--border);background:var(--surface);cursor:pointer}.prep-step-number{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--bg);color:var(--primary);font-weight:700;font-size:.8rem}.prep-step-text{margin:0;padding-top:.15rem;white-space:pre-wrap;line-height:1.5}.prep-step.checked-off{opacity:.25}.prep-step.checked-off .prep-step-text{text-decoration:line-through}.preparation-section-block{margin-bottom:1.25rem}.preparation-section-block.dragging{opacity:.4}.prep-steps-edit-list{display:flex;flex-direction:column;gap:.4rem}.prep-step-row{display:flex;align-items:flex-start;gap:.5rem;padding:.4rem;border-radius:10px}.prep-step-row.dragging{opacity:.4}.prep-step-row.drag-over{outline:2px dashed var(--primary);outline-offset:2px}.prep-step-drag-handle{flex:0 0 auto;width:1rem;text-align:center;color:var(--muted);font-size:1rem;line-height:1;padding-top:.6rem;cursor:grab;touch-action:none}.prep-step-input{flex:1;border:1px solid var(--border);border-radius:8px;padding:.5rem .6rem;font:inherit;line-height:1.5;background:var(--bg);color:var(--text);resize:vertical}.prep-step-delete{flex:0 0 auto;margin-top:.3rem;width:24px;height:24px;border-radius:50%;border:none;background:#fff;color:#d92d20;box-shadow:0 1px 3px #00000040;cursor:pointer;font-size:.75rem;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center}.prep-step-delete:hover{background:#d92d20;color:#fff}.prep-add-step-row{display:flex;align-items:center;gap:.5rem;padding:0 .4rem;margin-top:.4rem}.prep-step-drag-handle-spacer{flex:0 0 auto;width:1rem}.prep-step-number-spacer{flex:0 0 auto;width:1.6rem}.prep-step-delete-spacer{flex:0 0 auto;width:24px}.prep-add-step-btn{display:flex;align-items:center;justify-content:center;flex:1;min-width:0;padding:.5rem;border:2px dashed var(--border);border-radius:10px;background:var(--bg);color:var(--muted);font-size:.85rem;font-weight:600;cursor:pointer;transition:border-color .15s ease,color .15s ease}.prep-add-step-btn:hover{border-color:var(--primary);color:var(--primary)}.prose{white-space:pre-wrap;line-height:1.6}.prose-input{width:100%;min-height:160px;border:1px solid var(--border);border-radius:8px;padding:.75rem;font:inherit;line-height:1.6;background:var(--surface);color:var(--text);resize:vertical}.notes-box{background:#fdf6e3;border:1px solid #f0e2a8;border-radius:10px;padding:1rem}@media (prefers-color-scheme: dark){.notes-box{background:#3a331f;border-color:#5a4f2e}}:root[data-theme=dark] .notes-box{background:#3a331f;border-color:#5a4f2e}:root[data-theme=light] .notes-box{background:#fdf6e3;border-color:#f0e2a8}.icon{display:inline-block;width:14px;height:14px;flex:0 0 auto;background-color:currentColor;vertical-align:middle;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.icon-edit{-webkit-mask-image:url(/icons/edit.svg);mask-image:url(/icons/edit.svg)}.icon-cart{-webkit-mask-image:url(/icons/cart.svg);mask-image:url(/icons/cart.svg)}.icon-delete{-webkit-mask-image:url(/icons/delete.svg);mask-image:url(/icons/delete.svg)}.icon-save{-webkit-mask-image:url(/icons/save.svg);mask-image:url(/icons/save.svg)}.icon-leaf{-webkit-mask-image:url(/icons/leaf.svg);mask-image:url(/icons/leaf.svg)}.icon-close{-webkit-mask-image:url(/icons/close.svg);mask-image:url(/icons/close.svg)}.icon-receipt-check{-webkit-mask-image:url(/icons/receipt-check.svg);mask-image:url(/icons/receipt-check.svg)}.icon-share{-webkit-mask-image:url(/icons/share.svg);mask-image:url(/icons/share.svg)}.icon-search{-webkit-mask-image:url(/icons/search.svg);mask-image:url(/icons/search.svg)}.icon-trend{-webkit-mask-image:url(/icons/trend.svg);mask-image:url(/icons/trend.svg)}.icon-calendar{-webkit-mask-image:url(/icons/calendar.svg);mask-image:url(/icons/calendar.svg)}.icon-bullet-list{-webkit-mask-image:url(/icons/bullet-list.svg);mask-image:url(/icons/bullet-list.svg)}.icon-text{margin-right:.4em}.icon-heading{width:.85em;height:.85em;margin-right:.45rem;vertical-align:-.1em}.todolist-recipes{list-style:none;margin:.9rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.todolist-recipe-row{display:flex;align-items:center;gap:.75rem;padding:.6rem .8rem;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.todolist-recipe-row.dragging{opacity:.4}.todolist-recipe-row.drag-over{border-color:var(--accent, #4a7c59)}.todolist-drag-handle{cursor:grab;color:var(--muted);flex:0 0 auto}.todolist-recipe-link{flex:1;min-width:0;color:inherit;text-decoration:none;font-weight:600}.todolist-recipe-link:hover{text-decoration:underline}.todolist-servings{font-weight:400;color:var(--muted)}.todolist-recipe-edit-btn,.todolist-recipe-delete-btn{flex:0 0 auto;border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;padding:.3rem}.todolist-recipe-edit-btn:hover{color:var(--text)}.todolist-recipe-delete-btn:hover{color:var(--danger, #c0392b)}.shopping-list-section{margin-top:4rem}.shopping-list-header{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:.75rem}.shopping-list-actions{display:flex;flex-wrap:wrap;gap:.5rem}.shopping-category{margin-top:1.25rem}.shopping-items-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.shopping-item-row{display:flex;align-items:center;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.shopping-item-label{display:flex;align-items:center;gap:.6rem;flex:1;min-width:0;padding:.55rem .75rem;cursor:pointer}.shopping-item-checkbox{flex:0 0 auto;width:1.1rem;height:1.1rem}.shopping-item-text{flex:1;min-width:0}.shopping-item-edit-btn{flex:0 0 auto;border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;padding:.3rem;margin-right:.6rem}.shopping-item-edit-btn:hover{color:var(--text)}.shopping-item-row.checked-off{opacity:.25}.shopping-item-row.checked-off .shopping-item-text{text-decoration:line-through}.checkbox-field{display:flex;align-items:center;gap:.5rem;font-size:.9rem;margin:.75rem 0;cursor:pointer}.checkbox-field input{flex:0 0 auto;width:1.1rem;height:1.1rem}.provenance-total{margin:0;color:var(--muted);font-size:.95rem}.provenance-list{list-style:none;margin:.9rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.provenance-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding:.25rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.provenance-text{flex:1;min-width:0}.provenance-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.provenance-edit-btn,.provenance-delete-btn{padding:.5rem;font-size:.8rem;line-height:1}
