.meal-plan-detail-page{max-width:1200px;margin:0 auto;padding:var(--space-6)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.spinning{animation:spin 1s linear infinite}.meal-plan-detail-error{display:flex;align-items:center;justify-content:center;min-height:60vh}.error-content{text-align:center}.error-content h2{margin-bottom:var(--space-6);color:var(--text)}.detail-header{margin-bottom:var(--space-8)}.detail-header-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6)}.detail-header-actions{display:flex;gap:var(--space-3)}.detail-header-info{margin-bottom:var(--space-4)}.detail-title{font-size:var(--text-3xl);font-weight:var(--font-bold);color:var(--text);margin:0 0 var(--space-3) 0}.detail-meta{gap:var(--space-4);flex-wrap:wrap}.detail-date,.detail-meta{display:flex;align-items:center}.detail-date{gap:var(--space-2);color:var(--text-muted);font-size:var(--text-sm)}.detail-status{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium);text-transform:uppercase;letter-spacing:.05em}.detail-status.status-current{background:var(--brand-100);color:var(--brand-700)}.detail-status.status-upcoming{background:#dbeafe;color:#1e40af}[data-theme=dark] .detail-status.status-upcoming{background:rgba(59,130,246,.2);color:#93c5fd}.detail-status.status-past{background:var(--panel-2);color:var(--text-muted)}.detail-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium)}.detail-badge.badge-ai{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.detail-badge.badge-manual{background:var(--panel-2);color:var(--text-muted)}.detail-notes{margin-top:var(--space-4);padding:var(--space-4);background:var(--panel-2);border-radius:var(--radius-lg);border-left:3px solid var(--brand-500)}.detail-notes p{margin:0;color:var(--text-muted);font-size:var(--text-sm);line-height:1.6}.detail-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.detail-tag{display:inline-block;padding:var(--space-1) var(--space-3);background:var(--panel-2);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--text-muted)}.edit-mode-banner{margin-top:var(--space-6);padding:var(--space-4);background:linear-gradient(135deg,rgba(102,126,234,.1),rgba(118,75,162,.1));border:1px solid rgba(102,126,234,.3);border-radius:var(--radius-lg)}.edit-mode-content{display:flex;align-items:center;gap:var(--space-2);color:#667eea;font-weight:var(--font-medium);font-size:var(--text-sm)}.unsaved-indicator{margin-left:var(--space-2);color:#f59e0b;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.calendar-view{margin-top:var(--space-6)}.calendar-container{position:relative;display:flex;align-items:center;gap:var(--space-2)}.calendar-container.no-scroll,.calendar-container.single-day,.calendar-container.two-days,.calendar-scroll-btn{justify-content:center}.calendar-scroll-btn{position:-webkit-sticky;position:sticky;top:50%;flex-shrink:0;width:36px;height:36px;border-radius:var(--radius-full);background:var(--brand-500);color:#fff;border:none;font-size:var(--text-lg);font-weight:var(--font-bold);cursor:pointer;transition:all var(--transition-fast);box-shadow:0 2px 8px rgba(0,177,64,.25);z-index:10;display:flex;align-items:center;line-height:1}.calendar-scroll-btn:hover{background:var(--brand-600);transform:scale(1.05);box-shadow:0 4px 12px rgba(0,177,64,.35)}.calendar-scroll-btn:active{transform:scale(.98)}.calendar-scroll-btn.scroll-left{left:0}.calendar-scroll-btn.scroll-right{right:0}.calendar-scroll-wrapper{flex:1 1;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--brand-500) var(--panel);scroll-behavior:smooth}.calendar-scroll-wrapper.no-overflow{overflow-x:hidden}.calendar-scroll-wrapper::-webkit-scrollbar{height:8px}.calendar-scroll-wrapper::-webkit-scrollbar-track{background:var(--panel-2);border-radius:var(--radius-sm)}.calendar-scroll-wrapper::-webkit-scrollbar-thumb{background:var(--brand-500);border-radius:var(--radius-sm)}.calendar-scroll-wrapper::-webkit-scrollbar-thumb:hover{background:var(--brand-600)}.calendar-unified{display:flex;flex-direction:column;gap:var(--space-2)}.calendar-header{display:grid;grid-template-columns:repeat(7,minmax(200px,1fr));grid-gap:var(--space-3);gap:var(--space-3);min-width:min-content;padding:0}.calendar-header.days-1{grid-template-columns:1fr;max-width:400px;margin:0 auto}.calendar-header.days-2{grid-template-columns:repeat(2,1fr);max-width:800px;margin:0 auto}.calendar-header.days-3{grid-template-columns:repeat(3,minmax(200px,1fr))}.calendar-header.days-4{grid-template-columns:repeat(4,minmax(200px,1fr))}.calendar-header.days-5{grid-template-columns:repeat(5,minmax(200px,1fr))}.calendar-header.days-6{grid-template-columns:repeat(6,minmax(200px,1fr))}.calendar-header.days-10,.calendar-header.days-11,.calendar-header.days-12,.calendar-header.days-13,.calendar-header.days-14,.calendar-header.days-7,.calendar-header.days-8,.calendar-header.days-9{grid-template-columns:repeat(7,minmax(200px,1fr))}.calendar-header-day{text-align:center;padding:var(--space-3);background:var(--panel-2);border-radius:var(--radius-lg);box-sizing:border-box}.calendar-day-name{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-1)}.calendar-day-number{font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--text)}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(200px,1fr));grid-gap:var(--space-3);gap:var(--space-3);min-height:500px;padding-bottom:var(--space-4);min-width:min-content;align-items:start}.calendar-grid.days-1{grid-template-columns:1fr;max-width:400px;margin:0 auto}.calendar-grid.days-2{grid-template-columns:repeat(2,1fr);max-width:800px;margin:0 auto}.calendar-grid.days-3{grid-template-columns:repeat(3,minmax(200px,1fr))}.calendar-grid.days-4{grid-template-columns:repeat(4,minmax(200px,1fr))}.calendar-grid.days-5{grid-template-columns:repeat(5,minmax(200px,1fr))}.calendar-grid.days-6{grid-template-columns:repeat(6,minmax(200px,1fr))}.calendar-grid.days-10,.calendar-grid.days-11,.calendar-grid.days-12,.calendar-grid.days-13,.calendar-grid.days-14,.calendar-grid.days-7,.calendar-grid.days-8,.calendar-grid.days-9{grid-template-columns:repeat(7,minmax(200px,1fr))}.calendar-day-cell{position:relative;background:var(--panel);border:2px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-4);min-height:300px;display:flex;flex-direction:column;transition:all var(--transition-normal);cursor:pointer;box-sizing:border-box}.calendar-day-cell:hover{border-color:var(--brand-500);box-shadow:0 4px 12px rgba(0,0,0,.08);transform:translateY(-2px)}.calendar-day-cell.day-today{border-color:var(--brand-500);border-width:3px;box-shadow:0 0 0 3px rgba(0,177,64,.1)}.calendar-day-cell.day-past{opacity:.6;background:var(--panel-2)}.calendar-day-cell.day-locked{background:var(--bg-subtle)}.calendar-day-cell.drop-zone{border-color:var(--brand-500);border-style:dashed;background:rgba(0,177,64,.05)}.calendar-meal-item.dragging{opacity:.5;cursor:-webkit-grabbing!important;cursor:grabbing!important}.day-badge{position:absolute;top:var(--space-2);right:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium);z-index:1}.past-badge{background:rgba(148,163,184,.2);color:#64748b}.completed-badge{background:rgba(34,197,94,.2);color:#16a34a}.today-badge{background:linear-gradient(135deg,var(--brand-500),var(--brand-600));color:#fff;font-weight:var(--font-semibold)}.calendar-day-meals{gap:var(--space-3);overflow-y:auto}.calendar-day-meals,.calendar-meal-empty{flex:1 1;display:flex;flex-direction:column}.calendar-meal-empty{align-items:center;justify-content:center;text-align:center;color:var(--text-muted);padding:var(--space-6)}.empty-icon{opacity:.3;margin-bottom:var(--space-3)}.calendar-meal-empty p{margin:0 0 var(--space-3) 0;font-size:var(--text-sm)}.add-meal-btn{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--brand-100);color:var(--brand-700);border:none;border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast)}.add-meal-btn:hover{background:var(--brand-200)}.calendar-meal-item{background:var(--bg-subtle);border-radius:var(--radius-lg);padding:var(--space-3);transition:all var(--transition-fast);border-left:3px solid transparent;overflow:hidden}.calendar-meal-image{width:100%;height:120px;margin:calc(-1 * var(--space-3)) calc(-1 * var(--space-3)) var(--space-3);border-radius:var(--radius-lg) var(--radius-lg) 0 0;overflow:hidden;background:var(--panel-2)}.calendar-meal-image-img{width:100%;height:100%;object-fit:cover}.calendar-meal-image-placeholder{width:100%;height:100%;background:linear-gradient(135deg,var(--panel-2),var(--bg-subtle));display:flex;align-items:center;justify-content:center;color:var(--text-muted);opacity:.5}[data-theme=dark] .calendar-meal-image-placeholder{background:linear-gradient(135deg,rgba(21,181,107,.1) 0,var(--bg-subtle) 100%)}.calendar-meal-item:hover{background:var(--hover-bg);transform:translateX(2px)}.calendar-meal-item.meal-breakfast{border-left-color:#f59e0b}.calendar-meal-item.meal-lunch{border-left-color:#3b82f6}.calendar-meal-item.meal-dinner{border-left-color:#8b5cf6}.calendar-meal-item.meal-snack{border-left-color:#10b981}.calendar-meal-item.meal-dessert{border-left-color:#ec4899}.calendar-meal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.calendar-meal-type-badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.calendar-meal-actions{display:flex;gap:var(--space-1);opacity:0;transition:opacity var(--transition-fast)}.calendar-meal-item:hover .calendar-meal-actions{opacity:1}.calendar-action-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.calendar-action-btn:hover{background:var(--danger);border-color:var(--danger);color:#fff}.calendar-meal-name{font-weight:var(--font-medium);color:var(--text);font-size:var(--text-sm);margin-bottom:var(--space-1);line-height:1.4}.calendar-meal-meta{display:flex;align-items:center;gap:var(--space-2)}.calendar-meal-meta,.calendar-meal-notes{font-size:var(--text-xs);color:var(--text-muted)}.calendar-meal-notes{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border);font-style:italic}.detail-schedule{display:grid;grid-gap:var(--space-6);gap:var(--space-6)}.day-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-xl);overflow:hidden;transition:all var(--transition-normal)}.day-card.day-past{opacity:.7}.day-card.day-locked,.day-header{background:var(--panel-2)}.day-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-5);border-bottom:1px solid var(--border)}.day-info{display:flex;flex-direction:column;gap:var(--space-1)}.day-name{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text);margin:0}.day-date{font-size:var(--text-sm);color:var(--text-muted);margin:0}.day-locked-badge,.day-past-badge{padding:var(--space-1) var(--space-3);background:var(--panel);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--text-muted)}.day-meals{padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.meal-empty{text-align:center;padding:var(--space-8);color:var(--text-muted)}.meal-empty p{margin:0 0 var(--space-4) 0}.meal-item{display:flex;gap:var(--space-4);padding:var(--space-4);background:var(--bg-subtle);border-radius:var(--radius-lg);transition:all var(--transition-fast)}.meal-item:hover{background:var(--hover-bg)}.meal-type{flex-shrink:0;width:100px;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--brand-600);text-transform:uppercase;letter-spacing:.05em}.meal-content{flex:1 1}.meal-name{font-weight:var(--font-medium);color:var(--text)}.meal-name,.meal-notes{margin-bottom:var(--space-1)}.meal-notes{font-size:var(--text-sm);color:var(--text-muted)}.meal-servings{font-size:var(--text-xs);color:var(--text-muted)}.meal-actions{gap:var(--space-2)}.meal-action-btn,.meal-actions{display:flex;align-items:center}.meal-action-btn{justify-content:center;width:32px;height:32px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.meal-action-btn:hover{background:var(--hover-bg);border-color:var(--brand-500);color:var(--brand-500)}.detail-empty{text-align:center;padding:var(--space-12);color:var(--text-muted)}.detail-empty svg{margin:0 auto var(--space-4);opacity:.5}@media (max-width:1400px){.calendar-grid,.calendar-header{grid-template-columns:repeat(7,minmax(180px,1fr))}}@media (max-width:1024px){.calendar-grid,.calendar-header{grid-template-columns:repeat(7,minmax(160px,1fr))}.calendar-day-cell{min-height:250px}}@media (max-width:768px){.meal-plan-detail-page{padding:var(--space-4)}.detail-header-top{align-items:stretch;gap:var(--space-4)}.detail-header-actions,.detail-header-top{flex-direction:column}.detail-title{font-size:var(--text-2xl)}.detail-meta{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.calendar-grid,.calendar-header{grid-template-columns:repeat(7,minmax(140px,1fr));gap:var(--space-2)}.calendar-day-cell{min-height:220px;padding:var(--space-3)}.calendar-meal-item,.calendar-scroll-hint{padding:var(--space-2)}.calendar-scroll-hint{font-size:var(--text-xs)}}@media (max-width:480px){.calendar-grid,.calendar-header{grid-template-columns:repeat(7,minmax(120px,1fr))}.calendar-day-cell{min-height:200px}.calendar-day-cell,.calendar-header-day{padding:var(--space-2)}.calendar-day-name{font-size:10px}.calendar-day-number{font-size:var(--text-base)}}