:root{--color-bg:#f5f6fa;--color-surface:#fff;--color-border:#e3e5ea;--color-text:#1a1d23;--color-text-muted:#6b7280;--color-primary:#4f46e5;--color-primary-hover:#4338ca;--color-primary-contrast:#fff;--color-danger:#dc2626;--color-danger-hover:#b91c1c;--color-chip-bg:#eef0fb;--color-chip-text:#3730a3;--color-alert-bg:#fee2e2;--color-alert-text:#991b1b;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 2px #1018280f;--shadow-md:0 8px 24px #10182814;--max-width:960px}@media (prefers-color-scheme:dark){:root{--color-bg:#101114;--color-surface:#1a1c21;--color-border:#2b2e35;--color-text:#e7e8ea;--color-text-muted:#9aa0ab;--color-primary:#818cf8;--color-primary-hover:#a5b4fc;--color-primary-contrast:#14131f;--color-danger:#f87171;--color-danger-hover:#fca5a5;--color-chip-bg:#262a3d;--color-chip-text:#c7d2fe;--color-alert-bg:#3a1c1c;--color-alert-text:#fca5a5;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 24px #00000073}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3{margin:0 0 .5rem;line-height:1.25}p{margin:0 0 1rem}a{color:var(--color-primary)}.muted{color:var(--color-text-muted)}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{z-index:10;background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.85rem 1.25rem;display:flex;position:sticky;top:0}.app-header .brand{color:var(--color-text);white-space:nowrap;font-size:1.05rem;font-weight:700;text-decoration:none}.app-header nav{flex-wrap:wrap;gap:1rem;display:flex}.app-header nav a{color:var(--color-text-muted);border-bottom:2px solid #0000;padding:.35rem 0;font-size:.925rem;font-weight:500;text-decoration:none}.app-header nav a:hover{color:var(--color-text)}.app-header nav a.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.app-header .spacer{flex:1}.page{width:100%;max-width:var(--max-width);flex:1;margin:0 auto;padding:1.5rem 1.25rem 3rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.page-header h1{margin:0}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.5rem}.btn{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.4rem;padding:.6rem 1.1rem;font-size:.925rem;font-weight:600;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn-primary{background:var(--color-primary);color:var(--color-primary-contrast)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{border-color:var(--color-border);color:var(--color-text);background:0 0}.btn-secondary:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn-ghost{color:var(--color-text-muted);background:0 0}.btn-ghost:hover{color:var(--color-text)}.btn-danger{border-color:var(--color-danger);color:var(--color-danger);background:0 0}.btn-danger:hover{background:var(--color-danger);color:#fff}.btn-block{width:100%}.field{flex-direction:column;gap:.35rem;margin-bottom:1rem;display:flex}.field:last-of-type{margin-bottom:0}label{color:var(--color-text-muted);font-size:.85rem;font-weight:600}input,textarea,select{width:100%;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.6rem .75rem;font-family:inherit;font-size:1rem}input:focus,textarea:focus,select:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #4f46e526}textarea{resize:vertical;min-height:6.5rem}.form-actions{align-items:center;gap:.75rem;margin-top:1.5rem;display:flex}.form-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem 1.25rem;display:grid}.btn-small{padding:.35rem .7rem;font-size:.8rem}.step-editor-list{flex-direction:column;gap:1rem;margin-bottom:1rem;display:flex}.step-editor-row{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);padding:1rem}.step-editor-row-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.step-editor-index{color:var(--color-text-muted);font-size:.85rem;font-weight:600}.step-editor-image{flex-wrap:wrap;align-items:flex-start;gap:1rem;margin-top:.75rem;display:flex}.step-editor-image-preview{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--color-border);flex:none;width:6rem;height:6rem}.step-editor-image-controls{flex-direction:column;flex:200px;gap:.35rem;min-width:0;display:flex}.step-editor-image-label{color:var(--color-text-muted);margin-top:.25rem;font-size:.8rem;font-weight:600}.step-editor-image-controls .btn{align-self:flex-start}.auth-shell{justify-content:center;align-items:center;width:100%;min-height:100vh;padding:1.5rem;display:flex}.auth-card{width:100%;max-width:380px}.brand-kicker{color:var(--color-text-muted);margin:0 0 .35rem;font-size:.85rem;font-weight:600}.alert{border-radius:var(--radius-sm);background:var(--color-alert-bg);color:var(--color-alert-text);padding:.7rem .9rem;font-size:.9rem}.search-card{margin-bottom:1.5rem}.search-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem 1.25rem;margin-bottom:1rem;display:grid}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;display:grid}.recipe-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);box-shadow:var(--shadow-sm);padding:1.1rem 1.25rem;text-decoration:none;transition:box-shadow .15s,transform .15s;display:block}.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.recipe-card h2{margin-bottom:.6rem;font-size:1.05rem}.chip-row{flex-wrap:wrap;gap:.4rem;display:flex}.chip{background:var(--color-chip-bg);color:var(--color-chip-text);white-space:nowrap;border-radius:999px;padding:.2rem .65rem;font-size:.75rem;font-weight:600;display:inline-block}.chip-muted{background:var(--color-bg);color:var(--color-text-muted)}.empty-state{color:var(--color-text-muted);text-align:center;padding:2.5rem 1rem}.recipe-source-link{margin:-.25rem 0 .75rem;font-size:.9rem}.recipe-meta{margin-bottom:1.5rem}.recipe-detail-actions{gap:.75rem;margin-top:1.5rem;display:flex}.ingredient-list,.steps-list{padding-left:1.25rem}.ingredient-list li,.steps-list li{margin-bottom:.4rem}.steps-list li p{margin:0 0 .5rem}.step-image{border-radius:var(--radius-md);border:1px solid var(--color-border);max-width:100%;max-height:20rem;margin-bottom:.75rem;display:block}.cook-log-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.cook-log-row{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);align-items:baseline;gap:1rem;padding:.9rem 1.1rem;display:flex}.cook-log-row-date{min-width:6.5rem;color:var(--color-text-muted);flex:none;font-size:.85rem;font-weight:600}.cook-log-row-body{min-width:0}.cook-log-row-recipe{font-weight:600;text-decoration:none}.cook-log-row-notes{margin:.3rem 0 0}.cook-log-card,.recent-cooks-heading{margin-top:1.5rem}.recent-cooks-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.recent-cooks-item{border-bottom:1px solid var(--color-border);align-items:baseline;gap:.75rem;padding-bottom:.5rem;display:flex}.recent-cooks-item:last-child{border-bottom:none;padding-bottom:0}.recent-cooks-date{min-width:6.5rem;color:var(--color-text-muted);flex:none;font-size:.85rem;font-weight:600}.recent-cooks-notes{color:var(--color-text);font-size:.9rem}.loading-screen{min-height:100vh;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}@media (width<=640px){.page{padding:1.25rem 1rem 2.5rem}.card{padding:1.15rem}.app-header{padding:.75rem 1rem}.page-header{flex-direction:column;align-items:stretch}.page-header .btn{align-self:flex-start}.form-actions{flex-direction:column-reverse;align-items:stretch}}
