:root{--paper: #f6f7f9;--card: #ffffff;--mist: #eff1f5;--hairline: #e2e5eb;--ink: #14171f;--ink-muted: #6b7280;--primary: #2e5bff;--on-primary: #ffffff;--rec-high: #16a34a;--rec-mid: #f59e0b;--rec-low: #dc2626;--protein: #ef4444;--carbs: #f59e0b;--fat: #8b5cf6;--indigo: var(--primary);--indigo-soft: #e7ecff;--mint: var(--rec-high);--mint-soft: #e3f5e9;--coral: #ea580c;--coral-soft: #fdeee3;--amber: var(--rec-mid);--amber-soft: #fdf3e2;--lilac: #8b5cf6;--lilac-soft: #f0ebfe;--rose: var(--rec-low);--rose-soft: #fdeaea;--radius: 16px;--radius-sm: 12px;--gap: 12px;--app-width: 560px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.45;overscroll-behavior-y:none}body{padding-bottom:env(safe-area-inset-bottom)}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}.tnum{font-variant-numeric:tabular-nums}.screen{max-width:var(--app-width);margin:0 auto;padding:0 16px 110px}.topbar{display:flex;align-items:center;gap:10px;padding:max(12px,env(safe-area-inset-top)) 0 12px}.topbar h1{font-size:22px;font-weight:650;margin:0;letter-spacing:-.2px}.topbar .sub{font-size:12px;color:var(--ink-muted);margin:0}.topbar .spacer{flex:1}.stack{display:flex;flex-direction:column;gap:var(--gap)}.row{display:flex;align-items:center;gap:8px}.row.between{justify-content:space-between}.grow{flex:1;min-width:0}.card{background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);padding:16px}.card.tight{padding:14px}.label{font-size:12px;color:var(--ink-muted);letter-spacing:.02em}.big-amount{font-size:34px;font-weight:700;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.section-title{font-size:15px;font-weight:650;margin:6px 2px 0}.muted{color:var(--ink-muted)}.negative{color:var(--rose)}.positive{color:var(--mint)}.strike{text-decoration:line-through}.app-card{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--hairline);border-radius:var(--radius);padding:16px;font:inherit;color:inherit;cursor:pointer}.app-card:active{background:var(--mist)}.app-card.soon{cursor:default;color:var(--ink-muted)}.lbl{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-weight:500}.big{font-size:36px;font-weight:600;letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}.card-title{font-size:15px;font-weight:600}.macro+.macro{margin-top:12px}.macro-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.macro-name{font-size:14px}.macro-nums{font-size:12px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.track{height:8px;background:var(--mist);border-radius:4px;margin:6px 0 4px;overflow:hidden}.track>span{display:block;height:100%;border-radius:4px}.over{color:var(--rec-low)}.macro-compact{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.macro-compact-top{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;color:var(--ink-muted)}.round-line{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:7px 8px;border-radius:8px}.round-line.current{background:var(--mist)}.round-line-title{font-size:13px;color:var(--ink-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.round-line-winner{font-size:14px;font-weight:600;text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.round-block{border:1px solid var(--hairline);border-radius:12px;padding:12px;margin-bottom:10px}.bonus-block{border:1px solid var(--hairline);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--mist)}select{padding:8px 10px;border-radius:10px;border:1px solid var(--hairline);background:var(--card)}.trigger-chips{display:flex;flex-wrap:wrap;gap:6px}.trigger-chip{padding:6px 12px;border-radius:20px;border:1px solid var(--hairline);background:var(--card);font-size:13px;cursor:pointer;color:var(--ink-muted)}.trigger-chip.on{background:var(--indigo-soft);border-color:transparent;color:var(--ink);font-weight:600}.wheel-stage{position:relative;min-width:0;display:flex;flex-direction:column;align-items:center;padding:30px 16px 22px;border-radius:var(--radius);background:linear-gradient(180deg,#0f0f18,#111119)}.spin-controls{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:14px}.config-row{padding:10px 0;border-bottom:1px solid var(--hairline)}.config-row:last-of-type{border-bottom:0}input[type=range]{accent-color:var(--primary)}.wheel-pointer{position:absolute;top:12px;left:50%;transform:translate(-50%);width:0;height:0;border-left:16px solid transparent;border-right:16px solid transparent;border-top:28px solid #f87171;z-index:2;filter:drop-shadow(0 2px 6px rgba(248,113,113,.5))}.wheel-pointer:after{content:"";position:absolute;top:-34px;left:-9px;width:18px;height:18px;background:#f87171;border-radius:50%;box-shadow:0 0 12px #f8717199}.wheel-canvas{display:block;width:100%;max-width:320px;aspect-ratio:1;touch-action:none}.spin-btn{width:100%;max-width:320px;padding:15px;border:0;border-radius:16px;background:linear-gradient(90deg,#6366f1,#8b5cf6);color:#fff;font-size:17px;font-weight:700;letter-spacing:.06em;cursor:pointer;box-shadow:0 6px 18px #6366f147;transition:transform .15s ease}.spin-btn:active:not(:disabled){transform:scale(.97)}.spin-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.winner{width:100%;max-width:320px;margin-top:18px;padding:14px;border-radius:16px;text-align:center;animation:rise .35s cubic-bezier(.16,1,.3,1)}.todo-row{display:flex;align-items:flex-start;gap:10px;padding:10px 2px;border-bottom:1px solid var(--hairline)}.todo-row:last-child{border-bottom:0}.checkbox{width:22px;height:22px;border-radius:50%;border:2px solid var(--ink-muted);background:none;flex:none;margin-top:2px;cursor:pointer;display:grid;place-items:center;font-size:12px;line-height:1;color:transparent;padding:0}.checkbox.on{background:var(--primary);border-color:var(--primary);color:#fff}.todo-title{font-size:15px}.todo-title.done{text-decoration:line-through;color:var(--ink-muted)}.todo-time{color:var(--ink-muted);margin-right:8px;font-size:13px}.bottomnav{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:var(--app-width);display:flex;background:var(--card);border-top:1px solid var(--hairline);padding:8px 4px calc(10px + env(safe-area-inset-bottom));z-index:40}.navitem{flex:1;background:none;border:0;cursor:pointer;font:inherit;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--ink-muted);font-size:11px;padding:2px 0}.navitem .pill{padding:3px 18px;border-radius:999px;display:grid;place-items:center;transition:background .15s}.navitem[aria-current=page]{color:var(--ink);font-weight:600}.navitem[aria-current=page] .pill{background:var(--mist)}.food{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 2px;border-bottom:1px solid var(--hairline)}.food:last-child{border-bottom:0}.food-name{font-size:15px}.chips{display:flex;gap:6px;margin-top:5px;flex-wrap:wrap}.macro-chip{font-size:11px;padding:2px 9px;border:1px solid var(--hairline);border-radius:999px;font-variant-numeric:tabular-nums}.kcal{font-size:13px;color:var(--ink-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.saved-food{display:flex;align-items:center;gap:8px;width:100%;padding:10px 2px;background:none;border:0;border-bottom:1px solid var(--hairline);font:inherit;color:inherit;cursor:pointer;text-align:left}.saved-food:last-of-type{border-bottom:0}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat{border:1px solid var(--hairline);border-radius:14px;padding:10px 12px;display:flex;align-items:center;gap:10px}.stat .stat-value{font-size:15px;font-weight:650;font-variant-numeric:tabular-nums}.tile-glyph{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:15px;color:var(--ink-muted)}.bar{height:10px;border-radius:6px;background:var(--mist);overflow:hidden}.bar>span{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--coral),var(--indigo))}.chip{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:500;background:var(--mist);white-space:nowrap}.chip.mint{background:var(--mint-soft);color:var(--mint)}.chip.coral{background:var(--coral-soft);color:var(--coral)}.chip.amber{background:var(--amber-soft)}.chip.indigo{background:var(--indigo-soft)}.chip.lilac{background:var(--lilac-soft)}.chip.rose{background:var(--rose-soft);color:var(--rose)}.filters{display:flex;gap:8px}.filter{padding:6px 14px;border-radius:20px;border:1px solid var(--hairline);background:var(--card);font-size:13px;cursor:pointer}.filter.on{background:var(--indigo-soft);border-color:transparent;font-weight:600}.btn{border:none;border-radius:12px;padding:11px 18px;font-size:15px;font-weight:600;background:var(--indigo);color:#fff;cursor:pointer}.btn:disabled{opacity:.4;cursor:default}.btn.ghost{background:transparent;color:var(--ink-muted);font-weight:500}.btn.outline{background:var(--card);color:var(--ink);border:1px solid var(--hairline)}.btn.mint{background:var(--mint)}.btn.danger{background:transparent;color:var(--rose)}.btn.small{padding:7px 12px;font-size:13px;border-radius:10px}.btn.block{width:100%}.icon-btn{border:none;background:transparent;padding:8px;border-radius:10px;cursor:pointer;color:var(--ink-muted);font-size:17px;line-height:1}.fab{position:fixed;left:50%;margin-left:calc(min(100vw,var(--app-width))/2 - 72px);bottom:calc(88px + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:18px;border:none;background:var(--primary);color:var(--on-primary);font-size:26px;line-height:1;cursor:pointer;box-shadow:0 3px 10px #2e5bff52;z-index:45}.field{display:block;margin-bottom:10px}.field>span{display:block;font-size:12px;color:var(--ink-muted);margin-bottom:4px}input[type=text],input[type=url],input[type=number],input[type=password],textarea{width:100%;padding:11px 12px;border-radius:12px;border:1px solid var(--hairline);background:var(--card);outline:none}input:focus,textarea:focus{border-color:var(--indigo)}input.error{border-color:var(--rose)}textarea{resize:vertical;min-height:68px}.switch{position:relative;width:46px;height:27px;border-radius:20px;border:none;background:var(--mist);cursor:pointer;flex:none}.switch.on{background:var(--indigo)}.switch:after{content:"";position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;transition:transform .15s ease}.switch.on:after{transform:translate(19px)}.segmented{display:flex;border:1px solid var(--hairline);border-radius:12px;overflow:hidden}.segmented button{flex:1;border:none;background:var(--card);padding:10px 8px;font-size:14px;cursor:pointer}.segmented button.on{background:var(--indigo-soft);font-weight:650}.item-row{display:flex;gap:14px}.item-thumb{width:84px;height:84px;border-radius:14px;background:var(--mist);object-fit:cover;flex:none;display:grid;place-items:center;color:var(--ink-muted);font-size:22px}.item-brand{font-size:11px;letter-spacing:.08em;color:var(--ink-muted);text-transform:uppercase}.item-title{font-size:16px;font-weight:620;margin:2px 0 6px}.item-price{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.check-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.check-table th{font-size:11px;font-weight:500;color:var(--ink-muted);text-align:right;padding-bottom:6px}.check-table th:first-child,.check-table td:first-child{text-align:left}.check-table td{text-align:right;padding:7px 0;font-size:14px;border-top:1px solid var(--hairline)}.check-table tr.fail td{background:var(--rose-soft)}.verdict{border-radius:12px;padding:12px 14px;font-size:14px}.verdict.ok{background:var(--mint-soft);color:#1d7a68}.verdict.bad{background:var(--rose-soft);color:var(--rose)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e263757;display:flex;align-items:flex-end;justify-content:center;z-index:50}.sheet{width:100%;max-width:var(--app-width);max-height:92vh;overflow-y:auto;background:var(--paper);border-radius:22px 22px 0 0;padding:18px 18px calc(24px + env(safe-area-inset-bottom));animation:rise .18s ease}.sheet-handle{width:38px;height:4px;border-radius:4px;background:var(--hairline);margin:0 auto 14px}@keyframes rise{0%{transform:translateY(18px);opacity:.6}}.dialog{margin:auto;width:calc(100% - 40px);max-width:420px;background:var(--card);border-radius:18px;padding:20px}.dialog h3{margin:0 0 6px;font-size:17px}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(84px + env(safe-area-inset-bottom));background:var(--ink);color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;z-index:90;max-width:88vw;text-align:center}.log-note{font-size:14px}.log-amount{font-size:15px;font-weight:650;font-variant-numeric:tabular-nums}.log-balance{font-size:11px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.month-head{padding:14px 2px 2px}.month-head .m{font-size:17px;font-weight:650}.login{min-height:100dvh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:360px;background:var(--card);border:1px solid var(--hairline);border-radius:22px;padding:30px 24px 24px;text-align:center}.login-card h1{font-size:24px;margin:4px 0 2px}.login-card p{margin:0 0 20px;font-size:14px}.login-card input{text-align:center;letter-spacing:.35em;font-size:20px;padding:14px 12px;margin-bottom:12px}.login-mark{display:flex;flex-direction:column;gap:5px;align-items:center;margin-bottom:16px}.login-mark span{display:block;height:7px;border-radius:4px;background:var(--indigo)}.login-mark span:nth-child(1){width:52px}.login-mark span:nth-child(2){width:36px}.login-mark span:nth-child(3){width:44px}.login-error{color:var(--rose);font-size:13px;margin-bottom:10px}.offline-bar{position:fixed;top:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--app-width);background:var(--amber);color:#3d2c08;font-size:12px;font-weight:600;text-align:center;padding:5px;z-index:80}@media (min-width: 640px){body{background:#eceef2}#root{min-height:100dvh;max-width:var(--app-width);margin:0 auto;background:var(--paper);border-left:1px solid var(--hairline);border-right:1px solid var(--hairline)}.bottomnav{border-left:1px solid var(--hairline);border-right:1px solid var(--hairline)}.login{background:#eceef2}}
