:root{--ink: #243c31;--ink-soft: #59665b;--chart: #1f8450;--paper: #f6f5ef;--surface: #fffef9;--surface-hover: #f3f2e8;--line: #dedfd3;--line-strong: #c9cdbd;--primary-hover: #2e4a3d;--selection: #dfe6c8;--error: #a12d1f;--notice-bg: #fbf0d9;--notice-ink: #5c4510;--tab-bar-height: 60px;--ease-out: cubic-bezier(.23, 1, .32, 1);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none;-webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent}::selection{background:var(--selection);color:var(--ink)}*{box-sizing:border-box}html,body{overscroll-behavior:none}body{margin:0}main{max-width:680px;margin:auto;padding:max(28px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) calc(var(--tab-bar-height) + 32px + env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left))}header{display:flex;gap:12px;align-items:center;font-size:12px;font-weight:700;letter-spacing:.12em}.mark{display:grid;place-items:center;width:40px;height:40px;border-radius:13px;background:var(--ink);color:var(--paper);font:italic 28px Georgia,serif;letter-spacing:0}.intro{margin:56px 0 32px}h1{font-family:Georgia,serif;font-size:clamp(38px,8vw,60px);line-height:1.08;letter-spacing:-.04em;font-weight:400;margin:20px 0;text-wrap:balance}h2{font-size:21px;font-weight:600;letter-spacing:-.025em;margin:0 0 10px}h3{font-size:14px;font-weight:600;margin:20px 0 2px}p{font-size:16px;line-height:1.65}.intro>p:last-child{max-width:420px;color:var(--ink-soft)}.card{margin-top:8px;padding:28px;background:var(--surface);border:1px solid var(--line);border-radius:20px}.card p{color:var(--ink-soft);margin:0 0 24px}button,input,select{font:inherit;color:inherit}input,select{caret-color:var(--ink)}button{min-height:48px;padding:0 18px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface);font-weight:600;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;transition:transform .12s var(--ease-out),background-color .12s ease}button:active:not(:disabled){transform:scale(.97)}button.primary{width:100%;border-color:var(--ink);background:var(--ink);color:var(--paper)}button.wide{width:100%}button:disabled{opacity:.55;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.text-button{min-height:44px;padding:0 2px;border:0;background:none;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong)}.card .text-button{display:block;margin:10px auto 0}.icon-button{display:grid;place-items:center;width:44px;min-height:44px;margin:-8px -14px -8px 0;padding:0;border:0;background:none;color:var(--ink-soft)}.icon-button svg{fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round}.tab-bar{position:fixed;z-index:10;inset:auto 0 0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);border-top:1px solid var(--line);background:var(--paper)}.tab-bar button{display:grid;justify-items:center;align-content:center;gap:2px;min-height:var(--tab-bar-height);padding:0;border:0;border-radius:0;background:none;color:var(--ink-soft);font-size:12px;font-weight:500}.tab-bar button:active:not(:disabled){transform:none}.tab-bar button[aria-current]{color:var(--ink);font-weight:700}.tab-bar svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.tab-bar button[aria-current] svg{stroke-width:2}.screen,.food-form{margin-top:32px}.screen h1,.food-form h1{font-size:34px;margin:0 0 24px}.field{min-width:0;margin-bottom:16px}.field.search{margin-top:24px}.field label{display:block;margin-bottom:6px;font-size:14px;font-weight:600}.field input,.field select,.ingredient-amount input,.ingredient-amount select{width:100%;min-height:48px;padding:0 12px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface);font-size:16px}.field input[aria-invalid],.ingredient-amount input[aria-invalid]{border-color:var(--error)}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;align-items:start}.field-error,.form-error{margin:6px 0 0;font-size:14px;line-height:1.4;color:var(--error)}.form-error{margin:0 0 16px}.load-error{margin-top:32px}.hint{margin:0 0 16px;font-size:14px;line-height:1.4;color:var(--ink-soft)}details{margin-bottom:16px;padding:12px 14px;border:1px solid var(--line);border-radius:12px}summary{min-height:28px;font-weight:600;cursor:pointer}details[open] summary{margin-bottom:14px}.notice{margin-bottom:16px;padding:12px 14px;border-radius:12px;background:var(--notice-bg);color:var(--notice-ink)}.notice p{margin:0;font-size:14px;line-height:1.4}.notice p+p{margin-top:6px}.actions{display:grid;gap:10px}.list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.list-row{display:grid;gap:4px;width:100%;padding:14px 16px;text-align:left;font-weight:400;border-color:var(--line);border-radius:14px;user-select:text;-webkit-user-select:text}.row-name{font-size:17px;font-weight:600;overflow-wrap:anywhere}.row-meta{font-size:13px;color:var(--ink-soft);overflow-wrap:anywhere}.row-values{font-size:14px;font-variant-numeric:tabular-nums}.recipe-head{grid-template-columns:minmax(0,1fr) 96px}.screen form h2,form.screen h2{margin-top:12px}.ingredients{margin:0 0 16px;padding:0;border-top:1px solid var(--line);list-style:none}.ingredient{padding:12px 0;border-bottom:1px solid var(--line)}.ingredient-head{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-bottom:8px}.ingredient-head label{min-width:0;font-size:15px;font-weight:600;overflow-wrap:anywhere}.ingredient-amount{display:grid;grid-template-columns:minmax(0,1fr) 124px;gap:8px}.picker{margin-bottom:8px}.picker-list{margin:0 0 8px;padding:0;border-top:1px solid var(--line);list-style:none}.picker-list button{display:grid;gap:2px;width:100%;min-height:52px;padding:8px 2px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;text-align:left;font-weight:400}.picker-list button:active:not(:disabled){transform:none;background:var(--surface-hover)}.summary{margin:32px 0 24px}.summary-lead{display:flex;flex-wrap:wrap;gap:2px 10px;align-items:baseline;margin:0 0 12px;font-size:14px;color:var(--ink-soft)}.summary-lead strong{font-size:32px;font-weight:600;letter-spacing:-.03em;line-height:1.15;color:var(--ink);font-variant-numeric:tabular-nums}.summary table{width:100%;margin-bottom:8px;border-collapse:collapse;font-size:15px;font-variant-numeric:tabular-nums}.summary thead th{font-size:13px;font-weight:500;color:var(--ink-soft)}.summary th,.summary td{padding:9px 0 9px 12px;border-bottom:1px solid var(--line);text-align:right;font-weight:500;white-space:nowrap}.summary tbody th{padding-left:0;text-align:left;color:var(--ink-soft);font-weight:400}.summary .hint{margin-top:8px}.reference{margin-top:24px}.reference .hint{margin:6px 0 0}.cooked h3{margin-top:24px}.cooked dl{margin:0}.cooked dl div{display:flex;gap:16px;align-items:baseline;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);font-size:15px;font-variant-numeric:tabular-nums}.cooked dt{color:var(--ink-soft)}.cooked dd{margin:0;font-weight:500;white-space:nowrap}.day-nav{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;margin-bottom:16px}.day-nav h1{margin:0;font-size:28px;text-align:center;text-wrap:balance}.day-nav .icon-button{margin:0;color:var(--ink)}.day-nav .icon-button:disabled{opacity:.3}.icon-button svg path{stroke-linejoin:round}.day-total .summary-lead{justify-content:center;margin-bottom:8px}.day-total dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 8px;padding:10px 0;border-block:1px solid var(--line);text-align:center;font-variant-numeric:tabular-nums}.day-total dt{font-size:13px;color:var(--ink-soft)}.day-total dd{margin:2px 0 0;font-size:15px;font-weight:600}.progress{height:6px;overflow:hidden;border-radius:3px;background:var(--line)}.progress span{display:block;height:100%;border-radius:3px;background:var(--ink)}.energy-progress{margin-bottom:14px}.energy-progress p{margin:6px 0 0;font-size:14px;line-height:1.4;text-align:center;color:var(--ink-soft);font-variant-numeric:tabular-nums}.macro-goals{display:grid;gap:12px;margin:0 0 8px;padding:12px 0;border-block:1px solid var(--line);list-style:none}.macro-line{display:flex;gap:12px;align-items:baseline;justify-content:space-between;margin-bottom:4px;font-size:15px;font-variant-numeric:tabular-nums}.macro-line span{color:var(--ink-soft)}.macro-line strong{font-weight:600;white-space:nowrap}.macro-goals p{margin:4px 0 0;font-size:13px;line-height:1.4;color:var(--ink-soft);font-variant-numeric:tabular-nums}.goals-link{display:block;margin:4px auto 0}.field-hint{margin:6px 0 0}.goal-history{margin-top:32px}.goal-history ul{margin:0;padding:0;border-top:1px solid var(--line);list-style:none}.goal-history button{display:grid;gap:2px;width:100%;min-height:56px;padding:8px 2px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;text-align:left;font-weight:400}.goal-history button:active:not(:disabled){transform:none;background:var(--surface-hover)}.goal-history button[aria-pressed=true] .row-name{text-decoration:underline;text-underline-offset:3px}.label-photo-section{display:contents}.label-photo-library{display:block;margin:4px auto 0}.label-photo-hint{margin:8px 0 24px}.label-photo-error{margin:8px 0 0}.label-photo{--photo-height: 28dvh;position:sticky;z-index:5;top:env(safe-area-inset-top);padding-block:8px 4px;background:var(--paper)}.screen:has(.label-photo) :is(input,select,summary),form:has(.label-photo) :is(input,select,summary){scroll-margin-top:calc(28dvh + 76px + env(safe-area-inset-top))}.label-photo-frame{height:var(--photo-height);overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.label-photo-frame img{display:block;width:100%;height:100%;object-fit:contain}.label-photo-frame.zoomed img{width:240%;max-width:none;height:auto;object-fit:initial}.label-photo-actions{display:flex;gap:16px;justify-content:space-between}.weight-goal-note{margin:14px 0 0;font-size:14px;line-height:1.4;color:var(--ink-soft)}.weight-goal-note .text-button{min-height:44px;margin-block:-10px;font-size:14px;color:var(--ink)}.period-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;margin-top:12px;padding:2px;border-radius:12px;background:var(--line)}.period-picker button{min-height:44px;padding:0 4px;border:0;border-radius:10px;background:none;font-size:14px;font-weight:500;color:var(--ink-soft)}.period-picker button[aria-pressed=true]{background:var(--surface);color:var(--ink);font-weight:600}.weight-chart{margin-top:16px}.weight-chart svg{display:block;max-width:100%;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:crosshair}.chart-readout{display:flex;flex-wrap:wrap;gap:2px 10px;align-items:baseline;margin:0 0 4px;font-size:14px;color:var(--ink-soft)}.chart-readout strong{font-size:32px;font-weight:600;letter-spacing:-.03em;line-height:1.15;color:var(--ink)}.chart-grid{stroke:var(--line);stroke-width:1}.chart-axis{font-size:12px;fill:var(--ink-soft);font-variant-numeric:tabular-nums}.chart-goal{stroke:var(--ink-soft);stroke-width:1.5;stroke-dasharray:5 4}.chart-goal-label{font-size:12px;font-weight:600;fill:var(--ink-soft);paint-order:stroke;stroke:var(--paper);stroke-width:3px}.chart-crosshair{stroke:var(--line-strong);stroke-width:1}.chart-line{fill:none;stroke:var(--chart);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.chart-dot{fill:var(--chart);stroke:var(--paper);stroke-width:2}.chart-dot-active{fill:var(--ink)}.weight-change{margin:8px 0 0}.weight-chart~h2{margin-top:24px}.weight-list{margin:0;padding:0;border-top:1px solid var(--line);list-style:none}.weight-list .row-name{font-size:15px}.weight-list .row-meta{grid-column:1 / -1}.meal{margin-top:24px}.meal-head{display:flex;gap:12px;align-items:baseline;justify-content:space-between}.meal-head h2{margin:0 0 6px;font-size:17px}.meal-head span{font-size:14px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.meal ul{margin:0;padding:0;border-top:1px solid var(--line);list-style:none}.entry-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;align-items:baseline;width:100%;min-height:56px;padding:8px 2px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;text-align:left;font-weight:400}.entry-row:active:not(:disabled){transform:none;background:var(--surface-hover)}.entry-row .row-name{font-size:16px;font-weight:500}.entry-kcal{font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}.entry-amount.has-unit{display:grid;grid-template-columns:minmax(0,1fr) 124px;gap:8px}.entry-error{margin:-8px 0 16px}.entry-hint{margin-top:12px}.entry-actions{margin-top:24px}.delete-section{margin-top:40px;padding-top:16px;border-top:1px solid var(--line)}.delete-section .hint p{margin:0 0 6px;font-size:14px;line-height:1.4}.delete-section ul{margin:0;padding-left:18px}.delete-confirm>p:first-child{margin:0 0 16px;font-size:15px;line-height:1.5}button.danger-link{min-height:44px;padding:0 2px;border:0;background:none;color:var(--error);text-decoration:underline;text-underline-offset:3px}button.danger{width:100%;border-color:var(--error);background:var(--error);color:var(--surface)}.backup-part{margin-top:32px}.backup-part:first-of-type{margin-top:0}.backup-part+.backup-part{padding-top:32px;border-top:1px solid var(--line)}.backup-part>p:not(.form-error,.status){max-width:60ch;margin:0 0 16px;color:var(--ink-soft)}.backup-message{margin-top:12px}.status{min-height:20px;margin:12px 0 0;font-size:14px;line-height:1.4;overflow-wrap:anywhere}.restore-preview>p{margin:0 0 8px;font-weight:600}.restore-preview dl{margin:0 0 20px}.restore-preview dl div{display:flex;gap:16px;align-items:baseline;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}.restore-preview dt{font-size:15px;color:var(--ink-soft)}.restore-preview dd{margin:0;font-size:17px;font-weight:600;font-variant-numeric:tabular-nums}.restore-preview .hint{margin:0}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(hover:hover)and (pointer:fine){button:hover:not(:disabled):not(.primary,.danger,.danger-link,.text-button,.icon-button,.tab-bar button){background:var(--surface-hover)}button.primary:hover:not(:disabled){background:var(--primary-hover)}.text-button:hover{text-decoration-color:currentColor}.icon-button:hover,.tab-bar button:hover{color:var(--ink)}}@media(prefers-reduced-motion:reduce){button{transition:none}button:active:not(:disabled){transform:none}}
