.ui-button{border-radius:8px;justify-content:center;align-items:center;font-weight:500;transition:all .2s ease-in-out;display:inline-flex}.ui-button:disabled{opacity:.5;cursor:not-allowed}.ui-button--sm{padding:8px 12px;font-size:14px}.ui-button--md{padding:10px 16px;font-size:16px}.ui-button--lg{padding:14px 24px;font-size:18px}.ui-button--full-width{width:100%}.ui-button--primary{background-color:var(--color-accent);color:#fff}.ui-button--primary:hover:not(:disabled){background-color:var(--color-accent-hover)}.ui-button--secondary{background-color:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--color-border)}.ui-button--secondary:hover:not(:disabled){background-color:var(--color-border)}.ui-button--ghost{color:var(--color-text-secondary);background-color:#0000}.ui-button--ghost:hover:not(:disabled){color:var(--color-text-primary);background-color:var(--color-bg-secondary)}.ui-button--danger{background-color:var(--color-expense);color:#fff}.ui-button--danger:hover:not(:disabled){filter:brightness(.9)}.ui-card{background-color:var(--color-bg-primary);border-radius:16px;overflow:hidden}.ui-card--default{border:1px solid var(--color-border)}.ui-card--elevated{border:1px solid var(--color-border);box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -2px #0000000d}.ui-card--stat{background-color:var(--color-bg-secondary);border-radius:12px;padding:16px}.ui-input-wrapper{flex-direction:column;gap:6px;width:100%;display:flex}.ui-input-label{color:var(--color-text-secondary);font-size:14px;font-weight:500}.ui-input{border:1px solid var(--color-border);background-color:var(--color-bg-primary);width:100%;color:var(--color-text-primary);border-radius:8px;outline:none;padding:10px 14px;font-size:16px;transition:all .2s}.ui-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #4f46e51a}.ui-input--error{border-color:var(--color-expense)}.ui-input--error:focus{box-shadow:0 0 0 2px #ef44441a}.ui-input-error-msg{color:var(--color-expense);font-size:12px}.bottom-nav{background-color:var(--color-bg-primary);border-top:1px solid var(--color-border);z-index:40;height:64px;padding-bottom:env(safe-area-inset-bottom);justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav-item{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:60px;font-size:10px;font-weight:500;text-decoration:none;transition:color .2s;display:flex}.bottom-nav-item.active{color:var(--color-accent)}.bottom-nav-item:hover{color:var(--color-text-primary)}.bottom-nav-item.action{color:var(--color-expense)}.bottom-nav-item.action .add-icon{background-color:var(--color-bg-primary);border-radius:50%;margin-top:-12px;padding:2px}.sidebar{background-color:var(--color-bg-primary);border-right:1px solid var(--color-border);flex-direction:column;width:240px;height:100vh;transition:width .3s;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar.closed{width:72px}.sidebar-header{border-bottom:1px solid var(--color-border);align-items:center;height:64px;padding:0 24px;display:flex}.sidebar.closed .sidebar-header{justify-content:center;padding:0}.logo{color:var(--color-text-primary);margin:0;font-size:20px;font-weight:700}.sidebar-add-btn{padding:16px}.sidebar.closed .sidebar-add-btn{padding:16px 12px}.add-button{background-color:var(--color-accent);color:#fff;border-radius:8px;justify-content:center;align-items:center;gap:12px;width:100%;padding:12px;font-weight:600;transition:background-color .2s;display:flex}.add-button:hover{background-color:var(--color-accent-hover)}.sidebar-nav{flex-direction:column;gap:8px;padding:8px 12px;display:flex}.sidebar-item{color:var(--color-text-secondary);border-radius:8px;align-items:center;gap:12px;padding:12px;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.sidebar.closed .sidebar-item{justify-content:center;padding:12px 0}.sidebar-item:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.sidebar-item.active{color:var(--color-accent);background-color:#4f46e51a}.modal-overlay{z-index:100;background-color:#0006;justify-content:center;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.modal-content{background-color:var(--color-bg-primary);border-radius:16px 16px 0 0;flex-direction:column;width:100%;max-height:90vh;animation:.3s cubic-bezier(.16,1,.3,1) slideUp;display:flex}@media (width>=768px){.modal-overlay{align-items:center}.modal-content{border-radius:16px;width:480px;max-height:85vh;animation:.2s cubic-bezier(.16,1,.3,1) zoomIn}}.modal-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-title{margin:0;font-size:18px;font-weight:600}.modal-close{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;font-size:24px;line-height:1;display:flex}.modal-body{flex:1;padding:20px;overflow-y:auto}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.tx-form-tabs{background-color:var(--color-bg-secondary);border-radius:8px;margin-bottom:20px;padding:4px;display:flex}.tx-tab{color:var(--color-text-secondary);border-radius:6px;flex:1;padding:10px;font-size:15px;font-weight:600;transition:all .2s}.tx-tab.active.expense{background-color:var(--color-expense);color:#fff;box-shadow:0 2px 4px #ef444433}.tx-tab.active.income{background-color:var(--color-income);color:#fff;box-shadow:0 2px 4px #10b98133}.tx-form{flex-direction:column;gap:16px;display:flex}.tx-form-row{gap:12px;display:flex}.tx-form-row>*{flex:1}.tx-form-actions{margin-top:16px;margin-bottom:8px}.app-shell{background-color:var(--color-bg-secondary);min-height:100vh;display:flex}.app-main{flex-direction:column;flex:1;width:100%;padding-bottom:64px;display:flex}.app-content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:16px}@media (width>=1024px){.app-main{padding-bottom:0}.app-content{padding:32px}}.month-navigator{justify-content:center;align-items:center;gap:16px;padding:16px 0;display:flex}.nav-btn{width:40px;height:40px;color:var(--color-text-secondary);border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex}.nav-btn:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.current-month-btn{border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:8px 16px;transition:background-color .2s;display:flex}.current-month-btn:hover{background-color:var(--color-bg-secondary)}.current-month-btn .year{color:var(--color-text-secondary);font-size:12px;font-weight:500}.current-month-btn .month{color:var(--color-text-primary);font-size:20px;font-weight:700}.summary-cards-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:24px;display:grid}@media (width>=1024px){.summary-cards-grid{grid-template-columns:repeat(4,1fr);gap:16px}}.summary-card{flex-direction:column;justify-content:center;gap:8px;display:flex}.balance-card{background-color:var(--color-accent);color:#fff}.card-label{color:var(--color-text-secondary);font-size:13px;font-weight:500}.balance-card .card-label{color:#fffc}.card-value{font-size:20px;font-weight:700;font-family:var(--font-family-mono);color:var(--color-text-primary)}.balance-card .card-value{color:#fff;font-size:24px}.card-value.expense{color:var(--color-expense)}.card-value.income{color:var(--color-income)}.card-value.saving{color:var(--color-saving)}.transaction-list{flex-direction:column;gap:24px;display:flex}.empty-state{text-align:center;color:var(--color-text-secondary);background-color:var(--color-bg-secondary);border:1px dashed var(--color-border);border-radius:16px;padding:48px 24px}.daily-header{background-color:var(--color-bg-secondary);z-index:10;border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;margin-bottom:12px;padding:8px 4px;display:flex;position:sticky;top:0}.date-text{color:var(--color-text-primary);font-size:14px;font-weight:600}.daily-total{font-size:14px;font-weight:600;font-family:var(--font-family-mono)}.daily-total.expense{color:var(--color-text-secondary)}.daily-total.income{color:var(--color-income)}.daily-items{flex-direction:column;gap:12px;display:flex}.tx-item-card{cursor:pointer;justify-content:space-between;align-items:center;padding:16px;transition:transform .2s,box-shadow .2s;display:flex}.tx-item-card:hover{transform:translateY(-2px);box-shadow:0 4px 6px -1px #0000000d}.tx-item-left{flex-direction:column;gap:4px;display:flex}.tx-title{color:var(--color-text-primary);font-size:16px;font-weight:500}.tx-meta{color:var(--color-text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.tx-dot{font-size:10px}.tx-amount{font-size:16px;font-weight:600;font-family:var(--font-family-mono);text-align:right}.tx-amount.expense{color:var(--color-text-primary)}.tx-amount.income{color:var(--color-income)}.calendar-layout{flex-direction:column;gap:24px;display:flex}@media (width>=1024px){.calendar-layout{flex-direction:row;align-items:flex-start}}.calendar-main{background-color:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:16px;flex:1;padding:16px}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-day-header{text-align:center;color:var(--color-text-secondary);padding:8px 0;font-size:13px;font-weight:600}.calendar-cell{aspect-ratio:1;cursor:pointer;border-radius:8px;flex-direction:column;justify-content:flex-start;align-items:center;padding:4px;transition:background-color .2s;display:flex;position:relative}.calendar-cell:hover:not(.blank){background-color:var(--color-bg-secondary)}.calendar-cell.selected{border:1px solid var(--color-accent);background-color:#4f46e51a}.cell-date{font-size:14px;font-weight:500}.cell-indicator{border-radius:50%;width:6px;height:6px;margin-top:4px}.cell-indicator.low-expense{background-color:#ef44444d}.cell-indicator.mid-expense{background-color:#ef444499}.cell-indicator.high-expense{background-color:#ef4444}.cell-indicator.income-day{background-color:var(--color-income)}.cell-total{font-size:10px;font-family:var(--font-family-mono);margin-top:auto;display:none}@media (width>=768px){.calendar-cell{aspect-ratio:auto;align-items:flex-end;min-height:80px;padding:8px}.cell-date{align-self:flex-start}.cell-indicator{display:none}.cell-total{display:block}}.cell-total.expense{color:var(--color-expense)}.cell-total.income{color:var(--color-income)}.calendar-sidebar{background-color:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:16px;flex-direction:column;width:100%;padding:20px;display:flex}@media (width>=1024px){.calendar-sidebar{width:320px;max-height:calc(100vh - 48px);position:sticky;top:24px}}.calendar-sidebar h3{color:var(--color-text-primary);margin-bottom:16px;font-size:16px}.calendar-sidebar-content{flex:1;overflow-y:auto}.search-layout{flex-direction:column;gap:24px;display:flex}.search-header{background-color:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:16px;flex-direction:column;gap:16px;padding:20px;display:flex}.search-input-wrapper{align-items:center;display:flex;position:relative}.search-icon{color:var(--color-text-secondary);position:absolute;left:16px}.search-input{border:1px solid var(--color-border);background-color:var(--color-bg-secondary);width:100%;color:var(--color-text-primary);border-radius:12px;outline:none;padding:14px 16px 14px 44px;font-size:16px;transition:all .2s}.search-input:focus{border-color:var(--color-accent);background-color:var(--color-bg-primary);box-shadow:0 0 0 2px #4f46e51a}.search-filters{flex-wrap:wrap;gap:8px;display:flex}.filter-chip{background-color:var(--color-bg-secondary);color:var(--color-text-secondary);border-radius:20px;padding:8px 16px;font-size:14px;font-weight:500;transition:all .2s}.filter-chip:hover{background-color:var(--color-border);color:var(--color-text-primary)}.filter-chip.active{background-color:var(--color-accent);color:#fff}.search-results-meta{color:var(--color-text-secondary);margin-bottom:16px;font-size:14px}.search-results-meta .highlight{color:var(--color-text-primary);font-weight:600}.settings-layout{flex-direction:column;gap:24px;display:flex}.settings-header h1{color:var(--color-text-primary);margin:0;font-size:24px;font-weight:700}.settings-container{flex-direction:column;gap:24px;display:flex}@media (width>=768px){.settings-container{flex-direction:row;align-items:flex-start}}.settings-sidebar{gap:8px;padding-bottom:8px;display:flex;overflow-x:auto}.settings-sidebar::-webkit-scrollbar{height:4px}.settings-sidebar::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:4px}@media (width>=768px){.settings-sidebar{flex-direction:column;flex-shrink:0;width:200px;padding-bottom:0;overflow-x:visible}}.settings-tab-btn{text-align:left;color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;padding:12px 16px;font-size:15px;font-weight:500;transition:all .2s}.settings-tab-btn:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.settings-tab-btn.active{background-color:var(--color-bg-primary);color:var(--color-accent);box-shadow:0 1px 3px #0000001a}.settings-content{flex:1;min-width:0}.settings-card{padding:24px}.settings-section-title{color:var(--color-text-primary);justify-content:space-between;align-items:center;margin-bottom:16px;font-size:18px;font-weight:600;display:flex}.settings-form-row{align-items:flex-end;gap:12px;margin-bottom:24px;display:flex}.settings-form-row>:not(button){flex:1}.settings-list{flex-direction:column;gap:12px;display:flex}.settings-list-item{background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.item-info{align-items:center;gap:12px;display:flex}.item-name{font-weight:500}.color-dot{border-radius:50%;width:16px;height:16px}:root{--color-bg-primary:#f2f2f7;--color-bg-secondary:#fff;--color-text-primary:#000;--color-text-secondary:#8e8e93;--color-accent:#007aff;--color-accent-hover:#0056b3;--color-income:#34c759;--color-expense:#ff3b30;--color-saving:#5856d6;--color-border:#c7c7cc;--font-family-base:-apple-system, BlinkMacSystemFont, "Pretendard", "Inter", sans-serif;--font-family-mono:"Fira Code", "JetBrains Mono", monospace;--bp-mobile:768px;--bp-desktop:1024px}[data-theme=dark]{--color-bg-primary:#000;--color-bg-secondary:#1c1c1e;--color-text-primary:#fff;--color-text-secondary:#ebebf5;--color-accent:#0a84ff;--color-accent-hover:#007aff;--color-income:#30d158;--color-expense:#ff453a;--color-saving:#5e5ce6;--color-border:#38383a}*{box-sizing:border-box;margin:0;padding:0}html,body{font-family:var(--font-family-base);background-color:var(--color-bg-secondary);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#root{flex-direction:column;min-height:100vh;display:flex}input,textarea{-webkit-user-select:auto;user-select:auto}a{color:var(--color-accent);text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea,select{font-family:inherit}
