*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f4f6f8;--surface:#fff;--text:#1a2332;--text-muted:#6b7a8d;--accent:#0d9488;--accent-hover:#0f766e;--border:#e2e8f0;--danger:#dc2626;--accent-soft:#f0fdfa;--danger-soft:#fef2f2;--shadow:0 1px 3px #0000000f;--radius:12px;--scrollbar-thumb:#c8d3df;--scrollbar-thumb-hover:#0d9488;--header-h:auto;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5}:root[data-theme=dark]{--bg:#0f172a;--surface:#1e293b;--text:#e2e8f0;--text-muted:#94a3b8;--accent:#2dd4bf;--accent-hover:#5eead4;--border:#334155;--danger:#f87171;--accent-soft:#2dd4bf24;--danger-soft:#f8717129;--shadow:0 1px 3px #0006;--scrollbar-thumb:#475569;--scrollbar-thumb-hover:#2dd4bf}body,#app{min-height:100dvh}.app{flex-direction:column;max-width:640px;min-height:100dvh;margin:0 auto;display:flex}.header{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow);position:sticky;top:0}.header-top{justify-content:space-between;align-items:center;gap:.75rem;padding:.875rem 1.25rem;display:flex}.category-select{border:1px solid var(--border);background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7a8d' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right .625rem center;min-width:0;height:2.125rem;color:var(--text);cursor:pointer;text-overflow:ellipsis;appearance:none;border-radius:8px;flex:0 11rem;padding:0 2rem 0 .75rem;font-family:inherit;font-size:.8125rem;font-weight:600}.category-select:focus{border-color:var(--accent);outline:none}.header-totals{border-top:1px solid var(--border);justify-content:flex-end;align-items:flex-end;gap:1rem;padding:.75rem 1.25rem .875rem;display:flex}.header-totals-single{text-align:center;justify-content:center}.overall-total{text-align:left;min-width:0;margin-right:auto}.header-totals-single .month-total{text-align:center}.overall-total-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;max-width:11rem;font-size:.625rem;line-height:1.3;display:block}.overall-total-amount{color:var(--text-muted);letter-spacing:-.01em;font-size:1rem;font-weight:600;display:block}.logo{color:var(--accent);letter-spacing:-.02em;font-size:1.125rem;font-weight:700}.logo-btn{cursor:pointer;background:0 0;border:none;flex:none;align-items:center;gap:.5rem;padding:0;font-family:inherit;display:inline-flex}.logo-text{white-space:nowrap}.logo-btn svg{color:var(--text-muted);flex:none}.logo-btn:hover svg{color:var(--accent)}.month-total{text-align:right;min-width:0}.month-total-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;display:block;overflow:hidden}.month-total-amount{color:var(--text);letter-spacing:-.02em;font-size:1.5rem;font-weight:700;line-height:1.15;display:block}.month-nav{border-top:1px solid var(--border);justify-content:center;align-items:center;gap:.75rem;padding:.625rem 1rem .75rem;display:flex}.month-label{min-width:9rem;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;gap:.375rem;padding:.375rem .5rem;font-family:inherit;font-size:.9375rem;font-weight:600;transition:background .15s;display:flex}.month-label:hover{background:var(--bg)}.month-label svg{color:var(--text-muted);flex-shrink:0}.nav-btn{border:1px solid var(--border);background:var(--bg);width:2.25rem;height:2.25rem;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;transition:background .15s,border-color .15s;display:flex}.nav-btn:hover{background:var(--border)}.nav-btn:active{transform:scale(.96)}.main{flex-direction:column;flex:1;gap:1.25rem;padding:1rem 1.25rem 2rem;display:flex}.add-form{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);grid-template-columns:minmax(0,1fr) 5.75rem;grid-template-areas:"desc cost""date submit";align-items:center;gap:.625rem;padding:1rem;scroll-margin-top:6rem;display:grid}.add-form-desc{grid-area:desc}.add-form-cost{grid-area:cost}.add-form-date{grid-area:date}.add-form-submit{grid-area:submit;width:100%}@media (width>=480px){.add-form{grid-template-columns:1fr 6.5rem 9.5rem auto;grid-template-areas:"desc cost date submit"}.add-form-submit{width:auto}}.fab-add{z-index:40;background:var(--accent);color:#fff;cursor:pointer;touch-action:manipulation;border:none;border-radius:50%;justify-content:center;align-items:center;width:3.5rem;height:3.5rem;transition:transform .15s,background .15s,opacity .15s;display:inline-flex;position:fixed;bottom:1.5rem;right:1.25rem;box-shadow:0 8px 24px #0d948859}.fab-add:hover{background:var(--accent-hover);transform:scale(1.04)}.fab-add:active{transform:scale(.96)}.fab-add[hidden]{display:none}@media (width>=1024px){.fab-add{bottom:2rem;right:max(1.5rem,50vw - 590px + 1.5rem)}}.input{border:1px solid var(--border);width:100%;min-width:0;height:2.75rem;color:var(--text);background:var(--bg);border-radius:8px;padding:0 .75rem;font-family:inherit;font-size:1rem;transition:border-color .15s}.input:focus{border-color:var(--accent);outline:none}.input-date{appearance:none;min-width:0;font-size:16px}.input-cost{font-variant-numeric:tabular-nums}.input-cost::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.input-cost::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.input-cost{-moz-appearance:textfield}.btn-add{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;height:2.75rem;padding:0 1.25rem;font-family:inherit;font-size:1rem;font-weight:600;transition:background .15s}.btn-add:hover{background:var(--accent-hover)}.btn-add:active{transform:scale(.98)}.expenses{flex-direction:column;gap:1rem;display:flex}.empty{text-align:center;color:var(--text-muted);padding:3rem 1rem;font-size:.9375rem}.day-group{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);overflow:hidden}.day-header{background:var(--bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.625rem 1rem;display:flex}.day-label{color:var(--text-muted);font-size:.8125rem;font-weight:600}.day-total{color:var(--text);font-variant-numeric:tabular-nums;font-size:.8125rem;font-weight:600}.expense-list{list-style:none}.expense-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.5rem;padding:.75rem 1rem;display:grid}.expense-row:last-child{border-bottom:none}.expense-desc-input{width:100%;min-width:0;color:var(--text);background:0 0;border:1px solid #0000;border-radius:6px;padding:.375rem .5rem;font-family:inherit;font-size:.9375rem;transition:border-color .15s,background .15s}.expense-desc-input:hover{background:var(--bg)}.expense-desc-input:focus{border-color:var(--accent);background:var(--surface);outline:none}.expense-cost-input{z-index:1;font-variant-numeric:tabular-nums;text-align:right;width:5.25rem;min-width:4.75rem;max-width:5.5rem;min-height:2.5rem;color:var(--text);appearance:none;touch-action:manipulation;background:0 0;border:1px solid #0000;border-radius:6px;padding:.375rem .5rem;font-family:inherit;font-size:1rem;font-weight:600;transition:border-color .15s,background .15s;position:relative}.expense-cost-input:hover{background:var(--bg)}.expense-cost-input:focus{border-color:var(--accent);background:var(--surface);outline:none}@media (width<=479px){.expense-row{grid-template-columns:minmax(0,1fr) 4.25rem 1.875rem;gap:.25rem;padding:.75rem .625rem}.expense-desc-input{padding:.375rem .25rem;font-size:.9375rem}.expense-cost-input{width:4.25rem;min-width:4.25rem;max-width:4.25rem;min-height:2.5rem;padding:.375rem .25rem;font-size:.9375rem}.btn-delete{width:1.875rem;height:1.875rem}}.btn-delete{width:1.75rem;height:1.75rem;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:1.25rem;line-height:1;transition:color .15s,background .15s;display:flex}.btn-delete:hover{color:var(--danger);background:var(--danger-soft)}.btn-signout{border:1px solid var(--border);background:var(--bg);width:2rem;height:2rem;color:var(--text-muted);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:1rem;display:flex}.btn-signout:hover{color:var(--text);background:var(--border)}.auth-screen{justify-content:center;align-items:center;min-height:100dvh;padding:1.5rem;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:360px;box-shadow:var(--shadow);flex-direction:column;gap:.75rem;padding:1.5rem;display:flex}.auth-card .logo{text-align:center}.auth-tagline{color:var(--text);text-align:center;font-size:.9375rem;line-height:1.5}.auth-tagline strong{color:var(--accent)}.auth-hint{color:var(--text-muted);text-align:center;font-size:.875rem}.loading-row{justify-content:center;align-items:center;gap:.5rem;display:flex}.loading-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:1rem;height:1rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-quote{background:var(--bg);border:1px solid var(--border);border-radius:10px;margin:.5rem 0 0;padding:.875rem 1rem}.loading-quote-text{color:var(--text-muted);text-align:center;margin:0;font-size:.8125rem;font-style:italic;line-height:1.55}.loading-quote-author{color:var(--text-muted);text-align:center;margin-top:.5rem;font-size:.75rem;font-weight:600}.auth-error{color:var(--danger);text-align:center;font-size:.875rem}.btn-full{width:100%}.btn-link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:.25rem;font-size:.875rem}.btn-link:hover{text-decoration:underline}.btn-google{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.625rem;padding:.75rem 1rem;font-family:inherit;font-size:.9375rem;font-weight:600;transition:background .15s,border-color .15s;display:flex}.btn-google:hover{background:var(--bg);border-color:#cbd5e1}.browser-steps{text-align:left;color:var(--text-muted);flex-direction:column;gap:.35rem;padding-left:1.2rem;font-size:.875rem;line-height:1.5;display:flex}.browser-steps strong{color:var(--text)}.browser-actions{flex-direction:column;gap:.5rem;display:flex}.sidebar-overlay{opacity:0;visibility:hidden;z-index:40;background:#0f172a73;transition:opacity .2s,visibility .2s;position:fixed;inset:0}.sidebar-overlay.show{opacity:1;visibility:visible}.sidebar{background:var(--surface);border-right:1px solid var(--border);z-index:50;flex-direction:column;gap:1.25rem;width:82%;max-width:320px;padding:1rem 1.25rem 1.5rem;transition:transform .25s;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%);box-shadow:2px 0 16px #00000014}.sidebar.open{transform:translate(0)}.sidebar-header{justify-content:flex-end;display:flex}.sidebar-close{background:var(--bg);width:2rem;height:2rem;color:var(--text-muted);cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:1.375rem;line-height:1;display:flex}.sidebar-close:hover{color:var(--text);background:var(--border)}.user-card{border-bottom:1px solid var(--border);align-items:center;gap:.75rem;padding-bottom:1.25rem;display:flex}.avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:2.25rem;height:2.25rem}.avatar-lg{width:3rem;height:3rem}.avatar-fallback{background:var(--accent);color:#fff;justify-content:center;align-items:center;font-size:1.125rem;font-weight:700;display:flex}.user-meta{flex-direction:column;min-width:0;display:flex}.user-name{text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;font-weight:600;overflow:hidden}.user-email{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem;overflow:hidden}.sidebar-section{flex-direction:column;flex:1;gap:.625rem;display:flex}.sidebar-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.6875rem;font-weight:700}.cat-list{flex-direction:column;gap:.25rem;list-style:none;display:flex}.cat-new-btn{text-align:left;border:1px dashed var(--border);width:100%;color:var(--accent);cursor:pointer;background:0 0;border-radius:8px;padding:.625rem .75rem;font-family:inherit;font-size:.875rem;font-weight:600;transition:background .15s,border-color .15s}.cat-new-btn:hover{background:var(--accent-soft);border-color:var(--accent)}.cat-item{border-radius:8px;align-items:center;gap:.25rem;padding:.125rem .25rem;display:flex}.cat-item-active{background:var(--accent-soft)}.cat-name{text-align:left;min-width:0;color:var(--text);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex:1;padding:.5rem .375rem;font-family:inherit;font-size:.9375rem;overflow:hidden}.cat-item-active .cat-name{color:var(--accent-hover);font-weight:600}.cat-icon-btn{width:1.875rem;height:1.875rem;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:1.125rem;line-height:1;transition:color .15s,background .15s;display:flex}.cat-icon-btn:hover{background:var(--bg);color:var(--text)}.cat-delete:hover:not([disabled]){color:var(--danger);background:var(--danger-soft)}.cat-icon-btn[disabled]{opacity:.35;cursor:not-allowed}.cat-save{color:var(--accent)}.cat-item-editing{gap:.25rem}.cat-rename-input{border:1px solid var(--accent);min-width:0;height:2.25rem;color:var(--text);background:var(--surface);border-radius:6px;flex:1;padding:0 .5rem;font-family:inherit;font-size:.9375rem}.cat-rename-input:focus{outline:none}.trash-empty{color:var(--text-muted);padding:.25rem .375rem;font-size:.875rem}.trash-list{flex-direction:column;gap:.25rem;list-style:none;display:flex}.trash-item{border-radius:8px;align-items:center;gap:.375rem;padding:.375rem;display:flex}.trash-item:hover{background:var(--bg)}.trash-label{flex-direction:column;flex:1;min-width:0;display:flex}.trash-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;overflow:hidden}.trash-sub{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem;overflow:hidden}.trash-restore{border:1px solid var(--border);background:var(--surface);color:var(--accent-hover);cursor:pointer;border-radius:6px;flex-shrink:0;padding:.3125rem .5rem;font-family:inherit;font-size:.75rem;font-weight:600;transition:background .15s,border-color .15s}.trash-restore:hover{background:var(--accent-soft);border-color:var(--accent)}.trash-purge:hover{color:var(--danger);background:var(--danger-soft)}.sidebar-nav{width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;padding:.625rem .5rem;font-family:inherit;font-size:.9375rem;transition:background .15s;display:flex}.sidebar-nav:hover{background:var(--bg)}.sidebar-nav-active{background:var(--accent-soft);color:var(--accent-hover);font-weight:600}.sidebar-nav-active .sidebar-nav-left svg{color:var(--accent-hover)}.sidebar-nav-active:hover{background:var(--accent-soft)}.sidebar-nav-left{align-items:center;gap:.625rem;display:flex}.sidebar-nav-left svg{color:var(--text-muted);flex-shrink:0}.sidebar-nav-text{text-align:left;line-height:1.35}.sidebar-badge{background:var(--danger);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;font-size:.6875rem;font-weight:700;display:flex}.page-title-bar{align-items:center;gap:.625rem;padding:.25rem 1rem .75rem;display:flex}.page-title{color:var(--text);font-size:1rem;font-weight:700;line-height:1.3}.empty-bin-btn{border:1px solid var(--border);background:var(--bg);color:var(--danger);cursor:pointer;border-radius:8px;align-items:center;gap:.375rem;margin-left:auto;padding:.4375rem .75rem;font-family:inherit;font-size:.8125rem;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.empty-bin-btn:hover{background:var(--danger-soft);border-color:var(--danger)}.empty-bin-btn svg{flex-shrink:0}.trash-page{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:.5rem}.trash-page .trash-empty{text-align:center;padding:2rem 1rem}.savings-page{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:1.25rem;padding:1.25rem;display:flex}.income-intro{color:var(--text-muted);margin-bottom:1rem;font-size:.9375rem;line-height:1.55}.savings-intro{color:var(--text-muted);font-size:.9375rem;line-height:1.55}.savings-hero{background:var(--accent-soft);text-align:center;border-radius:10px;flex-direction:column;gap:.375rem;padding:1.25rem 1rem;display:flex}.savings-hero-label{color:var(--text-muted);font-size:.8125rem;font-weight:600}.savings-hero-amount{letter-spacing:-.02em;color:var(--accent);font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700}.savings-label{color:var(--text);font-size:.8125rem;font-weight:600}.savings-form{flex-direction:column;gap:.5rem;display:flex}.savings-input-row{align-items:stretch;gap:.5rem;display:flex}.savings-amount-input{flex:1;min-width:0}.savings-save{flex-shrink:0;min-width:5.5rem}.savings-spent{color:var(--text-muted);font-size:.875rem;line-height:1.5}.savings-spent strong{color:var(--text);font-weight:600}.support-page{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:1.25rem;padding:1.25rem;display:flex}.support-intro{color:var(--text-muted);font-size:.9375rem;line-height:1.55}.support-presets{grid-template-columns:1fr 1fr;gap:.625rem;display:grid}.support-preset{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:10px;padding:.875rem .75rem;font-family:inherit;font-size:1.0625rem;font-weight:700;transition:border-color .15s,background .15s,color .15s}.support-preset:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.support-preset:disabled{opacity:.6;cursor:wait}.support-form{flex-direction:column;gap:.5rem;display:flex}.support-label{color:var(--text);font-size:.8125rem;font-weight:600}.support-input-row{align-items:stretch;gap:.5rem;display:flex}.support-currency{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:8px;align-items:center;padding:0 .75rem;font-weight:700;display:inline-flex}.support-amount-input{flex:1;min-width:0}.support-continue{flex-shrink:0;min-width:6.5rem}.support-continue:disabled{opacity:.6;cursor:wait}.support-hint,.support-note{color:var(--text-muted);font-size:.8125rem;line-height:1.45}.learn-page{flex-direction:column;gap:1rem;display:flex}.learn-intro{color:var(--text-muted);font-size:.9375rem;line-height:1.55}.learn-list{flex-direction:column;gap:.75rem;display:flex}.learn-video{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);color:inherit;grid-template-columns:7.5rem minmax(0,1fr);align-items:center;gap:.875rem;padding:.625rem;text-decoration:none;transition:border-color .15s,background .15s;display:grid}.learn-video:hover{border-color:var(--accent);background:var(--accent-soft)}.learn-thumb-wrap{aspect-ratio:16/9;background:#0f172a;border-radius:8px;width:100%;display:block;position:relative;overflow:hidden}.learn-thumb{object-fit:cover;width:100%;height:100%;display:block}.learn-play{color:#fff;background:#0f172a59;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.learn-play svg{filter:drop-shadow(0 1px 2px #00000059)}.learn-video-title{color:var(--text);font-size:.9375rem;font-weight:600;line-height:1.35}@media (width>=640px){.support-presets{grid-template-columns:repeat(4,1fr)}.learn-video{grid-template-columns:11rem minmax(0,1fr);gap:1rem;padding:.75rem}.learn-video-title{font-size:1rem}}.feedback-page{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:1.25rem;padding:1.25rem;display:flex}.feedback-intro{color:var(--text-muted);font-size:.9375rem;line-height:1.55}.feedback-block{flex-direction:column;gap:.75rem;display:flex}.feedback-label{color:var(--text);font-size:.875rem;font-weight:600}.feedback-stars{align-items:center;gap:.375rem;display:flex}.feedback-star{width:2.5rem;height:2.5rem;color:var(--border);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;transition:color .15s,transform .1s;display:flex}.feedback-star:hover,.feedback-star.active{color:var(--accent)}.feedback-star:active{transform:scale(.94)}.feedback-form{flex-direction:column;gap:.625rem;display:flex}.feedback-textarea{resize:vertical;height:auto;min-height:7.5rem;padding:.75rem;line-height:1.5}.feedback-submit{align-self:flex-start}.theme-switch{background:var(--border);border-radius:999px;flex-shrink:0;width:2.25rem;height:1.25rem;transition:background .15s;position:relative}.theme-switch.on{background:var(--accent)}.theme-knob{background:#fff;border-radius:50%;width:1rem;height:1rem;transition:transform .15s;position:absolute;top:2px;left:2px}.theme-switch.on .theme-knob{transform:translate(1rem)}#modal-root:empty{display:none}.modal-overlay{z-index:100;background:#0f172a8c;justify-content:center;align-items:center;padding:1.5rem;animation:.12s modal-fade;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:1rem;width:100%;max-width:360px;padding:1.25rem;animation:.14s modal-pop;display:flex;box-shadow:0 12px 40px #00000040}.modal-title{color:var(--text);font-size:1.0625rem;font-weight:700}.modal-message{color:var(--text-muted);font-size:.9rem;line-height:1.5}.modal-input{height:2.75rem;margin-bottom:1rem}.modal-actions{justify-content:flex-end;gap:.5rem;display:flex}.modal-actions-stack{flex-direction:column;align-items:stretch}.modal-actions-stack .modal-btn{text-align:center;justify-content:center;width:100%}.modal-message-soft{margin-top:-.25rem;font-size:.875rem}.modal-new-month,.modal-report{max-width:400px}.modal-new-month{border:none;padding:0;animation:.35s cubic-bezier(.22,1,.36,1) congrats-pop;overflow:hidden}.congrats-hero{background:radial-gradient(circle at 20% 30%,#ffffff59,#0000 45%),radial-gradient(circle at 80% 20%,#fff3,#0000 40%),linear-gradient(145deg,#14b8a6 0%,#0d9488 48%,#0f766e 100%);justify-content:center;align-items:center;min-height:7.5rem;display:flex;position:relative;overflow:hidden}:root[data-theme=dark] .congrats-hero{background:radial-gradient(circle at 20% 30%,#ffffff1f,#0000 45%),radial-gradient(circle at 80% 20%,#5eead42e,#0000 40%),linear-gradient(145deg,#0f766e 0%,#134e4a 55%,#115e59 100%)}.congrats-badge{z-index:1;color:#0d9488;background:#fffffff2;border-radius:50%;justify-content:center;align-items:center;width:4.25rem;height:4.25rem;animation:.5s cubic-bezier(.22,1,.36,1) 80ms both congrats-badge-in;display:flex;position:relative;box-shadow:0 8px 24px #0f172a2e}:root[data-theme=dark] .congrats-badge{color:#2dd4bf;background:#1e293b;box-shadow:0 8px 24px #00000059}.congrats-burst{background:#ffffffd9;border-radius:2px;width:.45rem;height:.45rem;animation:1.6s ease-in-out infinite congrats-sparkle;position:absolute}.congrats-burst-1{animation-delay:0s;top:18%;left:16%;transform:rotate(18deg)}.congrats-burst-2{width:.35rem;height:.35rem;animation-delay:.25s;top:28%;right:18%}.congrats-burst-3{border-radius:50%;width:.3rem;height:.3rem;animation-delay:.45s;bottom:22%;left:22%}.congrats-burst-4{border-radius:50%;width:.28rem;height:.28rem;animation-delay:.15s;top:16%;left:48%}.congrats-burst-5{animation-delay:.55s;bottom:18%;right:24%;transform:rotate(40deg)}.congrats-burst-6{border-radius:50%;width:.22rem;height:.22rem;animation-delay:.7s;top:42%;left:10%}.congrats-body{text-align:center;flex-direction:column;gap:.625rem;padding:1.35rem 1.35rem 1.25rem;display:flex}.congrats-kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:.6875rem;font-weight:700}.congrats-title{letter-spacing:-.03em;color:var(--text);font-size:1.625rem;font-weight:800;line-height:1.15}.congrats-subtitle{color:var(--accent-hover);margin-top:-.25rem;font-size:1.0625rem;font-weight:600}:root[data-theme=dark] .congrats-subtitle{color:var(--accent)}.congrats-message{color:var(--text-muted);margin:.25rem 0 .5rem;font-size:.9375rem;line-height:1.55}.congrats-primary{padding:.75rem 1rem;font-size:.9375rem;box-shadow:0 6px 16px #0d948847}:root[data-theme=dark] .congrats-primary{box-shadow:0 6px 16px #2dd4bf2e}@keyframes congrats-pop{0%{opacity:0;transform:translateY(14px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes congrats-badge-in{0%{opacity:0;transform:scale(.6)rotate(-12deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes congrats-sparkle{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}.report-summary{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.report-stat{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:.25rem;padding:.75rem;display:flex}.report-stat-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.6875rem;font-weight:600}.report-stat-value{color:var(--text);font-variant-numeric:tabular-nums;font-size:1.125rem;font-weight:700}.report-block{flex-direction:column;gap:.5rem;display:flex}.report-block-title{color:var(--text);font-size:.8125rem;font-weight:700}.report-list{flex-direction:column;gap:.375rem;list-style:none;display:flex}.report-row{background:var(--bg);border-radius:8px;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .625rem;display:flex}.report-row-label{color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.875rem;overflow:hidden}.report-row-value{color:var(--text);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.875rem;font-weight:700}.report-empty{color:var(--text-muted);font-size:.875rem}.modal-btn{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:.5rem 1rem;font-family:inherit;font-size:.9rem;font-weight:600;transition:background .15s,border-color .15s,filter .15s}.modal-btn-ghost{background:var(--bg);border-color:var(--border);color:var(--text)}.modal-btn-ghost:hover{background:var(--border)}.modal-btn-primary{background:var(--accent);color:#fff}.modal-btn-primary:hover{background:var(--accent-hover)}.modal-btn-danger{background:var(--danger);color:#fff}.modal-btn-danger:hover{filter:brightness(.94)}.modal-auth .btn-google{margin-bottom:.25rem}.modal-auth .modal-actions{justify-content:center}@keyframes modal-fade{0%{opacity:0}}@keyframes modal-pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}.btn-signout-full{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);cursor:pointer;border-radius:8px;padding:.75rem 1rem;font-family:inherit;font-size:.9375rem;font-weight:600;transition:background .15s,border-color .15s}.btn-signout-full:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.sidebar-nav-group{flex-direction:column;gap:.25rem;display:flex}.sidebar-nav-group .sidebar-section-title{margin-top:.25rem;margin-bottom:.125rem}.sidebar-nav-group-flush{margin:0;padding:0}.sidebar-quote{border:1px solid var(--border);background:var(--bg);border-radius:10px;flex-shrink:0;margin:.25rem 0 .5rem;padding:.75rem .875rem}.sidebar-quote-text{color:var(--text-muted);margin:0;font-size:.75rem;font-style:italic;line-height:1.5}.sidebar-quote-author{color:var(--text-muted);text-align:right;margin-top:.375rem;font-size:.6875rem;font-weight:600}.sidebar-bottom{flex-direction:column;gap:.75rem;margin-top:auto;display:flex}.limit-input-wrap{border:1px solid var(--border);background:var(--bg);border-radius:8px;align-items:center;gap:.375rem;height:2.5rem;padding:0 .75rem;transition:border-color .15s;display:flex}.limit-input-wrap:focus-within{border-color:var(--accent)}.limit-currency{color:var(--text-muted);font-size:.9375rem;font-weight:600}.limit-input{min-width:0;color:var(--text);background:0 0;border:none;flex:1;font-family:inherit;font-size:.9375rem;font-weight:600}.limit-input:focus{outline:none}.budget-remaining{border-top:1px solid var(--border);flex-direction:column;gap:.75rem;padding:.75rem 1.25rem;display:flex}.remaining-line{flex-direction:column;gap:.375rem;display:flex}.remaining-secondary{border-top:1px dashed var(--border);padding-top:.75rem}.remaining-head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.remaining-head-value-only{justify-content:flex-start}.remaining-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;font-weight:600;overflow:hidden}.remaining-value{letter-spacing:-.01em;flex-shrink:0;font-weight:700;transition:color .25s}.remaining-line.level-ok .remaining-value{color:#16a34a}.remaining-line.level-warn .remaining-value{color:#ea580c}.remaining-line.level-danger .remaining-value,.remaining-line.over .remaining-value{color:var(--danger)}.remaining-primary .remaining-value{font-size:1.0625rem}.remaining-secondary .remaining-label,.remaining-secondary .remaining-value{font-size:.75rem;font-weight:600}.budget-bar{background:var(--border);border-radius:999px;height:6px;overflow:hidden}.remaining-secondary .budget-bar{height:4px}.budget-bar-fill{background-image:linear-gradient(90deg,#22c55e 0%,#4ade80 22%,#f59e0b 52%,#f97316 72%,#ef4444 100%);background-size:calc(100% * 100 / var(--bar-pct,100)) 100%;background-position:0;background-repeat:no-repeat;border-radius:999px;height:100%;transition:width .35s,background-size .35s;display:block}.remaining-line.over .budget-bar-fill{background-image:linear-gradient(90deg,#ef4444 0%,#dc2626 100%);background-size:100% 100%}.remaining-sub{color:var(--text-muted);font-size:.75rem}.remaining-setup{border:1px dashed var(--border);width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:.5rem;padding:.625rem .75rem;font-family:inherit;font-size:.8125rem;font-weight:600;transition:border-color .15s,color .15s;display:flex}.remaining-setup:hover{border-color:var(--accent);color:var(--accent)}.cat-main{flex-direction:column;flex:1;min-width:0;display:flex}.cat-main .cat-name{flex:none;width:100%;padding-bottom:0}.cat-budget-btn{max-width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;align-self:flex-start;align-items:center;gap:.3125rem;margin:.375rem 0 .125rem .375rem;padding:.0625rem 0;font-family:inherit;font-size:.75rem;font-weight:600;transition:color .15s;display:inline-flex}.cat-budget-btn svg{opacity:.7;flex-shrink:0}.cat-budget-btn:hover,.cat-budget-btn.has-budget{color:var(--accent)}.sidebar-hint{color:var(--text-muted);margin-top:.5rem;font-size:.75rem;line-height:1.45;display:block}.modal-amount{border:1px solid var(--border);background:var(--bg);border-radius:10px;align-items:center;gap:.5rem;height:3rem;margin-bottom:1rem;padding:0 .875rem;transition:border-color .15s;display:flex}.modal-amount:focus-within{border-color:var(--accent)}.modal-amount-currency{color:var(--text-muted);font-size:1.125rem;font-weight:700}.modal-amount-input{min-width:0;height:100%;color:var(--text);font-variant-numeric:tabular-nums;appearance:textfield;background:0 0;border:none;flex:1;margin:0;padding:0;font-family:inherit;font-size:1.125rem;font-weight:700;line-height:1}.modal-amount-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.modal-amount-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.modal-amount-input:focus{outline:none}.modal-btn-remove{color:var(--danger);margin-right:auto}.mp-header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.mp-year{color:var(--text);font-size:1.0625rem;font-weight:700}.mp-grid{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:1rem;display:grid}.mp-month{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:8px;padding:.625rem 0;font-family:inherit;font-size:.875rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.mp-month:hover{border-color:var(--accent);color:var(--accent)}.mp-month.current{border-color:var(--accent)}.mp-month.selected{background:var(--accent);border-color:var(--accent);color:#fff}.app-footer{text-align:center;color:var(--text-muted);padding:1.5rem 1.25rem 2rem;font-size:.75rem}@media (width>=768px){:root{font-size:17px}.app{max-width:720px;padding-top:1.5rem}.header{border-radius:var(--radius);border:1px solid var(--border);margin:0 1.25rem;top:1.5rem}.main{padding:1.5rem 1.25rem 3rem}.month-total-amount{font-size:1.75rem}}@media (width>=1024px){.app{grid-template-rows:auto 1fr auto;grid-template-columns:280px minmax(0,1fr);max-width:1180px;margin:0 auto;padding-top:0;display:grid}.sidebar-overlay{display:none!important}.sidebar-header{display:none}.sidebar-section{flex:none}.sidebar{width:auto;max-width:none;height:100dvh;box-shadow:none;border-right:1px solid var(--border);z-index:1;grid-area:1/1/-1;padding-top:1.5rem;position:sticky;top:0;bottom:auto;left:auto;transform:none}.header{grid-area:1/2;margin:1.5rem 1.5rem 0;top:1.5rem}.main{grid-area:2/2;padding:1.5rem 1.5rem 3rem}.app-footer{grid-area:3/2}.logo-btn{cursor:default}.logo-btn svg{display:none}html,.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) transparent}html::-webkit-scrollbar{width:8px;height:8px}.sidebar::-webkit-scrollbar{width:8px;height:8px}html::-webkit-scrollbar-track{background:0 0}.sidebar::-webkit-scrollbar-track{background:0 0}html::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);background-clip:padding-box;border:2px solid #0000;border-radius:999px}.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);background-clip:padding-box;border:2px solid #0000;border-radius:999px}html::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover)}.sidebar::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover)}html::-webkit-scrollbar-corner{background:0 0}.sidebar::-webkit-scrollbar-corner{background:0 0}}
