:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#14161a;--panel:#1e2128;--line:#2e323b;--text:#e8eaed;--muted:#9aa0ab;--accent:#4ade80;--danger:#f87171}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,sans-serif}main{max-width:560px;margin:0 auto;padding:16px 16px 48px}header h1{margin:0 0 2px;font-size:1.15rem}.sub{color:var(--muted);margin:0 0 16px;font-size:.8rem}.viewport{aspect-ratio:4/3;background:#000;border-radius:12px;position:relative;overflow:hidden}.viewport video{object-fit:cover;width:100%;height:100%;display:block}.placeholder{color:var(--muted);place-items:center;font-size:.9rem;display:grid;position:absolute;inset:0}.guide{pointer-events:none;border:2px solid #4ade80e6;border-radius:6px;height:24%;position:absolute;top:38%;left:10%;right:10%;box-shadow:0 0 0 9999px #00000047}.controls{margin:12px 0}.controls button{color:#10131a;cursor:pointer;border:none;border-radius:10px;width:100%;padding:16px;font-size:1rem;font-weight:600}.controls .start{background:var(--accent)}.controls .stop{background:var(--danger)}section{background:var(--panel);border-radius:12px;margin-top:20px;padding:14px}section h2{color:var(--muted);letter-spacing:.04em;margin:0 0 10px;font-size:.85rem;font-weight:600}.note{color:var(--muted);margin:8px 0 0;font-size:.75rem;line-height:1.6}.field{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;font-size:.85rem;display:flex}.seg{gap:4px;display:flex}.seg button{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:7px;padding:7px 10px;font-size:.78rem}.seg button.on{background:var(--accent);border-color:var(--accent);color:#10131a;font-weight:600}.stats{margin:0;font-size:.85rem}.stats>div{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:7px 0;display:flex}.stats>div:last-child{border-bottom:none}.stats dt{color:var(--muted)}.stats dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.ok{color:var(--accent)}.ng{color:var(--danger)}.results{margin:0;padding:0;list-style:none}.results li{border-bottom:1px solid var(--line);padding:9px 0}.results li:last-child{border-bottom:none}.results li.dup{opacity:.45}.results code{letter-spacing:.04em;font-size:1.05rem;font-weight:600}.results .meta{color:var(--muted);margin-top:2px;font-size:.72rem;display:block}.error{color:#fecaca;background:#f871711f;border:1px solid #f8717166;border-radius:10px;margin-top:12px;padding:12px;font-size:.82rem;line-height:1.6}.center{text-align:center}.big{margin:8px 0;font-size:1.1rem}.hint{color:var(--muted);font-size:.7rem}.wide{background:var(--accent);color:#10131a;cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:12px;padding:14px;font-size:.95rem;font-weight:600}.link{width:100%;color:var(--muted);cursor:pointer;background:0 0;border:none;margin-top:10px;padding:10px;font-size:.82rem;display:block}.badge{color:var(--accent);background:#4ade8026;border:1px solid #4ade8066;border-radius:999px;margin:0 0 10px;padding:4px 10px;font-size:.72rem;display:inline-block}.pname{margin:0 0 2px;font-size:1.1rem;line-height:1.4}.pbrand{color:var(--muted);margin:0;font-size:.82rem}.pjan{color:var(--muted);letter-spacing:.06em;margin:4px 0 12px;font-size:.78rem}.nutri{border-collapse:collapse;width:100%;font-size:.9rem}.nutri th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 0;font-weight:400}.nutri td{text-align:right;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;padding:8px 0}.nutri td:last-child{width:3.2em;color:var(--muted);padding-left:6px;font-size:.78rem}.candidates{margin:10px 0 0;padding:0;list-style:none}.candidates button{text-align:left;border:1px solid var(--line);width:100%;color:var(--text);cursor:pointer;background:#ffffff0a;border-radius:10px;margin-bottom:8px;padding:12px;display:block}.cname{font-size:.9rem;display:block}.cmeta{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:3px;font-size:.74rem;display:block}.manual{gap:8px;display:flex}.manual input{border:1px solid var(--line);color:var(--text);letter-spacing:.06em;background:#14161a;border-radius:8px;flex:1;padding:12px;font-size:1rem}.manual button{background:var(--accent);color:#10131a;cursor:pointer;border:none;border-radius:8px;padding:12px 18px;font-weight:600}.manual button:disabled{background:var(--line);color:var(--muted)}.export{border:1px solid var(--line);width:100%;height:180px;color:var(--muted);background:#14161a;border-radius:8px;margin-top:8px;padding:8px;font-family:ui-monospace,monospace;font-size:.68rem}.input-screen{flex-direction:column;max-width:560px;min-height:100dvh;margin:0 auto;padding:12px 12px 0;display:flex}.input-head{justify-content:space-between;align-items:center;display:flex}.input-head .link{text-align:left;width:auto;margin:0;padding:6px 0}.input-head .jan{color:var(--muted);letter-spacing:.06em;font-size:.75rem}.origin{color:var(--muted);margin:4px 0 10px;font-size:.75rem}.origin.warn{color:#fcd34d;background:#fbbf241f;border:1px solid #fbbf2459;border-radius:8px;padding:8px 10px}.input-screen .name,.input-screen .brand{border:1px solid var(--line);width:100%;color:var(--text);background:#14161a;border-radius:8px;margin-bottom:6px;padding:10px}.input-screen .name{font-size:1rem;font-weight:600}.input-screen .brand{font-size:.82rem}.basis{grid-template-columns:repeat(2,1fr);gap:6px;margin:8px 0;display:grid}.basis button{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;padding:10px 6px;font-size:.78rem}.basis button.on{background:var(--accent);border-color:var(--accent);color:#10131a;font-weight:600}.unit-row{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:.8rem;display:flex}.fields{flex:1;margin:0;padding:0;list-style:none}.fields li{cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:baseline;gap:8px;margin-bottom:4px;padding:10px 12px;display:flex}.fields li.active{border-color:var(--accent);background:#4ade801a}.flabel{color:var(--muted);flex:1;font-size:.85rem}.fields li.active .flabel{color:var(--text)}.fvalue{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600}.fields li.active .fvalue{color:var(--accent)}.funit{width:3.2em;color:var(--muted);font-size:.75rem}.split-toggle{border:1px dashed var(--line);width:100%;color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;margin:4px 0 8px;padding:9px;font-size:.76rem}.converted{color:var(--muted);font-variant-numeric:tabular-nums;background:#ffffff0a;border-radius:8px;margin:0 0 8px;padding:8px 10px;font-size:.74rem}.keypad{padding:8px 0 calc(8px + env(safe-area-inset-bottom));background:var(--bg);grid-template-columns:repeat(3,1fr);gap:6px;display:grid;position:sticky;bottom:0}.keypad button{background:var(--panel);border:1px solid var(--line);color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:10px;padding:16px 0;font-size:1.3rem;font-weight:500}.keypad button:active{background:#2a2e37}.keypad .back{font-size:1.1rem}.keypad .next{background:var(--line);color:var(--muted);grid-column:span 3;font-size:1rem;font-weight:600}.keypad .next.save{background:var(--accent);border-color:var(--accent);color:#10131a}.keypad .next:disabled{opacity:.5}.home-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.home-head .link{text-align:left;width:auto;margin:0;padding:6px 0}.date-nav{align-items:center;gap:4px;font-size:1rem;font-weight:600;display:flex}.date-nav button{border:1px solid var(--line);width:34px;height:34px;color:var(--text);cursor:pointer;background:0 0;border-radius:8px;font-size:1.2rem}.date-nav button:disabled{opacity:.3}.date-nav span{text-align:center;min-width:5.5em}.icon-btn{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;padding:8px 12px;font-size:.8rem}.summary{background:var(--panel);border-radius:12px;padding:14px}.metric{margin-bottom:14px}.metric:last-child{margin-bottom:0}.metric-head{justify-content:space-between;align-items:baseline;margin-bottom:5px;display:flex}.mlabel{color:var(--muted);font-size:.8rem}.mvalue{font-variant-numeric:tabular-nums}.mvalue strong{font-size:1.15rem}.mtarget{color:var(--muted);font-size:.78rem}.bar{background:#14161a;border-radius:3px;height:6px;overflow:hidden}.fill{background:var(--accent);border-radius:3px;height:100%;transition:width .25s}.fill.over{background:var(--danger)}.metric-foot{color:var(--muted);text-align:right;margin-top:3px;font-size:.7rem}.slot-total{float:right;font-variant-numeric:tabular-nums;font-weight:400}.search{border:1px solid var(--line);width:100%;color:var(--text);background:#14161a;border-radius:8px;margin-bottom:8px;padding:11px;font-size:.9rem}.picker{margin:0;padding:0;list-style:none}.picker button{text-align:left;border:1px solid var(--line);width:100%;color:var(--text);cursor:pointer;background:#ffffff0a;border-radius:10px;margin-bottom:6px;padding:11px 12px;display:block}.loglist{margin:0;padding:0;list-style:none}.loglist li{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:9px 0;display:flex}.loglist li:last-child{border-bottom:none}.lmain{flex:1;min-width:0}.lname{text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;display:block;overflow:hidden}.lmeta{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:2px;font-size:.72rem;display:block}.del{border:1px solid var(--line);width:30px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;flex:none;font-size:1.1rem}.basis.slots{grid-template-columns:repeat(4,1fr)}.amount-row{border:1px solid var(--accent);background:#4ade801a;border-radius:8px;align-items:baseline;gap:8px;margin:8px 0;padding:12px;display:flex}.quick{grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px;display:grid}.quick button{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;padding:9px 4px;font-size:.78rem}.goal-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.goal-grid label{color:var(--muted);align-items:center;gap:5px;font-size:.75rem;display:flex}.goal-grid label>span:first-child{flex:none;width:5.2em}.goal-grid input{text-align:right;border:1px solid var(--line);min-width:0;color:var(--text);font-variant-numeric:tabular-nums;background:#14161a;border-radius:8px;flex:1;padding:9px;font-size:.95rem}.goal-grid .unit{flex:none;width:2.6em}.ratio{background:#ffffff08;border-radius:8px;margin:12px 0;padding:10px}.ratio summary{cursor:pointer;color:var(--muted);margin-bottom:8px;font-size:.78rem}.controls.two{grid-template-columns:1fr 1fr;gap:8px;display:grid}.controls.two button{width:100%}.controls .secondary{border:1px solid var(--accent);color:var(--accent);background:0 0}.controls button:disabled{opacity:.45}.total-card{background:var(--panel);border-radius:12px;margin-top:12px;padding:16px}.total-kcal{align-items:baseline;gap:6px;margin-bottom:12px;display:flex}.tnum{font-variant-numeric:tabular-nums;color:var(--accent);font-size:2.4rem;font-weight:700;line-height:1}.tunit{color:var(--muted);font-size:1rem}.tsub{color:var(--muted);margin-left:auto;font-size:.75rem}.pfc-bar{background:#14161a;border-radius:4px;height:8px;display:flex;overflow:hidden}.seg-p{background:#60a5fa}.seg-f{background:#fbbf24}.seg-c{background:#a78bfa}.pfc-row{grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px;display:grid}.pfc-cell{align-items:center;gap:5px;font-size:.75rem;display:flex}.pfc-cell .dot{border-radius:2px;flex:none;width:8px;height:8px}.dot.p{background:#60a5fa}.dot.f{background:#fbbf24}.dot.c{background:#a78bfa}.pfc-label{color:var(--muted)}.pfc-value{font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.ingredients{margin:0 0 10px;padding:0;list-style:none}.ingredients li{border-bottom:1px solid var(--line);padding:10px 0 8px}.ingredients li:last-child{border-bottom:none}.ing-head{align-items:flex-start;gap:8px;display:flex}.ing-name{flex:1;font-size:.86rem;line-height:1.4}.ing-body{font-variant-numeric:tabular-nums;align-items:baseline;gap:10px;margin-top:4px;display:flex}.ing-amount{color:var(--muted);min-width:4em;font-size:.78rem}.ing-kcal{font-size:.92rem;font-weight:600}.ing-pfc{color:var(--muted);margin-left:auto;font-size:.74rem}.share{background:#14161a;border-radius:2px;height:3px;margin-top:6px;overflow:hidden}.share-fill{background:var(--accent);opacity:.65;height:100%}.ingredients.compact li{padding:7px 0}.ingredients.compact .share{display:none}.per-serving{background:#4ade801a;border:1px solid #4ade8059;border-radius:10px;margin-top:10px;padding:12px}.ps-head{color:var(--muted);margin-bottom:4px;font-size:.76rem}.ps-body{align-items:baseline;gap:12px;display:flex}.ps-kcal{color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:700}.ps-pfc{color:var(--muted);margin-left:auto;font-size:.78rem}.quick.servings{grid-template-columns:repeat(2,1fr);margin-bottom:6px}.quick.servings button{border-color:var(--accent);color:var(--accent);font-size:.8rem}.tag{color:var(--accent);vertical-align:1px;background:#4ade802e;border-radius:4px;margin-right:6px;padding:1px 6px;font-size:.66rem;display:inline-block}.slot-cards{gap:8px;margin-top:14px;display:grid}.slot-card{text-align:left;background:var(--panel);border:1px solid var(--line);width:100%;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:12px;padding:14px;display:block}.slot-card:active{background:#23262e}.sc-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.sc-name{font-size:1rem;font-weight:600}.sc-kcal{color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.05rem;font-weight:700}.sc-empty{color:var(--muted);margin-top:5px;font-size:.76rem}.sc-pfc{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:5px;font-size:.76rem}.sc-items{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;opacity:.8;margin-top:4px;font-size:.74rem;overflow:hidden}.meal-title{margin:0 0 12px;font-size:1.3rem}.slot-fixed{color:var(--accent);background:#4ade801f;border:1px solid #4ade8059;border-radius:8px;margin:6px 0 10px;padding:9px 12px;font-size:.82rem;font-weight:600}
