:root{--bg: #faf7f2;--surface: #ffffff;--surface-alt: #f3ede3;--border: rgba(45, 42, 38, .12);--border-strong: rgba(45, 42, 38, .22);--text: #2d2a26;--text-muted: #7a746b;--accent: #c85a2a;--accent-hover: #a94718;--sage: #5b7f5e;--danger: #b33535;--shadow-sm: 0 1px 2px rgba(45, 42, 38, .06);--shadow-md: 0 6px 20px rgba(45, 42, 38, .08);--radius: 12px;--radius-sm: 8px;font-family:DM Sans,Segoe UI,system-ui,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);min-height:100vh}#root{min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}h1,h2,h3,.recipe-title,.page-title,.index-title,.recipe-card-title{font-family:Fraunces,Georgia,serif;font-weight:500;color:var(--text);letter-spacing:-.01em}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:20;background:#faf7f2eb;-webkit-backdrop-filter:saturate(160%) blur(8px);backdrop-filter:saturate(160%) blur(8px);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:1rem;max-width:1200px;width:100%;margin:0 auto;padding:.9rem 1.4rem}.app-brand{display:inline-flex;align-items:baseline;gap:.25rem;text-decoration:none;color:var(--text)}.app-brand:hover{color:var(--text)}.brand-mark{font-family:Fraunces,serif;font-size:1.4rem;font-weight:600;letter-spacing:-.01em;color:var(--accent)}.brand-sub{font-family:Fraunces,serif;font-size:1.4rem;font-weight:400;color:var(--text)}.app-nav{margin-left:auto;display:flex;align-items:center;gap:.4rem}.nav-link{display:inline-flex;align-items:center;padding:.45rem .9rem;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--text);font-family:inherit;font-size:.92rem;font-weight:500;text-decoration:none;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.nav-link:hover{background:var(--surface-alt);color:var(--text)}.nav-link-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.nav-link-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.app-main{flex:1;max-width:1200px;width:100%;margin:0 auto;padding:1.6rem 1.4rem 4rem}.primary-button,.ghost-button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border-radius:999px;padding:.55rem 1.1rem;font-family:inherit;font-size:.92rem;font-weight:500;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s,transform .05s;text-decoration:none}.primary-button{background:var(--accent);color:#fff}.primary-button:hover:not(:disabled){background:var(--accent-hover)}.primary-button:disabled{opacity:.6;cursor:not-allowed}.ghost-button{background:transparent;color:var(--text);border-color:var(--border-strong)}.ghost-button:hover{background:var(--surface-alt)}.ghost-button.active{background:var(--sage);color:#fff;border-color:var(--sage)}.ghost-button-danger{color:var(--danger);border-color:#b3353559}.ghost-button-danger:hover{background:#b3353514}.icon-button{background:transparent;border:none;font-size:1.1rem;width:28px;height:28px;border-radius:50%;color:var(--text-muted);cursor:pointer}.icon-button:hover{background:var(--surface-alt);color:var(--danger)}.form-field{display:flex;flex-direction:column;gap:.3rem}.form-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:500}input[type=text],input[type=email],input[type=number],input[type=search],textarea,select{font-family:inherit;font-size:.98rem;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.55rem .75rem;width:100%;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #c85a2a26}textarea{resize:vertical;font-family:inherit;line-height:1.5}.error-text{color:var(--danger);font-size:.9rem;margin:.5rem 0}.status-text,.muted{color:var(--text-muted);font-size:.95rem}.page-title{font-size:1.8rem;margin:0 0 1.4rem}.section-heading{font-family:Fraunces,serif;font-size:1.2rem;font-weight:500;margin:0 0 .9rem;color:var(--text)}.index-header{margin-bottom:1.3rem}.index-title{font-size:2.4rem;margin:0 0 .3rem}.index-subtitle{margin:0;color:var(--text-muted);font-size:1rem}.index-controls{display:flex;flex-direction:column;gap:.8rem;margin-bottom:1.8rem}.search-input{max-width:420px}.tag-filter-row{display:flex;flex-wrap:wrap;gap:.4rem}.tag-filter{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .8rem;border-radius:999px;background:var(--surface);border:1px solid var(--border);font-family:inherit;font-size:.85rem;color:var(--text);cursor:pointer}.tag-filter:hover{border-color:var(--border-strong)}.tag-filter.active{background:var(--sage);color:#fff;border-color:var(--sage)}.tag-count{font-size:.72rem;opacity:.75}.recipe-groups{display:flex;flex-direction:column;gap:2rem}.recipe-group-letter{font-family:Fraunces,serif;font-size:1.4rem;font-weight:500;color:var(--accent);margin:0 0 .8rem;padding-bottom:.3rem;border-bottom:1px solid var(--border)}.recipe-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.1rem}.recipe-card{display:flex;flex-direction:column;background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--border);transition:transform .15s,box-shadow .15s;color:var(--text)}.recipe-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);color:var(--text)}.recipe-card-image{aspect-ratio:4 / 3;background:var(--surface-alt);overflow:hidden}.recipe-card-image img{width:100%;height:100%;object-fit:cover;display:block}.recipe-card-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:Fraunces,serif;font-size:3rem;color:var(--accent);background:linear-gradient(135deg,#f5ecdb,#efe0c8)}.recipe-card-body{padding:.85rem 1rem 1rem;display:flex;flex-direction:column;gap:.4rem}.recipe-card-title{margin:0;font-size:1.15rem;line-height:1.25}.recipe-card-desc{margin:0;font-size:.85rem;color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-meta{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.2rem}.meta-chip{display:inline-block;font-size:.72rem;padding:.18rem .55rem;border-radius:999px;background:var(--surface-alt);color:var(--text-muted)}.tag-chip{background:#5b7f5e24;color:#3f5f42}.recipe-detail{max-width:980px;margin:0 auto}.recipe-hero{width:100%;aspect-ratio:16 / 9;overflow:hidden;border-radius:var(--radius);margin-bottom:1.5rem;background:var(--surface-alt)}.recipe-hero img{width:100%;height:100%;object-fit:cover;display:block}.recipe-header{margin-bottom:1.8rem}.recipe-title{font-size:2.4rem;margin:0 0 .5rem;line-height:1.1}.recipe-description{font-size:1.05rem;color:var(--text-muted);margin:0 0 1rem;line-height:1.5}.recipe-meta{display:flex;gap:1.6rem;flex-wrap:wrap;margin:.8rem 0 1rem}.meta-item{display:flex;flex-direction:column;gap:.15rem}.meta-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.meta-value{font-family:Fraunces,serif;font-size:1.15rem;font-weight:500}.recipe-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin:.8rem 0}.tag-pill{display:inline-block;padding:.22rem .65rem;background:#5b7f5e24;color:#3f5f42;border-radius:999px;font-size:.78rem}.recipe-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.recipe-body{display:grid;grid-template-columns:280px 1fr;gap:2.5rem;margin-bottom:2rem}.recipe-ingredients{position:sticky;top:80px;align-self:start}.ingredient-group{margin-bottom:1.2rem}.ingredient-group-heading{font-family:Fraunces,serif;font-size:.95rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:0 0 .5rem}.ingredient-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem}.ingredient-item label{display:flex;align-items:baseline;gap:.6rem;cursor:pointer;padding:.3rem 0;line-height:1.4}.ingredient-item input[type=checkbox]{width:auto;accent-color:var(--accent);flex-shrink:0}.ingredient-item.checked .ingredient-text{text-decoration:line-through;color:var(--text-muted)}.ingredient-text{font-size:.97rem}.ingredient-qty,.ingredient-unit{font-variant-numeric:tabular-nums;font-weight:500;margin-right:.3rem}.ingredient-notes{color:var(--text-muted);font-size:.88rem}.recipe-method .method-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1rem}.method-step{display:flex;gap:1rem;padding:.9rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:opacity .15s,background .15s}.method-step:hover{background:var(--surface-alt)}.method-step.done{opacity:.45}.method-step-number{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-family:Fraunces,serif;font-weight:500;font-size:1rem}.method-step-text{margin:0;font-size:1.05rem;line-height:1.55;color:var(--text)}.recipe-notes{margin-top:2rem;padding:1.2rem 1.4rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.recipe-notes p{margin:0;line-height:1.6;color:var(--text);white-space:pre-wrap}.recipe-source{margin-top:1.4rem;font-size:.85rem;color:var(--text-muted);font-style:italic}.form-page{max-width:820px;margin:0 auto}.paste-section{padding:1.2rem 1.4rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.8rem}.paste-textarea{margin:.7rem 0;min-height:140px}.recipe-form{display:flex;flex-direction:column;gap:1.4rem}.form-section{padding:1.2rem 1.4rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:.9rem}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem}.ingredient-row{display:grid;grid-template-columns:1fr .7fr .7fr 2fr 1.3fr auto;gap:.4rem;align-items:center}.ingredient-row input{font-size:.9rem;padding:.45rem .55rem}.step-row{display:grid;grid-template-columns:auto 1fr auto;gap:.6rem;align-items:flex-start}.step-row .step-number{font-family:Fraunces,serif;font-size:1.1rem;color:var(--accent);min-width:24px;padding-top:.4rem}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.7rem;margin-bottom:.7rem}.photo-tile{position:relative;aspect-ratio:1;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-alt)}.photo-tile img{width:100%;height:100%;object-fit:cover}.photo-tile .icon-button{position:absolute;top:4px;right:4px;background:#ffffffe6}.upload-button{display:inline-flex;cursor:pointer}.form-actions{display:flex;gap:.6rem;margin-top:.4rem}.login-page{max-width:420px;margin:3rem auto;padding:2rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.login-intro{color:var(--text-muted);margin:0 0 1.3rem}.login-page .form{display:flex;flex-direction:column;gap:1rem}@media(max-width:820px){.recipe-body{grid-template-columns:1fr;gap:1.6rem}.recipe-ingredients{position:static}.form-grid{grid-template-columns:1fr 1fr}.ingredient-row{grid-template-columns:1fr 1fr auto;row-gap:.4rem}.ingredient-row .ingredient-item-input,.ingredient-row .ingredient-notes-input,.ingredient-row .ingredient-group-input{grid-column:1 / -1}}@media(max-width:600px){.app-header-inner{padding:.8rem 1rem}.app-main{padding:1.1rem 1rem 3rem}.recipe-title,.index-title{font-size:1.9rem}.recipe-card-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.8rem}.form-grid{grid-template-columns:1fr}}
