.app{min-height:100vh;display:flex;flex-direction:column}.header{background:linear-gradient(180deg,var(--color-surface) 0%,#f8f7f4 100%);border-bottom:1px solid var(--color-border);padding:3rem 1.5rem;text-align:center}.header-inner{max-width:720px;margin:0 auto}.logo{font-size:clamp(2rem,5vw,3rem);font-weight:500;color:var(--color-primary);letter-spacing:-.03em;line-height:1.15;margin-bottom:.5rem}.tagline{color:var(--color-text-muted);font-size:1.05rem;font-weight:400;letter-spacing:.01em}.main{flex:1;max-width:800px;margin:0 auto;padding:2rem 1.5rem;width:100%}.search-bar{margin-bottom:1.5rem}.search-input{width:100%;padding:1rem 1.25rem;font-size:1rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);transition:border-color .2s,box-shadow .2s}.search-input:focus{outline:none;border-color:var(--color-primary-muted);box-shadow:0 0 0 3px #2d4a3e1a}.search-input::placeholder{color:var(--color-text-muted)}.actions{margin-bottom:1.5rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}.actions-left{display:flex;align-items:center;gap:.75rem}.actions-right{display:flex;align-items:center;gap:.5rem}.btn{padding:.75rem 1.5rem;font-size:.95rem;font-weight:500;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all .2s}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-muted)}.btn-submit{background:var(--color-accent);color:#fff;width:100%;padding:1rem}.btn-submit:hover{opacity:.9}.pill{padding:.5rem 1rem;border-radius:999px;border:1px solid var(--color-border);background:var(--color-surface);font-size:.85rem;color:var(--color-text-muted);cursor:pointer;transition:border-color .2s,background-color .2s,color .2s}.pill:hover{border-color:#2d4a3e4d;color:var(--color-text)}.pill-small{padding-inline:.85rem;font-size:.8rem}.pill-active{background:#2d4a3e0f;border-color:var(--color-primary-muted);color:var(--color-primary)}.draft-restored{font-size:.8rem;color:var(--color-text-muted);margin-bottom:.75rem}.add-form{margin-bottom:2.5rem;padding:2rem}.form-title{font-size:1.6rem;font-weight:500;color:var(--color-primary);letter-spacing:-.02em;margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.form-group{margin-bottom:1.25rem}.form-row{display:flex;gap:1rem;flex-wrap:wrap}.form-row .form-group{flex:1;min-width:180px}.form-group label{display:block;font-size:.875rem;font-weight:500;color:var(--color-text);margin-bottom:.4rem}.form-group input,.form-group textarea,.form-group select{width:100%;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:1rem;background:var(--color-surface);resize:vertical;color:var(--color-text);transition:border-color .2s,box-shadow .2s}.form-group textarea{min-height:100px}.form-group select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b6b6b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .85rem center;padding-right:2.5rem}.form-group select:focus{outline:none;border-color:var(--color-primary-muted);box-shadow:0 0 0 3px #2d4a3e1a}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--color-primary-muted);box-shadow:0 0 0 3px #2d4a3e1a}.form-error{color:#c0392b;font-size:.9rem;margin-bottom:1rem}.form-success{color:var(--color-primary);font-size:.9rem;margin-bottom:1rem}.ingredient-input-wrap{margin-bottom:.5rem}.ingredient-label{display:block;font-size:.875rem;font-weight:500;color:var(--color-text);margin-bottom:.35rem}.ingredient-hint{font-size:.8rem;color:var(--color-text-muted);margin-bottom:.75rem;line-height:1.4}.ingredient-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.ingredient-row-chip{margin-bottom:.4rem}.ingredient-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .5rem .4rem .75rem;background:#2d4a3e0f;border:1px solid rgba(45,74,62,.15);border-radius:var(--radius-sm);font-size:.9rem;color:var(--color-text)}.ingredient-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:1.2rem;height:1.2rem;padding:0;border:none;background:#2d4a3e1f;color:var(--color-primary);font-size:1rem;line-height:1;border-radius:50%;cursor:pointer;transition:background .15s}.ingredient-chip-remove:hover{background:#2d4a3e33}.ingredient-row-input{flex-wrap:wrap;gap:.5rem}.ingredient-qty{width:4.5rem;min-width:3.5rem;padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.9rem;background:var(--color-surface)}.ingredient-name-wrap{position:relative;flex:1;min-width:140px}.ingredient-name{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.95rem;background:var(--color-surface)}.ingredient-name:focus{outline:none;border-color:var(--color-primary-muted)}.btn-ingredient-add{padding:.5rem 1rem;font-size:.875rem;font-weight:500;border:1px solid var(--color-primary-muted);border-radius:var(--radius-sm);background:#2d4a3e14;color:var(--color-primary);cursor:pointer;transition:background .2s,border-color .2s}.btn-ingredient-add:hover{background:#2d4a3e24}.ingredient-suggestions{position:absolute;left:0;right:0;top:100%;margin:.25rem 0 0;padding:.35rem 0;list-style:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-hover);z-index:10;max-height:220px;overflow-y:auto}.ingredient-suggestion-item{padding:.5rem 1rem;font-size:.95rem;cursor:pointer;color:var(--color-text);transition:background .1s}.ingredient-suggestion-item:hover,.ingredient-suggestion-item.highlight{background:#2d4a3e0f}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-soft);border:1px solid var(--color-border)}.recipes-section{margin-top:.5rem}.section-header{display:flex;flex-direction:column;gap:.75rem;margin-bottom:.75rem}.section-title{font-size:1.2rem;font-weight:500;color:var(--color-primary);letter-spacing:-.01em}.section-controls{display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-soft)}.filter-row,.sort-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.filter-row select,.sort-row select{padding:.5rem 2.25rem .5rem .85rem;font-size:.875rem;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b6b6b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .65rem center;cursor:pointer;transition:border-color .2s,background-color .2s}.filter-row select:hover,.sort-row select:hover{border-color:#2d4a3e4d}.filter-row select:focus,.sort-row select:focus{outline:none;border-color:var(--color-primary-muted)}.sort-row label{font-size:.8rem;color:var(--color-text-muted)}.recipes-grid{display:flex;flex-direction:column;gap:1rem}.recipe-card{padding:1.5rem;cursor:pointer;transition:all .25s ease}.recipe-card:hover,.recipe-card.expanded{box-shadow:var(--shadow-hover)}.recipe-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.recipe-title-block{display:flex;flex-direction:column;gap:.35rem}.recipe-header h3{font-size:1.25rem;color:var(--color-primary);font-weight:500}.recipe-header-actions{display:flex;align-items:center;gap:.5rem}.recipe-action-btn{border:none;background:transparent;cursor:pointer;font-size:1rem;line-height:1;padding:.15rem;opacity:.75}.recipe-action-btn:hover{opacity:1}.edit-btn{color:var(--color-primary)}.delete-btn{color:#c44}.recipe-image-wrap{margin-top:.75rem;margin-bottom:.5rem;border-radius:var(--radius-sm);overflow:hidden}.recipe-image{display:block;width:100%;max-height:260px;object-fit:cover}.recipe-meta{display:flex;flex-wrap:wrap;gap:.4rem}.chip{padding:.2rem .6rem;border-radius:999px;font-size:.75rem;border:1px solid rgba(45,74,62,.1);background:#2d4a3e08;color:var(--color-text-muted)}.chip-soft{background:#2d4a3e0f;border-color:#2d4a3e29;color:var(--color-primary)}.chip-outline{background:transparent}.chip-small{font-size:.7rem}.favorite-btn{border:none;background:transparent;cursor:pointer;font-size:1.2rem;line-height:1;color:#c0a27a;padding:0}.favorite-active{color:#b3894a}.expand-icon{font-size:1.25rem;color:var(--color-accent);flex-shrink:0}.recipe-description{color:var(--color-text-muted);font-size:.95rem;margin-top:.5rem;margin-bottom:.75rem}.recipe-ingredients{font-size:.9rem}.recipe-ingredients ul{margin-top:.35rem;padding-left:1.25rem}.recipe-ingredients li{margin-bottom:.2rem}.recipe-instructions{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--color-border)}.recipe-instructions p{margin-top:.5rem;white-space:pre-wrap;line-height:1.7}.empty-state{padding:3rem 2rem;text-align:center;color:var(--color-text-muted)}.loading{text-align:center;color:var(--color-text-muted);padding:2rem}.image-upload-label{display:block;font-size:.875rem;font-weight:500;color:var(--color-text);margin-bottom:.5rem}.image-upload-input{position:absolute;width:0;height:0;opacity:0;overflow:hidden}.image-upload-area{position:relative}.image-upload-buttons{display:flex;flex-wrap:wrap;gap:.75rem}.btn-image-add{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1.25rem;border:2px dashed var(--color-border);border-radius:var(--radius);background:#2d4a3e08;color:var(--color-text-muted);font-size:.9rem;cursor:pointer;transition:border-color .2s,background .2s,color .2s}.btn-image-add:hover{border-color:var(--color-primary-muted);background:#2d4a3e0f;color:var(--color-primary)}.btn-image-add svg{flex-shrink:0}.image-preview-box{position:relative;max-width:240px;margin-top:0;border-radius:var(--radius-sm);overflow:hidden;box-shadow:var(--shadow-soft)}.image-preview-box img{display:block;width:100%;height:auto;max-height:200px;object-fit:cover}.image-remove-btn{position:absolute;top:.5rem;right:.5rem;width:1.75rem;height:1.75rem;padding:0;border:none;border-radius:50%;background:#00000080;color:#fff;font-size:1.2rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.image-remove-btn:hover{background:#000000bf}.footer{text-align:center;padding:2rem 1.5rem;color:var(--color-text-muted);font-size:.875rem;border-top:1px solid var(--color-border);background:var(--color-surface)}@media(min-width:769px)and (max-width:1024px){.main{max-width:90%;padding:1.75rem 1.25rem}.image-upload-buttons{gap:1rem}.btn-image-add{min-width:140px}}@media(max-width:768px){.header{padding:2rem 1rem}.main{padding:1.5rem 1rem;max-width:100%}.form-row{flex-direction:column}.form-row .form-group{min-width:100%}.add-form{padding:1.5rem}.section-controls{padding:1rem;gap:.5rem}.filter-row,.sort-row{flex-direction:column;align-items:stretch}.filter-row select,.sort-row select{width:100%;min-height:44px;padding:.6rem 2.5rem .6rem 1rem}.pill,.btn{min-height:44px;padding:.65rem 1.25rem}.recipe-card{padding:1.25rem}.recipe-header{flex-wrap:wrap}.recipe-meta{margin-top:.25rem}.image-upload-buttons{flex-direction:column;max-width:200px}.btn-image-add{width:100%}}@media(max-width:480px){.header{padding:1.5rem .75rem}.main{padding:1.25rem .75rem}.search-input{padding:.85rem 1rem;font-size:1rem}.actions{flex-direction:column;align-items:stretch;gap:.75rem}.actions-left,.actions-right{width:100%}.btn-primary{width:100%;justify-content:center}.ingredient-row-input{flex-direction:column;align-items:stretch}.ingredient-name-wrap{min-width:100%}.ingredient-qty{width:100%}.ingredient-row-input .btn-ingredient-add{width:100%;min-height:44px}.image-upload-buttons{max-width:100%}.btn-image-add{min-height:44px}.ingredient-chip{max-width:100%}.form-group input,.form-group textarea,.form-group select{min-height:44px}.btn-submit{min-height:48px}}:root{--color-bg: #faf9f6;--color-surface: #ffffff;--color-primary: #2d4a3e;--color-primary-muted: #3d6b5a;--color-accent: #8b7355;--color-text: #2c2c2c;--color-text-muted: #6b6b6b;--color-border: #e8e6e1;--font-display: "Cormorant Garamond", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif;--shadow-soft: 0 2px 20px rgba(45, 74, 62, .06);--shadow-hover: 0 8px 40px rgba(45, 74, 62, .1);--radius: 12px;--radius-sm: 8px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text);line-height:1.6;min-height:100vh;-webkit-tap-highlight-color:transparent}h1,h2,h3{font-family:var(--font-display);font-weight:500}input,textarea,button,select{font-family:inherit}
