:root{--color-bg:#f8f9fa;--color-surface:#fff;--color-primary:#2d6a4f;--color-primary-dark:#1b4332;--color-primary-light:#52b788;--color-accent:#0d9488;--color-accent-dark:#0f766e;--color-text:#1a1a2e;--color-text-secondary:#6b7280;--color-border:#e5e7eb;--color-error:#dc2626;--color-success:#16a34a;--color-budget-ok:#16a34a;--color-budget-warn:#f59e0b;--color-budget-over:#dc2626;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001f;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"SF Mono", "Fira Code", monospace;--nav-height:64px;--max-width:480px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-size:16px}body{font-family:var(--font);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;min-height:100dvh;line-height:1.5}#root{flex-direction:column;min-height:100dvh;display:flex}.page-loader{flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100dvh;animation:.3s ease-out fadeIn;display:flex}.page-loader .dumbbell-icon{color:var(--color-primary);animation:.8s ease-in-out infinite alternate dumbbellPulse}.page-loader p{color:var(--color-text-secondary);font-size:.9rem;animation:.5s ease-out .2s both fadeInUp}@keyframes dumbbellPulse{0%{opacity:.6;transform:scale(1)rotate(-15deg)}to{opacity:1;transform:scale(1.1)rotate(15deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes flipPulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes glowPulse{0%{box-shadow:0 0 4px var(--glow-color,var(--color-accent))}50%{box-shadow:0 0 12px var(--glow-color,var(--color-accent)), 0 0 20px var(--glow-color,var(--color-accent))}to{box-shadow:0 0 4px var(--glow-color,var(--color-accent))}}.btn-time-active{--glow-color:var(--color-primary-light);animation:2s ease-in-out infinite glowPulse;position:relative;background:var(--color-primary)!important;color:#fff!important;border-color:var(--color-primary)!important}.btn-time-inactive{opacity:.4;filter:grayscale(.6);transition:opacity .3s,filter .3s}@keyframes ringPulse{0%{box-shadow:0 0 #2d6a4f66}70%{box-shadow:0 0 0 10px #2d6a4f00}to{box-shadow:0 0 #2d6a4f00}}.routine-today-card{background:linear-gradient(135deg, var(--color-surface), #2d6a4f0a);animation:2s ease-in-out infinite ringPulse;position:relative;border:2px solid var(--color-primary)!important}.routine-today-badge{background:var(--color-primary);color:#fff;text-transform:uppercase;letter-spacing:.5px;border-radius:12px;padding:2px 10px;font-size:.65rem;font-weight:700;position:absolute;top:-8px;right:12px;box-shadow:0 2px 8px #2d6a4f4d}.routine-scroll-highlight{scroll-margin-top:100px}.anim-fade-in{animation:.3s ease-out fadeIn}.anim-fade-in-up{animation:.4s ease-out both fadeInUp}.anim-slide-up{animation:.4s ease-out both slideUp}.anim-slide-right{animation:.3s ease-out both slideInRight}.anim-scale-in{animation:.3s ease-out both fadeInScale}.stagger>*{animation:.4s ease-out both fadeInUp}.stagger>:first-child{animation-delay:50ms}.stagger>:nth-child(2){animation-delay:.1s}.stagger>:nth-child(3){animation-delay:.15s}.stagger>:nth-child(4){animation-delay:.2s}.stagger>:nth-child(5){animation-delay:.25s}.stagger>:nth-child(6){animation-delay:.3s}.stagger>:nth-child(7){animation-delay:.35s}.stagger>:nth-child(8){animation-delay:.4s}.app-layout{max-width:var(--max-width);width:100%;padding:0 16px;padding-bottom:calc(var(--nav-height) + 24px);flex-direction:column;flex:1;align-items:center;margin:0 auto;display:flex}.app-layout>*{width:100%}.btn{border-radius:var(--radius-md);cursor:pointer;font-size:.95rem;font-weight:600;font-family:var(--font);border:none;justify-content:center;align-items:center;gap:8px;width:100%;min-height:48px;padding:12px 24px;text-decoration:none;transition:all .2s;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-bg);border-color:var(--color-primary-light)}.btn-accent{background:var(--color-accent);color:#fff}.btn-accent:hover{background:var(--color-accent-dark)}.btn-ghost{color:var(--color-primary);background:0 0;min-height:auto;padding:8px 16px}.btn-ghost:hover{background:#2d6a4f14}.btn-icon{border-radius:50%;width:48px;min-width:48px;padding:0}.btn-sm{width:auto;min-height:36px;padding:8px 16px;font-size:.85rem}.card{background:var(--color-surface);border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-sm);padding:16px;transition:box-shadow .2s,transform .2s}.card:hover{box-shadow:var(--shadow-md)}.card-clickable{cursor:pointer}.card-clickable:active{transform:scale(.99)}.input-group{flex-direction:column;gap:6px;display:flex}.input-group label{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:.85rem;font-weight:600}.input{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;font-size:1rem;font-family:var(--font);background:var(--color-surface);color:var(--color-text);min-height:48px;padding:12px 16px;transition:border-color .2s}.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.input[type=number]{-moz-appearance:textfield}.input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #2d6a4f26}.select{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;font-size:1rem;font-family:var(--font);background:var(--color-surface);color:var(--color-text);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;min-height:48px;padding:12px 40px 12px 16px}.select:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #2d6a4f26}.bottom-nav{width:100%;max-width:var(--max-width);height:var(--nav-height);background:var(--color-surface);border-top:1px solid var(--color-border);z-index:100;justify-content:space-around;align-items:center;padding:0 8px;animation:.3s ease-out slideUp;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{cursor:pointer;color:var(--color-text-secondary);font-size:.7rem;font-weight:500;font-family:var(--font);background:0 0;border:none;flex-direction:column;align-items:center;gap:2px;min-width:60px;padding:8px 12px;text-decoration:none;transition:color .2s;display:flex}.nav-item.active{color:var(--color-primary)}.nav-item svg{transition:transform .2s}.nav-item.active svg{transform:scale(1.1)}.badge{border-radius:20px;align-items:center;gap:4px;padding:4px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-primary{color:var(--color-primary);background:#2d6a4f1a}.badge-accent{color:var(--color-accent);background:#f973161a}.badge-success{color:var(--color-success);background:#16a34a1a}.progress-bar{background:var(--color-border);border-radius:4px;width:100%;height:8px;overflow:hidden}.progress-fill{background:var(--color-primary);border-radius:4px;height:100%;transition:width .5s}.progress-fill.warning{background:var(--color-accent)}.progress-fill.over{background:var(--color-error)}.page-header{width:100%;padding:24px 0 16px;animation:.4s ease-out fadeInUp}.page-header h1{margin-bottom:4px;font-size:1.5rem;font-weight:700}.page-header p{color:var(--color-text-secondary);font-size:.9rem}.macro-row{gap:16px;padding:12px 0;display:flex}.macro-item{text-align:center;flex:1}.macro-value{font-size:1.1rem;font-weight:700}.macro-label{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:.7rem}.exercise-card{align-items:flex-start;gap:12px;padding:12px;display:flex}.exercise-thumb{border-radius:var(--radius-sm);object-fit:cover;background:var(--color-bg);flex-shrink:0;width:80px;height:60px}.exercise-info{flex:1;min-width:0}.exercise-info h3{margin-bottom:2px;font-size:.95rem;font-weight:600}.exercise-meta{color:var(--color-text-secondary);flex-wrap:wrap;gap:8px;margin-top:4px;font-size:.75rem;display:flex}.exercise-meta span{align-items:center;gap:3px;display:flex}.food-item{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:10px 0;display:flex}.food-item:last-child{border-bottom:none}.food-name{font-size:.9rem;font-weight:500}.food-macros{color:var(--color-text-secondary);font-size:.75rem}.food-cost{color:var(--color-primary);white-space:nowrap;font-size:.85rem;font-weight:600}.calorie-summary{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);align-items:center;gap:20px;padding:20px;display:flex}.calorie-ring{text-align:center;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:80px;height:80px;font-size:.75rem;font-weight:700;line-height:1.2;display:flex}.calorie-details{flex:1}.calorie-details .stat{justify-content:space-between;padding:4px 0;font-size:.85rem;display:flex}.empty-state{text-align:center;color:var(--color-text-secondary);flex-direction:column;align-items:center;gap:12px;padding:48px 24px;display:flex}.empty-state svg{opacity:.4}.empty-state h3{color:var(--color-text);font-size:1.1rem}.separator{background:var(--color-border);height:1px;margin:16px 0}@media (width>=768px){.app-layout{padding:0 24px;padding-bottom:calc(var(--nav-height) + 24px)}}.skeleton{background:linear-gradient(90deg, var(--color-border) 25%, #f0f0f0 50%, var(--color-border) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}.skeleton-text{width:60%;height:14px;margin-bottom:8px}.skeleton-card{height:80px;margin-bottom:12px}:root{--sileo-spring-easing:linear(0, .002 0.6%, .007 1.2%, .015 1.8%, .026 2.4%, .041 3.1%, .06 3.8%, .108 5.3%, .157 6.6%, .214 8%, .467 13.7%, .577 16.3%, .631 17.7%, .682 19.1%, .73 20.5%, .771 21.8%, .808 23.1%, .844 24.5%, .874 25.8%, .903 27.2%, .928 28.6%, .952 30.1%, .972 31.6%, .988 33.1%, 1.01 35.7%, 1.025 38.5%, 1.034 41.6%, 1.038 45%, 1.035 50.1%, 1.012 64.2%, 1.003 73%, .999 83.7%, 1);--sileo-duration:.6s;--sileo-height:40px;--sileo-width:350px;--sileo-state-success:oklch(72.3% .219 142.136);--sileo-state-loading:oklch(55.6% 0 0);--sileo-state-error:oklch(63.7% .237 25.331);--sileo-state-warning:oklch(79.5% .184 86.047);--sileo-state-info:oklch(68.5% .169 237.323);--sileo-state-action:oklch(62.3% .214 259.815)}[data-sileo-toast]{cursor:pointer;pointer-events:auto;touch-action:none;width:var(--sileo-width);height:var(--_h,var(--sileo-height));opacity:0;transform-origin:50%;contain:layout style;background:0 0;border:0;padding:0;position:relative;overflow:visible;transform:translateZ(0)scale(.95)}[data-sileo-toast][data-state=loading]{cursor:default}[data-sileo-toast][data-ready=true]{opacity:1;transition:transform calc(var(--sileo-duration) * .66) var(--sileo-spring-easing), opacity calc(var(--sileo-duration) * .66) var(--sileo-spring-easing), margin-bottom calc(var(--sileo-duration) * .66) var(--sileo-spring-easing), margin-top calc(var(--sileo-duration) * .66) var(--sileo-spring-easing), height var(--sileo-duration) var(--sileo-spring-easing);transform:translateZ(0)scale(1)}[data-sileo-viewport][data-position^=top] [data-sileo-toast]:not([data-ready=true]){transform:translateY(-6px)scale(.95)}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast]:not([data-ready=true]){transform:translateY(6px)scale(.95)}[data-sileo-toast][data-ready=true][data-exiting=true]{opacity:0;pointer-events:none}[data-sileo-viewport][data-position^=top] [data-sileo-toast][data-ready=true][data-exiting=true]{transform:translateY(-6px)scale(.95)}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast][data-ready=true][data-exiting=true]{transform:translateY(6px)scale(.95)}[data-sileo-canvas]{pointer-events:none;contain:layout style;position:absolute;left:0;right:0;overflow:visible;transform:translateZ(0)}[data-sileo-canvas][data-edge=top]{bottom:0;transform:scaleY(-1)translateZ(0)}[data-sileo-canvas][data-edge=bottom]{top:0}[data-sileo-svg]{overflow:visible}[data-sileo-header]{z-index:20;height:var(--sileo-height);left:var(--_px,0px);transform:var(--_ht);max-width:var(--_pw);align-items:center;padding:.5rem;display:flex;position:absolute;overflow:hidden}[data-sileo-toast][data-ready=true] [data-sileo-header]{transition:transform var(--sileo-duration) var(--sileo-spring-easing), left var(--sileo-duration) var(--sileo-spring-easing), max-width var(--sileo-duration) var(--sileo-spring-easing)}[data-sileo-header][data-edge=top]{bottom:0}[data-sileo-header][data-edge=bottom]{top:0}[data-sileo-header-stack]{align-items:center;height:100%;display:inline-flex;position:relative}[data-sileo-header-inner]{white-space:nowrap;opacity:1;filter:blur();align-items:center;gap:.5rem;display:flex;transform:translateZ(0)}[data-sileo-header-inner][data-layer=current]{z-index:1;animation:sileo-header-enter var(--sileo-duration) var(--sileo-spring-easing) both;position:relative}[data-sileo-header-inner][data-layer=current]:not(:only-child),[data-sileo-header-inner][data-exiting=true]{will-change:opacity, filter}[data-sileo-header-inner][data-layer=prev]{z-index:0;pointer-events:none;position:absolute;top:0;left:0}[data-sileo-header-inner][data-exiting=true]{animation:sileo-header-exit calc(var(--sileo-duration) * .7) ease forwards}[data-sileo-badge]{box-sizing:border-box;width:24px;height:24px;color:var(--sileo-tone,currentColor);background-color:var(--sileo-tone-bg,transparent);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;padding:2px;display:flex}[data-sileo-title]{text-transform:capitalize;color:var(--sileo-tone,currentColor);font-size:.825rem;font-weight:500;line-height:1rem}:is([data-sileo-badge],[data-sileo-title],[data-sileo-button])[data-state]{--_c:var(--sileo-state-success)}:is([data-sileo-badge],[data-sileo-title],[data-sileo-button])[data-state=loading]{--_c:var(--sileo-state-loading)}:is([data-sileo-badge],[data-sileo-title],[data-sileo-button])[data-state=error]{--_c:var(--sileo-state-error)}:is([data-sileo-badge],[data-sileo-title],[data-sileo-button])[data-state=warning]{--_c:var(--sileo-state-warning)}:is([data-sileo-badge],[data-sileo-title],[data-sileo-button])[data-state=info]{--_c:var(--sileo-state-info)}:is([data-sileo-badge],[data-sileo-title],[data-sileo-button])[data-state=action]{--_c:var(--sileo-state-action)}:is([data-sileo-badge],[data-sileo-title])[data-state]{--sileo-tone:var(--_c);--sileo-tone-bg:color-mix(in oklch, var(--_c) 20%, transparent)}[data-sileo-content]{z-index:10;pointer-events:none;width:100%;opacity:var(--_co,0);position:absolute;left:0}[data-sileo-content]:not([data-visible=true]){content-visibility:hidden}[data-sileo-toast][data-ready=true] [data-sileo-content]{transition:opacity calc(var(--sileo-duration) * .08) ease calc(var(--sileo-duration) * .04)}[data-sileo-content][data-edge=top]{top:0}[data-sileo-content][data-edge=bottom]{top:var(--sileo-height)}[data-sileo-content][data-visible=true]{pointer-events:auto}[data-sileo-toast][data-ready=true] [data-sileo-content][data-visible=true]{transition:opacity calc(var(--sileo-duration) * .6) ease calc(var(--sileo-duration) * .3)}[data-sileo-description]{text-align:left;contain:layout style paint;content-visibility:auto;width:100%;padding:1rem;font-size:.875rem;line-height:1.25rem}[data-sileo-button]{cursor:pointer;height:1.75rem;color:var(--sileo-btn-color,currentColor);background-color:var(--sileo-btn-bg,transparent);border:0;border-radius:9999px;justify-content:center;align-items:center;margin-top:.75rem;padding:0 .625rem;font-size:.75rem;font-weight:500;transition:background-color .15s;display:flex}[data-sileo-button]:hover{background-color:var(--sileo-btn-bg-hover,transparent)}[data-sileo-button][data-state]{--sileo-btn-color:var(--_c);--sileo-btn-bg:color-mix(in oklch, var(--_c) 15%, transparent);--sileo-btn-bg-hover:color-mix(in oklch, var(--_c) 25%, transparent)}[data-sileo-icon=spin]{animation:1s linear infinite sileo-spin}@keyframes sileo-spin{to{transform:rotate(360deg)}}@keyframes sileo-header-enter{0%{opacity:0;filter:blur(6px)}to{opacity:1;filter:blur()}}@keyframes sileo-header-exit{0%{opacity:1;filter:blur()}to{opacity:0;filter:blur(6px)}}[data-sileo-viewport]{z-index:50;pointer-events:none;contain:layout style;gap:.75rem;max-width:calc(100vw - 1.5rem);padding:.75rem;display:flex;position:fixed}[data-sileo-viewport][data-position^=top] [data-sileo-toast]:not([data-ready=true]){margin-bottom:calc(-1 * (var(--sileo-height) + .75rem))}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast]:not([data-ready=true]){margin-top:calc(-1 * (var(--sileo-height) + .75rem))}[data-sileo-viewport][data-position^=top]{flex-direction:column-reverse;top:0}[data-sileo-viewport][data-position^=bottom]{flex-direction:column;bottom:0}[data-sileo-viewport][data-position$=left]{align-items:flex-start;left:0}[data-sileo-viewport][data-position$=right]{align-items:flex-end;right:0}[data-sileo-viewport][data-position$=center]{align-items:center;left:50%;transform:translate(-50%)}@media (prefers-reduced-motion:no-preference){[data-sileo-toast][data-ready=true]:hover,[data-sileo-toast][data-ready=true][data-exiting=true]{will-change:transform, opacity, height}}@media (prefers-reduced-motion:reduce){[data-sileo-viewport],[data-sileo-viewport] *,[data-sileo-viewport] :before,[data-sileo-viewport] :after{transition-duration:.01ms;animation-duration:.01ms;animation-iteration-count:1}}[data-sileo-viewport][data-theme=dark] [data-sileo-description]{color:#00000080}[data-sileo-viewport][data-theme=light] [data-sileo-description]{color:#ffffff80}
