@import "https://fonts.googleapis.com/css2?family=Jost:wght@300;400;500;600;700&display=swap";:root{--bg:#0f0e1a;--bg2:#13121f;--bg3:#17162a;--surf:#1c1b2e;--surf2:#22213a;--txt:#f0eef8;--txt2:#b8b4d0;--txt3:#6e6a88;--violet:#9b7fe8;--vlt2:#b89ff0;--bdr:#ffffff12;--bdr2:#ffffff21;--vlt-pale:#9b7fe81a;--vlt-glow:#9b7fe812}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Jost,system-ui,sans-serif}body{background:var(--bg);color:var(--txt)}#root{width:100%;max-width:480px;min-height:100svh;margin:0 auto}button{font-family:inherit}.skeleton-card{aspect-ratio:1;background:var(--surf);position:relative;overflow:hidden}.skeleton-shine{background:linear-gradient(90deg,#0000 0%,#ffffff0a 50%,#0000 100%) 0 0/200% 100%;animation:1.4s infinite shimmer;position:absolute;inset:0}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.fade-img-wrapper{background:var(--surf2);width:100%;height:100%;position:relative;overflow:hidden}.fade-img-placeholder{background:linear-gradient(135deg, var(--surf) 0%, var(--surf2) 100%);animation:1.6s ease-in-out infinite pulse;position:absolute;inset:0}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.fade-img{object-fit:cover;opacity:0;z-index:1;width:100%;height:100%;transition:opacity .35s;display:block;position:relative}.fade-img.loaded{opacity:1}.pwa-install-bar{background:var(--surf);border-top:1px solid var(--bdr2);z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);align-items:center;gap:10px;padding:10px 16px;display:flex;position:fixed;bottom:0;left:0;right:0}.pwa-bar-icon{flex-shrink:0;font-size:22px}.pwa-bar-text{color:var(--txt2);flex:1;font-size:13px;line-height:1.4}.pwa-bar-text strong{color:var(--txt)}.pwa-bar-btn{background:var(--violet);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;flex-shrink:0;padding:7px 16px;font-family:Jost,sans-serif;font-size:13px;font-weight:500}.pwa-bar-close{color:var(--txt3);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:4px 4px 4px 8px;font-size:16px;line-height:1}@keyframes pageIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.page{background:var(--bg);min-height:100svh;animation:.22s pageIn}.loading-page,.error-page{background:var(--bg);min-height:100svh;color:var(--txt3);justify-content:center;align-items:center;font-size:15px;font-weight:500;display:flex}.error-page{color:#e87a6a}.center-text{text-align:center;color:var(--txt3);padding:40px 20px;font-size:14px}.pull-indicator{text-align:center;color:var(--violet);background:var(--vlt-pale);padding:10px;font-size:13px;font-weight:500}.home-section{background:var(--bg)}.home-header{padding:28px 20px 20px}.home-header-row{justify-content:space-between;align-items:flex-start;display:flex}.streak-badge{background:var(--vlt-pale);border:1px solid #9b7fe833;border-radius:50px;align-items:center;gap:6px;margin-top:12px;padding:6px 12px;display:inline-flex}.streak-fire{font-size:15px}.streak-text{color:var(--vlt2);font-size:13px;font-weight:600}.home-actions{gap:8px;display:flex}.search-icon-btn{background:var(--surf);border:1px solid var(--bdr2);cursor:pointer;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;margin-top:2px;font-size:17px;display:flex}.home-title{color:var(--txt);letter-spacing:-.3px;margin-bottom:4px;font-size:26px;font-weight:700}.home-subtitle{color:var(--txt3);font-size:13px;font-weight:400}.card-grid{background:var(--bdr);grid-template-columns:1fr 1fr;gap:2px;display:grid}.image-card{aspect-ratio:1;cursor:pointer;background:var(--surf);border:none;width:100%;padding:0;display:block;position:relative;overflow:hidden}.image-card img{object-fit:cover;width:100%;height:100%;transition:transform .3s;display:block}.image-card:active img{transform:scale(.97)}.card-overlay{z-index:2;background:linear-gradient(#0000 0%,#0a091480 45%,#0a0914eb 100%);padding:48px 14px 14px;position:absolute;bottom:0;left:0;right:0}.card-label{color:#fff;letter-spacing:.3px;text-shadow:0 2px 8px #000000b3;font-size:15px;font-weight:700;line-height:1.25}.search-header{background:var(--bg2);border-bottom:1px solid var(--bdr);z-index:10;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky;top:0}.search-back{background:var(--surf);border:1px solid var(--bdr2);color:var(--txt2);cursor:pointer;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-family:inherit;font-size:16px;display:flex}.search-input-wrapper{background:var(--surf);border:1px solid var(--bdr2);border-radius:12px;flex:1;align-items:center;gap:8px;height:40px;padding:0 12px;display:flex}.search-icon{font-size:14px}.search-input{color:var(--txt);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:15px;font-weight:500}.search-input::placeholder{color:var(--txt3)}.search-clear{color:var(--txt3);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:13px}.search-hint{text-align:center;color:var(--txt3);padding:48px 20px;font-size:13px}.weekly-content{flex-direction:column;gap:10px;padding:16px;display:flex}.plan-row{background:var(--surf);border:1px solid var(--bdr);border-radius:14px;align-items:center;gap:12px;min-height:60px;padding:12px 14px;display:flex}.plan-gun{color:var(--txt3);flex-shrink:0;width:72px;font-size:13px;font-weight:600}.plan-item{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.plan-img{object-fit:cover;border-radius:8px;flex-shrink:0;width:36px;height:36px}.plan-name{color:var(--txt);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;font-weight:500;overflow:hidden}.plan-actions{flex-shrink:0;gap:6px;display:flex}.plan-goto,.plan-remove{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;font-family:inherit;font-size:13px;display:flex}.plan-add{background:var(--vlt-pale);color:var(--violet);cursor:pointer;border:1px solid #9b7fe833;border-radius:50px;margin-left:auto;padding:6px 14px;font-family:inherit;font-size:13px;font-weight:600}.plan-modal-overlay{z-index:100;background:#0009;align-items:flex-end;display:flex;position:fixed;inset:0}.plan-modal{background:var(--bg3);border-radius:20px 20px 0 0;width:100%;max-height:70svh;padding:20px;overflow-y:auto}.plan-modal-title{color:var(--txt);margin-bottom:16px;font-size:16px;font-weight:700}.plan-modal-empty{color:var(--txt3);text-align:center;padding:24px 0;font-size:14px}.plan-modal-list{flex-direction:column;gap:8px;display:flex}.plan-modal-item{background:var(--surf);border:1px solid var(--bdr);cursor:pointer;color:var(--txt);text-align:left;border-radius:12px;align-items:center;gap:12px;padding:10px 12px;font-family:inherit;font-size:14px;font-weight:500;display:flex}.plan-modal-img{object-fit:cover;border-radius:8px;width:40px;height:40px}.empty-fav{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:80px 32px;display:flex}.empty-fav-icon{color:var(--txt3);margin-bottom:8px;font-size:48px}.empty-fav-text{color:var(--txt);font-size:17px;font-weight:600}.empty-fav-sub{color:var(--txt3);font-size:13px}.breadcrumb{background:var(--bg2);border-bottom:1px solid var(--bdr);scrollbar-width:none;align-items:center;gap:6px;padding:10px 16px;display:flex;overflow-x:auto}.breadcrumb::-webkit-scrollbar{display:none}.bc-item{color:var(--violet);cursor:pointer;white-space:nowrap;flex-shrink:0;font-size:12px;font-weight:500}.bc-sep{color:var(--txt3);flex-shrink:0;font-size:12px}.bc-current{color:var(--txt3);white-space:nowrap;flex-shrink:0;font-size:12px}.filter-row{scrollbar-width:none;background:var(--bg);border-bottom:1px solid var(--bdr);gap:8px;padding:14px 16px;display:flex;overflow-x:auto}.filter-row::-webkit-scrollbar{display:none}.filter-chip{border:1px solid var(--bdr2);background:var(--surf);color:var(--txt2);cursor:pointer;white-space:nowrap;border-radius:50px;flex-shrink:0;padding:6px 14px;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s}.filter-chip.active{background:var(--violet);border-color:var(--violet);color:#fff}.empty-msg{text-align:center;color:var(--txt3);padding:64px 24px;font-size:14px;font-weight:500}.fav-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:2;background:#0f0e1a99;border:1px solid #ffffff1f;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;transition:transform .15s;display:flex;position:absolute;top:8px;right:8px}.fav-btn:active{transform:scale(.88)}.fav-btn.fav-active{color:var(--violet)}.recipe-hero-wrapper{position:relative}.recipe-hero{background:var(--surf);width:100%;height:260px;position:relative;overflow:hidden}.recipe-hero img{object-fit:contain;background:var(--surf);width:100%;height:100%;display:block}.recipe-hero-gradient{background:linear-gradient(#0f0e1a80 0%,#0000 40%,#0f0e1ad9 100%);position:absolute;inset:0}.recipe-appbar-overlay{position:absolute;top:0;left:0;right:0}.recipe-appbar-overlay .appbar{background:0 0;border-bottom:none}.recipe-content{padding:20px 20px 56px}.recipe-title{color:var(--txt);text-align:center;letter-spacing:-.2px;margin-bottom:6px;font-size:22px;font-weight:700;line-height:1.35}.recipe-prep{color:var(--violet);text-align:center;letter-spacing:.3px;margin-bottom:28px;font-size:13px;font-weight:500}.shopping-list{flex-direction:column;gap:8px;padding:16px;display:flex}.shopping-item{background:var(--surf);border:1px solid var(--bdr);border-radius:12px;align-items:center;gap:12px;padding:12px 14px;display:flex}.shopping-item.done .shopping-name{color:var(--txt3);text-decoration:line-through}.shopping-check{border:1.5px solid var(--bdr2);cursor:pointer;width:28px;height:28px;color:var(--violet);background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:inherit;font-size:13px;display:flex}.shopping-info{flex-direction:column;flex:1;gap:2px;display:flex}.shopping-name{color:var(--txt);font-size:14px;font-weight:500}.shopping-qty{color:var(--txt3);font-size:12px}.shopping-del{color:var(--txt3);cursor:pointer;background:0 0;border:none;padding:4px;font-family:inherit;font-size:13px}.clear-btn{color:#e87a6a;cursor:pointer;background:0 0;border:1px solid #e87a6a4d;border-radius:8px;padding:5px 12px;font-family:inherit;font-size:12px}.ingredient-right{align-items:center;gap:8px;display:flex}.add-to-list{background:var(--vlt-pale);color:var(--violet);cursor:pointer;border:1px solid #9b7fe840;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-family:inherit;font-size:14px;font-weight:700;display:flex}.add-to-list.added{color:#6db89a;background:#6db89a26;border-color:#6db89a4d}.comparison-content{padding:20px 16px 48px}.comparison-cards{align-items:center;gap:8px;margin-bottom:24px;display:flex}.comp-card{background:var(--surf);border:1px solid var(--bdr);text-align:center;border-radius:16px;flex:1;overflow:hidden}.comp-img-wrap{aspect-ratio:1;width:100%}.comp-label{letter-spacing:1px;text-transform:uppercase;color:var(--txt3);padding:10px 8px 2px;font-size:10px;font-weight:700}.comp-label.alt{color:var(--violet)}.comp-name{color:var(--txt);padding:0 8px 12px;font-size:13px;font-weight:600;line-height:1.3}.comp-vs{color:var(--txt3);flex-shrink:0;font-size:13px;font-weight:700}.comp-stats{background:var(--surf);border:1px solid var(--bdr);border-radius:14px;overflow:hidden}.comp-stat-row{border-bottom:1px solid var(--bdr);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.comp-stat-row:last-child{border-bottom:none}.comp-stat-key{color:var(--txt3);font-size:13px;font-weight:500}.comp-stat-val{flex:1;justify-content:flex-end;align-items:center;gap:8px;display:flex}.comp-stat-badge{color:var(--violet);font-size:13px;font-weight:600}.comp-tags{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.lang-btn{background:var(--surf);border:1px solid var(--bdr2);color:var(--txt2);cursor:pointer;letter-spacing:.5px;border-radius:8px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:700}.star-row{align-items:center;gap:4px;margin-bottom:20px;display:flex}.star{color:var(--surf2);cursor:pointer;background:0 0;border:none;padding:0;font-size:26px;line-height:1;transition:color .15s,transform .1s}.star:active{transform:scale(.85)}.star.star-active{color:var(--violet)}.star-label{color:var(--txt3);margin-left:6px;font-size:12px}.feasibility-bar-wrapper{margin-bottom:20px}.feasibility-bar-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.feasibility-label{letter-spacing:.8px;text-transform:uppercase;color:var(--txt3);font-size:12px;font-weight:600}.feasibility-score{color:var(--violet);font-size:13px;font-weight:700}.feasibility-track{background:var(--surf2);border-radius:50px;height:6px;overflow:hidden}.feasibility-fill{background:linear-gradient(90deg, var(--violet), var(--vlt2));border-radius:50px;height:100%;transition:width .6s}.recipe-ingredients{background:var(--surf);border:1px solid var(--bdr);border-radius:14px;margin-bottom:16px;overflow:hidden}.section-label{letter-spacing:1.2px;text-transform:uppercase;color:var(--violet);border-bottom:1px solid var(--bdr);padding:14px 16px 10px;font-size:11px;font-weight:600}.ingredient-row{border-bottom:1px solid var(--bdr);justify-content:space-between;align-items:center;padding:11px 16px;font-size:14px;display:flex}.ingredient-row:last-child{border-bottom:none}.ingredient-name{color:var(--txt);font-weight:500}.ingredient-qty{color:var(--txt3);font-size:13px}.recipe-steps{background:var(--surf);border:1px solid var(--bdr);border-radius:14px;overflow:hidden}.step-row{border-bottom:1px solid var(--bdr);color:var(--txt2);align-items:flex-start;gap:12px;padding:12px 16px;font-size:14px;line-height:1.6;display:flex}.step-row:last-child{border-bottom:none}.step-num{color:var(--violet);background:var(--vlt-pale);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;min-width:22px;height:22px;margin-top:2px;font-size:11px;font-weight:700;display:flex}.appbar{background:var(--bg2);border-bottom:1px solid var(--bdr);z-index:10;align-items:center;gap:12px;padding:16px 20px;display:flex;position:sticky;top:0}.appbar-back{background:var(--surf);border:1px solid var(--bdr2);color:var(--txt2);cursor:pointer;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;transition:background .15s,color .15s;display:flex}.appbar-back:hover{background:var(--surf2);color:var(--txt)}.appbar-title{color:var(--txt);letter-spacing:.2px;flex:1;font-size:17px;font-weight:600}.appbar-actions{margin-left:auto}.recipe-fav{background:#ffffff14;position:static}.appbar-share{background:var(--surf);border:1px solid var(--bdr2);color:var(--txt2);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;width:34px;height:34px;font-family:inherit;font-size:16px;font-weight:700;transition:color .2s;display:flex}.appbar-share:hover{color:var(--violet)}.auth-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{flex-direction:column;align-items:center;gap:8px;width:100%;max-width:360px;display:flex}.auth-logo-icon{width:160px;height:160px;margin-bottom:-8px}.auth-logo{color:var(--violet);letter-spacing:-1px;margin:0;font-size:36px;font-weight:800}.auth-tagline{color:var(--text2);margin:0 0 16px;font-size:13px}.auth-tabs{background:var(--surf);border-radius:12px;width:100%;margin-bottom:8px;padding:4px;display:flex}.auth-tab{color:var(--text2);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;padding:10px;font-family:inherit;font-size:14px;font-weight:600;transition:all .2s}.auth-tab.active{background:var(--violet);color:#fff}.auth-form{flex-direction:column;gap:12px;width:100%;display:flex}.auth-input{background:var(--surf);border:1.5px solid var(--surf2);color:var(--text);border-radius:12px;outline:none;padding:14px 16px;font-family:inherit;font-size:15px;transition:border-color .2s}.auth-input:focus{border-color:var(--violet)}.auth-input::placeholder{color:var(--text2)}.auth-btn{background:var(--violet);color:#fff;cursor:pointer;border:none;border-radius:12px;margin-top:4px;padding:15px;font-family:inherit;font-size:15px;font-weight:700;transition:opacity .2s}.auth-btn:disabled{opacity:.6;cursor:not-allowed}.auth-error{color:#ff6b6b;text-align:center;margin:0;font-size:13px}.auth-success{color:#6bffb8;text-align:center;margin:0;font-size:13px}.auth-resend{color:var(--violet);cursor:pointer;text-align:center;background:0 0;border:none;padding:4px;font-family:inherit;font-size:13px;text-decoration:underline}
