*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s,color .3s}#root{width:100%;min-height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}a,button,input,select,textarea,.stat-card,.list-card{touch-action:manipulation}@media(display-mode:standalone){::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}*{scrollbar-width:none!important}}@media screen and (orientation:landscape)and (display-mode:standalone){#root{display:none!important}body:before{content:"📱 请将手机竖屏使用以获得最佳体验";position:fixed;inset:0;background-color:#111827;color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:600;z-index:999999;text-align:center;padding:20px}}.trends-page{display:flex;flex-direction:column;gap:20px}.time-filter{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);color:var(--text-secondary)}.filter-label{font-size:14px;font-weight:500;white-space:nowrap}.filter-btns{display:flex;gap:6px}.filter-btn{padding:6px 14px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);border-radius:6px;font-size:13px;cursor:pointer;transition:all .2s}.filter-btn:hover{border-color:var(--primary);color:var(--primary)}.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.chart-full{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow)}.chart-full h3{margin:0 0 20px;font-size:16px;color:var(--text-secondary)}@media(max-width:768px){.time-filter{flex-direction:column;align-items:flex-start}.filter-btns{width:100%;overflow-x:auto;padding-bottom:4px}}.analysis-type-toggle{display:flex;background:var(--bg-body);border-radius:8px;padding:4px;margin-left:auto}.analysis-type-toggle .toggle-btn{background:transparent;border:none;padding:6px 12px;font-size:14px;border-radius:6px;color:var(--text-secondary);cursor:pointer;transition:all .2s;white-space:nowrap}.analysis-type-toggle .toggle-btn.active{background:var(--bg-card);color:var(--primary);box-shadow:0 1px 3px #0000001a;font-weight:500}@media(max-width:600px){.analysis-type-toggle{width:100%;margin-left:0;margin-top:12px}.analysis-type-toggle .toggle-btn{flex:1}}.tag-analysis-root{font-family:inherit}.network-container{width:100%;overflow:hidden;border-radius:12px;border:1px solid var(--border);background:var(--bg-card);position:relative}.tag-analysis-root svg,.tag-analysis-root svg *,.tag-analysis-root .recharts-wrapper,.tag-analysis-root .recharts-surface,.tag-analysis-root .recharts-scatter,.tag-analysis-root .recharts-bar,.tag-analysis-root .recharts-area,.tag-analysis-root .recharts-cartesian-grid,.tag-analysis-root .recharts-reference-line,.tag-analysis-root .recharts-reference-area,.tag-analysis-root .recharts-tooltip-wrapper,.tag-analysis-root canvas,.tag-analysis-root button,.tag-analysis-root select,.tag-analysis-root input{outline:none!important;-webkit-tap-highlight-color:transparent}.tag-analysis-root>.chart-card{margin-bottom:20px}.tag-analysis-root .charts-grid{margin-bottom:20px;grid-template-columns:8fr 6fr}@media(max-width:768px){.tag-analysis-root .charts-grid{grid-template-columns:1fr}}.tag-analysis-root>.chart-card:last-child,.tag-analysis-root .charts-grid:last-child{margin-bottom:0}.flow-list{display:flex;flex-direction:column;gap:14px}.flow-row{display:flex;align-items:center;gap:16px}.flow-cat{display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;width:90px;padding:6px 8px;border-radius:6px;border:2px solid;background:var(--bg-input)}.flow-cat-name{font-size:13px;font-weight:700;line-height:1.3}.flow-cat-amount{font-size:10px;color:var(--text-secondary);margin-top:1px}.flow-tags{display:flex;flex-wrap:wrap;gap:10px;align-items:center;flex:1;min-width:0}.flow-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 12px 6px 8px;border-radius:6px;border:1px solid var(--border);background:var(--bg-input);font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;cursor:default;transition:all .2s ease;box-shadow:0 1px 2px #0000000d}.flow-tag:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background-color:var(--dot-color);flex-shrink:0}.flow-tag:hover{border-color:var(--text-secondary);box-shadow:0 2px 4px #00000014}.flow-tag-amount{font-size:12px;font-weight:500;color:var(--text-primary);margin-left:4px}.chart-bg-wrapper{background-color:#f8fafc80;border-radius:12px;border:1px solid rgba(241,245,249,1);padding:8px;width:100%}:root.dark .chart-bg-wrapper,html.dark .chart-bg-wrapper,.dashboard.dark .chart-bg-wrapper{background-color:#1e293b80;border-color:var(--border)}.custom-scrollbar::-webkit-scrollbar{height:6px;width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.w-full{width:100%}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.justify-around{justify-content:space-around}.flex-1{flex:1}.flex-grow{flex-grow:1}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.gap-1\.5{gap:6px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.p-2{padding:8px}.p-4{padding:16px}.p-6{padding:24px}.py-2{padding-top:8px;padding-bottom:8px}.py-4{padding-top:16px;padding-bottom:16px}.py-6{padding-top:24px;padding-bottom:24px}.px-3{padding-left:12px;padding-right:12px}.px-4{padding-left:16px;padding-right:16px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.mr-2{margin-right:8px}.mx-auto{margin-left:auto;margin-right:auto}.mt-0\.5{margin-top:2px}.-mt-1{margin-top:-4px}.mt-2{margin-top:8px}.pb-2{padding-bottom:8px}.min-h-\[200px\]{min-height:200px}.min-h-\[300px\]{min-height:300px}.min-h-\[420px\]{min-height:420px}.min-w-max{min-width:max-content}.w-4{width:16px}.h-4{height:16px}.max-w-\[1400px\]{max-width:1400px}.overflow-x-auto{overflow-x:auto}.overflow-hidden{overflow:hidden}.rounded-xl{border-radius:12px}.rounded-\[4px\]{border-radius:4px}.font-bold{font-weight:700}.font-normal{font-weight:400}.text-xs{font-size:12px;line-height:16px}.text-sm{font-size:14px;line-height:20px}.text-lg{font-size:18px;line-height:28px}.text-xl{font-size:20px;line-height:28px}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}.text-gray-400{color:var(--text-secondary);opacity:.7}.text-gray-500{color:var(--text-secondary)}.text-blue-500{color:#3b82f6}.text-indigo-500{color:#6366f1}.text-emerald-500{color:#10b981}.text-pink-500{color:#ec4899}.text-orange-500{color:#f97316}.text-red-500{color:#ef4444}.bg-purple-600{background-color:#8b5cf6}.shadow-purple-200\/50{box-shadow:0 4px 6px -1px #8b5cf64d}.border-dashed{border-style:dashed}.absolute{position:absolute}.relative{position:relative}.top-\[8\%\]{top:8%}.bottom-\[8\%\]{bottom:8%}.bottom-\[15\%\]{bottom:15%}.right-\[8\%\]{right:8%}.bottom-3{bottom:12px}.right-3{right:12px}.z-10{z-index:10}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.pointer-events-none{pointer-events:none}.select-none{-webkit-user-select:none;user-select:none}.cursor-pointer{cursor:pointer}.drop-shadow-sm{filter:drop-shadow(0 1px 1px rgba(0,0,0,.05))}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.duration-300{transition-duration:.3s}.hover\:scale-110:hover{transform:scale(1.1);text-shadow:0 2px 8px var(--shadow);opacity:1!important}.hover\:stroke-opacity-100:hover{stroke-opacity:1}.hover\:stroke-gray-400:hover{stroke:var(--text-secondary)}@media(min-width:640px){.sm\:block{display:block}.hidden{display:none}.sm\:flex-row{flex-direction:row}.sm\:w-36{width:144px}.sm\:w-5{width:20px}.sm\:h-5{height:20px}}@media(min-width:1024px){.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-5{grid-column:span 5 / span 5}.lg\:justify-center{justify-content:center}}.animate-fade-in{animation:fadeIn .4s ease-out forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes node-breathe{0%,to{transform:scale(1);opacity:.92}50%{transform:scale(1.08);opacity:.82}}.net-link{transition:stroke-opacity .3s ease,stroke-width .3s ease}.net-node{transition:opacity .3s ease}.net-node .net-circle{transition:r .3s ease}.tag-analysis-root .chart-bg-wrapper span[title]{transition:transform .2s ease,filter .2s ease}.tag-analysis-root .chart-bg-wrapper span[title]:hover{transform:scale(1.2)!important;filter:brightness(1.15) drop-shadow(0 2px 8px rgba(99,102,241,.35));z-index:10;position:relative}.space-y-6>*+*{margin-top:24px}.heatmap-top-controls{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:nowrap;padding-left:16px}.heatmap-top-controls .heatmap-select-wrapper .custom-select-trigger{min-height:30px!important;padding:5px 10px!important;border-radius:6px!important;font-size:12px!important;font-weight:500;border-width:1.5px!important;border-color:#6366f159!important;background-color:transparent!important;color:var(--text-primary)!important;box-shadow:none!important}.heatmap-top-controls .heatmap-select-wrapper{width:140px;flex-shrink:0}.heatmap-legend{display:flex;align-items:center;gap:4px}.heatmap-legend-label{font-size:10px;color:var(--text-secondary);flex-shrink:0}.heatmap-legend-cell{width:14px;height:14px;border-radius:3px;box-shadow:inset 0 0 0 1px #0000000f}.heatmap-container{overflow:visible!important;padding-top:6px;padding-left:16px}.heatmap-grid{display:flex;gap:6px;min-width:max-content;padding-bottom:8px;overflow:visible}.heatmap-day-labels{display:flex;flex-direction:column;gap:6px;margin-right:4px;font-size:10px;color:var(--text-secondary);justify-content:space-around;flex-shrink:0}.heatmap-week-col{display:flex;flex-direction:column;gap:6px;overflow:visible}.heatmap-cell{width:18px;height:18px;border-radius:4px;cursor:pointer;transition:transform .15s ease;box-shadow:inset 0 0 0 1px #0000000f;position:relative;z-index:1}.heatmap-cell:hover{transform:scale(1.25);z-index:10}.heatmap-cell-empty{cursor:default;box-shadow:none}.heatmap-cell-empty:hover{transform:none}@media(min-width:640px){.heatmap-cell{width:20px;height:20px}}.heatmap-calendar{display:flex;flex-direction:column;gap:6px;overflow:visible}.heatmap-calendar-header{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center;font-size:10px;color:var(--text-secondary);font-weight:500}.heatmap-calendar-header span{width:18px;text-align:center;justify-self:center}.heatmap-calendar-row{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;justify-items:center;overflow:visible}@media(min-width:640px){.heatmap-calendar-header span{width:20px}}.heatmap-single-week{display:flex;flex-direction:column;gap:6px;overflow:visible}.heatmap-single-week-header{display:flex;gap:6px;font-size:10px;color:var(--text-secondary);font-weight:500}.heatmap-single-week-header span{width:18px;text-align:center}.heatmap-single-week-row{display:flex;gap:6px;overflow:visible}@media(min-width:640px){.heatmap-single-week-header span{width:20px}}.heatmap-cell[data-tooltip]{position:relative}.heatmap-cell[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);padding:6px 10px;border-radius:8px;font-size:12px;line-height:1.4;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:100;background:var(--tooltip-bg);color:var(--tooltip-text);border:1px solid var(--border);box-shadow:0 4px 20px #00000026;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.heatmap-cell[data-tooltip]:hover:after{opacity:1}.week-compare-card{width:160px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px 12px;border-left:1px solid var(--border);text-align:center}.week-compare-title{font-size:12px;font-weight:600;color:var(--text-secondary);letter-spacing:.5px}.week-compare-value{font-size:28px;font-weight:800;color:var(--text-primary);line-height:1.1}.week-compare-value-unit{font-size:13px;font-weight:500;color:var(--text-secondary);margin-left:2px}.week-compare-last{font-size:12px;color:var(--text-secondary)}.week-compare-diff{font-size:13px;font-weight:700;padding:2px 8px;border-radius:6px}.week-compare-diff.up{color:#10b981;background:#10b9811a}.week-compare-diff.down{color:#ef4444;background:#ef44441a}.week-compare-diff.flat{color:var(--text-secondary);background:var(--bg-input)}@media(max-width:768px){.week-compare-card{width:100%;border-left:none;flex-direction:row;flex-wrap:wrap;padding:12px 16px}}.custom-select-container{position:relative;width:100%}.custom-select-container.disabled{opacity:.6;pointer-events:none}.custom-select-trigger{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;font-size:14px;color:var(--text-primary);cursor:pointer;transition:all .2s;-webkit-user-select:none;user-select:none;min-height:42px}.custom-select-trigger:hover{border-color:var(--text-secondary)}.custom-select-trigger.open{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.selected-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.placeholder{color:var(--text-secondary)}.arrow-icon{color:var(--text-secondary);transition:transform .2s;flex-shrink:0;margin-left:8px}.arrow-icon.rotate{transform:rotate(180deg)}.custom-select-dropdown{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a;max-height:250px;overflow-y:auto;padding:4px;animation:slideDownFade .2s cubic-bezier(.16,1,.3,1)}.custom-select-dropdown.flip-up{animation:slideUpFade .2s cubic-bezier(.16,1,.3,1)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDownFade{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.custom-select-option{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:14px;color:var(--text-primary);border-radius:6px;cursor:pointer;transition:background .2s}.custom-select-option:hover{background:var(--bg-input)}.custom-select-option.selected{background:var(--primary-bg);color:var(--primary);font-weight:500}.custom-select-option.no-results{color:var(--text-secondary);cursor:default;justify-content:center}.option-content{display:flex;align-items:center;gap:8px}.color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.option-icon{display:flex;align-items:center;color:var(--text-secondary)}.check-icon{color:var(--primary)}.custom-select-dropdown::-webkit-scrollbar{width:2px}.custom-select-dropdown::-webkit-scrollbar-track{background:transparent}.custom-select-dropdown::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.custom-select-dropdown::-webkit-scrollbar-thumb:hover{background:var(--text-secondary);width:4px}.date-input-container{position:relative;width:100%}.date-input-wrapper{position:relative;display:flex;align-items:center}.date-input-segments{flex:1;display:flex;align-items:center;padding:9px 40px 9px 12px;height:auto;min-height:40px;cursor:text;border:1px solid var(--border);background-color:var(--bg-input);border-radius:8px;transition:all .2s;box-sizing:border-box}.date-input-segments:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.date-input-wrapper:focus-within{box-shadow:none;border-color:transparent}.date-segment{border:none;background:transparent;color:var(--text-primary);font-size:14px;padding:0;text-align:center;font-family:inherit;outline:none}.date-segment::placeholder{color:var(--text-secondary);opacity:.5}.date-segment-year{width:40px;flex:0 0 40px}.date-segment-month,.date-segment-day{width:24px;flex:0 0 24px}.date-separator{color:var(--text-secondary);margin:0 1px;-webkit-user-select:none;user-select:none;font-weight:700;line-height:1}.date-input-actions{position:absolute;right:8px;height:100%;display:flex;align-items:center;pointer-events:none}.date-toggle-btn{pointer-events:auto;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:color .2s}.date-toggle-btn:hover{color:var(--primary);background:var(--bg-body)}.date-picker-dropdown{position:absolute;top:100%;left:0;margin-top:8px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a;padding:16px;z-index:100;width:280px;animation:slideDownFade .2s ease-out}.calendar-header button{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:4px;display:flex}.calendar-header button:hover{background:var(--bg-input);color:var(--text-primary)}.current-month{font-weight:600;font-size:14px;color:var(--text-primary)}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:8px}.calendar-weekdays span{font-size:12px;color:var(--text-secondary);font-weight:500}.calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:50%;font-size:13px;color:var(--text-primary);cursor:pointer;transition:all .2s}.calendar-day:hover:not(.empty){background:var(--bg-input)}.calendar-day.selected{background:var(--primary);color:#fff;font-weight:600}.calendar-day.today{color:var(--primary);font-weight:600;border:1px solid var(--primary)}.calendar-day.today.selected{color:#fff}.calendar-footer{margin-top:12px;padding-top:12px;border-top:1px solid var(--border);text-align:center}.today-btn{background:none;border:none;color:var(--primary);font-size:13px;font-weight:500;cursor:pointer;padding:4px 12px;border-radius:4px}.today-btn:hover{background:var(--primary-bg)}.dark .date-picker-dropdown{box-shadow:0 10px 30px #00000080;border-color:var(--border)}.note-tag-input-wrapper{position:relative;display:flex;align-items:center;flex:1}.note-tag-input-wrapper input{width:100%;flex:1}.tag-dropdown-menu{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a;overflow:hidden;display:flex;flex-direction:column;animation:tagDropdownFade .15s ease-out}@keyframes tagDropdownFade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.tag-dropdown-menu.flip-up{animation:tagDropdownFadeUp .15s ease-out}@keyframes tagDropdownFadeUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tag-dropdown-header{padding:8px 12px 4px;font-size:11px;font-weight:600;color:var(--text-muted, var(--text-secondary));text-transform:uppercase;letter-spacing:.5px}.tag-dropdown-list{padding:4px 6px 6px;max-height:180px;overflow-y:auto;display:flex;flex-wrap:wrap;gap:4px}.tag-dropdown-list::-webkit-scrollbar{width:2px}.tag-dropdown-list::-webkit-scrollbar-track{background:transparent}.tag-dropdown-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.tag-dropdown-item{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:12px;font-size:12px;cursor:pointer;background:var(--primary-bg, rgba(99, 102, 241, .08));color:var(--primary, #6366f1);border:1px solid rgba(99,102,241,.2);transition:all .15s ease;-webkit-user-select:none;user-select:none;line-height:1.4}.tag-dropdown-item:hover,.tag-dropdown-item.selected{background:var(--primary, #6366f1);color:#fff;border-color:var(--primary, #6366f1)}.tag-dropdown-item.is-new{width:100%;border-radius:6px;border-style:dashed;padding:5px 10px;font-size:12px;background:transparent;color:var(--primary, #6366f1);border-color:var(--primary, #6366f1)}.tag-dropdown-item.is-new:hover,.tag-dropdown-item.is-new.selected{background:var(--primary-bg, rgba(99, 102, 241, .1));color:var(--primary, #6366f1)}.tag-dropdown-item .create-new-text{display:flex;align-items:center;gap:4px;font-weight:500}.tag-dropdown-item .tag-label-text{font-size:12px}.tag-dropdown-item.delete-mode{background:#ef444414;color:#ef4444;border-color:#ef444440}.tag-dropdown-item.delete-mode:hover,.tag-dropdown-item.delete-mode.selected{background:#ef4444;color:#fff;border-color:#ef4444}.tag-delete-icon{flex-shrink:0}.tag-dropdown-item.tag-mode-toggle{background:#ef444414;color:#ef4444;border:1px solid rgba(239,68,68,.35);font-size:11px;gap:3px;padding:3px 7px}.tag-dropdown-item.tag-mode-toggle:hover{background:#ef4444;color:#fff;border-color:#ef4444}.tag-dropdown-item.tag-mode-toggle.is-confirm{background:#10b9811a;color:#10b981;border-color:#10b98166}.tag-dropdown-item.tag-mode-toggle.is-confirm:hover{background:#10b981;color:#fff;border-color:#10b981}.tag-dropdown-item.tag-mode-toggle.is-confirm:hover{background:#10b9811a;color:#10b981;border-color:#10b981}.tag-dropdown-empty{padding:10px 12px;font-size:12px;color:var(--text-secondary);text-align:center}.note-with-tags{display:inline;line-height:1.6}.note-tag-pill{display:inline-block;background:var(--primary-bg, rgba(99, 102, 241, .1));color:var(--primary, #6366f1);border:1px solid rgba(99,102,241,.2);border-radius:10px;padding:0 6px;font-size:11px;font-weight:500;line-height:1.6;margin:0 1px;white-space:nowrap;vertical-align:baseline}.dark .tag-dropdown-menu{box-shadow:0 10px 30px #00000080}.dark .tag-dropdown-item{background:#6366f126;border-color:#6366f14d}.dark .tag-dropdown-item:hover,.dark .tag-dropdown-item.selected{background:var(--primary, #6366f1);color:#fff}.dark .tag-dropdown-item.delete-mode{background:#ef444426;border-color:#ef44444d}.dark .tag-dropdown-item.delete-mode:hover,.dark .tag-dropdown-item.delete-mode.selected{background:#ef4444;color:#fff}.dark .note-tag-pill{background:#6366f126;border-color:#6366f14d}.transactions-page{display:flex;flex-direction:column;gap:16px}.txn-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.txn-toolbar-left{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.txn-toolbar-right{display:flex;align-items:center;gap:16px}.txn-search{position:relative;display:flex;align-items:center}.txn-search .search-icon{position:absolute;left:12px;color:var(--text-secondary);pointer-events:none}.txn-search input{padding:9px 12px 9px 36px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);border-radius:8px;font-size:14px;outline:none;width:260px;transition:all .2s}.txn-search input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.txn-filter{display:flex;align-items:center;gap:8px;color:var(--text-secondary)}.txn-filter select{padding:9px 36px 9px 12px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);border-radius:8px;font-size:14px;outline:none;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 10px center;background-size:14px;transition:all .2s}.txn-filter select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.txn-summary{font-size:13px;color:var(--text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums}.txn-add-btn{display:flex;align-items:center;gap:6px;padding:9px 16px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:opacity .2s;white-space:nowrap}.txn-add-btn:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 4px 8px #6366f166}.txn-save-btn,.txn-cancel-btn{display:flex;align-items:center;gap:6px;padding:9px 14px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary)}.txn-export-btn,.txn-import-btn,.txn-edit-mode-btn{display:flex;align-items:center;gap:5px;padding:9px 14px;background-color:var(--bg-card);border:1px solid var(--border);color:var(--primary);border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap;box-shadow:0 1px 2px #0000000d}.txn-export-btn:hover:not(:disabled),.txn-import-btn:hover:not(:disabled),.txn-edit-mode-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background-color:#6366f10d;transform:translateY(-1px);box-shadow:0 4px 6px #6366f126}.txn-export-btn:disabled,.txn-import-btn:disabled,.txn-edit-mode-btn:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none;background-color:var(--bg-input);color:var(--text-secondary);border-color:var(--border)}.txn-form-inline{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:16px;box-shadow:var(--shadow);animation:slideDown .2s ease}.txn-form-fields{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.txn-form-field{display:flex;align-items:center;gap:8px;color:var(--text-secondary);flex:1;min-width:180px}.txn-form-field>svg{flex-shrink:0}.txn-form-field .date-input-container{width:100%}.txn-form-field input,.txn-form-field select{width:100%;min-width:0;padding:9px 12px;border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);border-radius:8px;font-size:14px;outline:none;transition:all .2s}.txn-table-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.txn-table-card .table-container{overflow-x:auto}.txn-edit-input{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--bg-input);color:var(--text-primary)}.txn-edit-amount{min-width:60px}.txn-edit-title,.txn-edit-note{min-width:120px}.txn-edit-input:focus{border-color:var(--primary);outline:none}.txn-pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow)}.pagination-info{font-size:14px;color:var(--text-secondary)}.pagination-controls{display:flex;align-items:center;gap:8px}.page-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);border-radius:8px;cursor:pointer;transition:all .2s;font-size:14px}.page-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:#6366f11a}.page-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.page-btn:disabled{opacity:.5;cursor:not-allowed;background:var(--bg-input)}.page-dots{color:var(--text-secondary);padding:0 4px;font-size:14px}.txn-checkbox-th,.txn-checkbox-td{width:40px;text-align:center;padding-left:12px!important;padding-right:4px!important}.txn-checkbox{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;vertical-align:middle}.selected-row{background-color:#6366f10f!important}.selected-row:hover{background-color:#6366f11a!important}.txn-batch-bar{display:flex;align-items:center;gap:8px}.txn-batch-count{font-size:13px;font-weight:500;color:var(--primary);white-space:nowrap}.txn-batch-delete-btn{display:flex;align-items:center;gap:5px;padding:9px 14px;background-color:var(--bg-card);border:1px solid #ef4444;color:#ef4444;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap;box-shadow:0 1px 2px #0000000d}.txn-batch-delete-btn:hover{background-color:#ef4444;color:#fff;transform:translateY(-1px);box-shadow:0 4px 6px #ef44444d}.txn-batch-cancel-btn{display:flex;align-items:center;gap:5px;padding:9px 14px;background-color:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap}.txn-batch-cancel-btn:hover{border-color:var(--text-secondary);background-color:var(--bg-input)}.txn-delete-confirm-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease}.txn-delete-confirm{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:28px 32px;max-width:400px;width:90%;box-shadow:0 20px 40px #0003;animation:scaleIn .15s ease}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.txn-delete-confirm h3{margin:0 0 12px;font-size:18px;font-weight:600;color:var(--text-primary)}.txn-delete-confirm p{margin:0 0 24px;font-size:14px;color:var(--text-secondary);line-height:1.5}.txn-delete-confirm-actions{display:flex;justify-content:flex-end;gap:10px}.txn-confirm-cancel{padding:9px 18px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.txn-confirm-cancel:hover{background:var(--bg-input)}.txn-confirm-delete{display:flex;align-items:center;gap:6px;padding:9px 18px;background:#ef4444;border:none;color:#fff;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.txn-confirm-delete:hover{background:#dc2626;transform:translateY(-1px);box-shadow:0 4px 8px #ef444466}@media(max-width:900px){.txn-toolbar{flex-direction:column;align-items:stretch;gap:12px}.txn-toolbar-left{flex-direction:row;flex-wrap:nowrap;width:100%;gap:8px}.txn-search{flex:1;min-width:0}.txn-search input{width:100%}.txn-filter{flex-shrink:0}.txn-filter>div{width:130px!important}.txn-toolbar-right{display:flex;width:100%;flex-wrap:nowrap!important;gap:4px;align-items:center;justify-content:flex-end}.txn-summary{display:block;flex:1;min-width:0;font-size:12px;white-space:nowrap;overflow-x:auto;margin-right:auto;padding-right:8px;text-align:left;-webkit-overflow-scrolling:touch;scrollbar-width:none}.txn-summary::-webkit-scrollbar{display:none}.txn-edit-mode-btn .btn-text,.txn-export-btn .btn-text,.txn-import-btn .btn-text,.txn-batch-delete-btn .btn-text,.txn-batch-cancel-btn .btn-text{display:none}.txn-edit-mode-btn,.txn-export-btn,.txn-import-btn,.txn-batch-delete-btn,.txn-batch-cancel-btn{padding:9px;justify-content:center}.txn-edit-mode-btn svg,.txn-export-btn svg,.txn-import-btn svg,.txn-batch-delete-btn svg,.txn-batch-cancel-btn svg{margin-right:0}.txn-add-btn{white-space:nowrap;flex-shrink:0;padding:9px 14px;font-size:13px;justify-content:center}.txn-form-fields{flex-direction:column}.txn-form-field{width:100%}.txn-pagination{flex-direction:column;gap:12px}}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-body);padding:20px}.login-container{display:flex;width:100%;max-width:1000px;height:600px;background:var(--bg-card);border-radius:24px;box-shadow:0 25px 50px -12px #00000040;overflow:hidden;border:1px solid var(--border)}.login-brand-section{flex:1;background:linear-gradient(135deg,#6366f1,#8b5cf6);position:relative;display:flex;align-items:center;justify-content:center;color:#fff;overflow:hidden}.login-brand-section:before{content:"";position:absolute;inset:0;background:url('data:image/svg+xml,<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="1" cy="1" r="1" fill="rgba(255,255,255,0.1)"/></svg>');opacity:.3}.brand-content{position:relative;z-index:10;text-align:center;padding:40px}.login-logo{display:flex;flex-direction:column;align-items:center;gap:16px;margin-bottom:24px}.logo-icon{width:64px;height:64px;background:#fff3;border-radius:16px;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.login-logo h1{font-size:32px;font-weight:700;margin:0;letter-spacing:-.5px}.brand-slogan{font-size:18px;opacity:.9;line-height:1.6;font-weight:300}.brand-visual{margin-top:60px;display:flex;align-items:flex-end;justify-content:center;gap:12px;height:100px}.visual-bar{width:20px;background:#ffffff4d;border-radius:10px;animation:barBounce 2s infinite ease-in-out}.bar-1{height:40px;animation-delay:0s}.bar-2{height:80px;animation-delay:.2s}.bar-3{height:60px;animation-delay:.4s}@keyframes barBounce{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.2)}}.login-form-section{flex:1;padding:60px;display:flex;align-items:center;background:var(--bg-card)}.form-wrapper{width:100%;max-width:360px;margin:0 auto}.form-wrapper h2{font-size:28px;font-weight:700;margin-bottom:8px;color:var(--text-primary)}.form-subtitle{color:var(--text-secondary);margin-bottom:32px;font-size:15px}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:14px;font-weight:500;color:var(--text-primary);margin-bottom:8px}.input-wrapper{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:12px;color:var(--text-secondary)}.input-wrapper input{width:100%;padding:12px 40px;background:var(--bg-input);border:1px solid var(--border);border-radius:12px;font-size:15px;color:var(--text-primary);transition:all .2s}.input-wrapper input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg);outline:none}.password-toggle{position:absolute;right:12px;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:0;display:flex}.login-submit-btn{width:100%;padding:14px;background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;margin-top:10px;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s;box-shadow:0 4px 12px #6366f14d}.login-submit-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px #6366f166}.login-submit-btn:disabled{opacity:.7;cursor:not-allowed}.login-footer{margin-top:24px;text-align:center;font-size:14px;color:var(--text-secondary)}.toggle-auth-mode{background:none;border:none;color:var(--primary);font-weight:600;cursor:pointer;margin-left:6px}.login-error{background:#ef44441a;color:#ef4444;padding:12px;border-radius:8px;font-size:14px;margin-bottom:20px;text-align:center}@media(max-width:768px){.login-container{flex-direction:column;height:auto;max-width:400px}.login-brand-section{padding:40px 20px}.login-form-section{padding:40px 30px}}html:has(.auth-page-container),body:has(.auth-page-container){margin:0;padding:0;background-color:transparent!important;background-image:none!important}#root:has(.auth-page-container){padding:0!important;background-color:transparent!important}.pwa-gradient-canvas{position:fixed;inset:-100px 0;background:linear-gradient(135deg,#eef2ff,#e0e7ff,#c7d2fe 60%,#ddd6fe);z-index:-999;pointer-events:none}.auth-page-container{display:flex;flex-direction:column;min-height:100dvh;position:relative;background:transparent;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}@supports (height: 100lvh){.auth-page-container{min-height:100lvh}}@supports (-webkit-touch-callout: none){.auth-page-container{min-height:calc(100lvh + 1px)}}.auth-page{flex:1;display:flex;flex-direction:column;justify-content:center;padding:20px;font-family:Inter,system-ui,-apple-system,sans-serif}.auth-card{display:flex;flex-direction:column;width:100%;max-width:480px;margin:auto;background:var(--bg-card);border-radius:24px;box-shadow:none;border:1px solid var(--border);padding:24px;gap:16px;transition:margin .3s ease}@media(pointer:coarse)and (max-width:768px){.auth-card.is-login{margin-bottom:15vh}}.auth-brand{text-align:center;margin-bottom:12px}.auth-brand-icon{width:42px;height:42px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;margin:0 auto 12px;box-shadow:0 10px 25px -5px #6366f166}.auth-brand-name{font-size:24px;font-weight:800;color:var(--text-primary);margin:0 0 4px;letter-spacing:-.5px}.auth-brand-tagline{font-size:14px;color:var(--text-secondary);margin:0}.auth-header{margin-bottom:12px;text-align:center}.auth-title{font-size:20px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.auth-subtitle{font-size:14px;color:var(--text-secondary);margin:0}.auth-alert{padding:12px;border-radius:8px;font-size:14px;margin-bottom:20px;text-align:center}.auth-alert-error{background:#ef44441a;color:#ef4444;border:1px solid rgba(239,68,68,.2)}.auth-alert-success{background:#10b9811a;color:#10b981;border:1px solid rgba(16,185,129,.2)}.auth-field{margin-bottom:16px}.auth-label{display:block;font-size:14px;font-weight:500;color:var(--text-primary);margin-bottom:6px}.auth-input{width:100%;padding:10px 12px;border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);border-radius:8px;font-size:14px;outline:none;transition:all .2s}.auth-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.auth-pw-wrapper{position:relative}.auth-input-pw{padding-right:40px}.auth-input-pw::-ms-reveal,.auth-input-pw::-ms-clear{display:none}.auth-pw-eye{position:absolute;right:0;top:0;height:100%;width:40px;background:none;border:none;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center}.auth-pw-rules{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}.auth-pw-rules li{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:4px}.auth-pw-rules li.pass{color:#10b981}.auth-pw-rules li.fail{color:var(--text-secondary);opacity:.6}.auth-pw-match{font-size:12px;margin:6px 0 0;display:flex;align-items:center;gap:4px}.auth-pw-match.pass{color:#10b981}.auth-pw-match.fail{color:#ef4444}.auth-checkbox-group{display:flex;align-items:flex-start;gap:8px;margin:16px 0}.auth-checkbox{margin-top:3px}.auth-checkbox-label{font-size:13px;color:var(--text-secondary);line-height:1.4}.auth-link{color:var(--primary);cursor:pointer}.auth-submit{width:100%;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;margin-top:8px}.auth-submit:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.auth-submit:disabled{opacity:.7;cursor:not-allowed}.auth-submit-register{background:var(--text-primary)}.auth-switch{margin-top:24px;text-align:center;font-size:14px}.auth-switch-text{color:var(--text-secondary)}.auth-switch-btn{background:none;border:none;color:var(--primary);font-weight:600;cursor:pointer;padding:0 4px}:root{--primary: #6366f1;--primary-bg: #e0e7ff;--bg-body: #f3f4f6;--bg-sidebar: #ffffff;--bg-card: #ffffff;--bg-input: #f9fafb;--text-primary: #111827;--text-secondary: #6b7280;--border: #e5e7eb;--danger: #ef4444;--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tooltip-bg: rgba(255, 255, 255, .85);--tooltip-text: #1f2937}:root.dark,html.dark,.dashboard.dark{--primary: #818cf8;--primary-bg: rgba(99, 102, 241, .1);--bg-body: #111827;--bg-sidebar: #1f2937;--bg-card: #1f2937;--bg-input: #374151;--text-primary: #f9fafb;--text-secondary: #9ca3af;--border: #374151;--shadow: 0 4px 6px -1px rgb(0 0 0 / .3);--tooltip-bg: rgba(31, 41, 55, .85);--tooltip-text: #f3f4f6}.loading-screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:var(--bg-body);z-index:99999;gap:32px;transition:background-color .3s ease}.loading-logo{display:flex;flex-direction:column;align-items:center;gap:12px;animation:loadingFadeIn .6s ease-out}.loading-logo-icon{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,var(--primary),#a78bfa);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px #6366f14d;animation:loadingPulse 2s ease-in-out infinite}.loading-logo-icon svg{width:28px;height:28px;color:#fff}.loading-app-name{font-size:20px;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.loading-spinner-container{display:flex;flex-direction:column;align-items:center;gap:16px;animation:loadingFadeIn .6s ease-out .2s both}.loading-spinner{width:36px;height:36px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--primary);animation:loadingSpin .8s linear infinite}.loading-text{font-size:14px;color:var(--text-secondary);font-weight:500;animation:loadingDots 1.5s ease-in-out infinite}@keyframes loadingSpin{to{transform:rotate(360deg)}}@keyframes loadingPulse{0%,to{transform:scale(1);box-shadow:0 8px 24px #6366f14d}50%{transform:scale(1.05);box-shadow:0 12px 32px #6366f166}}@keyframes loadingFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes loadingDots{0%,to{opacity:.5}50%{opacity:1}}.loading-screen.dark .loading-logo-icon{box-shadow:0 8px 24px #818cf840}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Inter,system-ui,sans-serif;background-color:var(--bg-body);color:var(--text-primary);touch-action:pan-x pan-y;transition:background-color .3s ease,color .3s ease,border-color .3s ease}#root{min-height:100dvh}.stat-card,.chart-card,.list-card,.form-card,.sidebar,.input-group input,.input-group select,.theme-toggle{transition:background-color .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease,width .3s cubic-bezier(.4,0,.2,1),transform .2s}button,input,select{font-family:inherit}.dashboard{display:flex;height:100dvh;overflow:hidden;background-color:var(--bg-body);transition:background-color .3s ease}.main-content{flex:1;background:var(--bg-body);overflow-y:auto;padding:24px}.content-wrapper{max-width:1280px;margin:0 auto;display:flex;flex-direction:column;gap:24px}.top-bar{display:flex;justify-content:space-between;align-items:center}.top-bar h2{margin:0;font-size:24px;color:var(--text-primary)}.charts-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.chart-card{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow)}.chart-card h3{margin:0 0 20px;font-size:16px;color:var(--text-secondary)}.bottom-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.dashboard-body{display:grid;grid-template-columns:1fr 1fr;gap:20px}.list-card,.form-card{min-width:0;background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow)}.list-card h3,.form-card h3{margin:0 0 20px;font-size:16px;color:var(--text-secondary)}.table-container{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;padding:12px;color:var(--text-secondary);font-size:13px;font-weight:500;border-bottom:1px solid var(--border)}td{padding:12px;border-bottom:1px solid var(--border);font-size:14px;color:var(--text-primary);transition:background-color .2s}tr:last-child td{border-bottom:none}tbody tr{transition:background-color .2s ease}tbody tr:hover{background-color:var(--bg-input);cursor:default}.tag{background:var(--primary-bg);color:var(--primary);padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;white-space:nowrap;display:inline-block}.text-danger{color:var(--danger)}.text-muted{color:var(--text-secondary)}.font-medium{font-weight:500}.icon-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:6px;border-radius:4px;transition:all .2s}.icon-btn:hover{background:#ef44441a;color:var(--danger)}.input-group{margin-bottom:16px}.input-group label{display:block;margin-bottom:8px;font-size:13px;font-weight:500;color:var(--text-secondary);display:flex;align-items:center;gap:6px}.input-group input,.input-group select{width:100%;padding:10px 12px;border:1px solid var(--border);background-color:var(--bg-input);color:var(--text-primary);border-radius:8px;font-size:14px;outline:none;transition:all .2s;box-sizing:border-box}.input-group select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding-right:40px;cursor:pointer}.input-group input:focus,.input-group select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.input-group input[type=date],.input-group input[type=number],.input-group input[type=text],.input-group input[type=password]{box-sizing:border-box;min-width:0}.submit-btn{width:100%;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .2s}.submit-btn:hover{opacity:.9}.empty-hint{color:var(--text-secondary);text-align:center;padding:40px 0;font-size:14px}@media(max-width:1024px){.charts-grid,.bottom-grid,.dashboard-body{grid-template-columns:1fr}}@media(max-width:768px){.dashboard{flex-direction:column;overflow:auto;height:auto;min-height:100vh}.main-content{padding-top:75px;padding-left:0;padding-right:0;height:auto;padding-bottom:env(safe-area-inset-bottom,0px)}.content-wrapper{padding:0 12px}.top-bar{margin-top:0;padding-top:0;margin-bottom:0}.mobile-actions{display:flex;gap:6px}.stats-grid{grid-template-columns:1fr;gap:12px}.stat-card{padding:14px}.stat-info .value{font-size:20px}.dashboard-body{grid-template-columns:1fr}.form-card,.list-card{padding:14px}table{min-width:500px}th,td{padding:8px 10px;font-size:13px}.budget-card{padding:14px}}.recharts-wrapper{outline:none!important}.recharts-surface:focus{outline:none!important}.recharts-layer:focus{outline:none!important}.recharts-sector:focus{outline:none!important}.recharts-rectangle:focus{outline:none!important}.custom-tooltip{background:var(--tooltip-bg);color:var(--tooltip-text);border:1px solid var(--border);padding:8px 12px;border-radius:8px;box-shadow:0 4px 20px #00000026;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.custom-tooltip p{margin:0;line-height:1.4}.tooltip-label{color:var(--text-secondary);font-size:11px;margin-bottom:2px;text-transform:uppercase;font-weight:600}.tooltip-value{color:var(--primary);font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}.tooltip-pct{color:var(--text-secondary);font-size:12px;margin-top:2px}.sidebar-manage-btn{display:flex;align-items:center;gap:12px;padding:12px 16px;width:100%;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:8px;transition:all .2s;white-space:nowrap;overflow:hidden;height:48px;font-size:14px}.sidebar-manage-btn:hover{background:var(--primary-bg);color:var(--primary)}.budget-card{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow)}.budget-card-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:16px}.budget-list{display:flex;flex-direction:column;gap:16px}.budget-row{display:flex;flex-direction:column;gap:4px}.budget-row-header{display:flex;align-items:center;justify-content:space-between}.budget-label{font-size:13px;font-weight:600;color:var(--text-secondary)}.budget-amounts{display:flex;align-items:baseline;gap:6px;font-variant-numeric:tabular-nums}.budget-spent{font-size:16px;font-weight:700}.budget-spent.normal{color:#10b981}.budget-spent.over{color:#ef4444}.budget-separator{color:var(--text-secondary);font-size:13px}.budget-total{font-size:13px;color:var(--text-secondary);font-weight:500}.budget-bar-bg{height:6px;background:var(--bg-input);border-radius:3px;overflow:hidden}.budget-bar-fill{height:100%;border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1)}.budget-bar-fill.normal{background:linear-gradient(90deg,#10b981,#34d399)}.budget-bar-fill.warning{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.budget-bar-fill.over{background:linear-gradient(90deg,#ef4444,#f87171)}.budget-row-footer{display:flex;align-items:center;justify-content:space-between;font-size:11px;margin-top:2px}.budget-pct{font-weight:600}.budget-pct.normal{color:#10b981}.budget-pct.over{color:#ef4444}.settings-modal{max-width:520px}.settings-tabs{display:flex;border-bottom:1px solid var(--border);padding:0 24px;gap:0}.settings-tab{padding:12px 20px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.settings-tab:hover{color:var(--text-primary)}.settings-general{padding:20px 24px;display:flex;flex-direction:column;gap:24px}.setting-group{display:flex;flex-direction:column;gap:10px}.setting-group-title{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--text-primary)}.setting-budget-list{display:flex;flex-direction:column;gap:8px}.setting-budget-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--bg-input);border-radius:8px;border:1px solid var(--border)}.setting-budget-label{font-size:13px;font-weight:500;color:var(--text-secondary);min-width:50px}.setting-budget-edit{display:flex;align-items:center;gap:6px}.setting-budget-input{width:100px;padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text-primary);font-size:13px;outline:none;transition:border-color .2s}.setting-budget-input:focus{border-color:var(--primary)}.setting-budget-ok{padding:5px 10px;background:var(--primary);color:#fff;border:none;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;transition:opacity .2s}.setting-budget-ok:hover{opacity:.9}.setting-budget-cancel{background:transparent;border:1px solid var(--border);color:var(--text-secondary);width:24px;height:24px;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.setting-budget-cancel:hover{border-color:var(--danger);color:var(--danger)}.setting-budget-value{padding:5px 12px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;font-size:13px;cursor:pointer;transition:all .2s;min-width:70px;text-align:right}.setting-budget-value:hover{border-color:var(--primary);color:var(--primary)}.icon-btn:hover{background:#6366f11a;color:var(--primary)}.toast-container{position:fixed;top:20px;right:20px;z-index:99999;display:flex;flex-direction:column;gap:10px;max-width:380px}.toast-item{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:12px;background:var(--bg-card, #fff);box-shadow:0 8px 24px #00000026;border-left:4px solid transparent;transform:translate(120%);opacity:0;transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .3s;font-size:14px;color:var(--text-primary, #111);min-width:260px}.toast-enter{transform:translate(0);opacity:1}.toast-exit{transform:translate(120%);opacity:0}.toast-success{border-left-color:#10b981}.toast-success .toast-icon{color:#10b981}.toast-error{border-left-color:#ef4444}.toast-error .toast-icon{color:#ef4444}.toast-info{border-left-color:#3b82f6}.toast-info .toast-icon{color:#3b82f6}.toast-icon{flex-shrink:0}.toast-message{flex:1;line-height:1.4}.toast-close{background:none;border:none;cursor:pointer;color:var(--text-secondary, #999);padding:2px;border-radius:4px;flex-shrink:0;transition:color .2s}.toast-close:hover{color:var(--text-primary, #111)}@media(max-width:480px){.content-wrapper{gap:14px}.top-bar h2{font-size:18px}.stat-card{padding:12px;gap:10px}.stat-icon{width:38px;height:38px}.stat-info .value{font-size:18px}.stat-info .label{font-size:12px}.chart-card{padding:12px}.chart-card h3{font-size:14px}.list-card,.form-card{padding:12px}.list-card h3,.form-card h3{font-size:14px;margin-bottom:12px}.settings-modal{max-width:100vw;border-radius:12px}.settings-general{padding:14px;gap:16px}.category-manager{width:calc(100vw - 24px);max-height:90vh;border-radius:12px}.txn-toolbar-right{flex-wrap:wrap;gap:6px}.txn-add-btn{padding:6px 10px;font-size:12px}.txn-search input{font-size:13px;padding:8px 8px 8px 34px}.budget-progress-header{flex-wrap:wrap;gap:4px}.budget-label{font-size:12px}.budget-values{font-size:11px}.page-btn{padding:4px 8px;font-size:12px}.pagination-info{font-size:12px}}.date-input-field{width:100%;padding:10px 40px 10px 12px;border:1px solid var(--border);background-color:var(--bg-input);color:var(--text-primary);border-radius:8px;font-size:14px;outline:none;transition:all .2s;box-sizing:border-box}.date-input-field:focus,.date-input-field:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.date-input-field.date-input-segments{display:flex;align-items:center;gap:2px;cursor:text;width:100%;justify-content:flex-start;padding-left:10px}.date-segment{border:none!important;background:transparent!important;color:var(--text-primary);font-size:14px;font-family:inherit;padding:0!important;margin:0!important;outline:none!important;box-shadow:none!important;text-align:center;min-width:0;border-radius:2px}.date-segment:focus{background:var(--bg-secondary)!important;color:var(--primary);font-weight:500}.date-segment-year{width:40px;flex:0 0 40px;text-align:center}.date-segment-month,.date-segment-day{width:24px;flex:0 0 24px;text-align:center}.date-segment::placeholder{color:var(--text-secondary);opacity:.5;font-size:12px}.date-separator{color:var(--text-secondary);font-size:14px;-webkit-user-select:none;user-select:none;flex:0 0 auto;line-height:1;padding:0;margin:0 1px;font-weight:700}.date-input-actions{position:absolute;right:10px;display:flex;align-items:center;gap:4px;color:var(--text-secondary)}.date-clear-btn,.date-toggle-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.date-clear-btn:hover,.date-toggle-btn:hover{background-color:#0000000d;color:var(--text-primary)}.date-picker-dropdown{position:absolute;top:100%;left:0;margin-top:8px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 30px #00000026;padding:16px;z-index:100;width:280px;animation:fadeIn .2s ease}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.calendar-header button{background:none;border:none;padding:4px;cursor:pointer;color:var(--text-secondary);border-radius:4px;display:flex;align-items:center;justify-content:center}.calendar-header button:hover{background-color:var(--bg-input);color:var(--text-primary)}.current-month{font-weight:600;color:var(--text-primary);font-size:15px}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:8px}.calendar-weekdays span{text-align:center;font-size:12px;color:var(--text-secondary);font-weight:500}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text-primary);cursor:pointer;border-radius:6px;background:none;border:none;transition:all .1s}.calendar-day:hover:not(.empty){background-color:var(--bg-input)}.calendar-day.selected{background-color:var(--primary);color:#fff;font-weight:600}.calendar-day.today{border:1px solid var(--primary);color:var(--primary)}.calendar-day.selected.today{color:#fff;border:none}.calendar-day.empty{cursor:default}.calendar-footer{margin-top:12px;padding-top:12px;border-top:1px solid var(--border);display:flex;justify-content:center}.today-btn{background:none;border:none;color:var(--primary);font-weight:500;font-size:13px;cursor:pointer;padding:4px 12px;border-radius:4px}.today-btn:hover{background-color:var(--primary-bg)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dark .date-picker-dropdown{box-shadow:0 10px 30px #00000080}@media(max-width:640px){.txn-toolbar-right{flex-wrap:wrap;gap:6px}.txn-add-btn{padding:6px 10px;font-size:12px}.txn-search input{font-size:13px;padding:8px 8px 8px 34px}.budget-progress-header{flex-wrap:wrap;gap:4px}}.sidebar{width:260px;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .3s ease;flex-shrink:0;z-index:10}.sidebar.collapsed{width:80px}.sidebar-header{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid var(--border)}.logo{display:flex;align-items:center;gap:12px;font-weight:700;font-size:20px;color:var(--primary);text-decoration:none}.logo-icon{width:32px;height:32px;background:var(--primary);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center}.logo-text{white-space:nowrap;opacity:1;transition:opacity .2s}.sidebar.collapsed .logo{justify-content:center;width:100%}.sidebar.collapsed .logo-text{display:none}.sidebar.collapsed .sidebar-header{padding:0;justify-content:center}.collapse-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:4px;transition:all .2s}.collapse-btn:hover{background:var(--bg-input);color:var(--text-primary)}.sidebar nav{flex:1;padding:20px 12px;display:flex;flex-direction:column;gap:8px;overflow-y:auto}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:12px 16px;color:var(--text-secondary);text-decoration:none;border-radius:8px;transition:all .2s;font-weight:500;white-space:nowrap;overflow:hidden}.sidebar.collapsed nav a{justify-content:center;padding:12px}.sidebar nav a:hover{background:var(--bg-input);color:var(--text-primary)}.sidebar nav a.active{background:var(--primary-bg);color:var(--primary);font-weight:600}.sidebar-footer{padding:20px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.theme-toggle,.sidebar-manage-btn,.sidebar-logout-btn{display:flex;align-items:center;gap:12px;padding:12px 16px;width:100%;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:8px;transition:background-color .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease,width .3s cubic-bezier(.4,0,.2,1),transform .2s;white-space:nowrap;overflow:hidden;height:48px;font-size:14px}.sidebar.collapsed .theme-toggle,.sidebar.collapsed .sidebar-manage-btn,.sidebar.collapsed .sidebar-logout-btn{justify-content:center;padding:0}.sidebar.collapsed .nav-text{display:none}.theme-toggle:hover,.sidebar-manage-btn:hover{color:var(--primary);background:var(--primary-bg)}.sidebar-logout-btn:hover{background:#ef44441a;color:#ef4444}.sidebar-user{margin-top:12px;padding-top:12px;border-top:1px solid var(--border);display:flex;align-items:center;gap:12px}.user-avatar{width:32px;height:32px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px}.user-info{flex:1;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.user-name{font-size:14px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logout-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:4px;transition:all .2s}.logout-btn:hover{background:#ef44441a;color:#ef4444}.mobile-more-action{display:none}@media(max-width:768px){.sidebar{width:100%;height:calc(56px + env(safe-area-inset-top,0px));max-height:calc(56px + env(safe-area-inset-top,0px));border-right:none;border-bottom:1px solid var(--border);padding:0;flex-direction:row;flex-wrap:nowrap;overflow:visible;position:fixed;top:0;left:0;right:0;z-index:1000;background:var(--bg-sidebar);padding-top:env(safe-area-inset-top,0px)}.sidebar.collapsed{width:100%}.sidebar.collapsed .logo{display:flex;justify-content:flex-start;width:auto}.sidebar.collapsed .logo-text{display:block}.sidebar.collapsed .sidebar-header{padding:0 20px;justify-content:space-between}.sidebar.collapsed nav a{padding:8px 12px;justify-content:center}.sidebar-header{height:50px;border-bottom:none;flex:0 0 auto;padding-left:16px;min-width:auto}.sidebar nav{display:flex;flex-direction:row;flex:1;justify-content:flex-end;align-items:center;gap:4px;padding:0 12px 0 0;overflow:visible}.sidebar nav a{padding:8px;font-size:13px;border-radius:8px}.sidebar nav a .nav-text{display:none}.mobile-more-action{position:relative;display:flex;align-items:center}.mobile-more-btn{background:transparent;border:none;color:var(--text-secondary);padding:8px 12px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer}.mobile-more-btn:active{background:var(--bg-input)}.mobile-dropdown-menu{position:absolute;top:calc(100% + 5px);right:5px;background:var(--tooltip-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:12px;box-shadow:0 4px 20px #00000026;display:flex;flex-direction:column;min-width:150px;z-index:9999;padding:6px;transform-origin:top right;animation:dropdownFadeIn .2s ease-out}@keyframes dropdownFadeIn{0%{opacity:0;transform:scale(.95) translateY(-5px)}to{opacity:1;transform:scale(1) translateY(0)}}.mobile-dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;background:transparent;border:none;border-radius:8px;color:var(--text-primary);font-size:14px;font-weight:500;cursor:pointer;text-align:left;transition:background-color .2s,color .2s}.mobile-dropdown-item:active,.mobile-dropdown-item:hover{background:var(--bg-input)}.mobile-dropdown-item.logout{color:var(--danger)}.mobile-dropdown-item.logout:hover,.mobile-dropdown-item.logout:active{background:#ef44441a}.sidebar .sidebar-footer,.collapse-btn,.sidebar-user{display:none}}.category-manager-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.category-manager{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;box-shadow:0 20px 60px #0000004d;width:480px;max-width:90vw;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;animation:slideUp .3s cubic-bezier(.16,1,.3,1)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.category-manager-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border);background:var(--bg-card)}.category-manager-header h3{margin:0;font-size:18px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:8px}.settings-tabs{display:flex;padding:0 24px;border-bottom:1px solid var(--border);background:var(--bg-card)}.settings-tab{padding:12px 16px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.settings-tab:hover{color:var(--primary)}.settings-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.settings-general{padding:24px;overflow-y:auto}.setting-group{margin-bottom:24px}.setting-group-title{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:600;color:var(--text-secondary)}.setting-budget-list{display:flex;flex-direction:column;gap:12px}.setting-budget-item{display:flex;align-items:center;justify-content:space-between;padding:12px;background:var(--bg-body);border-radius:8px;border:1px solid var(--border)}.setting-budget-label{font-size:14px;color:var(--text-primary)}.setting-budget-value{background:none;border:none;color:var(--primary);font-weight:600;font-size:14px;cursor:pointer;padding:4px 8px;border-radius:4px}.setting-budget-value:hover{background:var(--primary-bg)}.setting-budget-edit{display:flex;align-items:center;gap:8px}.setting-budget-input{width:80px;padding:4px 8px;border:1px solid var(--primary);border-radius:4px;font-size:14px;outline:none}.setting-budget-ok{background:var(--primary);color:#fff;border:none;padding:4px 8px;border-radius:4px;font-size:12px;cursor:pointer}.setting-budget-cancel{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px}.category-list{flex:1;overflow-y:auto;padding:12px 24px;background:var(--bg-body)}.category-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;margin-bottom:8px;transition:all .2s}.category-item:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000000d;border-color:var(--primary)}.category-info{display:flex;align-items:center;gap:12px}.category-color-dot{width:24px;height:24px;border-radius:8px;flex-shrink:0;box-shadow:inset 0 0 0 1px #0000001a}.category-name{font-size:15px;color:var(--text-primary);font-weight:500}.category-badge{font-size:11px;color:var(--text-secondary);background:var(--bg-input);padding:4px 8px;border-radius:6px;display:flex;align-items:center;gap:4px;border:1px solid var(--border)}.category-actions{display:flex;align-items:center;gap:4px}.action-btn{background:transparent;border:1px solid transparent;color:var(--text-secondary);width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.action-btn:hover:not(:disabled){background:var(--bg-input);color:var(--text-primary);border-color:var(--border)}.action-btn.delete:hover{background:#ef44441a;color:var(--danger);border-color:#ef444433}.action-btn:disabled{opacity:.3;cursor:not-allowed}.category-add-section{padding:20px 24px;border-top:1px solid var(--border);background:var(--bg-card)}.category-add-section h4{margin:0 0 12px;font-size:14px;color:var(--text-secondary);font-weight:600}.color-presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.color-swatch{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .2s}.color-swatch:hover{transform:scale(1.1)}.color-swatch.active{border-color:var(--text-primary);transform:scale(1.2)}.custom-color-wrapper{position:relative;width:24px;height:24px}.color-picker-input{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;z-index:2}.custom-color-icon{position:absolute;top:4px;left:4px;color:var(--text-secondary);pointer-events:none;z-index:1}.category-add-row{display:flex;align-items:center;gap:12px}.selected-color-preview{width:40px;height:40px;border-radius:10px;flex-shrink:0;box-shadow:inset 0 0 0 1px #0000001a}.category-name-input{flex:1;padding:10px 14px;border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);border-radius:8px;font-size:14px;outline:none;transition:all .2s}.category-name-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.category-add-btn{display:flex;align-items:center;gap:6px;padding:10px 16px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:opacity .2s}.category-add-btn:hover:not(:disabled){opacity:.9}.category-add-btn:disabled{opacity:.5;cursor:not-allowed}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}.stat-card{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow);display:flex;align-items:center;gap:16px;transition:transform .2s,background-color .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease}.stat-card:hover{transform:translateY(-2px)}.stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.stat-icon.blue{background:#3b82f61a;color:#3b82f6}.stat-icon.purple{background:#8b5cf61a;color:#8b5cf6}.stat-icon.orange{background:#f59e0b1a;color:#f59e0b}.stat-info{display:flex;flex-direction:column}.stat-info .label{font-size:14px;color:var(--text-secondary)}.stat-info .value{font-size:24px;font-weight:700;color:var(--text-primary);margin-top:4px}@media(max-width:1024px){.stats-grid{grid-template-columns:1fr}}@media(max-width:768px){.stats-grid{grid-template-columns:1fr;gap:12px}.stat-card{padding:14px}.stat-info .value{font-size:20px}}.budget-card{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px}.budget-card-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:var(--text-secondary)}.budget-list{display:flex;flex-direction:column;gap:20px}.budget-row{display:flex;flex-direction:column;gap:8px}.budget-row-header{display:flex;justify-content:space-between;align-items:center}.budget-label{font-size:14px;font-weight:500;color:var(--text-primary)}.budget-amounts{display:flex;align-items:baseline;gap:4px;font-size:14px}.budget-spent{font-weight:600;color:var(--text-primary)}.budget-spent.warning{color:#f59e0b}.budget-spent.over{color:var(--danger)}.budget-separator{color:var(--text-secondary);font-size:12px}.budget-total{color:var(--text-secondary);font-size:13px}.budget-bar-bg{height:8px;background:var(--bg-input);border-radius:4px;overflow:hidden;position:relative}.budget-bar-fill{height:100%;background:#10b981;border-radius:4px;transition:width .5s ease,background-color .3s}.budget-bar-fill.warning{background:#f59e0b}.budget-bar-fill.over{background:var(--danger)}.budget-row-footer{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-secondary)}.budget-pct{font-weight:600;color:#10b981}.budget-pct.warning{color:#f59e0b}.budget-pct.over{color:var(--danger)}.budget-remaining{color:var(--text-secondary)}.ai-parser{padding:16px 0}.ai-parser-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-left:2px}.ai-parser-header h3{margin:0;font-size:14px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}.ai-settings{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:12px;margin-bottom:12px;animation:slideDown .2s ease;transition:background-color .3s ease,border-color .3s ease}.ai-setting-row{margin-bottom:10px}.ai-setting-row:last-of-type{margin-bottom:12px}.ai-setting-row label{display:block;font-size:12px;font-weight:500;color:var(--text-secondary);margin-bottom:4px}.ai-setting-row input,.ai-setting-row select{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-input);color:var(--text-primary);font-size:14px}.ai-setting-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.ai-settings-save{display:flex;align-items:center;gap:6px;padding:6px 14px;background:var(--primary);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:opacity .2s}.ai-settings-save:hover{opacity:.9}.ai-dropzone{border:2px dashed var(--border);border-radius:10px;padding:24px 16px;text-align:center;cursor:pointer;transition:all .2s}.ai-dropzone:hover,.ai-dropzone.dragging{border-color:var(--primary);background:var(--primary-bg)}.ai-dropzone.has-images{cursor:default;padding:12px 16px}.ai-dropzone-content{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text-secondary)}.ai-dropzone-content p{margin:4px 0 0;font-size:13px;font-weight:500}.ai-dropzone-content span{font-size:11px;opacity:.7}.ai-image-grid{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}.ai-thumb{position:relative;width:80px;height:80px;border-radius:8px;overflow:hidden;border:1px solid var(--border);flex-shrink:0;transition:transform .2s,box-shadow .2s}.ai-thumb:hover{transform:scale(1.05);box-shadow:0 4px 12px #00000026}.ai-thumb img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}.ai-thumb-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:#000000a6;color:#fff;border:none;border-radius:50%;cursor:pointer;opacity:0;transition:opacity .2s}.ai-thumb:hover .ai-thumb-remove{opacity:1}.ai-thumb-remove:hover{background:#dc2626e6}.ai-thumb-add{width:80px;height:80px;border:2px dashed var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);background:transparent;cursor:pointer;transition:all .2s;flex-shrink:0}.ai-thumb-add:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-bg)}.ai-actions{display:flex;gap:8px;margin-top:10px}.ai-parse-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .2s}.ai-parse-btn:hover:not(:disabled){opacity:.9}.ai-parse-btn:disabled{opacity:.7;cursor:not-allowed}.ai-clear-btn{display:flex;align-items:center;gap:4px;padding:10px 14px;background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:8px;font-size:13px;cursor:pointer;transition:all .2s}.ai-clear-btn:hover{border-color:var(--danger);color:var(--danger);background:#ef44440f}.ai-clear-btn:disabled{opacity:.5;cursor:not-allowed}.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ai-error{padding:8px 12px;background:#ef44441a;color:var(--danger);border-radius:6px;font-size:13px;margin-top:8px;white-space:pre-line}.ai-results{margin-top:12px}.ai-results-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ai-results-header span{font-size:13px;color:var(--text-secondary);font-weight:500}.ai-add-all-btn{display:flex;align-items:center;gap:4px;padding:5px 12px;background:#10b981;color:#fff;border:none;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;transition:opacity .2s}.ai-add-all-btn:hover{opacity:.9}.ai-results-list{display:flex;flex-direction:column;gap:8px;overflow-x:auto;padding-bottom:8px}.ai-result-item{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;flex-wrap:nowrap;transition:all .2s ease;min-width:fit-content}.ai-result-item:hover{background:var(--bg-card);border-color:var(--primary);box-shadow:0 2px 8px #0000000d}.ai-result-top-row{display:flex;align-items:center;gap:12px;flex:1;min-width:250px}.ai-result-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:165px}.ai-result-meta{display:flex;align-items:center;gap:8px;flex-shrink:0;width:auto}.ai-result-title{width:100%;font-weight:500;font-size:14px;border:1px solid transparent;background:transparent;padding:4px 0;color:var(--text-primary);outline:none;transition:all .2s}.ai-result-title:hover{background:var(--bg-input);border-radius:4px}.ai-result-title:focus{background:var(--bg-card);border-color:var(--primary);padding:4px 8px;border-radius:6px}.ai-result-note,.ai-result-note input{width:100%;color:var(--text-secondary);font-size:12px;border:1px solid transparent;background:transparent;padding:2px 0;outline:none;transition:all .2s}.ai-result-note:hover input,.ai-result-note input:hover{color:var(--text-primary);background:var(--bg-input);border-radius:4px}.ai-result-note input:focus{color:var(--text-primary);background:var(--bg-card);border-color:var(--primary);padding:4px 8px;border-radius:6px}.ai-result-meta .date-input-segments{padding-right:32px!important;padding-left:8px!important;min-width:110px;height:32px;font-size:13px;background:var(--bg-card)}.ai-result-amount,.ai-result-date{height:32px;padding:0 8px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);border-radius:6px;font-size:13px;outline:none;transition:border-color .2s}.ai-result-amount{width:70px;padding-left:18px!important;-moz-appearance:textfield}.ai-result-amount::-webkit-outer-spin-button,.ai-result-amount::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-category-wrapper{width:122px}.ai-category-wrapper .custom-select-trigger{min-height:32px;height:32px;padding:0 8px;font-size:13px}.ai-date-wrapper{width:125px}.compact-date-input{position:relative;width:100%}.compact-date-wrapper{display:flex;align-items:center;padding:0 4px 0 8px;height:32px;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;transition:all .2s}.compact-date-wrapper:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-bg)}.compact-date-wrapper .date-seg{border:none;background:transparent;color:var(--text-primary);font-size:13px;padding:0;text-align:center;outline:none;font-family:inherit}.compact-date-wrapper .year{width:34px}.compact-date-wrapper .month,.compact-date-wrapper .day{width:18px}.compact-date-wrapper .sep{color:var(--border);margin:0;font-weight:700;opacity:.7}.compact-toggle-btn{margin-left:auto;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:2px;display:flex;align-items:center}.compact-toggle-btn:hover{color:var(--primary)}.ai-result-amount-wrapper{position:relative;display:flex;align-items:center}.currency-symbol{position:absolute;left:8px;color:var(--text-secondary);font-size:12px;pointer-events:none;z-index:1}.ai-result-amount:focus,.ai-result-date:focus{border-color:var(--primary)}.ai-result-actions{display:flex;gap:4px;margin-left:4px}@media(max-width:768px){.ai-result-item{flex-direction:column;align-items:stretch;gap:12px;padding:12px}.ai-result-top-row{width:100%;justify-content:space-between;align-items:flex-start;min-width:0;gap:8px}.ai-result-info{min-width:0}.ai-result-amount-wrapper{flex:0 0 auto;width:75px}.ai-result-amount{width:100%;min-width:70px;max-width:80px;text-align:left}.ai-result-meta{justify-content:space-between;width:100%;gap:6px}}.ai-fullscreen-overlay{position:fixed;inset:0;background:#000000d9;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:2000;display:flex;align-items:center;justify-content:center;padding:40px;animation:fadeIn .2s ease}.ai-fullscreen-content{position:relative;max-width:100%;max-height:100%;animation:zoomIn .3s cubic-bezier(.16,1,.3,1)}.ai-fullscreen-content img{display:block;max-width:90vw;max-height:90vh;border-radius:8px;box-shadow:0 20px 60px #00000080}.ai-fullscreen-close{position:absolute;top:-20px;right:-20px;width:40px;height:40px;background:#fff3;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.ai-fullscreen-close:hover{background:#fff6;transform:rotate(90deg)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes zoomIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.form-card{min-width:0;background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow);transition:background-color .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease}.form-card h3{margin:0 0 20px;font-size:16px;color:var(--text-secondary)}@media(max-width:768px){.form-card{padding:14px}}.txn-title-cell{display:flex;flex-direction:column}.txn-note-inline{font-size:12px;color:var(--text-secondary);margin-top:2px}
