:root{--paper: #f7f3ea;--paper-2: #efe8d8;--card: #fffdf7;--ink: #18140f;--ink-soft: #756b5c;--line: #e2dac8;--rule: #18140f;--brand: #1f7a4d;--brand-deep: #14583a;--cal: #1f7a4d;--fat: #d98a2b;--carb: #2d62d6;--pro: #d14a33;--ocr: #7a4f9e;--danger: #c0392b;--font-display: "Space Grotesk", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "SF Mono", "SFMono-Regular", Menlo, monospace;--r: 12px;--safe-top: env(safe-area-inset-top, 0px);--safe-bot: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-display);font-feature-settings:"tnum" 1,"cv05" 1;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}.app{display:flex;flex-direction:column;height:100%}.content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.screen{padding:calc(var(--safe-top) + 14px) 16px 28px;display:flex;flex-direction:column;gap:14px;min-height:100%}.eyebrow,.sez-label{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:2px 2px 0}.topbar h1{margin:2px 0 0;font-size:34px;font-weight:700;letter-spacing:-1px}.titolo-centro{flex:1;text-align:center;font-size:19px!important;letter-spacing:-.2px}.data-oggi{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--brand)}.data-piccola{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:12px}.etichetta{border:1.5px solid var(--ink);border-radius:14px;padding:18px;gap:14px}.etichetta-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.hero{display:flex;align-items:baseline;gap:10px}.hero-num{font-size:58px;font-weight:700;line-height:.9;letter-spacing:-2px}.hero-meta{display:flex;flex-direction:column}.hero-unit{font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.hero-goal{font-size:15px;color:var(--ink-soft);font-weight:500}.rule{height:0;border-top:2px solid var(--rule);margin:2px 0}.hairline{height:0;border-top:1px solid var(--line)}.macro{display:flex;flex-direction:column;gap:7px}.macro-head{display:flex;justify-content:space-between;align-items:baseline}.macro-titolo{font-family:var(--font-mono);font-size:11.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase}.macro-valori{color:var(--ink-soft);font-size:13px;font-weight:500}.track{height:8px;background:var(--paper-2);border-radius:3px;overflow:hidden}.track.big{height:10px}.fill{height:100%;border-radius:3px;transition:width .5s cubic-bezier(.22,.61,.36,1)}.meal{gap:10px}.meal-head{background:none;border:none;color:var(--ink);display:flex;justify-content:space-between;align-items:center;width:100%;padding:0;font:inherit;cursor:pointer;text-align:left}.meal-head:disabled{cursor:default}.meal-id{display:flex;flex-direction:column;gap:2px}.meal-orario{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;color:var(--ink-soft)}.meal-titolo{font-size:19px;font-weight:700;letter-spacing:-.3px}.meal-kcal{font-size:15px;font-weight:600;color:var(--ink-soft);display:flex;align-items:baseline;gap:4px}.meal-kcal .u{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}.chevron{color:var(--line);font-size:18px}.vuoto{color:var(--ink-soft);font-size:13.5px;padding:2px 0}.vuoto-grande{text-align:center;color:var(--ink-soft);padding:30px;line-height:1.7}.food-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.food-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line)}.food-row:first-child{border-top:none}.food-info{flex:1;min-width:0}.food-nome{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.food-sub{color:var(--ink-soft);font-family:var(--font-mono);font-size:11px;letter-spacing:.02em;margin-top:3px}.food-kcal{font-size:14px;font-weight:700}.food-kcal .u{font-family:var(--font-mono);font-size:9px;color:var(--ink-soft);letter-spacing:.08em;margin-left:2px}.del{background:none;border:1px solid var(--line);color:var(--ink-soft);width:28px;height:28px;border-radius:8px;cursor:pointer;font-size:12px;flex:none}.del:active{background:var(--paper-2)}.badge{font-family:var(--font-mono);font-size:9.5px;font-weight:500;padding:2px 6px;border-radius:5px;text-transform:uppercase;letter-spacing:.08em;border:1px solid transparent}.badge-ocr{color:var(--ocr);border-color:color-mix(in srgb,var(--ocr) 35%,transparent);background:color-mix(in srgb,var(--ocr) 8%,transparent)}.badge-api{color:var(--brand-deep);border-color:color-mix(in srgb,var(--brand) 35%,transparent);background:color-mix(in srgb,var(--brand) 8%,transparent)}.badge-manual{color:var(--ink-soft);border-color:var(--line);background:var(--paper-2)}.badge-fresco{color:var(--cal);border-color:color-mix(in srgb,var(--cal) 35%,transparent);background:color-mix(in srgb,var(--cal) 8%,transparent)}.qta-modo{margin-bottom:10px}.fab{position:sticky;bottom:12px;margin-top:8px;background:var(--brand);color:#fff;border:none;border-radius:12px;padding:16px;font:inherit;font-size:16px;font-weight:600;letter-spacing:-.2px;cursor:pointer;box-shadow:0 10px 24px -10px color-mix(in srgb,var(--brand) 70%,transparent)}.fab:active{background:var(--brand-deep)}.tabbar{display:flex;background:var(--paper);border-top:1.5px solid var(--ink);padding-bottom:var(--safe-bot)}.tab{flex:1;background:none;border:none;border-top:2px solid transparent;margin-top:-1.5px;color:var(--ink-soft);padding:13px 4px;display:flex;justify-content:center;cursor:pointer}.tab-label{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase}.tab.attivo{color:var(--ink);border-top-color:var(--brand)}.tab.attivo .tab-label{color:var(--brand-deep)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--paper);display:flex;flex-direction:column;z-index:50;animation:rise .28s cubic-bezier(.22,.61,.36,1)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 14px) 16px 13px;border-bottom:1.5px solid var(--ink)}.modal-head h2{margin:0;font-size:16px;font-weight:700;letter-spacing:-.2px}.modal-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px}.link{background:none;border:none;color:var(--brand-deep);font:inherit;font-size:16px;cursor:pointer;padding:4px}.link:disabled{color:var(--ink-soft);opacity:.45}.link.forte{font-weight:700}.rimuovi{color:var(--ink-soft);font-size:13px;padding:4px 0;text-align:left}.segmented{display:flex;border:1.5px solid var(--ink);border-radius:11px;padding:3px;gap:3px}.seg{flex:1;background:none;border:none;color:var(--ink-soft);padding:9px 4px;border-radius:8px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}.seg.attivo{background:var(--ink);color:var(--paper)}.inp{width:100%;background:var(--card);border:1.5px solid var(--line);color:var(--ink);border-radius:11px;padding:13px 14px;font:inherit;font-size:16px}.inp:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}.inp.piccolo{width:116px;text-align:right}.inp.errore{border-color:var(--danger);color:var(--danger)}.row-inline{display:flex;align-items:center;justify-content:space-between;gap:10px}.totale-riga{padding:9px 0;font-size:15px;border-top:1px solid var(--line)}.totale-riga:first-of-type{border-top:none}.num{color:var(--ink);font-weight:600}.btn-primary{background:var(--brand);color:#fff;border:none;border-radius:11px;padding:15px;font:inherit;font-size:16px;font-weight:600;cursor:pointer;width:100%;letter-spacing:-.2px}.btn-primary:active{background:var(--brand-deep)}.btn-primary:disabled{opacity:.45}.btn-sec{background:var(--paper-2);color:var(--ink);border:1.5px solid var(--line);border-radius:11px;padding:12px;font:inherit;font-size:14px;font-weight:500;cursor:pointer;width:100%}.hint{color:var(--ink-soft);font-size:12.5px;line-height:1.55;margin:0}.hint.ok{color:var(--brand-deep)}.hint.err,.err{color:var(--danger)}.banner-err{background:color-mix(in srgb,var(--danger) 9%,transparent);color:var(--danger);padding:12px 14px;border:1px solid color-mix(in srgb,var(--danger) 30%,transparent);border-radius:11px;font-size:13px}.suggerimento{width:100%;text-align:left;background:var(--card);border:1.5px solid var(--line);border-radius:11px;padding:12px 14px;color:var(--ink);font:inherit;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:10px}.suggerimento:active{border-color:var(--brand)}.sugg-kcal{color:var(--ink-soft);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;white-space:nowrap}.sugg-nome{display:flex;align-items:center;gap:8px;min-width:0}.mini-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin:4px 0 2px}.ocr-box{background:color-mix(in srgb,var(--ocr) 6%,transparent);border:1.5px solid color-mix(in srgb,var(--ocr) 35%,transparent);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px}.ocr-title{color:var(--ocr);font-family:var(--font-mono);font-weight:500;font-size:12px;letter-spacing:.06em;text-transform:uppercase}.ocr-lab{color:var(--ink-soft);font-size:13px}.ocr-raw{margin-top:2px}.ocr-raw summary{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ocr);cursor:pointer}.ocr-raw pre{margin:8px 0 0;padding:10px;background:var(--paper-2);border-radius:8px;font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--ink);white-space:pre-wrap;word-break:break-word;max-height:180px;overflow:auto}.campo-obiettivo{gap:10px;padding:9px 0;border-top:1px solid var(--line)}.campo-obiettivo:first-of-type{border-top:none}.campo-nome{flex:1;font-size:15px;font-weight:500}.campo-unita{font-family:var(--font-mono);color:var(--ink-soft);font-size:11px;letter-spacing:.08em;text-transform:uppercase;width:34px}.dot{width:10px;height:10px;border-radius:3px;flex:none}.donut-wrap{display:flex;flex-direction:column;align-items:center;gap:16px;padding:4px 0}.donut{width:184px;height:184px;border-radius:99px;display:grid;place-items:center}.donut-hole{width:116px;height:116px;background:var(--card);border-radius:99px;display:grid;place-content:center;text-align:center;box-shadow:inset 0 0 0 1px var(--line)}.donut-num{font-size:30px;font-weight:700;letter-spacing:-1px}.donut-sub{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.legend{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}.legend-item{display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.04em;color:var(--ink-soft)}.giorno-riga{flex-direction:row;align-items:center;justify-content:space-between;cursor:pointer;text-align:left;color:var(--ink)}.giorno-nome{font-size:17px;font-weight:700;letter-spacing:-.3px;text-transform:capitalize}.giorno-kcal{color:var(--ink-soft);font-weight:600}.loading{padding:48px;text-align:center;color:var(--ink-soft);font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase}.versione{text-align:center;color:var(--ink-soft);font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;margin:4px 0 0}@media (prefers-reduced-motion: no-preference){.screen>*{animation:rise .42s cubic-bezier(.22,.61,.36,1) both}.screen>*:nth-child(2){animation-delay:.04s}.screen>*:nth-child(3){animation-delay:.08s}.screen>*:nth-child(4){animation-delay:.12s}.screen>*:nth-child(5){animation-delay:.16s}.screen>*:nth-child(6){animation-delay:.2s}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.modal{animation:none}.fill{transition:none}}.tab{padding-left:2px;padding-right:2px}.tab-label{font-size:10px;letter-spacing:.05em;white-space:nowrap}.hero.piccolo .hero-num{font-size:40px;letter-spacing:-1px}.acqua-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.acqua-val{font-family:var(--font-mono);font-weight:600;font-size:14px}.acqua-goal{color:var(--ink-soft);font-weight:500}.acqua-azioni{display:flex;align-items:center;justify-content:space-between;margin-top:12px}.acqua-bicchieri{font-size:13px;color:var(--ink-soft)}.acqua-btn{width:46px;height:46px;border-radius:12px;border:1.5px solid var(--line);background:var(--paper-2);font-size:22px;font-weight:600;color:var(--ink);cursor:pointer;line-height:1}.acqua-btn.forte{background:var(--carb);color:#fff;border-color:var(--carb)}.acqua-btn:disabled{opacity:.4}.ripeti{margin-top:2px}.chart{width:100%;height:auto;display:block;margin:6px 0 2px}.periodo{margin-bottom:4px}.peso-input{margin-top:12px;gap:8px}.btn-sec.mini{width:auto;padding:9px 14px;font-size:13px;flex:none}.btn-elimina{background:none;border:1.5px solid color-mix(in srgb,var(--pro) 40%,transparent);color:var(--pro);border-radius:11px;padding:14px;font:inherit;font-weight:600;cursor:pointer;width:100%}.btn-elimina:active{background:color-mix(in srgb,var(--pro) 8%,transparent)}.food-info.tap{display:block;background:none;border:none;text-align:left;padding:0;font:inherit;color:inherit;cursor:pointer;flex:1;min-width:0}.scan-btn{margin-top:10px}.scanner{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#000;display:flex;flex-direction:column}.scanner-head{background:#000;color:#fff;border-bottom-color:#ffffff2e}.scanner-head h2,.scanner-head .link{color:#fff}.scanner-viewport{position:relative;flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center}.scanner-video{width:100%;height:100%;object-fit:cover}.scanner-mirino{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:74%;height:150px;border:3px solid rgba(255,255,255,.9);border-radius:16px;box-shadow:0 0 0 9999px #00000073}.scanner-hint{position:absolute;bottom:calc(var(--safe-bot) + 28px);left:0;right:0;text-align:center;color:#fff;font-size:14px;padding:0 24px}.scanner-errore{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:#fff;text-align:center;padding:32px}.scanner-errore .btn-primary{width:auto;padding:14px 28px}
