.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:40px;padding:0 var(--space-4);border-radius:var(--radius-md);font:inherit;cursor:pointer;border:1px solid #0000;font-weight:600;transition:background-color .15s ease-out;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{min-height:32px;padding:0 var(--space-3);font-size:13px}.btn-block{width:100%}.btn-primary{background:var(--primary);color:var(--primary-foreground)}.btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--primary) 88%, var(--foreground))}.btn-secondary{background:var(--secondary);color:var(--foreground)}.btn-secondary:hover:not(:disabled),.btn-ghost:hover:not(:disabled){background:var(--accent);color:var(--accent-foreground)}.btn-ghost{color:var(--foreground);background:0 0}.btn-destructive{background:var(--destructive);color:var(--destructive-foreground)}.spinner{border-radius:var(--radius-pill);border:2px solid;border-right-color:#0000;width:1em;height:1em;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.field{gap:var(--space-1);flex-direction:column;display:flex}.field-label{font-weight:600}.field-input{min-height:40px;padding:0 var(--space-3);border:1px solid var(--input);border-radius:var(--radius-md);background:var(--card);color:var(--foreground);font:inherit}.field-textarea{min-height:88px;padding:var(--space-2) var(--space-3);resize:vertical}.field-input[aria-invalid=true]{border-color:var(--destructive)}.field-hint{color:var(--muted-foreground);font-size:13px;line-height:18px}.field-error{color:var(--destructive);font-size:13px;line-height:18px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4)}.card-header{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.alert{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);align-items:flex-start;display:flex}.alert svg{flex:none;margin-top:2px}.alert-info{background:var(--info-background);color:var(--info-foreground)}.alert-success{background:var(--success-background);color:var(--success-foreground)}.alert-warning{background:var(--warning-background);color:var(--warning-foreground)}.alert-danger{background:var(--danger-background);color:var(--destructive)}.badge{padding:0 var(--space-2);border-radius:var(--radius-pill);align-items:center;min-height:22px;font-size:13px;font-weight:600;display:inline-flex}.badge-neutral{background:var(--secondary);color:var(--foreground)}.badge-primary{background:var(--accent);color:var(--accent-foreground)}.badge-highlight{background:var(--highlight);color:var(--highlight-foreground)}.badge-success{background:var(--success-background);color:var(--success-foreground)}.badge-warning{background:var(--warning-background);color:var(--warning-foreground)}.badge-danger{background:var(--danger-background);color:var(--destructive)}.segmented{background:var(--secondary);border-radius:var(--radius-md);gap:2px;padding:2px;display:inline-flex}.segmented-option{min-height:32px;padding:0 var(--space-3);border-radius:calc(var(--radius-md) - 2px);color:var(--muted-foreground);font:inherit;cursor:pointer;background:0 0;border:0;font-weight:600}.segmented-option[aria-checked=true]{background:var(--card);color:var(--foreground);box-shadow:inset 0 0 0 1px var(--border)}.ring{place-items:center;display:inline-grid;position:relative}.ring svg{transform:rotate(-90deg)}.ring-track{stroke:var(--progress-track)}.ring-value{stroke:var(--nutrient-calories);transition:stroke-dashoffset .4s ease-out}.ring-over{stroke:var(--progress-over)}.ring-label{text-align:center;position:absolute}.logo{display:inline-flex}.logo-dark,[data-theme=dark] .logo-light,[data-theme=amoled] .logo-light{display:none}[data-theme=dark] .logo-dark,[data-theme=amoled] .logo-dark{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme]) .logo-light{display:none}:root:not([data-theme]) .logo-dark{display:block}}.icon-btn{border-radius:var(--radius-md);width:36px;height:36px;color:var(--foreground);cursor:pointer;border:0;flex:none;place-items:center;padding:0;transition:background-color .15s ease-out;display:inline-grid}.icon-btn-ghost{background:0 0}.icon-btn-secondary{background:var(--secondary)}.icon-btn:hover:not(:disabled){background:var(--accent);color:var(--accent-foreground)}.icon-btn:disabled{opacity:.45;cursor:not-allowed}.overlay{z-index:50;padding:var(--space-4);place-items:center;display:grid;position:fixed;inset:0}.overlay-backdrop{background:var(--scrim);position:absolute;inset:0}.dialog,.sheet{gap:var(--space-3);background:var(--popover);color:var(--foreground);border:1px solid var(--border);box-shadow:var(--shadow-overlay);padding:var(--space-4);max-height:calc(100dvh - 2 * var(--space-4));flex-direction:column;display:flex;position:relative;overflow:auto}.dialog{border-radius:var(--radius-lg);width:min(480px,100%)}.dialog-header{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.dialog-body{gap:var(--space-4);flex-direction:column;display:flex}.dialog-footer{justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-2);display:flex}.overlay-sheet{place-items:stretch end;padding:0}.sheet{border-radius:var(--radius-xl) 0 0 var(--radius-xl);width:min(440px,100%);height:100dvh;max-height:100dvh;animation:.2s ease-out sheet-in-side}@media (width<=640px){.overlay-sheet{place-items:end stretch}.sheet{border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;height:auto;max-height:90dvh;animation-name:sheet-in-bottom}.dialog-footer{flex-direction:column-reverse}.dialog-footer>.btn{width:100%}}@keyframes sheet-in-side{0%{opacity:0;transform:translate(24px)}}@keyframes sheet-in-bottom{0%{opacity:0;transform:translateY(24px)}}.toasts{z-index:60;right:var(--space-4);bottom:var(--space-4);gap:var(--space-2);width:min(400px, calc(100vw - 2 * var(--space-4)));pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast{pointer-events:auto;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);background:var(--popover);color:var(--foreground);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);display:flex}.toast-success{border-color:var(--success-foreground)}.toast-danger{border-color:var(--destructive)}.toast-message{flex:1}.toast-action{color:var(--primary);font:inherit;padding:var(--space-2);border-radius:var(--radius-md);cursor:pointer;background:0 0;border:0;font-weight:600}.toast-action:hover{background:var(--accent)}@media (width<=640px){.toasts{left:var(--space-4);bottom:var(--bottom-nav-space);width:auto}}.tabs-list{gap:var(--space-1);border-bottom:1px solid var(--border);display:flex;overflow-x:auto}.tabs-tab{padding:var(--space-2) var(--space-3);color:var(--muted-foreground);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;font-weight:600}.tabs-tab[aria-selected=true]{color:var(--primary);border-bottom-color:var(--primary)}.tabs-panel{padding-top:var(--space-4)}.select-wrap{display:flex;position:relative}.select{appearance:none;width:100%;padding-right:calc(var(--space-3) + 24px)}.select-icon{right:var(--space-3);pointer-events:none;color:var(--muted-foreground);position:absolute;top:50%;transform:translateY(-50%)}.number-field{align-items:center;gap:var(--space-1);min-height:40px;padding:0 var(--space-1);border:1px solid var(--input);border-radius:var(--radius-md);background:var(--card);display:flex}.number-field:focus-within{outline:2px solid var(--ring);outline-offset:2px}.number-field[data-invalid=true]{border-color:var(--destructive)}.number-input{min-width:0;color:var(--foreground);font:inherit;font-variant-numeric:tabular-nums;text-align:right;padding:0 var(--space-1);background:0 0;border:0;flex:1}.number-input:focus-visible{outline:none}.number-unit{color:var(--muted-foreground);padding-right:var(--space-1)}.check-row{align-items:flex-start;gap:var(--space-3);display:flex}.check-label{cursor:pointer;flex-direction:column;gap:2px;font-weight:600;display:flex}.checkbox{width:20px;height:20px;accent-color:var(--primary);border-radius:var(--radius-sm);cursor:pointer;flex:none;margin:1px 0 0}.switch-row{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.switch{border:1px solid var(--input);border-radius:var(--radius-pill);background:var(--secondary);cursor:pointer;flex:none;width:44px;height:26px;padding:0;transition:background-color .15s ease-out;position:relative}.switch-thumb{border-radius:var(--radius-pill);background:var(--muted-foreground);width:20px;height:20px;transition:transform .15s ease-out;position:absolute;top:2px;left:2px}.switch[aria-checked=true]{background:var(--primary);border-color:var(--primary)}.switch[aria-checked=true] .switch-thumb{background:var(--primary-foreground);transform:translate(18px)}.switch:disabled{opacity:.55;cursor:not-allowed}.empty{align-items:center;gap:var(--space-2);padding:var(--space-12) var(--space-4);text-align:center;flex-direction:column;display:flex}.empty-icon{color:var(--muted-foreground);margin-bottom:var(--space-2)}.skeleton{background:var(--secondary);animation:1.4s ease-in-out infinite skeleton-pulse;display:block}.skeleton-text{gap:var(--space-2);flex-direction:column;display:flex}@keyframes skeleton-pulse{50%{opacity:.55}}.stat-tile{gap:var(--space-1);flex-direction:column;display:flex}.stat-value{align-items:baseline;gap:var(--space-1);display:inline-flex}.stat-unit{color:var(--muted-foreground);font-weight:600}.list-row{align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) 0;text-align:left;color:var(--foreground);flex-wrap:wrap;display:flex}.list-row+.list-row{border-top:1px solid var(--border)}.list-row-button{font:inherit;cursor:pointer;background:0 0;border:0;border-radius:0}.list-row-button:hover{background:var(--accent)}.list-row-text{flex-direction:column;flex:1;min-width:0;display:flex}.list-row-leading,.list-row-trailing{align-items:center;gap:var(--space-2);flex:none;display:inline-flex}.macro-bar{border-radius:var(--radius-pill);background:var(--progress-track);gap:2px;width:100%;height:10px;display:flex;overflow:hidden}.macro-seg{height:100%;transition:width .4s ease-out;position:relative}.macro-protein{background:var(--nutrient-protein)}.macro-carbs{background:var(--nutrient-carbs)}.macro-fat{background:var(--nutrient-fat)}.macro-sugar{background:var(--nutrient-sugar);position:absolute;inset:0 auto 0 0}.week-strip{align-items:center;gap:var(--space-1);display:flex}.week-days{gap:var(--space-1);flex:1;grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.week-day{padding:var(--space-1) 0;border-radius:var(--radius-md);color:var(--foreground);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;display:flex}.week-day:hover{background:var(--accent)}.week-day-name{color:var(--muted-foreground);font-size:11px;font-weight:700;line-height:14px}.week-day-number{font-family:var(--font-display);font-variant-numeric:tabular-nums;border-radius:var(--radius-pill);place-items:center;width:32px;height:32px;font-weight:700;display:grid}.week-day.is-today .week-day-number{color:var(--date-today);box-shadow:inset 0 0 0 2px var(--date-today)}.week-day.is-future .week-day-number{color:var(--date-future)}.week-day[aria-selected=true] .week-day-number{background:var(--primary);color:var(--primary-foreground);box-shadow:none}.week-day-dot{border-radius:var(--radius-pill);width:5px;height:5px}.week-day-dot.is-logged{background:var(--date-past)}.week-day-dot.is-planned{border:1.5px solid var(--primary)}.chart{min-width:0;margin:0}.chart-plot{width:100%;position:relative;overflow:hidden}.chart-svg{display:block;overflow:visible}.chart-svg text{fill:var(--muted-foreground);font-variant-numeric:tabular-nums}.chart-grid line{stroke:var(--border);stroke-width:1px}.chart-line{fill:none;stroke:var(--chart-color);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-dot{fill:var(--card);stroke:var(--chart-color);stroke-width:2px}.chart-compact .chart-dot{fill:var(--chart-color);stroke:none}.chart-dot-active{fill:var(--chart-color)}.chart-points{border:0;min-width:0;margin:0;padding:0;position:absolute;inset:0}.chart-point{border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:0;width:24px;height:24px;margin:-12px 0 0 -12px;padding:0;position:absolute}.chart-tooltip{--tip-x:var(--space-3);--tip-y:-50%;z-index:1;padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--popover);color:var(--foreground);box-shadow:var(--shadow-overlay);white-space:nowrap;pointer-events:none;transform:translate(var(--tip-x), var(--tip-y));flex-direction:column;display:flex;position:absolute}.chart-tooltip-left{--tip-x:calc(-100% - var(--space-3))}.chart-tooltip-below{--tip-y:0%}.chart-tooltip-above{--tip-y:-100%}.chart-empty{padding:var(--space-6) 0;text-align:center}
