:root{--bg: #12181f;--bg-secondary: #1a222c;--bg-tertiary: #212b37;--text: #eef2f6;--text-secondary: #8b96a5;--text-tertiary: #5c6675;--accent: #ff6b35;--accent-hover: #ff7f4d;--accent-ink: #1c0d05;--accent-soft: rgba(255, 107, 53, .16);--green: #5fd3a0;--green-soft: rgba(95, 211, 160, .14);--red: #ff5d6c;--red-soft: rgba(255, 93, 108, .14);--carbs: #ffb26b;--fat: #7fb7ff;--protein: #5fd3a0;--border: #2b3542;--radius: 18px;--radius-sm: 12px;color-scheme:dark}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}#root{min-height:100dvh;display:flex;flex-direction:column}.app-shell{width:100%;max-width:460px;margin:0 auto;padding:0 20px calc(88px + env(safe-area-inset-bottom));flex:1}@media (min-width: 900px){.app-shell{max-width:460px;padding-top:12px}}.large-title{font-size:32px;font-weight:800;letter-spacing:-.02em;text-transform:uppercase;padding:28px 0 4px}.subtitle{font-size:14.5px;color:var(--text-secondary);margin-bottom:20px}.section-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin:24px 0 10px}.header-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.text-btn{background:none;border:1px solid var(--border);border-radius:999px;color:var(--text);font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;padding:8px 16px;transition:border-color .15s ease,color .15s ease}.text-btn:hover{border-color:var(--accent);color:var(--accent)}.text-btn:active{opacity:.6}.text-btn.danger{color:var(--red)}.back-btn{background:none;border:none;color:var(--text-secondary);font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;padding:16px 0 0;display:inline-flex;align-items:center;gap:2px}.back-btn:hover{color:var(--accent)}.card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:15px 16px;margin-bottom:10px;width:100%;text-align:left;font-family:inherit;font-size:17px;color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;transition:transform .15s ease,border-color .15s ease}.card:active{transform:scale(.98)}.card:hover{border-color:var(--accent)}.card.static{cursor:default}.card.static:hover{border-color:var(--border)}.card.static:active{transform:none}.card-title{font-weight:700;font-size:16.5px}.card-sub{font-size:13.5px;color:var(--text-secondary);margin-top:2px;font-variant-numeric:tabular-nums}.chevron{color:var(--text-tertiary);font-size:18px;flex-shrink:0}.remove-btn{background:var(--red);color:#fff;border:none;border-radius:50%;width:26px;height:26px;font-size:16px;line-height:1;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center}.add-card{background:none;border:1.5px dashed var(--border);border-radius:var(--radius);padding:14px;width:100%;color:var(--accent);font-size:15px;font-weight:700;font-family:inherit;cursor:pointer;margin-bottom:10px;transition:border-color .15s ease,background .15s ease}.add-card:hover{border-color:var(--accent);background:var(--accent-soft)}.primary-btn{background:var(--accent);color:var(--accent-ink);border:none;border-radius:16px;padding:15px 24px;font-size:15px;font-weight:800;text-transform:uppercase;letter-spacing:.01em;font-family:inherit;width:100%;cursor:pointer;box-shadow:0 10px 24px -12px #ff6b358c;transition:filter .15s ease,transform .1s ease}.primary-btn:hover{filter:brightness(1.06)}.primary-btn:active{transform:scale(.98)}.primary-btn:disabled{opacity:.4;cursor:default;box-shadow:none}.secondary-btn{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text);border-radius:16px;padding:14px 24px;font-size:15px;font-weight:700;font-family:inherit;width:100%;cursor:pointer}.field{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:13px 16px;font-size:16px;font-family:inherit;color:var(--text);width:100%;outline:none;transition:border-color .15s ease}.field:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field::placeholder{color:var(--text-tertiary)}.field-row{display:flex;gap:8px;margin-bottom:10px}.field-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);margin:0 0 6px 2px;display:block}.tab-bar{position:fixed;bottom:0;left:0;right:0;background:#141a21db;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:1px solid var(--border);display:flex;justify-content:center;gap:4px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));z-index:100}.tab-item{background:none;border:none;font-family:inherit;font-size:11px;font-weight:700;letter-spacing:.02em;color:var(--text-tertiary);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 22px 4px;position:relative;flex:0 1 140px}.tab-item.active{color:var(--accent)}.tab-item .tab-indicator{position:absolute;top:-10px;left:50%;transform:translate(-50%);width:26px;height:3px;border-radius:999px;background:var(--accent);opacity:0;transition:opacity .16s ease}.tab-item.active .tab-indicator{opacity:1}.tab-icon{width:23px;height:23px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.stat-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.stat-value{font-size:24px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:3px}.stat-value.positive{color:var(--green)}.stat-value.negative{color:var(--red)}.mini-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:20px}.mini-stat-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:11px 12px;text-align:left}.mini-stat-card .stat-label{font-size:10px}.mini-stat-card .stat-value{font-size:17px}.chart-wrap{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px 12px 10px;margin-bottom:16px}.ring-wrap{position:relative;display:flex;justify-content:center;margin:8px 0 20px}.ring-wrap svg{width:208px;height:208px}.ring-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:150px;text-align:center;pointer-events:none}.ring-center .kcal-big{font-size:40px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}.ring-center .kcal-sub{font-size:13px;color:var(--text-secondary);font-weight:600;margin-top:6px}.ring-center .kcal-left{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:6px 12px;border-radius:999px;background:var(--green-soft);color:var(--green);font-size:12.5px;font-weight:800}.ring-center .kcal-left.over{background:var(--red-soft);color:var(--red)}.macro-list{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.macro-row{background:var(--bg-secondary);border:1px solid var(--border);border-radius:14px;padding:12px 14px}.macro-row .row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.macro-row .row .name{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700}.macro-row .row .name .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.macro-row .row .amt{font-size:13px;color:var(--text-secondary);font-weight:700;font-variant-numeric:tabular-nums}.macro-row .track{height:6px;border-radius:999px;background:var(--bg-tertiary);overflow:hidden}.macro-row .fill{height:100%;border-radius:999px;transition:width .4s ease}.meal-macros{font-size:13px;color:var(--text-secondary)}.wheel-wrap{max-width:380px;margin:0 auto}.wheel{position:relative;height:196px;margin:4px 0 2px;overflow:hidden;touch-action:none;cursor:grab}.wheel:active{cursor:grabbing}.wheel-track{position:relative;width:100%;height:100%}.wheel-card{position:absolute;top:4px;left:50%;width:126px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:18px;padding:15px 12px 13px;text-align:left;-webkit-user-select:none;user-select:none;cursor:pointer;transition:transform .34s cubic-bezier(.22,.68,0,1.01),opacity .34s ease,border-color .2s ease,background .2s ease}.wheel.is-dragging .wheel-card{transition:opacity .34s ease,border-color .2s ease,background .2s ease}.wheel-card.is-selected{border-color:var(--accent);background:linear-gradient(165deg,var(--accent-soft),var(--bg-secondary) 65%)}.wheel-card .tag{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;background:var(--bg-tertiary);color:var(--text-secondary);margin-bottom:14px}.wheel-card.is-selected .tag{background:var(--accent);color:var(--accent-ink)}.wheel-card .tag svg{width:17px;height:17px}.wheel-card h3{margin:0 0 3px;font-size:15px;font-weight:800;letter-spacing:-.01em}.wheel-card p{margin:0;font-size:11px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.wheel-card .remove-btn{position:absolute;top:-7px;right:-7px}.wheel-dots{display:flex;justify-content:center;align-items:center;gap:6px;margin:2px 0 6px}.wheel-dot{width:6px;height:6px;border-radius:50%;background:var(--border);transition:background .2s ease,transform .2s ease}.wheel-dot.is-active{background:var(--accent);transform:scale(1.35)}.wheel-hint{margin:0 0 20px;text-align:center;font-size:11.5px;color:var(--text-tertiary)}.open-plan-btn{margin-bottom:20px}.exercise-edit-row{align-items:center}.step-wrap{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:3px}.stepper{display:flex;align-items:center;gap:7px}.step-btn{width:27px;height:27px;border-radius:8px;line-height:1;border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text);font-size:15px;font-weight:700;font-family:inherit;display:flex;align-items:center;justify-content:center;cursor:pointer}.step-btn:hover{border-color:var(--accent);color:var(--accent)}.step-val{min-width:18px;text-align:center;font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}.step-cap{font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary)}.set-row{display:flex;align-items:center;gap:10px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:8px}.set-row.done{opacity:.55}.set-num{font-size:14px;font-weight:700;color:var(--text-secondary);width:48px;flex-shrink:0}.set-input{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:10px;padding:10px 8px;font-size:16px;font-family:inherit;color:var(--text);text-align:center;width:100%;outline:none;font-variant-numeric:tabular-nums}.set-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.set-done-text{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--green)}.timer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#090c10eb;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:200;padding:24px}.timer-label{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);margin-bottom:6px}.timer-time{font-size:84px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.1;color:var(--accent)}.timer-next{font-size:15px;color:var(--text-secondary);margin:12px 0 32px;text-align:center}.timer-ring{width:100%;max-width:280px;height:6px;background:var(--bg-secondary);border-radius:3px;overflow:hidden;margin-bottom:32px}.timer-ring-fill{height:100%;background:var(--accent);border-radius:3px;transition:width 1s linear}.skip-btn{background:var(--bg-secondary);border:1px solid var(--border);border-radius:999px;padding:13px 32px;font-size:15px;font-weight:700;font-family:inherit;color:var(--text);cursor:pointer}.skip-btn:hover{border-color:var(--accent);color:var(--accent)}.scan-btn{flex:0 0 auto;width:48px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--accent);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s ease,background .15s ease}.scan-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.scan-btn svg{width:22px;height:22px}.scan-hint{font-size:12.5px;color:var(--text-tertiary);margin:-4px 0 10px 2px}.scan-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#090c10eb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:center;z-index:200;padding:24px}.scan-card{width:100%;max-width:360px;display:flex;flex-direction:column;align-items:center}.scan-video-wrap{position:relative;width:100%;aspect-ratio:1 / 1;border-radius:var(--radius);overflow:hidden;background:#000;border:1px solid var(--border)}.scan-video{width:100%;height:100%;object-fit:cover}.scan-frame{position:absolute;top:18%;right:10%;bottom:18%;left:10%;border:2.5px solid var(--accent);border-radius:14px;box-shadow:0 0 0 999px #090c1059;pointer-events:none}.scan-status{font-size:14.5px;color:var(--text-secondary);text-align:center;margin:18px 0 20px;max-width:300px}.auth-wrap{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;max-width:400px;margin:0 auto;padding:24px}.auth-title{font-size:36px;font-weight:800;letter-spacing:-.02em;text-transform:uppercase;text-align:center}.auth-sub{text-align:center;color:var(--text-secondary);margin:8px 0 32px}.auth-error{color:var(--red);font-size:14px;text-align:center;margin-top:12px}.auth-hint{color:var(--green);font-size:14px;text-align:center;margin-top:12px}.empty-state{text-align:center;color:var(--text-tertiary);font-size:15px;padding:40px 0}.done-screen{text-align:center;padding:80px 0}.done-emoji{font-size:56px}.fade-in{animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}.wheel-card{transition:none!important}}.form-error{color:var(--red);font-size:14px;line-height:1.4;margin:4px 0 12px;text-align:center}
