:root{--ink:#0a1020;--ink-soft:#3a4560;--muted:#5a6780;--border:#e3e9f2;--border-strong:#c3cddd;--bg:#f4f7fb;--card:#fff;--green:#10d9a0;--lime:#b6f23a;--accent:#067a58;--gradient:linear-gradient(135deg, var(--green), var(--lime));--error:#b42318;--radius:16px;--touch:48px;--tabs-height:72px;color:var(--ink);background:var(--bg);letter-spacing:-.012em;-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;margin:0}.gate{max-width:480px;min-height:100dvh;padding:max(24px, env(safe-area-inset-top)) 28px max(40px, env(safe-area-inset-bottom));flex-direction:column;gap:24px;margin:0 auto;display:flex}.gate--signin{background:radial-gradient(130% 55% at 50% 0%, #ddf8ee 0%, var(--bg) 62%)}.gate--center{justify-content:center}.gate__brand{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;display:flex}.gate__icon{border-radius:27px}.gate__icon--small{border-radius:16px;width:72px;height:72px}.gate__wordmark{margin:0;line-height:0}.gate__wordmark img{max-width:100%;height:auto;display:block}.gate__tagline{color:var(--muted);margin:-12px 0 0;font-size:1.0625rem;line-height:1.4}.gate__title{margin:0;font-size:1.5rem;font-weight:700;line-height:1.2}.gate__text{color:var(--muted);overflow-wrap:anywhere;margin:0}.gate__text strong{color:var(--ink)}.gate__actions{flex-direction:column;gap:14px;display:flex}.gate__note{color:var(--muted);text-align:center;margin:0;font-size:.875rem;line-height:1.45}.field__label{font-weight:600}.field__input{min-height:var(--touch);border:1px solid var(--border-strong);background:var(--card);color:var(--ink);font:inherit;border-radius:12px;padding:0 16px;font-size:1rem}.field__input:focus-visible{outline:3px solid var(--green);outline-offset:1px;border-color:var(--accent)}.field__input[aria-invalid=true]{border-color:var(--error)}.status{background:var(--card);border-radius:var(--radius);text-align:center;flex-direction:column;align-items:center;gap:8px;padding:24px 16px;display:flex;box-shadow:0 1px 3px #0a102014}.status__title{margin:0;font-weight:700}.status__detail{color:var(--ink-soft);overflow-wrap:anywhere;margin:0}.status--error .status__title{color:var(--error)}.status__spinner{border:3px solid #0a10201f;border-top-color:var(--green);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.status__spinner{animation:none}}.button{min-height:var(--touch);min-width:var(--touch);background:var(--card);color:var(--ink);font:inherit;cursor:pointer;border:1px solid #0a102026;border-radius:999px;padding:0 24px;font-weight:700}.button--primary{background:var(--ink);color:#fff;border-color:var(--ink)}.button:disabled{opacity:.6;cursor:default}.button:focus-visible{outline:3px solid var(--green);outline-offset:2px}.button--google{justify-content:center;align-items:center;gap:12px;min-height:56px;font-size:1.0625rem;font-weight:600;display:flex}.button__g{width:26px;height:26px;color:var(--ink);background:#fff;border-radius:13px;justify-content:center;align-items:center;font-size:15px;font-weight:700;display:flex}.shell{min-height:100dvh;padding-bottom:calc(var(--tabs-height) + env(safe-area-inset-bottom));flex-direction:column;display:flex}.shell__header{width:100%;max-width:480px;padding:max(16px, env(safe-area-inset-top)) 20px 0;justify-content:space-between;align-items:center;gap:12px;margin:0 auto;display:flex}.shell__title{margin:0;font-size:1.75rem;font-weight:700;line-height:1.1}.shell__title:focus{outline:none}.shell__settings{width:var(--touch);height:var(--touch);border-radius:12px;justify-content:center;align-items:center;display:flex}.shell__settings img{border-radius:8px;display:block}.shell__settings:focus-visible{outline:3px solid var(--green);outline-offset:2px}.shell__settings[aria-current=page] img{box-shadow:0 0 0 3px var(--green)}.shell__main{flex:1;width:100%;max-width:480px;margin:0 auto;padding:20px}.placeholder{flex-direction:column;gap:16px;display:flex}.tabs{height:calc(var(--tabs-height) + env(safe-area-inset-bottom));padding:8px 8px env(safe-area-inset-bottom);background:var(--card);border-top:1px solid var(--border);justify-content:space-around;align-items:flex-start;display:flex;position:fixed;bottom:0;left:0;right:0}.tabs__tab{min-height:56px;color:var(--muted);border-radius:12px;flex-direction:column;flex:0 110px;justify-content:center;align-items:center;gap:2px;font-size:.75rem;font-weight:600;text-decoration:none;display:flex}.tabs__tab[aria-current=page]{color:var(--accent);font-weight:700}.tabs__tab:focus-visible{outline:3px solid var(--green);outline-offset:-3px}.settings{flex-direction:column;gap:16px;display:flex}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:12px;padding:16px;display:flex}.card--center{text-align:center;align-items:center}.card__title{margin:0;font-size:1.0625rem;font-weight:700}.card__text{color:var(--muted);overflow-wrap:anywhere;margin:0}.card__ok{color:var(--accent);overflow-wrap:anywhere;margin:0;font-weight:600}.card__link{color:var(--ink-soft);overflow-wrap:anywhere;margin:0;font-size:.875rem}.field__row{gap:8px;display:flex}.field__row .field__input{flex:1;min-width:0}.field__hint,.field__error{color:var(--muted);margin:0;font-size:.875rem}.field__error{color:var(--error);font-weight:600}.add-email{border-top:1px solid var(--border);flex-direction:column;gap:8px;padding-top:4px;display:flex}.add-email .field__label{padding-top:8px}.people{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.people__row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.people__row:last-child{border-bottom:0}.people__who{flex-direction:column;min-width:0;display:flex}.people__email{overflow-wrap:anywhere;font-weight:600}.people__state{color:var(--muted);font-size:.875rem}.button--small{flex-shrink:0;padding:0 16px}.button--danger{background:var(--error);color:#fff;border-color:var(--error)}.qr{border-radius:8px;display:block}.qr--loading{justify-content:center;align-items:center;display:flex}.settings__version{text-align:center;color:var(--muted);margin:0;font-size:.875rem}.dialog__backdrop{z-index:10;background:#0a102073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{background:var(--card);border-radius:var(--radius);flex-direction:column;gap:12px;width:100%;max-width:400px;padding:20px;display:flex;box-shadow:0 12px 32px #0a102040}.dialog__title{overflow-wrap:anywhere;margin:0;font-size:1.125rem}.dialog__body p{color:var(--ink-soft);margin:0}.dialog__actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.catalog{flex-direction:column;gap:12px;margin-top:-16px;display:flex}.catalog__input{border-radius:14px;width:100%}.catalog__input::-webkit-search-cancel-button{cursor:pointer}.chips{scrollbar-width:none;gap:8px;margin:0 -20px;padding:0 20px 4px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--border-strong);background:var(--card);min-height:44px;color:var(--ink);font:inherit;white-space:nowrap;cursor:pointer;border-radius:22px;flex:none;padding:0 16px;font-size:.875rem;font-weight:600}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.chip:focus-visible{outline:3px solid var(--green);outline-offset:2px}.entries{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.entry{background:var(--card);border:1px solid var(--border);border-radius:14px;align-items:center;gap:12px;padding:10px 14px 10px 10px;display:flex}.entry__tile{border-radius:10px;flex:none;justify-content:center;align-items:center;width:56px;height:56px;font-size:1.25rem;font-weight:700;display:flex}.entry__tile--0{color:#067a58;background:#ddf8ee}.entry__tile--1{color:#7c4a06;background:#f3e4c9}.entry__tile--2{color:#2b3f7a;background:#e3e8f5}.entry__text{flex-direction:column;flex:1;min-width:0;display:flex}.entry__name{overflow-wrap:anywhere;font-weight:600;line-height:1.3}.entry__sub{color:var(--muted);overflow-wrap:anywhere;font-size:.8125rem;line-height:1.35}.entry__carbs{text-align:right;flex-direction:column;flex:none;align-items:flex-end;display:flex}.entry__grams{white-space:nowrap;font-size:1.0625rem;font-weight:700;line-height:1.3}.entry__per{color:var(--muted);white-space:nowrap;font-size:.75rem}.entry__item{display:block}.entry--button{width:100%;font:inherit;color:inherit;text-align:left;letter-spacing:inherit;cursor:pointer}.entry--button:focus-visible{outline:3px solid var(--green);outline-offset:2px}.entry--button:active{background:#eef3f9}.chip--action{color:var(--accent)}.catalog{padding-bottom:72px}.fab{z-index:2;right:max(20px,50vw - 220px);bottom:calc(100px + env(safe-area-inset-bottom));background:var(--ink);color:#fff;min-height:52px;font:inherit;cursor:pointer;border:0;border-radius:26px;align-items:center;gap:8px;padding:0 22px;font-size:1rem;font-weight:600;display:flex;position:fixed;box-shadow:0 6px 16px #1b2b2640}.fab:focus-visible{outline:3px solid var(--green);outline-offset:3px}.sheet{z-index:5;background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0}.sheet__header,.sheet__body,.sheet__footer{width:100%;max-width:480px;margin:0 auto}.sheet__header{padding:max(12px, env(safe-area-inset-top)) 20px 8px 8px;align-items:center;gap:4px;display:flex}.sheet__back{width:var(--touch);height:var(--touch);color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:12px;justify-content:center;align-items:center;display:flex}.sheet__back:focus-visible{outline:3px solid var(--green);outline-offset:-3px}.sheet__title{margin:0;font-size:1.25rem;font-weight:700;line-height:1.2}.sheet__title:focus{outline:none}.sheet__body{flex-direction:column;flex:1;gap:14px;padding:8px 20px 24px;display:flex;overflow-y:auto}.sheet__footer{max-width:none;padding:16px max(20px, calc((100% - 440px) / 2)) calc(24px + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid #d9e0ec;gap:12px;display:flex}.form{flex-direction:column;gap:14px;display:flex}.form__field{flex-direction:column;display:flex}.form .field__label,.sheet .field__label{margin-bottom:6px;font-size:.875rem;display:block}.form .field__label--small{font-size:.8125rem}.form .field__label--small:not(:first-child){margin-top:10px}.field__required{color:#a12b1d}.form__input{width:100%;min-width:0;padding:0 14px}.form__select{padding-right:8px}.form__big{align-items:center;gap:10px;display:flex}.form__input--big{border:2px solid #0a9c74;flex:1;min-height:56px;font-size:1.5rem;font-weight:700}.form__unit{width:28px;font-size:1.125rem;font-weight:600}.form__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.form__cell{flex-direction:column;min-width:0;display:flex}.form__cell .field__input{padding:0 12px}.form .field__hint.form__after-grid{margin-top:-6px}.form__textarea{resize:none;min-height:72px;padding:12px 14px;line-height:1.4}.form .field__hint,.sheet .field__hint{color:#44506a;margin-top:6px;font-size:.8125rem}.form .field__error,.sheet .field__error{margin-top:6px}.form__danger{border-top:1px solid var(--border);flex-direction:column;gap:8px;margin-top:8px;padding-top:16px;display:flex}.button--footer{min-height:56px}.button--save{background:var(--gradient);min-height:56px;color:var(--ink);border:0;flex:1;font-size:1.0625rem}.button--danger-outline{border-color:var(--error);color:var(--error)}.categories{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.categories__row{background:var(--card);border:1px solid var(--border);border-radius:14px;align-items:center;gap:8px;min-height:64px;padding:8px 8px 8px 14px;display:flex}.categories__name{overflow-wrap:anywhere;flex:1;min-width:0;font-weight:600}.categories__actions{flex:none;gap:6px;display:flex}.categories__edit{flex-direction:column;flex:1;min-width:0;display:flex}.categories__empty{text-align:center;padding:8px 0}.stepper{align-items:center;gap:6px;display:inline-flex}.stepper__button{width:var(--touch);height:var(--touch);border:1px solid var(--border-strong);background:var(--card);color:var(--ink);cursor:pointer;border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex}.stepper__button:disabled{color:var(--border-strong);border-color:var(--border);cursor:default}.stepper__button:focus-visible{outline:3px solid var(--green);outline-offset:2px}.stepper__value{align-items:baseline;gap:4px;display:flex}.stepper__input{width:4.5ch;min-height:var(--touch);color:var(--ink);font:inherit;text-align:center;background:0 0;border:1px solid #0000;border-radius:10px;padding:0 4px;font-size:1.125rem;font-weight:700}.stepper__input:focus-visible{outline:3px solid var(--green);outline-offset:1px;border-color:var(--accent);background:var(--card)}.stepper__unit{color:var(--muted);font-size:.875rem}.picker__backdrop{z-index:20;align-items:flex-end;padding:0}.picker{background:var(--bg);border-radius:20px 20px 0 0;flex-direction:column;width:100%;max-width:480px;height:min(88vh,720px);display:flex;box-shadow:0 -8px 32px #0a102040}.picker__header{justify-content:space-between;align-items:center;padding:12px 8px 4px 20px;display:flex}.picker__title{margin:0;font-size:1.25rem;font-weight:700}.picker__body{padding:8px 20px calc(24px + env(safe-area-inset-bottom));flex-direction:column;flex:1;gap:12px;display:flex;overflow-y:auto}.picker__body>.chips{flex:none}.picker__tile{width:44px;height:44px;font-size:1rem}.picker__added{color:var(--accent);background:#ddf8ee;border-radius:999px;flex:none;padding:4px 10px;font-size:.8125rem;font-weight:700}.toggle{background:#e6ebf3;border-radius:14px;gap:4px;padding:4px;display:flex}.toggle__option{min-height:44px;color:var(--ink-soft);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;flex:1;font-weight:600}.toggle__option[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #0a102026}.toggle__option:focus-visible{outline:3px solid var(--green);outline-offset:1px}.ingredients__title{margin:0;font-weight:400}.form .field__hint.ingredients__hint{margin:0 0 8px}.ingredients{flex-direction:column;gap:8px;margin:0 0 8px;padding:0;list-style:none;display:flex}.ingredients__row{background:var(--card);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:6px;padding:10px 10px 10px 14px;display:flex}.ingredients__text{flex-direction:column;min-width:0;display:flex}.ingredients__name{overflow-wrap:anywhere;font-weight:600}.ingredients__sub{color:var(--muted);overflow-wrap:anywhere;font-size:.8125rem}.ingredients__controls{justify-content:space-between;align-items:center;gap:8px;display:flex}.ingredients__remove{color:var(--error);border-color:#0000}.ingredients__add,.ingredients__recalc{width:100%}.form .field__hint.form__missing{color:#7c4a06;margin-top:-8px}
