*,:before,:after{box-sizing:border-box;margin:0;padding:0}:focus{outline:none}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}:root{--color-primary:#0071e3;--color-primary-hover:#0059b3;--color-primary-bg:#eff6ff;--color-primary-light:#dbeafe;--color-success:#16a34a;--color-success-bg:#f0fdf4;--color-danger:#dc2626;--color-danger-bg:#fef2f2;--color-required-bg:#fff0f3;--color-required-border:#fecdd3;--color-warning-bg:#fffbeb;--color-warning-border:#fde68a;--color-bg:#f5f5f7;--color-surface:#fff;--color-border:#e5e7eb;--color-border-light:#f3f4f6;--color-text:#1d1d1f;--color-text-sub:#6b7280;--color-text-light:#d1d5db;--color-today-bg:#eef5ff;--blue:var(--color-primary);--blue-hover:var(--color-primary-hover);--green:var(--color-success);--bg:var(--color-bg);--surface:var(--color-surface);--border:var(--color-border);--text:var(--color-text);--text-sub:var(--color-text-sub);--text-light:var(--color-text-light);--font-xs:11px;--font-sm:12px;--font-base:14px;--font-md:16px;--font-lg:18px;--font-xl:20px;--font-2xl:24px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--radius-sm:4px;--radius-md:7px;--radius-lg:10px;--radius-xl:12px;--radius-pill:9999px;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 16px #0000001a;--shadow-lg:0 20px 60px #0000002e;--transition-fast:.1s ease;--transition-base:.15s ease}html,body,#root{height:100%}body{background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Hiragino Kaku Gothic ProN,Yu Gothic,sans-serif;font-size:var(--font-base);line-height:1.5}.app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.page-container{flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.app-nav{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 var(--sp-5);z-index:100;flex-shrink:0;display:flex;position:sticky;top:0}.app-nav-tab{padding:var(--sp-3) var(--sp-4);font-size:var(--font-base);color:var(--color-text-sub);transition:color var(--transition-fast), border-color var(--transition-fast);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;margin-bottom:-1px;font-weight:500;text-decoration:none;display:flex}.app-nav-tab:hover{color:var(--color-text)}.app-nav-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.app-nav-pfc-legend{padding:0 var(--sp-4);font-size:var(--font-xs);color:var(--color-text-light);white-space:nowrap;align-self:center;margin-left:auto}.app-footer{padding:var(--sp-2) var(--sp-5);text-align:center;color:var(--color-text-light);flex-shrink:0;font-size:.75rem}.page-split{flex:1;display:flex;overflow:hidden}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;flex-shrink:0;width:300px;min-width:200px;display:flex;overflow:hidden}.sidebar-header{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);gap:var(--sp-2);flex-direction:column;flex-shrink:0;display:flex}.detail-pane{padding:var(--sp-5) var(--sp-6);flex:1;overflow-y:auto}.food-list{flex:1;list-style:none;overflow-y:auto}.food-item{border-bottom:1px solid var(--color-border-light);cursor:pointer;transition:background var(--transition-fast);justify-content:space-between;align-items:center;padding:9px 14px;display:flex}.food-item:hover{background:var(--color-primary-bg)}.food-item.selected{background:var(--color-primary-light);font-weight:600}.food-item-sub{font-size:var(--font-xs);color:var(--color-text-sub);margin-top:2px}.food-list.compact .food-item{font-size:var(--font-sm);padding:7px 10px}.food-list.compact{border:1px solid var(--color-border);border-radius:var(--radius-md);max-height:280px;overflow-y:auto}.favorites-section{padding-bottom:var(--sp-2);border-bottom:1px solid var(--color-border-light)}.favorites-header{font-size:var(--font-xs);color:var(--color-text-sub);margin-bottom:var(--sp-2);font-weight:700}.favorites-list{gap:var(--sp-1);flex-wrap:wrap;max-height:120px;display:flex;overflow-y:auto}.favorite-item{background:var(--color-primary-light);border-radius:var(--radius-sm);font-size:var(--font-xs);color:var(--color-text);cursor:pointer;transition:background var(--transition-fast);align-items:center;gap:4px;padding:3px 6px;font-weight:600;display:flex}.favorite-item:hover{background:var(--color-primary-bg)}.favorite-item.in-dish{opacity:.5;cursor:default}.favorite-item-delete{width:14px;height:14px;color:var(--color-text-sub);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:10px;line-height:1;display:flex}.favorite-item-delete:hover{background:var(--color-danger-bg);color:var(--color-danger)}.food-item-star{border-radius:var(--radius-pill);cursor:pointer;width:24px;height:24px;color:var(--color-text-sub);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:14px;display:flex}.food-item-star:hover{color:var(--color-primary);background:var(--color-primary-bg)}.food-item-star.favorited{color:var(--color-primary)}.food-item-controls{align-items:center;gap:var(--sp-1);flex-shrink:0;display:flex}.search-input{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;font-size:var(--font-base);background:var(--color-bg);padding:7px 10px}.search-input:focus{border-color:var(--color-primary);background:var(--color-surface)}.search-input:disabled{opacity:.4}.count-text{font-size:var(--font-xs);color:var(--color-text-sub);margin-top:5px}.error-text{color:var(--color-danger)}.detail-name{font-size:var(--font-xl);margin-bottom:4px;font-weight:700}.detail-meta{font-size:var(--font-sm);color:var(--color-text-sub);margin-bottom:14px}.notes-box{background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius-md);font-size:var(--font-sm);white-space:pre-wrap;margin-bottom:14px;padding:10px 14px;line-height:1.6}.energy-row{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.energy-card{background:var(--color-primary-bg);border-radius:var(--radius-lg);text-align:center;min-width:80px;padding:10px 18px}.energy-card.green{background:var(--color-success-bg)}.energy-val{font-size:var(--font-2xl);color:var(--color-primary);font-weight:700}.energy-card.green .energy-val{color:var(--color-success)}.energy-lbl{font-size:var(--font-xs);color:var(--color-text-sub)}.nutrient-section{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:10px;padding:12px 16px}.section-title{font-size:var(--font-xs);color:var(--color-text-sub);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border-light);margin-bottom:10px;padding-bottom:6px;font-weight:700}.nutrient-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px 12px;display:grid}.nutrient-item{flex-direction:column;gap:1px;display:flex}.nutrient-label{font-size:var(--font-xs);color:var(--color-text-light)}.nutrient-val{font-size:var(--font-base);font-weight:500}.nutrient-val.na{color:var(--color-text-light);font-size:var(--font-sm)}.nutrient-unit{color:var(--color-text-light);margin-left:2px;font-size:10px}.placeholder{height:100%;color:var(--color-text-light);font-size:var(--font-base);justify-content:center;align-items:center;display:flex}.empty-state{color:var(--color-text-sub);font-size:var(--font-sm);padding:16px 14px}.empty-state.small{padding:8px 0}.btn-primary{background:var(--color-primary);color:#fff;border-radius:var(--radius-md);font-size:var(--font-sm);cursor:pointer;white-space:nowrap;transition:background var(--transition-base);border:none;padding:7px 14px}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-primary.small{font-size:var(--font-xs);padding:5px 10px}.btn-danger{background:var(--color-danger);color:#fff;border-radius:var(--radius-md);font-size:var(--font-sm);cursor:pointer;white-space:nowrap;transition:background var(--transition-base);border:none;padding:7px 14px}.btn-danger:hover{background:#b91c1c}.btn-ghost{color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-sm);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);background:0 0;padding:6px 12px}.btn-ghost:hover{background:var(--color-bg);border-color:var(--color-text-sub)}.btn-ghost.small{font-size:var(--font-xs);padding:4px 8px}.btn-outline{color:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--radius-md);font-size:var(--font-sm);cursor:pointer;transition:background var(--transition-fast);background:0 0;padding:6px 12px}.btn-outline:hover{background:var(--color-primary-bg)}.btn-outline:disabled{opacity:.4;cursor:not-allowed}.btn-icon{border-radius:var(--radius-pill);cursor:pointer;background:var(--color-border-light);width:28px;height:28px;color:var(--color-text-sub);transition:background var(--transition-fast), color var(--transition-fast);border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}.btn-icon:hover{background:var(--color-danger-bg);color:var(--color-danger)}.btn-add{border:1px solid var(--color-primary);color:var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-base);cursor:pointer;background:0 0;padding:1px 7px;line-height:1}.btn-add:hover{background:var(--color-primary-bg)}.dish-list{flex:1;list-style:none;overflow-y:auto}.dish-card{border-bottom:1px solid var(--color-border-light);cursor:pointer;transition:background var(--transition-fast);align-items:center;padding:10px 14px;display:flex}.dish-card:hover{background:var(--color-primary-bg)}.dish-card.selected{background:var(--color-primary-light)}.dish-card-body{flex:1;min-width:0}.dish-card-name{font-size:var(--font-base);font-weight:600}.dish-card-meta{font-size:var(--font-sm);color:var(--color-text-sub);margin-top:1px}.dish-editor{flex-direction:column;gap:16px;display:flex}.dish-name-row{align-items:center;gap:8px;display:flex}.dish-name-input{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-md);outline:none;padding:8px 12px;font-weight:600}.dish-name-input:focus{border-color:var(--color-primary)}.dish-name-input.required-empty{background:var(--color-required-bg);border-color:var(--color-required-border)}.dish-name-input.required-empty:focus{background:var(--color-required-bg);border-color:var(--color-primary)}.editor-columns{align-items:flex-start;gap:16px;display:flex}.editor-col{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.col-title{font-size:var(--font-sm);color:var(--color-text-sub);font-weight:700}.add-ingredient-row{background:var(--color-primary-bg);border-radius:var(--radius-md);flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;padding:8px 10px;display:flex}.selected-food-name{font-size:var(--font-sm);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.amount-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:70px;font-size:var(--font-sm);text-align:right;padding:5px 8px}.amount-input.required-empty{background:var(--color-required-bg);border-color:var(--color-required-border)}.amount-input.required-empty:focus{background:var(--color-required-bg);border-color:var(--color-primary)}.unit-label{font-size:var(--font-sm);color:var(--color-text-sub)}.ingredient-list{list-style:none}.ingredient-item{border-bottom:1px solid var(--color-border-light);align-items:center;gap:6px;padding:7px 0;display:flex}.ingredient-name{font-size:var(--font-sm);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.nutrition-summary{background:var(--color-bg);padding:12px 14px}.summary-title{font-size:var(--font-sm);color:var(--color-text-sub);margin-bottom:6px;font-weight:700}.summary-kcal-row{align-items:baseline;gap:3px;margin-bottom:4px;display:flex}.summary-kcal-val{font-size:var(--font-md);color:var(--color-text);font-weight:700}.summary-pfc-row{align-items:baseline;gap:var(--sp-3);margin-bottom:4px;display:flex}.summary-pfc-item{align-items:baseline;gap:2px;display:flex}.summary-pfc-abbr{font-size:var(--font-sm);color:var(--color-primary);font-weight:600}.summary-pfc-val{font-size:var(--font-sm);color:var(--color-text);font-weight:700}.summary-unit{font-size:var(--font-xs);color:var(--color-text-sub)}.summary-sub-row{gap:var(--sp-3);font-size:var(--font-xs);color:var(--color-text-sub);display:flex}.mealplan-page{flex-direction:column;flex:1;display:flex;overflow:hidden}.mealplan-top{padding:14px var(--sp-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-shrink:0;overflow-y:auto}.summary-section{padding:16px var(--sp-5);flex:1;overflow-y:auto}.date-nav{align-items:center;gap:8px;margin-bottom:14px;display:flex}.date-input{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-base);outline:none;padding:6px 10px}.date-input:focus{border-color:var(--color-primary)}.meal-sections{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px;display:grid}.meal-section{background:var(--color-bg);border-radius:var(--radius-lg);padding:10px 12px}.meal-section-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.meal-label{font-size:var(--font-sm);font-weight:700}.meal-dish-list{list-style:none}.meal-dish-item{font-size:var(--font-sm);border-bottom:1px solid var(--color-border-light);align-items:center;gap:4px;padding:4px 0;display:flex}.meal-dish-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.dish-kcal{font-size:var(--font-xs);color:var(--color-text-sub);white-space:nowrap}.dish-picker-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);max-width:360px;box-shadow:var(--shadow-md);margin-bottom:12px;padding:12px}.dish-picker-header{font-size:var(--font-sm);justify-content:space-between;align-items:center;margin-bottom:8px;font-weight:700;display:flex}.dish-picker-list{max-height:200px;margin-top:6px;list-style:none;overflow-y:auto}.dish-picker-item{border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-sm);justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.dish-picker-item:hover{background:var(--color-primary-bg)}.day-nutrition{background:var(--color-primary-bg);border-radius:var(--radius-lg);margin-top:10px;padding:12px 16px}.day-nutrition-title{font-size:var(--font-sm);color:var(--color-text-sub);margin-bottom:8px;font-weight:700}.day-nutrition-grid{flex-wrap:wrap;gap:20px;display:flex}.day-n-item{text-align:center}.day-n-val{font-size:var(--font-xl);color:var(--color-primary);font-weight:700}.day-n-label{font-size:var(--font-xs);color:var(--color-text-sub)}.day-n-unit{color:var(--color-text-light);margin-left:2px;font-size:10px}.inner-page{padding:0 var(--sp-6) var(--sp-5);flex-direction:column;flex:1;display:flex}.page-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--sp-3) var(--sp-6);margin:0 calc(-1 * var(--sp-6)) var(--sp-5);z-index:50;flex-shrink:0;align-items:center;gap:12px;display:flex;position:sticky;top:0}.page-title{font-size:var(--font-lg);font-weight:700}.page-header-actions{gap:8px;margin-left:auto;display:flex}.month-nav{align-items:center;gap:var(--sp-1);display:flex}.month-nav-btn{width:28px;height:28px;font-size:var(--font-sm);color:var(--color-text);cursor:pointer;transition:background var(--transition-fast);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex}.month-nav-btn:hover{background:var(--color-bg)}.month-nav-btn:active{background:var(--color-border)}.month-nav-title{font-size:var(--font-md);color:var(--color-text);text-align:center;white-space:nowrap;font-weight:600}.month-nav-today{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-sub);font-size:var(--font-sm);padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-sm);cursor:pointer;margin-left:var(--sp-1);transition:background var(--transition-fast), color var(--transition-fast)}.month-nav-today:hover{background:var(--color-bg);color:var(--color-text)}.center-empty{color:var(--color-text-sub);font-size:var(--font-base);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.meal-edit-page{flex-direction:column;flex:1;display:flex;overflow:hidden}.meal-edit-header{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex}.meal-edit-header-center{flex-direction:column;flex:1;align-items:center;gap:2px;display:flex}.meal-edit-header-label{font-size:var(--font-xs);color:var(--color-text-sub);letter-spacing:.04em;font-weight:500}.meal-edit-date-input{font-size:var(--font-md);color:var(--color-text);border:none;border-bottom:2px solid var(--color-border);cursor:pointer;text-align:left;background:0 0;outline:none;width:auto;padding-bottom:2px;font-weight:600}.meal-date-section{padding:var(--sp-5) var(--sp-5) var(--sp-3);border-bottom:1px solid var(--color-border)}.meal-edit-date-input:hover{border-bottom-color:var(--color-text-sub)}.meal-edit-date-input:focus{color:var(--color-primary);border-bottom-color:var(--color-primary)}.meal-edit-content{padding:var(--sp-5) var(--sp-6);gap:var(--sp-3);flex-direction:column;flex:1;width:100%;max-width:680px;margin:0 auto;display:flex;overflow-y:auto}.meal-section-label{font-size:var(--font-sm);color:var(--color-text-sub);font-weight:600}.meal-dish-list{border-top:1px solid var(--color-border);flex-direction:column;list-style:none;display:flex}.meal-dish-item{padding:var(--sp-3) var(--sp-2);border-bottom:1px solid var(--color-border);align-items:center;gap:10px;min-height:36px;display:flex}.meal-dish-item:last-child{border-bottom:none}.meal-dish-name{font-size:var(--font-base);flex:1;font-weight:500}.meal-dish-kcal{font-size:var(--font-xs);color:#9ca3af;white-space:nowrap;font-weight:400}.meal-empty-area{text-align:center;border:2px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text-sub);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:32px 16px;display:flex}.meal-empty-area.small{padding:16px}.meal-empty-icon{margin-bottom:4px;font-size:28px}.meal-empty-sub{font-size:var(--font-xs);color:var(--color-text-light)}.add-search-wrap{position:relative}.add-search-input{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;font-size:var(--font-base);background:var(--color-surface);transition:border-color var(--transition-fast);padding:9px 14px}.add-search-input:focus{border-color:var(--color-primary);outline:none}.add-dropdown{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:200;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden}.add-dropdown-tabs{border-bottom:1px solid var(--color-border-light);background:var(--color-bg);display:flex}.add-dropdown-tab{font-size:var(--font-sm);cursor:pointer;color:var(--color-text-sub);transition:color var(--transition-fast), border-color var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-1px;padding:8px 12px;font-weight:500}.add-dropdown-tab:hover{color:var(--color-text)}.add-dropdown-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.add-dropdown-list{max-height:240px;list-style:none;overflow-y:auto}.add-dropdown-item{border-bottom:1px solid var(--color-border-light);transition:background var(--transition-fast);cursor:pointer;align-items:center;gap:8px;padding:9px 14px;display:flex}.add-dropdown-item:hover{background:var(--color-primary-bg)}.add-dropdown-item.added{opacity:.55;cursor:default}.add-dropdown-body{flex:1;min-width:0}.add-dropdown-name{font-size:var(--font-base);font-weight:500;display:block}.add-dropdown-sub{font-size:var(--font-xs);color:var(--color-text-sub)}.add-dropdown-btn{font-size:var(--font-xs);color:var(--color-primary);cursor:pointer;white-space:nowrap;border-radius:var(--radius-sm);transition:background var(--transition-fast);background:0 0;border:none;padding:4px 8px;font-weight:600}.add-dropdown-btn:hover:not(:disabled){background:var(--color-primary-bg)}.add-dropdown-btn:disabled{color:var(--color-text-light);cursor:default}.add-dropdown-new{font-size:var(--font-sm);color:var(--color-primary);cursor:pointer;border-top:1px solid var(--color-border-light);transition:background var(--transition-fast);padding:10px 14px}.add-dropdown-new:hover{background:var(--color-primary-bg)}.add-dropdown-empty{font-size:var(--font-sm);color:var(--color-text-sub);padding:10px 14px}.ingredient-section{gap:var(--sp-3);flex-direction:column;display:flex}.dish-select-list{flex-direction:column;flex:1;gap:6px;padding:4px 2px;list-style:none;display:flex;overflow-y:auto}.dish-select-item{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), transform .1s ease-out;align-items:center;gap:10px;padding:12px 14px;display:flex}.dish-select-item:hover{background:var(--color-bg)}.dish-select-item:active{transform:scale(.98)}.dish-select-item.selected{background:var(--color-primary-bg);border-color:var(--color-primary);border-left:3px solid var(--color-primary)}.dish-select-check{border-radius:var(--radius-pill);border:2px solid var(--color-border);width:20px;height:20px;font-size:var(--font-sm);color:var(--color-primary);transition:border-color var(--transition-fast), background var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.dish-select-item.selected .dish-select-check{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.dish-select-body{flex:1;min-width:0}.dish-select-name{font-size:var(--font-base);font-weight:500}.dish-select-item.selected .dish-select-name{color:var(--color-primary);font-weight:600}.dish-select-meta{font-size:var(--font-sm);color:var(--color-text-sub);margin-top:2px}.selected-dish-list{flex-direction:column;gap:8px;list-style:none;display:flex}.selected-dish-item{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-success);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-direction:column;gap:6px;padding:12px 14px;display:flex}.selected-dish-row1{justify-content:space-between;align-items:center;gap:8px;display:flex}.selected-dish-row2{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.selected-dish-name{font-size:var(--font-md);font-weight:600}.selected-dish-kcal{font-size:var(--font-md);color:var(--color-primary);white-space:nowrap;font-weight:700}.selected-dish-kcal-unit{font-size:var(--font-xs);color:var(--color-text-sub);margin-left:2px;font-weight:400}.selected-dish-badges{flex-wrap:wrap;gap:4px;display:flex}.nutrient-badge{font-size:var(--font-xs);border-radius:var(--radius-pill);white-space:nowrap;padding:2px 8px}.nutrient-badge.protein{background:var(--color-success-bg);color:var(--color-success)}.nutrient-badge.fat{color:#c2410c;background:#fff7ed}.nutrient-badge.carb{background:var(--color-primary-bg);color:var(--color-primary)}.nutrient-badge.salt{color:#7c3aed;background:#f5f3ff}.dish-grid{flex:1;grid-template-columns:repeat(3,1fr);align-content:start;gap:12px;display:grid;overflow-y:auto}.dish-card-full{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);cursor:pointer;padding:14px 16px}.dish-card-full-header{justify-content:space-between;align-items:flex-start;margin-bottom:6px;display:flex}.dish-card-full-meta{font-size:var(--font-sm);color:var(--color-text-sub);gap:10px;margin-bottom:8px;display:flex}.dish-card-nutrients{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.dish-nutrient-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-3);flex-direction:column;flex:68px;display:flex}.dish-nutrient-val-row{align-items:baseline;gap:2px;display:flex}.dish-nutrient-val{color:var(--color-text);font-size:15px;font-weight:700;line-height:1.2}.dish-nutrient-unit{font-size:var(--font-xs);color:var(--color-text-sub)}.dish-nutrient-lbl{font-size:var(--font-xs);color:var(--color-text-sub);margin-top:3px;font-weight:500}.dish-nutrient-lbl--pfc{color:var(--color-primary)}.dish-card-ingredients{flex-wrap:wrap;gap:4px;display:flex}.ingredient-tag{background:var(--color-border-light);border-radius:var(--radius-sm);font-size:var(--font-xs);color:var(--color-text-sub);padding:2px 7px}.dish-card-ingredient-list{margin-top:var(--sp-2);flex-direction:column;gap:3px;list-style:none;display:flex}.dish-card-ingredient-list li{font-size:var(--font-xs);color:var(--color-text-sub);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:baseline;padding:2px 0;display:flex}.dish-card-ingredient-list li:last-child{border-bottom:none}.ingredient-list-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.ingredient-list-amount{color:var(--color-text-light);white-space:nowrap;margin-left:var(--sp-2)}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:200;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-panel{background:var(--color-surface);border-radius:var(--radius-xl);width:min(540px,95vw);max-height:90vh;box-shadow:var(--shadow-lg);flex-direction:column;display:flex}.modal-header{padding:16px var(--sp-5);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--font-md);font-weight:700}.modal-body{padding:16px var(--sp-5);flex-direction:column;flex:1;gap:14px;display:flex;overflow-y:auto}.modal-footer{padding:12px var(--sp-5);border-top:1px solid var(--color-border);flex-shrink:0;align-items:center;gap:8px;display:flex}.modal-footer-actions{gap:8px;margin-left:auto;display:flex}.food-detail-top{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.summary-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.section-h2{font-size:var(--font-md);font-weight:700}.table-wrap{overflow-x:auto}.summary-table{border-collapse:collapse;width:100%;font-size:var(--font-sm);background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.summary-table th{background:var(--color-bg);text-align:center;font-weight:700;font-size:var(--font-sm);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:10px 12px}.summary-table td{border-bottom:1px solid var(--color-border-light);vertical-align:middle;padding:8px 12px}.summary-table tr:last-child td{border-bottom:none}.summary-table tbody tr:hover td{background:var(--color-bg)}.summary-table tr.row-today td{background:var(--color-today-bg)}.td-date{white-space:nowrap;font-weight:600}.td-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.th-unit{color:var(--color-text-sub);font-size:10px;font-weight:400}.calendar-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.calendar-grid{grid-template-columns:repeat(7,1fr);display:grid}.calendar-weekday{padding:var(--sp-1) var(--sp-2);text-align:center;font-size:var(--font-xs);color:var(--color-text-sub);border-bottom:1px solid var(--color-border);font-weight:700}.calendar-weekday.sunday{color:var(--color-danger)}.calendar-weekday.saturday{color:var(--color-primary-hover)}.calendar-day.sunday .calendar-day-num{color:var(--color-danger)}.calendar-day.saturday .calendar-day-num{color:var(--color-primary)}.calendar-day{min-height:110px;padding:var(--sp-2) var(--sp-2);border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);cursor:pointer;gap:var(--sp-1);transition:background var(--transition-fast);flex-direction:column;display:flex}.calendar-day:nth-child(7n){border-right:none}.calendar-day:hover{background:var(--color-primary-bg)}.calendar-day.today .calendar-day-num{color:#fff;background:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;display:inline-flex}@keyframes today-pulse{0%{background:var(--color-primary-bg);box-shadow:0 0 #0071e380}to{background:0 0;box-shadow:0 0 0 10px #0071e300}}.calendar-day.today-flash{animation:.5s ease-out .2s today-pulse}@media (prefers-reduced-motion:reduce){.calendar-day.today-flash{animation:none}}.calendar-day.other-month{background:var(--color-bg);cursor:default;pointer-events:none}.calendar-day.other-month .calendar-day-num{color:var(--color-text-light)}.calendar-day-num{font-size:var(--font-sm);line-height:1}.calendar-day-dish{font-size:var(--font-xs);color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.calendar-day-dishes{border-top:1px solid var(--color-border);padding-top:var(--sp-1);margin-top:var(--sp-1);flex-direction:column;gap:1px;display:flex}.calendar-day-kcal{font-size:var(--font-md);font-weight:700;line-height:1}.calendar-day-kcal-unit{font-size:var(--font-xs);color:var(--color-text-sub);margin-left:2px;font-weight:400}.calendar-day-nutrients{flex-flow:wrap;gap:1px 4px;width:100%;margin-top:2px;display:flex}.calendar-day-nutrient{color:var(--color-text);align-items:baseline;gap:1px;font-size:10px;display:flex}.calendar-nutrient-label{color:var(--color-text-sub);font-size:10px;font-weight:600}.calendar-nutrient-val{font-weight:600}.calendar-day-dish-more{color:var(--color-text-light);margin-left:3px;font-size:10px}.nutrition-hero-bar{background:var(--color-primary-bg);border-bottom:1px solid var(--color-primary-light);padding:var(--sp-2) var(--sp-5);justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:nowrap;flex-shrink:0;display:flex}.nutrition-hero-main{align-items:baseline;gap:var(--sp-2);flex-wrap:nowrap;display:flex}.nhi-energy,.nhi-pfc{align-items:baseline;gap:2px;display:flex}.nhi-abbr{font-size:var(--font-sm);color:var(--color-primary);font-weight:600}.nhi-val{font-size:var(--font-base);color:var(--color-text);font-weight:700}.nhi-unit{font-size:var(--font-xs);color:var(--color-text-sub)}.nhi-sep{color:var(--color-text-light);font-size:var(--font-sm)}.nhi-sub{font-size:var(--font-xs);color:var(--color-text-sub);white-space:nowrap}.pane-overlay{background:0 0;position:fixed;inset:0}.pane-container{background:var(--color-surface);border-radius:var(--radius-xl) 0 0 var(--radius-xl);width:min(600px,90vw);height:100vh;position:fixed;top:0;right:0;overflow:hidden;transform:translate(100%);box-shadow:-8px 0 40px #0000002e}.pane-container.open{transform:translate(0)}.pane-container.shifted{border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);transition:right .24s cubic-bezier(0,0,.2,1);right:min(600px,90vw)}.pane-inner{flex-direction:column;height:100vh;display:flex;position:relative;overflow:hidden}.pane-header{align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--color-border);background:var(--color-surface);z-index:1;flex-shrink:0;display:flex;position:sticky;top:0}.pane-body{padding:var(--sp-5);gap:var(--sp-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.pane-footer{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--color-border);background:var(--color-surface);z-index:1;flex-shrink:0;display:flex;position:sticky;bottom:0}.toast-container{bottom:var(--sp-5);right:var(--sp-5);z-index:200;gap:var(--sp-2);flex-direction:column;display:flex;position:fixed}.toast{max-width:320px;padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:var(--font-sm);border-left:3px solid #0000;animation:.2s ease-out toast-in}.toast.success{background:var(--color-success-bg);border-color:var(--color-success);color:var(--color-text)}.toast.error{background:var(--color-danger-bg);border-color:var(--color-danger);color:var(--color-text)}@keyframes toast-in{0%{opacity:0;transform:translate(110%)}to{opacity:1;transform:translate(0)}}.login-page{background:var(--color-bg);min-height:100vh;padding:var(--sp-4);justify-content:center;align-items:center;display:flex}.login-card{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:calc(var(--sp-6) * 2);align-items:center;gap:var(--sp-5);flex-direction:column;width:min(400px,95vw);display:flex}.login-header{text-align:center;gap:var(--sp-1);flex-direction:column;display:flex}.login-header h1{font-size:var(--font-2xl);color:var(--color-text);margin:0;font-weight:700}.login-header p{font-size:var(--font-base);color:var(--color-text-sub);margin:0}.login-google-btn{justify-content:center;align-items:center;gap:var(--sp-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;height:44px;color:var(--color-text);cursor:pointer;font-size:16px;font-weight:500;display:flex}.login-google-btn:hover:not(:disabled){background:var(--color-bg)}.login-google-btn:disabled{opacity:.6;cursor:not-allowed}.login-note{font-size:var(--font-xs);color:var(--color-text-sub);text-align:center;margin:0}.nav-avatar-area{position:relative}.nav-avatar-btn{cursor:pointer;background:var(--color-primary-light,#e8f0fe);width:30px;height:30px;color:var(--color-primary);font-weight:600;font-size:var(--font-sm);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;overflow:hidden}.nav-avatar-btn img{object-fit:cover;width:100%;height:100%}.nav-dropdown{top:calc(100% + var(--sp-2));background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:150;width:200px;position:absolute;right:0;overflow:hidden}.nav-dropdown-email{padding:var(--sp-3) var(--sp-4);font-size:var(--font-sm);color:var(--color-text-sub);border-bottom:1px solid var(--color-border)}.nav-dropdown-item{padding:var(--sp-3) var(--sp-4);font-size:var(--font-sm);cursor:pointer;text-align:left;background:0 0;border:none;width:100%}.nav-dropdown-item:hover{background:var(--color-bg)}.nav-dropdown-item.danger{color:var(--color-danger)}
