:root{--primary:#e2007a;--primary-dark:#a1134a;--primary-darker:#6b0e33;--primary-tint:#ffe7f2;--on-primary:#fff;--bg:#fff;--surface:#f4f4f4;--surface-card:#fff;--surface-dim:#fafafa;--border:#e5e5e5;--border-strong:#dadada;--on-surface:#1a1c1c;--on-surface-muted:#5a3f47;--on-surface-dim:#8e6f77;--danger:#ba1a1a;--danger-bg:#ffdad6;--success:#1f8a4c;--success-bg:#e2f4e9;--warning:#b45309;--not-allowed:#8e8e8e;--not-allowed-bg:#ececec;--r-sm:4px;--r-md:8px;--r-lg:12px;--r-pill:9999px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--font-headline:"Manrope", system-ui, -apple-system, sans-serif;--font-body:"Inter", system-ui, -apple-system, sans-serif;--shadow-soft:0 2px 4px #0000000a;--shadow-counter:0 1px 2px #1a1c1c0d;--max-w:480px;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--font-body);color:var(--on-surface);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-size:16px;line-height:1.5}button{cursor:pointer;font-family:inherit}button:disabled{cursor:not-allowed}input,select{font-family:inherit;font-size:inherit}h1,h2,h3,h4{font-family:var(--font-headline);margin:0;line-height:1.2}h1{letter-spacing:-.01em;font-size:32px;font-weight:800}h2{font-size:24px;font-weight:700}h3{font-size:18px;font-weight:700}p{margin:0}a{color:var(--primary);text-decoration:none}.app{height:100dvh;max-width:var(--max-w);background:var(--bg);flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.screen{min-height:0;padding:max(var(--safe-top), var(--s-6)) var(--s-5) var(--s-5);flex-direction:column;flex:1;display:flex;overflow:hidden}.header{margin-bottom:var(--s-5);justify-content:space-between;align-items:center;display:flex}.header h2{color:var(--primary);font-family:var(--font-headline);font-size:18px}.btn{justify-content:center;align-items:center;gap:var(--s-2);border-radius:var(--r-md);font-family:var(--font-body);letter-spacing:.02em;border:none;padding:14px 20px;font-size:15px;font-weight:600;transition:opacity .15s,transform 50ms;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:disabled{background:var(--border-strong);color:#fff;opacity:.7}.btn-secondary{color:var(--primary);border:1px solid var(--primary);background:0 0}.btn-block{width:100%}.card{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s-4)}.chip{border-radius:var(--r-pill);background:var(--surface-card);border:1px solid var(--border);color:var(--on-surface);cursor:pointer;align-items:center;padding:8px 14px;font-size:14px;font-weight:500;display:inline-flex}.chip[aria-selected=true]{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.sticky-footer{background:var(--bg);padding:var(--s-4) var(--s-5) calc(var(--safe-bottom) + var(--s-4));border-top:1px solid var(--border);position:sticky;bottom:0}.scroll-y{-webkit-overflow-scrolling:touch;min-height:0;overflow-y:auto}.row{align-items:center;display:flex}.row-between{justify-content:space-between;align-items:center;display:flex}.col{flex-direction:column;display:flex}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.muted{color:var(--on-surface-muted)}.dim{color:var(--on-surface-dim);font-size:13px}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:4px solid var(--primary-tint);border-top-color:var(--primary);border-radius:50%;width:56px;height:56px;animation:.9s linear infinite spin}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}.pulse{animation:1.6s ease-in-out infinite pulse}.recipe-hero{background:linear-gradient(135deg, var(--primary-tint), #fff);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-6) var(--s-5);margin-bottom:var(--s-5)}.recipe-step{gap:var(--s-3);background:var(--surface-card);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s-3) var(--s-4);margin-bottom:var(--s-2);grid-template-columns:32px 1fr;align-items:start;display:grid}.recipe-step-num{background:var(--primary);width:28px;height:28px;color:var(--on-primary);font-family:var(--font-headline);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.recipe-step-text{padding-top:3px;line-height:1.55}.recipe-notes{background:var(--primary-tint);border:1px solid var(--primary);border-radius:var(--r-sm);padding:var(--s-4);color:var(--on-surface)}.recipe-section-label{font-family:var(--font-headline);letter-spacing:.08em;text-transform:uppercase;color:var(--primary);margin:var(--s-5) 0 var(--s-2);font-size:12px;font-weight:700}
