:root{--paper: #F4F1E8;--card: #FCFBF6;--ink: #1E2A22;--ink-soft: #52605a;--green: #2F6B43;--green-deep: #1C4329;--yolk: #E59A1F;--yolk-soft: #F7E9CB;--tomato: #C0432F;--line: #E2DDCE;--line-strong: #cfc8b4;--shadow: 0 1px 2px rgba(30, 42, 34, .05), 0 6px 18px rgba(30, 42, 34, .06);--nav-height: 64px;--font-display: "Bricolage Grotesque", sans-serif;--font-mono: "Space Mono", monospace}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,system-ui,sans-serif;line-height:1.5}.app{max-width:680px;margin:0 auto;padding:0 16px calc(var(--nav-height) + env(safe-area-inset-bottom) + 24px)}.screen-head{padding:22px 0 6px}.screen-head .eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--green);font-weight:700;margin:0 0 6px}.screen-head h1{font-family:var(--font-display);font-weight:800;font-size:clamp(26px,7vw,34px);line-height:1.05;letter-spacing:-.02em;margin:0}.screen-head p{color:var(--ink-soft);font-size:14px;margin:8px 0 0}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid var(--line-strong);background:var(--card);color:var(--ink);font-family:var(--font-display);font-weight:700;font-size:15px;padding:12px 16px;border-radius:12px;cursor:pointer;min-height:48px;transition:background .15s,color .15s,border-color .15s,opacity .15s}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--green);color:#fff;border-color:var(--green)}.btn.danger{background:transparent;color:var(--tomato);border-color:var(--tomato)}.btn.block{width:100%}.btn.small{min-height:38px;padding:6px 12px;font-size:13.5px;border-radius:10px}.iconbtn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid var(--line-strong);background:var(--card);color:var(--ink);font-weight:700;font-size:18px;width:40px;height:40px;border-radius:11px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;line-height:1}.iconbtn.plus{background:var(--green);color:#fff;border-color:var(--green)}.filters{position:sticky;top:0;z-index:30;background:var(--paper);padding:12px 0 10px;display:flex;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;border:1.5px solid var(--line-strong);background:var(--card);color:var(--ink-soft);font-size:13px;font-weight:600;padding:9px 14px;border-radius:999px;cursor:pointer;min-height:40px;white-space:nowrap;transition:all .15s;font-family:Inter,sans-serif}.chip[aria-pressed=true]{background:var(--ink);color:var(--card);border-color:var(--ink)}.search{width:100%;border:1.5px solid var(--line-strong);background:var(--card);border-radius:12px;padding:12px 14px;font-size:16px;font-family:Inter,sans-serif;color:var(--ink);min-height:48px}.search::placeholder{color:var(--ink-soft);opacity:.7}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px;margin-top:14px;box-shadow:var(--shadow)}.card h2{font-family:var(--font-display);font-weight:800;font-size:18px;margin:0 0 10px;letter-spacing:-.01em}.row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:11px 13px;margin-top:8px;min-height:56px}.row.tappable{cursor:pointer}.row .thumb{flex:0 0 auto;width:44px;height:44px;border-radius:10px;background:var(--yolk-soft);display:flex;align-items:center;justify-content:center;font-size:20px;overflow:hidden}.row .thumb img{width:100%;height:100%;object-fit:cover}.row .grow{flex:1 1 auto;min-width:0}.row .title{font-weight:700;font-size:15px;line-height:1.25}.row .sub{color:var(--ink-soft);font-size:12.5px;margin-top:2px}.tagline{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px}.tag{font-family:var(--font-mono);font-size:10.5px;font-weight:700;padding:3px 7px;border-radius:6px;letter-spacing:.02em}.tag.prot{background:var(--green);color:#fff}.tag.kcal{background:var(--yolk-soft);color:#8a5e10}.tag.kind{background:var(--paper);border:1px solid var(--line);color:var(--ink-soft)}.tag.price{background:var(--ink);color:var(--card)}.qty{font-family:var(--font-display);font-weight:800;font-size:18px;min-width:44px;text-align:center;flex:0 0 auto}.qty small{display:block;font-family:var(--font-mono);font-size:9.5px;font-weight:400;color:var(--ink-soft)}.stats{display:flex;gap:10px;margin-top:14px}.stat{flex:1;background:var(--card);border:1.5px solid var(--ink);border-radius:14px;padding:12px 14px}.stat .num{font-family:var(--font-display);font-weight:800;font-size:22px;line-height:1.1}.stat .lab{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.hist{border-top:1px solid var(--line);padding:10px 2px;display:flex;gap:10px;align-items:baseline}.hist:first-of-type{border-top:none}.hist .delta{font-family:var(--font-mono);font-weight:700;font-size:13px;min-width:52px}.hist .delta.pos{color:var(--green)}.hist .delta.neg{color:var(--tomato)}.hist .what{flex:1;min-width:0;font-size:14px}.hist .when{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-soft);white-space:nowrap}.field{margin-top:14px}.field label{display:block;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:5px}.field input,.field select{width:100%;border:1.5px solid var(--line-strong);background:var(--card);border-radius:12px;padding:12px 14px;font-size:16px;font-family:Inter,sans-serif;color:var(--ink);min-height:48px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.seg{display:flex;gap:6px}.seg button{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid var(--line-strong);background:var(--card);color:var(--ink-soft);font-family:var(--font-display);font-weight:700;font-size:14px;padding:11px 8px;border-radius:12px;cursor:pointer;min-height:46px}.seg button[aria-pressed=true]{background:var(--green);color:#fff;border-color:var(--green)}.form-note{font-size:12.5px;color:var(--ink-soft);margin-top:6px}.form-error{background:#fde0dc;color:var(--tomato);border-radius:10px;padding:10px 12px;font-size:13.5px;margin-top:12px}.day-nav{display:flex;align-items:center;gap:12px}.day-nav h1{flex:1 1 auto}.day-nav .iconbtn:disabled{opacity:.35;cursor:default}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.card-head h2{margin:0}.btn.small.primary{background:var(--green);color:#fff;border-color:var(--green)}.prog{margin-top:14px}.prog:first-of-type{margin-top:6px}.prog-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.prog-label{font-family:var(--font-display);font-weight:800;font-size:15px}.prog-value{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-soft)}.prog-value b{font-size:15px;color:var(--ink)}.prog-bar{display:flex;height:12px;background:var(--line);border-radius:99px;overflow:hidden;margin:6px 0 4px}.prog-bar i{display:block;height:100%;transition:width .35s ease}.prog-bar i.prot{background:var(--green)}.prog-bar i.kcal{background:var(--yolk)}.prog-bar i.over{background:var(--tomato);opacity:.8}.prog-foot{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;color:var(--ink-soft)}.micro-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:10px;border-top:1px solid var(--line);font-family:var(--font-mono);font-size:11.5px;color:var(--ink-soft)}.micro-row span:last-child{margin-left:auto;color:var(--ink)}.meal-group{margin-top:12px}.meal-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding-bottom:4px;border-bottom:1.5px solid var(--line-strong)}.meal-head span:first-child{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--green);font-weight:700}.meal-sum{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft)}.log-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.log-row:last-child{border-bottom:none}.log-row .grow{flex:1 1 auto;min-width:0}.log-row .title{font-weight:600;font-size:14.5px}.log-row .sub{color:var(--ink-soft);font-size:12px;margin-top:1px}.log-row .iconbtn{width:34px;height:34px;font-size:16px;border-radius:9px}.preview-box{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;padding:12px 14px;background:var(--yolk-soft);border-radius:12px;font-family:var(--font-mono);font-size:12px;color:#8a5e10}.preview-box b{font-family:var(--font-display);font-size:16px}.check-row{display:flex;align-items:flex-start;gap:10px;margin-top:16px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:12px;cursor:pointer;font-size:14px}.check-row input{width:22px;height:22px;flex:0 0 auto;accent-color:var(--green);margin:0}.check-row small{display:block;color:var(--ink-soft);font-size:12px;margin-top:2px}.plan-day-sum{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);text-align:right}.card.today{border-color:var(--green);border-width:1.5px}.filters.inline{position:static;background:none;padding:0 0 8px}.hist-group{margin-top:10px}.hist-day{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--green);font-weight:700;padding-bottom:4px;border-bottom:1.5px solid var(--line-strong)}.hist-group .hist:first-of-type{border-top:none}.mini-bars{display:flex;gap:6px;margin:2px 0 8px}.mini-bar{flex:1;height:6px;background:var(--line);border-radius:99px;overflow:hidden}.mini-bar i{display:block;height:100%;transition:width .35s ease}.mini-bar i.prot{background:var(--green)}.mini-bar i.kcal{background:var(--yolk)}.plan-slot{margin-top:10px}.plan-slot-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:4px;border-bottom:1.5px solid var(--line-strong)}.plan-slot-head span{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--green);font-weight:700}.plan-slot-head .iconbtn{width:30px;height:30px;font-size:16px;border-radius:9px}.plan-empty{padding:6px 0;color:var(--line-strong);font-size:14px}.log-row.done{opacity:.55}.log-row.done .title{text-decoration:line-through}.note{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--yolk);border-radius:12px;padding:12px 14px;margin-top:14px;font-size:13.5px;color:var(--ink-soft)}.note.warn{border-left-color:var(--tomato)}.shop-item{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-top:8px;min-height:60px;transition:opacity .2s,background .2s}.shop-item.done{opacity:.55;background:var(--paper)}.shop-item.done .title{text-decoration:line-through}.shop-item .grow{flex:1 1 auto;min-width:0}.shop-item .title{font-weight:600;font-size:14.5px}.shop-item .sub{color:var(--ink-soft);font-size:11.5px;margin-top:2px}.shop-check{flex:0 0 auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:26px;height:26px;border:2px solid var(--line-strong);border-radius:8px;background:var(--card);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.shop-check svg{width:14px;height:14px}.shop-item.done .shop-check{background:var(--green);border-color:var(--green)}.shop-qty{flex:0 0 auto;text-align:center}.shop-qty input{width:52px;border:1.5px solid var(--line-strong);background:var(--paper);border-radius:9px;padding:6px 4px;font-size:16px;font-family:var(--font-mono);text-align:center;color:var(--ink);min-height:38px}.shop-qty small{display:block;font-family:var(--font-mono);font-size:9px;color:var(--ink-soft);margin-top:1px}.shop-price{flex:0 0 auto;min-width:58px;text-align:right;font-family:var(--font-mono);font-size:12.5px;font-weight:700}.purchase-bar{position:sticky;bottom:calc(var(--nav-height) + env(safe-area-inset-bottom) + 8px);z-index:45;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding:12px 14px;background:var(--card);border:1.5px solid var(--ink);border-radius:14px;box-shadow:var(--shadow);font-size:13.5px}.purchase-bar b{font-family:var(--font-display);font-size:17px}.nutri{margin-top:16px;border:2px solid var(--ink);border-radius:14px;background:var(--card);overflow:hidden}.nutri-title{font-family:var(--font-display);font-weight:800;font-size:16px;padding:12px 14px 10px;border-bottom:2px solid var(--ink);letter-spacing:-.01em}.nutri-empty{padding:14px;font-size:13.5px;color:var(--ink-soft)}.nutri table{width:100%;border-collapse:collapse;font-size:13.5px}.nutri th{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);font-weight:700;text-align:right;padding:8px 12px 6px;border-bottom:1.5px solid var(--ink)}.nutri th:first-child{text-align:left}.nutri td{padding:8px 12px;border-bottom:1px solid var(--line)}.nutri tbody tr:last-child td{border-bottom:none}.nutri td.num{font-family:var(--font-mono);font-size:12.5px;text-align:right;white-space:nowrap}.nutri tr.sub td:first-child{padding-left:24px;color:var(--ink-soft);font-size:12.5px}.nutri tr.sub td.num{color:var(--ink-soft)}.sml-box{margin-top:18px;border:2px solid var(--ink);border-radius:14px;background:var(--card);overflow:hidden}.sml-title{font-family:var(--font-display);font-weight:800;font-size:15px;padding:12px 14px 10px;border-bottom:2px solid var(--ink)}.sml-row{display:flex;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid var(--line)}.sml-row:last-child{border-bottom:none}.sml-row label{flex:1 1 auto;font-size:13.5px}.sml-row.sub label{padding-left:12px;color:var(--ink-soft);font-size:12.5px}.sml-row input{flex:0 0 96px;width:96px;border:1.5px solid var(--line-strong);background:var(--paper);border-radius:10px;padding:8px 10px;font-size:16px;font-family:var(--font-mono);text-align:right;color:var(--ink);min-height:40px}.unit-grid{padding:12px;display:grid;gap:10px}.unit-summary{margin:0 12px 12px;padding:10px 12px;background:var(--yolk-soft);border-radius:10px;font-family:var(--font-mono);font-size:11.5px;color:#8a5e10;line-height:1.45}.scanner{position:relative;margin-top:12px;border-radius:14px;overflow:hidden;background:#000;aspect-ratio:4 / 3}.scanner video{width:100%;height:100%;object-fit:cover;display:block}.scanner-frame{position:absolute;top:22%;right:12%;bottom:22%;left:12%;border:2.5px solid var(--yolk);border-radius:12px;box-shadow:0 0 0 9999px #00000047}.detail-head{margin-top:4px}.detail-img{width:100%;max-height:220px;object-fit:cover;border-radius:14px;border:1px solid var(--line);margin-bottom:10px;display:block}.img-preview{display:flex;align-items:flex-end;gap:10px;margin-bottom:4px}.img-preview img{width:110px;height:110px;object-fit:cover;border-radius:12px;border:1px solid var(--line)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e2a2273;z-index:90;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--paper);border-radius:22px 22px 0 0;width:100%;max-width:680px;max-height:88dvh;overflow-y:auto;padding:8px 16px calc(20px + env(safe-area-inset-bottom));animation:sheet-up .22s ease}@keyframes sheet-up{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}.sheet-grip{width:42px;height:5px;border-radius:99px;background:var(--line-strong);margin:6px auto 4px}.sheet h2{font-family:var(--font-display);font-weight:800;font-size:21px;margin:10px 0 2px;letter-spacing:-.01em}.sheet-actions{display:flex;gap:10px;margin-top:20px}.sheet-actions .btn{flex:1}.bottomnav{position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.bottomnav .inner{max-width:680px;margin:0 auto;display:flex;height:var(--nav-height)}.navbtn{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink-soft);font-family:Inter,sans-serif;font-size:10.5px;font-weight:600;padding:0 2px}.navbtn .ico{font-size:20px;line-height:1}@media(max-width:400px){.navbtn{font-size:9.5px}.navbtn .ico{font-size:19px}}.navbtn[aria-current=true]{color:var(--green)}.navbtn[aria-current=true] .ico{transform:translateY(-1px)}.empty{text-align:center;color:var(--ink-soft);font-size:14px;padding:32px 16px}.empty .big{font-size:34px;margin-bottom:8px}.fab-row{display:flex;gap:10px;margin-top:16px}.fab-row .btn{flex:1}.login{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 16px calc(24px + env(safe-area-inset-bottom))}.login-card{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:28px 22px 24px;box-shadow:var(--shadow)}.login-mark{width:52px;height:52px;border-radius:14px;background:var(--green);display:flex;align-items:center;justify-content:center;margin-bottom:16px}.login-mark .yolk{width:20px;height:20px;border-radius:50%;background:var(--yolk);box-shadow:0 0 0 5px var(--card)}.login-card h1{font-family:var(--font-display);font-weight:800;font-size:28px;letter-spacing:-.02em;margin:0}.login-card .eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--green);font-weight:700;margin:0 0 6px}.login-sub{color:var(--ink-soft);font-size:14px;margin:8px 0 4px}.field input:disabled{background:var(--paper);color:var(--ink-soft)}:focus-visible{outline:3px solid var(--yolk);outline-offset:2px;border-radius:8px}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
