@import"https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Mono:wght@400;500&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;1,9..40,300&display=swap";:root{--bg: #0f0f11;--surface: #17171a;--surface2: #1e1e23;--border: rgba(255,255,255,.07);--text: #e8e8ec;--muted: #6b6b78;--accent: #c8f55a;--accent-dim:#8aaa3a;--danger: #ff5c5c;--radius: 12px;--radius-sm: 7px;font-size:15px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:DM Sans,sans-serif;-webkit-font-smoothing:antialiased;min-height:100dvh}.auth-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(ellipse 60% 60% at 50% 0%,rgba(200,245,90,.08) 0%,transparent 70%)}.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:2.5rem 2rem;display:flex;flex-direction:column;gap:1rem}.auth-logo{display:flex;align-items:center;gap:.6rem}.logo-mark{font-family:"DM Serif Display",serif;font-size:1.5rem;color:var(--accent);line-height:1}.auth-logo h1{font-family:"DM Serif Display",serif;font-size:1.8rem;font-weight:400;letter-spacing:-.02em}.auth-sub{color:var(--muted);font-size:.875rem;margin-bottom:.5rem}.auth-card form{display:flex;flex-direction:column;gap:.75rem}.auth-msg{font-size:.8rem;color:var(--accent);background:#c8f55a14;border-radius:var(--radius-sm);padding:.5rem .75rem}input,select{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.625rem .875rem;color:var(--text);font-family:inherit;font-size:.9rem;outline:none;transition:border-color .15s}input:focus,select:focus{border-color:var(--accent)}input::placeholder{color:var(--muted)}select option{background:var(--surface2)}.input-prefix{display:flex;align-items:center;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;transition:border-color .15s}.input-prefix:focus-within{border-color:var(--accent)}.input-prefix span{padding:0 .75rem;color:var(--muted);font-family:DM Mono,monospace;font-size:.9rem;pointer-events:none}.input-prefix input{border:none;border-radius:0;padding-left:0;background:transparent}.input-prefix input:focus{border:none}.btn-primary{background:var(--accent);color:#0f0f11;font-family:inherit;font-size:.9rem;font-weight:500;border:none;border-radius:var(--radius-sm);padding:.625rem 1.25rem;cursor:pointer;transition:opacity .15s,transform .1s}.btn-primary:hover{opacity:.88}.btn-primary:active{transform:scale(.97)}.btn-link{background:none;border:none;color:var(--accent);font-family:inherit;font-size:.875rem;cursor:pointer;padding:0;text-align:center}.btn-link:hover{opacity:.75}.btn-delete{background:none;border:none;color:var(--muted);font-size:1.2rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .15s,color .15s;flex-shrink:0}.btn-delete:hover{background:#ff5c5c1f;color:var(--danger)}.btn-edit{background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .15s,color .15s;flex-shrink:0}.btn-edit:hover{background:#ffffff12;color:var(--text)}.btn-save{background:none;border:none;color:var(--accent);font-size:1rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .15s;flex-shrink:0}.btn-save:hover{background:#4ade801f}.app{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.app-header{display:flex;flex-direction:column;gap:.3rem;padding:.7rem 1.25rem;border-bottom:1px solid var(--border);position:sticky;top:0;background:#0f0f11e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10}.header-brand{display:flex;align-items:center;gap:.5rem}.header-brand .logo-mark{font-size:1.1rem}.logo-text{font-family:"DM Serif Display",serif;font-size:1.15rem;font-weight:400;letter-spacing:-.01em}.header-controls{display:flex;align-items:center;gap:.6rem}.header-ctrl-btn{font-size:.75rem;color:var(--muted)}.header-theme-btn{font-size:.85rem;line-height:1}.header-sep{display:inline-block;width:1px;height:12px;background:var(--border);flex-shrink:0}.signout{font-size:.75rem;color:var(--muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1.75rem;width:100%;max-width:360px;display:flex;flex-direction:column;gap:1rem}.modal-card h2{font-size:1.1rem;font-weight:600;margin:0}.modal-card form{display:flex;flex-direction:column;gap:.75rem}.modal-actions{display:flex;justify-content:flex-end;align-items:center;gap:.75rem;margin-top:.25rem}.app-main{flex:1;padding:1.25rem 1.25rem 5rem;display:flex;flex-direction:column;gap:1.25rem}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;display:flex;border-top:1px solid var(--border);background:#0f0f11f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.bottom-nav button{flex:1;background:none;border:none;color:var(--muted);font-family:inherit;font-size:.7rem;padding:.75rem .5rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.2rem;transition:color .15s}.bottom-nav button:hover{color:var(--text)}.bottom-nav button.active{color:var(--accent)}.nav-icon{font-size:1.1rem}.dashboard{display:flex;flex-direction:column;gap:1.25rem}.month-nav{display:flex;align-items:center;justify-content:space-between}.month-title{font-family:"DM Serif Display",serif;font-size:1.3rem;font-weight:400;letter-spacing:-.02em;text-transform:capitalize}.nav-arrow{background:none;border:none;color:var(--muted);font-size:1.5rem;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .15s,color .15s;line-height:1}.nav-arrow:hover{background:var(--surface2);color:var(--text)}.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.875rem;display:flex;flex-direction:column;gap:.25rem}.stat-label{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.stat-value{font-family:DM Mono,monospace;font-size:.95rem;font-weight:500;letter-spacing:-.02em}.stat-balance .stat-value{color:var(--text)}.stat-open .stat-value{color:#f59e0b}.stat-remaining[data-positive=true] .stat-value{color:var(--accent)}.stat-remaining[data-positive=false] .stat-value{color:var(--danger)}.progress-wrap{display:flex;flex-direction:column;gap:.5rem}.progress-label{display:flex;justify-content:space-between;align-items:center;font-size:.78rem;color:var(--muted)}.pct-badge{font-family:DM Mono,monospace;color:var(--accent);font-size:.75rem}.progress-track{height:5px;background:var(--surface2);border-radius:99px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:99px;transition:width .5s cubic-bezier(.4,0,.2,1)}.expense-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.group-header{display:flex;align-items:center;gap:.6rem;padding:.75rem 1rem;border-bottom:1px solid var(--border);background:var(--surface2)}.group-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.group-name{flex:1;font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.group-total{font-family:DM Mono,monospace;font-size:.8rem;color:var(--muted)}.group-header-body{display:flex;align-items:center;gap:.6rem;flex:1;cursor:pointer;min-width:0}.group-header-collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}.group-chevron{color:var(--muted);font-size:.75rem;display:inline-block;transition:transform .2s ease;flex-shrink:0}.group-chevron.is-collapsed{transform:rotate(-90deg)}.expense-row{display:flex;align-items:center;gap:.75rem;padding:.7rem 1rem;border-bottom:1px solid var(--border);transition:background .15s}.expense-row:last-child{border-bottom:none}.expense-row.paid{opacity:.45}.check-btn{width:22px;height:22px;border-radius:6px;border:1.5px solid var(--border);background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:#0f0f11;flex-shrink:0;transition:background .15s,border-color .15s}.check-btn.checked{background:var(--accent);border-color:var(--accent)}.check-btn:not(.checked):hover{border-color:var(--accent-dim)}.expense-name{flex:1;min-width:0;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.due-day{font-family:DM Mono,monospace;font-size:.72rem;color:var(--muted);background:var(--surface2);padding:.15rem .4rem;border-radius:4px}.expense-amount{font-family:DM Mono,monospace;font-size:.88rem;flex-shrink:0}.inc-row{align-items:flex-start;gap:.6rem}.inc-row .check-btn{margin-top:2px;flex-shrink:0}.inc-row-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.inc-row-top{display:flex;align-items:flex-start;gap:.4rem}.inc-row-top .expense-name{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35;word-break:break-word}.inc-row-actions{display:flex;flex-shrink:0;margin-left:auto}.inc-row-meta{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.inc-row-meta .expense-amount{margin-left:auto}.balance-form{display:flex;gap:.75rem;align-items:stretch}.balance-form .input-prefix{flex:1}.section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;display:flex;flex-direction:column;gap:.875rem}.section-title{font-family:"DM Serif Display",serif;font-size:1.05rem;font-weight:400;letter-spacing:-.01em}.manage{display:flex;flex-direction:column;gap:1rem}.tab-row{display:flex;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.tab-btn{flex:1;background:none;border:none;color:var(--muted);font-family:inherit;font-size:.875rem;padding:.7rem;cursor:pointer;transition:background .15s,color .15s}.tab-btn:hover{color:var(--text)}.tab-btn.active{background:var(--surface2);color:var(--accent)}.manage-form{display:flex;flex-direction:column;gap:.6rem}.cat-form{flex-direction:row;flex-wrap:wrap;align-items:flex-end}.cat-form input{flex:1;min-width:140px}.cat-form .btn-primary{flex-shrink:0;height:38px}.color-row{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--muted)}.color-row input[type=color]{width:36px;height:36px;padding:2px;border-radius:6px;cursor:pointer}.manage-row{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--border)}.manage-row:last-child{border-bottom:none}.manage-row-edit{flex-wrap:wrap;gap:.5rem;padding:.75rem 0}.edit-input{flex:1;min-width:100px;height:34px;padding:0 .6rem;font-size:.875rem}.edit-prefix{height:34px;flex-shrink:0}.edit-input-amount{width:80px;height:34px;font-size:.875rem}.edit-input-day{width:54px;height:34px;font-size:.875rem;padding:0 .4rem}.edit-select{height:34px;font-size:.875rem;flex-shrink:0}.manage-row-info{flex:1;display:flex;flex-direction:column;gap:.15rem}.manage-name{font-size:.9rem}.manage-cat{font-size:.75rem;color:var(--muted)}.manage-amount{font-family:DM Mono,monospace;font-size:.88rem;color:var(--muted)}.history-row{display:flex;align-items:center;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid var(--border)}.history-row:last-child{border-bottom:none}.history-month{font-size:.9rem;text-transform:capitalize}.history-stats{display:flex;gap:1rem;font-family:DM Mono,monospace;font-size:.78rem;color:var(--muted)}.paid-badge{color:var(--accent)}.incidental-group{border-color:#a78bfa40}.incidental-add-btn{width:22px;height:22px;border-radius:6px;border:1.5px solid rgba(167,139,250,.4);background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;line-height:1;color:#a78bfa;flex-shrink:0;transition:background .15s,border-color .15s;margin-left:.25rem}.incidental-add-btn:hover,.incidental-add-btn.active{background:#a78bfa1f;border-color:#a78bfa}.incidental-inline-form{display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1rem;border-top:1px solid rgba(167,139,250,.15);background:#a78bfa0a}.incidental-dot{background:#a78bfa!important;box-shadow:0 0 6px #a78bfa80}.payment-badge{font-size:.68rem;font-weight:500;color:#a78bfa;background:#a78bfa1f;border:1px solid rgba(167,139,250,.25);border-radius:99px;padding:.1rem .5rem;white-space:nowrap;flex-shrink:0}.payment-badge-sm{font-size:.7rem;padding:.08rem .45rem}.section-sub{font-size:.8rem;color:var(--muted);margin-top:-.3rem}.cat-overview{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.875rem 1rem;display:flex;flex-direction:column;gap:.6rem}.cat-overview-title{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;padding:0;cursor:pointer;font-size:.68rem;font-family:inherit;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.1rem}.cat-overview-title:hover{color:var(--fg)}.collapse-chevron{font-size:.55rem;opacity:.6}.cat-overview-row{display:flex;align-items:center;gap:.6rem}.cat-overview-name{font-size:.8rem;width:90px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cat-overview-bar-wrap{flex:1;height:4px;background:var(--surface2);border-radius:99px;overflow:hidden}.cat-overview-bar{height:100%;background:var(--accent);border-radius:99px;transition:width .4s ease}.cat-overview-bar.incidental-bar{background:#a78bfa}.cat-overview-amt{font-family:DM Mono,monospace;font-size:.78rem;color:var(--muted);text-align:right;width:72px;flex-shrink:0}.loading,.empty-state{text-align:center;padding:2rem;color:var(--muted);font-size:.9rem}.empty-hint{font-size:.8rem;color:var(--muted);margin-top:.25rem}[data-theme=light]{--bg: #f5f5f7;--surface: #ffffff;--surface2: #ececef;--border: rgba(0,0,0,.1);--text: #1a1a1e;--muted: #7a7a88;--accent: #5a8a00;--accent-dim:#3d6000;--danger: #d93535}[data-theme=light] .app-header{background:#f5f5f7e6}[data-theme=light] .header-sep{background:#00000026}[data-theme=light] .bottom-nav{background:#f5f5f7f2}[data-theme=light] .auth-wrap{background:radial-gradient(ellipse 60% 60% at 50% 0%,rgba(90,138,0,.08) 0%,transparent 70%)}[data-theme=light] .btn-primary,[data-theme=light] .check-btn{color:#fff}[data-theme=light] .auth-msg{background:#5a8a0014;color:var(--accent)}
