:root{--bg-base:#0d0f14;--bg-surface:#13161f;--bg-card:#181b26;--bg-card-hover:#1e2235;--bg-input:#1e2235;--bg-modal:#13161f;--border:#232840;--border-subtle:#1a1e2e;--border-active:#3a4070;--text-primary:#e8ebf5;--text-secondary:#8a90b0;--text-muted:#555a78;--text-inverse:#0d0f14;--accent:#e8a838;--accent-dim:#b07820;--accent-glow:#e8a83826;--accent-bg:#e8a83814;--teal:#3fc9c0;--teal-dim:#2a9990;--teal-glow:#3fc9c026;--teal-bg:#3fc9c014;--red:#e85050;--red-bg:#e8505014;--green:#4ecb71;--green-bg:#4ecb7114;--r-sm:6px;--r-md:10px;--r-lg:16px;--r-xl:22px;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 20px #00000080;--shadow-lg:0 8px 40px #0009;--shadow-accent:0 0 20px #e8a83833;--shadow-teal:0 0 20px #3fc9c033;--font-ui:"Inter", system-ui, sans-serif;--font-heading:"Syne", sans-serif;--font-mono:"Space Mono", monospace;--t-fast:.12s ease;--t-base:.2s ease;--t-slow:.35s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px}body{background:var(--bg-base);color:var(--text-primary);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-size:1rem;line-height:1.6}#root{flex-direction:column;min-height:100vh;display:flex}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-surface)}::-webkit-scrollbar-thumb{background:var(--border-active);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);line-height:1.2}button{font-family:var(--font-ui);cursor:pointer;transition:var(--t-base);border:none;outline:none}.btn{border-radius:var(--r-md);cursor:pointer;transition:var(--t-base);white-space:nowrap;align-items:center;gap:6px;padding:8px 16px;font-size:.875rem;font-weight:500;display:inline-flex}.btn-primary{background:var(--accent);color:var(--text-inverse);border:none}.btn-primary:hover{box-shadow:var(--shadow-accent);background:#f0b848;transform:translateY(-1px)}.btn-teal{background:var(--teal);color:var(--text-inverse);border:none}.btn-teal:hover{box-shadow:var(--shadow-teal);background:#50d5cc;transform:translateY(-1px)}.btn-ghost{color:var(--text-secondary);border:1px solid var(--border);background:0 0}.btn-ghost:hover{background:var(--bg-card-hover);color:var(--text-primary);border-color:var(--border-active)}.btn-danger{background:var(--red-bg);color:var(--red);border:1px solid #e8505033}.btn-danger:hover{background:var(--red);color:#fff}.btn-sm{padding:5px 10px;font-size:.8125rem}.btn-lg{padding:11px 22px;font-size:.9375rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px}input,select,textarea{font-family:var(--font-ui);background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--r-md);transition:var(--t-fast);outline:none;width:100%;padding:8px 12px;font-size:.9rem}input:focus,select:focus,textarea:focus{border-color:var(--border-active);box-shadow:0 0 0 3px #3a407066}input::placeholder,textarea::placeholder{color:var(--text-muted)}select option{background:var(--bg-card)}.badge{border-radius:100px;align-items:center;gap:4px;padding:2px 8px;font-size:.75rem;font-weight:500;display:inline-flex}.badge-amber{background:var(--accent-bg);color:var(--accent);border:1px solid #e8a83833}.badge-teal{background:var(--teal-bg);color:var(--teal);border:1px solid #3fc9c033}.badge-muted{color:var(--text-muted);border:1px solid var(--border-subtle);background:#8a90b01a}.badge-red{background:var(--red-bg);color:var(--red);border:1px solid #e8505033}.amount{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.9em}.loading-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-center{color:var(--text-secondary);justify-content:center;align-items:center;gap:12px;padding:60px 20px;display:flex}.empty-state{color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:60px 20px;display:flex}.empty-state svg{opacity:.3}.empty-state p{font-size:.9rem}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:.3s both fadeIn}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#000000b3;justify-content:center;align-items:flex-start;padding:80px 20px 20px;animation:.2s both fadeInOverlay;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-modal);border:1px solid var(--border);border-radius:var(--r-xl);width:100%;max-width:600px;max-height:100%;box-shadow:var(--shadow-lg);flex-direction:column;animation:.25s both slideUp;display:flex;overflow:hidden}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:500}.divider{background:var(--border);height:1px;margin:0}.recharts-tooltip-wrapper{outline:none}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--bg-surface);border-bottom:1px solid var(--border);z-index:50;position:sticky;top:0}.app-header-inner{justify-content:space-between;align-items:center;gap:16px;max-width:1100px;height:60px;margin:0 auto;padding:0 20px;display:flex}.app-body{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:0 20px;display:flex}.app-main{flex:1;min-width:0;padding:24px 0 96px 16px}.scan-fab{z-index:40;align-items:center;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.scan-fab .btn{box-shadow:var(--shadow-md);border-radius:100px}.scan-fab-primary{padding:12px 22px;font-size:.95rem;font-weight:600}.scan-fab-secondary{background:var(--bg-card);justify-content:center;width:44px;height:44px;padding:0}.app-nav{flex-direction:column;flex-shrink:0;gap:4px;width:52px;height:calc(100vh - 84px);padding-top:24px;display:flex;position:sticky;top:84px}.app-nav-item{width:40px;height:40px;color:var(--text-muted);cursor:pointer;transition:var(--t-base);background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;text-decoration:none;display:flex}.app-nav-item-admin{margin-top:auto}.app-nav-label{display:none}.segmented{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);gap:2px;padding:3px;display:flex}.segmented-item{cursor:pointer;font-family:var(--font-ui);color:var(--text-secondary);transition:var(--t-base);background:0 0;border:none;border-radius:7px;padding:5px 14px;font-size:.8rem;font-weight:500}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px;display:grid}.stats-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.stats-grid.is-shared{grid-template-columns:1fr 1fr 1fr}.stats-col-2{grid-column:1/3}.stats-col-full{grid-column:1/-1}.pie-row{align-items:center;gap:16px;display:flex}.filter-row{align-items:center;gap:10px;display:flex}.filter-search{flex:1;position:relative}.filter-select{width:180px}.input-sm{height:36px;font-size:.875rem}.month-input{width:160px}.receipt-row{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;transition:var(--t-base);align-items:center;gap:14px;padding:12px 16px;display:flex}@media (hover:hover){.receipt-row:hover{background:var(--bg-card-hover);border-color:var(--border-active);transform:translate(2px)}}.receipt-row-meta{color:var(--text-muted);gap:10px;margin-top:2px;font-size:.78rem;display:flex}.receipt-row-note{text-overflow:ellipsis;white-space:nowrap;max-width:150px;font-style:italic;overflow:hidden}.modal-header{border-bottom:1px solid var(--border);background:var(--bg-modal);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:18px 22px;display:flex}.modal-body{flex-direction:column;flex:auto;gap:20px;min-height:0;padding:20px 22px;display:flex;overflow-y:auto}.modal-body>*{flex-shrink:0}.modal-actions{border-top:1px solid var(--border);justify-content:space-between;gap:8px;padding-top:4px;display:flex}.modal-content>.modal-actions{background:var(--bg-modal);flex-shrink:0;padding:14px 22px}.admin-page{background:var(--bg-base);min-height:100vh;padding:40px 20px}.login-page{background:var(--bg-base);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.admin-row{align-items:flex-end;gap:10px;display:flex}@media (max-width:768px){.btn,.btn-sm,.btn-lg,.touch-target{justify-content:center;min-width:44px;min-height:44px}.btn-sm{padding:8px 12px;font-size:.85rem}input,select,textarea,.input-sm{min-height:44px;font-size:16px}.input-sm{height:auto}textarea{min-height:76px}.app-header-inner{flex-wrap:wrap;gap:10px;height:auto;padding:10px 14px}.app-header-inner .segmented{order:3;width:100%}.app-header-inner .segmented-item{flex:1}.segmented-item{min-height:40px}.app-body{padding:0 14px}.app-main{padding:16px 0 calc(140px + env(safe-area-inset-bottom)) 0}.scan-fab{right:14px;bottom:calc(86px + env(safe-area-inset-bottom))}.scan-fab-primary{padding:12px 18px}.app-nav{width:auto;height:auto;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--bg-surface);border-top:1px solid var(--border);z-index:60;flex-direction:row;justify-content:space-around;gap:2px;position:fixed;inset:auto 0 0}.app-nav-item{flex-direction:column;flex:1;gap:3px;width:auto;min-width:44px;height:52px}.app-nav-item-admin{margin-top:0}.app-nav-label{font-size:.68rem;font-weight:500;line-height:1;display:block}.page-header{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:18px}.page-header-actions{flex-wrap:wrap}.page-header-actions>.btn{flex:1}.grid-2,.stats-grid,.stats-grid.is-shared{grid-template-columns:1fr}.stats-col-2,.stats-col-full{grid-column:auto}.pie-row{flex-direction:column;align-items:stretch;gap:12px}.filter-row{flex-wrap:wrap}.filter-search{flex:100%}.filter-select{flex:140px;width:auto}.month-input{flex:130px;width:auto}.receipt-row{gap:10px;padding:12px 14px}.receipt-row-meta{flex-wrap:wrap;gap:6px}.receipt-row-note{max-width:100%}.modal-backdrop{padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom))}.modal-header{padding:14px 16px}.modal-body{gap:16px;padding:16px}.modal-actions{flex-wrap:wrap}.modal-content>.modal-actions{padding:12px 16px}.admin-page,.login-page{padding:24px 16px}.admin-row{flex-wrap:wrap}.admin-row .form-group{flex:100%}.admin-row .btn{flex:1}.loading-center,.empty-state{padding:40px 16px}.card{padding:16px}}@media (max-width:600px){.modal-backdrop{align-items:stretch;padding:0}.modal-content{border:none;border-radius:0;max-width:none;height:100%}.modal-header{padding-top:calc(14px + env(safe-area-inset-top))}.modal-content>.modal-actions{padding-bottom:calc(12px + env(safe-area-inset-bottom))}}
