:root{--bg: #f6f7f4;--surface: #ffffff;--surface-2: #f0f2ed;--text: #1c2418;--muted: #6b7464;--border: #e2e6dc;--primary: #2f8f4e;--primary-ink: #ffffff;--primary-soft: #e6f4ea;--danger: #c0492f;--danger-soft: #fbe9e4;--ok: #2f8f4e;--ok-soft: #e6f4ea;--protein: #e07b1a;--protein-soft: #fbeed9;--shadow: 0 1px 2px rgba(20, 30, 15, .06), 0 6px 20px rgba(20, 30, 15, .05);--radius: 14px;--topbar-h: 65px;--protein-ink: #8a4500;--ok-ink: #1f6e3a}:root[data-theme=dark]{--bg: #14170f;--surface: #1d2117;--surface-2: #252a1d;--text: #e9ede0;--muted: #9aa389;--border: #2f3623;--primary: #4caf6c;--primary-ink: #0c1208;--primary-soft: #1f3326;--danger: #e07a5f;--danger-soft: #33211c;--ok: #4caf6c;--ok-soft: #1f3326;--protein: #f0a44a;--protein-soft: #33270f;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .25);--protein-ink: #f0a44a;--ok-ink: #4caf6c}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.01em}p{margin:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:14px}.logo{font-size:30px}.topbar h1{font-size:19px}.tagline{color:var(--muted);font-size:13px}.layout{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - var(--topbar-h))}.layout.nav-collapsed{grid-template-columns:0 1fr}.layout.no-sidebar{grid-template-columns:1fr}.sidebar{border-right:1px solid var(--border);padding:18px;background:var(--surface);min-width:0;overflow-x:hidden;overflow-y:auto;transition:transform .25s ease,opacity .2s ease}.layout.nav-collapsed .sidebar{transform:translate(-100%);opacity:0}.content{padding:24px;max-width:1400px;min-width:0}.topbar-left{display:flex;align-items:center;gap:12px}.nav-toggle{font-size:18px;line-height:1}.nav-backdrop{display:none}.sidebar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.sidebar-head h2{font-size:15px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.empty-hint{color:var(--muted);font-size:14px}.profile-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.profile-list li{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:10px;cursor:pointer;border:1px solid transparent}.profile-list li:hover{background:var(--surface-2)}.profile-list li.active{background:var(--primary-soft);border-color:var(--primary)}.pl-main{display:flex;flex-direction:column;gap:2px}.pl-name{font-weight:600}.pl-diet{font-size:12px;color:var(--muted)}.pl-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s}.profile-list li:hover .pl-actions,.profile-list li.active .pl-actions{opacity:1}.pl-actions button{background:none;border:none;cursor:pointer;font-size:14px;padding:8px;min-width:32px;min-height:32px;border-radius:6px;color:var(--muted)}.pl-actions button:hover{background:var(--surface);color:var(--text)}.content-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.content-head h2{font-size:24px}.content-head .sub{color:var(--muted);font-size:14px;margin-top:4px;text-transform:capitalize}.head-actions{display:flex;gap:10px}.week-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px;padding:10px 14px;background:var(--glass);border:1px solid var(--border);border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.week-of{font-size:15px}.week-of strong{color:var(--primary)}.week-date{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.week-date input{width:auto;padding:6px 8px;font-size:13px}.week-switch{width:auto;max-width:240px;padding:6px 10px;font-size:13px;margin-left:auto}.week-bar .btn.small{white-space:nowrap}.btn{font:inherit;font-weight:600;cursor:pointer;border-radius:10px;padding:10px 16px;border:1px solid var(--border);background:var(--surface);color:var(--text);transition:transform .05s,background .15s}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}.btn.primary:hover{filter:brightness(1.05)}.btn.primary:disabled{opacity:.6;cursor:progress}.btn.ghost{background:transparent}.btn.small{padding:6px 12px;font-size:13px}.btn.icon{padding:8px 12px;font-size:16px}.field{margin-bottom:16px}.field label{display:block;font-weight:600;font-size:14px;margin-bottom:6px}.field .hint{color:var(--muted);font-size:12px;margin-bottom:6px}input:not([type=checkbox]):not([type=radio]),textarea,select{width:100%;font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px}input[type=checkbox],input[type=radio]{width:auto;flex:none;accent-color:var(--primary);cursor:pointer}input:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:1px;border-color:var(--primary)}textarea{resize:vertical}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.profile-form{max-width:620px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.segmented{display:flex;gap:8px}.segmented button{flex:1;padding:10px;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;font:inherit;font-weight:600;color:var(--muted)}.segmented button.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;font:inherit;font-size:14px;color:var(--text)}.chip.selected{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.tag-input{display:flex;flex-wrap:wrap;gap:6px;padding:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px}.tag-input input{flex:1;min-width:120px;border:none;background:transparent;padding:4px}.tag-input input:focus{outline:none}.tag{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 10px;border-radius:999px;font-size:13px;font-weight:600;background:var(--surface);border:1px solid var(--border)}.tag button{border:none;background:none;cursor:pointer;font-size:15px;line-height:1;color:var(--muted)}.tag-danger .tag{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.tag-ok .tag{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}.notes{margin-bottom:18px;border-left:4px solid var(--primary)}.notes strong{display:block;margin-bottom:4px}.notes p{color:var(--muted)}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));gap:12px;overflow-x:auto;padding-bottom:6px}.day-col{display:flex;flex-direction:column;gap:10px}.day-head{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow)}.day-head h3{font-size:16px}.day-protein{font-size:12px;font-weight:600;color:var(--muted);margin-top:4px;display:flex;align-items:center;gap:4px}.day-protein.hit{color:var(--ok-ink)}.check{font-weight:800}.protein-bar{height:6px;border-radius:999px;background:var(--surface-2);margin-top:6px;overflow:hidden}.protein-fill{height:100%;background:var(--protein);border-radius:999px;transition:width .4s}.protein-fill.hit{background:var(--ok)}.day-cal{font-size:11px;color:var(--muted);margin-top:5px}.day-meals{display:flex;flex-direction:column;gap:8px}.meal-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 12px;box-shadow:var(--shadow)}.meal-head{width:100%;display:flex;align-items:center;justify-content:space-between;background:none;border:none;cursor:pointer;padding:0;font:inherit;color:var(--text)}.meal-slot{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.protein-badge{font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;background:var(--protein-soft);color:var(--protein-ink);white-space:nowrap}.meal-name{font-weight:600;margin-top:6px;line-height:1.3}.meal-meta{font-size:12px;color:var(--muted);margin-top:4px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}.cuisine-tag{background:var(--surface-2);padding:1px 7px;border-radius:999px}.boost-tag{background:var(--ok-soft);color:var(--ok-ink);padding:1px 7px;border-radius:999px;font-weight:600}.meal-detail{margin-top:10px;border-top:1px solid var(--border);padding-top:10px}.meal-desc{font-size:13px;color:var(--muted);margin-bottom:10px;font-style:italic}.macro-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.macro{background:var(--surface-2);border-radius:8px;padding:6px 8px;text-align:center;flex:1;min-width:48px}.macro-val{display:block;font-weight:700;font-size:13px}.macro-label{font-size:10px;color:var(--muted);text-transform:uppercase}.macro-hi{background:var(--protein-soft)}.macro-hi .macro-val{color:var(--protein-ink)}.detail-label{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.ingredients{list-style:none;margin:0 0 8px;padding:0}.ingredients li{display:flex;justify-content:space-between;font-size:13px;padding:3px 0;border-bottom:1px dashed var(--border)}.ingredients .qty{color:var(--muted)}.protein-sources{font-size:12px;background:var(--ok-soft);color:var(--ok-ink);padding:6px 10px;border-radius:8px}.grocery{margin-top:28px}.grocery h2{margin-bottom:14px}.grocery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;align-items:start}.grocery-group{padding:16px 18px}.grocery-group h3{font-size:12px;margin-bottom:10px;color:var(--primary);text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center;gap:6px;padding-bottom:8px;border-bottom:1px solid var(--border)}.grocery-group h3 .count{font-size:11px;color:var(--muted);background:var(--surface-2);border-radius:999px;padding:1px 7px;letter-spacing:0}.grocery-group ul{list-style:none;margin:0;padding:0}.grocery-group li+li{border-top:1px dashed var(--border)}.grocery-group label{display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:14px;padding:7px 0;line-height:1.35}.grocery-group label input{margin-top:2px}.grocery-group label span{flex:1;text-align:left}.grocery-group label.done span{text-decoration:line-through;color:var(--muted)}.placeholder,.welcome,.loading{text-align:center;padding:40px}.welcome{max-width:560px}.welcome p{color:var(--muted);margin:12px 0 20px}.muted{color:var(--muted)}.placeholder p{margin-bottom:6px}.error{background:var(--danger-soft);color:var(--danger);padding:12px 16px;border-radius:10px;margin-bottom:16px;font-weight:500}.rate-limit{display:flex;gap:12px;align-items:flex-start;background:var(--protein-soft);border:1px solid var(--protein);padding:14px 16px;border-radius:12px;margin-bottom:16px}.rate-limit .rl-icon{font-size:22px;line-height:1.2}.rate-limit strong{display:block;margin-bottom:2px}.rate-limit p{color:var(--muted);font-size:14px}.rate-limit b{color:var(--protein)}.loading{display:flex;flex-direction:column;align-items:center;gap:8px}.spinner{width:36px;height:36px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--primary);animation:spin .8s linear infinite;margin-bottom:6px}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 1500px){.content{padding:18px}.week-grid{grid-template-columns:repeat(7,minmax(140px,1fr));gap:10px}}@media (max-width: 1280px){.week-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;overflow-x:hidden}}@media (max-width: 900px){:root{--topbar-h: 114px}.layout,.layout.nav-collapsed{grid-template-columns:1fr}.sidebar{position:fixed;top:var(--topbar-h);left:0;bottom:0;width:280px;max-width:84vw;z-index:40;border-right:1px solid var(--border);box-shadow:6px 0 24px #0000002e}.layout.nav-collapsed .sidebar{transform:translate(-100%);opacity:1}.layout.nav-open .sidebar{transform:translate(0)}.layout.nav-open .nav-backdrop{display:block;position:fixed;inset:var(--topbar-h) 0 0 0;z-index:30;background:#0006;animation:fade-in .2s ease}.week-grid{grid-template-columns:1fr;gap:22px;overflow:visible;padding-bottom:0}.day-head{position:sticky;top:var(--topbar-h);z-index:5}.tagline{display:none}.topbar{padding:12px 16px;flex-wrap:wrap;row-gap:10px}.tab-switch{order:3;flex-basis:100%;justify-content:center}.pl-actions button{min-width:40px;min-height:40px}.topbar h1{font-size:17px}.content{padding:16px}.content-head{flex-direction:column;align-items:stretch;gap:12px}.content-head h2{font-size:21px}.head-actions{flex-wrap:wrap}.head-actions .btn{flex:1}.grocery-grid{grid-template-columns:1fr}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}:root{--glass: rgba(255, 255, 255, .7);--glass-thin: rgba(255, 255, 255, .55)}:root[data-theme=dark]{--glass: rgba(23, 27, 17, .6);--glass-thin: rgba(23, 27, 17, .45)}.bg-canvas{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none}.bg-canvas canvas{display:block;width:100%!important;height:100%!important}.app{background:transparent}.topbar,.sidebar{background:var(--glass);-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2)}.card{background:var(--glass);-webkit-backdrop-filter:blur(12px) saturate(1.15);backdrop-filter:blur(12px) saturate(1.15)}.day-head{background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.protein-badge,.cuisine-tag,.macro{-webkit-backdrop-filter:none;backdrop-filter:none}.hero{max-width:760px;margin:4vh auto;min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:20px}.hero-eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:12px;font-weight:700;color:var(--primary);padding:7px 16px;border-radius:999px;border:1px solid var(--border);background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hero-title{font-size:clamp(36px,6.5vw,64px);line-height:1.04;letter-spacing:-.025em;font-weight:800}.hero-sub{font-size:17px;color:var(--muted);max-width:560px;line-height:1.55}.grad{background:linear-gradient(100deg,var(--primary),#6fd998);-webkit-background-clip:text;background-clip:text;color:transparent}.grad.warm{background:linear-gradient(100deg,var(--protein),#f6c873);-webkit-background-clip:text;background-clip:text;color:transparent}.btn.lg{padding:15px 28px;font-size:16px;border-radius:14px;box-shadow:0 10px 34px #2f8f4e59}.hero-tags{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:8px}.hero-tags span{font-size:13px;padding:9px 15px;border-radius:999px;font-weight:500;background:var(--glass);border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@media print{.no-print{display:none!important}.print-only{display:block!important}.bg-canvas{display:none!important}.topbar{position:static}.layout{display:block}.content{padding:0;max-width:none}.recipe-page{max-width:none}.week-grid{grid-template-columns:repeat(7,1fr);overflow:visible}.card,.meal-card,.day-head,.topbar,.sidebar{box-shadow:none;background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none}body{background:#fff}}.topbar-right{display:flex;align-items:center;gap:12px}.tab-switch{display:flex;gap:4px;padding:4px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border)}.tab-switch button{border:none;background:transparent;cursor:pointer;font:inherit;font-size:13px;font-weight:600;color:var(--muted);padding:6px 14px;border-radius:999px;white-space:nowrap;transition:background .15s,color .15s}.tab-switch button.active{background:var(--primary);color:var(--primary-ink)}.layout.no-sidebar .content{margin-inline:auto}.recipe-page{max-width:1180px;margin:0 auto}.recipe-head,.recipe-head .head-actions{align-items:center}.segmented button{white-space:nowrap}.print-only{display:none}.recipe-print-title{font-size:22px;margin-bottom:12px}.recipe-week-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;overflow-x:visible}@media (max-width: 900px){.recipe-week-grid{grid-template-columns:1fr;gap:22px}}.recipe-week-summary{display:flex;gap:28px;flex-wrap:wrap;padding:16px 20px;margin-bottom:18px}.recipe-week-summary>div{display:flex;flex-direction:column;gap:2px}.rws-num{font-size:22px;font-weight:700;color:var(--protein)}.rws-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.recipe-meal{display:grid;grid-template-columns:1fr auto;gap:2px 8px;align-items:baseline;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--glass)}.rm-slot{grid-column:1 / -1;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.rm-name{font-size:14px;line-height:1.3}.rm-protein{font-size:12px;font-weight:700;color:var(--protein-ink);background:var(--protein-soft);padding:2px 8px;border-radius:999px;white-space:nowrap}.recipe-library{margin-top:24px;padding:0;overflow:hidden}.lib-head{width:100%;display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border:none;background:transparent;cursor:pointer;font:inherit;font-size:15px;font-weight:600;color:var(--text)}.lib-body{padding:0 20px 20px;display:grid;gap:22px}.lib-slot h4{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px}.lib-list{list-style:none;display:flex;flex-direction:column;gap:6px}.lib-list li{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-2)}.lib-name{flex:1;min-width:0;font-size:14px}.lib-diet{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}.diet-veg{color:var(--ok-ink);background:var(--ok-soft)}.diet-nonveg{color:var(--danger);background:var(--danger-soft)}.diet-flexible{color:var(--protein-ink);background:var(--protein-soft)}.lib-protein{display:flex;align-items:center;gap:3px;font-size:12px;color:var(--muted)}.lib-protein input{width:56px;padding:4px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit}.lib-remove{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:14px;padding:4px;border-radius:6px}.lib-remove:hover{color:var(--danger);background:var(--danger-soft)}.lib-add{display:grid;grid-template-columns:1fr 130px 110px auto;gap:8px;margin-top:12px;align-items:center}.lib-add input,.lib-add select{width:100%;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;box-sizing:border-box}.lib-add .btn{white-space:nowrap}@media (max-width: 560px){.lib-add{grid-template-columns:1fr 1fr}.lib-add input[type=text]{grid-column:1 / -1}}@media (max-width: 640px){.tab-switch button{padding:6px 10px;font-size:12px}}
