:root{--font-h1:2rem;--font-h2:1.5rem;--font-body:1rem;--font-small:.875rem;--font-caption:.75rem;--color-bg:#121212;--color-surface:#1e1e1e;--color-surface-elevated:#2a2a2a;--color-text:#e0e0e0;--color-text-secondary:#a0a0a0;--color-primary:#6ee7b7;--color-primary-hover:#34d399;--color-danger:#f87171;--color-border:#333}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;font-size:16px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:var(--font-body);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;overscroll-behavior:none;min-height:100%;line-height:1.5}#root{min-height:100dvh}a{color:var(--color-primary);text-decoration:none}button{cursor:pointer}@media (width<=768px){input,select,textarea{font-size:16px!important}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.input-group{flex-direction:column;gap:.375rem;display:flex}.input-group label{font-size:var(--font-small);color:var(--color-text-secondary);font-weight:500}.input-group input,.input-group textarea,.input-group select{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:var(--font-body);border-radius:8px;outline:none;padding:.75rem;font-family:inherit;transition:border-color .15s}.input-group input:focus,.input-group textarea:focus,.input-group select:focus{border-color:var(--color-primary)}.input-group input.input-error{border-color:var(--color-danger)}.input-error-text{font-size:var(--font-caption);color:var(--color-danger)}.btn{font-size:var(--font-body);border:none;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:600;transition:background .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#121212}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface-elevated);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-border)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){opacity:.85}.auth-page{justify-content:center;align-items:center;min-height:100dvh;padding:1rem;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;width:100%;max-width:400px;padding:2rem}.auth-card h1{font-size:var(--font-h1);color:var(--color-primary);margin-bottom:.25rem}.auth-subtitle{color:var(--color-text-secondary);margin-bottom:1.5rem}.auth-card form{flex-direction:column;gap:1rem;display:flex}.auth-card .btn{width:100%;margin-top:.5rem}.auth-error{color:var(--color-danger);font-size:var(--font-small)}.auth-link{text-align:center;font-size:var(--font-small);color:var(--color-text-secondary);margin-top:1.5rem}.household-page{justify-content:center;align-items:center;min-height:100dvh;padding:1rem;display:flex}.household-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;width:100%;max-width:400px;padding:2rem}.household-card h1{font-size:var(--font-h2);margin-bottom:.25rem}.household-subtitle{color:var(--color-text-secondary);margin-bottom:1.5rem}.household-card form{flex-direction:column;gap:1rem;display:flex}.household-actions{flex-direction:column;gap:.75rem;display:flex}.household-actions .btn{width:100%}.household-error{color:var(--color-danger);font-size:var(--font-small)}.household-logout{color:var(--color-text-secondary);font-size:var(--font-small);background:0 0;border:none;margin:1.5rem auto 0;text-decoration:underline;display:block}.app-layout{flex-direction:column;min-height:100dvh;display:flex}.app-main{flex:1;padding-bottom:3.5rem}.bottom-nav{background:var(--color-surface);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom,0px);z-index:100;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item{color:var(--color-text-secondary);font-size:var(--font-caption);flex-direction:column;flex:1;align-items:center;gap:.25rem;padding:.625rem 0;text-decoration:none;transition:color .15s;display:flex}.nav-item.active{color:var(--color-primary)}.nav-item:hover{color:var(--color-text)}.spinner-container{color:var(--color-text-secondary);font-size:var(--font-small);justify-content:center;align-items:center;gap:.5rem;padding:3rem;display:flex}.spinner-icon{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.recipe-list-page{max-width:600px;margin:0 auto;padding:1rem 1rem 5rem}.recipe-list-header h1{font-size:var(--font-h1);margin-bottom:1rem}.recipe-search{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.75rem;display:flex}.recipe-search input{color:var(--color-text);font-size:var(--font-body);background:0 0;border:none;outline:none;flex:1}.recipe-search svg{color:var(--color-text-secondary);flex-shrink:0}.recipe-list{flex-direction:column;gap:.5rem;list-style:none;display:flex}.recipe-card{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:8px;justify-content:space-between;align-items:center;padding:1rem;transition:border-color .15s;display:flex}.recipe-card:hover{border-color:var(--color-primary)}.recipe-card-title{font-weight:600}.recipe-card-meta{font-size:var(--font-small);color:var(--color-text-secondary)}.recipe-list-empty{text-align:center;color:var(--color-text-secondary);flex-direction:column;align-items:center;gap:.5rem;padding:3rem 1rem;display:flex}.recipe-list-hint{font-size:var(--font-small)}.fab{bottom:calc(5rem + env(safe-area-inset-bottom,0px));background:var(--color-primary);color:#121212;border:none;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;display:flex;position:fixed;right:1.25rem;box-shadow:0 4px 12px #0000004d}.fab:active{transform:scale(.95)}.recipe-form-page{max-width:600px;margin:0 auto;padding:1rem}.recipe-form-page h1{font-size:var(--font-h2);margin-bottom:1.5rem}.recipe-form-page form{flex-direction:column;gap:1.25rem;display:flex}.title-servings-row{gap:.75rem;display:flex}.title-field{flex:1}.servings-field{flex-shrink:0;width:80px}.recipe-form-loading{text-align:center;color:var(--color-text-secondary);padding:3rem}.back-btn{color:var(--color-text-secondary);font-size:var(--font-small);background:0 0;border:none;align-items:center;gap:.375rem;margin-bottom:.5rem;padding:.5rem 0;display:inline-flex}.ingredients-section h2{font-size:var(--font-body);margin-bottom:.75rem;font-weight:600}.ingredient-row{grid-template-columns:60px 60px 1fr auto auto;align-items:center;gap:.5rem;margin-bottom:.5rem;display:grid}.ingredient-row input,.ingredient-row select{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:var(--font-small);border-radius:6px;outline:none;padding:.625rem;font-family:inherit}.ingredient-row input:focus,.ingredient-row select:focus{border-color:var(--color-primary)}.ing-cat{width:90px}.ing-remove{color:var(--color-text-secondary);background:0 0;border:none;padding:.375rem;display:flex}.ing-remove:hover{color:var(--color-danger)}.add-ingredient-btn{border:1px dashed var(--color-border);color:var(--color-text-secondary);font-size:var(--font-small);background:0 0;border-radius:6px;justify-content:center;align-items:center;gap:.375rem;width:100%;padding:.625rem 1rem;display:inline-flex}.add-ingredient-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.recipe-form-error{color:var(--color-danger);font-size:var(--font-small)}.recipe-form-actions{gap:.75rem;display:flex}.recipe-form-actions .btn{flex:1}.import-prompt{margin-bottom:1rem}.import-prompt .btn{width:100%}.import-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;flex-direction:column;gap:1rem;margin-bottom:1.5rem;padding:1.25rem;display:flex}.import-actions{gap:.75rem;display:flex}.import-actions .btn{flex:1}.spinner{animation:1s linear infinite spin}@media (width<=480px){.ingredient-row{grid-template-columns:50px 50px 1fr auto}.ing-cat{grid-column:1/-2;width:100%}.ing-remove{grid-area:1/-1}}.recipe-detail-page{max-width:600px;margin:0 auto;padding:1rem}.recipe-detail-loading{text-align:center;color:var(--color-text-secondary);padding:3rem}.recipe-detail-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.recipe-detail-header h1{font-size:var(--font-h1);line-height:1.2}.recipe-detail-actions{flex-shrink:0;gap:.5rem;display:flex}.btn-sm{font-size:var(--font-small);gap:.375rem;padding:.5rem .75rem}.recipe-servings{font-size:var(--font-small);color:var(--color-text-secondary);margin-bottom:1rem}.recipe-source-link{font-size:var(--font-small);color:var(--color-primary);align-items:center;gap:.375rem;margin-bottom:1.5rem;display:inline-flex}.recipe-section{margin-bottom:1.5rem}.recipe-section h2{font-size:var(--font-body);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;font-weight:600;font-size:var(--font-small);margin-bottom:.75rem}.ingredient-list{flex-direction:column;gap:.375rem;list-style:none;display:flex}.ingredient-list li{background:var(--color-surface);border-radius:6px;align-items:center;gap:.5rem;padding:.625rem .75rem;display:flex}.ing-amount{min-width:60px;color:var(--color-primary);font-weight:600}.ing-category-badge{font-size:var(--font-caption);color:var(--color-text-secondary);background:var(--color-surface-elevated);border-radius:4px;margin-left:auto;padding:.125rem .5rem}.recipe-method{background:var(--color-surface);border-radius:8px;padding:1rem;line-height:1.7}.recipe-method p{margin-bottom:.5rem}.recipe-method p:last-child{margin-bottom:0}.recipe-detail-meta{font-size:var(--font-caption);color:var(--color-text-secondary);margin-top:2rem}.picker-overlay{z-index:200;background:#0009;justify-content:center;align-items:flex-end;padding:1rem;display:flex;position:fixed;inset:0}.picker-modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px 12px 0 0;flex-direction:column;width:100%;max-width:500px;max-height:70dvh;display:flex}.picker-header{justify-content:space-between;align-items:center;padding:1rem 1rem .5rem;display:flex}.picker-header h2{font-size:var(--font-body);font-weight:600}.picker-close{color:var(--color-text-secondary);background:0 0;border:none;padding:.25rem}.picker-search{background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;align-items:center;gap:.5rem;margin:0 1rem .75rem;padding:.625rem;display:flex}.picker-search input{color:var(--color-text);font-size:var(--font-small);background:0 0;border:none;outline:none;flex:1}.picker-search svg{color:var(--color-text-secondary);flex-shrink:0}.picker-list{padding:0 .5rem .5rem;list-style:none;overflow-y:auto}.picker-item{text-align:left;width:100%;color:var(--color-text);font-size:var(--font-body);background:0 0;border:none;border-radius:6px;padding:.75rem;transition:background .1s;display:block}.picker-item:hover{background:var(--color-surface-elevated)}.picker-empty{text-align:center;color:var(--color-text-secondary);font-size:var(--font-small);padding:2rem}.planner-page{max-width:600px;margin:0 auto;padding:1rem 1rem 5rem}.planner-header h1{font-size:var(--font-h1);margin-bottom:.75rem}.week-nav{align-items:center;gap:.5rem;margin-bottom:1.25rem;display:flex}.week-nav button{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:6px;align-items:center;padding:.375rem;display:flex}.week-nav button:hover{border-color:var(--color-primary)}.week-label{font-weight:600;font-size:var(--font-body)}.today-btn{font-size:var(--font-small)!important;color:var(--color-primary)!important;padding:.25rem .75rem!important}.planner-loading{text-align:center;color:var(--color-text-secondary);padding:3rem}.day-cards{flex-direction:column;gap:.5rem;display:flex}.day-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:.75rem 1rem}.day-card-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.day-card-header h2{font-size:var(--font-body);font-weight:600}.day-entries{flex-direction:column;gap:.375rem;margin-bottom:.5rem;list-style:none;display:flex}.day-entry{background:var(--color-surface-elevated);border-radius:6px;justify-content:space-between;align-items:center;padding:.5rem .625rem;display:flex}.entry-title{font-size:var(--font-small);align-items:center;gap:.5rem;display:flex}.entry-label{font-size:var(--font-caption);color:var(--color-primary);background:#6ee7b71a;border-radius:4px;padding:.125rem .5rem;font-weight:600}.entry-controls{flex-shrink:0;align-items:center;gap:.375rem;display:flex}.servings-stepper{background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;align-items:center;gap:0;display:flex;overflow:hidden}.servings-stepper button{color:var(--color-text);font-size:var(--font-small);background:0 0;border:none;padding:.125rem .5rem;line-height:1}.servings-stepper button:hover:not(:disabled){background:var(--color-surface-elevated);color:var(--color-primary)}.servings-stepper button:disabled{opacity:.3;cursor:not-allowed}.servings-stepper span{font-size:var(--font-caption);text-align:center;min-width:1.25rem;color:var(--color-primary);font-weight:600}.entry-remove{color:var(--color-text-secondary);background:0 0;border:none;padding:.25rem;display:flex}.entry-remove:hover{color:var(--color-danger)}.add-meal-btn{color:var(--color-text-secondary);font-size:var(--font-small);background:0 0;border:none;align-items:center;gap:.25rem;padding:.25rem 0;display:inline-flex}.add-meal-btn:hover{color:var(--color-primary)}.shopping-page{max-width:600px;margin:0 auto;padding:1rem 1rem 5rem}.shopping-header h1{font-size:var(--font-h1);margin-bottom:.75rem}.shopping-empty{text-align:center;color:var(--color-text-secondary);padding:3rem}.shopping-empty-state{text-align:center;color:var(--color-text-secondary);flex-direction:column;align-items:center;gap:1rem;padding:3rem 1rem;display:flex}.shopping-empty-state svg{opacity:.3}.shopping-hint{font-size:var(--font-small);color:var(--color-text-secondary)}.shopping-actions{gap:.5rem;margin-bottom:1rem;display:flex}.shopping-actions .btn{font-size:var(--font-small);flex:1;padding:.5rem .75rem}.add-item-form{grid-template-columns:1fr 60px 60px auto auto;align-items:center;gap:.5rem;margin-bottom:1rem;display:grid}.add-item-form input,.add-item-form select{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:var(--font-small);border-radius:6px;outline:none;padding:.625rem;font-family:inherit}.add-item-form input:focus,.add-item-form select:focus{border-color:var(--color-primary)}.add-item-form .btn{font-size:var(--font-small);padding:.625rem 1rem}@media (width<=480px){.add-item-form{grid-template-columns:1fr 50px 50px}.add-item-form select,.add-item-form .btn{grid-column:span 1}.add-item-form select{grid-column:1/3}.add-item-form .btn{grid-column:3}}.pantry-check-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;margin-bottom:1.25rem;padding:1rem}.pantry-check-section h2{font-size:var(--font-body);margin-bottom:.25rem;font-weight:600}.pantry-check-hint{font-size:var(--font-caption);color:var(--color-text-secondary);margin-bottom:.75rem}.pantry-check-section ul{flex-direction:column;gap:.25rem;list-style:none;display:flex}.pantry-check-item{background:var(--color-surface-elevated);border-radius:6px;align-items:center;padding:.5rem .625rem;display:flex}.shopping-groups{flex-direction:column;gap:1rem;display:flex}.shopping-group h2{font-size:var(--font-small);color:var(--color-primary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem;font-weight:600}.shopping-group ul,.checked-section ul{flex-direction:column;gap:.25rem;list-style:none;display:flex}.shopping-item{background:var(--color-surface);border-radius:6px;justify-content:space-between;align-items:center;padding:.625rem .75rem;display:flex}.shopping-item.checked{opacity:.5}.shopping-item.checked .item-details{text-decoration:line-through}.item-check{cursor:pointer;flex:1;align-items:center;gap:.75rem;display:flex}.item-check input[type=checkbox]{width:20px;height:20px;accent-color:var(--color-primary);cursor:pointer;flex-shrink:0}.item-details{font-size:var(--font-body);gap:.375rem;display:flex}.item-amount{color:var(--color-primary);min-width:50px;font-weight:600}.item-delete{color:var(--color-text-secondary);opacity:0;background:0 0;border:none;padding:.25rem;transition:opacity .15s;display:flex}.shopping-item:hover .item-delete{opacity:1}.item-delete:hover{color:var(--color-danger)}.checked-section{border-top:1px solid var(--color-border);margin-top:1.5rem;padding-top:1rem}.checked-section h2{font-size:var(--font-small);color:var(--color-text-secondary);margin-bottom:.5rem;font-weight:600}.shopping-page .week-nav{align-items:center;gap:.5rem;margin-bottom:1.25rem;display:flex}.shopping-page .week-nav button{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:6px;align-items:center;padding:.375rem;display:flex}.shopping-page .week-nav button:hover{border-color:var(--color-primary)}.shopping-page .week-label{font-weight:600;font-size:var(--font-body)}.shopping-page .today-btn{font-size:var(--font-small)!important;color:var(--color-primary)!important;padding:.25rem .75rem!important}.feedback-form{flex-direction:column;gap:1rem;display:flex}.feedback-success{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.settings-page{max-width:600px;margin:0 auto;padding:1rem 1rem 5rem}.settings-page h1{font-size:var(--font-h1);margin-bottom:1.5rem}.settings-section{margin-bottom:2rem}.settings-section h2{font-size:var(--font-body);align-items:center;gap:.5rem;margin-bottom:.75rem;font-weight:600;display:flex}.settings-hint{font-size:var(--font-small);color:var(--color-text-secondary);margin-bottom:.75rem}.settings-error{color:var(--color-danger);font-size:var(--font-small);margin-top:.5rem}.member-list{flex-direction:column;gap:.375rem;list-style:none;display:flex}.member-item{background:var(--color-surface);border-radius:6px;justify-content:space-between;align-items:center;padding:.75rem;display:flex}.member-name{font-weight:600;display:block}.member-email{font-size:var(--font-small);color:var(--color-text-secondary)}.member-badge{font-size:var(--font-caption);color:var(--color-primary);background:#6ee7b71a;border-radius:4px;padding:.125rem .5rem;font-weight:600}.invite-form{align-items:flex-end;gap:.75rem;display:flex}.invite-form .input-group{flex:1}.invite-form .btn{white-space:nowrap}.invite-result{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;margin-top:1rem;padding:1rem}.invite-result p{margin-bottom:.5rem}.invite-token{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.invite-token code{background:var(--color-bg);border:1px solid var(--color-border);font-size:var(--font-small);word-break:break-all;color:var(--color-primary);border-radius:6px;flex:1;padding:.5rem .75rem}.copy-btn{background:var(--color-surface-elevated);border:1px solid var(--color-border);color:var(--color-text);border-radius:6px;flex-shrink:0;padding:.5rem;display:flex}.copy-btn:hover{border-color:var(--color-primary)}.pantry-form{align-items:flex-end;gap:.75rem;display:flex}.pantry-form .input-group{flex:1}.pantry-form .btn{white-space:nowrap}.pantry-list{flex-wrap:wrap;gap:.375rem;margin-top:.75rem;list-style:none;display:flex}.pantry-item{background:var(--color-surface);font-size:var(--font-small);border-radius:6px;align-items:center;gap:.375rem;padding:.25rem .5rem;display:flex}.pantry-remove-btn{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.125rem;display:flex}.pantry-remove-btn:hover{color:var(--color-danger)}
