.user-dropdown[data-v-5939d72f]{position:absolute;right:0;top:110%;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #0000001f;min-width:170px;z-index:50;overflow:hidden}.dropdown-item[data-v-5939d72f]{display:block;width:100%;text-align:left;padding:10px 14px;border:none;background:none;font-size:13px;cursor:pointer;font-family:inherit;color:var(--text-dark)}.dropdown-item[data-v-5939d72f]:hover{background:var(--bg-gray)}.dropdown-item.danger[data-v-5939d72f]{color:#b91c1c}.dropdown-divider[data-v-5939d72f]{border-top:1px solid var(--border);margin:4px 0}:root{--primary: #d32f2f;--primary-hover: #b71c1c;--primary-light: #fef2f2;--border: #e5e7eb;--bg-gray: #f9fafb;--text-dark: #111827;--text-muted: #6b7280;--radius: 12px;--shadow: 0 4px 16px rgba(0, 0, 0, .06);--transition: .2s ease;--font: system-ui, "Microsoft YaHei", "PingFang SC", sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:linear-gradient(135deg,#f7f8fc,#e6eefc);min-height:100vh;padding:20px;color:var(--text-dark)}.app{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:20px}.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;transition:box-shadow var(--transition)}.card:hover{box-shadow:0 8px 28px #00000014}.header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.header h1{color:var(--primary);font-size:26px;font-weight:700}.header .sub{color:var(--text-muted);font-size:14px;margin-top:2px}.header-actions{display:flex;gap:10px;align-items:center}.btn{border:none;border-radius:999px;padding:9px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:background var(--transition),transform .1s;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.btn:active{transform:scale(.97)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:#f3f4f6;color:#374151}.btn-secondary:hover{background:#e5e7eb}.btn-secondary:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-success{background:#059669;color:#fff}.btn-success:hover{background:#047857}.btn-sm{padding:5px 14px;font-size:13px}.btn-xs{padding:3px 10px;font-size:12px}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex-wrap:wrap;gap:8px}.calendar-header .month-label{font-size:18px;font-weight:600;min-width:120px}.calendar-header .range-summary{color:var(--text-muted);font-size:13px}.calendar-header .calendar-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;transition:all var(--transition);overflow:hidden}.calendar-grid.collapsed{max-height:0;opacity:0;margin:0;padding:0;pointer-events:none}.calendar-grid .weekday{text-align:center;color:var(--text-muted);font-size:13px;font-weight:600;padding:4px 0}.day-cell{background:#fff;border:1px solid var(--border);border-radius:8px;padding:6px 2px;cursor:pointer;transition:all var(--transition);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:44px;position:relative;-webkit-user-select:none;user-select:none}.day-cell:hover:not(.disabled){transform:translateY(-1px);box-shadow:0 2px 8px #00000014;border-color:var(--primary)}.day-cell.disabled{background:#f3f4f6;color:#d1d5db;cursor:not-allowed;pointer-events:none}.day-cell.selected{border-color:var(--primary);background:var(--primary-light)}.day-cell.in-range{border-color:#f59e0b;background:#fffbeb}.day-cell.today{border-color:#2563eb;background:#eff6ff}.day-cell .day-number{font-weight:600;font-size:15px;line-height:1.2}.day-cell .day-dot{width:6px;height:6px;border-radius:50%;margin-top:2px;flex-shrink:0}.day-cell .day-dot.has-config{background:var(--primary)}.day-cell .day-dot.no-config{background:#d1d5db}.day-cell.has-record{background:var(--primary-light);border-color:var(--primary)}.meal-badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;white-space:nowrap}.meal-badge-breakfast{background:#fff3e0;color:#e65100}.meal-badge-lunch{background:#e8f5e9;color:#2e7d32}.meal-badge-dinner{background:#e3f2fd;color:#1565c0}.meal-badge-other{background:var(--bg-gray);color:var(--text-muted)}.calendar-compact{display:none;align-items:center;gap:8px;padding:4px 0;flex-wrap:wrap}.calendar-compact .compact-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:2px}.calendar-compact .compact-dot.has-config{background:var(--primary)}.calendar-compact .compact-dot.no-config{background:#d1d5db}.calendar-compact .compact-date{font-size:13px;padding:2px 6px;border-radius:4px;cursor:pointer;border:1px solid transparent}.calendar-compact .compact-date:hover{border-color:var(--border)}.calendar-compact .compact-date.selected{border-color:var(--primary);background:var(--primary-light)}.calendar-compact .compact-date.in-range{border-color:#f59e0b;background:#fffbeb}.calendar-compact .compact-date.disabled{color:#d1d5db;cursor:not-allowed}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--text-muted);margin-top:8px}.legend .dot{width:12px;height:12px;border-radius:999px;display:inline-block}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:16px}.toolbar .status{flex:1;min-width:150px;color:var(--text-muted);font-size:14px}.toolbar .actions{display:flex;gap:8px;flex-wrap:wrap}.toolbar .actions .btn{min-width:100px;justify-content:center}.table-wrap{overflow-x:auto;margin-top:8px}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;padding:10px;background:var(--bg-gray);font-weight:700;border-bottom:2px solid var(--border);font-size:13px;color:var(--text-muted)}td{padding:10px;border-bottom:1px solid var(--border);vertical-align:middle}tr:hover td{background:#fafafa}.dish-name{font-weight:600}.tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;margin-right:4px}.tag-green{background:#ecfdf3;color:#047857}.tag-red{background:#fef2f2;color:#b91c1c}.empty-state{color:var(--text-muted);padding:24px 0;text-align:center}.meal-group-row td{background:var(--bg-gray);border-bottom:2px solid var(--border);font-weight:600;padding:8px 10px}.meal-group-row .meal-toggle{display:flex;align-items:center;gap:10px}.meal-group-row .meal-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.switch{position:relative;display:inline-block;width:38px;height:20px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch .slider{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background:#d1d5db;border-radius:999px;transition:background var(--transition)}.switch .slider:before{content:"";position:absolute;height:14px;width:14px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform var(--transition)}.switch input:checked+.slider{background:var(--primary)}.switch input:checked+.slider:before{transform:translate(18px)}.switch input:disabled+.slider{opacity:.4;cursor:not-allowed}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:none;align-items:center;justify-content:center;padding:16px;z-index:1000}.modal-overlay.show{display:flex}.modal-overlay.modal-child{z-index:1001;background:#00000040}.modal-overlay.modal-child .modal-card{box-shadow:0 20px 60px #00000040;border:1px solid var(--border)}.modal-card{background:#fff;border-radius:var(--radius);width:min(520px,100%);max-height:85vh;overflow-y:auto;padding:24px;box-shadow:0 20px 48px #00000026;transition:transform .2s ease}.modal-card h2{margin-bottom:16px;font-size:20px;display:flex;align-items:center;gap:10px}.modal-card .field{margin-bottom:16px}.modal-card .field label{display:block;margin-bottom:4px;font-weight:600;font-size:14px}.modal-card .field label .sub-label{font-weight:400;color:var(--text-muted);font-size:12px}.modal-card .field input,.modal-card .field textarea{width:100%;border:1px solid var(--border);border-radius:8px;padding:9px 12px;font-size:14px;font-family:inherit;transition:border var(--transition)}.modal-card .field input:focus,.modal-card .field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #d32f2f1a}.modal-card .field textarea{min-height:60px;resize:vertical}.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.meal-edit-row{display:flex;align-items:stretch;gap:12px;padding:12px;background:var(--bg-gray);border-radius:10px;margin-bottom:10px;border:1px solid var(--border)}.meal-edit-row .meal-left{display:flex;align-items:center;gap:10px;flex-shrink:0}.meal-edit-row .meal-left .meal-name{font-weight:600;min-width:40px}.meal-edit-row .meal-center{flex:1;min-width:0}.meal-edit-row .meal-center textarea{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;font-family:inherit;resize:vertical;min-height:44px;background:#fff;transition:border var(--transition)}.meal-edit-row .meal-center textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #d32f2f14}.meal-edit-row .meal-center textarea:disabled{background:#f3f4f6;color:#9ca3af;cursor:not-allowed}.meal-edit-row .meal-right{display:flex;align-items:center;flex-shrink:0}.meal-edit-row.disabled-row{opacity:.6}.meal-edit-row.disabled-row .meal-center textarea{background:#f3f4f6;cursor:not-allowed}#returnTop{position:fixed;bottom:24px;right:24px;z-index:1002;border:none;border-radius:999px;background:var(--primary);color:#fff;padding:12px 16px;cursor:pointer;display:none;box-shadow:0 10px 24px #00000029}#returnTop:hover{background:var(--primary-hover)}#returnTop[v-show]{display:block}@media (max-width: 768px){.card{padding:16px}.header{flex-direction:column;align-items:stretch}.header-actions{justify-content:flex-end}.day-cell{min-height:38px;padding:4px 2px}.day-cell .day-number{font-size:14px}.toolbar{flex-direction:column;align-items:stretch}.btn{justify-content:center}table{font-size:13px}th,td{padding:6px}.meal-edit-row{flex-wrap:wrap;gap:8px}.meal-edit-row .meal-left{width:100%}.meal-edit-row .meal-right{width:100%;justify-content:flex-end}.calendar-header{flex-direction:column;align-items:stretch;gap:6px}.calendar-header .calendar-actions{justify-content:flex-start}.meal-group-row td{padding:6px 8px}.meal-group-row .meal-actions{margin-left:0}}@media (max-width: 520px){.day-cell{min-height:34px;padding:2px 1px}.day-cell .day-number{font-size:12px}.switch{width:34px;height:18px}.switch .slider:before{height:12px;width:12px}.calendar-header .month-label{font-size:16px}.meal-group-row .meal-toggle{flex-wrap:wrap}}
