:root{--bg: #ffffff;--bg-sub: #f5f5f7;--text: #1d1d1f;--text-sub: #86868b;--line: #e5e5ea;--accent: #34c759;--accent-dark: #2aa54a;--danger: #ff3b30;--protein: #0a84ff;--fat: #ff9f0a;--carb: #af52de;--radius: 14px;--tabbar-h: 58px}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}html{font-size:16px}body{font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Noto Sans JP,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}.page{max-width:480px;margin:0 auto;padding:calc(16px + env(safe-area-inset-top)) 16px 24px}h1{font-size:1.35rem;font-weight:700}h2{font-size:1rem;font-weight:600;color:var(--text-sub);margin:20px 0 8px}.card{background:var(--bg-sub);border-radius:var(--radius);padding:16px;margin-bottom:12px}.tabbar{position:fixed;bottom:0;left:0;right:0;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;justify-content:space-around;align-items:center;z-index:100}.tabbar a{display:flex;flex-direction:column;align-items:center;gap:2px;text-decoration:none;color:var(--text-sub);font-size:.65rem;padding:6px 18px}.tabbar a.on{color:var(--accent)}.tabbar svg{width:24px;height:24px}.btn{display:block;width:100%;padding:15px;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font-size:1.05rem;font-weight:700;cursor:pointer;transition:opacity .15s}.btn:active{opacity:.7}.btn:disabled{background:var(--line);color:var(--text-sub)}.btn.sub{background:var(--bg-sub);color:var(--text);font-weight:600}.btn.danger{background:transparent;color:var(--danger);font-weight:600}.fab{position:fixed;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 16px);right:calc(50% - 224px);width:58px;height:58px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:300;line-height:1;text-decoration:none;box-shadow:0 4px 14px #34c75966;z-index:99}@media(max-width:512px){.fab{right:16px}}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{padding:8px 14px;border-radius:20px;background:var(--bg-sub);color:var(--text);font-size:.9rem;border:1.5px solid transparent;cursor:pointer}.chip.on{background:#eafaf0;border-color:var(--accent);color:var(--accent-dark);font-weight:600}input[type=text],input[type=number],input[type=date],input[type=time],textarea{width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;font-size:1rem;background:var(--bg);font-family:inherit}.row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.row:last-child{border-bottom:none}.row .grow{flex:1;min-width:0}.row .kcal{font-weight:700;white-space:nowrap}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:.7rem;font-weight:600;background:#eafaf0;color:var(--accent-dark)}.pfc{display:flex;gap:10px;margin-top:10px}.pfc div{flex:1;text-align:center;font-size:.8rem;color:var(--text-sub)}.pfc b{display:block;font-size:1rem;color:var(--text)}.pfc .p b{color:var(--protein)}.pfc .f b{color:var(--fat)}.pfc .c b{color:var(--carb)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-head{text-align:center;font-size:.7rem;color:var(--text-sub);padding:4px 0}.cal-day{aspect-ratio:1;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.85rem;cursor:pointer;border:1.5px solid transparent}.cal-day small{font-size:.55rem;color:var(--text-sub)}.cal-day.today{border-color:var(--accent)}.cal-day.sel{background:var(--accent);color:#fff}.cal-day.sel small{color:#ffffffd9}.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.thumbs .t{position:relative;width:76px;height:76px}.thumbs img{width:100%;height:100%;object-fit:cover;border-radius:10px}.thumbs .del{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;background:var(--text);color:#fff;border:none;font-size:.8rem;line-height:1;cursor:pointer}.stepper{display:flex;align-items:center;gap:10px}.stepper button{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:var(--bg);font-size:1.1rem;cursor:pointer;color:var(--text)}.stepper .n{min-width:20px;text-align:center;font-weight:700}.muted{color:var(--text-sub);font-size:.85rem}.center{text-align:center}.mt{margin-top:16px}.loading{position:fixed;inset:0;background:#ffffffd9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;z-index:200;font-weight:600}.spinner{width:36px;height:36px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pfc-bars{display:flex;gap:12px;margin-top:14px;text-align:left}.pfc-bars .b{flex:1}.pfc-bars .lbl{display:flex;justify-content:space-between;font-size:.68rem;color:var(--text-sub);margin-bottom:3px}.pfc-bars .lbl b{color:var(--text);font-weight:700}.pfc-bars .track{height:6px;background:var(--line);border-radius:3px;overflow:hidden}.pfc-bars .fill{height:100%;border-radius:3px;transition:width .4s}.week-chart{display:flex;align-items:flex-end;gap:6px;height:56px;margin-top:10px}.week-chart .bar{flex:1;background:var(--accent);opacity:.4;border-radius:3px 3px 0 0;min-height:2px}.week-chart .bar.today{opacity:1}.week-chart .bar.over{background:var(--fat);opacity:.85}.week-days{display:flex;gap:6px;margin-top:4px}.week-days span{flex:1;text-align:center;font-size:.62rem;color:var(--text-sub)}.streak{font-size:.8rem;color:var(--text-sub);margin-top:2px}
