:root{--font-sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--space-4:4px;--space-8:8px;--space-12:12px;--space-16:16px;--space-20:20px;--space-24:24px;--radius-sm:10px;--radius-md:16px;--radius-card:22px;--radius-pill:9999px;--app-bg:var(--tg-theme-bg-color,#f4f5f8);--surface-primary:var(--tg-theme-secondary-bg-color,#fff);--surface-secondary:#f1f5f9b3;--surface-elevated:#fff;--text-primary:var(--tg-theme-text-color,#0f172a);--text-secondary:var(--tg-theme-subtitle-text-color,#64748b);--text-muted:var(--tg-theme-hint-color,#94a3b8);--border-subtle:var(--tg-theme-section-separator-color,#94a3b82e);--accent-primary:var(--tg-theme-button-color,#10b981);--accent-primary-text:var(--tg-theme-button-text-color,#fff);--income-color:#16a34a;--income-bg:#16a34a14;--income-border:#16a34a33;--expense-color:#e11d48;--expense-bg:#e11d4814;--expense-border:#e11d4833;--net-color:#7c3aed;--net-bg:#7c3aed14;--net-border:#7c3aed33;--shadow-soft:0 4px 20px -2px #0f172a0a;font-family:var(--font-sans);color:var(--text-primary);background-color:var(--app-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{background-color:var(--app-bg);min-width:320px;min-height:100vh;color:var(--text-primary);margin:0}button{font:inherit;color:inherit}.app-shell{width:100%;max-width:480px;min-height:100vh;padding-inline:var(--space-16);padding-top:max(16px, env(safe-area-inset-top));padding-bottom:max(20px, env(safe-area-inset-bottom));gap:var(--space-16);flex-direction:column;margin:0 auto;display:flex}.dashboard-page-content{gap:var(--space-16);flex-direction:column;animation:.35s ease-out fadeInDashboard;display:flex}.dashboard-card{padding:var(--space-20);border-radius:var(--radius-card);background-color:var(--surface-primary);border:1px solid var(--border-subtle);box-shadow:var(--shadow-soft)}.card-header{margin-bottom:var(--space-16);justify-content:space-between;align-items:center;display:flex}.card-header h2{letter-spacing:-.01em;margin:0;font-size:1.05rem;font-weight:750}.count-badge{border-radius:var(--radius-pill);background-color:var(--surface-secondary);color:var(--text-secondary);padding:2px 10px;font-size:.76rem;font-weight:700}.dashboard-header{padding-top:var(--space-8);justify-content:space-between;align-items:flex-start;display:flex}.header-text-group{flex-direction:column;gap:2px;display:flex}.brand-label{letter-spacing:.1em;text-transform:uppercase;color:var(--accent-primary);font-size:.72rem;font-weight:800}.greeting-heading{letter-spacing:-.02em;margin:0;font-size:clamp(1.4rem,5vw,1.75rem);font-weight:850;line-height:1.2}.subtitle-text{color:var(--text-secondary);margin:0;font-size:.86rem;font-weight:500}.dev-badge{border-radius:var(--radius-pill);color:#d97706;background-color:#f59e0b1f;border:1px solid #f59e0b4d;align-items:center;gap:6px;padding:4px 10px;font-size:.72rem;font-weight:700;display:inline-flex}.dev-dot{background-color:#f59e0b;border-radius:50%;width:6px;height:6px}.segmented-control-container{border-radius:var(--radius-md);background-color:var(--surface-primary);border:1px solid var(--border-subtle);box-shadow:var(--shadow-soft);grid-template-columns:1fr 1fr;min-height:48px;padding:4px;display:grid;position:relative}.segmented-pill-bg{border-radius:calc(var(--radius-md) - 4px);background-color:var(--accent-primary);width:calc(50% - 4px);transition:transform .22s cubic-bezier(.16,1,.3,1);position:absolute;top:4px;bottom:4px;box-shadow:0 4px 14px #10b9814d}.segmented-pill-bg.period-week{transform:translate(0)}.segmented-pill-bg.period-month{transform:translate(100%)}.segmented-tab-btn{z-index:2;border-radius:calc(var(--radius-md) - 4px);min-height:40px;color:var(--text-secondary);justify-content:center;align-items:center;gap:var(--space-8);cursor:pointer;background:0 0;border:0;font-size:.88rem;font-weight:700;transition:color .18s;display:flex;position:relative}.segmented-tab-btn.active{color:var(--accent-primary-text)}.segmented-tab-btn:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.net-balance-card{border:1px solid var(--border-subtle);min-height:170px;box-shadow:var(--shadow-soft);border-radius:24px;flex-direction:column;justify-content:space-between;padding:22px;transition:background-color .25s;display:flex;position:relative;overflow:hidden}.net-balance-card.positive{background:linear-gradient(145deg, #10b98124 0%, var(--surface-primary) 70%);border-color:#10b9814d}.net-balance-card.negative{background:linear-gradient(145deg, #e11d4824 0%, var(--surface-primary) 70%);border-color:#e11d484d}.card-top-row{justify-content:space-between;align-items:center;display:flex}.card-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);font-size:.82rem;font-weight:700}.trend-icon-pill{border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.positive .trend-icon-pill{background-color:var(--income-bg);color:var(--income-color)}.negative .trend-icon-pill{background-color:var(--expense-bg);color:var(--expense-color)}.card-amount-wrapper{margin:12px 0 8px}.net-amount-text{letter-spacing:-.035em;font-variant-numeric:tabular-nums;margin:0;font-size:clamp(1.8rem,6.5vw,2.4rem);font-weight:900;line-height:1.1}.positive .net-amount-text{color:var(--income-color)}.negative .net-amount-text{color:var(--expense-color)}.sparkline-bottom-wrapper{width:100%;height:44px;margin-top:4px}.trend-sparkline-svg{width:100%;height:100%}.positive .trend-sparkline-svg{color:var(--income-color)}.negative .trend-sparkline-svg{color:var(--expense-color)}.financial-metrics-grid{gap:var(--space-12);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.metric-card{background-color:var(--surface-primary);border:1px solid var(--border-subtle);min-height:105px;box-shadow:var(--shadow-soft);border-radius:18px;flex-direction:column;justify-content:space-between;gap:8px;padding:14px 12px;display:flex}.metric-header-row{align-items:center;gap:var(--space-8);display:flex}.metric-icon-bubble{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.tone-income{border-color:var(--income-border);background:linear-gradient(180deg, var(--income-bg) 0%, var(--surface-primary) 100%)}.tone-income .metric-icon-bubble{background-color:var(--income-bg);color:var(--income-color)}.tone-income .metric-amount{color:var(--income-color)}.tone-expense{border-color:var(--expense-border);background:linear-gradient(180deg, var(--expense-bg) 0%, var(--surface-primary) 100%)}.tone-expense .metric-icon-bubble{background-color:var(--expense-bg);color:var(--expense-color)}.tone-expense .metric-amount{color:var(--expense-color)}.tone-net-positive,.tone-net-negative{border-color:var(--net-border);background:linear-gradient(180deg, var(--net-bg) 0%, var(--surface-primary) 100%)}.tone-net-positive .metric-icon-bubble,.tone-net-negative .metric-icon-bubble{background-color:var(--net-bg);color:var(--net-color)}.tone-net-positive .metric-amount,.tone-net-negative .metric-amount{color:var(--net-color)}.metric-label{color:var(--text-secondary);font-size:.74rem;font-weight:700}.metric-amount{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin-top:auto;font-size:clamp(.88rem,3.2vw,1.05rem);font-weight:850}.category-breakdown-card{flex-direction:column;display:flex}.category-card-body{gap:var(--space-20);flex-direction:column;display:flex}.donut-chart-container{padding:var(--space-8) 0;justify-content:center;align-items:center;display:flex}.donut-conic-ring{border-radius:50%;justify-content:center;align-items:center;width:150px;height:150px;transition:background .4s;display:flex;position:relative;box-shadow:0 4px 16px #0000000f}.donut-hole-center{background-color:var(--surface-primary);text-align:center;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:104px;height:104px;padding:8px;display:flex}.donut-center-label{text-transform:uppercase;color:var(--text-secondary);font-size:.7rem;font-weight:700}.donut-center-val{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:.85rem;font-weight:850}.category-items-list{gap:var(--space-12);flex-direction:column;display:flex}.category-row-item{justify-content:space-between;align-items:center;font-size:.88rem;display:flex}.category-name-group{align-items:center;gap:var(--space-8);display:flex}.category-color-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.category-name{font-weight:650}.category-values-group{align-items:center;gap:var(--space-12);display:flex}.category-amount{font-variant-numeric:tabular-nums;font-weight:800}.category-percent-badge{color:var(--text-secondary);text-align:right;min-width:44px;font-size:.75rem;font-weight:700}.recent-transactions-card{flex-direction:column;display:flex}.transactions-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.transaction-row{justify-content:space-between;align-items:center;gap:var(--space-12);border-bottom:1px solid var(--border-subtle);padding:12px 0;display:flex}.transaction-row:last-child{border-bottom:0;padding-bottom:0}.tx-left-group{align-items:center;gap:var(--space-12);min-width:0;display:flex}.tx-icon-bubble{border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.income-bubble{background-color:var(--income-bg);color:var(--income-color)}.expense-bubble{background-color:var(--expense-bg);color:var(--expense-color)}.tx-details{flex-direction:column;min-width:0;display:flex}.tx-title{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;font-weight:700;overflow:hidden}.tx-subtext{color:var(--text-secondary);margin-top:2px;font-size:.75rem}.tx-right-group{flex-shrink:0}.tx-amount{font-variant-numeric:tabular-nums;font-size:.92rem;font-weight:800}.amount-income{color:var(--income-color)}.amount-expense{color:var(--expense-color)}.empty-state-card,.error-state-card{text-align:center;padding:var(--space-24) var(--space-16)}.empty-icon-bubble,.error-icon-bubble{width:52px;height:52px;margin-bottom:var(--space-12);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.empty-icon-bubble{color:var(--accent-primary);background-color:#10b9811f}.error-icon-bubble{color:var(--expense-color);background-color:#e11d481f}.empty-title,.error-title{margin:0;font-size:1.05rem;font-weight:800}.empty-subtext{margin:var(--space-8) auto 0;max-width:34ch;color:var(--text-secondary);font-size:.84rem;line-height:1.45}.retry-action-btn{align-items:center;gap:var(--space-8);margin-top:var(--space-16);border-radius:var(--radius-pill);background-color:var(--accent-primary);color:var(--accent-primary-text);cursor:pointer;border:0;padding:10px 20px;font-size:.86rem;font-weight:800;display:inline-flex}.skeleton-dashboard-stack{gap:var(--space-16);flex-direction:column;display:flex}.skeleton-card{border-radius:var(--radius-card);background:linear-gradient(90deg,#94a3b814,#94a3b838,#94a3b814) 0 0/200% 100%;animation:1.4s linear infinite shimmer}.skeleton-net-card{height:170px}.skeleton-metrics-row{gap:var(--space-12);grid-template-columns:repeat(3,1fr);display:grid}.skeleton-metric-item{height:135px}.skeleton-category-card{height:220px}.skeleton-transactions-card{height:200px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes fadeInDashboard{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{to{background-position:-200% 0}}@media (width<=720px){.admin-kpi-grid,.cohort-metrics-grid,.usage-stats-row,.admin-two-col-grid{grid-template-columns:1fr}.admin-header-bar{flex-direction:column;align-items:flex-start;gap:12px}.admin-header-actions{flex-wrap:wrap;justify-content:space-between;width:100%}}@keyframes spinSlow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin-animation{animation:.85s linear infinite spinSlow}.admin-toast-banner{border-radius:var(--radius-md);align-items:center;gap:10px;margin-bottom:16px;padding:12px 18px;font-size:.88rem;font-weight:700;animation:.25s ease-out fadeInDown;display:flex}.toast-success{color:#10b981;background-color:#10b98124;border:1px solid #10b9814d}.toast-error{color:#ef4444;background-color:#ef444424;border:1px solid #ef44444d}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@media (width<=360px){.financial-metrics-grid{grid-template-columns:1fr}.metric-card{flex-direction:row;justify-content:space-between;align-items:center;min-height:90px}.metric-amount{margin-top:0}}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--app-bg:var(--tg-theme-bg-color,#0d1117);--surface-primary:var(--tg-theme-secondary-bg-color,#161c27);--surface-secondary:#1e293bb3;--surface-elevated:#1e293b;--text-primary:var(--tg-theme-text-color,#f8fafc);--text-secondary:var(--tg-theme-subtitle-text-color,#94a3b8);--text-muted:var(--tg-theme-hint-color,#64748b);--border-subtle:var(--tg-theme-section-separator-color,#ffffff14);--accent-primary:var(--tg-theme-button-color,#10b981);--income-color:#4ade80;--income-bg:#4ade801f;--income-border:#4ade8040;--expense-color:#f87171;--expense-bg:#f871711f;--expense-border:#f8717140;--net-color:#c084fc;--net-bg:#c084fc1f;--net-border:#c084fc40;--shadow-soft:0 4px 20px -2px #0006}[data-theme=dark] body{background-color:var(--app-bg)}[data-theme=dark] .donut-hole-center{background-color:var(--surface-primary)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.admin-shell{flex-direction:column;gap:24px;width:100%;max-width:1200px;min-height:100vh;margin:0 auto;padding:24px;display:flex}.admin-login-wrapper{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.admin-login-card{border-radius:var(--radius-card);background-color:var(--surface-primary);border:1px solid var(--border-subtle);flex-direction:column;gap:20px;width:100%;max-width:420px;padding:32px;display:flex;box-shadow:0 10px 30px #00000014}.admin-brand-header{flex-direction:column;gap:4px;display:flex}.admin-login-title{letter-spacing:-.02em;margin:0;font-size:1.5rem;font-weight:850}.admin-login-subtitle{color:var(--text-secondary);margin:0;font-size:.86rem}.admin-error-alert{border-radius:var(--radius-sm);color:var(--expense-color);background-color:#e11d481f;border:1px solid #e11d484d;padding:12px 16px;font-size:.86rem;font-weight:700}.admin-login-form{flex-direction:column;gap:16px;display:flex}.form-group{flex-direction:column;gap:6px;font-size:.84rem;font-weight:700;display:flex}.input-with-icon{align-items:center;display:flex;position:relative}.input-icon{color:var(--text-muted);position:absolute;left:12px}.input-with-icon input{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background-color:var(--app-bg);width:100%;color:var(--text-primary);outline:none;padding:12px 14px 12px 40px;font-size:.9rem}.input-with-icon input:focus{border-color:var(--accent-primary)}.toggle-password-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;transition:color .15s;display:flex;position:absolute;right:12px}.toggle-password-btn:hover{color:var(--text-primary)}.admin-submit-btn{border-radius:var(--radius-sm);background-color:var(--accent-primary);color:var(--accent-primary-text);cursor:pointer;border:0;justify-content:center;align-items:center;gap:8px;margin-top:8px;padding:14px;font-size:.92rem;font-weight:800;display:flex}.admin-header-bar{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-bottom:16px;display:flex}.admin-header-left{flex-direction:column;gap:2px;display:flex}.admin-page-title{letter-spacing:-.02em;margin:0;font-size:1.6rem;font-weight:850}.admin-header-actions{align-items:center;gap:12px;display:flex}.as-of-picker-group{border-radius:var(--radius-sm);background-color:var(--surface-primary);border:1px solid var(--border-subtle);align-items:center;gap:8px;padding:6px 12px;display:flex}.as-of-date-input{color:var(--text-primary);background:0 0;border:0;outline:none;font-size:.85rem;font-weight:700}.admin-icon-btn{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background-color:var(--surface-primary);width:38px;height:38px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;display:flex}.admin-logout-btn{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background-color:var(--surface-primary);color:var(--text-primary);cursor:pointer;align-items:center;gap:8px;padding:8px 16px;font-size:.85rem;font-weight:700;display:flex}.admin-content-stack{flex-direction:column;gap:24px;display:flex}.admin-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.admin-kpi-card{border-radius:var(--radius-md);background-color:var(--surface-primary);border:1px solid var(--border-subtle);box-shadow:var(--shadow-soft);flex-direction:column;justify-content:space-between;min-height:140px;padding:20px;display:flex}.kpi-card-header{align-items:center;gap:10px;display:flex}.kpi-icon-bubble{border-radius:10px;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.tone-users{color:#3b82f6;background-color:#3b82f61f}.tone-consent{color:#10b981;background-color:#10b9811f}.tone-tx{color:#8b5cf6;background-color:#8b5cf61f}.tone-notifications{color:#f59e0b;background-color:#f59e0b1f}.kpi-card-title{color:var(--text-secondary);font-size:.82rem;font-weight:750}.kpi-hero-number{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:8px;font-size:1.8rem;font-weight:900}.kpi-metrics-row{justify-content:space-between;margin-top:12px;display:flex}.kpi-submetric{flex-direction:column;display:flex}.submetric-val{font-variant-numeric:tabular-nums;font-size:1.15rem;font-weight:850}.submetric-label{color:var(--text-muted);font-size:.7rem;font-weight:700}.kpi-card-subtext{color:var(--text-secondary);margin-top:4px;font-size:.78rem}.kpi-split-bar{color:var(--text-secondary);align-items:center;gap:12px;margin-top:6px;font-size:.76rem;font-weight:700;display:flex}.split-item{align-items:center;gap:4px;display:flex}.admin-section-card{border-radius:var(--radius-card);background-color:var(--surface-primary);border:1px solid var(--border-subtle);box-shadow:var(--shadow-soft);padding:24px}.section-card-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.section-title-group{align-items:center;gap:10px;display:flex}.section-title-group h2{margin:0;font-size:1.1rem;font-weight:800}.section-title-icon{color:var(--accent-primary)}.retention-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.cohort-metric-box{border-radius:var(--radius-md);background-color:var(--surface-secondary);flex-direction:column;gap:6px;padding:16px;display:flex}.cohort-label{color:var(--text-secondary);font-size:.82rem;font-weight:700}.cohort-percentage{color:var(--accent-primary);font-size:2rem;font-weight:900}.cohort-subtext{color:var(--text-secondary);margin:0;font-size:.8rem}.cohort-progress-bar{background-color:var(--border-subtle);border-radius:4px;width:100%;height:8px;margin-top:8px;overflow:hidden}.cohort-progress-fill{border-radius:4px;height:100%;transition:width .4s}.d7-fill{background-color:#10b981}.d30-fill{background-color:#3b82f6}.admin-two-col-grid{grid-template-columns:1fr 1fr;gap:24px;display:grid}.extraction-metrics-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.extraction-metric-item{flex-direction:column;gap:4px;display:flex}.metric-title{color:var(--text-secondary);font-size:.8rem;font-weight:700}.metric-val{font-size:1.6rem;font-weight:850}.metric-desc{color:var(--text-muted);font-size:.76rem}.usage-stats-row{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.usage-stat-box{text-align:center;border-radius:var(--radius-md);background-color:var(--surface-secondary);flex-direction:column;align-items:center;padding:14px;display:flex}.stat-num{font-size:1.5rem;font-weight:850}.stat-label{color:var(--text-secondary);margin-top:4px;font-size:.74rem;font-weight:700}@media (width<=1024px){.admin-kpi-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.admin-kpi-grid,.retention-grid,.admin-two-col-grid,.extraction-metrics-grid,.usage-stats-row{grid-template-columns:1fr}}
