:root{--tg-bg: #ffffff;--tg-text: #1c1c1e;--tg-hint: #8e8e93;--tg-link: #007aff;--tg-button: #007aff;--tg-button-text: #ffffff;--tg-secondary-bg: #f2f2f7;--tg-border: #e5e5ea;--tg-danger: #ff3b30;color-scheme:light}:root[data-theme=dark]{--tg-bg: #1c1c1e;--tg-text: #ffffff;--tg-hint: #8e8e93;--tg-link: #0a84ff;--tg-button: #0a84ff;--tg-button-text: #ffffff;--tg-secondary-bg: #2c2c2e;--tg-border: #3a3a3c;--tg-danger: #ff453a;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Vazirmatn,sans-serif;background:var(--tg-bg);color:var(--tg-text);-webkit-font-smoothing:antialiased}button{font-family:inherit}.app-shell{display:flex;flex-direction:column;min-height:100dvh;max-width:480px;margin-inline:auto}.app-content{flex:1;overflow-y:auto;padding:1.25rem 1.25rem 6rem}.app-footer{position:sticky;bottom:0;display:flex;gap:.75rem;padding:1rem 1.25rem;background:var(--tg-bg);border-top:1px solid var(--tg-border)}.btn{flex:1;padding:.75rem 1rem;border-radius:.75rem;border:none;font-size:1rem;font-weight:600;cursor:pointer}.btn-primary{background:var(--tg-button);color:var(--tg-button-text)}.btn-secondary{background:var(--tg-secondary-bg);color:var(--tg-text)}.btn:disabled{opacity:.5;cursor:not-allowed}.step-title{font-size:1.4rem;font-weight:700;margin:0 0 .25rem}.step-subtitle{color:var(--tg-hint);margin:0 0 1.25rem;font-size:.95rem}.step-progress{color:var(--tg-hint);font-size:.8rem;margin-bottom:.5rem}.chip-grid{display:flex;flex-wrap:wrap;gap:.5rem}.chip{padding:.5rem .9rem;border-radius:999px;border:1px solid var(--tg-border);background:var(--tg-secondary-bg);color:var(--tg-text);font-size:.9rem;cursor:pointer}.chip[data-selected=true]{background:var(--tg-button);border-color:var(--tg-button);color:var(--tg-button-text)}.chip[data-selected=favorite]{background:#ff9500;border-color:#ff9500;color:#fff}.field-group{margin-bottom:1.5rem}.field-label{display:block;font-weight:600;margin-bottom:.5rem}input[type=text],input[type=search],select{width:100%;padding:.7rem .9rem;border-radius:.6rem;border:1px solid var(--tg-border);background:var(--tg-secondary-bg);color:var(--tg-text);font-size:1rem}input[type=range]{width:100%}.value-readout{color:var(--tg-link);font-weight:700}.autocomplete-results{list-style:none;margin:.4rem 0 0;padding:0;border:1px solid var(--tg-border);border-radius:.6rem;overflow:hidden}.autocomplete-results li button{width:100%;text-align:start;padding:.6rem .9rem;background:var(--tg-secondary-bg);border:none;border-bottom:1px solid var(--tg-border);color:var(--tg-text);cursor:pointer}.autocomplete-results li:last-child button{border-bottom:none}.tag-list{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem}.tag{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:999px;background:var(--tg-secondary-bg);border:1px solid var(--tg-border);font-size:.85rem}.tag[data-kind=allergy]{border-color:var(--tg-danger);color:var(--tg-danger)}.tag button{background:none;border:none;cursor:pointer;font-size:.9rem;color:inherit;padding:0;line-height:1}.status-line{text-align:center;color:var(--tg-hint);font-size:.9rem;margin-top:.5rem}.status-line[data-tone=error]{color:var(--tg-danger)}.notification-toggle{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.inventory-list{list-style:none;margin:0 0 1.5rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.inventory-list .tag{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.6rem .75rem;width:100%}.inventory-list .tag input[type=number]{width:4.5rem}.inventory-list .tag select,.inventory-list .tag input[type=date]{width:auto}.inventory-draft{margin-top:.75rem;padding:.9rem;border:1px solid var(--tg-border);border-radius:.75rem;background:var(--tg-secondary-bg)}.inventory-draft>*{margin-bottom:.5rem}.inventory-draft-actions{display:flex;gap:.75rem}.inventory-draft-actions .btn{flex:1}.nav-row{display:flex;gap:.75rem;margin-bottom:1.25rem;flex-wrap:wrap}.nav-row .btn{flex:none;padding:.4rem .8rem;font-size:.85rem}.proposal-actions-row{display:flex;gap:.75rem;margin-bottom:1.5rem}.proposal-card{border:1px solid var(--tg-border);border-radius:.9rem;padding:1rem;margin-bottom:1rem;background:var(--tg-secondary-bg)}.proposal-card-image{width:100%;height:140px;object-fit:cover;border-radius:.6rem;margin-bottom:.6rem;background:var(--tg-border)}.proposal-card-title{font-size:1.1rem;font-weight:700;margin:0 0 .3rem}.proposal-card-meta{color:var(--tg-hint);font-size:.85rem;margin:0 0 .6rem;display:flex;gap:.6rem;flex-wrap:wrap}.proposal-card-actions{display:flex;flex-wrap:wrap;gap:.5rem}.proposal-card-actions .btn{flex:none;padding:.5rem .8rem;font-size:.85rem}.recipe-ingredient-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--tg-border);font-size:.9rem}.recipe-ingredient-row:last-child{border-bottom:none}.recipe-step{margin-bottom:.6rem;line-height:1.4}.deduction-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--tg-border)}.deduction-row:last-child{border-bottom:none}.deduction-row input[type=number]{width:6rem}.history-list{list-style:none;margin:0 0 1.5rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.history-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.7rem .9rem;border-radius:.75rem;border:1px solid var(--tg-border);background:var(--tg-secondary-bg)}.progress-level-card{text-align:center;padding:1.25rem;border-radius:1rem;background:var(--tg-secondary-bg);margin-bottom:1rem}.progress-level-title{font-size:1.3rem;font-weight:700;margin:0 0 .25rem}.xp-bar-track{width:100%;height:.6rem;border-radius:999px;background:var(--tg-border);overflow:hidden;margin:.6rem 0 .3rem}.xp-bar-fill{height:100%;background:var(--tg-button);border-radius:999px;transition:width .3s ease}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:.75rem}.badge-cell{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.75rem .5rem;border-radius:.75rem;border:1px solid var(--tg-border);background:var(--tg-secondary-bg);text-align:center;font-size:.8rem}.badge-cell[data-earned=false]{opacity:.45}.badge-icon{font-size:1.8rem}.tier-ladder{display:flex;flex-wrap:wrap;gap:.5rem}.tier-pill{padding:.5rem .9rem;border-radius:999px;border:1px solid var(--tg-border);background:var(--tg-secondary-bg);font-size:.85rem}.tier-pill[data-unlocked=true]{background:var(--tg-button);border-color:var(--tg-button);color:var(--tg-button-text)}.league-board{list-style:none;padding:0;margin:0 0 1.25rem;display:flex;flex-direction:column;gap:.35rem}.league-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border-radius:10px;border:1px solid var(--tg-border);background:var(--tg-secondary-bg)}.league-row[data-me=true]{border-color:var(--tg-button);box-shadow:inset 3px 0 0 var(--tg-button)}.league-row[data-zone=promote] .league-rank{color:var(--tg-button)}.league-row[data-zone=demote] .league-rank{color:var(--tg-destructive, #d33)}.league-rank{min-width:1.6rem;font-weight:700;text-align:center}.league-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.league-xp{font-variant-numeric:tabular-nums;font-size:.85rem;opacity:.85}.planner-list{list-style:none;padding:0;margin:0 0 1.25rem;display:flex;flex-direction:column;gap:.35rem}.planner-slot{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem .75rem;border-radius:10px;border:1px solid var(--tg-border);background:var(--tg-secondary-bg)}.planner-slot-info{display:flex;flex-direction:column;overflow:hidden}.planner-slot-date{font-size:.8rem;opacity:.75}.planner-slot-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shopping-list{list-style:none;padding:0;margin:0 0 1.25rem;display:flex;flex-direction:column;gap:.35rem}.shopping-item{padding:.4rem .5rem;border-radius:10px;border:1px solid var(--tg-border);background:var(--tg-secondary-bg)}.shopping-item[data-checked=true]{opacity:.55;text-decoration:line-through}.shopping-item label{display:flex;align-items:center;gap:.6rem}.shopping-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shopping-item-quantity{font-variant-numeric:tabular-nums;font-size:.85rem;opacity:.85}.expiring-soon-strip{background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:10px;padding:.5rem .75rem}.taste-profile-summary{font-size:1.05rem;font-weight:600;margin:.5rem 0 1rem}.taste-profile-details{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem;opacity:.85}
