:root{--primary: #c84b2f;--primary-hover: #a83a20;--primary-light: #fdf1ee;--accent: #e8a422;--bg: #faf7f2;--card-bg: #ffffff;--text: #2c2c2c;--text-muted: #6b6b6b;--border: #e0d9d0;--border-focus: #c84b2f;--success-bg: #edf7f1;--success-text: #1e6e42;--error-bg: #fdf0ee;--error-text: #c0392b;--radius: 10px;--radius-sm: 6px;--shadow: 0 2px 12px rgba(0,0,0,.08);--shadow-md: 0 4px 24px rgba(0,0,0,.12);--transition: .15s ease;--font: "Segoe UI", system-ui, -apple-system, sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}h1{font-size:1.75rem;font-weight:700;line-height:1.2}h2{font-size:1.4rem;font-weight:600}h3{font-size:1.15rem;font-weight:600}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1.5rem;background:var(--bg)}.auth-card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:2.5rem 2rem;width:100%;max-width:420px}.auth-logo{text-align:center;margin-bottom:2rem}.auth-logo .logo-icon{font-size:3rem;display:block;margin-bottom:.5rem}.auth-logo h1{font-size:1.5rem;color:var(--primary)}.auth-logo .subtitle{color:var(--text-muted);font-size:.9rem;margin-top:.25rem}.auth-link{text-align:center;font-size:.9rem;color:var(--text-muted);margin-top:1rem}.auth-form,.form-section{display:flex;flex-direction:column;gap:1rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-group label{font-size:.875rem;font-weight:600;color:var(--text)}.form-group input,.form-group select,.form-group textarea{padding:.65rem .9rem;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font);font-size:.95rem;color:var(--text);background:#fff;transition:border-color var(--transition),box-shadow var(--transition);width:100%}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #c84b2f1f}.form-group input::placeholder{color:#b0a8a0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.65rem 1.25rem;border:none;border-radius:var(--radius-sm);font-family:var(--font);font-size:.95rem;font-weight:600;cursor:pointer;transition:background var(--transition),opacity var(--transition),transform var(--transition);text-decoration:none}.btn:hover{text-decoration:none}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:#f0ece6;color:var(--text)}.btn-secondary:hover:not(:disabled){background:#e5dfd7}.btn-danger{background:#e74c3c;color:#fff}.btn-danger:hover:not(:disabled){background:#c0392b}.btn-ghost{background:transparent;color:var(--primary);border:1.5px solid var(--primary)}.btn-ghost:hover:not(:disabled){background:var(--primary-light)}.btn-full{width:100%}.btn-sm{padding:.4rem .85rem;font-size:.85rem}.alert{padding:.7rem 1rem;border-radius:var(--radius-sm);font-size:.9rem;line-height:1.4}.alert[hidden]{display:none}.alert-error{background:var(--error-bg);color:var(--error-text);border:1px solid #f5c6c0}input.field-error,select.field-error,textarea.field-error,div.field-error{border-color:var(--error-text)!important;box-shadow:0 0 0 2px #dc353533}.alert-success{background:var(--success-bg);color:var(--success-text);border:1px solid #b7dfca}.alert-info{background:#eef5fd;color:#1a5276;border:1px solid #aed6f1}.navbar{background:var(--card-bg);border-bottom:1px solid var(--border);padding:0 1.5rem;height:60px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 4px #0000000f;position:sticky;top:0;z-index:100}.navbar-brand{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.05rem;color:var(--primary);text-decoration:none}.navbar-brand:hover{text-decoration:none}.navbar-brand .brand-icon{font-size:1.4rem}.navbar-nav{display:flex;align-items:center;gap:.25rem}.nav-link{padding:.45rem .85rem;border-radius:var(--radius-sm);font-size:.9rem;font-weight:500;color:var(--text-muted);transition:background var(--transition),color var(--transition);text-decoration:none}.nav-link:hover,.nav-link.active{background:var(--primary-light);color:var(--primary);text-decoration:none}.navbar-user{display:flex;align-items:center;gap:.75rem;font-size:.875rem;color:var(--text-muted)}.user-badge{background:var(--primary-light);color:var(--primary);padding:.2rem .6rem;border-radius:20px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.page-main{max-width:1100px;margin:0 auto;padding:2rem 1.5rem}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.75rem;gap:1rem;flex-wrap:wrap}.admin-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.import-status{font-size:.85rem;color:var(--text-muted)}.import-status--ok{color:#166534;font-weight:500}.import-status--error{color:#991b1b;font-weight:500}.page-title{font-size:1.5rem;font-weight:700;color:var(--text)}.page-subtitle{color:var(--text-muted);font-size:.95rem;margin-top:.25rem}.card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.section-divider{display:flex;align-items:center;gap:.75rem;color:var(--text-muted);font-size:.85rem;margin:1.25rem 0}.section-divider:before,.section-divider:after{content:"";flex:1;height:1px;background:var(--border)}.empty-state{text-align:center;padding:4rem 1rem;color:var(--text-muted)}.empty-state .empty-icon{font-size:3.5rem;margin-bottom:1rem}.empty-state h3{color:var(--text);margin-bottom:.5rem}.spinner{display:inline-block;width:1.25rem;height:1.25rem;border:2px solid rgba(200,75,47,.2);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-page{display:flex;align-items:center;justify-content:center;min-height:60vh;gap:.75rem;color:var(--text-muted)}@media(max-width:600px){.auth-card{padding:2rem 1.25rem}.form-row{grid-template-columns:1fr}.page-main{padding:1.25rem 1rem}.navbar{padding:0 1rem}}.filters-bar{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:1.5rem}.filters-bar input[type=search],.filters-bar select{padding:.55rem .9rem;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font);font-size:.9rem;background:#fff;color:var(--text);transition:border-color var(--transition)}.filters-bar input[type=search]{flex:1;min-width:180px}.filters-bar input[type=search]:focus,.filters-bar select:focus{outline:none;border-color:var(--border-focus)}.view-toggle{display:flex;gap:.25rem;align-items:center;margin-left:auto}.view-btn{background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:.45rem .65rem;font-size:1.1rem;cursor:pointer;color:var(--text-muted);line-height:1;transition:background var(--transition),color var(--transition),border-color var(--transition)}.view-btn:hover{border-color:var(--primary);color:var(--primary)}.view-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.recipes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}.recipe-card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow var(--transition),transform var(--transition)}.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.recipe-photo{position:relative;height:180px;background:#f0ece6;overflow:hidden}.recipe-photo img{width:100%;height:100%;object-fit:cover}.recipe-photo-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:3rem;color:#c8b9a8}.recipe-category-badge{position:absolute;top:.6rem;left:.6rem;background:var(--primary);color:#fff;padding:.2rem .65rem;border-radius:20px;font-size:.75rem;font-weight:700;letter-spacing:.02em}.recipe-body{padding:1rem 1rem .5rem;flex:1}.recipe-title{font-size:1.05rem;font-weight:700;margin-bottom:.3rem;color:var(--text);line-height:1.3}.recipe-author{font-size:.85rem;color:var(--text-muted);margin-bottom:.15rem}.recipe-owner{font-size:.8rem;color:var(--text-muted);margin-bottom:.15rem;font-style:italic}.recipe-date{font-size:.8rem;color:#aaa;margin-top:.25rem}.recipe-stars-avg{margin-top:.4rem;display:flex;align-items:center;gap:.35rem;font-size:.85rem}.recipe-stars-avg .star{color:#ddd;font-size:1rem}.recipe-stars-avg .star.filled{color:var(--accent)}.stars-count{color:var(--text-muted);font-size:.8rem}.recipe-review{padding:.5rem 1rem;border-top:1px solid var(--border);display:flex;align-items:center;gap:.6rem}.review-label{font-size:.8rem;color:var(--text-muted);white-space:nowrap}.stars-input{display:flex;gap:.1rem}.star-btn{background:none;border:none;cursor:pointer;font-size:1.3rem;color:#ddd;padding:.1rem;line-height:1;transition:color var(--transition),transform var(--transition)}.star-btn:hover,.star-btn.active{color:var(--accent)}.star-btn:hover{transform:scale(1.15)}.stars-rating-form{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap}.star-form-btn{background:none;border:none;font-size:1.75rem;color:var(--border);cursor:pointer;padding:0 .1rem;transition:color .15s,transform .1s;line-height:1}.star-form-btn:hover,.star-form-btn.active{color:#f59e0b}.star-form-btn:hover{transform:scale(1.15)}.recipe-heart-badge{font-size:.8rem;font-weight:600;color:#b45309;background:#fef9c3;border:1px solid #fde68a;border-radius:99px;padding:.15rem .6rem;display:inline-block;margin-bottom:.3rem}.recipe-my-review{display:flex;align-items:center;gap:.4rem;margin-top:.3rem;font-size:.82rem}.my-stars-empty{color:var(--text-muted);font-style:italic}.review-badge{font-size:.72rem;font-weight:600;padding:.1rem .45rem;border-radius:99px}.review-badge--done{background:#dcfce7;color:#166534}.review-badge--todo{background:#fee2e2;color:#991b1b}.btn-heart-active{background:#fef9c3;border:1px solid #fde68a}.recipe-review-count{font-size:.8rem;color:var(--text-muted);margin-top:.25rem}.recipe-review-count:not(.review-count-zero){color:var(--primary);font-weight:500}.recipe-actions{padding:.65rem 1rem;border-top:1px solid var(--border);display:flex;gap:.5rem;flex-wrap:wrap}@media(max-width:600px){.recipes-grid{grid-template-columns:1fr}.filters-bar{flex-direction:column}}.recipe-form{display:flex;flex-direction:column;gap:1.5rem;max-width:820px}.form-section-card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.form-section-card h3{font-size:1rem;font-weight:700;color:var(--primary);margin-bottom:1.1rem;padding-bottom:.5rem;border-bottom:2px solid var(--primary-light);display:flex;align-items:center;gap:.5rem}.dynamic-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.dynamic-item{display:flex;gap:.5rem;align-items:center}.dynamic-item input,.dynamic-item select,.dynamic-item textarea{padding:.5rem .75rem;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font);font-size:.9rem;color:var(--text);background:#fff;transition:border-color var(--transition)}.dynamic-item input:focus,.dynamic-item select:focus,.dynamic-item textarea:focus{outline:none;border-color:var(--border-focus)}.dynamic-item textarea{flex:1;min-height:60px;resize:vertical}.btn-remove-item{flex-shrink:0;width:30px;height:30px;border-radius:50%;border:1.5px solid #f5c6c0;background:#fef0ee;color:#c0392b;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:background var(--transition);line-height:1}.btn-remove-item:hover{background:#fad7d3}@media(max-width:480px){#ingredients-list .dynamic-item{flex-wrap:wrap;gap:.4rem}#ingredients-list .ing-quantity{flex:0 0 65px!important}#ingredients-list .ing-unit{flex:1 1 100px!important}#ingredients-list .ing-name{flex:1 1 100%!important;order:3}#ingredients-list .btn-remove-item{order:4;align-self:flex-start}}.step-number{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}.photo-upload-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:1.25rem;text-align:center;cursor:pointer;transition:border-color var(--transition),background var(--transition);position:relative}.photo-upload-zone:hover{border-color:var(--primary);background:var(--primary-light)}.photo-upload-zone input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;width:100%;height:100%}.photo-upload-label{font-size:.9rem;color:var(--text-muted);pointer-events:none}.photo-upload-label strong{color:var(--primary)}.photo-preview-img{max-height:200px;border-radius:var(--radius-sm);margin-top:.75rem;object-fit:cover}.photo-action-btns{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.6rem}.photo-divider{border:none;border-top:1px solid var(--border);margin:1rem 0}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem}.checkbox-group{display:flex;align-items:center;gap:.6rem;cursor:pointer}.checkbox-group input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.checkbox-group label{font-size:.95rem;cursor:pointer}.recipe-types-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem .75rem;margin-top:.25rem}.checkbox-label{display:flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer;padding:.35rem .5rem;border-radius:var(--radius-sm);transition:background var(--transition)}.checkbox-label:hover{background:var(--primary-light)}.checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;flex-shrink:0}.field-icon{display:inline-block;width:2rem;height:2rem;vertical-align:middle;margin-right:.25rem;object-fit:contain}.field-icon-lg{width:2rem;height:2rem}.recipe-types-grid .field-icon{width:2.5rem;height:2.5rem}.child-single-display{padding:.5rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-weight:500;color:var(--text)}.photo-quality-score{font-size:.85rem;margin-top:.5rem;padding:.4rem .7rem;border-radius:var(--radius-sm);line-height:1.4}.photo-quality-excellent{background:#edf7f1;color:#1e6e42}.photo-quality-good{background:#fefce8;color:#854d0e}.photo-quality-ok{background:#fff7ed;color:#9a3412}.photo-quality-poor{background:var(--error-bg);color:var(--error-text)}.required-star{color:#e74c3c;font-size:.9em;font-weight:700;margin-left:.2rem}.form-hint{font-size:.875rem;color:var(--text-muted);margin-bottom:.75rem;line-height:1.5}.form-actions{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;padding-bottom:2rem}.btn-lg{padding:.8rem 1.75rem;font-size:1rem}@media(max-width:600px){.form-grid-2,.form-grid-3{grid-template-columns:1fr}.form-actions{flex-direction:column}.form-actions .btn{width:100%}}.stats-panel{display:flex;flex-direction:column;flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem;padding:1rem;background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow)}.stats-header{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:.75rem;flex-wrap:wrap;gap:.5rem}.stats-title{font-weight:600;font-size:.95rem}.stats-cat-select{font-size:.85rem;padding:.25rem .5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text)}.stats-boxes{display:flex;gap:1rem;flex-wrap:wrap}.stat-box{display:flex;flex-direction:column;align-items:center;gap:.25rem;min-width:90px;padding:.5rem 1rem;background:var(--primary-light);border-radius:var(--radius-sm)}.stat-value{font-size:1.6rem;font-weight:700;color:var(--primary)}.stat-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.stat-box-categories{flex-direction:row;flex-wrap:wrap;gap:.4rem;align-items:center;background:transparent;min-width:0;flex:1}.stat-cat-badge{background:var(--primary-light);border:1px solid var(--border);padding:.25rem .6rem;border-radius:20px;font-size:.8rem}.stat-cat-badge strong{color:var(--primary)}.recipe-gouter-badge{position:absolute;bottom:8px;right:8px;background:var(--accent);color:#fff;border-radius:50%;width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:.85rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.modal-box{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow-md);width:100%;max-width:520px;max-height:85vh;display:flex;flex-direction:column}.modal-lg{max-width:780px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.modal-header h3{font-size:1.1rem}.modal-body{padding:1.5rem;overflow-y:auto}.users-table{width:100%;border-collapse:collapse;font-size:.9rem}.users-table th{text-align:left;padding:.6rem .75rem;background:var(--primary-light);color:var(--primary);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.users-table td{padding:.6rem .75rem;border-bottom:1px solid var(--border);vertical-align:middle}.users-table tr:last-child td{border-bottom:none}.users-table tr:hover td{background:var(--primary-light)}.user-role-select{padding:.3rem .5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);font-size:.85rem;cursor:pointer}.toast{position:fixed;bottom:1.5rem;right:1.5rem;padding:.75rem 1.25rem;border-radius:var(--radius-sm);font-size:.9rem;font-weight:500;box-shadow:var(--shadow-md);z-index:2000;animation:slide-in .2s ease}.toast-success{background:var(--success-bg);color:var(--success-text);border:1px solid #b7dfca}.toast-error{background:var(--error-bg);color:var(--error-text);border:1px solid #f5c6c0}@keyframes slide-in{0%{transform:translateY(1rem);opacity:0}to{transform:translateY(0);opacity:1}}.text-muted{color:var(--text-muted);font-size:.85rem}.recipes-grid.view-list{grid-template-columns:1fr;gap:.5rem}.recipes-grid.view-list .recipe-card{flex-direction:row;align-items:center;border-radius:var(--radius-sm)}.recipes-grid.view-list .recipe-photo{width:72px;height:60px;flex-shrink:0;border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.recipes-grid.view-list .recipe-category-badge,.recipes-grid.view-list .recipe-disabled-badge{display:none}.recipes-grid.view-list .recipe-body{flex:1;padding:.45rem .75rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;min-width:0}.recipes-grid.view-list .recipe-title{font-size:.95rem;margin-bottom:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:120px;max-width:260px}.recipes-grid.view-list .recipe-author,.recipes-grid.view-list .recipe-date{font-size:.8rem;margin:0;white-space:nowrap;color:var(--text-muted)}.recipes-grid.view-list .recipe-owner{font-size:.75rem;margin:0}.recipes-grid.view-list .recipe-stars-avg{margin:0;font-size:.85rem}.recipes-grid.view-list .recipe-review-count{font-size:.8rem}.recipes-grid.view-list .recipe-review{display:none}.recipes-grid.view-list .recipe-actions{padding:.45rem .75rem;flex-direction:row;flex-shrink:0;margin-top:0;border-top:none;border-left:1px solid var(--border)}.cat-ptit-dej{background:#f5f3ff;border-top:4px solid #7c3aed}.cat-entree{background:#eff6ff;border-top:4px solid #2563eb}.cat-plat{background:#f0fdf4;border-top:4px solid #16a34a}.cat-dessert{background:#fff7ed;border-top:4px solid #ea580c}.cat-gouter{background:#fdf2f8;border-top:4px solid #db2777}.cat-ptit-dej .recipe-category-badge{background:#7c3aed}.cat-entree .recipe-category-badge{background:#2563eb}.cat-plat .recipe-category-badge{background:#16a34a}.cat-dessert .recipe-category-badge{background:#ea580c}.cat-gouter .recipe-category-badge{background:#db2777}.recipe-card--disabled{opacity:.55;filter:grayscale(.4);border:2px dashed var(--border)}.recipe-card--disabled .recipe-category-badge{background:var(--text-muted)}.recipe-disabled-badge{position:absolute;top:.6rem;right:.6rem;background:#dc2626;color:#fff;padding:.2rem .55rem;border-radius:20px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
