:root{--color-bg: #FAF6EF;--color-surface: #FFFFFF;--color-surface-warm: #F3ECDF;--color-border: #E5DCCB;--color-ink: #2D2A26;--color-ink-soft: #6B6459;--color-ink-faint: #9A9184;--color-primary: #2E7D4F;--color-primary-soft: #E3F0E8;--color-accent: #E8743B;--color-accent-soft: #FBE8DD;--color-basket: #C89B5E;--color-success: #2E7D4F;--color-warning: #B9741A;--color-warning-soft: #F8ECD9;--color-danger: #C4453C;--color-danger-soft: #F9E4E2;--store-walmart: #1B75BC;--store-maxipali: #F5B90F;--store-masxmenos: #00833E;--store-pricesmart: #24245C;--store-automercado: #7A1F2B;--store-perimercados: #C8102E;--store-megasuper: #E4002B;--store-other: #8A8177;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius-s: 8px;--radius-m: 12px;--radius-l: 20px;--radius-full: 999px;--shadow-card: 0 1px 3px rgba(45, 42, 38, .08);--shadow-float: 0 4px 16px rgba(45, 42, 38, .16);--motion-fast: .15s ease-out;--motion-med: .25s ease-out}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition-duration:1ms!important}}*{box-sizing:border-box}.offline-bar{background:var(--color-ink);color:var(--color-bg);text-align:center;font:500 .8125rem/1.3 var(--font-sans);padding:var(--space-2) var(--space-4)}.route-fade{animation:route-fade var(--motion-med)}@keyframes route-fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}body{margin:0;font:400 1rem/1.5 var(--font-sans);background:var(--color-bg);color:var(--color-ink)}#root{max-width:560px;margin-inline:auto;min-height:100dvh;padding-bottom:calc(80px + env(safe-area-inset-bottom))}h1,h2,h3,p{margin:0}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit;padding:0}input,select{font:inherit}a{color:var(--color-primary);text-decoration:none}.price,.num{font-variant-numeric:tabular-nums}.app-header{position:sticky;top:0;z-index:20;height:56px;display:flex;align-items:center;gap:var(--space-2);padding-inline:var(--space-4);background:var(--color-bg)}.app-header h1{font:700 1.375rem/1.25 var(--font-sans);flex:1}.app-header .back{width:44px;height:44px;margin-left:-12px;display:grid;place-items:center;font-size:1.4rem;color:var(--color-ink)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:30;height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--color-surface);border-top:1px solid var(--color-border);display:grid;grid-template-columns:repeat(5,1fr);max-width:560px;margin-inline:auto}.bottom-nav a,.bottom-nav button.fab-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font:500 .75rem/1.3 var(--font-sans);color:var(--color-ink-soft);position:relative}.bottom-nav a.active{color:var(--color-primary)}.bottom-nav a.active:before{content:"";position:absolute;top:0;left:20%;right:20%;height:3px;background:var(--color-primary);border-radius:0 0 3px 3px}.bottom-nav .icon{font-size:1.3rem;line-height:1}.fab{width:56px;height:56px;border-radius:var(--radius-full);background:var(--color-accent);color:#fff;font-size:1.8rem;font-weight:600;line-height:1;display:grid;place-items:center;box-shadow:var(--shadow-float);margin-top:-20px}.page{padding-inline:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.card{background:var(--color-surface);border-radius:var(--radius-m);box-shadow:var(--shadow-card);padding:var(--space-4)}.card.warm{background:var(--color-surface-warm);box-shadow:none}.section-title{font:700 1.125rem/1.3 var(--font-sans);margin-top:var(--space-3);display:flex;justify-content:space-between;align-items:baseline}.section-title a{font:400 .875rem/1.4 var(--font-sans)}.stat-label{font:500 .75rem/1.3 var(--font-sans);color:var(--color-ink-soft);text-transform:uppercase;letter-spacing:.04em}.stat-value{font:800 2rem/1.1 var(--font-sans)}.stat-value.small{font:700 1.125rem/1.2 var(--font-sans)}.two-up{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.row-list{display:flex;flex-direction:column}.row-list>*{border-bottom:1px solid var(--color-border)}.row-list>*:last-child{border-bottom:none}.staple-row,.receipt-row{display:flex;align-items:center;gap:var(--space-3);min-height:56px;padding-block:var(--space-2);width:100%;text-align:left;color:inherit}.receipt-row{min-height:72px}.row-main{flex:1;min-width:0}.row-title{font:600 1rem/1.5 var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-caption{font:400 .875rem/1.4 var(--font-sans);color:var(--color-ink-soft)}.row-price{font:700 1.125rem/1.2 var(--font-sans);text-align:right}.chevron{color:var(--color-ink-faint)}.chip{display:inline-flex;align-items:center;gap:var(--space-1);font:500 .75rem/1.3 var(--font-sans);border-radius:var(--radius-full);padding:3px 10px}.chip .dot{width:7px;height:7px;border-radius:50%}.chip.pending{background:var(--color-surface-warm)}.chip.pending .dot{background:var(--color-basket)}.chip.processed{background:var(--color-primary-soft)}.chip.processed .dot{background:var(--color-primary)}.chip.failed{background:var(--color-danger-soft)}.chip.failed .dot{background:var(--color-danger)}.chip.best{background:var(--color-primary);color:#fff}.chip.warn{background:var(--color-warning-soft);color:var(--color-warning)}.store-badge{display:inline-flex;align-items:center;height:24px;padding-inline:10px;border-radius:var(--radius-full);font:700 .75rem/1 var(--font-sans);color:#fff;white-space:nowrap}.store-badge.walmart{background:var(--store-walmart)}.store-badge.maxipali{background:var(--store-maxipali);color:var(--color-ink)}.store-badge.masxmenos{background:var(--store-masxmenos)}.store-badge.pricesmart{background:var(--store-pricesmart)}.store-badge.automercado{background:var(--store-automercado)}.store-badge.perimercados{background:var(--store-perimercados)}.store-badge.megasuper{background:var(--store-megasuper)}.store-badge.other{background:var(--store-other)}.tag{font:500 .75rem/1.3 var(--font-sans);color:var(--color-ink-soft)}.tag.fresh{color:var(--color-primary);font-weight:600}.tag.stale{color:var(--color-warning)}.tag.faint{color:var(--color-ink-faint)}.search-bar{display:flex;align-items:center;gap:var(--space-2);height:48px;padding-inline:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-s)}.search-bar input{flex:1;border:none;outline:none;background:none;min-width:0}.search-bar input::placeholder{color:var(--color-ink-faint)}.chip-row{display:flex;gap:var(--space-2);flex-wrap:wrap}.chip-row .chip{background:var(--color-surface);border:1px solid var(--color-border)}.chip-row .chip.active{background:var(--color-ink);color:var(--color-bg);border-color:var(--color-ink)}.result-card{display:flex;flex-direction:column;gap:var(--space-1)}.result-card.best{background:var(--color-primary-soft);border:1px solid var(--color-primary)}.result-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-2)}.unit-price{font:800 1.75rem/1.1 var(--font-sans)}.unit-price .suffix{font:500 .75rem/1.3 var(--font-sans);color:var(--color-ink-soft);margin-left:4px}.result-name{font:600 1rem/1.4 var(--font-sans);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.result-meta{font:400 .875rem/1.4 var(--font-sans);color:var(--color-ink-soft)}.tag-row{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.btn{height:48px;border-radius:var(--radius-s);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font:600 1.125rem/1 var(--font-sans);padding-inline:var(--space-5);transition:filter var(--motion-fast)}.btn:active{filter:brightness(.92)}.btn:disabled{opacity:.4;pointer-events:none}.btn.primary{background:var(--color-accent);color:#fff;width:100%}.btn.secondary{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-primary)}.btn.ghost{color:var(--color-primary);font-size:1rem;height:40px}.btn.danger-text{color:var(--color-danger);background:var(--color-surface);border:1px solid var(--color-border)}.field{display:flex;flex-direction:column;gap:var(--space-1)}.field label{font:400 .875rem/1.4 var(--font-sans);color:var(--color-ink-soft)}.field input,.field select{height:48px;padding-inline:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-s);background:var(--color-surface);color:var(--color-ink)}.field input:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.field.error input{border-color:var(--color-danger)}.field .error-text{font:500 .75rem/1.3 var(--font-sans);color:var(--color-danger)}.item-entry{display:flex;gap:var(--space-2);align-items:flex-start}.item-entry input.name{flex:1;min-width:0}.item-entry input.price{width:96px}.item-entry .remove{width:44px;height:44px;display:grid;place-items:center;color:var(--color-ink-faint);font-size:1.2rem}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#2d2a2666;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--color-surface);border-radius:var(--radius-l) var(--radius-l) 0 0;width:100%;max-width:560px;padding:var(--space-3) var(--space-4) calc(var(--space-5) + env(safe-area-inset-bottom));box-shadow:var(--shadow-float);animation:sheet-up var(--motion-med);max-height:80dvh;overflow-y:auto}@keyframes sheet-up{0%{transform:translateY(40%);opacity:.5}}.sheet .handle{width:36px;height:4px;border-radius:2px;background:var(--color-border);margin:0 auto var(--space-3)}.sheet-option{display:flex;align-items:center;gap:var(--space-3);min-height:64px;width:100%;text-align:left;border-radius:var(--radius-m);padding-inline:var(--space-2)}.sheet-option:active{background:var(--color-surface-warm)}.sheet-option .emoji{font-size:1.6rem}.banner{padding:var(--space-3) var(--space-4);border-radius:var(--radius-s);font:400 .875rem/1.4 var(--font-sans)}.banner.info{background:var(--color-surface-warm)}.banner.error{background:var(--color-danger-soft)}.toast{position:fixed;bottom:calc(80px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:50;background:var(--color-ink);color:var(--color-bg);padding:var(--space-3) var(--space-4);border-radius:var(--radius-m);box-shadow:var(--shadow-float);font:400 .875rem/1.4 var(--font-sans);max-width:min(90vw,480px);white-space:nowrap}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);max-width:280px;margin-inline:auto}.empty-state .art{font-size:3rem;color:var(--color-basket)}.empty-state h2{font:700 1.125rem/1.3 var(--font-sans)}.empty-state p{color:var(--color-ink-soft)}.skeleton{border-radius:var(--radius-m);background:linear-gradient(90deg,var(--color-surface-warm) 25%,#EFE6D6 50%,var(--color-surface-warm) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton.row{height:56px;margin-bottom:var(--space-2)}.skeleton.card{height:110px;margin-bottom:var(--space-3)}.muted{color:var(--color-ink-soft);font-size:.875rem}.delta-down{color:var(--color-primary);font:500 .875rem/1.4 var(--font-sans)}.delta-up{color:var(--color-danger);font:500 .875rem/1.4 var(--font-sans)}.delta-flat{color:var(--color-ink-soft);font:500 .875rem/1.4 var(--font-sans)}
