:root{--teal:#0f766e;--teal-dark:#0b5851;--bg:#f8fafc;--card:#fff;--text:#0f172a;--muted:#64748b;--border:#e2e8f0;--danger:#dc2626;--shadow:0 1px 3px #0f172a14}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{flex-direction:column;min-height:100%;display:flex}.content{flex:1;padding-bottom:72px}.topbar{border-bottom:1px solid var(--border);background:var(--card);justify-content:flex-end;align-items:center;gap:10px;padding:10px 16px;display:flex}.topbar__name{color:var(--muted);margin-right:auto;font-size:.85rem;font-weight:600}.topbar__signout{color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:.85rem;font-weight:600;text-decoration:underline}.page{max-width:640px;margin:0 auto;padding:20px 16px 32px}.page--center{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:80vh;display:flex}.page__header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.page__header h1{margin:0;font-size:1.5rem}.page__footer{gap:10px;margin-top:20px;padding-top:12px;display:flex;position:sticky;bottom:76px}.page__footer .btn{flex:1}h1,h2{color:var(--text)}h2{margin:24px 0 8px;font-size:1.1rem}.muted{color:var(--muted);margin:4px 0}.small{font-size:.85rem}.error{color:var(--danger);font-size:.9rem}.brand{flex-direction:column;align-items:center;gap:4px;display:flex}.brand h1{margin:8px 0 0}.segmented{background:#e2e8f0;border-radius:12px;gap:4px;width:100%;max-width:480px;padding:4px;display:flex}.seg{color:var(--muted);background:0 0;border:0;border-radius:9px;flex:1;padding:10px 8px;font-size:14px;font-weight:600}.seg--active{background:var(--card);color:var(--text);box-shadow:var(--shadow)}.form{flex-direction:column;gap:14px;width:100%;max-width:360px;margin:8px auto 0;display:flex}.field{text-align:left;flex-direction:column;gap:6px;display:flex}.field span{color:var(--muted);font-size:.85rem;font-weight:600}.field input{border:1px solid var(--border);background:var(--card);border-radius:10px;padding:12px 14px;font-size:1rem}.field input:focus{outline:2px solid var(--teal);border-color:var(--teal)}.btn{border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:12px 16px;font-size:1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5}.btn--primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn--primary:active{background:var(--teal-dark)}.chip{border:1px solid var(--border);background:var(--card);color:var(--muted);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:.8rem;font-weight:600}.cards{flex-direction:column;gap:12px;margin:16px 0 0;padding:0;list-style:none;display:flex}.card{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;gap:12px;display:flex;overflow:hidden}.card--preview{flex-direction:column;margin-top:16px}.card__media{width:108px;min-width:108px;height:108px;display:block}.card--preview .card__media{width:100%;height:180px}.card__media img{object-fit:cover;width:100%;height:100%}.card__placeholder{background:#f1f5f9;place-items:center;width:100%;height:100%;font-size:2rem;display:grid}.card__body{color:inherit;flex-direction:column;flex:1;gap:4px;padding:10px 12px 12px 0;text-decoration:none;display:flex}.card__body--full{padding-left:12px}.card--preview .card__body{padding:12px}.card__title{color:var(--text);font-weight:700;line-height:1.25;text-decoration:none}.card__actions{align-items:center;gap:10px;margin-top:auto;padding-top:6px;display:flex}.vote{border:1px solid var(--teal);background:var(--card);color:var(--teal);cursor:pointer;border-radius:999px;padding:8px 16px;font-weight:700}.vote--on{background:var(--teal);color:#fff}.vote__count{min-width:20px;font-size:1.1rem;font-weight:800}.empty{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:40px 0;display:flex}.back{color:var(--teal);margin-bottom:8px;font-weight:600;text-decoration:none;display:inline-block}.hero-img{object-fit:cover;border-radius:14px;width:100%;height:220px}.recipe-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.recipe-header h1{margin:0}.favorite-toggle{white-space:nowrap;flex-shrink:0}.meta{color:var(--muted);gap:16px;margin:8px 0;font-size:.9rem;display:flex}.ingredients,.method{padding-left:20px;line-height:1.6}.ingredients li,.method li{margin:6px 0}.source{color:var(--teal);margin-top:20px;font-weight:600;display:inline-block}.grocery{flex-direction:column;gap:2px;margin:16px 0 0;padding:0;list-style:none;display:flex}.grocery__row label{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 8px;display:flex}.grocery__row input{width:22px;height:22px;accent-color:var(--teal)}.grocery__name{text-transform:capitalize;flex:1}.grocery__amt{color:var(--muted);font-size:.9rem}.grocery__row.is-checked .grocery__name{color:var(--muted);text-decoration:line-through}.checklist{margin:8px 0;padding:0;list-style:none}.checklist li label{align-items:center;gap:12px;padding:8px;display:flex}.checklist li input{width:20px;height:20px;accent-color:var(--teal)}.tabbar{background:var(--card);border-top:1px solid var(--border);height:64px;padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:.72rem;font-weight:600;text-decoration:none;display:flex}.tab--active{color:var(--teal)}.tab__icon{font-size:1.35rem}
