:root{--bg: #eef1f6;--surface: #ffffff;--surface-2: #f5f7fb;--ink: #0f1b2d;--ink-soft: #5a6779;--line: #dde3ed;--accent: #2b5cff;--accent-soft: #e4ebff;--gold: #f5c451;--good: #0e9f6e;--good-soft: #dcf5ea;--warn: #c76a05;--warn-soft: #ffeed6;--bad: #d63a3a;--bad-soft: #fde3e3;--hero-from: #1b3a78;--hero-to: #0f1b2d;--shadow: 0 1px 2px rgba(15, 27, 45, .05), 0 8px 24px rgba(15, 27, 45, .06);--display: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--body: "Figtree", "Segoe UI", system-ui, sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #090f1b;--surface: #111b2e;--surface-2: #162238;--ink: #e8eef8;--ink-soft: #94a3b8;--line: #22314b;--accent: #7a9bff;--accent-soft: #1b2a52;--gold: #f5c451;--good: #34d399;--good-soft: #0f2d25;--warn: #fbbf4a;--warn-soft: #33260c;--bad: #f87171;--bad-soft: #351619;--hero-from: #1d3f86;--hero-to: #0d1a33;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .35);color-scheme:dark}}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.45 var(--body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.boot{min-height:100vh}.auth{min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:28px;padding:28px 20px;max-width:460px;margin:0 auto}.auth-hero{text-align:center}.auth-hero h1{font:800 2.4rem/1.05 var(--display);letter-spacing:-.02em;margin:14px 0 8px}.auth-hero p{color:var(--ink-soft);max-width:30ch;margin:0 auto}.brand-mark{width:64px;height:64px;margin:0 auto;border-radius:18px;background:linear-gradient(145deg,var(--hero-from),var(--hero-to));display:flex;align-items:flex-end;justify-content:center;gap:6px;padding:14px;box-shadow:var(--shadow)}.brand-mark i{display:block;width:8px;border-radius:3px;background:var(--accent)}.brand-mark i:nth-child(1){height:14px;opacity:.6}.brand-mark i:nth-child(2){height:22px;opacity:.85}.brand-mark i:nth-child(3){height:32px;background:var(--gold)}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:22px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}.auth-card.solo{margin:0}.auth-card.center{text-align:center;align-items:stretch}.auth-card h2{font:700 1.25rem/1.2 var(--display)}.auth-card p{color:var(--ink-soft)}.auth-hint{background:var(--accent-soft);color:var(--ink)!important;border-radius:12px;padding:10px 12px;font-size:.9rem}.auth-card label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.9rem}.auth-card input{border:1.5px solid var(--line);background:var(--surface-2);border-radius:12px;padding:13px 14px;font-size:1rem}.auth-card input:focus{border-color:var(--accent);outline:none;background:var(--surface)}.pw-field{position:relative;display:flex}.pw-field input{width:100%;padding-right:50px}.pw-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:42px;height:42px;display:grid;place-items:center;background:none;border:0;border-radius:10px;color:var(--ink-soft)}.pw-toggle:active{background:var(--surface-2)}.pw-toggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.auth-links{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.auth-links button,.btn-ghost{background:none;border:0;color:var(--accent);font-weight:600;padding:6px 2px}.btn-primary{border:0;border-radius:14px;padding:14px 18px;background:var(--accent);color:#fff;font-weight:700;font-size:1rem}.btn-primary:disabled{opacity:.6}.form-error{color:var(--bad)!important;font-weight:600;font-size:.9rem}.form-notice{color:var(--good)!important;font-weight:600;font-size:.9rem}.shell{max-width:560px;margin:0 auto;min-height:100vh;padding-bottom:calc(86px + env(safe-area-inset-bottom));position:relative}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(14px + env(safe-area-inset-top)) 18px 12px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar-title{min-width:0}.topbar h1{font:800 1.45rem/1.1 var(--display);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sync{display:inline-flex;align-items:center;gap:7px;margin-top:4px;padding:0;background:none;border:0;color:var(--ink-soft);font-size:.8rem;font-weight:500}.sync i{width:8px;height:8px;border-radius:50%;background:var(--good);box-shadow:0 0 0 3px color-mix(in srgb,var(--good) 25%,transparent)}.sync.late i{background:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 28%,transparent)}.sync.warn i,.sync.off i{background:var(--bad);box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 25%,transparent)}.avatar{flex:none;width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line);background:var(--surface);font:700 1rem var(--display)}.menu{position:absolute;right:14px;top:calc(62px + env(safe-area-inset-top));width:min(300px,calc(100% - 28px));background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow)}.menu p{color:var(--ink-soft);font-size:.85rem;overflow-wrap:anywhere}.menu label{display:flex;flex-direction:column;gap:6px;font-size:.8rem;font-weight:600}.menu select{border:1.5px solid var(--line);border-radius:10px;padding:10px;background:var(--surface-2)}.menu>button{border:1.5px solid var(--line);background:none;border-radius:10px;padding:10px;font-weight:600}.banner{margin:4px 18px 0;padding:10px 14px;border-radius:12px;background:var(--warn-soft);color:var(--warn);font-size:.85rem;font-weight:600}.banner.error{background:var(--bad-soft);color:var(--bad)}.content{padding:8px 18px 0}.stack{display:flex;flex-direction:column;gap:14px}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:min(560px,100%);display:grid;grid-template-columns:repeat(3,1fr);padding:8px 10px calc(10px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:30}.tabbar button{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;background:none;border:0;border-radius:12px;color:var(--ink-soft);font-size:.75rem;font-weight:600}.tabbar svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tabbar button.on{color:var(--accent)}.tabbar button.on:before{content:"";position:absolute;top:-9px;width:28px;height:3px;border-radius:0 0 3px 3px;background:var(--accent)}.tabbar b{position:absolute;top:2px;right:calc(50% - 26px);min-width:18px;padding:1px 5px;border-radius:999px;background:var(--bad);color:#fff;font-size:.68rem;line-height:1.3}.hero{position:relative;overflow:hidden;border-radius:24px;padding:22px 20px 18px;color:#fff;background:radial-gradient(120% 90% at 100% 0%,rgba(245,196,81,.22),transparent 55%),linear-gradient(160deg,var(--hero-from),var(--hero-to));box-shadow:var(--shadow)}.eyebrow{font-size:.74rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;opacity:.75}.hero-figure{margin-top:6px;font-family:var(--display);font-weight:800;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.hero-figure span{font-size:clamp(2.8rem,15vw,4rem)}.hero-figure small{font-size:1.5rem;opacity:.6;font-weight:700}.delta{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:.88rem;flex-wrap:wrap}.delta b{padding:3px 10px;border-radius:999px;font-weight:800}.delta.up b{background:#34d39933;color:#6ee7b7}.delta.down b{background:#f8717138;color:#fca5a5}.delta span,.delta.flat{opacity:.85}.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0 0;padding-top:14px;border-top:1px solid rgba(255,255,255,.14)}.hero-stats dt{font-size:.72rem;opacity:.7}.hero-stats dd{margin:2px 0 0;font:700 1.15rem var(--display);font-variant-numeric:tabular-nums}.hero-foot{margin-top:12px;font-size:.82rem;opacity:.85}.hero-foot.good{color:#6ee7b7;opacity:1}.card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:16px 16px 14px;box-shadow:var(--shadow)}.card header{margin-bottom:12px}.card h3{font:700 1rem var(--display);display:flex;align-items:center;gap:8px}.card h3 em{font-style:normal;font-size:.75rem;padding:1px 8px;border-radius:999px;background:var(--surface-2);color:var(--ink-soft)}.group-head small{display:block;margin-top:2px;color:var(--ink-soft);font-size:.78rem}.chart-bars{display:grid;gap:4px;align-items:end;height:150px}.chart-bars.week{height:170px;gap:8px}.bar-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px;min-width:0}.bar-track{flex:1;width:100%;display:flex;align-items:flex-end}.bar{width:100%;border-radius:6px 6px 3px 3px;background:color-mix(in srgb,var(--accent) 38%,var(--surface-2));transition:height .4s ease}.bar.now{background:var(--accent)}.bar.best{background:var(--gold)}.bar-col.future .bar{opacity:.35}.bar-label{font-size:.66rem;color:var(--ink-soft);height:12px;white-space:nowrap}.bar-label.strong{color:var(--ink);font-weight:800}.bar-value{font-size:.62rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;height:12px}.chart-note{margin-top:10px;font-size:.82rem;color:var(--ink-soft)}.chart-note strong{color:var(--ink)}.muted-note{color:var(--ink-soft);font-size:.9rem}.mix-bar{display:flex;height:14px;border-radius:999px;overflow:hidden;background:var(--surface-2);gap:2px}.mix-seg.pay-cash,.dot.pay-cash{background:var(--good)}.mix-seg.pay-card,.dot.pay-card{background:var(--accent)}.mix-seg.pay-transfer,.dot.pay-transfer{background:var(--gold)}.mix-seg.pay-credit,.dot.pay-credit{background:var(--bad)}.mix-legend{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.mix-legend li{display:flex;align-items:center;gap:8px;font-size:.85rem}.mix-legend strong{margin-left:auto;font-variant-numeric:tabular-nums}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none}.dot.out{background:var(--bad)}.dot.critical{background:color-mix(in srgb,var(--bad) 70%,var(--warn))}.dot.low{background:var(--warn)}.dot.soon{background:var(--gold)}.controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:space-between}.segmented{display:inline-flex;padding:3px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.segmented button{border:0;background:none;padding:8px 14px;border-radius:9px;font-weight:600;font-size:.85rem;color:var(--ink-soft)}.segmented.small button{padding:6px 11px;font-size:.8rem}.segmented button.on{background:var(--accent);color:#fff}.ranking{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.ranking li{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 14px}.ranking li.first{border-color:color-mix(in srgb,var(--gold) 60%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--gold) 14%,var(--surface)),var(--surface))}.rank{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);font:800 .9rem var(--display)}.ranking li.first .rank{background:var(--gold);color:#3b2a00}.rank-body{flex:1;min-width:0}.rank-line{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.rank-line strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-main{font:700 1rem var(--display);font-variant-numeric:tabular-nums;white-space:nowrap}.rank-track{height:6px;margin:8px 0 6px;border-radius:999px;background:var(--surface-2);overflow:hidden}.rank-track i{display:block;height:100%;border-radius:inherit;background:var(--accent)}.ranking small{color:var(--ink-soft);font-size:.78rem}.lead{font:700 1.05rem var(--display)}.stock-list{list-style:none;margin:0;padding:0}.stock-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line)}.stock-list li:first-child{border-top:0;padding-top:0}.stock-list strong{display:block;font-weight:600}.stock-list small{color:var(--ink-soft);font-size:.78rem}.chip{flex:none;padding:4px 10px;border-radius:999px;font-size:.75rem;font-weight:700;white-space:nowrap}.chip.hot{background:var(--bad-soft);color:var(--bad)}.chip.warm{background:var(--warn-soft);color:var(--warn)}.empty{padding:28px 18px;text-align:center;color:var(--ink-soft);background:var(--surface);border:1px dashed var(--line);border-radius:18px}.empty.good{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,var(--line));background:var(--good-soft);font-weight:600}.skeleton{display:flex;flex-direction:column;gap:14px}.skeleton i{display:block;height:150px;border-radius:22px;background:linear-gradient(100deg,var(--surface) 30%,var(--surface-2) 50%,var(--surface) 70%);background-size:200% 100%;animation:shimmer 1.3s infinite linear}.skeleton i:first-child{height:210px}@keyframes shimmer{to{background-position:-200% 0}}@media (min-width: 700px){body{background:radial-gradient(60% 50% at 50% 0%,color-mix(in srgb,var(--accent) 10%,var(--bg)),var(--bg))}}.tabbar{grid-template-columns:repeat(4,1fr)}.tabbar button{font-size:.72rem}.tabbar b{right:calc(50% - 24px)}.section-title{font:700 1.05rem var(--display);margin:8px 2px 0}.btn-ghost{border:1.5px solid var(--line);border-radius:12px;padding:11px 16px;background:none;font-weight:600}.btn-good{border:0;border-radius:12px;padding:11px 16px;background:var(--good);color:#04271b;font-weight:700}.btn-warn{border:0;border-radius:12px;padding:11px 16px;background:var(--warn);color:#2e1b00;font-weight:700}.btn-good:disabled,.btn-warn:disabled,.btn-ghost:disabled{opacity:.6}.link{background:none;border:0;padding:0;color:var(--accent);font-weight:600;font-size:.8rem}.shopping header{margin-bottom:12px}.shopping small{display:block;margin-top:3px;color:var(--ink-soft);font-size:.82rem}.shopping-actions{display:flex;gap:10px}.shopping-actions .btn-primary{flex:1}.stock-list small.supplier{margin-top:2px;color:var(--accent);font-weight:600}.order-col{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}.chip.order{background:var(--accent-soft);color:var(--accent)}.cash-hero .cash-since{margin-top:8px;font-size:.95rem;opacity:.92}.cash-hero .cash-who{margin-top:2px;font-size:.85rem;opacity:.75}.cash-hero .hero-figure{margin-top:14px}.cash-hero .cash-sub{font-size:.82rem;opacity:.75;margin-top:4px}.cash-closed .muted-note{margin-top:4px}.corte{display:flex;flex-direction:column;gap:12px}.corte.attention{border-color:color-mix(in srgb,var(--warn) 55%,var(--line))}.corte-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin:0!important}.corte-head h3{text-transform:capitalize}.corte-times{margin-top:3px;font-size:.84rem;color:var(--ink-soft)}.corte-times b{color:var(--ink);font-weight:600}.corte-who{margin-top:2px;font-size:.8rem;color:var(--ink-soft)}.chip.diff-ok{background:var(--good-soft);color:var(--good)}.chip.diff-short{background:var(--bad-soft);color:var(--bad)}.chip.diff-over{background:var(--warn-soft);color:var(--warn)}.chip.diff-none{background:var(--surface-2);color:var(--ink-soft)}.corte-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0}.corte-grid>div{background:var(--surface-2);border-radius:12px;padding:10px}.corte-grid dt{font-size:.7rem;color:var(--ink-soft)}.corte-grid dd{margin:2px 0 0;font:700 1.05rem var(--display);font-variant-numeric:tabular-nums}.corte-grid small{display:block;font:400 .7rem var(--body);color:var(--ink-soft)}.corte-mix,.corte-note{margin:0;font-size:.8rem;color:var(--ink-soft)}.review{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:10px 12px;border-radius:12px;font-size:.82rem}.review.approved{background:var(--good-soft);color:var(--good)}.review.flagged{background:var(--warn-soft);color:var(--warn)}.review p{flex-basis:100%;margin:0;color:var(--ink)}.review .link{margin-left:auto}.review-form{display:flex;flex-direction:column;gap:10px}.review-form input{border:1.5px solid var(--line);background:var(--surface-2);border-radius:12px;padding:12px 14px;font-size:.95rem}.review-actions{display:flex;justify-content:flex-end;gap:10px}.review-actions .btn-good,.review-actions .btn-warn{flex:1}.stock-list small{display:block}.corte-head h3{text-transform:none}.corte-head h3:first-letter{text-transform:uppercase}
