*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #F5F2EE;--surface: #ffffff;--surface-2: #f5f4ef;--surface-3: #f0efe8;--border: rgba(0,0,0,.07);--border-strong: rgba(0,0,0,.12);--text-primary: #111111;--text-secondary: #a8a49a;--text-tertiary: #c4c1b8;--accent: #16a34a;--accent-light: #f0fdf4;--accent-border: #bbf7d0;--accent-dark: #111111;--color-dark: #111111;--font-serif: "Instrument Serif", serif;--font-sans: "DM Sans", sans-serif;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 100px;--text-1: var(--text-primary);--text-2: var(--text-secondary);--text-3: var(--text-tertiary);--border-2: var(--border-strong);--accent-lt: var(--accent-light);--accent-2: #e76f51;--danger: #c1121f;--radius: var(--radius-md);--shadow: 0 1px 3px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.05);--shadow-sm: 0 1px 3px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 12px rgba(0,0,0,.09), 0 1px 3px rgba(0,0,0,.06);--shadow-lg: 0 8px 24px rgba(0,0,0,.12), 0 2px 6px rgba(0,0,0,.06);--nav-bg: rgba(250,250,248,.92)}[data-theme=dark]{--bg: #0f0f0f;--surface: #1a1a1a;--surface-2: #222222;--surface-3: #2a2a2a;--border: rgba(255,255,255,.07);--border-strong: rgba(255,255,255,.12);--text-primary: #f5f5f5;--text-secondary: #666666;--text-tertiary: #444444;--accent-light: #0a1f0f;--accent-border: #1a3d20;--accent-dark: #ffffff;--text-1: var(--text-primary);--text-2: var(--text-secondary);--text-3: var(--text-tertiary);--border-2: var(--border-strong);--accent-lt: var(--accent-light);--accent: #22c55e;--accent-2: #f4845f;--shadow: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2);--shadow-md: 0 4px 16px rgba(0,0,0,.4);--nav-bg: rgba(15,15,15,.92)}html{font-size:16px;overflow-x:hidden}body{overflow-x:hidden}body{font-family:var(--font-sans);background:var(--bg);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;transition:background .2s,color .2s}h1,h2,h3{font-family:"Instrument Serif",serif;line-height:1.2}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}.page{min-height:100vh;padding:24px 20px 60px;max-width:680px;margin:0 auto}.page-wide{max-width:900px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.card+.card{margin-top:12px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:12px;font-weight:500;color:var(--text-2);letter-spacing:.02em}.field input,.field select{padding:10px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text-1);font-size:15px;transition:border-color .15s,box-shadow .15s;outline:none}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2d6a4f1a}.field input::placeholder{color:var(--text-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:500;border:none;transition:all .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#236040;transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:var(--surface);color:var(--text-1);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--border-2);background:var(--bg)}.btn-ghost{background:transparent;color:var(--text-2)}.btn-ghost:hover{color:var(--text-1);background:var(--border)}.btn-full{width:100%}.btn-sm{padding:7px 14px;font-size:13px}.title-xl{font-size:clamp(28px,5vw,40px)}.title-lg{font-size:24px}.title-md{font-size:18px}.body-sm{font-size:13px;color:var(--text-2)}.muted{color:var(--text-3);font-size:12px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:16px}.stat-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.stat-box .stat-label{font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin-bottom:6px}.stat-box .stat-value{font-family:Plus Jakarta Sans,sans-serif;font-size:26px;font-weight:700;line-height:1;color:var(--text-1);letter-spacing:-.02em}.stat-box .stat-unit{font-size:12px;color:var(--text-3);margin-top:2px}.macro-chip{display:flex;align-items:center;gap:5px;padding:5px 10px;border-radius:99px;font-size:12px}.chip-protein{background:#2d6a4f1a;color:#2d6a4f}.chip-carbs{background:#b453091a;color:#b45309}.chip-fat{background:#1d4ed81a;color:#1d4ed8}[data-theme=dark] .chip-protein{background:#52b78826;color:#52b788}[data-theme=dark] .chip-carbs{background:#fbbf2426;color:#fbbf24}[data-theme=dark] .chip-fat{background:#60a5fa26;color:#60a5fa}.progress-track{height:6px;background:var(--border);border-radius:99px;overflow:hidden;margin-top:8px}.progress-fill{height:100%;background:var(--accent);border-radius:99px;transition:width .6s cubic-bezier(.4,0,.2,1)}.progress-fill.over{background:var(--accent-2)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:500}.badge-green{background:var(--accent-lt);color:var(--accent)}.badge-orange{background:#e76f5126;color:var(--accent-2)}.badge-gray{background:var(--border);color:var(--text-2)}.alert{padding:12px 14px;border-radius:8px;font-size:13px;margin-top:12px}.alert-error{background:#c1121f14;color:var(--danger)}.alert-success{background:var(--accent-lt);color:var(--accent)}.divider{height:1px;background:var(--border);margin:20px 0}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .3s ease forwards}.stagger>*:nth-child(1){animation:fadeUp .3s .05s ease both}.stagger>*:nth-child(2){animation:fadeUp .3s .1s ease both}.stagger>*:nth-child(3){animation:fadeUp .3s .15s ease both}.stagger>*:nth-child(4){animation:fadeUp .3s .2s ease both}.stagger>*:nth-child(5){animation:fadeUp .3s .25s ease both}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes scanLine{0%{top:6%}to{top:88%}}.scan-line{position:absolute;left:0;right:0;height:2px;background:#2d6a4f;box-shadow:0 0 6px #2d6a4f99;animation:scanLine 1.5s ease-in-out infinite alternate}#barcode-reader-container img,#barcode-reader-container select,#barcode-reader-container button:not(.btn){display:none!important}.nav-hamburger{display:none}@media (max-width: 767px){.nav-links,.nav-username,.nav-logout,.nav-hamburger{display:none!important}}.bottom-nav{display:none}@media (max-width: 767px){.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;width:100%;z-index:90;background:var(--surface);border-top:.5px solid var(--border);padding-bottom:max(env(safe-area-inset-bottom),8px)}.bottom-nav__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px 4px 6px;color:var(--text-tertiary);text-decoration:none;transition:color .12s,opacity .12s;-webkit-tap-highlight-color:transparent}.bottom-nav__item:active{opacity:.6}.bottom-nav__item--active{color:var(--accent)}.bottom-nav__label{font-family:var(--font-sans);font-size:10px;font-weight:400;letter-spacing:.01em;line-height:1}.page{padding-bottom:calc(64px + env(safe-area-inset-bottom))}.assistant-chat{height:calc(100dvh - 108px - env(safe-area-inset-bottom))!important}.profile-logout-mobile{display:block!important}}.nav-mobile-menu{padding:8px 20px 16px;display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--border);background:var(--surface)}.nav-mobile-menu a,.nav-mobile-menu button{padding:10px 14px;border-radius:8px;font-size:15px;font-weight:500;color:var(--text-2);text-align:left;background:none;border:none;width:100%;transition:background .15s,color .15s}.nav-mobile-menu a:hover,.nav-mobile-menu button:hover{background:var(--bg);color:var(--text-1)}.nav-mobile-menu a.active{color:var(--accent);background:var(--accent-lt)}.meal-selector{display:flex;background:var(--surface);border-radius:12px;padding:3px;box-shadow:var(--shadow-sm);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.meal-selector::-webkit-scrollbar{display:none}.meal-selector__tab{flex:1;min-width:fit-content;padding:7px 12px;text-align:center;font-family:var(--font-sans);font-size:12px;color:var(--text-secondary);border-radius:9px;cursor:pointer;background:transparent;border:none;white-space:nowrap;transition:all .15s ease;-webkit-tap-highlight-color:transparent}.meal-selector__tab--active{background:var(--color-dark);color:#fff;font-weight:500}.macro-input{background:var(--surface-2);border-radius:10px;padding:10px 8px 8px;text-align:center;position:relative;overflow:hidden}.macro-input:before{content:"";position:absolute;top:0;left:0;right:0;height:2px}.macro-input--protein:before{background:var(--accent)}.macro-input--carbs:before{background:#f59e0b}.macro-input--fat:before{background:#60a5fa}.macro-input input{font-size:18px;font-weight:600;color:var(--text-primary);background:transparent;border:none;outline:none;width:100%;text-align:center;font-family:var(--font-sans);padding:0}.macro-input__label{font-size:9px;color:var(--text-secondary);margin-top:3px;font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.save-btn-dark{background:var(--color-dark);color:#fff;border-radius:12px;padding:14px;font-family:var(--font-sans);font-size:14px;font-weight:500;cursor:pointer;border:none;width:100%;transition:opacity .2s,transform .1s;display:flex;align-items:center;justify-content:center;gap:8px}.save-btn-dark:disabled{opacity:.35;cursor:not-allowed}.save-btn-dark:active:not(:disabled){transform:scale(.98);opacity:.9}.context-strip{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;padding:0 16px 10px;flex-shrink:0}.ctx-pill{background:var(--surface);border-radius:10px;padding:8px;text-align:center;box-shadow:var(--shadow-sm)}.ctx-pill__num{display:block;font-size:14px;font-weight:600;color:var(--text-primary);line-height:1.2}.ctx-pill__num--green{color:var(--accent)}.ctx-pill__label{display:block;font-size:9px;color:var(--text-secondary);margin-top:2px;font-family:var(--font-sans)}
