:root{font-family:system-ui,sans-serif;color:#23372c;background:#f7f5ee;line-height:1.5}*{box-sizing:border-box}body{margin:0}main{max-width:850px;margin:auto;padding:1.5rem 1.5rem 7rem}.app-header{background:#fff;border-bottom:1px solid #d6ddd5}.header-content{display:flex;align-items:center;justify-content:space-between;gap:1rem;max-width:850px;margin:auto;padding:.8rem 1.5rem}.app-header h1{margin:0;font-size:1.125rem;font-weight:650}.app-header a{color:inherit;text-decoration:none}.header-actions{display:flex;flex:1;min-width:0;align-items:center;justify-content:flex-end}.search-toggle,.close-search{display:grid;flex-shrink:0;place-items:center;width:2.6rem;height:2.6rem;padding:0;border:0;border-radius:50%;background:transparent;color:#245c42}.search-toggle:hover,.close-search:hover{background:#edf1eb}.header-search{display:flex;flex:1;align-items:center;justify-content:flex-end;gap:.25rem;max-width:28rem}.header-search input{width:100%;min-width:0;padding:.5rem .65rem;border:1px solid #87998c;border-radius:6px;background:#fff;color:inherit;font:inherit}.close-search{color:#45594b;font-size:1.4rem}h2{margin:.5rem 0 .75rem;font-size:1.75rem;line-height:1.2;overflow-wrap:anywhere}h3{margin:1.75rem 0 .65rem;font-size:1.1rem}section{background:#fff;padding:1.5rem;margin-bottom:1.5rem;border:1px solid #d6ddd5;border-radius:12px}section:focus{outline:none}button{font:inherit;cursor:pointer;padding:.5rem .8rem;border:1px solid #245c42;border-radius:5px;background:#245c42;color:#fff}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #dd9b30;outline-offset:2px}a{color:#245c42}.secondary-button{background:#fff;color:#245c42}.danger-button{border-color:#a32b24;color:#a32b24}.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.recipes{list-style:none;padding:0;margin:0}.collection-filters{display:flex;gap:.45rem;margin:0 0 1.25rem;padding-bottom:.25rem;overflow-x:auto}.collection-filters button{flex:0 0 auto;padding:.4rem .7rem;border-color:#b8c5ba;background:#fff;color:#355541;border-radius:999px}.collection-filters button[aria-pressed=true]{border-color:#245c42;background:#245c42;color:#fff}.collection-filters button span{margin-left:.2rem;opacity:.75;font-size:.82rem}.recipes li{border-bottom:1px solid #d6ddd5;padding:1.25rem 0;margin:0}.recipes li:first-child{padding-top:0}.recipes h2{margin:0;font-size:1.25rem;font-weight:600}.recipe-list-heading{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.recipes a{color:inherit;text-decoration:none}.recipes a:hover{color:#245c42;text-decoration:underline;text-underline-offset:.2em}.recipes p{margin:.5rem 0 0;color:#56685b;overflow-wrap:anywhere}.recipe-content>ul,.recipe-content>ol{padding-left:1.45rem}.recipe-content li{margin-bottom:.45rem;overflow-wrap:anywhere}.recipe-description{white-space:pre-wrap}.recipe-metadata{display:flex;flex-wrap:wrap;gap:.35rem 1.2rem;margin:.7rem 0;color:#45594b}.recipe-metadata p{margin:0;white-space:pre-wrap}.recipe-classification{font-size:.9rem}.collection-badge{display:inline-flex;width:fit-content;align-items:center;min-height:1.65rem;padding:.14rem .52rem;border-radius:999px;background:#e8ece8;color:#45594b;font-size:.8rem;font-weight:650}.collection-standard{background:#e3efe5;color:#245c42}.collection-to_try{background:#fff0cf;color:#755014}.collection-not_again{background:#f3e5e3;color:#8b302a}.recipe-source{border-top:1px solid #e2e7e1;margin-top:2rem;padding-top:.75rem;color:#56685b;font-size:.925rem}.recipe-source details p{white-space:pre-wrap;overflow-wrap:anywhere}[role=alert],.field-error,.save-error{color:#a32b24}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.auth-page{display:grid;min-height:100dvh;place-items:center;padding:1rem}.auth-card{width:min(30rem,100%);margin:0;padding:2rem}.auth-card h1{margin:0 0 2rem;color:#245c42;font-size:1.125rem}.auth-card h2{margin-top:0}.auth-primary{width:100%;margin-top:.75rem;padding:.75rem}.auth-note{color:#63776a;font-size:.875rem}.usage-heading{margin:1.5rem 0}.usage-heading h2{margin-bottom:.35rem}.usage-heading p{margin:0;color:#56685b}.usage-total{display:grid;gap:.25rem;padding:1.25rem;border-radius:12px;background:#eaf2eb}.usage-total>span:first-child{color:#56685b;font-size:.875rem}.usage-total strong{font-size:2rem;line-height:1.2}.usage-cost{color:#355541}.usage-breakdowns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem}.usage-breakdown{display:grid;gap:.3rem;padding:1rem;border:1px solid #d6ddd5;border-radius:10px}.usage-breakdown h3{margin:0 0 .35rem}.usage-breakdown span{color:#56685b;font-size:.9rem}.usage-empty{margin:1.25rem 0 0;color:#56685b}.usage-token-details{margin-top:1.25rem;padding-top:1rem;border-top:1px solid #e2e7e1}.usage-token-details summary{color:#245c42;cursor:pointer}.usage-token-details dl{max-width:24rem;margin:.75rem 0}.usage-token-details dl div{display:flex;justify-content:space-between;gap:2rem;padding:.25rem 0}.usage-token-details dd{margin:0;font-variant-numeric:tabular-nums}.usage-token-details p{margin:.35rem 0;color:#56685b;font-size:.875rem}.usage-notes{margin-top:1.5rem;padding:1rem;border-radius:10px;background:#f7f5ee}.usage-notes h3{margin:0 0 .6rem}.usage-notes p{margin:.5rem 0;color:#45594b;font-size:.925rem}.recipe-editor{--editor-gutter: 2.75rem}.inline-field{display:block;margin:0 -.35rem}.inline-field input,.inline-field textarea,.ingredient-fields input,.text-item-field textarea{width:100%;min-width:0;margin:0;border:1px solid transparent;border-radius:5px;background:transparent;color:inherit;font:inherit;line-height:inherit;transition:background-color .12s ease,box-shadow .12s ease}.inline-field input:hover,.inline-field textarea:hover,.ingredient-fields input:hover,.text-item-field textarea:hover{background:#f6f8f4}.inline-field input:focus,.inline-field textarea:focus,.ingredient-fields input:focus,.text-item-field textarea:focus{outline:none;background:#fbfcfa;box-shadow:inset 0 0 0 1px #6d8977}.inline-field input::placeholder,.inline-field textarea::placeholder,.ingredient-fields input::placeholder,.text-item-field textarea::placeholder{color:#87968b;opacity:1}.inline-field [data-invalid=true],.ingredient-fields [data-invalid=true],.text-item-field [data-invalid=true]{box-shadow:inset 0 0 0 1px #a32b24}.recipe-editor textarea{display:block;resize:none;overflow:hidden}.title-field{margin-top:.2rem}.recipe-title-input{padding:0 .35rem;font-size:1.75rem!important;font-weight:700!important;line-height:1.2!important}.description-field{margin-top:.05rem}.description-field textarea{padding:.3rem .35rem;white-space:pre-wrap}.servings-field{display:flex;align-items:baseline;gap:.3rem;margin-top:.2rem;color:#45594b}.servings-field input{width:min(16rem,60%);padding:.25rem .35rem}.servings-label{margin-left:.35rem}.inline-field>.field-error{display:block;margin:.2rem .35rem;font-size:.85rem}.metadata-fields{display:grid;grid-template-columns:minmax(9rem,.7fr) minmax(14rem,2fr);gap:.75rem}.metadata-fields label{color:#45594b;font-size:.9rem}.metadata-fields select,.metadata-fields textarea,.metadata-fields input,.recipe-collection-editor select{display:block;width:100%;margin-top:.25rem;padding:.55rem;border:1px solid #87998c;border-radius:6px;background:#fff;color:inherit;font:inherit}.recipe-collection-editor label{display:block;max-width:18rem;color:#45594b;font-size:.9rem}.metadata-fields textarea{min-height:2.65rem;resize:vertical}.classification-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.editable-list{list-style:none;padding:0;margin:0}.editable-row{position:relative;display:grid;grid-template-columns:var(--editor-gutter) minmax(0,1fr) 2.75rem;align-items:start;margin:0 -.35rem .15rem;border-radius:7px}.editable-row:focus-within{background:#fafbf9}.editable-row.is-dragging{z-index:20;background:#fff;box-shadow:0 8px 24px #23372c2b}.drag-handle{width:2.75rem;height:2.75rem;padding:0;border:0;background:transparent;color:#68796d;font-size:1.2rem;touch-action:none;opacity:.55}.drag-handle:hover{background:#edf1eb;color:#245c42;opacity:1}.ingredient-fields{display:grid;grid-template-columns:minmax(3.75rem,.65fr) minmax(3.75rem,.75fr) minmax(8rem,2fr) minmax(7rem,1.5fr);align-items:start}.ingredient-fields label{display:flex;align-items:baseline;min-width:0}.ingredient-fields input{padding:.42rem .35rem}.ingredient-fields input::placeholder{color:transparent}.ingredient-row:hover .ingredient-fields input::placeholder,.ingredient-row:focus-within .ingredient-fields input::placeholder{color:#87968b}.ingredient-comma{color:#68796d}.ingredient-preparation:has(input:placeholder-shown) .ingredient-comma{visibility:hidden}.ingredient-row:focus-within .ingredient-preparation .ingredient-comma{visibility:visible}.ingredient-preparation input{padding-left:.15rem}.ingredient-fields .field-error{grid-column:1 / -1;margin:.1rem .35rem .35rem;font-size:.82rem}.text-list-row{grid-template-columns:var(--editor-gutter) 2rem minmax(0,1fr) 2.75rem}.list-number{padding:.39rem .2rem 0 0;color:#68796d;text-align:right}.text-item-field{min-width:0}.text-item-field textarea{padding:.38rem .4rem;min-height:2.4rem;white-space:pre-wrap}.text-item-field .field-error{display:block;margin:.1rem .4rem .35rem;font-size:.82rem}.add-list-item{margin:.15rem 0 0 var(--editor-gutter);padding:.35rem .55rem;border:0;background:transparent;color:#63776a;font-size:.9rem}.add-list-item:hover{background:#edf1eb;color:#245c42}.row-menu{position:relative;z-index:4}.row-menu summary{display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:50%;color:#68796d;cursor:pointer;list-style:none;letter-spacing:.04em;opacity:.6}.row-menu summary::-webkit-details-marker{display:none}.row-menu summary:hover,.row-menu[open] summary{background:#edf1eb;color:#245c42;opacity:1}.row-menu-popover{position:absolute;right:0;top:2.3rem;z-index:30;width:8.5rem;padding:.35rem;border:1px solid #d6ddd5;border-radius:8px;background:#fff;box-shadow:0 8px 24px #23372c2b}.row-menu-popover button{display:block;width:100%;padding:.45rem .55rem;border:0;background:transparent;color:#23372c;text-align:left}.row-menu-popover button:hover:not(:disabled){background:#edf1eb}.row-menu-popover .remove-row{color:#a32b24}.editor-action-space{height:5rem}.editor-actions{position:fixed;left:50%;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:50;transform:translate(-50%);display:flex;align-items:center;justify-content:flex-end;gap:.65rem;width:min(790px,calc(100% - 3rem));padding:.7rem;border:1px solid #ccd6cd;border-radius:12px;background:#fffffff2;box-shadow:0 8px 30px #23372c30;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.save-status{margin-right:auto;color:#63776a;font-size:.86rem}.save-error{font-size:.86rem}.floating-actions{position:fixed;right:max(1.5rem,env(safe-area-inset-right));bottom:calc(1.5rem + env(safe-area-inset-bottom));z-index:60;display:flex;flex-direction:column;gap:.75rem}.add-recipe,.sous-chef-button{display:grid;place-items:center;width:3.75rem;height:3.75rem;padding:0;border-radius:50%;box-shadow:0 6px 20px #23372c40}.sous-chef-button{background:#fff;color:#245c42}.add-recipe svg{display:block}.add-recipe:hover,.import-submit:hover:not(:disabled){background:#194730}.sous-chef-button:hover{background:#edf1eb}.import-modal{width:min(32rem,calc(100% - 2rem));max-height:calc(100dvh - 2rem);overflow-y:auto;padding:2rem;border:1px solid #d6ddd5;border-radius:20px;color:inherit;background:#fff;box-shadow:0 24px 80px #15271c33}.import-modal::backdrop{background:#14271dc0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.modal-heading h2{margin:0}.close-modal{flex-shrink:0;width:2.75rem;height:2.75rem;padding:0;border:none;border-radius:50%;background:#f0f3ee;color:#23372c;font-size:1.5rem}.close-modal:hover{background:#e2e9df}.modal-description{color:#56685b;margin:.75rem 0 1.5rem}.import-modal label{display:block;margin-bottom:.8rem}.import-modal input{display:block;width:100%;margin-top:.3rem;padding:.6rem;border:1px solid #87998c;border-radius:5px;font:inherit}.import-submit{width:100%;margin-top:.5rem;padding:.75rem}.import-hint{color:#56685b;font-size:.875rem;margin-bottom:0}.chat-panel{position:fixed;top:0;right:0;bottom:0;z-index:80;width:min(27rem,100%);color:#23372c;background:#fff;border-left:1px solid #ccd6cd;box-shadow:-12px 0 40px #23372c26}.chat-panel:not([hidden]){display:grid;grid-template-rows:auto minmax(0,1fr) auto}.chat-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem;border-bottom:1px solid #d6ddd5}.chat-heading h2{margin:0;font-size:1.25rem}.chat-heading p{margin:.2rem 0 0;color:#63776a;font-size:.82rem}.chat-heading-actions{display:flex;align-items:center;gap:.3rem}.chat-text-button{border:0;background:transparent;color:#245c42;white-space:nowrap}.close-chat{width:2.5rem;height:2.5rem;padding:0;border:0;border-radius:50%;background:#f0f3ee;color:#23372c;font-size:1.4rem}.chat-messages{overflow-y:auto;padding:1rem;background:#f7f5ee}.chat-introduction{margin:1rem 0;padding:1rem;border:1px solid #d6ddd5;border-radius:12px;background:#fff;color:#56685b}.chat-introduction p{margin:0}.chat-introduction p+p{margin-top:.4rem}.chat-message{max-width:88%;margin:0 0 1rem;padding:.75rem .85rem;border:1px solid #d6ddd5;border-radius:12px;background:#fff}.chat-message-user{margin-left:auto;border-color:#b9cfbf;background:#eaf2eb}.chat-speaker{display:block;margin-bottom:.2rem;color:#56685b;font-size:.75rem;font-weight:650}.chat-message p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.recipe-proposal{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #d6ddd5}.recipe-proposal h3{margin:0 0 .45rem;font-size:1.15rem}.recipe-proposal .proposal-kind{margin-bottom:.35rem;color:#56685b;font-size:.78rem;font-weight:650}.recipe-proposal h4{margin:.85rem 0 .3rem;font-size:.9rem}.recipe-proposal ul,.recipe-proposal ol{margin:.25rem 0;padding-left:1.3rem}.recipe-proposal li{margin-bottom:.2rem}.recipe-proposal .proposal-servings{margin-top:.4rem;color:#56685b;font-size:.85rem}.recipe-proposal .proposal-metadata{margin-top:.25rem;color:#56685b;font-size:.85rem}.recipe-proposal>button{width:100%;margin-top:.85rem}.recipe-proposal .proposal-saved{margin-top:.75rem;color:#245c42;font-weight:650}.proposal-error{margin-top:.75rem}.proposal-error p{margin-bottom:.45rem}.chat-message-context{display:block;margin-top:.45rem;color:#718077;font-size:.72rem}.chat-references{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.65rem}.chat-references button{padding:.35rem .55rem;background:#fff;color:#245c42;font-size:.85rem;text-align:left}.chat-thinking,.chat-limit{color:#63776a;font-size:.9rem}.chat-error{margin:.75rem 0;padding:.75rem;border:1px solid #d9aaa6;border-radius:8px;background:#fff}.chat-error p{margin:0 0 .55rem}.chat-composer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:.6rem;padding:.8rem;border-top:1px solid #d6ddd5;background:#fff}.chat-composer textarea{width:100%;max-height:8rem;resize:vertical;padding:.65rem;border:1px solid #87998c;border-radius:8px;font:inherit}.chat-composer button{min-height:2.8rem}.chat-backdrop{display:none}@media(hover:hover)and (pointer:fine){.editable-row:not(:hover):not(:focus-within) .drag-handle,.editable-row:not(:hover):not(:focus-within) .row-menu summary{opacity:.25}}@media(max-width:650px){.metadata-fields{grid-template-columns:1fr}.ingredient-fields{grid-template-columns:minmax(3.5rem,.7fr) minmax(3.5rem,.8fr) minmax(7rem,2fr)}.ingredient-preparation{grid-column:1 / -1;padding-left:.35rem}.ingredient-row:not(:focus-within) .ingredient-preparation:has(input:placeholder-shown){display:none}.ingredient-preparation:before{content:"";width:0}.editor-actions{width:calc(100% - 1.5rem);bottom:calc(.75rem + env(safe-area-inset-bottom))}.save-status{display:none}.save-error{margin-right:auto}.chat-backdrop{display:block;position:fixed;inset:0;z-index:70;padding:0;border:0;border-radius:0;background:#14271d80}.chat-panel{top:max(.5rem,env(safe-area-inset-top));width:calc(100% - .5rem);border-top-left-radius:16px}}@media(max-width:500px){main{padding:.75rem .75rem 7rem}.header-content{padding:.8rem .75rem}.header-actions{gap:.5rem}.auth-card{padding:1.25rem}.usage-breakdowns{grid-template-columns:1fr}.floating-actions{right:max(.75rem,env(safe-area-inset-right));bottom:calc(.75rem + env(safe-area-inset-bottom))}section{padding:1rem}.import-modal{padding:1.25rem}.editable-row{margin-left:-.6rem;margin-right:-.6rem}.text-list-row{grid-template-columns:var(--editor-gutter) 1.7rem minmax(0,1fr) 2.75rem}.editor-actions button{padding:.55rem .65rem}}
