:root{--green:#0f7a54;--green-soft:#e3f3ec;--green-mid:#1baf7a;--blue:#2a78d6;--blue-soft:#e6eefb;--orange:#eb6834;--orange-soft:#fdece5;--yellow:#eda100;--yellow-soft:#fbf1d8;--good:#0ca30c;--warning:#fab219;--critical:#d03b3b;--ink:#141414;--ink-2:#52514e;--muted:#8b8a85;--line:#eceae4;--line-2:#e1e0d9;--surface:#fff;--surface-2:#f7f6f2;--page:#eceae6;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0;padding:0}body{font-family:var(--font);color:var(--ink);background:#111}.app-shell{background:var(--surface-2);flex-direction:column;max-width:430px;height:100%;min-height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden}.viewport{-webkit-overflow-scrolling:touch;flex:1;padding:8px 0 96px;overflow:hidden auto}.viewport::-webkit-scrollbar{width:0}.head{padding:10px 20px}.head .hi{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;font-size:12.5px;font-weight:600}.head h2{letter-spacing:-.03em;margin:2px 0 0;font-size:23px}.head .sub{color:var(--ink-2);margin-top:3px;font-size:12.5px}.sect{padding:4px 20px 0}.sect-t{justify-content:space-between;align-items:center;margin:16px 0 9px;display:flex}.sect-t h3{letter-spacing:-.01em;margin:0;font-size:13px;font-weight:700}.sect-t a,.sect-t button.link{color:var(--green);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font);background:0 0;border:none;padding:0;text-decoration:none}.card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:15px;box-shadow:0 1px 2px #14141408}.row{gap:12px;display:flex}.link-note{color:#fff;background:linear-gradient(120deg,#0f7a54,#1baf7a);border-radius:16px;align-items:center;gap:11px;margin:2px 20px 0;padding:13px 15px;display:flex}.link-note .ic{background:#ffffff2e;border-radius:10px;flex:0 0 34px;justify-content:center;align-items:center;width:34px;height:34px;font-size:18px;display:flex}.link-note b{font-size:12.5px;display:block}.link-note p{opacity:.92;margin:2px 0 0;font-size:11.5px;line-height:1.45}.tiles{grid-template-columns:1fr 1fr;gap:11px;padding:0 20px;display:grid}.tile{background:var(--surface);border:1px solid var(--line);cursor:pointer;text-align:left;font-family:var(--font);color:inherit;border-radius:18px;padding:14px;transition:transform .12s}.tile:active{transform:scale(.97)}.tile .lab{color:var(--muted);align-items:center;gap:6px;font-size:11.5px;font-weight:600;display:flex}.tile .big{letter-spacing:-.03em;margin-top:7px;font-size:26px;font-weight:700;line-height:1}.tile .big small{color:var(--muted);letter-spacing:0;font-size:13px;font-weight:600}.tile .meta{margin-top:6px;font-size:11px;font-weight:600}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.ring-wrap{align-items:center;gap:16px;display:flex}.ring{flex:0 0 92px;width:92px;height:92px;position:relative}.ring svg{transform:rotate(-90deg)}.ring .rc{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ring .rc b{letter-spacing:-.02em;font-size:19px;line-height:1}.ring .rc span{color:var(--muted);margin-top:2px;font-size:10px;font-weight:600}.macro{flex-direction:column;flex:1;gap:10px;display:flex}.macro .m .t{justify-content:space-between;margin-bottom:4px;font-size:11.5px;font-weight:600;display:flex}.macro .m .t span:last-child{color:var(--muted)}.bar{background:var(--line-2);border-radius:6px;height:7px;overflow:hidden}.bar>i{border-radius:6px;height:100%;display:block}.item{cursor:pointer;text-align:left;width:100%;font-family:var(--font);color:inherit;background:0 0;border:none;align-items:center;gap:12px;padding:12px 16px;transition:background .12s;display:flex}.item:active{background:var(--surface-2)}.item+.item{border-top:1px solid var(--line)}.thumb{background:var(--surface-2);border-radius:12px;flex:0 0 44px;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;display:flex}.item .n{flex:1;min-width:0}.item .n b{font-size:13.5px;font-weight:600;display:block}.item .n span{color:var(--muted);font-size:11.5px}.item .r{text-align:right;flex:none}.item .r .q{font-size:13px;font-weight:700}.pill{letter-spacing:.01em;border-radius:999px;padding:3px 8px;font-size:10px;font-weight:700;display:inline-block}.pill.warn{background:var(--yellow-soft);color:#9a6a00}.pill.crit{color:#a5231f;background:#fbe3e3}.pill.ok{background:var(--green-soft);color:#0c6344}.chips{gap:8px;padding:2px 20px 0;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{height:0}.chip{background:var(--surface);border:1px solid var(--line-2);color:var(--ink-2);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font);border-radius:999px;flex:none;padding:8px 14px;transition:all .12s}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.search{background:var(--surface);border:1px solid var(--line-2);color:var(--muted);border-radius:13px;align-items:center;gap:10px;margin:2px 20px 0;padding:11px 14px;font-size:13px;display:flex}.search input{font-family:var(--font);color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-size:13px}.rec{background:var(--surface);border:1px solid var(--line);cursor:pointer;text-align:left;width:100%;font-family:var(--font);color:inherit;border-radius:18px;margin-bottom:12px;padding:0;transition:transform .12s;overflow:hidden}.rec:active{transform:scale(.985)}.rec .top{justify-content:space-between;align-items:flex-end;height:96px;padding:11px;display:flex;position:relative}.rec .match{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:var(--green);background:#ffffffeb;border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700}.rec .big-emoji{filter:drop-shadow(0 3px 6px #00000026);font-size:40px;position:absolute;top:8px;left:12px}.rec .body{padding:12px 14px 13px}.rec .body b{letter-spacing:-.01em;font-size:14.5px;display:block}.rec .body .meta{color:var(--ink-2);gap:14px;margin-top:8px;font-size:11.5px;font-weight:600;display:flex}.rec .body .meta i{color:var(--muted);font-style:normal}.rec .miss{color:#9a6a00;background:var(--yellow-soft);border-radius:8px;margin-top:9px;padding:6px 9px;font-size:11px;font-weight:600}.rec .miss.ok{background:var(--green-soft);color:#0c6344}.donut{border-radius:50%;flex:0 0 150px;width:150px;height:150px;position:relative}.donut .hole{background:var(--surface);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:24px}.donut .hole b{letter-spacing:-.02em;font-size:21px}.donut .hole span{color:var(--muted);font-size:10.5px;font-weight:600}.legend{flex-direction:column;flex:1;justify-content:center;gap:9px;display:flex}.legend .lg{align-items:center;gap:9px;font-size:12px;display:flex}.legend .lg b{margin-left:auto;font-weight:700}.legend .lg span{color:var(--ink-2)}.txn{align-items:center;gap:12px;padding:11px 0;display:flex}.txn+.txn{border-top:1px solid var(--line)}.txn .ic{background:var(--surface-2);border-radius:11px;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;display:flex}.txn .n{flex:1}.txn .n b{font-size:13px;display:block}.txn .n span{color:var(--muted);font-size:11px}.txn .amt{font-size:13.5px;font-weight:700}.meal-block+.meal-block{margin-top:12px}.meal-h{justify-content:space-between;align-items:center;margin:0 0 8px;display:flex}.meal-h b{font-size:12.5px}.meal-h span{color:var(--muted);font-size:11.5px;font-weight:600}.btn{background:var(--green);color:#fff;width:calc(100% - 40px);font-size:14px;font-weight:700;font-family:var(--font);cursor:pointer;border:none;border-radius:14px;margin:14px 20px 0;padding:14px;transition:all .12s;display:block}.btn:active{filter:brightness(.95);transform:scale(.98)}.btn.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.nav{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:50;background:#fffffff0;align-items:flex-start;height:78px;padding:9px 6px 0;display:flex;position:absolute;bottom:0;left:0;right:0}.nav button{font-family:var(--font);color:var(--muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:4px 0;display:flex}.nav button .gi{width:24px;height:24px}.nav button span{font-size:10px;font-weight:600}.nav button.on{color:var(--green)}.nav .fabslot{flex:0 0 66px;position:relative}.fab{color:#fff;cursor:pointer;width:56px;height:56px;font-size:27px;font-family:var(--font);background:linear-gradient(135deg,#0f7a54,#1baf7a);border:4px solid #fff;border-radius:50%;justify-content:center;align-items:center;transition:all .12s;display:flex;position:absolute;top:-16px;left:50%;transform:translate(-50%);box-shadow:0 8px 20px #0f7a5466}.fab:active{transform:translate(-50%)scale(.92)}.scrim{opacity:0;pointer-events:none;z-index:70;background:#0f0f0f6b;transition:all .24s;position:absolute;inset:0}.scrim.show{opacity:1;pointer-events:auto}.sheet{background:var(--surface);z-index:71;border-radius:26px 26px 0 0;max-height:82%;padding:10px 20px 26px;transition:transform .3s cubic-bezier(.32,.72,0,1);position:absolute;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(102%)}.sheet.show{transform:none}.grab{background:var(--line-2);border-radius:3px;width:40px;height:5px;margin:6px auto 14px}.sheet h3{letter-spacing:-.02em;margin:0 0 4px;font-size:19px}.sheet .opt{border-bottom:1px solid var(--line);cursor:pointer;text-align:left;width:100%;font-family:var(--font);color:inherit;background:0 0;border-top:none;border-left:none;border-right:none;align-items:center;gap:13px;padding:15px 4px;display:flex}.sheet .opt:active{opacity:.6}.sheet .opt .ic{border-radius:13px;justify-content:center;align-items:center;width:44px;height:44px;font-size:21px;display:flex}.sheet .opt b{font-size:14px;display:block}.sheet .opt p{color:var(--muted);margin:2px 0 0;font-size:11.5px}.kv{border-bottom:1px solid var(--line);justify-content:space-between;padding:11px 0;font-size:13px;display:flex}.kv span{color:var(--ink-2)}.kv b{font-weight:700}.toast{background:var(--ink);color:#fff;opacity:0;pointer-events:none;z-index:80;white-space:nowrap;text-overflow:ellipsis;border-radius:12px;max-width:calc(100% - 40px);padding:11px 18px;font-size:12.5px;font-weight:600;transition:all .25s;position:absolute;bottom:96px;left:50%;overflow:hidden;transform:translate(-50%)translateY(20px);box-shadow:0 8px 24px #0000004d}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}@media (width>=431px){body{background:linear-gradient(160deg,#e9e6df,#d9d5cc);justify-content:center;align-items:center;min-height:100vh;padding:22px 12px;display:flex}.app-shell{border-radius:46px;width:392px;height:812px;min-height:812px;box-shadow:0 12px 40px #1414142e,0 0 0 12px #111,0 0 0 13px #2a2a2a}}.sheet-sub{color:var(--muted);margin:0 0 12px;font-size:12.5px}.field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.field>span{color:var(--ink-2);font-size:11.5px;font-weight:700}.field input,.field select{border:1px solid var(--line-2);font-family:var(--font);background:var(--surface-2);color:var(--ink);border-radius:12px;outline:none;width:100%;padding:11px 12px;font-size:14px}.field input:focus,.field select:focus{border-color:var(--green);background:#fff}.field.compact{margin:0 0 8px 52px}.field-row{gap:10px;display:flex}.field-row .field{flex:1;min-width:0}.seg{flex-wrap:wrap;gap:6px;display:flex}.seg button{border:1px solid var(--line-2);background:var(--surface);min-width:64px;font-family:var(--font);color:var(--ink-2);cursor:pointer;text-transform:capitalize;border-radius:999px;flex:1;padding:9px 8px;font-size:12px;font-weight:600}.seg button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.deduct-list{border:1px solid var(--line);border-radius:14px;max-height:180px;overflow-y:auto}.deduct-row{border-bottom:1px solid var(--line);padding:4px 0 0}.deduct-row:last-child{border-bottom:none}.deduct-row.on{background:var(--green-soft)}.deduct-toggle{cursor:pointer;width:100%;font-family:var(--font);color:inherit;text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:10px 12px;display:flex}.thumb.sm{border-radius:10px;flex:0 0 34px;width:34px;height:34px;font-size:18px}.deduct-toggle .check{background:var(--surface);border:1px solid var(--line-2);width:24px;height:24px;color:var(--muted);border-radius:50%;justify-content:center;align-items:center;margin-left:auto;font-size:12px;font-weight:700;display:flex}.deduct-row.on .check{background:var(--green);color:#fff;border-color:var(--green)}.muted-sm{color:var(--muted);padding:12px;font-size:12px}.empty-card{background:var(--surface);border:1px dashed var(--line-2);text-align:center;border-radius:18px;padding:22px 18px}.empty-card .empty-emoji{margin-bottom:8px;font-size:32px}.empty-card b{letter-spacing:-.01em;font-size:15px;display:block}.empty-card p{color:var(--muted);margin:6px 0 0;font-size:12.5px;line-height:1.45}.onboarding-shell .viewport{padding-bottom:28px}.onboarding-viewport .btn{margin-top:10px}.onb-brand{align-items:center;gap:8px;padding:14px 20px 0;font-size:15px;display:flex}.onb-brand span{font-size:22px}.onb-brand b{letter-spacing:-.02em;color:var(--green)}.onb-item{padding:14px}.onb-item-h{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:11.5px;font-weight:700}.fab-muted-note{color:var(--muted);text-align:center;margin:10px 4px 0;font-size:11.5px}.fab-more{text-align:center;margin-top:14px}.fab-more-toggle{font-family:var(--font);color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:12px;font-weight:600}.fab-more-links{flex-direction:column;gap:4px;margin-top:6px;display:flex}.fab-more-links button{font-family:var(--font);color:var(--ink-2);cursor:pointer;background:0 0;border:none;border-radius:10px;padding:8px;font-size:12px;font-weight:600}.fab-more-links button:active{background:var(--surface-2)}.coach-note{cursor:pointer}.coach-note:active{filter:brightness(.97)}
