* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #f5f7fa; color: #2d3748; line-height: 1.6; } header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 2rem; text-align: center; } header h1 { font-size: 2.5rem; margin-bottom: 0.5rem; } .subtitle { opacity: 0.9; font-size: 1.1rem; margin-bottom: 1rem; } .family-info { display: flex; justify-content: center; gap: 1.5rem; flex-wrap: wrap; font-size: 0.9rem; } .family-info .budget { background: rgba(255,255,255,0.2); padding: 0.3rem 0.8rem; border-radius: 20px; font-weight: 600; } .tabs { display: flex; justify-content: center; gap: 0.5rem; background: white; padding: 1rem; box-shadow: 0 2px 4px rgba(0,0,0,0.1); position: sticky; top: 0; z-index: 100; } .tab { padding: 0.7rem 1.2rem; border: none; background: #e2e8f0; border-radius: 8px; cursor: pointer; font-size: 0.95rem; transition: all 0.3s; } .tab:hover { background: #cbd5e0; } .tab.active { background: #667eea; color: white; } main { max-width: 1400px; margin: 0 auto; padding: 2rem; } .tab-content { display: none; } .tab-content.active { display: block; } section h2 { color: #4a5568; margin-bottom: 1.5rem; font-size: 1.8rem; } .section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; flex-wrap: wrap; gap: 1rem; } .btn-primary { background: #667eea; color: white; border: none; padding: 0.8rem 1.5rem; border-radius: 8px; font-size: 1rem; cursor: pointer; transition: background 0.3s; } .btn-primary:hover { background: #5a67d8; } .btn-secondary { background: #48bb78; color: white; border: none; padding: 0.8rem 1.5rem; border-radius: 8px; font-size: 1rem; cursor: pointer; transition: background 0.3s; } .btn-secondary:hover { background: #38a169; } .totals-block { background: white; padding: 1.5rem; border-radius: 12px; margin-bottom: 2rem; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .totals-block h3 { color: #667eea; margin-bottom: 1rem; } .totals-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; } .total-item { text-align: center; padding: 1rem; background: #f7fafc; border-radius: 8px; } .total-item .value { font-size: 1.8rem; font-weight: bold; color: #667eea; } .total-item .label { font-size: 0.85rem; color: #718096; margin-top: 0.3rem; } .week-grid { display: grid; gap: 1.5rem; } .day-card { background: white; border-radius: 12px; padding: 1.5rem; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .day-card h3 { color: #667eea; margin-bottom: 1rem; display: flex; justify-content: space-between; align-items: center; } .day-card .date { font-size: 0.85rem; color: #a0aec0; font-weight: normal; } .meal-row { display: grid; grid-template-columns: 100px 1fr 150px; gap: 1rem; padding: 0.8rem 0; border-bottom: 1px solid #e2e8f0; align-items: center; } .meal-row:last-child { border-bottom: none; } .meal-type { font-weight: 600; color: #4a5568; text-transform: uppercase; font-size: 0.85rem; } .meal-name { color: #2d3748; } .meal-kbzu { font-size: 0.85rem; color: #718096; text-align: right; } .filters { display: flex; gap: 0.5rem; margin-bottom: 1.5rem; flex-wrap: wrap; } .filter-btn { padding: 0.5rem 1rem; border: 2px solid #e2e8f0; background: white; border-radius: 20px; cursor: pointer; transition: all 0.3s; } .filter-btn:hover { border-color: #667eea; } .filter-btn.active { background: #667eea; color: white; border-color: #667eea; } .meals-grid, .recipes-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.5rem; } .meal-card, .recipe-card { background: white; border-radius: 12px; padding: 1.5rem; box-shadow: 0 2px 8px rgba(0,0,0,0.1); cursor: pointer; transition: transform 0.3s, box-shadow 0.3s; } .meal-card:hover, .recipe-card:hover { transform: translateY(-4px); box-shadow: 0 4px 16px rgba(0,0,0,0.15); } .meal-card h4, .recipe-card h4 { color: #2d3748; margin-bottom: 0.5rem; } .meal-card .type-badge { display: inline-block; padding: 0.3rem 0.8rem; background: #e2e8f0; border-radius: 12px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; margin-bottom: 0.8rem; } .type-badge[data-type="завтрак"] { background: #fef3c7; color: #92400e; } .type-badge[data-type="обед"] { background: #d1fae5; color: #065f46; } .type-badge[data-type="ужин"] { background: #dbeafe; color: #1e40af; } .kbzu-row { display: flex; gap: 1rem; font-size: 0.85rem; color: #718096; margin-top: 0.8rem; } .kbzu-item { display: flex; align-items: center; gap: 0.3rem; } .kbzu-item strong { color: #4a5568; } .recipe-detail { background: white; border-radius: 12px; padding: 2rem; box-shadow: 0 2px 8px rgba(0,0,0,0.1); margin-top: 2rem; display: none; } .recipe-detail.active { display: block; } .recipe-detail h3 { color: #667eea; margin-bottom: 1rem; } .recipe-detail .detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; } .ingredients-list, .kbzu-table { background: #f7fafc; padding: 1.5rem; border-radius: 8px; } .ingredients-list h4, .kbzu-table h4 { color: #4a5568; margin-bottom: 1rem; } .ingredients-list ul { list-style: none; } .ingredients-list li { padding: 0.5rem 0; border-bottom: 1px solid #e2e8f0; } .kbzu-table table { width: 100%; border-collapse: collapse; } .kbzu-table th, .kbzu-table td { padding: 0.8rem; text-align: left; border-bottom: 1px solid #e2e8f0; } .kbzu-table th { color: #4a5568; font-weight: 600; } .shopping-grid { display: grid; gap: 1.5rem; } .category-group { background: white; border-radius: 12px; padding: 1.5rem; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .category-group h3 { color: #667eea; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid #e2e8f0; } .product-item { display: grid; grid-template-columns: 2fr 1fr 1fr; padding: 0.8rem 0; border-bottom: 1px solid #f7fafc; } .product-item:last-child { border-bottom: none; } .product-item .name { color: #2d3748; } .product-item .amount { color: #4a5568; font-weight: 600; } .product-item .cost { color: #48bb78; font-weight: 600; text-align: right; } .timeline-list { background: white; border-radius: 12px; padding: 1.5rem; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .timeline-item { display: grid; grid-template-columns: 150px 1fr 100px; gap: 1rem; padding: 1rem; border-left: 4px solid #667eea; background: #f7fafc; margin-bottom: 1rem; border-radius: 0 8px 8px 0; } .timeline-item:last-child { margin-bottom: 0; } .timeline-item .day { font-weight: 600; color: #667eea; } .timeline-item .action { color: #2d3748; } .timeline-item .action .details { font-size: 0.9rem; color: #718096; margin-top: 0.3rem; } .timeline-item .time { color: #48bb78; font-weight: 600; text-align: right; } .hint { color: #718096; font-style: italic; margin-bottom: 1.5rem; } .loading { text-align: center; padding: 3rem; color: #a0aec0; } .empty-state { text-align: center; padding: 3rem; color: #a0aec0; } .empty-state p { margin-top: 1rem; } @media (max-width: 768px) { header h1 { font-size: 1.8rem; } .family-info { flex-direction: column; gap: 0.5rem; } .tabs { flex-wrap: wrap; } .tab { font-size: 0.85rem; padding: 0.5rem 0.8rem; } .meal-row { grid-template-columns: 1fr; gap: 0.5rem; } .meal-kbzu { text-align: left; } .recipe-detail .detail-grid { grid-template-columns: 1fr; } .product-item { grid-template-columns: 1fr; gap: 0.3rem; } .timeline-item { grid-template-columns: 1fr; } }