:root{--bg: #f6f8f4;--surface: #ffffff;--border: #d8e0d4;--text: #1a2e1a;--muted: #5a6b5a;--accent: #2d6a4f;--accent-soft: #d8f3dc;--today: #fff8e6;--done: #fecaca;--radius: 8px;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.45}#root{max-width:1400px;margin:0 auto;padding:1rem 1.25rem 2rem}.app-header{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.app-header-top{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;width:100%}.brand h1{margin:0;font-size:1.5rem;color:var(--accent)}.brand-link{text-decoration:none;color:inherit}.subtitle{margin:.15rem 0 0;font-size:.9rem;color:var(--muted)}.auth-nav{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:flex-end;margin-left:auto}.auth-nav-loading{min-width:8rem;min-height:2rem}.auth-email{font-size:.85rem;color:var(--muted);max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-btn{text-decoration:none;display:inline-flex;align-items:center;padding:.35rem .75rem;font-size:.85rem}.guest-banner{margin:0 0 1rem;padding:.6rem .85rem;background:var(--accent-soft);border-radius:var(--radius);font-size:.9rem}.guest-banner a{color:var(--accent);font-weight:600}.planner-state{display:flex;align-items:center;justify-content:center;min-height:18rem}.state-panel{width:100%;max-width:28rem;padding:1.25rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:center}.state-panel h2{margin:0 0 .4rem;font-size:1.15rem;color:var(--accent)}.state-panel p{margin:0;color:var(--muted)}.login-page-header{align-items:center}.login-page{display:flex;justify-content:center;padding:2rem 1rem}.login-card{width:100%;max-width:24rem;padding:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.login-card h2{margin:0 0 .5rem;color:var(--accent)}.login-form{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.login-switch,.login-guest{margin:1rem 0 0;font-size:.9rem;color:var(--muted)}.login-switch a,.login-guest a{color:var(--accent)}.recipe-shell-header{margin-bottom:.75rem}.controls{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;width:100%}.control{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--muted)}.control select,.control input{min-width:12rem;padding:.4rem .5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font:inherit}.hidden{display:none!important}.view-toggle{display:flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.view-btn{border:none;background:var(--surface);padding:.45rem .75rem;font:inherit;cursor:pointer;color:var(--muted)}.view-btn.active{background:var(--accent);color:#fff}.actions{display:flex;flex-wrap:wrap;gap:.5rem;width:100%}.btn{padding:.45rem .85rem;border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:#fff;font:inherit;cursor:pointer}.btn.secondary{background:var(--surface);color:var(--accent)}.import-label{display:inline-flex;align-items:center;cursor:pointer}.week-title{margin:0 0 .75rem;font-size:1.1rem}.grid-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.meal-grid{width:100%;border-collapse:collapse;font-size:.85rem}.meal-grid th,.meal-grid td{border:1px solid var(--border);vertical-align:top;padding:.35rem}.meal-grid thead th{background:var(--accent-soft);font-weight:600;text-align:center}.slot-header{position:sticky;left:0;z-index:2;min-width:7rem;background:#f0f4ef;font-weight:600;white-space:nowrap}.slot-time{display:block;font-size:.75rem;font-weight:400;color:var(--muted)}.col-today{background:var(--today)}.meal-cell .cell-label{display:flex;gap:.35rem;align-items:flex-start}.track-cb{margin-top:.35rem;flex-shrink:0;accent-color:var(--accent)}.meal-input{width:100%;min-width:6rem;border:1px solid transparent;border-radius:4px;padding:.25rem;font:inherit;resize:vertical;background:transparent}.meal-input:focus{outline:2px solid var(--accent);border-color:var(--accent);background:#fff}.meal-items{flex:1;display:flex;flex-direction:column;gap:.25rem;min-width:0}.meal-item-row{display:flex;align-items:center;gap:.25rem}.meal-item-input{flex:1;min-width:0;border:1px solid transparent;border-radius:4px;padding:.2rem .35rem;font:inherit;background:transparent}.meal-item-input:focus{outline:2px solid var(--accent);border-color:var(--accent);background:#fff}.recipe-combobox{position:relative;flex:1;min-width:0}.recipe-combobox-input{width:100%}.recipe-combobox-list{position:absolute;top:100%;left:0;right:0;z-index:20;margin:.15rem 0 0;padding:.25rem 0;list-style:none;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 12px #0000001f;max-height:12rem;overflow-y:auto}.recipe-combobox-option{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:.4rem .6rem;border:none;background:transparent;font:inherit;text-align:left;cursor:pointer}.recipe-combobox-option:hover,.recipe-combobox-option.highlighted{background:var(--accent-soft)}.recipe-combobox-option-label{font-weight:500}.recipe-combobox-option-sub{font-size:.8rem;color:var(--muted)}.recipe-combobox-create{display:block;margin-top:.25rem;font-size:.8rem;color:var(--accent);text-decoration:none}.recipe-combobox-create:hover{text-decoration:underline}.meal-item-text{flex:1;min-width:0;padding:.2rem .35rem;font:inherit;word-break:break-word}.meal-item-empty{margin:0;padding:.2rem .35rem;color:var(--muted)}.recipe-link{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;min-height:2rem;flex-shrink:0;color:var(--accent);text-decoration:none;font-weight:700;border-radius:4px}.recipe-link:hover{background:var(--accent-soft)}.recipe-link-placeholder{display:inline-block;min-width:2rem;flex-shrink:0}.meal-item-remove,.meal-item-add{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:4px;cursor:pointer;font:inherit;line-height:1;padding:.15rem .4rem;flex-shrink:0}.meal-item-add{align-self:flex-start;margin-top:.15rem;font-size:.75rem}.meal-item-remove{min-width:1.75rem;min-height:1.75rem}.meal-cell.cell-done,.day-slot.cell-done{background:var(--done)}.notes-section{margin-top:1.25rem}.notes-section label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.35rem}.week-notes{width:100%;border:1px solid var(--border);border-radius:var(--radius);padding:.5rem;font:inherit;background:var(--surface)}.week-notes-readonly{width:100%;margin:0;border:1px solid var(--border);border-radius:var(--radius);padding:.5rem;font:inherit;background:var(--surface);color:var(--text);white-space:pre-wrap;min-height:4.5rem}.main-edit-mode .grid-wrap,.main-edit-mode .day-view{outline:1px dashed var(--accent);outline-offset:4px;border-radius:var(--radius)}.today-heading{margin-bottom:.25rem}.today-meta{margin:0 0 .5rem;font-size:.9rem;color:var(--muted)}.today-progress{margin:0 0 .75rem;font-size:.95rem;font-weight:600;color:var(--accent)}.today-warning{margin:0 0 .75rem;padding:.5rem .75rem;background:var(--today);border-radius:var(--radius);font-size:.9rem}.recipe-catalog-panel{margin-top:1.5rem;padding:1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.panel-title{margin:0 0 .35rem;font-size:1rem;color:var(--accent)}.panel-hint{margin:0 0 .75rem;font-size:.85rem;color:var(--muted)}.panel-hint code{font-size:.8rem}.admin-key-control{margin-bottom:.75rem}.admin-key-control input{min-width:16rem}.recipe-add-form{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem;align-items:center}.recipe-field{flex:1;min-width:10rem;padding:.4rem .5rem;border:1px solid var(--border);border-radius:var(--radius);font:inherit}.recipe-url-field{flex:2;min-width:14rem}.recipe-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.recipe-list-item{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg)}.recipe-name{font-weight:600;min-width:8rem}.recipe-list-link{flex:1;min-width:0;font-size:.85rem;color:var(--accent);word-break:break-all}.recipe-btn{padding:.25rem .5rem;font-size:.85rem}.recipe-list-empty{color:var(--muted);font-size:.9rem;padding:.5rem}.inline-error{padding:.25rem 0;margin:0 0 .5rem}.recipe-page{max-width:960px;margin:0 auto;padding:1rem 1rem 0}.recipe-page-header{margin-bottom:1rem}.recipe-page-header h1{margin:.5rem 0 0;font-size:1.5rem;color:var(--accent)}.recipe-back-link{color:var(--accent);text-decoration:none;font-size:.9rem}.recipe-back-link:hover{text-decoration:underline}.recipe-page-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.recipe-page-body{max-width:960px;margin:0 auto;padding:0 1rem 2rem}.recipe-search{display:flex;flex-direction:column;gap:.35rem;margin:.75rem 0 1rem;width:100%}.recipe-search input{width:100%;max-width:28rem}.recipe-admin-list{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.75rem}.recipe-admin-item{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;align-items:center;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.recipe-admin-main{display:flex;flex-direction:column;gap:.25rem;min-width:12rem}.recipe-admin-subname{font-size:.85rem;color:var(--muted)}.recipe-admin-badges{font-size:.8rem;color:var(--muted)}.recipe-admin-actions{display:flex;flex-wrap:wrap;gap:.35rem}.recipe-view{display:flex;flex-direction:column;gap:1.25rem}.recipe-hero-image{width:100%;max-height:360px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border)}.recipe-canonical-name{margin:0;color:var(--muted);font-size:.9rem}.recipe-ingredients{margin:.5rem 0 0;padding-left:1.25rem}.recipe-instructions{margin:.5rem 0 0;line-height:1.5}.recipe-instructions h3,.recipe-instructions h4{margin:1rem 0 .35rem;font-size:1rem;font-weight:600;color:var(--accent)}.recipe-instructions h3:first-child,.recipe-instructions h4:first-child,.recipe-instructions p:first-child{margin-top:0}.recipe-instructions ul{margin:.35rem 0 0;padding-left:1.25rem}.recipe-instructions li{margin-bottom:.35rem}.recipe-instructions p{margin:.35rem 0}.recipe-empty{color:var(--muted)}.recipe-form{display:flex;flex-direction:column;gap:.75rem;max-width:40rem}.recipe-fieldset{border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;margin:0}.recipe-fieldset legend{padding:0 .25rem;font-weight:600;color:var(--accent)}.ingredient-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem;align-items:center}.ingredient-amount{width:7rem;padding:.4rem .5rem;border:1px solid var(--border);border-radius:var(--radius);font:inherit}.ingredient-item{flex:1;min-width:10rem;padding:.4rem .5rem;border:1px solid var(--border);border-radius:var(--radius);font:inherit}.recipe-form-preview{max-width:240px;max-height:180px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border)}.actions .btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.day-view{display:flex;flex-direction:column;gap:.75rem}.day-slot{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem}.day-slot-header{display:flex;justify-content:space-between;margin-bottom:.5rem;font-weight:600}.day-slot-time{color:var(--muted);font-weight:400;font-size:.9rem}.error{margin:0 0 1rem;padding:.65rem .85rem;border:1px solid #f1b4bd;border-radius:var(--radius);background:#fff1f3;color:#8f001a}.control span.label-required:after{content:" *";color:#b00020;font-weight:600}@media(max-width:768px){.app-header{flex-direction:column;align-items:stretch}.app-header-top{align-items:stretch}.auth-nav{justify-content:flex-start;margin-left:0;width:100%}.auth-email{max-width:100%}.actions .btn{flex:1;text-align:center}}
