body{background:#eef2ff}#root{min-height:100dvh}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: #6366F1;--primary-600: #4F46E5;--accent: #EC4899;--accent-2: #F59E0B;--accent-3: #10B981;--beef: #EF4444;--beef-grad: linear-gradient(135deg, #F87171, #DC2626);--pork: #F97316;--pork-grad: linear-gradient(135deg, #FDBA74, #EA580C);--chicken: #10B981;--chicken-grad: linear-gradient(135deg, #34D399, #059669);--turkey: #A855F7;--turkey-grad: linear-gradient(135deg, #C084FC, #7E22CE);--seafood: #06B6D4;--seafood-grad: linear-gradient(135deg, #22D3EE, #0E7490);--bg: #0F172A;--surface: rgba(255,255,255,.72);--surface-2: rgba(255,255,255,.55);--card-bg: rgba(255,255,255,.85);--glass-border: rgba(255,255,255,.5);--text: #0F172A;--text-muted: #475569;--text-on-dark: #F8FAFC;--border: rgba(148,163,184,.25);--radius: 18px;--radius-lg: 24px;--shadow-sm: 0 2px 10px rgba(15,23,42,.06);--shadow: 0 10px 30px rgba(15,23,42,.1);--shadow-lg: 0 25px 60px rgba(15,23,42,.25);--ring: 0 0 0 3px rgba(99,102,241,.35);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-feature-settings:"cv11","ss01","ss03";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{min-height:100dvh}html{-webkit-text-size-adjust:100%}button,input,select,textarea{touch-action:manipulation;-webkit-tap-highlight-color:transparent}body{color:var(--text);min-height:100dvh;background:radial-gradient(1200px 600px at -10% -20%,rgba(236,72,153,.35),transparent 60%),radial-gradient(1000px 700px at 110% 10%,rgba(99,102,241,.4),transparent 55%),radial-gradient(900px 600px at 50% 110%,rgba(16,185,129,.28),transparent 60%),linear-gradient(180deg,#fdf4ff,#eef2ff 40%,#ecfeff);background-attachment:fixed;position:relative;overflow-x:hidden}body:before,body:after{content:"";position:fixed;inset:auto;width:520px;height:520px;border-radius:50%;filter:blur(90px);opacity:.55;z-index:-1;pointer-events:none;animation:float 18s ease-in-out infinite}body:before{top:-160px;left:-140px;background:radial-gradient(circle at 30% 30%,#A78BFA,#6366F1 60%,transparent 70%)}body:after{bottom:-200px;right:-160px;background:radial-gradient(circle at 70% 70%,#F472B6,#F59E0B 60%,transparent 70%);animation-delay:-9s}@keyframes float{0%,to{transform:translate(0) scale(1)}50%{transform:translate(40px,-30px) scale(1.08)}}#app{max-width:1100px;margin:0 auto;padding:0 0 3rem}.app-header{position:sticky;top:0;z-index:100;margin:0 auto;padding:1rem 1.25rem;color:var(--text);background:#ffffff8c;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--glass-border)}.header-content{display:flex;align-items:center;justify-content:space-between;gap:1rem}.header-left{display:flex;align-items:center;gap:.75rem}.app-icon{font-size:1.35rem;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:14px;background:linear-gradient(135deg,#6366f1,#ec4899,#f59e0b);color:#fff;box-shadow:0 8px 20px #6366f159}.header-brand{display:flex;flex-direction:column;gap:.1rem;line-height:1.1}.app-header h1{font-size:1.2rem;font-weight:800;letter-spacing:-.02em;background:linear-gradient(90deg,#4f46e5,#ec4899 60%,#f59e0b);-webkit-background-clip:text;background-clip:text;color:transparent}.brand-accent{font-weight:800}.brand-tag{font-size:.74rem;font-weight:600;color:var(--text-muted);letter-spacing:.01em}.header-right{display:flex;gap:.5rem}.icon-btn{background:#ffffffb3;border:1px solid var(--glass-border);border-radius:12px;width:40px;height:40px;cursor:pointer;font-size:1.05rem;display:flex;align-items:center;justify-content:center;transition:transform .2s,background .2s,box-shadow .2s;box-shadow:var(--shadow-sm)}.icon-btn:hover{background:#fff;transform:translateY(-2px);box-shadow:0 8px 18px #6366f140}.icon-btn:active{transform:translateY(0) scale(.96)}.filter-bar{display:flex;gap:.5rem;padding:1rem 1.25rem;flex-wrap:wrap;justify-content:center}.filter-btn{padding:.5rem 1rem;border:1.5px solid transparent;border-radius:999px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:700;letter-spacing:.01em;transition:transform .15s ease,box-shadow .2s ease,filter .2s ease;box-shadow:var(--shadow-sm)}.filter-btn:hover{transform:translateY(-2px);filter:brightness(1.05)}.filter-btn:focus-visible{outline:none;box-shadow:var(--ring),var(--shadow-sm)}.filter-btn:active{transform:translateY(0) scale(.98)}.filter-btn.beef{background:var(--beef-grad);box-shadow:0 8px 18px #ef444452}.filter-btn.pork{background:var(--pork-grad);box-shadow:0 8px 18px #f9731652}.filter-btn.chicken{background:var(--chicken-grad);box-shadow:0 8px 18px #10b98152}.filter-btn.groundTurkey{background:var(--turkey-grad);box-shadow:0 8px 18px #a855f752}.filter-btn.seafood{background:var(--seafood-grad);box-shadow:0 8px 18px #06b6d452}.week-nav{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;margin:.5rem 1rem;border-radius:var(--radius);background:#ffffffb3;-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm);gap:.75rem;flex-wrap:wrap}.week-info{text-align:center;flex:1}.week-label{display:block;font-weight:800;font-size:1.1rem;letter-spacing:-.01em;background:linear-gradient(90deg,#6366f1,#ec4899);-webkit-background-clip:text;background-clip:text;color:transparent}.week-dates{font-size:.82rem;color:var(--text-muted);margin-top:.15rem}.nav-btn,.today-btn{padding:.55rem 1rem;border:1.5px solid transparent;border-radius:12px;background:#fffc;color:var(--primary-600);cursor:pointer;font-weight:700;font-size:.85rem;transition:all .2s ease;box-shadow:var(--shadow-sm)}.nav-btn:hover,.today-btn:hover{transform:translateY(-2px);box-shadow:0 10px 22px #6366f140}.nav-btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}.today-btn{background:linear-gradient(135deg,#ec4899,#f59e0b);color:#fff}.today-btn:hover{box-shadow:0 12px 26px #ec489966}.week-jump{display:flex;align-items:center;gap:.5rem;padding:.25rem 1.25rem 1rem;font-size:.85rem;justify-content:center}.week-jump label{color:var(--text-muted);font-weight:600}.week-jump select{padding:.4rem .7rem;border:1px solid var(--glass-border);border-radius:10px;font-size:.85rem;background:#ffffffe6;cursor:pointer;font-weight:600;color:var(--text)}.week-jump select:focus{outline:none;box-shadow:var(--ring)}.week-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.15rem;padding:1rem 1.25rem}.day-card{position:relative;background:var(--card-bg);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-radius:var(--radius-lg);border:1px solid var(--glass-border);padding:1.1rem 1.1rem 1rem;cursor:pointer;transition:transform .25s cubic-bezier(.2,.9,.3,1),box-shadow .25s,opacity .25s;box-shadow:var(--shadow);overflow:hidden;isolation:isolate}.day-card:before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;background:linear-gradient(135deg,#ffffffe6,#ffffff26);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:1}.day-card:after{content:"";position:absolute;top:0;left:0;right:0;height:5px;z-index:2;background:linear-gradient(90deg,#6366f1,#ec4899);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.day-card:hover{transform:translateY(-6px) scale(1.01);box-shadow:0 30px 60px #0f172a2e}.day-card:focus-visible{outline:none;box-shadow:var(--shadow),var(--ring)}.day-card.beef:after{background:var(--beef-grad)}.day-card.pork:after{background:var(--pork-grad)}.day-card.chicken:after{background:var(--chicken-grad)}.day-card.groundTurkey:after{background:var(--turkey-grad)}.day-card.seafood:after{background:var(--seafood-grad)}.day-card.beef{box-shadow:0 10px 30px #ef44441f,var(--shadow)}.day-card.pork{box-shadow:0 10px 30px #f973161f,var(--shadow)}.day-card.chicken{box-shadow:0 10px 30px #10b9811f,var(--shadow)}.day-card.groundTurkey{box-shadow:0 10px 30px #a855f71f,var(--shadow)}.day-card.seafood{box-shadow:0 10px 30px #06b6d429,var(--shadow)}.day-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.6rem;padding-top:.15rem;position:relative;z-index:2}.day-name{display:block;font-weight:800;font-size:1rem;letter-spacing:-.01em}.day-date{font-size:.78rem;color:var(--text-muted);margin-top:.1rem;font-weight:500}.day-number{font-size:.7rem;font-weight:800;color:var(--text-muted);background:#6366f11a;padding:.25rem .55rem;border-radius:999px;letter-spacing:.03em}.protein-tag{display:inline-flex;align-items:center;gap:.35rem;font-size:.75rem;font-weight:700;padding:.35rem .75rem;border-radius:999px;color:#fff;margin-bottom:.8rem;letter-spacing:.02em;position:relative;z-index:2;box-shadow:0 4px 12px #0f172a1f}.day-card.beef .protein-tag{background:var(--beef-grad)}.day-card.pork .protein-tag{background:var(--pork-grad)}.day-card.chicken .protein-tag{background:var(--chicken-grad)}.day-card.groundTurkey .protein-tag{background:var(--turkey-grad)}.day-card.seafood .protein-tag{background:var(--seafood-grad)}.meal-list{list-style:none;display:flex;flex-direction:column;gap:.55rem;position:relative;z-index:2}.meal-list li{display:flex;flex-direction:column;padding:.5rem .65rem;background:#ffffff8c;border-radius:12px;border:1px solid rgba(255,255,255,.7);transition:background .2s,transform .2s}.day-card:hover .meal-list li{background:#ffffffd9}.meal-time{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:700}.meal-name{font-size:.88rem;line-height:1.35;font-weight:500;color:var(--text);margin-top:.12rem}.modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem;animation:modalIn .25s ease}@keyframes modalIn{0%{opacity:0}to{opacity:1}}.modal-overlay{position:absolute;inset:0;background:radial-gradient(ellipse at center,#0f172a8c,#0f172abf);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.modal-content{position:relative;background:linear-gradient(180deg,#fffffff2,#ffffffe0);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-radius:var(--radius-lg);border:1px solid var(--glass-border);max-width:520px;width:100%;max-height:92dvh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:popIn .3s cubic-bezier(.2,.9,.3,1.1)}@keyframes popIn{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.25rem 1.5rem 1rem;border-bottom:1px solid var(--border);position:sticky;top:0;background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:3;border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.modal-header h2{font-size:1.25rem;font-weight:800;letter-spacing:-.01em;background:linear-gradient(90deg,#6366f1,#ec4899);-webkit-background-clip:text;background-clip:text;color:transparent}.modal-date{font-size:.88rem;color:var(--text-muted);margin-top:.25rem;font-weight:500}.modal-close{background:#0f172a0f;border:none;font-size:1.1rem;cursor:pointer;color:var(--text);width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .2s;flex-shrink:0}.modal-close:hover{background:#ef444426;color:#dc2626;transform:rotate(90deg)}.modal-body{padding:1.5rem}.modal-meals{list-style:none;display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.75rem}.modal-meals li{display:flex;flex-direction:column;gap:.2rem;padding:.9rem 1rem;background:linear-gradient(135deg,#6366f10f,#ec48990f);border:1px solid var(--glass-border);border-radius:14px;font-size:.95rem;transition:transform .2s}.modal-meals li:hover{transform:translate(4px)}.modal-meals .meal-time{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--primary-600)}.modal-meals .meal-name,.modal-meals li>:not(.meal-time){font-weight:600;color:var(--text)}.qr-section{text-align:center;border-top:1px solid var(--border);padding-top:1.5rem}.qr-section h3{margin-bottom:.35rem;font-size:1.05rem;font-weight:800;letter-spacing:-.01em}.qr-desc{font-size:.82rem;color:var(--text-muted);margin-bottom:1rem}.qr-section canvas{display:block;margin:0 auto 1rem;border-radius:16px;padding:12px;background:#fff;box-shadow:0 15px 40px #0f172a26;border:1px solid var(--glass-border)}.qr-actions{display:flex;gap:.55rem;flex-wrap:wrap;justify-content:center}.btn{padding:.6rem 1.15rem;border-radius:12px;border:none;font-size:.85rem;font-weight:700;cursor:pointer;transition:transform .15s ease,box-shadow .2s,filter .2s;letter-spacing:-.005em}.btn:hover{transform:translateY(-2px);filter:brightness(1.05)}.btn:active{transform:translateY(0) scale(.97)}.btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;box-shadow:0 8px 20px #6366f159}.btn-secondary{background:#fffc;color:var(--text);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background:#fff}.btn-share{background:linear-gradient(135deg,#10b981,#059669);color:#fff;box-shadow:0 8px 20px #10b98159}.settings-modal{max-width:420px}.setting-group{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.setting-group label{font-weight:700;font-size:.92rem}.setting-group input[type=date]{padding:.7rem .85rem;border:1.5px solid var(--glass-border);border-radius:12px;font-size:.95rem;width:100%;background:#ffffffe6;color:var(--text);transition:border-color .2s,box-shadow .2s}.setting-group input[type=date]:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring)}.setting-hint{font-size:.82rem;color:var(--text-muted);line-height:1.5}#toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%) translateY(120px);background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;padding:.75rem 1.4rem;border-radius:999px;font-size:.88rem;font-weight:600;transition:transform .35s cubic-bezier(.2,.9,.3,1.2);z-index:2000;pointer-events:none;white-space:nowrap;box-shadow:0 15px 40px #0f172a59,inset 0 0 0 1px #ffffff1f}#toast.show{transform:translate(-50%) translateY(0)}@media(max-width:620px){.app-header h1{font-size:1.05rem}.brand-tag{display:none}.week-view{grid-template-columns:1fr;padding:.75rem}.filter-bar{gap:.35rem;padding:.75rem}.filter-btn{font-size:.82rem;padding:.55rem 1rem}.week-nav{margin:.5rem .75rem;padding:.85rem 1rem}.banner-grid{grid-template-columns:1fr 1fr;padding:.75rem;gap:.75rem}.banner{padding:1rem}.banner-title{font-size:.98rem}.banner-desc{font-size:.8rem}.calc-total{font-size:2.35rem;padding:.9rem .75rem}.calc-entry input{font-size:1rem}}@media(max-width:480px){.modal{padding:0;align-items:flex-end}.modal-content{max-width:100%;max-height:94dvh;border-radius:20px 20px 0 0;border-bottom:none;padding-bottom:env(safe-area-inset-bottom,0);animation:sheetUp .3s cubic-bezier(.2,.9,.3,1.05)}@keyframes sheetUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:1.1rem 1.1rem .85rem;border-top-left-radius:20px;border-top-right-radius:20px}.modal-header:before{content:"";position:absolute;top:.4rem;left:50%;width:40px;height:4px;border-radius:999px;background:#0f172a2e;transform:translate(-50%);pointer-events:none}.modal-header h2{font-size:1.1rem}.modal-body{padding:1rem 1.1rem 1.25rem}.banner-grid{grid-template-columns:1fr;padding:.75rem;gap:.65rem}.banner{padding:1rem 1.1rem}.banner-icon{width:40px;height:40px;margin-bottom:.45rem}.banner-title{font-size:1rem}.banner-desc{font-size:.82rem;line-height:1.4}.app-header{padding:.75rem 1rem;padding-top:calc(.75rem + env(safe-area-inset-top,0))}.app-icon{width:38px;height:38px;font-size:1.2rem}.app-header h1{font-size:1rem}.week-nav{flex-wrap:wrap;gap:.5rem;padding:.85rem .9rem}.week-info{flex-basis:100%;order:-1;text-align:center}.nav-btn,.today-btn{flex:1 1 0;justify-content:center}.week-jump{margin:0 .75rem;padding:.5rem .75rem}.btn,.nav-btn,.today-btn,.icon-btn,.filter-btn,.modal-close,.grocery-search-clear,.grocery-summary-remove,.calc-remove,.recipe-toggle,.price-reset-btn,.event-btn,.pr-cut{min-height:44px}.modal-close{width:40px;height:40px}.calc-remove,.grocery-summary-remove{min-height:32px;min-width:32px}input,select,textarea{font-size:16px}.grocery-search input{padding:.9rem 2.5rem .9rem 2.4rem;font-size:16px}.calc-entry input{font-size:1.05rem;padding:.9rem 1rem .9rem 1.9rem}.calc-entry{gap:.4rem}.calc-add{padding:.9rem 1rem}.grocery-pick{grid-template-columns:24px 1fr auto;grid-template-rows:auto auto;grid-template-areas:"check time   action" "check name   name";gap:.25rem .55rem;padding:.7rem .8rem;align-items:center}.grocery-check{grid-area:check;width:24px;height:24px}.grocery-pick-time{grid-area:time;font-size:.68rem}.grocery-pick-name{grid-area:name;font-size:.92rem;line-height:1.3}.grocery-pick-action{grid-area:action;font-size:.7rem}.grocery-summary-head{flex-direction:column;align-items:flex-start;gap:.3rem}.grocery-summary-meta{width:100%;justify-content:space-between}.recipe-list li,.recipe-ingredients li,.pr-recipe-steps li,.pr-recipe-ingredients li{font-size:.88rem}.qr-section canvas{max-width:160px;height:auto}.qr-actions{gap:.4rem}.qr-actions .btn{flex:1 1 auto;font-size:.82rem;padding:.8rem .75rem}.serves-stepper{padding:.18rem .3rem}.serves-btn{width:30px;height:30px;font-size:1.05rem}.servings-picker{grid-template-columns:repeat(6,1fr);gap:.3rem}.servings-btn{padding:.7rem .2rem;font-size:1rem}.app-footer{flex-direction:column;gap:.35rem;text-align:center;margin:1.25rem .75rem calc(1rem + env(safe-area-inset-bottom,0))}.day-card{padding:1rem 1.1rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.banner-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;padding:1rem 1.25rem .25rem}.banner{position:relative;text-align:left;padding:1.25rem 1.25rem 1.4rem;border:none;border-radius:var(--radius);color:#fff;cursor:pointer;overflow:hidden;box-shadow:var(--shadow);transition:transform .25s ease,box-shadow .25s ease,filter .25s ease}.banner:hover{transform:translateY(-3px);filter:brightness(1.05);box-shadow:var(--shadow-lg)}.banner:active{transform:translateY(-1px) scale(.99)}.banner:focus-visible{outline:none;box-shadow:var(--ring),var(--shadow)}.banner:after{content:"";position:absolute;inset:-40% -20% auto auto;width:70%;height:180%;background:radial-gradient(closest-side,rgba(255,255,255,.28),transparent 70%);pointer-events:none}.banner-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:14px;background:#ffffff38;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:1.35rem;margin-bottom:.7rem;box-shadow:inset 0 0 0 1px #ffffff59}.banner-title{font-size:1.1rem;font-weight:700;letter-spacing:-.01em;margin-bottom:.35rem}.banner-desc{font-size:.88rem;font-weight:500;line-height:1.45;color:#ffffffeb}.banner-electric{background:linear-gradient(135deg,#6366f1,#8b5cf6 55%,#ec4899)}.banner-sky{background:linear-gradient(135deg,#0ea5e9,#38bdf8 55%,#22d3ee)}.banner-mint{background:linear-gradient(135deg,#10b981,#34d399 55%,#a7f3d0);color:#0f172a}.banner-mint .banner-desc{color:#0f172ac7}.banner-mint .banner-icon{background:#0f172a1f;box-shadow:inset 0 0 0 1px #0f172a2e}.banner-cobalt{background:linear-gradient(135deg,#1e40af,#2563eb 55%,#3b82f6)}.banner-gold{background:linear-gradient(135deg,#f59e0b,#f97316,#10b981)}.banner-badge{position:absolute;top:.6rem;right:.6rem;min-width:28px;height:28px;padding:0 .55rem;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#fff;color:#0369a1;font-size:.82rem;font-weight:900;font-variant-numeric:tabular-nums;box-shadow:0 6px 14px #0f172a38,inset 0 0 0 2px #0ea5e973;z-index:3;animation:badgePulse .55s ease-out}@keyframes badgePulse{0%{transform:scale(.6);opacity:0}45%{transform:scale(1.18);opacity:1;box-shadow:0 0 0 6px #0ea5e940,0 6px 14px #0f172a38,inset 0 0 0 2px #0ea5e973}to{transform:scale(1);opacity:1;box-shadow:0 6px 14px #0f172a38,inset 0 0 0 2px #0ea5e973}}.calc-modal .modal-body{padding-top:1.25rem}.calc-total{font-size:3rem;font-weight:900;letter-spacing:-.02em;text-align:center;padding:1.1rem 1rem;margin-bottom:1rem;border-radius:18px;background:linear-gradient(135deg,#f59e0b,#10b981);color:#fff;box-shadow:0 14px 30px #10b9814d;font-variant-numeric:tabular-nums}.calc-entry{position:relative;display:flex;align-items:stretch;gap:.5rem;margin-bottom:1rem}.calc-prefix{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);font-size:1.15rem;font-weight:800;color:var(--text-muted);pointer-events:none}.calc-entry input{flex:1;padding:.8rem 1rem .8rem 1.9rem;border-radius:12px;border:1.5px solid var(--glass-border);background:#fff;font:inherit;font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums}.calc-entry input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #6366f133}.calc-add{padding:.8rem 1.25rem;font-size:.95rem}.calc-list{list-style:none;margin:0 0 .9rem;padding:0;display:flex;flex-direction:column;gap:.35rem;max-height:260px;overflow-y:auto}.calc-list li{display:flex;align-items:center;justify-content:space-between;padding:.55rem .85rem;border-radius:10px;background:#ffffffbf;border:1px solid var(--glass-border);font-weight:700;font-size:.95rem;font-variant-numeric:tabular-nums;color:var(--text)}.calc-remove{border:none;background:#0f172a0f;width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:.78rem;color:var(--text-muted);transition:background .2s,color .2s,transform .2s}.calc-remove:hover{background:#ef444426;color:#dc2626;transform:rotate(90deg)}.calc-actions{display:flex;justify-content:flex-end}.grocery-modal .modal-body{padding-top:1.25rem}.grocery-search{position:relative;display:flex;align-items:center;margin-bottom:1rem}.grocery-search-icon{position:absolute;left:.85rem;font-size:.95rem;opacity:.6;pointer-events:none}.grocery-search input{flex:1;padding:.75rem 2.4rem .75rem 2.35rem;border-radius:12px;border:1.5px solid var(--glass-border);background:#fff;font:inherit;font-size:.95rem;font-weight:500;color:var(--text)}.grocery-search input:focus{outline:none;border-color:#0ea5e9;box-shadow:0 0 0 3px #0ea5e92e}.grocery-search-clear{position:absolute;right:.5rem;width:28px;height:28px;border-radius:50%;border:none;background:#0f172a0f;color:var(--text-muted);font-size:.78rem;cursor:pointer;transition:background .2s,color .2s}.grocery-search-clear:hover{background:#ef444426;color:#dc2626}.grocery-search-results{margin-bottom:1rem}.grocery-search-results .grocery-pick-list{gap:.35rem}.search-result{border-radius:10px;background:#ffffffbf;border:1.5px solid var(--glass-border);overflow:hidden;transition:background .2s,border-color .2s,box-shadow .2s}.search-result.open{background:#fff;border-color:#0ea5e9;box-shadow:0 6px 16px #0ea5e92e}.search-result.picked{background:linear-gradient(135deg,#0ea5e91a,#22d3ee24);border-color:#0ea5e9}.search-pick{background:none!important;border:none!important;box-shadow:none!important;width:100%;grid-template-columns:24px 110px 1fr 24px!important}.search-pick:hover{transform:none!important;background:#0ea5e90a!important}.search-chevron{font-size:.95rem;color:var(--primary-600);font-weight:800;text-align:center;grid-area:action}.search-result-body{padding:.25rem 1rem 1rem;border-top:1px solid rgba(14,165,233,.18)}.search-result-body .pr-recipe-ingredients{margin-top:.2rem;margin-bottom:.2rem}.search-result-body .add-to-grocery-btn{width:100%;margin-top:.6rem}.grocery-pick-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.grocery-pick{display:grid;grid-template-columns:28px 110px 1fr auto;align-items:center;gap:.6rem;width:100%;padding:.55rem .75rem;border-radius:10px;background:#ffffffbf;border:1.5px solid var(--glass-border);font:inherit;text-align:left;cursor:pointer;transition:transform .15s,background .2s,border-color .2s,box-shadow .2s}.grocery-pick:hover{transform:translate(2px);background:#fff}.grocery-pick:focus-visible{outline:none;box-shadow:var(--ring)}.grocery-pick.picked{background:linear-gradient(135deg,#0ea5e91f,#22d3ee2e);border-color:#0ea5e9;box-shadow:0 6px 16px #0ea5e92e}.grocery-check{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;border:2px solid var(--border);background:#fff;font-size:.85rem;font-weight:900;color:#fff;transition:background .2s,border-color .2s}.grocery-pick.picked .grocery-check{background:linear-gradient(135deg,#0ea5e9,#22d3ee);border-color:transparent}.grocery-pick-time{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.grocery-pick.picked .grocery-pick-time{color:#0369a1}.grocery-pick-name{font-size:.92rem;font-weight:600;color:var(--text)}.grocery-pick-action{font-size:.72rem;font-weight:800;letter-spacing:.02em;padding:.25rem .6rem;border-radius:999px;background:#0ea5e91f;color:#0369a1;white-space:nowrap;transition:background .2s,color .2s}.grocery-pick.picked .grocery-pick-action{background:linear-gradient(135deg,#0ea5e9,#22d3ee);color:#fff}.grocery-summary{margin-top:1.25rem;padding:.9rem 1rem 1rem;border-radius:14px;background:linear-gradient(135deg,#0ea5e914,#22d3ee1f);border:1px solid var(--glass-border)}.grocery-summary-title{font-size:.95rem;font-weight:800;color:var(--text);margin-bottom:.5rem;display:flex;align-items:center;gap:.55rem}.grocery-count{font-size:.72rem;font-weight:800;padding:.15rem .55rem;border-radius:999px;background:linear-gradient(135deg,#0ea5e9,#22d3ee);color:#fff;letter-spacing:.02em;animation:badgePulse .45s ease-out}.grocery-summary-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.grocery-summary-list>li{padding:.75rem .9rem;border-radius:12px;background:#ffffffd9;border:1px solid var(--glass-border);box-shadow:var(--shadow-sm)}.grocery-summary-head{display:flex;justify-content:space-between;align-items:baseline;gap:.6rem;margin-bottom:.5rem;flex-wrap:wrap}.grocery-summary-meal{font-size:.95rem;font-weight:700;color:var(--text);letter-spacing:-.01em}.grocery-summary-meta{display:inline-flex;align-items:center;gap:.4rem}.grocery-summary-date{font-size:.75rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.grocery-summary-remove{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:50%;background:#0f172a0f;color:var(--text-muted);font-size:.72rem;cursor:pointer;transition:background .2s,color .2s,transform .2s}.grocery-summary-remove:hover{background:#ef444426;color:#dc2626;transform:rotate(90deg)}.grocery-ingredients{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.grocery-ingredients li{position:relative;padding-left:1.1rem;font-size:.87rem;line-height:1.4;color:var(--text);font-weight:500}.grocery-ingredients li:before{content:"";position:absolute;left:.1rem;top:.55rem;width:6px;height:6px;border-radius:50%;background:linear-gradient(135deg,#0ea5e9,#22d3ee)}.events-modal .modal-body{padding-top:1.25rem}.events-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.6rem}.event-btn{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;padding:1rem 1.1rem 1.15rem;border-radius:16px;border:1.5px solid var(--glass-border);background:linear-gradient(135deg,#10b9811a,#6366f11a);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease,border-color .2s ease,background .2s ease;box-shadow:var(--shadow-sm)}.event-btn:hover{transform:translateY(-2px);background:linear-gradient(135deg,#10b9812e,#6366f133);border-color:#10b981;box-shadow:0 10px 22px #10b98138}.event-btn:focus-visible{outline:none;box-shadow:var(--ring),var(--shadow-sm)}.event-btn-icon{font-size:1.6rem;line-height:1;margin-bottom:.15rem}.event-btn-title{font-size:1rem;font-weight:800;letter-spacing:-.01em}.event-btn-blurb{font-size:.78rem;color:var(--text-muted);line-height:1.35}.event-btn-count{font-size:.68rem;font-weight:800;color:var(--primary-600);text-transform:uppercase;letter-spacing:.05em;margin-top:.35rem}.events-back{background:none;border:none;padding:0 0 .5rem;font:inherit;font-size:.85rem;font-weight:700;color:var(--primary-600);cursor:pointer}.events-back:hover{color:var(--accent)}.event-recipes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.event-recipe{border-radius:12px;background:#ffffffbf;border:1.5px solid var(--glass-border);overflow:hidden;transition:background .2s,border-color .2s,box-shadow .2s}.event-recipe.open{background:#fff;border-color:#10b981;box-shadow:0 8px 20px #10b9812e}.event-recipe.picked{background:linear-gradient(135deg,#0ea5e91a,#22d3ee24);border-color:#0ea5e9}.event-recipe-head{display:grid;grid-template-columns:32px 1fr 22px;align-items:center;width:100%;gap:.55rem;padding:.75rem .9rem;border:none;background:none;font:inherit;text-align:left;cursor:pointer;color:var(--text)}.event-recipe-head:hover{background:#10b9810f}.event-recipe-badge{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#10b9812e,#6366f12e);font-size:1rem}.event-recipe-name{font-size:.92rem;font-weight:600}.event-recipe-chevron{font-size:.85rem;color:var(--primary-600);font-weight:800;text-align:center}.event-recipe-body{padding:.25rem 1rem 1rem;border-top:1px solid rgba(16,185,129,.18)}.event-recipe-body .add-to-grocery-btn{width:100%;margin-top:.75rem}.pr-cuts{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}.pr-cut{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .8rem;border-radius:999px;border:1.5px solid var(--glass-border);background:#ffffffbf;color:var(--text);font:inherit;font-size:.8rem;font-weight:600;cursor:pointer;transition:transform .15s,background .2s,border-color .2s,color .2s,box-shadow .2s}.pr-cut:hover:not(:disabled){transform:translateY(-1px);background:#fff;border-color:var(--primary)}.pr-cut:focus-visible{outline:none;box-shadow:var(--ring)}.pr-cut.active{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border-color:transparent;box-shadow:0 6px 14px #6366f152}.pr-cut:disabled{opacity:.35;cursor:not-allowed}.pr-cut-count{font-size:.68rem;font-weight:800;padding:.08rem .4rem;border-radius:999px;background:#0f172a14;color:var(--text-muted)}.pr-cut.active .pr-cut-count{background:#ffffff40;color:#fff}.add-to-grocery-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;margin-top:.8rem;padding:.55rem 1rem;border-radius:10px;border:1.5px solid var(--glass-border);background:#fff;font:inherit;font-size:.85rem;font-weight:700;color:var(--text);cursor:pointer;transition:transform .15s,background .2s,border-color .2s,color .2s,box-shadow .2s}.add-to-grocery-btn:hover{transform:translateY(-1px);background:linear-gradient(135deg,#0ea5e91a,#22d3ee24);border-color:#0ea5e9}.add-to-grocery-btn:focus-visible{outline:none;box-shadow:var(--ring)}.add-to-grocery-btn.picked{background:linear-gradient(135deg,#0ea5e9,#22d3ee);border-color:transparent;color:#fff;box-shadow:0 8px 18px #0ea5e959}.add-to-grocery-btn.picked:hover{filter:brightness(1.05)}.add-to-grocery-btn.compact{margin-top:0;padding:.4rem .8rem;font-size:.78rem}.meal-row-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:.55rem}.meal-row-actions .recipe-toggle{padding:.1rem 0}.pr-recipe-actions,.pr-recipe-body{padding:0 1rem 1rem}.pr-recipe-subhead{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--primary-600);margin:.55rem 0 .35rem}.pr-recipe-ingredients{list-style:disc;padding-left:1.25rem;margin:0 0 .4rem;display:flex;flex-direction:column;gap:.2rem}.pr-recipe-ingredients li{font-size:.86rem;font-weight:500;color:var(--text)}.recipe-subhead-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;margin:.75rem 0 .45rem}.recipe-subhead-row .pr-recipe-subhead,.recipe-subhead-row .recipe-subhead{margin:0}.recipe-subhead{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--primary-600);margin:.75rem 0 .45rem}.recipe-ingredients{list-style:disc;padding-left:1.25rem;margin:0 0 .35rem;display:flex;flex-direction:column;gap:.2rem}.recipe-ingredients li{font-size:.86rem;font-weight:500;color:var(--text)}.serves-stepper{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .35rem;border-radius:999px;background:#6366f114;border:1px solid var(--glass-border)}.serves-label{font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-right:.1rem;padding-left:.4rem}.serves-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:50%;background:linear-gradient(135deg,#6366f1,#ec4899);color:#fff;font:inherit;font-weight:900;font-size:1rem;line-height:1;cursor:pointer;box-shadow:0 4px 10px #6366f14d;transition:transform .15s,filter .2s,opacity .2s}.serves-btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.05)}.serves-btn:focus-visible{outline:none;box-shadow:var(--ring),0 4px 10px #6366f14d}.serves-btn:active:not(:disabled){transform:translateY(0) scale(.96)}.serves-btn:disabled{opacity:.35;cursor:not-allowed}.serves-value{min-width:1.2rem;text-align:center;font-weight:800;font-size:.95rem;font-variant-numeric:tabular-nums;color:var(--text)}.grocery-summary-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.6rem}.grocery-summary-header .grocery-summary-title{margin-bottom:0}.setting-row{display:flex;align-items:center;gap:.5rem;margin-top:.35rem}.setting-row input{flex:1}.setting-save-btn{padding:.55rem .95rem;font-size:.85rem}.servings-picker{display:grid;grid-template-columns:repeat(6,1fr);gap:.4rem;margin-top:.35rem}.servings-btn{padding:.65rem .25rem;border-radius:10px;border:1.5px solid var(--glass-border);background:#ffffffbf;font:inherit;font-size:1.05rem;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;cursor:pointer;transition:transform .15s,background .2s,border-color .2s,box-shadow .2s,color .2s}.servings-btn:hover{transform:translateY(-1px);background:#fff}.servings-btn:focus-visible{outline:none;box-shadow:var(--ring)}.servings-btn.active{background:linear-gradient(135deg,#6366f1,#ec4899);color:#fff;border-color:transparent;box-shadow:0 10px 20px #6366f14d}.modal-meals.with-recipes li{padding:.85rem 1rem}.modal-meals.with-recipes li:hover{transform:none}.meal-row-head{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.5rem}.recipe-steps{border-top:1px dashed rgba(99,102,241,.25);padding-top:.6rem;margin-top:.1rem}.recipe-toggle{background:none;border:none;padding:.25rem 0;font:inherit;font-size:.82rem;font-weight:700;color:var(--primary-600);cursor:pointer;letter-spacing:.01em;transition:color .2s}.recipe-toggle:hover{color:var(--accent)}.recipe-list{list-style:none;margin:.65rem 0 .25rem;padding:0;display:flex;flex-direction:column;gap:.55rem}.recipe-list li{display:grid;grid-template-columns:28px 1fr;gap:.6rem;font-size:.9rem;line-height:1.5;color:var(--text);font-weight:500;padding:0;background:none;border:none}.recipe-num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:.78rem;font-weight:800;color:#fff;background:linear-gradient(135deg,#6366f1,#ec4899);box-shadow:0 4px 10px #6366f159;flex-shrink:0}.protein-recipes-modal .modal-body{padding-top:1.25rem}.pr-section{margin-bottom:1.25rem}.pr-section:last-of-type{margin-bottom:0}.pr-section-title{font-size:.95rem;font-weight:800;letter-spacing:-.01em;color:var(--text);margin-bottom:.5rem;display:flex;align-items:center;gap:.55rem}.pr-count{font-size:.7rem;font-weight:800;padding:.1rem .5rem;border-radius:999px;background:#6366f11f;color:var(--primary-600);letter-spacing:.02em}.pr-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.pr-recipe{border-radius:12px;background:#ffffffb3;border:1px solid var(--glass-border);overflow:hidden}.pr-recipe.open{background:#ffffffeb;border-color:var(--primary);box-shadow:0 8px 20px #6366f12e}.pr-recipe-head{display:flex;width:100%;align-items:center;justify-content:space-between;gap:.5rem;padding:.7rem .9rem;background:none;border:none;font:inherit;text-align:left;cursor:pointer;color:var(--text);transition:background .2s}.pr-recipe-head:hover{background:#6366f10f}.pr-recipe-head:focus-visible{outline:none;box-shadow:var(--ring) inset}.pr-recipe-name-col{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;flex:1;min-width:0}.pr-recipe-name{font-size:.93rem;font-weight:600}.cut-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.1rem .5rem;border-radius:999px;font-size:.68rem;font-weight:700;letter-spacing:.02em;color:var(--primary-600);background:#6366f11a;border:1px solid rgba(99,102,241,.22);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.cut-ribeye,.cut-nyStrip,.cut-tbone,.cut-filet,.cut-sirloin,.cut-topRound,.cut-bottomRound,.cut-londonBroil,.cut-ground,.cut-roast,.cut-shortRib,.cut-philly,.cut-cornedBeef{color:#9a1e1e;background:#ef44441a;border-color:#ef444438}.cut-bacon,.cut-ham,.cut-sausage,.cut-chops,.cut-tenderloin,.cut-belly,.cut-ribs,.cut-pulled,.cut-schnitzel{color:#9a4b1e;background:#f973161a;border-color:#f9731638}.cut-breast,.cut-thigh,.cut-drumstick,.cut-legQuarter,.cut-wings,.cut-whole,.cut-chickenSausage{color:#065f46;background:#10b9811a;border-color:#10b98138}.cut-turkeySausage,.cut-ground.protein-groundTurkey{color:#6b21a8;background:#a855f71a;border-color:#a855f738}.cut-salmon,.cut-shrimp,.cut-tuna,.cut-cod,.cut-crab,.cut-lobster,.cut-lox,.cut-mixed,.cut-sardines,.cut-otherFish{color:#0e7490;background:#06b6d41a;border-color:#06b6d438}.meal-row-head{flex-wrap:wrap}.pr-recipe-chevron{font-size:.85rem;color:var(--primary-600);font-weight:800;width:22px;text-align:center}.pr-recipe-steps{list-style:none;margin:0;padding:.25rem 1rem 1rem;display:flex;flex-direction:column;gap:.5rem}.pr-recipe-steps li{display:grid;grid-template-columns:28px 1fr;gap:.55rem;font-size:.88rem;line-height:1.45;color:var(--text);font-weight:500}.app-footer{margin:2rem 1.25rem 1.5rem;padding:1rem 1.25rem;border-radius:var(--radius);background:#fff9;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--glass-border);display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-size:.82rem;color:var(--text-muted);flex-wrap:wrap;box-shadow:var(--shadow-sm)}.app-footer strong{background:linear-gradient(90deg,#4f46e5,#ec4899 60%,#f59e0b);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800}.app-footer-meta{font-weight:500}@media print{body:before,body:after{display:none}body{background:#fff}.app-header,.filter-bar,.week-nav,.week-jump,.banner-grid,.app-footer{display:none}.week-view{display:block;padding:0}.day-card{page-break-inside:avoid;margin-bottom:1rem;box-shadow:none;border:1px solid #ccc}.day-card:after,.day-card:before{display:none}}
