.sidebar{position:fixed;left:0;top:0;bottom:0;width:64px;display:flex;flex-direction:column;align-items:center;padding:24px 0;background:#fff;border-right:1px solid rgba(225,191,179,.3);box-shadow:2px 0 8px #0000000f;z-index:100}@media (max-width: 767px){.sidebar{display:none}}.sidebar-brand{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:700;color:#8a3000;padding:12px;margin-bottom:48px;writing-mode:vertical-rl;letter-spacing:.05em}.sidebar-nav{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1}.sidebar-nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 4px;border-radius:1rem;border:none;background:transparent;color:#594138;cursor:pointer;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:9px;font-weight:600;letter-spacing:.03em;text-align:center;transition:all .15s ease;width:52px}.sidebar-nav-item .material-symbols-outlined{font-size:22px}.sidebar-nav-item:hover{background:#c5531c14;color:#8a3000}.sidebar-nav-item.active{color:#8a3000;background:#c5531c26;font-weight:700}.sidebar-nav-item.active .material-symbols-outlined{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24;color:#8a3000}.sidebar-bottom{display:flex;flex-direction:column;align-items:center;gap:4px;padding-top:24px;border-top:1px solid rgba(225,191,179,.3);width:100%}.sidebar-lang{display:flex;flex-direction:column;align-items:center;padding-top:24px;border-top:1px solid rgba(225,191,179,.3);width:100%}.lang-switcher{position:relative;z-index:200}.lang-switcher-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border-radius:9999px;border:1px solid #e1bfb3;background:transparent;color:#594138;cursor:pointer;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:11px;font-weight:600;letter-spacing:.05em;transition:all .15s ease}.lang-switcher-btn .material-symbols-outlined{font-size:18px}.lang-switcher-btn:hover{background:#c5531c1a;border-color:#8a3000;color:#8a3000}.lang-dropdown{position:absolute;top:calc(100% + 4px);background:#fff;border:1px solid #e1bfb3;border-radius:1rem;box-shadow:0 4px 16px #0000001f;padding:4px;min-width:140px;z-index:200}.lang-option{display:block;width:100%;text-align:left;padding:8px 12px;border:none;background:transparent;color:#1b1c1c;cursor:pointer;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;border-radius:8px;transition:background .15s ease}.lang-option:hover{background:#f5f3f3}.lang-option.active{background:#c5531c26;color:#8a3000;font-weight:600}.topbar{display:flex;position:fixed;top:0;left:0;right:0;height:56px;align-items:center;justify-content:space-between;padding:0 24px;background:#fff;border-bottom:1px solid rgba(225,191,179,.3);box-shadow:0 2px 8px #0000000f;z-index:90}@media (min-width: 768px){.topbar{padding:0 48px}}@media (min-width: 768px){.sidebar~.topbar{left:64px}}.topbar-left{display:flex;align-items:center;gap:48px}.topbar-brand{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:16px;font-weight:700;color:#8a3000;letter-spacing:-.01em;white-space:nowrap}.topbar-nav{display:none;align-items:center;gap:4px}@media (min-width: 768px){.topbar-nav{display:flex}}.topbar-nav-link{padding:6px 14px;border-radius:9999px;border:none;background:transparent;color:#594138;cursor:pointer;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:600;transition:all .15s ease;text-decoration:none}.topbar-nav-link:hover{background:#c5531c14;color:#8a3000}.topbar-nav-link.active{background:#c5531c1f;color:#8a3000}.topbar-right{display:flex;align-items:center;gap:12px}.topbar-avatar{width:36px;height:36px;border-radius:9999px;background:#f5f3f3;border:2px solid #ffdbce;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease}.topbar-avatar .material-symbols-outlined{font-size:20px;color:#594138}.topbar-avatar:hover{background:#c5531c1a;border-color:#c5531c}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;height:64px;justify-content:space-around;align-items:center;background:#fff;border-top:1px solid rgba(225,191,179,.3);box-shadow:0 -2px 8px #0000000f;z-index:90;padding:0 12px}@media (max-width: 767px){.bottom-nav{display:flex}}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px;border:none;background:transparent;color:#594138;cursor:pointer;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:10px;font-weight:600;letter-spacing:.03em;transition:all .15s ease}.bottom-nav-item .material-symbols-outlined{font-size:22px}.bottom-nav-item.active{color:#8a3000}.bottom-nav-item.active .material-symbols-outlined{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.footer{background:#fff;border-top:1px solid rgba(225,191,179,.3);padding:48px 64px 24px;margin-top:80px}@media (max-width: 767px){.footer{padding:24px 16px;margin-top:24px}}.footer-grid{display:grid;grid-template-columns:1.5fr 2fr;gap:48px;max-width:1200px;margin:0 auto}@media (max-width: 767px){.footer-grid{grid-template-columns:1fr;gap:24px}}.footer-brand .footer-logo{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:20px;font-weight:700;color:#8a3000}.footer-brand .footer-tagline{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:400;line-height:20px;color:#594138;margin-top:12px;max-width:320px}.footer-links{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}@media (max-width: 767px){.footer-links{grid-template-columns:repeat(2,1fr)}}.footer-col .footer-col-title,.footer-col h2{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:12px;font-weight:600;line-height:16px;letter-spacing:.05em;text-transform:uppercase;color:#1b1c1c;font-weight:700;text-transform:none;letter-spacing:0;margin-bottom:12px;font-size:14px}.footer-col a{display:block;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:400;line-height:20px;color:#594138;text-decoration:none;padding:4px 0;cursor:pointer;transition:color .15s ease}.footer-col a:hover{color:#8a3000}.footer-bottom{display:flex;justify-content:space-between;align-items:center;max-width:1200px;margin:24px auto 0;padding-top:24px;border-top:1px solid rgba(225,191,179,.2)}@media (max-width: 767px){.footer-bottom{flex-direction:column;gap:12px;text-align:center}}.footer-bottom p{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:400;line-height:20px;color:#594138}.footer-social{display:flex;gap:12px}.footer-social .material-symbols-outlined{font-size:20px;color:#594138;opacity:.5;cursor:pointer;transition:all .15s ease}.footer-social .material-symbols-outlined:hover{opacity:1;color:#8a3000}.cookie-consent{position:fixed;inset:auto 0 0;z-index:1000;display:flex;justify-content:center;padding:12px;pointer-events:none}.cookie-consent__card{pointer-events:auto;background:#fff;border-radius:1.5rem;box-shadow:0 8px 24px #0000001f;padding:24px 48px;max-width:720px;width:100%;border:1px solid #e1bfb3;animation:cookie-consent-slide-up .35s ease}@keyframes cookie-consent-slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.cookie-consent__title{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:20px;font-weight:700;color:#1b1c1c;margin-bottom:4px}.cookie-consent__description{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;line-height:24px;color:#594138;margin-bottom:12px}.cookie-consent__link{color:#8a3000;text-decoration:underline;font-weight:600}.cookie-consent__link:hover{color:#c5531c}.cookie-consent__actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.cookie-consent__customize{background:none;border:none;color:#594138;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-weight:600;font-size:14px;cursor:pointer;padding:4px 12px;text-decoration:underline;transition:color .15s ease}.cookie-consent__customize:hover{color:#8a3000}.cookie-consent__categories{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}.cookie-consent__category{padding:12px;border:1px solid #e1bfb3;border-radius:1rem;background:#f5f3f3}.cookie-consent__category--toggle{cursor:pointer;transition:border-color .15s ease}.cookie-consent__category--toggle:hover{border-color:#8a3000}.cookie-consent__category-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;gap:12px}.cookie-consent__category-name{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-weight:700;font-size:14px;color:#1b1c1c}.cookie-consent__category-status{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:12px;font-weight:600;color:#594138;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:.25rem;background:#efeded}.cookie-consent__category-desc{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;color:#594138;line-height:1.5;margin:0}.cookie-consent__powered-by{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:12px;color:#8d7166;margin-top:4px;font-style:italic}.cookie-consent__toggle-wrap{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.cookie-consent__toggle{opacity:0;width:0;height:0;position:absolute}.cookie-consent__toggle:checked+.cookie-consent__toggle-slider{background:#c5531c}.cookie-consent__toggle:checked+.cookie-consent__toggle-slider:before{transform:translate(20px)}.cookie-consent__toggle:focus-visible+.cookie-consent__toggle-slider{box-shadow:0 0 0 3px #c5531c4d}.cookie-consent__toggle-slider{position:absolute;inset:0;background:#e4e2e2;border-radius:9999px;transition:background .15s ease;cursor:pointer}.cookie-consent__toggle-slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .15s ease;box-shadow:0 1px 2px #0000000d}@media (max-width: 600px){.cookie-consent{padding:4px}.cookie-consent__card{padding:12px}.cookie-consent__actions{flex-direction:column;align-items:stretch}.cookie-consent__actions .button{width:100%}}.page-skeleton{display:flex;flex-direction:column;gap:24px;padding:48px 0;width:100%}.page-skeleton-bar{background:#f5f3f3;border-radius:.5rem;animation:shimmer 1.5s ease-in-out infinite;background-image:linear-gradient(90deg,#f5f3f3 25%,#eae8e7,#f5f3f3 75%);background-size:200% 100%}.page-skeleton-bar--xs{height:12px;width:30%}.page-skeleton-bar--sm{height:16px;width:40%}.page-skeleton-bar--md{height:20px;width:60%}.page-skeleton-bar--lg{height:32px;width:70%}.page-skeleton-card{background:#fff;border:1px solid rgba(225,191,179,.3);border-radius:1.5rem;overflow:hidden;box-shadow:0 4px 8px #0000001a;display:flex;flex-direction:column;max-width:800px}.page-skeleton-image{width:100%;aspect-ratio:4/3;background:#f5f3f3}.page-skeleton-body{padding:24px;display:flex;flex-direction:column;gap:12px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:PJS Fallback;src:local("Arial");size-adjust:112%;ascent-override:88%;descent-override:24%;line-gap-override:0%}body{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:16px;font-weight:400;line-height:24px;color:#1b1c1c;background:#fbf9f8;min-height:100vh;overflow-x:hidden}#root{min-height:100vh;display:flex;flex-direction:column}a{color:#8a3000;text-decoration:none}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;font-size:20px;line-height:1}.material-symbols-outlined.filled{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.skeleton{background:linear-gradient(90deg,#f5f3f3 25%,#eae8e7,#f5f3f3 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:.5rem}.skeleton-text{height:16px;margin-bottom:8px}.skeleton-text.short{width:40%}.skeleton-text.medium{width:70%}.skeleton-text.long{width:100%}.skeleton-title{height:28px;width:60%;margin-bottom:12px}.skeleton-card{height:200px;width:100%}.skeleton-avatar{width:48px;height:48px;border-radius:9999px}.skeleton-image{width:100%;aspect-ratio:4/3}.skeleton-pill{width:100px;height:32px;border-radius:9999px}.recipe-card-skeleton{background:#fff;border-radius:1.5rem;overflow:hidden;box-shadow:0 4px 8px #0000001a;display:flex;flex-direction:column}.recipe-card-skeleton-body{padding:24px;display:flex;flex-direction:column;gap:12px}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.app-layout{display:flex;min-height:100vh}.app-content{flex:1;display:flex;flex-direction:column;margin-left:64px;min-height:100vh;padding-top:56px;overflow-x:hidden}@media (max-width: 767px){.app-content{margin-left:0;padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}}.app-content>footer{flex-shrink:0;margin-top:auto}.app-content--full{margin-left:0;padding-top:0}.app-content--landing{margin-left:0}@media (max-width: 767px){.app-content--landing{padding-bottom:0}}.app-content--sidebar{padding-top:0}.app-main{flex:1;padding:48px 64px;max-width:1200px;width:100%;margin:0 auto}@media (max-width: 767px){.app-main{padding:24px 16px}}.app-main--full{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:48px}.app-main--landing{padding:0;max-width:100%}@media (max-width: 767px){.app-main--landing{padding:0}}.loading-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px;text-align:center}.spinner{width:48px;height:48px;border:3px solid rgba(197,83,28,.2);border-top-color:#c5531c;border-radius:50%;animation:spin .8s linear infinite;margin-bottom:24px}@keyframes spin{to{transform:rotate(360deg)}}.material-symbols-outlined.spinning{display:inline-block;animation:spin .8s linear infinite}.spinner-small{display:inline-block;width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}.loading-text{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:16px;font-weight:400;line-height:24px;color:#594138}.error-banner{background:#ba1a1a14;border:1px solid rgba(186,26,26,.2);border-radius:1rem;padding:24px;margin-bottom:24px;display:flex;align-items:center;gap:24px}.error-banner .material-symbols-outlined{color:#ba1a1a;font-size:22px;flex-shrink:0}.error-text{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:400;line-height:20px;color:#ba1a1a;flex:1}.error-close{background:none;border:none;cursor:pointer;color:#ba1a1a;padding:4px}.error-close .material-symbols-outlined{font-size:18px}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:#fbf9f8}.error-boundary-card{background:#fff;border:1px solid rgba(225,191,179,.3);border-radius:1.5rem;box-shadow:0 4px 8px #0000001a;padding:80px;text-align:center;max-width:480px;width:100%}.error-boundary-card .material-symbols-outlined{font-size:48px;color:#ba1a1a;margin-bottom:24px}.error-boundary-card h2{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:32px;font-weight:700;line-height:40px;color:#1b1c1c;margin-bottom:12px}@media (max-width: 767px){.error-boundary-card h2{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:24px;font-weight:700;line-height:32px}}.error-boundary-card p{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:16px;font-weight:400;line-height:24px;color:#594138;margin-bottom:48px}.btn-outline{display:inline-flex;align-items:center;gap:8px;background:transparent;color:#594138;border:1px solid #e1bfb3;border-radius:1.5rem;padding:12px 24px;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-outline:hover{background:#1b1c1c0a;border-color:#c5531c;color:#8a3000}.btn-outline:active{background:#1b1c1c14}.btn-outline:disabled{opacity:.5;cursor:not-allowed}.btn-primary{display:inline-flex;align-items:center;gap:8px;background:#c5531c;color:#fff;border:none;border-radius:1.5rem;padding:12px 24px;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:700;cursor:pointer;transition:all .15s ease;box-shadow:0 2px 4px #c5531c4d}.btn-primary:hover{background:#af4a19;transform:translateY(-1px);box-shadow:0 4px 8px #c5531c59}.btn-primary:active{transform:translateY(0);box-shadow:0 1px 2px #c5531c4d}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{display:inline-flex;align-items:center;gap:8px;background:transparent;color:#3b6934;border:2px solid #3b6934;border-radius:1.5rem;padding:12px 24px;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-secondary:hover{background:#3b69340f;border-color:#2c4e26;color:#2c4e26;transform:translateY(-1px)}.btn-secondary:active{transform:translateY(0)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed;transform:none}.auth-gate{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:48px}.auth-gate__card{background:#fff;border-radius:1.5rem;box-shadow:0 4px 8px #0000001a;padding:80px 48px;max-width:460px;width:100%;text-align:center}.auth-gate__icon{font-size:48px;margin-bottom:24px}.auth-gate__title{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:20px;font-weight:700;color:#1b1c1c;margin-bottom:12px}.auth-gate__text{font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-size:16px;color:#594138;line-height:24px;margin-bottom:24px}.auth-gate__actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.auth-gate__actions .button{padding:12px 24px;border-radius:9999px;font-family:Plus Jakarta Sans,PJS Fallback,sans-serif;font-weight:600;font-size:14px;text-decoration:none;cursor:pointer;transition:all .15s ease;border:none}.auth-gate__actions .button--primary{background:#c5531c;color:#fff}.auth-gate__actions .button--primary:hover{background:#8a3000}.auth-gate__actions .button--secondary{background:#eae8e7;color:#1b1c1c}.auth-gate__actions .button--secondary:hover{background:#e4e2e2}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media print{body{background:#fff!important;color:#000!important}.sidebar,.topbar,.bottom-nav,.week-actions,.meal-card-actions,.meal-feedback,.feedback-comment-display,.feedback-comment-editor,.shopping-actions,.shopping-progress{display:none!important}.app-content{margin-left:0!important;padding:0!important}.app-main{padding:20px!important;max-width:100%!important}.shopping-item.checked{text-decoration:line-through;opacity:.6}}
