@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--brand-600:#059669;--brand-500:#10b981;--brand-700:#047857;--brand-grad:linear-gradient(135deg, #059669 0%, #0d9488 100%);--accent:#f59e0b;--bg:#f7f8f6;--surface:#fff;--surface-2:#f1f4ef;--text:#101511;--text-2:#3f4a42;--text-3:#77837a;--border:#e4e8e2;--border-strong:#d2d8d0;--danger:#dc2626;--danger-bg:#fef2f2;--warn:#b45309;--warn-bg:#fffbeb;--ok:#047857;--ok-bg:#ecfdf5;--shadow-sm:0 1px 2px #1018100d;--shadow-md:0 1px 3px #10181012, 0 4px 14px #1018100f;--shadow-lg:0 4px 10px #10181014, 0 16px 36px #1018101f;--radius:14px;--radius-sm:9px;--header-h:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=dark]{--brand-600:#10b981;--brand-700:#34d399;--bg:#0e120f;--surface:#161b17;--surface-2:#1d241e;--text:#edf1ec;--text-2:#b9c2ba;--text-3:#7e8a80;--border:#262e27;--border-strong:#364038;--danger-bg:#2a1414;--warn-bg:#271c07;--ok-bg:#0a231a;--shadow-sm:0 1px 2px #0006;--shadow-md:0 1px 3px #00000073, 0 4px 14px #00000059;--shadow-lg:0 4px 10px #00000080, 0 16px 36px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:Inter Variable,Inter,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15.5px;line-height:1.55}#app{min-height:100dvh}h1,h2,h3{letter-spacing:-.022em;line-height:1.2}a{color:var(--brand-600)}.app-shell{flex-direction:column;min-height:100dvh;display:flex}.app-header{z-index:50;-webkit-backdrop-filter:blur(14px);background:color-mix(in srgb, var(--surface) 78%, transparent);border-bottom:1px solid var(--border);position:sticky;top:0}.app-header-inner{max-width:1100px;height:var(--header-h);align-items:center;gap:20px;margin:0 auto;padding:0 20px;display:flex}.brand{letter-spacing:-.02em;color:var(--text);white-space:nowrap;align-items:center;gap:10px;font-size:1.12rem;font-weight:800;text-decoration:none;display:flex}.brand-mark{background:var(--brand-grad);color:#fff;width:34px;height:34px;box-shadow:var(--shadow-sm);border-radius:10px;flex-shrink:0;place-items:center;display:grid}.main-nav{scrollbar-width:none;flex:1;gap:2px;min-width:0;display:flex;overflow-x:auto}.main-nav::-webkit-scrollbar{display:none}.main-nav a{color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;gap:7px;padding:8px 13px;font-size:.9rem;font-weight:600;text-decoration:none;transition:background .15s,color .15s;display:flex}.main-nav a:hover{background:var(--surface-2);color:var(--text)}.main-nav a.active{background:color-mix(in srgb, var(--brand-600) 13%, transparent);color:var(--brand-700)}.main-nav a svg{width:17px;height:17px}@media (width<=560px){.app-header-inner{gap:12px;padding:0 14px}.brand span{display:none}.main-nav a{padding:8px 11px}}.page{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:28px 20px 60px}.page-narrow{max-width:760px}@media (width<=560px){.page{padding:20px 14px 48px}}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-head h1{margin:0;font-size:1.7rem;font-weight:800}.page-head .sub{color:var(--text-3);margin:4px 0 0;font-size:.95rem}h2.section{align-items:center;gap:8px;margin:30px 0 12px;font-size:1.05rem;font-weight:700;display:flex}h2.section svg{width:18px;height:18px;color:var(--brand-600)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px}.card+.card{margin-top:12px}.card.tappable{cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s}.card.tappable:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-2px)}.card-title{margin:0 0 2px;font-weight:700}.card-sub{color:var(--text-3);margin:0;font-size:.86rem}.grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;display:grid}.meal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;box-shadow:var(--shadow-sm);flex-direction:column;transition:transform .16s,box-shadow .16s;display:flex;overflow:hidden}.meal-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}.meal-cover{align-items:flex-end;height:136px;padding:12px;display:flex;position:relative}.photo-preview{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);width:100%;max-height:260px;margin:8px 0 4px}.person-avatar{color:#fff;background:var(--brand-grad);letter-spacing:.02em;border-radius:50%;flex-shrink:0;place-items:center;width:32px;height:32px;font-size:.72rem;font-weight:800;display:grid}.notif-btn{position:relative}.notif-badge{background:var(--danger);color:#fff;min-width:17px;height:17px;box-shadow:0 0 0 2px var(--surface);border-radius:999px;place-items:center;padding:0 4px;font-size:.64rem;font-weight:800;display:grid;position:absolute;top:-4px;right:-4px}.notif-dropdown{width:340px;max-width:86vw;max-height:70vh;padding-bottom:4px;overflow-y:auto}.notif-empty{text-align:center;color:var(--text-3);padding:20px 16px;font-size:.88rem}.notif-item{border-top:1px solid var(--border);align-items:flex-start;gap:10px;padding:11px 14px;display:flex}.notif-icon{color:#fff;border-radius:50%;flex:none;place-items:center;width:30px;height:30px;display:grid}.notif-icon.friendRequest{background:var(--brand-600)}.notif-icon.recipeShare{background:var(--accent)}.notif-body{flex:1;min-width:0}.notif-body p{margin:0;font-size:.86rem;line-height:1.35}.notif-time{color:var(--text-3);font-size:.72rem}.notif-actions{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.notif-actions .btn-sm{padding:5px 9px}.stars{color:var(--accent);align-items:center;gap:2px;display:inline-flex}.stars .star{appearance:none;color:var(--text-3);cursor:default;background:0 0;border:none;padding:0;display:inline-flex}.stars .star.on{color:var(--accent)}.stars.interactive .star{cursor:pointer;transition:transform 80ms}.stars.interactive .star:hover{transform:scale(1.15)}.nutrition-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);margin-bottom:16px;padding:12px 14px}.nutrition-label{color:var(--text-3);align-items:center;gap:6px;margin-bottom:8px;font-size:.8rem;display:flex}.nutrition-label em{font-style:italic}.nutrition-cells{flex-wrap:wrap;gap:22px;display:flex}.nutrition-cells>div{flex-direction:column;display:flex}.nutrition-cells strong{letter-spacing:-.01em;font-size:1.15rem;font-weight:800}.nutrition-cells span{color:var(--text-3);font-size:.76rem}.meal-cover img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.meal-cover .emoji{filter:drop-shadow(0 3px 6px #00000040);font-size:2.4rem;position:absolute;bottom:-18px;right:14px}.meal-card-body{flex-direction:column;flex:1;gap:8px;padding:14px 16px 16px;display:flex}.meal-card-body h3{margin:0;font-size:1.02rem;font-weight:700}.meta-row{color:var(--text-3);align-items:center;gap:12px;font-size:.82rem;display:flex}.meta-row span{align-items:center;gap:4px;display:inline-flex}.meta-row svg{width:14px;height:14px}.row{align-items:center;gap:10px;display:flex}.row .grow{flex:1;min-width:0}.stack{flex-direction:column;gap:10px;display:flex}.wrap{flex-wrap:wrap}.two-col{grid-template-columns:1fr;gap:20px;display:grid}@media (width>=860px){.two-col{grid-template-columns:5fr 4fr;align-items:start}}.btn{appearance:none;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;touch-action:manipulation;justify-content:center;align-items:center;gap:7px;padding:9px 16px;font-family:inherit;font-size:.9rem;font-weight:600;transition:background .15s,border-color .15s,transform 50ms,box-shadow .15s;display:inline-flex}.btn svg{width:16px;height:16px}.btn:hover{background:var(--surface-2)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--brand-grad);color:#fff;box-shadow:0 2px 8px color-mix(in srgb, var(--brand-600) 40%, transparent);border:none}.btn-primary:hover{background:var(--brand-grad);filter:brightness(1.06)}.btn-ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-2)}.btn-danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 35%, transparent)}.btn-danger:hover{background:var(--danger-bg)}.btn-sm{border-radius:8px;padding:6px 11px;font-size:.8rem}.btn-sm svg{width:14px;height:14px}.btn-block{width:100%}input,select,textarea{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--text);padding:10px 13px;font-family:inherit;font-size:.95rem;transition:border-color .15s,box-shadow .15s}input:focus-visible,select:focus-visible,textarea:focus-visible,.btn:focus-visible{border-color:var(--brand-600);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand-600) 22%, transparent);outline:none}textarea{resize:vertical;min-height:76px}label.field{color:var(--text-2);margin-bottom:14px;font-size:.8rem;font-weight:600;display:block}label.field>input,label.field>select,label.field>textarea{margin-top:5px}.search-box{flex:1;position:relative}.search-box svg{width:16px;height:16px;color:var(--text-3);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search-box input{border-radius:999px;padding-left:38px}.chip{background:var(--surface-2);color:var(--text-2);border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:.73rem;font-weight:600;display:inline-flex}.chip svg{width:12px;height:12px}.chip.brand{background:color-mix(in srgb, var(--brand-600) 13%, transparent);color:var(--brand-700)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.ok{background:var(--ok-bg);color:var(--ok)}.banner{border-radius:var(--radius-sm);align-items:center;gap:9px;margin:0 0 14px;padding:11px 14px;font-size:.88rem;font-weight:500;display:flex}.banner svg{flex-shrink:0;width:16px;height:16px}.banner.error{background:var(--danger-bg);color:var(--danger)}.banner.success{background:var(--ok-bg);color:var(--ok)}.banner.warn{background:var(--warn-bg);color:var(--warn)}.empty{text-align:center;color:var(--text-3);border:1.5px dashed var(--border-strong);border-radius:var(--radius);padding:56px 20px}.empty svg{width:40px;height:40px;color:var(--text-3);margin-bottom:10px}.empty p{max-width:380px;margin:0 auto}.week-nav{align-items:center;gap:12px;margin-bottom:18px;display:flex}.week-nav strong{font-size:1rem}.week-grid{grid-template-columns:1fr;gap:12px;display:grid}@media (width>=900px){.week-grid{grid-template-columns:repeat(7,1fr);gap:10px}}.day-card{flex-direction:column;gap:8px;padding:13px;display:flex}.day-card+.day-card{margin-top:0}.day-header{color:var(--text-2);font-size:.82rem;font-weight:700}.day-header .dow{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-size:.68rem;display:block}.day-card.today{border-color:var(--brand-600);box-shadow:0 0 0 1px var(--brand-600)}.day-card.today .day-header{color:var(--brand-700)}.day-card.drop-over{border-color:var(--brand-600);background:color-mix(in srgb, var(--brand-600) 8%, var(--surface))}.day-header{justify-content:space-between;align-items:flex-start;display:flex}.day-note-btn{color:var(--text-3);padding:2px}.day-note{color:var(--text-2);background:var(--warn-bg);cursor:text;border-radius:7px;align-items:center;gap:5px;padding:5px 8px;font-size:.76rem;display:flex}.day-note-input{padding:6px 8px;font-size:.8rem}.plan-entry{background:var(--surface-2);border-radius:var(--radius-sm);align-items:center;gap:6px;padding:8px 10px;font-size:.85rem;display:flex}.plan-entry.dragging{opacity:.4}.plan-entry.leftover{background:color-mix(in srgb, var(--accent) 10%, var(--surface-2))}.drag-handle{appearance:none;color:var(--text-3);cursor:grab;touch-action:none;background:0 0;border:none;flex-shrink:0;padding:0;display:inline-flex}.drag-handle:active{cursor:grabbing}.chip-x{appearance:none;color:inherit;cursor:pointer;vertical-align:middle;opacity:.7;background:0 0;border:none;padding:0 0 0 4px;display:inline-flex}.chip-x:hover{opacity:1}.plan-entry .slot{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;flex-shrink:0;padding:2px 7px;font-size:.6rem;font-weight:800}.slot-breakfast{color:#92400e;background:#fef3c7}.slot-lunch{color:#1e40af;background:#dbeafe}.slot-dinner{color:#166534;background:#dcfce7}.slot-snack{color:#86198f;background:#fae8ff}[data-theme=dark] .slot-breakfast{color:#fcd34d;background:#3a2b07}[data-theme=dark] .slot-lunch{color:#93c5fd;background:#172a54}[data-theme=dark] .slot-dinner{color:#86efac;background:#0c2f1c}[data-theme=dark] .slot-snack{color:#f0abfc;background:#3a0d42}.cook-mode{z-index:100;background:radial-gradient(1000px 500px at 85% -10%, color-mix(in srgb, var(--brand-600) 16%, transparent), transparent), var(--bg);flex-direction:column;display:flex;position:fixed;inset:0}.cook-header{justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.cook-header strong{font-size:1.02rem}.cook-progress{gap:5px;padding:4px 20px 0;display:flex}.cook-progress .seg{background:var(--border-strong);border-radius:2px;flex:1;height:4px;transition:background .3s}.cook-progress .seg.done{background:var(--brand-600)}.cook-body{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:28px 24px;display:flex}.cook-panel{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:22px;width:100%;max-width:620px;padding:36px 30px}.cook-step-number{color:var(--brand-700);text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px;font-size:.74rem;font-weight:800}.cook-step-text{font-size:1.4rem;font-weight:550;line-height:1.5}.cook-timer{margin-top:26px}.cook-timer .time{font-variant-numeric:tabular-nums;letter-spacing:-.03em;font-size:3.4rem;font-weight:800}.cook-timer .time.done{color:var(--brand-600);animation:1s infinite pulse}@keyframes pulse{50%{opacity:.4}}.cook-nav{padding:18px 20px calc(18px + env(safe-area-inset-bottom));gap:10px;width:100%;max-width:660px;margin:0 auto;display:flex}.cook-nav .btn{border-radius:12px;flex:1;padding:15px;font-size:1rem}.timer-tray{flex-wrap:wrap;justify-content:center;gap:8px;width:100%;max-width:660px;margin:0 auto;padding:0 16px 10px;display:flex}.timer-chip{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;align-items:center;gap:7px;padding:7px 8px 7px 12px;font-size:.9rem;display:flex}.timer-chip.done{border-color:var(--brand-600);color:var(--brand-600);animation:1s infinite pulse}.timer-chip-label{text-overflow:ellipsis;white-space:nowrap;max-width:130px;font-weight:600;overflow:hidden}.timer-chip-time{font-variant-numeric:tabular-nums;font-weight:700}.icon-btn.sm{border-radius:7px;width:26px;height:26px}.shop-item{border-bottom:1px solid var(--border);align-items:flex-start;gap:11px;padding:11px 0;display:flex}.shop-item:last-child{border-bottom:none}.shop-item input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand-600);flex-shrink:0;margin-top:2px}.shop-item .have-it{color:var(--text-3);text-decoration:line-through}.category-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin:18px 0 6px;font-size:.68rem;font-weight:800}.step-list-row{align-items:flex-start;gap:10px;margin-bottom:10px;display:flex}.step-list-row .num{background:var(--brand-grad);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:26px;height:26px;margin-top:14px;font-size:.78rem;font-weight:800;display:grid}.step-list-row .card{flex:1;margin:0}.hero{color:#fff;box-shadow:var(--shadow-md);border-radius:18px;margin-bottom:18px;padding:26px 24px 22px;position:relative;overflow:hidden}.hero h1{margin:0 0 6px;font-size:1.65rem;font-weight:800}.hero-photo{background-position:50%;background-size:cover;flex-direction:column;justify-content:flex-end;min-height:250px;display:flex}.hero-photo h1,.hero-photo .desc{text-shadow:0 1px 3px #00000080}.hero .desc{opacity:.92;max-width:560px;margin:0;font-size:.95rem}.hero .emoji{filter:drop-shadow(0 4px 8px #0000004d);font-size:3rem;position:absolute;top:18px;right:22px}.hero-stats{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.hero-stats .chip{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff2e}.signin{grid-template-columns:1fr;min-height:100dvh;display:grid}.signin-brand-panel{color:#fff;background:radial-gradient(700px 420px at 85% -10%, #ffffff29, transparent 60%), radial-gradient(600px 500px at -10% 110%, #00000040, transparent 55%), var(--brand-grad);padding:44px 28px 36px;position:relative;overflow:hidden}.signin-brand{letter-spacing:-.02em;align-items:center;gap:10px;margin-bottom:30px;font-size:1.12rem;font-weight:800;display:flex}.signin-brand .brand-mark{color:#fff;background:#ffffff2e;box-shadow:inset 0 0 0 1px #ffffff40}.signin-brand-panel h1{max-width:480px;margin:0 0 10px;font-size:clamp(1.9rem,4vw,2.6rem);font-weight:800}.signin-brand-panel h1 em{text-underline-offset:5px;font-style:normal;-webkit-text-decoration:underline #ffffff73;text-decoration:underline #ffffff73;text-decoration-thickness:3px}.signin-tagline{opacity:.92;max-width:440px;margin:0 0 28px;font-size:1.02rem}.signin-features{gap:18px;max-width:460px;margin:0;padding:0;list-style:none;display:grid}.signin-features li{align-items:flex-start;gap:13px;display:flex}.signin-features strong{font-size:.94rem;display:block}.signin-features p{opacity:.85;margin:2px 0 0;font-size:.86rem}.signin-feature-icon{background:#ffffff29;border-radius:11px;flex:none;place-items:center;width:38px;height:38px;display:grid;box-shadow:inset 0 0 0 1px #ffffff38}.signin-feature-icon svg{width:19px;height:19px}.signin-auth-panel{background:radial-gradient(700px 400px at 50% -10%, color-mix(in srgb, var(--brand-600) 10%, transparent), transparent), var(--bg);justify-content:center;align-items:center;padding:40px 24px 56px;display:flex;position:relative}.signin-theme-toggle{position:absolute;top:16px;right:16px}.signin-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:380px;box-shadow:var(--shadow-lg);flex-direction:column;gap:11px;padding:30px 28px 24px;display:flex}.signin-card h2{margin:0;font-size:1.45rem;font-weight:800}.signin-card-sub{color:var(--text-2);margin:-4px 0 10px;font-size:.9rem}.signin-btn{width:100%;padding:11px 16px;font-size:.94rem}.signin-btn svg{width:18px;height:18px}.signin-divider{color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:12px;margin:6px 0;font-size:.78rem;display:flex}.signin-divider:before,.signin-divider:after{content:"";background:var(--border);flex:1;height:1px}.signin-providers{grid-template-columns:1fr 1fr;gap:10px;display:grid}.signin-form{flex-direction:column;gap:2px;display:flex}.signin-form h2{margin:0 0 4px}.signin-form .field{margin-bottom:12px}.signin-form .signin-btn{margin-top:4px}.signin-switch{background:var(--surface-2);border-radius:var(--radius-sm);grid-template-columns:1fr 1fr;gap:4px;margin-bottom:16px;padding:4px;display:grid}.signin-switch button{appearance:none;color:var(--text-2);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;padding:8px 10px;font-size:.88rem;font-weight:600}.signin-switch button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.signin-links{justify-content:space-between;gap:10px;margin-top:10px;display:flex}.signin-link{appearance:none;font:inherit;color:var(--brand-600);cursor:pointer;background:0 0;border:none;padding:0;font-size:.83rem;font-weight:600}.signin-link:hover{text-decoration:underline}.signin-notice,.signin-error{border-radius:var(--radius-sm);margin-top:12px;padding:9px 12px;font-size:.85rem}.signin-notice{background:var(--ok-bg);color:var(--ok)}.signin-error{background:var(--danger-bg);color:var(--danger)}.spinner{flex:none;width:16px;height:16px;animation:.8s linear infinite spinner-rotate}.spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:44 16}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.activity-bar{opacity:0;pointer-events:none;height:3px;transition:opacity .25s;position:absolute;bottom:-1px;left:0;right:0;overflow:hidden}.activity-bar.on{opacity:1}.activity-bar-fill{background:var(--brand-grad);border-radius:999px;width:40%;height:100%;animation:1.1s ease-in-out infinite activity-slide}@keyframes activity-slide{0%{transform:translate(-100%)}to{transform:translate(350%)}}.ai-thinking{border-radius:var(--radius-sm);border:1px dashed color-mix(in srgb, var(--brand-600) 45%, transparent);background:color-mix(in srgb, var(--brand-600) 7%, var(--surface));color:var(--text-2);align-items:center;gap:10px;margin-top:12px;padding:12px 14px;font-size:.9rem;display:flex}.ai-thinking-icon{width:18px;height:18px;color:var(--brand-600);flex:none;animation:1.6s ease-in-out infinite ai-glow}.ai-thinking-msg{animation:.45s ai-msg-in}@keyframes ai-glow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.82)}}@keyframes ai-msg-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.signin-fineprint{color:var(--text-3);text-align:center;margin:10px 0 0;font-size:.78rem}@media (width>=880px){.signin{grid-template-columns:1.1fr 1fr}.signin-brand-panel{flex-direction:column;justify-content:center;padding:56px 56px 48px;display:flex}.signin-brand{margin:0;position:absolute;top:40px;left:56px}}@media (width<=879px){.signin-features{display:none}.signin-brand-panel{padding-bottom:40px}.signin-brand{margin-bottom:22px}.signin-auth-panel{border-radius:20px 20px 0 0;margin-top:-18px}}.header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.icon-btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer;border-radius:10px;place-items:center;width:36px;height:36px;transition:background .15s,color .15s,border-color .15s;display:grid}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn svg{width:17px;height:17px}.charm-btn{appearance:none;background:var(--brand-grad);color:#fff;cursor:pointer;width:36px;height:36px;box-shadow:0 2px 8px color-mix(in srgb, var(--brand-600) 40%, transparent);border:none;border-radius:10px;place-items:center;transition:filter .15s,transform .15s;display:grid}.charm-btn:hover{filter:brightness(1.07)}.charm-btn:active{transform:scale(.95)}.charm-btn svg{width:18px;height:18px;transition:transform .18s}.charm-btn.open svg{transform:rotate(45deg)}.avatar{color:#fff;cursor:pointer;width:34px;height:34px;box-shadow:var(--shadow-sm);letter-spacing:.02em;border:none;border-radius:50%;place-items:center;font-size:.8rem;font-weight:800;display:grid}.user-menu{position:relative}.dropdown{background:var(--surface);border:1px solid var(--border);min-width:230px;box-shadow:var(--shadow-lg);z-index:80;border-radius:14px;padding:6px;animation:.14s dropIn;position:absolute;top:calc(100% + 10px);right:0}@keyframes dropIn{0%{opacity:0;transform:translateY(-4px)}}.dropdown-header{border-bottom:1px solid var(--border);margin-bottom:6px;padding:10px 12px}.dropdown-header .name{font-size:.92rem;font-weight:700}.dropdown-header .email{color:var(--text-3);word-break:break-all;font-size:.78rem}.dropdown-item{width:100%;color:var(--text-2);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:9px;padding:9px 12px;font-size:.88rem;font-weight:600;text-decoration:none;display:flex}.dropdown-item:hover{background:var(--surface-2);color:var(--text)}.dropdown-item svg{width:16px;height:16px}.greeting{margin:4px 0 2px;font-size:1.7rem;font-weight:800}.greeting-sub{color:var(--text-3);margin:0 0 22px}.stat-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:8px;display:grid}@media (width>=720px){.stat-grid{grid-template-columns:repeat(4,1fr)}}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:2px;padding:16px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}.stat-tile:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-tile .icon-wrap{background:color-mix(in srgb, var(--brand-600) 13%, transparent);width:32px;height:32px;color:var(--brand-700);border-radius:9px;place-items:center;margin-bottom:8px;display:grid}.stat-tile .icon-wrap svg{width:17px;height:17px}.stat-tile .value{letter-spacing:-.03em;color:var(--text);font-size:1.7rem;font-weight:800;line-height:1.1}.stat-tile .label{color:var(--text-3);font-size:.78rem;font-weight:600}.quick-actions{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}@media (width>=720px){.quick-actions{grid-template-columns:repeat(4,1fr)}}.quick-action{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);box-shadow:var(--shadow-sm);align-items:center;gap:10px;padding:13px 14px;font-size:.88rem;font-weight:650;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.quick-action:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-2px)}.quick-action svg{width:18px;height:18px;color:var(--brand-600);flex-shrink:0}.week-strip{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.week-strip a{text-align:center;border:1px solid var(--border);background:var(--surface);color:var(--text-2);border-radius:10px;padding:9px 2px 10px;text-decoration:none;transition:border-color .15s,background .15s}.week-strip a:hover{border-color:var(--border-strong)}.week-strip a.today{border-color:var(--brand-600);box-shadow:0 0 0 1px var(--brand-600)}.week-strip .dow{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-size:.62rem;font-weight:800;display:block}.week-strip .dom{color:var(--text);font-size:.95rem;font-weight:700;display:block}.week-strip .dots{justify-content:center;gap:3px;min-height:5px;margin-top:4px;display:flex}.week-strip .dot{background:var(--brand-600);border-radius:50%;width:5px;height:5px}.today-entry{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:11px 0;display:flex}.today-entry:last-child{border-bottom:none}.page{animation:.22s pageIn}@keyframes pageIn{0%{opacity:0;transform:translateY(5px)}}@media (prefers-reduced-motion:reduce){.page,.dropdown{animation:none}.card.tappable,.meal-card,.stat-tile,.quick-action{transition:none}}.modal-overlay{z-index:90;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}@media (width>=640px){.modal-overlay{align-items:center;padding:24px}}.modal-panel{background:var(--surface);border:1px solid var(--border);width:100%;max-width:520px;max-height:82dvh;box-shadow:var(--shadow-lg);border-radius:18px 18px 0 0;flex-direction:column;animation:.2s sheetIn;display:flex}@media (width>=640px){.modal-panel{border-radius:18px}}@keyframes sheetIn{0%{opacity:0;transform:translateY(16px)}}.picker-list{flex:1;padding:0 8px 12px;overflow-y:auto}.picker-row{width:100%;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:center;gap:12px;padding:8px;display:flex}.picker-row:hover{background:var(--surface-2)}.picker-row .thumb{border-radius:8px;flex-shrink:0;place-items:center;width:52px;height:40px;font-size:1.15rem;display:grid;position:relative;overflow:hidden}.picker-row .thumb img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.run-menu{position:relative}.run-menu .dropdown{min-width:190px}.sticky-actions{z-index:40;padding:12px 20px calc(12px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--bg) 86%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);gap:10px;margin:22px -20px 0;display:flex;position:sticky;bottom:0}@media (width<=560px){.sticky-actions{padding:10px 14px calc(10px + env(safe-area-inset-bottom));margin:22px -14px 0}}.app-footer{width:100%;max-width:1100px;color:var(--text-3);justify-content:space-between;align-items:center;margin:0 auto;padding:18px 20px 26px;font-size:.78rem;display:flex}.app-footer .icon-btn{border-radius:8px;width:30px;height:30px}.app-footer .icon-btn svg{width:14px;height:14px}.scale-btn{color:inherit;cursor:pointer;background:#ffffff40;border:none;border-radius:50%;place-items:center;width:18px;height:18px;font-weight:800;line-height:1;display:grid}.scale-btn:hover{background:#fff6}.cook-ingredients{background:var(--surface);border:1px solid var(--border);max-height:55%;box-shadow:var(--shadow-lg);z-index:5;text-align:left;border-radius:16px;padding:16px 18px;position:absolute;inset:auto 16px 16px;overflow-y:auto}@media (width>=640px){.cook-ingredients{width:420px;inset:auto auto 90px 50%;transform:translate(-50%)}}.checklist-item{color:var(--text-2);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:9px 0;font-size:.9rem;font-weight:600;text-decoration:none;display:flex}.checklist-item:last-child{border-bottom:none}.checklist-item.done{color:var(--text-3);text-decoration:line-through}.checklist-item .bullet{border:2px solid var(--border-strong);border-radius:50%;flex-shrink:0;place-items:center;width:20px;height:20px;display:grid}.checklist-item.done .bullet{background:var(--brand-600);border-color:var(--brand-600);color:#fff}.checklist-item .bullet svg{width:12px;height:12px}.tonight-hero{color:#fff;min-height:170px;box-shadow:var(--shadow-md);background-position:50%;background-size:cover;border-radius:18px;flex-direction:column;justify-content:flex-end;margin-bottom:18px;padding:26px 22px;display:flex;position:relative;overflow:hidden}.tonight-hero .kicker{text-transform:uppercase;letter-spacing:.1em;opacity:.85;font-size:.7rem;font-weight:800}.tonight-hero h2{margin:2px 0 10px;font-size:1.45rem}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg, var(--surface-2) 25%, var(--border) 50%, var(--surface-2) 75%);background-size:200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}
