:root{--color-income: #2ecc71;--color-expense: #e74c3c;--color-bg: #1a1a2e;--color-surface: #16213e;--color-text: #eee;--color-text-secondary: #999;--color-border: #333;--color-accent: #0f3460}*{margin:0;padding:0;box-sizing:border-box}html{overflow:hidden;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);min-height:100dvh;height:100%;overflow:auto;overscroll-behavior:none;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}#root{min-height:100dvh;display:flex;flex-direction:column;max-width:480px;margin:0 auto;width:100%}button{font-family:inherit;cursor:pointer;border:none;outline:none}input,select,textarea{font-family:inherit;outline:none}.pin-input{display:flex;flex-direction:column;align-items:center;gap:24px;padding:24px}.pin-dots{display:flex;gap:12px}.pin-dot{width:16px;height:16px;border-radius:50%;border:2px solid var(--color-text-secondary);transition:background .15s}.pin-dot.filled{background:var(--color-text);border-color:var(--color-text)}.pin-error{color:var(--color-expense);font-size:14px}.pin-numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%;max-width:280px}.numpad-key{height:56px;font-size:24px;font-weight:500;background:var(--color-surface);color:var(--color-text);border-radius:12px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;transition:background .1s}.numpad-key:active{background:var(--color-accent)}.numpad-key.empty{background:transparent;cursor:default}.numpad-key.backspace{font-size:20px}.pin-submit{width:100%;max-width:280px;height:50px;font-size:16px;font-weight:600;background:var(--color-accent);color:var(--color-text);border-radius:12px;transition:opacity .2s}.pin-submit:disabled{opacity:.4}.auth-page{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}.auth-title{font-size:32px;font-weight:700;margin-bottom:8px}.auth-subtitle{font-size:14px;color:var(--color-text-secondary);margin-bottom:16px}.day-summary{display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px}.day-summary-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;background:var(--color-surface);border-radius:10px}.day-summary-label{font-size:11px;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.day-summary-value{font-size:15px;font-weight:600}.day-summary-item.income .day-summary-value{color:var(--color-income)}.day-summary-item.expense .day-summary-value{color:var(--color-expense)}.day-summary-item.balance .day-summary-value{color:var(--color-text)}.day-summary-budget{display:flex;justify-content:space-between;padding:8px 12px;background:var(--color-surface);border-radius:10px;font-size:12px;color:var(--color-text-secondary);width:100%}.day-summary-budget-item.positive{color:var(--color-income)}.day-summary-budget-item.negative{color:var(--color-expense)}.tx-empty{text-align:center;color:var(--color-text-secondary);padding:40px 16px;font-size:14px}.tx-list{list-style:none;padding:0 16px;display:flex;flex-direction:column;gap:6px}.tx-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--color-surface);border-radius:10px;gap:8px}.tx-info{display:flex;flex-direction:column;gap:2px;min-width:0}.tx-category{font-size:14px;font-weight:500}.tx-comment{font-size:12px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.tx-amount{font-size:15px;font-weight:600;white-space:nowrap}.tx-item.income .tx-amount{color:var(--color-income)}.tx-item.expense .tx-amount{color:var(--color-expense)}.tx-delete{width:28px;height:28px;font-size:12px;background:#ffffff0f;color:var(--color-text-secondary);border-radius:50%;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}.tx-delete:active{background:var(--color-expense);color:#fff}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:flex-end;z-index:100}.amount-modal{width:100%;background:var(--color-bg);border-radius:20px 20px 0 0;padding:16px;padding-bottom:max(16px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}.amount-header{display:flex;align-items:center;justify-content:center;position:relative}.amount-close{position:absolute;left:0;width:36px;height:36px;background:var(--color-surface);color:var(--color-text);border-radius:50%;font-size:14px;display:flex;align-items:center;justify-content:center}.amount-type-label{font-size:16px;font-weight:600}.amount-date-row{display:flex;justify-content:center}.amount-date-input{height:40px;padding:0 14px;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:10px;font-size:15px;text-align:center;-webkit-appearance:none;color-scheme:dark}.amount-display{text-align:center;font-size:40px;font-weight:700;padding:8px 0;display:flex;align-items:baseline;justify-content:center;gap:4px}.amount-display.income{color:var(--color-income)}.amount-display.expense{color:var(--color-expense)}.amount-currency{font-size:24px;font-weight:500;opacity:.6}.amount-numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:320px;margin:0 auto;width:100%}.amount-key{height:56px;font-size:24px;font-weight:500;background:var(--color-surface);color:var(--color-text);border-radius:12px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;transition:background .1s}.amount-key:active{background:var(--color-accent)}.amount-key.backspace{font-size:20px}.amount-confirm{width:100%;max-width:320px;margin:0 auto;height:52px;font-size:16px;font-weight:600;border-radius:12px;color:#fff;transition:opacity .2s}.amount-confirm.income{background:var(--color-income)}.amount-confirm.expense{background:var(--color-expense)}.amount-confirm:disabled{opacity:.4}.save-modal{width:100%;background:var(--color-bg);border-radius:20px 20px 0 0;padding:20px 16px;padding-bottom:max(20px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:20px}.save-header{display:flex;align-items:center;justify-content:center;position:relative}.save-back,.save-close{position:absolute;width:36px;height:36px;background:var(--color-surface);color:var(--color-text);border-radius:50%;font-size:14px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}.save-back{left:0;font-size:18px}.save-close{right:0}.save-title{font-size:16px;font-weight:600}.save-field{display:flex;flex-direction:column;gap:6px}.save-label{font-size:12px;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.save-select,.save-input{width:100%;height:48px;padding:0 14px;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:10px;font-size:16px;-webkit-appearance:none}.save-select{cursor:pointer;flex:1;min-width:0}.save-cat-row{display:flex;gap:8px;align-items:center}.save-cat-add-btn{width:48px;height:48px;flex-shrink:0;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:10px;font-size:22px;font-weight:500;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}.save-cat-add-btn:active{background:var(--color-accent)}.save-cat-add-row{display:flex;gap:8px;align-items:center}.save-cat-add-input{flex:1;min-width:0}.save-cat-group-select{width:auto;min-width:100px;max-width:140px;flex-shrink:0;font-size:13px;height:48px;padding:0 8px}.save-cat-confirm,.save-cat-cancel{width:44px;height:48px;flex-shrink:0;border-radius:10px;font-size:16px;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}.save-cat-confirm{background:var(--color-income);color:#fff}.save-cat-confirm:disabled{opacity:.4}.save-cat-cancel{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.save-input::placeholder{color:var(--color-text-secondary)}.save-btn{width:100%;height:52px;font-size:16px;font-weight:600;border-radius:12px;color:#fff}.save-btn.income{background:var(--color-income)}.save-btn.expense{background:var(--color-expense)}.save-btn:disabled{opacity:.4}.pending-fixes{margin:0 16px 12px;padding:12px;background:var(--color-surface);border-radius:12px;border-left:3px solid var(--color-expense)}.pending-fixes-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-expense);margin-bottom:10px}.pending-group{margin-bottom:8px}.pending-group:last-child{margin-bottom:0}.pending-group-label{font-size:11px;color:var(--color-text-secondary);margin-bottom:6px;font-weight:500}.pending-list{list-style:none;display:flex;flex-direction:column;gap:6px}.pending-item{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#ffffff0a;border-radius:8px}.pending-item-info{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px}.pending-item-name{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pending-item-day{font-size:11px;color:var(--color-text-secondary);white-space:nowrap}.pending-item-amount{font-size:14px;font-weight:600;white-space:nowrap}.pending-pay-btn{padding:6px 12px;background:var(--color-income);color:#fff;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:transform .1s}.pending-pay-btn:active{transform:scale(.95)}.bottom-nav{display:flex;background:var(--color-surface);border-top:1px solid var(--color-border);padding:6px 0;padding-bottom:max(6px,env(safe-area-inset-bottom))}.bottom-nav-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px;background:none;color:var(--color-text-secondary);font-size:11px;-webkit-tap-highlight-color:transparent}.bottom-nav-tab.active{color:var(--color-text)}.bottom-nav-icon{font-size:20px}.bottom-nav-label{font-weight:500}.main-page{flex:1;display:flex;flex-direction:column;min-height:100dvh}.main-header{padding:16px 16px 8px;text-align:center}.main-date{font-size:16px;font-weight:500;text-transform:capitalize}.main-content{flex:1;overflow-y:auto;padding-bottom:16px}.main-actions{display:flex;gap:12px;padding:12px 16px}.action-btn{flex:1;height:56px;font-size:28px;font-weight:700;border-radius:14px;color:#fff;-webkit-tap-highlight-color:transparent;transition:transform .1s}.action-btn:active{transform:scale(.96)}.action-btn.income{background:var(--color-income)}.action-btn.expense{background:var(--color-expense)}.categories-page{flex:1;display:flex;flex-direction:column;min-height:100dvh}.cat-header{padding:16px;text-align:center}.cat-header h2{font-size:18px;font-weight:600}.cat-tabs{display:flex;margin:0 16px 12px;background:var(--color-surface);border-radius:10px;padding:3px}.cat-tab{flex:1;text-align:center;padding:8px;border-radius:8px;font-size:13px;font-weight:500;color:var(--color-text-secondary);background:transparent;border:none;-webkit-tap-highlight-color:transparent}.cat-tab.active{background:#ffffff14;color:var(--color-text)}.cat-content{flex:1;overflow-y:auto;padding:0 16px 16px}.cat-list{display:flex;flex-direction:column;gap:4px}.cat-item{background:var(--color-surface);border-radius:10px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;-webkit-tap-highlight-color:transparent;cursor:pointer}.cat-item:active{opacity:.7}.cat-item-left{display:flex;align-items:center;gap:10px;min-width:0}.cat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cat-dot.daily{background:var(--color-accent, #4fc3f7)}.cat-dot.fix{background:var(--color-expense)}.cat-dot.casual{background:var(--color-text-secondary)}.cat-dot.income{background:var(--color-income)}.cat-dot.income-casual{background:var(--color-income);opacity:.5}.cat-item-name{font-size:14px}.cat-item-sub{font-size:11px;color:var(--color-text-secondary);margin-top:2px}.cat-item-right{flex-shrink:0;margin-left:8px}.cat-item-amount{font-size:13px;font-weight:600;color:var(--color-expense)}.cat-item-amount.income{color:var(--color-income)}.cat-item-tag{font-size:10px;background:#ffffff0f;padding:2px 6px;border-radius:4px;color:var(--color-text-secondary)}.cat-add-btn{width:100%;padding:12px;margin-top:8px;background:var(--color-surface);color:var(--color-text-secondary);border:1px dashed var(--color-border);border-radius:10px;font-size:13px;-webkit-tap-highlight-color:transparent}.cat-modal-overlay{position:fixed;inset:0;background:#00000080;z-index:100;display:flex;align-items:flex-end}.cat-modal{width:100%;background:var(--color-bg);border-radius:16px 16px 0 0;padding:20px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));border-top:2px solid var(--color-accent, #4fc3f7)}.cat-modal-title{font-size:16px;font-weight:600;text-align:center;margin-bottom:4px}.cat-modal-step{font-size:12px;color:var(--color-text-secondary);text-align:center;margin-bottom:16px}.cat-modal-label{font-size:11px;color:var(--color-text-secondary);margin-bottom:4px}.cat-modal-input{width:100%;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:8px;padding:10px 12px;font-size:14px;margin-bottom:12px;box-sizing:border-box}.cat-modal-select{width:100%;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:12px;box-sizing:border-box;-webkit-appearance:none}.cat-modal-actions{display:flex;gap:8px;justify-content:center;margin-top:8px}.cat-modal-btn{padding:10px 24px;border-radius:10px;font-size:13px;border:none;-webkit-tap-highlight-color:transparent}.cat-modal-btn.primary{background:var(--color-accent, #4fc3f7);color:#000;font-weight:600}.cat-modal-btn.primary:disabled{opacity:.4}.cat-modal-btn.secondary{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.cat-modal-btn.danger{background:transparent;color:var(--color-expense);font-size:13px;margin-right:auto;transition:background .15s,color .15s}.cat-modal-btn.danger.confirm{background:var(--color-expense);color:#fff;border-radius:10px;padding:10px 16px}.cat-type-choices{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.cat-type-choice{background:var(--color-surface);border:2px solid var(--color-border);border-radius:10px;padding:14px;cursor:pointer;-webkit-tap-highlight-color:transparent}.cat-type-choice.selected{border-color:var(--color-accent, #4fc3f7)}.cat-type-choice-name{font-size:14px;font-weight:600;margin-bottom:2px}.cat-type-choice-desc{font-size:12px;color:var(--color-text-secondary)}.budget-page{flex:1;display:flex;flex-direction:column;min-height:100dvh}.budget-header{padding:16px;text-align:center}.budget-month{font-size:16px;font-weight:500;text-transform:capitalize}.budget-dashboard{padding:0 16px 16px;display:flex;flex-direction:column;gap:6px}.budget-row{display:flex;justify-content:space-between;padding:8px 12px;background:var(--color-surface);border-radius:8px;font-size:14px}.budget-label{color:var(--color-text-secondary)}.budget-value{font-weight:600}.budget-value.income{color:var(--color-income)}.budget-value.expense{color:var(--color-expense)}.budget-daily-card{margin-top:8px;padding:16px;background:var(--color-surface);border-radius:12px;text-align:center}.budget-daily-main{display:flex;flex-direction:column;gap:4px}.budget-daily-label{font-size:12px;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.budget-daily-amount{font-size:28px;font-weight:700}.budget-buffer{margin-top:8px;font-size:14px;font-weight:600}.budget-buffer.positive{color:var(--color-income)}.budget-buffer.negative{color:var(--color-expense)}.budget-today-row{display:flex;justify-content:space-between;padding:8px 12px;background:var(--color-surface);border-radius:8px;font-size:13px;color:var(--color-text-secondary)}.budget-today-row .positive{color:var(--color-income)}.budget-today-row .negative{color:var(--color-expense)}.budget-content{flex:1;overflow-y:auto;padding:0 16px 16px}.budget-section{margin-bottom:20px}.budget-section-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;padding-left:4px}.budget-section-title.income{color:var(--color-income)}.budget-section-title.expense{color:var(--color-expense)}.budget-list{list-style:none;display:flex;flex-direction:column;gap:4px}.budget-item{background:var(--color-surface);border-radius:10px;padding:10px 12px}.budget-item-row{display:flex;align-items:center;gap:8px}.budget-item-name{flex:1;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.budget-item-amount{font-size:14px;font-weight:600;white-space:nowrap}.budget-item-day,.budget-item-tag,.budget-item-income{font-size:11px;color:var(--color-text-secondary);white-space:nowrap}.budget-item-sub{font-size:11px;color:var(--color-text-secondary);margin-top:4px;padding-left:2px}.budget-item-del{width:24px;height:24px;border-radius:50%;background:#ffffff0f;color:var(--color-text-secondary);font-size:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-tap-highlight-color:transparent}.budget-item-del:active{background:var(--color-expense);color:#fff}.budget-add-btn{width:100%;padding:10px;margin-top:6px;background:var(--color-surface);color:var(--color-text-secondary);border:1px dashed var(--color-border);border-radius:10px;font-size:13px;-webkit-tap-highlight-color:transparent}.budget-add-form{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}.budget-input{flex:1;min-width:0;height:40px;padding:0 10px;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:8px;font-size:13px}.budget-input.short{max-width:90px}.budget-input.tiny{max-width:55px}.budget-input::placeholder{color:var(--color-text-secondary)}.budget-select{height:40px;padding:0 8px;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:8px;font-size:12px;-webkit-appearance:none}.budget-add-confirm,.budget-add-cancel{width:40px;height:40px;border-radius:8px;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-tap-highlight-color:transparent}.budget-add-confirm{background:var(--color-income);color:#fff}.budget-add-cancel{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.budget-item-unpay{width:24px;height:24px;border-radius:50%;background:#ffffff0f;color:var(--color-text-secondary);font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-tap-highlight-color:transparent}.budget-item-unpay:active{background:var(--color-expense);color:#fff}.history-page{flex:1;display:flex;flex-direction:column;min-height:100dvh}.hist-header{padding:16px;text-align:center}.hist-header h2{font-size:18px;font-weight:600}.hist-filters{padding:0 16px 8px}.hist-date-row{display:flex;gap:8px;align-items:center;margin-bottom:10px}.hist-date-label{font-size:12px;color:var(--color-text-secondary);flex-shrink:0}.hist-date-input{flex:1;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:8px;padding:8px 10px;font-size:13px;box-sizing:border-box;-webkit-appearance:none}.hist-tabs{display:flex;margin:0 16px 12px;background:var(--color-surface);border-radius:10px;padding:3px}.hist-tab{flex:1;text-align:center;padding:8px;border-radius:8px;font-size:13px;font-weight:500;color:var(--color-text-secondary);background:transparent;border:none;-webkit-tap-highlight-color:transparent}.hist-tab.active{background:#ffffff14;color:var(--color-text)}.hist-content{flex:1;overflow-y:auto;padding:0 16px 16px}.hist-empty{text-align:center;color:var(--color-text-secondary);padding:40px 16px;font-size:14px}.hist-date-group{margin-bottom:12px}.hist-date-header{font-size:13px;font-weight:600;color:var(--color-text-secondary);padding:4px 0 6px;text-transform:capitalize}.hist-tx-list{display:flex;flex-direction:column;gap:4px}.hist-tx-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--color-surface);border-radius:10px;gap:8px;cursor:pointer;-webkit-tap-highlight-color:transparent}.hist-tx-item:active{opacity:.7}.hist-tx-info{display:flex;flex-direction:column;gap:2px;min-width:0}.hist-tx-category{font-size:14px;font-weight:500}.hist-tx-comment{font-size:12px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hist-tx-amount{font-size:15px;font-weight:600;white-space:nowrap;flex-shrink:0}.hist-tx-amount.income{color:var(--color-income)}.hist-tx-amount.expense{color:var(--color-expense)}
