:root{--color-primary: #1A535C;--color-primary-dark: #133f46;--color-secondary: #4ECDC4;--color-secondary-light: #7DDDD8;--color-bg: #F7FFF7;--color-surface: #F8FAEC;--color-surface-alt: #f0f8f0;--color-border: #d4e8d4;--color-danger: #FF6B6B;--color-danger-dark: #e05555;--color-highlight: #FFE66D;--color-amber: #FF9F43;--color-muted: #8D99AE;--color-muted-light: #b8c2cc;--color-secondary-bg: #e6f9f8;--color-highlight-bg: #fffce6;--color-danger-bg: #ffeaea;--color-amber-bg: #fff3e6;--color-primary-bg: #e8f2f3;--color-text: #1a3a3e;--color-text-light: #8D99AE;--color-text-on-primary: #F8FAEC;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 16px;--radius-pill: 999px;--shadow-sm: 0 1px 3px rgba(26, 83, 92, .08);--shadow-md: 0 4px 12px rgba(26, 83, 92, .12);--shadow-lg: 0 8px 24px rgba(26, 83, 92, .16);--font-family: system-ui, -apple-system, "Segoe UI", sans-serif;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-secondary-bg);line-height:1.6}.app-header{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-xl);background:var(--color-primary);color:var(--color-text-on-primary);box-shadow:var(--shadow-sm)}.header-logo img{display:block}.header-user{margin-left:auto;font-size:var(--font-size-sm);opacity:.85}.main-nav{display:flex;gap:0;padding:0 var(--space-xl);background:var(--color-surface);border-bottom:2px solid var(--color-border);box-shadow:0 2px 6px #1a535c12}.nav-icon{display:none}.main-nav r-link,.main-nav a{padding:var(--space-sm) var(--space-md);color:var(--color-muted);text-decoration:none;border-radius:0;font-size:var(--font-size-sm);font-weight:500;opacity:1;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s,background .15s}.main-nav r-link:hover,.main-nav a:hover{color:var(--color-primary);background:var(--color-secondary-bg)}.main-nav r-link[aria-current],.main-nav a.active{color:var(--color-primary);font-weight:600;border-bottom-color:var(--color-secondary);background:transparent}.main-content{padding:var(--space-xl);max-width:1200px;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg)}.page-header h1{font-size:var(--font-size-2xl);color:var(--color-primary);padding-bottom:var(--space-xs);border-bottom:3px solid var(--color-secondary)}.btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:inherit;cursor:pointer;text-decoration:none;transition:filter .15s,transform .1s;white-space:nowrap}.btn:hover{filter:brightness(.92)}.btn:active{transform:scale(.97)}.btn-primary{background:var(--color-primary);color:var(--color-text-on-primary)}.btn-secondary{background:var(--color-surface);color:var(--color-primary);border:1.5px solid var(--color-border)}.btn-ghost{background:transparent;color:var(--color-text)}.btn-sm{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-sm)}.btn-icon{background:none;border:none;cursor:pointer;font-size:1rem;padding:2px 4px;border-radius:var(--radius-sm)}.btn-icon:hover{background:var(--color-surface-alt)}.btn-danger{color:var(--color-danger)}input,select,textarea{width:100%;padding:var(--space-sm) var(--space-md);border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-base);background:var(--color-surface);color:var(--color-text);transition:border-color .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-secondary)}label{display:block;margin-bottom:var(--space-xs);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text)}.form-row{margin-bottom:var(--space-md)}.form-two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg);margin-bottom:var(--space-lg)}.form-actions{display:flex;gap:var(--space-sm);justify-content:flex-end}.form-error{color:var(--color-danger);font-size:var(--font-size-sm);margin-top:var(--space-sm)}.search-input{margin-bottom:var(--space-lg)}.badge{display:inline-block;padding:2px var(--space-sm);border-radius:var(--radius-pill);font-size:var(--font-size-sm);background:var(--color-surface-alt);color:var(--color-muted)}.badge-highlight{background:var(--color-highlight);color:var(--color-text)}.recipe-card{background:var(--color-secondary-bg);border:1.5px solid var(--color-border);border-left:4px solid var(--color-secondary);border-radius:var(--radius-md);padding:var(--space-md);cursor:pointer;transition:box-shadow .15s,border-color .15s}.recipe-card:hover{box-shadow:var(--shadow-md);border-left-color:var(--color-primary)}.recipe-card-name{font-size:var(--font-size-lg);color:var(--color-primary);margin-bottom:var(--space-xs)}.recipe-card-meta{display:flex;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-muted)}.recipes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-md)}.recipe-detail-header{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg)}.recipe-detail-header h1{font-size:var(--font-size-3xl);color:var(--color-primary)}.recipe-section{margin-bottom:var(--space-xl)}.recipe-section h2{font-size:var(--font-size-xl);margin-bottom:var(--space-md);color:var(--color-primary)}.ingredients-list{list-style:none}.ingredients-list li{padding:var(--space-xs) 0;border-bottom:1px solid var(--color-border);display:flex;gap:var(--space-sm)}.ing-amount{font-weight:700}.ing-unit{color:var(--color-muted)}.instructions-list{padding-left:var(--space-xl)}.instructions-list li{padding:var(--space-sm) 0}.form-section{margin-bottom:var(--space-lg)}.form-section>label{display:block;margin-bottom:var(--space-sm);font-weight:700}.edit-ingredient-row,.edit-instruction-row{display:flex;gap:var(--space-xs);align-items:center;margin-bottom:var(--space-xs)}.edit-ing-amount{width:80px}.edit-ing-unit{width:75px}.edit-ing-name{flex:1}.edit-ins-number{width:28px;font-weight:700;color:var(--color-muted);text-align:right;flex-shrink:0}.edit-ins-text{flex:1}.btn-icon{background:none;border:none;cursor:pointer;color:var(--color-muted);font-size:1rem;padding:4px;line-height:1}.btn-icon:hover{color:var(--color-danger, #c00)}.btn-remove-row{flex-shrink:0}.btn-sm{font-size:var(--font-size-sm);padding:var(--space-xs) var(--space-sm)}.week-plan-layout{display:grid;grid-template-columns:1fr 240px;gap:var(--space-lg);align-items:start}.week-nav{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg)}.week-label{font-size:var(--font-size-base);font-weight:700;background:var(--color-primary);color:#f8faec;padding:var(--space-xs) var(--space-lg);border-radius:var(--radius-pill)}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-sm)}.day-column{background:var(--color-secondary-bg);border-radius:var(--radius-md);border:1.5px solid var(--color-border);border-top:3px solid var(--color-secondary);padding:var(--space-sm);min-height:120px}.day-column:nth-child(2){background:var(--color-highlight-bg);border-top-color:var(--color-highlight)}.day-column:nth-child(3){background:var(--color-danger-bg);border-top-color:var(--color-danger)}.day-column:nth-child(4){background:var(--color-secondary-bg);border-top-color:var(--color-secondary)}.day-column:nth-child(5){background:var(--color-highlight-bg);border-top-color:var(--color-highlight)}.day-column:nth-child(6){background:var(--color-amber-bg);border-top-color:var(--color-amber)}.day-column:nth-child(7){background:var(--color-surface-alt);border-top-color:var(--color-muted-light)}.day-name{font-size:.7rem;font-weight:700;color:var(--color-primary);margin-bottom:var(--space-sm);text-align:center;text-transform:uppercase;letter-spacing:.06em}.day-column.drag-over{outline:2px solid var(--color-primary);outline-offset:-2px;background:color-mix(in srgb,var(--color-primary) 8%,transparent)}.suggestion-item.dragging{opacity:.5}.suggestion-item[draggable=true]{cursor:grab}.suggestion-item[draggable=true]:active{cursor:grabbing}.meal-item{padding:var(--space-xs) var(--space-sm);margin-bottom:var(--space-xs);background:var(--color-surface);border-left:3px solid var(--color-secondary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;box-shadow:var(--shadow-sm)}.meal-name{font-size:var(--font-size-sm);display:block;margin-bottom:2px}.meal-controls{display:flex;align-items:center;gap:2px}.servings{font-size:.75rem;color:var(--color-muted)}.suggestions-panel{background:var(--color-secondary-bg);border-radius:var(--radius-md);border:1.5px solid var(--color-border);border-top:3px solid var(--color-secondary);padding:var(--space-md)}.suggestions-panel h3{font-size:var(--font-size-lg);color:var(--color-primary);margin-bottom:var(--space-md);padding-bottom:var(--space-xs);border-bottom:2px solid var(--color-secondary)}.sug-search{width:100%;padding:var(--space-xs) var(--space-sm);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);margin-bottom:var(--space-sm);background:var(--color-surface)}.sug-search:focus{border-color:var(--color-primary);outline:none}.suggestion-list{list-style:none}.suggestion-item{padding:var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s}.suggestion-item:hover{background:var(--color-surface-alt)}.sug-name{font-size:var(--font-size-sm);display:block}.sug-meta{display:flex;gap:var(--space-sm);font-size:.75rem;color:var(--color-muted);margin-top:2px}.shopping-items{list-style:none}.shopping-item{padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:var(--space-sm)}.shopping-item-label{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;flex:1}.shopping-item-label input{width:auto}.shopping-amount{font-weight:700;min-width:60px;color:var(--color-primary)}.shopping-item.checked .shopping-name{text-decoration:line-through;color:var(--color-muted)}.shopping-added-by{font-size:var(--font-size-sm);color:var(--color-muted);margin-left:auto;white-space:nowrap}.shopping-section-title{font-size:var(--font-size-base);color:var(--color-muted);margin:var(--space-md) 0 var(--space-xs)}.shopping-add-form{margin-bottom:var(--space-md)}.shopping-add-row{display:flex;gap:var(--space-xs);align-items:center}.shopping-add-name{flex:1}.shopping-add-amount{width:80px}.shopping-add-unit{width:70px}.btn-delete-item{background:none;border:none;color:var(--color-muted);cursor:pointer;font-size:1rem;padding:4px;line-height:1}.btn-delete-item:hover{color:var(--color-danger, #c00)}.wish-form-wrap{margin-bottom:var(--space-lg)}.wish-input-row{display:flex;gap:var(--space-sm);margin-top:var(--space-sm)}.wish-select{flex:1}.wish-items{list-style:none}.wish-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-sm);border-bottom:1px solid var(--color-border);border-left:3px solid var(--color-highlight);background:var(--color-highlight-bg);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-bottom:var(--space-xs)}.wish-recipe{font-weight:600;flex:1}.wish-user{font-size:var(--font-size-sm);color:var(--color-muted)}.star-rating{display:flex;align-items:center;gap:var(--space-xs)}.star{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-muted-light);transition:color .15s;padding:0}.star.filled,.star:hover{color:var(--color-highlight)}.star-label{font-size:var(--font-size-sm);color:var(--color-muted);margin-left:var(--space-sm)}.paste-section{max-width:640px}.paste-section textarea{min-height:300px;margin-bottom:var(--space-md)}.add-recipe-choices{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg);max-width:640px}.choice-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-xl) var(--space-lg);background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:border-color .15s,box-shadow .15s;text-align:center;font-family:inherit}.choice-card:hover{border-color:var(--color-secondary);box-shadow:var(--shadow-md)}.choice-icon{font-size:2.5rem}.choice-title{font-size:var(--font-size-lg);font-weight:700;color:var(--color-primary)}.choice-desc{font-size:var(--font-size-sm);color:var(--color-muted)}.camera-section{max-width:640px}.camera-hint{color:var(--color-muted);margin-bottom:var(--space-md)}.camera-images{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-md)}.camera-capture-area{display:flex;align-items:center;justify-content:center;border:2px dashed var(--color-secondary);border-radius:var(--radius-md);cursor:pointer;overflow:hidden;transition:border-color .15s,background .15s}.camera-add-btn{width:160px;height:160px}.camera-capture-area:hover{border-color:var(--color-primary);background:var(--color-surface-alt)}.camera-placeholder{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);color:var(--color-secondary);font-size:var(--font-size-base);text-align:center;padding:var(--space-sm)}.camera-icon{font-size:2rem}.camera-thumb{position:relative;width:160px;height:160px;border-radius:var(--radius-md);overflow:hidden}.camera-thumb .camera-preview{width:100%;height:100%;object-fit:cover}.camera-thumb-remove{position:absolute;top:4px;right:4px;width:28px;height:28px;border-radius:50%;border:none;background:#0009;color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.camera-thumb-remove:hover{background:#000000d9}.camera-preview{max-width:100%;max-height:400px;object-fit:contain;border-radius:var(--radius-sm)}.ingredient-preview,.instruction-preview{margin-top:var(--space-sm);background:var(--color-surface-alt);border-radius:var(--radius-sm);padding:var(--space-sm);font-size:var(--font-size-sm)}.preview-label{font-weight:700;margin-bottom:var(--space-xs);color:var(--color-muted)}.preview-list{list-style:none}.preview-list li{padding:2px 0}.preview-warning{color:var(--color-danger)}body.public-layout{display:flex;min-height:100vh;align-items:center;justify-content:center;gap:var(--space-xl);background:var(--color-primary)}.auth-container{width:100%;max-width:400px;padding:var(--space-xl);display:flex;flex-direction:column;align-items:center;gap:var(--space-lg)}.auth-logo{width:380px}.login-card{width:100%;background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-xl);box-shadow:var(--shadow-lg)}.login-card h1{font-size:var(--font-size-2xl);color:var(--color-primary);margin-bottom:var(--space-sm)}.login-subtitle{color:var(--color-muted);margin-bottom:var(--space-lg);font-size:var(--font-size-sm)}.login-form{display:flex;flex-direction:column;gap:var(--space-md)}.remember-me-label{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);cursor:pointer}.remember-me-label input{width:auto}.login-message{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.login-message.success{background:#e8f7e8;color:#2d7a2d}.login-message.error{background:#fde8e8;color:var(--color-danger)}.auth-loading,.auth-error{color:var(--color-text-on-primary);text-align:center}.family-section{margin-bottom:var(--space-xl)}.family-section h2{font-size:var(--font-size-xl);color:var(--color-primary);margin-bottom:var(--space-md)}.family-members,.pending-invites{list-style:none}.family-member,.pending-invite{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border)}.member-name{font-weight:600}.member-email,.invite-meta{font-size:var(--font-size-sm);color:var(--color-muted)}.invite-row{display:flex;gap:var(--space-sm)}.invite-row input{flex:1}.invite-message{margin-top:var(--space-sm);font-size:var(--font-size-sm)}.invite-message.success{color:#2d7a2d}.invite-message.error{color:var(--color-danger)}.empty-state{color:var(--color-muted);padding:var(--space-xl) 0;text-align:center}.loading{color:var(--color-muted)}.error{color:var(--color-danger)}@media (max-width: 900px){.week-plan-layout{grid-template-columns:1fr}.week-grid{grid-template-columns:repeat(4,1fr)}.form-two-col{grid-template-columns:1fr}}@media (max-width: 600px){input,select,textarea{font-size:1rem}.main-content{padding:var(--space-md);padding-bottom:calc(var(--space-md) + 68px)}.week-grid,.add-recipe-choices{grid-template-columns:1fr}body.public-layout{flex-direction:column;padding:var(--space-lg) var(--space-md);gap:var(--space-lg)}.auth-logo{width:min(200px,60vw)}.auth-container{padding:0 var(--space-sm)}.app-header{padding:var(--space-sm) var(--space-md)}.main-nav{position:fixed;bottom:0;left:0;right:0;z-index:100;padding:0;justify-content:space-around;border-bottom:none;border-top:1px solid var(--color-border);box-shadow:0 -2px 8px #00000014;background:var(--color-surface)}.nav-icon{display:block;font-size:1.25rem}.main-nav r-link,.main-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-xs) var(--space-xs);font-size:.65rem;border-bottom:none;margin-bottom:0;flex:1;text-align:center}.main-nav r-link[aria-current],.main-nav a.active{border-bottom:none;color:var(--color-primary)}.page-header{flex-wrap:wrap;gap:var(--space-sm)}.page-header h1{font-size:var(--font-size-xl)}.week-plan-layout{gap:var(--space-md)}.suggestions-panel{order:-1}.week-nav{gap:var(--space-sm)}.week-label{font-size:var(--font-size-sm);padding:var(--space-xs) var(--space-md)}.recipe-detail-header{flex-direction:column;align-items:flex-start}.recipe-detail-header h1{font-size:var(--font-size-xl)}.shopping-amount{min-width:50px}.wish-input-row,.invite-row,.form-actions{flex-direction:column}.form-actions .btn{width:100%;justify-content:center}}.suggestion-item.tap-selected{background:var(--color-secondary-bg);outline:2px solid var(--color-secondary);outline-offset:-2px}.day-column.tap-target{outline:2px dashed var(--color-secondary);outline-offset:-2px;cursor:pointer}.touch-clone{position:fixed;transform:translate(-50%,-110%);pointer-events:none;z-index:1000;background:var(--color-surface);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);border-left:3px solid var(--color-secondary);opacity:.92;max-width:200px;font-size:var(--font-size-sm)}
