@import "https://fonts.googleapis.com/css2?family=Lora:wght@400;600;700&family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&display=swap";
:root{--primary:#7c6ef2;--primary-dark:#5a4fd1;--primary-light:#9d92f8;--secondary:#ff6b9d;--secondary-dark:#e84580;--accent:#00c896;--accent-dark:#00a67d;--background:#0d0d1a;--surface:#12122a;--surface-highlight:#1e1e36;--surface-border:#2a2a4a;--text-main:#f8fafc;--text-strong:#fff;--text-muted:#889;--text-dim:#556;--surface-soft:#ffffff14;--surface-soft-hover:#ffffff1f;--surface-overlay:#12122af7;--surface-overlay-strong:#0d0d1afa;--surface-inverse:#fff;--success:#00c896;--danger:#ff6b6b;--warning:#f59e0b;--info:#7c6ef2;--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-xl:1.25rem;--radius-full:9999px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-glow:0 0 20px #7c6ef24d;--font-display:"Lora", serif;--font-mono:"DM Mono", monospace;--font-sans:"DM Sans", sans-serif}html[data-theme=light]{--primary:#4f46e5;--primary-dark:#3730a3;--primary-light:#818cf8;--secondary:#e11d48;--secondary-dark:#be123c;--accent:#0f766e;--accent-dark:#115e59;--background:#f6f7fb;--surface:#fff;--surface-highlight:#eef1f8;--surface-border:#d7dcea;--text-main:#121826;--text-strong:#121826;--text-muted:#5b6477;--text-dim:#7f889b;--surface-soft:#eef1f8;--surface-soft-hover:#e2e8f4;--surface-overlay:#fffffff5;--surface-overlay-strong:#f6f7fbfa;--surface-inverse:#121826;--success:#0f9f75;--danger:#dc2626;--warning:#d97706;--info:#4f46e5;--shadow-sm:0 1px 2px 0 #0f172a0f;--shadow-md:0 10px 28px #0f172a14;--shadow-lg:0 18px 40px #0f172a1f;--shadow-glow:0 0 22px #4f46e529}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--background);color:var(--text-main);-webkit-font-smoothing:antialiased;line-height:1.6;transition:background-color .2s,color .2s}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--surface-border);border-radius:4px}.container{max-width:1200px;margin:0 auto;padding:0 1.5rem}.card{background-color:var(--surface);border-radius:var(--radius-xl);min-width:0;max-width:100%;box-shadow:var(--shadow-md);border:1px solid color-mix(in srgb, var(--surface-border) 65%, transparent);padding:1.5rem;transition:transform .2s,box-shadow .2s;overflow-x:clip}.card:hover{box-shadow:var(--shadow-lg), var(--shadow-glow);border-color:var(--surface-border);transform:translateY(-2px)}.skeleton{background:linear-gradient(90deg, var(--surface) 25%, var(--surface-highlight) 50%, var(--surface) 75%);border-radius:var(--radius-md);background-size:200% 100%;animation:1.5s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.btn{border-radius:var(--radius-md);justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;box-shadow:0 4px 12px #7c6ef24d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px #7c6ef280}.btn-secondary{background:var(--surface-soft);color:var(--text-main)}.btn-secondary:hover{background:var(--surface-soft-hover)}.btn-danger{color:var(--danger);background:#ff6b6b26}.btn-danger:hover{background:#ff6b6b40}.home-cta{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:2.5rem;display:flex}.home-cta-btn{padding:14px 32px;font-size:16px}@media (max-width:480px){.home-cta{flex-direction:column;align-items:stretch;gap:10px}.home-cta-btn{width:100%;padding:14px 20px}}.text-gradient{background:linear-gradient(135deg, var(--primary-light), var(--secondary));-webkit-text-fill-color:transparent;-webkit-background-clip:text}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.badge{border-radius:var(--radius-full);letter-spacing:.02em;padding:.25rem .75rem;font-size:.75rem;font-weight:600}.badge-success{color:var(--success);background:#00c8961f}.badge-warning{color:var(--warning);background:#f59e0b26}.badge-danger{color:var(--danger);background:#ff6b6b1f}.badge-info{color:var(--info);background:#7c6ef21f}.progress-track{background:var(--surface-highlight);border-radius:4px;height:4px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--primary), var(--primary-dark));border-radius:4px;height:100%;transition:width .6s}.progress-fill-success{background:linear-gradient(90deg, var(--success), var(--accent-dark))}.progress-fill-danger{background:linear-gradient(90deg, var(--danger), #e84545)}.pwa-prompt{z-index:70;background:radial-gradient(circle at top right, #00c89629, transparent 32%), linear-gradient(180deg, var(--surface-overlay), var(--surface-overlay-strong));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #ffffff17;border-radius:24px;width:min(440px,100vw - 24px);padding:1rem;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 22px 50px #00000073}.pwa-prompt-close{width:30px;height:30px;color:var(--text-muted);background:var(--surface-soft);border-radius:9999px;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:12px;right:12px}.pwa-prompt-badge{color:var(--primary-dark);letter-spacing:.02em;background:#7c6ef224;border-radius:9999px;align-items:center;gap:.45rem;padding:.35rem .7rem;font-size:.75rem;font-weight:700;display:inline-flex}.pwa-prompt-content{align-items:flex-start;gap:.9rem;margin-top:.9rem;display:flex}.pwa-prompt-icon{width:42px;height:42px;color:var(--surface-inverse);background:linear-gradient(135deg, var(--primary), var(--accent));border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;display:flex;box-shadow:0 10px 22px #7c6ef23d}.pwa-prompt-copy h3{margin-bottom:.25rem;font-size:.98rem;line-height:1.3}.pwa-prompt-copy p{color:var(--text-muted);font-size:.88rem;line-height:1.45}.pwa-prompt-actions{gap:.75rem;margin-top:1rem;display:flex}.pwa-prompt-button{flex:1}.stat-card{background:var(--surface-soft);border:1px solid color-mix(in srgb, var(--surface-border) 65%, transparent);border-radius:var(--radius-xl);padding:1rem 1.25rem;transition:all .2s}.stat-card-income{background:#00c8960f;border-color:#00c8961f}.stat-card-expense{background:#ff6b6b0f;border-color:#ff6b6b1f}.label-upper{font-size:.6875rem;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.avatar{width:32px;height:32px;color:var(--text-main);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.avatar-stack .avatar+.avatar{border:2px solid var(--background);margin-left:-10px}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.animate-fade-in{animation:.4s ease-out both fadeIn}.animate-slide-up{animation:.25s both slideUp}.stagger>:first-child{animation-delay:0s}.stagger>:nth-child(2){animation-delay:50ms}.stagger>:nth-child(3){animation-delay:.1s}.stagger>:nth-child(4){animation-delay:.15s}.stagger>:nth-child(5){animation-delay:.2s}.sheet-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;background:#0009;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-content{background:var(--surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:480px;max-height:90vh;padding:1.75rem 1.5rem 2.5rem;animation:.25s slideUp;overflow-y:auto}.category-modal-overlay{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.category-modal-panel{border-radius:var(--radius-xl);border:1px solid var(--surface-border);background:var(--surface);width:min(480px,100%);max-height:min(760px,100dvh - 2rem);padding:1.75rem 1.5rem 2rem;overflow-y:auto;box-shadow:0 24px 70px #00000059}.mobile-menu-toggle{z-index:45;background:var(--surface);border:1px solid var(--surface-border);width:42px;height:42px;color:var(--text-strong);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;display:none;position:fixed;top:12px;left:12px;box-shadow:0 4px 12px #00000040}.mobile-drawer-scrim{z-index:49;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c;display:none;position:fixed;inset:0}.mobile-drawer-close{background:var(--surface-soft);border:1px solid var(--surface-border);width:36px;height:36px;color:var(--text-main);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;display:none;position:absolute;top:12px;right:12px}.mobile-logout-bar{box-sizing:border-box;display:none}.mobile-logout-button{border:1px solid var(--surface-border);background:var(--surface-soft);width:100%;color:var(--text-main);border-radius:14px;justify-content:center;align-items:center;gap:.75rem;padding:.95rem 1rem;display:flex;box-shadow:0 -8px 20px #0000002e}@media (max-width:768px){.app-sidebar{padding-bottom:calc(104px + env(safe-area-inset-bottom));transition:transform .25s;overflow:hidden;transform:translate(-100%);box-shadow:0 0 24px #00000080;width:min(256px,100vw - 24px)!important;height:100dvh!important}.sidebar-nav{-webkit-overflow-scrolling:touch;padding-bottom:.75rem;overflow-y:auto}.sidebar-logout{display:none}.sidebar-logout-button{background:var(--surface-soft)}.mobile-logout-bar{z-index:51;width:min(256px,100vw - 24px);padding-left:12px;padding-right:12px;padding-bottom:env(safe-area-inset-bottom);display:block;position:fixed;bottom:12px;left:0}.app-sidebar.is-open{transform:translate(0)}.mobile-menu-toggle{display:flex}.mobile-drawer-scrim{display:block}.mobile-drawer-close{display:flex}.desktop-main{padding:4.5rem 1rem 1rem!important;padding-bottom:calc(2rem + env(safe-area-inset-bottom))!important;margin-left:0!important}.container{padding:0!important}.card:hover{transform:none}.pwa-prompt{bottom:calc(12px + env(safe-area-inset-bottom));border-radius:22px;padding:.95rem}.pwa-prompt-actions{flex-direction:column}.desktop-sticky-panel{position:static;top:auto}.compact-mobile-grid .card,.compact-mobile-grid>div{padding:1rem}}@media (min-width:769px){.mobile-menu-toggle,.mobile-drawer-scrim,.mobile-drawer-close,.mobile-logout-bar{display:none!important}}.responsive-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem;display:grid}.responsive-grid-sm{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem;display:grid}.responsive-grid-lg{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:2rem;display:grid}@media (max-width:640px){.responsive-grid,.responsive-grid-sm,.responsive-grid-lg{grid-template-columns:1fr;gap:1rem}}.responsive-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}@media (max-width:480px){.responsive-header{flex-direction:column;align-items:stretch}.responsive-header>.btn,.responsive-header>a.btn,.responsive-header>button{width:100%}}.responsive-form-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}@media (max-width:640px){.responsive-form-row{flex-direction:column;align-items:stretch}.responsive-form-row>*{flex:none!important;width:100%!important}}.transaction-filter-grid{grid-template-columns:minmax(220px,1.5fr) minmax(130px,.8fr) minmax(180px,1fr) minmax(180px,1fr) minmax(150px,.8fr) minmax(150px,.8fr) auto auto;align-items:end;gap:8px;display:grid}@media (max-width:1180px){.transaction-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:680px){.transaction-filter-grid{grid-template-columns:1fr}}.form-grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (max-width:480px){.form-grid-2{grid-template-columns:1fr}}.scroll-x-mobile{-webkit-overflow-scrolling:touch;overflow-x:auto}.desktop-sticky-panel{position:sticky;top:2rem}html,body{overflow-x:hidden}input[type=date]::-webkit-calendar-picker-indicator{filter:invert();opacity:.4}html[data-theme=light] input[type=date]::-webkit-calendar-picker-indicator{filter:invert(0);opacity:.65}
