@charset "UTF-8";:root{--paper: #e9ebe4;--card: #fcfcfa;--ink: #14171a;--ink2: #5d665c;--line: #cfd6c8;--pine: #1e4d3f;--pine-soft: #dce6df;--prot: #2c6e63;--carb: #c08016;--fat: #a8503c;--font-body: "Public Sans", system-ui, -apple-system, sans-serif;--font-label: "Archivo Narrow", "Arial Narrow", sans-serif;--font-display: "Instrument Serif", Georgia, serif}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}.nd{min-height:100vh}.nd-wrap{max-width:600px;margin:0 auto;padding:0 14px 108px}.nd-wrap.no-nav{padding-bottom:24px}a{color:var(--pine);text-decoration:underline;text-underline-offset:2px}:focus-visible{outline:2px solid var(--pine);outline-offset:2px}.lbl{font-family:var(--font-label);text-transform:uppercase;letter-spacing:.09em;font-weight:600;font-size:11px;color:var(--ink2)}.serif{font-family:var(--font-display);font-weight:400;letter-spacing:-.01em}.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.note{font-size:12.5px;color:var(--ink2);line-height:1.5}.note.error{color:var(--fat);font-weight:600}.note.ok{color:var(--pine);font-weight:600}.mini{display:flex;gap:10px;font-size:12px;color:var(--ink2)}.mini b{font-weight:600;color:var(--ink)}.stack>*+*{margin-top:8px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.nd-card{background:var(--card);border:1px solid var(--line);border-radius:3px}.nd-top{position:sticky;top:0;z-index:30;background:var(--paper);border-bottom:1px solid var(--line);padding:10px 0 8px}.nd-datebar{display:flex;align-items:center;gap:8px}.nd-date{flex:1;min-width:0}.nd-date h1{margin:0;font-size:26px;line-height:1.05}.nd-date .sub{display:block;margin-top:1px}.arrow{width:34px;height:34px;flex:none;border:1px solid var(--line);background:var(--card);border-radius:3px;cursor:pointer;font-size:15px;color:var(--ink);display:flex;align-items:center;justify-content:center}.arrow:hover{border-color:var(--pine);color:var(--pine)}.panel{background:var(--card);border:1px solid var(--ink);border-radius:2px;padding:12px 13px 10px;margin-top:12px}.panel-title{display:flex;justify-content:space-between;align-items:baseline}.panel-title h2{margin:0;font-family:var(--font-label);text-transform:uppercase;letter-spacing:.06em;font-size:15px;font-weight:700}.rule-thick{height:7px;background:var(--ink);margin:6px 0 0}.rule-med{height:3px;background:var(--ink)}.rule-thin{height:1px;background:var(--ink);opacity:.25}.nrow{display:flex;align-items:baseline;gap:8px;padding:7px 0 6px}.nrow .nm{font-weight:600;font-size:14px}.nrow .vals{margin-left:auto;display:flex;align-items:baseline}.nrow .v{text-align:right;font-weight:600}.v-now{width:96px}.v-goal{width:74px;color:var(--ink2);font-weight:500}.v-pct{width:52px}.big{font-size:23px;letter-spacing:-.02em}.bar{height:6px;background:var(--pine-soft);overflow:hidden;margin-bottom:7px}.bar>i{display:block;height:100%;transition:width .18s ease-out}.left-note{display:flex;justify-content:space-between;align-items:baseline;padding-top:8px}.meal{margin-top:14px}.meal-head{display:flex;align-items:baseline;gap:8px;padding-bottom:5px}.meal-head h3{margin:0;font-family:var(--font-label);font-size:14px;text-transform:uppercase;letter-spacing:.1em;font-weight:700}.leader{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-4px)}.trow{display:flex;align-items:baseline;gap:8px;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);padding:9px 2px;cursor:pointer;font:inherit;color:inherit}.trow:first-child{border-top:0}.trow:hover{background:#f2f4ee}.trow .nm{min-width:0}.trow .nm b{font-weight:500;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trow .qt{font-size:12px;color:var(--ink2)}.trow .kc{font-weight:600}.add-row{display:flex;align-items:center;gap:6px;width:100%;border:0;border-top:1px solid var(--line);background:none;padding:9px 2px;cursor:pointer;color:var(--pine);font:inherit;font-size:13px;font-weight:600}.add-row:hover{color:var(--ink)}.btn{font:inherit;font-weight:600;font-size:14px;border-radius:3px;padding:10px 14px;border:1px solid var(--ink);background:var(--card);color:var(--ink);cursor:pointer}.btn:hover{background:#f0f2ec}.btn-primary{background:var(--pine);border-color:var(--pine);color:#f4f7f2}.btn-primary:hover{background:#173c31}.btn-ghost{border-color:var(--line)}.btn-danger{border-color:var(--fat);color:var(--fat)}.btn-sm{padding:7px 11px;font-size:13px}.btn:disabled{opacity:.45;cursor:not-allowed}.input{font:inherit;font-size:15px;width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:3px;background:var(--card);color:var(--ink)}.input:focus{outline:none;border-color:var(--pine);box-shadow:0 0 0 2px #1e4d3f26}select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink2) 50%),linear-gradient(135deg,var(--ink2) 50%,transparent 50%);background-position:calc(100% - 16px) 52%,calc(100% - 11px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:30px}.field{display:block;margin-bottom:10px}.field>.lbl{display:block;margin-bottom:4px}.chip{font-family:var(--font-label);text-transform:uppercase;letter-spacing:.06em;font-size:10px;font-weight:600;padding:2px 6px;border-radius:2px;background:var(--pine-soft);color:var(--pine);white-space:nowrap}.chip-own{background:#f0e4d6;color:#8a5a22}.chip-rec{background:#e3e2ef;color:#4a4780}.filters{display:flex;gap:6px;margin:10px 0}.filter{font-family:var(--font-label);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:600;padding:5px 10px;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:2px}.filter.on{background:var(--pine);border-color:var(--pine);color:#f4f7f2}.res-list{border:1px solid var(--line);border-bottom:0;border-radius:3px;overflow:hidden;margin-top:10px}.res{width:100%;text-align:left;background:var(--card);border:0;border-bottom:1px solid var(--line);padding:10px 11px;cursor:pointer;font:inherit;color:inherit;display:flex;gap:10px;align-items:center}.res:hover{background:#f1f3ed}.res .info{min-width:0;flex:1}.res .n{font-weight:500;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.res .m{font-size:12px;color:var(--ink2)}.sheet{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center}.sheet-bg{position:absolute;inset:0;background:rgba(20,23,26,.42);border:0;padding:0;cursor:pointer}.sheet-panel{position:relative;width:100%;max-width:600px;max-height:92vh;overflow-y:auto;background:var(--paper);border-radius:12px 12px 0 0;padding:14px 14px 22px;animation:rise .18s ease-out}@keyframes rise{0%{transform:translateY(16px);opacity:.6}to{transform:none;opacity:1}}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.sheet-head h3{margin:0;font-size:20px}.x{border:0;background:none;font-size:22px;line-height:1;cursor:pointer;color:var(--ink2);padding:2px 6px}.nav{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--card);border-top:1px solid var(--line)}.nav-in{max-width:600px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr)}.nav a{padding:9px 4px calc(9px + env(safe-area-inset-bottom));cursor:pointer;color:var(--ink2);text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:3px;border-top:3px solid transparent;margin-top:-1px}.nav a.on{color:var(--pine);border-top-color:var(--pine)}.nav a .lbl{color:inherit}.nav .ic{font-size:17px;line-height:1}.empty{text-align:center;padding:26px 16px;color:var(--ink2)}.empty .serif{font-size:19px;color:var(--ink);display:block;margin-bottom:3px}.sec-title{margin:18px 0 8px;display:flex;align-items:baseline;gap:8px}.sec-title h2{margin:0;font-size:22px}.auth{max-width:380px;margin:0 auto;padding-top:12vh;text-align:center}.auth-title{font-size:40px;margin:0;line-height:1}.auth .field{text-align:left}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
