@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=Noto+Sans+Thai:wght@300;400;500;600;700&display=swap";:root{--font-primary:"Outfit", "Noto Sans Thai", sans-serif;--bg-primary:#fafbfd;--bg-secondary:#fff;--bg-sidebar:#f5f7fa;--card-bg:#ffffffd9;--card-bg-hover:#fff;--border-color:#f1f4f8;--border-color-hover:#e2e8f0;--color-primary:#5f5af6;--color-primary-glow:#5f5af612;--color-success:#10b981;--color-success-glow:#10b98114;--color-danger:#f43f5e;--color-danger-glow:#f43f5e12;--color-warning:#f59e0b;--color-warning-glow:#f59e0b14;--color-info:#0ea5e9;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--shadow-sm:0 2px 8px -2px #0f172a05, 0 1px 3px -1px #0f172a03;--shadow-md:0 8px 24px -4px #0f172a0a, 0 4px 12px -2px #0f172a05;--shadow-lg:0 16px 32px -8px #0f172a0f, 0 8px 16px -4px #0f172a08;--shadow-glow:0 8px 30px #5f5af60a;--transition-fast:.12s ease;--transition-normal:.3s cubic-bezier(.25, .8, .25, 1);--radius-sm:6px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px}*{box-sizing:border-box;font-family:var(--font-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);background-image:radial-gradient(at 0 0,#5f5af606 0,#0000 40%),radial-gradient(at 100% 100%,#10b98104 0,#0000 40%);background-attachment:fixed;min-height:100vh;overflow-x:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:#00000014;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#00000026}.app-container{min-height:100vh;display:flex}.main-content{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:3rem 2.5rem;overflow-y:auto}@media (width<=1024px){.app-container{flex-direction:column}.main-content{padding:1.75rem 1.25rem}}.glass-card{background:var(--card-bg);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:all var(--transition-normal);padding:1.75rem}.glass-card:hover{border-color:var(--border-color-hover);background:var(--card-bg-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}h1,h2,h3,h4{letter-spacing:-.015em;color:var(--text-primary);font-weight:600}h1{margin-bottom:.25rem;font-size:1.75rem}.subtitle{color:var(--text-secondary);margin-bottom:2rem;font-size:.95rem}input,select,textarea{background:var(--bg-secondary);width:100%;color:var(--text-primary);border-radius:var(--radius-md);transition:all var(--transition-fast);border:1px solid #e2e8f0;outline:none;padding:.7rem .95rem;font-size:.925rem}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);background:var(--bg-secondary);box-shadow:0 0 0 3px #5f5af614}label{color:var(--text-secondary);margin-bottom:.35rem;font-size:.825rem;font-weight:500;display:block}.btn{border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-normal);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:.45rem;padding:.65rem 1.1rem;font-size:.875rem;font-weight:500;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 2px 8px #5f5af626}.btn-primary:hover{background:#4a44e3;transform:translateY(-1px);box-shadow:0 4px 12px #5f5af640}.btn-secondary{background:var(--bg-secondary);color:var(--text-secondary);border-color:var(--border-color-hover);box-shadow:0 1px 2px #00000005}.btn-secondary:hover{color:var(--text-primary);background:#f8fafc;border-color:#cbd5e1}.btn-success{background:var(--color-success);color:#fff;box-shadow:0 2px 8px #10b98126}.btn-success:hover{background:#0ea572;transform:translateY(-1px)}.btn-danger{background:var(--color-danger);color:#fff;box-shadow:0 2px 8px #f43f5e26}.btn-danger:hover{background:#e11d48;transform:translateY(-1px)}.btn-icon{border-radius:var(--radius-sm);aspect-ratio:1;padding:.5rem}.badge{border-radius:6px;align-items:center;padding:.25rem .55rem;font-size:.725rem;font-weight:600;display:inline-flex}.badge-income{background:var(--color-success-glow);color:var(--color-success);border:1px solid #10b9811f}.badge-expense{background:var(--color-danger-glow);color:var(--color-danger);border:1px solid #f43f5e1a}.badge-warning{background:var(--color-warning-glow);color:var(--color-warning);border:1px solid #f59e0b1f}.badge-info{color:var(--color-info);background:#0ea5e90f;border:1px solid #0ea5e91f}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.3s cubic-bezier(.16,1,.3,1) forwards fadeIn}.table-container{width:100%;overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%}th{color:var(--text-secondary);border-bottom:2px solid var(--border-color);text-transform:uppercase;letter-spacing:.05em;padding:.8rem .75rem;font-size:.75rem;font-weight:600}td{color:var(--text-primary);border-bottom:1px solid var(--border-color);transition:background var(--transition-fast);padding:.8rem .75rem;font-size:.875rem}tr:last-child td{border-bottom:none}tbody tr:hover td{background:#f5f7fa99}.grid-2{grid-template-columns:repeat(2,1fr);gap:1.5rem;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:1.5rem;display:grid}.grid-4{grid-template-columns:repeat(4,1fr);gap:1.5rem;display:grid}@media (width<=768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr;gap:1.25rem}}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.gap-1{gap:.5rem}.gap-2{gap:1rem}.text-success{color:var(--color-success)}.text-danger{color:var(--color-danger)}.text-warning{color:var(--color-warning)}.text-info{color:var(--color-info)}.text-muted{color:var(--text-muted)}.card-title-container{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding-bottom:.75rem;display:flex}.card-title{color:var(--text-primary);align-items:center;gap:.5rem;font-size:.95rem;font-weight:600;display:flex}.switch-container{justify-content:space-between;align-items:center;padding:.5rem 0;display:flex}.switch{width:42px;height:22px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;background-color:#e2e8f0;border-radius:24px;transition:all .3s;position:absolute;inset:0}.slider:before{content:"";background-color:#fff;border-radius:50%;width:16px;height:16px;transition:all .3s;position:absolute;bottom:3px;left:3px;box-shadow:0 1px 2px #0000001a}input:checked+.slider{background-color:var(--color-primary)}input:checked+.slider:before{transform:translate(20px)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0f172a59;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-secondary);border:1px solid var(--border-color-hover);border-radius:var(--radius-lg);width:100%;max-width:500px;box-shadow:var(--shadow-lg);flex-direction:column;max-height:90vh;display:flex;overflow:hidden}.modal-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-body{padding:1.5rem;overflow-y:auto}.btn-close{color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:.25rem;display:flex}.btn-close:hover{color:var(--text-primary);background:#0000000a}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border-color);flex-direction:column;width:260px;min-height:100vh;padding:2rem 1.25rem;display:flex}.brand{align-items:center;gap:.5rem;margin-bottom:2.25rem;padding:0 .5rem;display:flex}.brand h2{color:var(--text-primary);letter-spacing:-.01em;font-size:1.05rem;font-weight:700}.menu-section{flex-direction:column;gap:.25rem;margin-bottom:2.25rem;display:flex}.menu-item{color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:.75rem;padding:.65rem .85rem;font-size:.875rem;font-weight:500;text-decoration:none;display:flex}.menu-item:hover{color:var(--text-primary);background:#0f172a06}.menu-item.active{color:var(--color-primary);background:linear-gradient(135deg,#5f5af614 0%,#5f5af604 100%);font-weight:600;box-shadow:inset 0 0 0 1px #5f5af61a}.accounts-section{flex-direction:column;flex:1;display:flex}.accounts-header{justify-content:space-between;align-items:center;margin-bottom:.85rem;padding:0 .5rem;display:flex}.accounts-header span{text-transform:uppercase;color:var(--text-muted);letter-spacing:.06em;font-size:.675rem;font-weight:600}.accounts-list{flex-direction:column;gap:.45rem;max-height:320px;padding-right:.2rem;display:flex;overflow-y:auto}.account-item{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:all var(--transition-fast);justify-content:space-between;align-items:center;padding:.55rem .75rem;font-size:.825rem;display:flex;box-shadow:0 1px 2px #00000001}.account-item:hover{border-color:var(--border-color-hover);box-shadow:var(--shadow-sm)}.account-item-info{align-items:center;gap:.45rem;display:flex}.account-item-name{text-overflow:ellipsis;white-space:nowrap;max-width:100px;font-weight:500;overflow:hidden}.account-item-type{color:var(--text-muted);font-size:.625rem}.account-item-balance{font-size:.825rem;font-weight:600}.credit-scale-container{margin-top:.2rem;font-size:.675rem}.credit-scale-bg{border:1px solid var(--border-color);background:#f1f5f9;border-radius:3px;width:100%;height:5px;margin-top:.125rem;overflow:hidden}.credit-scale-fill{background:var(--color-danger);height:100%;transition:width .3s}.category-manager-item{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-secondary);margin-bottom:.75rem;padding:1rem}.category-pill{border:1px solid var(--border-color);background:#f1f5f9;border-radius:9999px;align-items:center;gap:.25rem;margin:.2rem;padding:.3rem .65rem;font-size:.775rem;display:inline-flex}.category-pill button{color:var(--color-danger);cursor:pointer;background:0 0;border:none;align-items:center;display:flex}.amort-table{width:100%;margin-top:1rem;font-size:.85rem}.amort-table th{border-bottom:1px solid var(--border-color-hover);padding:.5rem;font-size:.75rem}.amort-table td{border-bottom:1px dashed var(--border-color);padding:.5rem}.amort-table tr:hover td{background:#5f5af604}@media (width<=1024px){.app-container{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--border-color);z-index:100;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f5f7fae6;flex-direction:row;justify-content:space-between;align-items:center;width:100%;min-height:auto;padding:1rem 1.5rem;position:sticky;top:0}.brand{margin-bottom:0;padding:0}.menu-section{scrollbar-width:none;flex-direction:row;gap:.5rem;margin-bottom:0;padding:.25rem 0;overflow-x:auto}.menu-section::-webkit-scrollbar{display:none}.menu-item{white-space:nowrap;padding:.5rem .75rem;font-size:.8rem}.accounts-section{display:none}.main-content{padding:1.5rem}}@media (width<=768px){.sidebar{padding:.85rem 1rem}.brand h2{font-size:.95rem}.menu-section{z-index:999;-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--border-color);background:#fffffff0;flex-direction:row;justify-content:space-around;align-items:center;gap:0;margin-bottom:0;padding:.5rem .25rem;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #0f172a0a}.menu-item{color:var(--text-secondary);border-radius:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.15rem;padding:.35rem 0;font-size:.65rem;box-shadow:none!important;background:0 0!important;border:none!important}.menu-item.active{color:var(--color-primary);font-weight:600}.menu-item svg{width:18px;height:18px}.main-content{padding:1rem 1rem 5.5rem}.modal-overlay{align-items:flex-end;padding:0}.modal-content{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:100%;max-height:85vh;animation:.3s cubic-bezier(.16,1,.3,1) forwards slideUp}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}
