:root{--canvas: #fbfbfa;--surface: #ffffff;--surface-muted: #f4f4f2;--track: #f3f4f6;--border: #e5e7eb;--divider: #eceef0;--ink: #111315;--ink-secondary: #6b7280;--ink-tertiary: #9ca3af;--ink-inverse: #ffffff;--ink-pressed: #272a30;--accent: #15803d;--on-accent: #ffffff;--accent-container: #dcfce7;--on-accent-container: #166534;--protein: #4338ca;--protein-container: #eef2ff;--carbs: #d97706;--carbs-container: #fef3c7;--fat: #dc2626;--fat-container: #fee2e2;--chip: #f3f4f6;--on-chip: #4b5563;--danger: #ba1a1a;--danger-container: #ffdad6;--radius: 16px;--radius-sm: 10px;--gutter: 16px;--tabbar-height: 60px;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--canvas);color:var(--ink);font:16px/1.4 var(--font)}button,input,select,textarea{font:inherit;color:inherit}.app{display:flex;flex-direction:column;height:100%;max-width:640px;margin:0 auto}.screen{flex:1;overflow-y:auto;padding:var(--gutter);padding-top:calc(var(--gutter) + env(safe-area-inset-top))}.tabbar{display:flex;height:calc(var(--tabbar-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--divider)}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--ink-tertiary);text-decoration:none;font-size:12px}.tab svg{width:24px;height:24px}.tab[aria-current=page]{color:var(--ink);font-weight:600}h1{font-size:28px;line-height:1.15;margin:0 0 4px;letter-spacing:-.02em}h2{font-size:18px;margin:24px 0 8px}.muted{color:var(--ink-secondary)}.small{font-size:13px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:12px}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:8px}.grow{flex:1;min-width:0}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:999px;padding:10px 18px;background:var(--ink);color:var(--ink-inverse);font-weight:600;cursor:pointer;min-height:44px}.btn:active{background:var(--ink-pressed)}.btn.secondary{background:var(--chip);color:var(--ink)}.btn.done{background:var(--accent);color:var(--on-accent)}.btn.danger{background:var(--danger-container);color:var(--danger)}.btn[disabled]{opacity:.45;cursor:default}.chip{display:inline-flex;align-items:center;border-radius:999px;padding:4px 10px;background:var(--chip);color:var(--on-chip);font-size:13px}.chip.protein{background:var(--protein-container);color:var(--protein)}.chip.carbs{background:var(--carbs-container);color:var(--carbs)}.chip.fat{background:var(--fat-container);color:var(--fat)}.chip.done{background:var(--accent-container);color:var(--on-accent-container)}.field{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);padding:10px 12px;min-height:44px}.empty{text-align:center;padding:48px 16px;color:var(--ink-secondary)}.progress{height:8px;background:var(--track);border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent)}.page-header{display:flex;align-items:center;gap:8px;margin-bottom:16px}.page-header h1{margin:0}.icon-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--ink);min-width:44px;min-height:44px;border-radius:999px;font-size:22px;line-height:1;cursor:pointer}.icon-btn:active{background:var(--track)}.chips{display:inline-flex;gap:6px;flex-wrap:wrap}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.danger-text{color:var(--danger)}.link{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;padding:0;color:var(--ink);text-decoration:underline;cursor:pointer}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#11131573;display:flex;align-items:flex-end;justify-content:center}.modal{width:100%;max-width:640px;max-height:88%;overflow-y:auto;background:var(--surface);border-radius:var(--radius) var(--radius) 0 0;padding:20px var(--gutter) calc(20px + env(safe-area-inset-bottom))}.modal-title{margin:0 0 12px}@media (min-width: 700px){.backdrop{align-items:center}.modal{border-radius:var(--radius)}}.menu-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--surface-muted);text-align:left;padding:14px 16px;border-radius:var(--radius-sm);min-height:48px;cursor:pointer}.seg{display:flex;background:var(--track);border-radius:999px;padding:3px;margin-bottom:12px}.seg button{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;border-radius:999px;padding:8px 10px;min-height:40px;cursor:pointer;color:var(--ink-secondary)}.seg button.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #00000014}.pills{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;margin-bottom:8px}.pill{flex:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:6px 14px;min-height:36px;cursor:pointer;color:var(--ink)}.pill.on{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}.list-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:12px 0;min-height:56px;border-bottom:1px solid var(--divider);cursor:pointer;color:inherit;text-decoration:none}.list-item:last-child{border-bottom:0}.title{font-weight:600}.badge{background:var(--accent-container);color:var(--on-accent-container);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600}.set-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--divider)}.check{flex:none;width:44px;height:44px;border-radius:50%;border:2px solid var(--border);background:transparent;color:var(--on-accent);font-size:20px;cursor:pointer}.check.on{background:var(--accent);border-color:var(--accent)}.week{display:flex;gap:6px}.week .day{flex:1;text-align:center;padding:8px 0;border-radius:var(--radius-sm);background:var(--track);font-size:12px;color:var(--ink-secondary)}.week .day.done{background:var(--accent-container);color:var(--on-accent-container);font-weight:600}.week .day.today{outline:2px solid var(--ink)}.big-number{font-size:40px;font-weight:700;letter-spacing:-.03em;line-height:1}.code{font-size:34px;font-weight:700;letter-spacing:.08em;text-align:center;padding:16px 0;font-variant-numeric:tabular-nums}.photo{width:100%;border-radius:var(--radius-sm);background:var(--track);aspect-ratio:4 / 3;object-fit:cover}.photos{display:grid;grid-template-columns:1fr 1fr;gap:8px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.calendar .head{font-size:12px;color:var(--ink-tertiary);padding:4px 0}.calendar button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;aspect-ratio:1;border-radius:50%;cursor:pointer;font-size:14px;color:var(--ink)}.calendar button.planned{box-shadow:inset 0 0 0 2px var(--border)}.calendar button.completed{background:var(--accent);color:var(--on-accent)}.calendar button.today{font-weight:800;text-decoration:underline}.calendar button.outside{color:var(--ink-tertiary)}video.scanner{width:100%;border-radius:var(--radius-sm);background:#000;aspect-ratio:4 / 3;object-fit:cover}svg.chart{width:100%;height:auto}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--tabbar-height) + 24px + env(safe-area-inset-bottom));background:var(--ink);color:var(--ink-inverse);padding:10px 18px;border-radius:999px;z-index:60;max-width:90%}.btn.google{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:#fff;color:#1f1f1f;border:1px solid #dadce0}.btn.google:active{background:#f1f3f4}.legal h2{margin-top:28px}.legal h3{font-size:16px;margin:18px 0 6px}.legal p,.legal li{line-height:1.6}.legal ul{padding-left:20px}.legal a{color:var(--ink)}
