.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content{background:var(--bg-primary);border-radius:16px;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:0 4px 24px #0000004d}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px;border-bottom:1px solid var(--highlight-secondary)}.modal-close{background:none;border:none;color:var(--text-color);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity .2s}.modal-close:hover{opacity:1}.modal-form{padding:24px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:var(--text-color)}.form-input{width:100%;padding:12px 16px;border:1px solid var(--highlight-secondary);border-radius:8px;background:var(--bg-white);color:var(--bg-primary);font-size:16px}.form-input:focus{outline:none;border-color:var(--highlight-tertiary)}.form-input:disabled{opacity:.6;cursor:not-allowed}.form-error{color:#d32f2f;padding:8px;background:#d32f2f1a;border-radius:4px;margin-bottom:16px}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.modal-button{padding:12px 24px;border-radius:8px;cursor:pointer;transition:all .2s;font-size:16px}.modal-button:disabled{opacity:.6;cursor:not-allowed}.modal-button-primary{background:var(--highlight-primary);color:var(--text-color)}.modal-button-primary:hover:not(:disabled){background:var(--highlight-secondary)}.modal-button-secondary{background:transparent;color:var(--text-color);border:1px solid var(--highlight-secondary)}.modal-button-secondary:hover:not(:disabled){background:var(--highlight-primary)}.household-selector{margin-bottom:16px}.household-selector-loading{padding:12px;text-align:center;color:var(--text-color);opacity:.7}.household-selector-create{width:100%;padding:12px 24px;background:var(--highlight-primary);color:var(--text-color);border-radius:8px;transition:background .2s}.household-selector-create:hover{background:var(--highlight-secondary)}.household-selector-dropdown{position:relative}.household-selector-button{width:100%;padding:12px 16px;background:var(--highlight-primary);color:var(--text-color);border-radius:8px;display:flex;justify-content:space-between;align-items:center;transition:background .2s}.household-selector-button:hover{background:var(--highlight-secondary)}.household-selector-arrow{font-size:12px;opacity:.8}.household-selector-menu{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--bg-primary);border:1px solid var(--highlight-secondary);border-radius:8px;overflow:hidden;z-index:100;box-shadow:0 4px 12px #0003}.household-selector-item{width:100%;padding:12px 16px;text-align:left;background:transparent;color:var(--text-color);border:none;border-bottom:1px solid var(--highlight-secondary);transition:background .2s}.household-selector-item:last-child{border-bottom:none}.household-selector-item:hover{background:var(--highlight-primary)}.household-selector-item.active{background:var(--highlight-secondary);font-weight:600}.household-selector-item-create{color:var(--highlight-tertiary);font-weight:600}.household-selector-item-create:hover{background:var(--highlight-primary)}.migration-description{margin-bottom:24px;color:var(--text-color);line-height:1.5}.week-selector{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px}.week-number{min-width:60px;text-align:center}.week-nav-button{display:flex;align-items:center;justify-content:center;padding:8px;color:var(--text-color)}.week-nav-button:hover{opacity:.8}.category-icon{color:var(--text-color);flex-shrink:0}.category-icon.filled{fill:currentColor}.meal-card{background-color:var(--highlight-primary);padding:16px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-height:120px;position:relative;transition:opacity .2s}.meal-card:hover{opacity:.9}.meal-card-icon{margin-bottom:8px}.meal-card-name{text-align:center;flex:1;display:flex;align-items:center;margin:8px 0}.meal-card-day{position:absolute;bottom:8px;right:8px}.meal-list-item{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;transition:background-color .2s}.meal-list-item:hover{background-color:var(--highlight-primary)}.meal-list-item-name{flex:1}.meal-list-item-favorite{display:flex;align-items:center;justify-content:center;padding:4px;color:var(--text-color)}.meal-list-item-favorite:hover{opacity:.8}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-content{background-color:var(--bg-primary);width:100%;max-width:500px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--highlight-primary)}.modal-close{padding:4px;color:var(--text-color)}.modal-close:hover{opacity:.8}.modal-filters{display:flex;gap:12px;padding:16px;border-bottom:1px solid var(--highlight-primary)}.modal-filter-button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:8px;color:var(--text-color);background-color:transparent;border:1px solid var(--text-color);transition:all .2s;cursor:pointer}.modal-filter-button.active{background-color:var(--highlight-primary);border-color:var(--highlight-primary)}.modal-filter-button:hover{opacity:.8}.modal-search{padding:16px;border-bottom:1px solid var(--highlight-primary)}.modal-search-input{width:100%;padding:12px 16px;font-size:16px}.modal-body{overflow-y:auto;flex:1}.bottom-nav{display:flex;justify-content:space-around;align-items:center;padding:12px 0;background-color:var(--bg-primary);border-top:1px solid var(--highlight-primary);position:fixed;bottom:0;left:0;right:0;z-index:100}.nav-icon{display:flex;align-items:center;justify-content:center;padding:8px;color:var(--text-color);transition:background-color .2s}.nav-icon.active{background-color:var(--highlight-primary);border-radius:8px}.nav-icon:hover{opacity:.8}.week-planner{min-height:100vh;padding-bottom:80px;background-color:var(--bg-primary)}.week-planner-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:16px}.week-planner-actions{display:flex;flex-direction:column;gap:12px;padding:16px}.action-button{width:100%;padding:16px;color:var(--text-color);transition:opacity .2s}.action-button:hover{opacity:.9}.meal-list{min-height:100vh;padding-bottom:80px;background-color:var(--bg-primary)}.meal-list-filters{display:flex;gap:12px;padding:16px}.filter-button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:8px;color:var(--text-color);background-color:transparent;border:1px solid var(--text-color);transition:all .2s}.filter-button.active{background-color:var(--highlight-primary);border-color:var(--highlight-primary)}.filter-button:hover{opacity:.8}.meal-list-search{padding:0 16px 16px}.search-input{width:100%;padding:12px;border-radius:8px;border:1px solid var(--text-color)}.meal-list-content{padding:0 16px}.meal-list-empty{text-align:center;padding:32px;color:var(--highlight-secondary)}.meal-list-add-button{position:fixed;bottom:100px;right:16px;width:56px;height:56px;border-radius:50%;background-color:var(--highlight-tertiary);color:var(--text-color);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #0000004d;transition:all .2s;z-index:50}.meal-list-add-button:hover{opacity:.9;transform:scale(1.05)}.meal-list-add-button:active{transform:scale(.95)}.ingredient-input{display:flex;align-items:center;gap:12px;margin-bottom:12px}.ingredient-name{flex:1;padding:8px 12px;border-radius:4px}.ingredient-quantity{display:flex;align-items:center;gap:8px;color:var(--text-color)}.quantity-button{display:flex;align-items:center;justify-content:center;padding:4px;color:var(--text-color);background-color:var(--highlight-primary);border-radius:4px}.quantity-button:hover{opacity:.8}.quantity-value{min-width:30px;text-align:center}.ingredient-delete{padding:4px;color:var(--text-color)}.ingredient-delete:hover{opacity:.8}.add-meal{min-height:100vh;padding:24px 16px 100px;background-color:var(--bg-primary)}.add-meal-title,.add-meal-section{margin-bottom:24px}.category-button{display:flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:8px;border:1px solid var(--text-color);background-color:transparent;color:var(--text-color);transition:all .2s}.add-meal-input,.add-meal-textarea{width:100%;padding:12px;border-radius:8px}.save-button{width:100%;padding:16px;background-color:var(--highlight-tertiary);color:var(--text-color);border-radius:8px;transition:opacity .2s}.delete-button{width:100%;padding:16px;background-color:var(--highlight-secondary);color:var(--text-color);border-radius:8px;display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .2s}.add-meal-modal-content{background-color:var(--bg-primary);width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.add-meal-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--highlight-primary)}.add-meal-modal-body{overflow-y:auto;flex:1;padding:16px}.add-meal-section{margin-bottom:24px}.add-meal-label{display:block;margin-bottom:12px}.add-meal-checkbox-label{display:flex;align-items:center;gap:12px;cursor:pointer}.add-meal-checkbox{width:20px;height:20px;cursor:pointer;accent-color:var(--highlight-tertiary)}.category-buttons{display:flex;gap:12px}.category-button{display:flex;align-items:center;justify-content:center;width:64px;height:64px;border:1px solid var(--text-color);background-color:transparent;color:var(--text-color);transition:all .2s}.category-button.active{background-color:var(--highlight-tertiary);border-color:var(--highlight-tertiary)}.category-button:hover{opacity:.8}.add-meal-input,.add-meal-textarea{width:100%;padding:12px}.add-meal-textarea{resize:vertical;font-family:inherit}.add-ingredient-button{color:var(--text-color);padding:8px 0;text-align:left}.add-ingredient-button:hover{opacity:.8}.add-meal-actions{display:flex;flex-direction:column;gap:12px;margin-top:24px}.save-button{width:100%;padding:16px;background-color:var(--highlight-tertiary);color:var(--text-color);transition:opacity .2s}.save-button:hover{opacity:.9}.delete-button{width:100%;padding:16px;background-color:var(--highlight-secondary);color:var(--text-color);display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .2s}.delete-button:hover{opacity:.9}.sidebar-menu{display:flex;flex-direction:column;align-items:center;padding:16px 0;background-color:var(--bg-primary);border-left:1px solid var(--bg-white);width:80px;gap:8px}.sidebar-menu-item{display:flex;align-items:center;justify-content:center;width:48px;height:48px;padding:8px;color:var(--text-color);background-color:transparent;border:none;border-radius:8px;transition:background-color .2s;cursor:pointer}.sidebar-menu-item.active{background-color:var(--highlight-primary)}.sidebar-menu-item:hover{opacity:.8;background-color:var(--highlight-tertiary)}.shopping-list{min-height:100vh;padding-bottom:80px;background-color:var(--bg-primary)}.shopping-list-section{padding:16px}.shopping-list-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.shopping-list-section-title{margin:0}.shopping-list-remove-all{display:flex;align-items:center;gap:4px;padding:6px 12px;background-color:var(--highlight-secondary);border:none;opacity:.7;transition:opacity .2s;cursor:pointer}.shopping-list-remove-all:hover{opacity:1}.shopping-list-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-auto-rows:1fr;gap:12px}.shopping-list-item-wrapper{position:relative}.shopping-list-item{background-color:var(--highlight-primary);padding:16px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;min-height:80px;position:relative;transition:opacity .2s;text-align:left;width:100%;height:100%}.shopping-list-item:hover{opacity:.9}.shopping-list-item.checked{opacity:.6}.shopping-list-item-content{display:flex;flex-direction:column;gap:4px;width:100%;padding-right:32px}.shopping-list-item-name{word-break:break-word}.shopping-list-item-quantity{color:var(--highlight-secondary)}.shopping-list-item-check{position:absolute;top:16px;right:16px;color:var(--highlight-tertiary)}.shopping-list-item-remove{position:absolute;bottom:8px;right:8px;padding:4px;opacity:.7;transition:opacity .2s;background-color:transparent;border:none;cursor:pointer;z-index:1}.shopping-list-item-remove:hover{opacity:1}.shopping-list-add-section{padding:16px}.shopping-list-add-button{width:100%;padding:16px;background-color:var(--highlight-tertiary);display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .2s}.shopping-list-add-button:hover{opacity:.9}.shopping-list-add-input-container{display:flex;flex-direction:column;gap:8px}.shopping-list-add-input{width:100%;padding:12px 16px;font-size:16px}.shopping-list-add-actions{display:flex;gap:8px}.shopping-list-add-submit,.shopping-list-add-cancel{flex:1;padding:12px;background-color:var(--highlight-tertiary);display:flex;align-items:center;justify-content:center;transition:opacity .2s}.shopping-list-add-submit:hover,.shopping-list-add-cancel:hover{opacity:.9}.shopping-list-add-cancel{background-color:var(--highlight-secondary)}.shopping-list-quick-add{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.shopping-list-quick-add-item-wrapper{display:flex;align-items:center;gap:4px;background-color:var(--highlight-secondary);padding:8px 12px;border-radius:4px}.shopping-list-quick-add-item{padding:0;background-color:transparent;font-size:14px;transition:opacity .2s;border:none}.shopping-list-quick-add-item:hover{opacity:.9}.shopping-list-quick-add-remove{padding:2px;opacity:.7;transition:opacity .2s;display:flex;align-items:center;justify-content:center}.shopping-list-quick-add-remove:hover{opacity:1}.shopping-list-empty{padding:48px 16px;text-align:center;color:var(--highlight-secondary)}.modal-body{padding:24px}.share-section,.invitations-section,.household-members-section{margin-bottom:32px}.share-section h3,.invitations-section h3,.household-members-section h3{margin-bottom:16px;color:var(--text-color)}.share-form{margin-top:16px}.input-with-button{display:flex;gap:8px}.input-with-button .form-input{flex:1}.invite-button{padding:12px 20px;background:var(--highlight-primary);color:var(--text-color);border-radius:8px;display:flex;align-items:center;gap:8px;transition:background .2s;white-space:nowrap}.invite-button:hover:not(:disabled){background:var(--highlight-secondary)}.invite-button:disabled{opacity:.6;cursor:not-allowed}.invitation-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--highlight-primary);border-radius:8px}.invitation-email{color:var(--text-color)}.invitation-status{color:var(--text-color);opacity:.7;text-transform:capitalize}.members-list{display:flex;flex-direction:column;gap:8px}.member-item{padding:12px 16px;background:var(--highlight-primary);border-radius:8px}.member-id{color:var(--text-color)}.settings{padding:24px 24px 100px;min-height:100vh;background-color:var(--bg-primary)}.settings-section{margin-top:32px}.settings-description{margin-top:8px;margin-bottom:24px;color:var(--highlight-secondary);line-height:1.5}.weightings-container{display:flex;flex-direction:column;gap:20px;margin-bottom:24px}.weighting-item{display:flex;flex-direction:column;gap:12px;padding:16px;background-color:var(--highlight-primary);border-radius:8px}.weighting-header,.weighting-controls{display:flex;align-items:center;gap:12px}.weighting-input{width:100px;padding:8px 12px;border-radius:4px;text-align:center}.weighting-percentage{color:var(--highlight-secondary)}.reset-button{padding:12px 24px;background-color:var(--highlight-tertiary);border-radius:8px;color:var(--text-color);transition:background-color .2s}.reset-button:hover{background-color:var(--highlight-secondary)}.reset-button:active{opacity:.8}.household-settings{display:flex;flex-direction:column;gap:16px}.household-selector-wrapper{width:100%}.household-info{display:flex;flex-direction:column;gap:12px}.household-name-display{padding:12px 16px;background-color:var(--highlight-primary);border-radius:8px;color:var(--text-color)}.share-household-button{padding:12px 24px;background-color:var(--highlight-tertiary);border-radius:8px;color:var(--text-color);transition:background-color .2s;width:100%}.share-household-button:hover{background-color:var(--highlight-secondary)}.invitations-section{margin-top:16px}.invitations-section h3{margin-bottom:16px;color:var(--text-color)}.invitations-loading,.invitations-empty{padding:16px;text-align:center;color:var(--text-color);opacity:.7}.invitations-list{display:flex;flex-direction:column;gap:8px}.invitation-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:var(--highlight-primary);border-radius:8px;gap:12px}.invitation-info{flex:1}.invitation-household-name{color:var(--text-color)}.accept-invitation-button{padding:8px 16px;background-color:var(--highlight-tertiary);border-radius:8px;color:var(--text-color);transition:background-color .2s;white-space:nowrap}.accept-invitation-button:hover:not(:disabled){background-color:var(--highlight-secondary)}.accept-invitation-button:disabled{opacity:.6;cursor:not-allowed}.invitation-error{padding:12px 16px;background-color:var(--highlight-secondary);border-radius:8px;color:var(--text-color);margin-top:8px}.account-info{display:flex;flex-direction:column;gap:16px;padding:16px;background-color:var(--highlight-primary);border-radius:8px}.account-info p{color:var(--text-color)}.logout-button{padding:12px 24px;background-color:transparent;border:1px solid var(--highlight-secondary);border-radius:8px;color:var(--text-color);transition:background-color .2s}.logout-button:hover{background-color:var(--highlight-primary)}.migration-button{padding:12px 24px;background-color:var(--highlight-tertiary);border-radius:8px;color:var(--text-color);transition:background-color .2s;width:100%}.migration-button:hover{background-color:var(--highlight-secondary)}.migration-button:active{opacity:.8}.desktop-layout{display:flex;min-height:100vh;background-color:var(--bg-primary)}.desktop-left{width:33.333%;border-right:1px solid var(--bg-white);display:flex;flex-direction:column;padding:16px}.desktop-nav{display:flex;align-items:center;padding:16px;color:var(--text-color);background-color:var(--highlight-tertiary);margin-bottom:16px}.desktop-week-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;flex:1;margin-bottom:16px}.desktop-actions{display:flex;flex-direction:column;gap:12px}.desktop-action-button{width:100%;padding:16px;color:var(--text-color);transition:opacity .2s}.desktop-action-button:hover{opacity:.9}.generate-button{background-color:var(--highlight-tertiary)}.clear-button{background-color:var(--highlight-secondary)}.desktop-right{width:66.666%;max-width:600px;display:flex;flex-direction:row;position:relative;padding:0}.desktop-right-content{flex:1;display:flex;flex-direction:column;padding:16px;overflow:hidden}.desktop-meal-filters{display:flex;gap:12px;margin-bottom:16px}.desktop-filter-button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;color:var(--text-color);background-color:transparent;border:1px solid var(--text-color);transition:all .2s}.desktop-filter-button.active{background-color:var(--highlight-primary);border-color:var(--highlight-primary)}.desktop-filter-button:hover{opacity:.8}.desktop-search{margin-bottom:16px}.desktop-search-input{width:100%;padding:12px;border-radius:16px;border:1px solid var(--text-color)}.desktop-meal-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.desktop-meal-list-title{margin:0}.desktop-add-meal-button{display:flex;align-items:center;gap:8px;padding:12px 16px;background-color:var(--highlight-tertiary);color:var(--text-color);transition:opacity .2s}.desktop-add-meal-button:hover{opacity:.9}.desktop-meal-list{flex:1;overflow-y:auto}.desktop-overlay-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:1000;animation:fadeIn .2s ease-out}.desktop-overlay-content{position:fixed;top:0;right:0;bottom:0;width:50%;max-width:600px;background-color:var(--bg-primary);box-shadow:-2px 0 8px #0003;z-index:1001;display:flex;flex-direction:column;animation:slideInFromRight .3s ease-out;overflow:hidden}.desktop-overlay-close{position:absolute;top:16px;right:16px;z-index:1002;display:flex;align-items:center;justify-content:center;width:40px;height:40px;background-color:var(--bg-primary);border-radius:8px;color:var(--text-color);cursor:pointer;transition:opacity .2s}.desktop-overlay-close:hover{opacity:.8}.desktop-overlay-view{flex:1;overflow-y:auto;padding:64px 16px 16px}@keyframes slideInFromRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width: 1024px){.desktop-layout{flex-direction:column}.desktop-left,.desktop-right{width:100%}.desktop-overlay-content{width:100%;max-width:100%}}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px;background:var(--color-background)}.login-card{width:100%;max-width:400px;background:var(--color-surface);border-radius:16px;padding:32px;box-shadow:0 2px 8px #0000001a}.login-description{color:var(--color-text-secondary);margin-top:8px;margin-bottom:24px}.login-form{display:flex;flex-direction:column;gap:16px}.login-input{width:100%;padding:12px 16px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-background);color:var(--color-text);font-size:16px}.login-input:focus{outline:none;border-color:var(--color-primary)}.login-input:disabled{opacity:.6;cursor:not-allowed}.login-button{width:100%;padding:12px 24px;background:var(--color-primary);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:background .2s}.login-button:hover:not(:disabled){background:var(--color-primary-dark)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-button-dev{background:#ff9800}.login-button-dev:hover:not(:disabled){background:#f57c00}.login-error{color:var(--color-error, #d32f2f);padding:8px;background:#d32f2f1a;border-radius:4px}.login-message{color:var(--color-success, #2e7d32);padding:8px;background:#2e7d321a;border-radius:4px}:root{--text-color: #FAFAF9;--bg-white: #FAFAF9;--bg-primary: #305461;--highlight-primary: #3D6A7A;--highlight-secondary: #7AA1AF;--highlight-tertiary: #639DB2}*{margin:0;padding:0;box-sizing:border-box}body{font-family:"Noto Serif",serif;background-color:var(--bg-primary);color:var(--text-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}.font-display-bold-32{font-family:"Noto Serif Display",serif;font-weight:700;font-size:32px}.font-display-bold-24{font-family:"Noto Serif Display",serif;font-weight:700;font-size:24px}.font-display-bold-16{font-family:"Noto Serif Display",serif;font-weight:700;font-size:16px}.font-display-semibold-20{font-family:"Noto Serif Display",serif;font-weight:600;font-size:20px}.font-display-semibold-16{font-family:"Noto Serif Display",serif;font-weight:600;font-size:16px}.font-regular-16{font-family:"Noto Serif",serif;font-weight:400;font-size:16px}.font-light-16{font-family:"Noto Serif",serif;font-weight:300;font-size:16px}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea{font-family:inherit;color:var(--bg-primary);background-color:var(--bg-white);border:none;outline:none}input::placeholder,textarea::placeholder{color:#30546180}
